index.js

var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// dist/index.js
var require_dist = __commonJS({
  "dist/index.js"(exports, module2) {
    var __create2 = Object.create;
    var __defProp2 = Object.defineProperty;
    var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
    var __getOwnPropNames2 = Object.getOwnPropertyNames;
    var __getProtoOf2 = Object.getPrototypeOf;
    var __hasOwnProp2 = Object.prototype.hasOwnProperty;
    var __commonJS2 = (cb, mod) => function __require() {
      return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
    };
    var __export2 = (target, all) => {
      for (var name in all)
        __defProp2(target, name, { get: all[name], enumerable: true });
    };
    var __copyProps2 = (to, from, except, desc) => {
      if (from && typeof from === "object" || typeof from === "function") {
        for (let key of __getOwnPropNames2(from))
          if (!__hasOwnProp2.call(to, key) && key !== except)
            __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
      }
      return to;
    };
    var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
      // If the importer is in node compatibility mode or this is not an ESM
      // file that has been converted to a CommonJS file using a Babel-
      // compatible transform (i.e. "__esModule" has not been set), then set
      // "default" to the CommonJS "module.exports" for node compatibility.
      isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
      mod
    ));
    var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
    var require_dist2 = __commonJS2({
      "dist/index.js"(exports2, module22) {
        var __create22 = Object.create;
        var __defProp22 = Object.defineProperty;
        var __getOwnPropDesc22 = Object.getOwnPropertyDescriptor;
        var __getOwnPropNames22 = Object.getOwnPropertyNames;
        var __getProtoOf22 = Object.getPrototypeOf;
        var __hasOwnProp22 = Object.prototype.hasOwnProperty;
        var __commonJS22 = (cb, mod) => function __require() {
          return mod || (0, cb[__getOwnPropNames22(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
        };
        var __export22 = (target, all) => {
          for (var name in all)
            __defProp22(target, name, { get: all[name], enumerable: true });
        };
        var __copyProps22 = (to, from, except, desc) => {
          if (from && typeof from === "object" || typeof from === "function") {
            for (let key of __getOwnPropNames22(from))
              if (!__hasOwnProp22.call(to, key) && key !== except)
                __defProp22(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc22(from, key)) || desc.enumerable });
          }
          return to;
        };
        var __toESM22 = (mod, isNodeMode, target) => (target = mod != null ? __create22(__getProtoOf22(mod)) : {}, __copyProps22(
          // If the importer is in node compatibility mode or this is not an ESM
          // file that has been converted to a CommonJS file using a Babel-
          // compatible transform (i.e. "__esModule" has not been set), then set
          // "default" to the CommonJS "module.exports" for node compatibility.
          isNodeMode || !mod || !mod.__esModule ? __defProp22(target, "default", { value: mod, enumerable: true }) : target,
          mod
        ));
        var __toCommonJS22 = (mod) => __copyProps22(__defProp22({}, "__esModule", { value: true }), mod);
        var require_dist22 = __commonJS22({
          "dist/index.js"(exports22, module222) {
            var __create222 = Object.create;
            var __defProp222 = Object.defineProperty;
            var __getOwnPropDesc222 = Object.getOwnPropertyDescriptor;
            var __getOwnPropNames222 = Object.getOwnPropertyNames;
            var __getProtoOf222 = Object.getPrototypeOf;
            var __hasOwnProp222 = Object.prototype.hasOwnProperty;
            var __export222 = (target, all) => {
              for (var name in all)
                __defProp222(target, name, { get: all[name], enumerable: true });
            };
            var __copyProps222 = (to, from, except, desc) => {
              if (from && typeof from === "object" || typeof from === "function") {
                for (let key of __getOwnPropNames222(from))
                  if (!__hasOwnProp222.call(to, key) && key !== except)
                    __defProp222(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc222(from, key)) || desc.enumerable });
              }
              return to;
            };
            var __toESM222 = (mod, isNodeMode, target) => (target = mod != null ? __create222(__getProtoOf222(mod)) : {}, __copyProps222(
              // If the importer is in node compatibility mode or this is not an ESM
              // file that has been converted to a CommonJS file using a Babel-
              // compatible transform (i.e. "__esModule" has not been set), then set
              // "default" to the CommonJS "module.exports" for node compatibility.
              isNodeMode || !mod || !mod.__esModule ? __defProp222(target, "default", { value: mod, enumerable: true }) : target,
              mod
            ));
            var __toCommonJS222 = (mod) => __copyProps222(__defProp222({}, "__esModule", { value: true }), mod);
            var node_bacnet_exports222 = {};
            __export222(node_bacnet_exports222, {
              _: () => import_underscore222.default,
              bacnetErrorToString: () => bacnetErrorToString222,
              default: () => node_bacnet_default222,
              enums: () => enum_exports222,
              parseValue: () => parseValue222
            });
            module222.exports = __toCommonJS222(node_bacnet_exports222);
            var enum_exports222 = {};
            __export222(enum_exports222, {
              ASN1_ARRAY_ALL: () => ASN1_ARRAY_ALL222,
              ASN1_INSTANCE_BITS: () => ASN1_INSTANCE_BITS222,
              ASN1_MAX_APPLICATION_TAG: () => ASN1_MAX_APPLICATION_TAG222,
              ASN1_MAX_BITSTRING_BYTES: () => ASN1_MAX_BITSTRING_BYTES222,
              ASN1_MAX_INSTANCE: () => ASN1_MAX_INSTANCE222,
              ASN1_MAX_OBJECT: () => ASN1_MAX_OBJECT222,
              ASN1_MAX_OBJECT_TYPE: () => ASN1_MAX_OBJECT_TYPE222,
              ASN1_MAX_PRIORITY: () => ASN1_MAX_PRIORITY222,
              ASN1_MAX_PROPERTY_ID: () => ASN1_MAX_PROPERTY_ID222,
              ASN1_MIN_PRIORITY: () => ASN1_MIN_PRIORITY222,
              ASN1_NO_PRIORITY: () => ASN1_NO_PRIORITY222,
              AbortReason: () => AbortReason222,
              AccessAuthenticationFactorDisable: () => AccessAuthenticationFactorDisable222,
              AccessCredentialDisable: () => AccessCredentialDisable222,
              AccessCredentialDisableReason: () => AccessCredentialDisableReason222,
              AccessEvent: () => AccessEvent222,
              AccessPassbackMode: () => AccessPassbackMode222,
              AccessUserType: () => AccessUserType222,
              AccessZoneOccupancyState: () => AccessZoneOccupancyState222,
              Action: () => Action222,
              ApplicationTag: () => ApplicationTag222,
              ApplicationTagName: () => ApplicationTagName222,
              AuthenticationFactorType: () => AuthenticationFactorType222,
              AuthenticationStatus: () => AuthenticationStatus222,
              AuthorizationExemption: () => AuthorizationExemption222,
              AuthorizationMode: () => AuthorizationMode222,
              BVLC_HEADER_LENGTH: () => BVLC_HEADER_LENGTH322,
              BVLL_TYPE_BACNET_IP: () => BVLL_TYPE_BACNET_IP222,
              BackupState: () => BackupState222,
              BinaryLightingPV: () => BinaryLightingPV222,
              BinaryPV: () => BinaryPV222,
              BvlcResultFormat: () => BvlcResultFormat222,
              BvlcResultPurpose: () => BvlcResultPurpose222,
              CharacterStringEncoding: () => CharacterStringEncoding222,
              ConfirmedServiceChoice: () => ConfirmedServiceChoice222,
              CovType: () => CovType222,
              DaysOfWeek: () => DaysOfWeek222,
              DeviceStatus: () => DeviceStatus222,
              DoorAlarmState: () => DoorAlarmState222,
              DoorSecuredStatus: () => DoorSecuredStatus222,
              DoorStatus: () => DoorStatus222,
              DoorValue: () => DoorValue222,
              EnableDisable: () => EnableDisable222,
              EngineeringUnits: () => EngineeringUnits222,
              ErrorClass: () => ErrorClass222,
              ErrorClassName: () => ErrorClassName222,
              ErrorCode: () => ErrorCode222,
              ErrorCodeName: () => ErrorCodeName222,
              EscalatorFault: () => EscalatorFault222,
              EscalatorMode: () => EscalatorMode222,
              EscalatorOperationDirection: () => EscalatorOperationDirection222,
              EventState: () => EventState222,
              EventTransitionBits: () => EventTransitionBits222,
              EventType: () => EventType222,
              FaultType: () => FaultType222,
              FileAccessMethod: () => FileAccessMethod222,
              IPMode: () => IPMode222,
              LifeSafetyMode: () => LifeSafetyMode222,
              LifeSafetyOperation: () => LifeSafetyOperation222,
              LifeSafetyState: () => LifeSafetyState222,
              LiftCarDirection: () => LiftCarDirection222,
              LiftCarDoorCommand: () => LiftCarDoorCommand222,
              LiftCarDriveStatus: () => LiftCarDriveStatus222,
              LiftCarMode: () => LiftCarMode222,
              LiftFault: () => LiftFault222,
              LiftGroupMode: () => LiftGroupMode222,
              LightingInProgress: () => LightingInProgress222,
              LightingOperation: () => LightingOperation222,
              LightingTransition: () => LightingTransition222,
              LimitEnable: () => LimitEnable222,
              LockStatus: () => LockStatus222,
              LogStatus: () => LogStatus222,
              LoggingType: () => LoggingType222,
              Maintenance: () => Maintenance222,
              MaxApduLengthAccepted: () => MaxApduLengthAccepted222,
              MaxSegmentsAccepted: () => MaxSegmentsAccepted222,
              NetworkLayerMessageType: () => NetworkLayerMessageType222,
              NetworkNumberQuality: () => NetworkNumberQuality222,
              NetworkPortCommand: () => NetworkPortCommand222,
              NetworkType: () => NetworkType222,
              NodeType: () => NodeType222,
              NotifyType: () => NotifyType222,
              NpduControlBit: () => NpduControlBit222,
              NpduControlPriority: () => NpduControlPriority222,
              ObjectType: () => ObjectType222,
              ObjectTypesSupported: () => ObjectTypesSupported222,
              PDU_TYPE_MASK: () => PDU_TYPE_MASK222,
              PduConReqBit: () => PduConReqBit222,
              PduSegAckBit: () => PduSegAckBit222,
              PduType: () => PduType222,
              Polarity: () => Polarity222,
              ProgramError: () => ProgramError222,
              ProgramRequest: () => ProgramRequest222,
              ProgramState: () => ProgramState222,
              PropertyIdentifier: () => PropertyIdentifier222,
              PropertyStates: () => PropertyStates222,
              ProtocolLevel: () => ProtocolLevel222,
              ReadRangeType: () => ReadRangeType222,
              ReinitializedState: () => ReinitializedState222,
              RejectReason: () => RejectReason222,
              Relationship: () => Relationship222,
              Reliability: () => Reliability222,
              RestartReason: () => RestartReason222,
              ResultFlags: () => ResultFlags222,
              SecurityLevel: () => SecurityLevel222,
              SecurityPolicy: () => SecurityPolicy222,
              Segmentation: () => Segmentation222,
              ServicesSupported: () => ServicesSupported222,
              ShedState: () => ShedState222,
              SilencedState: () => SilencedState222,
              StatusFlags: () => StatusFlags222,
              TimeStamp: () => TimeStamp222,
              TimerState: () => TimerState222,
              TimerTransition: () => TimerTransition222,
              UnconfirmedServiceChoice: () => UnconfirmedServiceChoice222,
              VTClass: () => VTClass222,
              WriteStatus: () => WriteStatus222,
              getEnumName: () => getEnumName222
            });
            var import_debug422 = __toESM222(require("debug"));
            var debug522 = (0, import_debug422.default)("bacnet=enum=debug");
            var trace322 = (0, import_debug422.default)("bacnet=enum=trace");
            function invertEnum222(enumToInvert) {
              const invertedEnum = {};
              Object.keys(enumToInvert).forEach((key) => {
                invertedEnum[enumToInvert[key]] = key;
              });
              return invertedEnum;
            }
            function getEnumName222(group, value, addNumberValue = true, undefinedFallbackValue = void 0) {
              if (!Number.isInteger(value)) {
                throw new Error(
                  'getEnumName() can only be passed an integer value, was given "' + value + '"'
                );
              }
              let foundEntry;
              try {
                const invertedGroup = invertEnum222(group);
                foundEntry = invertedGroup[value];
                if (foundEntry === void 0 && undefinedFallbackValue) {
                  foundEntry = undefinedFallbackValue;
                }
                if (foundEntry === void 0) {
                  foundEntry = value.toString();
                } else if (addNumberValue) {
                  foundEntry += "(" + value + ")";
                }
              } catch (e) {
                trace322(e.message);
                foundEntry = null;
              }
              return foundEntry;
            }
            var PDU_TYPE_MASK222 = 240;
            var ASN1_MAX_OBJECT222 = 1023;
            var ASN1_INSTANCE_BITS222 = 22;
            var ASN1_MAX_INSTANCE222 = 4194303;
            var ASN1_MAX_BITSTRING_BYTES222 = 15;
            var ASN1_ARRAY_ALL222 = 4294967295;
            var ASN1_NO_PRIORITY222 = 0;
            var ASN1_MIN_PRIORITY222 = 1;
            var ASN1_MAX_PRIORITY222 = 16;
            var ASN1_MAX_APPLICATION_TAG222 = 16;
            var ASN1_MAX_OBJECT_TYPE222 = 1024;
            var ASN1_MAX_PROPERTY_ID222 = 4194303;
            var BVLL_TYPE_BACNET_IP222 = 129;
            var BVLC_HEADER_LENGTH322 = 4;
            var ConfirmedServiceChoice222 = /* @__PURE__ */ ((ConfirmedServiceChoice2222) => {
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["READ_PROPERTY"] = 12] = "READ_PROPERTY";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["VT_OPEN"] = 21] = "VT_OPEN";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["VT_CLOSE"] = 22] = "VT_CLOSE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["VT_DATA"] = 23] = "VT_DATA";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["READ_RANGE"] = 26] = "READ_RANGE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["LIFE_SAFETY_OPERATION"] = 27] = "LIFE_SAFETY_OPERATION";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["SUBSCRIBE_COV_PROPERTY"] = 28] = "SUBSCRIBE_COV_PROPERTY";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["GET_EVENT_INFORMATION"] = 29] = "GET_EVENT_INFORMATION";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 30] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
              ConfirmedServiceChoice2222[ConfirmedServiceChoice2222["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 31] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
              return ConfirmedServiceChoice2222;
            })(ConfirmedServiceChoice222 || {});
            var UnconfirmedServiceChoice222 = /* @__PURE__ */ ((UnconfirmedServiceChoice2222) => {
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["I_AM"] = 0] = "I_AM";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["I_HAVE"] = 1] = "I_HAVE";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["UNCONFIRMED_COV_NOTIFICATION"] = 2] = "UNCONFIRMED_COV_NOTIFICATION";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["UNCONFIRMED_EVENT_NOTIFICATION"] = 3] = "UNCONFIRMED_EVENT_NOTIFICATION";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["UNCONFIRMED_PRIVATE_TRANSFER"] = 4] = "UNCONFIRMED_PRIVATE_TRANSFER";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["UNCONFIRMED_TEXT_MESSAGE"] = 5] = "UNCONFIRMED_TEXT_MESSAGE";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["TIME_SYNCHRONIZATION"] = 6] = "TIME_SYNCHRONIZATION";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["WHO_HAS"] = 7] = "WHO_HAS";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["WHO_IS"] = 8] = "WHO_IS";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["UTC_TIME_SYNCHRONIZATION"] = 9] = "UTC_TIME_SYNCHRONIZATION";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["WRITE_GROUP"] = 10] = "WRITE_GROUP";
              UnconfirmedServiceChoice2222[UnconfirmedServiceChoice2222["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 11] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
              return UnconfirmedServiceChoice2222;
            })(UnconfirmedServiceChoice222 || {});
            var AbortReason222 = /* @__PURE__ */ ((AbortReason2222) => {
              AbortReason2222[AbortReason2222["OTHER"] = 0] = "OTHER";
              AbortReason2222[AbortReason2222["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
              AbortReason2222[AbortReason2222["INVALID_APDU_IN_THIS_STATE"] = 2] = "INVALID_APDU_IN_THIS_STATE";
              AbortReason2222[AbortReason2222["PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 3] = "PREEMPTED_BY_HIGHER_PRIORITY_TASK";
              AbortReason2222[AbortReason2222["SEGMENTATION_NOT_SUPPORTED"] = 4] = "SEGMENTATION_NOT_SUPPORTED";
              AbortReason2222[AbortReason2222["SECURITY_ERROR"] = 5] = "SECURITY_ERROR";
              AbortReason2222[AbortReason2222["INSUFFICIENT_SECURITY"] = 6] = "INSUFFICIENT_SECURITY";
              AbortReason2222[AbortReason2222["WINDOW_SIZE_OUT_OF_RANGE"] = 7] = "WINDOW_SIZE_OUT_OF_RANGE";
              AbortReason2222[AbortReason2222["APPLICATION_EXCEEDED_REPLY_TIME"] = 8] = "APPLICATION_EXCEEDED_REPLY_TIME";
              AbortReason2222[AbortReason2222["OUT_OF_RESOURCES"] = 9] = "OUT_OF_RESOURCES";
              AbortReason2222[AbortReason2222["TSM_TIMEOUT"] = 10] = "TSM_TIMEOUT";
              AbortReason2222[AbortReason2222["APDU_TOO_LONG"] = 11] = "APDU_TOO_LONG";
              return AbortReason2222;
            })(AbortReason222 || {});
            var RejectReason222 = /* @__PURE__ */ ((RejectReason2222) => {
              RejectReason2222[RejectReason2222["OTHER"] = 0] = "OTHER";
              RejectReason2222[RejectReason2222["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
              RejectReason2222[RejectReason2222["INCONSISTENT_PARAMETERS"] = 2] = "INCONSISTENT_PARAMETERS";
              RejectReason2222[RejectReason2222["INVALID_PARAMETER_DATA_TYPE"] = 3] = "INVALID_PARAMETER_DATA_TYPE";
              RejectReason2222[RejectReason2222["INVALID_TAG"] = 4] = "INVALID_TAG";
              RejectReason2222[RejectReason2222["MISSING_REQUIRED_PARAMETER"] = 5] = "MISSING_REQUIRED_PARAMETER";
              RejectReason2222[RejectReason2222["PARAMETER_OUT_OF_RANGE"] = 6] = "PARAMETER_OUT_OF_RANGE";
              RejectReason2222[RejectReason2222["TOO_MANY_ARGUMENTS"] = 7] = "TOO_MANY_ARGUMENTS";
              RejectReason2222[RejectReason2222["UNDEFINED_ENUMERATION"] = 8] = "UNDEFINED_ENUMERATION";
              RejectReason2222[RejectReason2222["UNRECOGNIZED_SERVICE"] = 9] = "UNRECOGNIZED_SERVICE";
              return RejectReason2222;
            })(RejectReason222 || {});
            var ErrorClass222 = /* @__PURE__ */ ((ErrorClass2222) => {
              ErrorClass2222[ErrorClass2222["DEVICE"] = 0] = "DEVICE";
              ErrorClass2222[ErrorClass2222["OBJECT"] = 1] = "OBJECT";
              ErrorClass2222[ErrorClass2222["PROPERTY"] = 2] = "PROPERTY";
              ErrorClass2222[ErrorClass2222["RESOURCES"] = 3] = "RESOURCES";
              ErrorClass2222[ErrorClass2222["SECURITY"] = 4] = "SECURITY";
              ErrorClass2222[ErrorClass2222["SERVICES"] = 5] = "SERVICES";
              ErrorClass2222[ErrorClass2222["VT"] = 6] = "VT";
              ErrorClass2222[ErrorClass2222["COMMUNICATION"] = 7] = "COMMUNICATION";
              return ErrorClass2222;
            })(ErrorClass222 || {});
            var ErrorClassName222 = invertEnum222(
              ErrorClass222
            );
            var ErrorCode222 = /* @__PURE__ */ ((ErrorCode2222) => {
              ErrorCode2222[ErrorCode2222["ABORT_APDU_TOO_LONG"] = 123] = "ABORT_APDU_TOO_LONG";
              ErrorCode2222[ErrorCode2222["ABORT_APPLICATION_EXCEEDED_REPLY_TIME"] = 124] = "ABORT_APPLICATION_EXCEEDED_REPLY_TIME";
              ErrorCode2222[ErrorCode2222["ABORT_BUFFER_OVERFLOW"] = 51] = "ABORT_BUFFER_OVERFLOW";
              ErrorCode2222[ErrorCode2222["ABORT_INSUFFICIENT_SECURITY"] = 135] = "ABORT_INSUFFICIENT_SECURITY";
              ErrorCode2222[ErrorCode2222["ABORT_INVALID_APDU_IN_THIS_STATE"] = 52] = "ABORT_INVALID_APDU_IN_THIS_STATE";
              ErrorCode2222[ErrorCode2222["ABORT_OTHER"] = 56] = "ABORT_OTHER";
              ErrorCode2222[ErrorCode2222["ABORT_OUT_OF_RESOURCES"] = 125] = "ABORT_OUT_OF_RESOURCES";
              ErrorCode2222[ErrorCode2222["ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 53] = "ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK";
              ErrorCode2222[ErrorCode2222["ABORT_PROPRIETARY"] = 55] = "ABORT_PROPRIETARY";
              ErrorCode2222[ErrorCode2222["ABORT_SECURITY_ERROR"] = 136] = "ABORT_SECURITY_ERROR";
              ErrorCode2222[ErrorCode2222["ABORT_SEGMENTATION_NOT_SUPPORTED"] = 54] = "ABORT_SEGMENTATION_NOT_SUPPORTED";
              ErrorCode2222[ErrorCode2222["ABORT_TSM_TIMEOUT"] = 126] = "ABORT_TSM_TIMEOUT";
              ErrorCode2222[ErrorCode2222["ABORT_WINDOW_SIZE_OUT_OF_RANGE"] = 127] = "ABORT_WINDOW_SIZE_OUT_OF_RANGE";
              ErrorCode2222[ErrorCode2222["ACCESS_DENIED"] = 85] = "ACCESS_DENIED";
              ErrorCode2222[ErrorCode2222["ADDRESSING_ERROR"] = 115] = "ADDRESSING_ERROR";
              ErrorCode2222[ErrorCode2222["BAD_DESTINATION_ADDRESS"] = 86] = "BAD_DESTINATION_ADDRESS";
              ErrorCode2222[ErrorCode2222["BAD_DESTINATION_DEVICE_ID"] = 87] = "BAD_DESTINATION_DEVICE_ID";
              ErrorCode2222[ErrorCode2222["BAD_SIGNATURE"] = 88] = "BAD_SIGNATURE";
              ErrorCode2222[ErrorCode2222["BAD_SOURCE_ADDRESS"] = 89] = "BAD_SOURCE_ADDRESS";
              ErrorCode2222[ErrorCode2222["BAD_TIMESTAMP"] = 90] = "BAD_TIMESTAMP";
              ErrorCode2222[ErrorCode2222["BUSY"] = 82] = "BUSY";
              ErrorCode2222[ErrorCode2222["CANNOT_USE_KEY"] = 91] = "CANNOT_USE_KEY";
              ErrorCode2222[ErrorCode2222["CANNOT_VERIFY_MESSAGE_ID"] = 92] = "CANNOT_VERIFY_MESSAGE_ID";
              ErrorCode2222[ErrorCode2222["CHARACTER_SET_NOT_SUPPORTED"] = 41] = "CHARACTER_SET_NOT_SUPPORTED";
              ErrorCode2222[ErrorCode2222["COMMUNICATION_DISABLED"] = 83] = "COMMUNICATION_DISABLED";
              ErrorCode2222[ErrorCode2222["CONFIGURATION_IN_PROGRESS"] = 2] = "CONFIGURATION_IN_PROGRESS";
              ErrorCode2222[ErrorCode2222["CORRECT_KEY_REVISION"] = 93] = "CORRECT_KEY_REVISION";
              ErrorCode2222[ErrorCode2222["COV_SUBSCRIPTION_FAILED"] = 43] = "COV_SUBSCRIPTION_FAILED";
              ErrorCode2222[ErrorCode2222["DATATYPE_NOT_SUPPORTED"] = 47] = "DATATYPE_NOT_SUPPORTED";
              ErrorCode2222[ErrorCode2222["DELETE_FDT_ENTRY_FAILED"] = 120] = "DELETE_FDT_ENTRY_FAILED";
              ErrorCode2222[ErrorCode2222["DESTINATION_DEVICE_ID_REQUIRED"] = 94] = "DESTINATION_DEVICE_ID_REQUIRED";
              ErrorCode2222[ErrorCode2222["DEVICE_BUSY"] = 3] = "DEVICE_BUSY";
              ErrorCode2222[ErrorCode2222["DISTRIBUTE_BROADCAST_FAILED"] = 121] = "DISTRIBUTE_BROADCAST_FAILED";
              ErrorCode2222[ErrorCode2222["DUPLICATE_ENTRY"] = 137] = "DUPLICATE_ENTRY";
              ErrorCode2222[ErrorCode2222["DUPLICATE_MESSAGE"] = 95] = "DUPLICATE_MESSAGE";
              ErrorCode2222[ErrorCode2222["DUPLICATE_NAME"] = 48] = "DUPLICATE_NAME";
              ErrorCode2222[ErrorCode2222["DUPLICATE_OBJECT_ID"] = 49] = "DUPLICATE_OBJECT_ID";
              ErrorCode2222[ErrorCode2222["DYNAMIC_CREATION_NOT_SUPPORTED"] = 4] = "DYNAMIC_CREATION_NOT_SUPPORTED";
              ErrorCode2222[ErrorCode2222["ENCRYPTION_NOT_CONFIGURED"] = 96] = "ENCRYPTION_NOT_CONFIGURED";
              ErrorCode2222[ErrorCode2222["ENCRYPTION_REQUIRED"] = 97] = "ENCRYPTION_REQUIRED";
              ErrorCode2222[ErrorCode2222["FILE_ACCESS_DENIED"] = 5] = "FILE_ACCESS_DENIED";
              ErrorCode2222[ErrorCode2222["FILE_FULL"] = 128] = "FILE_FULL";
              ErrorCode2222[ErrorCode2222["INCONSISTENT_CONFIGURATION"] = 129] = "INCONSISTENT_CONFIGURATION";
              ErrorCode2222[ErrorCode2222["INCONSISTENT_OBJECT_TYPE"] = 130] = "INCONSISTENT_OBJECT_TYPE";
              ErrorCode2222[ErrorCode2222["INCONSISTENT_PARAMETERS"] = 7] = "INCONSISTENT_PARAMETERS";
              ErrorCode2222[ErrorCode2222["INCONSISTENT_SELECTION_CRITERION"] = 8] = "INCONSISTENT_SELECTION_CRITERION";
              ErrorCode2222[ErrorCode2222["INCORRECT_KEY"] = 98] = "INCORRECT_KEY";
              ErrorCode2222[ErrorCode2222["INTERNAL_ERROR"] = 131] = "INTERNAL_ERROR";
              ErrorCode2222[ErrorCode2222["INVALID_ARRAY_INDEX"] = 42] = "INVALID_ARRAY_INDEX";
              ErrorCode2222[ErrorCode2222["INVALID_CONFIGURATION_DATA"] = 46] = "INVALID_CONFIGURATION_DATA";
              ErrorCode2222[ErrorCode2222["INVALID_DATA_TYPE"] = 9] = "INVALID_DATA_TYPE";
              ErrorCode2222[ErrorCode2222["INVALID_EVENT_STATE"] = 73] = "INVALID_EVENT_STATE";
              ErrorCode2222[ErrorCode2222["INVALID_FILE_ACCESS_METHOD"] = 10] = "INVALID_FILE_ACCESS_METHOD";
              ErrorCode2222[ErrorCode2222["INVALID_FILE_START_POSITION"] = 11] = "INVALID_FILE_START_POSITION";
              ErrorCode2222[ErrorCode2222["INVALID_KEY_DATA"] = 99] = "INVALID_KEY_DATA";
              ErrorCode2222[ErrorCode2222["INVALID_PARAMETER_DATA_TYPE"] = 13] = "INVALID_PARAMETER_DATA_TYPE";
              ErrorCode2222[ErrorCode2222["INVALID_TAG"] = 57] = "INVALID_TAG";
              ErrorCode2222[ErrorCode2222["INVALID_TIMESTAMP"] = 14] = "INVALID_TIMESTAMP";
              ErrorCode2222[ErrorCode2222["INVALID_VALUE_IN_THIS_STATE"] = 138] = "INVALID_VALUE_IN_THIS_STATE";
              ErrorCode2222[ErrorCode2222["KEY_UPDATE_IN_PROGRESS"] = 100] = "KEY_UPDATE_IN_PROGRESS";
              ErrorCode2222[ErrorCode2222["LIST_ELEMENT_NOT_FOUND"] = 81] = "LIST_ELEMENT_NOT_FOUND";
              ErrorCode2222[ErrorCode2222["LOG_BUFFER_FULL"] = 75] = "LOG_BUFFER_FULL";
              ErrorCode2222[ErrorCode2222["LOGGED_VALUE_PURGED"] = 76] = "LOGGED_VALUE_PURGED";
              ErrorCode2222[ErrorCode2222["MALFORMED_MESSAGE"] = 101] = "MALFORMED_MESSAGE";
              ErrorCode2222[ErrorCode2222["MESSAGE_TOO_LONG"] = 113] = "MESSAGE_TOO_LONG";
              ErrorCode2222[ErrorCode2222["MISSING_REQUIRED_PARAMETER"] = 16] = "MISSING_REQUIRED_PARAMETER";
              ErrorCode2222[ErrorCode2222["NETWORK_DOWN"] = 58] = "NETWORK_DOWN";
              ErrorCode2222[ErrorCode2222["NO_ALARM_CONFIGURED"] = 74] = "NO_ALARM_CONFIGURED";
              ErrorCode2222[ErrorCode2222["NO_OBJECTS_OF_SPECIFIED_TYPE"] = 17] = "NO_OBJECTS_OF_SPECIFIED_TYPE";
              ErrorCode2222[ErrorCode2222["NO_PROPERTY_SPECIFIED"] = 77] = "NO_PROPERTY_SPECIFIED";
              ErrorCode2222[ErrorCode2222["NO_SPACE_FOR_OBJECT"] = 18] = "NO_SPACE_FOR_OBJECT";
              ErrorCode2222[ErrorCode2222["NO_SPACE_TO_ADD_LIST_ELEMENT"] = 19] = "NO_SPACE_TO_ADD_LIST_ELEMENT";
              ErrorCode2222[ErrorCode2222["NO_SPACE_TO_WRITE_PROPERTY"] = 20] = "NO_SPACE_TO_WRITE_PROPERTY";
              ErrorCode2222[ErrorCode2222["NO_VT_SESSIONS_AVAILABLE"] = 21] = "NO_VT_SESSIONS_AVAILABLE";
              ErrorCode2222[ErrorCode2222["NOT_CONFIGURED"] = 132] = "NOT_CONFIGURED";
              ErrorCode2222[ErrorCode2222["NOT_CONFIGURED_FOR_TRIGGERED_LOGGING"] = 78] = "NOT_CONFIGURED_FOR_TRIGGERED_LOGGING";
              ErrorCode2222[ErrorCode2222["NOT_COV_PROPERTY"] = 44] = "NOT_COV_PROPERTY";
              ErrorCode2222[ErrorCode2222["NOT_KEY_SERVER"] = 102] = "NOT_KEY_SERVER";
              ErrorCode2222[ErrorCode2222["NOT_ROUTER_TO_DNET"] = 110] = "NOT_ROUTER_TO_DNET";
              ErrorCode2222[ErrorCode2222["OBJECT_DELETION_NOT_PERMITTED"] = 23] = "OBJECT_DELETION_NOT_PERMITTED";
              ErrorCode2222[ErrorCode2222["OBJECT_IDENTIFIER_ALREADY_EXISTS"] = 24] = "OBJECT_IDENTIFIER_ALREADY_EXISTS";
              ErrorCode2222[ErrorCode2222["OPERATIONAL_PROBLEM"] = 25] = "OPERATIONAL_PROBLEM";
              ErrorCode2222[ErrorCode2222["OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED"] = 45] = "OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED";
              ErrorCode2222[ErrorCode2222["OTHER"] = 0] = "OTHER";
              ErrorCode2222[ErrorCode2222["OUT_OF_MEMORY"] = 133] = "OUT_OF_MEMORY";
              ErrorCode2222[ErrorCode2222["PARAMETER_OUT_OF_RANGE"] = 80] = "PARAMETER_OUT_OF_RANGE";
              ErrorCode2222[ErrorCode2222["PASSWORD_FAILURE"] = 26] = "PASSWORD_FAILURE";
              ErrorCode2222[ErrorCode2222["PROPERTY_IS_NOT_A_LIST"] = 22] = "PROPERTY_IS_NOT_A_LIST";
              ErrorCode2222[ErrorCode2222["PROPERTY_IS_NOT_AN_ARRAY"] = 50] = "PROPERTY_IS_NOT_AN_ARRAY";
              ErrorCode2222[ErrorCode2222["READ_ACCESS_DENIED"] = 27] = "READ_ACCESS_DENIED";
              ErrorCode2222[ErrorCode2222["READ_BDT_FAILED"] = 117] = "READ_BDT_FAILED";
              ErrorCode2222[ErrorCode2222["READ_FDT_FAILED"] = 119] = "READ_FDT_FAILED";
              ErrorCode2222[ErrorCode2222["REGISTER_FOREIGN_DEVICE_FAILED"] = 118] = "REGISTER_FOREIGN_DEVICE_FAILED";
              ErrorCode2222[ErrorCode2222["REJECT_BUFFER_OVERFLOW"] = 59] = "REJECT_BUFFER_OVERFLOW";
              ErrorCode2222[ErrorCode2222["REJECT_INCONSISTENT_PARAMETERS"] = 60] = "REJECT_INCONSISTENT_PARAMETERS";
              ErrorCode2222[ErrorCode2222["REJECT_INVALID_PARAMETER_DATA_TYPE"] = 61] = "REJECT_INVALID_PARAMETER_DATA_TYPE";
              ErrorCode2222[ErrorCode2222["REJECT_INVALID_TAG"] = 62] = "REJECT_INVALID_TAG";
              ErrorCode2222[ErrorCode2222["REJECT_MISSING_REQUIRED_PARAMETER"] = 63] = "REJECT_MISSING_REQUIRED_PARAMETER";
              ErrorCode2222[ErrorCode2222["REJECT_OTHER"] = 69] = "REJECT_OTHER";
              ErrorCode2222[ErrorCode2222["REJECT_PARAMETER_OUT_OF_RANGE"] = 64] = "REJECT_PARAMETER_OUT_OF_RANGE";
              ErrorCode2222[ErrorCode2222["REJECT_PROPRIETARY"] = 68] = "REJECT_PROPRIETARY";
              ErrorCode2222[ErrorCode2222["REJECT_TOO_MANY_ARGUMENTS"] = 65] = "REJECT_TOO_MANY_ARGUMENTS";
              ErrorCode2222[ErrorCode2222["REJECT_UNDEFINED_ENUMERATION"] = 66] = "REJECT_UNDEFINED_ENUMERATION";
              ErrorCode2222[ErrorCode2222["REJECT_UNRECOGNIZED_SERVICE"] = 67] = "REJECT_UNRECOGNIZED_SERVICE";
              ErrorCode2222[ErrorCode2222["ROUTER_BUSY"] = 111] = "ROUTER_BUSY";
              ErrorCode2222[ErrorCode2222["SECURITY_ERROR"] = 114] = "SECURITY_ERROR";
              ErrorCode2222[ErrorCode2222["SECURITY_NOT_CONFIGURED"] = 103] = "SECURITY_NOT_CONFIGURED";
              ErrorCode2222[ErrorCode2222["SERVICE_REQUEST_DENIED"] = 29] = "SERVICE_REQUEST_DENIED";
              ErrorCode2222[ErrorCode2222["SOURCE_SECURITY_REQUIRED"] = 104] = "SOURCE_SECURITY_REQUIRED";
              ErrorCode2222[ErrorCode2222["SUCCESS"] = 84] = "SUCCESS";
              ErrorCode2222[ErrorCode2222["TIMEOUT"] = 30] = "TIMEOUT";
              ErrorCode2222[ErrorCode2222["TOO_MANY_KEYS"] = 105] = "TOO_MANY_KEYS";
              ErrorCode2222[ErrorCode2222["UNKNOWN_AUTHENTICATION_TYPE"] = 106] = "UNKNOWN_AUTHENTICATION_TYPE";
              ErrorCode2222[ErrorCode2222["UNKNOWN_DEVICE"] = 70] = "UNKNOWN_DEVICE";
              ErrorCode2222[ErrorCode2222["UNKNOWN_FILE_SIZE"] = 122] = "UNKNOWN_FILE_SIZE";
              ErrorCode2222[ErrorCode2222["UNKNOWN_KEY"] = 107] = "UNKNOWN_KEY";
              ErrorCode2222[ErrorCode2222["UNKNOWN_KEY_REVISION"] = 108] = "UNKNOWN_KEY_REVISION";
              ErrorCode2222[ErrorCode2222["UNKNOWN_NETWORK_MESSAGE"] = 112] = "UNKNOWN_NETWORK_MESSAGE";
              ErrorCode2222[ErrorCode2222["UNKNOWN_OBJECT"] = 31] = "UNKNOWN_OBJECT";
              ErrorCode2222[ErrorCode2222["UNKNOWN_PROPERTY"] = 32] = "UNKNOWN_PROPERTY";
              ErrorCode2222[ErrorCode2222["UNKNOWN_ROUTE"] = 71] = "UNKNOWN_ROUTE";
              ErrorCode2222[ErrorCode2222["UNKNOWN_SOURCE_MESSAGE"] = 109] = "UNKNOWN_SOURCE_MESSAGE";
              ErrorCode2222[ErrorCode2222["UNKNOWN_SUBSCRIPTION"] = 79] = "UNKNOWN_SUBSCRIPTION";
              ErrorCode2222[ErrorCode2222["UNKNOWN_VT_CLASS"] = 34] = "UNKNOWN_VT_CLASS";
              ErrorCode2222[ErrorCode2222["UNKNOWN_VT_SESSION"] = 35] = "UNKNOWN_VT_SESSION";
              ErrorCode2222[ErrorCode2222["UNSUPPORTED_OBJECT_TYPE"] = 36] = "UNSUPPORTED_OBJECT_TYPE";
              ErrorCode2222[ErrorCode2222["VALUE_NOT_INITIALIZED"] = 72] = "VALUE_NOT_INITIALIZED";
              ErrorCode2222[ErrorCode2222["VALUE_OUT_OF_RANGE"] = 37] = "VALUE_OUT_OF_RANGE";
              ErrorCode2222[ErrorCode2222["VALUE_TOO_LONG"] = 134] = "VALUE_TOO_LONG";
              ErrorCode2222[ErrorCode2222["VT_SESSION_ALREADY_CLOSED"] = 38] = "VT_SESSION_ALREADY_CLOSED";
              ErrorCode2222[ErrorCode2222["VT_SESSION_TERMINATION_FAILURE"] = 39] = "VT_SESSION_TERMINATION_FAILURE";
              ErrorCode2222[ErrorCode2222["WRITE_ACCESS_DENIED"] = 40] = "WRITE_ACCESS_DENIED";
              ErrorCode2222[ErrorCode2222["WRITE_BDT_FAILED"] = 116] = "WRITE_BDT_FAILED";
              return ErrorCode2222;
            })(ErrorCode222 || {});
            var ErrorCodeName222 = invertEnum222(
              ErrorCode222
            );
            var AccessAuthenticationFactorDisable222 = /* @__PURE__ */ ((AccessAuthenticationFactorDisable2222) => {
              AccessAuthenticationFactorDisable2222[AccessAuthenticationFactorDisable2222["NONE"] = 0] = "NONE";
              AccessAuthenticationFactorDisable2222[AccessAuthenticationFactorDisable2222["DISABLED"] = 1] = "DISABLED";
              AccessAuthenticationFactorDisable2222[AccessAuthenticationFactorDisable2222["DISABLED_LOST"] = 2] = "DISABLED_LOST";
              AccessAuthenticationFactorDisable2222[AccessAuthenticationFactorDisable2222["DISABLED_STOLEN"] = 3] = "DISABLED_STOLEN";
              AccessAuthenticationFactorDisable2222[AccessAuthenticationFactorDisable2222["DISABLED_DAMAGED"] = 4] = "DISABLED_DAMAGED";
              AccessAuthenticationFactorDisable2222[AccessAuthenticationFactorDisable2222["DISABLED_DESTROYED"] = 5] = "DISABLED_DESTROYED";
              return AccessAuthenticationFactorDisable2222;
            })(AccessAuthenticationFactorDisable222 || {});
            var AccessCredentialDisable222 = /* @__PURE__ */ ((AccessCredentialDisable2222) => {
              AccessCredentialDisable2222[AccessCredentialDisable2222["NONE"] = 0] = "NONE";
              AccessCredentialDisable2222[AccessCredentialDisable2222["DISABLE"] = 1] = "DISABLE";
              AccessCredentialDisable2222[AccessCredentialDisable2222["DISABLE_MANUAL"] = 2] = "DISABLE_MANUAL";
              AccessCredentialDisable2222[AccessCredentialDisable2222["DISABLE_LOCKOUT"] = 3] = "DISABLE_LOCKOUT";
              return AccessCredentialDisable2222;
            })(AccessCredentialDisable222 || {});
            var AccessCredentialDisableReason222 = /* @__PURE__ */ ((AccessCredentialDisableReason2222) => {
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED"] = 0] = "DISABLED";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_NEEDS_PROVISIONING"] = 1] = "DISABLED_NEEDS_PROVISIONING";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_UNASSIGNED"] = 2] = "DISABLED_UNASSIGNED";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_NOT_YET_ACTIVE"] = 3] = "DISABLED_NOT_YET_ACTIVE";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_EXPIRED"] = 4] = "DISABLED_EXPIRED";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_LOCKOUT"] = 5] = "DISABLED_LOCKOUT";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_MAX_DAYS"] = 6] = "DISABLED_MAX_DAYS";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_MAX_USES"] = 7] = "DISABLED_MAX_USES";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_INACTIVITY"] = 8] = "DISABLED_INACTIVITY";
              AccessCredentialDisableReason2222[AccessCredentialDisableReason2222["DISABLED_MANUAL"] = 9] = "DISABLED_MANUAL";
              return AccessCredentialDisableReason2222;
            })(AccessCredentialDisableReason222 || {});
            var AccessEvent222 = /* @__PURE__ */ ((AccessEvent2222) => {
              AccessEvent2222[AccessEvent2222["NONE"] = 0] = "NONE";
              AccessEvent2222[AccessEvent2222["GRANTED"] = 1] = "GRANTED";
              AccessEvent2222[AccessEvent2222["MUSTER"] = 2] = "MUSTER";
              AccessEvent2222[AccessEvent2222["PASSBACK_DETECTED"] = 3] = "PASSBACK_DETECTED";
              AccessEvent2222[AccessEvent2222["DURESS"] = 4] = "DURESS";
              AccessEvent2222[AccessEvent2222["TRACE"] = 5] = "TRACE";
              AccessEvent2222[AccessEvent2222["LOCKOUT_MAX_ATTEMPTS"] = 6] = "LOCKOUT_MAX_ATTEMPTS";
              AccessEvent2222[AccessEvent2222["LOCKOUT_OTHER"] = 7] = "LOCKOUT_OTHER";
              AccessEvent2222[AccessEvent2222["LOCKOUT_RELINQUISHED"] = 8] = "LOCKOUT_RELINQUISHED";
              AccessEvent2222[AccessEvent2222["LOCKED_BY_HIGHER_PRIORITY"] = 9] = "LOCKED_BY_HIGHER_PRIORITY";
              AccessEvent2222[AccessEvent2222["OUT_OF_SERVICE"] = 10] = "OUT_OF_SERVICE";
              AccessEvent2222[AccessEvent2222["OUT_OF_SERVICE_RELINQUISHED"] = 11] = "OUT_OF_SERVICE_RELINQUISHED";
              AccessEvent2222[AccessEvent2222["ACCOMPANIMENT_BY"] = 12] = "ACCOMPANIMENT_BY";
              AccessEvent2222[AccessEvent2222["AUTHENTICATION_FACTOR_READ"] = 13] = "AUTHENTICATION_FACTOR_READ";
              AccessEvent2222[AccessEvent2222["AUTHORIZATION_DELAYED"] = 14] = "AUTHORIZATION_DELAYED";
              AccessEvent2222[AccessEvent2222["VERIFICATION_REQUIRED"] = 15] = "VERIFICATION_REQUIRED";
              AccessEvent2222[AccessEvent2222["NO_ENTRY_AFTER_GRANTED"] = 16] = "NO_ENTRY_AFTER_GRANTED";
              AccessEvent2222[AccessEvent2222["DENIED_DENY_ALL"] = 128] = "DENIED_DENY_ALL";
              AccessEvent2222[AccessEvent2222["DENIED_UNKNOWN_CREDENTIAL"] = 129] = "DENIED_UNKNOWN_CREDENTIAL";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_UNAVAILABLE"] = 130] = "DENIED_AUTHENTICATION_UNAVAILABLE";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_FACTOR_TIMEOUT"] = 131] = "DENIED_AUTHENTICATION_FACTOR_TIMEOUT";
              AccessEvent2222[AccessEvent2222["DENIED_INCORRECT_AUTHENTICATION_FACTOR"] = 132] = "DENIED_INCORRECT_AUTHENTICATION_FACTOR";
              AccessEvent2222[AccessEvent2222["DENIED_ZONE_NO_ACCESS_RIGHTS"] = 133] = "DENIED_ZONE_NO_ACCESS_RIGHTS";
              AccessEvent2222[AccessEvent2222["DENIED_POINT_NO_ACCESS_RIGHTS"] = 134] = "DENIED_POINT_NO_ACCESS_RIGHTS";
              AccessEvent2222[AccessEvent2222["DENIED_NO_ACCESS_RIGHTS"] = 135] = "DENIED_NO_ACCESS_RIGHTS";
              AccessEvent2222[AccessEvent2222["DENIED_OUT_OF_TIME_RANGE"] = 136] = "DENIED_OUT_OF_TIME_RANGE";
              AccessEvent2222[AccessEvent2222["DENIED_THREAT_LEVEL"] = 137] = "DENIED_THREAT_LEVEL";
              AccessEvent2222[AccessEvent2222["DENIED_PASSBACK"] = 138] = "DENIED_PASSBACK";
              AccessEvent2222[AccessEvent2222["DENIED_UNEXPECTED_LOCATION_USAGE"] = 139] = "DENIED_UNEXPECTED_LOCATION_USAGE";
              AccessEvent2222[AccessEvent2222["DENIED_MAX_ATTEMPTS"] = 140] = "DENIED_MAX_ATTEMPTS";
              AccessEvent2222[AccessEvent2222["DENIED_LOWER_OCCUPANCY_LIMIT"] = 141] = "DENIED_LOWER_OCCUPANCY_LIMIT";
              AccessEvent2222[AccessEvent2222["DENIED_UPPER_OCCUPANCY_LIMIT"] = 142] = "DENIED_UPPER_OCCUPANCY_LIMIT";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_FACTOR_LOST"] = 143] = "DENIED_AUTHENTICATION_FACTOR_LOST";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_FACTOR_STOLEN"] = 144] = "DENIED_AUTHENTICATION_FACTOR_STOLEN";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_FACTOR_DAMAGED"] = 145] = "DENIED_AUTHENTICATION_FACTOR_DAMAGED";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_FACTOR_DESTROYED"] = 146] = "DENIED_AUTHENTICATION_FACTOR_DESTROYED";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_FACTOR_DISABLED"] = 147] = "DENIED_AUTHENTICATION_FACTOR_DISABLED";
              AccessEvent2222[AccessEvent2222["DENIED_AUTHENTICATION_FACTOR_ERROR"] = 148] = "DENIED_AUTHENTICATION_FACTOR_ERROR";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_UNASSIGNED"] = 149] = "DENIED_CREDENTIAL_UNASSIGNED";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_NOT_PROVISIONED"] = 150] = "DENIED_CREDENTIAL_NOT_PROVISIONED";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_NOT_YET_ACTIVE"] = 151] = "DENIED_CREDENTIAL_NOT_YET_ACTIVE";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_EXPIRED"] = 152] = "DENIED_CREDENTIAL_EXPIRED";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_MANUAL_DISABLE"] = 153] = "DENIED_CREDENTIAL_MANUAL_DISABLE";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_LOCKOUT"] = 154] = "DENIED_CREDENTIAL_LOCKOUT";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_MAX_DAYS"] = 155] = "DENIED_CREDENTIAL_MAX_DAYS";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_MAX_USES"] = 156] = "DENIED_CREDENTIAL_MAX_USES";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_INACTIVITY"] = 157] = "DENIED_CREDENTIAL_INACTIVITY";
              AccessEvent2222[AccessEvent2222["DENIED_CREDENTIAL_DISABLED"] = 158] = "DENIED_CREDENTIAL_DISABLED";
              AccessEvent2222[AccessEvent2222["DENIED_NO_ACCOMPANIMENT"] = 159] = "DENIED_NO_ACCOMPANIMENT";
              AccessEvent2222[AccessEvent2222["DENIED_INCORRECT_ACCOMPANIMENT"] = 160] = "DENIED_INCORRECT_ACCOMPANIMENT";
              AccessEvent2222[AccessEvent2222["DENIED_LOCKOUT"] = 161] = "DENIED_LOCKOUT";
              AccessEvent2222[AccessEvent2222["DENIED_VERIFICATION_FAILED"] = 162] = "DENIED_VERIFICATION_FAILED";
              AccessEvent2222[AccessEvent2222["DENIED_VERIFICATION_TIMEOUT"] = 163] = "DENIED_VERIFICATION_TIMEOUT";
              AccessEvent2222[AccessEvent2222["DENIED_OTHER"] = 164] = "DENIED_OTHER";
              return AccessEvent2222;
            })(AccessEvent222 || {});
            var AccessPassbackMode222 = /* @__PURE__ */ ((AccessPassbackMode2222) => {
              AccessPassbackMode2222[AccessPassbackMode2222["PASSBACK_OFF"] = 0] = "PASSBACK_OFF";
              AccessPassbackMode2222[AccessPassbackMode2222["HARD_PASSBACK"] = 1] = "HARD_PASSBACK";
              AccessPassbackMode2222[AccessPassbackMode2222["SOFT_PASSBACK"] = 2] = "SOFT_PASSBACK";
              return AccessPassbackMode2222;
            })(AccessPassbackMode222 || {});
            var AccessUserType222 = /* @__PURE__ */ ((AccessUserType2222) => {
              AccessUserType2222[AccessUserType2222["ASSET"] = 0] = "ASSET";
              AccessUserType2222[AccessUserType2222["GROUP"] = 1] = "GROUP";
              AccessUserType2222[AccessUserType2222["PERSON"] = 2] = "PERSON";
              return AccessUserType2222;
            })(AccessUserType222 || {});
            var AccessZoneOccupancyState222 = /* @__PURE__ */ ((AccessZoneOccupancyState2222) => {
              AccessZoneOccupancyState2222[AccessZoneOccupancyState2222["NORMAL"] = 0] = "NORMAL";
              AccessZoneOccupancyState2222[AccessZoneOccupancyState2222["BELOW_LOWER_LIMIT"] = 1] = "BELOW_LOWER_LIMIT";
              AccessZoneOccupancyState2222[AccessZoneOccupancyState2222["AT_LOWER_LIMIT"] = 2] = "AT_LOWER_LIMIT";
              AccessZoneOccupancyState2222[AccessZoneOccupancyState2222["AT_UPPER_LIMIT"] = 3] = "AT_UPPER_LIMIT";
              AccessZoneOccupancyState2222[AccessZoneOccupancyState2222["ABOVE_UPPER_LIMIT"] = 4] = "ABOVE_UPPER_LIMIT";
              AccessZoneOccupancyState2222[AccessZoneOccupancyState2222["DISABLED"] = 5] = "DISABLED";
              AccessZoneOccupancyState2222[AccessZoneOccupancyState2222["NOT_SUPPORTED"] = 6] = "NOT_SUPPORTED";
              return AccessZoneOccupancyState2222;
            })(AccessZoneOccupancyState222 || {});
            var Action222 = /* @__PURE__ */ ((Action2222) => {
              Action2222[Action2222["DIRECT"] = 0] = "DIRECT";
              Action2222[Action2222["REVERSE"] = 1] = "REVERSE";
              return Action2222;
            })(Action222 || {});
            var AuthenticationFactorType222 = /* @__PURE__ */ ((AuthenticationFactorType2222) => {
              AuthenticationFactorType2222[AuthenticationFactorType2222["UNDEFINED"] = 0] = "UNDEFINED";
              AuthenticationFactorType2222[AuthenticationFactorType2222["ERROR"] = 1] = "ERROR";
              AuthenticationFactorType2222[AuthenticationFactorType2222["CUSTOM"] = 2] = "CUSTOM";
              AuthenticationFactorType2222[AuthenticationFactorType2222["SIMPLE_NUMBER16"] = 3] = "SIMPLE_NUMBER16";
              AuthenticationFactorType2222[AuthenticationFactorType2222["SIMPLE_NUMBER32"] = 4] = "SIMPLE_NUMBER32";
              AuthenticationFactorType2222[AuthenticationFactorType2222["SIMPLE_NUMBER56"] = 5] = "SIMPLE_NUMBER56";
              AuthenticationFactorType2222[AuthenticationFactorType2222["SIMPLE_ALPHA_NUMERIC"] = 6] = "SIMPLE_ALPHA_NUMERIC";
              AuthenticationFactorType2222[AuthenticationFactorType2222["ABA_TRACK2"] = 7] = "ABA_TRACK2";
              AuthenticationFactorType2222[AuthenticationFactorType2222["WIEGAND26"] = 8] = "WIEGAND26";
              AuthenticationFactorType2222[AuthenticationFactorType2222["WIEGAND37"] = 9] = "WIEGAND37";
              AuthenticationFactorType2222[AuthenticationFactorType2222["WIEGAND37_FACILITY"] = 10] = "WIEGAND37_FACILITY";
              AuthenticationFactorType2222[AuthenticationFactorType2222["FACILITY16_CARD32"] = 11] = "FACILITY16_CARD32";
              AuthenticationFactorType2222[AuthenticationFactorType2222["FACILITY32_CARD32"] = 12] = "FACILITY32_CARD32";
              AuthenticationFactorType2222[AuthenticationFactorType2222["FASC_N"] = 13] = "FASC_N";
              AuthenticationFactorType2222[AuthenticationFactorType2222["FASC_N_BCD"] = 14] = "FASC_N_BCD";
              AuthenticationFactorType2222[AuthenticationFactorType2222["FASC_N_LARGE"] = 15] = "FASC_N_LARGE";
              AuthenticationFactorType2222[AuthenticationFactorType2222["FASC_N_LARGE_BCD"] = 16] = "FASC_N_LARGE_BCD";
              AuthenticationFactorType2222[AuthenticationFactorType2222["GSA75"] = 17] = "GSA75";
              AuthenticationFactorType2222[AuthenticationFactorType2222["CHUID"] = 18] = "CHUID";
              AuthenticationFactorType2222[AuthenticationFactorType2222["CHUID_FULL"] = 19] = "CHUID_FULL";
              AuthenticationFactorType2222[AuthenticationFactorType2222["GUID"] = 20] = "GUID";
              AuthenticationFactorType2222[AuthenticationFactorType2222["CBEFF_A"] = 21] = "CBEFF_A";
              AuthenticationFactorType2222[AuthenticationFactorType2222["CBEFF_B"] = 22] = "CBEFF_B";
              AuthenticationFactorType2222[AuthenticationFactorType2222["CBEFF_C"] = 23] = "CBEFF_C";
              AuthenticationFactorType2222[AuthenticationFactorType2222["USER_PASSWORD"] = 24] = "USER_PASSWORD";
              return AuthenticationFactorType2222;
            })(AuthenticationFactorType222 || {});
            var AuthenticationStatus222 = /* @__PURE__ */ ((AuthenticationStatus2222) => {
              AuthenticationStatus2222[AuthenticationStatus2222["NOT_READY"] = 0] = "NOT_READY";
              AuthenticationStatus2222[AuthenticationStatus2222["READY"] = 1] = "READY";
              AuthenticationStatus2222[AuthenticationStatus2222["DISABLED"] = 2] = "DISABLED";
              AuthenticationStatus2222[AuthenticationStatus2222["WAITING_FOR_AUTHENTICATION_FACTOR"] = 3] = "WAITING_FOR_AUTHENTICATION_FACTOR";
              AuthenticationStatus2222[AuthenticationStatus2222["WAITING_FOR_ACCOMPANIMENT"] = 4] = "WAITING_FOR_ACCOMPANIMENT";
              AuthenticationStatus2222[AuthenticationStatus2222["WAITING_FOR_VERIFICATION"] = 5] = "WAITING_FOR_VERIFICATION";
              AuthenticationStatus2222[AuthenticationStatus2222["IN_PROGRESS"] = 6] = "IN_PROGRESS";
              return AuthenticationStatus2222;
            })(AuthenticationStatus222 || {});
            var AuthorizationExemption222 = /* @__PURE__ */ ((AuthorizationExemption2222) => {
              AuthorizationExemption2222[AuthorizationExemption2222["PASSBACK"] = 0] = "PASSBACK";
              AuthorizationExemption2222[AuthorizationExemption2222["OCCUPANCY_CHECK"] = 1] = "OCCUPANCY_CHECK";
              AuthorizationExemption2222[AuthorizationExemption2222["ACCESS_RIGHTS"] = 2] = "ACCESS_RIGHTS";
              AuthorizationExemption2222[AuthorizationExemption2222["LOCKOUT"] = 3] = "LOCKOUT";
              AuthorizationExemption2222[AuthorizationExemption2222["DENY"] = 4] = "DENY";
              AuthorizationExemption2222[AuthorizationExemption2222["VERIFICATION"] = 5] = "VERIFICATION";
              AuthorizationExemption2222[AuthorizationExemption2222["AUTHORIZATION_DELAY"] = 6] = "AUTHORIZATION_DELAY";
              return AuthorizationExemption2222;
            })(AuthorizationExemption222 || {});
            var AuthorizationMode222 = /* @__PURE__ */ ((AuthorizationMode2222) => {
              AuthorizationMode2222[AuthorizationMode2222["AUTHORIZE"] = 0] = "AUTHORIZE";
              AuthorizationMode2222[AuthorizationMode2222["GRANT_ACTIVE"] = 1] = "GRANT_ACTIVE";
              AuthorizationMode2222[AuthorizationMode2222["DENY_ALL"] = 2] = "DENY_ALL";
              AuthorizationMode2222[AuthorizationMode2222["VERIFICATION_REQUIRED"] = 3] = "VERIFICATION_REQUIRED";
              AuthorizationMode2222[AuthorizationMode2222["AUTHORIZATION_DELAYED"] = 4] = "AUTHORIZATION_DELAYED";
              AuthorizationMode2222[AuthorizationMode2222["NONE"] = 5] = "NONE";
              return AuthorizationMode2222;
            })(AuthorizationMode222 || {});
            var BackupState222 = /* @__PURE__ */ ((BackupState2222) => {
              BackupState2222[BackupState2222["IDLE"] = 0] = "IDLE";
              BackupState2222[BackupState2222["PREPARING_FOR_BACKUP"] = 1] = "PREPARING_FOR_BACKUP";
              BackupState2222[BackupState2222["PREPARING_FOR_RESTORE"] = 2] = "PREPARING_FOR_RESTORE";
              BackupState2222[BackupState2222["PERFORMING_A_BACKUP"] = 3] = "PERFORMING_A_BACKUP";
              BackupState2222[BackupState2222["PERFORMING_A_RESTORE"] = 4] = "PERFORMING_A_RESTORE";
              BackupState2222[BackupState2222["BACKUP_FAILURE"] = 5] = "BACKUP_FAILURE";
              BackupState2222[BackupState2222["RESTORE_FAILURE"] = 6] = "RESTORE_FAILURE";
              return BackupState2222;
            })(BackupState222 || {});
            var BinaryLightingPV222 = /* @__PURE__ */ ((BinaryLightingPV2222) => {
              BinaryLightingPV2222[BinaryLightingPV2222["OFF"] = 0] = "OFF";
              BinaryLightingPV2222[BinaryLightingPV2222["ON"] = 1] = "ON";
              BinaryLightingPV2222[BinaryLightingPV2222["WARN"] = 2] = "WARN";
              BinaryLightingPV2222[BinaryLightingPV2222["WARN_OFF"] = 3] = "WARN_OFF";
              BinaryLightingPV2222[BinaryLightingPV2222["WARN_RELINQUISH"] = 4] = "WARN_RELINQUISH";
              BinaryLightingPV2222[BinaryLightingPV2222["STOP"] = 5] = "STOP";
              return BinaryLightingPV2222;
            })(BinaryLightingPV222 || {});
            var BinaryPV222 = /* @__PURE__ */ ((BinaryPV2222) => {
              BinaryPV2222[BinaryPV2222["INACTIVE"] = 0] = "INACTIVE";
              BinaryPV2222[BinaryPV2222["ACTIVE"] = 1] = "ACTIVE";
              return BinaryPV2222;
            })(BinaryPV222 || {});
            var DeviceStatus222 = /* @__PURE__ */ ((DeviceStatus2222) => {
              DeviceStatus2222[DeviceStatus2222["OPERATIONAL"] = 0] = "OPERATIONAL";
              DeviceStatus2222[DeviceStatus2222["OPERATIONAL_READ_ONLY"] = 1] = "OPERATIONAL_READ_ONLY";
              DeviceStatus2222[DeviceStatus2222["DOWNLOAD_REQUIRED"] = 2] = "DOWNLOAD_REQUIRED";
              DeviceStatus2222[DeviceStatus2222["DOWNLOAD_IN_PROGRESS"] = 3] = "DOWNLOAD_IN_PROGRESS";
              DeviceStatus2222[DeviceStatus2222["NON_OPERATIONAL"] = 4] = "NON_OPERATIONAL";
              DeviceStatus2222[DeviceStatus2222["BACKUP_IN_PROGRESS"] = 5] = "BACKUP_IN_PROGRESS";
              return DeviceStatus2222;
            })(DeviceStatus222 || {});
            var DoorAlarmState222 = /* @__PURE__ */ ((DoorAlarmState2222) => {
              DoorAlarmState2222[DoorAlarmState2222["NORMAL"] = 0] = "NORMAL";
              DoorAlarmState2222[DoorAlarmState2222["ALARM"] = 1] = "ALARM";
              DoorAlarmState2222[DoorAlarmState2222["DOOR_OPEN_TOO_LONG"] = 2] = "DOOR_OPEN_TOO_LONG";
              DoorAlarmState2222[DoorAlarmState2222["FORCED_OPEN"] = 3] = "FORCED_OPEN";
              DoorAlarmState2222[DoorAlarmState2222["TAMPER"] = 4] = "TAMPER";
              DoorAlarmState2222[DoorAlarmState2222["DOOR_FAULT"] = 5] = "DOOR_FAULT";
              DoorAlarmState2222[DoorAlarmState2222["LOCK_DOWN"] = 6] = "LOCK_DOWN";
              DoorAlarmState2222[DoorAlarmState2222["FREE_ACCESS"] = 7] = "FREE_ACCESS";
              DoorAlarmState2222[DoorAlarmState2222["EGRESS_OPEN"] = 8] = "EGRESS_OPEN";
              return DoorAlarmState2222;
            })(DoorAlarmState222 || {});
            var DoorSecuredStatus222 = /* @__PURE__ */ ((DoorSecuredStatus2222) => {
              DoorSecuredStatus2222[DoorSecuredStatus2222["SECURED"] = 0] = "SECURED";
              DoorSecuredStatus2222[DoorSecuredStatus2222["UNSECURED"] = 1] = "UNSECURED";
              DoorSecuredStatus2222[DoorSecuredStatus2222["UNKNOWN"] = 2] = "UNKNOWN";
              return DoorSecuredStatus2222;
            })(DoorSecuredStatus222 || {});
            var DoorStatus222 = /* @__PURE__ */ ((DoorStatus2222) => {
              DoorStatus2222[DoorStatus2222["CLOSED"] = 0] = "CLOSED";
              DoorStatus2222[DoorStatus2222["OPENED"] = 1] = "OPENED";
              DoorStatus2222[DoorStatus2222["UNKNOWN"] = 2] = "UNKNOWN";
              DoorStatus2222[DoorStatus2222["DOOR_FAULT"] = 3] = "DOOR_FAULT";
              DoorStatus2222[DoorStatus2222["UNUSED"] = 4] = "UNUSED";
              DoorStatus2222[DoorStatus2222["NONE"] = 5] = "NONE";
              DoorStatus2222[DoorStatus2222["CLOSING"] = 6] = "CLOSING";
              DoorStatus2222[DoorStatus2222["OPENING"] = 7] = "OPENING";
              DoorStatus2222[DoorStatus2222["SAFETY_LOCKED"] = 8] = "SAFETY_LOCKED";
              DoorStatus2222[DoorStatus2222["LIMITED_OPENED"] = 9] = "LIMITED_OPENED";
              return DoorStatus2222;
            })(DoorStatus222 || {});
            var DoorValue222 = /* @__PURE__ */ ((DoorValue2222) => {
              DoorValue2222[DoorValue2222["LOCK"] = 0] = "LOCK";
              DoorValue2222[DoorValue2222["UNLOCK"] = 1] = "UNLOCK";
              DoorValue2222[DoorValue2222["PULSE_UNLOCK"] = 2] = "PULSE_UNLOCK";
              DoorValue2222[DoorValue2222["EXTENDED_PULSE_UNLOCK"] = 3] = "EXTENDED_PULSE_UNLOCK";
              return DoorValue2222;
            })(DoorValue222 || {});
            var EngineeringUnits222 = /* @__PURE__ */ ((EngineeringUnits2222) => {
              EngineeringUnits2222[EngineeringUnits2222["METERS_PER_SECOND_PER_SECOND"] = 166] = "METERS_PER_SECOND_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["SQUARE_METERS"] = 0] = "SQUARE_METERS";
              EngineeringUnits2222[EngineeringUnits2222["SQUARE_CENTIMETERS"] = 116] = "SQUARE_CENTIMETERS";
              EngineeringUnits2222[EngineeringUnits2222["SQUARE_FEET"] = 1] = "SQUARE_FEET";
              EngineeringUnits2222[EngineeringUnits2222["SQUARE_INCHES"] = 115] = "SQUARE_INCHES";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY1"] = 105] = "CURRENCY1";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY2"] = 106] = "CURRENCY2";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY3"] = 107] = "CURRENCY3";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY4"] = 108] = "CURRENCY4";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY5"] = 109] = "CURRENCY5";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY6"] = 110] = "CURRENCY6";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY7"] = 111] = "CURRENCY7";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY8"] = 112] = "CURRENCY8";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY9"] = 113] = "CURRENCY9";
              EngineeringUnits2222[EngineeringUnits2222["CURRENCY10"] = 114] = "CURRENCY10";
              EngineeringUnits2222[EngineeringUnits2222["MILLIAMPERES"] = 2] = "MILLIAMPERES";
              EngineeringUnits2222[EngineeringUnits2222["AMPERES"] = 3] = "AMPERES";
              EngineeringUnits2222[EngineeringUnits2222["AMPERES_PER_METER"] = 167] = "AMPERES_PER_METER";
              EngineeringUnits2222[EngineeringUnits2222["AMPERES_PER_SQUARE_METER"] = 168] = "AMPERES_PER_SQUARE_METER";
              EngineeringUnits2222[EngineeringUnits2222["AMPERE_SQUARE_METERS"] = 169] = "AMPERE_SQUARE_METERS";
              EngineeringUnits2222[EngineeringUnits2222["DECIBELS"] = 199] = "DECIBELS";
              EngineeringUnits2222[EngineeringUnits2222["DECIBELS_MILLIVOLT"] = 200] = "DECIBELS_MILLIVOLT";
              EngineeringUnits2222[EngineeringUnits2222["DECIBELS_VOLT"] = 201] = "DECIBELS_VOLT";
              EngineeringUnits2222[EngineeringUnits2222["FARADS"] = 170] = "FARADS";
              EngineeringUnits2222[EngineeringUnits2222["HENRYS"] = 171] = "HENRYS";
              EngineeringUnits2222[EngineeringUnits2222["OHMS"] = 4] = "OHMS";
              EngineeringUnits2222[EngineeringUnits2222["OHM_METER_SQUARED_PER_METER"] = 237] = "OHM_METER_SQUARED_PER_METER";
              EngineeringUnits2222[EngineeringUnits2222["OHM_METERS"] = 172] = "OHM_METERS";
              EngineeringUnits2222[EngineeringUnits2222["MILLIOHMS"] = 145] = "MILLIOHMS";
              EngineeringUnits2222[EngineeringUnits2222["KILOHMS"] = 122] = "KILOHMS";
              EngineeringUnits2222[EngineeringUnits2222["MEGOHMS"] = 123] = "MEGOHMS";
              EngineeringUnits2222[EngineeringUnits2222["MICROSIEMENS"] = 190] = "MICROSIEMENS";
              EngineeringUnits2222[EngineeringUnits2222["MILLISIEMENS"] = 202] = "MILLISIEMENS";
              EngineeringUnits2222[EngineeringUnits2222["SIEMENS"] = 173] = "SIEMENS";
              EngineeringUnits2222[EngineeringUnits2222["SIEMENS_PER_METER"] = 174] = "SIEMENS_PER_METER";
              EngineeringUnits2222[EngineeringUnits2222["TESLAS"] = 175] = "TESLAS";
              EngineeringUnits2222[EngineeringUnits2222["VOLTS"] = 5] = "VOLTS";
              EngineeringUnits2222[EngineeringUnits2222["MILLIVOLTS"] = 124] = "MILLIVOLTS";
              EngineeringUnits2222[EngineeringUnits2222["KILOVOLTS"] = 6] = "KILOVOLTS";
              EngineeringUnits2222[EngineeringUnits2222["MEGAVOLTS"] = 7] = "MEGAVOLTS";
              EngineeringUnits2222[EngineeringUnits2222["VOLT_AMPERES"] = 8] = "VOLT_AMPERES";
              EngineeringUnits2222[EngineeringUnits2222["KILOVOLT_AMPERES"] = 9] = "KILOVOLT_AMPERES";
              EngineeringUnits2222[EngineeringUnits2222["MEGAVOLT_AMPERES"] = 10] = "MEGAVOLT_AMPERES";
              EngineeringUnits2222[EngineeringUnits2222["VOLT_AMPERES_REACTIVE"] = 11] = "VOLT_AMPERES_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["KILOVOLT_AMPERES_REACTIVE"] = 12] = "KILOVOLT_AMPERES_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["MEGAVOLT_AMPERES_REACTIVE"] = 13] = "MEGAVOLT_AMPERES_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["VOLTS_PER_DEGREE_KELVIN"] = 176] = "VOLTS_PER_DEGREE_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["VOLTS_PER_METER"] = 177] = "VOLTS_PER_METER";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_PHASE"] = 14] = "DEGREES_PHASE";
              EngineeringUnits2222[EngineeringUnits2222["POWER_FACTOR"] = 15] = "POWER_FACTOR";
              EngineeringUnits2222[EngineeringUnits2222["WEBERS"] = 178] = "WEBERS";
              EngineeringUnits2222[EngineeringUnits2222["AMPERE_SECONDS"] = 238] = "AMPERE_SECONDS";
              EngineeringUnits2222[EngineeringUnits2222["VOLT_AMPERE_HOURS"] = 239] = "VOLT_AMPERE_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["KILOVOLT_AMPERE_HOURS"] = 240] = "KILOVOLT_AMPERE_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["MEGAVOLT_AMPERE_HOURS"] = 241] = "MEGAVOLT_AMPERE_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["VOLT_AMPERE_HOURS_REACTIVE"] = 242] = "VOLT_AMPERE_HOURS_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["KILOVOLT_AMPERE_HOURS_REACTIVE"] = 243] = "KILOVOLT_AMPERE_HOURS_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["MEGAVOLT_AMPERE_HOURS_REACTIVE"] = 244] = "MEGAVOLT_AMPERE_HOURS_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["VOLT_SQUARE_HOURS"] = 245] = "VOLT_SQUARE_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["AMPERE_SQUARE_HOURS"] = 246] = "AMPERE_SQUARE_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["JOULES"] = 16] = "JOULES";
              EngineeringUnits2222[EngineeringUnits2222["KILOJOULES"] = 17] = "KILOJOULES";
              EngineeringUnits2222[EngineeringUnits2222["KILOJOULES_PER_KILOGRAM"] = 125] = "KILOJOULES_PER_KILOGRAM";
              EngineeringUnits2222[EngineeringUnits2222["MEGAJOULES"] = 126] = "MEGAJOULES";
              EngineeringUnits2222[EngineeringUnits2222["WATT_HOURS"] = 18] = "WATT_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["KILOWATT_HOURS"] = 19] = "KILOWATT_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["MEGAWATT_HOURS"] = 146] = "MEGAWATT_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["WATT_HOURS_REACTIVE"] = 203] = "WATT_HOURS_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["KILOWATT_HOURS_REACTIVE"] = 204] = "KILOWATT_HOURS_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["MEGAWATT_HOURS_REACTIVE"] = 205] = "MEGAWATT_HOURS_REACTIVE";
              EngineeringUnits2222[EngineeringUnits2222["BTUS"] = 20] = "BTUS";
              EngineeringUnits2222[EngineeringUnits2222["KILO_BTUS"] = 147] = "KILO_BTUS";
              EngineeringUnits2222[EngineeringUnits2222["MEGA_BTUS"] = 148] = "MEGA_BTUS";
              EngineeringUnits2222[EngineeringUnits2222["THERMS"] = 21] = "THERMS";
              EngineeringUnits2222[EngineeringUnits2222["TON_HOURS"] = 22] = "TON_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["JOULES_PER_KILOGRAM_DRY_AIR"] = 23] = "JOULES_PER_KILOGRAM_DRY_AIR";
              EngineeringUnits2222[EngineeringUnits2222["KILOJOULES_PER_KILOGRAM_DRY_AIR"] = 149] = "KILOJOULES_PER_KILOGRAM_DRY_AIR";
              EngineeringUnits2222[EngineeringUnits2222["MEGAJOULES_PER_KILOGRAM_DRY_AIR"] = 150] = "MEGAJOULES_PER_KILOGRAM_DRY_AIR";
              EngineeringUnits2222[EngineeringUnits2222["BTUS_PER_POUND_DRY_AIR"] = 24] = "BTUS_PER_POUND_DRY_AIR";
              EngineeringUnits2222[EngineeringUnits2222["BTUS_PER_POUND"] = 117] = "BTUS_PER_POUND";
              EngineeringUnits2222[EngineeringUnits2222["JOULES_PER_DEGREE_KELVIN"] = 127] = "JOULES_PER_DEGREE_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["KILOJOULES_PER_DEGREE_KELVIN"] = 151] = "KILOJOULES_PER_DEGREE_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["MEGAJOULES_PER_DEGREE_KELVIN"] = 152] = "MEGAJOULES_PER_DEGREE_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["JOULES_PER_KILOGRAM_DEGREE_KELVIN"] = 128] = "JOULES_PER_KILOGRAM_DEGREE_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["NEWTON"] = 153] = "NEWTON";
              EngineeringUnits2222[EngineeringUnits2222["CYCLES_PER_HOUR"] = 25] = "CYCLES_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["CYCLES_PER_MINUTE"] = 26] = "CYCLES_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["HERTZ"] = 27] = "HERTZ";
              EngineeringUnits2222[EngineeringUnits2222["KILOHERTZ"] = 129] = "KILOHERTZ";
              EngineeringUnits2222[EngineeringUnits2222["MEGAHERTZ"] = 130] = "MEGAHERTZ";
              EngineeringUnits2222[EngineeringUnits2222["PER_HOUR"] = 131] = "PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR"] = 28] = "GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR";
              EngineeringUnits2222[EngineeringUnits2222["PERCENT_RELATIVE_HUMIDITY"] = 29] = "PERCENT_RELATIVE_HUMIDITY";
              EngineeringUnits2222[EngineeringUnits2222["MICROMETERS"] = 194] = "MICROMETERS";
              EngineeringUnits2222[EngineeringUnits2222["MILLIMETERS"] = 30] = "MILLIMETERS";
              EngineeringUnits2222[EngineeringUnits2222["CENTIMETERS"] = 118] = "CENTIMETERS";
              EngineeringUnits2222[EngineeringUnits2222["KILOMETERS"] = 193] = "KILOMETERS";
              EngineeringUnits2222[EngineeringUnits2222["METERS"] = 31] = "METERS";
              EngineeringUnits2222[EngineeringUnits2222["INCHES"] = 32] = "INCHES";
              EngineeringUnits2222[EngineeringUnits2222["FEET"] = 33] = "FEET";
              EngineeringUnits2222[EngineeringUnits2222["CANDELAS"] = 179] = "CANDELAS";
              EngineeringUnits2222[EngineeringUnits2222["CANDELAS_PER_SQUARE_METER"] = 180] = "CANDELAS_PER_SQUARE_METER";
              EngineeringUnits2222[EngineeringUnits2222["WATTS_PER_SQUARE_FOOT"] = 34] = "WATTS_PER_SQUARE_FOOT";
              EngineeringUnits2222[EngineeringUnits2222["WATTS_PER_SQUARE_METER"] = 35] = "WATTS_PER_SQUARE_METER";
              EngineeringUnits2222[EngineeringUnits2222["LUMENS"] = 36] = "LUMENS";
              EngineeringUnits2222[EngineeringUnits2222["LUXES"] = 37] = "LUXES";
              EngineeringUnits2222[EngineeringUnits2222["FOOT_CANDLES"] = 38] = "FOOT_CANDLES";
              EngineeringUnits2222[EngineeringUnits2222["MILLIGRAMS"] = 196] = "MILLIGRAMS";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS"] = 195] = "GRAMS";
              EngineeringUnits2222[EngineeringUnits2222["KILOGRAMS"] = 39] = "KILOGRAMS";
              EngineeringUnits2222[EngineeringUnits2222["POUNDS_MASS"] = 40] = "POUNDS_MASS";
              EngineeringUnits2222[EngineeringUnits2222["TONS"] = 41] = "TONS";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_SECOND"] = 154] = "GRAMS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_MINUTE"] = 155] = "GRAMS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["KILOGRAMS_PER_SECOND"] = 42] = "KILOGRAMS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["KILOGRAMS_PER_MINUTE"] = 43] = "KILOGRAMS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["KILOGRAMS_PER_HOUR"] = 44] = "KILOGRAMS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["POUNDS_MASS_PER_SECOND"] = 119] = "POUNDS_MASS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["POUNDS_MASS_PER_MINUTE"] = 45] = "POUNDS_MASS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["POUNDS_MASS_PER_HOUR"] = 46] = "POUNDS_MASS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["TONS_PER_HOUR"] = 156] = "TONS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["MILLIWATTS"] = 132] = "MILLIWATTS";
              EngineeringUnits2222[EngineeringUnits2222["WATTS"] = 47] = "WATTS";
              EngineeringUnits2222[EngineeringUnits2222["KILOWATTS"] = 48] = "KILOWATTS";
              EngineeringUnits2222[EngineeringUnits2222["MEGAWATTS"] = 49] = "MEGAWATTS";
              EngineeringUnits2222[EngineeringUnits2222["BTUS_PER_HOUR"] = 50] = "BTUS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["KILO_BTUS_PER_HOUR"] = 157] = "KILO_BTUS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["JOULE_PER_HOURS"] = 247] = "JOULE_PER_HOURS";
              EngineeringUnits2222[EngineeringUnits2222["HORSEPOWER"] = 51] = "HORSEPOWER";
              EngineeringUnits2222[EngineeringUnits2222["TONS_REFRIGERATION"] = 52] = "TONS_REFRIGERATION";
              EngineeringUnits2222[EngineeringUnits2222["PASCALS"] = 53] = "PASCALS";
              EngineeringUnits2222[EngineeringUnits2222["HECTOPASCALS"] = 133] = "HECTOPASCALS";
              EngineeringUnits2222[EngineeringUnits2222["KILOPASCALS"] = 54] = "KILOPASCALS";
              EngineeringUnits2222[EngineeringUnits2222["MILLIBARS"] = 134] = "MILLIBARS";
              EngineeringUnits2222[EngineeringUnits2222["BARS"] = 55] = "BARS";
              EngineeringUnits2222[EngineeringUnits2222["POUNDS_FORCE_PER_SQUARE_INCH"] = 56] = "POUNDS_FORCE_PER_SQUARE_INCH";
              EngineeringUnits2222[EngineeringUnits2222["MILLIMETERS_OF_WATER"] = 206] = "MILLIMETERS_OF_WATER";
              EngineeringUnits2222[EngineeringUnits2222["CENTIMETERS_OF_WATER"] = 57] = "CENTIMETERS_OF_WATER";
              EngineeringUnits2222[EngineeringUnits2222["INCHES_OF_WATER"] = 58] = "INCHES_OF_WATER";
              EngineeringUnits2222[EngineeringUnits2222["MILLIMETERS_OF_MERCURY"] = 59] = "MILLIMETERS_OF_MERCURY";
              EngineeringUnits2222[EngineeringUnits2222["CENTIMETERS_OF_MERCURY"] = 60] = "CENTIMETERS_OF_MERCURY";
              EngineeringUnits2222[EngineeringUnits2222["INCHES_OF_MERCURY"] = 61] = "INCHES_OF_MERCURY";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_CELSIUS"] = 62] = "DEGREES_CELSIUS";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_KELVIN"] = 63] = "DEGREES_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_KELVIN_PER_HOUR"] = 181] = "DEGREES_KELVIN_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_KELVIN_PER_MINUTE"] = 182] = "DEGREES_KELVIN_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_FAHRENHEIT"] = 64] = "DEGREES_FAHRENHEIT";
              EngineeringUnits2222[EngineeringUnits2222["DEGREE_DAYS_CELSIUS"] = 65] = "DEGREE_DAYS_CELSIUS";
              EngineeringUnits2222[EngineeringUnits2222["DEGREE_DAYS_FAHRENHEIT"] = 66] = "DEGREE_DAYS_FAHRENHEIT";
              EngineeringUnits2222[EngineeringUnits2222["DELTA_DEGREES_FAHRENHEIT"] = 120] = "DELTA_DEGREES_FAHRENHEIT";
              EngineeringUnits2222[EngineeringUnits2222["DELTA_DEGREES_KELVIN"] = 121] = "DELTA_DEGREES_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["YEARS"] = 67] = "YEARS";
              EngineeringUnits2222[EngineeringUnits2222["MONTHS"] = 68] = "MONTHS";
              EngineeringUnits2222[EngineeringUnits2222["WEEKS"] = 69] = "WEEKS";
              EngineeringUnits2222[EngineeringUnits2222["DAYS"] = 70] = "DAYS";
              EngineeringUnits2222[EngineeringUnits2222["HOURS"] = 71] = "HOURS";
              EngineeringUnits2222[EngineeringUnits2222["MINUTES"] = 72] = "MINUTES";
              EngineeringUnits2222[EngineeringUnits2222["SECONDS"] = 73] = "SECONDS";
              EngineeringUnits2222[EngineeringUnits2222["HUNDREDTHS_SECONDS"] = 158] = "HUNDREDTHS_SECONDS";
              EngineeringUnits2222[EngineeringUnits2222["MILLISECONDS"] = 159] = "MILLISECONDS";
              EngineeringUnits2222[EngineeringUnits2222["NEWTON_METERS"] = 160] = "NEWTON_METERS";
              EngineeringUnits2222[EngineeringUnits2222["MILLIMETERS_PER_SECOND"] = 161] = "MILLIMETERS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["MILLIMETERS_PER_MINUTE"] = 162] = "MILLIMETERS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["METERS_PER_SECOND"] = 74] = "METERS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["METERS_PER_MINUTE"] = 163] = "METERS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["METERS_PER_HOUR"] = 164] = "METERS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["KILOMETERS_PER_HOUR"] = 75] = "KILOMETERS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["FEET_PER_SECOND"] = 76] = "FEET_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["FEET_PER_MINUTE"] = 77] = "FEET_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["MILES_PER_HOUR"] = 78] = "MILES_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_FEET"] = 79] = "CUBIC_FEET";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_METERS"] = 80] = "CUBIC_METERS";
              EngineeringUnits2222[EngineeringUnits2222["IMPERIAL_GALLONS"] = 81] = "IMPERIAL_GALLONS";
              EngineeringUnits2222[EngineeringUnits2222["MILLILITERS"] = 197] = "MILLILITERS";
              EngineeringUnits2222[EngineeringUnits2222["LITERS"] = 82] = "LITERS";
              EngineeringUnits2222[EngineeringUnits2222["US_GALLONS"] = 83] = "US_GALLONS";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_FEET_PER_SECOND"] = 142] = "CUBIC_FEET_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_FEET_PER_MINUTE"] = 84] = "CUBIC_FEET_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["MILLION_STANDARD_CUBIC_FEET_PER_MINUTE"] = 254] = "MILLION_STANDARD_CUBIC_FEET_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_FEET_PER_HOUR"] = 191] = "CUBIC_FEET_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_FEET_PER_DAY"] = 248] = "CUBIC_FEET_PER_DAY";
              EngineeringUnits2222[EngineeringUnits2222["STANDARD_CUBIC_FEET_PER_DAY"] = 47808] = "STANDARD_CUBIC_FEET_PER_DAY";
              EngineeringUnits2222[EngineeringUnits2222["MILLION_STANDARD_CUBIC_FEET_PER_DAY"] = 47809] = "MILLION_STANDARD_CUBIC_FEET_PER_DAY";
              EngineeringUnits2222[EngineeringUnits2222["THOUSAND_CUBIC_FEET_PER_DAY"] = 47810] = "THOUSAND_CUBIC_FEET_PER_DAY";
              EngineeringUnits2222[EngineeringUnits2222["THOUSAND_STANDARD_CUBIC_FEET_PER_DAY"] = 47811] = "THOUSAND_STANDARD_CUBIC_FEET_PER_DAY";
              EngineeringUnits2222[EngineeringUnits2222["POUNDS_MASS_PER_DAY"] = 47812] = "POUNDS_MASS_PER_DAY";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_METERS_PER_SECOND"] = 85] = "CUBIC_METERS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_METERS_PER_MINUTE"] = 165] = "CUBIC_METERS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_METERS_PER_HOUR"] = 135] = "CUBIC_METERS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["CUBIC_METERS_PER_DAY"] = 249] = "CUBIC_METERS_PER_DAY";
              EngineeringUnits2222[EngineeringUnits2222["IMPERIAL_GALLONS_PER_MINUTE"] = 86] = "IMPERIAL_GALLONS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["MILLILITERS_PER_SECOND"] = 198] = "MILLILITERS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["LITERS_PER_SECOND"] = 87] = "LITERS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["LITERS_PER_MINUTE"] = 88] = "LITERS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["LITERS_PER_HOUR"] = 136] = "LITERS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["US_GALLONS_PER_MINUTE"] = 89] = "US_GALLONS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["US_GALLONS_PER_HOUR"] = 192] = "US_GALLONS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_ANGULAR"] = 90] = "DEGREES_ANGULAR";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_CELSIUS_PER_HOUR"] = 91] = "DEGREES_CELSIUS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_CELSIUS_PER_MINUTE"] = 92] = "DEGREES_CELSIUS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_FAHRENHEIT_PER_HOUR"] = 93] = "DEGREES_FAHRENHEIT_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["DEGREES_FAHRENHEIT_PER_MINUTE"] = 94] = "DEGREES_FAHRENHEIT_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["JOULE_SECONDS"] = 183] = "JOULE_SECONDS";
              EngineeringUnits2222[EngineeringUnits2222["KILOGRAMS_PER_CUBIC_METER"] = 186] = "KILOGRAMS_PER_CUBIC_METER";
              EngineeringUnits2222[EngineeringUnits2222["KILOWATT_HOURS_PER_SQUARE_METER"] = 137] = "KILOWATT_HOURS_PER_SQUARE_METER";
              EngineeringUnits2222[EngineeringUnits2222["KILOWATT_HOURS_PER_SQUARE_FOOT"] = 138] = "KILOWATT_HOURS_PER_SQUARE_FOOT";
              EngineeringUnits2222[EngineeringUnits2222["WATT_HOURS_PER_CUBIC_METER"] = 250] = "WATT_HOURS_PER_CUBIC_METER";
              EngineeringUnits2222[EngineeringUnits2222["JOULES_PER_CUBIC_METER"] = 251] = "JOULES_PER_CUBIC_METER";
              EngineeringUnits2222[EngineeringUnits2222["MEGAJOULES_PER_SQUARE_METER"] = 139] = "MEGAJOULES_PER_SQUARE_METER";
              EngineeringUnits2222[EngineeringUnits2222["MEGAJOULES_PER_SQUARE_FOOT"] = 140] = "MEGAJOULES_PER_SQUARE_FOOT";
              EngineeringUnits2222[EngineeringUnits2222["MOLE_PERCENT"] = 252] = "MOLE_PERCENT";
              EngineeringUnits2222[EngineeringUnits2222["NO_UNITS"] = 95] = "NO_UNITS";
              EngineeringUnits2222[EngineeringUnits2222["NEWTON_SECONDS"] = 187] = "NEWTON_SECONDS";
              EngineeringUnits2222[EngineeringUnits2222["NEWTONS_PER_METER"] = 188] = "NEWTONS_PER_METER";
              EngineeringUnits2222[EngineeringUnits2222["PARTS_PER_MILLION"] = 96] = "PARTS_PER_MILLION";
              EngineeringUnits2222[EngineeringUnits2222["PARTS_PER_BILLION"] = 97] = "PARTS_PER_BILLION";
              EngineeringUnits2222[EngineeringUnits2222["PASCAL_SECONDS"] = 253] = "PASCAL_SECONDS";
              EngineeringUnits2222[EngineeringUnits2222["PERCENT"] = 98] = "PERCENT";
              EngineeringUnits2222[EngineeringUnits2222["PERCENT_OBSCURATION_PER_FOOT"] = 143] = "PERCENT_OBSCURATION_PER_FOOT";
              EngineeringUnits2222[EngineeringUnits2222["PERCENT_OBSCURATION_PER_METER"] = 144] = "PERCENT_OBSCURATION_PER_METER";
              EngineeringUnits2222[EngineeringUnits2222["PERCENT_PER_SECOND"] = 99] = "PERCENT_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["PER_MINUTE"] = 100] = "PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["PER_SECOND"] = 101] = "PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["PSI_PER_DEGREE_FAHRENHEIT"] = 102] = "PSI_PER_DEGREE_FAHRENHEIT";
              EngineeringUnits2222[EngineeringUnits2222["RADIANS"] = 103] = "RADIANS";
              EngineeringUnits2222[EngineeringUnits2222["RADIANS_PER_SECOND"] = 184] = "RADIANS_PER_SECOND";
              EngineeringUnits2222[EngineeringUnits2222["REVOLUTIONS_PER_MINUTE"] = 104] = "REVOLUTIONS_PER_MINUTE";
              EngineeringUnits2222[EngineeringUnits2222["SQUARE_METERS_PER_NEWTON"] = 185] = "SQUARE_METERS_PER_NEWTON";
              EngineeringUnits2222[EngineeringUnits2222["WATTS_PER_METER_PER_DEGREE_KELVIN"] = 189] = "WATTS_PER_METER_PER_DEGREE_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["WATTS_PER_SQUARE_METER_DEGREE_KELVIN"] = 141] = "WATTS_PER_SQUARE_METER_DEGREE_KELVIN";
              EngineeringUnits2222[EngineeringUnits2222["PER_MILLE"] = 207] = "PER_MILLE";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_GRAM"] = 208] = "GRAMS_PER_GRAM";
              EngineeringUnits2222[EngineeringUnits2222["KILOGRAMS_PER_KILOGRAM"] = 209] = "KILOGRAMS_PER_KILOGRAM";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_KILOGRAM"] = 210] = "GRAMS_PER_KILOGRAM";
              EngineeringUnits2222[EngineeringUnits2222["MILLIGRAMS_PER_GRAM"] = 211] = "MILLIGRAMS_PER_GRAM";
              EngineeringUnits2222[EngineeringUnits2222["MILLIGRAMS_PER_KILOGRAM"] = 212] = "MILLIGRAMS_PER_KILOGRAM";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_MILLILITER"] = 213] = "GRAMS_PER_MILLILITER";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_LITER"] = 214] = "GRAMS_PER_LITER";
              EngineeringUnits2222[EngineeringUnits2222["MILLIGRAMS_PER_LITER"] = 215] = "MILLIGRAMS_PER_LITER";
              EngineeringUnits2222[EngineeringUnits2222["MICROGRAMS_PER_LITER"] = 216] = "MICROGRAMS_PER_LITER";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_CUBIC_METER"] = 217] = "GRAMS_PER_CUBIC_METER";
              EngineeringUnits2222[EngineeringUnits2222["MILLIGRAMS_PER_CUBIC_METER"] = 218] = "MILLIGRAMS_PER_CUBIC_METER";
              EngineeringUnits2222[EngineeringUnits2222["MICROGRAMS_PER_CUBIC_METER"] = 219] = "MICROGRAMS_PER_CUBIC_METER";
              EngineeringUnits2222[EngineeringUnits2222["NANOGRAMS_PER_CUBIC_METER"] = 220] = "NANOGRAMS_PER_CUBIC_METER";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_CUBIC_CENTIMETER"] = 221] = "GRAMS_PER_CUBIC_CENTIMETER";
              EngineeringUnits2222[EngineeringUnits2222["BECQUERELS"] = 222] = "BECQUERELS";
              EngineeringUnits2222[EngineeringUnits2222["KILOBECQUERELS"] = 223] = "KILOBECQUERELS";
              EngineeringUnits2222[EngineeringUnits2222["MEGABECQUERELS"] = 224] = "MEGABECQUERELS";
              EngineeringUnits2222[EngineeringUnits2222["GRAY"] = 225] = "GRAY";
              EngineeringUnits2222[EngineeringUnits2222["MILLIGRAY"] = 226] = "MILLIGRAY";
              EngineeringUnits2222[EngineeringUnits2222["MICROGRAY"] = 227] = "MICROGRAY";
              EngineeringUnits2222[EngineeringUnits2222["SIEVERTS"] = 228] = "SIEVERTS";
              EngineeringUnits2222[EngineeringUnits2222["MILLISIEVERTS"] = 229] = "MILLISIEVERTS";
              EngineeringUnits2222[EngineeringUnits2222["MICROSIEVERTS"] = 230] = "MICROSIEVERTS";
              EngineeringUnits2222[EngineeringUnits2222["MICROSIEVERTS_PER_HOUR"] = 231] = "MICROSIEVERTS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["MILLIREMS"] = 47814] = "MILLIREMS";
              EngineeringUnits2222[EngineeringUnits2222["MILLIREMS_PER_HOUR"] = 47815] = "MILLIREMS_PER_HOUR";
              EngineeringUnits2222[EngineeringUnits2222["DECIBELS_A"] = 232] = "DECIBELS_A";
              EngineeringUnits2222[EngineeringUnits2222["NEPHELOMETRIC_TURBIDITY_UNIT"] = 233] = "NEPHELOMETRIC_TURBIDITY_UNIT";
              EngineeringUnits2222[EngineeringUnits2222["PH"] = 234] = "PH";
              EngineeringUnits2222[EngineeringUnits2222["GRAMS_PER_SQUARE_METER"] = 235] = "GRAMS_PER_SQUARE_METER";
              EngineeringUnits2222[EngineeringUnits2222["MINUTES_PER_DEGREE_KELVIN"] = 236] = "MINUTES_PER_DEGREE_KELVIN";
              return EngineeringUnits2222;
            })(EngineeringUnits222 || {});
            var EscalatorFault222 = /* @__PURE__ */ ((EscalatorFault2222) => {
              EscalatorFault2222[EscalatorFault2222["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
              EscalatorFault2222[EscalatorFault2222["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
              EscalatorFault2222[EscalatorFault2222["MECHANICAL_COMPONENT_FAULT"] = 2] = "MECHANICAL_COMPONENT_FAULT";
              EscalatorFault2222[EscalatorFault2222["OVERSPEED_FAULT"] = 3] = "OVERSPEED_FAULT";
              EscalatorFault2222[EscalatorFault2222["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
              EscalatorFault2222[EscalatorFault2222["SAFETY_DEVICE_FAULT"] = 5] = "SAFETY_DEVICE_FAULT";
              EscalatorFault2222[EscalatorFault2222["CONTROLLER_SUPPLY_FAULT"] = 6] = "CONTROLLER_SUPPLY_FAULT";
              EscalatorFault2222[EscalatorFault2222["DRIVE_TEMPERATURE_EXCEEDED"] = 7] = "DRIVE_TEMPERATURE_EXCEEDED";
              EscalatorFault2222[EscalatorFault2222["COMB_PLATE_FAULT"] = 8] = "COMB_PLATE_FAULT";
              return EscalatorFault2222;
            })(EscalatorFault222 || {});
            var EscalatorMode222 = /* @__PURE__ */ ((EscalatorMode2222) => {
              EscalatorMode2222[EscalatorMode2222["UNKNOWN"] = 0] = "UNKNOWN";
              EscalatorMode2222[EscalatorMode2222["STOP"] = 1] = "STOP";
              EscalatorMode2222[EscalatorMode2222["UP"] = 2] = "UP";
              EscalatorMode2222[EscalatorMode2222["DOWN"] = 3] = "DOWN";
              EscalatorMode2222[EscalatorMode2222["INSPECTION"] = 4] = "INSPECTION";
              EscalatorMode2222[EscalatorMode2222["OUT_OF_SERVICE"] = 5] = "OUT_OF_SERVICE";
              return EscalatorMode2222;
            })(EscalatorMode222 || {});
            var EscalatorOperationDirection222 = /* @__PURE__ */ ((EscalatorOperationDirection2222) => {
              EscalatorOperationDirection2222[EscalatorOperationDirection2222["UNKNOWN"] = 0] = "UNKNOWN";
              EscalatorOperationDirection2222[EscalatorOperationDirection2222["STOPPED"] = 1] = "STOPPED";
              EscalatorOperationDirection2222[EscalatorOperationDirection2222["UP_RATED_SPEED"] = 2] = "UP_RATED_SPEED";
              EscalatorOperationDirection2222[EscalatorOperationDirection2222["UP_REDUCED_SPEED"] = 3] = "UP_REDUCED_SPEED";
              EscalatorOperationDirection2222[EscalatorOperationDirection2222["DOWN_RATED_SPEED"] = 4] = "DOWN_RATED_SPEED";
              EscalatorOperationDirection2222[EscalatorOperationDirection2222["DOWN_REDUCED_SPEED"] = 5] = "DOWN_REDUCED_SPEED";
              return EscalatorOperationDirection2222;
            })(EscalatorOperationDirection222 || {});
            var EventState222 = /* @__PURE__ */ ((EventState2222) => {
              EventState2222[EventState2222["NORMAL"] = 0] = "NORMAL";
              EventState2222[EventState2222["FAULT"] = 1] = "FAULT";
              EventState2222[EventState2222["OFFNORMAL"] = 2] = "OFFNORMAL";
              EventState2222[EventState2222["HIGH_LIMIT"] = 3] = "HIGH_LIMIT";
              EventState2222[EventState2222["LOW_LIMIT"] = 4] = "LOW_LIMIT";
              EventState2222[EventState2222["LIFE_SAFETY_ALARM"] = 5] = "LIFE_SAFETY_ALARM";
              return EventState2222;
            })(EventState222 || {});
            var EventType222 = /* @__PURE__ */ ((EventType2222) => {
              EventType2222[EventType2222["CHANGE_OF_BITSTRING"] = 0] = "CHANGE_OF_BITSTRING";
              EventType2222[EventType2222["CHANGE_OF_STATE"] = 1] = "CHANGE_OF_STATE";
              EventType2222[EventType2222["CHANGE_OF_VALUE"] = 2] = "CHANGE_OF_VALUE";
              EventType2222[EventType2222["COMMAND_FAILURE"] = 3] = "COMMAND_FAILURE";
              EventType2222[EventType2222["FLOATING_LIMIT"] = 4] = "FLOATING_LIMIT";
              EventType2222[EventType2222["OUT_OF_RANGE"] = 5] = "OUT_OF_RANGE";
              EventType2222[EventType2222["COMPLEX_EVENT_TYPE"] = 6] = "COMPLEX_EVENT_TYPE";
              EventType2222[EventType2222["CHANGE_OF_LIFE_SAFETY"] = 8] = "CHANGE_OF_LIFE_SAFETY";
              EventType2222[EventType2222["EXTENDED"] = 9] = "EXTENDED";
              EventType2222[EventType2222["BUFFER_READY"] = 10] = "BUFFER_READY";
              EventType2222[EventType2222["UNSIGNED_RANGE"] = 11] = "UNSIGNED_RANGE";
              EventType2222[EventType2222["ACCESS_EVENT"] = 13] = "ACCESS_EVENT";
              EventType2222[EventType2222["DOUBLE_OUT_OF_RANGE"] = 14] = "DOUBLE_OUT_OF_RANGE";
              EventType2222[EventType2222["SIGNED_OUT_OF_RANGE"] = 15] = "SIGNED_OUT_OF_RANGE";
              EventType2222[EventType2222["UNSIGNED_OUT_OF_RANGE"] = 16] = "UNSIGNED_OUT_OF_RANGE";
              EventType2222[EventType2222["CHANGE_OF_CHARACTERSTRING"] = 17] = "CHANGE_OF_CHARACTERSTRING";
              EventType2222[EventType2222["CHANGE_OF_STATUS_FLAGS"] = 18] = "CHANGE_OF_STATUS_FLAGS";
              EventType2222[EventType2222["CHANGE_OF_RELIABILITY"] = 19] = "CHANGE_OF_RELIABILITY";
              EventType2222[EventType2222["NONE"] = 20] = "NONE";
              EventType2222[EventType2222["CHANGE_OF_DISCRETE_VALUE"] = 21] = "CHANGE_OF_DISCRETE_VALUE";
              EventType2222[EventType2222["CHANGE_OF_TIMER"] = 22] = "CHANGE_OF_TIMER";
              return EventType2222;
            })(EventType222 || {});
            var FaultType222 = /* @__PURE__ */ ((FaultType2222) => {
              FaultType2222[FaultType2222["NONE"] = 0] = "NONE";
              FaultType2222[FaultType2222["FAULT_CHARACTERSTRING"] = 1] = "FAULT_CHARACTERSTRING";
              FaultType2222[FaultType2222["FAULT_EXTENDED"] = 2] = "FAULT_EXTENDED";
              FaultType2222[FaultType2222["FAULT_LIFE_SAFETY"] = 3] = "FAULT_LIFE_SAFETY";
              FaultType2222[FaultType2222["FAULT_STATE"] = 4] = "FAULT_STATE";
              FaultType2222[FaultType2222["FAULT_STATUS_FLAGS"] = 5] = "FAULT_STATUS_FLAGS";
              FaultType2222[FaultType2222["FAULT_OUT_OF_RANGE"] = 6] = "FAULT_OUT_OF_RANGE";
              FaultType2222[FaultType2222["FAULT_LISTED"] = 7] = "FAULT_LISTED";
              return FaultType2222;
            })(FaultType222 || {});
            var FileAccessMethod222 = /* @__PURE__ */ ((FileAccessMethod2222) => {
              FileAccessMethod2222[FileAccessMethod2222["RECORD_ACCESS"] = 0] = "RECORD_ACCESS";
              FileAccessMethod2222[FileAccessMethod2222["STREAM_ACCESS"] = 1] = "STREAM_ACCESS";
              return FileAccessMethod2222;
            })(FileAccessMethod222 || {});
            var IPMode222 = /* @__PURE__ */ ((IPMode2222) => {
              IPMode2222[IPMode2222["NORMAL"] = 0] = "NORMAL";
              IPMode2222[IPMode2222["FOREIGN"] = 1] = "FOREIGN";
              IPMode2222[IPMode2222["BBMD"] = 2] = "BBMD";
              return IPMode2222;
            })(IPMode222 || {});
            var LifeSafetyMode222 = /* @__PURE__ */ ((LifeSafetyMode2222) => {
              LifeSafetyMode2222[LifeSafetyMode2222["OFF"] = 0] = "OFF";
              LifeSafetyMode2222[LifeSafetyMode2222["ON"] = 1] = "ON";
              LifeSafetyMode2222[LifeSafetyMode2222["TEST"] = 2] = "TEST";
              LifeSafetyMode2222[LifeSafetyMode2222["MANNED"] = 3] = "MANNED";
              LifeSafetyMode2222[LifeSafetyMode2222["UNMANNED"] = 4] = "UNMANNED";
              LifeSafetyMode2222[LifeSafetyMode2222["ARMED"] = 5] = "ARMED";
              LifeSafetyMode2222[LifeSafetyMode2222["DISARMED"] = 6] = "DISARMED";
              LifeSafetyMode2222[LifeSafetyMode2222["PREARMED"] = 7] = "PREARMED";
              LifeSafetyMode2222[LifeSafetyMode2222["SLOW"] = 8] = "SLOW";
              LifeSafetyMode2222[LifeSafetyMode2222["FAST"] = 9] = "FAST";
              LifeSafetyMode2222[LifeSafetyMode2222["DISCONNECTED"] = 10] = "DISCONNECTED";
              LifeSafetyMode2222[LifeSafetyMode2222["ENABLED"] = 11] = "ENABLED";
              LifeSafetyMode2222[LifeSafetyMode2222["DISABLED"] = 12] = "DISABLED";
              LifeSafetyMode2222[LifeSafetyMode2222["AUTOMATIC_RELEASE_DISABLED"] = 13] = "AUTOMATIC_RELEASE_DISABLED";
              LifeSafetyMode2222[LifeSafetyMode2222["DEFAULT"] = 14] = "DEFAULT";
              return LifeSafetyMode2222;
            })(LifeSafetyMode222 || {});
            var LifeSafetyOperation222 = /* @__PURE__ */ ((LifeSafetyOperation2222) => {
              LifeSafetyOperation2222[LifeSafetyOperation2222["NONE"] = 0] = "NONE";
              LifeSafetyOperation2222[LifeSafetyOperation2222["SILENCE"] = 1] = "SILENCE";
              LifeSafetyOperation2222[LifeSafetyOperation2222["SILENCE_AUDIBLE"] = 2] = "SILENCE_AUDIBLE";
              LifeSafetyOperation2222[LifeSafetyOperation2222["SILENCE_VISUAL"] = 3] = "SILENCE_VISUAL";
              LifeSafetyOperation2222[LifeSafetyOperation2222["RESET"] = 4] = "RESET";
              LifeSafetyOperation2222[LifeSafetyOperation2222["RESET_ALARM"] = 5] = "RESET_ALARM";
              LifeSafetyOperation2222[LifeSafetyOperation2222["RESET_FAULT"] = 6] = "RESET_FAULT";
              LifeSafetyOperation2222[LifeSafetyOperation2222["UNSILENCE"] = 7] = "UNSILENCE";
              LifeSafetyOperation2222[LifeSafetyOperation2222["UNSILENCE_AUDIBLE"] = 8] = "UNSILENCE_AUDIBLE";
              LifeSafetyOperation2222[LifeSafetyOperation2222["UNSILENCE_VISUAL"] = 9] = "UNSILENCE_VISUAL";
              return LifeSafetyOperation2222;
            })(LifeSafetyOperation222 || {});
            var LifeSafetyState222 = /* @__PURE__ */ ((LifeSafetyState2222) => {
              LifeSafetyState2222[LifeSafetyState2222["QUIET"] = 0] = "QUIET";
              LifeSafetyState2222[LifeSafetyState2222["PRE_ALARM"] = 1] = "PRE_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["ALARM"] = 2] = "ALARM";
              LifeSafetyState2222[LifeSafetyState2222["FAULT"] = 3] = "FAULT";
              LifeSafetyState2222[LifeSafetyState2222["FAULT_PRE_ALARM"] = 4] = "FAULT_PRE_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["FAULT_ALARM"] = 5] = "FAULT_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["NOT_READY"] = 6] = "NOT_READY";
              LifeSafetyState2222[LifeSafetyState2222["ACTIVE"] = 7] = "ACTIVE";
              LifeSafetyState2222[LifeSafetyState2222["TAMPER"] = 8] = "TAMPER";
              LifeSafetyState2222[LifeSafetyState2222["TEST_ALARM"] = 9] = "TEST_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["TEST_ACTIVE"] = 10] = "TEST_ACTIVE";
              LifeSafetyState2222[LifeSafetyState2222["TEST_FAULT"] = 11] = "TEST_FAULT";
              LifeSafetyState2222[LifeSafetyState2222["TEST_FAULT_ALARM"] = 12] = "TEST_FAULT_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["HOLDUP"] = 13] = "HOLDUP";
              LifeSafetyState2222[LifeSafetyState2222["DURESS"] = 14] = "DURESS";
              LifeSafetyState2222[LifeSafetyState2222["TAMPER_ALARM"] = 15] = "TAMPER_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["ABNORMAL"] = 16] = "ABNORMAL";
              LifeSafetyState2222[LifeSafetyState2222["EMERGENCY_POWER"] = 17] = "EMERGENCY_POWER";
              LifeSafetyState2222[LifeSafetyState2222["DELAYED"] = 18] = "DELAYED";
              LifeSafetyState2222[LifeSafetyState2222["BLOCKED"] = 19] = "BLOCKED";
              LifeSafetyState2222[LifeSafetyState2222["LOCAL_ALARM"] = 20] = "LOCAL_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["GENERAL_ALARM"] = 21] = "GENERAL_ALARM";
              LifeSafetyState2222[LifeSafetyState2222["SUPERVISORY"] = 22] = "SUPERVISORY";
              LifeSafetyState2222[LifeSafetyState2222["TEST_SUPERVISORY"] = 23] = "TEST_SUPERVISORY";
              return LifeSafetyState2222;
            })(LifeSafetyState222 || {});
            var LiftCarDirection222 = /* @__PURE__ */ ((LiftCarDirection2222) => {
              LiftCarDirection2222[LiftCarDirection2222["UNKNOWN"] = 0] = "UNKNOWN";
              LiftCarDirection2222[LiftCarDirection2222["NONE"] = 1] = "NONE";
              LiftCarDirection2222[LiftCarDirection2222["STOPPED"] = 2] = "STOPPED";
              LiftCarDirection2222[LiftCarDirection2222["UP"] = 3] = "UP";
              LiftCarDirection2222[LiftCarDirection2222["DOWN"] = 4] = "DOWN";
              LiftCarDirection2222[LiftCarDirection2222["UP_AND_DOWN"] = 5] = "UP_AND_DOWN";
              return LiftCarDirection2222;
            })(LiftCarDirection222 || {});
            var LiftCarDoorCommand222 = /* @__PURE__ */ ((LiftCarDoorCommand2222) => {
              LiftCarDoorCommand2222[LiftCarDoorCommand2222["NONE"] = 0] = "NONE";
              LiftCarDoorCommand2222[LiftCarDoorCommand2222["OPEN"] = 1] = "OPEN";
              LiftCarDoorCommand2222[LiftCarDoorCommand2222["CLOSE"] = 2] = "CLOSE";
              return LiftCarDoorCommand2222;
            })(LiftCarDoorCommand222 || {});
            var LiftCarDriveStatus222 = /* @__PURE__ */ ((LiftCarDriveStatus2222) => {
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["UNKNOWN"] = 0] = "UNKNOWN";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["STATIONARY"] = 1] = "STATIONARY";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["BRAKING"] = 2] = "BRAKING";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["ACCELERATE"] = 3] = "ACCELERATE";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["DECELERATE"] = 4] = "DECELERATE";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["RATED_SPEED"] = 5] = "RATED_SPEED";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["SINGLE_FLOOR_JUMP"] = 6] = "SINGLE_FLOOR_JUMP";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["TWO_FLOOR_JUMP"] = 7] = "TWO_FLOOR_JUMP";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["THREE_FLOOR_JUMP"] = 8] = "THREE_FLOOR_JUMP";
              LiftCarDriveStatus2222[LiftCarDriveStatus2222["MULTI_FLOOR_JUMP"] = 9] = "MULTI_FLOOR_JUMP";
              return LiftCarDriveStatus2222;
            })(LiftCarDriveStatus222 || {});
            var LiftCarMode222 = /* @__PURE__ */ ((LiftCarMode2222) => {
              LiftCarMode2222[LiftCarMode2222["UNKNOWN"] = 0] = "UNKNOWN";
              LiftCarMode2222[LiftCarMode2222["NORMAL"] = 1] = "NORMAL";
              LiftCarMode2222[LiftCarMode2222["VIP"] = 2] = "VIP";
              LiftCarMode2222[LiftCarMode2222["HOMING"] = 3] = "HOMING";
              LiftCarMode2222[LiftCarMode2222["PARKING"] = 4] = "PARKING";
              LiftCarMode2222[LiftCarMode2222["ATTENDANT_CONTROL"] = 5] = "ATTENDANT_CONTROL";
              LiftCarMode2222[LiftCarMode2222["FIREFIGHTER_CONTROL"] = 6] = "FIREFIGHTER_CONTROL";
              LiftCarMode2222[LiftCarMode2222["EMERGENCY_POWER"] = 7] = "EMERGENCY_POWER";
              LiftCarMode2222[LiftCarMode2222["INSPECTION"] = 8] = "INSPECTION";
              LiftCarMode2222[LiftCarMode2222["CABINET_RECALL"] = 9] = "CABINET_RECALL";
              LiftCarMode2222[LiftCarMode2222["EARTHQUAKE_OPERATION"] = 10] = "EARTHQUAKE_OPERATION";
              LiftCarMode2222[LiftCarMode2222["FIRE_OPERATION"] = 11] = "FIRE_OPERATION";
              LiftCarMode2222[LiftCarMode2222["OUT_OF_SERVICE"] = 12] = "OUT_OF_SERVICE";
              LiftCarMode2222[LiftCarMode2222["OCCUPANT_EVACUATION"] = 13] = "OCCUPANT_EVACUATION";
              return LiftCarMode2222;
            })(LiftCarMode222 || {});
            var LiftFault222 = /* @__PURE__ */ ((LiftFault2222) => {
              LiftFault2222[LiftFault2222["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
              LiftFault2222[LiftFault2222["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
              LiftFault2222[LiftFault2222["GOVERNOR_AND_SAFETY_GEAR_FAULT"] = 2] = "GOVERNOR_AND_SAFETY_GEAR_FAULT";
              LiftFault2222[LiftFault2222["LIFT_SHAFT_DEVICE_FAULT"] = 3] = "LIFT_SHAFT_DEVICE_FAULT";
              LiftFault2222[LiftFault2222["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
              LiftFault2222[LiftFault2222["SAFETY_INTERLOCK_FAULT"] = 5] = "SAFETY_INTERLOCK_FAULT";
              LiftFault2222[LiftFault2222["DOOR_CLOSING_FAULT"] = 6] = "DOOR_CLOSING_FAULT";
              LiftFault2222[LiftFault2222["DOOR_OPENING_FAULT"] = 7] = "DOOR_OPENING_FAULT";
              LiftFault2222[LiftFault2222["CAR_STOPPED_OUTSIDE_LANDING_ZONE"] = 8] = "CAR_STOPPED_OUTSIDE_LANDING_ZONE";
              LiftFault2222[LiftFault2222["CALL_BUTTON_STUCK"] = 9] = "CALL_BUTTON_STUCK";
              LiftFault2222[LiftFault2222["START_FAILURE"] = 10] = "START_FAILURE";
              LiftFault2222[LiftFault2222["CONTROLLER_SUPPLY_FAULT"] = 11] = "CONTROLLER_SUPPLY_FAULT";
              LiftFault2222[LiftFault2222["SELF_TEST_FAILURE"] = 12] = "SELF_TEST_FAILURE";
              LiftFault2222[LiftFault2222["RUNTIME_LIMIT_EXCEEDED"] = 13] = "RUNTIME_LIMIT_EXCEEDED";
              LiftFault2222[LiftFault2222["POSITION_LOST"] = 14] = "POSITION_LOST";
              LiftFault2222[LiftFault2222["DRIVE_TEMPERATURE_EXCEEDED"] = 15] = "DRIVE_TEMPERATURE_EXCEEDED";
              LiftFault2222[LiftFault2222["LOAD_MEASUREMENT_FAULT"] = 16] = "LOAD_MEASUREMENT_FAULT";
              return LiftFault2222;
            })(LiftFault222 || {});
            var LiftGroupMode222 = /* @__PURE__ */ ((LiftGroupMode2222) => {
              LiftGroupMode2222[LiftGroupMode2222["UNKNOWN"] = 0] = "UNKNOWN";
              LiftGroupMode2222[LiftGroupMode2222["NORMAL"] = 1] = "NORMAL";
              LiftGroupMode2222[LiftGroupMode2222["DOWN_PEAK"] = 2] = "DOWN_PEAK";
              LiftGroupMode2222[LiftGroupMode2222["TWO_WAY"] = 3] = "TWO_WAY";
              LiftGroupMode2222[LiftGroupMode2222["FOUR_WAY"] = 4] = "FOUR_WAY";
              LiftGroupMode2222[LiftGroupMode2222["EMERGENCY_POWER"] = 5] = "EMERGENCY_POWER";
              LiftGroupMode2222[LiftGroupMode2222["UP_PEAK"] = 6] = "UP_PEAK";
              return LiftGroupMode2222;
            })(LiftGroupMode222 || {});
            var LightingInProgress222 = /* @__PURE__ */ ((LightingInProgress2222) => {
              LightingInProgress2222[LightingInProgress2222["IDLE"] = 0] = "IDLE";
              LightingInProgress2222[LightingInProgress2222["FADE_ACTIVE"] = 1] = "FADE_ACTIVE";
              LightingInProgress2222[LightingInProgress2222["RAMP_ACTIVE"] = 2] = "RAMP_ACTIVE";
              LightingInProgress2222[LightingInProgress2222["NOT_CONTROLLED"] = 3] = "NOT_CONTROLLED";
              LightingInProgress2222[LightingInProgress2222["OTHER"] = 4] = "OTHER";
              return LightingInProgress2222;
            })(LightingInProgress222 || {});
            var LightingOperation222 = /* @__PURE__ */ ((LightingOperation2222) => {
              LightingOperation2222[LightingOperation2222["NONE"] = 0] = "NONE";
              LightingOperation2222[LightingOperation2222["FADE_TO"] = 1] = "FADE_TO";
              LightingOperation2222[LightingOperation2222["RAMP_TO"] = 2] = "RAMP_TO";
              LightingOperation2222[LightingOperation2222["STEP_UP"] = 3] = "STEP_UP";
              LightingOperation2222[LightingOperation2222["STEP_DOWN"] = 4] = "STEP_DOWN";
              LightingOperation2222[LightingOperation2222["STEP_ON"] = 5] = "STEP_ON";
              LightingOperation2222[LightingOperation2222["STEP_OFF"] = 6] = "STEP_OFF";
              LightingOperation2222[LightingOperation2222["WARN"] = 7] = "WARN";
              LightingOperation2222[LightingOperation2222["WARN_OFF"] = 8] = "WARN_OFF";
              LightingOperation2222[LightingOperation2222["WARN_RELINQUISH"] = 9] = "WARN_RELINQUISH";
              LightingOperation2222[LightingOperation2222["STOP"] = 10] = "STOP";
              return LightingOperation2222;
            })(LightingOperation222 || {});
            var LightingTransition222 = /* @__PURE__ */ ((LightingTransition2222) => {
              LightingTransition2222[LightingTransition2222["NONE"] = 0] = "NONE";
              LightingTransition2222[LightingTransition2222["FADE"] = 1] = "FADE";
              LightingTransition2222[LightingTransition2222["RAMP"] = 2] = "RAMP";
              return LightingTransition2222;
            })(LightingTransition222 || {});
            var LockStatus222 = /* @__PURE__ */ ((LockStatus2222) => {
              LockStatus2222[LockStatus2222["LOCKED"] = 0] = "LOCKED";
              LockStatus2222[LockStatus2222["UNLOCKED"] = 1] = "UNLOCKED";
              LockStatus2222[LockStatus2222["LOCK_FAULT"] = 2] = "LOCK_FAULT";
              LockStatus2222[LockStatus2222["UNUSED"] = 3] = "UNUSED";
              LockStatus2222[LockStatus2222["UNKNOWN"] = 4] = "UNKNOWN";
              return LockStatus2222;
            })(LockStatus222 || {});
            var LoggingType222 = /* @__PURE__ */ ((LoggingType2222) => {
              LoggingType2222[LoggingType2222["POLLED"] = 0] = "POLLED";
              LoggingType2222[LoggingType2222["COV"] = 1] = "COV";
              LoggingType2222[LoggingType2222["TRIGGERED"] = 2] = "TRIGGERED";
              return LoggingType2222;
            })(LoggingType222 || {});
            var Maintenance222 = /* @__PURE__ */ ((Maintenance2222) => {
              Maintenance2222[Maintenance2222["NONE"] = 0] = "NONE";
              Maintenance2222[Maintenance2222["PERIODIC_TEST"] = 1] = "PERIODIC_TEST";
              Maintenance2222[Maintenance2222["NEED_SERVICE_OPERATIONAL"] = 2] = "NEED_SERVICE_OPERATIONAL";
              Maintenance2222[Maintenance2222["NEED_SERVICE_INOPERATIVE"] = 3] = "NEED_SERVICE_INOPERATIVE";
              return Maintenance2222;
            })(Maintenance222 || {});
            var NetworkNumberQuality222 = /* @__PURE__ */ ((NetworkNumberQuality2222) => {
              NetworkNumberQuality2222[NetworkNumberQuality2222["UNKNOWN"] = 0] = "UNKNOWN";
              NetworkNumberQuality2222[NetworkNumberQuality2222["LEARNED"] = 1] = "LEARNED";
              NetworkNumberQuality2222[NetworkNumberQuality2222["LEARNED_CONFIGURED"] = 2] = "LEARNED_CONFIGURED";
              NetworkNumberQuality2222[NetworkNumberQuality2222["CONFIGURED"] = 3] = "CONFIGURED";
              return NetworkNumberQuality2222;
            })(NetworkNumberQuality222 || {});
            var NetworkPortCommand222 = /* @__PURE__ */ ((NetworkPortCommand2222) => {
              NetworkPortCommand2222[NetworkPortCommand2222["IDLE"] = 0] = "IDLE";
              NetworkPortCommand2222[NetworkPortCommand2222["DISCARD_CHANGES"] = 1] = "DISCARD_CHANGES";
              NetworkPortCommand2222[NetworkPortCommand2222["RENEW_FD_REGISTRATION"] = 2] = "RENEW_FD_REGISTRATION";
              NetworkPortCommand2222[NetworkPortCommand2222["RESTART_SLAVE_DISCOVERY"] = 3] = "RESTART_SLAVE_DISCOVERY";
              NetworkPortCommand2222[NetworkPortCommand2222["RENEW_DHCP"] = 4] = "RENEW_DHCP";
              NetworkPortCommand2222[NetworkPortCommand2222["RESTART_AUTONEGOTIATION"] = 5] = "RESTART_AUTONEGOTIATION";
              NetworkPortCommand2222[NetworkPortCommand2222["DISCONNECT"] = 6] = "DISCONNECT";
              NetworkPortCommand2222[NetworkPortCommand2222["RESTART_PORT"] = 7] = "RESTART_PORT";
              return NetworkPortCommand2222;
            })(NetworkPortCommand222 || {});
            var NetworkType222 = /* @__PURE__ */ ((NetworkType2222) => {
              NetworkType2222[NetworkType2222["ETHERNET"] = 0] = "ETHERNET";
              NetworkType2222[NetworkType2222["ARCNET"] = 1] = "ARCNET";
              NetworkType2222[NetworkType2222["MSTP"] = 2] = "MSTP";
              NetworkType2222[NetworkType2222["PTP"] = 3] = "PTP";
              NetworkType2222[NetworkType2222["LONTALK"] = 4] = "LONTALK";
              NetworkType2222[NetworkType2222["IPV4"] = 5] = "IPV4";
              NetworkType2222[NetworkType2222["ZIGBEE"] = 6] = "ZIGBEE";
              NetworkType2222[NetworkType2222["VIRTUAL"] = 7] = "VIRTUAL";
              NetworkType2222[NetworkType2222["IPV6"] = 9] = "IPV6";
              NetworkType2222[NetworkType2222["SERIAL"] = 10] = "SERIAL";
              return NetworkType2222;
            })(NetworkType222 || {});
            var NodeType222 = /* @__PURE__ */ ((NodeType2222) => {
              NodeType2222[NodeType2222["UNKNOWN"] = 0] = "UNKNOWN";
              NodeType2222[NodeType2222["SYSTEM"] = 1] = "SYSTEM";
              NodeType2222[NodeType2222["NETWORK"] = 2] = "NETWORK";
              NodeType2222[NodeType2222["DEVICE"] = 3] = "DEVICE";
              NodeType2222[NodeType2222["ORGANIZATIONAL"] = 4] = "ORGANIZATIONAL";
              NodeType2222[NodeType2222["AREA"] = 5] = "AREA";
              NodeType2222[NodeType2222["EQUIPMENT"] = 6] = "EQUIPMENT";
              NodeType2222[NodeType2222["POINT"] = 7] = "POINT";
              NodeType2222[NodeType2222["COLLECTION"] = 8] = "COLLECTION";
              NodeType2222[NodeType2222["PROPERTY"] = 9] = "PROPERTY";
              NodeType2222[NodeType2222["FUNCTIONAL"] = 10] = "FUNCTIONAL";
              NodeType2222[NodeType2222["OTHER"] = 11] = "OTHER";
              NodeType2222[NodeType2222["SUBSYSTEM"] = 12] = "SUBSYSTEM";
              NodeType2222[NodeType2222["BUILDING"] = 13] = "BUILDING";
              NodeType2222[NodeType2222["FLOOR"] = 14] = "FLOOR";
              NodeType2222[NodeType2222["SECTION"] = 15] = "SECTION";
              NodeType2222[NodeType2222["MODULE"] = 16] = "MODULE";
              NodeType2222[NodeType2222["TREE"] = 17] = "TREE";
              NodeType2222[NodeType2222["MEMBER"] = 18] = "MEMBER";
              NodeType2222[NodeType2222["PROTOCOL"] = 19] = "PROTOCOL";
              NodeType2222[NodeType2222["ROOM"] = 20] = "ROOM";
              NodeType2222[NodeType2222["ZONE"] = 21] = "ZONE";
              return NodeType2222;
            })(NodeType222 || {});
            var NotifyType222 = /* @__PURE__ */ ((NotifyType2222) => {
              NotifyType2222[NotifyType2222["ALARM"] = 0] = "ALARM";
              NotifyType2222[NotifyType2222["EVENT"] = 1] = "EVENT";
              NotifyType2222[NotifyType2222["ACK_NOTIFICATION"] = 2] = "ACK_NOTIFICATION";
              return NotifyType2222;
            })(NotifyType222 || {});
            var ObjectType222 = /* @__PURE__ */ ((ObjectType2222) => {
              ObjectType2222[ObjectType2222["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
              ObjectType2222[ObjectType2222["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
              ObjectType2222[ObjectType2222["ACCESS_POINT"] = 33] = "ACCESS_POINT";
              ObjectType2222[ObjectType2222["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
              ObjectType2222[ObjectType2222["ACCESS_USER"] = 35] = "ACCESS_USER";
              ObjectType2222[ObjectType2222["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
              ObjectType2222[ObjectType2222["ACCUMULATOR"] = 23] = "ACCUMULATOR";
              ObjectType2222[ObjectType2222["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
              ObjectType2222[ObjectType2222["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
              ObjectType2222[ObjectType2222["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
              ObjectType2222[ObjectType2222["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
              ObjectType2222[ObjectType2222["AVERAGING"] = 18] = "AVERAGING";
              ObjectType2222[ObjectType2222["BINARY_INPUT"] = 3] = "BINARY_INPUT";
              ObjectType2222[ObjectType2222["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
              ObjectType2222[ObjectType2222["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
              ObjectType2222[ObjectType2222["BINARY_VALUE"] = 5] = "BINARY_VALUE";
              ObjectType2222[ObjectType2222["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
              ObjectType2222[ObjectType2222["CALENDAR"] = 6] = "CALENDAR";
              ObjectType2222[ObjectType2222["CHANNEL"] = 53] = "CHANNEL";
              ObjectType2222[ObjectType2222["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
              ObjectType2222[ObjectType2222["COMMAND"] = 7] = "COMMAND";
              ObjectType2222[ObjectType2222["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
              ObjectType2222[ObjectType2222["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
              ObjectType2222[ObjectType2222["DATE_VALUE"] = 42] = "DATE_VALUE";
              ObjectType2222[ObjectType2222["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
              ObjectType2222[ObjectType2222["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
              ObjectType2222[ObjectType2222["DEVICE"] = 8] = "DEVICE";
              ObjectType2222[ObjectType2222["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
              ObjectType2222[ObjectType2222["ESCALATOR"] = 58] = "ESCALATOR";
              ObjectType2222[ObjectType2222["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
              ObjectType2222[ObjectType2222["EVENT_LOG"] = 25] = "EVENT_LOG";
              ObjectType2222[ObjectType2222["FILE"] = 10] = "FILE";
              ObjectType2222[ObjectType2222["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
              ObjectType2222[ObjectType2222["GROUP"] = 11] = "GROUP";
              ObjectType2222[ObjectType2222["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
              ObjectType2222[ObjectType2222["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
              ObjectType2222[ObjectType2222["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
              ObjectType2222[ObjectType2222["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
              ObjectType2222[ObjectType2222["LIFT"] = 59] = "LIFT";
              ObjectType2222[ObjectType2222["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
              ObjectType2222[ObjectType2222["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
              ObjectType2222[ObjectType2222["LOOP"] = 12] = "LOOP";
              ObjectType2222[ObjectType2222["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
              ObjectType2222[ObjectType2222["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
              ObjectType2222[ObjectType2222["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
              ObjectType2222[ObjectType2222["NETWORK_PORT"] = 56] = "NETWORK_PORT";
              ObjectType2222[ObjectType2222["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
              ObjectType2222[ObjectType2222["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
              ObjectType2222[ObjectType2222["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
              ObjectType2222[ObjectType2222["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
              ObjectType2222[ObjectType2222["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
              ObjectType2222[ObjectType2222["PROGRAM"] = 16] = "PROGRAM";
              ObjectType2222[ObjectType2222["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
              ObjectType2222[ObjectType2222["SCHEDULE"] = 17] = "SCHEDULE";
              ObjectType2222[ObjectType2222["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
              ObjectType2222[ObjectType2222["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
              ObjectType2222[ObjectType2222["TIME_VALUE"] = 50] = "TIME_VALUE";
              ObjectType2222[ObjectType2222["TIMER"] = 31] = "TIMER";
              ObjectType2222[ObjectType2222["TREND_LOG"] = 20] = "TREND_LOG";
              ObjectType2222[ObjectType2222["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
              return ObjectType2222;
            })(ObjectType222 || {});
            var Polarity222 = /* @__PURE__ */ ((Polarity2222) => {
              Polarity2222[Polarity2222["NORMAL"] = 0] = "NORMAL";
              Polarity2222[Polarity2222["REVERSE"] = 1] = "REVERSE";
              return Polarity2222;
            })(Polarity222 || {});
            var ProgramError222 = /* @__PURE__ */ ((ProgramError2222) => {
              ProgramError2222[ProgramError2222["NORMAL"] = 0] = "NORMAL";
              ProgramError2222[ProgramError2222["LOAD_FAILED"] = 1] = "LOAD_FAILED";
              ProgramError2222[ProgramError2222["INTERNAL"] = 2] = "INTERNAL";
              ProgramError2222[ProgramError2222["PROGRAM"] = 3] = "PROGRAM";
              ProgramError2222[ProgramError2222["OTHER"] = 4] = "OTHER";
              return ProgramError2222;
            })(ProgramError222 || {});
            var ProgramRequest222 = /* @__PURE__ */ ((ProgramRequest2222) => {
              ProgramRequest2222[ProgramRequest2222["READY"] = 0] = "READY";
              ProgramRequest2222[ProgramRequest2222["LOAD"] = 1] = "LOAD";
              ProgramRequest2222[ProgramRequest2222["RUN"] = 2] = "RUN";
              ProgramRequest2222[ProgramRequest2222["HALT"] = 3] = "HALT";
              ProgramRequest2222[ProgramRequest2222["RESTART"] = 4] = "RESTART";
              ProgramRequest2222[ProgramRequest2222["UNLOAD"] = 5] = "UNLOAD";
              return ProgramRequest2222;
            })(ProgramRequest222 || {});
            var ProgramState222 = /* @__PURE__ */ ((ProgramState2222) => {
              ProgramState2222[ProgramState2222["IDLE"] = 0] = "IDLE";
              ProgramState2222[ProgramState2222["LOADING"] = 1] = "LOADING";
              ProgramState2222[ProgramState2222["RUNNING"] = 2] = "RUNNING";
              ProgramState2222[ProgramState2222["WAITING"] = 3] = "WAITING";
              ProgramState2222[ProgramState2222["HALTED"] = 4] = "HALTED";
              ProgramState2222[ProgramState2222["UNLOADING"] = 5] = "UNLOADING";
              return ProgramState2222;
            })(ProgramState222 || {});
            var PropertyIdentifier222 = /* @__PURE__ */ ((PropertyIdentifier2222) => {
              PropertyIdentifier2222[PropertyIdentifier2222["ABSENTEE_LIMIT"] = 244] = "ABSENTEE_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCEPTED_MODES"] = 175] = "ACCEPTED_MODES";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_ALARM_EVENTS"] = 245] = "ACCESS_ALARM_EVENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_DOORS"] = 246] = "ACCESS_DOORS";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_EVENT"] = 247] = "ACCESS_EVENT";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_EVENT_AUTHENTICATION_FACTOR"] = 248] = "ACCESS_EVENT_AUTHENTICATION_FACTOR";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_EVENT_CREDENTIAL"] = 249] = "ACCESS_EVENT_CREDENTIAL";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_EVENT_TAG"] = 322] = "ACCESS_EVENT_TAG";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_EVENT_TIME"] = 250] = "ACCESS_EVENT_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCESS_TRANSACTION_EVENTS"] = 251] = "ACCESS_TRANSACTION_EVENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCOMPANIMENT"] = 252] = "ACCOMPANIMENT";
              PropertyIdentifier2222[PropertyIdentifier2222["ACCOMPANIMENT_TIME"] = 253] = "ACCOMPANIMENT_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["ACK_REQUIRED"] = 1] = "ACK_REQUIRED";
              PropertyIdentifier2222[PropertyIdentifier2222["ACKED_TRANSITIONS"] = 0] = "ACKED_TRANSITIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTION"] = 2] = "ACTION";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTION_TEXT"] = 3] = "ACTION_TEXT";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTIVATION_TIME"] = 254] = "ACTIVATION_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTIVE_AUTHENTICATION_POLICY"] = 255] = "ACTIVE_AUTHENTICATION_POLICY";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS"] = 481] = "ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTIVE_COV_SUBSCRIPTIONS"] = 152] = "ACTIVE_COV_SUBSCRIPTIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTIVE_TEXT"] = 4] = "ACTIVE_TEXT";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTIVE_VT_SESSIONS"] = 5] = "ACTIVE_VT_SESSIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["ACTUAL_SHED_LEVEL"] = 212] = "ACTUAL_SHED_LEVEL";
              PropertyIdentifier2222[PropertyIdentifier2222["ADJUST_VALUE"] = 176] = "ADJUST_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["ALARM_VALUE"] = 6] = "ALARM_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["ALARM_VALUES"] = 7] = "ALARM_VALUES";
              PropertyIdentifier2222[PropertyIdentifier2222["ALIGN_INTERVALS"] = 193] = "ALIGN_INTERVALS";
              PropertyIdentifier2222[PropertyIdentifier2222["ALL"] = 8] = "ALL";
              PropertyIdentifier2222[PropertyIdentifier2222["ALL_WRITES_SUCCESSFUL"] = 9] = "ALL_WRITES_SUCCESSFUL";
              PropertyIdentifier2222[PropertyIdentifier2222["ALLOW_GROUP_DELAY_INHIBIT"] = 365] = "ALLOW_GROUP_DELAY_INHIBIT";
              PropertyIdentifier2222[PropertyIdentifier2222["APDU_LENGTH"] = 399] = "APDU_LENGTH";
              PropertyIdentifier2222[PropertyIdentifier2222["APDU_SEGMENT_TIMEOUT"] = 10] = "APDU_SEGMENT_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["APDU_TIMEOUT"] = 11] = "APDU_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["APPLICATION_SOFTWARE_VERSION"] = 12] = "APPLICATION_SOFTWARE_VERSION";
              PropertyIdentifier2222[PropertyIdentifier2222["ARCHIVE"] = 13] = "ARCHIVE";
              PropertyIdentifier2222[PropertyIdentifier2222["ASSIGNED_ACCESS_RIGHTS"] = 256] = "ASSIGNED_ACCESS_RIGHTS";
              PropertyIdentifier2222[PropertyIdentifier2222["ASSIGNED_LANDING_CALLS"] = 447] = "ASSIGNED_LANDING_CALLS";
              PropertyIdentifier2222[PropertyIdentifier2222["ATTEMPTED_SAMPLES"] = 124] = "ATTEMPTED_SAMPLES";
              PropertyIdentifier2222[PropertyIdentifier2222["AUTHENTICATION_FACTORS"] = 257] = "AUTHENTICATION_FACTORS";
              PropertyIdentifier2222[PropertyIdentifier2222["AUTHENTICATION_POLICY_LIST"] = 258] = "AUTHENTICATION_POLICY_LIST";
              PropertyIdentifier2222[PropertyIdentifier2222["AUTHENTICATION_POLICY_NAMES"] = 259] = "AUTHENTICATION_POLICY_NAMES";
              PropertyIdentifier2222[PropertyIdentifier2222["AUTHENTICATION_STATUS"] = 260] = "AUTHENTICATION_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["AUTHORIZATION_EXEMPTIONS"] = 364] = "AUTHORIZATION_EXEMPTIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["AUTHORIZATION_MODE"] = 261] = "AUTHORIZATION_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["AUTO_SLAVE_DISCOVERY"] = 169] = "AUTO_SLAVE_DISCOVERY";
              PropertyIdentifier2222[PropertyIdentifier2222["AVERAGE_VALUE"] = 125] = "AVERAGE_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["BACKUP_AND_RESTORE_STATE"] = 338] = "BACKUP_AND_RESTORE_STATE";
              PropertyIdentifier2222[PropertyIdentifier2222["BACKUP_FAILURE_TIMEOUT"] = 153] = "BACKUP_FAILURE_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["BACKUP_PREPARATION_TIME"] = 339] = "BACKUP_PREPARATION_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IP_GLOBAL_ADDRESS"] = 407] = "BACNET_IP_GLOBAL_ADDRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IP_MODE"] = 408] = "BACNET_IP_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IP_MULTICAST_ADDRESS"] = 409] = "BACNET_IP_MULTICAST_ADDRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IP_NAT_TRAVERSAL"] = 410] = "BACNET_IP_NAT_TRAVERSAL";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IP_UDP_PORT"] = 412] = "BACNET_IP_UDP_PORT";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IPV6_MODE"] = 435] = "BACNET_IPV6_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IPV6_UDP_PORT"] = 438] = "BACNET_IPV6_UDP_PORT";
              PropertyIdentifier2222[PropertyIdentifier2222["BACNET_IPV6_MULTICAST_ADDRESS"] = 440] = "BACNET_IPV6_MULTICAST_ADDRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["BBMD_ACCEPT_FD_REGISTRATIONS"] = 413] = "BBMD_ACCEPT_FD_REGISTRATIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["BBMD_BROADCAST_DISTRIBUTION_TABLE"] = 414] = "BBMD_BROADCAST_DISTRIBUTION_TABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["BBMD_FOREIGN_DEVICE_TABLE"] = 415] = "BBMD_FOREIGN_DEVICE_TABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["BELONGS_TO"] = 262] = "BELONGS_TO";
              PropertyIdentifier2222[PropertyIdentifier2222["BIAS"] = 14] = "BIAS";
              PropertyIdentifier2222[PropertyIdentifier2222["BIT_MASK"] = 342] = "BIT_MASK";
              PropertyIdentifier2222[PropertyIdentifier2222["BIT_TEXT"] = 343] = "BIT_TEXT";
              PropertyIdentifier2222[PropertyIdentifier2222["BLINK_WARN_ENABLE"] = 373] = "BLINK_WARN_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["BUFFER_SIZE"] = 126] = "BUFFER_SIZE";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_ASSIGNED_DIRECTION"] = 448] = "CAR_ASSIGNED_DIRECTION";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_DOOR_COMMAND"] = 449] = "CAR_DOOR_COMMAND";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_DOOR_STATUS"] = 450] = "CAR_DOOR_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_DOOR_TEXT"] = 451] = "CAR_DOOR_TEXT";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_DOOR_ZONE"] = 452] = "CAR_DOOR_ZONE";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_DRIVE_STATUS"] = 453] = "CAR_DRIVE_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_LOAD"] = 454] = "CAR_LOAD";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_LOAD_UNITS"] = 455] = "CAR_LOAD_UNITS";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_MODE"] = 456] = "CAR_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_MOVING_DIRECTION"] = 457] = "CAR_MOVING_DIRECTION";
              PropertyIdentifier2222[PropertyIdentifier2222["CAR_POSITION"] = 458] = "CAR_POSITION";
              PropertyIdentifier2222[PropertyIdentifier2222["CHANGE_OF_STATE_COUNT"] = 15] = "CHANGE_OF_STATE_COUNT";
              PropertyIdentifier2222[PropertyIdentifier2222["CHANGE_OF_STATE_TIME"] = 16] = "CHANGE_OF_STATE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["CHANGES_PENDING"] = 416] = "CHANGES_PENDING";
              PropertyIdentifier2222[PropertyIdentifier2222["CHANNEL_NUMBER"] = 366] = "CHANNEL_NUMBER";
              PropertyIdentifier2222[PropertyIdentifier2222["CLIENT_COV_INCREMENT"] = 127] = "CLIENT_COV_INCREMENT";
              PropertyIdentifier2222[PropertyIdentifier2222["COMMAND"] = 417] = "COMMAND";
              PropertyIdentifier2222[PropertyIdentifier2222["COMMAND_TIME_ARRAY"] = 430] = "COMMAND_TIME_ARRAY";
              PropertyIdentifier2222[PropertyIdentifier2222["CONFIGURATION_FILES"] = 154] = "CONFIGURATION_FILES";
              PropertyIdentifier2222[PropertyIdentifier2222["CONTROL_GROUPS"] = 367] = "CONTROL_GROUPS";
              PropertyIdentifier2222[PropertyIdentifier2222["CONTROLLED_VARIABLE_REFERENCE"] = 19] = "CONTROLLED_VARIABLE_REFERENCE";
              PropertyIdentifier2222[PropertyIdentifier2222["CONTROLLED_VARIABLE_UNITS"] = 20] = "CONTROLLED_VARIABLE_UNITS";
              PropertyIdentifier2222[PropertyIdentifier2222["CONTROLLED_VARIABLE_VALUE"] = 21] = "CONTROLLED_VARIABLE_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["COUNT"] = 177] = "COUNT";
              PropertyIdentifier2222[PropertyIdentifier2222["COUNT_BEFORE_CHANGE"] = 178] = "COUNT_BEFORE_CHANGE";
              PropertyIdentifier2222[PropertyIdentifier2222["COUNT_CHANGE_TIME"] = 179] = "COUNT_CHANGE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["COV_INCREMENT"] = 22] = "COV_INCREMENT";
              PropertyIdentifier2222[PropertyIdentifier2222["COV_PERIOD"] = 180] = "COV_PERIOD";
              PropertyIdentifier2222[PropertyIdentifier2222["COV_RESUBSCRIPTION_INTERVAL"] = 128] = "COV_RESUBSCRIPTION_INTERVAL";
              PropertyIdentifier2222[PropertyIdentifier2222["COVU_PERIOD"] = 349] = "COVU_PERIOD";
              PropertyIdentifier2222[PropertyIdentifier2222["COVU_RECIPIENTS"] = 350] = "COVU_RECIPIENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["CREDENTIAL_DISABLE"] = 263] = "CREDENTIAL_DISABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["CREDENTIAL_STATUS"] = 264] = "CREDENTIAL_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["CREDENTIALS"] = 265] = "CREDENTIALS";
              PropertyIdentifier2222[PropertyIdentifier2222["CREDENTIALS_IN_ZONE"] = 266] = "CREDENTIALS_IN_ZONE";
              PropertyIdentifier2222[PropertyIdentifier2222["CURRENT_COMMAND_PRIORITY"] = 431] = "CURRENT_COMMAND_PRIORITY";
              PropertyIdentifier2222[PropertyIdentifier2222["DATABASE_REVISION"] = 155] = "DATABASE_REVISION";
              PropertyIdentifier2222[PropertyIdentifier2222["DATE_LIST"] = 23] = "DATE_LIST";
              PropertyIdentifier2222[PropertyIdentifier2222["DAYLIGHT_SAVINGS_STATUS"] = 24] = "DAYLIGHT_SAVINGS_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["DAYS_REMAINING"] = 267] = "DAYS_REMAINING";
              PropertyIdentifier2222[PropertyIdentifier2222["DEADBAND"] = 25] = "DEADBAND";
              PropertyIdentifier2222[PropertyIdentifier2222["DEFAULT_FADE_TIME"] = 374] = "DEFAULT_FADE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["DEFAULT_RAMP_RATE"] = 375] = "DEFAULT_RAMP_RATE";
              PropertyIdentifier2222[PropertyIdentifier2222["DEFAULT_STEP_INCREMENT"] = 376] = "DEFAULT_STEP_INCREMENT";
              PropertyIdentifier2222[PropertyIdentifier2222["DEFAULT_SUBORDINATE_RELATIONSHIP"] = 490] = "DEFAULT_SUBORDINATE_RELATIONSHIP";
              PropertyIdentifier2222[PropertyIdentifier2222["DEFAULT_TIMEOUT"] = 393] = "DEFAULT_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["DEPLOYED_PROFILE_LOCATION"] = 484] = "DEPLOYED_PROFILE_LOCATION";
              PropertyIdentifier2222[PropertyIdentifier2222["DERIVATIVE_CONSTANT"] = 26] = "DERIVATIVE_CONSTANT";
              PropertyIdentifier2222[PropertyIdentifier2222["DERIVATIVE_CONSTANT_UNITS"] = 27] = "DERIVATIVE_CONSTANT_UNITS";
              PropertyIdentifier2222[PropertyIdentifier2222["DESCRIPTION"] = 28] = "DESCRIPTION";
              PropertyIdentifier2222[PropertyIdentifier2222["DESCRIPTION_OF_HALT"] = 29] = "DESCRIPTION_OF_HALT";
              PropertyIdentifier2222[PropertyIdentifier2222["DEVICE_ADDRESS_BINDING"] = 30] = "DEVICE_ADDRESS_BINDING";
              PropertyIdentifier2222[PropertyIdentifier2222["DEVICE_TYPE"] = 31] = "DEVICE_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["DIRECT_READING"] = 156] = "DIRECT_READING";
              PropertyIdentifier2222[PropertyIdentifier2222["DISTRIBUTION_KEY_REVISION"] = 328] = "DISTRIBUTION_KEY_REVISION";
              PropertyIdentifier2222[PropertyIdentifier2222["DO_NOT_HIDE"] = 329] = "DO_NOT_HIDE";
              PropertyIdentifier2222[PropertyIdentifier2222["DOOR_ALARM_STATE"] = 226] = "DOOR_ALARM_STATE";
              PropertyIdentifier2222[PropertyIdentifier2222["DOOR_EXTENDED_PULSE_TIME"] = 227] = "DOOR_EXTENDED_PULSE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["DOOR_MEMBERS"] = 228] = "DOOR_MEMBERS";
              PropertyIdentifier2222[PropertyIdentifier2222["DOOR_OPEN_TOO_LONG_TIME"] = 229] = "DOOR_OPEN_TOO_LONG_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["DOOR_PULSE_TIME"] = 230] = "DOOR_PULSE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["DOOR_STATUS"] = 231] = "DOOR_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["DOOR_UNLOCK_DELAY_TIME"] = 232] = "DOOR_UNLOCK_DELAY_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["DUTY_WINDOW"] = 213] = "DUTY_WINDOW";
              PropertyIdentifier2222[PropertyIdentifier2222["EFFECTIVE_PERIOD"] = 32] = "EFFECTIVE_PERIOD";
              PropertyIdentifier2222[PropertyIdentifier2222["EGRESS_ACTIVE"] = 386] = "EGRESS_ACTIVE";
              PropertyIdentifier2222[PropertyIdentifier2222["EGRESS_TIME"] = 377] = "EGRESS_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["ELAPSED_ACTIVE_TIME"] = 33] = "ELAPSED_ACTIVE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["ELEVATOR_GROUP"] = 459] = "ELEVATOR_GROUP";
              PropertyIdentifier2222[PropertyIdentifier2222["ENABLE"] = 133] = "ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["ENERGY_METER"] = 460] = "ENERGY_METER";
              PropertyIdentifier2222[PropertyIdentifier2222["ENERGY_METER_REF"] = 461] = "ENERGY_METER_REF";
              PropertyIdentifier2222[PropertyIdentifier2222["ENTRY_POINTS"] = 268] = "ENTRY_POINTS";
              PropertyIdentifier2222[PropertyIdentifier2222["ERROR_LIMIT"] = 34] = "ERROR_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["ESCALATOR_MODE"] = 462] = "ESCALATOR_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_ALGORITHM_INHIBIT"] = 354] = "EVENT_ALGORITHM_INHIBIT";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_ALGORITHM_INHIBIT_REF"] = 355] = "EVENT_ALGORITHM_INHIBIT_REF";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_DETECTION_ENABLE"] = 353] = "EVENT_DETECTION_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_ENABLE"] = 35] = "EVENT_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_MESSAGE_TEXTS"] = 351] = "EVENT_MESSAGE_TEXTS";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_MESSAGE_TEXTS_CONFIG"] = 352] = "EVENT_MESSAGE_TEXTS_CONFIG";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_PARAMETERS"] = 83] = "EVENT_PARAMETERS";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_STATE"] = 36] = "EVENT_STATE";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_TIME_STAMPS"] = 130] = "EVENT_TIME_STAMPS";
              PropertyIdentifier2222[PropertyIdentifier2222["EVENT_TYPE"] = 37] = "EVENT_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["EXCEPTION_SCHEDULE"] = 38] = "EXCEPTION_SCHEDULE";
              PropertyIdentifier2222[PropertyIdentifier2222["EXECUTION_DELAY"] = 368] = "EXECUTION_DELAY";
              PropertyIdentifier2222[PropertyIdentifier2222["EXIT_POINTS"] = 269] = "EXIT_POINTS";
              PropertyIdentifier2222[PropertyIdentifier2222["EXPECTED_SHED_LEVEL"] = 214] = "EXPECTED_SHED_LEVEL";
              PropertyIdentifier2222[PropertyIdentifier2222["EXPIRATION_TIME"] = 270] = "EXPIRATION_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["EXTENDED_TIME_ENABLE"] = 271] = "EXTENDED_TIME_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["FAILED_ATTEMPT_EVENTS"] = 272] = "FAILED_ATTEMPT_EVENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["FAILED_ATTEMPTS"] = 273] = "FAILED_ATTEMPTS";
              PropertyIdentifier2222[PropertyIdentifier2222["FAILED_ATTEMPTS_TIME"] = 274] = "FAILED_ATTEMPTS_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["FAULT_HIGH_LIMIT"] = 388] = "FAULT_HIGH_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["FAULT_LOW_LIMIT"] = 389] = "FAULT_LOW_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["FAULT_PARAMETERS"] = 358] = "FAULT_PARAMETERS";
              PropertyIdentifier2222[PropertyIdentifier2222["FAULT_SIGNALS"] = 463] = "FAULT_SIGNALS";
              PropertyIdentifier2222[PropertyIdentifier2222["FAULT_TYPE"] = 359] = "FAULT_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["FAULT_VALUES"] = 39] = "FAULT_VALUES";
              PropertyIdentifier2222[PropertyIdentifier2222["FD_BBMD_ADDRESS"] = 418] = "FD_BBMD_ADDRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["FD_SUBSCRIPTION_LIFETIME"] = 419] = "FD_SUBSCRIPTION_LIFETIME";
              PropertyIdentifier2222[PropertyIdentifier2222["FEEDBACK_VALUE"] = 40] = "FEEDBACK_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["FILE_ACCESS_METHOD"] = 41] = "FILE_ACCESS_METHOD";
              PropertyIdentifier2222[PropertyIdentifier2222["FILE_SIZE"] = 42] = "FILE_SIZE";
              PropertyIdentifier2222[PropertyIdentifier2222["FILE_TYPE"] = 43] = "FILE_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["FIRMWARE_REVISION"] = 44] = "FIRMWARE_REVISION";
              PropertyIdentifier2222[PropertyIdentifier2222["FLOOR_TEXT"] = 464] = "FLOOR_TEXT";
              PropertyIdentifier2222[PropertyIdentifier2222["FULL_DUTY_BASELINE"] = 215] = "FULL_DUTY_BASELINE";
              PropertyIdentifier2222[PropertyIdentifier2222["GLOBAL_IDENTIFIER"] = 323] = "GLOBAL_IDENTIFIER";
              PropertyIdentifier2222[PropertyIdentifier2222["GROUP_ID"] = 465] = "GROUP_ID";
              PropertyIdentifier2222[PropertyIdentifier2222["GROUP_MEMBER_NAMES"] = 346] = "GROUP_MEMBER_NAMES";
              PropertyIdentifier2222[PropertyIdentifier2222["GROUP_MEMBERS"] = 345] = "GROUP_MEMBERS";
              PropertyIdentifier2222[PropertyIdentifier2222["GROUP_MODE"] = 467] = "GROUP_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["HIGH_LIMIT"] = 45] = "HIGH_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["HIGHER_DECK"] = 468] = "HIGHER_DECK";
              PropertyIdentifier2222[PropertyIdentifier2222["IN_PROCESS"] = 47] = "IN_PROCESS";
              PropertyIdentifier2222[PropertyIdentifier2222["IN_PROGRESS"] = 378] = "IN_PROGRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["INACTIVE_TEXT"] = 46] = "INACTIVE_TEXT";
              PropertyIdentifier2222[PropertyIdentifier2222["INITIAL_TIMEOUT"] = 394] = "INITIAL_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["INPUT_REFERENCE"] = 181] = "INPUT_REFERENCE";
              PropertyIdentifier2222[PropertyIdentifier2222["INSTALLATION_ID"] = 469] = "INSTALLATION_ID";
              PropertyIdentifier2222[PropertyIdentifier2222["INSTANCE_OF"] = 48] = "INSTANCE_OF";
              PropertyIdentifier2222[PropertyIdentifier2222["INSTANTANEOUS_POWER"] = 379] = "INSTANTANEOUS_POWER";
              PropertyIdentifier2222[PropertyIdentifier2222["INTEGRAL_CONSTANT"] = 49] = "INTEGRAL_CONSTANT";
              PropertyIdentifier2222[PropertyIdentifier2222["INTEGRAL_CONSTANT_UNITS"] = 50] = "INTEGRAL_CONSTANT_UNITS";
              PropertyIdentifier2222[PropertyIdentifier2222["INTERFACE_VALUE"] = 387] = "INTERFACE_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["INTERVAL_OFFSET"] = 195] = "INTERVAL_OFFSET";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_ADDRESS"] = 400] = "IP_ADDRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_DEFAULT_GATEWAY"] = 401] = "IP_DEFAULT_GATEWAY";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_DHCP_ENABLE"] = 402] = "IP_DHCP_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_DHCP_LEASE_TIME"] = 403] = "IP_DHCP_LEASE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_DHCP_LEASE_TIME_REMAINING"] = 404] = "IP_DHCP_LEASE_TIME_REMAINING";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_DHCP_SERVER"] = 405] = "IP_DHCP_SERVER";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_DNS_SERVER"] = 406] = "IP_DNS_SERVER";
              PropertyIdentifier2222[PropertyIdentifier2222["IP_SUBNET_MASK"] = 411] = "IP_SUBNET_MASK";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_ADDRESS"] = 436] = "IPV6_ADDRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_AUTO_ADDRESSING_ENABLE"] = 442] = "IPV6_AUTO_ADDRESSING_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_DEFAULT_GATEWAY"] = 439] = "IPV6_DEFAULT_GATEWAY";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_DHCP_LEASE_TIME"] = 443] = "IPV6_DHCP_LEASE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_DHCP_LEASE_TIME_REMAINING"] = 444] = "IPV6_DHCP_LEASE_TIME_REMAINING";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_DHCP_SERVER"] = 445] = "IPV6_DHCP_SERVER";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_DNS_SERVER"] = 441] = "IPV6_DNS_SERVER";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_PREFIX_LENGTH"] = 437] = "IPV6_PREFIX_LENGTH";
              PropertyIdentifier2222[PropertyIdentifier2222["IPV6_ZONE_INDEX"] = 446] = "IPV6_ZONE_INDEX";
              PropertyIdentifier2222[PropertyIdentifier2222["IS_UTC"] = 344] = "IS_UTC";
              PropertyIdentifier2222[PropertyIdentifier2222["KEY_SETS"] = 330] = "KEY_SETS";
              PropertyIdentifier2222[PropertyIdentifier2222["LANDING_CALL_CONTROL"] = 471] = "LANDING_CALL_CONTROL";
              PropertyIdentifier2222[PropertyIdentifier2222["LANDING_CALLS"] = 470] = "LANDING_CALLS";
              PropertyIdentifier2222[PropertyIdentifier2222["LANDING_DOOR_STATUS"] = 472] = "LANDING_DOOR_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_ACCESS_EVENT"] = 275] = "LAST_ACCESS_EVENT";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_ACCESS_POINT"] = 276] = "LAST_ACCESS_POINT";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_COMMAND_TIME"] = 432] = "LAST_COMMAND_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_CREDENTIAL_ADDED"] = 277] = "LAST_CREDENTIAL_ADDED";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_CREDENTIAL_ADDED_TIME"] = 278] = "LAST_CREDENTIAL_ADDED_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_CREDENTIAL_REMOVED"] = 279] = "LAST_CREDENTIAL_REMOVED";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_CREDENTIAL_REMOVED_TIME"] = 280] = "LAST_CREDENTIAL_REMOVED_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_KEY_SERVER"] = 331] = "LAST_KEY_SERVER";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_NOTIFY_RECORD"] = 173] = "LAST_NOTIFY_RECORD";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_PRIORITY"] = 369] = "LAST_PRIORITY";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_RESTART_REASON"] = 196] = "LAST_RESTART_REASON";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_RESTORE_TIME"] = 157] = "LAST_RESTORE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_STATE_CHANGE"] = 395] = "LAST_STATE_CHANGE";
              PropertyIdentifier2222[PropertyIdentifier2222["LAST_USE_TIME"] = 281] = "LAST_USE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["LIFE_SAFETY_ALARM_VALUES"] = 166] = "LIFE_SAFETY_ALARM_VALUES";
              PropertyIdentifier2222[PropertyIdentifier2222["LIGHTING_COMMAND"] = 380] = "LIGHTING_COMMAND";
              PropertyIdentifier2222[PropertyIdentifier2222["LIGHTING_COMMAND_DEFAULT_PRIORITY"] = 381] = "LIGHTING_COMMAND_DEFAULT_PRIORITY";
              PropertyIdentifier2222[PropertyIdentifier2222["LIMIT_ENABLE"] = 52] = "LIMIT_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["LIMIT_MONITORING_INTERVAL"] = 182] = "LIMIT_MONITORING_INTERVAL";
              PropertyIdentifier2222[PropertyIdentifier2222["LINK_SPEED"] = 420] = "LINK_SPEED";
              PropertyIdentifier2222[PropertyIdentifier2222["LINK_SPEED_AUTONEGOTIATE"] = 422] = "LINK_SPEED_AUTONEGOTIATE";
              PropertyIdentifier2222[PropertyIdentifier2222["LINK_SPEEDS"] = 421] = "LINK_SPEEDS";
              PropertyIdentifier2222[PropertyIdentifier2222["LIST_OF_GROUP_MEMBERS"] = 53] = "LIST_OF_GROUP_MEMBERS";
              PropertyIdentifier2222[PropertyIdentifier2222["LIST_OF_OBJECT_PROPERTY_REFERENCES"] = 54] = "LIST_OF_OBJECT_PROPERTY_REFERENCES";
              PropertyIdentifier2222[PropertyIdentifier2222["LOCAL_DATE"] = 56] = "LOCAL_DATE";
              PropertyIdentifier2222[PropertyIdentifier2222["LOCAL_FORWARDING_ONLY"] = 360] = "LOCAL_FORWARDING_ONLY";
              PropertyIdentifier2222[PropertyIdentifier2222["LOCAL_TIME"] = 57] = "LOCAL_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["LOCATION"] = 58] = "LOCATION";
              PropertyIdentifier2222[PropertyIdentifier2222["LOCK_STATUS"] = 233] = "LOCK_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["LOCKOUT"] = 282] = "LOCKOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["LOCKOUT_RELINQUISH_TIME"] = 283] = "LOCKOUT_RELINQUISH_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["LOG_BUFFER"] = 131] = "LOG_BUFFER";
              PropertyIdentifier2222[PropertyIdentifier2222["LOG_DEVICE_OBJECT_PROPERTY"] = 132] = "LOG_DEVICE_OBJECT_PROPERTY";
              PropertyIdentifier2222[PropertyIdentifier2222["LOG_INTERVAL"] = 134] = "LOG_INTERVAL";
              PropertyIdentifier2222[PropertyIdentifier2222["LOGGING_OBJECT"] = 183] = "LOGGING_OBJECT";
              PropertyIdentifier2222[PropertyIdentifier2222["LOGGING_RECORD"] = 184] = "LOGGING_RECORD";
              PropertyIdentifier2222[PropertyIdentifier2222["LOGGING_TYPE"] = 197] = "LOGGING_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["LOW_DIFF_LIMIT"] = 390] = "LOW_DIFF_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["LOW_LIMIT"] = 59] = "LOW_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["LOWER_DECK"] = 473] = "LOWER_DECK";
              PropertyIdentifier2222[PropertyIdentifier2222["MAC_ADDRESS"] = 423] = "MAC_ADDRESS";
              PropertyIdentifier2222[PropertyIdentifier2222["MACHINE_ROOM_ID"] = 474] = "MACHINE_ROOM_ID";
              PropertyIdentifier2222[PropertyIdentifier2222["MAINTENANCE_REQUIRED"] = 158] = "MAINTENANCE_REQUIRED";
              PropertyIdentifier2222[PropertyIdentifier2222["MAKING_CAR_CALL"] = 475] = "MAKING_CAR_CALL";
              PropertyIdentifier2222[PropertyIdentifier2222["MANIPULATED_VARIABLE_REFERENCE"] = 60] = "MANIPULATED_VARIABLE_REFERENCE";
              PropertyIdentifier2222[PropertyIdentifier2222["MANUAL_SLAVE_ADDRESS_BINDING"] = 170] = "MANUAL_SLAVE_ADDRESS_BINDING";
              PropertyIdentifier2222[PropertyIdentifier2222["MASKED_ALARM_VALUES"] = 234] = "MASKED_ALARM_VALUES";
              PropertyIdentifier2222[PropertyIdentifier2222["MAX_ACTUAL_VALUE"] = 382] = "MAX_ACTUAL_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["MAX_APDU_LENGTH_ACCEPTED"] = 62] = "MAX_APDU_LENGTH_ACCEPTED";
              PropertyIdentifier2222[PropertyIdentifier2222["MAX_FAILED_ATTEMPTS"] = 285] = "MAX_FAILED_ATTEMPTS";
              PropertyIdentifier2222[PropertyIdentifier2222["MAX_INFO_FRAMES"] = 63] = "MAX_INFO_FRAMES";
              PropertyIdentifier2222[PropertyIdentifier2222["MAX_MASTER"] = 64] = "MAX_MASTER";
              PropertyIdentifier2222[PropertyIdentifier2222["MAX_PRES_VALUE"] = 65] = "MAX_PRES_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["MAX_SEGMENTS_ACCEPTED"] = 167] = "MAX_SEGMENTS_ACCEPTED";
              PropertyIdentifier2222[PropertyIdentifier2222["MAXIMUM_OUTPUT"] = 61] = "MAXIMUM_OUTPUT";
              PropertyIdentifier2222[PropertyIdentifier2222["MAXIMUM_VALUE"] = 135] = "MAXIMUM_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["MAXIMUM_VALUE_TIMESTAMP"] = 149] = "MAXIMUM_VALUE_TIMESTAMP";
              PropertyIdentifier2222[PropertyIdentifier2222["MEMBER_OF"] = 159] = "MEMBER_OF";
              PropertyIdentifier2222[PropertyIdentifier2222["MEMBER_STATUS_FLAGS"] = 347] = "MEMBER_STATUS_FLAGS";
              PropertyIdentifier2222[PropertyIdentifier2222["MEMBERS"] = 286] = "MEMBERS";
              PropertyIdentifier2222[PropertyIdentifier2222["MIN_ACTUAL_VALUE"] = 383] = "MIN_ACTUAL_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["MIN_PRES_VALUE"] = 69] = "MIN_PRES_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["MINIMUM_OFF_TIME"] = 66] = "MINIMUM_OFF_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["MINIMUM_ON_TIME"] = 67] = "MINIMUM_ON_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["MINIMUM_OUTPUT"] = 68] = "MINIMUM_OUTPUT";
              PropertyIdentifier2222[PropertyIdentifier2222["MINIMUM_VALUE"] = 136] = "MINIMUM_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["MINIMUM_VALUE_TIMESTAMP"] = 150] = "MINIMUM_VALUE_TIMESTAMP";
              PropertyIdentifier2222[PropertyIdentifier2222["MODE"] = 160] = "MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["MODEL_NAME"] = 70] = "MODEL_NAME";
              PropertyIdentifier2222[PropertyIdentifier2222["MODIFICATION_DATE"] = 71] = "MODIFICATION_DATE";
              PropertyIdentifier2222[PropertyIdentifier2222["MUSTER_POINT"] = 287] = "MUSTER_POINT";
              PropertyIdentifier2222[PropertyIdentifier2222["NEGATIVE_ACCESS_RULES"] = 288] = "NEGATIVE_ACCESS_RULES";
              PropertyIdentifier2222[PropertyIdentifier2222["NETWORK_ACCESS_SECURITY_POLICIES"] = 332] = "NETWORK_ACCESS_SECURITY_POLICIES";
              PropertyIdentifier2222[PropertyIdentifier2222["NETWORK_INTERFACE_NAME"] = 424] = "NETWORK_INTERFACE_NAME";
              PropertyIdentifier2222[PropertyIdentifier2222["NETWORK_NUMBER"] = 425] = "NETWORK_NUMBER";
              PropertyIdentifier2222[PropertyIdentifier2222["NETWORK_NUMBER_QUALITY"] = 426] = "NETWORK_NUMBER_QUALITY";
              PropertyIdentifier2222[PropertyIdentifier2222["NETWORK_TYPE"] = 427] = "NETWORK_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["NEXT_STOPPING_FLOOR"] = 476] = "NEXT_STOPPING_FLOOR";
              PropertyIdentifier2222[PropertyIdentifier2222["NODE_SUBTYPE"] = 207] = "NODE_SUBTYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["NODE_TYPE"] = 208] = "NODE_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["NOTIFICATION_CLASS"] = 17] = "NOTIFICATION_CLASS";
              PropertyIdentifier2222[PropertyIdentifier2222["NOTIFICATION_THRESHOLD"] = 137] = "NOTIFICATION_THRESHOLD";
              PropertyIdentifier2222[PropertyIdentifier2222["NOTIFY_TYPE"] = 72] = "NOTIFY_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["NUMBER_OF_APDU_RETRIES"] = 73] = "NUMBER_OF_APDU_RETRIES";
              PropertyIdentifier2222[PropertyIdentifier2222["NUMBER_OF_AUTHENTICATION_POLICIES"] = 289] = "NUMBER_OF_AUTHENTICATION_POLICIES";
              PropertyIdentifier2222[PropertyIdentifier2222["NUMBER_OF_STATES"] = 74] = "NUMBER_OF_STATES";
              PropertyIdentifier2222[PropertyIdentifier2222["OBJECT_IDENTIFIER"] = 75] = "OBJECT_IDENTIFIER";
              PropertyIdentifier2222[PropertyIdentifier2222["OBJECT_LIST"] = 76] = "OBJECT_LIST";
              PropertyIdentifier2222[PropertyIdentifier2222["OBJECT_NAME"] = 77] = "OBJECT_NAME";
              PropertyIdentifier2222[PropertyIdentifier2222["OBJECT_PROPERTY_REFERENCE"] = 78] = "OBJECT_PROPERTY_REFERENCE";
              PropertyIdentifier2222[PropertyIdentifier2222["OBJECT_TYPE"] = 79] = "OBJECT_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_COUNT"] = 290] = "OCCUPANCY_COUNT";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_COUNT_ADJUST"] = 291] = "OCCUPANCY_COUNT_ADJUST";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_COUNT_ENABLE"] = 292] = "OCCUPANCY_COUNT_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_LOWER_LIMIT"] = 294] = "OCCUPANCY_LOWER_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_LOWER_LIMIT_ENFORCED"] = 295] = "OCCUPANCY_LOWER_LIMIT_ENFORCED";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_STATE"] = 296] = "OCCUPANCY_STATE";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_UPPER_LIMIT"] = 297] = "OCCUPANCY_UPPER_LIMIT";
              PropertyIdentifier2222[PropertyIdentifier2222["OCCUPANCY_UPPER_LIMIT_ENFORCED"] = 298] = "OCCUPANCY_UPPER_LIMIT_ENFORCED";
              PropertyIdentifier2222[PropertyIdentifier2222["OPERATION_DIRECTION"] = 477] = "OPERATION_DIRECTION";
              PropertyIdentifier2222[PropertyIdentifier2222["OPERATION_EXPECTED"] = 161] = "OPERATION_EXPECTED";
              PropertyIdentifier2222[PropertyIdentifier2222["OPTIONAL"] = 80] = "OPTIONAL";
              PropertyIdentifier2222[PropertyIdentifier2222["OUT_OF_SERVICE"] = 81] = "OUT_OF_SERVICE";
              PropertyIdentifier2222[PropertyIdentifier2222["OUTPUT_UNITS"] = 82] = "OUTPUT_UNITS";
              PropertyIdentifier2222[PropertyIdentifier2222["PACKET_REORDER_TIME"] = 333] = "PACKET_REORDER_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["PASSBACK_MODE"] = 300] = "PASSBACK_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["PASSBACK_TIMEOUT"] = 301] = "PASSBACK_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["PASSENGER_ALARM"] = 478] = "PASSENGER_ALARM";
              PropertyIdentifier2222[PropertyIdentifier2222["POLARITY"] = 84] = "POLARITY";
              PropertyIdentifier2222[PropertyIdentifier2222["PORT_FILTER"] = 363] = "PORT_FILTER";
              PropertyIdentifier2222[PropertyIdentifier2222["POSITIVE_ACCESS_RULES"] = 302] = "POSITIVE_ACCESS_RULES";
              PropertyIdentifier2222[PropertyIdentifier2222["POWER"] = 384] = "POWER";
              PropertyIdentifier2222[PropertyIdentifier2222["POWER_MODE"] = 479] = "POWER_MODE";
              PropertyIdentifier2222[PropertyIdentifier2222["PRESCALE"] = 185] = "PRESCALE";
              PropertyIdentifier2222[PropertyIdentifier2222["PRESENT_VALUE"] = 85] = "PRESENT_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["PRIORITY"] = 86] = "PRIORITY";
              PropertyIdentifier2222[PropertyIdentifier2222["PRIORITY_ARRAY"] = 87] = "PRIORITY_ARRAY";
              PropertyIdentifier2222[PropertyIdentifier2222["PRIORITY_FOR_WRITING"] = 88] = "PRIORITY_FOR_WRITING";
              PropertyIdentifier2222[PropertyIdentifier2222["PROCESS_IDENTIFIER"] = 89] = "PROCESS_IDENTIFIER";
              PropertyIdentifier2222[PropertyIdentifier2222["PROCESS_IDENTIFIER_FILTER"] = 361] = "PROCESS_IDENTIFIER_FILTER";
              PropertyIdentifier2222[PropertyIdentifier2222["PROFILE_LOCATION"] = 485] = "PROFILE_LOCATION";
              PropertyIdentifier2222[PropertyIdentifier2222["PROFILE_NAME"] = 168] = "PROFILE_NAME";
              PropertyIdentifier2222[PropertyIdentifier2222["PROGRAM_CHANGE"] = 90] = "PROGRAM_CHANGE";
              PropertyIdentifier2222[PropertyIdentifier2222["PROGRAM_LOCATION"] = 91] = "PROGRAM_LOCATION";
              PropertyIdentifier2222[PropertyIdentifier2222["PROGRAM_STATE"] = 92] = "PROGRAM_STATE";
              PropertyIdentifier2222[PropertyIdentifier2222["PROPERTY_LIST"] = 371] = "PROPERTY_LIST";
              PropertyIdentifier2222[PropertyIdentifier2222["PROPORTIONAL_CONSTANT"] = 93] = "PROPORTIONAL_CONSTANT";
              PropertyIdentifier2222[PropertyIdentifier2222["PROPORTIONAL_CONSTANT_UNITS"] = 94] = "PROPORTIONAL_CONSTANT_UNITS";
              PropertyIdentifier2222[PropertyIdentifier2222["PROTOCOL_LEVEL"] = 482] = "PROTOCOL_LEVEL";
              PropertyIdentifier2222[PropertyIdentifier2222["PROTOCOL_OBJECT_TYPES_SUPPORTED"] = 96] = "PROTOCOL_OBJECT_TYPES_SUPPORTED";
              PropertyIdentifier2222[PropertyIdentifier2222["PROTOCOL_REVISION"] = 139] = "PROTOCOL_REVISION";
              PropertyIdentifier2222[PropertyIdentifier2222["PROTOCOL_SERVICES_SUPPORTED"] = 97] = "PROTOCOL_SERVICES_SUPPORTED";
              PropertyIdentifier2222[PropertyIdentifier2222["PROTOCOL_VERSION"] = 98] = "PROTOCOL_VERSION";
              PropertyIdentifier2222[PropertyIdentifier2222["PULSE_RATE"] = 186] = "PULSE_RATE";
              PropertyIdentifier2222[PropertyIdentifier2222["READ_ONLY"] = 99] = "READ_ONLY";
              PropertyIdentifier2222[PropertyIdentifier2222["REASON_FOR_DISABLE"] = 303] = "REASON_FOR_DISABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["REASON_FOR_HALT"] = 100] = "REASON_FOR_HALT";
              PropertyIdentifier2222[PropertyIdentifier2222["RECIPIENT_LIST"] = 102] = "RECIPIENT_LIST";
              PropertyIdentifier2222[PropertyIdentifier2222["RECORD_COUNT"] = 141] = "RECORD_COUNT";
              PropertyIdentifier2222[PropertyIdentifier2222["RECORDS_SINCE_NOTIFICATION"] = 140] = "RECORDS_SINCE_NOTIFICATION";
              PropertyIdentifier2222[PropertyIdentifier2222["REFERENCE_PORT"] = 483] = "REFERENCE_PORT";
              PropertyIdentifier2222[PropertyIdentifier2222["REGISTERED_CAR_CALL"] = 480] = "REGISTERED_CAR_CALL";
              PropertyIdentifier2222[PropertyIdentifier2222["RELIABILITY"] = 103] = "RELIABILITY";
              PropertyIdentifier2222[PropertyIdentifier2222["RELIABILITY_EVALUATION_INHIBIT"] = 357] = "RELIABILITY_EVALUATION_INHIBIT";
              PropertyIdentifier2222[PropertyIdentifier2222["RELINQUISH_DEFAULT"] = 104] = "RELINQUISH_DEFAULT";
              PropertyIdentifier2222[PropertyIdentifier2222["REPRESENTS"] = 491] = "REPRESENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["REQUESTED_SHED_LEVEL"] = 218] = "REQUESTED_SHED_LEVEL";
              PropertyIdentifier2222[PropertyIdentifier2222["REQUESTED_UPDATE_INTERVAL"] = 348] = "REQUESTED_UPDATE_INTERVAL";
              PropertyIdentifier2222[PropertyIdentifier2222["REQUIRED"] = 105] = "REQUIRED";
              PropertyIdentifier2222[PropertyIdentifier2222["RESOLUTION"] = 106] = "RESOLUTION";
              PropertyIdentifier2222[PropertyIdentifier2222["RESTART_NOTIFICATION_RECIPIENTS"] = 202] = "RESTART_NOTIFICATION_RECIPIENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["RESTORE_COMPLETION_TIME"] = 340] = "RESTORE_COMPLETION_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["RESTORE_PREPARATION_TIME"] = 341] = "RESTORE_PREPARATION_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["ROUTING_TABLE"] = 428] = "ROUTING_TABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["SCALE"] = 187] = "SCALE";
              PropertyIdentifier2222[PropertyIdentifier2222["SCALE_FACTOR"] = 188] = "SCALE_FACTOR";
              PropertyIdentifier2222[PropertyIdentifier2222["SCHEDULE_DEFAULT"] = 174] = "SCHEDULE_DEFAULT";
              PropertyIdentifier2222[PropertyIdentifier2222["SECURED_STATUS"] = 235] = "SECURED_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["SECURITY_PDU_TIMEOUT"] = 334] = "SECURITY_PDU_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["SECURITY_TIME_WINDOW"] = 335] = "SECURITY_TIME_WINDOW";
              PropertyIdentifier2222[PropertyIdentifier2222["SEGMENTATION_SUPPORTED"] = 107] = "SEGMENTATION_SUPPORTED";
              PropertyIdentifier2222[PropertyIdentifier2222["SERIAL_NUMBER"] = 372] = "SERIAL_NUMBER";
              PropertyIdentifier2222[PropertyIdentifier2222["SETPOINT"] = 108] = "SETPOINT";
              PropertyIdentifier2222[PropertyIdentifier2222["SETPOINT_REFERENCE"] = 109] = "SETPOINT_REFERENCE";
              PropertyIdentifier2222[PropertyIdentifier2222["SETTING"] = 162] = "SETTING";
              PropertyIdentifier2222[PropertyIdentifier2222["SHED_DURATION"] = 219] = "SHED_DURATION";
              PropertyIdentifier2222[PropertyIdentifier2222["SHED_LEVEL_DESCRIPTIONS"] = 220] = "SHED_LEVEL_DESCRIPTIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["SHED_LEVELS"] = 221] = "SHED_LEVELS";
              PropertyIdentifier2222[PropertyIdentifier2222["SILENCED"] = 163] = "SILENCED";
              PropertyIdentifier2222[PropertyIdentifier2222["SLAVE_ADDRESS_BINDING"] = 171] = "SLAVE_ADDRESS_BINDING";
              PropertyIdentifier2222[PropertyIdentifier2222["SLAVE_PROXY_ENABLE"] = 172] = "SLAVE_PROXY_ENABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["START_TIME"] = 142] = "START_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["STATE_CHANGE_VALUES"] = 396] = "STATE_CHANGE_VALUES";
              PropertyIdentifier2222[PropertyIdentifier2222["STATE_DESCRIPTION"] = 222] = "STATE_DESCRIPTION";
              PropertyIdentifier2222[PropertyIdentifier2222["STATE_TEXT"] = 110] = "STATE_TEXT";
              PropertyIdentifier2222[PropertyIdentifier2222["STATUS_FLAGS"] = 111] = "STATUS_FLAGS";
              PropertyIdentifier2222[PropertyIdentifier2222["STOP_TIME"] = 143] = "STOP_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["STOP_WHEN_FULL"] = 144] = "STOP_WHEN_FULL";
              PropertyIdentifier2222[PropertyIdentifier2222["STRIKE_COUNT"] = 391] = "STRIKE_COUNT";
              PropertyIdentifier2222[PropertyIdentifier2222["STRUCTURED_OBJECT_LIST"] = 209] = "STRUCTURED_OBJECT_LIST";
              PropertyIdentifier2222[PropertyIdentifier2222["SUBORDINATE_ANNOTATIONS"] = 210] = "SUBORDINATE_ANNOTATIONS";
              PropertyIdentifier2222[PropertyIdentifier2222["SUBORDINATE_LIST"] = 211] = "SUBORDINATE_LIST";
              PropertyIdentifier2222[PropertyIdentifier2222["SUBORDINATE_NODE_TYPES"] = 487] = "SUBORDINATE_NODE_TYPES";
              PropertyIdentifier2222[PropertyIdentifier2222["SUBORDINATE_RELATIONSHIPS"] = 489] = "SUBORDINATE_RELATIONSHIPS";
              PropertyIdentifier2222[PropertyIdentifier2222["SUBORDINATE_TAGS"] = 488] = "SUBORDINATE_TAGS";
              PropertyIdentifier2222[PropertyIdentifier2222["SUBSCRIBED_RECIPIENTS"] = 362] = "SUBSCRIBED_RECIPIENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["SUPPORTED_FORMAT_CLASSES"] = 305] = "SUPPORTED_FORMAT_CLASSES";
              PropertyIdentifier2222[PropertyIdentifier2222["SUPPORTED_FORMATS"] = 304] = "SUPPORTED_FORMATS";
              PropertyIdentifier2222[PropertyIdentifier2222["SUPPORTED_SECURITY_ALGORITHMS"] = 336] = "SUPPORTED_SECURITY_ALGORITHMS";
              PropertyIdentifier2222[PropertyIdentifier2222["SYSTEM_STATUS"] = 112] = "SYSTEM_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["TAGS"] = 486] = "TAGS";
              PropertyIdentifier2222[PropertyIdentifier2222["THREAT_AUTHORITY"] = 306] = "THREAT_AUTHORITY";
              PropertyIdentifier2222[PropertyIdentifier2222["THREAT_LEVEL"] = 307] = "THREAT_LEVEL";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_DELAY"] = 113] = "TIME_DELAY";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_DELAY_NORMAL"] = 356] = "TIME_DELAY_NORMAL";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_OF_ACTIVE_TIME_RESET"] = 114] = "TIME_OF_ACTIVE_TIME_RESET";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_OF_DEVICE_RESTART"] = 203] = "TIME_OF_DEVICE_RESTART";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_OF_STATE_COUNT_RESET"] = 115] = "TIME_OF_STATE_COUNT_RESET";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_OF_STRIKE_COUNT_RESET"] = 392] = "TIME_OF_STRIKE_COUNT_RESET";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_SYNCHRONIZATION_INTERVAL"] = 204] = "TIME_SYNCHRONIZATION_INTERVAL";
              PropertyIdentifier2222[PropertyIdentifier2222["TIME_SYNCHRONIZATION_RECIPIENTS"] = 116] = "TIME_SYNCHRONIZATION_RECIPIENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["TIMER_RUNNING"] = 397] = "TIMER_RUNNING";
              PropertyIdentifier2222[PropertyIdentifier2222["TIMER_STATE"] = 398] = "TIMER_STATE";
              PropertyIdentifier2222[PropertyIdentifier2222["TOTAL_RECORD_COUNT"] = 145] = "TOTAL_RECORD_COUNT";
              PropertyIdentifier2222[PropertyIdentifier2222["TRACE_FLAG"] = 308] = "TRACE_FLAG";
              PropertyIdentifier2222[PropertyIdentifier2222["TRACKING_VALUE"] = 164] = "TRACKING_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["TRANSACTION_NOTIFICATION_CLASS"] = 309] = "TRANSACTION_NOTIFICATION_CLASS";
              PropertyIdentifier2222[PropertyIdentifier2222["TRANSITION"] = 385] = "TRANSITION";
              PropertyIdentifier2222[PropertyIdentifier2222["TRIGGER"] = 205] = "TRIGGER";
              PropertyIdentifier2222[PropertyIdentifier2222["UNITS"] = 117] = "UNITS";
              PropertyIdentifier2222[PropertyIdentifier2222["UPDATE_INTERVAL"] = 118] = "UPDATE_INTERVAL";
              PropertyIdentifier2222[PropertyIdentifier2222["UPDATE_KEY_SET_TIMEOUT"] = 337] = "UPDATE_KEY_SET_TIMEOUT";
              PropertyIdentifier2222[PropertyIdentifier2222["UPDATE_TIME"] = 189] = "UPDATE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["USER_EXTERNAL_IDENTIFIER"] = 310] = "USER_EXTERNAL_IDENTIFIER";
              PropertyIdentifier2222[PropertyIdentifier2222["USER_INFORMATION_REFERENCE"] = 311] = "USER_INFORMATION_REFERENCE";
              PropertyIdentifier2222[PropertyIdentifier2222["USER_NAME"] = 317] = "USER_NAME";
              PropertyIdentifier2222[PropertyIdentifier2222["USER_TYPE"] = 318] = "USER_TYPE";
              PropertyIdentifier2222[PropertyIdentifier2222["USES_REMAINING"] = 319] = "USES_REMAINING";
              PropertyIdentifier2222[PropertyIdentifier2222["UTC_OFFSET"] = 119] = "UTC_OFFSET";
              PropertyIdentifier2222[PropertyIdentifier2222["UTC_TIME_SYNCHRONIZATION_RECIPIENTS"] = 206] = "UTC_TIME_SYNCHRONIZATION_RECIPIENTS";
              PropertyIdentifier2222[PropertyIdentifier2222["VALID_SAMPLES"] = 146] = "VALID_SAMPLES";
              PropertyIdentifier2222[PropertyIdentifier2222["VALUE_BEFORE_CHANGE"] = 190] = "VALUE_BEFORE_CHANGE";
              PropertyIdentifier2222[PropertyIdentifier2222["VALUE_CHANGE_TIME"] = 192] = "VALUE_CHANGE_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["VALUE_SET"] = 191] = "VALUE_SET";
              PropertyIdentifier2222[PropertyIdentifier2222["VALUE_SOURCE"] = 433] = "VALUE_SOURCE";
              PropertyIdentifier2222[PropertyIdentifier2222["VALUE_SOURCE_ARRAY"] = 434] = "VALUE_SOURCE_ARRAY";
              PropertyIdentifier2222[PropertyIdentifier2222["VARIANCE_VALUE"] = 151] = "VARIANCE_VALUE";
              PropertyIdentifier2222[PropertyIdentifier2222["VENDOR_IDENTIFIER"] = 120] = "VENDOR_IDENTIFIER";
              PropertyIdentifier2222[PropertyIdentifier2222["VENDOR_NAME"] = 121] = "VENDOR_NAME";
              PropertyIdentifier2222[PropertyIdentifier2222["VERIFICATION_TIME"] = 326] = "VERIFICATION_TIME";
              PropertyIdentifier2222[PropertyIdentifier2222["VIRTUAL_MAC_ADDRESS_TABLE"] = 429] = "VIRTUAL_MAC_ADDRESS_TABLE";
              PropertyIdentifier2222[PropertyIdentifier2222["VT_CLASSES_SUPPORTED"] = 122] = "VT_CLASSES_SUPPORTED";
              PropertyIdentifier2222[PropertyIdentifier2222["WEEKLY_SCHEDULE"] = 123] = "WEEKLY_SCHEDULE";
              PropertyIdentifier2222[PropertyIdentifier2222["WINDOW_INTERVAL"] = 147] = "WINDOW_INTERVAL";
              PropertyIdentifier2222[PropertyIdentifier2222["WINDOW_SAMPLES"] = 148] = "WINDOW_SAMPLES";
              PropertyIdentifier2222[PropertyIdentifier2222["WRITE_STATUS"] = 370] = "WRITE_STATUS";
              PropertyIdentifier2222[PropertyIdentifier2222["ZONE_FROM"] = 320] = "ZONE_FROM";
              PropertyIdentifier2222[PropertyIdentifier2222["ZONE_MEMBERS"] = 165] = "ZONE_MEMBERS";
              PropertyIdentifier2222[PropertyIdentifier2222["ZONE_TO"] = 321] = "ZONE_TO";
              return PropertyIdentifier2222;
            })(PropertyIdentifier222 || {});
            var ProtocolLevel222 = /* @__PURE__ */ ((ProtocolLevel2222) => {
              ProtocolLevel2222[ProtocolLevel2222["PHYSICAL"] = 0] = "PHYSICAL";
              ProtocolLevel2222[ProtocolLevel2222["PROTOCOL"] = 1] = "PROTOCOL";
              ProtocolLevel2222[ProtocolLevel2222["BACNET_APPLICATION"] = 2] = "BACNET_APPLICATION";
              ProtocolLevel2222[ProtocolLevel2222["NON_BACNET_APPLICATION"] = 3] = "NON_BACNET_APPLICATION";
              return ProtocolLevel2222;
            })(ProtocolLevel222 || {});
            var Relationship222 = /* @__PURE__ */ ((Relationship2222) => {
              Relationship2222[Relationship2222["UNKNOWN"] = 0] = "UNKNOWN";
              Relationship2222[Relationship2222["DEFAULT"] = 1] = "DEFAULT";
              Relationship2222[Relationship2222["CONTAINS"] = 2] = "CONTAINS";
              Relationship2222[Relationship2222["CONTAINED_BY"] = 3] = "CONTAINED_BY";
              Relationship2222[Relationship2222["USES"] = 4] = "USES";
              Relationship2222[Relationship2222["USED_BY"] = 5] = "USED_BY";
              Relationship2222[Relationship2222["COMMANDS"] = 6] = "COMMANDS";
              Relationship2222[Relationship2222["COMMANDED_BY"] = 7] = "COMMANDED_BY";
              Relationship2222[Relationship2222["ADJUSTS"] = 8] = "ADJUSTS";
              Relationship2222[Relationship2222["ADJUSTED_BY"] = 9] = "ADJUSTED_BY";
              Relationship2222[Relationship2222["INGRESS"] = 10] = "INGRESS";
              Relationship2222[Relationship2222["EGRESS"] = 11] = "EGRESS";
              Relationship2222[Relationship2222["SUPPLIES_AIR"] = 12] = "SUPPLIES_AIR";
              Relationship2222[Relationship2222["RECEIVES_AIR"] = 13] = "RECEIVES_AIR";
              Relationship2222[Relationship2222["SUPPLIES_HOT_AIR"] = 14] = "SUPPLIES_HOT_AIR";
              Relationship2222[Relationship2222["RECEIVES_HOT_AIR"] = 15] = "RECEIVES_HOT_AIR";
              Relationship2222[Relationship2222["SUPPLIES_COOL_AIR"] = 16] = "SUPPLIES_COOL_AIR";
              Relationship2222[Relationship2222["RECEIVES_COOL_AIR"] = 17] = "RECEIVES_COOL_AIR";
              Relationship2222[Relationship2222["SUPPLIES_POWER"] = 18] = "SUPPLIES_POWER";
              Relationship2222[Relationship2222["RECEIVES_POWER"] = 19] = "RECEIVES_POWER";
              Relationship2222[Relationship2222["SUPPLIES_GAS"] = 20] = "SUPPLIES_GAS";
              Relationship2222[Relationship2222["RECEIVES_GAS"] = 21] = "RECEIVES_GAS";
              Relationship2222[Relationship2222["SUPPLIES_WATER"] = 22] = "SUPPLIES_WATER";
              Relationship2222[Relationship2222["RECEIVES_WATER"] = 23] = "RECEIVES_WATER";
              Relationship2222[Relationship2222["SUPPLIES_HOT_WATER"] = 24] = "SUPPLIES_HOT_WATER";
              Relationship2222[Relationship2222["RECEIVES_HOT_WATER"] = 25] = "RECEIVES_HOT_WATER";
              Relationship2222[Relationship2222["SUPPLIES_COOL_WATER"] = 26] = "SUPPLIES_COOL_WATER";
              Relationship2222[Relationship2222["RECEIVES_COOL_WATER"] = 27] = "RECEIVES_COOL_WATER";
              Relationship2222[Relationship2222["SUPPLIES_STEAM"] = 28] = "SUPPLIES_STEAM";
              Relationship2222[Relationship2222["RECEIVES_STEAM"] = 29] = "RECEIVES_STEAM";
              return Relationship2222;
            })(Relationship222 || {});
            var Reliability222 = /* @__PURE__ */ ((Reliability2222) => {
              Reliability2222[Reliability2222["NO_FAULT_DETECTED"] = 0] = "NO_FAULT_DETECTED";
              Reliability2222[Reliability2222["NO_SENSOR"] = 1] = "NO_SENSOR";
              Reliability2222[Reliability2222["OVER_RANGE"] = 2] = "OVER_RANGE";
              Reliability2222[Reliability2222["UNDER_RANGE"] = 3] = "UNDER_RANGE";
              Reliability2222[Reliability2222["OPEN_LOOP"] = 4] = "OPEN_LOOP";
              Reliability2222[Reliability2222["SHORTED_LOOP"] = 5] = "SHORTED_LOOP";
              Reliability2222[Reliability2222["NO_OUTPUT"] = 6] = "NO_OUTPUT";
              Reliability2222[Reliability2222["UNRELIABLE_OTHER"] = 7] = "UNRELIABLE_OTHER";
              Reliability2222[Reliability2222["PROCESS_ERROR"] = 8] = "PROCESS_ERROR";
              Reliability2222[Reliability2222["MULTI_STATE_FAULT"] = 9] = "MULTI_STATE_FAULT";
              Reliability2222[Reliability2222["CONFIGURATION_ERROR"] = 10] = "CONFIGURATION_ERROR";
              Reliability2222[Reliability2222["COMMUNICATION_FAILURE"] = 12] = "COMMUNICATION_FAILURE";
              Reliability2222[Reliability2222["MEMBER_FAULT"] = 13] = "MEMBER_FAULT";
              Reliability2222[Reliability2222["MONITORED_OBJECT_FAULT"] = 14] = "MONITORED_OBJECT_FAULT";
              Reliability2222[Reliability2222["TRIPPED"] = 15] = "TRIPPED";
              Reliability2222[Reliability2222["LAMP_FAILURE"] = 16] = "LAMP_FAILURE";
              Reliability2222[Reliability2222["ACTIVATION_FAILURE"] = 17] = "ACTIVATION_FAILURE";
              Reliability2222[Reliability2222["RENEW_DHCP_FAILURE"] = 18] = "RENEW_DHCP_FAILURE";
              Reliability2222[Reliability2222["RENEW_FD_REGISTRATION_FAILURE"] = 19] = "RENEW_FD_REGISTRATION_FAILURE";
              Reliability2222[Reliability2222["RESTART_AUTO_NEGOTIATION_FAILURE"] = 20] = "RESTART_AUTO_NEGOTIATION_FAILURE";
              Reliability2222[Reliability2222["RESTART_FAILURE"] = 21] = "RESTART_FAILURE";
              Reliability2222[Reliability2222["PROPRIETARY_COMMAND_FAILURE"] = 22] = "PROPRIETARY_COMMAND_FAILURE";
              Reliability2222[Reliability2222["FAULTS_LISTED"] = 23] = "FAULTS_LISTED";
              Reliability2222[Reliability2222["REFERENCED_OBJECT_FAULT"] = 24] = "REFERENCED_OBJECT_FAULT";
              return Reliability2222;
            })(Reliability222 || {});
            var RestartReason222 = /* @__PURE__ */ ((RestartReason2222) => {
              RestartReason2222[RestartReason2222["UNKNOWN"] = 0] = "UNKNOWN";
              RestartReason2222[RestartReason2222["COLDSTART"] = 1] = "COLDSTART";
              RestartReason2222[RestartReason2222["WARMSTART"] = 2] = "WARMSTART";
              RestartReason2222[RestartReason2222["DETECTED_POWER_LOST"] = 3] = "DETECTED_POWER_LOST";
              RestartReason2222[RestartReason2222["DETECTED_POWERED_OFF"] = 4] = "DETECTED_POWERED_OFF";
              RestartReason2222[RestartReason2222["HARDWARE_WATCHDOG"] = 5] = "HARDWARE_WATCHDOG";
              RestartReason2222[RestartReason2222["SOFTWARE_WATCHDOG"] = 6] = "SOFTWARE_WATCHDOG";
              RestartReason2222[RestartReason2222["SUSPENDED"] = 7] = "SUSPENDED";
              RestartReason2222[RestartReason2222["ACTIVATE_CHANGES"] = 8] = "ACTIVATE_CHANGES";
              return RestartReason2222;
            })(RestartReason222 || {});
            var SecurityLevel222 = /* @__PURE__ */ ((SecurityLevel2222) => {
              SecurityLevel2222[SecurityLevel2222["INCAPABLE"] = 0] = "INCAPABLE";
              SecurityLevel2222[SecurityLevel2222["PLAIN"] = 1] = "PLAIN";
              SecurityLevel2222[SecurityLevel2222["SIGNED"] = 2] = "SIGNED";
              SecurityLevel2222[SecurityLevel2222["ENCRYPTED"] = 3] = "ENCRYPTED";
              SecurityLevel2222[SecurityLevel2222["SIGNED_END_TO_END"] = 4] = "SIGNED_END_TO_END";
              SecurityLevel2222[SecurityLevel2222["ENCRYPTED_END_TO_END"] = 5] = "ENCRYPTED_END_TO_END";
              return SecurityLevel2222;
            })(SecurityLevel222 || {});
            var SecurityPolicy222 = /* @__PURE__ */ ((SecurityPolicy2222) => {
              SecurityPolicy2222[SecurityPolicy2222["PLAIN_NON_TRUSTED"] = 0] = "PLAIN_NON_TRUSTED";
              SecurityPolicy2222[SecurityPolicy2222["PLAIN_TRUSTED"] = 1] = "PLAIN_TRUSTED";
              SecurityPolicy2222[SecurityPolicy2222["SIGNED_TRUSTED"] = 2] = "SIGNED_TRUSTED";
              SecurityPolicy2222[SecurityPolicy2222["ENCRYPTED_TRUSTED"] = 3] = "ENCRYPTED_TRUSTED";
              return SecurityPolicy2222;
            })(SecurityPolicy222 || {});
            var Segmentation222 = /* @__PURE__ */ ((Segmentation2222) => {
              Segmentation2222[Segmentation2222["SEGMENTED_BOTH"] = 0] = "SEGMENTED_BOTH";
              Segmentation2222[Segmentation2222["SEGMENTED_TRANSMIT"] = 1] = "SEGMENTED_TRANSMIT";
              Segmentation2222[Segmentation2222["SEGMENTED_RECEIVE"] = 2] = "SEGMENTED_RECEIVE";
              Segmentation2222[Segmentation2222["NO_SEGMENTATION"] = 3] = "NO_SEGMENTATION";
              return Segmentation2222;
            })(Segmentation222 || {});
            var ShedState222 = /* @__PURE__ */ ((ShedState2222) => {
              ShedState2222[ShedState2222["SHED_INACTIVE"] = 0] = "SHED_INACTIVE";
              ShedState2222[ShedState2222["SHED_REQUEST_PENDING"] = 1] = "SHED_REQUEST_PENDING";
              ShedState2222[ShedState2222["SHED_COMPLIANT"] = 2] = "SHED_COMPLIANT";
              ShedState2222[ShedState2222["SHED_NON_COMPLIANT"] = 3] = "SHED_NON_COMPLIANT";
              return ShedState2222;
            })(ShedState222 || {});
            var SilencedState222 = /* @__PURE__ */ ((SilencedState2222) => {
              SilencedState2222[SilencedState2222["UNSILENCED"] = 0] = "UNSILENCED";
              SilencedState2222[SilencedState2222["AUDIBLE_SILENCED"] = 1] = "AUDIBLE_SILENCED";
              SilencedState2222[SilencedState2222["VISIBLE_SILENCED"] = 2] = "VISIBLE_SILENCED";
              SilencedState2222[SilencedState2222["ALL_SILENCED"] = 3] = "ALL_SILENCED";
              return SilencedState2222;
            })(SilencedState222 || {});
            var TimerState222 = /* @__PURE__ */ ((TimerState2222) => {
              TimerState2222[TimerState2222["IDLE"] = 0] = "IDLE";
              TimerState2222[TimerState2222["RUNNING"] = 1] = "RUNNING";
              TimerState2222[TimerState2222["EXPIRED"] = 2] = "EXPIRED";
              return TimerState2222;
            })(TimerState222 || {});
            var TimerTransition222 = /* @__PURE__ */ ((TimerTransition2222) => {
              TimerTransition2222[TimerTransition2222["NONE"] = 0] = "NONE";
              TimerTransition2222[TimerTransition2222["IDLE_TO_RUNNING"] = 1] = "IDLE_TO_RUNNING";
              TimerTransition2222[TimerTransition2222["RUNNING_TO_IDLE"] = 2] = "RUNNING_TO_IDLE";
              TimerTransition2222[TimerTransition2222["RUNNING_TO_RUNNING"] = 3] = "RUNNING_TO_RUNNING";
              TimerTransition2222[TimerTransition2222["RUNNING_TO_EXPIRED"] = 4] = "RUNNING_TO_EXPIRED";
              TimerTransition2222[TimerTransition2222["FORCED_TO_EXPIRED"] = 5] = "FORCED_TO_EXPIRED";
              TimerTransition2222[TimerTransition2222["EXPIRED_TO_IDLE"] = 6] = "EXPIRED_TO_IDLE";
              TimerTransition2222[TimerTransition2222["EXPIRED_TO_RUNNING"] = 7] = "EXPIRED_TO_RUNNING";
              return TimerTransition2222;
            })(TimerTransition222 || {});
            var VTClass222 = /* @__PURE__ */ ((VTClass2222) => {
              VTClass2222[VTClass2222["DEFAULT_TERMINAL"] = 0] = "DEFAULT_TERMINAL";
              VTClass2222[VTClass2222["ANSI_X3_64"] = 1] = "ANSI_X3_64";
              VTClass2222[VTClass2222["DEC_VT52"] = 2] = "DEC_VT52";
              VTClass2222[VTClass2222["DEC_VT100"] = 3] = "DEC_VT100";
              VTClass2222[VTClass2222["DEC_VT220"] = 4] = "DEC_VT220";
              VTClass2222[VTClass2222["HP_700_94"] = 5] = "HP_700_94";
              VTClass2222[VTClass2222["IBM_3130"] = 6] = "IBM_3130";
              return VTClass2222;
            })(VTClass222 || {});
            var WriteStatus222 = /* @__PURE__ */ ((WriteStatus2222) => {
              WriteStatus2222[WriteStatus2222["IDLE"] = 0] = "IDLE";
              WriteStatus2222[WriteStatus2222["IN_PROGRESS"] = 1] = "IN_PROGRESS";
              WriteStatus2222[WriteStatus2222["SUCCESSFUL"] = 2] = "SUCCESSFUL";
              WriteStatus2222[WriteStatus2222["FAILED"] = 3] = "FAILED";
              return WriteStatus2222;
            })(WriteStatus222 || {});
            var DaysOfWeek222 = /* @__PURE__ */ ((DaysOfWeek2222) => {
              DaysOfWeek2222[DaysOfWeek2222["MONDAY"] = 0] = "MONDAY";
              DaysOfWeek2222[DaysOfWeek2222["TUESDAY"] = 1] = "TUESDAY";
              DaysOfWeek2222[DaysOfWeek2222["WEDNESDAY"] = 2] = "WEDNESDAY";
              DaysOfWeek2222[DaysOfWeek2222["THURSDAY"] = 3] = "THURSDAY";
              DaysOfWeek2222[DaysOfWeek2222["FRIDAY"] = 4] = "FRIDAY";
              DaysOfWeek2222[DaysOfWeek2222["SATURDAY"] = 5] = "SATURDAY";
              DaysOfWeek2222[DaysOfWeek2222["SUNDAY"] = 6] = "SUNDAY";
              return DaysOfWeek2222;
            })(DaysOfWeek222 || {});
            var EventTransitionBits222 = /* @__PURE__ */ ((EventTransitionBits2222) => {
              EventTransitionBits2222[EventTransitionBits2222["TO_OFFNORMAL"] = 0] = "TO_OFFNORMAL";
              EventTransitionBits2222[EventTransitionBits2222["TO_FAULT"] = 1] = "TO_FAULT";
              EventTransitionBits2222[EventTransitionBits2222["TO_NORMAL"] = 2] = "TO_NORMAL";
              return EventTransitionBits2222;
            })(EventTransitionBits222 || {});
            var LimitEnable222 = /* @__PURE__ */ ((LimitEnable2222) => {
              LimitEnable2222[LimitEnable2222["LOW_LIMIT_ENABLE"] = 0] = "LOW_LIMIT_ENABLE";
              LimitEnable2222[LimitEnable2222["HIGH_LIMIT_ENABLE"] = 1] = "HIGH_LIMIT_ENABLE";
              return LimitEnable2222;
            })(LimitEnable222 || {});
            var LogStatus222 = /* @__PURE__ */ ((LogStatus2222) => {
              LogStatus2222[LogStatus2222["LOG_DISABLED"] = 0] = "LOG_DISABLED";
              LogStatus2222[LogStatus2222["BUFFER_PURGED"] = 1] = "BUFFER_PURGED";
              LogStatus2222[LogStatus2222["LOG_INTERRUPTED"] = 2] = "LOG_INTERRUPTED";
              return LogStatus2222;
            })(LogStatus222 || {});
            var ObjectTypesSupported222 = /* @__PURE__ */ ((ObjectTypesSupported2222) => {
              ObjectTypesSupported2222[ObjectTypesSupported2222["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["BINARY_INPUT"] = 3] = "BINARY_INPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["BINARY_VALUE"] = 5] = "BINARY_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["CALENDAR"] = 6] = "CALENDAR";
              ObjectTypesSupported2222[ObjectTypesSupported2222["COMMAND"] = 7] = "COMMAND";
              ObjectTypesSupported2222[ObjectTypesSupported2222["DEVICE"] = 8] = "DEVICE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["FILE"] = 10] = "FILE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["GROUP"] = 11] = "GROUP";
              ObjectTypesSupported2222[ObjectTypesSupported2222["LOOP"] = 12] = "LOOP";
              ObjectTypesSupported2222[ObjectTypesSupported2222["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
              ObjectTypesSupported2222[ObjectTypesSupported2222["PROGRAM"] = 16] = "PROGRAM";
              ObjectTypesSupported2222[ObjectTypesSupported2222["SCHEDULE"] = 17] = "SCHEDULE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["AVERAGING"] = 18] = "AVERAGING";
              ObjectTypesSupported2222[ObjectTypesSupported2222["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["TREND_LOG"] = 20] = "TREND_LOG";
              ObjectTypesSupported2222[ObjectTypesSupported2222["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ACCUMULATOR"] = 23] = "ACCUMULATOR";
              ObjectTypesSupported2222[ObjectTypesSupported2222["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
              ObjectTypesSupported2222[ObjectTypesSupported2222["EVENT_LOG"] = 25] = "EVENT_LOG";
              ObjectTypesSupported2222[ObjectTypesSupported2222["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
              ObjectTypesSupported2222[ObjectTypesSupported2222["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
              ObjectTypesSupported2222[ObjectTypesSupported2222["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
              ObjectTypesSupported2222[ObjectTypesSupported2222["TIMER"] = 31] = "TIMER";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ACCESS_POINT"] = 33] = "ACCESS_POINT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ACCESS_USER"] = 35] = "ACCESS_USER";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
              ObjectTypesSupported2222[ObjectTypesSupported2222["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["DATE_VALUE"] = 42] = "DATE_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["TIME_VALUE"] = 50] = "TIME_VALUE";
              ObjectTypesSupported2222[ObjectTypesSupported2222["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["CHANNEL"] = 53] = "CHANNEL";
              ObjectTypesSupported2222[ObjectTypesSupported2222["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["NETWORK_PORT"] = 56] = "NETWORK_PORT";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
              ObjectTypesSupported2222[ObjectTypesSupported2222["ESCALATOR"] = 58] = "ESCALATOR";
              ObjectTypesSupported2222[ObjectTypesSupported2222["LIFT"] = 59] = "LIFT";
              return ObjectTypesSupported2222;
            })(ObjectTypesSupported222 || {});
            var ResultFlags222 = /* @__PURE__ */ ((ResultFlags2222) => {
              ResultFlags2222[ResultFlags2222["FIRST_ITEM"] = 0] = "FIRST_ITEM";
              ResultFlags2222[ResultFlags2222["LAST_ITEM"] = 1] = "LAST_ITEM";
              ResultFlags2222[ResultFlags2222["MORE_ITEMS"] = 2] = "MORE_ITEMS";
              return ResultFlags2222;
            })(ResultFlags222 || {});
            var ServicesSupported222 = /* @__PURE__ */ ((ServicesSupported2222) => {
              ServicesSupported2222[ServicesSupported2222["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
              ServicesSupported2222[ServicesSupported2222["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
              ServicesSupported2222[ServicesSupported2222["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
              ServicesSupported2222[ServicesSupported2222["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
              ServicesSupported2222[ServicesSupported2222["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
              ServicesSupported2222[ServicesSupported2222["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
              ServicesSupported2222[ServicesSupported2222["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
              ServicesSupported2222[ServicesSupported2222["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
              ServicesSupported2222[ServicesSupported2222["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
              ServicesSupported2222[ServicesSupported2222["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
              ServicesSupported2222[ServicesSupported2222["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
              ServicesSupported2222[ServicesSupported2222["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
              ServicesSupported2222[ServicesSupported2222["READ_PROPERTY"] = 12] = "READ_PROPERTY";
              ServicesSupported2222[ServicesSupported2222["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
              ServicesSupported2222[ServicesSupported2222["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
              ServicesSupported2222[ServicesSupported2222["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
              ServicesSupported2222[ServicesSupported2222["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
              ServicesSupported2222[ServicesSupported2222["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
              ServicesSupported2222[ServicesSupported2222["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
              ServicesSupported2222[ServicesSupported2222["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
              ServicesSupported2222[ServicesSupported2222["VT_OPEN"] = 21] = "VT_OPEN";
              ServicesSupported2222[ServicesSupported2222["VT_CLOSE"] = 22] = "VT_CLOSE";
              ServicesSupported2222[ServicesSupported2222["VT_DATA"] = 23] = "VT_DATA";
              ServicesSupported2222[ServicesSupported2222["READ_PROPERTY_CONDITIONAL"] = 13] = "READ_PROPERTY_CONDITIONAL";
              ServicesSupported2222[ServicesSupported2222["AUTHENTICATE"] = 24] = "AUTHENTICATE";
              ServicesSupported2222[ServicesSupported2222["REQUEST_KEY"] = 25] = "REQUEST_KEY";
              ServicesSupported2222[ServicesSupported2222["I_AM"] = 26] = "I_AM";
              ServicesSupported2222[ServicesSupported2222["I_HAVE"] = 27] = "I_HAVE";
              ServicesSupported2222[ServicesSupported2222["UNCONFIRMED_COV_NOTIFICATION"] = 28] = "UNCONFIRMED_COV_NOTIFICATION";
              ServicesSupported2222[ServicesSupported2222["UNCONFIRMED_EVENT_NOTIFICATION"] = 29] = "UNCONFIRMED_EVENT_NOTIFICATION";
              ServicesSupported2222[ServicesSupported2222["UNCONFIRMED_PRIVATE_TRANSFER"] = 30] = "UNCONFIRMED_PRIVATE_TRANSFER";
              ServicesSupported2222[ServicesSupported2222["UNCONFIRMED_TEXT_MESSAGE"] = 31] = "UNCONFIRMED_TEXT_MESSAGE";
              ServicesSupported2222[ServicesSupported2222["TIME_SYNCHRONIZATION"] = 32] = "TIME_SYNCHRONIZATION";
              ServicesSupported2222[ServicesSupported2222["WHO_HAS"] = 33] = "WHO_HAS";
              ServicesSupported2222[ServicesSupported2222["WHO_IS"] = 34] = "WHO_IS";
              ServicesSupported2222[ServicesSupported2222["READ_RANGE"] = 35] = "READ_RANGE";
              ServicesSupported2222[ServicesSupported2222["UTC_TIME_SYNCHRONIZATION"] = 36] = "UTC_TIME_SYNCHRONIZATION";
              ServicesSupported2222[ServicesSupported2222["LIFE_SAFETY_OPERATION"] = 37] = "LIFE_SAFETY_OPERATION";
              ServicesSupported2222[ServicesSupported2222["SUBSCRIBE_COV_PROPERTY"] = 38] = "SUBSCRIBE_COV_PROPERTY";
              ServicesSupported2222[ServicesSupported2222["GET_EVENT_INFORMATION"] = 39] = "GET_EVENT_INFORMATION";
              ServicesSupported2222[ServicesSupported2222["WRITE_GROUP"] = 40] = "WRITE_GROUP";
              ServicesSupported2222[ServicesSupported2222["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 41] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
              ServicesSupported2222[ServicesSupported2222["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 42] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
              ServicesSupported2222[ServicesSupported2222["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 43] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
              return ServicesSupported2222;
            })(ServicesSupported222 || {});
            var StatusFlags222 = /* @__PURE__ */ ((StatusFlags2222) => {
              StatusFlags2222[StatusFlags2222["IN_ALARM"] = 0] = "IN_ALARM";
              StatusFlags2222[StatusFlags2222["FAULT"] = 1] = "FAULT";
              StatusFlags2222[StatusFlags2222["OVERRIDDEN"] = 2] = "OVERRIDDEN";
              StatusFlags2222[StatusFlags2222["OUT_OF_SERVICE"] = 3] = "OUT_OF_SERVICE";
              return StatusFlags2222;
            })(StatusFlags222 || {});
            var ApplicationTag222 = /* @__PURE__ */ ((ApplicationTag2222) => {
              ApplicationTag2222[ApplicationTag2222["NULL"] = 0] = "NULL";
              ApplicationTag2222[ApplicationTag2222["BOOLEAN"] = 1] = "BOOLEAN";
              ApplicationTag2222[ApplicationTag2222["UNSIGNED_INTEGER"] = 2] = "UNSIGNED_INTEGER";
              ApplicationTag2222[ApplicationTag2222["SIGNED_INTEGER"] = 3] = "SIGNED_INTEGER";
              ApplicationTag2222[ApplicationTag2222["REAL"] = 4] = "REAL";
              ApplicationTag2222[ApplicationTag2222["DOUBLE"] = 5] = "DOUBLE";
              ApplicationTag2222[ApplicationTag2222["OCTET_STRING"] = 6] = "OCTET_STRING";
              ApplicationTag2222[ApplicationTag2222["CHARACTER_STRING"] = 7] = "CHARACTER_STRING";
              ApplicationTag2222[ApplicationTag2222["BIT_STRING"] = 8] = "BIT_STRING";
              ApplicationTag2222[ApplicationTag2222["ENUMERATED"] = 9] = "ENUMERATED";
              ApplicationTag2222[ApplicationTag2222["DATE"] = 10] = "DATE";
              ApplicationTag2222[ApplicationTag2222["TIME"] = 11] = "TIME";
              ApplicationTag2222[ApplicationTag2222["OBJECTIDENTIFIER"] = 12] = "OBJECTIDENTIFIER";
              ApplicationTag2222[ApplicationTag2222["EMPTYLIST"] = 100] = "EMPTYLIST";
              ApplicationTag2222[ApplicationTag2222["WEEKNDAY"] = 101] = "WEEKNDAY";
              ApplicationTag2222[ApplicationTag2222["DATERANGE"] = 102] = "DATERANGE";
              ApplicationTag2222[ApplicationTag2222["DATETIME"] = 103] = "DATETIME";
              ApplicationTag2222[ApplicationTag2222["TIMESTAMP"] = 104] = "TIMESTAMP";
              ApplicationTag2222[ApplicationTag2222["ERROR"] = 105] = "ERROR";
              ApplicationTag2222[ApplicationTag2222["DEVICE_OBJECT_PROPERTY_REFERENCE"] = 106] = "DEVICE_OBJECT_PROPERTY_REFERENCE";
              ApplicationTag2222[ApplicationTag2222["DEVICE_OBJECT_REFERENCE"] = 107] = "DEVICE_OBJECT_REFERENCE";
              ApplicationTag2222[ApplicationTag2222["OBJECT_PROPERTY_REFERENCE"] = 108] = "OBJECT_PROPERTY_REFERENCE";
              ApplicationTag2222[ApplicationTag2222["DESTINATION"] = 109] = "DESTINATION";
              ApplicationTag2222[ApplicationTag2222["RECIPIENT"] = 110] = "RECIPIENT";
              ApplicationTag2222[ApplicationTag2222["COV_SUBSCRIPTION"] = 111] = "COV_SUBSCRIPTION";
              ApplicationTag2222[ApplicationTag2222["CALENDAR_ENTRY"] = 112] = "CALENDAR_ENTRY";
              ApplicationTag2222[ApplicationTag2222["WEEKLY_SCHEDULE"] = 113] = "WEEKLY_SCHEDULE";
              ApplicationTag2222[ApplicationTag2222["SPECIAL_EVENT"] = 114] = "SPECIAL_EVENT";
              ApplicationTag2222[ApplicationTag2222["READ_ACCESS_SPECIFICATION"] = 115] = "READ_ACCESS_SPECIFICATION";
              ApplicationTag2222[ApplicationTag2222["READ_ACCESS_RESULT"] = 116] = "READ_ACCESS_RESULT";
              ApplicationTag2222[ApplicationTag2222["LIGHTING_COMMAND"] = 117] = "LIGHTING_COMMAND";
              ApplicationTag2222[ApplicationTag2222["CONTEXT_SPECIFIC_DECODED"] = 118] = "CONTEXT_SPECIFIC_DECODED";
              ApplicationTag2222[ApplicationTag2222["CONTEXT_SPECIFIC_ENCODED"] = 119] = "CONTEXT_SPECIFIC_ENCODED";
              ApplicationTag2222[ApplicationTag2222["LOG_RECORD"] = 120] = "LOG_RECORD";
              return ApplicationTag2222;
            })(ApplicationTag222 || {});
            var ApplicationTagName222 = invertEnum222(
              ApplicationTag222
            );
            var BvlcResultFormat222 = /* @__PURE__ */ ((BvlcResultFormat2222) => {
              BvlcResultFormat2222[BvlcResultFormat2222["SUCCESSFUL_COMPLETION"] = 0] = "SUCCESSFUL_COMPLETION";
              BvlcResultFormat2222[BvlcResultFormat2222["WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 16] = "WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK";
              BvlcResultFormat2222[BvlcResultFormat2222["READ_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 32] = "READ_BROADCAST_DISTRIBUTION_TABLE_NAK";
              BvlcResultFormat2222[BvlcResultFormat2222["REGISTER_FOREIGN_DEVICE_NAK"] = 48] = "REGISTER_FOREIGN_DEVICE_NAK";
              BvlcResultFormat2222[BvlcResultFormat2222["READ_FOREIGN_DEVICE_TABLE_NAK"] = 64] = "READ_FOREIGN_DEVICE_TABLE_NAK";
              BvlcResultFormat2222[BvlcResultFormat2222["DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK"] = 80] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK";
              BvlcResultFormat2222[BvlcResultFormat2222["DISTRIBUTE_BROADCAST_TO_NETWORK_NAK"] = 96] = "DISTRIBUTE_BROADCAST_TO_NETWORK_NAK";
              return BvlcResultFormat2222;
            })(BvlcResultFormat222 || {});
            var BvlcResultPurpose222 = /* @__PURE__ */ ((BvlcResultPurpose2222) => {
              BvlcResultPurpose2222[BvlcResultPurpose2222["BVLC_RESULT"] = 0] = "BVLC_RESULT";
              BvlcResultPurpose2222[BvlcResultPurpose2222["WRITE_BROADCAST_DISTRIBUTION_TABLE"] = 1] = "WRITE_BROADCAST_DISTRIBUTION_TABLE";
              BvlcResultPurpose2222[BvlcResultPurpose2222["READ_BROADCAST_DISTRIBUTION_TABLE"] = 2] = "READ_BROADCAST_DISTRIBUTION_TABLE";
              BvlcResultPurpose2222[BvlcResultPurpose2222["READ_BROADCAST_DISTRIBUTION_TABLE_ACK"] = 3] = "READ_BROADCAST_DISTRIBUTION_TABLE_ACK";
              BvlcResultPurpose2222[BvlcResultPurpose2222["FORWARDED_NPDU"] = 4] = "FORWARDED_NPDU";
              BvlcResultPurpose2222[BvlcResultPurpose2222["REGISTER_FOREIGN_DEVICE"] = 5] = "REGISTER_FOREIGN_DEVICE";
              BvlcResultPurpose2222[BvlcResultPurpose2222["READ_FOREIGN_DEVICE_TABLE"] = 6] = "READ_FOREIGN_DEVICE_TABLE";
              BvlcResultPurpose2222[BvlcResultPurpose2222["READ_FOREIGN_DEVICE_TABLE_ACK"] = 7] = "READ_FOREIGN_DEVICE_TABLE_ACK";
              BvlcResultPurpose2222[BvlcResultPurpose2222["DELETE_FOREIGN_DEVICE_TABLE_ENTRY"] = 8] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY";
              BvlcResultPurpose2222[BvlcResultPurpose2222["DISTRIBUTE_BROADCAST_TO_NETWORK"] = 9] = "DISTRIBUTE_BROADCAST_TO_NETWORK";
              BvlcResultPurpose2222[BvlcResultPurpose2222["ORIGINAL_UNICAST_NPDU"] = 10] = "ORIGINAL_UNICAST_NPDU";
              BvlcResultPurpose2222[BvlcResultPurpose2222["ORIGINAL_BROADCAST_NPDU"] = 11] = "ORIGINAL_BROADCAST_NPDU";
              BvlcResultPurpose2222[BvlcResultPurpose2222["SECURE_BVLL"] = 12] = "SECURE_BVLL";
              return BvlcResultPurpose2222;
            })(BvlcResultPurpose222 || {});
            var CharacterStringEncoding222 = /* @__PURE__ */ ((CharacterStringEncoding2222) => {
              CharacterStringEncoding2222[CharacterStringEncoding2222["UTF_8"] = 0] = "UTF_8";
              CharacterStringEncoding2222[CharacterStringEncoding2222["MICROSOFT_DBCS"] = 1] = "MICROSOFT_DBCS";
              CharacterStringEncoding2222[CharacterStringEncoding2222["JIS_X_0208"] = 2] = "JIS_X_0208";
              CharacterStringEncoding2222[CharacterStringEncoding2222["UCS_4"] = 3] = "UCS_4";
              CharacterStringEncoding2222[CharacterStringEncoding2222["UCS_2"] = 4] = "UCS_2";
              CharacterStringEncoding2222[CharacterStringEncoding2222["ISO_8859_1"] = 5] = "ISO_8859_1";
              return CharacterStringEncoding2222;
            })(CharacterStringEncoding222 || {});
            var CovType222 = /* @__PURE__ */ ((CovType2222) => {
              CovType2222[CovType2222["REAL"] = 0] = "REAL";
              CovType2222[CovType2222["BIT_STRING"] = 1] = "BIT_STRING";
              return CovType2222;
            })(CovType222 || {});
            var EnableDisable222 = /* @__PURE__ */ ((EnableDisable2222) => {
              EnableDisable2222[EnableDisable2222["ENABLE"] = 0] = "ENABLE";
              EnableDisable2222[EnableDisable2222["DISABLE"] = 1] = "DISABLE";
              EnableDisable2222[EnableDisable2222["DISABLE_INITIATION"] = 2] = "DISABLE_INITIATION";
              return EnableDisable2222;
            })(EnableDisable222 || {});
            var MaxApduLengthAccepted222 = /* @__PURE__ */ ((MaxApduLengthAccepted2222) => {
              MaxApduLengthAccepted2222[MaxApduLengthAccepted2222["OCTETS_50"] = 0] = "OCTETS_50";
              MaxApduLengthAccepted2222[MaxApduLengthAccepted2222["OCTETS_128"] = 1] = "OCTETS_128";
              MaxApduLengthAccepted2222[MaxApduLengthAccepted2222["OCTETS_206"] = 2] = "OCTETS_206";
              MaxApduLengthAccepted2222[MaxApduLengthAccepted2222["OCTETS_480"] = 3] = "OCTETS_480";
              MaxApduLengthAccepted2222[MaxApduLengthAccepted2222["OCTETS_1024"] = 4] = "OCTETS_1024";
              MaxApduLengthAccepted2222[MaxApduLengthAccepted2222["OCTETS_1476"] = 5] = "OCTETS_1476";
              return MaxApduLengthAccepted2222;
            })(MaxApduLengthAccepted222 || {});
            var MaxSegmentsAccepted222 = /* @__PURE__ */ ((MaxSegmentsAccepted2222) => {
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_0"] = 0] = "SEGMENTS_0";
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_2"] = 16] = "SEGMENTS_2";
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_4"] = 32] = "SEGMENTS_4";
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_8"] = 48] = "SEGMENTS_8";
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_16"] = 64] = "SEGMENTS_16";
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_32"] = 80] = "SEGMENTS_32";
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_64"] = 96] = "SEGMENTS_64";
              MaxSegmentsAccepted2222[MaxSegmentsAccepted2222["SEGMENTS_65"] = 112] = "SEGMENTS_65";
              return MaxSegmentsAccepted2222;
            })(MaxSegmentsAccepted222 || {});
            var NetworkLayerMessageType222 = /* @__PURE__ */ ((NetworkLayerMessageType2222) => {
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["WHO_IS_ROUTER_TO_NETWORK"] = 0] = "WHO_IS_ROUTER_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["I_AM_ROUTER_TO_NETWORK"] = 1] = "I_AM_ROUTER_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["I_COULD_BE_ROUTER_TO_NETWORK"] = 2] = "I_COULD_BE_ROUTER_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["REJECT_MESSAGE_TO_NETWORK"] = 3] = "REJECT_MESSAGE_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["ROUTER_BUSY_TO_NETWORK"] = 4] = "ROUTER_BUSY_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["ROUTER_AVAILABLE_TO_NETWORK"] = 5] = "ROUTER_AVAILABLE_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["INITIALIZE_ROUTING_TABLE"] = 6] = "INITIALIZE_ROUTING_TABLE";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["INITIALIZE_ROUTING_TABLE_ACK"] = 7] = "INITIALIZE_ROUTING_TABLE_ACK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["ESTABLISH_CONNECTION_TO_NETWORK"] = 8] = "ESTABLISH_CONNECTION_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["DISCONNECT_CONNECTION_TO_NETWORK"] = 9] = "DISCONNECT_CONNECTION_TO_NETWORK";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["CHALLENGE_REQUEST"] = 10] = "CHALLENGE_REQUEST";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["SECURITY_PAYLOAD"] = 11] = "SECURITY_PAYLOAD";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["SECURITY_RESPONSE"] = 12] = "SECURITY_RESPONSE";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["REQUEST_KEY_UPDATE"] = 13] = "REQUEST_KEY_UPDATE";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["UPDATE_KEY_SET"] = 14] = "UPDATE_KEY_SET";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["UPDATE_DISTRIBUTION_KEY"] = 15] = "UPDATE_DISTRIBUTION_KEY";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["REQUEST_MASTER_KEY"] = 16] = "REQUEST_MASTER_KEY";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["SET_MASTER_KEY"] = 17] = "SET_MASTER_KEY";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["WHAT_IS_NETWORK_NUMBER"] = 18] = "WHAT_IS_NETWORK_NUMBER";
              NetworkLayerMessageType2222[NetworkLayerMessageType2222["NETWORK_NUMBER_IS"] = 19] = "NETWORK_NUMBER_IS";
              return NetworkLayerMessageType2222;
            })(NetworkLayerMessageType222 || {});
            var NpduControlBit222 = /* @__PURE__ */ ((NpduControlBit2222) => {
              NpduControlBit2222[NpduControlBit2222["EXPECTING_REPLY"] = 4] = "EXPECTING_REPLY";
              NpduControlBit2222[NpduControlBit2222["SOURCE_SPECIFIED"] = 8] = "SOURCE_SPECIFIED";
              NpduControlBit2222[NpduControlBit2222["DESTINATION_SPECIFIED"] = 32] = "DESTINATION_SPECIFIED";
              NpduControlBit2222[NpduControlBit2222["NETWORK_LAYER_MESSAGE"] = 128] = "NETWORK_LAYER_MESSAGE";
              return NpduControlBit2222;
            })(NpduControlBit222 || {});
            var NpduControlPriority222 = /* @__PURE__ */ ((NpduControlPriority2222) => {
              NpduControlPriority2222[NpduControlPriority2222["NORMAL_MESSAGE"] = 0] = "NORMAL_MESSAGE";
              NpduControlPriority2222[NpduControlPriority2222["URGENT_MESSAGE"] = 1] = "URGENT_MESSAGE";
              NpduControlPriority2222[NpduControlPriority2222["CRITICAL_EQUIPMENT_MESSAGE"] = 2] = "CRITICAL_EQUIPMENT_MESSAGE";
              NpduControlPriority2222[NpduControlPriority2222["LIFE_SAFETY_MESSAGE"] = 3] = "LIFE_SAFETY_MESSAGE";
              return NpduControlPriority2222;
            })(NpduControlPriority222 || {});
            var PduConReqBit222 = /* @__PURE__ */ ((PduConReqBit2222) => {
              PduConReqBit2222[PduConReqBit2222["SEGMENTED_RESPONSE_ACCEPTED"] = 2] = "SEGMENTED_RESPONSE_ACCEPTED";
              PduConReqBit2222[PduConReqBit2222["MORE_FOLLOWS"] = 4] = "MORE_FOLLOWS";
              PduConReqBit2222[PduConReqBit2222["SEGMENTED_MESSAGE"] = 8] = "SEGMENTED_MESSAGE";
              return PduConReqBit2222;
            })(PduConReqBit222 || {});
            var PduSegAckBit222 = /* @__PURE__ */ ((PduSegAckBit2222) => {
              PduSegAckBit2222[PduSegAckBit2222["SERVER"] = 1] = "SERVER";
              PduSegAckBit2222[PduSegAckBit2222["NEGATIVE_ACK"] = 2] = "NEGATIVE_ACK";
              return PduSegAckBit2222;
            })(PduSegAckBit222 || {});
            var PduType222 = /* @__PURE__ */ ((PduType2222) => {
              PduType2222[PduType2222["CONFIRMED_REQUEST"] = 0] = "CONFIRMED_REQUEST";
              PduType2222[PduType2222["UNCONFIRMED_REQUEST"] = 16] = "UNCONFIRMED_REQUEST";
              PduType2222[PduType2222["SIMPLE_ACK"] = 32] = "SIMPLE_ACK";
              PduType2222[PduType2222["COMPLEX_ACK"] = 48] = "COMPLEX_ACK";
              PduType2222[PduType2222["SEGMENT_ACK"] = 64] = "SEGMENT_ACK";
              PduType2222[PduType2222["ERROR"] = 80] = "ERROR";
              PduType2222[PduType2222["REJECT"] = 96] = "REJECT";
              PduType2222[PduType2222["ABORT"] = 112] = "ABORT";
              return PduType2222;
            })(PduType222 || {});
            var PropertyStates222 = /* @__PURE__ */ ((PropertyStates2222) => {
              PropertyStates2222[PropertyStates2222["BOOLEAN_VALUE"] = 0] = "BOOLEAN_VALUE";
              PropertyStates2222[PropertyStates2222["BINARY_VALUE"] = 1] = "BINARY_VALUE";
              PropertyStates2222[PropertyStates2222["EVENT_TYPE"] = 2] = "EVENT_TYPE";
              PropertyStates2222[PropertyStates2222["POLARITY"] = 3] = "POLARITY";
              PropertyStates2222[PropertyStates2222["PROGRAM_CHANGE"] = 4] = "PROGRAM_CHANGE";
              PropertyStates2222[PropertyStates2222["PROGRAM_STATE"] = 5] = "PROGRAM_STATE";
              PropertyStates2222[PropertyStates2222["REASON_FOR_HALT"] = 6] = "REASON_FOR_HALT";
              PropertyStates2222[PropertyStates2222["RELIABILITY"] = 7] = "RELIABILITY";
              PropertyStates2222[PropertyStates2222["STATE"] = 8] = "STATE";
              PropertyStates2222[PropertyStates2222["SYSTEM_STATUS"] = 9] = "SYSTEM_STATUS";
              PropertyStates2222[PropertyStates2222["UNITS"] = 10] = "UNITS";
              PropertyStates2222[PropertyStates2222["UNSIGNED_VALUE"] = 11] = "UNSIGNED_VALUE";
              PropertyStates2222[PropertyStates2222["LIFE_SAFETY_MODE"] = 12] = "LIFE_SAFETY_MODE";
              PropertyStates2222[PropertyStates2222["LIFE_SAFETY_STATE"] = 13] = "LIFE_SAFETY_STATE";
              PropertyStates2222[PropertyStates2222["RESTART_REASON"] = 14] = "RESTART_REASON";
              PropertyStates2222[PropertyStates2222["DOOR_ALARM_STATE"] = 15] = "DOOR_ALARM_STATE";
              PropertyStates2222[PropertyStates2222["ACTION"] = 16] = "ACTION";
              PropertyStates2222[PropertyStates2222["DOOR_SECURED_STATUS"] = 17] = "DOOR_SECURED_STATUS";
              PropertyStates2222[PropertyStates2222["DOOR_STATUS"] = 18] = "DOOR_STATUS";
              PropertyStates2222[PropertyStates2222["DOOR_VALUE"] = 19] = "DOOR_VALUE";
              PropertyStates2222[PropertyStates2222["FILE_ACCESS_METHOD"] = 20] = "FILE_ACCESS_METHOD";
              PropertyStates2222[PropertyStates2222["LOCK_STATUS"] = 21] = "LOCK_STATUS";
              PropertyStates2222[PropertyStates2222["LIFE_SAFETY_OPERATION"] = 22] = "LIFE_SAFETY_OPERATION";
              PropertyStates2222[PropertyStates2222["MAINTENANCE"] = 23] = "MAINTENANCE";
              PropertyStates2222[PropertyStates2222["NODE_TYPE"] = 24] = "NODE_TYPE";
              PropertyStates2222[PropertyStates2222["NOTIFY_TYPE"] = 25] = "NOTIFY_TYPE";
              PropertyStates2222[PropertyStates2222["SECURITY_LEVEL"] = 26] = "SECURITY_LEVEL";
              PropertyStates2222[PropertyStates2222["SHED_STATE"] = 27] = "SHED_STATE";
              PropertyStates2222[PropertyStates2222["SILENCED_STATE"] = 28] = "SILENCED_STATE";
              PropertyStates2222[PropertyStates2222["ACCESS_EVENT"] = 30] = "ACCESS_EVENT";
              PropertyStates2222[PropertyStates2222["ZONE_OCCUPANCY_STATE"] = 31] = "ZONE_OCCUPANCY_STATE";
              PropertyStates2222[PropertyStates2222["ACCESS_CREDENTIAL_DISABLE_REASON"] = 32] = "ACCESS_CREDENTIAL_DISABLE_REASON";
              PropertyStates2222[PropertyStates2222["ACCESS_CREDENTIAL_DISABLE"] = 33] = "ACCESS_CREDENTIAL_DISABLE";
              PropertyStates2222[PropertyStates2222["AUTHENTICATION_STATUS"] = 34] = "AUTHENTICATION_STATUS";
              PropertyStates2222[PropertyStates2222["BACKUP_STATE"] = 36] = "BACKUP_STATE";
              PropertyStates2222[PropertyStates2222["WRITE_STATUS"] = 37] = "WRITE_STATUS";
              PropertyStates2222[PropertyStates2222["LIGHTING_IN_PROGRESS"] = 38] = "LIGHTING_IN_PROGRESS";
              PropertyStates2222[PropertyStates2222["LIGHTING_OPERATION"] = 39] = "LIGHTING_OPERATION";
              PropertyStates2222[PropertyStates2222["LIGHTING_TRANSITION"] = 40] = "LIGHTING_TRANSITION";
              PropertyStates2222[PropertyStates2222["INTEGER_VALUE"] = 41] = "INTEGER_VALUE";
              PropertyStates2222[PropertyStates2222["BINARY_LIGHTING_VALUE"] = 42] = "BINARY_LIGHTING_VALUE";
              PropertyStates2222[PropertyStates2222["TIMER_STATE"] = 43] = "TIMER_STATE";
              PropertyStates2222[PropertyStates2222["TIMER_TRANSITION"] = 44] = "TIMER_TRANSITION";
              PropertyStates2222[PropertyStates2222["BACNET_IP_MODE"] = 45] = "BACNET_IP_MODE";
              PropertyStates2222[PropertyStates2222["NETWORK_PORT_COMMAND"] = 46] = "NETWORK_PORT_COMMAND";
              PropertyStates2222[PropertyStates2222["NETWORK_TYPE"] = 47] = "NETWORK_TYPE";
              PropertyStates2222[PropertyStates2222["NETWORK_NUMBER_QUALITY"] = 48] = "NETWORK_NUMBER_QUALITY";
              PropertyStates2222[PropertyStates2222["ESCALATOR_OPERATION_DIRECTION"] = 49] = "ESCALATOR_OPERATION_DIRECTION";
              PropertyStates2222[PropertyStates2222["ESCALATOR_FAULT"] = 50] = "ESCALATOR_FAULT";
              PropertyStates2222[PropertyStates2222["ESCALATOR_MODE"] = 51] = "ESCALATOR_MODE";
              PropertyStates2222[PropertyStates2222["LIFT_CAR_DIRECTION"] = 52] = "LIFT_CAR_DIRECTION";
              PropertyStates2222[PropertyStates2222["LIFT_CAR_DOOR_COMMAND"] = 53] = "LIFT_CAR_DOOR_COMMAND";
              PropertyStates2222[PropertyStates2222["LIFT_CAR_DRIVE_STATUS"] = 54] = "LIFT_CAR_DRIVE_STATUS";
              PropertyStates2222[PropertyStates2222["LIFT_CAR_MODE"] = 55] = "LIFT_CAR_MODE";
              PropertyStates2222[PropertyStates2222["LIFT_GROUP_MODE"] = 56] = "LIFT_GROUP_MODE";
              PropertyStates2222[PropertyStates2222["LIFT_FAULT"] = 57] = "LIFT_FAULT";
              PropertyStates2222[PropertyStates2222["PROTOCOL_LEVEL"] = 58] = "PROTOCOL_LEVEL";
              PropertyStates2222[PropertyStates2222["EXTENDED_VALUE"] = 63] = "EXTENDED_VALUE";
              return PropertyStates2222;
            })(PropertyStates222 || {});
            var ReadRangeType222 = /* @__PURE__ */ ((ReadRangeType2222) => {
              ReadRangeType2222[ReadRangeType2222["BY_POSITION"] = 0] = "BY_POSITION";
              ReadRangeType2222[ReadRangeType2222["BY_SEQUENCE_NUMBER"] = 1] = "BY_SEQUENCE_NUMBER";
              ReadRangeType2222[ReadRangeType2222["BY_TIME_REFERENCE_TIME_COUNT"] = 2] = "BY_TIME_REFERENCE_TIME_COUNT";
              return ReadRangeType2222;
            })(ReadRangeType222 || {});
            var ReinitializedState222 = /* @__PURE__ */ ((ReinitializedState2222) => {
              ReinitializedState2222[ReinitializedState2222["COLDSTART"] = 0] = "COLDSTART";
              ReinitializedState2222[ReinitializedState2222["WARMSTART"] = 1] = "WARMSTART";
              ReinitializedState2222[ReinitializedState2222["STARTBACKUP"] = 2] = "STARTBACKUP";
              ReinitializedState2222[ReinitializedState2222["ENDBACKUP"] = 3] = "ENDBACKUP";
              ReinitializedState2222[ReinitializedState2222["STARTRESTORE"] = 4] = "STARTRESTORE";
              ReinitializedState2222[ReinitializedState2222["ENDRESTORE"] = 5] = "ENDRESTORE";
              ReinitializedState2222[ReinitializedState2222["ABORTRESTORE"] = 6] = "ABORTRESTORE";
              ReinitializedState2222[ReinitializedState2222["ACTIVATE_CHANGES"] = 7] = "ACTIVATE_CHANGES";
              return ReinitializedState2222;
            })(ReinitializedState222 || {});
            var TimeStamp222 = /* @__PURE__ */ ((TimeStamp2222) => {
              TimeStamp2222[TimeStamp2222["TIME"] = 0] = "TIME";
              TimeStamp2222[TimeStamp2222["SEQUENCE_NUMBER"] = 1] = "SEQUENCE_NUMBER";
              TimeStamp2222[TimeStamp2222["DATETIME"] = 2] = "DATETIME";
              return TimeStamp2222;
            })(TimeStamp222 || {});
            var import_events2222 = __toESM222(require("events"));
            var import_debug3222 = __toESM222(require("debug"));
            var import_dgram222 = require("dgram");
            var import_events322 = __toESM222(require("events"));
            var import_debug2222 = __toESM222(require("debug"));
            var EventEmitter322 = import_events322.default.EventEmitter;
            var debug2222 = (0, import_debug2222.default)("bacnet:client:debug");
            var DEFAULT_BACNET_PORT322 = 47808;
            var Transport222 = class extends EventEmitter322 {
              constructor(settings) {
                super();
                this._lastSendMessages = {};
                this._settings = settings;
                this._server = (0, import_dgram222.createSocket)({
                  type: "udp4",
                  reuseAddr: settings.reuseAddr
                });
                this._server.on("message", (msg, rinfo) => {
                  if (this.ownAddress.port === rinfo.port) {
                    for (let [messageKey, earlierSentBuffer] of Object.entries(
                      this._lastSendMessages
                    )) {
                      if (msg.equals(earlierSentBuffer)) {
                        debug2222(
                          `server IGNORE message from ${rinfo.address}:${rinfo.port} (${messageKey}): ${msg.toString("hex")}`
                        );
                        return;
                      }
                    }
                  }
                  debug2222(
                    `server got message from ${rinfo.address}:${rinfo.port}: ${msg.toString(
                      "hex"
                    )}`
                  );
                  this.emit(
                    "message",
                    msg,
                    rinfo.address + (rinfo.port === DEFAULT_BACNET_PORT322 ? "" : ":" + rinfo.port)
                  );
                });
                this._server.on("listening", () => {
                  this.ownAddress = this._server.address();
                  debug2222(
                    `server listening on ${this.ownAddress.address}:${this.ownAddress.port}`
                  );
                  this.emit("listening", this.ownAddress);
                });
                this._server.on("error", (err) => {
                  debug2222("transport error", err.message);
                  this.emit("error", err);
                });
                this._server.on("close", () => {
                  debug2222("transport closed");
                  this.emit("close");
                });
              }
              getBroadcastAddress() {
                return this._settings.broadcastAddress;
              }
              getMaxPayload() {
                return 1482;
              }
              send(buffer, offset, receiver) {
                if (!receiver) {
                  receiver = this.getBroadcastAddress();
                  const dataToSend = Buffer.alloc(offset);
                  const hrTime = process.hrtime();
                  const messageKey = hrTime[0] * 1e9 + hrTime[1];
                  buffer.copy(dataToSend, 0, 0, offset);
                  this._lastSendMessages[messageKey] = dataToSend;
                  setTimeout(() => {
                    delete this._lastSendMessages[messageKey];
                  }, 1e4);
                }
                const receiverAddress = typeof receiver === "string" ? receiver : receiver.address;
                const [address, port] = receiverAddress.split(":");
                debug2222(
                  "Send packet to " + receiver + ": " + buffer.toString("hex").substr(0, offset * 2)
                );
                this._server.send(buffer, 0, offset, +port || DEFAULT_BACNET_PORT322, address);
              }
              open() {
                this._server.bind(this._settings.port, this._settings.interface, () => {
                  this._server.setBroadcast(true);
                });
              }
              close() {
                this._server.close();
              }
            };
            var services_exports222 = {};
            __export222(services_exports222, {
              addListElement: () => add_list_element_exports222,
              alarmAcknowledge: () => alarm_acknowledge_exports222,
              alarmSummary: () => alarm_summary_exports222,
              atomicReadFile: () => atomic_read_file_exports222,
              atomicWriteFile: () => atomic_write_file_exports222,
              covNotify: () => cov_notify_exports222,
              covNotifyUnconfirmed: () => cov_notify_exports222,
              createObject: () => create_object_exports222,
              deleteObject: () => delete_object_exports222,
              deviceCommunicationControl: () => device_communication_control_exports222,
              error: () => error_exports222,
              eventInformation: () => event_information_exports222,
              eventNotifyData: () => event_notify_data_exports222,
              getEnrollmentSummary: () => get_enrollment_summary_exports222,
              getEventInformation: () => get_event_information_exports222,
              iAm: () => i_am_exports222,
              iHave: () => i_have_exports222,
              lifeSafetyOperation: () => life_safety_operation_exports222,
              privateTransfer: () => private_transfer_exports222,
              readProperty: () => read_property_exports222,
              readPropertyMultiple: () => read_property_multiple_exports222,
              readRange: () => read_range_exports222,
              registerForeignDevice: () => register_foreign_device_exports222,
              reinitializeDevice: () => reinitialize_device_exports222,
              subscribeCov: () => subscribe_cov_exports222,
              subscribeProperty: () => subscribe_property_exports222,
              timeSync: () => time_sync_exports222,
              timeSyncUTC: () => time_sync_exports222,
              whoHas: () => who_has_exports222,
              whoIs: () => who_is_exports222,
              writeProperty: () => write_property_exports222,
              writePropertyMultiple: () => write_property_multiple_exports222
            });
            var add_list_element_exports222 = {};
            __export222(add_list_element_exports222, {
              decode: () => decode3322,
              encode: () => encode3322
            });
            var import_iconv_lite222 = __toESM222(require("iconv-lite"));
            var enums_default222 = enum_exports222;
            var START_YEAR222 = 1900;
            var MAX_YEARS222 = 256;
            var getBuffer222 = () => {
              return {
                buffer: Buffer.alloc(1472),
                offset: 0
              };
            };
            var getSignedLength222 = (value) => {
              if (value >= -128 && value < 128)
                return 1;
              else if (value >= -32768 && value < 32768)
                return 2;
              else if (value > -8388608 && value < 8388608)
                return 3;
              else
                return 4;
            };
            var getUnsignedLength222 = (value) => {
              if (value < 256)
                return 1;
              else if (value < 65536)
                return 2;
              else if (value < 16777216)
                return 3;
              else
                return 4;
            };
            var getEncodingType222 = (encoding, decodingBuffer, decodingOffset) => {
              switch (encoding) {
                case enums_default222.CharacterStringEncoding.UCS_2:
                  if (decodingBuffer && decodingBuffer[decodingOffset] === 255 && decodingBuffer[decodingOffset + 1] === 254) {
                    return "ucs2";
                  }
                  return "UTF-16BE";
                case enums_default222.CharacterStringEncoding.ISO_8859_1:
                  return "latin1";
                case enums_default222.CharacterStringEncoding.MICROSOFT_DBCS:
                  return "cp850";
                case enums_default222.CharacterStringEncoding.JIS_X_0208:
                  return "Shift_JIS";
                default:
                  return "utf8";
              }
            };
            var encodeUnsigned222 = (buffer, value, length) => {
              buffer.buffer.writeUIntBE(value, buffer.offset, length, true);
              buffer.offset += length;
            };
            var encodeBacnetUnsigned222 = (buffer, value) => {
              encodeUnsigned222(buffer, value, getUnsignedLength222(value));
            };
            var encodeSigned222 = (buffer, value, length) => {
              buffer.buffer.writeIntBE(value, buffer.offset, length, true);
              buffer.offset += length;
            };
            var encodeBacnetSigned222 = (buffer, value) => {
              encodeSigned222(buffer, value, getSignedLength222(value));
            };
            var encodeBacnetReal222 = (buffer, value) => {
              buffer.buffer.writeFloatBE(value, buffer.offset, true);
              buffer.offset += 4;
            };
            var encodeBacnetDouble222 = (buffer, value) => {
              buffer.buffer.writeDoubleBE(value, buffer.offset, true);
              buffer.offset += 8;
            };
            var decodeUnsigned222 = (buffer, offset, length) => {
              if (length === 0) {
                return {
                  len: 0,
                  value: 0
                };
              }
              return {
                len: length,
                //@ts-ignore
                value: buffer.readUIntBE(offset, length)
              };
            };
            var decodeEnumerated222 = (buffer, offset, length) => {
              return decodeUnsigned222(buffer, offset, length);
            };
            var encodeBacnetObjectId222 = (buffer, objectType, instance) => {
              const value = ((objectType & enums_default222.ASN1_MAX_OBJECT) << enums_default222.ASN1_INSTANCE_BITS | instance & enums_default222.ASN1_MAX_INSTANCE) >>> 0;
              encodeUnsigned222(buffer, value, 4);
            };
            var encodeTag222 = (buffer, tagNumber, contextSpecific, lenValueType) => {
              let len = 1;
              const tmp = new Array(3);
              tmp[0] = 0;
              if (contextSpecific) {
                tmp[0] |= 8;
              }
              if (tagNumber <= 14) {
                tmp[0] |= tagNumber << 4;
              } else {
                tmp[0] |= 240;
                tmp[1] = tagNumber;
                len++;
              }
              if (lenValueType <= 4) {
                tmp[0] |= lenValueType;
                Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
                buffer.offset += len;
              } else {
                tmp[0] |= 5;
                if (lenValueType <= 253) {
                  tmp[len++] = lenValueType;
                  Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
                  buffer.offset += len;
                } else if (lenValueType <= 65535) {
                  tmp[len++] = 254;
                  Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
                  buffer.offset += len;
                  encodeUnsigned222(buffer, lenValueType, 2);
                } else {
                  tmp[len++] = 255;
                  Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
                  buffer.offset += len;
                  encodeUnsigned222(buffer, lenValueType, 4);
                }
              }
            };
            var encodeBacnetEnumerated222 = (buffer, value) => {
              encodeBacnetUnsigned222(buffer, value);
            };
            var isExtendedTagNumber222 = (x) => {
              return (x & 240) === 240;
            };
            var isExtendedValue222 = (x) => {
              return (x & 7) === 5;
            };
            var isContextSpecific222 = (x) => {
              return (x & 8) === 8;
            };
            var isOpeningTag222 = (x) => {
              return (x & 7) === 6;
            };
            var isClosingTag222 = (x) => {
              return (x & 7) === 7;
            };
            var encodeContextReal222 = (buffer, tagNumber, value) => {
              encodeTag222(buffer, tagNumber, true, 4);
              encodeBacnetReal222(buffer, value);
            };
            var encodeContextUnsigned222 = (buffer, tagNumber, value) => {
              encodeTag222(buffer, tagNumber, true, getUnsignedLength222(value));
              encodeBacnetUnsigned222(buffer, value);
            };
            var encodeContextEnumerated222 = (buffer, tagNumber, value) => {
              encodeContextUnsigned222(buffer, tagNumber, value);
            };
            var encodeOctetString222 = (buffer, octetString, octetOffset, octetCount) => {
              if (octetString) {
                for (let i = octetOffset; i < octetOffset + octetCount; i++) {
                  buffer.buffer[buffer.offset++] = octetString[i];
                }
              }
            };
            var encodeApplicationOctetString222 = (buffer, octetString, octetOffset, octetCount) => {
              encodeTag222(buffer, enums_default222.ApplicationTag.OCTET_STRING, false, octetCount);
              encodeOctetString222(buffer, octetString, octetOffset, octetCount);
            };
            var encodeApplicationNull222 = (buffer) => {
              buffer.buffer[buffer.offset++] = enums_default222.ApplicationTag.NULL;
            };
            var encodeApplicationBoolean222 = (buffer, booleanValue) => {
              encodeTag222(buffer, enums_default222.ApplicationTag.BOOLEAN, false, booleanValue ? 1 : 0);
            };
            var encodeApplicationReal222 = (buffer, value) => {
              encodeTag222(buffer, enums_default222.ApplicationTag.REAL, false, 4);
              encodeBacnetReal222(buffer, value);
            };
            var encodeApplicationDouble222 = (buffer, value) => {
              encodeTag222(buffer, enums_default222.ApplicationTag.DOUBLE, false, 8);
              encodeBacnetDouble222(buffer, value);
            };
            var bitstringBytesUsed222 = (bitString) => {
              let len = 0;
              if (bitString.bitsUsed > 0) {
                const lastBit = bitString.bitsUsed - 1;
                const usedBytes = lastBit / 8 + 1;
                len = Math.floor(usedBytes);
              }
              return len;
            };
            var encodeApplicationObjectId222 = (buffer, objectType, instance) => {
              const tmp = getBuffer222();
              encodeBacnetObjectId222(tmp, objectType, instance);
              encodeTag222(buffer, enums_default222.ApplicationTag.OBJECTIDENTIFIER, false, tmp.offset);
              tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
              buffer.offset += tmp.offset;
            };
            var encodeApplicationUnsigned222 = (buffer, value) => {
              const tmp = getBuffer222();
              encodeBacnetUnsigned222(tmp, value);
              encodeTag222(buffer, enums_default222.ApplicationTag.UNSIGNED_INTEGER, false, tmp.offset);
              tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
              buffer.offset += tmp.offset;
            };
            var encodeApplicationEnumerated222 = (buffer, value) => {
              const tmp = getBuffer222();
              encodeBacnetEnumerated222(tmp, value);
              encodeTag222(buffer, enums_default222.ApplicationTag.ENUMERATED, false, tmp.offset);
              tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
              buffer.offset += tmp.offset;
            };
            var encodeApplicationSigned222 = (buffer, value) => {
              const tmp = getBuffer222();
              encodeBacnetSigned222(tmp, value);
              encodeTag222(buffer, enums_default222.ApplicationTag.SIGNED_INTEGER, false, tmp.offset);
              tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
              buffer.offset += tmp.offset;
            };
            var byteReverseBits222 = (inByte) => {
              let outByte = 0;
              if ((inByte & 1) > 0) {
                outByte |= 128;
              }
              if ((inByte & 2) > 0) {
                outByte |= 64;
              }
              if ((inByte & 4) > 0) {
                outByte |= 32;
              }
              if ((inByte & 8) > 0) {
                outByte |= 16;
              }
              if ((inByte & 16) > 0) {
                outByte |= 8;
              }
              if ((inByte & 32) > 0) {
                outByte |= 4;
              }
              if ((inByte & 64) > 0) {
                outByte |= 2;
              }
              if ((inByte & 128) > 0) {
                outByte |= 1;
              }
              return outByte;
            };
            var bitstringOctet222 = (bitString, octetIndex) => {
              let octet = 0;
              if (bitString.value && octetIndex < enums_default222.ASN1_MAX_BITSTRING_BYTES) {
                octet = bitString.value[octetIndex];
              }
              return octet;
            };
            var encodeBitstring222 = (buffer, bitString) => {
              if (bitString.bitsUsed === 0) {
                buffer.buffer[buffer.offset++] = 0;
              } else {
                const usedBytes = bitstringBytesUsed222(bitString);
                const remainingUsedBits = bitString.bitsUsed - (usedBytes - 1) * 8;
                buffer.buffer[buffer.offset++] = 8 - remainingUsedBits;
                for (let i = 0; i < usedBytes; i++) {
                  buffer.buffer[buffer.offset++] = byteReverseBits222(
                    bitstringOctet222(bitString, i)
                  );
                }
              }
            };
            var encodeApplicationBitstring222 = (buffer, bitString) => {
              let bitStringEncodedLength = 1;
              bitStringEncodedLength += bitstringBytesUsed222(bitString);
              encodeTag222(
                buffer,
                enums_default222.ApplicationTag.BIT_STRING,
                false,
                bitStringEncodedLength
              );
              encodeBitstring222(buffer, bitString);
            };
            var encodeBacnetDate222 = (buffer, value) => {
              if (value === new Date(1, 1, 1)) {
                buffer.buffer[buffer.offset++] = 255;
                buffer.buffer[buffer.offset++] = 255;
                buffer.buffer[buffer.offset++] = 255;
                buffer.buffer[buffer.offset++] = 255;
                return;
              }
              if (value.getFullYear() >= START_YEAR222) {
                buffer.buffer[buffer.offset++] = value.getFullYear() - START_YEAR222;
              } else if (value.getFullYear() < MAX_YEARS222) {
                buffer.buffer[buffer.offset++] = value.getFullYear();
              } else {
                throw new Error("invaide year: " + value.getFullYear());
              }
              buffer.buffer[buffer.offset++] = value.getMonth();
              buffer.buffer[buffer.offset++] = value.getDate();
              buffer.buffer[buffer.offset++] = value.getDay() === 0 ? 7 : value.getDay();
            };
            var encodeApplicationDate222 = (buffer, value) => {
              encodeTag222(buffer, enums_default222.ApplicationTag.DATE, false, 4);
              encodeBacnetDate222(buffer, value);
            };
            var encodeBacnetTime222 = (buffer, value) => {
              buffer.buffer[buffer.offset++] = value.getHours();
              buffer.buffer[buffer.offset++] = value.getMinutes();
              buffer.buffer[buffer.offset++] = value.getSeconds();
              buffer.buffer[buffer.offset++] = value.getMilliseconds() / 10;
            };
            var encodeApplicationTime222 = (buffer, value) => {
              encodeTag222(buffer, enums_default222.ApplicationTag.TIME, false, 4);
              encodeBacnetTime222(buffer, value);
            };
            var bacappEncodeDatetime222 = (buffer, value) => {
              if (value !== new Date(1, 1, 1)) {
                encodeApplicationDate222(buffer, value);
                encodeApplicationTime222(buffer, value);
              }
            };
            var encodeContextObjectId222 = (buffer, tagNumber, objectType, instance) => {
              encodeTag222(buffer, tagNumber, true, 4);
              encodeBacnetObjectId222(buffer, objectType, instance);
            };
            var encodeOpeningTag222 = (buffer, tagNumber) => {
              let len = 1;
              const tmp = new Array(2);
              tmp[0] = 8;
              if (tagNumber <= 14) {
                tmp[0] |= tagNumber << 4;
              } else {
                tmp[0] |= 240;
                tmp[1] = tagNumber;
                len++;
              }
              tmp[0] |= 6;
              Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
              buffer.offset += len;
            };
            var encodeClosingTag222 = (buffer, tagNumber) => {
              let len = 1;
              const tmp = new Array(2);
              tmp[0] = 8;
              if (tagNumber <= 14) {
                tmp[0] |= tagNumber << 4;
              } else {
                tmp[0] |= 240;
                tmp[1] = tagNumber;
                len++;
              }
              tmp[0] |= 7;
              Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
              buffer.offset += len;
            };
            var encodeReadAccessSpecification222 = (buffer, value) => {
              encodeContextObjectId222(
                buffer,
                0,
                value.objectId.type,
                value.objectId.instance
              );
              encodeOpeningTag222(buffer, 1);
              value.properties.forEach((p) => {
                encodeContextEnumerated222(buffer, 0, p.id);
                if (p.index && p.index !== enums_default222.ASN1_ARRAY_ALL) {
                  encodeContextUnsigned222(buffer, 1, p.index);
                }
              });
              encodeClosingTag222(buffer, 1);
            };
            var encodeContextBoolean222 = (buffer, tagNumber, booleanValue) => {
              encodeTag222(buffer, tagNumber, true, 1);
              buffer.buffer.writeUInt8(booleanValue ? 1 : 0, buffer.offset, true);
              buffer.offset += 1;
            };
            var encodeCovSubscription222 = (buffer, value) => {
              encodeOpeningTag222(buffer, 0);
              encodeOpeningTag222(buffer, 0);
              encodeOpeningTag222(buffer, 1);
              encodeApplicationUnsigned222(buffer, value.recipient.network);
              if (value.recipient.network === 65535) {
                encodeApplicationOctetString222(buffer, 0, 0, 0);
              } else {
                encodeApplicationOctetString222(
                  buffer,
                  value.recipient.address,
                  0,
                  value.recipient.address.length
                );
              }
              encodeClosingTag222(buffer, 1);
              encodeClosingTag222(buffer, 0);
              encodeContextUnsigned222(buffer, 1, value.subscriptionProcessId);
              encodeClosingTag222(buffer, 0);
              encodeOpeningTag222(buffer, 1);
              encodeContextObjectId222(
                buffer,
                0,
                value.monitoredObjectId.type,
                value.monitoredObjectId.instance
              );
              encodeContextEnumerated222(buffer, 1, value.monitoredProperty.id);
              if (value.monitoredProperty.index !== enums_default222.ASN1_ARRAY_ALL) {
                encodeContextUnsigned222(buffer, 2, value.monitoredProperty.index);
              }
              encodeClosingTag222(buffer, 1);
              encodeContextBoolean222(buffer, 2, value.issueConfirmedNotifications);
              encodeContextUnsigned222(buffer, 3, value.timeRemaining);
              if (value.covIncrement > 0) {
                encodeContextReal222(buffer, 4, value.covIncrement);
              }
            };
            var bacappEncodeApplicationData222 = (buffer, value) => {
              if (value.value === null) {
                value.type = enums_default222.ApplicationTag.NULL;
              }
              switch (value.type) {
                case enums_default222.ApplicationTag.NULL:
                  encodeApplicationNull222(buffer);
                  break;
                case enums_default222.ApplicationTag.BOOLEAN:
                  encodeApplicationBoolean222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.UNSIGNED_INTEGER:
                  encodeApplicationUnsigned222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.SIGNED_INTEGER:
                  encodeApplicationSigned222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.REAL:
                  encodeApplicationReal222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.DOUBLE:
                  encodeApplicationDouble222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.OCTET_STRING:
                  encodeApplicationOctetString222(buffer, value.value, 0, value.value.length);
                  break;
                case enums_default222.ApplicationTag.CHARACTER_STRING:
                  encodeApplicationCharacterString222(buffer, value.value, value.encoding);
                  break;
                case enums_default222.ApplicationTag.BIT_STRING:
                  encodeApplicationBitstring222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.ENUMERATED:
                  encodeApplicationEnumerated222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.DATE:
                  encodeApplicationDate222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.TIME:
                  encodeApplicationTime222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.TIMESTAMP:
                  bacappEncodeTimestamp222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.DATETIME:
                  bacappEncodeDatetime222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.OBJECTIDENTIFIER:
                  encodeApplicationObjectId222(buffer, value.value.type, value.value.instance);
                  break;
                case enums_default222.ApplicationTag.COV_SUBSCRIPTION:
                  encodeCovSubscription222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.READ_ACCESS_RESULT:
                  encodeReadAccessResult222(buffer, value.value);
                  break;
                case enums_default222.ApplicationTag.READ_ACCESS_SPECIFICATION:
                  encodeReadAccessSpecification222(buffer, value.value);
                  break;
                case void 0:
                  throw new Error(
                    "Cannot encode a value if the type has not been specified"
                  );
                default:
                  throw "No encode for ApplicationTag type: " + enums_default222.getEnumName(
                    enums_default222.ApplicationTag,
                    value.type
                  );
              }
            };
            var bacappEncodeDeviceObjPropertyRef222 = (buffer, value) => {
              encodeContextObjectId222(
                buffer,
                0,
                value.objectId.type,
                value.objectId.instance
              );
              encodeContextEnumerated222(buffer, 1, value.id);
              if (value.arrayIndex !== enums_default222.ASN1_ARRAY_ALL) {
                encodeContextUnsigned222(buffer, 2, value.arrayIndex);
              }
              if (value.deviceIndentifier.type === enums_default222.ObjectType.DEVICE) {
                encodeContextObjectId222(
                  buffer,
                  3,
                  value.deviceIndentifier.type,
                  value.deviceIndentifier.instance
                );
              }
            };
            var bacappEncodeContextDeviceObjPropertyRef222 = (buffer, tagNumber, value) => {
              encodeOpeningTag222(buffer, tagNumber);
              bacappEncodeDeviceObjPropertyRef222(buffer, value);
              encodeClosingTag222(buffer, tagNumber);
            };
            var bacappEncodePropertyState222 = (buffer, value) => {
              switch (value.type) {
                case enums_default222.PropertyStates.BOOLEAN_VALUE:
                  encodeContextBoolean222(buffer, 0, value.state === 1);
                  break;
                case enums_default222.PropertyStates.BINARY_VALUE:
                  encodeContextEnumerated222(buffer, 1, value.state);
                  break;
                case enums_default222.PropertyStates.EVENT_TYPE:
                  encodeContextEnumerated222(buffer, 2, value.state);
                  break;
                case enums_default222.PropertyStates.POLARITY:
                  encodeContextEnumerated222(buffer, 3, value.state);
                  break;
                case enums_default222.PropertyStates.PROGRAM_CHANGE:
                  encodeContextEnumerated222(buffer, 4, value.state);
                  break;
                case enums_default222.PropertyStates.PROGRAM_STATE:
                  encodeContextEnumerated222(buffer, 5, value.state);
                  break;
                case enums_default222.PropertyStates.REASON_FOR_HALT:
                  encodeContextEnumerated222(buffer, 6, value.state);
                  break;
                case enums_default222.PropertyStates.RELIABILITY:
                  encodeContextEnumerated222(buffer, 7, value.state);
                  break;
                case enums_default222.PropertyStates.STATE:
                  encodeContextEnumerated222(buffer, 8, value.state);
                  break;
                case enums_default222.PropertyStates.SYSTEM_STATUS:
                  encodeContextEnumerated222(buffer, 9, value.state);
                  break;
                case enums_default222.PropertyStates.UNITS:
                  encodeContextEnumerated222(buffer, 10, value.state);
                  break;
                case enums_default222.PropertyStates.UNSIGNED_VALUE:
                  encodeContextUnsigned222(buffer, 11, value.state);
                  break;
                case enums_default222.PropertyStates.LIFE_SAFETY_MODE:
                  encodeContextEnumerated222(buffer, 12, value.state);
                  break;
                case enums_default222.PropertyStates.LIFE_SAFETY_STATE:
                  encodeContextEnumerated222(buffer, 13, value.state);
                  break;
                default:
                  break;
              }
            };
            var encodeContextBitstring222 = (buffer, tagNumber, bitString) => {
              let bitStringEncodedLength = 1;
              bitStringEncodedLength += bitstringBytesUsed222(bitString);
              encodeTag222(buffer, tagNumber, true, bitStringEncodedLength);
              encodeBitstring222(buffer, bitString);
            };
            var encodeContextSigned222 = (buffer, tagNumber, value) => {
              encodeTag222(buffer, tagNumber, true, getSignedLength222(value));
              encodeBacnetSigned222(buffer, value);
            };
            var encodeContextTime222 = (buffer, tagNumber, value) => {
              encodeTag222(buffer, tagNumber, true, 4);
              encodeBacnetTime222(buffer, value);
            };
            var bacappEncodeContextDatetime222 = (buffer, tagNumber, value) => {
              if (value !== new Date(1, 1, 1)) {
                encodeOpeningTag222(buffer, tagNumber);
                bacappEncodeDatetime222(buffer, value);
                encodeClosingTag222(buffer, tagNumber);
              } else {
                throw new Error("wrong Datetime while bacapp encoding context");
              }
            };
            var decodeTagNumber222 = (buffer, offset) => {
              let len = 1;
              let tagNumber;
              if (isExtendedTagNumber222(buffer[offset])) {
                tagNumber = buffer[offset + 1];
                len++;
              } else {
                tagNumber = buffer[offset] >> 4;
              }
              return {
                len,
                tagNumber
              };
            };
            var decodeIsContextTag222 = (buffer, offset, tagNumber) => {
              const result = decodeTagNumber222(buffer, offset);
              return isContextSpecific222(buffer[offset]) && result.tagNumber === tagNumber;
            };
            var decodeIsOpeningTagNumber222 = (buffer, offset, tagNumber) => {
              const result = decodeTagNumber222(buffer, offset);
              return isOpeningTag222(buffer[offset]) && result.tagNumber === tagNumber;
            };
            var decodeIsClosingTagNumber222 = (buffer, offset, tagNumber) => {
              const result = decodeTagNumber222(buffer, offset);
              return isClosingTag222(buffer[offset]) && result.tagNumber === tagNumber;
            };
            var decodeIsClosingTag222 = (buffer, offset) => {
              return (buffer[offset] & 7) === 7;
            };
            var decodeIsOpeningTag222 = (buffer, offset) => {
              return (buffer[offset] & 7) === 6;
            };
            var decodeObjectId222 = (buffer, offset, NOT_USED_NUMBER = 0) => {
              const result = decodeUnsigned222(buffer, offset, 4);
              const objectType = result.value >> enums_default222.ASN1_INSTANCE_BITS & enums_default222.ASN1_MAX_OBJECT;
              const instance = result.value & enums_default222.ASN1_MAX_INSTANCE;
              return {
                len: result.len,
                objectType,
                instance
              };
            };
            var decodeObjectIdSafe222 = (buffer, offset, lenValue) => {
              if (lenValue !== 4) {
                return {
                  len: 0,
                  objectType: 0,
                  instance: 0
                };
              } else {
                return decodeObjectId222(buffer, offset);
              }
            };
            var decodeTagNumberAndValue222 = (buffer, offset) => {
              let value;
              let result = decodeTagNumber222(buffer, offset);
              let len = result.len;
              if (isExtendedValue222(buffer[offset])) {
                if (buffer[offset + len] === 255) {
                  len++;
                  result = decodeUnsigned222(buffer, offset + len, 4);
                  len += result.len;
                  value = result.value;
                } else if (buffer[offset + len] === 254) {
                  len++;
                  result = decodeUnsigned222(buffer, offset + len, 2);
                  len += result.len;
                  value = result.value;
                } else {
                  value = buffer[offset + len];
                  len++;
                }
              } else if (isOpeningTag222(buffer[offset])) {
                value = 0;
              } else if (isClosingTag222(buffer[offset])) {
                value = 0;
              } else {
                value = buffer[offset] & 7;
              }
              return {
                len,
                tagNumber: result.tagNumber,
                value
              };
            };
            var bacappDecodeApplicationData222 = (buffer, offset, maxOffset, objectType, propertyId) => {
              if (!isContextSpecific222(buffer[offset])) {
                let result = decodeTagNumberAndValue222(buffer, offset);
                if (result) {
                  let len = result.len;
                  result = bacappDecodeData222(
                    buffer,
                    offset + len,
                    maxOffset,
                    result.tagNumber,
                    result.value
                  );
                  if (!result) {
                    return void 0;
                  }
                  let resObj = {
                    len: len + result.len,
                    type: result.type,
                    value: result.value
                  };
                  if (result.encoding !== void 0)
                    resObj.encoding = result.encoding;
                  return resObj;
                }
              } else {
                return bacappDecodeContextApplicationData222(
                  buffer,
                  offset,
                  maxOffset,
                  objectType,
                  propertyId
                );
              }
            };
            var encodeReadAccessResult222 = (buffer, value) => {
              encodeContextObjectId222(
                buffer,
                0,
                value.objectId.type,
                value.objectId.instance
              );
              encodeOpeningTag222(buffer, 1);
              value.values.forEach((item) => {
                encodeContextEnumerated222(buffer, 2, item.property.id);
                if (item.property.index !== enums_default222.ASN1_ARRAY_ALL) {
                  encodeContextUnsigned222(buffer, 3, item.property.index);
                }
                if (item.value && item.value[0] && item.value[0].value && item.value[0].value.type === "BacnetError") {
                  encodeOpeningTag222(buffer, 5);
                  encodeApplicationEnumerated222(buffer, item.value[0].value.errorClass);
                  encodeApplicationEnumerated222(buffer, item.value[0].value.errorCode);
                  encodeClosingTag222(buffer, 5);
                } else {
                  if (!item.value)
                    throw new Error("No value in item");
                  encodeOpeningTag222(buffer, 4);
                  item.value.forEach((subItem) => {
                    bacappEncodeApplicationData222(buffer, subItem);
                  });
                  encodeClosingTag222(buffer, 4);
                }
              });
              encodeClosingTag222(buffer, 1);
            };
            var decodeReadAccessResult222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              let result = decodeObjectId222(buffer, offset + len);
              value.objectId = {
                type: result.objectType,
                instance: result.instance
              };
              len += result.len;
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                return -1;
              }
              len++;
              const values = [];
              while (apduLen - len > 0) {
                let newEntry = {};
                if (decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                  len++;
                  break;
                }
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 2) {
                  return void 0;
                }
                result = decodeEnumerated222(buffer, offset + len, result.value);
                newEntry.id = result.value;
                len += result.len;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                if (result.tagNumber === 3) {
                  len += result.len;
                  result = decodeUnsigned222(buffer, offset + len, result.value);
                  newEntry.index = result.value;
                  len += result.len;
                } else {
                  newEntry.index = enums_default222.ASN1_ARRAY_ALL;
                }
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber === 4) {
                  const localValues = [];
                  while (len + offset <= buffer.length && !decodeIsClosingTagNumber222(buffer, offset + len, 4)) {
                    let localResult = bacappDecodeApplicationData222(
                      buffer,
                      offset + len,
                      apduLen + offset - 1,
                      value.objectId.type,
                      newEntry.id
                    );
                    if (!localResult) {
                      return void 0;
                    }
                    len += localResult.len;
                    let resObj = {
                      value: localResult.value,
                      type: localResult.type
                    };
                    if (localResult.encoding !== void 0)
                      resObj.encoding = localResult.encoding;
                    localValues.push(resObj);
                  }
                  if (!decodeIsClosingTagNumber222(buffer, offset + len, 4)) {
                    return void 0;
                  }
                  if (localValues.count === 2 && localValues[0].type === enums_default222.ApplicationTag.DATE && localValues[1].type === enums_default222.ApplicationTag.TIME) {
                    const date = localValues[0].value;
                    const time = localValues[1].value;
                    const bdatetime = new Date(
                      date.year,
                      date.month,
                      date.day,
                      time.hour,
                      time.minute,
                      time.second,
                      time.millisecond
                    );
                    newEntry.value = [
                      { type: enums_default222.ApplicationTag.DATETIME, value: bdatetime }
                    ];
                  } else {
                    newEntry.value = localValues;
                  }
                  len++;
                } else if (result.tagNumber === 5) {
                  let err = {};
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  result = decodeEnumerated222(buffer, offset + len, result.value);
                  len += result.len;
                  err.errorClass = result.value;
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  result = decodeEnumerated222(buffer, offset + len, result.value);
                  len += result.len;
                  err.errorCode = result.value;
                  if (!decodeIsClosingTagNumber222(buffer, offset + len, 5)) {
                    return void 0;
                  }
                  len++;
                  newEntry.value = [
                    {
                      type: enums_default222.ApplicationTag.ERROR,
                      value: err
                    }
                  ];
                }
                values.push(newEntry);
              }
              value.values = values;
              return {
                len,
                value
              };
            };
            var decodeSigned222 = (buffer, offset, length) => {
              return {
                len: length,
                value: buffer.readIntBE(offset, length, true)
              };
            };
            var decodeReal222 = (buffer, offset) => {
              return {
                len: 4,
                value: buffer.readFloatBE(offset, true)
              };
            };
            var decodeRealSafe222 = (buffer, offset, lenValue) => {
              if (lenValue !== 4) {
                return {
                  len: lenValue,
                  value: 0
                };
              } else {
                return decodeReal222(buffer, offset);
              }
            };
            var decodeDouble222 = (buffer, offset) => {
              return {
                len: 8,
                value: buffer.readDoubleBE(offset, true)
              };
            };
            var decodeDoubleSafe222 = (buffer, offset, lenValue) => {
              if (lenValue !== 8) {
                return {
                  len: lenValue,
                  value: 0
                };
              } else {
                return decodeDouble222(buffer, offset);
              }
            };
            var decodeOctetString222 = (buffer, offset, maxLength, octetStringOffset, octetStringLength) => {
              const octetString = [];
              for (let i = octetStringOffset; i < octetStringOffset + octetStringLength; i++) {
                octetString.push(buffer[offset + i]);
              }
              return {
                len: octetStringLength,
                value: octetString
              };
            };
            var multiCharsetCharacterstringDecode222 = (buffer, offset, maxLength, encoding, length) => {
              const stringBuf = Buffer.alloc(length);
              buffer.copy(stringBuf, 0, offset, offset + length);
              return {
                value: import_iconv_lite222.default.decode(stringBuf, getEncodingType222(encoding, buffer, offset)),
                len: length + 1,
                encoding
              };
            };
            var decodeCharacterString222 = (buffer, offset, maxLength, lenValue) => {
              return multiCharsetCharacterstringDecode222(
                buffer,
                offset + 1,
                maxLength,
                buffer[offset],
                lenValue - 1
              );
            };
            var bitstringSetBitsUsed222 = (bitString, bytesUsed, unusedBits) => {
              bitString.bitsUsed = bytesUsed * 8;
              bitString.bitsUsed -= unusedBits;
            };
            var decodeBitstring222 = (buffer, offset, lenValue) => {
              let len = 0;
              let bitString = {};
              bitString.value = [];
              if (lenValue > 0) {
                const bytesUsed = lenValue - 1;
                if (bytesUsed <= enums_default222.ASN1_MAX_BITSTRING_BYTES) {
                  len = 1;
                  for (let i = 0; i < bytesUsed; i++) {
                    bitString.value.push(byteReverseBits222(buffer[offset + len++]));
                  }
                  const unusedBits = buffer[offset] & 7;
                  bitstringSetBitsUsed222(bitString, bytesUsed, unusedBits);
                }
              }
              return {
                len,
                value: bitString
              };
            };
            var decodeDate222 = (buffer, offset) => {
              let date;
              const year = buffer[offset] + 1900;
              const month = buffer[offset + 1];
              const day = buffer[offset + 2];
              const wday = buffer[offset + 3];
              if (month === 255 && day === 255 && wday === 255 && year - 1900 === 255) {
                date = new Date(1, 1, 1);
              } else {
                date = new Date(year, month, day);
              }
              return {
                len: 4,
                value: date
              };
            };
            var decodeDateSafe222 = (buffer, offset, lenValue) => {
              if (lenValue !== 4) {
                return {
                  len: lenValue,
                  value: new Date(1, 1, 1)
                };
              } else {
                return decodeDate222(buffer, offset);
              }
            };
            var decodeApplicationDate222 = (buffer, offset) => {
              const result = decodeTagNumber222(buffer, offset);
              if (result.tagNumber === enums_default222.ApplicationTag.DATE) {
                const value = decodeDate222(buffer, offset + 1);
                return {
                  len: value.len + 1,
                  value
                };
              }
              return void 0;
            };
            var decodeBacnetTime222 = (buffer, offset, value = new Date(1, 1, 1)) => {
              const hour = buffer[offset + 0];
              const min = buffer[offset + 1];
              const sec = buffer[offset + 2];
              let hundredths = buffer[offset + 3];
              if (hour === 255 && min === 255 && sec === 255 && hundredths === 255) {
                value = new Date(1, 1, 1);
              } else {
                if (hundredths > 100)
                  hundredths = 0;
                value = new Date(1, 1, 1, hour, min, sec, hundredths * 10);
              }
              return {
                len: 4,
                value
              };
            };
            var decodeBacnetTimeSafe222 = (buffer, offset, lenValue) => {
              if (lenValue !== 4) {
                return {
                  len: lenValue,
                  value: new Date(1, 1, 1)
                };
              } else {
                return decodeBacnetTime222(buffer, offset);
              }
            };
            var decodeApplicationTime222 = (buffer, offset) => {
              const result = decodeTagNumber222(buffer, offset);
              if (result.tagNumber === enums_default222.ApplicationTag.TIME) {
                const value = decodeBacnetTime222(buffer, offset + 1);
                return {
                  len: value.len + 1,
                  value
                };
              }
              return void 0;
            };
            var decodeBacnetDatetime222 = (buffer, offset) => {
              let len = 0;
              const date = decodeApplicationDate222(buffer, offset + len);
              len += date.len;
              const time = decodeApplicationTime222(buffer, offset + len);
              len += time.len;
              return {
                len,
                value: new Date(
                  date.year,
                  date.month,
                  date.day,
                  time.hour,
                  time.minute,
                  time.second,
                  time.millisecond
                )
              };
            };
            var bacappDecodeData222 = (buffer, offset, maxLength, tagDataType, lenValueType) => {
              let result;
              let value = {
                len: 0,
                type: tagDataType
              };
              switch (tagDataType) {
                case enums_default222.ApplicationTag.NULL:
                  value.value = null;
                  break;
                case enums_default222.ApplicationTag.BOOLEAN:
                  value.value = lenValueType > 0;
                  break;
                case enums_default222.ApplicationTag.UNSIGNED_INTEGER:
                  result = decodeUnsigned222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.SIGNED_INTEGER:
                  result = decodeSigned222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.REAL:
                  result = decodeRealSafe222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.DOUBLE:
                  result = decodeDoubleSafe222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.OCTET_STRING:
                  result = decodeOctetString222(buffer, offset, maxLength, 0, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.CHARACTER_STRING:
                  result = decodeCharacterString222(buffer, offset, maxLength, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  value.encoding = result.encoding;
                  break;
                case enums_default222.ApplicationTag.BIT_STRING:
                  result = decodeBitstring222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.ENUMERATED:
                  result = decodeEnumerated222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.DATE:
                  result = decodeDateSafe222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.TIME:
                  result = decodeBacnetTimeSafe222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = result.value;
                  break;
                case enums_default222.ApplicationTag.OBJECTIDENTIFIER:
                  result = decodeObjectIdSafe222(buffer, offset, lenValueType);
                  value.len += result.len;
                  value.value = { type: result.objectType, instance: result.instance };
                  break;
                default:
                  break;
              }
              return value;
            };
            var bacappContextTagType222 = (property, tagNumber) => {
              let tag = 0;
              switch (property) {
                case enums_default222.PropertyIdentifier.ACTUAL_SHED_LEVEL:
                case enums_default222.PropertyIdentifier.REQUESTED_SHED_LEVEL:
                case enums_default222.PropertyIdentifier.EXPECTED_SHED_LEVEL:
                  switch (tagNumber) {
                    case 0:
                    case 1:
                      tag = enums_default222.ApplicationTag.UNSIGNED_INTEGER;
                      break;
                    case 2:
                      tag = enums_default222.ApplicationTag.REAL;
                      break;
                    default:
                      break;
                  }
                  break;
                case enums_default222.PropertyIdentifier.ACTION:
                  switch (tagNumber) {
                    case 0:
                    case 1:
                      tag = enums_default222.ApplicationTag.OBJECTIDENTIFIER;
                      break;
                    case 2:
                      tag = enums_default222.ApplicationTag.ENUMERATED;
                      break;
                    case 3:
                    case 5:
                    case 6:
                      tag = enums_default222.ApplicationTag.UNSIGNED_INTEGER;
                      break;
                    case 7:
                    case 8:
                      tag = enums_default222.ApplicationTag.BOOLEAN;
                      break;
                    default:
                      break;
                  }
                  break;
                case enums_default222.PropertyIdentifier.LIST_OF_GROUP_MEMBERS:
                  switch (tagNumber) {
                    case 0:
                      tag = enums_default222.ApplicationTag.OBJECTIDENTIFIER;
                      break;
                    default:
                      break;
                  }
                  break;
                case enums_default222.PropertyIdentifier.EXCEPTION_SCHEDULE:
                  switch (tagNumber) {
                    case 1:
                      tag = enums_default222.ApplicationTag.OBJECTIDENTIFIER;
                      break;
                    case 3:
                      tag = enums_default222.ApplicationTag.UNSIGNED_INTEGER;
                      break;
                    default:
                      break;
                  }
                  break;
                case enums_default222.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY:
                  switch (tagNumber) {
                    case 0:
                    case 3:
                      tag = enums_default222.ApplicationTag.OBJECTIDENTIFIER;
                      break;
                    case 1:
                      tag = enums_default222.ApplicationTag.ENUMERATED;
                      break;
                    case 2:
                      tag = enums_default222.ApplicationTag.UNSIGNED_INTEGER;
                      break;
                    default:
                      break;
                  }
                  break;
                case enums_default222.PropertyIdentifier.SUBORDINATE_LIST:
                  switch (tagNumber) {
                    case 0:
                    case 1:
                      tag = enums_default222.ApplicationTag.OBJECTIDENTIFIER;
                      break;
                    default:
                      break;
                  }
                  break;
                case enums_default222.PropertyIdentifier.RECIPIENT_LIST:
                  switch (tagNumber) {
                    case 0:
                      tag = enums_default222.ApplicationTag.OBJECTIDENTIFIER;
                      break;
                    default:
                      break;
                  }
                  break;
                case enums_default222.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS:
                  switch (tagNumber) {
                    case 0:
                    case 1:
                      break;
                    case 2:
                      tag = enums_default222.ApplicationTag.BOOLEAN;
                      break;
                    case 3:
                      tag = enums_default222.ApplicationTag.UNSIGNED_INTEGER;
                      break;
                    case 4:
                      tag = enums_default222.ApplicationTag.REAL;
                      break;
                    default:
                      break;
                  }
                  break;
                default:
                  break;
              }
              return tag;
            };
            var decodeDeviceObjPropertyRef222 = (buffer, offset, NOTUSEDARG = 0) => {
              let len = 0;
              let arrayIndex = enums_default222.ASN1_ARRAY_ALL;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              let objectId = decodeObjectId222(buffer, offset + len);
              len += objectId.len;
              let result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              let id = decodeEnumerated222(buffer, offset + len, result.value);
              len += id.len;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              if (result.tagNumber === 2) {
                len += result.len;
                arrayIndex = decodeUnsigned222(buffer, offset + len, result.value);
                len += arrayIndex.len;
              }
              if (decodeIsContextTag222(buffer, offset + len, 3)) {
                if (!isClosingTag222(buffer[offset + len])) {
                  len++;
                  objectId = decodeObjectId222(buffer, offset + len);
                  len += objectId.len;
                }
              }
              return {
                len,
                value: {
                  objectId,
                  id
                }
              };
            };
            var decodeReadAccessSpecification222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              let decodedValue = decodeObjectId222(buffer, offset + len);
              value.objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              len += decodedValue.len;
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              const propertyIdAndArrayIndex = [];
              while (apduLen - len > 1 && !decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                let propertyRef = {};
                if (!isContextSpecific222(buffer[offset + len])) {
                  return void 0;
                }
                let result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 0) {
                  return void 0;
                }
                if (len + result.value >= apduLen) {
                  return void 0;
                }
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                propertyRef.id = decodedValue.value;
                len += decodedValue.len;
                propertyRef.index = enums_default222.ASN1_ARRAY_ALL;
                if (isContextSpecific222(buffer[offset + len]) && !isClosingTag222(buffer[offset + len])) {
                  const tmp = decodeTagNumberAndValue222(buffer, offset + len);
                  if (tmp.tagNumber === 1) {
                    len += tmp.len;
                    if (len + tmp.value >= apduLen) {
                      return void 0;
                    }
                    decodedValue = decodeUnsigned222(buffer, offset + len, tmp.value);
                    propertyRef.index = decodedValue.value;
                    len += decodedValue.len;
                  }
                }
                propertyIdAndArrayIndex.push(propertyRef);
              }
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              value.properties = propertyIdAndArrayIndex;
              return {
                len,
                value
              };
            };
            var decodeCovSubscription222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              let result;
              let decodedValue;
              value.recipient = {};
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== enums_default222.ApplicationTag.UNSIGNED_INTEGER) {
                return void 0;
              }
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.recipient.net = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== enums_default222.ApplicationTag.OCTET_STRING) {
                return void 0;
              }
              decodedValue = decodeOctetString222(
                buffer,
                offset + len,
                apduLen,
                0,
                result.value
              );
              len += decodedValue.len;
              value.recipient.adr = decodedValue.value;
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.subscriptionProcessId = decodedValue.value;
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 0) {
                return void 0;
              }
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.monitoredObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.monitoredProperty = {};
              value.monitoredProperty.id = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              if (result.tagNumber === 2) {
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.monitoredProperty.index = decodedValue.value;
              } else {
                value.monitoredProperty.index = enums_default222.ASN1_ARRAY_ALL;
              }
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 2) {
                return void 0;
              }
              value.issueConfirmedNotifications = buffer[offset + len] > 0;
              len++;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 3) {
                return void 0;
              }
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.timeRemaining = decodedValue.value;
              if (len < apduLen && !isClosingTag222(buffer[offset + len])) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 4) {
                  return void 0;
                }
                decodedValue = decodeReal222(buffer, offset + len);
                len += decodedValue.len;
                value.covIncrement = decodedValue.value;
              }
              return {
                len,
                value
              };
            };
            var decodeCalendarDate222 = (buffer, offset) => {
              return {
                len: 4,
                year: buffer[offset],
                month: buffer[offset + 1],
                day: buffer[offset + 2],
                wday: buffer[offset + 3]
              };
            };
            var decodeCalendarDateRange222 = (buffer, offset) => {
              let len = 1;
              const startDate = decodeDate222(buffer, offset + len);
              len += startDate.len + 1;
              const endDate = decodeDate222(buffer, offset + len);
              len += endDate.len + 1;
              return {
                len,
                startDate,
                endDate
              };
            };
            var decodeCalendarWeekDay222 = (buffer, offset) => {
              return {
                len: 3,
                month: buffer[offset],
                week: buffer[offset + 1],
                wday: buffer[offset + 2]
              };
            };
            var decodeCalendar222 = (buffer, offset, apduLen) => {
              let len = 0;
              const entries = [];
              let decodedValue;
              while (len < apduLen) {
                const result = decodeTagNumber222(buffer, offset + len);
                len += result.len;
                switch (result.tagNumber) {
                  case 0:
                    decodedValue = decodeCalendarDate222(buffer, offset + len);
                    len += decodedValue.len;
                    entries.push(decodedValue);
                    break;
                  case 1:
                    decodedValue = decodeCalendarDateRange222(buffer, offset + len);
                    len += decodedValue.len;
                    entries.push(decodedValue);
                    break;
                  case 2:
                    decodedValue = decodeCalendarWeekDay222(buffer, offset + len);
                    len += decodedValue.len;
                    entries.push(decodedValue);
                    break;
                  default:
                    return {
                      len: len - 1,
                      value: entries
                    };
                }
              }
            };
            var bacappDecodeContextApplicationData222 = (buffer, offset, maxOffset, objectType, propertyId) => {
              let len = 0;
              let result;
              if (isContextSpecific222(buffer[offset])) {
                if (propertyId === enums_default222.PropertyIdentifier.LIST_OF_GROUP_MEMBERS) {
                  result = decodeReadAccessSpecification222(buffer, offset, maxOffset);
                  if (!result) {
                    return void 0;
                  }
                  return {
                    type: enums_default222.ApplicationTag.READ_ACCESS_SPECIFICATION,
                    value: result.value,
                    len: result.len
                  };
                } else if (propertyId === enums_default222.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS) {
                  result = decodeCovSubscription222(buffer, offset, maxOffset);
                  if (!result) {
                    return void 0;
                  }
                  return {
                    type: enums_default222.ApplicationTag.COV_SUBSCRIPTION,
                    value: result.value,
                    len: result.len
                  };
                } else if (objectType === enums_default222.ObjectType.GROUP && propertyId === enums_default222.PropertyIdentifier.PRESENT_VALUE) {
                  result = decodeReadAccessResult222(buffer, offset, maxOffset);
                  if (!result) {
                    return void 0;
                  }
                  return {
                    type: enums_default222.ApplicationTag.READ_ACCESS_RESULT,
                    value: result.value,
                    len: result.len
                  };
                } else if (propertyId === enums_default222.PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES || propertyId === enums_default222.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY || propertyId === enums_default222.PropertyIdentifier.OBJECT_PROPERTY_REFERENCE) {
                  result = decodeDeviceObjPropertyRef222(buffer, offset, maxOffset);
                  if (!result) {
                    return void 0;
                  }
                  return {
                    type: enums_default222.ApplicationTag.OBJECT_PROPERTY_REFERENCE,
                    value: result.value,
                    len: result.len
                  };
                } else if (propertyId === enums_default222.PropertyIdentifier.DATE_LIST) {
                  result = decodeCalendar222(buffer, offset, maxOffset);
                  if (!result) {
                    return void 0;
                  }
                  return {
                    type: enums_default222.ApplicationTag.CONTEXT_SPECIFIC_DECODED,
                    value: result.value,
                    len: result.len
                  };
                } else if (propertyId === enums_default222.PropertyIdentifier.EVENT_TIME_STAMPS) {
                  let subEvtResult;
                  let evtResult = decodeTagNumberAndValue222(buffer, offset + len);
                  len += 1;
                  if (evtResult.tagNumber === 0) {
                    subEvtResult = decodeBacnetTime222(buffer, offset + 1);
                    return {
                      type: enums_default222.ApplicationTag.TIMESTAMP,
                      value: subEvtResult.value,
                      len: subEvtResult.len + 1
                    };
                  } else if (evtResult.tagNumber === 1) {
                    subEvtResult = decodeUnsigned222(buffer, offset + len, evtResult.value);
                    return {
                      type: enums_default222.ApplicationTag.UNSIGNED_INTEGER,
                      value: subEvtResult.value,
                      len: subEvtResult.len + 1
                    };
                  } else if (evtResult.tagNumber === 2) {
                    subEvtResult = decodeBacnetDatetime222(buffer, offset + len);
                    return {
                      type: enums_default222.ApplicationTag.TIMESTAMP,
                      value: subEvtResult.value,
                      len: subEvtResult.len + 2
                    };
                  } else {
                    return void 0;
                  }
                }
                const list = [];
                let tagResult = decodeTagNumberAndValue222(buffer, offset + len);
                let multipleValues = isOpeningTag222(buffer[offset + len]);
                while (len + offset <= maxOffset && !isClosingTag222(buffer[offset + len])) {
                  let subResult = decodeTagNumberAndValue222(buffer, offset + len);
                  if (!subResult) {
                    return void 0;
                  }
                  if (subResult.value === 0) {
                    len += subResult.len;
                    result = bacappDecodeApplicationData222(
                      buffer,
                      offset + len,
                      maxOffset,
                      enums_default222.ASN1_MAX_OBJECT_TYPE,
                      enums_default222.ASN1_MAX_PROPERTY_ID
                    );
                    if (!result) {
                      return void 0;
                    }
                    list.push(result);
                    len += result.len;
                  } else {
                    const overrideTagNumber = bacappContextTagType222(
                      propertyId,
                      subResult.tagNumber
                    );
                    if (overrideTagNumber !== enums_default222.ASN1_MAX_APPLICATION_TAG) {
                      subResult.tagNumber = overrideTagNumber;
                    }
                    let bacappResult = bacappDecodeData222(
                      buffer,
                      offset + len + subResult.len,
                      maxOffset,
                      subResult.tagNumber,
                      subResult.value
                    );
                    if (!bacappResult) {
                      return void 0;
                    }
                    if (bacappResult.len === subResult.value) {
                      let resObj = {
                        value: bacappResult.value,
                        type: bacappResult.type
                      };
                      if (bacappResult.encoding !== void 0)
                        resObj.encoding = bacappResult.encoding;
                      list.push(resObj);
                      len += subResult.len + subResult.value;
                    } else {
                      list.push({
                        value: buffer.slice(
                          offset + len + subResult.len,
                          offset + len + subResult.len + subResult.value
                        ),
                        type: enums_default222.ApplicationTag.CONTEXT_SPECIFIC_ENCODED
                      });
                      len += subResult.len + subResult.value;
                    }
                  }
                  if (multipleValues === false) {
                    return {
                      len,
                      value: list[0],
                      type: enums_default222.ApplicationTag.CONTEXT_SPECIFIC_DECODED
                    };
                  }
                }
                if (len + offset > maxOffset) {
                  return void 0;
                }
                if (decodeIsClosingTagNumber222(buffer, offset + len, tagResult.tagNumber)) {
                  len++;
                }
                return {
                  len,
                  value: list,
                  type: enums_default222.ApplicationTag.CONTEXT_SPECIFIC_DECODED
                };
              }
              return void 0;
            };
            var bacappEncodeTimestamp222 = (buffer, value) => {
              switch (value.type) {
                case enums_default222.TimeStamp.TIME:
                  encodeContextTime222(buffer, 0, value.value);
                  break;
                case enums_default222.TimeStamp.SEQUENCE_NUMBER:
                  encodeContextUnsigned222(buffer, 1, value.value);
                  break;
                case enums_default222.TimeStamp.DATETIME:
                  bacappEncodeContextDatetime222(buffer, 2, value.value);
                  break;
                default:
                  throw new Error("NOT_IMPLEMENTED");
              }
            };
            var bacappEncodeContextTimestamp222 = (buffer, tagNumber, value) => {
              encodeOpeningTag222(buffer, tagNumber);
              bacappEncodeTimestamp222(buffer, value);
              encodeClosingTag222(buffer, tagNumber);
            };
            var decodeContextCharacterString222 = (buffer, offset, maxLength, tagNumber) => {
              let len = 0;
              if (!decodeIsContextTag222(buffer, offset + len, tagNumber)) {
                return void 0;
              }
              const result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              const decodedValue = multiCharsetCharacterstringDecode222(
                buffer,
                offset + 1 + len,
                maxLength,
                buffer[offset + len],
                result.value - 1
              );
              if (!decodedValue) {
                return void 0;
              }
              len += result.value;
              return {
                len,
                value: decodedValue.value,
                encoding: decodedValue.encoding
              };
            };
            var decodeIsContextTagWithLength222 = (buffer, offset, tagNumber) => {
              const result = decodeTagNumber222(buffer, offset);
              return {
                len: result.len,
                value: isContextSpecific222(buffer[offset]) && result.tagNumber === tagNumber
              };
            };
            var decodeContextObjectId222 = (buffer, offset, tagNumber) => {
              const result = decodeIsContextTagWithLength222(buffer, offset, tagNumber);
              if (!result.value) {
                return void 0;
              }
              const decodedValue = decodeObjectId222(buffer, offset + result.len);
              decodedValue.len = decodedValue.len + result.len;
              return decodedValue;
            };
            var encodeBacnetCharacterString222 = (buffer, value, encoding) => {
              encoding = encoding || enums_default222.CharacterStringEncoding.UTF_8;
              buffer.buffer[buffer.offset++] = encoding;
              const bufEncoded = import_iconv_lite222.default.encode(value, getEncodingType222(encoding));
              buffer.offset += bufEncoded.copy(buffer.buffer, buffer.offset);
            };
            var encodeApplicationCharacterString222 = (buffer, value, encoding) => {
              const tmp = getBuffer222();
              encodeBacnetCharacterString222(tmp, value, encoding);
              encodeTag222(buffer, enums_default222.ApplicationTag.CHARACTER_STRING, false, tmp.offset);
              tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
              buffer.offset += tmp.offset;
            };
            var encodeContextCharacterString222 = (buffer, tagNumber, value, encoding) => {
              const tmp = getBuffer222();
              encodeBacnetCharacterString222(tmp, value, encoding);
              encodeTag222(buffer, tagNumber, true, tmp.offset);
              tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
              buffer.offset += tmp.offset;
            };
            var encode3322 = (buffer, objectId, propertyId, arrayIndex, values) => {
              encodeContextObjectId222(buffer, 0, objectId.type, objectId.instance);
              encodeContextEnumerated222(buffer, 1, propertyId);
              if (arrayIndex !== ASN1_ARRAY_ALL222) {
                encodeContextUnsigned222(buffer, 2, arrayIndex);
              }
              encodeOpeningTag222(buffer, 3);
              values.forEach((value) => {
                bacappEncodeApplicationData222(buffer, value);
              });
              encodeClosingTag222(buffer, 3);
            };
            var decode3322 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let value = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.property = { id: decodedValue.value };
              if (len < apduLen && decodeIsContextTag222(buffer, offset + len, 2)) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.property.index = decodedValue.value;
              } else {
                value.property.index = ASN1_ARRAY_ALL222;
              }
              const values = [];
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 3)) {
                return void 0;
              }
              len++;
              while (apduLen - len > 1) {
                result = bacappDecodeApplicationData222(
                  buffer,
                  offset + len,
                  apduLen + offset,
                  value.objectId.type,
                  value.property.id
                );
                if (!result) {
                  return void 0;
                }
                len += result.len;
                delete result.len;
                values.push(result);
              }
              value.values = values;
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 3)) {
                return void 0;
              }
              len++;
              value.len = len;
              return value;
            };
            var alarm_acknowledge_exports222 = {};
            __export222(alarm_acknowledge_exports222, {
              decode: () => decode21022,
              encode: () => encode21022
            });
            var encode21022 = (buffer, ackProcessId, eventObjectId, eventStateAcknowledged, ackSource, eventTimeStamp, ackTimeStamp) => {
              encodeContextUnsigned222(buffer, 0, ackProcessId);
              encodeContextObjectId222(
                buffer,
                1,
                eventObjectId.type,
                eventObjectId.instance
              );
              encodeContextEnumerated222(buffer, 2, eventStateAcknowledged);
              bacappEncodeContextTimestamp222(buffer, 3, eventTimeStamp);
              encodeContextCharacterString222(buffer, 4, ackSource);
              bacappEncodeContextTimestamp222(buffer, 5, ackTimeStamp);
            };
            var decode21022 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              let result;
              let decodedValue;
              let date;
              let time;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.acknowledgedProcessId = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.eventObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.eventStateAcknowledged = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber === 0) {
                decodedValue = decodeBacnetTime222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.eventTimeStamp = decodedValue.value;
              } else if (result.tagNumber === 1) {
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.eventTimeStamp = decodedValue.value;
              } else if (result.tagNumber === 2) {
                date = decodeApplicationDate222(buffer, offset + len);
                len += date.len;
                date = date.value.value;
                time = decodeApplicationTime222(buffer, offset + len);
                len += time.len;
                time = time.value.value;
                value.eventTimeStamp = new Date(
                  date.getFullYear(),
                  date.getMonth(),
                  date.getDate(),
                  time.getHours(),
                  time.getMinutes(),
                  time.getSeconds(),
                  time.getMilliseconds()
                );
                len++;
              }
              len++;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeCharacterString222(
                buffer,
                offset + len,
                apduLen - (offset + len),
                result.value
              );
              value.acknowledgeSource = decodedValue.value;
              len += decodedValue.len;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber === 0) {
                decodedValue = decodeBacnetTime222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.acknowledgeTimeStamp = decodedValue.value;
              } else if (result.tagNumber === 1) {
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.acknowledgeTimeStamp = decodedValue.value;
              } else if (result.tagNumber === 2) {
                date = decodeApplicationDate222(buffer, offset + len);
                len += date.len;
                date = date.value.value;
                time = decodeApplicationTime222(buffer, offset + len);
                len += time.len;
                time = time.value.value;
                value.acknowledgeTimeStamp = new Date(
                  date.getFullYear(),
                  date.getMonth(),
                  date.getDate(),
                  time.getHours(),
                  time.getMinutes(),
                  time.getSeconds(),
                  time.getMilliseconds()
                );
                len++;
              }
              len++;
              value.len = len;
              return value;
            };
            var alarm_summary_exports222 = {};
            __export222(alarm_summary_exports222, {
              decode: () => decode3422,
              encode: () => encode3422
            });
            var encode3422 = (buffer, alarms) => {
              alarms.forEach((alarm) => {
                encodeContextObjectId222(
                  buffer,
                  12,
                  alarm.objectId.type,
                  alarm.objectId.instance
                );
                encodeContextEnumerated222(buffer, 9, alarm.alarmState);
                encodeContextBitstring222(buffer, 8, alarm.acknowledgedTransitions);
              });
            };
            var decode3422 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              const alarms = [];
              while (apduLen - 3 - len > 0) {
                let value = {};
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeObjectId222(buffer, offset + len);
                len += decodedValue.len;
                value.objectId = {
                  type: decodedValue.objectType,
                  instance: decodedValue.instance
                };
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.alarmState = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeBitstring222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.acknowledgedTransitions = decodedValue.value;
                alarms.push(value);
              }
              return {
                len,
                alarms
              };
            };
            var atomic_read_file_exports222 = {};
            __export222(atomic_read_file_exports222, {
              decode: () => decode4222,
              decodeAcknowledge: () => decodeAcknowledge822,
              encode: () => encode4222,
              encodeAcknowledge: () => encodeAcknowledge922
            });
            var encode4222 = (buffer, isStream, objectId, position, count) => {
              encodeApplicationObjectId222(buffer, objectId.type, objectId.instance);
              if (isStream) {
                encodeOpeningTag222(buffer, 0);
                encodeApplicationSigned222(buffer, position);
                encodeApplicationUnsigned222(buffer, count);
                encodeClosingTag222(buffer, 0);
              } else {
                encodeOpeningTag222(buffer, 1);
                encodeApplicationSigned222(buffer, position);
                encodeApplicationUnsigned222(buffer, count);
                encodeClosingTag222(buffer, 1);
              }
            };
            var decode4222 = (buffer, offset) => {
              let len = 0;
              let result;
              let decodedValue;
              let isStream = true;
              let objectId = {};
              let position = -1;
              let count = 0;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 12) {
                return void 0;
              }
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
              if (decodeIsOpeningTagNumber222(buffer, offset + len, 0)) {
                isStream = true;
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 3) {
                  return void 0;
                }
                decodedValue = decodeSigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                position = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 2) {
                  return void 0;
                }
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                count = decodedValue.value;
                if (!decodeIsClosingTagNumber222(buffer, offset + len, 0)) {
                  return void 0;
                }
                len++;
              } else if (decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                isStream = false;
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 3) {
                  return void 0;
                }
                decodedValue = decodeSigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                position = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 2) {
                  return void 0;
                }
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                count = decodedValue.value;
                if (!decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                  return void 0;
                }
                len++;
              } else {
                return void 0;
              }
              return {
                len,
                isStream,
                objectId,
                position,
                count
              };
            };
            var encodeAcknowledge922 = (buffer, isStream, endOfFile, position, blockCount, blocks, counts) => {
              encodeApplicationBoolean222(buffer, endOfFile);
              if (isStream) {
                encodeOpeningTag222(buffer, 0);
                encodeApplicationSigned222(buffer, position);
                encodeApplicationOctetString222(buffer, blocks[0], 0, counts[0]);
                encodeClosingTag222(buffer, 0);
              } else {
                encodeOpeningTag222(buffer, 1);
                encodeApplicationSigned222(buffer, position);
                encodeApplicationUnsigned222(buffer, blockCount);
                for (let i = 0; i < blockCount; i++) {
                  encodeApplicationOctetString222(buffer, blocks[i], 0, counts[i]);
                }
                encodeClosingTag222(buffer, 1);
              }
            };
            var decodeAcknowledge822 = (buffer, offset, length = 0) => {
              let len = length;
              let result;
              let decodedValue;
              let endOfFile;
              let isStream;
              let position;
              let targetBuffer;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              endOfFile = result.value > 0;
              if (decodeIsOpeningTagNumber222(buffer, offset + len, 0)) {
                isStream = true;
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 3) {
                  return void 0;
                }
                decodedValue = decodeSigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                position = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 6) {
                  return void 0;
                }
                targetBuffer = buffer.slice(offset + len, offset + len + result.value);
                len += result.value;
                if (!decodeIsClosingTagNumber222(buffer, offset + len, 0)) {
                  return void 0;
                }
                len++;
              } else if (decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                isStream = false;
                throw new Error("NotImplemented");
              } else {
                return void 0;
              }
              return {
                len,
                endOfFile,
                isStream,
                position,
                buffer: targetBuffer
              };
            };
            var atomic_write_file_exports222 = {};
            __export222(atomic_write_file_exports222, {
              decode: () => decode5222,
              decodeAcknowledge: () => decodeAcknowledge2222,
              encode: () => encode5222,
              encodeAcknowledge: () => encodeAcknowledge2222
            });
            var encode5222 = (buffer, isStream, objectId, position, blocks) => {
              encodeApplicationObjectId222(buffer, objectId.type, objectId.instance);
              if (isStream) {
                encodeOpeningTag222(buffer, 0);
                encodeApplicationSigned222(buffer, position);
                encodeApplicationOctetString222(buffer, blocks[0], 0, blocks[0].length);
                encodeClosingTag222(buffer, 0);
              } else {
                encodeOpeningTag222(buffer, 1);
                encodeApplicationSigned222(buffer, position);
                encodeApplicationUnsigned222(buffer, blocks.length);
                for (let i = 0; i < blocks.length; i++) {
                  encodeApplicationOctetString222(
                    buffer,
                    blocks[i],
                    0,
                    blocks[i].length
                  );
                }
                encodeClosingTag222(buffer, 1);
              }
            };
            var decode5222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let isStream;
              let position;
              let blocks = [];
              let blockCount;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 12) {
                return void 0;
              }
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              let objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              if (decodeIsOpeningTagNumber222(buffer, offset + len, 0)) {
                isStream = true;
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 3) {
                  return void 0;
                }
                decodedValue = decodeSigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                position = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 6) {
                  return void 0;
                }
                decodedValue = decodeOctetString222(
                  buffer,
                  offset + len,
                  apduLen,
                  0,
                  result.value
                );
                len += decodedValue.len;
                blocks.push(decodedValue.value);
                if (!decodeIsClosingTagNumber222(buffer, offset + len, 0)) {
                  return void 0;
                }
                len++;
              } else if (decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                isStream = false;
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 3) {
                  return void 0;
                }
                decodedValue = decodeSigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                position = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 2) {
                  return void 0;
                }
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                blockCount = decodedValue.value;
                for (let i = 0; i < blockCount; i++) {
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  if (result.tagNumber !== 6) {
                    return void 0;
                  }
                  decodedValue = decodeOctetString222(
                    buffer,
                    offset + len,
                    apduLen,
                    0,
                    result.value
                  );
                  len += decodedValue.len;
                  blocks.push(decodedValue.value);
                }
                if (!decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                  return void 0;
                }
                len++;
              } else {
                return void 0;
              }
              return {
                len,
                isStream,
                objectId,
                position,
                blocks
              };
            };
            var encodeAcknowledge2222 = (buffer, isStream, position) => {
              if (isStream) {
                encodeContextSigned222(buffer, 0, position);
              } else {
                encodeContextSigned222(buffer, 1, position);
              }
            };
            var decodeAcknowledge2222 = (buffer, offset, length = 0) => {
              let len = length;
              let isStream = false;
              let position = 0;
              let decodedValue;
              const result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber === 0) {
                isStream = true;
              } else if (result.tagNumber === 1) {
                isStream = false;
              } else {
                return void 0;
              }
              decodedValue = decodeSigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              position = decodedValue.value;
              return {
                len,
                isStream,
                position
              };
            };
            var cov_notify_exports222 = {};
            __export222(cov_notify_exports222, {
              decode: () => decode6222,
              encode: () => encode6222
            });
            var encode6222 = (buffer, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) => {
              encodeContextUnsigned222(buffer, 0, subscriberProcessId);
              encodeContextObjectId222(
                buffer,
                1,
                8,
                initiatingDeviceId
              );
              encodeContextObjectId222(
                buffer,
                2,
                monitoredObjectId.type,
                monitoredObjectId.instance
              );
              encodeContextUnsigned222(buffer, 3, timeRemaining);
              encodeOpeningTag222(buffer, 4);
              values.forEach((value) => {
                encodeContextEnumerated222(buffer, 0, value.property.id);
                if (value.property.index === ASN1_ARRAY_ALL222) {
                  encodeContextUnsigned222(buffer, 1, value.property.index);
                }
                encodeOpeningTag222(buffer, 2);
                value.value.forEach((v) => {
                  bacappEncodeApplicationData222(buffer, v);
                });
                encodeClosingTag222(buffer, 2);
                if (value.priority === ASN1_NO_PRIORITY222) {
                  encodeContextUnsigned222(buffer, 3, value.priority);
                }
              });
              encodeClosingTag222(buffer, 4);
            };
            var decode6222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              const subscriberProcessId = decodedValue.value;
              if (!decodeIsContextTag222(buffer, offset + len, 1)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              const initiatingDeviceId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              if (!decodeIsContextTag222(buffer, offset + len, 2)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              const monitoredObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              if (!decodeIsContextTag222(buffer, offset + len, 3)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              const timeRemaining = decodedValue.value;
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 4)) {
                return void 0;
              }
              len++;
              const values = [];
              while (apduLen - len > 1 && !decodeIsClosingTagNumber222(buffer, offset + len, 4)) {
                let newEntry = {};
                newEntry.property = {};
                if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                  return void 0;
                }
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                newEntry.property.id = decodedValue.value;
                if (decodeIsContextTag222(buffer, offset + len, 1)) {
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  newEntry.property.index = decodedValue.value;
                } else {
                  newEntry.property.index = ASN1_ARRAY_ALL222;
                }
                if (!decodeIsOpeningTagNumber222(buffer, offset + len, 2)) {
                  return void 0;
                }
                len++;
                const properties = [];
                while (apduLen - len > 1 && !decodeIsClosingTagNumber222(buffer, offset + len, 2)) {
                  decodedValue = bacappDecodeApplicationData222(
                    buffer,
                    offset + len,
                    apduLen + offset,
                    monitoredObjectId.type,
                    newEntry.property.id
                  );
                  if (!decodedValue) {
                    return void 0;
                  }
                  len += decodedValue.len;
                  delete decodedValue.len;
                  properties.push(decodedValue);
                }
                newEntry.value = properties;
                len++;
                if (decodeIsContextTag222(buffer, offset + len, 3)) {
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  newEntry.priority = decodedValue.value;
                } else {
                  newEntry.priority = ASN1_NO_PRIORITY222;
                }
                values.push(newEntry);
              }
              return {
                len,
                subscriberProcessId,
                initiatingDeviceId,
                monitoredObjectId,
                timeRemaining,
                values
              };
            };
            var create_object_exports222 = {};
            __export222(create_object_exports222, {
              decode: () => decode7222,
              encode: () => encode7222,
              encodeAcknowledge: () => encodeAcknowledge3222
            });
            var encode7222 = (buffer, objectId, values) => {
              encodeOpeningTag222(buffer, 0);
              encodeContextObjectId222(buffer, 1, objectId.type, objectId.instance);
              encodeClosingTag222(buffer, 0);
              encodeOpeningTag222(buffer, 1);
              values.forEach((propertyValue) => {
                encodeContextEnumerated222(buffer, 0, propertyValue.property.id);
                if (propertyValue.property.index !== ASN1_ARRAY_ALL222) {
                  encodeContextUnsigned222(buffer, 1, propertyValue.property.index);
                }
                encodeOpeningTag222(buffer, 2);
                propertyValue.value.forEach((value) => {
                  bacappEncodeApplicationData222(buffer, value);
                });
                encodeClosingTag222(buffer, 2);
                if (propertyValue.priority !== ASN1_NO_PRIORITY222) {
                  encodeContextUnsigned222(buffer, 3, propertyValue.priority);
                }
              });
              encodeClosingTag222(buffer, 1);
            };
            var decode7222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let objectId;
              const valueList = [];
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber === 0 && apduLen > len) {
                apduLen -= len;
                if (apduLen < 4) {
                  return void 0;
                }
                decodedValue = decodeContextObjectId222(buffer, offset + len, 1);
                len += decodedValue.len;
                objectId = {
                  type: decodedValue.objectType,
                  instance: decodedValue.instance
                };
              } else {
                return void 0;
              }
              if (decodeIsClosingTag222(buffer, offset + len)) {
                len++;
              }
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              while (apduLen - len > 1) {
                let newEntry = {};
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 0) {
                  return void 0;
                }
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                let propertyId = decodedValue.value;
                let arraIndex = ASN1_ARRAY_ALL222;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber === 1) {
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  arraIndex += decodedValue.value;
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                }
                newEntry.property = { id: propertyId, index: arraIndex };
                if (result.tagNumber === 2 && decodeIsOpeningTag222(buffer, offset + len - 1)) {
                  const values = [];
                  while (!decodeIsClosingTag222(buffer, offset + len)) {
                    decodedValue = bacappDecodeApplicationData222(
                      buffer,
                      offset + len,
                      apduLen + offset,
                      objectId.type,
                      propertyId
                    );
                    if (!decodedValue) {
                      return void 0;
                    }
                    len += decodedValue.len;
                    delete decodedValue.len;
                    values.push(decodedValue);
                  }
                  len++;
                  newEntry.value = values;
                } else {
                  return void 0;
                }
                valueList.push(newEntry);
              }
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              return {
                len,
                objectId,
                values: valueList
              };
            };
            var encodeAcknowledge3222 = (buffer, objectId) => {
              encodeApplicationObjectId222(buffer, objectId.type, objectId.instance);
            };
            var delete_object_exports222 = {};
            __export222(delete_object_exports222, {
              decode: () => decode8222,
              encode: () => encode8222
            });
            var decode8222 = (buffer, offset, apduLen) => {
              const result = decodeTagNumberAndValue222(buffer, offset);
              if (result.tagNumber !== 12) {
                return void 0;
              }
              let len = 1;
              const value = decodeObjectId222(buffer, offset + len);
              len += value.len;
              if (len !== apduLen) {
                return void 0;
              }
              value.len = len;
              return value;
            };
            var encode8222 = (buffer, objectId) => {
              encodeApplicationObjectId222(buffer, objectId.type, objectId.instance);
            };
            var device_communication_control_exports222 = {};
            __export222(device_communication_control_exports222, {
              decode: () => decode9222,
              encode: () => encode9222
            });
            var encode9222 = (buffer, timeDuration, enableDisable, password) => {
              if (timeDuration > 0) {
                encodeContextUnsigned222(buffer, 0, timeDuration);
              }
              encodeContextEnumerated222(buffer, 1, enableDisable);
              if (password && password !== "") {
                encodeContextCharacterString222(buffer, 2, password);
              }
            };
            var decode9222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              let decodedValue;
              let result;
              if (decodeIsContextTag222(buffer, offset + len, 0)) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                value.timeDuration = decodedValue.value;
                len += decodedValue.len;
              }
              if (!decodeIsContextTag222(buffer, offset + len, 1)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              value.enableDisable = decodedValue.value;
              len += decodedValue.len;
              if (len < apduLen) {
                if (!decodeIsContextTag222(buffer, offset + len, 2)) {
                  return void 0;
                }
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeCharacterString222(
                  buffer,
                  offset + len,
                  apduLen - (offset + len),
                  result.value
                );
                value.password = decodedValue.value;
                len += decodedValue.len;
              }
              value.len = len;
              return value;
            };
            var error_exports222 = {};
            __export222(error_exports222, {
              buildMessage: () => buildMessage222,
              decode: () => decode10222,
              encode: () => encode10222
            });
            var encode10222 = (buffer, errorClass, errorCode) => {
              encodeApplicationEnumerated222(buffer, errorClass);
              encodeApplicationEnumerated222(buffer, errorCode);
            };
            var decode10222 = (buffer, offset) => {
              const orgOffset = offset;
              let result;
              result = decodeTagNumberAndValue222(buffer, offset);
              offset += result.len;
              const errorClass = decodeEnumerated222(buffer, offset, result.value);
              offset += errorClass.len;
              result = decodeTagNumberAndValue222(buffer, offset);
              offset += result.len;
              const errorCode = decodeEnumerated222(buffer, offset, result.value);
              offset += errorClass.len;
              return {
                len: offset - orgOffset,
                class: errorClass.value,
                code: errorCode.value
              };
            };
            var buildMessage222 = function(result) {
              return "BacnetError Class: " + ErrorClassName222[result.class] + " (" + result.class + ") Code: " + ErrorCodeName222[result.code] + " (" + result.code + ")";
            };
            var event_information_exports222 = {};
            __export222(event_information_exports222, {
              decode: () => decode11222,
              encode: () => encode11222
            });
            var encode11222 = (buffer, events, moreEvents) => {
              encodeOpeningTag222(buffer, 0);
              events.forEach((event) => {
                encodeContextObjectId222(
                  buffer,
                  0,
                  event.objectId.type,
                  event.objectId.instance
                );
                encodeContextEnumerated222(buffer, 1, event.eventState);
                encodeContextBitstring222(buffer, 2, event.acknowledgedTransitions);
                encodeOpeningTag222(buffer, 3);
                for (let i = 0; i < 3; i++) {
                  encodeApplicationDate222(buffer, event.eventTimeStamps[i]);
                  encodeApplicationTime222(buffer, event.eventTimeStamps[i]);
                }
                encodeClosingTag222(buffer, 3);
                encodeContextEnumerated222(buffer, 4, event.notifyType);
                encodeContextBitstring222(buffer, 5, event.eventEnable);
                encodeOpeningTag222(buffer, 6);
                for (let i = 0; i < 3; i++) {
                  encodeApplicationUnsigned222(buffer, event.eventPriorities[i]);
                }
                encodeClosingTag222(buffer, 6);
              });
              encodeClosingTag222(buffer, 0);
              encodeContextBoolean222(buffer, 1, moreEvents);
            };
            var decode11222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              len++;
              const alarms = [];
              let moreEvents;
              while (apduLen - 3 - len > 0) {
                let value = {};
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeObjectId222(buffer, offset + len);
                len += decodedValue.len;
                value.objectId = {
                  type: decodedValue.objectType,
                  instance: decodedValue.instance
                };
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.eventState = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeBitstring222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.acknowledgedTransitions = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                value.eventTimeStamps = [];
                for (let i = 0; i < 3; i++) {
                  if (result.tagNumber !== 0) {
                    decodedValue = decodeApplicationDate222(buffer, offset + len);
                    len += decodedValue.len;
                    const date = decodedValue.value.value;
                    decodedValue = decodeApplicationTime222(buffer, offset + len);
                    len += decodedValue.len;
                    const time = decodedValue.value.value;
                    value.eventTimeStamps[i] = new Date(
                      date.getFullYear(),
                      date.getMonth(),
                      date.getDate(),
                      time.getHours(),
                      time.getMinutes(),
                      time.getSeconds(),
                      time.getMilliseconds()
                    );
                  } else {
                    len += result.value;
                  }
                }
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.notifyType = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeBitstring222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.eventEnable = decodedValue.value;
                len++;
                value.eventPriorities = [];
                for (let i = 0; i < 3; i++) {
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  value.eventPriorities[i] = decodedValue.value;
                }
                len++;
                alarms.push(value);
              }
              moreEvents = buffer[apduLen - 1] === 1;
              return {
                len,
                alarms,
                moreEvents
              };
            };
            var event_notify_data_exports222 = {};
            __export222(event_notify_data_exports222, {
              decode: () => decode12222,
              encode: () => encode12222
            });
            var encode12222 = (buffer, data) => {
              encodeContextUnsigned222(buffer, 0, data.processId);
              encodeContextObjectId222(
                buffer,
                1,
                data.initiatingObjectId.type,
                data.initiatingObjectId.instance
              );
              encodeContextObjectId222(
                buffer,
                2,
                data.eventObjectId.type,
                data.eventObjectId.instance
              );
              bacappEncodeContextTimestamp222(buffer, 3, data.timeStamp);
              encodeContextUnsigned222(buffer, 4, data.notificationClass);
              encodeContextUnsigned222(buffer, 5, data.priority);
              encodeContextEnumerated222(buffer, 6, data.eventType);
              if (data.messageText && data.messageText !== "") {
                encodeContextCharacterString222(buffer, 7, data.messageText);
              }
              encodeContextEnumerated222(buffer, 8, data.notifyType);
              switch (data.notifyType) {
                case 0:
                case 1:
                  encodeContextBoolean222(buffer, 9, data.ackRequired);
                  encodeContextEnumerated222(buffer, 10, data.fromState);
                  break;
                default:
                  break;
              }
              encodeContextEnumerated222(buffer, 11, data.toState);
              switch (data.notifyType) {
                case 0:
                case 1:
                  encodeOpeningTag222(buffer, 12);
                  switch (data.eventType) {
                    case 0:
                      encodeOpeningTag222(buffer, 0);
                      encodeContextBitstring222(
                        buffer,
                        0,
                        data.changeOfBitstringReferencedBitString
                      );
                      encodeContextBitstring222(
                        buffer,
                        1,
                        data.changeOfBitstringStatusFlags
                      );
                      encodeClosingTag222(buffer, 0);
                      break;
                    case 1:
                      encodeOpeningTag222(buffer, 1);
                      encodeOpeningTag222(buffer, 0);
                      bacappEncodePropertyState222(buffer, data.changeOfStateNewState);
                      encodeClosingTag222(buffer, 0);
                      encodeContextBitstring222(
                        buffer,
                        1,
                        data.changeOfStateStatusFlags
                      );
                      encodeClosingTag222(buffer, 1);
                      break;
                    case 2:
                      encodeOpeningTag222(buffer, 2);
                      encodeOpeningTag222(buffer, 0);
                      switch (data.changeOfValueTag) {
                        case 0:
                          encodeContextReal222(
                            buffer,
                            1,
                            data.changeOfValueChangeValue
                          );
                          break;
                        case 1:
                          encodeContextBitstring222(
                            buffer,
                            0,
                            data.changeOfValueChangedBits
                          );
                          break;
                        default:
                          throw new Error("NotImplemented");
                      }
                      encodeClosingTag222(buffer, 0);
                      encodeContextBitstring222(
                        buffer,
                        1,
                        data.changeOfValueStatusFlags
                      );
                      encodeClosingTag222(buffer, 2);
                      break;
                    case 4:
                      encodeOpeningTag222(buffer, 4);
                      encodeContextReal222(buffer, 0, data.floatingLimitReferenceValue);
                      encodeContextBitstring222(
                        buffer,
                        1,
                        data.floatingLimitStatusFlags
                      );
                      encodeContextReal222(buffer, 2, data.floatingLimitSetPointValue);
                      encodeContextReal222(buffer, 3, data.floatingLimitErrorLimit);
                      encodeClosingTag222(buffer, 4);
                      break;
                    case 5:
                      encodeOpeningTag222(buffer, 5);
                      encodeContextReal222(buffer, 0, data.outOfRangeExceedingValue);
                      encodeContextBitstring222(buffer, 1, data.outOfRangeStatusFlags);
                      encodeContextReal222(buffer, 2, data.outOfRangeDeadband);
                      encodeContextReal222(buffer, 3, data.outOfRangeExceededLimit);
                      encodeClosingTag222(buffer, 5);
                      break;
                    case 8:
                      encodeOpeningTag222(buffer, 8);
                      encodeContextEnumerated222(
                        buffer,
                        0,
                        data.changeOfLifeSafetyNewState
                      );
                      encodeContextEnumerated222(
                        buffer,
                        1,
                        data.changeOfLifeSafetyNewMode
                      );
                      encodeContextBitstring222(
                        buffer,
                        2,
                        data.changeOfLifeSafetyStatusFlags
                      );
                      encodeContextEnumerated222(
                        buffer,
                        3,
                        data.changeOfLifeSafetyOperationExpected
                      );
                      encodeClosingTag222(buffer, 8);
                      break;
                    case 10:
                      encodeOpeningTag222(buffer, 10);
                      bacappEncodeContextDeviceObjPropertyRef222(
                        buffer,
                        0,
                        data.bufferReadyBufferProperty
                      );
                      encodeContextUnsigned222(
                        buffer,
                        1,
                        data.bufferReadyPreviousNotification
                      );
                      encodeContextUnsigned222(
                        buffer,
                        2,
                        data.bufferReadyCurrentNotification
                      );
                      encodeClosingTag222(buffer, 10);
                      break;
                    case 11:
                      encodeOpeningTag222(buffer, 11);
                      encodeContextUnsigned222(
                        buffer,
                        0,
                        data.unsignedRangeExceedingValue
                      );
                      encodeContextBitstring222(
                        buffer,
                        1,
                        data.unsignedRangeStatusFlags
                      );
                      encodeContextUnsigned222(
                        buffer,
                        2,
                        data.unsignedRangeExceededLimit
                      );
                      encodeClosingTag222(buffer, 11);
                      break;
                    case 9:
                    case 3:
                      throw new Error("NotImplemented");
                    default:
                      throw new Error("NotImplemented");
                  }
                  encodeClosingTag222(buffer, 12);
                  break;
                case 2:
                  throw new Error("NotImplemented");
                default:
                  break;
              }
            };
            var decode12222 = (buffer, offset) => {
              let len = 0;
              let result;
              let decodedValue;
              let eventData = {};
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              eventData.processId = decodedValue.value;
              if (!decodeIsContextTag222(buffer, offset + len, 1)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              eventData.initiatingObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              if (!decodeIsContextTag222(buffer, offset + len, 2)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              eventData.eventObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              if (!decodeIsContextTag222(buffer, offset + len, 3)) {
                return void 0;
              }
              len += 2;
              decodedValue = decodeApplicationDate222(buffer, offset + len);
              len += decodedValue.len;
              const date = decodedValue.value.value;
              decodedValue = decodeApplicationTime222(buffer, offset + len);
              len += decodedValue.len;
              const time = decodedValue.value.value;
              eventData.timeStamp = new Date(
                date.getFullYear(),
                date.getMonth(),
                date.getDate(),
                time.getHours(),
                time.getMinutes(),
                time.getSeconds(),
                time.getMilliseconds()
              );
              len += 2;
              if (!decodeIsContextTag222(buffer, offset + len, 4)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              eventData.notificationClass = decodedValue.value;
              if (!decodeIsContextTag222(buffer, offset + len, 5)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              eventData.priority = decodedValue.value;
              if (eventData.priority > 255) {
                return void 0;
              }
              if (!decodeIsContextTag222(buffer, offset + len, 6)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              eventData.eventType = decodedValue.value;
              if (decodeIsContextTag222(buffer, offset + len, 7)) {
                decodedValue = decodeContextCharacterString222(
                  buffer,
                  offset + len,
                  2e4,
                  7
                );
                len += decodedValue.len;
                eventData.messageText = decodedValue.value;
              }
              if (!decodeIsContextTag222(buffer, offset + len, 8)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              eventData.notifyType = decodedValue.value;
              switch (eventData.notifyType) {
                case 0:
                case 1:
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  decodedValue = decodeUnsigned222(buffer, offset + len, 1);
                  len += decodedValue.len;
                  eventData.ackRequired = decodedValue.value > 0;
                  if (!decodeIsContextTag222(buffer, offset + len, 10)) {
                    return void 0;
                  }
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  decodedValue = decodeEnumerated222(
                    buffer,
                    offset + len,
                    result.value
                  );
                  len += decodedValue.len;
                  eventData.fromState = decodedValue.value;
                  break;
                default:
                  break;
              }
              if (!decodeIsContextTag222(buffer, offset + len, 11)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              eventData.toState = decodedValue.value;
              eventData.len = len;
              return eventData;
            };
            var get_enrollment_summary_exports222 = {};
            __export222(get_enrollment_summary_exports222, {
              decode: () => decode13222,
              decodeAcknowledge: () => decodeAcknowledge3222,
              encode: () => encode13222,
              encodeAcknowledge: () => encodeAcknowledge4222
            });
            var encode13222 = (buffer, acknowledgmentFilter, enrollmentFilter, eventStateFilter, eventTypeFilter, priorityFilter, notificationClassFilter) => {
              encodeContextEnumerated222(buffer, 0, acknowledgmentFilter);
              if (enrollmentFilter) {
                encodeOpeningTag222(buffer, 1);
                encodeOpeningTag222(buffer, 0);
                encodeContextObjectId222(
                  buffer,
                  0,
                  enrollmentFilter.objectId.type,
                  enrollmentFilter.objectId.instance
                );
                encodeClosingTag222(buffer, 0);
                encodeContextUnsigned222(buffer, 1, enrollmentFilter.processId);
                encodeClosingTag222(buffer, 1);
              }
              if (eventStateFilter) {
                encodeOpeningTag222(buffer, 2);
                encodeContextEnumerated222(buffer, 0, eventStateFilter);
                encodeClosingTag222(buffer, 2);
              }
              if (eventTypeFilter) {
                encodeOpeningTag222(buffer, 3);
                encodeContextEnumerated222(buffer, 0, eventTypeFilter);
                encodeClosingTag222(buffer, 3);
              }
              if (priorityFilter) {
                encodeOpeningTag222(buffer, 4);
                encodeContextUnsigned222(buffer, 0, priorityFilter.min);
                encodeContextUnsigned222(buffer, 1, priorityFilter.max);
                encodeClosingTag222(buffer, 4);
              }
              if (notificationClassFilter) {
                encodeOpeningTag222(buffer, 5);
                encodeContextUnsigned222(buffer, 0, notificationClassFilter);
                encodeClosingTag222(buffer, 5);
              }
            };
            var decode13222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let value = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.acknowledgmentFilter = decodedValue.value;
              if (decodeIsContextTag222(buffer, offset + len, 1)) {
                len++;
                value.enrollmentFilter = {};
                if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                  return void 0;
                }
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeObjectId222(buffer, offset + len);
                len += decodedValue.len;
                value.enrollmentFilter.objectId = {
                  type: decodedValue.objectType,
                  instance: decodedValue.instance
                };
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.enrollmentFilter.processId = decodedValue.value;
                len++;
              }
              if (decodeIsContextTag222(buffer, offset + len, 2)) {
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.eventStateFilter = decodedValue.value;
                len++;
              }
              if (decodeIsContextTag222(buffer, offset + len, 3)) {
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.eventTypeFilter = decodedValue.value;
                len++;
              }
              if (decodeIsContextTag222(buffer, offset + len, 4)) {
                len++;
                value.priorityFilter = {};
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.priorityFilter.min = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.priorityFilter.max = decodedValue.value;
                len++;
              }
              if (decodeIsContextTag222(buffer, offset + len, 5)) {
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.notificationClassFilter = decodedValue.value;
                len++;
              }
              value.len = len;
              return value;
            };
            var encodeAcknowledge4222 = (buffer, enrollmentSummaries) => {
              enrollmentSummaries.forEach((enrollmentSummary) => {
                encodeApplicationObjectId222(
                  buffer,
                  enrollmentSummary.objectId.type,
                  enrollmentSummary.objectId.instance
                );
                encodeApplicationEnumerated222(buffer, enrollmentSummary.eventType);
                encodeApplicationEnumerated222(buffer, enrollmentSummary.eventState);
                encodeApplicationUnsigned222(buffer, enrollmentSummary.priority);
                encodeApplicationUnsigned222(
                  buffer,
                  enrollmentSummary.notificationClass
                );
              });
            };
            var decodeAcknowledge3222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              const enrollmentSummaries = [];
              while (apduLen - len > 0) {
                const enrollmentSummary = {};
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 12) {
                  return void 0;
                }
                result = decodeObjectId222(buffer, offset + len);
                len += result.len;
                enrollmentSummary.objectId = {
                  type: result.objectType,
                  instance: result.instance
                };
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 9) {
                  return void 0;
                }
                result = decodeEnumerated222(buffer, offset + len, result.value);
                len += result.len;
                enrollmentSummary.eventType = result.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 9) {
                  return void 0;
                }
                result = decodeEnumerated222(buffer, offset + len, result.value);
                len += result.len;
                enrollmentSummary.eventState = result.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 2) {
                  return void 0;
                }
                result = decodeUnsigned222(buffer, offset + len, result.value);
                len += result.len;
                enrollmentSummary.priority = result.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 2) {
                  return void 0;
                }
                result = decodeUnsigned222(buffer, offset + len, result.value);
                len += result.len;
                enrollmentSummary.notificationClass = result.value;
                enrollmentSummaries.push(enrollmentSummary);
              }
              return {
                enrollmentSummaries,
                len
              };
            };
            var get_event_information_exports222 = {};
            __export222(get_event_information_exports222, {
              decode: () => decode14222,
              decodeAcknowledge: () => decodeAcknowledge4222,
              encode: () => encode14222,
              encodeAcknowledge: () => encodeAcknowledge5222
            });
            var encode14222 = (buffer, lastReceivedObjectId) => {
              encodeContextObjectId222(
                buffer,
                0,
                lastReceivedObjectId.type,
                lastReceivedObjectId.instance
              );
            };
            var decode14222 = (buffer, offset) => {
              let len = 0;
              let result;
              let decodedValue;
              let value = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.lastReceivedObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              value.len = len;
              return value;
            };
            var encodeAcknowledge5222 = (buffer, events, moreEvents) => {
              encodeOpeningTag222(buffer, 0);
              events.forEach((eventData) => {
                encodeContextObjectId222(
                  buffer,
                  0,
                  eventData.objectId.type,
                  eventData.objectId.instance
                );
                encodeContextEnumerated222(buffer, 1, eventData.eventState);
                encodeContextBitstring222(buffer, 2, eventData.acknowledgedTransitions);
                encodeOpeningTag222(buffer, 3);
                for (let i = 0; i < 3; i++) {
                  bacappEncodeTimestamp222(buffer, eventData.eventTimeStamps[i]);
                }
                encodeClosingTag222(buffer, 3);
                encodeContextEnumerated222(buffer, 4, eventData.notifyType);
                encodeContextBitstring222(buffer, 5, eventData.eventEnable);
                encodeOpeningTag222(buffer, 6);
                for (let i = 0; i < 3; i++) {
                  encodeApplicationUnsigned222(buffer, eventData.eventPriorities[i]);
                }
                encodeClosingTag222(buffer, 6);
              });
              encodeClosingTag222(buffer, 0);
              encodeContextBoolean222(buffer, 1, moreEvents);
            };
            var decodeAcknowledge4222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let value = {};
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              value.events = [];
              while (apduLen - len > 3) {
                let event = {};
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeObjectId222(buffer, offset + len);
                len += decodedValue.len;
                event.objectId = {
                  type: decodedValue.objectType,
                  instance: decodedValue.instance
                };
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                event.eventState = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeBitstring222(buffer, offset + len, result.value);
                len += decodedValue.len;
                event.acknowledgedTransitions = decodedValue.value;
                if (!decodeIsOpeningTagNumber222(buffer, offset + len, 3)) {
                  return void 0;
                }
                len++;
                event.eventTimeStamps = [];
                for (let i = 0; i < 3; i++) {
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  if (result.tagNumber === 0) {
                    decodedValue = decodeBacnetTime222(
                      buffer,
                      offset + len,
                      result.value
                    );
                    len += decodedValue.len;
                    event.eventTimeStamps[i] = {
                      value: decodedValue.value,
                      type: 0
                      /* TIME */
                    };
                  } else if (result.tagNumber === 1) {
                    decodedValue = decodeUnsigned222(
                      buffer,
                      offset + len,
                      result.value
                    );
                    len += decodedValue.len;
                    event.eventTimeStamps[i] = {
                      value: decodedValue.value,
                      type: 1
                      /* SEQUENCE_NUMBER */
                    };
                  } else if (result.tagNumber === 2) {
                    let date = decodeApplicationDate222(
                      buffer,
                      offset + len
                    );
                    len += date.len;
                    date = date.value.value;
                    let time = decodeApplicationTime222(
                      buffer,
                      offset + len
                    );
                    len += time.len;
                    time = time.value.value;
                    event.eventTimeStamps[i] = {
                      value: new Date(
                        date.getFullYear(),
                        date.getMonth(),
                        date.getDate(),
                        time.getHours(),
                        time.getMinutes(),
                        time.getSeconds(),
                        time.getMilliseconds()
                      ),
                      type: 2
                      /* DATETIME */
                    };
                    len++;
                  }
                }
                if (!decodeIsClosingTagNumber222(buffer, offset + len, 3)) {
                  return void 0;
                }
                len++;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                event.notifyType = decodedValue.value;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeBitstring222(buffer, offset + len, result.value);
                len += decodedValue.len;
                event.eventEnable = decodedValue.value;
                if (!decodeIsOpeningTagNumber222(buffer, offset + len, 6)) {
                  return void 0;
                }
                len++;
                event.eventPriorities = [];
                for (let i = 0; i < 3; i++) {
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  event.eventPriorities[i] = decodedValue.value;
                }
                if (!decodeIsClosingTagNumber222(buffer, offset + len, 6)) {
                  return void 0;
                }
                len++;
                value.events.push(event);
              }
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              value.moreEvents = buffer[offset + len] > 0;
              len++;
              value.len = len;
              return value;
            };
            var i_am_exports222 = {};
            __export222(i_am_exports222, {
              decode: () => decode15222,
              encode: () => encode15222
            });
            var encode15222 = (buffer, deviceId, maxApdu, segmentation, vendorId) => {
              encodeApplicationObjectId222(buffer, 8, deviceId);
              encodeApplicationUnsigned222(buffer, maxApdu);
              encodeApplicationEnumerated222(buffer, segmentation);
              encodeApplicationUnsigned222(buffer, vendorId);
            };
            var decode15222 = (buffer, offset) => {
              let result;
              let apduLen = 0;
              const orgOffset = offset;
              result = decodeTagNumberAndValue222(buffer, offset + apduLen);
              apduLen += result.len;
              if (result.tagNumber !== 12) {
                return void 0;
              }
              result = decodeObjectId222(buffer, offset + apduLen);
              apduLen += result.len;
              if (result.objectType !== 8) {
                return void 0;
              }
              const deviceId = result.instance;
              result = decodeTagNumberAndValue222(buffer, offset + apduLen);
              apduLen += result.len;
              if (result.tagNumber !== 2) {
                return void 0;
              }
              result = decodeUnsigned222(buffer, offset + apduLen, result.value);
              apduLen += result.len;
              const maxApdu = result.value;
              result = decodeTagNumberAndValue222(buffer, offset + apduLen);
              apduLen += result.len;
              if (result.tagNumber !== 9) {
                return void 0;
              }
              result = decodeEnumerated222(buffer, offset + apduLen, result.value);
              apduLen += result.len;
              if (result.value > 3) {
                return void 0;
              }
              const segmentation = result.value;
              result = decodeTagNumberAndValue222(buffer, offset + apduLen);
              apduLen += result.len;
              if (result.tagNumber !== 2) {
                return void 0;
              }
              result = decodeUnsigned222(buffer, offset + apduLen, result.value);
              apduLen += result.len;
              if (result.value > 65535) {
                return void 0;
              }
              const vendorId = result.value;
              return {
                len: offset - orgOffset,
                deviceId,
                maxApdu,
                segmentation,
                vendorId
              };
            };
            var i_have_exports222 = {};
            __export222(i_have_exports222, {
              decode: () => decode16222,
              encode: () => encode16222
            });
            var encode16222 = (buffer, deviceId, objectId, objectName) => {
              encodeApplicationObjectId222(buffer, deviceId.type, deviceId.instance);
              encodeApplicationObjectId222(buffer, objectId.type, objectId.instance);
              encodeApplicationCharacterString222(buffer, objectName);
            };
            var decode16222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let value = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.deviceId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeCharacterString222(
                buffer,
                offset + len,
                apduLen - (offset + len),
                result.value
              );
              len += decodedValue.len;
              value.objectName = decodedValue.value;
              value.len = len;
              return value;
            };
            var life_safety_operation_exports222 = {};
            __export222(life_safety_operation_exports222, {
              decode: () => decode17222,
              encode: () => encode17222
            });
            var encode17222 = (buffer, processId, requestingSource, operation, targetObjectId) => {
              encodeContextUnsigned222(buffer, 0, processId);
              encodeContextCharacterString222(buffer, 1, requestingSource);
              encodeContextEnumerated222(buffer, 2, operation);
              encodeContextObjectId222(
                buffer,
                3,
                targetObjectId.type,
                targetObjectId.instance
              );
            };
            var decode17222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let value = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.processId = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeCharacterString222(
                buffer,
                offset + len,
                apduLen - (offset + len),
                result.value
              );
              len += decodedValue.len;
              value.requestingSource = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.operation = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.targetObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              value.len = len;
              return value;
            };
            var private_transfer_exports222 = {};
            __export222(private_transfer_exports222, {
              decode: () => decode18222,
              encode: () => encode18222
            });
            var encode18222 = (buffer, vendorId, serviceNumber, data) => {
              encodeContextUnsigned222(buffer, 0, vendorId);
              encodeContextUnsigned222(buffer, 1, serviceNumber);
              encodeOpeningTag222(buffer, 2);
              for (let i = 0; i < data.length; i++) {
                buffer.buffer[buffer.offset++] = data[i];
              }
              encodeClosingTag222(buffer, 2);
            };
            var decode18222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let value = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.vendorId = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.serviceNumber = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              const size = apduLen - (offset + len + 1);
              const data = [];
              for (let i = 0; i < size; i++) {
                data.push(buffer[offset + len++]);
              }
              value.data = data;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              value.len = len;
              return value;
            };
            var read_property_exports222 = {};
            __export222(read_property_exports222, {
              decode: () => decode19222,
              decodeAcknowledge: () => decodeAcknowledge5222,
              encode: () => encode19222,
              encodeAcknowledge: () => encodeAcknowledge6222
            });
            var encode19222 = (buffer, objectType, objectInstance, propertyId, arrayIndex) => {
              if (objectType <= ASN1_MAX_OBJECT222) {
                encodeContextObjectId222(buffer, 0, objectType, objectInstance);
              }
              if (propertyId <= ASN1_MAX_PROPERTY_ID222) {
                encodeContextEnumerated222(buffer, 1, propertyId);
              }
              if (arrayIndex !== ASN1_ARRAY_ALL222) {
                encodeContextUnsigned222(
                  buffer,
                  2,
                  arrayIndex || arrayIndex === 0 ? arrayIndex : ASN1_ARRAY_ALL222
                );
              }
            };
            var decode19222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              if (apduLen < 7) {
                return void 0;
              }
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              let objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              let property = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              property.id = decodedValue.value;
              property.index = ASN1_ARRAY_ALL222;
              if (len < apduLen) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber === 2 && len < apduLen) {
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  property.index = decodedValue.value;
                } else {
                  return void 0;
                }
              }
              if (len < apduLen) {
                return void 0;
              }
              return {
                len,
                objectId,
                property
              };
            };
            var encodeAcknowledge6222 = (buffer, objectId, propertyId, arrayIndex, values) => {
              encodeContextObjectId222(buffer, 0, objectId.type, objectId.instance);
              encodeContextEnumerated222(buffer, 1, propertyId);
              if (arrayIndex !== ASN1_ARRAY_ALL222) {
                encodeContextUnsigned222(buffer, 2, arrayIndex);
              }
              encodeOpeningTag222(buffer, 3);
              values.forEach((value) => {
                bacappEncodeApplicationData222(buffer, value);
              });
              encodeClosingTag222(buffer, 3);
            };
            var decodeAcknowledge5222 = (buffer, offset, apduLen) => {
              let result;
              let decodedValue;
              let objectId = {};
              let property = {};
              if (!decodeIsContextTag222(buffer, offset, 0)) {
                return void 0;
              }
              let len = 1;
              result = decodeObjectId222(buffer, offset + len);
              len += result.len;
              objectId.type = result.objectType;
              objectId.instance = result.instance;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              result = decodeEnumerated222(buffer, offset + len, result.value);
              len += result.len;
              property.id = result.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              if (result.tagNumber === 2) {
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                property.index = decodedValue.value;
              } else {
                property.index = ASN1_ARRAY_ALL222;
              }
              const values = [];
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 3)) {
                return void 0;
              }
              len++;
              while (apduLen - len > 1) {
                result = bacappDecodeApplicationData222(
                  buffer,
                  offset + len,
                  apduLen + offset,
                  objectId.type,
                  property.id
                );
                if (!result) {
                  return void 0;
                }
                len += result.len;
                delete result.len;
                values.push(result);
              }
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 3)) {
                return void 0;
              }
              len++;
              return {
                len,
                objectId,
                property,
                values
              };
            };
            var read_property_multiple_exports222 = {};
            __export222(read_property_multiple_exports222, {
              decode: () => decode20222,
              decodeAcknowledge: () => decodeAcknowledge6222,
              encode: () => encode20222,
              encodeAcknowledge: () => encodeAcknowledge7222
            });
            var encode20222 = (buffer, properties) => {
              properties.forEach((value) => {
                encodeReadAccessSpecification222(buffer, value);
              });
            };
            var decode20222 = (buffer, offset, apduLen) => {
              let len = 0;
              const values = [];
              while (apduLen - len > 0) {
                const decodedValue = decodeReadAccessSpecification222(
                  buffer,
                  offset + len,
                  apduLen - len
                );
                if (!decodedValue) {
                  return void 0;
                }
                len += decodedValue.len;
                values.push(decodedValue.value);
              }
              return {
                len,
                properties: values
              };
            };
            var encodeAcknowledge7222 = (buffer, values) => {
              values.forEach((value) => {
                encodeReadAccessResult222(buffer, value);
              });
            };
            var decodeAcknowledge6222 = (buffer, offset, apduLen) => {
              let len = 0;
              const values = [];
              while (apduLen - len > 0) {
                const result = decodeReadAccessResult222(
                  buffer,
                  offset + len,
                  apduLen - len
                );
                if (!result || result === -1) {
                  return void 0;
                }
                len += result.len;
                values.push(result.value);
              }
              return {
                len,
                values
              };
            };
            var read_range_exports222 = {};
            __export222(read_range_exports222, {
              decode: () => decode21222,
              decodeAcknowledge: () => decodeAcknowledge7222,
              encode: () => encode21222,
              encodeAcknowledge: () => encodeAcknowledge8222
            });
            var encode21222 = (buffer, objectId, propertyId, arrayIndex, requestType, position, time, count) => {
              encodeContextObjectId222(buffer, 0, objectId.type, objectId.instance);
              encodeContextEnumerated222(buffer, 1, propertyId);
              if (arrayIndex !== ASN1_ARRAY_ALL222) {
                encodeContextUnsigned222(buffer, 2, arrayIndex);
              }
              switch (requestType) {
                case 0:
                  encodeOpeningTag222(buffer, 3);
                  encodeApplicationUnsigned222(buffer, position);
                  encodeApplicationSigned222(buffer, count);
                  encodeClosingTag222(buffer, 3);
                  break;
                case 1:
                  encodeOpeningTag222(buffer, 6);
                  encodeApplicationUnsigned222(buffer, position);
                  encodeApplicationSigned222(buffer, count);
                  encodeClosingTag222(buffer, 6);
                  break;
                case 2:
                  encodeOpeningTag222(buffer, 7);
                  encodeApplicationDate222(buffer, time);
                  encodeApplicationTime222(buffer, time);
                  encodeApplicationSigned222(buffer, count);
                  encodeClosingTag222(buffer, 7);
                  break;
                default:
                  break;
              }
            };
            var decode21222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let requestType;
              let position;
              let time;
              let count;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              decodedValue = decodeObjectId222(buffer, offset + len, 0);
              len += decodedValue.len;
              let objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              let property = {};
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              property.id = decodedValue.value;
              if (len < apduLen && decodeIsContextTag222(buffer, offset + len, 2)) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                property.index = decodedValue.value;
              } else {
                property.index = ASN1_ARRAY_ALL222;
              }
              if (len < apduLen) {
                result = decodeTagNumber222(buffer, offset + len);
                len += result.len;
                switch (result.tagNumber) {
                  case 3:
                    requestType = 0;
                    result = decodeTagNumberAndValue222(buffer, offset + len);
                    len += result.len;
                    decodedValue = decodeUnsigned222(
                      buffer,
                      offset + len,
                      result.value
                    );
                    len += decodedValue.len;
                    position = decodedValue.value;
                    result = decodeTagNumberAndValue222(buffer, offset + len);
                    len += result.len;
                    decodedValue = decodeSigned222(buffer, offset + len, result.value);
                    len += decodedValue.len;
                    count = decodedValue.value;
                    break;
                  case 6:
                    requestType = 1;
                    result = decodeTagNumberAndValue222(buffer, offset + len);
                    len += result.len;
                    decodedValue = decodeUnsigned222(
                      buffer,
                      offset + len,
                      result.value
                    );
                    len += decodedValue.len;
                    position = decodedValue.value;
                    result = decodeTagNumberAndValue222(buffer, offset + len);
                    len += result.len;
                    decodedValue = decodeSigned222(buffer, offset + len, result.value);
                    len += decodedValue.len;
                    count = decodedValue.value;
                    break;
                  case 7:
                    requestType = 2;
                    decodedValue = decodeApplicationDate222(buffer, offset + len);
                    len += decodedValue.len;
                    const tmpDate = decodedValue.value.value;
                    decodedValue = decodeApplicationTime222(buffer, offset + len);
                    len += decodedValue.len;
                    const tmpTime = decodedValue.value.value;
                    time = new Date(
                      tmpDate.getYear(),
                      tmpDate.getMonth(),
                      tmpDate.getDate(),
                      tmpTime.getHours(),
                      tmpTime.getMinutes(),
                      tmpTime.getSeconds(),
                      tmpTime.getMilliseconds()
                    );
                    result = decodeTagNumberAndValue222(buffer, offset + len);
                    len += result.len;
                    decodedValue = decodeSigned222(buffer, offset + len, result.value);
                    len += decodedValue.len;
                    count = decodedValue.value;
                    break;
                  default:
                    return void 0;
                }
                result = decodeTagNumber222(buffer, offset + len);
                len += result.len;
              }
              return {
                len,
                objectId,
                property,
                requestType,
                position,
                time,
                count
              };
            };
            var encodeAcknowledge8222 = (buffer, objectId, propertyId, arrayIndex, resultFlags, itemCount, applicationData, requestType, firstSequence) => {
              encodeContextObjectId222(buffer, 0, objectId.type, objectId.instance);
              encodeContextEnumerated222(buffer, 1, propertyId);
              if (arrayIndex !== ASN1_ARRAY_ALL222) {
                encodeContextUnsigned222(buffer, 2, arrayIndex);
              }
              encodeContextBitstring222(buffer, 3, resultFlags);
              encodeContextUnsigned222(buffer, 4, itemCount);
              encodeOpeningTag222(buffer, 5);
              if (itemCount !== 0) {
                applicationData.copy(
                  buffer.buffer,
                  buffer.offset,
                  0,
                  applicationData.length
                );
                buffer.offset += applicationData.length;
              }
              encodeClosingTag222(buffer, 5);
              if (itemCount !== 0 && requestType && requestType !== 0) {
                encodeContextUnsigned222(buffer, 6, firstSequence);
              }
            };
            var decodeAcknowledge7222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              const objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              const property = { index: ASN1_ARRAY_ALL222 };
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              property.id = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              if (result.tagNumber === 2 && len < apduLen) {
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                property.index = decodedValue.value;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeBitstring222(buffer, offset + len, result.value);
              len += decodedValue.len;
              const resultFlag = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              const itemCount = decodedValue.value;
              if (!decodeIsOpeningTag222(buffer, offset + len)) {
                return void 0;
              }
              len++;
              const rangeBuffer = buffer.slice(offset + len, apduLen - 3);
              return {
                objectId,
                property,
                resultFlag,
                itemCount,
                rangeBuffer,
                len
              };
            };
            var register_foreign_device_exports222 = {};
            __export222(register_foreign_device_exports222, {
              decode: () => decode22222,
              encode: () => encode22222
            });
            var encode22222 = (buffer, ttl, length = 2) => {
              encodeUnsigned222(buffer, ttl, length);
            };
            var decode22222 = (buffer, offset, length = 2) => {
              let len = 0;
              let result = decodeUnsigned222(buffer, offset + len, length);
              len += result.len;
              return {
                len,
                ttl: result.value
              };
            };
            var reinitialize_device_exports222 = {};
            __export222(reinitialize_device_exports222, {
              decode: () => decode23222,
              encode: () => encode23222
            });
            var encode23222 = (buffer, state, password) => {
              encodeContextEnumerated222(buffer, 0, state);
              if (password && password !== "") {
                encodeContextCharacterString222(buffer, 1, password);
              }
            };
            var decode23222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              let result;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              let decodedValue = decodeEnumerated222(
                buffer,
                offset + len,
                result.value
              );
              value.state = decodedValue.value;
              len += decodedValue.len;
              if (len < apduLen) {
                if (!decodeIsContextTag222(buffer, offset + len, 1)) {
                  return void 0;
                }
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeCharacterString222(
                  buffer,
                  offset + len,
                  apduLen - (offset + len),
                  result.value
                );
                value.password = decodedValue.value;
                len += decodedValue.len;
              }
              value.len = len;
              return value;
            };
            var subscribe_cov_exports222 = {};
            __export222(subscribe_cov_exports222, {
              decode: () => decode24222,
              encode: () => encode24222
            });
            var encode24222 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime) => {
              encodeContextUnsigned222(buffer, 0, subscriberProcessId);
              encodeContextObjectId222(
                buffer,
                1,
                monitoredObjectId.type,
                monitoredObjectId.instance
              );
              if (!cancellationRequest) {
                encodeContextBoolean222(buffer, 2, issueConfirmedNotifications);
                encodeContextUnsigned222(buffer, 3, lifetime);
              }
            };
            var decode24222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              let result;
              let decodedValue;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.subscriberProcessId = decodedValue.value;
              if (!decodeIsContextTag222(buffer, offset + len, 1)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.monitoredObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              value.cancellationRequest = true;
              if (len < apduLen) {
                value.issueConfirmedNotifications = false;
                if (decodeIsContextTag222(buffer, offset + len, 2)) {
                  value.cancellationRequest = false;
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  value.issueConfirmedNotifications = buffer[offset + len] > 0;
                  len++;
                }
                value.lifetime = 0;
                if (decodeIsContextTag222(buffer, offset + len, 3)) {
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  value.lifetime = decodedValue.value;
                }
              }
              value.len = len;
              return value;
            };
            var subscribe_property_exports222 = {};
            __export222(subscribe_property_exports222, {
              decode: () => decode25222,
              encode: () => encode25222
            });
            var encode25222 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime, monitoredProperty, covIncrementPresent, covIncrement) => {
              encodeContextUnsigned222(buffer, 0, subscriberProcessId);
              encodeContextObjectId222(
                buffer,
                1,
                monitoredObjectId.type,
                monitoredObjectId.instance
              );
              if (!cancellationRequest) {
                encodeContextBoolean222(buffer, 2, issueConfirmedNotifications);
                encodeContextUnsigned222(buffer, 3, lifetime);
              }
              encodeOpeningTag222(buffer, 4);
              encodeContextEnumerated222(buffer, 0, monitoredProperty.id);
              if (monitoredProperty.index !== ASN1_ARRAY_ALL222) {
                encodeContextUnsigned222(buffer, 1, monitoredProperty.index);
              }
              encodeClosingTag222(buffer, 4);
              if (covIncrementPresent) {
                encodeContextReal222(buffer, 5, covIncrement);
              }
            };
            var decode25222 = (buffer, offset) => {
              let len = 0;
              let value = {};
              let result;
              let decodedValue;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.subscriberProcessId = decodedValue.value;
              if (!decodeIsContextTag222(buffer, offset + len, 1)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              value.monitoredObjectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              value.cancellationRequest = true;
              value.issueConfirmedNotifications = false;
              if (decodeIsContextTag222(buffer, offset + len, 2)) {
                value.cancellationRequest = false;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                value.issueConfirmedNotifications = buffer[offset + len] > 0;
                len++;
              }
              value.lifetime = 0;
              if (decodeIsContextTag222(buffer, offset + len, 3)) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.lifetime = decodedValue.value;
              }
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 4)) {
                return void 0;
              }
              len++;
              value.monitoredProperty = {};
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.monitoredProperty.id = decodedValue.value;
              value.monitoredProperty.index = ASN1_ARRAY_ALL222;
              if (decodeIsContextTag222(buffer, offset + len, 1)) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.monitoredProperty.index = decodedValue.value;
              }
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 4)) {
                return void 0;
              }
              len++;
              value.covIncrement = 0;
              if (decodeIsContextTag222(buffer, offset + len, 5)) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                decodedValue = decodeReal222(buffer, offset + len);
                len += decodedValue.len;
                value.covIncrement = decodedValue.value;
              }
              value.len = len;
              return value;
            };
            var time_sync_exports222 = {};
            __export222(time_sync_exports222, {
              decode: () => decode26222,
              encode: () => encode26222
            });
            var encode26222 = (buffer, time) => {
              encodeApplicationDate222(buffer, time);
              encodeApplicationTime222(buffer, time);
            };
            var decode26222 = (buffer, offset, length) => {
              let len = 0;
              let result;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 10) {
                return void 0;
              }
              const date = decodeDate222(buffer, offset + len);
              len += date.len;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 11) {
                return void 0;
              }
              const time = decodeBacnetTime222(buffer, offset + len);
              len += time.len;
              return {
                len,
                value: new Date(
                  date.value.getFullYear(),
                  date.value.getMonth(),
                  date.value.getDate(),
                  time.value.getHours(),
                  time.value.getMinutes(),
                  time.value.getSeconds(),
                  time.value.getMilliseconds()
                )
              };
            };
            var who_has_exports222 = {};
            __export222(who_has_exports222, {
              decode: () => decode27222,
              encode: () => encode27222
            });
            var encode27222 = (buffer, lowLimit, highLimit, objectId, objectName) => {
              if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE222 && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE222) {
                encodeContextUnsigned222(buffer, 0, lowLimit);
                encodeContextUnsigned222(buffer, 1, highLimit);
              }
              if (objectName && objectName !== "") {
                encodeContextCharacterString222(buffer, 3, objectName);
              } else {
                encodeContextObjectId222(buffer, 2, objectId.type, objectId.instance);
              }
            };
            var decode27222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              let decodedValue;
              let result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber === 0) {
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                if (decodedValue.value <= ASN1_MAX_INSTANCE222) {
                  value.lowLimit = decodedValue.value;
                }
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
              }
              if (result.tagNumber === 1) {
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                if (decodedValue.value <= ASN1_MAX_INSTANCE222) {
                  value.highLimit = decodedValue.value;
                }
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
              }
              if (result.tagNumber === 2) {
                decodedValue = decodeObjectId222(buffer, offset + len);
                len += decodedValue.len;
                value.objectId = {
                  type: decodedValue.objectType,
                  instance: decodedValue.instance
                };
              }
              if (result.tagNumber === 3) {
                decodedValue = decodeCharacterString222(
                  buffer,
                  offset + len,
                  apduLen - (offset + len),
                  result.value
                );
                len += decodedValue.len;
                value.objectName = decodedValue.value;
              }
              value.len = len;
              return value;
            };
            var who_is_exports222 = {};
            __export222(who_is_exports222, {
              decode: () => decode28222,
              encode: () => encode28222
            });
            var encode28222 = (buffer, lowLimit, highLimit) => {
              if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE222 && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE222) {
                encodeContextUnsigned222(buffer, 0, lowLimit);
                encodeContextUnsigned222(buffer, 1, highLimit);
              }
            };
            var decode28222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {};
              if (apduLen <= 0) {
                return {};
              }
              let result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 0) {
                return void 0;
              }
              if (apduLen <= len) {
                return void 0;
              }
              let decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              if (decodedValue.value <= ASN1_MAX_INSTANCE222) {
                value.lowLimit = decodedValue.value;
              }
              if (apduLen <= len) {
                return void 0;
              }
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              if (apduLen <= len) {
                return void 0;
              }
              decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
              len += decodedValue.len;
              if (decodedValue.value <= ASN1_MAX_INSTANCE222) {
                value.highLimit = decodedValue.value;
              }
              value.len = len;
              return value;
            };
            var write_property_exports222 = {};
            __export222(write_property_exports222, {
              decode: () => decode29222,
              encode: () => encode29222
            });
            var encode29222 = (buffer, objectType, objectInstance, propertyId, arrayIndex, priority, values) => {
              encodeContextObjectId222(buffer, 0, objectType, objectInstance);
              encodeContextEnumerated222(buffer, 1, propertyId);
              if (arrayIndex !== ASN1_ARRAY_ALL222) {
                encodeContextUnsigned222(buffer, 2, arrayIndex);
              }
              encodeOpeningTag222(buffer, 3);
              values.forEach((value) => {
                bacappEncodeApplicationData222(buffer, value);
              });
              encodeClosingTag222(buffer, 3);
              if (priority !== ASN1_NO_PRIORITY222) {
                encodeContextUnsigned222(buffer, 4, priority);
              }
            };
            var decode29222 = (buffer, offset, apduLen) => {
              let len = 0;
              let value = {
                property: {}
              };
              let decodedValue;
              let result;
              if (!decodeIsContextTag222(buffer, offset + len, 0)) {
                return void 0;
              }
              len++;
              decodedValue = decodeObjectId222(buffer, offset + len);
              let objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              len += decodedValue.len;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 1) {
                return void 0;
              }
              decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.property.id = decodedValue.value;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              if (result.tagNumber === 2) {
                len += result.len;
                decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                len += decodedValue.len;
                value.property.index = decodedValue.value;
              } else {
                value.property.index = ASN1_ARRAY_ALL222;
              }
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 3)) {
                return void 0;
              }
              len++;
              const values = [];
              while (apduLen - len > 1 && !decodeIsClosingTagNumber222(buffer, offset + len, 3)) {
                decodedValue = bacappDecodeApplicationData222(
                  buffer,
                  offset + len,
                  apduLen + offset,
                  objectId.type,
                  value.property.id
                );
                if (!decodedValue) {
                  return void 0;
                }
                len += decodedValue.len;
                delete decodedValue.len;
                values.push(decodedValue);
              }
              value.value = values;
              if (!decodeIsClosingTagNumber222(buffer, offset + len, 3)) {
                return void 0;
              }
              len++;
              value.priority = ASN1_MAX_PRIORITY222;
              if (len < apduLen) {
                result = decodeTagNumberAndValue222(buffer, offset + len);
                if (result.tagNumber === 4) {
                  len += result.len;
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue;
                  if (decodedValue.value >= ASN1_MIN_PRIORITY222 && decodedValue.value <= ASN1_MAX_PRIORITY222) {
                    value.priority = decodedValue.value;
                  } else {
                    return void 0;
                  }
                }
              }
              return {
                len,
                objectId,
                value
              };
            };
            var write_property_multiple_exports222 = {};
            __export222(write_property_multiple_exports222, {
              decode: () => decode30222,
              encode: () => encode30222,
              encodeObject: () => encodeObject222
            });
            var encode30222 = (buffer, objectId, values) => {
              encodeContextObjectId222(buffer, 0, objectId.type, objectId.instance);
              encodeOpeningTag222(buffer, 1);
              values.forEach((pValue) => {
                encodeContextEnumerated222(buffer, 0, pValue.property.id);
                if (pValue.property.index !== ASN1_ARRAY_ALL222) {
                  encodeContextUnsigned222(buffer, 1, pValue.property.index);
                }
                encodeOpeningTag222(buffer, 2);
                pValue.value.forEach((value) => {
                  bacappEncodeApplicationData222(buffer, value);
                });
                encodeClosingTag222(buffer, 2);
                if (pValue.priority !== ASN1_NO_PRIORITY222) {
                  encodeContextUnsigned222(buffer, 3, pValue.priority);
                }
              });
              encodeClosingTag222(buffer, 1);
            };
            var decode30222 = (buffer, offset, apduLen) => {
              let len = 0;
              let result;
              let decodedValue;
              let objectId;
              result = decodeTagNumberAndValue222(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 0 || apduLen <= len) {
                return void 0;
              }
              apduLen -= len;
              if (apduLen < 4) {
                return void 0;
              }
              decodedValue = decodeObjectId222(buffer, offset + len);
              len += decodedValue.len;
              objectId = {
                type: decodedValue.objectType,
                instance: decodedValue.instance
              };
              if (!decodeIsOpeningTagNumber222(buffer, offset + len, 1)) {
                return void 0;
              }
              len++;
              const _values = [];
              while (apduLen - len > 1) {
                let newEntry = {};
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber !== 0) {
                  return void 0;
                }
                decodedValue = decodeEnumerated222(buffer, offset + len, result.value);
                len += decodedValue.len;
                let propertyId = decodedValue.value;
                let arrayIndex = ASN1_ARRAY_ALL222;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber === 1) {
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  arrayIndex = decodedValue.value;
                  result = decodeTagNumberAndValue222(buffer, offset + len);
                  len += result.len;
                }
                newEntry.property = { id: propertyId, index: arrayIndex };
                if (result.tagNumber !== 2 || !decodeIsOpeningTag222(buffer, offset + len - 1)) {
                  return void 0;
                }
                const values = [];
                while (len + offset <= buffer.length && !decodeIsClosingTag222(buffer, offset + len)) {
                  let value = bacappDecodeApplicationData222(
                    buffer,
                    offset + len,
                    apduLen + offset,
                    objectId.type,
                    propertyId
                  );
                  if (!value) {
                    return void 0;
                  }
                  len += value.len;
                  delete value.len;
                  values.push(value);
                }
                len++;
                newEntry.value = values;
                let priority = ASN1_NO_PRIORITY222;
                result = decodeTagNumberAndValue222(buffer, offset + len);
                len += result.len;
                if (result.tagNumber === 3) {
                  decodedValue = decodeUnsigned222(buffer, offset + len, result.value);
                  len += decodedValue.len;
                  priority = decodedValue.value;
                } else {
                  len--;
                }
                newEntry.priority = priority;
                _values.push(newEntry);
                if (decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                  len++;
                }
              }
              if (decodeIsClosingTagNumber222(buffer, offset + len, 1)) {
                len++;
              }
              return {
                len,
                objectId,
                values: _values
              };
            };
            var encodeObject222 = (buffer, values) => {
              values.forEach((object) => {
                encode30222(buffer, object.objectId, object.values);
              });
            };
            var getDecodedType222 = (buffer, offset) => {
              return buffer[offset];
            };
            var encodeConfirmedServiceRequest222 = (buffer, type, service, maxSegments, maxApdu, invokeId, sequencenumber, proposedWindowSize) => {
              buffer.buffer[buffer.offset++] = type;
              buffer.buffer[buffer.offset++] = maxSegments | maxApdu;
              buffer.buffer[buffer.offset++] = invokeId;
              if ((type & 8) > 0) {
                buffer.buffer[buffer.offset++] = sequencenumber;
                buffer.buffer[buffer.offset++] = proposedWindowSize;
              }
              buffer.buffer[buffer.offset++] = service;
            };
            var decodeConfirmedServiceRequest222 = (buffer, offset) => {
              const orgOffset = offset;
              const type = buffer[offset++];
              const maxSegments = buffer[offset] & 240;
              const maxApdu = buffer[offset++] & 15;
              const invokeId = buffer[offset++];
              let sequencenumber = 0;
              let proposedWindowNumber = 0;
              if ((type & 8) > 0) {
                sequencenumber = buffer[offset++];
                proposedWindowNumber = buffer[offset++];
              }
              const service = buffer[offset++];
              return {
                len: offset - orgOffset,
                type,
                service,
                maxSegments,
                maxApdu,
                invokeId,
                sequencenumber,
                proposedWindowNumber
              };
            };
            var encodeUnconfirmedServiceRequest222 = (buffer, type, service) => {
              buffer.buffer[buffer.offset++] = type;
              buffer.buffer[buffer.offset++] = service;
            };
            var decodeUnconfirmedServiceRequest222 = (buffer, offset) => {
              const orgOffset = offset;
              const type = buffer[offset++];
              const service = buffer[offset++];
              return {
                len: offset - orgOffset,
                type,
                service
              };
            };
            var encodeSimpleAck222 = (buffer, type, service, invokeId) => {
              buffer.buffer[buffer.offset++] = type;
              buffer.buffer[buffer.offset++] = invokeId;
              buffer.buffer[buffer.offset++] = service;
            };
            var decodeSimpleAck222 = (buffer, offset) => {
              const orgOffset = offset;
              const type = buffer[offset++];
              const invokeId = buffer[offset++];
              const service = buffer[offset++];
              return {
                len: offset - orgOffset,
                type,
                service,
                invokeId
              };
            };
            var encodeComplexAck222 = (buffer, type, service, invokeId, sequencenumber, proposedWindowNumber) => {
              let len = 3;
              buffer.buffer[buffer.offset++] = type;
              buffer.buffer[buffer.offset++] = invokeId;
              if ((type & 8) > 0) {
                buffer.buffer[buffer.offset++] = sequencenumber;
                buffer.buffer[buffer.offset++] = proposedWindowNumber;
                len += 2;
              }
              buffer.buffer[buffer.offset++] = service;
              return len;
            };
            var decodeComplexAck222 = (buffer, offset) => {
              const orgOffset = offset;
              const type = buffer[offset++];
              const invokeId = buffer[offset++];
              let sequencenumber = 0;
              let proposedWindowNumber = 0;
              if ((type & 8) > 0) {
                sequencenumber = buffer[offset++];
                proposedWindowNumber = buffer[offset++];
              }
              const service = buffer[offset++];
              return {
                len: offset - orgOffset,
                type,
                service,
                invokeId,
                sequencenumber,
                proposedWindowNumber
              };
            };
            var encodeSegmentAck222 = (buffer, type, originalInvokeId, sequencenumber, actualWindowSize) => {
              buffer.buffer[buffer.offset++] = type;
              buffer.buffer[buffer.offset++] = originalInvokeId;
              buffer.buffer[buffer.offset++] = sequencenumber;
              buffer.buffer[buffer.offset++] = actualWindowSize;
            };
            var decodeSegmentAck222 = (buffer, offset) => {
              const orgOffset = offset;
              const type = buffer[offset++];
              const originalInvokeId = buffer[offset++];
              const sequencenumber = buffer[offset++];
              const actualWindowSize = buffer[offset++];
              return {
                len: offset - orgOffset,
                type,
                originalInvokeId,
                sequencenumber,
                actualWindowSize
              };
            };
            var encodeResult222 = (buffer, resultCode) => {
              encodeUnsigned222(buffer, resultCode, 2);
            };
            var encodeError222 = (buffer, type, service, invokeId) => {
              buffer.buffer[buffer.offset++] = type;
              buffer.buffer[buffer.offset++] = invokeId;
              buffer.buffer[buffer.offset++] = service;
            };
            var decodeError222 = (buffer, offset) => {
              const orgOffset = offset;
              const type = buffer[offset++];
              const invokeId = buffer[offset++];
              const service = buffer[offset++];
              return {
                len: offset - orgOffset,
                type,
                service,
                invokeId
              };
            };
            var decodeAbort222 = (buffer, offset) => {
              const orgOffset = offset;
              const type = buffer[offset++];
              const invokeId = buffer[offset++];
              const reason = buffer[offset++];
              return {
                len: offset - orgOffset,
                type,
                invokeId,
                reason
              };
            };
            var DEFAULT_HOP_COUNT322 = 255;
            var BACNET_PROTOCOL_VERSION222 = 1;
            var BACNET_ADDRESS_TYPES222 = {
              NONE: 0,
              IP: 1
            };
            var decodeTarget222 = (buffer, offset) => {
              let len = 0;
              const target = {
                type: BACNET_ADDRESS_TYPES222.NONE,
                net: buffer[offset + len++] << 8 | buffer[offset + len++] << 0
              };
              const adrLen = buffer[offset + len++];
              if (adrLen > 0) {
                target.adr = [];
                for (let i = 0; i < adrLen; i++) {
                  target.adr.push(buffer[offset + len++]);
                }
              }
              return {
                target,
                len
              };
            };
            var encodeTarget222 = (buffer, target) => {
              buffer.buffer[buffer.offset++] = (target.net & 65280) >> 8;
              buffer.buffer[buffer.offset++] = (target.net & 255) >> 0;
              if (target.net === 65535 || !target.adr) {
                buffer.buffer[buffer.offset++] = 0;
              } else {
                buffer.buffer[buffer.offset++] = target.adr.length;
                if (target.adr.length > 0) {
                  for (let i = 0; i < target.adr.length; i++) {
                    buffer.buffer[buffer.offset++] = target.adr[i];
                  }
                }
              }
            };
            var decode31222 = (buffer, offset) => {
              let adrLen;
              const orgOffset = offset;
              offset++;
              const funct = buffer[offset++];
              let destination;
              if (funct & 32) {
                const tmpDestination = decodeTarget222(buffer, offset);
                offset += tmpDestination.len;
                destination = tmpDestination.target;
              }
              let source;
              if (funct & 8) {
                const tmpSource = decodeTarget222(buffer, offset);
                offset += tmpSource.len;
                source = tmpSource.target;
              }
              let hopCount = 0;
              if (funct & 32) {
                hopCount = buffer[offset++];
              }
              let networkMsgType = 0;
              let vendorId = 0;
              if (funct & 128) {
                networkMsgType = buffer[offset++];
                if (networkMsgType >= 128) {
                  vendorId = buffer[offset++] << 8 | buffer[offset++] << 0;
                } else if (networkMsgType === 0) {
                  offset += 2;
                }
              }
              if (buffer[orgOffset + 0] !== BACNET_PROTOCOL_VERSION222) {
                return void 0;
              }
              return {
                len: offset - orgOffset,
                funct,
                destination,
                source,
                hopCount,
                networkMsgType,
                vendorId
              };
            };
            var encode31222 = (buffer, funct, destination, source, hopCount, networkMsgType, vendorId) => {
              const hasDestination = destination && destination.net > 0;
              const hasSource = source && source.net > 0 && source.net !== 65535;
              buffer.buffer[buffer.offset++] = BACNET_PROTOCOL_VERSION222;
              buffer.buffer[buffer.offset++] = funct | (hasDestination ? 32 : 0) | (hasSource ? 8 : 0);
              if (hasDestination) {
                encodeTarget222(buffer, destination);
              }
              if (hasSource) {
                encodeTarget222(buffer, source);
              }
              if (hasDestination) {
                buffer.buffer[buffer.offset++] = hopCount || DEFAULT_HOP_COUNT322;
              }
              if ((funct & 128) > 0) {
                buffer.buffer[buffer.offset++] = networkMsgType;
                if (networkMsgType >= 128) {
                  buffer.buffer[buffer.offset++] = (vendorId & 65280) >> 8;
                  buffer.buffer[buffer.offset++] = (vendorId & 255) >> 0;
                }
              }
            };
            var DEFAULT_BACNET_PORT2222 = 47808;
            var encode32222 = (buffer, func, msgLength, originatingIP) => {
              buffer[0] = BVLL_TYPE_BACNET_IP222;
              buffer[1] = func;
              buffer[2] = (msgLength & 65280) >> 8;
              buffer[3] = (msgLength & 255) >> 0;
              if (originatingIP) {
                if (func !== 4) {
                  throw new Error(
                    "Cannot specify originatingIP unless BvlcResultPurpose.FORWARDED_NPDU is used."
                  );
                }
                const [ipstr, portstr] = originatingIP.split(":");
                const port = parseInt(portstr, 10) || DEFAULT_BACNET_PORT2222;
                const ip = ipstr.split(".");
                buffer[4] = parseInt(ip[0], 10);
                buffer[5] = parseInt(ip[1], 10);
                buffer[6] = parseInt(ip[2], 10);
                buffer[7] = parseInt(ip[3], 10);
                buffer[8] = (port & 65280) >> 8;
                buffer[9] = (port & 255) >> 0;
                return 6 + BVLC_HEADER_LENGTH322;
              } else {
                if (func === 4) {
                  throw new Error(
                    "Must specify originatingIP if BvlcResultPurpose.FORWARDED_NPDU is used."
                  );
                }
              }
              return BVLC_HEADER_LENGTH322;
            };
            var decode32222 = (buffer, _offset) => {
              let len;
              const func = buffer[1];
              const msgLength = buffer[2] << 8 | buffer[3] << 0;
              if (buffer[0] !== BVLL_TYPE_BACNET_IP222 || buffer.length !== msgLength) {
                return void 0;
              }
              let originatingIP = null;
              switch (func) {
                case 0:
                case 10:
                case 11:
                case 9:
                case 5:
                case 6:
                case 8:
                case 2:
                case 1:
                case 3:
                case 7:
                  len = 4;
                  break;
                case 4:
                  const port = buffer[8] << 8 | buffer[9];
                  originatingIP = buffer.slice(4, 8).join(".");
                  if (port !== DEFAULT_BACNET_PORT2222) {
                    originatingIP += ":" + port;
                  }
                  len = 10;
                  break;
                case 12:
                  return void 0;
                default:
                  return void 0;
              }
              return {
                len,
                func,
                msgLength,
                // Originating IP is set to the IP address of the node that originally
                // sent the packet, when it has been forwarded to us by a BBMD (since the
                // BBMD's IP address will be in the sender field.
                originatingIP
              };
            };
            var EventEmitter2222 = import_events2222.default.EventEmitter;
            var debug3222 = (0, import_debug3222.default)("bacnet:client:debug");
            var trace2222 = (0, import_debug3222.default)("bacnet:client:trace");
            var ALL_INTERFACES222 = "0.0.0.0";
            var LOCALHOST_INTERFACES_IPV4222 = "127.0.0.1";
            var BROADCAST_ADDRESS222 = "255.255.255.255";
            var DEFAULT_HOP_COUNT2222 = 255;
            var BVLC_HEADER_LENGTH2222 = 4;
            var BVLC_FWD_HEADER_LENGTH222 = 10;
            var beU222 = UnconfirmedServiceChoice222;
            var unconfirmedServiceMap222 = {
              [beU222.I_AM]: "iAm",
              [beU222.WHO_IS]: "whoIs",
              [beU222.WHO_HAS]: "whoHas",
              [beU222.UNCONFIRMED_COV_NOTIFICATION]: "covNotifyUnconfirmed",
              [beU222.TIME_SYNCHRONIZATION]: "timeSync",
              [beU222.UTC_TIME_SYNCHRONIZATION]: "timeSyncUTC",
              [beU222.UNCONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
              [beU222.I_HAVE]: "iHave",
              [beU222.UNCONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
            };
            var beC222 = ConfirmedServiceChoice222;
            var confirmedServiceMap222 = {
              [beC222.READ_PROPERTY]: "readProperty",
              [beC222.WRITE_PROPERTY]: "writeProperty",
              [beC222.READ_PROPERTY_MULTIPLE]: "readPropertyMultiple",
              [beC222.WRITE_PROPERTY_MULTIPLE]: "writePropertyMultiple",
              [beC222.CONFIRMED_COV_NOTIFICATION]: "covNotify",
              [beC222.ATOMIC_WRITE_FILE]: "atomicWriteFile",
              [beC222.ATOMIC_READ_FILE]: "atomicReadFile",
              [beC222.SUBSCRIBE_COV]: "subscribeCov",
              [beC222.SUBSCRIBE_COV_PROPERTY]: "subscribeProperty",
              [beC222.DEVICE_COMMUNICATION_CONTROL]: "deviceCommunicationControl",
              [beC222.REINITIALIZE_DEVICE]: "reinitializeDevice",
              [beC222.CONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
              [beC222.READ_RANGE]: "readRange",
              [beC222.CREATE_OBJECT]: "createObject",
              [beC222.DELETE_OBJECT]: "deleteObject",
              [beC222.ACKNOWLEDGE_ALARM]: "alarmAcknowledge",
              [beC222.GET_ALARM_SUMMARY]: "getAlarmSummary",
              [beC222.GET_ENROLLMENT_SUMMARY]: "getEnrollmentSummary",
              [beC222.GET_EVENT_INFORMATION]: "getEventInformation",
              [beC222.LIFE_SAFETY_OPERATION]: "lifeSafetyOperation",
              [beC222.ADD_LIST_ELEMENT]: "addListElement",
              [beC222.REMOVE_LIST_ELEMENT]: "removeListElement",
              [beC222.CONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
            };
            var errorReasonEnums222 = {
              BacnetAbort: RejectReason222
            };
            var BacnetError222 = class extends Error {
              constructor(message, bacnetErrorClass, bacnetErrorCode) {
                super(message);
                this.bacnetErrorClass = bacnetErrorClass;
                this.bacnetErrorCode = bacnetErrorCode;
              }
            };
            function bacnetErrorToString222(err) {
              var _a;
              const isError = err instanceof Error || err instanceof BacnetError222;
              if (!isError)
                return;
              const message = err.message;
              const reasonClass = message == null ? void 0 : message.split(" - ")[0];
              const reason = +((_a = message == null ? void 0 : message.split("Reason:")[1]) == null ? void 0 : _a.split(" ")[0]);
              if (!errorReasonEnums222[reasonClass])
                return;
              const reasonString = errorReasonEnums222[reasonClass][reason];
              return reasonClass + ": " + reasonString;
            }
            var Client222 = class extends EventEmitter2222 {
              /**
               *
               * @param options
               */
              constructor(options) {
                super();
                options = options || {};
                this._invokeCounter = 1;
                this._invokeStore = {};
                this._lastSequenceNumber = 0;
                this._segmentStore = [];
                this._settings = {
                  port: options.port || 47808,
                  interface: options.interface || ALL_INTERFACES222,
                  transport: options.transport,
                  broadcastAddress: options.broadcastAddress || BROADCAST_ADDRESS222,
                  apduTimeout: options.apduTimeout || 3e3
                };
                options.reuseAddr = options.reuseAddr === void 0 ? true : !!options.reuseAddr;
                this._transport = this._settings.transport || new Transport222({
                  port: this._settings.port,
                  interface: this._settings.interface,
                  broadcastAddress: this._settings.broadcastAddress,
                  reuseAddr: options.reuseAddr
                });
                this._transport.on("message", this._receiveData.bind(this));
                this._transport.on("error", this._receiveError.bind(this));
                this._transport.on("listening", () => this.emit("listening"));
                this._transport.open();
              }
              /**
               *
               * @returns {number}
               * @private
               */
              _getInvokeId() {
                const id = this._invokeCounter++;
                if (id >= 256)
                  this._invokeCounter = 1;
                return id - 1;
              }
              /**
               *
               * @param id
               * @param err
               * @param result
               * @returns {*}
               * @private
               */
              _invokeCallback(id, err, result) {
                const callback = this._invokeStore[id];
                if (callback) {
                  return void callback(err, result);
                }
                debug3222("InvokeId", id, "not found -> drop package");
              }
              /**
               *
               * @param id
               * @param callback
               * @private
               */
              _addCallback(id, callback) {
                const timeout = setTimeout(() => {
                  delete this._invokeStore[id];
                  callback(new Error("ERR_TIMEOUT"));
                }, this._settings.apduTimeout);
                this._invokeStore[id] = (err, data) => {
                  clearTimeout(timeout);
                  delete this._invokeStore[id];
                  callback(err, data);
                };
              }
              /**
               *
               * @param isForwarded
               * @returns {{offset: (number), buffer: *}}
               * @private
               */
              _getBuffer(isForwarded) {
                return Object.assign(
                  {},
                  {
                    buffer: Buffer.alloc(this._transport.getMaxPayload()),
                    offset: isForwarded ? BVLC_FWD_HEADER_LENGTH222 : BVLC_HEADER_LENGTH2222
                  }
                );
              }
              /**
               *
               * @param invokeId
               * @param buffer
               * @param offset
               * @param length
               * @returns {*}
               * @private
               */
              _processError(invokeId, buffer, offset, length) {
                const result = error_exports222.decode(buffer, offset);
                trace2222("Received error:", result);
                if (!result) {
                  return debug3222("Couldn`t decode Error");
                }
                const err = new BacnetError222(error_exports222.buildMessage(result));
                err.bacnetErrorClass = result.class;
                err.bacnetErrorCode = result.code;
                this._invokeCallback(invokeId, err);
              }
              /**
               *
               * @param invokeId
               * @param reason
               * @private
               */
              _processAbort(invokeId, reason) {
                const err = new BacnetError222("BacnetAbort - Reason:" + reason);
                err.bacnetAbortReason = reason;
                err.bacnetErrorClass = AbortReason222;
                this._invokeCallback(invokeId, err);
              }
              /**
               *
               * @param receiver
               * @param negative
               * @param server
               * @param originalInvokeId
               * @param sequencenumber
               * @param actualWindowSize
               * @private
               */
              _segmentAckResponse(receiver, negative, server, originalInvokeId, sequencenumber, actualWindowSize) {
                const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
                encode31222(
                  buffer,
                  0,
                  receiver,
                  null,
                  DEFAULT_HOP_COUNT2222,
                  0,
                  0
                );
                encodeSegmentAck222(
                  buffer,
                  64 | (negative ? 2 : 0) | (server ? 1 : 0),
                  originalInvokeId,
                  sequencenumber,
                  actualWindowSize
                );
                this.sendBvlc(receiver, buffer);
              }
              /**
               *
               * @param msg
               * @param first
               * @param moreFollows
               * @param buffer
               * @param offset
               * @param length
               * @private
               */
              _performDefaultSegmentHandling(msg, first, moreFollows, buffer, offset, length) {
                if (first) {
                  this._segmentStore = [];
                  msg.type &= ~8;
                  let apduHeaderLen = 3;
                  if ((msg.type & PDU_TYPE_MASK222) === 0) {
                    apduHeaderLen = 4;
                  }
                  const apdubuffer = this._getBuffer();
                  apdubuffer.offset = 0;
                  buffer.copy(apdubuffer.buffer, apduHeaderLen, offset, offset + length);
                  if ((msg.type & PDU_TYPE_MASK222) === 0) {
                    encodeConfirmedServiceRequest222(
                      apdubuffer,
                      msg.type,
                      msg.service,
                      msg.maxSegments,
                      msg.maxApdu,
                      msg.invokeId,
                      0,
                      0
                    );
                  } else {
                    encodeComplexAck222(
                      apdubuffer,
                      msg.type,
                      msg.service,
                      msg.invokeId,
                      0,
                      0
                    );
                  }
                  this._segmentStore.push(
                    //@ts-ignore
                    apdubuffer.buffer.slice(0, length + apduHeaderLen)
                  );
                } else {
                  this._segmentStore.push(buffer.slice(offset, offset + length));
                }
                if (!moreFollows) {
                  const apduBuffer = Buffer.concat(this._segmentStore);
                  this._segmentStore = [];
                  msg.type &= ~8;
                  this._handlePdu(apduBuffer, 0, apduBuffer.length, msg.header);
                }
              }
              /**
               *
               * @param msg
               * @param server
               * @param buffer
               * @param offset
               * @param length
               * @private
               */
              _processSegment(msg, server, buffer, offset, length) {
                let first = false;
                if (msg.sequencenumber === 0 && this._lastSequenceNumber === 0) {
                  first = true;
                } else {
                  if (msg.sequencenumber !== this._lastSequenceNumber + 1) {
                    return this._segmentAckResponse(
                      msg.header.address,
                      true,
                      server,
                      msg.invokeId,
                      this._lastSequenceNumber,
                      msg.proposedWindowNumber
                    );
                  }
                }
                this._lastSequenceNumber = msg.sequencenumber;
                const moreFollows = msg.type & 4;
                if (!moreFollows) {
                  this._lastSequenceNumber = 0;
                }
                if (msg.sequencenumber % msg.proposedWindowNumber === 0 || !moreFollows) {
                  this._segmentAckResponse(
                    msg.header.address,
                    false,
                    server,
                    msg.invokeId,
                    msg.sequencenumber,
                    msg.proposedWindowNumber
                  );
                }
                this._performDefaultSegmentHandling(
                  msg,
                  first,
                  moreFollows,
                  buffer,
                  offset,
                  length
                );
              }
              /**
               *
               * @param serviceMap
               * @param content
               * @param buffer
               * @param offset
               * @param length
               * @returns {*}
               * @private
               */
              _processServiceRequest(serviceMap, content, buffer, offset, length) {
                let result;
                const sender = content.header.sender;
                if (sender.address === LOCALHOST_INTERFACES_IPV4222) {
                  debug3222("Received and skipped localhost service request:", content.service);
                  return;
                }
                const name = serviceMap[content.service];
                if (!name) {
                  debug3222("Received unsupported service request:", content.service);
                  return;
                }
                const id = content.invokeId ? "@" + content.invokeId : "";
                trace2222(`Received service request${id}:`, name);
                const serviceHandler = services_exports222[name];
                if (serviceHandler) {
                  try {
                    content.payload = serviceHandler.decode(buffer, offset, length);
                    trace2222(`Handled service request${id}:`, name, JSON.stringify(content));
                  } catch (e) {
                    debug3222("Exception thrown when processing message:", e);
                    debug3222("Original message was", name + ":", content);
                    return;
                  }
                  if (!content.payload) {
                    return debug3222("Received invalid", name, "message");
                  }
                } else {
                  debug3222("No serviceHandler defined for:", name);
                }
                if (this.listenerCount(name)) {
                  trace2222("listener count by name emits " + name + " with content");
                  this.emit(name, content);
                } else {
                  if (this.listenerCount("unhandledEvent")) {
                    trace2222("unhandled event emiting with content");
                    this.emit("unhandledEvent", content);
                  } else {
                    trace2222(
                      "no unhandled event handler with header: " + JSON.stringify(content.header)
                    );
                    if (content.header.expectingReply) {
                      debug3222("Replying with error for unhandled service:", name);
                      content.header.sender.forwardedFrom = null;
                      this.errorResponse(
                        content.header.sender,
                        content.service,
                        content.invokeId,
                        5,
                        67
                        /* REJECT_UNRECOGNIZED_SERVICE */
                      );
                    }
                  }
                }
              }
              /**
               *
               * @param buffer
               * @param offset
               * @param length
               * @param header
               * @private
               */
              _handlePdu(buffer, offset, length, header) {
                let msg;
                trace2222("handlePdu Header: ", header);
                switch (header.apduType & PDU_TYPE_MASK222) {
                  case 16:
                    msg = decodeUnconfirmedServiceRequest222(buffer, offset);
                    msg.header = header;
                    msg.header.confirmedService = false;
                    this._processServiceRequest(
                      unconfirmedServiceMap222,
                      msg,
                      buffer,
                      offset + msg.len,
                      length - msg.len
                    );
                    break;
                  case 32:
                    msg = decodeSimpleAck222(buffer, offset);
                    offset += msg.len;
                    length -= msg.len;
                    this._invokeCallback(msg.invokeId, null, {
                      msg,
                      buffer,
                      offset: offset + msg.len,
                      length: length - msg.len
                    });
                    break;
                  case 48:
                    msg = decodeComplexAck222(buffer, offset);
                    msg.header = header;
                    if ((header.apduType & 8) === 0) {
                      this._invokeCallback(msg.invokeId, null, {
                        msg,
                        buffer,
                        offset: offset + msg.len,
                        length: length - msg.len
                      });
                    } else {
                      this._processSegment(
                        msg,
                        true,
                        buffer,
                        offset + msg.len,
                        length - msg.len
                      );
                    }
                    break;
                  case 64:
                    msg = decodeSegmentAck222(buffer, offset);
                    msg.header = header;
                    this._processSegment(
                      msg,
                      true,
                      buffer,
                      offset + msg.len,
                      length - msg.len
                    );
                    break;
                  case 80:
                    msg = decodeError222(buffer, offset);
                    this._processError(
                      msg.invokeId,
                      buffer,
                      offset + msg.len,
                      length - msg.len
                    );
                    break;
                  case 96:
                  case 112:
                    msg = decodeAbort222(buffer, offset);
                    this._processAbort(msg.invokeId, msg.reason);
                    break;
                  case 0:
                    msg = decodeConfirmedServiceRequest222(buffer, offset);
                    msg.header = header;
                    msg.header.confirmedService = true;
                    if ((header.apduType & 8) === 0) {
                      this._processServiceRequest(
                        confirmedServiceMap222,
                        msg,
                        buffer,
                        offset + msg.len,
                        length - msg.len
                      );
                    } else {
                      this._processSegment(
                        msg,
                        true,
                        buffer,
                        offset + msg.len,
                        length - msg.len
                      );
                    }
                    break;
                  default:
                    debug3222(`Received unknown PDU type ${header.apduType} -> Drop packet`);
                    break;
                }
              }
              /**
               *
               * @param buffer
               * @param offset
               * @param msgLength
               * @param header
               * @returns {*}
               * @private
               */
              _handleNpdu(buffer, offset, msgLength, header) {
                if (msgLength <= 0) {
                  return trace2222("No NPDU data -> Drop package");
                }
                const result = decode31222(buffer, offset);
                if (!result) {
                  return trace2222("Received invalid NPDU header -> Drop package");
                }
                if (result.funct & 128) {
                  return trace2222("Received network layer message -> Drop package");
                }
                offset += result.len;
                msgLength -= result.len;
                if (msgLength <= 0) {
                  return trace2222("No APDU data -> Drop package");
                }
                header.apduType = getDecodedType222(buffer, offset);
                header.expectingReply = !!(result.funct & 4);
                this._handlePdu(buffer, offset, msgLength, header);
              }
              /**
               *
               * @param buffer
               * @param remoteAddress
               * @returns {*}
               * @private
               */
              _receiveData(buffer, remoteAddress) {
                if (buffer.length < BVLC_HEADER_LENGTH322) {
                  return trace2222("Received invalid data -> Drop package");
                }
                const result = decode32222(buffer, 0);
                if (!result) {
                  return trace2222("Received invalid BVLC header -> Drop package");
                }
                let header = {
                  // Which function the packet came in on, so later code can distinguish
                  // between ORIGINAL_BROADCAST_NPDU and DISTRIBUTE_BROADCAST_TO_NETWORK.
                  func: result.func,
                  sender: {
                    // Address of the host we are directly connected to. String, IP:port.
                    address: remoteAddress,
                    // If the host is a BBMD passing messages along to another node, this
                    // is the address of the distant BACnet node.  String, IP:port.
                    // Typically we won't have network connectivity to this address, but
                    // we have to include it in replies so the host we are connect to knows
                    // where to forward the messages.
                    forwardedFrom: null
                  }
                };
                switch (result.func) {
                  case 10:
                  case 11:
                    this._handleNpdu(
                      buffer,
                      result.len,
                      buffer.length - result.len,
                      header
                    );
                    break;
                  case 4:
                    header.sender.forwardedFrom = result.originatingIP;
                    this._handleNpdu(
                      buffer,
                      result.len,
                      buffer.length - result.len,
                      header
                    );
                    break;
                  case 5:
                    let decodeResult = register_foreign_device_exports222.decode(
                      buffer,
                      result.len,
                      buffer.length - result.len
                    );
                    if (!decodeResult) {
                      return trace2222("Received invalid registerForeignDevice message");
                    }
                    this.emit("registerForeignDevice", {
                      header,
                      payload: decodeResult
                    });
                    break;
                  case 9:
                    this._handleNpdu(
                      buffer,
                      result.len,
                      buffer.length - result.len,
                      header
                    );
                    break;
                  default:
                    debug3222(
                      "Received unknown BVLC function " + result.func + " -> Drop package"
                    );
                    break;
                }
              }
              /**
               * @event bacnet.error
               * @param {error} err - The error object thrown by the underlying transport layer.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.on('error', (err) => {
               *   console.log('Error occurred: ', err);
               *   client.close();
               * });
               */
              _receiveError(err) {
                this.emit("error", err);
              }
              /**
               * The whoIs command discovers all BACNET devices in a network.
               * @function bacnet.whoIs
               * @param {string} receiver - IP address of the target device.
               * @param {object=} options
               * @param {number=} options.lowLimit - Minimal device instance number to search for.
               * @param {number=} options.highLimit - Maximal device instance number to search for.
               * @fires bacnet.iAm
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.whoIs();
               */
              whoIs(receiver, options) {
                if (!options) {
                  if (receiver && typeof receiver === "object" && receiver.address === void 0 && receiver.forwardedFrom === void 0 && (receiver.lowLimit !== void 0 || receiver.highLimit !== void 0)) {
                    options = receiver;
                    receiver = void 0;
                  }
                }
                options = options || {};
                const settings = {
                  lowLimit: options.lowLimit,
                  highLimit: options.highLimit
                };
                const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
                encode31222(
                  buffer,
                  0,
                  //@ts-ignore
                  receiver,
                  null,
                  DEFAULT_HOP_COUNT2222,
                  0,
                  0
                );
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  8
                  /* WHO_IS */
                );
                who_is_exports222.encode(buffer, settings.lowLimit, settings.highLimit);
                this.sendBvlc(receiver, buffer);
              }
              /**
               * The timeSync command sets the time of a target device.
               * @function bacnet.timeSync
               * @param {string} receiver - IP address of the target device.
               * @param {date} dateTime - The date and time to set on the target device.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.timeSync('192.168.1.43', new Date());
               */
              timeSync(receiver, dateTime) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  6
                  /* TIME_SYNCHRONIZATION */
                );
                time_sync_exports222.encode(buffer, dateTime);
                this.sendBvlc(receiver, buffer);
              }
              /**
               * The timeSyncUTC command sets the UTC time of a target device.
               * @function bacnet.timeSyncUTC
               * @param {string} receiver - IP address of the target device.
               * @param {date} dateTime - The date and time to set on the target device.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.timeSyncUTC('192.168.1.43', new Date());
               */
              timeSyncUTC(receiver, dateTime) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  9
                  /* UTC_TIME_SYNCHRONIZATION */
                );
                time_sync_exports222.encode(buffer, dateTime);
                this.sendBvlc(receiver, buffer);
              }
              /**
               * The readProperty command reads a single property of an object from a device.
               * @function bacnet.readProperty
               * @param {string} receiver - IP address of the target device.
               * @param {object} objectId - The BACNET object ID to read.
               * @param {number} objectId.type - The BACNET object type to read.
               * @param {number} objectId.instance - The BACNET object instance to read.
               * @param {number} propertyId - The BACNET property id in the specified object to read.
               * @param {object=} options
               * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
               * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
               * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
               * @param {number=} options.arrayIndex - The array index of the property to be read.
               * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.readProperty('192.168.1.43', {type: 8, instance: 44301}, 28, (err, value) => {
               *   console.log('value: ', value);
               * });
               */
              readProperty(receiver, objectId, propertyId, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId(),
                  arrayIndex: options.arrayIndex || options.arrayIndex === 0 ? options.arrayIndex : ASN1_ARRAY_ALL222
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  //@ts-ignore
                  receiver,
                  null,
                  DEFAULT_HOP_COUNT2222,
                  0,
                  0
                );
                const type = 0 | //@ts-ignore
                (settings.maxSegments !== 0 ? 2 : 0);
                encodeConfirmedServiceRequest222(
                  buffer,
                  type,
                  12,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                read_property_exports222.encode(
                  buffer,
                  objectId.type,
                  objectId.instance,
                  propertyId,
                  settings.arrayIndex
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  const result = read_property_exports222.decodeAcknowledge(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return void next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               * The writeProperty command writes a single property of an object to a device.
               * @function bacnet.writeProperty
               * @param {string} receiver - IP address of the target device.
               * @param {object} objectId - The BACNET object ID to write.
               * @param {number} objectId.type - The BACNET object type to write.
               * @param {number} objectId.instance - The BACNET object instance to write.
               * @param {number} propertyId - The BACNET property id in the specified object to write.
               * @param {object[]} values - A list of values to be written to the specified property.
               * @param {ApplicationTag} values.type - The data-type of the value to be written.
               * @param {number} values.value - The actual value to be written.
               * @param {object=} options
               * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
               * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
               * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
               * @param {number=} options.arrayIndex - The array index of the property to be read.
               * @param {number=} options.priority - The priority of the value to be written.
               * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.writeProperty('192.168.1.43', {type: 8, instance: 44301}, 28, [
               *   {type: bacnet.enum.ApplicationTag.REAL, value: 100}
               * ], (err, value) => {
               *   console.log('value: ', value);
               * });
               */
              writeProperty(receiver, objectId, propertyId, values, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId(),
                  arrayIndex: options.arrayIndex || ASN1_ARRAY_ALL222,
                  priority: options.priority || ASN1_NO_PRIORITY222
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  //@ts-ignore Todo somehow types do not match at all
                  receiver,
                  null,
                  DEFAULT_HOP_COUNT2222,
                  0,
                  0
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  15,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                write_property_exports222.encode(
                  buffer,
                  objectId.type,
                  objectId.instance,
                  propertyId,
                  settings.arrayIndex,
                  settings.priority,
                  values
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  next(err);
                });
              }
              /**
               * The readPropertyMultiple command reads multiple properties in multiple objects from a device.
               * @function bacnet.readPropertyMultiple
               * @param {string} receiver - IP address of the target device.
               * @param {object[]} propertiesArray - List of object and property specifications to be read.
               * @param {object} propertiesArray.objectId - Specifies which object to read.
               * @param {number} propertiesArray.objectId.type - The BACNET object type to read.
               * @param {number} propertiesArray.objectId.instance - The BACNET object instance to read.
               * @param {object[]} propertiesArray.properties - List of properties to be read.
               * @param {number} propertiesArray.properties.id - The BACNET property id in the specified object to read. Also supports 8 for all properties.
               * @param {object=} options
               * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
               * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
               * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
               * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * const requestArray = [
               *   {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]}
               * ];
               * client.readPropertyMultiple('192.168.1.43', requestArray, (err, value) => {
               *   console.log('value: ', value);
               * });
               */
              readPropertyMultiple(receiver, propertiesArray, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const isForwarded = typeof receiver !== "string" && receiver.forwardedFrom;
                const buffer = this._getBuffer(!!isForwarded);
                encode31222(
                  buffer,
                  0 | 4,
                  //@ts-ignore Todo somehow types do not match at all
                  receiver,
                  null,
                  DEFAULT_HOP_COUNT2222,
                  0,
                  0
                );
                const type = 0 | //@ts-ignore
                (settings.maxSegments !== 0 ? 2 : 0);
                encodeConfirmedServiceRequest222(
                  buffer,
                  type,
                  14,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                read_property_multiple_exports222.encode(buffer, propertiesArray);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return next(err);
                  }
                  const result = read_property_multiple_exports222.decodeAcknowledge(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               * The writePropertyMultiple command writes multiple properties in multiple objects to a device.
               * @function bacnet.writePropertyMultiple
               * @param {string} receiver - IP address of the target device.
               * @param {object[]} values - List of object and property specifications to be written.
               * @param {object} values.objectId - Specifies which object to read.
               * @param {number} values.objectId.type - The BACNET object type to read.
               * @param {number} values.objectId.instance - The BACNET object instance to read.
               * @param {object[]} values.values - List of properties to be written.
               * @param {object} values.values.property - Property specifications to be written.
               * @param {number} values.values.property.id - The BACNET property id in the specified object to write.
               * @param {number} values.values.property.index - The array index of the property to be written.
               * @param {object[]} values.values.value - A list of values to be written to the specified property.
               * @param {ApplicationTag} values.values.value.type - The data-type of the value to be written.
               * @param {object} values.values.value.value - The actual value to be written.
               * @param {number} values.values.priority - The priority to be used for writing to the property.
               * @param {object=} options
               * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
               * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
               * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
               * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * const values = [
               *   {objectId: {type: 8, instance: 44301}, values: [
               *     {property: {id: 28, index: 12}, value: [{type: bacnet.enum.ApplicationTag.BOOLEAN, value: true}], priority: 8}
               *   ]}
               * ];
               * client.writePropertyMultiple('192.168.1.43', values, (err, value) => {
               *   console.log('value: ', value);
               * });
               */
              writePropertyMultiple(receiver, values, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  //@ts-ignore
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  16,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId
                );
                write_property_multiple_exports222.encodeObject(buffer, values);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  next(err);
                });
              }
              /**
               * The confirmedCOVNotification command is used to push notifications to other
               * systems that have registered with us via a subscribeCOV message.
               * @function bacnet.confirmedCOVNotification
               * @param {string} receiver - IP address of the target device.
               * @param {object} monitoredObject - The object being monitored, from subscribeCOV.
               * @param {number} monitoredObject.type - Object type.
               * @param {number} monitoredObject.instance - Object instance.
               * @param {number} subscribeId - Subscriber ID from subscribeCOV,
               * @param {number} initiatingDeviceId - Our BACnet device ID.
               * @param {number} lifetime - Number of seconds left until the subscription expires.
               * @param {array} values - values for the monitored object.  See example.
               * @param {object=} options
               * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
               * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
               * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
               * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * const settings = {deviceId: 123}; // our BACnet device
               *
               * // Items saved from subscribeCOV message
               * const monitoredObject = {type: 1, instance: 1};
               * const subscriberProcessId = 123;
               *
               * client.confirmedCOVNotification(
               *   '192.168.1.43',
               *   monitoredObject,
               *   subscriberProcessId,
               *   settings.deviceId,
               *   30, // should be lifetime of subscription really
               *   [
               *     {
               *       property: { id: bacnet.enum.PropertyIdentifier.PRESENT_VALUE },
               *       value: [
               *         {value: 123, type: bacnet.enum.ApplicationTag.REAL},
               *       ],
               *     },
               *   ],
               *   (err) => {
               *     console.log('error: ', err);
               *   }
               * );
               */
              confirmedCOVNotification(receiver, monitoredObject, subscribeId, initiatingDeviceId, lifetime, values, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer();
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  1,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                cov_notify_exports222.encode(
                  buffer,
                  subscribeId,
                  initiatingDeviceId,
                  monitoredObject,
                  lifetime,
                  values
                );
                encode32222(
                  buffer.buffer,
                  10,
                  buffer.offset
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               * The deviceCommunicationControl command enables or disables network communication of the target device.
               * @function bacnet.deviceCommunicationControl
               * @param {string} receiver - IP address of the target device.
               * @param {number} timeDuration - The time to hold the network communication state in seconds. 0 for infinite.
               * @param {EnableDisable} enableDisable - The network communication state to set.
               * @param {object=} options
               * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
               * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
               * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
               * @param {string=} options.password - The optional password used to set the network communication state.
               * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.deviceCommunicationControl('192.168.1.43', 0, bacnet.enum.EnableDisable.DISABLE, (err) => {
               *   console.log('error: ', err);
               * });
               */
              deviceCommunicationControl(receiver, timeDuration, enableDisable, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId(),
                  password: options.password
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  17,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                device_communication_control_exports222.encode(
                  buffer,
                  timeDuration,
                  enableDisable,
                  settings.password
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  next(err);
                });
              }
              /**
               * The reinitializeDevice command initiates a restart of the target device.
               * @function bacnet.reinitializeDevice
               * @param {string} receiver - IP address of the target device.
               * @param {ReinitializedState} state - The type of restart to be initiated.
               * @param {object=} options
               * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
               * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
               * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
               * @param {string=} options.password - The optional password used to restart the device.
               * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.reinitializeDevice('192.168.1.43', bacnet.enum.ReinitializedState.COLDSTART, (err, value) => {
               *   console.log('value: ', value);
               * });
               */
              reinitializeDevice(receiver, state, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId(),
                  password: options.password
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  20,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                reinitialize_device_exports222.encode(buffer, state, settings.password);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  next(err);
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param position
               * @param fileBuffer
               * @param options
               * @param next
               */
              writeFile(receiver, objectId, position, fileBuffer, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  7,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                atomic_write_file_exports222.encode(
                  buffer,
                  false,
                  objectId,
                  position,
                  fileBuffer
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  const result = atomic_write_file_exports222.decodeAcknowledge(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return void next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param position
               * @param count
               * @param options
               * @param next
               */
              readFile(receiver, objectId, position, count, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  6,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                atomic_read_file_exports222.encode(buffer, true, objectId, position, count);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  const result = atomic_read_file_exports222.decodeAcknowledge(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return void next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param idxBegin
               * @param quantity
               * @param options
               * @param next
               */
              readRange(receiver, objectId, idxBegin, quantity, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  26,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                read_range_exports222.encode(
                  buffer,
                  objectId,
                  131,
                  ASN1_ARRAY_ALL222,
                  0,
                  idxBegin,
                  /* @__PURE__ */ new Date(),
                  quantity
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  const result = read_range_exports222.decodeAcknowledge(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return void next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param subscribeId
               * @param cancel
               * @param issueConfirmedNotifications
               * @param lifetime
               * @param options
               * @param next
               */
              subscribeCov(receiver, objectId, subscribeId, cancel, issueConfirmedNotifications, lifetime, options, nextFunc) {
                const next = nextFunc || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  // @ts-ignore TODO types not matching with documentation and code
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  5,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                subscribe_cov_exports222.encode(
                  buffer,
                  subscribeId,
                  objectId,
                  cancel,
                  issueConfirmedNotifications,
                  lifetime
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param monitoredProperty
               * @param subscribeId
               * @param cancel
               * @param issueConfirmedNotifications
               * @param options
               * @param next
               */
              subscribeProperty(receiver, objectId, monitoredProperty, subscribeId, cancel, issueConfirmedNotifications, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  28,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                subscribe_property_exports222.encode(
                  buffer,
                  subscribeId,
                  objectId,
                  cancel,
                  issueConfirmedNotifications,
                  0,
                  monitoredProperty,
                  false,
                  15
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               * The unconfirmedCOVNotification command sends an unconfirmed COV notification to a device
               * @function bacnet.unconfirmedCOVNotification
               * @param {string} receiver - IP address of the target device.
               * @param {number} subscriberProcessId - The process id which was used by a target device in the subscription.
               * @param {number} initiatingDeviceId - The id of this device.
               * @param {object} monitoredObjectId - Specifies about which object the notification is.
               * @param {number} monitoredObjectId.type - The BACNET object type of the notification.
               * @param {number} monitoredObjectId.instance - The BACNET object instance of the notification.
               * @param {number} timeRemaining - How long the subscription is still active in seconds.
               * @param {object[]} values - List of properties with updated values.
               * @param {object} values.property - Property specifications.
               * @param {number} values.property.id - The updated BACNET property id.
               * @param {number} values.property.index - The array index of the updated property.
               * @param {object[]} values.value - A list of updated values.
               * @param {ApplicationTag} values.value.type - The data-type of the updated value.
               * @param {object} values.value.value - The actual updated value.
               * @param {number} values.priority - The priority of the updated property.
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.unconfirmedCOVNotification(
               *            '127.0.0.1',
               *            3,
               *            433,
               *            {type: 2, instance: 122},
               *            120,
               *            [
               *              {
               *                property: {id: 85},
               *                value: [{type: baEnum.ApplicationTag.REAL, value: 12.3}]
               *              },
               *              {
               *                property: {id: 111},
               *                value: [{type: baEnum.ApplicationTag.BIT_STRING, value: 0xFFFF}]
               *              }
               *            ]);
               */
              unconfirmedCOVNotification(receiver, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) {
                const buffer = this._getBuffer();
                encode31222(buffer, 0, receiver);
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  2
                  /* UNCONFIRMED_COV_NOTIFICATION */
                );
                cov_notify_exports222.encode(
                  buffer,
                  subscriberProcessId,
                  initiatingDeviceId,
                  monitoredObjectId,
                  timeRemaining,
                  values
                );
                encode32222(
                  buffer.buffer,
                  10,
                  buffer.offset
                );
                this._transport.send(buffer.buffer, buffer.offset, receiver);
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param values
               * @param options
               * @param next
               */
              createObject(receiver, objectId, values, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  10,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                create_object_exports222.encode(buffer, objectId, values);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param options
               * @param next
               */
              deleteObject(receiver, objectId, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  11,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                delete_object_exports222.encode(buffer, objectId);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param reference
               * @param values
               * @param options
               * @param next
               */
              removeListElement(receiver, objectId, reference, values, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  9,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                add_list_element_exports222.encode(
                  buffer,
                  objectId,
                  reference.id,
                  reference.index,
                  values
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param reference
               * @param values
               * @param options
               * @param next
               */
              addListElement(receiver, objectId, reference, values, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  8,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                add_list_element_exports222.encode(
                  buffer,
                  objectId,
                  reference.id,
                  reference.index,
                  values
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               *
               * @param receiver
               * @param options
               * @param next
               */
              getAlarmSummary(receiver, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  3,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  const result = alarm_summary_exports222.decode(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return void next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param options
               * @param next
               */
              getEventInformation(receiver, objectId, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  29,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                encodeContextObjectId222(buffer, 0, objectId.type, objectId.instance);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  const result = event_information_exports222.decode(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return void next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               *
               * @param receiver
               * @param objectId
               * @param eventState
               * @param ackText
               * @param evTimeStamp
               * @param ackTimeStamp
               * @param options
               * @param next
               */
              acknowledgeAlarm(receiver, objectId, eventState, ackText, evTimeStamp, ackTimeStamp, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  0,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                alarm_acknowledge_exports222.encode(
                  buffer,
                  57,
                  objectId,
                  eventState,
                  ackText,
                  evTimeStamp,
                  ackTimeStamp
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               *
               * @param receiver
               * @param vendorId
               * @param serviceNumber
               * @param data
               * @param options
               * @param next
               */
              confirmedPrivateTransfer(receiver, vendorId, serviceNumber, data, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  18,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                private_transfer_exports222.encode(buffer, vendorId, serviceNumber, data);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data2) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               *
               * @param receiver
               * @param vendorId
               * @param serviceNumber
               * @param data
               */
              unconfirmedPrivateTransfer(receiver, vendorId, serviceNumber, data) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  4
                  /* UNCONFIRMED_PRIVATE_TRANSFER */
                );
                private_transfer_exports222.encode(buffer, vendorId, serviceNumber, data);
                this.sendBvlc(receiver, buffer);
              }
              /**
               *
               * @param receiver
               * @param acknowledgmentFilter
               * @param options
               * @param next
               */
              getEnrollmentSummary(receiver, acknowledgmentFilter, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  4,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                get_enrollment_summary_exports222.encode(
                  buffer,
                  acknowledgmentFilter,
                  options.enrollmentFilter,
                  options.eventStateFilter,
                  options.eventTypeFilter,
                  options.priorityFilter,
                  options.notificationClassFilter
                );
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  const result = get_enrollment_summary_exports222.decodeAcknowledge(
                    data.buffer,
                    data.offset,
                    data.length
                  );
                  if (!result) {
                    return void next(new Error("INVALID_DECODING"));
                  }
                  next(null, result);
                });
              }
              /**
               *
               * @param receiver
               * @param eventNotification
               */
              unconfirmedEventNotification(receiver, eventNotification) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  3
                  /* UNCONFIRMED_EVENT_NOTIFICATION */
                );
                event_notify_data_exports222.encode(buffer, eventNotification);
                this.sendBvlc(receiver, buffer);
              }
              /**
               *
               * @param receiver
               * @param eventNotification
               * @param options
               * @param next
               */
              confirmedEventNotification(receiver, eventNotification, options, next) {
                next = next || options;
                const settings = {
                  maxSegments: options.maxSegments || 112,
                  maxApdu: options.maxApdu || 5,
                  invokeId: options.invokeId || this._getInvokeId()
                };
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(
                  buffer,
                  0 | 4,
                  receiver
                );
                encodeConfirmedServiceRequest222(
                  buffer,
                  0,
                  2,
                  settings.maxSegments,
                  settings.maxApdu,
                  settings.invokeId,
                  0,
                  0
                );
                event_notify_data_exports222.encode(buffer, eventNotification);
                this.sendBvlc(receiver, buffer);
                this._addCallback(settings.invokeId, (err, data) => {
                  if (err) {
                    return void next(err);
                  }
                  next();
                });
              }
              /**
               * The readPropertyResponse call sends a response with information about one of our properties.
               * @function bacnet.readPropertyResponse
               * @param {string} receiver - IP address of the target device.
               * @param {number} invokeId - ID of the original readProperty request.
               * @param {object} objectId - objectId from the original request,
               * @param {object} property - property being read, taken from the original request.
               * @param {object=} options varying behaviour for special circumstances
               * @param {string=} options.forwardedFrom - If functioning as a BBMD, the IP address this message originally came from.
               */
              readPropertyResponse(receiver, invokeId, objectId, property, value, options = {}) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeComplexAck222(
                  buffer,
                  48,
                  12,
                  invokeId
                );
                read_property_exports222.encodeAcknowledge(
                  buffer,
                  objectId,
                  property.id,
                  property.index,
                  value
                );
                this.sendBvlc(receiver, buffer);
              }
              readPropertyMultipleResponse(receiver, invokeId, values) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeComplexAck222(
                  buffer,
                  48,
                  14,
                  invokeId
                );
                read_property_multiple_exports222.encodeAcknowledge(buffer, values);
                this.sendBvlc(receiver, buffer);
              }
              /**
               * The iAmResponse command is sent as a reply to a whoIs request.
               * @function bacnet.iAmResponse
               * @param {object} receiver - address to send packet to, null for local broadcast.
               * @param {number} deviceId - Our device ID.
               * @param {number} segmentation - an enum.Segmentation value.
               * @param {number} vendorId - The numeric ID assigned to the organisation providing this application.
               */
              iAmResponse(receiver, deviceId, segmentation, vendorId) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  0
                  /* I_AM */
                );
                i_am_exports222.encode(
                  buffer,
                  deviceId,
                  this._transport.getMaxPayload(),
                  segmentation,
                  vendorId
                );
                this.sendBvlc(receiver, buffer);
              }
              /**
               *
               * @param receiver
               * @param deviceId
               * @param objectId
               * @param objectName
               */
              iHaveResponse(receiver, deviceId, objectId, objectName) {
                const buffer = this._getBuffer(
                  !!(typeof receiver !== "string" && receiver.forwardedFrom)
                );
                encode31222(buffer, 0, receiver);
                encodeUnconfirmedServiceRequest222(
                  buffer,
                  16,
                  1
                  /* I_HAVE */
                );
                i_have_exports222.encode(buffer, deviceId, objectId, objectName);
                this.sendBvlc(receiver, buffer);
              }
              /**
               *
               * @param receiver
               * @param service
               * @param invokeId
               */
              simpleAckResponse(receiver, service, invokeId) {
                if (typeof receiver === "string")
                  return;
                const buffer = this._getBuffer(!!receiver.forwardedFrom);
                encode31222(buffer, 0, receiver);
                encodeSimpleAck222(
                  buffer,
                  32,
                  service,
                  invokeId
                );
                this.sendBvlc(receiver, buffer);
              }
              /**
               *
               * @param receiver
               * @param service
               * @param invokeId
               * @param errorClass
               * @param errorCode
               */
              errorResponse(receiver, service, invokeId, errorClass, errorCode) {
                trace2222(
                  `error response on ${JSON.stringify(receiver)} service: ${JSON.stringify(
                    service
                  )} invokeId: ${invokeId} errorClass: ${errorClass} errorCode: ${errorCode}`
                );
                trace2222(
                  `error message ${error_exports222.buildMessage({
                    class: errorClass,
                    code: errorCode
                  })}`
                );
                const hasSource = !!(typeof receiver !== "string" && receiver.forwardedFrom);
                if (typeof receiver === "string")
                  throw new Error("receiver must be object");
                const buffer = this._getBuffer(hasSource);
                encode31222(buffer, 0, receiver);
                encodeError222(buffer, 80, service, invokeId);
                error_exports222.encode(buffer, errorClass, errorCode);
                this.sendBvlc(receiver, buffer);
              }
              /**
               *
               * @param receiver
               * @param buffer
               */
              sendBvlc(receiver, buffer) {
                if (typeof receiver === "string") {
                  receiver = {
                    address: receiver
                  };
                }
                if (receiver && receiver.forwardedFrom) {
                  encode32222(
                    buffer.buffer,
                    4,
                    buffer.offset,
                    receiver.forwardedFrom
                  );
                } else if (receiver && receiver.address) {
                  encode32222(
                    buffer.buffer,
                    10,
                    buffer.offset
                  );
                } else {
                  encode32222(
                    buffer.buffer,
                    11,
                    buffer.offset
                  );
                }
                this._transport.send(
                  buffer.buffer,
                  buffer.offset,
                  receiver && receiver.address || null
                );
              }
              /**
               * The resultResponse is a BVLC-Result message used to respond to certain events, such as BBMD registration.
               * This message cannot be wrapped for passing through a BBMD, as it is used as a BBMD control message.
               * @function bacnet.resultResponse
               * @param {string} receiver - IP address of the target device.
               * @param {number} resultCode - Single value from BvlcResultFormat enum.
               */
              resultResponse(receiver, resultCode) {
                const buffer = this._getBuffer();
                encodeResult222(buffer, resultCode);
                encode32222(
                  buffer.buffer,
                  0,
                  buffer.offset
                );
                this._transport.send(buffer.buffer, buffer.offset, receiver.address);
              }
              /**
               * Unloads the current bacnet instance and closes the underlying UDP socket.
               * @function bacnet.close
               * @example
               * const bacnet = require('node-bacnet');
               * const client = new bacnet();
               *
               * client.close();
               */
              close() {
                this._transport.close();
              }
              /**
               * Helper function to take an array of enums and produce a bitstring suitable
               * for inclusion as a property.
               *
               * @example
               * [bacnet.enum.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED]: [
               *   {value: bacnet.createBitstring([
               *     bacnet.enum.ObjectTypesSupported.ANALOG_INPUT,
               *     bacnet.enum.ObjectTypesSupported.ANALOG_OUTPUT,
               *   ]),
               *   type: bacnet.enum.ApplicationTag.BIT_STRING},
               * ],
               */
              static createBitstring(items) {
                let offset = 0;
                let bytes = [];
                let bitsUsed = 0;
                while (items.length) {
                  let value = 0;
                  items = items.filter((i) => {
                    if (i >= offset + 8) {
                      return true;
                    }
                    value |= 1 << i - offset;
                    bitsUsed = Math.max(bitsUsed, i);
                    return false;
                  });
                  bytes.push(value);
                  offset += 8;
                }
                bitsUsed++;
                return {
                  value: bytes,
                  bitsUsed
                };
              }
            };
            var import_underscore222 = __toESM222(require("underscore"));
            var import_process222 = __toESM222(require("process"));
            var PropertyIdentifierToEnumMap222 = {};
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.OBJECT_TYPE] = enum_exports222.ObjectType;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.SEGMENTATION_SUPPORTED] = enum_exports222.Segmentation;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.EVENT_STATE] = enum_exports222.EventState;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.UNITS] = enum_exports222.EngineeringUnits;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.RELIABILITY] = enum_exports222.Reliability;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.NOTIFY_TYPE] = enum_exports222.NotifyType;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.POLARITY] = enum_exports222.Polarity;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED] = enum_exports222.ServicesSupported;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED] = enum_exports222.ObjectTypesSupported;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.STATUS_FLAGS] = enum_exports222.StatusFlags;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.LIMIT_ENABLE] = enum_exports222.LimitEnable;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.EVENT_ENABLE] = enum_exports222.EventTransitionBits;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.ACKED_TRANSITIONS] = enum_exports222.EventTransitionBits;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.SYSTEM_STATUS] = enum_exports222.DeviceStatus;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.SYSTEM_STATUS] = enum_exports222.DeviceStatus;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.ACK_REQUIRED] = enum_exports222.EventTransitionBits;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.LOGGING_TYPE] = enum_exports222.LoggingType;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.FILE_ACCESS_METHOD] = enum_exports222.FileAccessMethod;
            PropertyIdentifierToEnumMap222[enum_exports222.PropertyIdentifier.NODE_TYPE] = enum_exports222.NodeType;
            var ObjectTypeSpecificPropertyIdentifierToEnumMap222 = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_INPUT] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_INPUT][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_INPUT][enum_exports222.PropertyIdentifier.MODE] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.ANALOG_INPUT] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.ANALOG_INPUT][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.ANALOG_OUTPUT] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.ANALOG_OUTPUT][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_OUTPUT] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_OUTPUT][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_OUTPUT][enum_exports222.PropertyIdentifier.RELINQUISH_DEFAULT] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_VALUE] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_VALUE][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_VALUE][enum_exports222.PropertyIdentifier.RELINQUISH_DEFAULT] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_LIGHTING_OUTPUT] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_LIGHTING_OUTPUT][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.BinaryLightingPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BITSTRING_VALUE] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.BINARY_VALUE][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.BinaryPV;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_POINT] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_POINT][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.LifeSafetyState;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_POINT][enum_exports222.PropertyIdentifier.TRACKING_VALUE] = enum_exports222.LifeSafetyState;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_POINT][enum_exports222.PropertyIdentifier.MODE] = enum_exports222.LifeSafetyMode;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_POINT][enum_exports222.PropertyIdentifier.ACCEPTED_MODES] = enum_exports222.LifeSafetyMode;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_POINT][enum_exports222.PropertyIdentifier.SILENCED] = enum_exports222.LifeSafetyState;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_POINT][enum_exports222.PropertyIdentifier.OPERATION_EXPECTED] = enum_exports222.LifeSafetyOperation;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_ZONE] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_ZONE][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.LifeSafetyState;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LIFE_SAFETY_ZONE][enum_exports222.PropertyIdentifier.MODE] = enum_exports222.LifeSafetyMode;
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LOAD_CONTROL] = {};
            ObjectTypeSpecificPropertyIdentifierToEnumMap222[enum_exports222.ObjectType.LOAD_CONTROL][enum_exports222.PropertyIdentifier.PRESENT_VALUE] = enum_exports222.ShedState;
            var propSubSet222 = import_process222.default.argv.includes("--all") ? Object.values(enum_exports222.PropertyIdentifier) : [
              /* normally supported from all devices */
              enum_exports222.PropertyIdentifier.OBJECT_IDENTIFIER,
              enum_exports222.PropertyIdentifier.OBJECT_NAME,
              enum_exports222.PropertyIdentifier.OBJECT_TYPE,
              enum_exports222.PropertyIdentifier.PRESENT_VALUE,
              enum_exports222.PropertyIdentifier.STATUS_FLAGS,
              enum_exports222.PropertyIdentifier.EVENT_STATE,
              enum_exports222.PropertyIdentifier.RELIABILITY,
              enum_exports222.PropertyIdentifier.OUT_OF_SERVICE,
              enum_exports222.PropertyIdentifier.UNITS,
              /* other properties */
              enum_exports222.PropertyIdentifier.DESCRIPTION,
              enum_exports222.PropertyIdentifier.SYSTEM_STATUS,
              enum_exports222.PropertyIdentifier.VENDOR_NAME,
              enum_exports222.PropertyIdentifier.VENDOR_IDENTIFIER,
              enum_exports222.PropertyIdentifier.MODEL_NAME,
              enum_exports222.PropertyIdentifier.FIRMWARE_REVISION,
              enum_exports222.PropertyIdentifier.APPLICATION_SOFTWARE_VERSION,
              enum_exports222.PropertyIdentifier.LOCATION,
              enum_exports222.PropertyIdentifier.LOCAL_DATE,
              enum_exports222.PropertyIdentifier.LOCAL_TIME,
              enum_exports222.PropertyIdentifier.UTC_OFFSET,
              enum_exports222.PropertyIdentifier.DAYLIGHT_SAVINGS_STATUS,
              enum_exports222.PropertyIdentifier.PROTOCOL_VERSION,
              enum_exports222.PropertyIdentifier.PROTOCOL_REVISION,
              enum_exports222.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED,
              enum_exports222.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED,
              enum_exports222.PropertyIdentifier.OBJECT_LIST,
              enum_exports222.PropertyIdentifier.MAX_APDU_LENGTH_ACCEPTED,
              enum_exports222.PropertyIdentifier.SEGMENTATION_SUPPORTED,
              enum_exports222.PropertyIdentifier.APDU_TIMEOUT,
              enum_exports222.PropertyIdentifier.NUMBER_OF_APDU_RETRIES,
              enum_exports222.PropertyIdentifier.DEVICE_ADDRESS_BINDING,
              enum_exports222.PropertyIdentifier.DATABASE_REVISION,
              enum_exports222.PropertyIdentifier.MAX_INFO_FRAMES,
              enum_exports222.PropertyIdentifier.MAX_MASTER,
              enum_exports222.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS,
              enum_exports222.PropertyIdentifier.ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS
            ];
            var debug4222 = import_process222.default.argv.includes("--debug");
            function getAllPropertiesManually222(address, objectId, callback, propList, result) {
              if (!propList) {
                propList = propSubSet222.map((x) => x);
              }
              if (!result) {
                result = [];
              }
              if (!propList.length) {
                return callback({
                  values: [
                    {
                      objectId,
                      values: result
                    }
                  ]
                });
              }
              const prop = propList.shift();
              bacnetClient.readProperty(address, objectId, prop, {}, (err, value) => {
                if (!err) {
                  if (debug4222) {
                    console.log("Handle value " + prop + ": ", JSON.stringify(value));
                  }
                  const objRes = value.property;
                  objRes.value = value.values;
                  result.push(objRes);
                } else {
                }
                getAllPropertiesManually222(address, objectId, callback, propList, result);
              });
            }
            function readBit222(buffer, i, bit) {
              return (buffer[i] >> bit) % 2;
            }
            function handleBitString222(buffer, bitsUsed, usedEnum) {
              const res = [];
              for (let i = 0; i < bitsUsed; i++) {
                const bufferIndex = Math.floor(i / 8);
                if (readBit222(buffer, bufferIndex, i % 8)) {
                  res.push(enum_exports222.getEnumName(usedEnum, i));
                }
              }
              return res;
            }
            function parseValue222(address, objId, parentType, value, supportsMultiple, callback) {
              let resValue = null;
              if (value && value.type && value.value !== null && value.value !== void 0) {
                switch (value.type) {
                  case enum_exports222.ApplicationTag.NULL:
                    resValue = null;
                    break;
                  case enum_exports222.ApplicationTag.BOOLEAN:
                    resValue = !!value.value;
                    break;
                  case enum_exports222.ApplicationTag.UNSIGNED_INTEGER:
                  case enum_exports222.ApplicationTag.SIGNED_INTEGER:
                  case enum_exports222.ApplicationTag.REAL:
                  case enum_exports222.ApplicationTag.DOUBLE:
                  case enum_exports222.ApplicationTag.CHARACTER_STRING:
                    resValue = value.value;
                    break;
                  case enum_exports222.ApplicationTag.DATE:
                  case enum_exports222.ApplicationTag.TIME:
                  case enum_exports222.ApplicationTag.TIMESTAMP:
                    resValue = value.value;
                    break;
                  case enum_exports222.ApplicationTag.BIT_STRING:
                    if (ObjectTypeSpecificPropertyIdentifierToEnumMap222[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap222[parentType][objId]) {
                      resValue = handleBitString222(
                        value.value.value,
                        value.value.bitsUsed,
                        ObjectTypeSpecificPropertyIdentifierToEnumMap222[parentType][objId]
                      );
                    } else if (PropertyIdentifierToEnumMap222[objId]) {
                      resValue = handleBitString222(
                        value.value.value,
                        value.value.bitsUsed,
                        PropertyIdentifierToEnumMap222[objId]
                      );
                    } else {
                      if (parentType !== enum_exports222.ObjectType.BITSTRING_VALUE) {
                        console.log(
                          "Unknown value for BIT_STRING type for objId " + enum_exports222.getEnumName(enum_exports222.PropertyIdentifier, objId) + " and parent type " + enum_exports222.getEnumName(enum_exports222.ObjectType, parentType)
                        );
                      }
                      resValue = value.value;
                    }
                    break;
                  case enum_exports222.ApplicationTag.ENUMERATED:
                    if (ObjectTypeSpecificPropertyIdentifierToEnumMap222[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap222[parentType][objId]) {
                      resValue = enum_exports222.getEnumName(
                        ObjectTypeSpecificPropertyIdentifierToEnumMap222[parentType][objId],
                        value.value
                      );
                    } else if (PropertyIdentifierToEnumMap222[objId]) {
                      resValue = enum_exports222.getEnumName(
                        PropertyIdentifierToEnumMap222[objId],
                        value.value
                      );
                    } else {
                      console.log(
                        "Unknown value for ENUMERATED type for objId " + enum_exports222.getEnumName(enum_exports222.PropertyIdentifier, objId) + " and parent type " + enum_exports222.getEnumName(enum_exports222.ObjectType, parentType)
                      );
                      resValue = value.value;
                    }
                    break;
                  case enum_exports222.ApplicationTag.OBJECTIDENTIFIER:
                    if (objId === enum_exports222.PropertyIdentifier.OBJECT_IDENTIFIER || objId === enum_exports222.PropertyIdentifier.STRUCTURED_OBJECT_LIST || objId === enum_exports222.PropertyIdentifier.SUBORDINATE_LIST) {
                      resValue = value.value;
                    } else if (supportsMultiple) {
                      const requestArray = [
                        {
                          objectId: value.value,
                          properties: [{ id: 8 }]
                        }
                      ];
                      bacnetClient.readPropertyMultiple(
                        address,
                        requestArray,
                        (err, resValue2) => {
                          parseDeviceObject222(address, resValue2, value.value, true, callback);
                        }
                      );
                      return;
                    } else {
                      getAllPropertiesManually222(address, value.value, (result) => {
                        parseDeviceObject222(address, result, value.value, false, callback);
                      });
                      return;
                    }
                    break;
                  case enum_exports222.ApplicationTag.OCTET_STRING:
                    resValue = value.value;
                    break;
                  case enum_exports222.ApplicationTag.ERROR:
                    resValue = {
                      errorClass: enum_exports222.getEnumName(
                        enum_exports222.ErrorClass,
                        value.value.errorClass
                      ),
                      errorCode: enum_exports222.getEnumName(enum_exports222.ErrorCode, value.value.errorCode)
                    };
                    break;
                  case enum_exports222.ApplicationTag.OBJECT_PROPERTY_REFERENCE:
                  case enum_exports222.ApplicationTag.DEVICE_OBJECT_PROPERTY_REFERENCE:
                  case enum_exports222.ApplicationTag.DEVICE_OBJECT_REFERENCE:
                  case enum_exports222.ApplicationTag.READ_ACCESS_SPECIFICATION:
                    resValue = value.value;
                    break;
                  case enum_exports222.ApplicationTag.CONTEXT_SPECIFIC_DECODED:
                    parseValue222(
                      address,
                      objId,
                      parentType,
                      value.value,
                      supportsMultiple,
                      callback
                    );
                    return;
                  case enum_exports222.ApplicationTag.READ_ACCESS_RESULT:
                    resValue = value.value;
                    break;
                  default:
                    console.log(
                      "unknown type " + value.type + ": " + JSON.stringify(value)
                    );
                    resValue = value;
                }
              }
              setImmediate(() => callback(resValue));
            }
            function parseDeviceObject222(address, obj, parent, supportsMultiple, callback) {
              if (debug4222) {
                console.log(
                  "START parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(obj)
                );
              }
              if (!obj) {
                console.log("object not valid on parse device object");
                return;
              }
              if (!obj.values || !Array.isArray(obj.values)) {
                console.log("No device or invalid response");
                callback({ ERROR: "No device or invalid response" });
                return;
              }
              let cbCount = 0;
              let objDef = {};
              const finalize = () => {
                Object.keys(objDef).forEach((devId) => {
                  Object.keys(objDef[devId]).forEach((objId) => {
                    if (objDef[devId][objId].length === 1) {
                      objDef[devId][objId] = objDef[devId][objId][0];
                    }
                  });
                });
                if (obj.values.length === 1) {
                  objDef = objDef[obj.values[0].objectId.instance];
                }
                if (debug4222) {
                  console.log(
                    "END parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(objDef)
                  );
                }
                callback(objDef);
              };
              obj.values.forEach((devBaseObj) => {
                if (!devBaseObj.objectId) {
                  console.log("No device Id found in object data");
                  return;
                }
                if (devBaseObj.objectId.type === void 0 || devBaseObj.objectId.instance === void 0) {
                  console.log("No device type or instance found in object data");
                  return;
                }
                if (!devBaseObj.values || !Array.isArray(devBaseObj.values)) {
                  console.log("No device values response");
                  return;
                }
                const deviceId = devBaseObj.objectId.instance;
                objDef[deviceId] = {};
                devBaseObj.values.forEach((devObj) => {
                  let objId = enum_exports222.getEnumName(enum_exports222.PropertyIdentifier, devObj.id);
                  if (devObj.index !== 4294967295) {
                    objId += "-" + devObj.index;
                  }
                  if (debug4222) {
                    console.log("Handle Object property:", deviceId, objId, devObj.value);
                  }
                  devObj.value.forEach((val) => {
                    if (JSON.stringify(val.value) === JSON.stringify(parent)) {
                      objDef[deviceId][objId] = objDef[deviceId][objId] || [];
                      objDef[deviceId][objId].push(val.value);
                      return;
                    }
                    cbCount++;
                    parseValue222(
                      address,
                      devObj.id,
                      parent.type,
                      val,
                      supportsMultiple,
                      (parsedValue) => {
                        if (debug4222) {
                          console.log(
                            "RETURN parsedValue",
                            deviceId,
                            objId,
                            devObj.value,
                            parsedValue
                          );
                        }
                        objDef[deviceId][objId] = objDef[deviceId][objId] || [];
                        objDef[deviceId][objId].push(parsedValue);
                        if (!--cbCount) {
                          finalize();
                        }
                      }
                    );
                  });
                });
              });
              if (cbCount === 0) {
                finalize();
              }
            }
            var limitToDevice222 = null;
            if (import_process222.default.argv.length === 3) {
              limitToDevice222 = parseInt(import_process222.default.argv[2]);
              if (isNaN(limitToDevice222)) {
                limitToDevice222 = null;
              }
            }
            var node_bacnet_default222 = Client222;
          }
        });
        var node_bacnet_exports22 = {};
        __export22(node_bacnet_exports22, {
          _: () => import_underscore22.default,
          bacnetErrorToString: () => bacnetErrorToString22,
          default: () => node_bacnet_default22,
          enums: () => enum_exports22,
          parseValue: () => parseValue22
        });
        module22.exports = __toCommonJS22(node_bacnet_exports22);
        var enum_exports22 = {};
        __export22(enum_exports22, {
          ASN1_ARRAY_ALL: () => ASN1_ARRAY_ALL22,
          ASN1_INSTANCE_BITS: () => ASN1_INSTANCE_BITS22,
          ASN1_MAX_APPLICATION_TAG: () => ASN1_MAX_APPLICATION_TAG22,
          ASN1_MAX_BITSTRING_BYTES: () => ASN1_MAX_BITSTRING_BYTES22,
          ASN1_MAX_INSTANCE: () => ASN1_MAX_INSTANCE22,
          ASN1_MAX_OBJECT: () => ASN1_MAX_OBJECT22,
          ASN1_MAX_OBJECT_TYPE: () => ASN1_MAX_OBJECT_TYPE22,
          ASN1_MAX_PRIORITY: () => ASN1_MAX_PRIORITY22,
          ASN1_MAX_PROPERTY_ID: () => ASN1_MAX_PROPERTY_ID22,
          ASN1_MIN_PRIORITY: () => ASN1_MIN_PRIORITY22,
          ASN1_NO_PRIORITY: () => ASN1_NO_PRIORITY22,
          AbortReason: () => AbortReason22,
          AccessAuthenticationFactorDisable: () => AccessAuthenticationFactorDisable22,
          AccessCredentialDisable: () => AccessCredentialDisable22,
          AccessCredentialDisableReason: () => AccessCredentialDisableReason22,
          AccessEvent: () => AccessEvent22,
          AccessPassbackMode: () => AccessPassbackMode22,
          AccessUserType: () => AccessUserType22,
          AccessZoneOccupancyState: () => AccessZoneOccupancyState22,
          Action: () => Action22,
          ApplicationTag: () => ApplicationTag22,
          ApplicationTagName: () => ApplicationTagName22,
          AuthenticationFactorType: () => AuthenticationFactorType22,
          AuthenticationStatus: () => AuthenticationStatus22,
          AuthorizationExemption: () => AuthorizationExemption22,
          AuthorizationMode: () => AuthorizationMode22,
          BVLC_HEADER_LENGTH: () => BVLC_HEADER_LENGTH32,
          BVLL_TYPE_BACNET_IP: () => BVLL_TYPE_BACNET_IP22,
          BackupState: () => BackupState22,
          BinaryLightingPV: () => BinaryLightingPV22,
          BinaryPV: () => BinaryPV22,
          BvlcResultFormat: () => BvlcResultFormat22,
          BvlcResultPurpose: () => BvlcResultPurpose22,
          CharacterStringEncoding: () => CharacterStringEncoding22,
          ConfirmedServiceChoice: () => ConfirmedServiceChoice22,
          CovType: () => CovType22,
          DaysOfWeek: () => DaysOfWeek22,
          DeviceStatus: () => DeviceStatus22,
          DoorAlarmState: () => DoorAlarmState22,
          DoorSecuredStatus: () => DoorSecuredStatus22,
          DoorStatus: () => DoorStatus22,
          DoorValue: () => DoorValue22,
          EnableDisable: () => EnableDisable22,
          EngineeringUnits: () => EngineeringUnits22,
          ErrorClass: () => ErrorClass22,
          ErrorClassName: () => ErrorClassName22,
          ErrorCode: () => ErrorCode22,
          ErrorCodeName: () => ErrorCodeName22,
          EscalatorFault: () => EscalatorFault22,
          EscalatorMode: () => EscalatorMode22,
          EscalatorOperationDirection: () => EscalatorOperationDirection22,
          EventState: () => EventState22,
          EventTransitionBits: () => EventTransitionBits22,
          EventType: () => EventType22,
          FaultType: () => FaultType22,
          FileAccessMethod: () => FileAccessMethod22,
          IPMode: () => IPMode22,
          LifeSafetyMode: () => LifeSafetyMode22,
          LifeSafetyOperation: () => LifeSafetyOperation22,
          LifeSafetyState: () => LifeSafetyState22,
          LiftCarDirection: () => LiftCarDirection22,
          LiftCarDoorCommand: () => LiftCarDoorCommand22,
          LiftCarDriveStatus: () => LiftCarDriveStatus22,
          LiftCarMode: () => LiftCarMode22,
          LiftFault: () => LiftFault22,
          LiftGroupMode: () => LiftGroupMode22,
          LightingInProgress: () => LightingInProgress22,
          LightingOperation: () => LightingOperation22,
          LightingTransition: () => LightingTransition22,
          LimitEnable: () => LimitEnable22,
          LockStatus: () => LockStatus22,
          LogStatus: () => LogStatus22,
          LoggingType: () => LoggingType22,
          Maintenance: () => Maintenance22,
          MaxApduLengthAccepted: () => MaxApduLengthAccepted22,
          MaxSegmentsAccepted: () => MaxSegmentsAccepted22,
          NetworkLayerMessageType: () => NetworkLayerMessageType22,
          NetworkNumberQuality: () => NetworkNumberQuality22,
          NetworkPortCommand: () => NetworkPortCommand22,
          NetworkType: () => NetworkType22,
          NodeType: () => NodeType22,
          NotifyType: () => NotifyType22,
          NpduControlBit: () => NpduControlBit22,
          NpduControlPriority: () => NpduControlPriority22,
          ObjectType: () => ObjectType22,
          ObjectTypesSupported: () => ObjectTypesSupported22,
          PDU_TYPE_MASK: () => PDU_TYPE_MASK22,
          PduConReqBit: () => PduConReqBit22,
          PduSegAckBit: () => PduSegAckBit22,
          PduType: () => PduType22,
          Polarity: () => Polarity22,
          ProgramError: () => ProgramError22,
          ProgramRequest: () => ProgramRequest22,
          ProgramState: () => ProgramState22,
          PropertyIdentifier: () => PropertyIdentifier22,
          PropertyStates: () => PropertyStates22,
          ProtocolLevel: () => ProtocolLevel22,
          ReadRangeType: () => ReadRangeType22,
          ReinitializedState: () => ReinitializedState22,
          RejectReason: () => RejectReason22,
          Relationship: () => Relationship22,
          Reliability: () => Reliability22,
          RestartReason: () => RestartReason22,
          ResultFlags: () => ResultFlags22,
          SecurityLevel: () => SecurityLevel22,
          SecurityPolicy: () => SecurityPolicy22,
          Segmentation: () => Segmentation22,
          ServicesSupported: () => ServicesSupported22,
          ShedState: () => ShedState22,
          SilencedState: () => SilencedState22,
          StatusFlags: () => StatusFlags22,
          TimeStamp: () => TimeStamp22,
          TimerState: () => TimerState22,
          TimerTransition: () => TimerTransition22,
          UnconfirmedServiceChoice: () => UnconfirmedServiceChoice22,
          VTClass: () => VTClass22,
          WriteStatus: () => WriteStatus22,
          getEnumName: () => getEnumName22
        });
        var import_debug42 = __toESM22(require("debug"));
        var debug52 = (0, import_debug42.default)("bacnet=enum=debug");
        var trace32 = (0, import_debug42.default)("bacnet=enum=trace");
        function invertEnum22(enumToInvert) {
          const invertedEnum = {};
          Object.keys(enumToInvert).forEach((key) => {
            invertedEnum[enumToInvert[key]] = key;
          });
          return invertedEnum;
        }
        function getEnumName22(group, value, addNumberValue = true, undefinedFallbackValue = void 0) {
          if (!Number.isInteger(value)) {
            throw new Error(
              'getEnumName() can only be passed an integer value, was given "' + value + '"'
            );
          }
          let foundEntry;
          try {
            const invertedGroup = invertEnum22(group);
            foundEntry = invertedGroup[value];
            if (foundEntry === void 0 && undefinedFallbackValue) {
              foundEntry = undefinedFallbackValue;
            }
            if (foundEntry === void 0) {
              foundEntry = value.toString();
            } else if (addNumberValue) {
              foundEntry += "(" + value + ")";
            }
          } catch (e) {
            trace32(e.message);
            foundEntry = null;
          }
          return foundEntry;
        }
        var PDU_TYPE_MASK22 = 240;
        var ASN1_MAX_OBJECT22 = 1023;
        var ASN1_INSTANCE_BITS22 = 22;
        var ASN1_MAX_INSTANCE22 = 4194303;
        var ASN1_MAX_BITSTRING_BYTES22 = 15;
        var ASN1_ARRAY_ALL22 = 4294967295;
        var ASN1_NO_PRIORITY22 = 0;
        var ASN1_MIN_PRIORITY22 = 1;
        var ASN1_MAX_PRIORITY22 = 16;
        var ASN1_MAX_APPLICATION_TAG22 = 16;
        var ASN1_MAX_OBJECT_TYPE22 = 1024;
        var ASN1_MAX_PROPERTY_ID22 = 4194303;
        var BVLL_TYPE_BACNET_IP22 = 129;
        var BVLC_HEADER_LENGTH32 = 4;
        var ConfirmedServiceChoice22 = /* @__PURE__ */ ((ConfirmedServiceChoice222) => {
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["READ_PROPERTY"] = 12] = "READ_PROPERTY";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["VT_OPEN"] = 21] = "VT_OPEN";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["VT_CLOSE"] = 22] = "VT_CLOSE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["VT_DATA"] = 23] = "VT_DATA";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["READ_RANGE"] = 26] = "READ_RANGE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["LIFE_SAFETY_OPERATION"] = 27] = "LIFE_SAFETY_OPERATION";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["SUBSCRIBE_COV_PROPERTY"] = 28] = "SUBSCRIBE_COV_PROPERTY";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["GET_EVENT_INFORMATION"] = 29] = "GET_EVENT_INFORMATION";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 30] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
          ConfirmedServiceChoice222[ConfirmedServiceChoice222["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 31] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
          return ConfirmedServiceChoice222;
        })(ConfirmedServiceChoice22 || {});
        var UnconfirmedServiceChoice22 = /* @__PURE__ */ ((UnconfirmedServiceChoice222) => {
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["I_AM"] = 0] = "I_AM";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["I_HAVE"] = 1] = "I_HAVE";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["UNCONFIRMED_COV_NOTIFICATION"] = 2] = "UNCONFIRMED_COV_NOTIFICATION";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["UNCONFIRMED_EVENT_NOTIFICATION"] = 3] = "UNCONFIRMED_EVENT_NOTIFICATION";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["UNCONFIRMED_PRIVATE_TRANSFER"] = 4] = "UNCONFIRMED_PRIVATE_TRANSFER";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["UNCONFIRMED_TEXT_MESSAGE"] = 5] = "UNCONFIRMED_TEXT_MESSAGE";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["TIME_SYNCHRONIZATION"] = 6] = "TIME_SYNCHRONIZATION";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["WHO_HAS"] = 7] = "WHO_HAS";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["WHO_IS"] = 8] = "WHO_IS";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["UTC_TIME_SYNCHRONIZATION"] = 9] = "UTC_TIME_SYNCHRONIZATION";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["WRITE_GROUP"] = 10] = "WRITE_GROUP";
          UnconfirmedServiceChoice222[UnconfirmedServiceChoice222["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 11] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
          return UnconfirmedServiceChoice222;
        })(UnconfirmedServiceChoice22 || {});
        var AbortReason22 = /* @__PURE__ */ ((AbortReason222) => {
          AbortReason222[AbortReason222["OTHER"] = 0] = "OTHER";
          AbortReason222[AbortReason222["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
          AbortReason222[AbortReason222["INVALID_APDU_IN_THIS_STATE"] = 2] = "INVALID_APDU_IN_THIS_STATE";
          AbortReason222[AbortReason222["PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 3] = "PREEMPTED_BY_HIGHER_PRIORITY_TASK";
          AbortReason222[AbortReason222["SEGMENTATION_NOT_SUPPORTED"] = 4] = "SEGMENTATION_NOT_SUPPORTED";
          AbortReason222[AbortReason222["SECURITY_ERROR"] = 5] = "SECURITY_ERROR";
          AbortReason222[AbortReason222["INSUFFICIENT_SECURITY"] = 6] = "INSUFFICIENT_SECURITY";
          AbortReason222[AbortReason222["WINDOW_SIZE_OUT_OF_RANGE"] = 7] = "WINDOW_SIZE_OUT_OF_RANGE";
          AbortReason222[AbortReason222["APPLICATION_EXCEEDED_REPLY_TIME"] = 8] = "APPLICATION_EXCEEDED_REPLY_TIME";
          AbortReason222[AbortReason222["OUT_OF_RESOURCES"] = 9] = "OUT_OF_RESOURCES";
          AbortReason222[AbortReason222["TSM_TIMEOUT"] = 10] = "TSM_TIMEOUT";
          AbortReason222[AbortReason222["APDU_TOO_LONG"] = 11] = "APDU_TOO_LONG";
          return AbortReason222;
        })(AbortReason22 || {});
        var RejectReason22 = /* @__PURE__ */ ((RejectReason222) => {
          RejectReason222[RejectReason222["OTHER"] = 0] = "OTHER";
          RejectReason222[RejectReason222["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
          RejectReason222[RejectReason222["INCONSISTENT_PARAMETERS"] = 2] = "INCONSISTENT_PARAMETERS";
          RejectReason222[RejectReason222["INVALID_PARAMETER_DATA_TYPE"] = 3] = "INVALID_PARAMETER_DATA_TYPE";
          RejectReason222[RejectReason222["INVALID_TAG"] = 4] = "INVALID_TAG";
          RejectReason222[RejectReason222["MISSING_REQUIRED_PARAMETER"] = 5] = "MISSING_REQUIRED_PARAMETER";
          RejectReason222[RejectReason222["PARAMETER_OUT_OF_RANGE"] = 6] = "PARAMETER_OUT_OF_RANGE";
          RejectReason222[RejectReason222["TOO_MANY_ARGUMENTS"] = 7] = "TOO_MANY_ARGUMENTS";
          RejectReason222[RejectReason222["UNDEFINED_ENUMERATION"] = 8] = "UNDEFINED_ENUMERATION";
          RejectReason222[RejectReason222["UNRECOGNIZED_SERVICE"] = 9] = "UNRECOGNIZED_SERVICE";
          return RejectReason222;
        })(RejectReason22 || {});
        var ErrorClass22 = /* @__PURE__ */ ((ErrorClass222) => {
          ErrorClass222[ErrorClass222["DEVICE"] = 0] = "DEVICE";
          ErrorClass222[ErrorClass222["OBJECT"] = 1] = "OBJECT";
          ErrorClass222[ErrorClass222["PROPERTY"] = 2] = "PROPERTY";
          ErrorClass222[ErrorClass222["RESOURCES"] = 3] = "RESOURCES";
          ErrorClass222[ErrorClass222["SECURITY"] = 4] = "SECURITY";
          ErrorClass222[ErrorClass222["SERVICES"] = 5] = "SERVICES";
          ErrorClass222[ErrorClass222["VT"] = 6] = "VT";
          ErrorClass222[ErrorClass222["COMMUNICATION"] = 7] = "COMMUNICATION";
          return ErrorClass222;
        })(ErrorClass22 || {});
        var ErrorClassName22 = invertEnum22(
          ErrorClass22
        );
        var ErrorCode22 = /* @__PURE__ */ ((ErrorCode222) => {
          ErrorCode222[ErrorCode222["ABORT_APDU_TOO_LONG"] = 123] = "ABORT_APDU_TOO_LONG";
          ErrorCode222[ErrorCode222["ABORT_APPLICATION_EXCEEDED_REPLY_TIME"] = 124] = "ABORT_APPLICATION_EXCEEDED_REPLY_TIME";
          ErrorCode222[ErrorCode222["ABORT_BUFFER_OVERFLOW"] = 51] = "ABORT_BUFFER_OVERFLOW";
          ErrorCode222[ErrorCode222["ABORT_INSUFFICIENT_SECURITY"] = 135] = "ABORT_INSUFFICIENT_SECURITY";
          ErrorCode222[ErrorCode222["ABORT_INVALID_APDU_IN_THIS_STATE"] = 52] = "ABORT_INVALID_APDU_IN_THIS_STATE";
          ErrorCode222[ErrorCode222["ABORT_OTHER"] = 56] = "ABORT_OTHER";
          ErrorCode222[ErrorCode222["ABORT_OUT_OF_RESOURCES"] = 125] = "ABORT_OUT_OF_RESOURCES";
          ErrorCode222[ErrorCode222["ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 53] = "ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK";
          ErrorCode222[ErrorCode222["ABORT_PROPRIETARY"] = 55] = "ABORT_PROPRIETARY";
          ErrorCode222[ErrorCode222["ABORT_SECURITY_ERROR"] = 136] = "ABORT_SECURITY_ERROR";
          ErrorCode222[ErrorCode222["ABORT_SEGMENTATION_NOT_SUPPORTED"] = 54] = "ABORT_SEGMENTATION_NOT_SUPPORTED";
          ErrorCode222[ErrorCode222["ABORT_TSM_TIMEOUT"] = 126] = "ABORT_TSM_TIMEOUT";
          ErrorCode222[ErrorCode222["ABORT_WINDOW_SIZE_OUT_OF_RANGE"] = 127] = "ABORT_WINDOW_SIZE_OUT_OF_RANGE";
          ErrorCode222[ErrorCode222["ACCESS_DENIED"] = 85] = "ACCESS_DENIED";
          ErrorCode222[ErrorCode222["ADDRESSING_ERROR"] = 115] = "ADDRESSING_ERROR";
          ErrorCode222[ErrorCode222["BAD_DESTINATION_ADDRESS"] = 86] = "BAD_DESTINATION_ADDRESS";
          ErrorCode222[ErrorCode222["BAD_DESTINATION_DEVICE_ID"] = 87] = "BAD_DESTINATION_DEVICE_ID";
          ErrorCode222[ErrorCode222["BAD_SIGNATURE"] = 88] = "BAD_SIGNATURE";
          ErrorCode222[ErrorCode222["BAD_SOURCE_ADDRESS"] = 89] = "BAD_SOURCE_ADDRESS";
          ErrorCode222[ErrorCode222["BAD_TIMESTAMP"] = 90] = "BAD_TIMESTAMP";
          ErrorCode222[ErrorCode222["BUSY"] = 82] = "BUSY";
          ErrorCode222[ErrorCode222["CANNOT_USE_KEY"] = 91] = "CANNOT_USE_KEY";
          ErrorCode222[ErrorCode222["CANNOT_VERIFY_MESSAGE_ID"] = 92] = "CANNOT_VERIFY_MESSAGE_ID";
          ErrorCode222[ErrorCode222["CHARACTER_SET_NOT_SUPPORTED"] = 41] = "CHARACTER_SET_NOT_SUPPORTED";
          ErrorCode222[ErrorCode222["COMMUNICATION_DISABLED"] = 83] = "COMMUNICATION_DISABLED";
          ErrorCode222[ErrorCode222["CONFIGURATION_IN_PROGRESS"] = 2] = "CONFIGURATION_IN_PROGRESS";
          ErrorCode222[ErrorCode222["CORRECT_KEY_REVISION"] = 93] = "CORRECT_KEY_REVISION";
          ErrorCode222[ErrorCode222["COV_SUBSCRIPTION_FAILED"] = 43] = "COV_SUBSCRIPTION_FAILED";
          ErrorCode222[ErrorCode222["DATATYPE_NOT_SUPPORTED"] = 47] = "DATATYPE_NOT_SUPPORTED";
          ErrorCode222[ErrorCode222["DELETE_FDT_ENTRY_FAILED"] = 120] = "DELETE_FDT_ENTRY_FAILED";
          ErrorCode222[ErrorCode222["DESTINATION_DEVICE_ID_REQUIRED"] = 94] = "DESTINATION_DEVICE_ID_REQUIRED";
          ErrorCode222[ErrorCode222["DEVICE_BUSY"] = 3] = "DEVICE_BUSY";
          ErrorCode222[ErrorCode222["DISTRIBUTE_BROADCAST_FAILED"] = 121] = "DISTRIBUTE_BROADCAST_FAILED";
          ErrorCode222[ErrorCode222["DUPLICATE_ENTRY"] = 137] = "DUPLICATE_ENTRY";
          ErrorCode222[ErrorCode222["DUPLICATE_MESSAGE"] = 95] = "DUPLICATE_MESSAGE";
          ErrorCode222[ErrorCode222["DUPLICATE_NAME"] = 48] = "DUPLICATE_NAME";
          ErrorCode222[ErrorCode222["DUPLICATE_OBJECT_ID"] = 49] = "DUPLICATE_OBJECT_ID";
          ErrorCode222[ErrorCode222["DYNAMIC_CREATION_NOT_SUPPORTED"] = 4] = "DYNAMIC_CREATION_NOT_SUPPORTED";
          ErrorCode222[ErrorCode222["ENCRYPTION_NOT_CONFIGURED"] = 96] = "ENCRYPTION_NOT_CONFIGURED";
          ErrorCode222[ErrorCode222["ENCRYPTION_REQUIRED"] = 97] = "ENCRYPTION_REQUIRED";
          ErrorCode222[ErrorCode222["FILE_ACCESS_DENIED"] = 5] = "FILE_ACCESS_DENIED";
          ErrorCode222[ErrorCode222["FILE_FULL"] = 128] = "FILE_FULL";
          ErrorCode222[ErrorCode222["INCONSISTENT_CONFIGURATION"] = 129] = "INCONSISTENT_CONFIGURATION";
          ErrorCode222[ErrorCode222["INCONSISTENT_OBJECT_TYPE"] = 130] = "INCONSISTENT_OBJECT_TYPE";
          ErrorCode222[ErrorCode222["INCONSISTENT_PARAMETERS"] = 7] = "INCONSISTENT_PARAMETERS";
          ErrorCode222[ErrorCode222["INCONSISTENT_SELECTION_CRITERION"] = 8] = "INCONSISTENT_SELECTION_CRITERION";
          ErrorCode222[ErrorCode222["INCORRECT_KEY"] = 98] = "INCORRECT_KEY";
          ErrorCode222[ErrorCode222["INTERNAL_ERROR"] = 131] = "INTERNAL_ERROR";
          ErrorCode222[ErrorCode222["INVALID_ARRAY_INDEX"] = 42] = "INVALID_ARRAY_INDEX";
          ErrorCode222[ErrorCode222["INVALID_CONFIGURATION_DATA"] = 46] = "INVALID_CONFIGURATION_DATA";
          ErrorCode222[ErrorCode222["INVALID_DATA_TYPE"] = 9] = "INVALID_DATA_TYPE";
          ErrorCode222[ErrorCode222["INVALID_EVENT_STATE"] = 73] = "INVALID_EVENT_STATE";
          ErrorCode222[ErrorCode222["INVALID_FILE_ACCESS_METHOD"] = 10] = "INVALID_FILE_ACCESS_METHOD";
          ErrorCode222[ErrorCode222["INVALID_FILE_START_POSITION"] = 11] = "INVALID_FILE_START_POSITION";
          ErrorCode222[ErrorCode222["INVALID_KEY_DATA"] = 99] = "INVALID_KEY_DATA";
          ErrorCode222[ErrorCode222["INVALID_PARAMETER_DATA_TYPE"] = 13] = "INVALID_PARAMETER_DATA_TYPE";
          ErrorCode222[ErrorCode222["INVALID_TAG"] = 57] = "INVALID_TAG";
          ErrorCode222[ErrorCode222["INVALID_TIMESTAMP"] = 14] = "INVALID_TIMESTAMP";
          ErrorCode222[ErrorCode222["INVALID_VALUE_IN_THIS_STATE"] = 138] = "INVALID_VALUE_IN_THIS_STATE";
          ErrorCode222[ErrorCode222["KEY_UPDATE_IN_PROGRESS"] = 100] = "KEY_UPDATE_IN_PROGRESS";
          ErrorCode222[ErrorCode222["LIST_ELEMENT_NOT_FOUND"] = 81] = "LIST_ELEMENT_NOT_FOUND";
          ErrorCode222[ErrorCode222["LOG_BUFFER_FULL"] = 75] = "LOG_BUFFER_FULL";
          ErrorCode222[ErrorCode222["LOGGED_VALUE_PURGED"] = 76] = "LOGGED_VALUE_PURGED";
          ErrorCode222[ErrorCode222["MALFORMED_MESSAGE"] = 101] = "MALFORMED_MESSAGE";
          ErrorCode222[ErrorCode222["MESSAGE_TOO_LONG"] = 113] = "MESSAGE_TOO_LONG";
          ErrorCode222[ErrorCode222["MISSING_REQUIRED_PARAMETER"] = 16] = "MISSING_REQUIRED_PARAMETER";
          ErrorCode222[ErrorCode222["NETWORK_DOWN"] = 58] = "NETWORK_DOWN";
          ErrorCode222[ErrorCode222["NO_ALARM_CONFIGURED"] = 74] = "NO_ALARM_CONFIGURED";
          ErrorCode222[ErrorCode222["NO_OBJECTS_OF_SPECIFIED_TYPE"] = 17] = "NO_OBJECTS_OF_SPECIFIED_TYPE";
          ErrorCode222[ErrorCode222["NO_PROPERTY_SPECIFIED"] = 77] = "NO_PROPERTY_SPECIFIED";
          ErrorCode222[ErrorCode222["NO_SPACE_FOR_OBJECT"] = 18] = "NO_SPACE_FOR_OBJECT";
          ErrorCode222[ErrorCode222["NO_SPACE_TO_ADD_LIST_ELEMENT"] = 19] = "NO_SPACE_TO_ADD_LIST_ELEMENT";
          ErrorCode222[ErrorCode222["NO_SPACE_TO_WRITE_PROPERTY"] = 20] = "NO_SPACE_TO_WRITE_PROPERTY";
          ErrorCode222[ErrorCode222["NO_VT_SESSIONS_AVAILABLE"] = 21] = "NO_VT_SESSIONS_AVAILABLE";
          ErrorCode222[ErrorCode222["NOT_CONFIGURED"] = 132] = "NOT_CONFIGURED";
          ErrorCode222[ErrorCode222["NOT_CONFIGURED_FOR_TRIGGERED_LOGGING"] = 78] = "NOT_CONFIGURED_FOR_TRIGGERED_LOGGING";
          ErrorCode222[ErrorCode222["NOT_COV_PROPERTY"] = 44] = "NOT_COV_PROPERTY";
          ErrorCode222[ErrorCode222["NOT_KEY_SERVER"] = 102] = "NOT_KEY_SERVER";
          ErrorCode222[ErrorCode222["NOT_ROUTER_TO_DNET"] = 110] = "NOT_ROUTER_TO_DNET";
          ErrorCode222[ErrorCode222["OBJECT_DELETION_NOT_PERMITTED"] = 23] = "OBJECT_DELETION_NOT_PERMITTED";
          ErrorCode222[ErrorCode222["OBJECT_IDENTIFIER_ALREADY_EXISTS"] = 24] = "OBJECT_IDENTIFIER_ALREADY_EXISTS";
          ErrorCode222[ErrorCode222["OPERATIONAL_PROBLEM"] = 25] = "OPERATIONAL_PROBLEM";
          ErrorCode222[ErrorCode222["OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED"] = 45] = "OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED";
          ErrorCode222[ErrorCode222["OTHER"] = 0] = "OTHER";
          ErrorCode222[ErrorCode222["OUT_OF_MEMORY"] = 133] = "OUT_OF_MEMORY";
          ErrorCode222[ErrorCode222["PARAMETER_OUT_OF_RANGE"] = 80] = "PARAMETER_OUT_OF_RANGE";
          ErrorCode222[ErrorCode222["PASSWORD_FAILURE"] = 26] = "PASSWORD_FAILURE";
          ErrorCode222[ErrorCode222["PROPERTY_IS_NOT_A_LIST"] = 22] = "PROPERTY_IS_NOT_A_LIST";
          ErrorCode222[ErrorCode222["PROPERTY_IS_NOT_AN_ARRAY"] = 50] = "PROPERTY_IS_NOT_AN_ARRAY";
          ErrorCode222[ErrorCode222["READ_ACCESS_DENIED"] = 27] = "READ_ACCESS_DENIED";
          ErrorCode222[ErrorCode222["READ_BDT_FAILED"] = 117] = "READ_BDT_FAILED";
          ErrorCode222[ErrorCode222["READ_FDT_FAILED"] = 119] = "READ_FDT_FAILED";
          ErrorCode222[ErrorCode222["REGISTER_FOREIGN_DEVICE_FAILED"] = 118] = "REGISTER_FOREIGN_DEVICE_FAILED";
          ErrorCode222[ErrorCode222["REJECT_BUFFER_OVERFLOW"] = 59] = "REJECT_BUFFER_OVERFLOW";
          ErrorCode222[ErrorCode222["REJECT_INCONSISTENT_PARAMETERS"] = 60] = "REJECT_INCONSISTENT_PARAMETERS";
          ErrorCode222[ErrorCode222["REJECT_INVALID_PARAMETER_DATA_TYPE"] = 61] = "REJECT_INVALID_PARAMETER_DATA_TYPE";
          ErrorCode222[ErrorCode222["REJECT_INVALID_TAG"] = 62] = "REJECT_INVALID_TAG";
          ErrorCode222[ErrorCode222["REJECT_MISSING_REQUIRED_PARAMETER"] = 63] = "REJECT_MISSING_REQUIRED_PARAMETER";
          ErrorCode222[ErrorCode222["REJECT_OTHER"] = 69] = "REJECT_OTHER";
          ErrorCode222[ErrorCode222["REJECT_PARAMETER_OUT_OF_RANGE"] = 64] = "REJECT_PARAMETER_OUT_OF_RANGE";
          ErrorCode222[ErrorCode222["REJECT_PROPRIETARY"] = 68] = "REJECT_PROPRIETARY";
          ErrorCode222[ErrorCode222["REJECT_TOO_MANY_ARGUMENTS"] = 65] = "REJECT_TOO_MANY_ARGUMENTS";
          ErrorCode222[ErrorCode222["REJECT_UNDEFINED_ENUMERATION"] = 66] = "REJECT_UNDEFINED_ENUMERATION";
          ErrorCode222[ErrorCode222["REJECT_UNRECOGNIZED_SERVICE"] = 67] = "REJECT_UNRECOGNIZED_SERVICE";
          ErrorCode222[ErrorCode222["ROUTER_BUSY"] = 111] = "ROUTER_BUSY";
          ErrorCode222[ErrorCode222["SECURITY_ERROR"] = 114] = "SECURITY_ERROR";
          ErrorCode222[ErrorCode222["SECURITY_NOT_CONFIGURED"] = 103] = "SECURITY_NOT_CONFIGURED";
          ErrorCode222[ErrorCode222["SERVICE_REQUEST_DENIED"] = 29] = "SERVICE_REQUEST_DENIED";
          ErrorCode222[ErrorCode222["SOURCE_SECURITY_REQUIRED"] = 104] = "SOURCE_SECURITY_REQUIRED";
          ErrorCode222[ErrorCode222["SUCCESS"] = 84] = "SUCCESS";
          ErrorCode222[ErrorCode222["TIMEOUT"] = 30] = "TIMEOUT";
          ErrorCode222[ErrorCode222["TOO_MANY_KEYS"] = 105] = "TOO_MANY_KEYS";
          ErrorCode222[ErrorCode222["UNKNOWN_AUTHENTICATION_TYPE"] = 106] = "UNKNOWN_AUTHENTICATION_TYPE";
          ErrorCode222[ErrorCode222["UNKNOWN_DEVICE"] = 70] = "UNKNOWN_DEVICE";
          ErrorCode222[ErrorCode222["UNKNOWN_FILE_SIZE"] = 122] = "UNKNOWN_FILE_SIZE";
          ErrorCode222[ErrorCode222["UNKNOWN_KEY"] = 107] = "UNKNOWN_KEY";
          ErrorCode222[ErrorCode222["UNKNOWN_KEY_REVISION"] = 108] = "UNKNOWN_KEY_REVISION";
          ErrorCode222[ErrorCode222["UNKNOWN_NETWORK_MESSAGE"] = 112] = "UNKNOWN_NETWORK_MESSAGE";
          ErrorCode222[ErrorCode222["UNKNOWN_OBJECT"] = 31] = "UNKNOWN_OBJECT";
          ErrorCode222[ErrorCode222["UNKNOWN_PROPERTY"] = 32] = "UNKNOWN_PROPERTY";
          ErrorCode222[ErrorCode222["UNKNOWN_ROUTE"] = 71] = "UNKNOWN_ROUTE";
          ErrorCode222[ErrorCode222["UNKNOWN_SOURCE_MESSAGE"] = 109] = "UNKNOWN_SOURCE_MESSAGE";
          ErrorCode222[ErrorCode222["UNKNOWN_SUBSCRIPTION"] = 79] = "UNKNOWN_SUBSCRIPTION";
          ErrorCode222[ErrorCode222["UNKNOWN_VT_CLASS"] = 34] = "UNKNOWN_VT_CLASS";
          ErrorCode222[ErrorCode222["UNKNOWN_VT_SESSION"] = 35] = "UNKNOWN_VT_SESSION";
          ErrorCode222[ErrorCode222["UNSUPPORTED_OBJECT_TYPE"] = 36] = "UNSUPPORTED_OBJECT_TYPE";
          ErrorCode222[ErrorCode222["VALUE_NOT_INITIALIZED"] = 72] = "VALUE_NOT_INITIALIZED";
          ErrorCode222[ErrorCode222["VALUE_OUT_OF_RANGE"] = 37] = "VALUE_OUT_OF_RANGE";
          ErrorCode222[ErrorCode222["VALUE_TOO_LONG"] = 134] = "VALUE_TOO_LONG";
          ErrorCode222[ErrorCode222["VT_SESSION_ALREADY_CLOSED"] = 38] = "VT_SESSION_ALREADY_CLOSED";
          ErrorCode222[ErrorCode222["VT_SESSION_TERMINATION_FAILURE"] = 39] = "VT_SESSION_TERMINATION_FAILURE";
          ErrorCode222[ErrorCode222["WRITE_ACCESS_DENIED"] = 40] = "WRITE_ACCESS_DENIED";
          ErrorCode222[ErrorCode222["WRITE_BDT_FAILED"] = 116] = "WRITE_BDT_FAILED";
          return ErrorCode222;
        })(ErrorCode22 || {});
        var ErrorCodeName22 = invertEnum22(
          ErrorCode22
        );
        var AccessAuthenticationFactorDisable22 = /* @__PURE__ */ ((AccessAuthenticationFactorDisable222) => {
          AccessAuthenticationFactorDisable222[AccessAuthenticationFactorDisable222["NONE"] = 0] = "NONE";
          AccessAuthenticationFactorDisable222[AccessAuthenticationFactorDisable222["DISABLED"] = 1] = "DISABLED";
          AccessAuthenticationFactorDisable222[AccessAuthenticationFactorDisable222["DISABLED_LOST"] = 2] = "DISABLED_LOST";
          AccessAuthenticationFactorDisable222[AccessAuthenticationFactorDisable222["DISABLED_STOLEN"] = 3] = "DISABLED_STOLEN";
          AccessAuthenticationFactorDisable222[AccessAuthenticationFactorDisable222["DISABLED_DAMAGED"] = 4] = "DISABLED_DAMAGED";
          AccessAuthenticationFactorDisable222[AccessAuthenticationFactorDisable222["DISABLED_DESTROYED"] = 5] = "DISABLED_DESTROYED";
          return AccessAuthenticationFactorDisable222;
        })(AccessAuthenticationFactorDisable22 || {});
        var AccessCredentialDisable22 = /* @__PURE__ */ ((AccessCredentialDisable222) => {
          AccessCredentialDisable222[AccessCredentialDisable222["NONE"] = 0] = "NONE";
          AccessCredentialDisable222[AccessCredentialDisable222["DISABLE"] = 1] = "DISABLE";
          AccessCredentialDisable222[AccessCredentialDisable222["DISABLE_MANUAL"] = 2] = "DISABLE_MANUAL";
          AccessCredentialDisable222[AccessCredentialDisable222["DISABLE_LOCKOUT"] = 3] = "DISABLE_LOCKOUT";
          return AccessCredentialDisable222;
        })(AccessCredentialDisable22 || {});
        var AccessCredentialDisableReason22 = /* @__PURE__ */ ((AccessCredentialDisableReason222) => {
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED"] = 0] = "DISABLED";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_NEEDS_PROVISIONING"] = 1] = "DISABLED_NEEDS_PROVISIONING";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_UNASSIGNED"] = 2] = "DISABLED_UNASSIGNED";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_NOT_YET_ACTIVE"] = 3] = "DISABLED_NOT_YET_ACTIVE";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_EXPIRED"] = 4] = "DISABLED_EXPIRED";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_LOCKOUT"] = 5] = "DISABLED_LOCKOUT";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_MAX_DAYS"] = 6] = "DISABLED_MAX_DAYS";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_MAX_USES"] = 7] = "DISABLED_MAX_USES";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_INACTIVITY"] = 8] = "DISABLED_INACTIVITY";
          AccessCredentialDisableReason222[AccessCredentialDisableReason222["DISABLED_MANUAL"] = 9] = "DISABLED_MANUAL";
          return AccessCredentialDisableReason222;
        })(AccessCredentialDisableReason22 || {});
        var AccessEvent22 = /* @__PURE__ */ ((AccessEvent222) => {
          AccessEvent222[AccessEvent222["NONE"] = 0] = "NONE";
          AccessEvent222[AccessEvent222["GRANTED"] = 1] = "GRANTED";
          AccessEvent222[AccessEvent222["MUSTER"] = 2] = "MUSTER";
          AccessEvent222[AccessEvent222["PASSBACK_DETECTED"] = 3] = "PASSBACK_DETECTED";
          AccessEvent222[AccessEvent222["DURESS"] = 4] = "DURESS";
          AccessEvent222[AccessEvent222["TRACE"] = 5] = "TRACE";
          AccessEvent222[AccessEvent222["LOCKOUT_MAX_ATTEMPTS"] = 6] = "LOCKOUT_MAX_ATTEMPTS";
          AccessEvent222[AccessEvent222["LOCKOUT_OTHER"] = 7] = "LOCKOUT_OTHER";
          AccessEvent222[AccessEvent222["LOCKOUT_RELINQUISHED"] = 8] = "LOCKOUT_RELINQUISHED";
          AccessEvent222[AccessEvent222["LOCKED_BY_HIGHER_PRIORITY"] = 9] = "LOCKED_BY_HIGHER_PRIORITY";
          AccessEvent222[AccessEvent222["OUT_OF_SERVICE"] = 10] = "OUT_OF_SERVICE";
          AccessEvent222[AccessEvent222["OUT_OF_SERVICE_RELINQUISHED"] = 11] = "OUT_OF_SERVICE_RELINQUISHED";
          AccessEvent222[AccessEvent222["ACCOMPANIMENT_BY"] = 12] = "ACCOMPANIMENT_BY";
          AccessEvent222[AccessEvent222["AUTHENTICATION_FACTOR_READ"] = 13] = "AUTHENTICATION_FACTOR_READ";
          AccessEvent222[AccessEvent222["AUTHORIZATION_DELAYED"] = 14] = "AUTHORIZATION_DELAYED";
          AccessEvent222[AccessEvent222["VERIFICATION_REQUIRED"] = 15] = "VERIFICATION_REQUIRED";
          AccessEvent222[AccessEvent222["NO_ENTRY_AFTER_GRANTED"] = 16] = "NO_ENTRY_AFTER_GRANTED";
          AccessEvent222[AccessEvent222["DENIED_DENY_ALL"] = 128] = "DENIED_DENY_ALL";
          AccessEvent222[AccessEvent222["DENIED_UNKNOWN_CREDENTIAL"] = 129] = "DENIED_UNKNOWN_CREDENTIAL";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_UNAVAILABLE"] = 130] = "DENIED_AUTHENTICATION_UNAVAILABLE";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_FACTOR_TIMEOUT"] = 131] = "DENIED_AUTHENTICATION_FACTOR_TIMEOUT";
          AccessEvent222[AccessEvent222["DENIED_INCORRECT_AUTHENTICATION_FACTOR"] = 132] = "DENIED_INCORRECT_AUTHENTICATION_FACTOR";
          AccessEvent222[AccessEvent222["DENIED_ZONE_NO_ACCESS_RIGHTS"] = 133] = "DENIED_ZONE_NO_ACCESS_RIGHTS";
          AccessEvent222[AccessEvent222["DENIED_POINT_NO_ACCESS_RIGHTS"] = 134] = "DENIED_POINT_NO_ACCESS_RIGHTS";
          AccessEvent222[AccessEvent222["DENIED_NO_ACCESS_RIGHTS"] = 135] = "DENIED_NO_ACCESS_RIGHTS";
          AccessEvent222[AccessEvent222["DENIED_OUT_OF_TIME_RANGE"] = 136] = "DENIED_OUT_OF_TIME_RANGE";
          AccessEvent222[AccessEvent222["DENIED_THREAT_LEVEL"] = 137] = "DENIED_THREAT_LEVEL";
          AccessEvent222[AccessEvent222["DENIED_PASSBACK"] = 138] = "DENIED_PASSBACK";
          AccessEvent222[AccessEvent222["DENIED_UNEXPECTED_LOCATION_USAGE"] = 139] = "DENIED_UNEXPECTED_LOCATION_USAGE";
          AccessEvent222[AccessEvent222["DENIED_MAX_ATTEMPTS"] = 140] = "DENIED_MAX_ATTEMPTS";
          AccessEvent222[AccessEvent222["DENIED_LOWER_OCCUPANCY_LIMIT"] = 141] = "DENIED_LOWER_OCCUPANCY_LIMIT";
          AccessEvent222[AccessEvent222["DENIED_UPPER_OCCUPANCY_LIMIT"] = 142] = "DENIED_UPPER_OCCUPANCY_LIMIT";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_FACTOR_LOST"] = 143] = "DENIED_AUTHENTICATION_FACTOR_LOST";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_FACTOR_STOLEN"] = 144] = "DENIED_AUTHENTICATION_FACTOR_STOLEN";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_FACTOR_DAMAGED"] = 145] = "DENIED_AUTHENTICATION_FACTOR_DAMAGED";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_FACTOR_DESTROYED"] = 146] = "DENIED_AUTHENTICATION_FACTOR_DESTROYED";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_FACTOR_DISABLED"] = 147] = "DENIED_AUTHENTICATION_FACTOR_DISABLED";
          AccessEvent222[AccessEvent222["DENIED_AUTHENTICATION_FACTOR_ERROR"] = 148] = "DENIED_AUTHENTICATION_FACTOR_ERROR";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_UNASSIGNED"] = 149] = "DENIED_CREDENTIAL_UNASSIGNED";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_NOT_PROVISIONED"] = 150] = "DENIED_CREDENTIAL_NOT_PROVISIONED";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_NOT_YET_ACTIVE"] = 151] = "DENIED_CREDENTIAL_NOT_YET_ACTIVE";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_EXPIRED"] = 152] = "DENIED_CREDENTIAL_EXPIRED";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_MANUAL_DISABLE"] = 153] = "DENIED_CREDENTIAL_MANUAL_DISABLE";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_LOCKOUT"] = 154] = "DENIED_CREDENTIAL_LOCKOUT";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_MAX_DAYS"] = 155] = "DENIED_CREDENTIAL_MAX_DAYS";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_MAX_USES"] = 156] = "DENIED_CREDENTIAL_MAX_USES";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_INACTIVITY"] = 157] = "DENIED_CREDENTIAL_INACTIVITY";
          AccessEvent222[AccessEvent222["DENIED_CREDENTIAL_DISABLED"] = 158] = "DENIED_CREDENTIAL_DISABLED";
          AccessEvent222[AccessEvent222["DENIED_NO_ACCOMPANIMENT"] = 159] = "DENIED_NO_ACCOMPANIMENT";
          AccessEvent222[AccessEvent222["DENIED_INCORRECT_ACCOMPANIMENT"] = 160] = "DENIED_INCORRECT_ACCOMPANIMENT";
          AccessEvent222[AccessEvent222["DENIED_LOCKOUT"] = 161] = "DENIED_LOCKOUT";
          AccessEvent222[AccessEvent222["DENIED_VERIFICATION_FAILED"] = 162] = "DENIED_VERIFICATION_FAILED";
          AccessEvent222[AccessEvent222["DENIED_VERIFICATION_TIMEOUT"] = 163] = "DENIED_VERIFICATION_TIMEOUT";
          AccessEvent222[AccessEvent222["DENIED_OTHER"] = 164] = "DENIED_OTHER";
          return AccessEvent222;
        })(AccessEvent22 || {});
        var AccessPassbackMode22 = /* @__PURE__ */ ((AccessPassbackMode222) => {
          AccessPassbackMode222[AccessPassbackMode222["PASSBACK_OFF"] = 0] = "PASSBACK_OFF";
          AccessPassbackMode222[AccessPassbackMode222["HARD_PASSBACK"] = 1] = "HARD_PASSBACK";
          AccessPassbackMode222[AccessPassbackMode222["SOFT_PASSBACK"] = 2] = "SOFT_PASSBACK";
          return AccessPassbackMode222;
        })(AccessPassbackMode22 || {});
        var AccessUserType22 = /* @__PURE__ */ ((AccessUserType222) => {
          AccessUserType222[AccessUserType222["ASSET"] = 0] = "ASSET";
          AccessUserType222[AccessUserType222["GROUP"] = 1] = "GROUP";
          AccessUserType222[AccessUserType222["PERSON"] = 2] = "PERSON";
          return AccessUserType222;
        })(AccessUserType22 || {});
        var AccessZoneOccupancyState22 = /* @__PURE__ */ ((AccessZoneOccupancyState222) => {
          AccessZoneOccupancyState222[AccessZoneOccupancyState222["NORMAL"] = 0] = "NORMAL";
          AccessZoneOccupancyState222[AccessZoneOccupancyState222["BELOW_LOWER_LIMIT"] = 1] = "BELOW_LOWER_LIMIT";
          AccessZoneOccupancyState222[AccessZoneOccupancyState222["AT_LOWER_LIMIT"] = 2] = "AT_LOWER_LIMIT";
          AccessZoneOccupancyState222[AccessZoneOccupancyState222["AT_UPPER_LIMIT"] = 3] = "AT_UPPER_LIMIT";
          AccessZoneOccupancyState222[AccessZoneOccupancyState222["ABOVE_UPPER_LIMIT"] = 4] = "ABOVE_UPPER_LIMIT";
          AccessZoneOccupancyState222[AccessZoneOccupancyState222["DISABLED"] = 5] = "DISABLED";
          AccessZoneOccupancyState222[AccessZoneOccupancyState222["NOT_SUPPORTED"] = 6] = "NOT_SUPPORTED";
          return AccessZoneOccupancyState222;
        })(AccessZoneOccupancyState22 || {});
        var Action22 = /* @__PURE__ */ ((Action222) => {
          Action222[Action222["DIRECT"] = 0] = "DIRECT";
          Action222[Action222["REVERSE"] = 1] = "REVERSE";
          return Action222;
        })(Action22 || {});
        var AuthenticationFactorType22 = /* @__PURE__ */ ((AuthenticationFactorType222) => {
          AuthenticationFactorType222[AuthenticationFactorType222["UNDEFINED"] = 0] = "UNDEFINED";
          AuthenticationFactorType222[AuthenticationFactorType222["ERROR"] = 1] = "ERROR";
          AuthenticationFactorType222[AuthenticationFactorType222["CUSTOM"] = 2] = "CUSTOM";
          AuthenticationFactorType222[AuthenticationFactorType222["SIMPLE_NUMBER16"] = 3] = "SIMPLE_NUMBER16";
          AuthenticationFactorType222[AuthenticationFactorType222["SIMPLE_NUMBER32"] = 4] = "SIMPLE_NUMBER32";
          AuthenticationFactorType222[AuthenticationFactorType222["SIMPLE_NUMBER56"] = 5] = "SIMPLE_NUMBER56";
          AuthenticationFactorType222[AuthenticationFactorType222["SIMPLE_ALPHA_NUMERIC"] = 6] = "SIMPLE_ALPHA_NUMERIC";
          AuthenticationFactorType222[AuthenticationFactorType222["ABA_TRACK2"] = 7] = "ABA_TRACK2";
          AuthenticationFactorType222[AuthenticationFactorType222["WIEGAND26"] = 8] = "WIEGAND26";
          AuthenticationFactorType222[AuthenticationFactorType222["WIEGAND37"] = 9] = "WIEGAND37";
          AuthenticationFactorType222[AuthenticationFactorType222["WIEGAND37_FACILITY"] = 10] = "WIEGAND37_FACILITY";
          AuthenticationFactorType222[AuthenticationFactorType222["FACILITY16_CARD32"] = 11] = "FACILITY16_CARD32";
          AuthenticationFactorType222[AuthenticationFactorType222["FACILITY32_CARD32"] = 12] = "FACILITY32_CARD32";
          AuthenticationFactorType222[AuthenticationFactorType222["FASC_N"] = 13] = "FASC_N";
          AuthenticationFactorType222[AuthenticationFactorType222["FASC_N_BCD"] = 14] = "FASC_N_BCD";
          AuthenticationFactorType222[AuthenticationFactorType222["FASC_N_LARGE"] = 15] = "FASC_N_LARGE";
          AuthenticationFactorType222[AuthenticationFactorType222["FASC_N_LARGE_BCD"] = 16] = "FASC_N_LARGE_BCD";
          AuthenticationFactorType222[AuthenticationFactorType222["GSA75"] = 17] = "GSA75";
          AuthenticationFactorType222[AuthenticationFactorType222["CHUID"] = 18] = "CHUID";
          AuthenticationFactorType222[AuthenticationFactorType222["CHUID_FULL"] = 19] = "CHUID_FULL";
          AuthenticationFactorType222[AuthenticationFactorType222["GUID"] = 20] = "GUID";
          AuthenticationFactorType222[AuthenticationFactorType222["CBEFF_A"] = 21] = "CBEFF_A";
          AuthenticationFactorType222[AuthenticationFactorType222["CBEFF_B"] = 22] = "CBEFF_B";
          AuthenticationFactorType222[AuthenticationFactorType222["CBEFF_C"] = 23] = "CBEFF_C";
          AuthenticationFactorType222[AuthenticationFactorType222["USER_PASSWORD"] = 24] = "USER_PASSWORD";
          return AuthenticationFactorType222;
        })(AuthenticationFactorType22 || {});
        var AuthenticationStatus22 = /* @__PURE__ */ ((AuthenticationStatus222) => {
          AuthenticationStatus222[AuthenticationStatus222["NOT_READY"] = 0] = "NOT_READY";
          AuthenticationStatus222[AuthenticationStatus222["READY"] = 1] = "READY";
          AuthenticationStatus222[AuthenticationStatus222["DISABLED"] = 2] = "DISABLED";
          AuthenticationStatus222[AuthenticationStatus222["WAITING_FOR_AUTHENTICATION_FACTOR"] = 3] = "WAITING_FOR_AUTHENTICATION_FACTOR";
          AuthenticationStatus222[AuthenticationStatus222["WAITING_FOR_ACCOMPANIMENT"] = 4] = "WAITING_FOR_ACCOMPANIMENT";
          AuthenticationStatus222[AuthenticationStatus222["WAITING_FOR_VERIFICATION"] = 5] = "WAITING_FOR_VERIFICATION";
          AuthenticationStatus222[AuthenticationStatus222["IN_PROGRESS"] = 6] = "IN_PROGRESS";
          return AuthenticationStatus222;
        })(AuthenticationStatus22 || {});
        var AuthorizationExemption22 = /* @__PURE__ */ ((AuthorizationExemption222) => {
          AuthorizationExemption222[AuthorizationExemption222["PASSBACK"] = 0] = "PASSBACK";
          AuthorizationExemption222[AuthorizationExemption222["OCCUPANCY_CHECK"] = 1] = "OCCUPANCY_CHECK";
          AuthorizationExemption222[AuthorizationExemption222["ACCESS_RIGHTS"] = 2] = "ACCESS_RIGHTS";
          AuthorizationExemption222[AuthorizationExemption222["LOCKOUT"] = 3] = "LOCKOUT";
          AuthorizationExemption222[AuthorizationExemption222["DENY"] = 4] = "DENY";
          AuthorizationExemption222[AuthorizationExemption222["VERIFICATION"] = 5] = "VERIFICATION";
          AuthorizationExemption222[AuthorizationExemption222["AUTHORIZATION_DELAY"] = 6] = "AUTHORIZATION_DELAY";
          return AuthorizationExemption222;
        })(AuthorizationExemption22 || {});
        var AuthorizationMode22 = /* @__PURE__ */ ((AuthorizationMode222) => {
          AuthorizationMode222[AuthorizationMode222["AUTHORIZE"] = 0] = "AUTHORIZE";
          AuthorizationMode222[AuthorizationMode222["GRANT_ACTIVE"] = 1] = "GRANT_ACTIVE";
          AuthorizationMode222[AuthorizationMode222["DENY_ALL"] = 2] = "DENY_ALL";
          AuthorizationMode222[AuthorizationMode222["VERIFICATION_REQUIRED"] = 3] = "VERIFICATION_REQUIRED";
          AuthorizationMode222[AuthorizationMode222["AUTHORIZATION_DELAYED"] = 4] = "AUTHORIZATION_DELAYED";
          AuthorizationMode222[AuthorizationMode222["NONE"] = 5] = "NONE";
          return AuthorizationMode222;
        })(AuthorizationMode22 || {});
        var BackupState22 = /* @__PURE__ */ ((BackupState222) => {
          BackupState222[BackupState222["IDLE"] = 0] = "IDLE";
          BackupState222[BackupState222["PREPARING_FOR_BACKUP"] = 1] = "PREPARING_FOR_BACKUP";
          BackupState222[BackupState222["PREPARING_FOR_RESTORE"] = 2] = "PREPARING_FOR_RESTORE";
          BackupState222[BackupState222["PERFORMING_A_BACKUP"] = 3] = "PERFORMING_A_BACKUP";
          BackupState222[BackupState222["PERFORMING_A_RESTORE"] = 4] = "PERFORMING_A_RESTORE";
          BackupState222[BackupState222["BACKUP_FAILURE"] = 5] = "BACKUP_FAILURE";
          BackupState222[BackupState222["RESTORE_FAILURE"] = 6] = "RESTORE_FAILURE";
          return BackupState222;
        })(BackupState22 || {});
        var BinaryLightingPV22 = /* @__PURE__ */ ((BinaryLightingPV222) => {
          BinaryLightingPV222[BinaryLightingPV222["OFF"] = 0] = "OFF";
          BinaryLightingPV222[BinaryLightingPV222["ON"] = 1] = "ON";
          BinaryLightingPV222[BinaryLightingPV222["WARN"] = 2] = "WARN";
          BinaryLightingPV222[BinaryLightingPV222["WARN_OFF"] = 3] = "WARN_OFF";
          BinaryLightingPV222[BinaryLightingPV222["WARN_RELINQUISH"] = 4] = "WARN_RELINQUISH";
          BinaryLightingPV222[BinaryLightingPV222["STOP"] = 5] = "STOP";
          return BinaryLightingPV222;
        })(BinaryLightingPV22 || {});
        var BinaryPV22 = /* @__PURE__ */ ((BinaryPV222) => {
          BinaryPV222[BinaryPV222["INACTIVE"] = 0] = "INACTIVE";
          BinaryPV222[BinaryPV222["ACTIVE"] = 1] = "ACTIVE";
          return BinaryPV222;
        })(BinaryPV22 || {});
        var DeviceStatus22 = /* @__PURE__ */ ((DeviceStatus222) => {
          DeviceStatus222[DeviceStatus222["OPERATIONAL"] = 0] = "OPERATIONAL";
          DeviceStatus222[DeviceStatus222["OPERATIONAL_READ_ONLY"] = 1] = "OPERATIONAL_READ_ONLY";
          DeviceStatus222[DeviceStatus222["DOWNLOAD_REQUIRED"] = 2] = "DOWNLOAD_REQUIRED";
          DeviceStatus222[DeviceStatus222["DOWNLOAD_IN_PROGRESS"] = 3] = "DOWNLOAD_IN_PROGRESS";
          DeviceStatus222[DeviceStatus222["NON_OPERATIONAL"] = 4] = "NON_OPERATIONAL";
          DeviceStatus222[DeviceStatus222["BACKUP_IN_PROGRESS"] = 5] = "BACKUP_IN_PROGRESS";
          return DeviceStatus222;
        })(DeviceStatus22 || {});
        var DoorAlarmState22 = /* @__PURE__ */ ((DoorAlarmState222) => {
          DoorAlarmState222[DoorAlarmState222["NORMAL"] = 0] = "NORMAL";
          DoorAlarmState222[DoorAlarmState222["ALARM"] = 1] = "ALARM";
          DoorAlarmState222[DoorAlarmState222["DOOR_OPEN_TOO_LONG"] = 2] = "DOOR_OPEN_TOO_LONG";
          DoorAlarmState222[DoorAlarmState222["FORCED_OPEN"] = 3] = "FORCED_OPEN";
          DoorAlarmState222[DoorAlarmState222["TAMPER"] = 4] = "TAMPER";
          DoorAlarmState222[DoorAlarmState222["DOOR_FAULT"] = 5] = "DOOR_FAULT";
          DoorAlarmState222[DoorAlarmState222["LOCK_DOWN"] = 6] = "LOCK_DOWN";
          DoorAlarmState222[DoorAlarmState222["FREE_ACCESS"] = 7] = "FREE_ACCESS";
          DoorAlarmState222[DoorAlarmState222["EGRESS_OPEN"] = 8] = "EGRESS_OPEN";
          return DoorAlarmState222;
        })(DoorAlarmState22 || {});
        var DoorSecuredStatus22 = /* @__PURE__ */ ((DoorSecuredStatus222) => {
          DoorSecuredStatus222[DoorSecuredStatus222["SECURED"] = 0] = "SECURED";
          DoorSecuredStatus222[DoorSecuredStatus222["UNSECURED"] = 1] = "UNSECURED";
          DoorSecuredStatus222[DoorSecuredStatus222["UNKNOWN"] = 2] = "UNKNOWN";
          return DoorSecuredStatus222;
        })(DoorSecuredStatus22 || {});
        var DoorStatus22 = /* @__PURE__ */ ((DoorStatus222) => {
          DoorStatus222[DoorStatus222["CLOSED"] = 0] = "CLOSED";
          DoorStatus222[DoorStatus222["OPENED"] = 1] = "OPENED";
          DoorStatus222[DoorStatus222["UNKNOWN"] = 2] = "UNKNOWN";
          DoorStatus222[DoorStatus222["DOOR_FAULT"] = 3] = "DOOR_FAULT";
          DoorStatus222[DoorStatus222["UNUSED"] = 4] = "UNUSED";
          DoorStatus222[DoorStatus222["NONE"] = 5] = "NONE";
          DoorStatus222[DoorStatus222["CLOSING"] = 6] = "CLOSING";
          DoorStatus222[DoorStatus222["OPENING"] = 7] = "OPENING";
          DoorStatus222[DoorStatus222["SAFETY_LOCKED"] = 8] = "SAFETY_LOCKED";
          DoorStatus222[DoorStatus222["LIMITED_OPENED"] = 9] = "LIMITED_OPENED";
          return DoorStatus222;
        })(DoorStatus22 || {});
        var DoorValue22 = /* @__PURE__ */ ((DoorValue222) => {
          DoorValue222[DoorValue222["LOCK"] = 0] = "LOCK";
          DoorValue222[DoorValue222["UNLOCK"] = 1] = "UNLOCK";
          DoorValue222[DoorValue222["PULSE_UNLOCK"] = 2] = "PULSE_UNLOCK";
          DoorValue222[DoorValue222["EXTENDED_PULSE_UNLOCK"] = 3] = "EXTENDED_PULSE_UNLOCK";
          return DoorValue222;
        })(DoorValue22 || {});
        var EngineeringUnits22 = /* @__PURE__ */ ((EngineeringUnits222) => {
          EngineeringUnits222[EngineeringUnits222["METERS_PER_SECOND_PER_SECOND"] = 166] = "METERS_PER_SECOND_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["SQUARE_METERS"] = 0] = "SQUARE_METERS";
          EngineeringUnits222[EngineeringUnits222["SQUARE_CENTIMETERS"] = 116] = "SQUARE_CENTIMETERS";
          EngineeringUnits222[EngineeringUnits222["SQUARE_FEET"] = 1] = "SQUARE_FEET";
          EngineeringUnits222[EngineeringUnits222["SQUARE_INCHES"] = 115] = "SQUARE_INCHES";
          EngineeringUnits222[EngineeringUnits222["CURRENCY1"] = 105] = "CURRENCY1";
          EngineeringUnits222[EngineeringUnits222["CURRENCY2"] = 106] = "CURRENCY2";
          EngineeringUnits222[EngineeringUnits222["CURRENCY3"] = 107] = "CURRENCY3";
          EngineeringUnits222[EngineeringUnits222["CURRENCY4"] = 108] = "CURRENCY4";
          EngineeringUnits222[EngineeringUnits222["CURRENCY5"] = 109] = "CURRENCY5";
          EngineeringUnits222[EngineeringUnits222["CURRENCY6"] = 110] = "CURRENCY6";
          EngineeringUnits222[EngineeringUnits222["CURRENCY7"] = 111] = "CURRENCY7";
          EngineeringUnits222[EngineeringUnits222["CURRENCY8"] = 112] = "CURRENCY8";
          EngineeringUnits222[EngineeringUnits222["CURRENCY9"] = 113] = "CURRENCY9";
          EngineeringUnits222[EngineeringUnits222["CURRENCY10"] = 114] = "CURRENCY10";
          EngineeringUnits222[EngineeringUnits222["MILLIAMPERES"] = 2] = "MILLIAMPERES";
          EngineeringUnits222[EngineeringUnits222["AMPERES"] = 3] = "AMPERES";
          EngineeringUnits222[EngineeringUnits222["AMPERES_PER_METER"] = 167] = "AMPERES_PER_METER";
          EngineeringUnits222[EngineeringUnits222["AMPERES_PER_SQUARE_METER"] = 168] = "AMPERES_PER_SQUARE_METER";
          EngineeringUnits222[EngineeringUnits222["AMPERE_SQUARE_METERS"] = 169] = "AMPERE_SQUARE_METERS";
          EngineeringUnits222[EngineeringUnits222["DECIBELS"] = 199] = "DECIBELS";
          EngineeringUnits222[EngineeringUnits222["DECIBELS_MILLIVOLT"] = 200] = "DECIBELS_MILLIVOLT";
          EngineeringUnits222[EngineeringUnits222["DECIBELS_VOLT"] = 201] = "DECIBELS_VOLT";
          EngineeringUnits222[EngineeringUnits222["FARADS"] = 170] = "FARADS";
          EngineeringUnits222[EngineeringUnits222["HENRYS"] = 171] = "HENRYS";
          EngineeringUnits222[EngineeringUnits222["OHMS"] = 4] = "OHMS";
          EngineeringUnits222[EngineeringUnits222["OHM_METER_SQUARED_PER_METER"] = 237] = "OHM_METER_SQUARED_PER_METER";
          EngineeringUnits222[EngineeringUnits222["OHM_METERS"] = 172] = "OHM_METERS";
          EngineeringUnits222[EngineeringUnits222["MILLIOHMS"] = 145] = "MILLIOHMS";
          EngineeringUnits222[EngineeringUnits222["KILOHMS"] = 122] = "KILOHMS";
          EngineeringUnits222[EngineeringUnits222["MEGOHMS"] = 123] = "MEGOHMS";
          EngineeringUnits222[EngineeringUnits222["MICROSIEMENS"] = 190] = "MICROSIEMENS";
          EngineeringUnits222[EngineeringUnits222["MILLISIEMENS"] = 202] = "MILLISIEMENS";
          EngineeringUnits222[EngineeringUnits222["SIEMENS"] = 173] = "SIEMENS";
          EngineeringUnits222[EngineeringUnits222["SIEMENS_PER_METER"] = 174] = "SIEMENS_PER_METER";
          EngineeringUnits222[EngineeringUnits222["TESLAS"] = 175] = "TESLAS";
          EngineeringUnits222[EngineeringUnits222["VOLTS"] = 5] = "VOLTS";
          EngineeringUnits222[EngineeringUnits222["MILLIVOLTS"] = 124] = "MILLIVOLTS";
          EngineeringUnits222[EngineeringUnits222["KILOVOLTS"] = 6] = "KILOVOLTS";
          EngineeringUnits222[EngineeringUnits222["MEGAVOLTS"] = 7] = "MEGAVOLTS";
          EngineeringUnits222[EngineeringUnits222["VOLT_AMPERES"] = 8] = "VOLT_AMPERES";
          EngineeringUnits222[EngineeringUnits222["KILOVOLT_AMPERES"] = 9] = "KILOVOLT_AMPERES";
          EngineeringUnits222[EngineeringUnits222["MEGAVOLT_AMPERES"] = 10] = "MEGAVOLT_AMPERES";
          EngineeringUnits222[EngineeringUnits222["VOLT_AMPERES_REACTIVE"] = 11] = "VOLT_AMPERES_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["KILOVOLT_AMPERES_REACTIVE"] = 12] = "KILOVOLT_AMPERES_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["MEGAVOLT_AMPERES_REACTIVE"] = 13] = "MEGAVOLT_AMPERES_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["VOLTS_PER_DEGREE_KELVIN"] = 176] = "VOLTS_PER_DEGREE_KELVIN";
          EngineeringUnits222[EngineeringUnits222["VOLTS_PER_METER"] = 177] = "VOLTS_PER_METER";
          EngineeringUnits222[EngineeringUnits222["DEGREES_PHASE"] = 14] = "DEGREES_PHASE";
          EngineeringUnits222[EngineeringUnits222["POWER_FACTOR"] = 15] = "POWER_FACTOR";
          EngineeringUnits222[EngineeringUnits222["WEBERS"] = 178] = "WEBERS";
          EngineeringUnits222[EngineeringUnits222["AMPERE_SECONDS"] = 238] = "AMPERE_SECONDS";
          EngineeringUnits222[EngineeringUnits222["VOLT_AMPERE_HOURS"] = 239] = "VOLT_AMPERE_HOURS";
          EngineeringUnits222[EngineeringUnits222["KILOVOLT_AMPERE_HOURS"] = 240] = "KILOVOLT_AMPERE_HOURS";
          EngineeringUnits222[EngineeringUnits222["MEGAVOLT_AMPERE_HOURS"] = 241] = "MEGAVOLT_AMPERE_HOURS";
          EngineeringUnits222[EngineeringUnits222["VOLT_AMPERE_HOURS_REACTIVE"] = 242] = "VOLT_AMPERE_HOURS_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["KILOVOLT_AMPERE_HOURS_REACTIVE"] = 243] = "KILOVOLT_AMPERE_HOURS_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["MEGAVOLT_AMPERE_HOURS_REACTIVE"] = 244] = "MEGAVOLT_AMPERE_HOURS_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["VOLT_SQUARE_HOURS"] = 245] = "VOLT_SQUARE_HOURS";
          EngineeringUnits222[EngineeringUnits222["AMPERE_SQUARE_HOURS"] = 246] = "AMPERE_SQUARE_HOURS";
          EngineeringUnits222[EngineeringUnits222["JOULES"] = 16] = "JOULES";
          EngineeringUnits222[EngineeringUnits222["KILOJOULES"] = 17] = "KILOJOULES";
          EngineeringUnits222[EngineeringUnits222["KILOJOULES_PER_KILOGRAM"] = 125] = "KILOJOULES_PER_KILOGRAM";
          EngineeringUnits222[EngineeringUnits222["MEGAJOULES"] = 126] = "MEGAJOULES";
          EngineeringUnits222[EngineeringUnits222["WATT_HOURS"] = 18] = "WATT_HOURS";
          EngineeringUnits222[EngineeringUnits222["KILOWATT_HOURS"] = 19] = "KILOWATT_HOURS";
          EngineeringUnits222[EngineeringUnits222["MEGAWATT_HOURS"] = 146] = "MEGAWATT_HOURS";
          EngineeringUnits222[EngineeringUnits222["WATT_HOURS_REACTIVE"] = 203] = "WATT_HOURS_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["KILOWATT_HOURS_REACTIVE"] = 204] = "KILOWATT_HOURS_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["MEGAWATT_HOURS_REACTIVE"] = 205] = "MEGAWATT_HOURS_REACTIVE";
          EngineeringUnits222[EngineeringUnits222["BTUS"] = 20] = "BTUS";
          EngineeringUnits222[EngineeringUnits222["KILO_BTUS"] = 147] = "KILO_BTUS";
          EngineeringUnits222[EngineeringUnits222["MEGA_BTUS"] = 148] = "MEGA_BTUS";
          EngineeringUnits222[EngineeringUnits222["THERMS"] = 21] = "THERMS";
          EngineeringUnits222[EngineeringUnits222["TON_HOURS"] = 22] = "TON_HOURS";
          EngineeringUnits222[EngineeringUnits222["JOULES_PER_KILOGRAM_DRY_AIR"] = 23] = "JOULES_PER_KILOGRAM_DRY_AIR";
          EngineeringUnits222[EngineeringUnits222["KILOJOULES_PER_KILOGRAM_DRY_AIR"] = 149] = "KILOJOULES_PER_KILOGRAM_DRY_AIR";
          EngineeringUnits222[EngineeringUnits222["MEGAJOULES_PER_KILOGRAM_DRY_AIR"] = 150] = "MEGAJOULES_PER_KILOGRAM_DRY_AIR";
          EngineeringUnits222[EngineeringUnits222["BTUS_PER_POUND_DRY_AIR"] = 24] = "BTUS_PER_POUND_DRY_AIR";
          EngineeringUnits222[EngineeringUnits222["BTUS_PER_POUND"] = 117] = "BTUS_PER_POUND";
          EngineeringUnits222[EngineeringUnits222["JOULES_PER_DEGREE_KELVIN"] = 127] = "JOULES_PER_DEGREE_KELVIN";
          EngineeringUnits222[EngineeringUnits222["KILOJOULES_PER_DEGREE_KELVIN"] = 151] = "KILOJOULES_PER_DEGREE_KELVIN";
          EngineeringUnits222[EngineeringUnits222["MEGAJOULES_PER_DEGREE_KELVIN"] = 152] = "MEGAJOULES_PER_DEGREE_KELVIN";
          EngineeringUnits222[EngineeringUnits222["JOULES_PER_KILOGRAM_DEGREE_KELVIN"] = 128] = "JOULES_PER_KILOGRAM_DEGREE_KELVIN";
          EngineeringUnits222[EngineeringUnits222["NEWTON"] = 153] = "NEWTON";
          EngineeringUnits222[EngineeringUnits222["CYCLES_PER_HOUR"] = 25] = "CYCLES_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["CYCLES_PER_MINUTE"] = 26] = "CYCLES_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["HERTZ"] = 27] = "HERTZ";
          EngineeringUnits222[EngineeringUnits222["KILOHERTZ"] = 129] = "KILOHERTZ";
          EngineeringUnits222[EngineeringUnits222["MEGAHERTZ"] = 130] = "MEGAHERTZ";
          EngineeringUnits222[EngineeringUnits222["PER_HOUR"] = 131] = "PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR"] = 28] = "GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR";
          EngineeringUnits222[EngineeringUnits222["PERCENT_RELATIVE_HUMIDITY"] = 29] = "PERCENT_RELATIVE_HUMIDITY";
          EngineeringUnits222[EngineeringUnits222["MICROMETERS"] = 194] = "MICROMETERS";
          EngineeringUnits222[EngineeringUnits222["MILLIMETERS"] = 30] = "MILLIMETERS";
          EngineeringUnits222[EngineeringUnits222["CENTIMETERS"] = 118] = "CENTIMETERS";
          EngineeringUnits222[EngineeringUnits222["KILOMETERS"] = 193] = "KILOMETERS";
          EngineeringUnits222[EngineeringUnits222["METERS"] = 31] = "METERS";
          EngineeringUnits222[EngineeringUnits222["INCHES"] = 32] = "INCHES";
          EngineeringUnits222[EngineeringUnits222["FEET"] = 33] = "FEET";
          EngineeringUnits222[EngineeringUnits222["CANDELAS"] = 179] = "CANDELAS";
          EngineeringUnits222[EngineeringUnits222["CANDELAS_PER_SQUARE_METER"] = 180] = "CANDELAS_PER_SQUARE_METER";
          EngineeringUnits222[EngineeringUnits222["WATTS_PER_SQUARE_FOOT"] = 34] = "WATTS_PER_SQUARE_FOOT";
          EngineeringUnits222[EngineeringUnits222["WATTS_PER_SQUARE_METER"] = 35] = "WATTS_PER_SQUARE_METER";
          EngineeringUnits222[EngineeringUnits222["LUMENS"] = 36] = "LUMENS";
          EngineeringUnits222[EngineeringUnits222["LUXES"] = 37] = "LUXES";
          EngineeringUnits222[EngineeringUnits222["FOOT_CANDLES"] = 38] = "FOOT_CANDLES";
          EngineeringUnits222[EngineeringUnits222["MILLIGRAMS"] = 196] = "MILLIGRAMS";
          EngineeringUnits222[EngineeringUnits222["GRAMS"] = 195] = "GRAMS";
          EngineeringUnits222[EngineeringUnits222["KILOGRAMS"] = 39] = "KILOGRAMS";
          EngineeringUnits222[EngineeringUnits222["POUNDS_MASS"] = 40] = "POUNDS_MASS";
          EngineeringUnits222[EngineeringUnits222["TONS"] = 41] = "TONS";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_SECOND"] = 154] = "GRAMS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_MINUTE"] = 155] = "GRAMS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["KILOGRAMS_PER_SECOND"] = 42] = "KILOGRAMS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["KILOGRAMS_PER_MINUTE"] = 43] = "KILOGRAMS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["KILOGRAMS_PER_HOUR"] = 44] = "KILOGRAMS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["POUNDS_MASS_PER_SECOND"] = 119] = "POUNDS_MASS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["POUNDS_MASS_PER_MINUTE"] = 45] = "POUNDS_MASS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["POUNDS_MASS_PER_HOUR"] = 46] = "POUNDS_MASS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["TONS_PER_HOUR"] = 156] = "TONS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["MILLIWATTS"] = 132] = "MILLIWATTS";
          EngineeringUnits222[EngineeringUnits222["WATTS"] = 47] = "WATTS";
          EngineeringUnits222[EngineeringUnits222["KILOWATTS"] = 48] = "KILOWATTS";
          EngineeringUnits222[EngineeringUnits222["MEGAWATTS"] = 49] = "MEGAWATTS";
          EngineeringUnits222[EngineeringUnits222["BTUS_PER_HOUR"] = 50] = "BTUS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["KILO_BTUS_PER_HOUR"] = 157] = "KILO_BTUS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["JOULE_PER_HOURS"] = 247] = "JOULE_PER_HOURS";
          EngineeringUnits222[EngineeringUnits222["HORSEPOWER"] = 51] = "HORSEPOWER";
          EngineeringUnits222[EngineeringUnits222["TONS_REFRIGERATION"] = 52] = "TONS_REFRIGERATION";
          EngineeringUnits222[EngineeringUnits222["PASCALS"] = 53] = "PASCALS";
          EngineeringUnits222[EngineeringUnits222["HECTOPASCALS"] = 133] = "HECTOPASCALS";
          EngineeringUnits222[EngineeringUnits222["KILOPASCALS"] = 54] = "KILOPASCALS";
          EngineeringUnits222[EngineeringUnits222["MILLIBARS"] = 134] = "MILLIBARS";
          EngineeringUnits222[EngineeringUnits222["BARS"] = 55] = "BARS";
          EngineeringUnits222[EngineeringUnits222["POUNDS_FORCE_PER_SQUARE_INCH"] = 56] = "POUNDS_FORCE_PER_SQUARE_INCH";
          EngineeringUnits222[EngineeringUnits222["MILLIMETERS_OF_WATER"] = 206] = "MILLIMETERS_OF_WATER";
          EngineeringUnits222[EngineeringUnits222["CENTIMETERS_OF_WATER"] = 57] = "CENTIMETERS_OF_WATER";
          EngineeringUnits222[EngineeringUnits222["INCHES_OF_WATER"] = 58] = "INCHES_OF_WATER";
          EngineeringUnits222[EngineeringUnits222["MILLIMETERS_OF_MERCURY"] = 59] = "MILLIMETERS_OF_MERCURY";
          EngineeringUnits222[EngineeringUnits222["CENTIMETERS_OF_MERCURY"] = 60] = "CENTIMETERS_OF_MERCURY";
          EngineeringUnits222[EngineeringUnits222["INCHES_OF_MERCURY"] = 61] = "INCHES_OF_MERCURY";
          EngineeringUnits222[EngineeringUnits222["DEGREES_CELSIUS"] = 62] = "DEGREES_CELSIUS";
          EngineeringUnits222[EngineeringUnits222["DEGREES_KELVIN"] = 63] = "DEGREES_KELVIN";
          EngineeringUnits222[EngineeringUnits222["DEGREES_KELVIN_PER_HOUR"] = 181] = "DEGREES_KELVIN_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["DEGREES_KELVIN_PER_MINUTE"] = 182] = "DEGREES_KELVIN_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["DEGREES_FAHRENHEIT"] = 64] = "DEGREES_FAHRENHEIT";
          EngineeringUnits222[EngineeringUnits222["DEGREE_DAYS_CELSIUS"] = 65] = "DEGREE_DAYS_CELSIUS";
          EngineeringUnits222[EngineeringUnits222["DEGREE_DAYS_FAHRENHEIT"] = 66] = "DEGREE_DAYS_FAHRENHEIT";
          EngineeringUnits222[EngineeringUnits222["DELTA_DEGREES_FAHRENHEIT"] = 120] = "DELTA_DEGREES_FAHRENHEIT";
          EngineeringUnits222[EngineeringUnits222["DELTA_DEGREES_KELVIN"] = 121] = "DELTA_DEGREES_KELVIN";
          EngineeringUnits222[EngineeringUnits222["YEARS"] = 67] = "YEARS";
          EngineeringUnits222[EngineeringUnits222["MONTHS"] = 68] = "MONTHS";
          EngineeringUnits222[EngineeringUnits222["WEEKS"] = 69] = "WEEKS";
          EngineeringUnits222[EngineeringUnits222["DAYS"] = 70] = "DAYS";
          EngineeringUnits222[EngineeringUnits222["HOURS"] = 71] = "HOURS";
          EngineeringUnits222[EngineeringUnits222["MINUTES"] = 72] = "MINUTES";
          EngineeringUnits222[EngineeringUnits222["SECONDS"] = 73] = "SECONDS";
          EngineeringUnits222[EngineeringUnits222["HUNDREDTHS_SECONDS"] = 158] = "HUNDREDTHS_SECONDS";
          EngineeringUnits222[EngineeringUnits222["MILLISECONDS"] = 159] = "MILLISECONDS";
          EngineeringUnits222[EngineeringUnits222["NEWTON_METERS"] = 160] = "NEWTON_METERS";
          EngineeringUnits222[EngineeringUnits222["MILLIMETERS_PER_SECOND"] = 161] = "MILLIMETERS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["MILLIMETERS_PER_MINUTE"] = 162] = "MILLIMETERS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["METERS_PER_SECOND"] = 74] = "METERS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["METERS_PER_MINUTE"] = 163] = "METERS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["METERS_PER_HOUR"] = 164] = "METERS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["KILOMETERS_PER_HOUR"] = 75] = "KILOMETERS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["FEET_PER_SECOND"] = 76] = "FEET_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["FEET_PER_MINUTE"] = 77] = "FEET_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["MILES_PER_HOUR"] = 78] = "MILES_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["CUBIC_FEET"] = 79] = "CUBIC_FEET";
          EngineeringUnits222[EngineeringUnits222["CUBIC_METERS"] = 80] = "CUBIC_METERS";
          EngineeringUnits222[EngineeringUnits222["IMPERIAL_GALLONS"] = 81] = "IMPERIAL_GALLONS";
          EngineeringUnits222[EngineeringUnits222["MILLILITERS"] = 197] = "MILLILITERS";
          EngineeringUnits222[EngineeringUnits222["LITERS"] = 82] = "LITERS";
          EngineeringUnits222[EngineeringUnits222["US_GALLONS"] = 83] = "US_GALLONS";
          EngineeringUnits222[EngineeringUnits222["CUBIC_FEET_PER_SECOND"] = 142] = "CUBIC_FEET_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["CUBIC_FEET_PER_MINUTE"] = 84] = "CUBIC_FEET_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["MILLION_STANDARD_CUBIC_FEET_PER_MINUTE"] = 254] = "MILLION_STANDARD_CUBIC_FEET_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["CUBIC_FEET_PER_HOUR"] = 191] = "CUBIC_FEET_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["CUBIC_FEET_PER_DAY"] = 248] = "CUBIC_FEET_PER_DAY";
          EngineeringUnits222[EngineeringUnits222["STANDARD_CUBIC_FEET_PER_DAY"] = 47808] = "STANDARD_CUBIC_FEET_PER_DAY";
          EngineeringUnits222[EngineeringUnits222["MILLION_STANDARD_CUBIC_FEET_PER_DAY"] = 47809] = "MILLION_STANDARD_CUBIC_FEET_PER_DAY";
          EngineeringUnits222[EngineeringUnits222["THOUSAND_CUBIC_FEET_PER_DAY"] = 47810] = "THOUSAND_CUBIC_FEET_PER_DAY";
          EngineeringUnits222[EngineeringUnits222["THOUSAND_STANDARD_CUBIC_FEET_PER_DAY"] = 47811] = "THOUSAND_STANDARD_CUBIC_FEET_PER_DAY";
          EngineeringUnits222[EngineeringUnits222["POUNDS_MASS_PER_DAY"] = 47812] = "POUNDS_MASS_PER_DAY";
          EngineeringUnits222[EngineeringUnits222["CUBIC_METERS_PER_SECOND"] = 85] = "CUBIC_METERS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["CUBIC_METERS_PER_MINUTE"] = 165] = "CUBIC_METERS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["CUBIC_METERS_PER_HOUR"] = 135] = "CUBIC_METERS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["CUBIC_METERS_PER_DAY"] = 249] = "CUBIC_METERS_PER_DAY";
          EngineeringUnits222[EngineeringUnits222["IMPERIAL_GALLONS_PER_MINUTE"] = 86] = "IMPERIAL_GALLONS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["MILLILITERS_PER_SECOND"] = 198] = "MILLILITERS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["LITERS_PER_SECOND"] = 87] = "LITERS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["LITERS_PER_MINUTE"] = 88] = "LITERS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["LITERS_PER_HOUR"] = 136] = "LITERS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["US_GALLONS_PER_MINUTE"] = 89] = "US_GALLONS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["US_GALLONS_PER_HOUR"] = 192] = "US_GALLONS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["DEGREES_ANGULAR"] = 90] = "DEGREES_ANGULAR";
          EngineeringUnits222[EngineeringUnits222["DEGREES_CELSIUS_PER_HOUR"] = 91] = "DEGREES_CELSIUS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["DEGREES_CELSIUS_PER_MINUTE"] = 92] = "DEGREES_CELSIUS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["DEGREES_FAHRENHEIT_PER_HOUR"] = 93] = "DEGREES_FAHRENHEIT_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["DEGREES_FAHRENHEIT_PER_MINUTE"] = 94] = "DEGREES_FAHRENHEIT_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["JOULE_SECONDS"] = 183] = "JOULE_SECONDS";
          EngineeringUnits222[EngineeringUnits222["KILOGRAMS_PER_CUBIC_METER"] = 186] = "KILOGRAMS_PER_CUBIC_METER";
          EngineeringUnits222[EngineeringUnits222["KILOWATT_HOURS_PER_SQUARE_METER"] = 137] = "KILOWATT_HOURS_PER_SQUARE_METER";
          EngineeringUnits222[EngineeringUnits222["KILOWATT_HOURS_PER_SQUARE_FOOT"] = 138] = "KILOWATT_HOURS_PER_SQUARE_FOOT";
          EngineeringUnits222[EngineeringUnits222["WATT_HOURS_PER_CUBIC_METER"] = 250] = "WATT_HOURS_PER_CUBIC_METER";
          EngineeringUnits222[EngineeringUnits222["JOULES_PER_CUBIC_METER"] = 251] = "JOULES_PER_CUBIC_METER";
          EngineeringUnits222[EngineeringUnits222["MEGAJOULES_PER_SQUARE_METER"] = 139] = "MEGAJOULES_PER_SQUARE_METER";
          EngineeringUnits222[EngineeringUnits222["MEGAJOULES_PER_SQUARE_FOOT"] = 140] = "MEGAJOULES_PER_SQUARE_FOOT";
          EngineeringUnits222[EngineeringUnits222["MOLE_PERCENT"] = 252] = "MOLE_PERCENT";
          EngineeringUnits222[EngineeringUnits222["NO_UNITS"] = 95] = "NO_UNITS";
          EngineeringUnits222[EngineeringUnits222["NEWTON_SECONDS"] = 187] = "NEWTON_SECONDS";
          EngineeringUnits222[EngineeringUnits222["NEWTONS_PER_METER"] = 188] = "NEWTONS_PER_METER";
          EngineeringUnits222[EngineeringUnits222["PARTS_PER_MILLION"] = 96] = "PARTS_PER_MILLION";
          EngineeringUnits222[EngineeringUnits222["PARTS_PER_BILLION"] = 97] = "PARTS_PER_BILLION";
          EngineeringUnits222[EngineeringUnits222["PASCAL_SECONDS"] = 253] = "PASCAL_SECONDS";
          EngineeringUnits222[EngineeringUnits222["PERCENT"] = 98] = "PERCENT";
          EngineeringUnits222[EngineeringUnits222["PERCENT_OBSCURATION_PER_FOOT"] = 143] = "PERCENT_OBSCURATION_PER_FOOT";
          EngineeringUnits222[EngineeringUnits222["PERCENT_OBSCURATION_PER_METER"] = 144] = "PERCENT_OBSCURATION_PER_METER";
          EngineeringUnits222[EngineeringUnits222["PERCENT_PER_SECOND"] = 99] = "PERCENT_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["PER_MINUTE"] = 100] = "PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["PER_SECOND"] = 101] = "PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["PSI_PER_DEGREE_FAHRENHEIT"] = 102] = "PSI_PER_DEGREE_FAHRENHEIT";
          EngineeringUnits222[EngineeringUnits222["RADIANS"] = 103] = "RADIANS";
          EngineeringUnits222[EngineeringUnits222["RADIANS_PER_SECOND"] = 184] = "RADIANS_PER_SECOND";
          EngineeringUnits222[EngineeringUnits222["REVOLUTIONS_PER_MINUTE"] = 104] = "REVOLUTIONS_PER_MINUTE";
          EngineeringUnits222[EngineeringUnits222["SQUARE_METERS_PER_NEWTON"] = 185] = "SQUARE_METERS_PER_NEWTON";
          EngineeringUnits222[EngineeringUnits222["WATTS_PER_METER_PER_DEGREE_KELVIN"] = 189] = "WATTS_PER_METER_PER_DEGREE_KELVIN";
          EngineeringUnits222[EngineeringUnits222["WATTS_PER_SQUARE_METER_DEGREE_KELVIN"] = 141] = "WATTS_PER_SQUARE_METER_DEGREE_KELVIN";
          EngineeringUnits222[EngineeringUnits222["PER_MILLE"] = 207] = "PER_MILLE";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_GRAM"] = 208] = "GRAMS_PER_GRAM";
          EngineeringUnits222[EngineeringUnits222["KILOGRAMS_PER_KILOGRAM"] = 209] = "KILOGRAMS_PER_KILOGRAM";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_KILOGRAM"] = 210] = "GRAMS_PER_KILOGRAM";
          EngineeringUnits222[EngineeringUnits222["MILLIGRAMS_PER_GRAM"] = 211] = "MILLIGRAMS_PER_GRAM";
          EngineeringUnits222[EngineeringUnits222["MILLIGRAMS_PER_KILOGRAM"] = 212] = "MILLIGRAMS_PER_KILOGRAM";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_MILLILITER"] = 213] = "GRAMS_PER_MILLILITER";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_LITER"] = 214] = "GRAMS_PER_LITER";
          EngineeringUnits222[EngineeringUnits222["MILLIGRAMS_PER_LITER"] = 215] = "MILLIGRAMS_PER_LITER";
          EngineeringUnits222[EngineeringUnits222["MICROGRAMS_PER_LITER"] = 216] = "MICROGRAMS_PER_LITER";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_CUBIC_METER"] = 217] = "GRAMS_PER_CUBIC_METER";
          EngineeringUnits222[EngineeringUnits222["MILLIGRAMS_PER_CUBIC_METER"] = 218] = "MILLIGRAMS_PER_CUBIC_METER";
          EngineeringUnits222[EngineeringUnits222["MICROGRAMS_PER_CUBIC_METER"] = 219] = "MICROGRAMS_PER_CUBIC_METER";
          EngineeringUnits222[EngineeringUnits222["NANOGRAMS_PER_CUBIC_METER"] = 220] = "NANOGRAMS_PER_CUBIC_METER";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_CUBIC_CENTIMETER"] = 221] = "GRAMS_PER_CUBIC_CENTIMETER";
          EngineeringUnits222[EngineeringUnits222["BECQUERELS"] = 222] = "BECQUERELS";
          EngineeringUnits222[EngineeringUnits222["KILOBECQUERELS"] = 223] = "KILOBECQUERELS";
          EngineeringUnits222[EngineeringUnits222["MEGABECQUERELS"] = 224] = "MEGABECQUERELS";
          EngineeringUnits222[EngineeringUnits222["GRAY"] = 225] = "GRAY";
          EngineeringUnits222[EngineeringUnits222["MILLIGRAY"] = 226] = "MILLIGRAY";
          EngineeringUnits222[EngineeringUnits222["MICROGRAY"] = 227] = "MICROGRAY";
          EngineeringUnits222[EngineeringUnits222["SIEVERTS"] = 228] = "SIEVERTS";
          EngineeringUnits222[EngineeringUnits222["MILLISIEVERTS"] = 229] = "MILLISIEVERTS";
          EngineeringUnits222[EngineeringUnits222["MICROSIEVERTS"] = 230] = "MICROSIEVERTS";
          EngineeringUnits222[EngineeringUnits222["MICROSIEVERTS_PER_HOUR"] = 231] = "MICROSIEVERTS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["MILLIREMS"] = 47814] = "MILLIREMS";
          EngineeringUnits222[EngineeringUnits222["MILLIREMS_PER_HOUR"] = 47815] = "MILLIREMS_PER_HOUR";
          EngineeringUnits222[EngineeringUnits222["DECIBELS_A"] = 232] = "DECIBELS_A";
          EngineeringUnits222[EngineeringUnits222["NEPHELOMETRIC_TURBIDITY_UNIT"] = 233] = "NEPHELOMETRIC_TURBIDITY_UNIT";
          EngineeringUnits222[EngineeringUnits222["PH"] = 234] = "PH";
          EngineeringUnits222[EngineeringUnits222["GRAMS_PER_SQUARE_METER"] = 235] = "GRAMS_PER_SQUARE_METER";
          EngineeringUnits222[EngineeringUnits222["MINUTES_PER_DEGREE_KELVIN"] = 236] = "MINUTES_PER_DEGREE_KELVIN";
          return EngineeringUnits222;
        })(EngineeringUnits22 || {});
        var EscalatorFault22 = /* @__PURE__ */ ((EscalatorFault222) => {
          EscalatorFault222[EscalatorFault222["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
          EscalatorFault222[EscalatorFault222["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
          EscalatorFault222[EscalatorFault222["MECHANICAL_COMPONENT_FAULT"] = 2] = "MECHANICAL_COMPONENT_FAULT";
          EscalatorFault222[EscalatorFault222["OVERSPEED_FAULT"] = 3] = "OVERSPEED_FAULT";
          EscalatorFault222[EscalatorFault222["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
          EscalatorFault222[EscalatorFault222["SAFETY_DEVICE_FAULT"] = 5] = "SAFETY_DEVICE_FAULT";
          EscalatorFault222[EscalatorFault222["CONTROLLER_SUPPLY_FAULT"] = 6] = "CONTROLLER_SUPPLY_FAULT";
          EscalatorFault222[EscalatorFault222["DRIVE_TEMPERATURE_EXCEEDED"] = 7] = "DRIVE_TEMPERATURE_EXCEEDED";
          EscalatorFault222[EscalatorFault222["COMB_PLATE_FAULT"] = 8] = "COMB_PLATE_FAULT";
          return EscalatorFault222;
        })(EscalatorFault22 || {});
        var EscalatorMode22 = /* @__PURE__ */ ((EscalatorMode222) => {
          EscalatorMode222[EscalatorMode222["UNKNOWN"] = 0] = "UNKNOWN";
          EscalatorMode222[EscalatorMode222["STOP"] = 1] = "STOP";
          EscalatorMode222[EscalatorMode222["UP"] = 2] = "UP";
          EscalatorMode222[EscalatorMode222["DOWN"] = 3] = "DOWN";
          EscalatorMode222[EscalatorMode222["INSPECTION"] = 4] = "INSPECTION";
          EscalatorMode222[EscalatorMode222["OUT_OF_SERVICE"] = 5] = "OUT_OF_SERVICE";
          return EscalatorMode222;
        })(EscalatorMode22 || {});
        var EscalatorOperationDirection22 = /* @__PURE__ */ ((EscalatorOperationDirection222) => {
          EscalatorOperationDirection222[EscalatorOperationDirection222["UNKNOWN"] = 0] = "UNKNOWN";
          EscalatorOperationDirection222[EscalatorOperationDirection222["STOPPED"] = 1] = "STOPPED";
          EscalatorOperationDirection222[EscalatorOperationDirection222["UP_RATED_SPEED"] = 2] = "UP_RATED_SPEED";
          EscalatorOperationDirection222[EscalatorOperationDirection222["UP_REDUCED_SPEED"] = 3] = "UP_REDUCED_SPEED";
          EscalatorOperationDirection222[EscalatorOperationDirection222["DOWN_RATED_SPEED"] = 4] = "DOWN_RATED_SPEED";
          EscalatorOperationDirection222[EscalatorOperationDirection222["DOWN_REDUCED_SPEED"] = 5] = "DOWN_REDUCED_SPEED";
          return EscalatorOperationDirection222;
        })(EscalatorOperationDirection22 || {});
        var EventState22 = /* @__PURE__ */ ((EventState222) => {
          EventState222[EventState222["NORMAL"] = 0] = "NORMAL";
          EventState222[EventState222["FAULT"] = 1] = "FAULT";
          EventState222[EventState222["OFFNORMAL"] = 2] = "OFFNORMAL";
          EventState222[EventState222["HIGH_LIMIT"] = 3] = "HIGH_LIMIT";
          EventState222[EventState222["LOW_LIMIT"] = 4] = "LOW_LIMIT";
          EventState222[EventState222["LIFE_SAFETY_ALARM"] = 5] = "LIFE_SAFETY_ALARM";
          return EventState222;
        })(EventState22 || {});
        var EventType22 = /* @__PURE__ */ ((EventType222) => {
          EventType222[EventType222["CHANGE_OF_BITSTRING"] = 0] = "CHANGE_OF_BITSTRING";
          EventType222[EventType222["CHANGE_OF_STATE"] = 1] = "CHANGE_OF_STATE";
          EventType222[EventType222["CHANGE_OF_VALUE"] = 2] = "CHANGE_OF_VALUE";
          EventType222[EventType222["COMMAND_FAILURE"] = 3] = "COMMAND_FAILURE";
          EventType222[EventType222["FLOATING_LIMIT"] = 4] = "FLOATING_LIMIT";
          EventType222[EventType222["OUT_OF_RANGE"] = 5] = "OUT_OF_RANGE";
          EventType222[EventType222["COMPLEX_EVENT_TYPE"] = 6] = "COMPLEX_EVENT_TYPE";
          EventType222[EventType222["CHANGE_OF_LIFE_SAFETY"] = 8] = "CHANGE_OF_LIFE_SAFETY";
          EventType222[EventType222["EXTENDED"] = 9] = "EXTENDED";
          EventType222[EventType222["BUFFER_READY"] = 10] = "BUFFER_READY";
          EventType222[EventType222["UNSIGNED_RANGE"] = 11] = "UNSIGNED_RANGE";
          EventType222[EventType222["ACCESS_EVENT"] = 13] = "ACCESS_EVENT";
          EventType222[EventType222["DOUBLE_OUT_OF_RANGE"] = 14] = "DOUBLE_OUT_OF_RANGE";
          EventType222[EventType222["SIGNED_OUT_OF_RANGE"] = 15] = "SIGNED_OUT_OF_RANGE";
          EventType222[EventType222["UNSIGNED_OUT_OF_RANGE"] = 16] = "UNSIGNED_OUT_OF_RANGE";
          EventType222[EventType222["CHANGE_OF_CHARACTERSTRING"] = 17] = "CHANGE_OF_CHARACTERSTRING";
          EventType222[EventType222["CHANGE_OF_STATUS_FLAGS"] = 18] = "CHANGE_OF_STATUS_FLAGS";
          EventType222[EventType222["CHANGE_OF_RELIABILITY"] = 19] = "CHANGE_OF_RELIABILITY";
          EventType222[EventType222["NONE"] = 20] = "NONE";
          EventType222[EventType222["CHANGE_OF_DISCRETE_VALUE"] = 21] = "CHANGE_OF_DISCRETE_VALUE";
          EventType222[EventType222["CHANGE_OF_TIMER"] = 22] = "CHANGE_OF_TIMER";
          return EventType222;
        })(EventType22 || {});
        var FaultType22 = /* @__PURE__ */ ((FaultType222) => {
          FaultType222[FaultType222["NONE"] = 0] = "NONE";
          FaultType222[FaultType222["FAULT_CHARACTERSTRING"] = 1] = "FAULT_CHARACTERSTRING";
          FaultType222[FaultType222["FAULT_EXTENDED"] = 2] = "FAULT_EXTENDED";
          FaultType222[FaultType222["FAULT_LIFE_SAFETY"] = 3] = "FAULT_LIFE_SAFETY";
          FaultType222[FaultType222["FAULT_STATE"] = 4] = "FAULT_STATE";
          FaultType222[FaultType222["FAULT_STATUS_FLAGS"] = 5] = "FAULT_STATUS_FLAGS";
          FaultType222[FaultType222["FAULT_OUT_OF_RANGE"] = 6] = "FAULT_OUT_OF_RANGE";
          FaultType222[FaultType222["FAULT_LISTED"] = 7] = "FAULT_LISTED";
          return FaultType222;
        })(FaultType22 || {});
        var FileAccessMethod22 = /* @__PURE__ */ ((FileAccessMethod222) => {
          FileAccessMethod222[FileAccessMethod222["RECORD_ACCESS"] = 0] = "RECORD_ACCESS";
          FileAccessMethod222[FileAccessMethod222["STREAM_ACCESS"] = 1] = "STREAM_ACCESS";
          return FileAccessMethod222;
        })(FileAccessMethod22 || {});
        var IPMode22 = /* @__PURE__ */ ((IPMode222) => {
          IPMode222[IPMode222["NORMAL"] = 0] = "NORMAL";
          IPMode222[IPMode222["FOREIGN"] = 1] = "FOREIGN";
          IPMode222[IPMode222["BBMD"] = 2] = "BBMD";
          return IPMode222;
        })(IPMode22 || {});
        var LifeSafetyMode22 = /* @__PURE__ */ ((LifeSafetyMode222) => {
          LifeSafetyMode222[LifeSafetyMode222["OFF"] = 0] = "OFF";
          LifeSafetyMode222[LifeSafetyMode222["ON"] = 1] = "ON";
          LifeSafetyMode222[LifeSafetyMode222["TEST"] = 2] = "TEST";
          LifeSafetyMode222[LifeSafetyMode222["MANNED"] = 3] = "MANNED";
          LifeSafetyMode222[LifeSafetyMode222["UNMANNED"] = 4] = "UNMANNED";
          LifeSafetyMode222[LifeSafetyMode222["ARMED"] = 5] = "ARMED";
          LifeSafetyMode222[LifeSafetyMode222["DISARMED"] = 6] = "DISARMED";
          LifeSafetyMode222[LifeSafetyMode222["PREARMED"] = 7] = "PREARMED";
          LifeSafetyMode222[LifeSafetyMode222["SLOW"] = 8] = "SLOW";
          LifeSafetyMode222[LifeSafetyMode222["FAST"] = 9] = "FAST";
          LifeSafetyMode222[LifeSafetyMode222["DISCONNECTED"] = 10] = "DISCONNECTED";
          LifeSafetyMode222[LifeSafetyMode222["ENABLED"] = 11] = "ENABLED";
          LifeSafetyMode222[LifeSafetyMode222["DISABLED"] = 12] = "DISABLED";
          LifeSafetyMode222[LifeSafetyMode222["AUTOMATIC_RELEASE_DISABLED"] = 13] = "AUTOMATIC_RELEASE_DISABLED";
          LifeSafetyMode222[LifeSafetyMode222["DEFAULT"] = 14] = "DEFAULT";
          return LifeSafetyMode222;
        })(LifeSafetyMode22 || {});
        var LifeSafetyOperation22 = /* @__PURE__ */ ((LifeSafetyOperation222) => {
          LifeSafetyOperation222[LifeSafetyOperation222["NONE"] = 0] = "NONE";
          LifeSafetyOperation222[LifeSafetyOperation222["SILENCE"] = 1] = "SILENCE";
          LifeSafetyOperation222[LifeSafetyOperation222["SILENCE_AUDIBLE"] = 2] = "SILENCE_AUDIBLE";
          LifeSafetyOperation222[LifeSafetyOperation222["SILENCE_VISUAL"] = 3] = "SILENCE_VISUAL";
          LifeSafetyOperation222[LifeSafetyOperation222["RESET"] = 4] = "RESET";
          LifeSafetyOperation222[LifeSafetyOperation222["RESET_ALARM"] = 5] = "RESET_ALARM";
          LifeSafetyOperation222[LifeSafetyOperation222["RESET_FAULT"] = 6] = "RESET_FAULT";
          LifeSafetyOperation222[LifeSafetyOperation222["UNSILENCE"] = 7] = "UNSILENCE";
          LifeSafetyOperation222[LifeSafetyOperation222["UNSILENCE_AUDIBLE"] = 8] = "UNSILENCE_AUDIBLE";
          LifeSafetyOperation222[LifeSafetyOperation222["UNSILENCE_VISUAL"] = 9] = "UNSILENCE_VISUAL";
          return LifeSafetyOperation222;
        })(LifeSafetyOperation22 || {});
        var LifeSafetyState22 = /* @__PURE__ */ ((LifeSafetyState222) => {
          LifeSafetyState222[LifeSafetyState222["QUIET"] = 0] = "QUIET";
          LifeSafetyState222[LifeSafetyState222["PRE_ALARM"] = 1] = "PRE_ALARM";
          LifeSafetyState222[LifeSafetyState222["ALARM"] = 2] = "ALARM";
          LifeSafetyState222[LifeSafetyState222["FAULT"] = 3] = "FAULT";
          LifeSafetyState222[LifeSafetyState222["FAULT_PRE_ALARM"] = 4] = "FAULT_PRE_ALARM";
          LifeSafetyState222[LifeSafetyState222["FAULT_ALARM"] = 5] = "FAULT_ALARM";
          LifeSafetyState222[LifeSafetyState222["NOT_READY"] = 6] = "NOT_READY";
          LifeSafetyState222[LifeSafetyState222["ACTIVE"] = 7] = "ACTIVE";
          LifeSafetyState222[LifeSafetyState222["TAMPER"] = 8] = "TAMPER";
          LifeSafetyState222[LifeSafetyState222["TEST_ALARM"] = 9] = "TEST_ALARM";
          LifeSafetyState222[LifeSafetyState222["TEST_ACTIVE"] = 10] = "TEST_ACTIVE";
          LifeSafetyState222[LifeSafetyState222["TEST_FAULT"] = 11] = "TEST_FAULT";
          LifeSafetyState222[LifeSafetyState222["TEST_FAULT_ALARM"] = 12] = "TEST_FAULT_ALARM";
          LifeSafetyState222[LifeSafetyState222["HOLDUP"] = 13] = "HOLDUP";
          LifeSafetyState222[LifeSafetyState222["DURESS"] = 14] = "DURESS";
          LifeSafetyState222[LifeSafetyState222["TAMPER_ALARM"] = 15] = "TAMPER_ALARM";
          LifeSafetyState222[LifeSafetyState222["ABNORMAL"] = 16] = "ABNORMAL";
          LifeSafetyState222[LifeSafetyState222["EMERGENCY_POWER"] = 17] = "EMERGENCY_POWER";
          LifeSafetyState222[LifeSafetyState222["DELAYED"] = 18] = "DELAYED";
          LifeSafetyState222[LifeSafetyState222["BLOCKED"] = 19] = "BLOCKED";
          LifeSafetyState222[LifeSafetyState222["LOCAL_ALARM"] = 20] = "LOCAL_ALARM";
          LifeSafetyState222[LifeSafetyState222["GENERAL_ALARM"] = 21] = "GENERAL_ALARM";
          LifeSafetyState222[LifeSafetyState222["SUPERVISORY"] = 22] = "SUPERVISORY";
          LifeSafetyState222[LifeSafetyState222["TEST_SUPERVISORY"] = 23] = "TEST_SUPERVISORY";
          return LifeSafetyState222;
        })(LifeSafetyState22 || {});
        var LiftCarDirection22 = /* @__PURE__ */ ((LiftCarDirection222) => {
          LiftCarDirection222[LiftCarDirection222["UNKNOWN"] = 0] = "UNKNOWN";
          LiftCarDirection222[LiftCarDirection222["NONE"] = 1] = "NONE";
          LiftCarDirection222[LiftCarDirection222["STOPPED"] = 2] = "STOPPED";
          LiftCarDirection222[LiftCarDirection222["UP"] = 3] = "UP";
          LiftCarDirection222[LiftCarDirection222["DOWN"] = 4] = "DOWN";
          LiftCarDirection222[LiftCarDirection222["UP_AND_DOWN"] = 5] = "UP_AND_DOWN";
          return LiftCarDirection222;
        })(LiftCarDirection22 || {});
        var LiftCarDoorCommand22 = /* @__PURE__ */ ((LiftCarDoorCommand222) => {
          LiftCarDoorCommand222[LiftCarDoorCommand222["NONE"] = 0] = "NONE";
          LiftCarDoorCommand222[LiftCarDoorCommand222["OPEN"] = 1] = "OPEN";
          LiftCarDoorCommand222[LiftCarDoorCommand222["CLOSE"] = 2] = "CLOSE";
          return LiftCarDoorCommand222;
        })(LiftCarDoorCommand22 || {});
        var LiftCarDriveStatus22 = /* @__PURE__ */ ((LiftCarDriveStatus222) => {
          LiftCarDriveStatus222[LiftCarDriveStatus222["UNKNOWN"] = 0] = "UNKNOWN";
          LiftCarDriveStatus222[LiftCarDriveStatus222["STATIONARY"] = 1] = "STATIONARY";
          LiftCarDriveStatus222[LiftCarDriveStatus222["BRAKING"] = 2] = "BRAKING";
          LiftCarDriveStatus222[LiftCarDriveStatus222["ACCELERATE"] = 3] = "ACCELERATE";
          LiftCarDriveStatus222[LiftCarDriveStatus222["DECELERATE"] = 4] = "DECELERATE";
          LiftCarDriveStatus222[LiftCarDriveStatus222["RATED_SPEED"] = 5] = "RATED_SPEED";
          LiftCarDriveStatus222[LiftCarDriveStatus222["SINGLE_FLOOR_JUMP"] = 6] = "SINGLE_FLOOR_JUMP";
          LiftCarDriveStatus222[LiftCarDriveStatus222["TWO_FLOOR_JUMP"] = 7] = "TWO_FLOOR_JUMP";
          LiftCarDriveStatus222[LiftCarDriveStatus222["THREE_FLOOR_JUMP"] = 8] = "THREE_FLOOR_JUMP";
          LiftCarDriveStatus222[LiftCarDriveStatus222["MULTI_FLOOR_JUMP"] = 9] = "MULTI_FLOOR_JUMP";
          return LiftCarDriveStatus222;
        })(LiftCarDriveStatus22 || {});
        var LiftCarMode22 = /* @__PURE__ */ ((LiftCarMode222) => {
          LiftCarMode222[LiftCarMode222["UNKNOWN"] = 0] = "UNKNOWN";
          LiftCarMode222[LiftCarMode222["NORMAL"] = 1] = "NORMAL";
          LiftCarMode222[LiftCarMode222["VIP"] = 2] = "VIP";
          LiftCarMode222[LiftCarMode222["HOMING"] = 3] = "HOMING";
          LiftCarMode222[LiftCarMode222["PARKING"] = 4] = "PARKING";
          LiftCarMode222[LiftCarMode222["ATTENDANT_CONTROL"] = 5] = "ATTENDANT_CONTROL";
          LiftCarMode222[LiftCarMode222["FIREFIGHTER_CONTROL"] = 6] = "FIREFIGHTER_CONTROL";
          LiftCarMode222[LiftCarMode222["EMERGENCY_POWER"] = 7] = "EMERGENCY_POWER";
          LiftCarMode222[LiftCarMode222["INSPECTION"] = 8] = "INSPECTION";
          LiftCarMode222[LiftCarMode222["CABINET_RECALL"] = 9] = "CABINET_RECALL";
          LiftCarMode222[LiftCarMode222["EARTHQUAKE_OPERATION"] = 10] = "EARTHQUAKE_OPERATION";
          LiftCarMode222[LiftCarMode222["FIRE_OPERATION"] = 11] = "FIRE_OPERATION";
          LiftCarMode222[LiftCarMode222["OUT_OF_SERVICE"] = 12] = "OUT_OF_SERVICE";
          LiftCarMode222[LiftCarMode222["OCCUPANT_EVACUATION"] = 13] = "OCCUPANT_EVACUATION";
          return LiftCarMode222;
        })(LiftCarMode22 || {});
        var LiftFault22 = /* @__PURE__ */ ((LiftFault222) => {
          LiftFault222[LiftFault222["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
          LiftFault222[LiftFault222["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
          LiftFault222[LiftFault222["GOVERNOR_AND_SAFETY_GEAR_FAULT"] = 2] = "GOVERNOR_AND_SAFETY_GEAR_FAULT";
          LiftFault222[LiftFault222["LIFT_SHAFT_DEVICE_FAULT"] = 3] = "LIFT_SHAFT_DEVICE_FAULT";
          LiftFault222[LiftFault222["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
          LiftFault222[LiftFault222["SAFETY_INTERLOCK_FAULT"] = 5] = "SAFETY_INTERLOCK_FAULT";
          LiftFault222[LiftFault222["DOOR_CLOSING_FAULT"] = 6] = "DOOR_CLOSING_FAULT";
          LiftFault222[LiftFault222["DOOR_OPENING_FAULT"] = 7] = "DOOR_OPENING_FAULT";
          LiftFault222[LiftFault222["CAR_STOPPED_OUTSIDE_LANDING_ZONE"] = 8] = "CAR_STOPPED_OUTSIDE_LANDING_ZONE";
          LiftFault222[LiftFault222["CALL_BUTTON_STUCK"] = 9] = "CALL_BUTTON_STUCK";
          LiftFault222[LiftFault222["START_FAILURE"] = 10] = "START_FAILURE";
          LiftFault222[LiftFault222["CONTROLLER_SUPPLY_FAULT"] = 11] = "CONTROLLER_SUPPLY_FAULT";
          LiftFault222[LiftFault222["SELF_TEST_FAILURE"] = 12] = "SELF_TEST_FAILURE";
          LiftFault222[LiftFault222["RUNTIME_LIMIT_EXCEEDED"] = 13] = "RUNTIME_LIMIT_EXCEEDED";
          LiftFault222[LiftFault222["POSITION_LOST"] = 14] = "POSITION_LOST";
          LiftFault222[LiftFault222["DRIVE_TEMPERATURE_EXCEEDED"] = 15] = "DRIVE_TEMPERATURE_EXCEEDED";
          LiftFault222[LiftFault222["LOAD_MEASUREMENT_FAULT"] = 16] = "LOAD_MEASUREMENT_FAULT";
          return LiftFault222;
        })(LiftFault22 || {});
        var LiftGroupMode22 = /* @__PURE__ */ ((LiftGroupMode222) => {
          LiftGroupMode222[LiftGroupMode222["UNKNOWN"] = 0] = "UNKNOWN";
          LiftGroupMode222[LiftGroupMode222["NORMAL"] = 1] = "NORMAL";
          LiftGroupMode222[LiftGroupMode222["DOWN_PEAK"] = 2] = "DOWN_PEAK";
          LiftGroupMode222[LiftGroupMode222["TWO_WAY"] = 3] = "TWO_WAY";
          LiftGroupMode222[LiftGroupMode222["FOUR_WAY"] = 4] = "FOUR_WAY";
          LiftGroupMode222[LiftGroupMode222["EMERGENCY_POWER"] = 5] = "EMERGENCY_POWER";
          LiftGroupMode222[LiftGroupMode222["UP_PEAK"] = 6] = "UP_PEAK";
          return LiftGroupMode222;
        })(LiftGroupMode22 || {});
        var LightingInProgress22 = /* @__PURE__ */ ((LightingInProgress222) => {
          LightingInProgress222[LightingInProgress222["IDLE"] = 0] = "IDLE";
          LightingInProgress222[LightingInProgress222["FADE_ACTIVE"] = 1] = "FADE_ACTIVE";
          LightingInProgress222[LightingInProgress222["RAMP_ACTIVE"] = 2] = "RAMP_ACTIVE";
          LightingInProgress222[LightingInProgress222["NOT_CONTROLLED"] = 3] = "NOT_CONTROLLED";
          LightingInProgress222[LightingInProgress222["OTHER"] = 4] = "OTHER";
          return LightingInProgress222;
        })(LightingInProgress22 || {});
        var LightingOperation22 = /* @__PURE__ */ ((LightingOperation222) => {
          LightingOperation222[LightingOperation222["NONE"] = 0] = "NONE";
          LightingOperation222[LightingOperation222["FADE_TO"] = 1] = "FADE_TO";
          LightingOperation222[LightingOperation222["RAMP_TO"] = 2] = "RAMP_TO";
          LightingOperation222[LightingOperation222["STEP_UP"] = 3] = "STEP_UP";
          LightingOperation222[LightingOperation222["STEP_DOWN"] = 4] = "STEP_DOWN";
          LightingOperation222[LightingOperation222["STEP_ON"] = 5] = "STEP_ON";
          LightingOperation222[LightingOperation222["STEP_OFF"] = 6] = "STEP_OFF";
          LightingOperation222[LightingOperation222["WARN"] = 7] = "WARN";
          LightingOperation222[LightingOperation222["WARN_OFF"] = 8] = "WARN_OFF";
          LightingOperation222[LightingOperation222["WARN_RELINQUISH"] = 9] = "WARN_RELINQUISH";
          LightingOperation222[LightingOperation222["STOP"] = 10] = "STOP";
          return LightingOperation222;
        })(LightingOperation22 || {});
        var LightingTransition22 = /* @__PURE__ */ ((LightingTransition222) => {
          LightingTransition222[LightingTransition222["NONE"] = 0] = "NONE";
          LightingTransition222[LightingTransition222["FADE"] = 1] = "FADE";
          LightingTransition222[LightingTransition222["RAMP"] = 2] = "RAMP";
          return LightingTransition222;
        })(LightingTransition22 || {});
        var LockStatus22 = /* @__PURE__ */ ((LockStatus222) => {
          LockStatus222[LockStatus222["LOCKED"] = 0] = "LOCKED";
          LockStatus222[LockStatus222["UNLOCKED"] = 1] = "UNLOCKED";
          LockStatus222[LockStatus222["LOCK_FAULT"] = 2] = "LOCK_FAULT";
          LockStatus222[LockStatus222["UNUSED"] = 3] = "UNUSED";
          LockStatus222[LockStatus222["UNKNOWN"] = 4] = "UNKNOWN";
          return LockStatus222;
        })(LockStatus22 || {});
        var LoggingType22 = /* @__PURE__ */ ((LoggingType222) => {
          LoggingType222[LoggingType222["POLLED"] = 0] = "POLLED";
          LoggingType222[LoggingType222["COV"] = 1] = "COV";
          LoggingType222[LoggingType222["TRIGGERED"] = 2] = "TRIGGERED";
          return LoggingType222;
        })(LoggingType22 || {});
        var Maintenance22 = /* @__PURE__ */ ((Maintenance222) => {
          Maintenance222[Maintenance222["NONE"] = 0] = "NONE";
          Maintenance222[Maintenance222["PERIODIC_TEST"] = 1] = "PERIODIC_TEST";
          Maintenance222[Maintenance222["NEED_SERVICE_OPERATIONAL"] = 2] = "NEED_SERVICE_OPERATIONAL";
          Maintenance222[Maintenance222["NEED_SERVICE_INOPERATIVE"] = 3] = "NEED_SERVICE_INOPERATIVE";
          return Maintenance222;
        })(Maintenance22 || {});
        var NetworkNumberQuality22 = /* @__PURE__ */ ((NetworkNumberQuality222) => {
          NetworkNumberQuality222[NetworkNumberQuality222["UNKNOWN"] = 0] = "UNKNOWN";
          NetworkNumberQuality222[NetworkNumberQuality222["LEARNED"] = 1] = "LEARNED";
          NetworkNumberQuality222[NetworkNumberQuality222["LEARNED_CONFIGURED"] = 2] = "LEARNED_CONFIGURED";
          NetworkNumberQuality222[NetworkNumberQuality222["CONFIGURED"] = 3] = "CONFIGURED";
          return NetworkNumberQuality222;
        })(NetworkNumberQuality22 || {});
        var NetworkPortCommand22 = /* @__PURE__ */ ((NetworkPortCommand222) => {
          NetworkPortCommand222[NetworkPortCommand222["IDLE"] = 0] = "IDLE";
          NetworkPortCommand222[NetworkPortCommand222["DISCARD_CHANGES"] = 1] = "DISCARD_CHANGES";
          NetworkPortCommand222[NetworkPortCommand222["RENEW_FD_REGISTRATION"] = 2] = "RENEW_FD_REGISTRATION";
          NetworkPortCommand222[NetworkPortCommand222["RESTART_SLAVE_DISCOVERY"] = 3] = "RESTART_SLAVE_DISCOVERY";
          NetworkPortCommand222[NetworkPortCommand222["RENEW_DHCP"] = 4] = "RENEW_DHCP";
          NetworkPortCommand222[NetworkPortCommand222["RESTART_AUTONEGOTIATION"] = 5] = "RESTART_AUTONEGOTIATION";
          NetworkPortCommand222[NetworkPortCommand222["DISCONNECT"] = 6] = "DISCONNECT";
          NetworkPortCommand222[NetworkPortCommand222["RESTART_PORT"] = 7] = "RESTART_PORT";
          return NetworkPortCommand222;
        })(NetworkPortCommand22 || {});
        var NetworkType22 = /* @__PURE__ */ ((NetworkType222) => {
          NetworkType222[NetworkType222["ETHERNET"] = 0] = "ETHERNET";
          NetworkType222[NetworkType222["ARCNET"] = 1] = "ARCNET";
          NetworkType222[NetworkType222["MSTP"] = 2] = "MSTP";
          NetworkType222[NetworkType222["PTP"] = 3] = "PTP";
          NetworkType222[NetworkType222["LONTALK"] = 4] = "LONTALK";
          NetworkType222[NetworkType222["IPV4"] = 5] = "IPV4";
          NetworkType222[NetworkType222["ZIGBEE"] = 6] = "ZIGBEE";
          NetworkType222[NetworkType222["VIRTUAL"] = 7] = "VIRTUAL";
          NetworkType222[NetworkType222["IPV6"] = 9] = "IPV6";
          NetworkType222[NetworkType222["SERIAL"] = 10] = "SERIAL";
          return NetworkType222;
        })(NetworkType22 || {});
        var NodeType22 = /* @__PURE__ */ ((NodeType222) => {
          NodeType222[NodeType222["UNKNOWN"] = 0] = "UNKNOWN";
          NodeType222[NodeType222["SYSTEM"] = 1] = "SYSTEM";
          NodeType222[NodeType222["NETWORK"] = 2] = "NETWORK";
          NodeType222[NodeType222["DEVICE"] = 3] = "DEVICE";
          NodeType222[NodeType222["ORGANIZATIONAL"] = 4] = "ORGANIZATIONAL";
          NodeType222[NodeType222["AREA"] = 5] = "AREA";
          NodeType222[NodeType222["EQUIPMENT"] = 6] = "EQUIPMENT";
          NodeType222[NodeType222["POINT"] = 7] = "POINT";
          NodeType222[NodeType222["COLLECTION"] = 8] = "COLLECTION";
          NodeType222[NodeType222["PROPERTY"] = 9] = "PROPERTY";
          NodeType222[NodeType222["FUNCTIONAL"] = 10] = "FUNCTIONAL";
          NodeType222[NodeType222["OTHER"] = 11] = "OTHER";
          NodeType222[NodeType222["SUBSYSTEM"] = 12] = "SUBSYSTEM";
          NodeType222[NodeType222["BUILDING"] = 13] = "BUILDING";
          NodeType222[NodeType222["FLOOR"] = 14] = "FLOOR";
          NodeType222[NodeType222["SECTION"] = 15] = "SECTION";
          NodeType222[NodeType222["MODULE"] = 16] = "MODULE";
          NodeType222[NodeType222["TREE"] = 17] = "TREE";
          NodeType222[NodeType222["MEMBER"] = 18] = "MEMBER";
          NodeType222[NodeType222["PROTOCOL"] = 19] = "PROTOCOL";
          NodeType222[NodeType222["ROOM"] = 20] = "ROOM";
          NodeType222[NodeType222["ZONE"] = 21] = "ZONE";
          return NodeType222;
        })(NodeType22 || {});
        var NotifyType22 = /* @__PURE__ */ ((NotifyType222) => {
          NotifyType222[NotifyType222["ALARM"] = 0] = "ALARM";
          NotifyType222[NotifyType222["EVENT"] = 1] = "EVENT";
          NotifyType222[NotifyType222["ACK_NOTIFICATION"] = 2] = "ACK_NOTIFICATION";
          return NotifyType222;
        })(NotifyType22 || {});
        var ObjectType22 = /* @__PURE__ */ ((ObjectType222) => {
          ObjectType222[ObjectType222["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
          ObjectType222[ObjectType222["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
          ObjectType222[ObjectType222["ACCESS_POINT"] = 33] = "ACCESS_POINT";
          ObjectType222[ObjectType222["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
          ObjectType222[ObjectType222["ACCESS_USER"] = 35] = "ACCESS_USER";
          ObjectType222[ObjectType222["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
          ObjectType222[ObjectType222["ACCUMULATOR"] = 23] = "ACCUMULATOR";
          ObjectType222[ObjectType222["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
          ObjectType222[ObjectType222["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
          ObjectType222[ObjectType222["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
          ObjectType222[ObjectType222["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
          ObjectType222[ObjectType222["AVERAGING"] = 18] = "AVERAGING";
          ObjectType222[ObjectType222["BINARY_INPUT"] = 3] = "BINARY_INPUT";
          ObjectType222[ObjectType222["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
          ObjectType222[ObjectType222["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
          ObjectType222[ObjectType222["BINARY_VALUE"] = 5] = "BINARY_VALUE";
          ObjectType222[ObjectType222["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
          ObjectType222[ObjectType222["CALENDAR"] = 6] = "CALENDAR";
          ObjectType222[ObjectType222["CHANNEL"] = 53] = "CHANNEL";
          ObjectType222[ObjectType222["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
          ObjectType222[ObjectType222["COMMAND"] = 7] = "COMMAND";
          ObjectType222[ObjectType222["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
          ObjectType222[ObjectType222["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
          ObjectType222[ObjectType222["DATE_VALUE"] = 42] = "DATE_VALUE";
          ObjectType222[ObjectType222["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
          ObjectType222[ObjectType222["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
          ObjectType222[ObjectType222["DEVICE"] = 8] = "DEVICE";
          ObjectType222[ObjectType222["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
          ObjectType222[ObjectType222["ESCALATOR"] = 58] = "ESCALATOR";
          ObjectType222[ObjectType222["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
          ObjectType222[ObjectType222["EVENT_LOG"] = 25] = "EVENT_LOG";
          ObjectType222[ObjectType222["FILE"] = 10] = "FILE";
          ObjectType222[ObjectType222["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
          ObjectType222[ObjectType222["GROUP"] = 11] = "GROUP";
          ObjectType222[ObjectType222["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
          ObjectType222[ObjectType222["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
          ObjectType222[ObjectType222["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
          ObjectType222[ObjectType222["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
          ObjectType222[ObjectType222["LIFT"] = 59] = "LIFT";
          ObjectType222[ObjectType222["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
          ObjectType222[ObjectType222["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
          ObjectType222[ObjectType222["LOOP"] = 12] = "LOOP";
          ObjectType222[ObjectType222["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
          ObjectType222[ObjectType222["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
          ObjectType222[ObjectType222["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
          ObjectType222[ObjectType222["NETWORK_PORT"] = 56] = "NETWORK_PORT";
          ObjectType222[ObjectType222["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
          ObjectType222[ObjectType222["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
          ObjectType222[ObjectType222["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
          ObjectType222[ObjectType222["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
          ObjectType222[ObjectType222["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
          ObjectType222[ObjectType222["PROGRAM"] = 16] = "PROGRAM";
          ObjectType222[ObjectType222["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
          ObjectType222[ObjectType222["SCHEDULE"] = 17] = "SCHEDULE";
          ObjectType222[ObjectType222["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
          ObjectType222[ObjectType222["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
          ObjectType222[ObjectType222["TIME_VALUE"] = 50] = "TIME_VALUE";
          ObjectType222[ObjectType222["TIMER"] = 31] = "TIMER";
          ObjectType222[ObjectType222["TREND_LOG"] = 20] = "TREND_LOG";
          ObjectType222[ObjectType222["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
          return ObjectType222;
        })(ObjectType22 || {});
        var Polarity22 = /* @__PURE__ */ ((Polarity222) => {
          Polarity222[Polarity222["NORMAL"] = 0] = "NORMAL";
          Polarity222[Polarity222["REVERSE"] = 1] = "REVERSE";
          return Polarity222;
        })(Polarity22 || {});
        var ProgramError22 = /* @__PURE__ */ ((ProgramError222) => {
          ProgramError222[ProgramError222["NORMAL"] = 0] = "NORMAL";
          ProgramError222[ProgramError222["LOAD_FAILED"] = 1] = "LOAD_FAILED";
          ProgramError222[ProgramError222["INTERNAL"] = 2] = "INTERNAL";
          ProgramError222[ProgramError222["PROGRAM"] = 3] = "PROGRAM";
          ProgramError222[ProgramError222["OTHER"] = 4] = "OTHER";
          return ProgramError222;
        })(ProgramError22 || {});
        var ProgramRequest22 = /* @__PURE__ */ ((ProgramRequest222) => {
          ProgramRequest222[ProgramRequest222["READY"] = 0] = "READY";
          ProgramRequest222[ProgramRequest222["LOAD"] = 1] = "LOAD";
          ProgramRequest222[ProgramRequest222["RUN"] = 2] = "RUN";
          ProgramRequest222[ProgramRequest222["HALT"] = 3] = "HALT";
          ProgramRequest222[ProgramRequest222["RESTART"] = 4] = "RESTART";
          ProgramRequest222[ProgramRequest222["UNLOAD"] = 5] = "UNLOAD";
          return ProgramRequest222;
        })(ProgramRequest22 || {});
        var ProgramState22 = /* @__PURE__ */ ((ProgramState222) => {
          ProgramState222[ProgramState222["IDLE"] = 0] = "IDLE";
          ProgramState222[ProgramState222["LOADING"] = 1] = "LOADING";
          ProgramState222[ProgramState222["RUNNING"] = 2] = "RUNNING";
          ProgramState222[ProgramState222["WAITING"] = 3] = "WAITING";
          ProgramState222[ProgramState222["HALTED"] = 4] = "HALTED";
          ProgramState222[ProgramState222["UNLOADING"] = 5] = "UNLOADING";
          return ProgramState222;
        })(ProgramState22 || {});
        var PropertyIdentifier22 = /* @__PURE__ */ ((PropertyIdentifier222) => {
          PropertyIdentifier222[PropertyIdentifier222["ABSENTEE_LIMIT"] = 244] = "ABSENTEE_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["ACCEPTED_MODES"] = 175] = "ACCEPTED_MODES";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_ALARM_EVENTS"] = 245] = "ACCESS_ALARM_EVENTS";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_DOORS"] = 246] = "ACCESS_DOORS";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_EVENT"] = 247] = "ACCESS_EVENT";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_EVENT_AUTHENTICATION_FACTOR"] = 248] = "ACCESS_EVENT_AUTHENTICATION_FACTOR";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_EVENT_CREDENTIAL"] = 249] = "ACCESS_EVENT_CREDENTIAL";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_EVENT_TAG"] = 322] = "ACCESS_EVENT_TAG";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_EVENT_TIME"] = 250] = "ACCESS_EVENT_TIME";
          PropertyIdentifier222[PropertyIdentifier222["ACCESS_TRANSACTION_EVENTS"] = 251] = "ACCESS_TRANSACTION_EVENTS";
          PropertyIdentifier222[PropertyIdentifier222["ACCOMPANIMENT"] = 252] = "ACCOMPANIMENT";
          PropertyIdentifier222[PropertyIdentifier222["ACCOMPANIMENT_TIME"] = 253] = "ACCOMPANIMENT_TIME";
          PropertyIdentifier222[PropertyIdentifier222["ACK_REQUIRED"] = 1] = "ACK_REQUIRED";
          PropertyIdentifier222[PropertyIdentifier222["ACKED_TRANSITIONS"] = 0] = "ACKED_TRANSITIONS";
          PropertyIdentifier222[PropertyIdentifier222["ACTION"] = 2] = "ACTION";
          PropertyIdentifier222[PropertyIdentifier222["ACTION_TEXT"] = 3] = "ACTION_TEXT";
          PropertyIdentifier222[PropertyIdentifier222["ACTIVATION_TIME"] = 254] = "ACTIVATION_TIME";
          PropertyIdentifier222[PropertyIdentifier222["ACTIVE_AUTHENTICATION_POLICY"] = 255] = "ACTIVE_AUTHENTICATION_POLICY";
          PropertyIdentifier222[PropertyIdentifier222["ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS"] = 481] = "ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS";
          PropertyIdentifier222[PropertyIdentifier222["ACTIVE_COV_SUBSCRIPTIONS"] = 152] = "ACTIVE_COV_SUBSCRIPTIONS";
          PropertyIdentifier222[PropertyIdentifier222["ACTIVE_TEXT"] = 4] = "ACTIVE_TEXT";
          PropertyIdentifier222[PropertyIdentifier222["ACTIVE_VT_SESSIONS"] = 5] = "ACTIVE_VT_SESSIONS";
          PropertyIdentifier222[PropertyIdentifier222["ACTUAL_SHED_LEVEL"] = 212] = "ACTUAL_SHED_LEVEL";
          PropertyIdentifier222[PropertyIdentifier222["ADJUST_VALUE"] = 176] = "ADJUST_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["ALARM_VALUE"] = 6] = "ALARM_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["ALARM_VALUES"] = 7] = "ALARM_VALUES";
          PropertyIdentifier222[PropertyIdentifier222["ALIGN_INTERVALS"] = 193] = "ALIGN_INTERVALS";
          PropertyIdentifier222[PropertyIdentifier222["ALL"] = 8] = "ALL";
          PropertyIdentifier222[PropertyIdentifier222["ALL_WRITES_SUCCESSFUL"] = 9] = "ALL_WRITES_SUCCESSFUL";
          PropertyIdentifier222[PropertyIdentifier222["ALLOW_GROUP_DELAY_INHIBIT"] = 365] = "ALLOW_GROUP_DELAY_INHIBIT";
          PropertyIdentifier222[PropertyIdentifier222["APDU_LENGTH"] = 399] = "APDU_LENGTH";
          PropertyIdentifier222[PropertyIdentifier222["APDU_SEGMENT_TIMEOUT"] = 10] = "APDU_SEGMENT_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["APDU_TIMEOUT"] = 11] = "APDU_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["APPLICATION_SOFTWARE_VERSION"] = 12] = "APPLICATION_SOFTWARE_VERSION";
          PropertyIdentifier222[PropertyIdentifier222["ARCHIVE"] = 13] = "ARCHIVE";
          PropertyIdentifier222[PropertyIdentifier222["ASSIGNED_ACCESS_RIGHTS"] = 256] = "ASSIGNED_ACCESS_RIGHTS";
          PropertyIdentifier222[PropertyIdentifier222["ASSIGNED_LANDING_CALLS"] = 447] = "ASSIGNED_LANDING_CALLS";
          PropertyIdentifier222[PropertyIdentifier222["ATTEMPTED_SAMPLES"] = 124] = "ATTEMPTED_SAMPLES";
          PropertyIdentifier222[PropertyIdentifier222["AUTHENTICATION_FACTORS"] = 257] = "AUTHENTICATION_FACTORS";
          PropertyIdentifier222[PropertyIdentifier222["AUTHENTICATION_POLICY_LIST"] = 258] = "AUTHENTICATION_POLICY_LIST";
          PropertyIdentifier222[PropertyIdentifier222["AUTHENTICATION_POLICY_NAMES"] = 259] = "AUTHENTICATION_POLICY_NAMES";
          PropertyIdentifier222[PropertyIdentifier222["AUTHENTICATION_STATUS"] = 260] = "AUTHENTICATION_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["AUTHORIZATION_EXEMPTIONS"] = 364] = "AUTHORIZATION_EXEMPTIONS";
          PropertyIdentifier222[PropertyIdentifier222["AUTHORIZATION_MODE"] = 261] = "AUTHORIZATION_MODE";
          PropertyIdentifier222[PropertyIdentifier222["AUTO_SLAVE_DISCOVERY"] = 169] = "AUTO_SLAVE_DISCOVERY";
          PropertyIdentifier222[PropertyIdentifier222["AVERAGE_VALUE"] = 125] = "AVERAGE_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["BACKUP_AND_RESTORE_STATE"] = 338] = "BACKUP_AND_RESTORE_STATE";
          PropertyIdentifier222[PropertyIdentifier222["BACKUP_FAILURE_TIMEOUT"] = 153] = "BACKUP_FAILURE_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["BACKUP_PREPARATION_TIME"] = 339] = "BACKUP_PREPARATION_TIME";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IP_GLOBAL_ADDRESS"] = 407] = "BACNET_IP_GLOBAL_ADDRESS";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IP_MODE"] = 408] = "BACNET_IP_MODE";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IP_MULTICAST_ADDRESS"] = 409] = "BACNET_IP_MULTICAST_ADDRESS";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IP_NAT_TRAVERSAL"] = 410] = "BACNET_IP_NAT_TRAVERSAL";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IP_UDP_PORT"] = 412] = "BACNET_IP_UDP_PORT";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IPV6_MODE"] = 435] = "BACNET_IPV6_MODE";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IPV6_UDP_PORT"] = 438] = "BACNET_IPV6_UDP_PORT";
          PropertyIdentifier222[PropertyIdentifier222["BACNET_IPV6_MULTICAST_ADDRESS"] = 440] = "BACNET_IPV6_MULTICAST_ADDRESS";
          PropertyIdentifier222[PropertyIdentifier222["BBMD_ACCEPT_FD_REGISTRATIONS"] = 413] = "BBMD_ACCEPT_FD_REGISTRATIONS";
          PropertyIdentifier222[PropertyIdentifier222["BBMD_BROADCAST_DISTRIBUTION_TABLE"] = 414] = "BBMD_BROADCAST_DISTRIBUTION_TABLE";
          PropertyIdentifier222[PropertyIdentifier222["BBMD_FOREIGN_DEVICE_TABLE"] = 415] = "BBMD_FOREIGN_DEVICE_TABLE";
          PropertyIdentifier222[PropertyIdentifier222["BELONGS_TO"] = 262] = "BELONGS_TO";
          PropertyIdentifier222[PropertyIdentifier222["BIAS"] = 14] = "BIAS";
          PropertyIdentifier222[PropertyIdentifier222["BIT_MASK"] = 342] = "BIT_MASK";
          PropertyIdentifier222[PropertyIdentifier222["BIT_TEXT"] = 343] = "BIT_TEXT";
          PropertyIdentifier222[PropertyIdentifier222["BLINK_WARN_ENABLE"] = 373] = "BLINK_WARN_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["BUFFER_SIZE"] = 126] = "BUFFER_SIZE";
          PropertyIdentifier222[PropertyIdentifier222["CAR_ASSIGNED_DIRECTION"] = 448] = "CAR_ASSIGNED_DIRECTION";
          PropertyIdentifier222[PropertyIdentifier222["CAR_DOOR_COMMAND"] = 449] = "CAR_DOOR_COMMAND";
          PropertyIdentifier222[PropertyIdentifier222["CAR_DOOR_STATUS"] = 450] = "CAR_DOOR_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["CAR_DOOR_TEXT"] = 451] = "CAR_DOOR_TEXT";
          PropertyIdentifier222[PropertyIdentifier222["CAR_DOOR_ZONE"] = 452] = "CAR_DOOR_ZONE";
          PropertyIdentifier222[PropertyIdentifier222["CAR_DRIVE_STATUS"] = 453] = "CAR_DRIVE_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["CAR_LOAD"] = 454] = "CAR_LOAD";
          PropertyIdentifier222[PropertyIdentifier222["CAR_LOAD_UNITS"] = 455] = "CAR_LOAD_UNITS";
          PropertyIdentifier222[PropertyIdentifier222["CAR_MODE"] = 456] = "CAR_MODE";
          PropertyIdentifier222[PropertyIdentifier222["CAR_MOVING_DIRECTION"] = 457] = "CAR_MOVING_DIRECTION";
          PropertyIdentifier222[PropertyIdentifier222["CAR_POSITION"] = 458] = "CAR_POSITION";
          PropertyIdentifier222[PropertyIdentifier222["CHANGE_OF_STATE_COUNT"] = 15] = "CHANGE_OF_STATE_COUNT";
          PropertyIdentifier222[PropertyIdentifier222["CHANGE_OF_STATE_TIME"] = 16] = "CHANGE_OF_STATE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["CHANGES_PENDING"] = 416] = "CHANGES_PENDING";
          PropertyIdentifier222[PropertyIdentifier222["CHANNEL_NUMBER"] = 366] = "CHANNEL_NUMBER";
          PropertyIdentifier222[PropertyIdentifier222["CLIENT_COV_INCREMENT"] = 127] = "CLIENT_COV_INCREMENT";
          PropertyIdentifier222[PropertyIdentifier222["COMMAND"] = 417] = "COMMAND";
          PropertyIdentifier222[PropertyIdentifier222["COMMAND_TIME_ARRAY"] = 430] = "COMMAND_TIME_ARRAY";
          PropertyIdentifier222[PropertyIdentifier222["CONFIGURATION_FILES"] = 154] = "CONFIGURATION_FILES";
          PropertyIdentifier222[PropertyIdentifier222["CONTROL_GROUPS"] = 367] = "CONTROL_GROUPS";
          PropertyIdentifier222[PropertyIdentifier222["CONTROLLED_VARIABLE_REFERENCE"] = 19] = "CONTROLLED_VARIABLE_REFERENCE";
          PropertyIdentifier222[PropertyIdentifier222["CONTROLLED_VARIABLE_UNITS"] = 20] = "CONTROLLED_VARIABLE_UNITS";
          PropertyIdentifier222[PropertyIdentifier222["CONTROLLED_VARIABLE_VALUE"] = 21] = "CONTROLLED_VARIABLE_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["COUNT"] = 177] = "COUNT";
          PropertyIdentifier222[PropertyIdentifier222["COUNT_BEFORE_CHANGE"] = 178] = "COUNT_BEFORE_CHANGE";
          PropertyIdentifier222[PropertyIdentifier222["COUNT_CHANGE_TIME"] = 179] = "COUNT_CHANGE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["COV_INCREMENT"] = 22] = "COV_INCREMENT";
          PropertyIdentifier222[PropertyIdentifier222["COV_PERIOD"] = 180] = "COV_PERIOD";
          PropertyIdentifier222[PropertyIdentifier222["COV_RESUBSCRIPTION_INTERVAL"] = 128] = "COV_RESUBSCRIPTION_INTERVAL";
          PropertyIdentifier222[PropertyIdentifier222["COVU_PERIOD"] = 349] = "COVU_PERIOD";
          PropertyIdentifier222[PropertyIdentifier222["COVU_RECIPIENTS"] = 350] = "COVU_RECIPIENTS";
          PropertyIdentifier222[PropertyIdentifier222["CREDENTIAL_DISABLE"] = 263] = "CREDENTIAL_DISABLE";
          PropertyIdentifier222[PropertyIdentifier222["CREDENTIAL_STATUS"] = 264] = "CREDENTIAL_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["CREDENTIALS"] = 265] = "CREDENTIALS";
          PropertyIdentifier222[PropertyIdentifier222["CREDENTIALS_IN_ZONE"] = 266] = "CREDENTIALS_IN_ZONE";
          PropertyIdentifier222[PropertyIdentifier222["CURRENT_COMMAND_PRIORITY"] = 431] = "CURRENT_COMMAND_PRIORITY";
          PropertyIdentifier222[PropertyIdentifier222["DATABASE_REVISION"] = 155] = "DATABASE_REVISION";
          PropertyIdentifier222[PropertyIdentifier222["DATE_LIST"] = 23] = "DATE_LIST";
          PropertyIdentifier222[PropertyIdentifier222["DAYLIGHT_SAVINGS_STATUS"] = 24] = "DAYLIGHT_SAVINGS_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["DAYS_REMAINING"] = 267] = "DAYS_REMAINING";
          PropertyIdentifier222[PropertyIdentifier222["DEADBAND"] = 25] = "DEADBAND";
          PropertyIdentifier222[PropertyIdentifier222["DEFAULT_FADE_TIME"] = 374] = "DEFAULT_FADE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["DEFAULT_RAMP_RATE"] = 375] = "DEFAULT_RAMP_RATE";
          PropertyIdentifier222[PropertyIdentifier222["DEFAULT_STEP_INCREMENT"] = 376] = "DEFAULT_STEP_INCREMENT";
          PropertyIdentifier222[PropertyIdentifier222["DEFAULT_SUBORDINATE_RELATIONSHIP"] = 490] = "DEFAULT_SUBORDINATE_RELATIONSHIP";
          PropertyIdentifier222[PropertyIdentifier222["DEFAULT_TIMEOUT"] = 393] = "DEFAULT_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["DEPLOYED_PROFILE_LOCATION"] = 484] = "DEPLOYED_PROFILE_LOCATION";
          PropertyIdentifier222[PropertyIdentifier222["DERIVATIVE_CONSTANT"] = 26] = "DERIVATIVE_CONSTANT";
          PropertyIdentifier222[PropertyIdentifier222["DERIVATIVE_CONSTANT_UNITS"] = 27] = "DERIVATIVE_CONSTANT_UNITS";
          PropertyIdentifier222[PropertyIdentifier222["DESCRIPTION"] = 28] = "DESCRIPTION";
          PropertyIdentifier222[PropertyIdentifier222["DESCRIPTION_OF_HALT"] = 29] = "DESCRIPTION_OF_HALT";
          PropertyIdentifier222[PropertyIdentifier222["DEVICE_ADDRESS_BINDING"] = 30] = "DEVICE_ADDRESS_BINDING";
          PropertyIdentifier222[PropertyIdentifier222["DEVICE_TYPE"] = 31] = "DEVICE_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["DIRECT_READING"] = 156] = "DIRECT_READING";
          PropertyIdentifier222[PropertyIdentifier222["DISTRIBUTION_KEY_REVISION"] = 328] = "DISTRIBUTION_KEY_REVISION";
          PropertyIdentifier222[PropertyIdentifier222["DO_NOT_HIDE"] = 329] = "DO_NOT_HIDE";
          PropertyIdentifier222[PropertyIdentifier222["DOOR_ALARM_STATE"] = 226] = "DOOR_ALARM_STATE";
          PropertyIdentifier222[PropertyIdentifier222["DOOR_EXTENDED_PULSE_TIME"] = 227] = "DOOR_EXTENDED_PULSE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["DOOR_MEMBERS"] = 228] = "DOOR_MEMBERS";
          PropertyIdentifier222[PropertyIdentifier222["DOOR_OPEN_TOO_LONG_TIME"] = 229] = "DOOR_OPEN_TOO_LONG_TIME";
          PropertyIdentifier222[PropertyIdentifier222["DOOR_PULSE_TIME"] = 230] = "DOOR_PULSE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["DOOR_STATUS"] = 231] = "DOOR_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["DOOR_UNLOCK_DELAY_TIME"] = 232] = "DOOR_UNLOCK_DELAY_TIME";
          PropertyIdentifier222[PropertyIdentifier222["DUTY_WINDOW"] = 213] = "DUTY_WINDOW";
          PropertyIdentifier222[PropertyIdentifier222["EFFECTIVE_PERIOD"] = 32] = "EFFECTIVE_PERIOD";
          PropertyIdentifier222[PropertyIdentifier222["EGRESS_ACTIVE"] = 386] = "EGRESS_ACTIVE";
          PropertyIdentifier222[PropertyIdentifier222["EGRESS_TIME"] = 377] = "EGRESS_TIME";
          PropertyIdentifier222[PropertyIdentifier222["ELAPSED_ACTIVE_TIME"] = 33] = "ELAPSED_ACTIVE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["ELEVATOR_GROUP"] = 459] = "ELEVATOR_GROUP";
          PropertyIdentifier222[PropertyIdentifier222["ENABLE"] = 133] = "ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["ENERGY_METER"] = 460] = "ENERGY_METER";
          PropertyIdentifier222[PropertyIdentifier222["ENERGY_METER_REF"] = 461] = "ENERGY_METER_REF";
          PropertyIdentifier222[PropertyIdentifier222["ENTRY_POINTS"] = 268] = "ENTRY_POINTS";
          PropertyIdentifier222[PropertyIdentifier222["ERROR_LIMIT"] = 34] = "ERROR_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["ESCALATOR_MODE"] = 462] = "ESCALATOR_MODE";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_ALGORITHM_INHIBIT"] = 354] = "EVENT_ALGORITHM_INHIBIT";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_ALGORITHM_INHIBIT_REF"] = 355] = "EVENT_ALGORITHM_INHIBIT_REF";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_DETECTION_ENABLE"] = 353] = "EVENT_DETECTION_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_ENABLE"] = 35] = "EVENT_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_MESSAGE_TEXTS"] = 351] = "EVENT_MESSAGE_TEXTS";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_MESSAGE_TEXTS_CONFIG"] = 352] = "EVENT_MESSAGE_TEXTS_CONFIG";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_PARAMETERS"] = 83] = "EVENT_PARAMETERS";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_STATE"] = 36] = "EVENT_STATE";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_TIME_STAMPS"] = 130] = "EVENT_TIME_STAMPS";
          PropertyIdentifier222[PropertyIdentifier222["EVENT_TYPE"] = 37] = "EVENT_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["EXCEPTION_SCHEDULE"] = 38] = "EXCEPTION_SCHEDULE";
          PropertyIdentifier222[PropertyIdentifier222["EXECUTION_DELAY"] = 368] = "EXECUTION_DELAY";
          PropertyIdentifier222[PropertyIdentifier222["EXIT_POINTS"] = 269] = "EXIT_POINTS";
          PropertyIdentifier222[PropertyIdentifier222["EXPECTED_SHED_LEVEL"] = 214] = "EXPECTED_SHED_LEVEL";
          PropertyIdentifier222[PropertyIdentifier222["EXPIRATION_TIME"] = 270] = "EXPIRATION_TIME";
          PropertyIdentifier222[PropertyIdentifier222["EXTENDED_TIME_ENABLE"] = 271] = "EXTENDED_TIME_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["FAILED_ATTEMPT_EVENTS"] = 272] = "FAILED_ATTEMPT_EVENTS";
          PropertyIdentifier222[PropertyIdentifier222["FAILED_ATTEMPTS"] = 273] = "FAILED_ATTEMPTS";
          PropertyIdentifier222[PropertyIdentifier222["FAILED_ATTEMPTS_TIME"] = 274] = "FAILED_ATTEMPTS_TIME";
          PropertyIdentifier222[PropertyIdentifier222["FAULT_HIGH_LIMIT"] = 388] = "FAULT_HIGH_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["FAULT_LOW_LIMIT"] = 389] = "FAULT_LOW_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["FAULT_PARAMETERS"] = 358] = "FAULT_PARAMETERS";
          PropertyIdentifier222[PropertyIdentifier222["FAULT_SIGNALS"] = 463] = "FAULT_SIGNALS";
          PropertyIdentifier222[PropertyIdentifier222["FAULT_TYPE"] = 359] = "FAULT_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["FAULT_VALUES"] = 39] = "FAULT_VALUES";
          PropertyIdentifier222[PropertyIdentifier222["FD_BBMD_ADDRESS"] = 418] = "FD_BBMD_ADDRESS";
          PropertyIdentifier222[PropertyIdentifier222["FD_SUBSCRIPTION_LIFETIME"] = 419] = "FD_SUBSCRIPTION_LIFETIME";
          PropertyIdentifier222[PropertyIdentifier222["FEEDBACK_VALUE"] = 40] = "FEEDBACK_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["FILE_ACCESS_METHOD"] = 41] = "FILE_ACCESS_METHOD";
          PropertyIdentifier222[PropertyIdentifier222["FILE_SIZE"] = 42] = "FILE_SIZE";
          PropertyIdentifier222[PropertyIdentifier222["FILE_TYPE"] = 43] = "FILE_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["FIRMWARE_REVISION"] = 44] = "FIRMWARE_REVISION";
          PropertyIdentifier222[PropertyIdentifier222["FLOOR_TEXT"] = 464] = "FLOOR_TEXT";
          PropertyIdentifier222[PropertyIdentifier222["FULL_DUTY_BASELINE"] = 215] = "FULL_DUTY_BASELINE";
          PropertyIdentifier222[PropertyIdentifier222["GLOBAL_IDENTIFIER"] = 323] = "GLOBAL_IDENTIFIER";
          PropertyIdentifier222[PropertyIdentifier222["GROUP_ID"] = 465] = "GROUP_ID";
          PropertyIdentifier222[PropertyIdentifier222["GROUP_MEMBER_NAMES"] = 346] = "GROUP_MEMBER_NAMES";
          PropertyIdentifier222[PropertyIdentifier222["GROUP_MEMBERS"] = 345] = "GROUP_MEMBERS";
          PropertyIdentifier222[PropertyIdentifier222["GROUP_MODE"] = 467] = "GROUP_MODE";
          PropertyIdentifier222[PropertyIdentifier222["HIGH_LIMIT"] = 45] = "HIGH_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["HIGHER_DECK"] = 468] = "HIGHER_DECK";
          PropertyIdentifier222[PropertyIdentifier222["IN_PROCESS"] = 47] = "IN_PROCESS";
          PropertyIdentifier222[PropertyIdentifier222["IN_PROGRESS"] = 378] = "IN_PROGRESS";
          PropertyIdentifier222[PropertyIdentifier222["INACTIVE_TEXT"] = 46] = "INACTIVE_TEXT";
          PropertyIdentifier222[PropertyIdentifier222["INITIAL_TIMEOUT"] = 394] = "INITIAL_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["INPUT_REFERENCE"] = 181] = "INPUT_REFERENCE";
          PropertyIdentifier222[PropertyIdentifier222["INSTALLATION_ID"] = 469] = "INSTALLATION_ID";
          PropertyIdentifier222[PropertyIdentifier222["INSTANCE_OF"] = 48] = "INSTANCE_OF";
          PropertyIdentifier222[PropertyIdentifier222["INSTANTANEOUS_POWER"] = 379] = "INSTANTANEOUS_POWER";
          PropertyIdentifier222[PropertyIdentifier222["INTEGRAL_CONSTANT"] = 49] = "INTEGRAL_CONSTANT";
          PropertyIdentifier222[PropertyIdentifier222["INTEGRAL_CONSTANT_UNITS"] = 50] = "INTEGRAL_CONSTANT_UNITS";
          PropertyIdentifier222[PropertyIdentifier222["INTERFACE_VALUE"] = 387] = "INTERFACE_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["INTERVAL_OFFSET"] = 195] = "INTERVAL_OFFSET";
          PropertyIdentifier222[PropertyIdentifier222["IP_ADDRESS"] = 400] = "IP_ADDRESS";
          PropertyIdentifier222[PropertyIdentifier222["IP_DEFAULT_GATEWAY"] = 401] = "IP_DEFAULT_GATEWAY";
          PropertyIdentifier222[PropertyIdentifier222["IP_DHCP_ENABLE"] = 402] = "IP_DHCP_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["IP_DHCP_LEASE_TIME"] = 403] = "IP_DHCP_LEASE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["IP_DHCP_LEASE_TIME_REMAINING"] = 404] = "IP_DHCP_LEASE_TIME_REMAINING";
          PropertyIdentifier222[PropertyIdentifier222["IP_DHCP_SERVER"] = 405] = "IP_DHCP_SERVER";
          PropertyIdentifier222[PropertyIdentifier222["IP_DNS_SERVER"] = 406] = "IP_DNS_SERVER";
          PropertyIdentifier222[PropertyIdentifier222["IP_SUBNET_MASK"] = 411] = "IP_SUBNET_MASK";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_ADDRESS"] = 436] = "IPV6_ADDRESS";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_AUTO_ADDRESSING_ENABLE"] = 442] = "IPV6_AUTO_ADDRESSING_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_DEFAULT_GATEWAY"] = 439] = "IPV6_DEFAULT_GATEWAY";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_DHCP_LEASE_TIME"] = 443] = "IPV6_DHCP_LEASE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_DHCP_LEASE_TIME_REMAINING"] = 444] = "IPV6_DHCP_LEASE_TIME_REMAINING";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_DHCP_SERVER"] = 445] = "IPV6_DHCP_SERVER";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_DNS_SERVER"] = 441] = "IPV6_DNS_SERVER";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_PREFIX_LENGTH"] = 437] = "IPV6_PREFIX_LENGTH";
          PropertyIdentifier222[PropertyIdentifier222["IPV6_ZONE_INDEX"] = 446] = "IPV6_ZONE_INDEX";
          PropertyIdentifier222[PropertyIdentifier222["IS_UTC"] = 344] = "IS_UTC";
          PropertyIdentifier222[PropertyIdentifier222["KEY_SETS"] = 330] = "KEY_SETS";
          PropertyIdentifier222[PropertyIdentifier222["LANDING_CALL_CONTROL"] = 471] = "LANDING_CALL_CONTROL";
          PropertyIdentifier222[PropertyIdentifier222["LANDING_CALLS"] = 470] = "LANDING_CALLS";
          PropertyIdentifier222[PropertyIdentifier222["LANDING_DOOR_STATUS"] = 472] = "LANDING_DOOR_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["LAST_ACCESS_EVENT"] = 275] = "LAST_ACCESS_EVENT";
          PropertyIdentifier222[PropertyIdentifier222["LAST_ACCESS_POINT"] = 276] = "LAST_ACCESS_POINT";
          PropertyIdentifier222[PropertyIdentifier222["LAST_COMMAND_TIME"] = 432] = "LAST_COMMAND_TIME";
          PropertyIdentifier222[PropertyIdentifier222["LAST_CREDENTIAL_ADDED"] = 277] = "LAST_CREDENTIAL_ADDED";
          PropertyIdentifier222[PropertyIdentifier222["LAST_CREDENTIAL_ADDED_TIME"] = 278] = "LAST_CREDENTIAL_ADDED_TIME";
          PropertyIdentifier222[PropertyIdentifier222["LAST_CREDENTIAL_REMOVED"] = 279] = "LAST_CREDENTIAL_REMOVED";
          PropertyIdentifier222[PropertyIdentifier222["LAST_CREDENTIAL_REMOVED_TIME"] = 280] = "LAST_CREDENTIAL_REMOVED_TIME";
          PropertyIdentifier222[PropertyIdentifier222["LAST_KEY_SERVER"] = 331] = "LAST_KEY_SERVER";
          PropertyIdentifier222[PropertyIdentifier222["LAST_NOTIFY_RECORD"] = 173] = "LAST_NOTIFY_RECORD";
          PropertyIdentifier222[PropertyIdentifier222["LAST_PRIORITY"] = 369] = "LAST_PRIORITY";
          PropertyIdentifier222[PropertyIdentifier222["LAST_RESTART_REASON"] = 196] = "LAST_RESTART_REASON";
          PropertyIdentifier222[PropertyIdentifier222["LAST_RESTORE_TIME"] = 157] = "LAST_RESTORE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["LAST_STATE_CHANGE"] = 395] = "LAST_STATE_CHANGE";
          PropertyIdentifier222[PropertyIdentifier222["LAST_USE_TIME"] = 281] = "LAST_USE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["LIFE_SAFETY_ALARM_VALUES"] = 166] = "LIFE_SAFETY_ALARM_VALUES";
          PropertyIdentifier222[PropertyIdentifier222["LIGHTING_COMMAND"] = 380] = "LIGHTING_COMMAND";
          PropertyIdentifier222[PropertyIdentifier222["LIGHTING_COMMAND_DEFAULT_PRIORITY"] = 381] = "LIGHTING_COMMAND_DEFAULT_PRIORITY";
          PropertyIdentifier222[PropertyIdentifier222["LIMIT_ENABLE"] = 52] = "LIMIT_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["LIMIT_MONITORING_INTERVAL"] = 182] = "LIMIT_MONITORING_INTERVAL";
          PropertyIdentifier222[PropertyIdentifier222["LINK_SPEED"] = 420] = "LINK_SPEED";
          PropertyIdentifier222[PropertyIdentifier222["LINK_SPEED_AUTONEGOTIATE"] = 422] = "LINK_SPEED_AUTONEGOTIATE";
          PropertyIdentifier222[PropertyIdentifier222["LINK_SPEEDS"] = 421] = "LINK_SPEEDS";
          PropertyIdentifier222[PropertyIdentifier222["LIST_OF_GROUP_MEMBERS"] = 53] = "LIST_OF_GROUP_MEMBERS";
          PropertyIdentifier222[PropertyIdentifier222["LIST_OF_OBJECT_PROPERTY_REFERENCES"] = 54] = "LIST_OF_OBJECT_PROPERTY_REFERENCES";
          PropertyIdentifier222[PropertyIdentifier222["LOCAL_DATE"] = 56] = "LOCAL_DATE";
          PropertyIdentifier222[PropertyIdentifier222["LOCAL_FORWARDING_ONLY"] = 360] = "LOCAL_FORWARDING_ONLY";
          PropertyIdentifier222[PropertyIdentifier222["LOCAL_TIME"] = 57] = "LOCAL_TIME";
          PropertyIdentifier222[PropertyIdentifier222["LOCATION"] = 58] = "LOCATION";
          PropertyIdentifier222[PropertyIdentifier222["LOCK_STATUS"] = 233] = "LOCK_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["LOCKOUT"] = 282] = "LOCKOUT";
          PropertyIdentifier222[PropertyIdentifier222["LOCKOUT_RELINQUISH_TIME"] = 283] = "LOCKOUT_RELINQUISH_TIME";
          PropertyIdentifier222[PropertyIdentifier222["LOG_BUFFER"] = 131] = "LOG_BUFFER";
          PropertyIdentifier222[PropertyIdentifier222["LOG_DEVICE_OBJECT_PROPERTY"] = 132] = "LOG_DEVICE_OBJECT_PROPERTY";
          PropertyIdentifier222[PropertyIdentifier222["LOG_INTERVAL"] = 134] = "LOG_INTERVAL";
          PropertyIdentifier222[PropertyIdentifier222["LOGGING_OBJECT"] = 183] = "LOGGING_OBJECT";
          PropertyIdentifier222[PropertyIdentifier222["LOGGING_RECORD"] = 184] = "LOGGING_RECORD";
          PropertyIdentifier222[PropertyIdentifier222["LOGGING_TYPE"] = 197] = "LOGGING_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["LOW_DIFF_LIMIT"] = 390] = "LOW_DIFF_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["LOW_LIMIT"] = 59] = "LOW_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["LOWER_DECK"] = 473] = "LOWER_DECK";
          PropertyIdentifier222[PropertyIdentifier222["MAC_ADDRESS"] = 423] = "MAC_ADDRESS";
          PropertyIdentifier222[PropertyIdentifier222["MACHINE_ROOM_ID"] = 474] = "MACHINE_ROOM_ID";
          PropertyIdentifier222[PropertyIdentifier222["MAINTENANCE_REQUIRED"] = 158] = "MAINTENANCE_REQUIRED";
          PropertyIdentifier222[PropertyIdentifier222["MAKING_CAR_CALL"] = 475] = "MAKING_CAR_CALL";
          PropertyIdentifier222[PropertyIdentifier222["MANIPULATED_VARIABLE_REFERENCE"] = 60] = "MANIPULATED_VARIABLE_REFERENCE";
          PropertyIdentifier222[PropertyIdentifier222["MANUAL_SLAVE_ADDRESS_BINDING"] = 170] = "MANUAL_SLAVE_ADDRESS_BINDING";
          PropertyIdentifier222[PropertyIdentifier222["MASKED_ALARM_VALUES"] = 234] = "MASKED_ALARM_VALUES";
          PropertyIdentifier222[PropertyIdentifier222["MAX_ACTUAL_VALUE"] = 382] = "MAX_ACTUAL_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["MAX_APDU_LENGTH_ACCEPTED"] = 62] = "MAX_APDU_LENGTH_ACCEPTED";
          PropertyIdentifier222[PropertyIdentifier222["MAX_FAILED_ATTEMPTS"] = 285] = "MAX_FAILED_ATTEMPTS";
          PropertyIdentifier222[PropertyIdentifier222["MAX_INFO_FRAMES"] = 63] = "MAX_INFO_FRAMES";
          PropertyIdentifier222[PropertyIdentifier222["MAX_MASTER"] = 64] = "MAX_MASTER";
          PropertyIdentifier222[PropertyIdentifier222["MAX_PRES_VALUE"] = 65] = "MAX_PRES_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["MAX_SEGMENTS_ACCEPTED"] = 167] = "MAX_SEGMENTS_ACCEPTED";
          PropertyIdentifier222[PropertyIdentifier222["MAXIMUM_OUTPUT"] = 61] = "MAXIMUM_OUTPUT";
          PropertyIdentifier222[PropertyIdentifier222["MAXIMUM_VALUE"] = 135] = "MAXIMUM_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["MAXIMUM_VALUE_TIMESTAMP"] = 149] = "MAXIMUM_VALUE_TIMESTAMP";
          PropertyIdentifier222[PropertyIdentifier222["MEMBER_OF"] = 159] = "MEMBER_OF";
          PropertyIdentifier222[PropertyIdentifier222["MEMBER_STATUS_FLAGS"] = 347] = "MEMBER_STATUS_FLAGS";
          PropertyIdentifier222[PropertyIdentifier222["MEMBERS"] = 286] = "MEMBERS";
          PropertyIdentifier222[PropertyIdentifier222["MIN_ACTUAL_VALUE"] = 383] = "MIN_ACTUAL_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["MIN_PRES_VALUE"] = 69] = "MIN_PRES_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["MINIMUM_OFF_TIME"] = 66] = "MINIMUM_OFF_TIME";
          PropertyIdentifier222[PropertyIdentifier222["MINIMUM_ON_TIME"] = 67] = "MINIMUM_ON_TIME";
          PropertyIdentifier222[PropertyIdentifier222["MINIMUM_OUTPUT"] = 68] = "MINIMUM_OUTPUT";
          PropertyIdentifier222[PropertyIdentifier222["MINIMUM_VALUE"] = 136] = "MINIMUM_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["MINIMUM_VALUE_TIMESTAMP"] = 150] = "MINIMUM_VALUE_TIMESTAMP";
          PropertyIdentifier222[PropertyIdentifier222["MODE"] = 160] = "MODE";
          PropertyIdentifier222[PropertyIdentifier222["MODEL_NAME"] = 70] = "MODEL_NAME";
          PropertyIdentifier222[PropertyIdentifier222["MODIFICATION_DATE"] = 71] = "MODIFICATION_DATE";
          PropertyIdentifier222[PropertyIdentifier222["MUSTER_POINT"] = 287] = "MUSTER_POINT";
          PropertyIdentifier222[PropertyIdentifier222["NEGATIVE_ACCESS_RULES"] = 288] = "NEGATIVE_ACCESS_RULES";
          PropertyIdentifier222[PropertyIdentifier222["NETWORK_ACCESS_SECURITY_POLICIES"] = 332] = "NETWORK_ACCESS_SECURITY_POLICIES";
          PropertyIdentifier222[PropertyIdentifier222["NETWORK_INTERFACE_NAME"] = 424] = "NETWORK_INTERFACE_NAME";
          PropertyIdentifier222[PropertyIdentifier222["NETWORK_NUMBER"] = 425] = "NETWORK_NUMBER";
          PropertyIdentifier222[PropertyIdentifier222["NETWORK_NUMBER_QUALITY"] = 426] = "NETWORK_NUMBER_QUALITY";
          PropertyIdentifier222[PropertyIdentifier222["NETWORK_TYPE"] = 427] = "NETWORK_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["NEXT_STOPPING_FLOOR"] = 476] = "NEXT_STOPPING_FLOOR";
          PropertyIdentifier222[PropertyIdentifier222["NODE_SUBTYPE"] = 207] = "NODE_SUBTYPE";
          PropertyIdentifier222[PropertyIdentifier222["NODE_TYPE"] = 208] = "NODE_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["NOTIFICATION_CLASS"] = 17] = "NOTIFICATION_CLASS";
          PropertyIdentifier222[PropertyIdentifier222["NOTIFICATION_THRESHOLD"] = 137] = "NOTIFICATION_THRESHOLD";
          PropertyIdentifier222[PropertyIdentifier222["NOTIFY_TYPE"] = 72] = "NOTIFY_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["NUMBER_OF_APDU_RETRIES"] = 73] = "NUMBER_OF_APDU_RETRIES";
          PropertyIdentifier222[PropertyIdentifier222["NUMBER_OF_AUTHENTICATION_POLICIES"] = 289] = "NUMBER_OF_AUTHENTICATION_POLICIES";
          PropertyIdentifier222[PropertyIdentifier222["NUMBER_OF_STATES"] = 74] = "NUMBER_OF_STATES";
          PropertyIdentifier222[PropertyIdentifier222["OBJECT_IDENTIFIER"] = 75] = "OBJECT_IDENTIFIER";
          PropertyIdentifier222[PropertyIdentifier222["OBJECT_LIST"] = 76] = "OBJECT_LIST";
          PropertyIdentifier222[PropertyIdentifier222["OBJECT_NAME"] = 77] = "OBJECT_NAME";
          PropertyIdentifier222[PropertyIdentifier222["OBJECT_PROPERTY_REFERENCE"] = 78] = "OBJECT_PROPERTY_REFERENCE";
          PropertyIdentifier222[PropertyIdentifier222["OBJECT_TYPE"] = 79] = "OBJECT_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_COUNT"] = 290] = "OCCUPANCY_COUNT";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_COUNT_ADJUST"] = 291] = "OCCUPANCY_COUNT_ADJUST";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_COUNT_ENABLE"] = 292] = "OCCUPANCY_COUNT_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_LOWER_LIMIT"] = 294] = "OCCUPANCY_LOWER_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_LOWER_LIMIT_ENFORCED"] = 295] = "OCCUPANCY_LOWER_LIMIT_ENFORCED";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_STATE"] = 296] = "OCCUPANCY_STATE";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_UPPER_LIMIT"] = 297] = "OCCUPANCY_UPPER_LIMIT";
          PropertyIdentifier222[PropertyIdentifier222["OCCUPANCY_UPPER_LIMIT_ENFORCED"] = 298] = "OCCUPANCY_UPPER_LIMIT_ENFORCED";
          PropertyIdentifier222[PropertyIdentifier222["OPERATION_DIRECTION"] = 477] = "OPERATION_DIRECTION";
          PropertyIdentifier222[PropertyIdentifier222["OPERATION_EXPECTED"] = 161] = "OPERATION_EXPECTED";
          PropertyIdentifier222[PropertyIdentifier222["OPTIONAL"] = 80] = "OPTIONAL";
          PropertyIdentifier222[PropertyIdentifier222["OUT_OF_SERVICE"] = 81] = "OUT_OF_SERVICE";
          PropertyIdentifier222[PropertyIdentifier222["OUTPUT_UNITS"] = 82] = "OUTPUT_UNITS";
          PropertyIdentifier222[PropertyIdentifier222["PACKET_REORDER_TIME"] = 333] = "PACKET_REORDER_TIME";
          PropertyIdentifier222[PropertyIdentifier222["PASSBACK_MODE"] = 300] = "PASSBACK_MODE";
          PropertyIdentifier222[PropertyIdentifier222["PASSBACK_TIMEOUT"] = 301] = "PASSBACK_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["PASSENGER_ALARM"] = 478] = "PASSENGER_ALARM";
          PropertyIdentifier222[PropertyIdentifier222["POLARITY"] = 84] = "POLARITY";
          PropertyIdentifier222[PropertyIdentifier222["PORT_FILTER"] = 363] = "PORT_FILTER";
          PropertyIdentifier222[PropertyIdentifier222["POSITIVE_ACCESS_RULES"] = 302] = "POSITIVE_ACCESS_RULES";
          PropertyIdentifier222[PropertyIdentifier222["POWER"] = 384] = "POWER";
          PropertyIdentifier222[PropertyIdentifier222["POWER_MODE"] = 479] = "POWER_MODE";
          PropertyIdentifier222[PropertyIdentifier222["PRESCALE"] = 185] = "PRESCALE";
          PropertyIdentifier222[PropertyIdentifier222["PRESENT_VALUE"] = 85] = "PRESENT_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["PRIORITY"] = 86] = "PRIORITY";
          PropertyIdentifier222[PropertyIdentifier222["PRIORITY_ARRAY"] = 87] = "PRIORITY_ARRAY";
          PropertyIdentifier222[PropertyIdentifier222["PRIORITY_FOR_WRITING"] = 88] = "PRIORITY_FOR_WRITING";
          PropertyIdentifier222[PropertyIdentifier222["PROCESS_IDENTIFIER"] = 89] = "PROCESS_IDENTIFIER";
          PropertyIdentifier222[PropertyIdentifier222["PROCESS_IDENTIFIER_FILTER"] = 361] = "PROCESS_IDENTIFIER_FILTER";
          PropertyIdentifier222[PropertyIdentifier222["PROFILE_LOCATION"] = 485] = "PROFILE_LOCATION";
          PropertyIdentifier222[PropertyIdentifier222["PROFILE_NAME"] = 168] = "PROFILE_NAME";
          PropertyIdentifier222[PropertyIdentifier222["PROGRAM_CHANGE"] = 90] = "PROGRAM_CHANGE";
          PropertyIdentifier222[PropertyIdentifier222["PROGRAM_LOCATION"] = 91] = "PROGRAM_LOCATION";
          PropertyIdentifier222[PropertyIdentifier222["PROGRAM_STATE"] = 92] = "PROGRAM_STATE";
          PropertyIdentifier222[PropertyIdentifier222["PROPERTY_LIST"] = 371] = "PROPERTY_LIST";
          PropertyIdentifier222[PropertyIdentifier222["PROPORTIONAL_CONSTANT"] = 93] = "PROPORTIONAL_CONSTANT";
          PropertyIdentifier222[PropertyIdentifier222["PROPORTIONAL_CONSTANT_UNITS"] = 94] = "PROPORTIONAL_CONSTANT_UNITS";
          PropertyIdentifier222[PropertyIdentifier222["PROTOCOL_LEVEL"] = 482] = "PROTOCOL_LEVEL";
          PropertyIdentifier222[PropertyIdentifier222["PROTOCOL_OBJECT_TYPES_SUPPORTED"] = 96] = "PROTOCOL_OBJECT_TYPES_SUPPORTED";
          PropertyIdentifier222[PropertyIdentifier222["PROTOCOL_REVISION"] = 139] = "PROTOCOL_REVISION";
          PropertyIdentifier222[PropertyIdentifier222["PROTOCOL_SERVICES_SUPPORTED"] = 97] = "PROTOCOL_SERVICES_SUPPORTED";
          PropertyIdentifier222[PropertyIdentifier222["PROTOCOL_VERSION"] = 98] = "PROTOCOL_VERSION";
          PropertyIdentifier222[PropertyIdentifier222["PULSE_RATE"] = 186] = "PULSE_RATE";
          PropertyIdentifier222[PropertyIdentifier222["READ_ONLY"] = 99] = "READ_ONLY";
          PropertyIdentifier222[PropertyIdentifier222["REASON_FOR_DISABLE"] = 303] = "REASON_FOR_DISABLE";
          PropertyIdentifier222[PropertyIdentifier222["REASON_FOR_HALT"] = 100] = "REASON_FOR_HALT";
          PropertyIdentifier222[PropertyIdentifier222["RECIPIENT_LIST"] = 102] = "RECIPIENT_LIST";
          PropertyIdentifier222[PropertyIdentifier222["RECORD_COUNT"] = 141] = "RECORD_COUNT";
          PropertyIdentifier222[PropertyIdentifier222["RECORDS_SINCE_NOTIFICATION"] = 140] = "RECORDS_SINCE_NOTIFICATION";
          PropertyIdentifier222[PropertyIdentifier222["REFERENCE_PORT"] = 483] = "REFERENCE_PORT";
          PropertyIdentifier222[PropertyIdentifier222["REGISTERED_CAR_CALL"] = 480] = "REGISTERED_CAR_CALL";
          PropertyIdentifier222[PropertyIdentifier222["RELIABILITY"] = 103] = "RELIABILITY";
          PropertyIdentifier222[PropertyIdentifier222["RELIABILITY_EVALUATION_INHIBIT"] = 357] = "RELIABILITY_EVALUATION_INHIBIT";
          PropertyIdentifier222[PropertyIdentifier222["RELINQUISH_DEFAULT"] = 104] = "RELINQUISH_DEFAULT";
          PropertyIdentifier222[PropertyIdentifier222["REPRESENTS"] = 491] = "REPRESENTS";
          PropertyIdentifier222[PropertyIdentifier222["REQUESTED_SHED_LEVEL"] = 218] = "REQUESTED_SHED_LEVEL";
          PropertyIdentifier222[PropertyIdentifier222["REQUESTED_UPDATE_INTERVAL"] = 348] = "REQUESTED_UPDATE_INTERVAL";
          PropertyIdentifier222[PropertyIdentifier222["REQUIRED"] = 105] = "REQUIRED";
          PropertyIdentifier222[PropertyIdentifier222["RESOLUTION"] = 106] = "RESOLUTION";
          PropertyIdentifier222[PropertyIdentifier222["RESTART_NOTIFICATION_RECIPIENTS"] = 202] = "RESTART_NOTIFICATION_RECIPIENTS";
          PropertyIdentifier222[PropertyIdentifier222["RESTORE_COMPLETION_TIME"] = 340] = "RESTORE_COMPLETION_TIME";
          PropertyIdentifier222[PropertyIdentifier222["RESTORE_PREPARATION_TIME"] = 341] = "RESTORE_PREPARATION_TIME";
          PropertyIdentifier222[PropertyIdentifier222["ROUTING_TABLE"] = 428] = "ROUTING_TABLE";
          PropertyIdentifier222[PropertyIdentifier222["SCALE"] = 187] = "SCALE";
          PropertyIdentifier222[PropertyIdentifier222["SCALE_FACTOR"] = 188] = "SCALE_FACTOR";
          PropertyIdentifier222[PropertyIdentifier222["SCHEDULE_DEFAULT"] = 174] = "SCHEDULE_DEFAULT";
          PropertyIdentifier222[PropertyIdentifier222["SECURED_STATUS"] = 235] = "SECURED_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["SECURITY_PDU_TIMEOUT"] = 334] = "SECURITY_PDU_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["SECURITY_TIME_WINDOW"] = 335] = "SECURITY_TIME_WINDOW";
          PropertyIdentifier222[PropertyIdentifier222["SEGMENTATION_SUPPORTED"] = 107] = "SEGMENTATION_SUPPORTED";
          PropertyIdentifier222[PropertyIdentifier222["SERIAL_NUMBER"] = 372] = "SERIAL_NUMBER";
          PropertyIdentifier222[PropertyIdentifier222["SETPOINT"] = 108] = "SETPOINT";
          PropertyIdentifier222[PropertyIdentifier222["SETPOINT_REFERENCE"] = 109] = "SETPOINT_REFERENCE";
          PropertyIdentifier222[PropertyIdentifier222["SETTING"] = 162] = "SETTING";
          PropertyIdentifier222[PropertyIdentifier222["SHED_DURATION"] = 219] = "SHED_DURATION";
          PropertyIdentifier222[PropertyIdentifier222["SHED_LEVEL_DESCRIPTIONS"] = 220] = "SHED_LEVEL_DESCRIPTIONS";
          PropertyIdentifier222[PropertyIdentifier222["SHED_LEVELS"] = 221] = "SHED_LEVELS";
          PropertyIdentifier222[PropertyIdentifier222["SILENCED"] = 163] = "SILENCED";
          PropertyIdentifier222[PropertyIdentifier222["SLAVE_ADDRESS_BINDING"] = 171] = "SLAVE_ADDRESS_BINDING";
          PropertyIdentifier222[PropertyIdentifier222["SLAVE_PROXY_ENABLE"] = 172] = "SLAVE_PROXY_ENABLE";
          PropertyIdentifier222[PropertyIdentifier222["START_TIME"] = 142] = "START_TIME";
          PropertyIdentifier222[PropertyIdentifier222["STATE_CHANGE_VALUES"] = 396] = "STATE_CHANGE_VALUES";
          PropertyIdentifier222[PropertyIdentifier222["STATE_DESCRIPTION"] = 222] = "STATE_DESCRIPTION";
          PropertyIdentifier222[PropertyIdentifier222["STATE_TEXT"] = 110] = "STATE_TEXT";
          PropertyIdentifier222[PropertyIdentifier222["STATUS_FLAGS"] = 111] = "STATUS_FLAGS";
          PropertyIdentifier222[PropertyIdentifier222["STOP_TIME"] = 143] = "STOP_TIME";
          PropertyIdentifier222[PropertyIdentifier222["STOP_WHEN_FULL"] = 144] = "STOP_WHEN_FULL";
          PropertyIdentifier222[PropertyIdentifier222["STRIKE_COUNT"] = 391] = "STRIKE_COUNT";
          PropertyIdentifier222[PropertyIdentifier222["STRUCTURED_OBJECT_LIST"] = 209] = "STRUCTURED_OBJECT_LIST";
          PropertyIdentifier222[PropertyIdentifier222["SUBORDINATE_ANNOTATIONS"] = 210] = "SUBORDINATE_ANNOTATIONS";
          PropertyIdentifier222[PropertyIdentifier222["SUBORDINATE_LIST"] = 211] = "SUBORDINATE_LIST";
          PropertyIdentifier222[PropertyIdentifier222["SUBORDINATE_NODE_TYPES"] = 487] = "SUBORDINATE_NODE_TYPES";
          PropertyIdentifier222[PropertyIdentifier222["SUBORDINATE_RELATIONSHIPS"] = 489] = "SUBORDINATE_RELATIONSHIPS";
          PropertyIdentifier222[PropertyIdentifier222["SUBORDINATE_TAGS"] = 488] = "SUBORDINATE_TAGS";
          PropertyIdentifier222[PropertyIdentifier222["SUBSCRIBED_RECIPIENTS"] = 362] = "SUBSCRIBED_RECIPIENTS";
          PropertyIdentifier222[PropertyIdentifier222["SUPPORTED_FORMAT_CLASSES"] = 305] = "SUPPORTED_FORMAT_CLASSES";
          PropertyIdentifier222[PropertyIdentifier222["SUPPORTED_FORMATS"] = 304] = "SUPPORTED_FORMATS";
          PropertyIdentifier222[PropertyIdentifier222["SUPPORTED_SECURITY_ALGORITHMS"] = 336] = "SUPPORTED_SECURITY_ALGORITHMS";
          PropertyIdentifier222[PropertyIdentifier222["SYSTEM_STATUS"] = 112] = "SYSTEM_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["TAGS"] = 486] = "TAGS";
          PropertyIdentifier222[PropertyIdentifier222["THREAT_AUTHORITY"] = 306] = "THREAT_AUTHORITY";
          PropertyIdentifier222[PropertyIdentifier222["THREAT_LEVEL"] = 307] = "THREAT_LEVEL";
          PropertyIdentifier222[PropertyIdentifier222["TIME_DELAY"] = 113] = "TIME_DELAY";
          PropertyIdentifier222[PropertyIdentifier222["TIME_DELAY_NORMAL"] = 356] = "TIME_DELAY_NORMAL";
          PropertyIdentifier222[PropertyIdentifier222["TIME_OF_ACTIVE_TIME_RESET"] = 114] = "TIME_OF_ACTIVE_TIME_RESET";
          PropertyIdentifier222[PropertyIdentifier222["TIME_OF_DEVICE_RESTART"] = 203] = "TIME_OF_DEVICE_RESTART";
          PropertyIdentifier222[PropertyIdentifier222["TIME_OF_STATE_COUNT_RESET"] = 115] = "TIME_OF_STATE_COUNT_RESET";
          PropertyIdentifier222[PropertyIdentifier222["TIME_OF_STRIKE_COUNT_RESET"] = 392] = "TIME_OF_STRIKE_COUNT_RESET";
          PropertyIdentifier222[PropertyIdentifier222["TIME_SYNCHRONIZATION_INTERVAL"] = 204] = "TIME_SYNCHRONIZATION_INTERVAL";
          PropertyIdentifier222[PropertyIdentifier222["TIME_SYNCHRONIZATION_RECIPIENTS"] = 116] = "TIME_SYNCHRONIZATION_RECIPIENTS";
          PropertyIdentifier222[PropertyIdentifier222["TIMER_RUNNING"] = 397] = "TIMER_RUNNING";
          PropertyIdentifier222[PropertyIdentifier222["TIMER_STATE"] = 398] = "TIMER_STATE";
          PropertyIdentifier222[PropertyIdentifier222["TOTAL_RECORD_COUNT"] = 145] = "TOTAL_RECORD_COUNT";
          PropertyIdentifier222[PropertyIdentifier222["TRACE_FLAG"] = 308] = "TRACE_FLAG";
          PropertyIdentifier222[PropertyIdentifier222["TRACKING_VALUE"] = 164] = "TRACKING_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["TRANSACTION_NOTIFICATION_CLASS"] = 309] = "TRANSACTION_NOTIFICATION_CLASS";
          PropertyIdentifier222[PropertyIdentifier222["TRANSITION"] = 385] = "TRANSITION";
          PropertyIdentifier222[PropertyIdentifier222["TRIGGER"] = 205] = "TRIGGER";
          PropertyIdentifier222[PropertyIdentifier222["UNITS"] = 117] = "UNITS";
          PropertyIdentifier222[PropertyIdentifier222["UPDATE_INTERVAL"] = 118] = "UPDATE_INTERVAL";
          PropertyIdentifier222[PropertyIdentifier222["UPDATE_KEY_SET_TIMEOUT"] = 337] = "UPDATE_KEY_SET_TIMEOUT";
          PropertyIdentifier222[PropertyIdentifier222["UPDATE_TIME"] = 189] = "UPDATE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["USER_EXTERNAL_IDENTIFIER"] = 310] = "USER_EXTERNAL_IDENTIFIER";
          PropertyIdentifier222[PropertyIdentifier222["USER_INFORMATION_REFERENCE"] = 311] = "USER_INFORMATION_REFERENCE";
          PropertyIdentifier222[PropertyIdentifier222["USER_NAME"] = 317] = "USER_NAME";
          PropertyIdentifier222[PropertyIdentifier222["USER_TYPE"] = 318] = "USER_TYPE";
          PropertyIdentifier222[PropertyIdentifier222["USES_REMAINING"] = 319] = "USES_REMAINING";
          PropertyIdentifier222[PropertyIdentifier222["UTC_OFFSET"] = 119] = "UTC_OFFSET";
          PropertyIdentifier222[PropertyIdentifier222["UTC_TIME_SYNCHRONIZATION_RECIPIENTS"] = 206] = "UTC_TIME_SYNCHRONIZATION_RECIPIENTS";
          PropertyIdentifier222[PropertyIdentifier222["VALID_SAMPLES"] = 146] = "VALID_SAMPLES";
          PropertyIdentifier222[PropertyIdentifier222["VALUE_BEFORE_CHANGE"] = 190] = "VALUE_BEFORE_CHANGE";
          PropertyIdentifier222[PropertyIdentifier222["VALUE_CHANGE_TIME"] = 192] = "VALUE_CHANGE_TIME";
          PropertyIdentifier222[PropertyIdentifier222["VALUE_SET"] = 191] = "VALUE_SET";
          PropertyIdentifier222[PropertyIdentifier222["VALUE_SOURCE"] = 433] = "VALUE_SOURCE";
          PropertyIdentifier222[PropertyIdentifier222["VALUE_SOURCE_ARRAY"] = 434] = "VALUE_SOURCE_ARRAY";
          PropertyIdentifier222[PropertyIdentifier222["VARIANCE_VALUE"] = 151] = "VARIANCE_VALUE";
          PropertyIdentifier222[PropertyIdentifier222["VENDOR_IDENTIFIER"] = 120] = "VENDOR_IDENTIFIER";
          PropertyIdentifier222[PropertyIdentifier222["VENDOR_NAME"] = 121] = "VENDOR_NAME";
          PropertyIdentifier222[PropertyIdentifier222["VERIFICATION_TIME"] = 326] = "VERIFICATION_TIME";
          PropertyIdentifier222[PropertyIdentifier222["VIRTUAL_MAC_ADDRESS_TABLE"] = 429] = "VIRTUAL_MAC_ADDRESS_TABLE";
          PropertyIdentifier222[PropertyIdentifier222["VT_CLASSES_SUPPORTED"] = 122] = "VT_CLASSES_SUPPORTED";
          PropertyIdentifier222[PropertyIdentifier222["WEEKLY_SCHEDULE"] = 123] = "WEEKLY_SCHEDULE";
          PropertyIdentifier222[PropertyIdentifier222["WINDOW_INTERVAL"] = 147] = "WINDOW_INTERVAL";
          PropertyIdentifier222[PropertyIdentifier222["WINDOW_SAMPLES"] = 148] = "WINDOW_SAMPLES";
          PropertyIdentifier222[PropertyIdentifier222["WRITE_STATUS"] = 370] = "WRITE_STATUS";
          PropertyIdentifier222[PropertyIdentifier222["ZONE_FROM"] = 320] = "ZONE_FROM";
          PropertyIdentifier222[PropertyIdentifier222["ZONE_MEMBERS"] = 165] = "ZONE_MEMBERS";
          PropertyIdentifier222[PropertyIdentifier222["ZONE_TO"] = 321] = "ZONE_TO";
          return PropertyIdentifier222;
        })(PropertyIdentifier22 || {});
        var ProtocolLevel22 = /* @__PURE__ */ ((ProtocolLevel222) => {
          ProtocolLevel222[ProtocolLevel222["PHYSICAL"] = 0] = "PHYSICAL";
          ProtocolLevel222[ProtocolLevel222["PROTOCOL"] = 1] = "PROTOCOL";
          ProtocolLevel222[ProtocolLevel222["BACNET_APPLICATION"] = 2] = "BACNET_APPLICATION";
          ProtocolLevel222[ProtocolLevel222["NON_BACNET_APPLICATION"] = 3] = "NON_BACNET_APPLICATION";
          return ProtocolLevel222;
        })(ProtocolLevel22 || {});
        var Relationship22 = /* @__PURE__ */ ((Relationship222) => {
          Relationship222[Relationship222["UNKNOWN"] = 0] = "UNKNOWN";
          Relationship222[Relationship222["DEFAULT"] = 1] = "DEFAULT";
          Relationship222[Relationship222["CONTAINS"] = 2] = "CONTAINS";
          Relationship222[Relationship222["CONTAINED_BY"] = 3] = "CONTAINED_BY";
          Relationship222[Relationship222["USES"] = 4] = "USES";
          Relationship222[Relationship222["USED_BY"] = 5] = "USED_BY";
          Relationship222[Relationship222["COMMANDS"] = 6] = "COMMANDS";
          Relationship222[Relationship222["COMMANDED_BY"] = 7] = "COMMANDED_BY";
          Relationship222[Relationship222["ADJUSTS"] = 8] = "ADJUSTS";
          Relationship222[Relationship222["ADJUSTED_BY"] = 9] = "ADJUSTED_BY";
          Relationship222[Relationship222["INGRESS"] = 10] = "INGRESS";
          Relationship222[Relationship222["EGRESS"] = 11] = "EGRESS";
          Relationship222[Relationship222["SUPPLIES_AIR"] = 12] = "SUPPLIES_AIR";
          Relationship222[Relationship222["RECEIVES_AIR"] = 13] = "RECEIVES_AIR";
          Relationship222[Relationship222["SUPPLIES_HOT_AIR"] = 14] = "SUPPLIES_HOT_AIR";
          Relationship222[Relationship222["RECEIVES_HOT_AIR"] = 15] = "RECEIVES_HOT_AIR";
          Relationship222[Relationship222["SUPPLIES_COOL_AIR"] = 16] = "SUPPLIES_COOL_AIR";
          Relationship222[Relationship222["RECEIVES_COOL_AIR"] = 17] = "RECEIVES_COOL_AIR";
          Relationship222[Relationship222["SUPPLIES_POWER"] = 18] = "SUPPLIES_POWER";
          Relationship222[Relationship222["RECEIVES_POWER"] = 19] = "RECEIVES_POWER";
          Relationship222[Relationship222["SUPPLIES_GAS"] = 20] = "SUPPLIES_GAS";
          Relationship222[Relationship222["RECEIVES_GAS"] = 21] = "RECEIVES_GAS";
          Relationship222[Relationship222["SUPPLIES_WATER"] = 22] = "SUPPLIES_WATER";
          Relationship222[Relationship222["RECEIVES_WATER"] = 23] = "RECEIVES_WATER";
          Relationship222[Relationship222["SUPPLIES_HOT_WATER"] = 24] = "SUPPLIES_HOT_WATER";
          Relationship222[Relationship222["RECEIVES_HOT_WATER"] = 25] = "RECEIVES_HOT_WATER";
          Relationship222[Relationship222["SUPPLIES_COOL_WATER"] = 26] = "SUPPLIES_COOL_WATER";
          Relationship222[Relationship222["RECEIVES_COOL_WATER"] = 27] = "RECEIVES_COOL_WATER";
          Relationship222[Relationship222["SUPPLIES_STEAM"] = 28] = "SUPPLIES_STEAM";
          Relationship222[Relationship222["RECEIVES_STEAM"] = 29] = "RECEIVES_STEAM";
          return Relationship222;
        })(Relationship22 || {});
        var Reliability22 = /* @__PURE__ */ ((Reliability222) => {
          Reliability222[Reliability222["NO_FAULT_DETECTED"] = 0] = "NO_FAULT_DETECTED";
          Reliability222[Reliability222["NO_SENSOR"] = 1] = "NO_SENSOR";
          Reliability222[Reliability222["OVER_RANGE"] = 2] = "OVER_RANGE";
          Reliability222[Reliability222["UNDER_RANGE"] = 3] = "UNDER_RANGE";
          Reliability222[Reliability222["OPEN_LOOP"] = 4] = "OPEN_LOOP";
          Reliability222[Reliability222["SHORTED_LOOP"] = 5] = "SHORTED_LOOP";
          Reliability222[Reliability222["NO_OUTPUT"] = 6] = "NO_OUTPUT";
          Reliability222[Reliability222["UNRELIABLE_OTHER"] = 7] = "UNRELIABLE_OTHER";
          Reliability222[Reliability222["PROCESS_ERROR"] = 8] = "PROCESS_ERROR";
          Reliability222[Reliability222["MULTI_STATE_FAULT"] = 9] = "MULTI_STATE_FAULT";
          Reliability222[Reliability222["CONFIGURATION_ERROR"] = 10] = "CONFIGURATION_ERROR";
          Reliability222[Reliability222["COMMUNICATION_FAILURE"] = 12] = "COMMUNICATION_FAILURE";
          Reliability222[Reliability222["MEMBER_FAULT"] = 13] = "MEMBER_FAULT";
          Reliability222[Reliability222["MONITORED_OBJECT_FAULT"] = 14] = "MONITORED_OBJECT_FAULT";
          Reliability222[Reliability222["TRIPPED"] = 15] = "TRIPPED";
          Reliability222[Reliability222["LAMP_FAILURE"] = 16] = "LAMP_FAILURE";
          Reliability222[Reliability222["ACTIVATION_FAILURE"] = 17] = "ACTIVATION_FAILURE";
          Reliability222[Reliability222["RENEW_DHCP_FAILURE"] = 18] = "RENEW_DHCP_FAILURE";
          Reliability222[Reliability222["RENEW_FD_REGISTRATION_FAILURE"] = 19] = "RENEW_FD_REGISTRATION_FAILURE";
          Reliability222[Reliability222["RESTART_AUTO_NEGOTIATION_FAILURE"] = 20] = "RESTART_AUTO_NEGOTIATION_FAILURE";
          Reliability222[Reliability222["RESTART_FAILURE"] = 21] = "RESTART_FAILURE";
          Reliability222[Reliability222["PROPRIETARY_COMMAND_FAILURE"] = 22] = "PROPRIETARY_COMMAND_FAILURE";
          Reliability222[Reliability222["FAULTS_LISTED"] = 23] = "FAULTS_LISTED";
          Reliability222[Reliability222["REFERENCED_OBJECT_FAULT"] = 24] = "REFERENCED_OBJECT_FAULT";
          return Reliability222;
        })(Reliability22 || {});
        var RestartReason22 = /* @__PURE__ */ ((RestartReason222) => {
          RestartReason222[RestartReason222["UNKNOWN"] = 0] = "UNKNOWN";
          RestartReason222[RestartReason222["COLDSTART"] = 1] = "COLDSTART";
          RestartReason222[RestartReason222["WARMSTART"] = 2] = "WARMSTART";
          RestartReason222[RestartReason222["DETECTED_POWER_LOST"] = 3] = "DETECTED_POWER_LOST";
          RestartReason222[RestartReason222["DETECTED_POWERED_OFF"] = 4] = "DETECTED_POWERED_OFF";
          RestartReason222[RestartReason222["HARDWARE_WATCHDOG"] = 5] = "HARDWARE_WATCHDOG";
          RestartReason222[RestartReason222["SOFTWARE_WATCHDOG"] = 6] = "SOFTWARE_WATCHDOG";
          RestartReason222[RestartReason222["SUSPENDED"] = 7] = "SUSPENDED";
          RestartReason222[RestartReason222["ACTIVATE_CHANGES"] = 8] = "ACTIVATE_CHANGES";
          return RestartReason222;
        })(RestartReason22 || {});
        var SecurityLevel22 = /* @__PURE__ */ ((SecurityLevel222) => {
          SecurityLevel222[SecurityLevel222["INCAPABLE"] = 0] = "INCAPABLE";
          SecurityLevel222[SecurityLevel222["PLAIN"] = 1] = "PLAIN";
          SecurityLevel222[SecurityLevel222["SIGNED"] = 2] = "SIGNED";
          SecurityLevel222[SecurityLevel222["ENCRYPTED"] = 3] = "ENCRYPTED";
          SecurityLevel222[SecurityLevel222["SIGNED_END_TO_END"] = 4] = "SIGNED_END_TO_END";
          SecurityLevel222[SecurityLevel222["ENCRYPTED_END_TO_END"] = 5] = "ENCRYPTED_END_TO_END";
          return SecurityLevel222;
        })(SecurityLevel22 || {});
        var SecurityPolicy22 = /* @__PURE__ */ ((SecurityPolicy222) => {
          SecurityPolicy222[SecurityPolicy222["PLAIN_NON_TRUSTED"] = 0] = "PLAIN_NON_TRUSTED";
          SecurityPolicy222[SecurityPolicy222["PLAIN_TRUSTED"] = 1] = "PLAIN_TRUSTED";
          SecurityPolicy222[SecurityPolicy222["SIGNED_TRUSTED"] = 2] = "SIGNED_TRUSTED";
          SecurityPolicy222[SecurityPolicy222["ENCRYPTED_TRUSTED"] = 3] = "ENCRYPTED_TRUSTED";
          return SecurityPolicy222;
        })(SecurityPolicy22 || {});
        var Segmentation22 = /* @__PURE__ */ ((Segmentation222) => {
          Segmentation222[Segmentation222["SEGMENTED_BOTH"] = 0] = "SEGMENTED_BOTH";
          Segmentation222[Segmentation222["SEGMENTED_TRANSMIT"] = 1] = "SEGMENTED_TRANSMIT";
          Segmentation222[Segmentation222["SEGMENTED_RECEIVE"] = 2] = "SEGMENTED_RECEIVE";
          Segmentation222[Segmentation222["NO_SEGMENTATION"] = 3] = "NO_SEGMENTATION";
          return Segmentation222;
        })(Segmentation22 || {});
        var ShedState22 = /* @__PURE__ */ ((ShedState222) => {
          ShedState222[ShedState222["SHED_INACTIVE"] = 0] = "SHED_INACTIVE";
          ShedState222[ShedState222["SHED_REQUEST_PENDING"] = 1] = "SHED_REQUEST_PENDING";
          ShedState222[ShedState222["SHED_COMPLIANT"] = 2] = "SHED_COMPLIANT";
          ShedState222[ShedState222["SHED_NON_COMPLIANT"] = 3] = "SHED_NON_COMPLIANT";
          return ShedState222;
        })(ShedState22 || {});
        var SilencedState22 = /* @__PURE__ */ ((SilencedState222) => {
          SilencedState222[SilencedState222["UNSILENCED"] = 0] = "UNSILENCED";
          SilencedState222[SilencedState222["AUDIBLE_SILENCED"] = 1] = "AUDIBLE_SILENCED";
          SilencedState222[SilencedState222["VISIBLE_SILENCED"] = 2] = "VISIBLE_SILENCED";
          SilencedState222[SilencedState222["ALL_SILENCED"] = 3] = "ALL_SILENCED";
          return SilencedState222;
        })(SilencedState22 || {});
        var TimerState22 = /* @__PURE__ */ ((TimerState222) => {
          TimerState222[TimerState222["IDLE"] = 0] = "IDLE";
          TimerState222[TimerState222["RUNNING"] = 1] = "RUNNING";
          TimerState222[TimerState222["EXPIRED"] = 2] = "EXPIRED";
          return TimerState222;
        })(TimerState22 || {});
        var TimerTransition22 = /* @__PURE__ */ ((TimerTransition222) => {
          TimerTransition222[TimerTransition222["NONE"] = 0] = "NONE";
          TimerTransition222[TimerTransition222["IDLE_TO_RUNNING"] = 1] = "IDLE_TO_RUNNING";
          TimerTransition222[TimerTransition222["RUNNING_TO_IDLE"] = 2] = "RUNNING_TO_IDLE";
          TimerTransition222[TimerTransition222["RUNNING_TO_RUNNING"] = 3] = "RUNNING_TO_RUNNING";
          TimerTransition222[TimerTransition222["RUNNING_TO_EXPIRED"] = 4] = "RUNNING_TO_EXPIRED";
          TimerTransition222[TimerTransition222["FORCED_TO_EXPIRED"] = 5] = "FORCED_TO_EXPIRED";
          TimerTransition222[TimerTransition222["EXPIRED_TO_IDLE"] = 6] = "EXPIRED_TO_IDLE";
          TimerTransition222[TimerTransition222["EXPIRED_TO_RUNNING"] = 7] = "EXPIRED_TO_RUNNING";
          return TimerTransition222;
        })(TimerTransition22 || {});
        var VTClass22 = /* @__PURE__ */ ((VTClass222) => {
          VTClass222[VTClass222["DEFAULT_TERMINAL"] = 0] = "DEFAULT_TERMINAL";
          VTClass222[VTClass222["ANSI_X3_64"] = 1] = "ANSI_X3_64";
          VTClass222[VTClass222["DEC_VT52"] = 2] = "DEC_VT52";
          VTClass222[VTClass222["DEC_VT100"] = 3] = "DEC_VT100";
          VTClass222[VTClass222["DEC_VT220"] = 4] = "DEC_VT220";
          VTClass222[VTClass222["HP_700_94"] = 5] = "HP_700_94";
          VTClass222[VTClass222["IBM_3130"] = 6] = "IBM_3130";
          return VTClass222;
        })(VTClass22 || {});
        var WriteStatus22 = /* @__PURE__ */ ((WriteStatus222) => {
          WriteStatus222[WriteStatus222["IDLE"] = 0] = "IDLE";
          WriteStatus222[WriteStatus222["IN_PROGRESS"] = 1] = "IN_PROGRESS";
          WriteStatus222[WriteStatus222["SUCCESSFUL"] = 2] = "SUCCESSFUL";
          WriteStatus222[WriteStatus222["FAILED"] = 3] = "FAILED";
          return WriteStatus222;
        })(WriteStatus22 || {});
        var DaysOfWeek22 = /* @__PURE__ */ ((DaysOfWeek222) => {
          DaysOfWeek222[DaysOfWeek222["MONDAY"] = 0] = "MONDAY";
          DaysOfWeek222[DaysOfWeek222["TUESDAY"] = 1] = "TUESDAY";
          DaysOfWeek222[DaysOfWeek222["WEDNESDAY"] = 2] = "WEDNESDAY";
          DaysOfWeek222[DaysOfWeek222["THURSDAY"] = 3] = "THURSDAY";
          DaysOfWeek222[DaysOfWeek222["FRIDAY"] = 4] = "FRIDAY";
          DaysOfWeek222[DaysOfWeek222["SATURDAY"] = 5] = "SATURDAY";
          DaysOfWeek222[DaysOfWeek222["SUNDAY"] = 6] = "SUNDAY";
          return DaysOfWeek222;
        })(DaysOfWeek22 || {});
        var EventTransitionBits22 = /* @__PURE__ */ ((EventTransitionBits222) => {
          EventTransitionBits222[EventTransitionBits222["TO_OFFNORMAL"] = 0] = "TO_OFFNORMAL";
          EventTransitionBits222[EventTransitionBits222["TO_FAULT"] = 1] = "TO_FAULT";
          EventTransitionBits222[EventTransitionBits222["TO_NORMAL"] = 2] = "TO_NORMAL";
          return EventTransitionBits222;
        })(EventTransitionBits22 || {});
        var LimitEnable22 = /* @__PURE__ */ ((LimitEnable222) => {
          LimitEnable222[LimitEnable222["LOW_LIMIT_ENABLE"] = 0] = "LOW_LIMIT_ENABLE";
          LimitEnable222[LimitEnable222["HIGH_LIMIT_ENABLE"] = 1] = "HIGH_LIMIT_ENABLE";
          return LimitEnable222;
        })(LimitEnable22 || {});
        var LogStatus22 = /* @__PURE__ */ ((LogStatus222) => {
          LogStatus222[LogStatus222["LOG_DISABLED"] = 0] = "LOG_DISABLED";
          LogStatus222[LogStatus222["BUFFER_PURGED"] = 1] = "BUFFER_PURGED";
          LogStatus222[LogStatus222["LOG_INTERRUPTED"] = 2] = "LOG_INTERRUPTED";
          return LogStatus222;
        })(LogStatus22 || {});
        var ObjectTypesSupported22 = /* @__PURE__ */ ((ObjectTypesSupported222) => {
          ObjectTypesSupported222[ObjectTypesSupported222["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["BINARY_INPUT"] = 3] = "BINARY_INPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["BINARY_VALUE"] = 5] = "BINARY_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["CALENDAR"] = 6] = "CALENDAR";
          ObjectTypesSupported222[ObjectTypesSupported222["COMMAND"] = 7] = "COMMAND";
          ObjectTypesSupported222[ObjectTypesSupported222["DEVICE"] = 8] = "DEVICE";
          ObjectTypesSupported222[ObjectTypesSupported222["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
          ObjectTypesSupported222[ObjectTypesSupported222["FILE"] = 10] = "FILE";
          ObjectTypesSupported222[ObjectTypesSupported222["GROUP"] = 11] = "GROUP";
          ObjectTypesSupported222[ObjectTypesSupported222["LOOP"] = 12] = "LOOP";
          ObjectTypesSupported222[ObjectTypesSupported222["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
          ObjectTypesSupported222[ObjectTypesSupported222["PROGRAM"] = 16] = "PROGRAM";
          ObjectTypesSupported222[ObjectTypesSupported222["SCHEDULE"] = 17] = "SCHEDULE";
          ObjectTypesSupported222[ObjectTypesSupported222["AVERAGING"] = 18] = "AVERAGING";
          ObjectTypesSupported222[ObjectTypesSupported222["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["TREND_LOG"] = 20] = "TREND_LOG";
          ObjectTypesSupported222[ObjectTypesSupported222["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
          ObjectTypesSupported222[ObjectTypesSupported222["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
          ObjectTypesSupported222[ObjectTypesSupported222["ACCUMULATOR"] = 23] = "ACCUMULATOR";
          ObjectTypesSupported222[ObjectTypesSupported222["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
          ObjectTypesSupported222[ObjectTypesSupported222["EVENT_LOG"] = 25] = "EVENT_LOG";
          ObjectTypesSupported222[ObjectTypesSupported222["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
          ObjectTypesSupported222[ObjectTypesSupported222["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
          ObjectTypesSupported222[ObjectTypesSupported222["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
          ObjectTypesSupported222[ObjectTypesSupported222["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
          ObjectTypesSupported222[ObjectTypesSupported222["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
          ObjectTypesSupported222[ObjectTypesSupported222["TIMER"] = 31] = "TIMER";
          ObjectTypesSupported222[ObjectTypesSupported222["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
          ObjectTypesSupported222[ObjectTypesSupported222["ACCESS_POINT"] = 33] = "ACCESS_POINT";
          ObjectTypesSupported222[ObjectTypesSupported222["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
          ObjectTypesSupported222[ObjectTypesSupported222["ACCESS_USER"] = 35] = "ACCESS_USER";
          ObjectTypesSupported222[ObjectTypesSupported222["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
          ObjectTypesSupported222[ObjectTypesSupported222["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
          ObjectTypesSupported222[ObjectTypesSupported222["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["DATE_VALUE"] = 42] = "DATE_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["TIME_VALUE"] = 50] = "TIME_VALUE";
          ObjectTypesSupported222[ObjectTypesSupported222["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
          ObjectTypesSupported222[ObjectTypesSupported222["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
          ObjectTypesSupported222[ObjectTypesSupported222["CHANNEL"] = 53] = "CHANNEL";
          ObjectTypesSupported222[ObjectTypesSupported222["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
          ObjectTypesSupported222[ObjectTypesSupported222["NETWORK_PORT"] = 56] = "NETWORK_PORT";
          ObjectTypesSupported222[ObjectTypesSupported222["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
          ObjectTypesSupported222[ObjectTypesSupported222["ESCALATOR"] = 58] = "ESCALATOR";
          ObjectTypesSupported222[ObjectTypesSupported222["LIFT"] = 59] = "LIFT";
          return ObjectTypesSupported222;
        })(ObjectTypesSupported22 || {});
        var ResultFlags22 = /* @__PURE__ */ ((ResultFlags222) => {
          ResultFlags222[ResultFlags222["FIRST_ITEM"] = 0] = "FIRST_ITEM";
          ResultFlags222[ResultFlags222["LAST_ITEM"] = 1] = "LAST_ITEM";
          ResultFlags222[ResultFlags222["MORE_ITEMS"] = 2] = "MORE_ITEMS";
          return ResultFlags222;
        })(ResultFlags22 || {});
        var ServicesSupported22 = /* @__PURE__ */ ((ServicesSupported222) => {
          ServicesSupported222[ServicesSupported222["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
          ServicesSupported222[ServicesSupported222["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
          ServicesSupported222[ServicesSupported222["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
          ServicesSupported222[ServicesSupported222["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
          ServicesSupported222[ServicesSupported222["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
          ServicesSupported222[ServicesSupported222["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
          ServicesSupported222[ServicesSupported222["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
          ServicesSupported222[ServicesSupported222["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
          ServicesSupported222[ServicesSupported222["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
          ServicesSupported222[ServicesSupported222["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
          ServicesSupported222[ServicesSupported222["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
          ServicesSupported222[ServicesSupported222["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
          ServicesSupported222[ServicesSupported222["READ_PROPERTY"] = 12] = "READ_PROPERTY";
          ServicesSupported222[ServicesSupported222["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
          ServicesSupported222[ServicesSupported222["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
          ServicesSupported222[ServicesSupported222["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
          ServicesSupported222[ServicesSupported222["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
          ServicesSupported222[ServicesSupported222["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
          ServicesSupported222[ServicesSupported222["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
          ServicesSupported222[ServicesSupported222["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
          ServicesSupported222[ServicesSupported222["VT_OPEN"] = 21] = "VT_OPEN";
          ServicesSupported222[ServicesSupported222["VT_CLOSE"] = 22] = "VT_CLOSE";
          ServicesSupported222[ServicesSupported222["VT_DATA"] = 23] = "VT_DATA";
          ServicesSupported222[ServicesSupported222["READ_PROPERTY_CONDITIONAL"] = 13] = "READ_PROPERTY_CONDITIONAL";
          ServicesSupported222[ServicesSupported222["AUTHENTICATE"] = 24] = "AUTHENTICATE";
          ServicesSupported222[ServicesSupported222["REQUEST_KEY"] = 25] = "REQUEST_KEY";
          ServicesSupported222[ServicesSupported222["I_AM"] = 26] = "I_AM";
          ServicesSupported222[ServicesSupported222["I_HAVE"] = 27] = "I_HAVE";
          ServicesSupported222[ServicesSupported222["UNCONFIRMED_COV_NOTIFICATION"] = 28] = "UNCONFIRMED_COV_NOTIFICATION";
          ServicesSupported222[ServicesSupported222["UNCONFIRMED_EVENT_NOTIFICATION"] = 29] = "UNCONFIRMED_EVENT_NOTIFICATION";
          ServicesSupported222[ServicesSupported222["UNCONFIRMED_PRIVATE_TRANSFER"] = 30] = "UNCONFIRMED_PRIVATE_TRANSFER";
          ServicesSupported222[ServicesSupported222["UNCONFIRMED_TEXT_MESSAGE"] = 31] = "UNCONFIRMED_TEXT_MESSAGE";
          ServicesSupported222[ServicesSupported222["TIME_SYNCHRONIZATION"] = 32] = "TIME_SYNCHRONIZATION";
          ServicesSupported222[ServicesSupported222["WHO_HAS"] = 33] = "WHO_HAS";
          ServicesSupported222[ServicesSupported222["WHO_IS"] = 34] = "WHO_IS";
          ServicesSupported222[ServicesSupported222["READ_RANGE"] = 35] = "READ_RANGE";
          ServicesSupported222[ServicesSupported222["UTC_TIME_SYNCHRONIZATION"] = 36] = "UTC_TIME_SYNCHRONIZATION";
          ServicesSupported222[ServicesSupported222["LIFE_SAFETY_OPERATION"] = 37] = "LIFE_SAFETY_OPERATION";
          ServicesSupported222[ServicesSupported222["SUBSCRIBE_COV_PROPERTY"] = 38] = "SUBSCRIBE_COV_PROPERTY";
          ServicesSupported222[ServicesSupported222["GET_EVENT_INFORMATION"] = 39] = "GET_EVENT_INFORMATION";
          ServicesSupported222[ServicesSupported222["WRITE_GROUP"] = 40] = "WRITE_GROUP";
          ServicesSupported222[ServicesSupported222["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 41] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
          ServicesSupported222[ServicesSupported222["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 42] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
          ServicesSupported222[ServicesSupported222["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 43] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
          return ServicesSupported222;
        })(ServicesSupported22 || {});
        var StatusFlags22 = /* @__PURE__ */ ((StatusFlags222) => {
          StatusFlags222[StatusFlags222["IN_ALARM"] = 0] = "IN_ALARM";
          StatusFlags222[StatusFlags222["FAULT"] = 1] = "FAULT";
          StatusFlags222[StatusFlags222["OVERRIDDEN"] = 2] = "OVERRIDDEN";
          StatusFlags222[StatusFlags222["OUT_OF_SERVICE"] = 3] = "OUT_OF_SERVICE";
          return StatusFlags222;
        })(StatusFlags22 || {});
        var ApplicationTag22 = /* @__PURE__ */ ((ApplicationTag222) => {
          ApplicationTag222[ApplicationTag222["NULL"] = 0] = "NULL";
          ApplicationTag222[ApplicationTag222["BOOLEAN"] = 1] = "BOOLEAN";
          ApplicationTag222[ApplicationTag222["UNSIGNED_INTEGER"] = 2] = "UNSIGNED_INTEGER";
          ApplicationTag222[ApplicationTag222["SIGNED_INTEGER"] = 3] = "SIGNED_INTEGER";
          ApplicationTag222[ApplicationTag222["REAL"] = 4] = "REAL";
          ApplicationTag222[ApplicationTag222["DOUBLE"] = 5] = "DOUBLE";
          ApplicationTag222[ApplicationTag222["OCTET_STRING"] = 6] = "OCTET_STRING";
          ApplicationTag222[ApplicationTag222["CHARACTER_STRING"] = 7] = "CHARACTER_STRING";
          ApplicationTag222[ApplicationTag222["BIT_STRING"] = 8] = "BIT_STRING";
          ApplicationTag222[ApplicationTag222["ENUMERATED"] = 9] = "ENUMERATED";
          ApplicationTag222[ApplicationTag222["DATE"] = 10] = "DATE";
          ApplicationTag222[ApplicationTag222["TIME"] = 11] = "TIME";
          ApplicationTag222[ApplicationTag222["OBJECTIDENTIFIER"] = 12] = "OBJECTIDENTIFIER";
          ApplicationTag222[ApplicationTag222["EMPTYLIST"] = 100] = "EMPTYLIST";
          ApplicationTag222[ApplicationTag222["WEEKNDAY"] = 101] = "WEEKNDAY";
          ApplicationTag222[ApplicationTag222["DATERANGE"] = 102] = "DATERANGE";
          ApplicationTag222[ApplicationTag222["DATETIME"] = 103] = "DATETIME";
          ApplicationTag222[ApplicationTag222["TIMESTAMP"] = 104] = "TIMESTAMP";
          ApplicationTag222[ApplicationTag222["ERROR"] = 105] = "ERROR";
          ApplicationTag222[ApplicationTag222["DEVICE_OBJECT_PROPERTY_REFERENCE"] = 106] = "DEVICE_OBJECT_PROPERTY_REFERENCE";
          ApplicationTag222[ApplicationTag222["DEVICE_OBJECT_REFERENCE"] = 107] = "DEVICE_OBJECT_REFERENCE";
          ApplicationTag222[ApplicationTag222["OBJECT_PROPERTY_REFERENCE"] = 108] = "OBJECT_PROPERTY_REFERENCE";
          ApplicationTag222[ApplicationTag222["DESTINATION"] = 109] = "DESTINATION";
          ApplicationTag222[ApplicationTag222["RECIPIENT"] = 110] = "RECIPIENT";
          ApplicationTag222[ApplicationTag222["COV_SUBSCRIPTION"] = 111] = "COV_SUBSCRIPTION";
          ApplicationTag222[ApplicationTag222["CALENDAR_ENTRY"] = 112] = "CALENDAR_ENTRY";
          ApplicationTag222[ApplicationTag222["WEEKLY_SCHEDULE"] = 113] = "WEEKLY_SCHEDULE";
          ApplicationTag222[ApplicationTag222["SPECIAL_EVENT"] = 114] = "SPECIAL_EVENT";
          ApplicationTag222[ApplicationTag222["READ_ACCESS_SPECIFICATION"] = 115] = "READ_ACCESS_SPECIFICATION";
          ApplicationTag222[ApplicationTag222["READ_ACCESS_RESULT"] = 116] = "READ_ACCESS_RESULT";
          ApplicationTag222[ApplicationTag222["LIGHTING_COMMAND"] = 117] = "LIGHTING_COMMAND";
          ApplicationTag222[ApplicationTag222["CONTEXT_SPECIFIC_DECODED"] = 118] = "CONTEXT_SPECIFIC_DECODED";
          ApplicationTag222[ApplicationTag222["CONTEXT_SPECIFIC_ENCODED"] = 119] = "CONTEXT_SPECIFIC_ENCODED";
          ApplicationTag222[ApplicationTag222["LOG_RECORD"] = 120] = "LOG_RECORD";
          return ApplicationTag222;
        })(ApplicationTag22 || {});
        var ApplicationTagName22 = invertEnum22(
          ApplicationTag22
        );
        var BvlcResultFormat22 = /* @__PURE__ */ ((BvlcResultFormat222) => {
          BvlcResultFormat222[BvlcResultFormat222["SUCCESSFUL_COMPLETION"] = 0] = "SUCCESSFUL_COMPLETION";
          BvlcResultFormat222[BvlcResultFormat222["WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 16] = "WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK";
          BvlcResultFormat222[BvlcResultFormat222["READ_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 32] = "READ_BROADCAST_DISTRIBUTION_TABLE_NAK";
          BvlcResultFormat222[BvlcResultFormat222["REGISTER_FOREIGN_DEVICE_NAK"] = 48] = "REGISTER_FOREIGN_DEVICE_NAK";
          BvlcResultFormat222[BvlcResultFormat222["READ_FOREIGN_DEVICE_TABLE_NAK"] = 64] = "READ_FOREIGN_DEVICE_TABLE_NAK";
          BvlcResultFormat222[BvlcResultFormat222["DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK"] = 80] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK";
          BvlcResultFormat222[BvlcResultFormat222["DISTRIBUTE_BROADCAST_TO_NETWORK_NAK"] = 96] = "DISTRIBUTE_BROADCAST_TO_NETWORK_NAK";
          return BvlcResultFormat222;
        })(BvlcResultFormat22 || {});
        var BvlcResultPurpose22 = /* @__PURE__ */ ((BvlcResultPurpose222) => {
          BvlcResultPurpose222[BvlcResultPurpose222["BVLC_RESULT"] = 0] = "BVLC_RESULT";
          BvlcResultPurpose222[BvlcResultPurpose222["WRITE_BROADCAST_DISTRIBUTION_TABLE"] = 1] = "WRITE_BROADCAST_DISTRIBUTION_TABLE";
          BvlcResultPurpose222[BvlcResultPurpose222["READ_BROADCAST_DISTRIBUTION_TABLE"] = 2] = "READ_BROADCAST_DISTRIBUTION_TABLE";
          BvlcResultPurpose222[BvlcResultPurpose222["READ_BROADCAST_DISTRIBUTION_TABLE_ACK"] = 3] = "READ_BROADCAST_DISTRIBUTION_TABLE_ACK";
          BvlcResultPurpose222[BvlcResultPurpose222["FORWARDED_NPDU"] = 4] = "FORWARDED_NPDU";
          BvlcResultPurpose222[BvlcResultPurpose222["REGISTER_FOREIGN_DEVICE"] = 5] = "REGISTER_FOREIGN_DEVICE";
          BvlcResultPurpose222[BvlcResultPurpose222["READ_FOREIGN_DEVICE_TABLE"] = 6] = "READ_FOREIGN_DEVICE_TABLE";
          BvlcResultPurpose222[BvlcResultPurpose222["READ_FOREIGN_DEVICE_TABLE_ACK"] = 7] = "READ_FOREIGN_DEVICE_TABLE_ACK";
          BvlcResultPurpose222[BvlcResultPurpose222["DELETE_FOREIGN_DEVICE_TABLE_ENTRY"] = 8] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY";
          BvlcResultPurpose222[BvlcResultPurpose222["DISTRIBUTE_BROADCAST_TO_NETWORK"] = 9] = "DISTRIBUTE_BROADCAST_TO_NETWORK";
          BvlcResultPurpose222[BvlcResultPurpose222["ORIGINAL_UNICAST_NPDU"] = 10] = "ORIGINAL_UNICAST_NPDU";
          BvlcResultPurpose222[BvlcResultPurpose222["ORIGINAL_BROADCAST_NPDU"] = 11] = "ORIGINAL_BROADCAST_NPDU";
          BvlcResultPurpose222[BvlcResultPurpose222["SECURE_BVLL"] = 12] = "SECURE_BVLL";
          return BvlcResultPurpose222;
        })(BvlcResultPurpose22 || {});
        var CharacterStringEncoding22 = /* @__PURE__ */ ((CharacterStringEncoding222) => {
          CharacterStringEncoding222[CharacterStringEncoding222["UTF_8"] = 0] = "UTF_8";
          CharacterStringEncoding222[CharacterStringEncoding222["MICROSOFT_DBCS"] = 1] = "MICROSOFT_DBCS";
          CharacterStringEncoding222[CharacterStringEncoding222["JIS_X_0208"] = 2] = "JIS_X_0208";
          CharacterStringEncoding222[CharacterStringEncoding222["UCS_4"] = 3] = "UCS_4";
          CharacterStringEncoding222[CharacterStringEncoding222["UCS_2"] = 4] = "UCS_2";
          CharacterStringEncoding222[CharacterStringEncoding222["ISO_8859_1"] = 5] = "ISO_8859_1";
          return CharacterStringEncoding222;
        })(CharacterStringEncoding22 || {});
        var CovType22 = /* @__PURE__ */ ((CovType222) => {
          CovType222[CovType222["REAL"] = 0] = "REAL";
          CovType222[CovType222["BIT_STRING"] = 1] = "BIT_STRING";
          return CovType222;
        })(CovType22 || {});
        var EnableDisable22 = /* @__PURE__ */ ((EnableDisable222) => {
          EnableDisable222[EnableDisable222["ENABLE"] = 0] = "ENABLE";
          EnableDisable222[EnableDisable222["DISABLE"] = 1] = "DISABLE";
          EnableDisable222[EnableDisable222["DISABLE_INITIATION"] = 2] = "DISABLE_INITIATION";
          return EnableDisable222;
        })(EnableDisable22 || {});
        var MaxApduLengthAccepted22 = /* @__PURE__ */ ((MaxApduLengthAccepted222) => {
          MaxApduLengthAccepted222[MaxApduLengthAccepted222["OCTETS_50"] = 0] = "OCTETS_50";
          MaxApduLengthAccepted222[MaxApduLengthAccepted222["OCTETS_128"] = 1] = "OCTETS_128";
          MaxApduLengthAccepted222[MaxApduLengthAccepted222["OCTETS_206"] = 2] = "OCTETS_206";
          MaxApduLengthAccepted222[MaxApduLengthAccepted222["OCTETS_480"] = 3] = "OCTETS_480";
          MaxApduLengthAccepted222[MaxApduLengthAccepted222["OCTETS_1024"] = 4] = "OCTETS_1024";
          MaxApduLengthAccepted222[MaxApduLengthAccepted222["OCTETS_1476"] = 5] = "OCTETS_1476";
          return MaxApduLengthAccepted222;
        })(MaxApduLengthAccepted22 || {});
        var MaxSegmentsAccepted22 = /* @__PURE__ */ ((MaxSegmentsAccepted222) => {
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_0"] = 0] = "SEGMENTS_0";
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_2"] = 16] = "SEGMENTS_2";
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_4"] = 32] = "SEGMENTS_4";
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_8"] = 48] = "SEGMENTS_8";
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_16"] = 64] = "SEGMENTS_16";
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_32"] = 80] = "SEGMENTS_32";
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_64"] = 96] = "SEGMENTS_64";
          MaxSegmentsAccepted222[MaxSegmentsAccepted222["SEGMENTS_65"] = 112] = "SEGMENTS_65";
          return MaxSegmentsAccepted222;
        })(MaxSegmentsAccepted22 || {});
        var NetworkLayerMessageType22 = /* @__PURE__ */ ((NetworkLayerMessageType222) => {
          NetworkLayerMessageType222[NetworkLayerMessageType222["WHO_IS_ROUTER_TO_NETWORK"] = 0] = "WHO_IS_ROUTER_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["I_AM_ROUTER_TO_NETWORK"] = 1] = "I_AM_ROUTER_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["I_COULD_BE_ROUTER_TO_NETWORK"] = 2] = "I_COULD_BE_ROUTER_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["REJECT_MESSAGE_TO_NETWORK"] = 3] = "REJECT_MESSAGE_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["ROUTER_BUSY_TO_NETWORK"] = 4] = "ROUTER_BUSY_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["ROUTER_AVAILABLE_TO_NETWORK"] = 5] = "ROUTER_AVAILABLE_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["INITIALIZE_ROUTING_TABLE"] = 6] = "INITIALIZE_ROUTING_TABLE";
          NetworkLayerMessageType222[NetworkLayerMessageType222["INITIALIZE_ROUTING_TABLE_ACK"] = 7] = "INITIALIZE_ROUTING_TABLE_ACK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["ESTABLISH_CONNECTION_TO_NETWORK"] = 8] = "ESTABLISH_CONNECTION_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["DISCONNECT_CONNECTION_TO_NETWORK"] = 9] = "DISCONNECT_CONNECTION_TO_NETWORK";
          NetworkLayerMessageType222[NetworkLayerMessageType222["CHALLENGE_REQUEST"] = 10] = "CHALLENGE_REQUEST";
          NetworkLayerMessageType222[NetworkLayerMessageType222["SECURITY_PAYLOAD"] = 11] = "SECURITY_PAYLOAD";
          NetworkLayerMessageType222[NetworkLayerMessageType222["SECURITY_RESPONSE"] = 12] = "SECURITY_RESPONSE";
          NetworkLayerMessageType222[NetworkLayerMessageType222["REQUEST_KEY_UPDATE"] = 13] = "REQUEST_KEY_UPDATE";
          NetworkLayerMessageType222[NetworkLayerMessageType222["UPDATE_KEY_SET"] = 14] = "UPDATE_KEY_SET";
          NetworkLayerMessageType222[NetworkLayerMessageType222["UPDATE_DISTRIBUTION_KEY"] = 15] = "UPDATE_DISTRIBUTION_KEY";
          NetworkLayerMessageType222[NetworkLayerMessageType222["REQUEST_MASTER_KEY"] = 16] = "REQUEST_MASTER_KEY";
          NetworkLayerMessageType222[NetworkLayerMessageType222["SET_MASTER_KEY"] = 17] = "SET_MASTER_KEY";
          NetworkLayerMessageType222[NetworkLayerMessageType222["WHAT_IS_NETWORK_NUMBER"] = 18] = "WHAT_IS_NETWORK_NUMBER";
          NetworkLayerMessageType222[NetworkLayerMessageType222["NETWORK_NUMBER_IS"] = 19] = "NETWORK_NUMBER_IS";
          return NetworkLayerMessageType222;
        })(NetworkLayerMessageType22 || {});
        var NpduControlBit22 = /* @__PURE__ */ ((NpduControlBit222) => {
          NpduControlBit222[NpduControlBit222["EXPECTING_REPLY"] = 4] = "EXPECTING_REPLY";
          NpduControlBit222[NpduControlBit222["SOURCE_SPECIFIED"] = 8] = "SOURCE_SPECIFIED";
          NpduControlBit222[NpduControlBit222["DESTINATION_SPECIFIED"] = 32] = "DESTINATION_SPECIFIED";
          NpduControlBit222[NpduControlBit222["NETWORK_LAYER_MESSAGE"] = 128] = "NETWORK_LAYER_MESSAGE";
          return NpduControlBit222;
        })(NpduControlBit22 || {});
        var NpduControlPriority22 = /* @__PURE__ */ ((NpduControlPriority222) => {
          NpduControlPriority222[NpduControlPriority222["NORMAL_MESSAGE"] = 0] = "NORMAL_MESSAGE";
          NpduControlPriority222[NpduControlPriority222["URGENT_MESSAGE"] = 1] = "URGENT_MESSAGE";
          NpduControlPriority222[NpduControlPriority222["CRITICAL_EQUIPMENT_MESSAGE"] = 2] = "CRITICAL_EQUIPMENT_MESSAGE";
          NpduControlPriority222[NpduControlPriority222["LIFE_SAFETY_MESSAGE"] = 3] = "LIFE_SAFETY_MESSAGE";
          return NpduControlPriority222;
        })(NpduControlPriority22 || {});
        var PduConReqBit22 = /* @__PURE__ */ ((PduConReqBit222) => {
          PduConReqBit222[PduConReqBit222["SEGMENTED_RESPONSE_ACCEPTED"] = 2] = "SEGMENTED_RESPONSE_ACCEPTED";
          PduConReqBit222[PduConReqBit222["MORE_FOLLOWS"] = 4] = "MORE_FOLLOWS";
          PduConReqBit222[PduConReqBit222["SEGMENTED_MESSAGE"] = 8] = "SEGMENTED_MESSAGE";
          return PduConReqBit222;
        })(PduConReqBit22 || {});
        var PduSegAckBit22 = /* @__PURE__ */ ((PduSegAckBit222) => {
          PduSegAckBit222[PduSegAckBit222["SERVER"] = 1] = "SERVER";
          PduSegAckBit222[PduSegAckBit222["NEGATIVE_ACK"] = 2] = "NEGATIVE_ACK";
          return PduSegAckBit222;
        })(PduSegAckBit22 || {});
        var PduType22 = /* @__PURE__ */ ((PduType222) => {
          PduType222[PduType222["CONFIRMED_REQUEST"] = 0] = "CONFIRMED_REQUEST";
          PduType222[PduType222["UNCONFIRMED_REQUEST"] = 16] = "UNCONFIRMED_REQUEST";
          PduType222[PduType222["SIMPLE_ACK"] = 32] = "SIMPLE_ACK";
          PduType222[PduType222["COMPLEX_ACK"] = 48] = "COMPLEX_ACK";
          PduType222[PduType222["SEGMENT_ACK"] = 64] = "SEGMENT_ACK";
          PduType222[PduType222["ERROR"] = 80] = "ERROR";
          PduType222[PduType222["REJECT"] = 96] = "REJECT";
          PduType222[PduType222["ABORT"] = 112] = "ABORT";
          return PduType222;
        })(PduType22 || {});
        var PropertyStates22 = /* @__PURE__ */ ((PropertyStates222) => {
          PropertyStates222[PropertyStates222["BOOLEAN_VALUE"] = 0] = "BOOLEAN_VALUE";
          PropertyStates222[PropertyStates222["BINARY_VALUE"] = 1] = "BINARY_VALUE";
          PropertyStates222[PropertyStates222["EVENT_TYPE"] = 2] = "EVENT_TYPE";
          PropertyStates222[PropertyStates222["POLARITY"] = 3] = "POLARITY";
          PropertyStates222[PropertyStates222["PROGRAM_CHANGE"] = 4] = "PROGRAM_CHANGE";
          PropertyStates222[PropertyStates222["PROGRAM_STATE"] = 5] = "PROGRAM_STATE";
          PropertyStates222[PropertyStates222["REASON_FOR_HALT"] = 6] = "REASON_FOR_HALT";
          PropertyStates222[PropertyStates222["RELIABILITY"] = 7] = "RELIABILITY";
          PropertyStates222[PropertyStates222["STATE"] = 8] = "STATE";
          PropertyStates222[PropertyStates222["SYSTEM_STATUS"] = 9] = "SYSTEM_STATUS";
          PropertyStates222[PropertyStates222["UNITS"] = 10] = "UNITS";
          PropertyStates222[PropertyStates222["UNSIGNED_VALUE"] = 11] = "UNSIGNED_VALUE";
          PropertyStates222[PropertyStates222["LIFE_SAFETY_MODE"] = 12] = "LIFE_SAFETY_MODE";
          PropertyStates222[PropertyStates222["LIFE_SAFETY_STATE"] = 13] = "LIFE_SAFETY_STATE";
          PropertyStates222[PropertyStates222["RESTART_REASON"] = 14] = "RESTART_REASON";
          PropertyStates222[PropertyStates222["DOOR_ALARM_STATE"] = 15] = "DOOR_ALARM_STATE";
          PropertyStates222[PropertyStates222["ACTION"] = 16] = "ACTION";
          PropertyStates222[PropertyStates222["DOOR_SECURED_STATUS"] = 17] = "DOOR_SECURED_STATUS";
          PropertyStates222[PropertyStates222["DOOR_STATUS"] = 18] = "DOOR_STATUS";
          PropertyStates222[PropertyStates222["DOOR_VALUE"] = 19] = "DOOR_VALUE";
          PropertyStates222[PropertyStates222["FILE_ACCESS_METHOD"] = 20] = "FILE_ACCESS_METHOD";
          PropertyStates222[PropertyStates222["LOCK_STATUS"] = 21] = "LOCK_STATUS";
          PropertyStates222[PropertyStates222["LIFE_SAFETY_OPERATION"] = 22] = "LIFE_SAFETY_OPERATION";
          PropertyStates222[PropertyStates222["MAINTENANCE"] = 23] = "MAINTENANCE";
          PropertyStates222[PropertyStates222["NODE_TYPE"] = 24] = "NODE_TYPE";
          PropertyStates222[PropertyStates222["NOTIFY_TYPE"] = 25] = "NOTIFY_TYPE";
          PropertyStates222[PropertyStates222["SECURITY_LEVEL"] = 26] = "SECURITY_LEVEL";
          PropertyStates222[PropertyStates222["SHED_STATE"] = 27] = "SHED_STATE";
          PropertyStates222[PropertyStates222["SILENCED_STATE"] = 28] = "SILENCED_STATE";
          PropertyStates222[PropertyStates222["ACCESS_EVENT"] = 30] = "ACCESS_EVENT";
          PropertyStates222[PropertyStates222["ZONE_OCCUPANCY_STATE"] = 31] = "ZONE_OCCUPANCY_STATE";
          PropertyStates222[PropertyStates222["ACCESS_CREDENTIAL_DISABLE_REASON"] = 32] = "ACCESS_CREDENTIAL_DISABLE_REASON";
          PropertyStates222[PropertyStates222["ACCESS_CREDENTIAL_DISABLE"] = 33] = "ACCESS_CREDENTIAL_DISABLE";
          PropertyStates222[PropertyStates222["AUTHENTICATION_STATUS"] = 34] = "AUTHENTICATION_STATUS";
          PropertyStates222[PropertyStates222["BACKUP_STATE"] = 36] = "BACKUP_STATE";
          PropertyStates222[PropertyStates222["WRITE_STATUS"] = 37] = "WRITE_STATUS";
          PropertyStates222[PropertyStates222["LIGHTING_IN_PROGRESS"] = 38] = "LIGHTING_IN_PROGRESS";
          PropertyStates222[PropertyStates222["LIGHTING_OPERATION"] = 39] = "LIGHTING_OPERATION";
          PropertyStates222[PropertyStates222["LIGHTING_TRANSITION"] = 40] = "LIGHTING_TRANSITION";
          PropertyStates222[PropertyStates222["INTEGER_VALUE"] = 41] = "INTEGER_VALUE";
          PropertyStates222[PropertyStates222["BINARY_LIGHTING_VALUE"] = 42] = "BINARY_LIGHTING_VALUE";
          PropertyStates222[PropertyStates222["TIMER_STATE"] = 43] = "TIMER_STATE";
          PropertyStates222[PropertyStates222["TIMER_TRANSITION"] = 44] = "TIMER_TRANSITION";
          PropertyStates222[PropertyStates222["BACNET_IP_MODE"] = 45] = "BACNET_IP_MODE";
          PropertyStates222[PropertyStates222["NETWORK_PORT_COMMAND"] = 46] = "NETWORK_PORT_COMMAND";
          PropertyStates222[PropertyStates222["NETWORK_TYPE"] = 47] = "NETWORK_TYPE";
          PropertyStates222[PropertyStates222["NETWORK_NUMBER_QUALITY"] = 48] = "NETWORK_NUMBER_QUALITY";
          PropertyStates222[PropertyStates222["ESCALATOR_OPERATION_DIRECTION"] = 49] = "ESCALATOR_OPERATION_DIRECTION";
          PropertyStates222[PropertyStates222["ESCALATOR_FAULT"] = 50] = "ESCALATOR_FAULT";
          PropertyStates222[PropertyStates222["ESCALATOR_MODE"] = 51] = "ESCALATOR_MODE";
          PropertyStates222[PropertyStates222["LIFT_CAR_DIRECTION"] = 52] = "LIFT_CAR_DIRECTION";
          PropertyStates222[PropertyStates222["LIFT_CAR_DOOR_COMMAND"] = 53] = "LIFT_CAR_DOOR_COMMAND";
          PropertyStates222[PropertyStates222["LIFT_CAR_DRIVE_STATUS"] = 54] = "LIFT_CAR_DRIVE_STATUS";
          PropertyStates222[PropertyStates222["LIFT_CAR_MODE"] = 55] = "LIFT_CAR_MODE";
          PropertyStates222[PropertyStates222["LIFT_GROUP_MODE"] = 56] = "LIFT_GROUP_MODE";
          PropertyStates222[PropertyStates222["LIFT_FAULT"] = 57] = "LIFT_FAULT";
          PropertyStates222[PropertyStates222["PROTOCOL_LEVEL"] = 58] = "PROTOCOL_LEVEL";
          PropertyStates222[PropertyStates222["EXTENDED_VALUE"] = 63] = "EXTENDED_VALUE";
          return PropertyStates222;
        })(PropertyStates22 || {});
        var ReadRangeType22 = /* @__PURE__ */ ((ReadRangeType222) => {
          ReadRangeType222[ReadRangeType222["BY_POSITION"] = 0] = "BY_POSITION";
          ReadRangeType222[ReadRangeType222["BY_SEQUENCE_NUMBER"] = 1] = "BY_SEQUENCE_NUMBER";
          ReadRangeType222[ReadRangeType222["BY_TIME_REFERENCE_TIME_COUNT"] = 2] = "BY_TIME_REFERENCE_TIME_COUNT";
          return ReadRangeType222;
        })(ReadRangeType22 || {});
        var ReinitializedState22 = /* @__PURE__ */ ((ReinitializedState222) => {
          ReinitializedState222[ReinitializedState222["COLDSTART"] = 0] = "COLDSTART";
          ReinitializedState222[ReinitializedState222["WARMSTART"] = 1] = "WARMSTART";
          ReinitializedState222[ReinitializedState222["STARTBACKUP"] = 2] = "STARTBACKUP";
          ReinitializedState222[ReinitializedState222["ENDBACKUP"] = 3] = "ENDBACKUP";
          ReinitializedState222[ReinitializedState222["STARTRESTORE"] = 4] = "STARTRESTORE";
          ReinitializedState222[ReinitializedState222["ENDRESTORE"] = 5] = "ENDRESTORE";
          ReinitializedState222[ReinitializedState222["ABORTRESTORE"] = 6] = "ABORTRESTORE";
          ReinitializedState222[ReinitializedState222["ACTIVATE_CHANGES"] = 7] = "ACTIVATE_CHANGES";
          return ReinitializedState222;
        })(ReinitializedState22 || {});
        var TimeStamp22 = /* @__PURE__ */ ((TimeStamp222) => {
          TimeStamp222[TimeStamp222["TIME"] = 0] = "TIME";
          TimeStamp222[TimeStamp222["SEQUENCE_NUMBER"] = 1] = "SEQUENCE_NUMBER";
          TimeStamp222[TimeStamp222["DATETIME"] = 2] = "DATETIME";
          return TimeStamp222;
        })(TimeStamp22 || {});
        var import_events222 = __toESM22(require("events"));
        var import_debug322 = __toESM22(require("debug"));
        var import_dgram22 = require("dgram");
        var import_events32 = __toESM22(require("events"));
        var import_debug222 = __toESM22(require("debug"));
        var EventEmitter32 = import_events32.default.EventEmitter;
        var debug222 = (0, import_debug222.default)("bacnet:client:debug");
        var DEFAULT_BACNET_PORT32 = 47808;
        var Transport22 = class extends EventEmitter32 {
          constructor(settings) {
            super();
            this._lastSendMessages = {};
            this._settings = settings;
            this._server = (0, import_dgram22.createSocket)({
              type: "udp4",
              reuseAddr: settings.reuseAddr
            });
            this._server.on("message", (msg, rinfo) => {
              if (this.ownAddress.port === rinfo.port) {
                for (let [messageKey, earlierSentBuffer] of Object.entries(
                  this._lastSendMessages
                )) {
                  if (msg.equals(earlierSentBuffer)) {
                    debug222(
                      `server IGNORE message from ${rinfo.address}:${rinfo.port} (${messageKey}): ${msg.toString("hex")}`
                    );
                    return;
                  }
                }
              }
              debug222(
                `server got message from ${rinfo.address}:${rinfo.port}: ${msg.toString(
                  "hex"
                )}`
              );
              this.emit(
                "message",
                msg,
                rinfo.address + (rinfo.port === DEFAULT_BACNET_PORT32 ? "" : ":" + rinfo.port)
              );
            });
            this._server.on("listening", () => {
              this.ownAddress = this._server.address();
              debug222(
                `server listening on ${this.ownAddress.address}:${this.ownAddress.port}`
              );
              this.emit("listening", this.ownAddress);
            });
            this._server.on("error", (err) => {
              debug222("transport error", err.message);
              this.emit("error", err);
            });
            this._server.on("close", () => {
              debug222("transport closed");
              this.emit("close");
            });
          }
          getBroadcastAddress() {
            return this._settings.broadcastAddress;
          }
          getMaxPayload() {
            return 1482;
          }
          send(buffer, offset, receiver) {
            if (!receiver) {
              receiver = this.getBroadcastAddress();
              const dataToSend = Buffer.alloc(offset);
              const hrTime = process.hrtime();
              const messageKey = hrTime[0] * 1e9 + hrTime[1];
              buffer.copy(dataToSend, 0, 0, offset);
              this._lastSendMessages[messageKey] = dataToSend;
              setTimeout(() => {
                delete this._lastSendMessages[messageKey];
              }, 1e4);
            }
            const receiverAddress = typeof receiver === "string" ? receiver : receiver.address;
            const [address, port] = receiverAddress.split(":");
            debug222(
              "Send packet to " + receiver + ": " + buffer.toString("hex").substr(0, offset * 2)
            );
            this._server.send(buffer, 0, offset, +port || DEFAULT_BACNET_PORT32, address);
          }
          open() {
            this._server.bind(this._settings.port, this._settings.interface, () => {
              this._server.setBroadcast(true);
            });
          }
          close() {
            this._server.close();
          }
        };
        var services_exports22 = {};
        __export22(services_exports22, {
          addListElement: () => add_list_element_exports22,
          alarmAcknowledge: () => alarm_acknowledge_exports22,
          alarmSummary: () => alarm_summary_exports22,
          atomicReadFile: () => atomic_read_file_exports22,
          atomicWriteFile: () => atomic_write_file_exports22,
          covNotify: () => cov_notify_exports22,
          covNotifyUnconfirmed: () => cov_notify_exports22,
          createObject: () => create_object_exports22,
          deleteObject: () => delete_object_exports22,
          deviceCommunicationControl: () => device_communication_control_exports22,
          error: () => error_exports22,
          eventInformation: () => event_information_exports22,
          eventNotifyData: () => event_notify_data_exports22,
          getEnrollmentSummary: () => get_enrollment_summary_exports22,
          getEventInformation: () => get_event_information_exports22,
          iAm: () => i_am_exports22,
          iHave: () => i_have_exports22,
          lifeSafetyOperation: () => life_safety_operation_exports22,
          privateTransfer: () => private_transfer_exports22,
          readProperty: () => read_property_exports22,
          readPropertyMultiple: () => read_property_multiple_exports22,
          readRange: () => read_range_exports22,
          registerForeignDevice: () => register_foreign_device_exports22,
          reinitializeDevice: () => reinitialize_device_exports22,
          subscribeCov: () => subscribe_cov_exports22,
          subscribeProperty: () => subscribe_property_exports22,
          timeSync: () => time_sync_exports22,
          timeSyncUTC: () => time_sync_exports22,
          whoHas: () => who_has_exports22,
          whoIs: () => who_is_exports22,
          writeProperty: () => write_property_exports22,
          writePropertyMultiple: () => write_property_multiple_exports22
        });
        var add_list_element_exports22 = {};
        __export22(add_list_element_exports22, {
          decode: () => decode332,
          encode: () => encode332
        });
        var import_iconv_lite22 = __toESM22(require("iconv-lite"));
        var enums_default22 = enum_exports22;
        var START_YEAR22 = 1900;
        var MAX_YEARS22 = 256;
        var getBuffer22 = () => {
          return {
            buffer: Buffer.alloc(1472),
            offset: 0
          };
        };
        var getSignedLength22 = (value) => {
          if (value >= -128 && value < 128)
            return 1;
          else if (value >= -32768 && value < 32768)
            return 2;
          else if (value > -8388608 && value < 8388608)
            return 3;
          else
            return 4;
        };
        var getUnsignedLength22 = (value) => {
          if (value < 256)
            return 1;
          else if (value < 65536)
            return 2;
          else if (value < 16777216)
            return 3;
          else
            return 4;
        };
        var getEncodingType22 = (encoding, decodingBuffer, decodingOffset) => {
          switch (encoding) {
            case enums_default22.CharacterStringEncoding.UCS_2:
              if (decodingBuffer && decodingBuffer[decodingOffset] === 255 && decodingBuffer[decodingOffset + 1] === 254) {
                return "ucs2";
              }
              return "UTF-16BE";
            case enums_default22.CharacterStringEncoding.ISO_8859_1:
              return "latin1";
            case enums_default22.CharacterStringEncoding.MICROSOFT_DBCS:
              return "cp850";
            case enums_default22.CharacterStringEncoding.JIS_X_0208:
              return "Shift_JIS";
            default:
              return "utf8";
          }
        };
        var encodeUnsigned22 = (buffer, value, length) => {
          buffer.buffer.writeUIntBE(value, buffer.offset, length, true);
          buffer.offset += length;
        };
        var encodeBacnetUnsigned22 = (buffer, value) => {
          encodeUnsigned22(buffer, value, getUnsignedLength22(value));
        };
        var encodeSigned22 = (buffer, value, length) => {
          buffer.buffer.writeIntBE(value, buffer.offset, length, true);
          buffer.offset += length;
        };
        var encodeBacnetSigned22 = (buffer, value) => {
          encodeSigned22(buffer, value, getSignedLength22(value));
        };
        var encodeBacnetReal22 = (buffer, value) => {
          buffer.buffer.writeFloatBE(value, buffer.offset, true);
          buffer.offset += 4;
        };
        var encodeBacnetDouble22 = (buffer, value) => {
          buffer.buffer.writeDoubleBE(value, buffer.offset, true);
          buffer.offset += 8;
        };
        var decodeUnsigned22 = (buffer, offset, length) => {
          if (length === 0) {
            return {
              len: 0,
              value: 0
            };
          }
          return {
            len: length,
            //@ts-ignore
            value: buffer.readUIntBE(offset, length)
          };
        };
        var decodeEnumerated22 = (buffer, offset, length) => {
          return decodeUnsigned22(buffer, offset, length);
        };
        var encodeBacnetObjectId22 = (buffer, objectType, instance) => {
          const value = ((objectType & enums_default22.ASN1_MAX_OBJECT) << enums_default22.ASN1_INSTANCE_BITS | instance & enums_default22.ASN1_MAX_INSTANCE) >>> 0;
          encodeUnsigned22(buffer, value, 4);
        };
        var encodeTag22 = (buffer, tagNumber, contextSpecific, lenValueType) => {
          let len = 1;
          const tmp = new Array(3);
          tmp[0] = 0;
          if (contextSpecific) {
            tmp[0] |= 8;
          }
          if (tagNumber <= 14) {
            tmp[0] |= tagNumber << 4;
          } else {
            tmp[0] |= 240;
            tmp[1] = tagNumber;
            len++;
          }
          if (lenValueType <= 4) {
            tmp[0] |= lenValueType;
            Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
            buffer.offset += len;
          } else {
            tmp[0] |= 5;
            if (lenValueType <= 253) {
              tmp[len++] = lenValueType;
              Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
              buffer.offset += len;
            } else if (lenValueType <= 65535) {
              tmp[len++] = 254;
              Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
              buffer.offset += len;
              encodeUnsigned22(buffer, lenValueType, 2);
            } else {
              tmp[len++] = 255;
              Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
              buffer.offset += len;
              encodeUnsigned22(buffer, lenValueType, 4);
            }
          }
        };
        var encodeBacnetEnumerated22 = (buffer, value) => {
          encodeBacnetUnsigned22(buffer, value);
        };
        var isExtendedTagNumber22 = (x) => {
          return (x & 240) === 240;
        };
        var isExtendedValue22 = (x) => {
          return (x & 7) === 5;
        };
        var isContextSpecific22 = (x) => {
          return (x & 8) === 8;
        };
        var isOpeningTag22 = (x) => {
          return (x & 7) === 6;
        };
        var isClosingTag22 = (x) => {
          return (x & 7) === 7;
        };
        var encodeContextReal22 = (buffer, tagNumber, value) => {
          encodeTag22(buffer, tagNumber, true, 4);
          encodeBacnetReal22(buffer, value);
        };
        var encodeContextUnsigned22 = (buffer, tagNumber, value) => {
          encodeTag22(buffer, tagNumber, true, getUnsignedLength22(value));
          encodeBacnetUnsigned22(buffer, value);
        };
        var encodeContextEnumerated22 = (buffer, tagNumber, value) => {
          encodeContextUnsigned22(buffer, tagNumber, value);
        };
        var encodeOctetString22 = (buffer, octetString, octetOffset, octetCount) => {
          if (octetString) {
            for (let i = octetOffset; i < octetOffset + octetCount; i++) {
              buffer.buffer[buffer.offset++] = octetString[i];
            }
          }
        };
        var encodeApplicationOctetString22 = (buffer, octetString, octetOffset, octetCount) => {
          encodeTag22(buffer, enums_default22.ApplicationTag.OCTET_STRING, false, octetCount);
          encodeOctetString22(buffer, octetString, octetOffset, octetCount);
        };
        var encodeApplicationNull22 = (buffer) => {
          buffer.buffer[buffer.offset++] = enums_default22.ApplicationTag.NULL;
        };
        var encodeApplicationBoolean22 = (buffer, booleanValue) => {
          encodeTag22(buffer, enums_default22.ApplicationTag.BOOLEAN, false, booleanValue ? 1 : 0);
        };
        var encodeApplicationReal22 = (buffer, value) => {
          encodeTag22(buffer, enums_default22.ApplicationTag.REAL, false, 4);
          encodeBacnetReal22(buffer, value);
        };
        var encodeApplicationDouble22 = (buffer, value) => {
          encodeTag22(buffer, enums_default22.ApplicationTag.DOUBLE, false, 8);
          encodeBacnetDouble22(buffer, value);
        };
        var bitstringBytesUsed22 = (bitString) => {
          let len = 0;
          if (bitString.bitsUsed > 0) {
            const lastBit = bitString.bitsUsed - 1;
            const usedBytes = lastBit / 8 + 1;
            len = Math.floor(usedBytes);
          }
          return len;
        };
        var encodeApplicationObjectId22 = (buffer, objectType, instance) => {
          const tmp = getBuffer22();
          encodeBacnetObjectId22(tmp, objectType, instance);
          encodeTag22(buffer, enums_default22.ApplicationTag.OBJECTIDENTIFIER, false, tmp.offset);
          tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
          buffer.offset += tmp.offset;
        };
        var encodeApplicationUnsigned22 = (buffer, value) => {
          const tmp = getBuffer22();
          encodeBacnetUnsigned22(tmp, value);
          encodeTag22(buffer, enums_default22.ApplicationTag.UNSIGNED_INTEGER, false, tmp.offset);
          tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
          buffer.offset += tmp.offset;
        };
        var encodeApplicationEnumerated22 = (buffer, value) => {
          const tmp = getBuffer22();
          encodeBacnetEnumerated22(tmp, value);
          encodeTag22(buffer, enums_default22.ApplicationTag.ENUMERATED, false, tmp.offset);
          tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
          buffer.offset += tmp.offset;
        };
        var encodeApplicationSigned22 = (buffer, value) => {
          const tmp = getBuffer22();
          encodeBacnetSigned22(tmp, value);
          encodeTag22(buffer, enums_default22.ApplicationTag.SIGNED_INTEGER, false, tmp.offset);
          tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
          buffer.offset += tmp.offset;
        };
        var byteReverseBits22 = (inByte) => {
          let outByte = 0;
          if ((inByte & 1) > 0) {
            outByte |= 128;
          }
          if ((inByte & 2) > 0) {
            outByte |= 64;
          }
          if ((inByte & 4) > 0) {
            outByte |= 32;
          }
          if ((inByte & 8) > 0) {
            outByte |= 16;
          }
          if ((inByte & 16) > 0) {
            outByte |= 8;
          }
          if ((inByte & 32) > 0) {
            outByte |= 4;
          }
          if ((inByte & 64) > 0) {
            outByte |= 2;
          }
          if ((inByte & 128) > 0) {
            outByte |= 1;
          }
          return outByte;
        };
        var bitstringOctet22 = (bitString, octetIndex) => {
          let octet = 0;
          if (bitString.value && octetIndex < enums_default22.ASN1_MAX_BITSTRING_BYTES) {
            octet = bitString.value[octetIndex];
          }
          return octet;
        };
        var encodeBitstring22 = (buffer, bitString) => {
          if (bitString.bitsUsed === 0) {
            buffer.buffer[buffer.offset++] = 0;
          } else {
            const usedBytes = bitstringBytesUsed22(bitString);
            const remainingUsedBits = bitString.bitsUsed - (usedBytes - 1) * 8;
            buffer.buffer[buffer.offset++] = 8 - remainingUsedBits;
            for (let i = 0; i < usedBytes; i++) {
              buffer.buffer[buffer.offset++] = byteReverseBits22(
                bitstringOctet22(bitString, i)
              );
            }
          }
        };
        var encodeApplicationBitstring22 = (buffer, bitString) => {
          let bitStringEncodedLength = 1;
          bitStringEncodedLength += bitstringBytesUsed22(bitString);
          encodeTag22(
            buffer,
            enums_default22.ApplicationTag.BIT_STRING,
            false,
            bitStringEncodedLength
          );
          encodeBitstring22(buffer, bitString);
        };
        var encodeBacnetDate22 = (buffer, value) => {
          if (value === new Date(1, 1, 1)) {
            buffer.buffer[buffer.offset++] = 255;
            buffer.buffer[buffer.offset++] = 255;
            buffer.buffer[buffer.offset++] = 255;
            buffer.buffer[buffer.offset++] = 255;
            return;
          }
          if (value.getFullYear() >= START_YEAR22) {
            buffer.buffer[buffer.offset++] = value.getFullYear() - START_YEAR22;
          } else if (value.getFullYear() < MAX_YEARS22) {
            buffer.buffer[buffer.offset++] = value.getFullYear();
          } else {
            throw new Error("invaide year: " + value.getFullYear());
          }
          buffer.buffer[buffer.offset++] = value.getMonth();
          buffer.buffer[buffer.offset++] = value.getDate();
          buffer.buffer[buffer.offset++] = value.getDay() === 0 ? 7 : value.getDay();
        };
        var encodeApplicationDate22 = (buffer, value) => {
          encodeTag22(buffer, enums_default22.ApplicationTag.DATE, false, 4);
          encodeBacnetDate22(buffer, value);
        };
        var encodeBacnetTime22 = (buffer, value) => {
          buffer.buffer[buffer.offset++] = value.getHours();
          buffer.buffer[buffer.offset++] = value.getMinutes();
          buffer.buffer[buffer.offset++] = value.getSeconds();
          buffer.buffer[buffer.offset++] = value.getMilliseconds() / 10;
        };
        var encodeApplicationTime22 = (buffer, value) => {
          encodeTag22(buffer, enums_default22.ApplicationTag.TIME, false, 4);
          encodeBacnetTime22(buffer, value);
        };
        var bacappEncodeDatetime22 = (buffer, value) => {
          if (value !== new Date(1, 1, 1)) {
            encodeApplicationDate22(buffer, value);
            encodeApplicationTime22(buffer, value);
          }
        };
        var encodeContextObjectId22 = (buffer, tagNumber, objectType, instance) => {
          encodeTag22(buffer, tagNumber, true, 4);
          encodeBacnetObjectId22(buffer, objectType, instance);
        };
        var encodeOpeningTag22 = (buffer, tagNumber) => {
          let len = 1;
          const tmp = new Array(2);
          tmp[0] = 8;
          if (tagNumber <= 14) {
            tmp[0] |= tagNumber << 4;
          } else {
            tmp[0] |= 240;
            tmp[1] = tagNumber;
            len++;
          }
          tmp[0] |= 6;
          Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
          buffer.offset += len;
        };
        var encodeClosingTag22 = (buffer, tagNumber) => {
          let len = 1;
          const tmp = new Array(2);
          tmp[0] = 8;
          if (tagNumber <= 14) {
            tmp[0] |= tagNumber << 4;
          } else {
            tmp[0] |= 240;
            tmp[1] = tagNumber;
            len++;
          }
          tmp[0] |= 7;
          Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
          buffer.offset += len;
        };
        var encodeReadAccessSpecification22 = (buffer, value) => {
          encodeContextObjectId22(
            buffer,
            0,
            value.objectId.type,
            value.objectId.instance
          );
          encodeOpeningTag22(buffer, 1);
          value.properties.forEach((p) => {
            encodeContextEnumerated22(buffer, 0, p.id);
            if (p.index && p.index !== enums_default22.ASN1_ARRAY_ALL) {
              encodeContextUnsigned22(buffer, 1, p.index);
            }
          });
          encodeClosingTag22(buffer, 1);
        };
        var encodeContextBoolean22 = (buffer, tagNumber, booleanValue) => {
          encodeTag22(buffer, tagNumber, true, 1);
          buffer.buffer.writeUInt8(booleanValue ? 1 : 0, buffer.offset, true);
          buffer.offset += 1;
        };
        var encodeCovSubscription22 = (buffer, value) => {
          encodeOpeningTag22(buffer, 0);
          encodeOpeningTag22(buffer, 0);
          encodeOpeningTag22(buffer, 1);
          encodeApplicationUnsigned22(buffer, value.recipient.network);
          if (value.recipient.network === 65535) {
            encodeApplicationOctetString22(buffer, 0, 0, 0);
          } else {
            encodeApplicationOctetString22(
              buffer,
              value.recipient.address,
              0,
              value.recipient.address.length
            );
          }
          encodeClosingTag22(buffer, 1);
          encodeClosingTag22(buffer, 0);
          encodeContextUnsigned22(buffer, 1, value.subscriptionProcessId);
          encodeClosingTag22(buffer, 0);
          encodeOpeningTag22(buffer, 1);
          encodeContextObjectId22(
            buffer,
            0,
            value.monitoredObjectId.type,
            value.monitoredObjectId.instance
          );
          encodeContextEnumerated22(buffer, 1, value.monitoredProperty.id);
          if (value.monitoredProperty.index !== enums_default22.ASN1_ARRAY_ALL) {
            encodeContextUnsigned22(buffer, 2, value.monitoredProperty.index);
          }
          encodeClosingTag22(buffer, 1);
          encodeContextBoolean22(buffer, 2, value.issueConfirmedNotifications);
          encodeContextUnsigned22(buffer, 3, value.timeRemaining);
          if (value.covIncrement > 0) {
            encodeContextReal22(buffer, 4, value.covIncrement);
          }
        };
        var bacappEncodeApplicationData22 = (buffer, value) => {
          if (value.value === null) {
            value.type = enums_default22.ApplicationTag.NULL;
          }
          switch (value.type) {
            case enums_default22.ApplicationTag.NULL:
              encodeApplicationNull22(buffer);
              break;
            case enums_default22.ApplicationTag.BOOLEAN:
              encodeApplicationBoolean22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.UNSIGNED_INTEGER:
              encodeApplicationUnsigned22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.SIGNED_INTEGER:
              encodeApplicationSigned22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.REAL:
              encodeApplicationReal22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.DOUBLE:
              encodeApplicationDouble22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.OCTET_STRING:
              encodeApplicationOctetString22(buffer, value.value, 0, value.value.length);
              break;
            case enums_default22.ApplicationTag.CHARACTER_STRING:
              encodeApplicationCharacterString22(buffer, value.value, value.encoding);
              break;
            case enums_default22.ApplicationTag.BIT_STRING:
              encodeApplicationBitstring22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.ENUMERATED:
              encodeApplicationEnumerated22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.DATE:
              encodeApplicationDate22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.TIME:
              encodeApplicationTime22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.TIMESTAMP:
              bacappEncodeTimestamp22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.DATETIME:
              bacappEncodeDatetime22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.OBJECTIDENTIFIER:
              encodeApplicationObjectId22(buffer, value.value.type, value.value.instance);
              break;
            case enums_default22.ApplicationTag.COV_SUBSCRIPTION:
              encodeCovSubscription22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.READ_ACCESS_RESULT:
              encodeReadAccessResult22(buffer, value.value);
              break;
            case enums_default22.ApplicationTag.READ_ACCESS_SPECIFICATION:
              encodeReadAccessSpecification22(buffer, value.value);
              break;
            case void 0:
              throw new Error(
                "Cannot encode a value if the type has not been specified"
              );
            default:
              throw "No encode for ApplicationTag type: " + enums_default22.getEnumName(
                enums_default22.ApplicationTag,
                value.type
              );
          }
        };
        var bacappEncodeDeviceObjPropertyRef22 = (buffer, value) => {
          encodeContextObjectId22(
            buffer,
            0,
            value.objectId.type,
            value.objectId.instance
          );
          encodeContextEnumerated22(buffer, 1, value.id);
          if (value.arrayIndex !== enums_default22.ASN1_ARRAY_ALL) {
            encodeContextUnsigned22(buffer, 2, value.arrayIndex);
          }
          if (value.deviceIndentifier.type === enums_default22.ObjectType.DEVICE) {
            encodeContextObjectId22(
              buffer,
              3,
              value.deviceIndentifier.type,
              value.deviceIndentifier.instance
            );
          }
        };
        var bacappEncodeContextDeviceObjPropertyRef22 = (buffer, tagNumber, value) => {
          encodeOpeningTag22(buffer, tagNumber);
          bacappEncodeDeviceObjPropertyRef22(buffer, value);
          encodeClosingTag22(buffer, tagNumber);
        };
        var bacappEncodePropertyState22 = (buffer, value) => {
          switch (value.type) {
            case enums_default22.PropertyStates.BOOLEAN_VALUE:
              encodeContextBoolean22(buffer, 0, value.state === 1);
              break;
            case enums_default22.PropertyStates.BINARY_VALUE:
              encodeContextEnumerated22(buffer, 1, value.state);
              break;
            case enums_default22.PropertyStates.EVENT_TYPE:
              encodeContextEnumerated22(buffer, 2, value.state);
              break;
            case enums_default22.PropertyStates.POLARITY:
              encodeContextEnumerated22(buffer, 3, value.state);
              break;
            case enums_default22.PropertyStates.PROGRAM_CHANGE:
              encodeContextEnumerated22(buffer, 4, value.state);
              break;
            case enums_default22.PropertyStates.PROGRAM_STATE:
              encodeContextEnumerated22(buffer, 5, value.state);
              break;
            case enums_default22.PropertyStates.REASON_FOR_HALT:
              encodeContextEnumerated22(buffer, 6, value.state);
              break;
            case enums_default22.PropertyStates.RELIABILITY:
              encodeContextEnumerated22(buffer, 7, value.state);
              break;
            case enums_default22.PropertyStates.STATE:
              encodeContextEnumerated22(buffer, 8, value.state);
              break;
            case enums_default22.PropertyStates.SYSTEM_STATUS:
              encodeContextEnumerated22(buffer, 9, value.state);
              break;
            case enums_default22.PropertyStates.UNITS:
              encodeContextEnumerated22(buffer, 10, value.state);
              break;
            case enums_default22.PropertyStates.UNSIGNED_VALUE:
              encodeContextUnsigned22(buffer, 11, value.state);
              break;
            case enums_default22.PropertyStates.LIFE_SAFETY_MODE:
              encodeContextEnumerated22(buffer, 12, value.state);
              break;
            case enums_default22.PropertyStates.LIFE_SAFETY_STATE:
              encodeContextEnumerated22(buffer, 13, value.state);
              break;
            default:
              break;
          }
        };
        var encodeContextBitstring22 = (buffer, tagNumber, bitString) => {
          let bitStringEncodedLength = 1;
          bitStringEncodedLength += bitstringBytesUsed22(bitString);
          encodeTag22(buffer, tagNumber, true, bitStringEncodedLength);
          encodeBitstring22(buffer, bitString);
        };
        var encodeContextSigned22 = (buffer, tagNumber, value) => {
          encodeTag22(buffer, tagNumber, true, getSignedLength22(value));
          encodeBacnetSigned22(buffer, value);
        };
        var encodeContextTime22 = (buffer, tagNumber, value) => {
          encodeTag22(buffer, tagNumber, true, 4);
          encodeBacnetTime22(buffer, value);
        };
        var bacappEncodeContextDatetime22 = (buffer, tagNumber, value) => {
          if (value !== new Date(1, 1, 1)) {
            encodeOpeningTag22(buffer, tagNumber);
            bacappEncodeDatetime22(buffer, value);
            encodeClosingTag22(buffer, tagNumber);
          } else {
            throw new Error("wrong Datetime while bacapp encoding context");
          }
        };
        var decodeTagNumber22 = (buffer, offset) => {
          let len = 1;
          let tagNumber;
          if (isExtendedTagNumber22(buffer[offset])) {
            tagNumber = buffer[offset + 1];
            len++;
          } else {
            tagNumber = buffer[offset] >> 4;
          }
          return {
            len,
            tagNumber
          };
        };
        var decodeIsContextTag22 = (buffer, offset, tagNumber) => {
          const result = decodeTagNumber22(buffer, offset);
          return isContextSpecific22(buffer[offset]) && result.tagNumber === tagNumber;
        };
        var decodeIsOpeningTagNumber22 = (buffer, offset, tagNumber) => {
          const result = decodeTagNumber22(buffer, offset);
          return isOpeningTag22(buffer[offset]) && result.tagNumber === tagNumber;
        };
        var decodeIsClosingTagNumber22 = (buffer, offset, tagNumber) => {
          const result = decodeTagNumber22(buffer, offset);
          return isClosingTag22(buffer[offset]) && result.tagNumber === tagNumber;
        };
        var decodeIsClosingTag22 = (buffer, offset) => {
          return (buffer[offset] & 7) === 7;
        };
        var decodeIsOpeningTag22 = (buffer, offset) => {
          return (buffer[offset] & 7) === 6;
        };
        var decodeObjectId22 = (buffer, offset, NOT_USED_NUMBER = 0) => {
          const result = decodeUnsigned22(buffer, offset, 4);
          const objectType = result.value >> enums_default22.ASN1_INSTANCE_BITS & enums_default22.ASN1_MAX_OBJECT;
          const instance = result.value & enums_default22.ASN1_MAX_INSTANCE;
          return {
            len: result.len,
            objectType,
            instance
          };
        };
        var decodeObjectIdSafe22 = (buffer, offset, lenValue) => {
          if (lenValue !== 4) {
            return {
              len: 0,
              objectType: 0,
              instance: 0
            };
          } else {
            return decodeObjectId22(buffer, offset);
          }
        };
        var decodeTagNumberAndValue22 = (buffer, offset) => {
          let value;
          let result = decodeTagNumber22(buffer, offset);
          let len = result.len;
          if (isExtendedValue22(buffer[offset])) {
            if (buffer[offset + len] === 255) {
              len++;
              result = decodeUnsigned22(buffer, offset + len, 4);
              len += result.len;
              value = result.value;
            } else if (buffer[offset + len] === 254) {
              len++;
              result = decodeUnsigned22(buffer, offset + len, 2);
              len += result.len;
              value = result.value;
            } else {
              value = buffer[offset + len];
              len++;
            }
          } else if (isOpeningTag22(buffer[offset])) {
            value = 0;
          } else if (isClosingTag22(buffer[offset])) {
            value = 0;
          } else {
            value = buffer[offset] & 7;
          }
          return {
            len,
            tagNumber: result.tagNumber,
            value
          };
        };
        var bacappDecodeApplicationData22 = (buffer, offset, maxOffset, objectType, propertyId) => {
          if (!isContextSpecific22(buffer[offset])) {
            let result = decodeTagNumberAndValue22(buffer, offset);
            if (result) {
              let len = result.len;
              result = bacappDecodeData22(
                buffer,
                offset + len,
                maxOffset,
                result.tagNumber,
                result.value
              );
              if (!result) {
                return void 0;
              }
              let resObj = {
                len: len + result.len,
                type: result.type,
                value: result.value
              };
              if (result.encoding !== void 0)
                resObj.encoding = result.encoding;
              return resObj;
            }
          } else {
            return bacappDecodeContextApplicationData22(
              buffer,
              offset,
              maxOffset,
              objectType,
              propertyId
            );
          }
        };
        var encodeReadAccessResult22 = (buffer, value) => {
          encodeContextObjectId22(
            buffer,
            0,
            value.objectId.type,
            value.objectId.instance
          );
          encodeOpeningTag22(buffer, 1);
          value.values.forEach((item) => {
            encodeContextEnumerated22(buffer, 2, item.property.id);
            if (item.property.index !== enums_default22.ASN1_ARRAY_ALL) {
              encodeContextUnsigned22(buffer, 3, item.property.index);
            }
            if (item.value && item.value[0] && item.value[0].value && item.value[0].value.type === "BacnetError") {
              encodeOpeningTag22(buffer, 5);
              encodeApplicationEnumerated22(buffer, item.value[0].value.errorClass);
              encodeApplicationEnumerated22(buffer, item.value[0].value.errorCode);
              encodeClosingTag22(buffer, 5);
            } else {
              if (!item.value)
                throw new Error("No value in item");
              encodeOpeningTag22(buffer, 4);
              item.value.forEach((subItem) => {
                bacappEncodeApplicationData22(buffer, subItem);
              });
              encodeClosingTag22(buffer, 4);
            }
          });
          encodeClosingTag22(buffer, 1);
        };
        var decodeReadAccessResult22 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          let result = decodeObjectId22(buffer, offset + len);
          value.objectId = {
            type: result.objectType,
            instance: result.instance
          };
          len += result.len;
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            return -1;
          }
          len++;
          const values = [];
          while (apduLen - len > 0) {
            let newEntry = {};
            if (decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
              len++;
              break;
            }
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 2) {
              return void 0;
            }
            result = decodeEnumerated22(buffer, offset + len, result.value);
            newEntry.id = result.value;
            len += result.len;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            if (result.tagNumber === 3) {
              len += result.len;
              result = decodeUnsigned22(buffer, offset + len, result.value);
              newEntry.index = result.value;
              len += result.len;
            } else {
              newEntry.index = enums_default22.ASN1_ARRAY_ALL;
            }
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber === 4) {
              const localValues = [];
              while (len + offset <= buffer.length && !decodeIsClosingTagNumber22(buffer, offset + len, 4)) {
                let localResult = bacappDecodeApplicationData22(
                  buffer,
                  offset + len,
                  apduLen + offset - 1,
                  value.objectId.type,
                  newEntry.id
                );
                if (!localResult) {
                  return void 0;
                }
                len += localResult.len;
                let resObj = {
                  value: localResult.value,
                  type: localResult.type
                };
                if (localResult.encoding !== void 0)
                  resObj.encoding = localResult.encoding;
                localValues.push(resObj);
              }
              if (!decodeIsClosingTagNumber22(buffer, offset + len, 4)) {
                return void 0;
              }
              if (localValues.count === 2 && localValues[0].type === enums_default22.ApplicationTag.DATE && localValues[1].type === enums_default22.ApplicationTag.TIME) {
                const date = localValues[0].value;
                const time = localValues[1].value;
                const bdatetime = new Date(
                  date.year,
                  date.month,
                  date.day,
                  time.hour,
                  time.minute,
                  time.second,
                  time.millisecond
                );
                newEntry.value = [
                  { type: enums_default22.ApplicationTag.DATETIME, value: bdatetime }
                ];
              } else {
                newEntry.value = localValues;
              }
              len++;
            } else if (result.tagNumber === 5) {
              let err = {};
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              result = decodeEnumerated22(buffer, offset + len, result.value);
              len += result.len;
              err.errorClass = result.value;
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              result = decodeEnumerated22(buffer, offset + len, result.value);
              len += result.len;
              err.errorCode = result.value;
              if (!decodeIsClosingTagNumber22(buffer, offset + len, 5)) {
                return void 0;
              }
              len++;
              newEntry.value = [
                {
                  type: enums_default22.ApplicationTag.ERROR,
                  value: err
                }
              ];
            }
            values.push(newEntry);
          }
          value.values = values;
          return {
            len,
            value
          };
        };
        var decodeSigned22 = (buffer, offset, length) => {
          return {
            len: length,
            value: buffer.readIntBE(offset, length, true)
          };
        };
        var decodeReal22 = (buffer, offset) => {
          return {
            len: 4,
            value: buffer.readFloatBE(offset, true)
          };
        };
        var decodeRealSafe22 = (buffer, offset, lenValue) => {
          if (lenValue !== 4) {
            return {
              len: lenValue,
              value: 0
            };
          } else {
            return decodeReal22(buffer, offset);
          }
        };
        var decodeDouble22 = (buffer, offset) => {
          return {
            len: 8,
            value: buffer.readDoubleBE(offset, true)
          };
        };
        var decodeDoubleSafe22 = (buffer, offset, lenValue) => {
          if (lenValue !== 8) {
            return {
              len: lenValue,
              value: 0
            };
          } else {
            return decodeDouble22(buffer, offset);
          }
        };
        var decodeOctetString22 = (buffer, offset, maxLength, octetStringOffset, octetStringLength) => {
          const octetString = [];
          for (let i = octetStringOffset; i < octetStringOffset + octetStringLength; i++) {
            octetString.push(buffer[offset + i]);
          }
          return {
            len: octetStringLength,
            value: octetString
          };
        };
        var multiCharsetCharacterstringDecode22 = (buffer, offset, maxLength, encoding, length) => {
          const stringBuf = Buffer.alloc(length);
          buffer.copy(stringBuf, 0, offset, offset + length);
          return {
            value: import_iconv_lite22.default.decode(stringBuf, getEncodingType22(encoding, buffer, offset)),
            len: length + 1,
            encoding
          };
        };
        var decodeCharacterString22 = (buffer, offset, maxLength, lenValue) => {
          return multiCharsetCharacterstringDecode22(
            buffer,
            offset + 1,
            maxLength,
            buffer[offset],
            lenValue - 1
          );
        };
        var bitstringSetBitsUsed22 = (bitString, bytesUsed, unusedBits) => {
          bitString.bitsUsed = bytesUsed * 8;
          bitString.bitsUsed -= unusedBits;
        };
        var decodeBitstring22 = (buffer, offset, lenValue) => {
          let len = 0;
          let bitString = {};
          bitString.value = [];
          if (lenValue > 0) {
            const bytesUsed = lenValue - 1;
            if (bytesUsed <= enums_default22.ASN1_MAX_BITSTRING_BYTES) {
              len = 1;
              for (let i = 0; i < bytesUsed; i++) {
                bitString.value.push(byteReverseBits22(buffer[offset + len++]));
              }
              const unusedBits = buffer[offset] & 7;
              bitstringSetBitsUsed22(bitString, bytesUsed, unusedBits);
            }
          }
          return {
            len,
            value: bitString
          };
        };
        var decodeDate22 = (buffer, offset) => {
          let date;
          const year = buffer[offset] + 1900;
          const month = buffer[offset + 1];
          const day = buffer[offset + 2];
          const wday = buffer[offset + 3];
          if (month === 255 && day === 255 && wday === 255 && year - 1900 === 255) {
            date = new Date(1, 1, 1);
          } else {
            date = new Date(year, month, day);
          }
          return {
            len: 4,
            value: date
          };
        };
        var decodeDateSafe22 = (buffer, offset, lenValue) => {
          if (lenValue !== 4) {
            return {
              len: lenValue,
              value: new Date(1, 1, 1)
            };
          } else {
            return decodeDate22(buffer, offset);
          }
        };
        var decodeApplicationDate22 = (buffer, offset) => {
          const result = decodeTagNumber22(buffer, offset);
          if (result.tagNumber === enums_default22.ApplicationTag.DATE) {
            const value = decodeDate22(buffer, offset + 1);
            return {
              len: value.len + 1,
              value
            };
          }
          return void 0;
        };
        var decodeBacnetTime22 = (buffer, offset, value = new Date(1, 1, 1)) => {
          const hour = buffer[offset + 0];
          const min = buffer[offset + 1];
          const sec = buffer[offset + 2];
          let hundredths = buffer[offset + 3];
          if (hour === 255 && min === 255 && sec === 255 && hundredths === 255) {
            value = new Date(1, 1, 1);
          } else {
            if (hundredths > 100)
              hundredths = 0;
            value = new Date(1, 1, 1, hour, min, sec, hundredths * 10);
          }
          return {
            len: 4,
            value
          };
        };
        var decodeBacnetTimeSafe22 = (buffer, offset, lenValue) => {
          if (lenValue !== 4) {
            return {
              len: lenValue,
              value: new Date(1, 1, 1)
            };
          } else {
            return decodeBacnetTime22(buffer, offset);
          }
        };
        var decodeApplicationTime22 = (buffer, offset) => {
          const result = decodeTagNumber22(buffer, offset);
          if (result.tagNumber === enums_default22.ApplicationTag.TIME) {
            const value = decodeBacnetTime22(buffer, offset + 1);
            return {
              len: value.len + 1,
              value
            };
          }
          return void 0;
        };
        var decodeBacnetDatetime22 = (buffer, offset) => {
          let len = 0;
          const date = decodeApplicationDate22(buffer, offset + len);
          len += date.len;
          const time = decodeApplicationTime22(buffer, offset + len);
          len += time.len;
          return {
            len,
            value: new Date(
              date.year,
              date.month,
              date.day,
              time.hour,
              time.minute,
              time.second,
              time.millisecond
            )
          };
        };
        var bacappDecodeData22 = (buffer, offset, maxLength, tagDataType, lenValueType) => {
          let result;
          let value = {
            len: 0,
            type: tagDataType
          };
          switch (tagDataType) {
            case enums_default22.ApplicationTag.NULL:
              value.value = null;
              break;
            case enums_default22.ApplicationTag.BOOLEAN:
              value.value = lenValueType > 0;
              break;
            case enums_default22.ApplicationTag.UNSIGNED_INTEGER:
              result = decodeUnsigned22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.SIGNED_INTEGER:
              result = decodeSigned22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.REAL:
              result = decodeRealSafe22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.DOUBLE:
              result = decodeDoubleSafe22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.OCTET_STRING:
              result = decodeOctetString22(buffer, offset, maxLength, 0, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.CHARACTER_STRING:
              result = decodeCharacterString22(buffer, offset, maxLength, lenValueType);
              value.len += result.len;
              value.value = result.value;
              value.encoding = result.encoding;
              break;
            case enums_default22.ApplicationTag.BIT_STRING:
              result = decodeBitstring22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.ENUMERATED:
              result = decodeEnumerated22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.DATE:
              result = decodeDateSafe22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.TIME:
              result = decodeBacnetTimeSafe22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = result.value;
              break;
            case enums_default22.ApplicationTag.OBJECTIDENTIFIER:
              result = decodeObjectIdSafe22(buffer, offset, lenValueType);
              value.len += result.len;
              value.value = { type: result.objectType, instance: result.instance };
              break;
            default:
              break;
          }
          return value;
        };
        var bacappContextTagType22 = (property, tagNumber) => {
          let tag = 0;
          switch (property) {
            case enums_default22.PropertyIdentifier.ACTUAL_SHED_LEVEL:
            case enums_default22.PropertyIdentifier.REQUESTED_SHED_LEVEL:
            case enums_default22.PropertyIdentifier.EXPECTED_SHED_LEVEL:
              switch (tagNumber) {
                case 0:
                case 1:
                  tag = enums_default22.ApplicationTag.UNSIGNED_INTEGER;
                  break;
                case 2:
                  tag = enums_default22.ApplicationTag.REAL;
                  break;
                default:
                  break;
              }
              break;
            case enums_default22.PropertyIdentifier.ACTION:
              switch (tagNumber) {
                case 0:
                case 1:
                  tag = enums_default22.ApplicationTag.OBJECTIDENTIFIER;
                  break;
                case 2:
                  tag = enums_default22.ApplicationTag.ENUMERATED;
                  break;
                case 3:
                case 5:
                case 6:
                  tag = enums_default22.ApplicationTag.UNSIGNED_INTEGER;
                  break;
                case 7:
                case 8:
                  tag = enums_default22.ApplicationTag.BOOLEAN;
                  break;
                default:
                  break;
              }
              break;
            case enums_default22.PropertyIdentifier.LIST_OF_GROUP_MEMBERS:
              switch (tagNumber) {
                case 0:
                  tag = enums_default22.ApplicationTag.OBJECTIDENTIFIER;
                  break;
                default:
                  break;
              }
              break;
            case enums_default22.PropertyIdentifier.EXCEPTION_SCHEDULE:
              switch (tagNumber) {
                case 1:
                  tag = enums_default22.ApplicationTag.OBJECTIDENTIFIER;
                  break;
                case 3:
                  tag = enums_default22.ApplicationTag.UNSIGNED_INTEGER;
                  break;
                default:
                  break;
              }
              break;
            case enums_default22.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY:
              switch (tagNumber) {
                case 0:
                case 3:
                  tag = enums_default22.ApplicationTag.OBJECTIDENTIFIER;
                  break;
                case 1:
                  tag = enums_default22.ApplicationTag.ENUMERATED;
                  break;
                case 2:
                  tag = enums_default22.ApplicationTag.UNSIGNED_INTEGER;
                  break;
                default:
                  break;
              }
              break;
            case enums_default22.PropertyIdentifier.SUBORDINATE_LIST:
              switch (tagNumber) {
                case 0:
                case 1:
                  tag = enums_default22.ApplicationTag.OBJECTIDENTIFIER;
                  break;
                default:
                  break;
              }
              break;
            case enums_default22.PropertyIdentifier.RECIPIENT_LIST:
              switch (tagNumber) {
                case 0:
                  tag = enums_default22.ApplicationTag.OBJECTIDENTIFIER;
                  break;
                default:
                  break;
              }
              break;
            case enums_default22.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS:
              switch (tagNumber) {
                case 0:
                case 1:
                  break;
                case 2:
                  tag = enums_default22.ApplicationTag.BOOLEAN;
                  break;
                case 3:
                  tag = enums_default22.ApplicationTag.UNSIGNED_INTEGER;
                  break;
                case 4:
                  tag = enums_default22.ApplicationTag.REAL;
                  break;
                default:
                  break;
              }
              break;
            default:
              break;
          }
          return tag;
        };
        var decodeDeviceObjPropertyRef22 = (buffer, offset, NOTUSEDARG = 0) => {
          let len = 0;
          let arrayIndex = enums_default22.ASN1_ARRAY_ALL;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          let objectId = decodeObjectId22(buffer, offset + len);
          len += objectId.len;
          let result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          let id = decodeEnumerated22(buffer, offset + len, result.value);
          len += id.len;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          if (result.tagNumber === 2) {
            len += result.len;
            arrayIndex = decodeUnsigned22(buffer, offset + len, result.value);
            len += arrayIndex.len;
          }
          if (decodeIsContextTag22(buffer, offset + len, 3)) {
            if (!isClosingTag22(buffer[offset + len])) {
              len++;
              objectId = decodeObjectId22(buffer, offset + len);
              len += objectId.len;
            }
          }
          return {
            len,
            value: {
              objectId,
              id
            }
          };
        };
        var decodeReadAccessSpecification22 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          let decodedValue = decodeObjectId22(buffer, offset + len);
          value.objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          len += decodedValue.len;
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          const propertyIdAndArrayIndex = [];
          while (apduLen - len > 1 && !decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
            let propertyRef = {};
            if (!isContextSpecific22(buffer[offset + len])) {
              return void 0;
            }
            let result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 0) {
              return void 0;
            }
            if (len + result.value >= apduLen) {
              return void 0;
            }
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            propertyRef.id = decodedValue.value;
            len += decodedValue.len;
            propertyRef.index = enums_default22.ASN1_ARRAY_ALL;
            if (isContextSpecific22(buffer[offset + len]) && !isClosingTag22(buffer[offset + len])) {
              const tmp = decodeTagNumberAndValue22(buffer, offset + len);
              if (tmp.tagNumber === 1) {
                len += tmp.len;
                if (len + tmp.value >= apduLen) {
                  return void 0;
                }
                decodedValue = decodeUnsigned22(buffer, offset + len, tmp.value);
                propertyRef.index = decodedValue.value;
                len += decodedValue.len;
              }
            }
            propertyIdAndArrayIndex.push(propertyRef);
          }
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          value.properties = propertyIdAndArrayIndex;
          return {
            len,
            value
          };
        };
        var decodeCovSubscription22 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          let result;
          let decodedValue;
          value.recipient = {};
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== enums_default22.ApplicationTag.UNSIGNED_INTEGER) {
            return void 0;
          }
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.recipient.net = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== enums_default22.ApplicationTag.OCTET_STRING) {
            return void 0;
          }
          decodedValue = decodeOctetString22(
            buffer,
            offset + len,
            apduLen,
            0,
            result.value
          );
          len += decodedValue.len;
          value.recipient.adr = decodedValue.value;
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.subscriptionProcessId = decodedValue.value;
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 0) {
            return void 0;
          }
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.monitoredObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.monitoredProperty = {};
          value.monitoredProperty.id = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          if (result.tagNumber === 2) {
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.monitoredProperty.index = decodedValue.value;
          } else {
            value.monitoredProperty.index = enums_default22.ASN1_ARRAY_ALL;
          }
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 2) {
            return void 0;
          }
          value.issueConfirmedNotifications = buffer[offset + len] > 0;
          len++;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 3) {
            return void 0;
          }
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.timeRemaining = decodedValue.value;
          if (len < apduLen && !isClosingTag22(buffer[offset + len])) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 4) {
              return void 0;
            }
            decodedValue = decodeReal22(buffer, offset + len);
            len += decodedValue.len;
            value.covIncrement = decodedValue.value;
          }
          return {
            len,
            value
          };
        };
        var decodeCalendarDate22 = (buffer, offset) => {
          return {
            len: 4,
            year: buffer[offset],
            month: buffer[offset + 1],
            day: buffer[offset + 2],
            wday: buffer[offset + 3]
          };
        };
        var decodeCalendarDateRange22 = (buffer, offset) => {
          let len = 1;
          const startDate = decodeDate22(buffer, offset + len);
          len += startDate.len + 1;
          const endDate = decodeDate22(buffer, offset + len);
          len += endDate.len + 1;
          return {
            len,
            startDate,
            endDate
          };
        };
        var decodeCalendarWeekDay22 = (buffer, offset) => {
          return {
            len: 3,
            month: buffer[offset],
            week: buffer[offset + 1],
            wday: buffer[offset + 2]
          };
        };
        var decodeCalendar22 = (buffer, offset, apduLen) => {
          let len = 0;
          const entries = [];
          let decodedValue;
          while (len < apduLen) {
            const result = decodeTagNumber22(buffer, offset + len);
            len += result.len;
            switch (result.tagNumber) {
              case 0:
                decodedValue = decodeCalendarDate22(buffer, offset + len);
                len += decodedValue.len;
                entries.push(decodedValue);
                break;
              case 1:
                decodedValue = decodeCalendarDateRange22(buffer, offset + len);
                len += decodedValue.len;
                entries.push(decodedValue);
                break;
              case 2:
                decodedValue = decodeCalendarWeekDay22(buffer, offset + len);
                len += decodedValue.len;
                entries.push(decodedValue);
                break;
              default:
                return {
                  len: len - 1,
                  value: entries
                };
            }
          }
        };
        var bacappDecodeContextApplicationData22 = (buffer, offset, maxOffset, objectType, propertyId) => {
          let len = 0;
          let result;
          if (isContextSpecific22(buffer[offset])) {
            if (propertyId === enums_default22.PropertyIdentifier.LIST_OF_GROUP_MEMBERS) {
              result = decodeReadAccessSpecification22(buffer, offset, maxOffset);
              if (!result) {
                return void 0;
              }
              return {
                type: enums_default22.ApplicationTag.READ_ACCESS_SPECIFICATION,
                value: result.value,
                len: result.len
              };
            } else if (propertyId === enums_default22.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS) {
              result = decodeCovSubscription22(buffer, offset, maxOffset);
              if (!result) {
                return void 0;
              }
              return {
                type: enums_default22.ApplicationTag.COV_SUBSCRIPTION,
                value: result.value,
                len: result.len
              };
            } else if (objectType === enums_default22.ObjectType.GROUP && propertyId === enums_default22.PropertyIdentifier.PRESENT_VALUE) {
              result = decodeReadAccessResult22(buffer, offset, maxOffset);
              if (!result) {
                return void 0;
              }
              return {
                type: enums_default22.ApplicationTag.READ_ACCESS_RESULT,
                value: result.value,
                len: result.len
              };
            } else if (propertyId === enums_default22.PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES || propertyId === enums_default22.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY || propertyId === enums_default22.PropertyIdentifier.OBJECT_PROPERTY_REFERENCE) {
              result = decodeDeviceObjPropertyRef22(buffer, offset, maxOffset);
              if (!result) {
                return void 0;
              }
              return {
                type: enums_default22.ApplicationTag.OBJECT_PROPERTY_REFERENCE,
                value: result.value,
                len: result.len
              };
            } else if (propertyId === enums_default22.PropertyIdentifier.DATE_LIST) {
              result = decodeCalendar22(buffer, offset, maxOffset);
              if (!result) {
                return void 0;
              }
              return {
                type: enums_default22.ApplicationTag.CONTEXT_SPECIFIC_DECODED,
                value: result.value,
                len: result.len
              };
            } else if (propertyId === enums_default22.PropertyIdentifier.EVENT_TIME_STAMPS) {
              let subEvtResult;
              let evtResult = decodeTagNumberAndValue22(buffer, offset + len);
              len += 1;
              if (evtResult.tagNumber === 0) {
                subEvtResult = decodeBacnetTime22(buffer, offset + 1);
                return {
                  type: enums_default22.ApplicationTag.TIMESTAMP,
                  value: subEvtResult.value,
                  len: subEvtResult.len + 1
                };
              } else if (evtResult.tagNumber === 1) {
                subEvtResult = decodeUnsigned22(buffer, offset + len, evtResult.value);
                return {
                  type: enums_default22.ApplicationTag.UNSIGNED_INTEGER,
                  value: subEvtResult.value,
                  len: subEvtResult.len + 1
                };
              } else if (evtResult.tagNumber === 2) {
                subEvtResult = decodeBacnetDatetime22(buffer, offset + len);
                return {
                  type: enums_default22.ApplicationTag.TIMESTAMP,
                  value: subEvtResult.value,
                  len: subEvtResult.len + 2
                };
              } else {
                return void 0;
              }
            }
            const list = [];
            let tagResult = decodeTagNumberAndValue22(buffer, offset + len);
            let multipleValues = isOpeningTag22(buffer[offset + len]);
            while (len + offset <= maxOffset && !isClosingTag22(buffer[offset + len])) {
              let subResult = decodeTagNumberAndValue22(buffer, offset + len);
              if (!subResult) {
                return void 0;
              }
              if (subResult.value === 0) {
                len += subResult.len;
                result = bacappDecodeApplicationData22(
                  buffer,
                  offset + len,
                  maxOffset,
                  enums_default22.ASN1_MAX_OBJECT_TYPE,
                  enums_default22.ASN1_MAX_PROPERTY_ID
                );
                if (!result) {
                  return void 0;
                }
                list.push(result);
                len += result.len;
              } else {
                const overrideTagNumber = bacappContextTagType22(
                  propertyId,
                  subResult.tagNumber
                );
                if (overrideTagNumber !== enums_default22.ASN1_MAX_APPLICATION_TAG) {
                  subResult.tagNumber = overrideTagNumber;
                }
                let bacappResult = bacappDecodeData22(
                  buffer,
                  offset + len + subResult.len,
                  maxOffset,
                  subResult.tagNumber,
                  subResult.value
                );
                if (!bacappResult) {
                  return void 0;
                }
                if (bacappResult.len === subResult.value) {
                  let resObj = {
                    value: bacappResult.value,
                    type: bacappResult.type
                  };
                  if (bacappResult.encoding !== void 0)
                    resObj.encoding = bacappResult.encoding;
                  list.push(resObj);
                  len += subResult.len + subResult.value;
                } else {
                  list.push({
                    value: buffer.slice(
                      offset + len + subResult.len,
                      offset + len + subResult.len + subResult.value
                    ),
                    type: enums_default22.ApplicationTag.CONTEXT_SPECIFIC_ENCODED
                  });
                  len += subResult.len + subResult.value;
                }
              }
              if (multipleValues === false) {
                return {
                  len,
                  value: list[0],
                  type: enums_default22.ApplicationTag.CONTEXT_SPECIFIC_DECODED
                };
              }
            }
            if (len + offset > maxOffset) {
              return void 0;
            }
            if (decodeIsClosingTagNumber22(buffer, offset + len, tagResult.tagNumber)) {
              len++;
            }
            return {
              len,
              value: list,
              type: enums_default22.ApplicationTag.CONTEXT_SPECIFIC_DECODED
            };
          }
          return void 0;
        };
        var bacappEncodeTimestamp22 = (buffer, value) => {
          switch (value.type) {
            case enums_default22.TimeStamp.TIME:
              encodeContextTime22(buffer, 0, value.value);
              break;
            case enums_default22.TimeStamp.SEQUENCE_NUMBER:
              encodeContextUnsigned22(buffer, 1, value.value);
              break;
            case enums_default22.TimeStamp.DATETIME:
              bacappEncodeContextDatetime22(buffer, 2, value.value);
              break;
            default:
              throw new Error("NOT_IMPLEMENTED");
          }
        };
        var bacappEncodeContextTimestamp22 = (buffer, tagNumber, value) => {
          encodeOpeningTag22(buffer, tagNumber);
          bacappEncodeTimestamp22(buffer, value);
          encodeClosingTag22(buffer, tagNumber);
        };
        var decodeContextCharacterString22 = (buffer, offset, maxLength, tagNumber) => {
          let len = 0;
          if (!decodeIsContextTag22(buffer, offset + len, tagNumber)) {
            return void 0;
          }
          const result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          const decodedValue = multiCharsetCharacterstringDecode22(
            buffer,
            offset + 1 + len,
            maxLength,
            buffer[offset + len],
            result.value - 1
          );
          if (!decodedValue) {
            return void 0;
          }
          len += result.value;
          return {
            len,
            value: decodedValue.value,
            encoding: decodedValue.encoding
          };
        };
        var decodeIsContextTagWithLength22 = (buffer, offset, tagNumber) => {
          const result = decodeTagNumber22(buffer, offset);
          return {
            len: result.len,
            value: isContextSpecific22(buffer[offset]) && result.tagNumber === tagNumber
          };
        };
        var decodeContextObjectId22 = (buffer, offset, tagNumber) => {
          const result = decodeIsContextTagWithLength22(buffer, offset, tagNumber);
          if (!result.value) {
            return void 0;
          }
          const decodedValue = decodeObjectId22(buffer, offset + result.len);
          decodedValue.len = decodedValue.len + result.len;
          return decodedValue;
        };
        var encodeBacnetCharacterString22 = (buffer, value, encoding) => {
          encoding = encoding || enums_default22.CharacterStringEncoding.UTF_8;
          buffer.buffer[buffer.offset++] = encoding;
          const bufEncoded = import_iconv_lite22.default.encode(value, getEncodingType22(encoding));
          buffer.offset += bufEncoded.copy(buffer.buffer, buffer.offset);
        };
        var encodeApplicationCharacterString22 = (buffer, value, encoding) => {
          const tmp = getBuffer22();
          encodeBacnetCharacterString22(tmp, value, encoding);
          encodeTag22(buffer, enums_default22.ApplicationTag.CHARACTER_STRING, false, tmp.offset);
          tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
          buffer.offset += tmp.offset;
        };
        var encodeContextCharacterString22 = (buffer, tagNumber, value, encoding) => {
          const tmp = getBuffer22();
          encodeBacnetCharacterString22(tmp, value, encoding);
          encodeTag22(buffer, tagNumber, true, tmp.offset);
          tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
          buffer.offset += tmp.offset;
        };
        var encode332 = (buffer, objectId, propertyId, arrayIndex, values) => {
          encodeContextObjectId22(buffer, 0, objectId.type, objectId.instance);
          encodeContextEnumerated22(buffer, 1, propertyId);
          if (arrayIndex !== ASN1_ARRAY_ALL22) {
            encodeContextUnsigned22(buffer, 2, arrayIndex);
          }
          encodeOpeningTag22(buffer, 3);
          values.forEach((value) => {
            bacappEncodeApplicationData22(buffer, value);
          });
          encodeClosingTag22(buffer, 3);
        };
        var decode332 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let value = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.property = { id: decodedValue.value };
          if (len < apduLen && decodeIsContextTag22(buffer, offset + len, 2)) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.property.index = decodedValue.value;
          } else {
            value.property.index = ASN1_ARRAY_ALL22;
          }
          const values = [];
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 3)) {
            return void 0;
          }
          len++;
          while (apduLen - len > 1) {
            result = bacappDecodeApplicationData22(
              buffer,
              offset + len,
              apduLen + offset,
              value.objectId.type,
              value.property.id
            );
            if (!result) {
              return void 0;
            }
            len += result.len;
            delete result.len;
            values.push(result);
          }
          value.values = values;
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 3)) {
            return void 0;
          }
          len++;
          value.len = len;
          return value;
        };
        var alarm_acknowledge_exports22 = {};
        __export22(alarm_acknowledge_exports22, {
          decode: () => decode2102,
          encode: () => encode2102
        });
        var encode2102 = (buffer, ackProcessId, eventObjectId, eventStateAcknowledged, ackSource, eventTimeStamp, ackTimeStamp) => {
          encodeContextUnsigned22(buffer, 0, ackProcessId);
          encodeContextObjectId22(
            buffer,
            1,
            eventObjectId.type,
            eventObjectId.instance
          );
          encodeContextEnumerated22(buffer, 2, eventStateAcknowledged);
          bacappEncodeContextTimestamp22(buffer, 3, eventTimeStamp);
          encodeContextCharacterString22(buffer, 4, ackSource);
          bacappEncodeContextTimestamp22(buffer, 5, ackTimeStamp);
        };
        var decode2102 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          let result;
          let decodedValue;
          let date;
          let time;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.acknowledgedProcessId = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.eventObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.eventStateAcknowledged = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber === 0) {
            decodedValue = decodeBacnetTime22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.eventTimeStamp = decodedValue.value;
          } else if (result.tagNumber === 1) {
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.eventTimeStamp = decodedValue.value;
          } else if (result.tagNumber === 2) {
            date = decodeApplicationDate22(buffer, offset + len);
            len += date.len;
            date = date.value.value;
            time = decodeApplicationTime22(buffer, offset + len);
            len += time.len;
            time = time.value.value;
            value.eventTimeStamp = new Date(
              date.getFullYear(),
              date.getMonth(),
              date.getDate(),
              time.getHours(),
              time.getMinutes(),
              time.getSeconds(),
              time.getMilliseconds()
            );
            len++;
          }
          len++;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeCharacterString22(
            buffer,
            offset + len,
            apduLen - (offset + len),
            result.value
          );
          value.acknowledgeSource = decodedValue.value;
          len += decodedValue.len;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber === 0) {
            decodedValue = decodeBacnetTime22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.acknowledgeTimeStamp = decodedValue.value;
          } else if (result.tagNumber === 1) {
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.acknowledgeTimeStamp = decodedValue.value;
          } else if (result.tagNumber === 2) {
            date = decodeApplicationDate22(buffer, offset + len);
            len += date.len;
            date = date.value.value;
            time = decodeApplicationTime22(buffer, offset + len);
            len += time.len;
            time = time.value.value;
            value.acknowledgeTimeStamp = new Date(
              date.getFullYear(),
              date.getMonth(),
              date.getDate(),
              time.getHours(),
              time.getMinutes(),
              time.getSeconds(),
              time.getMilliseconds()
            );
            len++;
          }
          len++;
          value.len = len;
          return value;
        };
        var alarm_summary_exports22 = {};
        __export22(alarm_summary_exports22, {
          decode: () => decode342,
          encode: () => encode342
        });
        var encode342 = (buffer, alarms) => {
          alarms.forEach((alarm) => {
            encodeContextObjectId22(
              buffer,
              12,
              alarm.objectId.type,
              alarm.objectId.instance
            );
            encodeContextEnumerated22(buffer, 9, alarm.alarmState);
            encodeContextBitstring22(buffer, 8, alarm.acknowledgedTransitions);
          });
        };
        var decode342 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          const alarms = [];
          while (apduLen - 3 - len > 0) {
            let value = {};
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeObjectId22(buffer, offset + len);
            len += decodedValue.len;
            value.objectId = {
              type: decodedValue.objectType,
              instance: decodedValue.instance
            };
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.alarmState = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeBitstring22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.acknowledgedTransitions = decodedValue.value;
            alarms.push(value);
          }
          return {
            len,
            alarms
          };
        };
        var atomic_read_file_exports22 = {};
        __export22(atomic_read_file_exports22, {
          decode: () => decode422,
          decodeAcknowledge: () => decodeAcknowledge82,
          encode: () => encode422,
          encodeAcknowledge: () => encodeAcknowledge92
        });
        var encode422 = (buffer, isStream, objectId, position, count) => {
          encodeApplicationObjectId22(buffer, objectId.type, objectId.instance);
          if (isStream) {
            encodeOpeningTag22(buffer, 0);
            encodeApplicationSigned22(buffer, position);
            encodeApplicationUnsigned22(buffer, count);
            encodeClosingTag22(buffer, 0);
          } else {
            encodeOpeningTag22(buffer, 1);
            encodeApplicationSigned22(buffer, position);
            encodeApplicationUnsigned22(buffer, count);
            encodeClosingTag22(buffer, 1);
          }
        };
        var decode422 = (buffer, offset) => {
          let len = 0;
          let result;
          let decodedValue;
          let isStream = true;
          let objectId = {};
          let position = -1;
          let count = 0;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 12) {
            return void 0;
          }
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
          if (decodeIsOpeningTagNumber22(buffer, offset + len, 0)) {
            isStream = true;
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 3) {
              return void 0;
            }
            decodedValue = decodeSigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            position = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 2) {
              return void 0;
            }
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            count = decodedValue.value;
            if (!decodeIsClosingTagNumber22(buffer, offset + len, 0)) {
              return void 0;
            }
            len++;
          } else if (decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            isStream = false;
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 3) {
              return void 0;
            }
            decodedValue = decodeSigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            position = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 2) {
              return void 0;
            }
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            count = decodedValue.value;
            if (!decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
              return void 0;
            }
            len++;
          } else {
            return void 0;
          }
          return {
            len,
            isStream,
            objectId,
            position,
            count
          };
        };
        var encodeAcknowledge92 = (buffer, isStream, endOfFile, position, blockCount, blocks, counts) => {
          encodeApplicationBoolean22(buffer, endOfFile);
          if (isStream) {
            encodeOpeningTag22(buffer, 0);
            encodeApplicationSigned22(buffer, position);
            encodeApplicationOctetString22(buffer, blocks[0], 0, counts[0]);
            encodeClosingTag22(buffer, 0);
          } else {
            encodeOpeningTag22(buffer, 1);
            encodeApplicationSigned22(buffer, position);
            encodeApplicationUnsigned22(buffer, blockCount);
            for (let i = 0; i < blockCount; i++) {
              encodeApplicationOctetString22(buffer, blocks[i], 0, counts[i]);
            }
            encodeClosingTag22(buffer, 1);
          }
        };
        var decodeAcknowledge82 = (buffer, offset, length = 0) => {
          let len = length;
          let result;
          let decodedValue;
          let endOfFile;
          let isStream;
          let position;
          let targetBuffer;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          endOfFile = result.value > 0;
          if (decodeIsOpeningTagNumber22(buffer, offset + len, 0)) {
            isStream = true;
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 3) {
              return void 0;
            }
            decodedValue = decodeSigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            position = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 6) {
              return void 0;
            }
            targetBuffer = buffer.slice(offset + len, offset + len + result.value);
            len += result.value;
            if (!decodeIsClosingTagNumber22(buffer, offset + len, 0)) {
              return void 0;
            }
            len++;
          } else if (decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            isStream = false;
            throw new Error("NotImplemented");
          } else {
            return void 0;
          }
          return {
            len,
            endOfFile,
            isStream,
            position,
            buffer: targetBuffer
          };
        };
        var atomic_write_file_exports22 = {};
        __export22(atomic_write_file_exports22, {
          decode: () => decode522,
          decodeAcknowledge: () => decodeAcknowledge222,
          encode: () => encode522,
          encodeAcknowledge: () => encodeAcknowledge222
        });
        var encode522 = (buffer, isStream, objectId, position, blocks) => {
          encodeApplicationObjectId22(buffer, objectId.type, objectId.instance);
          if (isStream) {
            encodeOpeningTag22(buffer, 0);
            encodeApplicationSigned22(buffer, position);
            encodeApplicationOctetString22(buffer, blocks[0], 0, blocks[0].length);
            encodeClosingTag22(buffer, 0);
          } else {
            encodeOpeningTag22(buffer, 1);
            encodeApplicationSigned22(buffer, position);
            encodeApplicationUnsigned22(buffer, blocks.length);
            for (let i = 0; i < blocks.length; i++) {
              encodeApplicationOctetString22(
                buffer,
                blocks[i],
                0,
                blocks[i].length
              );
            }
            encodeClosingTag22(buffer, 1);
          }
        };
        var decode522 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let isStream;
          let position;
          let blocks = [];
          let blockCount;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 12) {
            return void 0;
          }
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          let objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          if (decodeIsOpeningTagNumber22(buffer, offset + len, 0)) {
            isStream = true;
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 3) {
              return void 0;
            }
            decodedValue = decodeSigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            position = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 6) {
              return void 0;
            }
            decodedValue = decodeOctetString22(
              buffer,
              offset + len,
              apduLen,
              0,
              result.value
            );
            len += decodedValue.len;
            blocks.push(decodedValue.value);
            if (!decodeIsClosingTagNumber22(buffer, offset + len, 0)) {
              return void 0;
            }
            len++;
          } else if (decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            isStream = false;
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 3) {
              return void 0;
            }
            decodedValue = decodeSigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            position = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 2) {
              return void 0;
            }
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            blockCount = decodedValue.value;
            for (let i = 0; i < blockCount; i++) {
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              if (result.tagNumber !== 6) {
                return void 0;
              }
              decodedValue = decodeOctetString22(
                buffer,
                offset + len,
                apduLen,
                0,
                result.value
              );
              len += decodedValue.len;
              blocks.push(decodedValue.value);
            }
            if (!decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
              return void 0;
            }
            len++;
          } else {
            return void 0;
          }
          return {
            len,
            isStream,
            objectId,
            position,
            blocks
          };
        };
        var encodeAcknowledge222 = (buffer, isStream, position) => {
          if (isStream) {
            encodeContextSigned22(buffer, 0, position);
          } else {
            encodeContextSigned22(buffer, 1, position);
          }
        };
        var decodeAcknowledge222 = (buffer, offset, length = 0) => {
          let len = length;
          let isStream = false;
          let position = 0;
          let decodedValue;
          const result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber === 0) {
            isStream = true;
          } else if (result.tagNumber === 1) {
            isStream = false;
          } else {
            return void 0;
          }
          decodedValue = decodeSigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          position = decodedValue.value;
          return {
            len,
            isStream,
            position
          };
        };
        var cov_notify_exports22 = {};
        __export22(cov_notify_exports22, {
          decode: () => decode622,
          encode: () => encode622
        });
        var encode622 = (buffer, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) => {
          encodeContextUnsigned22(buffer, 0, subscriberProcessId);
          encodeContextObjectId22(
            buffer,
            1,
            8,
            initiatingDeviceId
          );
          encodeContextObjectId22(
            buffer,
            2,
            monitoredObjectId.type,
            monitoredObjectId.instance
          );
          encodeContextUnsigned22(buffer, 3, timeRemaining);
          encodeOpeningTag22(buffer, 4);
          values.forEach((value) => {
            encodeContextEnumerated22(buffer, 0, value.property.id);
            if (value.property.index === ASN1_ARRAY_ALL22) {
              encodeContextUnsigned22(buffer, 1, value.property.index);
            }
            encodeOpeningTag22(buffer, 2);
            value.value.forEach((v) => {
              bacappEncodeApplicationData22(buffer, v);
            });
            encodeClosingTag22(buffer, 2);
            if (value.priority === ASN1_NO_PRIORITY22) {
              encodeContextUnsigned22(buffer, 3, value.priority);
            }
          });
          encodeClosingTag22(buffer, 4);
        };
        var decode622 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          const subscriberProcessId = decodedValue.value;
          if (!decodeIsContextTag22(buffer, offset + len, 1)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          const initiatingDeviceId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          if (!decodeIsContextTag22(buffer, offset + len, 2)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          const monitoredObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          if (!decodeIsContextTag22(buffer, offset + len, 3)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          const timeRemaining = decodedValue.value;
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 4)) {
            return void 0;
          }
          len++;
          const values = [];
          while (apduLen - len > 1 && !decodeIsClosingTagNumber22(buffer, offset + len, 4)) {
            let newEntry = {};
            newEntry.property = {};
            if (!decodeIsContextTag22(buffer, offset + len, 0)) {
              return void 0;
            }
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            newEntry.property.id = decodedValue.value;
            if (decodeIsContextTag22(buffer, offset + len, 1)) {
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              newEntry.property.index = decodedValue.value;
            } else {
              newEntry.property.index = ASN1_ARRAY_ALL22;
            }
            if (!decodeIsOpeningTagNumber22(buffer, offset + len, 2)) {
              return void 0;
            }
            len++;
            const properties = [];
            while (apduLen - len > 1 && !decodeIsClosingTagNumber22(buffer, offset + len, 2)) {
              decodedValue = bacappDecodeApplicationData22(
                buffer,
                offset + len,
                apduLen + offset,
                monitoredObjectId.type,
                newEntry.property.id
              );
              if (!decodedValue) {
                return void 0;
              }
              len += decodedValue.len;
              delete decodedValue.len;
              properties.push(decodedValue);
            }
            newEntry.value = properties;
            len++;
            if (decodeIsContextTag22(buffer, offset + len, 3)) {
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              newEntry.priority = decodedValue.value;
            } else {
              newEntry.priority = ASN1_NO_PRIORITY22;
            }
            values.push(newEntry);
          }
          return {
            len,
            subscriberProcessId,
            initiatingDeviceId,
            monitoredObjectId,
            timeRemaining,
            values
          };
        };
        var create_object_exports22 = {};
        __export22(create_object_exports22, {
          decode: () => decode722,
          encode: () => encode722,
          encodeAcknowledge: () => encodeAcknowledge322
        });
        var encode722 = (buffer, objectId, values) => {
          encodeOpeningTag22(buffer, 0);
          encodeContextObjectId22(buffer, 1, objectId.type, objectId.instance);
          encodeClosingTag22(buffer, 0);
          encodeOpeningTag22(buffer, 1);
          values.forEach((propertyValue) => {
            encodeContextEnumerated22(buffer, 0, propertyValue.property.id);
            if (propertyValue.property.index !== ASN1_ARRAY_ALL22) {
              encodeContextUnsigned22(buffer, 1, propertyValue.property.index);
            }
            encodeOpeningTag22(buffer, 2);
            propertyValue.value.forEach((value) => {
              bacappEncodeApplicationData22(buffer, value);
            });
            encodeClosingTag22(buffer, 2);
            if (propertyValue.priority !== ASN1_NO_PRIORITY22) {
              encodeContextUnsigned22(buffer, 3, propertyValue.priority);
            }
          });
          encodeClosingTag22(buffer, 1);
        };
        var decode722 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let objectId;
          const valueList = [];
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber === 0 && apduLen > len) {
            apduLen -= len;
            if (apduLen < 4) {
              return void 0;
            }
            decodedValue = decodeContextObjectId22(buffer, offset + len, 1);
            len += decodedValue.len;
            objectId = {
              type: decodedValue.objectType,
              instance: decodedValue.instance
            };
          } else {
            return void 0;
          }
          if (decodeIsClosingTag22(buffer, offset + len)) {
            len++;
          }
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          while (apduLen - len > 1) {
            let newEntry = {};
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 0) {
              return void 0;
            }
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            let propertyId = decodedValue.value;
            let arraIndex = ASN1_ARRAY_ALL22;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber === 1) {
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              arraIndex += decodedValue.value;
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
            }
            newEntry.property = { id: propertyId, index: arraIndex };
            if (result.tagNumber === 2 && decodeIsOpeningTag22(buffer, offset + len - 1)) {
              const values = [];
              while (!decodeIsClosingTag22(buffer, offset + len)) {
                decodedValue = bacappDecodeApplicationData22(
                  buffer,
                  offset + len,
                  apduLen + offset,
                  objectId.type,
                  propertyId
                );
                if (!decodedValue) {
                  return void 0;
                }
                len += decodedValue.len;
                delete decodedValue.len;
                values.push(decodedValue);
              }
              len++;
              newEntry.value = values;
            } else {
              return void 0;
            }
            valueList.push(newEntry);
          }
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          return {
            len,
            objectId,
            values: valueList
          };
        };
        var encodeAcknowledge322 = (buffer, objectId) => {
          encodeApplicationObjectId22(buffer, objectId.type, objectId.instance);
        };
        var delete_object_exports22 = {};
        __export22(delete_object_exports22, {
          decode: () => decode822,
          encode: () => encode822
        });
        var decode822 = (buffer, offset, apduLen) => {
          const result = decodeTagNumberAndValue22(buffer, offset);
          if (result.tagNumber !== 12) {
            return void 0;
          }
          let len = 1;
          const value = decodeObjectId22(buffer, offset + len);
          len += value.len;
          if (len !== apduLen) {
            return void 0;
          }
          value.len = len;
          return value;
        };
        var encode822 = (buffer, objectId) => {
          encodeApplicationObjectId22(buffer, objectId.type, objectId.instance);
        };
        var device_communication_control_exports22 = {};
        __export22(device_communication_control_exports22, {
          decode: () => decode922,
          encode: () => encode922
        });
        var encode922 = (buffer, timeDuration, enableDisable, password) => {
          if (timeDuration > 0) {
            encodeContextUnsigned22(buffer, 0, timeDuration);
          }
          encodeContextEnumerated22(buffer, 1, enableDisable);
          if (password && password !== "") {
            encodeContextCharacterString22(buffer, 2, password);
          }
        };
        var decode922 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          let decodedValue;
          let result;
          if (decodeIsContextTag22(buffer, offset + len, 0)) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            value.timeDuration = decodedValue.value;
            len += decodedValue.len;
          }
          if (!decodeIsContextTag22(buffer, offset + len, 1)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          value.enableDisable = decodedValue.value;
          len += decodedValue.len;
          if (len < apduLen) {
            if (!decodeIsContextTag22(buffer, offset + len, 2)) {
              return void 0;
            }
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeCharacterString22(
              buffer,
              offset + len,
              apduLen - (offset + len),
              result.value
            );
            value.password = decodedValue.value;
            len += decodedValue.len;
          }
          value.len = len;
          return value;
        };
        var error_exports22 = {};
        __export22(error_exports22, {
          buildMessage: () => buildMessage22,
          decode: () => decode1022,
          encode: () => encode1022
        });
        var encode1022 = (buffer, errorClass, errorCode) => {
          encodeApplicationEnumerated22(buffer, errorClass);
          encodeApplicationEnumerated22(buffer, errorCode);
        };
        var decode1022 = (buffer, offset) => {
          const orgOffset = offset;
          let result;
          result = decodeTagNumberAndValue22(buffer, offset);
          offset += result.len;
          const errorClass = decodeEnumerated22(buffer, offset, result.value);
          offset += errorClass.len;
          result = decodeTagNumberAndValue22(buffer, offset);
          offset += result.len;
          const errorCode = decodeEnumerated22(buffer, offset, result.value);
          offset += errorClass.len;
          return {
            len: offset - orgOffset,
            class: errorClass.value,
            code: errorCode.value
          };
        };
        var buildMessage22 = function(result) {
          return "BacnetError Class: " + ErrorClassName22[result.class] + " (" + result.class + ") Code: " + ErrorCodeName22[result.code] + " (" + result.code + ")";
        };
        var event_information_exports22 = {};
        __export22(event_information_exports22, {
          decode: () => decode1122,
          encode: () => encode1122
        });
        var encode1122 = (buffer, events, moreEvents) => {
          encodeOpeningTag22(buffer, 0);
          events.forEach((event) => {
            encodeContextObjectId22(
              buffer,
              0,
              event.objectId.type,
              event.objectId.instance
            );
            encodeContextEnumerated22(buffer, 1, event.eventState);
            encodeContextBitstring22(buffer, 2, event.acknowledgedTransitions);
            encodeOpeningTag22(buffer, 3);
            for (let i = 0; i < 3; i++) {
              encodeApplicationDate22(buffer, event.eventTimeStamps[i]);
              encodeApplicationTime22(buffer, event.eventTimeStamps[i]);
            }
            encodeClosingTag22(buffer, 3);
            encodeContextEnumerated22(buffer, 4, event.notifyType);
            encodeContextBitstring22(buffer, 5, event.eventEnable);
            encodeOpeningTag22(buffer, 6);
            for (let i = 0; i < 3; i++) {
              encodeApplicationUnsigned22(buffer, event.eventPriorities[i]);
            }
            encodeClosingTag22(buffer, 6);
          });
          encodeClosingTag22(buffer, 0);
          encodeContextBoolean22(buffer, 1, moreEvents);
        };
        var decode1122 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          len++;
          const alarms = [];
          let moreEvents;
          while (apduLen - 3 - len > 0) {
            let value = {};
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeObjectId22(buffer, offset + len);
            len += decodedValue.len;
            value.objectId = {
              type: decodedValue.objectType,
              instance: decodedValue.instance
            };
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.eventState = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeBitstring22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.acknowledgedTransitions = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            value.eventTimeStamps = [];
            for (let i = 0; i < 3; i++) {
              if (result.tagNumber !== 0) {
                decodedValue = decodeApplicationDate22(buffer, offset + len);
                len += decodedValue.len;
                const date = decodedValue.value.value;
                decodedValue = decodeApplicationTime22(buffer, offset + len);
                len += decodedValue.len;
                const time = decodedValue.value.value;
                value.eventTimeStamps[i] = new Date(
                  date.getFullYear(),
                  date.getMonth(),
                  date.getDate(),
                  time.getHours(),
                  time.getMinutes(),
                  time.getSeconds(),
                  time.getMilliseconds()
                );
              } else {
                len += result.value;
              }
            }
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.notifyType = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeBitstring22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.eventEnable = decodedValue.value;
            len++;
            value.eventPriorities = [];
            for (let i = 0; i < 3; i++) {
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.eventPriorities[i] = decodedValue.value;
            }
            len++;
            alarms.push(value);
          }
          moreEvents = buffer[apduLen - 1] === 1;
          return {
            len,
            alarms,
            moreEvents
          };
        };
        var event_notify_data_exports22 = {};
        __export22(event_notify_data_exports22, {
          decode: () => decode1222,
          encode: () => encode1222
        });
        var encode1222 = (buffer, data) => {
          encodeContextUnsigned22(buffer, 0, data.processId);
          encodeContextObjectId22(
            buffer,
            1,
            data.initiatingObjectId.type,
            data.initiatingObjectId.instance
          );
          encodeContextObjectId22(
            buffer,
            2,
            data.eventObjectId.type,
            data.eventObjectId.instance
          );
          bacappEncodeContextTimestamp22(buffer, 3, data.timeStamp);
          encodeContextUnsigned22(buffer, 4, data.notificationClass);
          encodeContextUnsigned22(buffer, 5, data.priority);
          encodeContextEnumerated22(buffer, 6, data.eventType);
          if (data.messageText && data.messageText !== "") {
            encodeContextCharacterString22(buffer, 7, data.messageText);
          }
          encodeContextEnumerated22(buffer, 8, data.notifyType);
          switch (data.notifyType) {
            case 0:
            case 1:
              encodeContextBoolean22(buffer, 9, data.ackRequired);
              encodeContextEnumerated22(buffer, 10, data.fromState);
              break;
            default:
              break;
          }
          encodeContextEnumerated22(buffer, 11, data.toState);
          switch (data.notifyType) {
            case 0:
            case 1:
              encodeOpeningTag22(buffer, 12);
              switch (data.eventType) {
                case 0:
                  encodeOpeningTag22(buffer, 0);
                  encodeContextBitstring22(
                    buffer,
                    0,
                    data.changeOfBitstringReferencedBitString
                  );
                  encodeContextBitstring22(
                    buffer,
                    1,
                    data.changeOfBitstringStatusFlags
                  );
                  encodeClosingTag22(buffer, 0);
                  break;
                case 1:
                  encodeOpeningTag22(buffer, 1);
                  encodeOpeningTag22(buffer, 0);
                  bacappEncodePropertyState22(buffer, data.changeOfStateNewState);
                  encodeClosingTag22(buffer, 0);
                  encodeContextBitstring22(
                    buffer,
                    1,
                    data.changeOfStateStatusFlags
                  );
                  encodeClosingTag22(buffer, 1);
                  break;
                case 2:
                  encodeOpeningTag22(buffer, 2);
                  encodeOpeningTag22(buffer, 0);
                  switch (data.changeOfValueTag) {
                    case 0:
                      encodeContextReal22(
                        buffer,
                        1,
                        data.changeOfValueChangeValue
                      );
                      break;
                    case 1:
                      encodeContextBitstring22(
                        buffer,
                        0,
                        data.changeOfValueChangedBits
                      );
                      break;
                    default:
                      throw new Error("NotImplemented");
                  }
                  encodeClosingTag22(buffer, 0);
                  encodeContextBitstring22(
                    buffer,
                    1,
                    data.changeOfValueStatusFlags
                  );
                  encodeClosingTag22(buffer, 2);
                  break;
                case 4:
                  encodeOpeningTag22(buffer, 4);
                  encodeContextReal22(buffer, 0, data.floatingLimitReferenceValue);
                  encodeContextBitstring22(
                    buffer,
                    1,
                    data.floatingLimitStatusFlags
                  );
                  encodeContextReal22(buffer, 2, data.floatingLimitSetPointValue);
                  encodeContextReal22(buffer, 3, data.floatingLimitErrorLimit);
                  encodeClosingTag22(buffer, 4);
                  break;
                case 5:
                  encodeOpeningTag22(buffer, 5);
                  encodeContextReal22(buffer, 0, data.outOfRangeExceedingValue);
                  encodeContextBitstring22(buffer, 1, data.outOfRangeStatusFlags);
                  encodeContextReal22(buffer, 2, data.outOfRangeDeadband);
                  encodeContextReal22(buffer, 3, data.outOfRangeExceededLimit);
                  encodeClosingTag22(buffer, 5);
                  break;
                case 8:
                  encodeOpeningTag22(buffer, 8);
                  encodeContextEnumerated22(
                    buffer,
                    0,
                    data.changeOfLifeSafetyNewState
                  );
                  encodeContextEnumerated22(
                    buffer,
                    1,
                    data.changeOfLifeSafetyNewMode
                  );
                  encodeContextBitstring22(
                    buffer,
                    2,
                    data.changeOfLifeSafetyStatusFlags
                  );
                  encodeContextEnumerated22(
                    buffer,
                    3,
                    data.changeOfLifeSafetyOperationExpected
                  );
                  encodeClosingTag22(buffer, 8);
                  break;
                case 10:
                  encodeOpeningTag22(buffer, 10);
                  bacappEncodeContextDeviceObjPropertyRef22(
                    buffer,
                    0,
                    data.bufferReadyBufferProperty
                  );
                  encodeContextUnsigned22(
                    buffer,
                    1,
                    data.bufferReadyPreviousNotification
                  );
                  encodeContextUnsigned22(
                    buffer,
                    2,
                    data.bufferReadyCurrentNotification
                  );
                  encodeClosingTag22(buffer, 10);
                  break;
                case 11:
                  encodeOpeningTag22(buffer, 11);
                  encodeContextUnsigned22(
                    buffer,
                    0,
                    data.unsignedRangeExceedingValue
                  );
                  encodeContextBitstring22(
                    buffer,
                    1,
                    data.unsignedRangeStatusFlags
                  );
                  encodeContextUnsigned22(
                    buffer,
                    2,
                    data.unsignedRangeExceededLimit
                  );
                  encodeClosingTag22(buffer, 11);
                  break;
                case 9:
                case 3:
                  throw new Error("NotImplemented");
                default:
                  throw new Error("NotImplemented");
              }
              encodeClosingTag22(buffer, 12);
              break;
            case 2:
              throw new Error("NotImplemented");
            default:
              break;
          }
        };
        var decode1222 = (buffer, offset) => {
          let len = 0;
          let result;
          let decodedValue;
          let eventData = {};
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          eventData.processId = decodedValue.value;
          if (!decodeIsContextTag22(buffer, offset + len, 1)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          eventData.initiatingObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          if (!decodeIsContextTag22(buffer, offset + len, 2)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          eventData.eventObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          if (!decodeIsContextTag22(buffer, offset + len, 3)) {
            return void 0;
          }
          len += 2;
          decodedValue = decodeApplicationDate22(buffer, offset + len);
          len += decodedValue.len;
          const date = decodedValue.value.value;
          decodedValue = decodeApplicationTime22(buffer, offset + len);
          len += decodedValue.len;
          const time = decodedValue.value.value;
          eventData.timeStamp = new Date(
            date.getFullYear(),
            date.getMonth(),
            date.getDate(),
            time.getHours(),
            time.getMinutes(),
            time.getSeconds(),
            time.getMilliseconds()
          );
          len += 2;
          if (!decodeIsContextTag22(buffer, offset + len, 4)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          eventData.notificationClass = decodedValue.value;
          if (!decodeIsContextTag22(buffer, offset + len, 5)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          eventData.priority = decodedValue.value;
          if (eventData.priority > 255) {
            return void 0;
          }
          if (!decodeIsContextTag22(buffer, offset + len, 6)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          eventData.eventType = decodedValue.value;
          if (decodeIsContextTag22(buffer, offset + len, 7)) {
            decodedValue = decodeContextCharacterString22(
              buffer,
              offset + len,
              2e4,
              7
            );
            len += decodedValue.len;
            eventData.messageText = decodedValue.value;
          }
          if (!decodeIsContextTag22(buffer, offset + len, 8)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          eventData.notifyType = decodedValue.value;
          switch (eventData.notifyType) {
            case 0:
            case 1:
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned22(buffer, offset + len, 1);
              len += decodedValue.len;
              eventData.ackRequired = decodedValue.value > 0;
              if (!decodeIsContextTag22(buffer, offset + len, 10)) {
                return void 0;
              }
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              decodedValue = decodeEnumerated22(
                buffer,
                offset + len,
                result.value
              );
              len += decodedValue.len;
              eventData.fromState = decodedValue.value;
              break;
            default:
              break;
          }
          if (!decodeIsContextTag22(buffer, offset + len, 11)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          eventData.toState = decodedValue.value;
          eventData.len = len;
          return eventData;
        };
        var get_enrollment_summary_exports22 = {};
        __export22(get_enrollment_summary_exports22, {
          decode: () => decode1322,
          decodeAcknowledge: () => decodeAcknowledge322,
          encode: () => encode1322,
          encodeAcknowledge: () => encodeAcknowledge422
        });
        var encode1322 = (buffer, acknowledgmentFilter, enrollmentFilter, eventStateFilter, eventTypeFilter, priorityFilter, notificationClassFilter) => {
          encodeContextEnumerated22(buffer, 0, acknowledgmentFilter);
          if (enrollmentFilter) {
            encodeOpeningTag22(buffer, 1);
            encodeOpeningTag22(buffer, 0);
            encodeContextObjectId22(
              buffer,
              0,
              enrollmentFilter.objectId.type,
              enrollmentFilter.objectId.instance
            );
            encodeClosingTag22(buffer, 0);
            encodeContextUnsigned22(buffer, 1, enrollmentFilter.processId);
            encodeClosingTag22(buffer, 1);
          }
          if (eventStateFilter) {
            encodeOpeningTag22(buffer, 2);
            encodeContextEnumerated22(buffer, 0, eventStateFilter);
            encodeClosingTag22(buffer, 2);
          }
          if (eventTypeFilter) {
            encodeOpeningTag22(buffer, 3);
            encodeContextEnumerated22(buffer, 0, eventTypeFilter);
            encodeClosingTag22(buffer, 3);
          }
          if (priorityFilter) {
            encodeOpeningTag22(buffer, 4);
            encodeContextUnsigned22(buffer, 0, priorityFilter.min);
            encodeContextUnsigned22(buffer, 1, priorityFilter.max);
            encodeClosingTag22(buffer, 4);
          }
          if (notificationClassFilter) {
            encodeOpeningTag22(buffer, 5);
            encodeContextUnsigned22(buffer, 0, notificationClassFilter);
            encodeClosingTag22(buffer, 5);
          }
        };
        var decode1322 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let value = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.acknowledgmentFilter = decodedValue.value;
          if (decodeIsContextTag22(buffer, offset + len, 1)) {
            len++;
            value.enrollmentFilter = {};
            if (!decodeIsContextTag22(buffer, offset + len, 0)) {
              return void 0;
            }
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeObjectId22(buffer, offset + len);
            len += decodedValue.len;
            value.enrollmentFilter.objectId = {
              type: decodedValue.objectType,
              instance: decodedValue.instance
            };
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.enrollmentFilter.processId = decodedValue.value;
            len++;
          }
          if (decodeIsContextTag22(buffer, offset + len, 2)) {
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.eventStateFilter = decodedValue.value;
            len++;
          }
          if (decodeIsContextTag22(buffer, offset + len, 3)) {
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.eventTypeFilter = decodedValue.value;
            len++;
          }
          if (decodeIsContextTag22(buffer, offset + len, 4)) {
            len++;
            value.priorityFilter = {};
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.priorityFilter.min = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.priorityFilter.max = decodedValue.value;
            len++;
          }
          if (decodeIsContextTag22(buffer, offset + len, 5)) {
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.notificationClassFilter = decodedValue.value;
            len++;
          }
          value.len = len;
          return value;
        };
        var encodeAcknowledge422 = (buffer, enrollmentSummaries) => {
          enrollmentSummaries.forEach((enrollmentSummary) => {
            encodeApplicationObjectId22(
              buffer,
              enrollmentSummary.objectId.type,
              enrollmentSummary.objectId.instance
            );
            encodeApplicationEnumerated22(buffer, enrollmentSummary.eventType);
            encodeApplicationEnumerated22(buffer, enrollmentSummary.eventState);
            encodeApplicationUnsigned22(buffer, enrollmentSummary.priority);
            encodeApplicationUnsigned22(
              buffer,
              enrollmentSummary.notificationClass
            );
          });
        };
        var decodeAcknowledge322 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          const enrollmentSummaries = [];
          while (apduLen - len > 0) {
            const enrollmentSummary = {};
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 12) {
              return void 0;
            }
            result = decodeObjectId22(buffer, offset + len);
            len += result.len;
            enrollmentSummary.objectId = {
              type: result.objectType,
              instance: result.instance
            };
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 9) {
              return void 0;
            }
            result = decodeEnumerated22(buffer, offset + len, result.value);
            len += result.len;
            enrollmentSummary.eventType = result.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 9) {
              return void 0;
            }
            result = decodeEnumerated22(buffer, offset + len, result.value);
            len += result.len;
            enrollmentSummary.eventState = result.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 2) {
              return void 0;
            }
            result = decodeUnsigned22(buffer, offset + len, result.value);
            len += result.len;
            enrollmentSummary.priority = result.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 2) {
              return void 0;
            }
            result = decodeUnsigned22(buffer, offset + len, result.value);
            len += result.len;
            enrollmentSummary.notificationClass = result.value;
            enrollmentSummaries.push(enrollmentSummary);
          }
          return {
            enrollmentSummaries,
            len
          };
        };
        var get_event_information_exports22 = {};
        __export22(get_event_information_exports22, {
          decode: () => decode1422,
          decodeAcknowledge: () => decodeAcknowledge422,
          encode: () => encode1422,
          encodeAcknowledge: () => encodeAcknowledge522
        });
        var encode1422 = (buffer, lastReceivedObjectId) => {
          encodeContextObjectId22(
            buffer,
            0,
            lastReceivedObjectId.type,
            lastReceivedObjectId.instance
          );
        };
        var decode1422 = (buffer, offset) => {
          let len = 0;
          let result;
          let decodedValue;
          let value = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.lastReceivedObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          value.len = len;
          return value;
        };
        var encodeAcknowledge522 = (buffer, events, moreEvents) => {
          encodeOpeningTag22(buffer, 0);
          events.forEach((eventData) => {
            encodeContextObjectId22(
              buffer,
              0,
              eventData.objectId.type,
              eventData.objectId.instance
            );
            encodeContextEnumerated22(buffer, 1, eventData.eventState);
            encodeContextBitstring22(buffer, 2, eventData.acknowledgedTransitions);
            encodeOpeningTag22(buffer, 3);
            for (let i = 0; i < 3; i++) {
              bacappEncodeTimestamp22(buffer, eventData.eventTimeStamps[i]);
            }
            encodeClosingTag22(buffer, 3);
            encodeContextEnumerated22(buffer, 4, eventData.notifyType);
            encodeContextBitstring22(buffer, 5, eventData.eventEnable);
            encodeOpeningTag22(buffer, 6);
            for (let i = 0; i < 3; i++) {
              encodeApplicationUnsigned22(buffer, eventData.eventPriorities[i]);
            }
            encodeClosingTag22(buffer, 6);
          });
          encodeClosingTag22(buffer, 0);
          encodeContextBoolean22(buffer, 1, moreEvents);
        };
        var decodeAcknowledge422 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let value = {};
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          value.events = [];
          while (apduLen - len > 3) {
            let event = {};
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeObjectId22(buffer, offset + len);
            len += decodedValue.len;
            event.objectId = {
              type: decodedValue.objectType,
              instance: decodedValue.instance
            };
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            event.eventState = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeBitstring22(buffer, offset + len, result.value);
            len += decodedValue.len;
            event.acknowledgedTransitions = decodedValue.value;
            if (!decodeIsOpeningTagNumber22(buffer, offset + len, 3)) {
              return void 0;
            }
            len++;
            event.eventTimeStamps = [];
            for (let i = 0; i < 3; i++) {
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              if (result.tagNumber === 0) {
                decodedValue = decodeBacnetTime22(
                  buffer,
                  offset + len,
                  result.value
                );
                len += decodedValue.len;
                event.eventTimeStamps[i] = {
                  value: decodedValue.value,
                  type: 0
                  /* TIME */
                };
              } else if (result.tagNumber === 1) {
                decodedValue = decodeUnsigned22(
                  buffer,
                  offset + len,
                  result.value
                );
                len += decodedValue.len;
                event.eventTimeStamps[i] = {
                  value: decodedValue.value,
                  type: 1
                  /* SEQUENCE_NUMBER */
                };
              } else if (result.tagNumber === 2) {
                let date = decodeApplicationDate22(
                  buffer,
                  offset + len
                );
                len += date.len;
                date = date.value.value;
                let time = decodeApplicationTime22(
                  buffer,
                  offset + len
                );
                len += time.len;
                time = time.value.value;
                event.eventTimeStamps[i] = {
                  value: new Date(
                    date.getFullYear(),
                    date.getMonth(),
                    date.getDate(),
                    time.getHours(),
                    time.getMinutes(),
                    time.getSeconds(),
                    time.getMilliseconds()
                  ),
                  type: 2
                  /* DATETIME */
                };
                len++;
              }
            }
            if (!decodeIsClosingTagNumber22(buffer, offset + len, 3)) {
              return void 0;
            }
            len++;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            event.notifyType = decodedValue.value;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeBitstring22(buffer, offset + len, result.value);
            len += decodedValue.len;
            event.eventEnable = decodedValue.value;
            if (!decodeIsOpeningTagNumber22(buffer, offset + len, 6)) {
              return void 0;
            }
            len++;
            event.eventPriorities = [];
            for (let i = 0; i < 3; i++) {
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              event.eventPriorities[i] = decodedValue.value;
            }
            if (!decodeIsClosingTagNumber22(buffer, offset + len, 6)) {
              return void 0;
            }
            len++;
            value.events.push(event);
          }
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          value.moreEvents = buffer[offset + len] > 0;
          len++;
          value.len = len;
          return value;
        };
        var i_am_exports22 = {};
        __export22(i_am_exports22, {
          decode: () => decode1522,
          encode: () => encode1522
        });
        var encode1522 = (buffer, deviceId, maxApdu, segmentation, vendorId) => {
          encodeApplicationObjectId22(buffer, 8, deviceId);
          encodeApplicationUnsigned22(buffer, maxApdu);
          encodeApplicationEnumerated22(buffer, segmentation);
          encodeApplicationUnsigned22(buffer, vendorId);
        };
        var decode1522 = (buffer, offset) => {
          let result;
          let apduLen = 0;
          const orgOffset = offset;
          result = decodeTagNumberAndValue22(buffer, offset + apduLen);
          apduLen += result.len;
          if (result.tagNumber !== 12) {
            return void 0;
          }
          result = decodeObjectId22(buffer, offset + apduLen);
          apduLen += result.len;
          if (result.objectType !== 8) {
            return void 0;
          }
          const deviceId = result.instance;
          result = decodeTagNumberAndValue22(buffer, offset + apduLen);
          apduLen += result.len;
          if (result.tagNumber !== 2) {
            return void 0;
          }
          result = decodeUnsigned22(buffer, offset + apduLen, result.value);
          apduLen += result.len;
          const maxApdu = result.value;
          result = decodeTagNumberAndValue22(buffer, offset + apduLen);
          apduLen += result.len;
          if (result.tagNumber !== 9) {
            return void 0;
          }
          result = decodeEnumerated22(buffer, offset + apduLen, result.value);
          apduLen += result.len;
          if (result.value > 3) {
            return void 0;
          }
          const segmentation = result.value;
          result = decodeTagNumberAndValue22(buffer, offset + apduLen);
          apduLen += result.len;
          if (result.tagNumber !== 2) {
            return void 0;
          }
          result = decodeUnsigned22(buffer, offset + apduLen, result.value);
          apduLen += result.len;
          if (result.value > 65535) {
            return void 0;
          }
          const vendorId = result.value;
          return {
            len: offset - orgOffset,
            deviceId,
            maxApdu,
            segmentation,
            vendorId
          };
        };
        var i_have_exports22 = {};
        __export22(i_have_exports22, {
          decode: () => decode1622,
          encode: () => encode1622
        });
        var encode1622 = (buffer, deviceId, objectId, objectName) => {
          encodeApplicationObjectId22(buffer, deviceId.type, deviceId.instance);
          encodeApplicationObjectId22(buffer, objectId.type, objectId.instance);
          encodeApplicationCharacterString22(buffer, objectName);
        };
        var decode1622 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let value = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.deviceId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeCharacterString22(
            buffer,
            offset + len,
            apduLen - (offset + len),
            result.value
          );
          len += decodedValue.len;
          value.objectName = decodedValue.value;
          value.len = len;
          return value;
        };
        var life_safety_operation_exports22 = {};
        __export22(life_safety_operation_exports22, {
          decode: () => decode1722,
          encode: () => encode1722
        });
        var encode1722 = (buffer, processId, requestingSource, operation, targetObjectId) => {
          encodeContextUnsigned22(buffer, 0, processId);
          encodeContextCharacterString22(buffer, 1, requestingSource);
          encodeContextEnumerated22(buffer, 2, operation);
          encodeContextObjectId22(
            buffer,
            3,
            targetObjectId.type,
            targetObjectId.instance
          );
        };
        var decode1722 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let value = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.processId = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeCharacterString22(
            buffer,
            offset + len,
            apduLen - (offset + len),
            result.value
          );
          len += decodedValue.len;
          value.requestingSource = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.operation = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.targetObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          value.len = len;
          return value;
        };
        var private_transfer_exports22 = {};
        __export22(private_transfer_exports22, {
          decode: () => decode1822,
          encode: () => encode1822
        });
        var encode1822 = (buffer, vendorId, serviceNumber, data) => {
          encodeContextUnsigned22(buffer, 0, vendorId);
          encodeContextUnsigned22(buffer, 1, serviceNumber);
          encodeOpeningTag22(buffer, 2);
          for (let i = 0; i < data.length; i++) {
            buffer.buffer[buffer.offset++] = data[i];
          }
          encodeClosingTag22(buffer, 2);
        };
        var decode1822 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let value = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.vendorId = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.serviceNumber = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          const size = apduLen - (offset + len + 1);
          const data = [];
          for (let i = 0; i < size; i++) {
            data.push(buffer[offset + len++]);
          }
          value.data = data;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          value.len = len;
          return value;
        };
        var read_property_exports22 = {};
        __export22(read_property_exports22, {
          decode: () => decode1922,
          decodeAcknowledge: () => decodeAcknowledge522,
          encode: () => encode1922,
          encodeAcknowledge: () => encodeAcknowledge622
        });
        var encode1922 = (buffer, objectType, objectInstance, propertyId, arrayIndex) => {
          if (objectType <= ASN1_MAX_OBJECT22) {
            encodeContextObjectId22(buffer, 0, objectType, objectInstance);
          }
          if (propertyId <= ASN1_MAX_PROPERTY_ID22) {
            encodeContextEnumerated22(buffer, 1, propertyId);
          }
          if (arrayIndex !== ASN1_ARRAY_ALL22) {
            encodeContextUnsigned22(
              buffer,
              2,
              arrayIndex || arrayIndex === 0 ? arrayIndex : ASN1_ARRAY_ALL22
            );
          }
        };
        var decode1922 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          if (apduLen < 7) {
            return void 0;
          }
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          let objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          let property = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          property.id = decodedValue.value;
          property.index = ASN1_ARRAY_ALL22;
          if (len < apduLen) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber === 2 && len < apduLen) {
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              property.index = decodedValue.value;
            } else {
              return void 0;
            }
          }
          if (len < apduLen) {
            return void 0;
          }
          return {
            len,
            objectId,
            property
          };
        };
        var encodeAcknowledge622 = (buffer, objectId, propertyId, arrayIndex, values) => {
          encodeContextObjectId22(buffer, 0, objectId.type, objectId.instance);
          encodeContextEnumerated22(buffer, 1, propertyId);
          if (arrayIndex !== ASN1_ARRAY_ALL22) {
            encodeContextUnsigned22(buffer, 2, arrayIndex);
          }
          encodeOpeningTag22(buffer, 3);
          values.forEach((value) => {
            bacappEncodeApplicationData22(buffer, value);
          });
          encodeClosingTag22(buffer, 3);
        };
        var decodeAcknowledge522 = (buffer, offset, apduLen) => {
          let result;
          let decodedValue;
          let objectId = {};
          let property = {};
          if (!decodeIsContextTag22(buffer, offset, 0)) {
            return void 0;
          }
          let len = 1;
          result = decodeObjectId22(buffer, offset + len);
          len += result.len;
          objectId.type = result.objectType;
          objectId.instance = result.instance;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          result = decodeEnumerated22(buffer, offset + len, result.value);
          len += result.len;
          property.id = result.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          if (result.tagNumber === 2) {
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            property.index = decodedValue.value;
          } else {
            property.index = ASN1_ARRAY_ALL22;
          }
          const values = [];
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 3)) {
            return void 0;
          }
          len++;
          while (apduLen - len > 1) {
            result = bacappDecodeApplicationData22(
              buffer,
              offset + len,
              apduLen + offset,
              objectId.type,
              property.id
            );
            if (!result) {
              return void 0;
            }
            len += result.len;
            delete result.len;
            values.push(result);
          }
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 3)) {
            return void 0;
          }
          len++;
          return {
            len,
            objectId,
            property,
            values
          };
        };
        var read_property_multiple_exports22 = {};
        __export22(read_property_multiple_exports22, {
          decode: () => decode2022,
          decodeAcknowledge: () => decodeAcknowledge622,
          encode: () => encode2022,
          encodeAcknowledge: () => encodeAcknowledge722
        });
        var encode2022 = (buffer, properties) => {
          properties.forEach((value) => {
            encodeReadAccessSpecification22(buffer, value);
          });
        };
        var decode2022 = (buffer, offset, apduLen) => {
          let len = 0;
          const values = [];
          while (apduLen - len > 0) {
            const decodedValue = decodeReadAccessSpecification22(
              buffer,
              offset + len,
              apduLen - len
            );
            if (!decodedValue) {
              return void 0;
            }
            len += decodedValue.len;
            values.push(decodedValue.value);
          }
          return {
            len,
            properties: values
          };
        };
        var encodeAcknowledge722 = (buffer, values) => {
          values.forEach((value) => {
            encodeReadAccessResult22(buffer, value);
          });
        };
        var decodeAcknowledge622 = (buffer, offset, apduLen) => {
          let len = 0;
          const values = [];
          while (apduLen - len > 0) {
            const result = decodeReadAccessResult22(
              buffer,
              offset + len,
              apduLen - len
            );
            if (!result || result === -1) {
              return void 0;
            }
            len += result.len;
            values.push(result.value);
          }
          return {
            len,
            values
          };
        };
        var read_range_exports22 = {};
        __export22(read_range_exports22, {
          decode: () => decode2122,
          decodeAcknowledge: () => decodeAcknowledge722,
          encode: () => encode2122,
          encodeAcknowledge: () => encodeAcknowledge822
        });
        var encode2122 = (buffer, objectId, propertyId, arrayIndex, requestType, position, time, count) => {
          encodeContextObjectId22(buffer, 0, objectId.type, objectId.instance);
          encodeContextEnumerated22(buffer, 1, propertyId);
          if (arrayIndex !== ASN1_ARRAY_ALL22) {
            encodeContextUnsigned22(buffer, 2, arrayIndex);
          }
          switch (requestType) {
            case 0:
              encodeOpeningTag22(buffer, 3);
              encodeApplicationUnsigned22(buffer, position);
              encodeApplicationSigned22(buffer, count);
              encodeClosingTag22(buffer, 3);
              break;
            case 1:
              encodeOpeningTag22(buffer, 6);
              encodeApplicationUnsigned22(buffer, position);
              encodeApplicationSigned22(buffer, count);
              encodeClosingTag22(buffer, 6);
              break;
            case 2:
              encodeOpeningTag22(buffer, 7);
              encodeApplicationDate22(buffer, time);
              encodeApplicationTime22(buffer, time);
              encodeApplicationSigned22(buffer, count);
              encodeClosingTag22(buffer, 7);
              break;
            default:
              break;
          }
        };
        var decode2122 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let requestType;
          let position;
          let time;
          let count;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          decodedValue = decodeObjectId22(buffer, offset + len, 0);
          len += decodedValue.len;
          let objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          let property = {};
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          property.id = decodedValue.value;
          if (len < apduLen && decodeIsContextTag22(buffer, offset + len, 2)) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            property.index = decodedValue.value;
          } else {
            property.index = ASN1_ARRAY_ALL22;
          }
          if (len < apduLen) {
            result = decodeTagNumber22(buffer, offset + len);
            len += result.len;
            switch (result.tagNumber) {
              case 3:
                requestType = 0;
                result = decodeTagNumberAndValue22(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned22(
                  buffer,
                  offset + len,
                  result.value
                );
                len += decodedValue.len;
                position = decodedValue.value;
                result = decodeTagNumberAndValue22(buffer, offset + len);
                len += result.len;
                decodedValue = decodeSigned22(buffer, offset + len, result.value);
                len += decodedValue.len;
                count = decodedValue.value;
                break;
              case 6:
                requestType = 1;
                result = decodeTagNumberAndValue22(buffer, offset + len);
                len += result.len;
                decodedValue = decodeUnsigned22(
                  buffer,
                  offset + len,
                  result.value
                );
                len += decodedValue.len;
                position = decodedValue.value;
                result = decodeTagNumberAndValue22(buffer, offset + len);
                len += result.len;
                decodedValue = decodeSigned22(buffer, offset + len, result.value);
                len += decodedValue.len;
                count = decodedValue.value;
                break;
              case 7:
                requestType = 2;
                decodedValue = decodeApplicationDate22(buffer, offset + len);
                len += decodedValue.len;
                const tmpDate = decodedValue.value.value;
                decodedValue = decodeApplicationTime22(buffer, offset + len);
                len += decodedValue.len;
                const tmpTime = decodedValue.value.value;
                time = new Date(
                  tmpDate.getYear(),
                  tmpDate.getMonth(),
                  tmpDate.getDate(),
                  tmpTime.getHours(),
                  tmpTime.getMinutes(),
                  tmpTime.getSeconds(),
                  tmpTime.getMilliseconds()
                );
                result = decodeTagNumberAndValue22(buffer, offset + len);
                len += result.len;
                decodedValue = decodeSigned22(buffer, offset + len, result.value);
                len += decodedValue.len;
                count = decodedValue.value;
                break;
              default:
                return void 0;
            }
            result = decodeTagNumber22(buffer, offset + len);
            len += result.len;
          }
          return {
            len,
            objectId,
            property,
            requestType,
            position,
            time,
            count
          };
        };
        var encodeAcknowledge822 = (buffer, objectId, propertyId, arrayIndex, resultFlags, itemCount, applicationData, requestType, firstSequence) => {
          encodeContextObjectId22(buffer, 0, objectId.type, objectId.instance);
          encodeContextEnumerated22(buffer, 1, propertyId);
          if (arrayIndex !== ASN1_ARRAY_ALL22) {
            encodeContextUnsigned22(buffer, 2, arrayIndex);
          }
          encodeContextBitstring22(buffer, 3, resultFlags);
          encodeContextUnsigned22(buffer, 4, itemCount);
          encodeOpeningTag22(buffer, 5);
          if (itemCount !== 0) {
            applicationData.copy(
              buffer.buffer,
              buffer.offset,
              0,
              applicationData.length
            );
            buffer.offset += applicationData.length;
          }
          encodeClosingTag22(buffer, 5);
          if (itemCount !== 0 && requestType && requestType !== 0) {
            encodeContextUnsigned22(buffer, 6, firstSequence);
          }
        };
        var decodeAcknowledge722 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          const objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          const property = { index: ASN1_ARRAY_ALL22 };
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          property.id = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          if (result.tagNumber === 2 && len < apduLen) {
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            property.index = decodedValue.value;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeBitstring22(buffer, offset + len, result.value);
          len += decodedValue.len;
          const resultFlag = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          const itemCount = decodedValue.value;
          if (!decodeIsOpeningTag22(buffer, offset + len)) {
            return void 0;
          }
          len++;
          const rangeBuffer = buffer.slice(offset + len, apduLen - 3);
          return {
            objectId,
            property,
            resultFlag,
            itemCount,
            rangeBuffer,
            len
          };
        };
        var register_foreign_device_exports22 = {};
        __export22(register_foreign_device_exports22, {
          decode: () => decode2222,
          encode: () => encode2222
        });
        var encode2222 = (buffer, ttl, length = 2) => {
          encodeUnsigned22(buffer, ttl, length);
        };
        var decode2222 = (buffer, offset, length = 2) => {
          let len = 0;
          let result = decodeUnsigned22(buffer, offset + len, length);
          len += result.len;
          return {
            len,
            ttl: result.value
          };
        };
        var reinitialize_device_exports22 = {};
        __export22(reinitialize_device_exports22, {
          decode: () => decode2322,
          encode: () => encode2322
        });
        var encode2322 = (buffer, state, password) => {
          encodeContextEnumerated22(buffer, 0, state);
          if (password && password !== "") {
            encodeContextCharacterString22(buffer, 1, password);
          }
        };
        var decode2322 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          let result;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          let decodedValue = decodeEnumerated22(
            buffer,
            offset + len,
            result.value
          );
          value.state = decodedValue.value;
          len += decodedValue.len;
          if (len < apduLen) {
            if (!decodeIsContextTag22(buffer, offset + len, 1)) {
              return void 0;
            }
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeCharacterString22(
              buffer,
              offset + len,
              apduLen - (offset + len),
              result.value
            );
            value.password = decodedValue.value;
            len += decodedValue.len;
          }
          value.len = len;
          return value;
        };
        var subscribe_cov_exports22 = {};
        __export22(subscribe_cov_exports22, {
          decode: () => decode2422,
          encode: () => encode2422
        });
        var encode2422 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime) => {
          encodeContextUnsigned22(buffer, 0, subscriberProcessId);
          encodeContextObjectId22(
            buffer,
            1,
            monitoredObjectId.type,
            monitoredObjectId.instance
          );
          if (!cancellationRequest) {
            encodeContextBoolean22(buffer, 2, issueConfirmedNotifications);
            encodeContextUnsigned22(buffer, 3, lifetime);
          }
        };
        var decode2422 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          let result;
          let decodedValue;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.subscriberProcessId = decodedValue.value;
          if (!decodeIsContextTag22(buffer, offset + len, 1)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.monitoredObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          value.cancellationRequest = true;
          if (len < apduLen) {
            value.issueConfirmedNotifications = false;
            if (decodeIsContextTag22(buffer, offset + len, 2)) {
              value.cancellationRequest = false;
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              value.issueConfirmedNotifications = buffer[offset + len] > 0;
              len++;
            }
            value.lifetime = 0;
            if (decodeIsContextTag22(buffer, offset + len, 3)) {
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              value.lifetime = decodedValue.value;
            }
          }
          value.len = len;
          return value;
        };
        var subscribe_property_exports22 = {};
        __export22(subscribe_property_exports22, {
          decode: () => decode2522,
          encode: () => encode2522
        });
        var encode2522 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime, monitoredProperty, covIncrementPresent, covIncrement) => {
          encodeContextUnsigned22(buffer, 0, subscriberProcessId);
          encodeContextObjectId22(
            buffer,
            1,
            monitoredObjectId.type,
            monitoredObjectId.instance
          );
          if (!cancellationRequest) {
            encodeContextBoolean22(buffer, 2, issueConfirmedNotifications);
            encodeContextUnsigned22(buffer, 3, lifetime);
          }
          encodeOpeningTag22(buffer, 4);
          encodeContextEnumerated22(buffer, 0, monitoredProperty.id);
          if (monitoredProperty.index !== ASN1_ARRAY_ALL22) {
            encodeContextUnsigned22(buffer, 1, monitoredProperty.index);
          }
          encodeClosingTag22(buffer, 4);
          if (covIncrementPresent) {
            encodeContextReal22(buffer, 5, covIncrement);
          }
        };
        var decode2522 = (buffer, offset) => {
          let len = 0;
          let value = {};
          let result;
          let decodedValue;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.subscriberProcessId = decodedValue.value;
          if (!decodeIsContextTag22(buffer, offset + len, 1)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          value.monitoredObjectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          value.cancellationRequest = true;
          value.issueConfirmedNotifications = false;
          if (decodeIsContextTag22(buffer, offset + len, 2)) {
            value.cancellationRequest = false;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            value.issueConfirmedNotifications = buffer[offset + len] > 0;
            len++;
          }
          value.lifetime = 0;
          if (decodeIsContextTag22(buffer, offset + len, 3)) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.lifetime = decodedValue.value;
          }
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 4)) {
            return void 0;
          }
          len++;
          value.monitoredProperty = {};
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.monitoredProperty.id = decodedValue.value;
          value.monitoredProperty.index = ASN1_ARRAY_ALL22;
          if (decodeIsContextTag22(buffer, offset + len, 1)) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.monitoredProperty.index = decodedValue.value;
          }
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 4)) {
            return void 0;
          }
          len++;
          value.covIncrement = 0;
          if (decodeIsContextTag22(buffer, offset + len, 5)) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            decodedValue = decodeReal22(buffer, offset + len);
            len += decodedValue.len;
            value.covIncrement = decodedValue.value;
          }
          value.len = len;
          return value;
        };
        var time_sync_exports22 = {};
        __export22(time_sync_exports22, {
          decode: () => decode2622,
          encode: () => encode2622
        });
        var encode2622 = (buffer, time) => {
          encodeApplicationDate22(buffer, time);
          encodeApplicationTime22(buffer, time);
        };
        var decode2622 = (buffer, offset, length) => {
          let len = 0;
          let result;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 10) {
            return void 0;
          }
          const date = decodeDate22(buffer, offset + len);
          len += date.len;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 11) {
            return void 0;
          }
          const time = decodeBacnetTime22(buffer, offset + len);
          len += time.len;
          return {
            len,
            value: new Date(
              date.value.getFullYear(),
              date.value.getMonth(),
              date.value.getDate(),
              time.value.getHours(),
              time.value.getMinutes(),
              time.value.getSeconds(),
              time.value.getMilliseconds()
            )
          };
        };
        var who_has_exports22 = {};
        __export22(who_has_exports22, {
          decode: () => decode2722,
          encode: () => encode2722
        });
        var encode2722 = (buffer, lowLimit, highLimit, objectId, objectName) => {
          if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE22 && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE22) {
            encodeContextUnsigned22(buffer, 0, lowLimit);
            encodeContextUnsigned22(buffer, 1, highLimit);
          }
          if (objectName && objectName !== "") {
            encodeContextCharacterString22(buffer, 3, objectName);
          } else {
            encodeContextObjectId22(buffer, 2, objectId.type, objectId.instance);
          }
        };
        var decode2722 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          let decodedValue;
          let result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber === 0) {
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            if (decodedValue.value <= ASN1_MAX_INSTANCE22) {
              value.lowLimit = decodedValue.value;
            }
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
          }
          if (result.tagNumber === 1) {
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            if (decodedValue.value <= ASN1_MAX_INSTANCE22) {
              value.highLimit = decodedValue.value;
            }
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
          }
          if (result.tagNumber === 2) {
            decodedValue = decodeObjectId22(buffer, offset + len);
            len += decodedValue.len;
            value.objectId = {
              type: decodedValue.objectType,
              instance: decodedValue.instance
            };
          }
          if (result.tagNumber === 3) {
            decodedValue = decodeCharacterString22(
              buffer,
              offset + len,
              apduLen - (offset + len),
              result.value
            );
            len += decodedValue.len;
            value.objectName = decodedValue.value;
          }
          value.len = len;
          return value;
        };
        var who_is_exports22 = {};
        __export22(who_is_exports22, {
          decode: () => decode2822,
          encode: () => encode2822
        });
        var encode2822 = (buffer, lowLimit, highLimit) => {
          if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE22 && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE22) {
            encodeContextUnsigned22(buffer, 0, lowLimit);
            encodeContextUnsigned22(buffer, 1, highLimit);
          }
        };
        var decode2822 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {};
          if (apduLen <= 0) {
            return {};
          }
          let result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 0) {
            return void 0;
          }
          if (apduLen <= len) {
            return void 0;
          }
          let decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          if (decodedValue.value <= ASN1_MAX_INSTANCE22) {
            value.lowLimit = decodedValue.value;
          }
          if (apduLen <= len) {
            return void 0;
          }
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          if (apduLen <= len) {
            return void 0;
          }
          decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
          len += decodedValue.len;
          if (decodedValue.value <= ASN1_MAX_INSTANCE22) {
            value.highLimit = decodedValue.value;
          }
          value.len = len;
          return value;
        };
        var write_property_exports22 = {};
        __export22(write_property_exports22, {
          decode: () => decode2922,
          encode: () => encode2922
        });
        var encode2922 = (buffer, objectType, objectInstance, propertyId, arrayIndex, priority, values) => {
          encodeContextObjectId22(buffer, 0, objectType, objectInstance);
          encodeContextEnumerated22(buffer, 1, propertyId);
          if (arrayIndex !== ASN1_ARRAY_ALL22) {
            encodeContextUnsigned22(buffer, 2, arrayIndex);
          }
          encodeOpeningTag22(buffer, 3);
          values.forEach((value) => {
            bacappEncodeApplicationData22(buffer, value);
          });
          encodeClosingTag22(buffer, 3);
          if (priority !== ASN1_NO_PRIORITY22) {
            encodeContextUnsigned22(buffer, 4, priority);
          }
        };
        var decode2922 = (buffer, offset, apduLen) => {
          let len = 0;
          let value = {
            property: {}
          };
          let decodedValue;
          let result;
          if (!decodeIsContextTag22(buffer, offset + len, 0)) {
            return void 0;
          }
          len++;
          decodedValue = decodeObjectId22(buffer, offset + len);
          let objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          len += decodedValue.len;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 1) {
            return void 0;
          }
          decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.property.id = decodedValue.value;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          if (result.tagNumber === 2) {
            len += result.len;
            decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
            len += decodedValue.len;
            value.property.index = decodedValue.value;
          } else {
            value.property.index = ASN1_ARRAY_ALL22;
          }
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 3)) {
            return void 0;
          }
          len++;
          const values = [];
          while (apduLen - len > 1 && !decodeIsClosingTagNumber22(buffer, offset + len, 3)) {
            decodedValue = bacappDecodeApplicationData22(
              buffer,
              offset + len,
              apduLen + offset,
              objectId.type,
              value.property.id
            );
            if (!decodedValue) {
              return void 0;
            }
            len += decodedValue.len;
            delete decodedValue.len;
            values.push(decodedValue);
          }
          value.value = values;
          if (!decodeIsClosingTagNumber22(buffer, offset + len, 3)) {
            return void 0;
          }
          len++;
          value.priority = ASN1_MAX_PRIORITY22;
          if (len < apduLen) {
            result = decodeTagNumberAndValue22(buffer, offset + len);
            if (result.tagNumber === 4) {
              len += result.len;
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue;
              if (decodedValue.value >= ASN1_MIN_PRIORITY22 && decodedValue.value <= ASN1_MAX_PRIORITY22) {
                value.priority = decodedValue.value;
              } else {
                return void 0;
              }
            }
          }
          return {
            len,
            objectId,
            value
          };
        };
        var write_property_multiple_exports22 = {};
        __export22(write_property_multiple_exports22, {
          decode: () => decode3022,
          encode: () => encode3022,
          encodeObject: () => encodeObject22
        });
        var encode3022 = (buffer, objectId, values) => {
          encodeContextObjectId22(buffer, 0, objectId.type, objectId.instance);
          encodeOpeningTag22(buffer, 1);
          values.forEach((pValue) => {
            encodeContextEnumerated22(buffer, 0, pValue.property.id);
            if (pValue.property.index !== ASN1_ARRAY_ALL22) {
              encodeContextUnsigned22(buffer, 1, pValue.property.index);
            }
            encodeOpeningTag22(buffer, 2);
            pValue.value.forEach((value) => {
              bacappEncodeApplicationData22(buffer, value);
            });
            encodeClosingTag22(buffer, 2);
            if (pValue.priority !== ASN1_NO_PRIORITY22) {
              encodeContextUnsigned22(buffer, 3, pValue.priority);
            }
          });
          encodeClosingTag22(buffer, 1);
        };
        var decode3022 = (buffer, offset, apduLen) => {
          let len = 0;
          let result;
          let decodedValue;
          let objectId;
          result = decodeTagNumberAndValue22(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 0 || apduLen <= len) {
            return void 0;
          }
          apduLen -= len;
          if (apduLen < 4) {
            return void 0;
          }
          decodedValue = decodeObjectId22(buffer, offset + len);
          len += decodedValue.len;
          objectId = {
            type: decodedValue.objectType,
            instance: decodedValue.instance
          };
          if (!decodeIsOpeningTagNumber22(buffer, offset + len, 1)) {
            return void 0;
          }
          len++;
          const _values = [];
          while (apduLen - len > 1) {
            let newEntry = {};
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber !== 0) {
              return void 0;
            }
            decodedValue = decodeEnumerated22(buffer, offset + len, result.value);
            len += decodedValue.len;
            let propertyId = decodedValue.value;
            let arrayIndex = ASN1_ARRAY_ALL22;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber === 1) {
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              arrayIndex = decodedValue.value;
              result = decodeTagNumberAndValue22(buffer, offset + len);
              len += result.len;
            }
            newEntry.property = { id: propertyId, index: arrayIndex };
            if (result.tagNumber !== 2 || !decodeIsOpeningTag22(buffer, offset + len - 1)) {
              return void 0;
            }
            const values = [];
            while (len + offset <= buffer.length && !decodeIsClosingTag22(buffer, offset + len)) {
              let value = bacappDecodeApplicationData22(
                buffer,
                offset + len,
                apduLen + offset,
                objectId.type,
                propertyId
              );
              if (!value) {
                return void 0;
              }
              len += value.len;
              delete value.len;
              values.push(value);
            }
            len++;
            newEntry.value = values;
            let priority = ASN1_NO_PRIORITY22;
            result = decodeTagNumberAndValue22(buffer, offset + len);
            len += result.len;
            if (result.tagNumber === 3) {
              decodedValue = decodeUnsigned22(buffer, offset + len, result.value);
              len += decodedValue.len;
              priority = decodedValue.value;
            } else {
              len--;
            }
            newEntry.priority = priority;
            _values.push(newEntry);
            if (decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
              len++;
            }
          }
          if (decodeIsClosingTagNumber22(buffer, offset + len, 1)) {
            len++;
          }
          return {
            len,
            objectId,
            values: _values
          };
        };
        var encodeObject22 = (buffer, values) => {
          values.forEach((object) => {
            encode3022(buffer, object.objectId, object.values);
          });
        };
        var getDecodedType22 = (buffer, offset) => {
          return buffer[offset];
        };
        var encodeConfirmedServiceRequest22 = (buffer, type, service, maxSegments, maxApdu, invokeId, sequencenumber, proposedWindowSize) => {
          buffer.buffer[buffer.offset++] = type;
          buffer.buffer[buffer.offset++] = maxSegments | maxApdu;
          buffer.buffer[buffer.offset++] = invokeId;
          if ((type & 8) > 0) {
            buffer.buffer[buffer.offset++] = sequencenumber;
            buffer.buffer[buffer.offset++] = proposedWindowSize;
          }
          buffer.buffer[buffer.offset++] = service;
        };
        var decodeConfirmedServiceRequest22 = (buffer, offset) => {
          const orgOffset = offset;
          const type = buffer[offset++];
          const maxSegments = buffer[offset] & 240;
          const maxApdu = buffer[offset++] & 15;
          const invokeId = buffer[offset++];
          let sequencenumber = 0;
          let proposedWindowNumber = 0;
          if ((type & 8) > 0) {
            sequencenumber = buffer[offset++];
            proposedWindowNumber = buffer[offset++];
          }
          const service = buffer[offset++];
          return {
            len: offset - orgOffset,
            type,
            service,
            maxSegments,
            maxApdu,
            invokeId,
            sequencenumber,
            proposedWindowNumber
          };
        };
        var encodeUnconfirmedServiceRequest22 = (buffer, type, service) => {
          buffer.buffer[buffer.offset++] = type;
          buffer.buffer[buffer.offset++] = service;
        };
        var decodeUnconfirmedServiceRequest22 = (buffer, offset) => {
          const orgOffset = offset;
          const type = buffer[offset++];
          const service = buffer[offset++];
          return {
            len: offset - orgOffset,
            type,
            service
          };
        };
        var encodeSimpleAck22 = (buffer, type, service, invokeId) => {
          buffer.buffer[buffer.offset++] = type;
          buffer.buffer[buffer.offset++] = invokeId;
          buffer.buffer[buffer.offset++] = service;
        };
        var decodeSimpleAck22 = (buffer, offset) => {
          const orgOffset = offset;
          const type = buffer[offset++];
          const invokeId = buffer[offset++];
          const service = buffer[offset++];
          return {
            len: offset - orgOffset,
            type,
            service,
            invokeId
          };
        };
        var encodeComplexAck22 = (buffer, type, service, invokeId, sequencenumber, proposedWindowNumber) => {
          let len = 3;
          buffer.buffer[buffer.offset++] = type;
          buffer.buffer[buffer.offset++] = invokeId;
          if ((type & 8) > 0) {
            buffer.buffer[buffer.offset++] = sequencenumber;
            buffer.buffer[buffer.offset++] = proposedWindowNumber;
            len += 2;
          }
          buffer.buffer[buffer.offset++] = service;
          return len;
        };
        var decodeComplexAck22 = (buffer, offset) => {
          const orgOffset = offset;
          const type = buffer[offset++];
          const invokeId = buffer[offset++];
          let sequencenumber = 0;
          let proposedWindowNumber = 0;
          if ((type & 8) > 0) {
            sequencenumber = buffer[offset++];
            proposedWindowNumber = buffer[offset++];
          }
          const service = buffer[offset++];
          return {
            len: offset - orgOffset,
            type,
            service,
            invokeId,
            sequencenumber,
            proposedWindowNumber
          };
        };
        var encodeSegmentAck22 = (buffer, type, originalInvokeId, sequencenumber, actualWindowSize) => {
          buffer.buffer[buffer.offset++] = type;
          buffer.buffer[buffer.offset++] = originalInvokeId;
          buffer.buffer[buffer.offset++] = sequencenumber;
          buffer.buffer[buffer.offset++] = actualWindowSize;
        };
        var decodeSegmentAck22 = (buffer, offset) => {
          const orgOffset = offset;
          const type = buffer[offset++];
          const originalInvokeId = buffer[offset++];
          const sequencenumber = buffer[offset++];
          const actualWindowSize = buffer[offset++];
          return {
            len: offset - orgOffset,
            type,
            originalInvokeId,
            sequencenumber,
            actualWindowSize
          };
        };
        var encodeResult22 = (buffer, resultCode) => {
          encodeUnsigned22(buffer, resultCode, 2);
        };
        var encodeError22 = (buffer, type, service, invokeId) => {
          buffer.buffer[buffer.offset++] = type;
          buffer.buffer[buffer.offset++] = invokeId;
          buffer.buffer[buffer.offset++] = service;
        };
        var decodeError22 = (buffer, offset) => {
          const orgOffset = offset;
          const type = buffer[offset++];
          const invokeId = buffer[offset++];
          const service = buffer[offset++];
          return {
            len: offset - orgOffset,
            type,
            service,
            invokeId
          };
        };
        var decodeAbort22 = (buffer, offset) => {
          const orgOffset = offset;
          const type = buffer[offset++];
          const invokeId = buffer[offset++];
          const reason = buffer[offset++];
          return {
            len: offset - orgOffset,
            type,
            invokeId,
            reason
          };
        };
        var DEFAULT_HOP_COUNT32 = 255;
        var BACNET_PROTOCOL_VERSION22 = 1;
        var BACNET_ADDRESS_TYPES22 = {
          NONE: 0,
          IP: 1
        };
        var decodeTarget22 = (buffer, offset) => {
          let len = 0;
          const target = {
            type: BACNET_ADDRESS_TYPES22.NONE,
            net: buffer[offset + len++] << 8 | buffer[offset + len++] << 0
          };
          const adrLen = buffer[offset + len++];
          if (adrLen > 0) {
            target.adr = [];
            for (let i = 0; i < adrLen; i++) {
              target.adr.push(buffer[offset + len++]);
            }
          }
          return {
            target,
            len
          };
        };
        var encodeTarget22 = (buffer, target) => {
          buffer.buffer[buffer.offset++] = (target.net & 65280) >> 8;
          buffer.buffer[buffer.offset++] = (target.net & 255) >> 0;
          if (target.net === 65535 || !target.adr) {
            buffer.buffer[buffer.offset++] = 0;
          } else {
            buffer.buffer[buffer.offset++] = target.adr.length;
            if (target.adr.length > 0) {
              for (let i = 0; i < target.adr.length; i++) {
                buffer.buffer[buffer.offset++] = target.adr[i];
              }
            }
          }
        };
        var decode3122 = (buffer, offset) => {
          let adrLen;
          const orgOffset = offset;
          offset++;
          const funct = buffer[offset++];
          let destination;
          if (funct & 32) {
            const tmpDestination = decodeTarget22(buffer, offset);
            offset += tmpDestination.len;
            destination = tmpDestination.target;
          }
          let source;
          if (funct & 8) {
            const tmpSource = decodeTarget22(buffer, offset);
            offset += tmpSource.len;
            source = tmpSource.target;
          }
          let hopCount = 0;
          if (funct & 32) {
            hopCount = buffer[offset++];
          }
          let networkMsgType = 0;
          let vendorId = 0;
          if (funct & 128) {
            networkMsgType = buffer[offset++];
            if (networkMsgType >= 128) {
              vendorId = buffer[offset++] << 8 | buffer[offset++] << 0;
            } else if (networkMsgType === 0) {
              offset += 2;
            }
          }
          if (buffer[orgOffset + 0] !== BACNET_PROTOCOL_VERSION22) {
            return void 0;
          }
          return {
            len: offset - orgOffset,
            funct,
            destination,
            source,
            hopCount,
            networkMsgType,
            vendorId
          };
        };
        var encode3122 = (buffer, funct, destination, source, hopCount, networkMsgType, vendorId) => {
          const hasDestination = destination && destination.net > 0;
          const hasSource = source && source.net > 0 && source.net !== 65535;
          buffer.buffer[buffer.offset++] = BACNET_PROTOCOL_VERSION22;
          buffer.buffer[buffer.offset++] = funct | (hasDestination ? 32 : 0) | (hasSource ? 8 : 0);
          if (hasDestination) {
            encodeTarget22(buffer, destination);
          }
          if (hasSource) {
            encodeTarget22(buffer, source);
          }
          if (hasDestination) {
            buffer.buffer[buffer.offset++] = hopCount || DEFAULT_HOP_COUNT32;
          }
          if ((funct & 128) > 0) {
            buffer.buffer[buffer.offset++] = networkMsgType;
            if (networkMsgType >= 128) {
              buffer.buffer[buffer.offset++] = (vendorId & 65280) >> 8;
              buffer.buffer[buffer.offset++] = (vendorId & 255) >> 0;
            }
          }
        };
        var DEFAULT_BACNET_PORT222 = 47808;
        var encode3222 = (buffer, func, msgLength, originatingIP) => {
          buffer[0] = BVLL_TYPE_BACNET_IP22;
          buffer[1] = func;
          buffer[2] = (msgLength & 65280) >> 8;
          buffer[3] = (msgLength & 255) >> 0;
          if (originatingIP) {
            if (func !== 4) {
              throw new Error(
                "Cannot specify originatingIP unless BvlcResultPurpose.FORWARDED_NPDU is used."
              );
            }
            const [ipstr, portstr] = originatingIP.split(":");
            const port = parseInt(portstr, 10) || DEFAULT_BACNET_PORT222;
            const ip = ipstr.split(".");
            buffer[4] = parseInt(ip[0], 10);
            buffer[5] = parseInt(ip[1], 10);
            buffer[6] = parseInt(ip[2], 10);
            buffer[7] = parseInt(ip[3], 10);
            buffer[8] = (port & 65280) >> 8;
            buffer[9] = (port & 255) >> 0;
            return 6 + BVLC_HEADER_LENGTH32;
          } else {
            if (func === 4) {
              throw new Error(
                "Must specify originatingIP if BvlcResultPurpose.FORWARDED_NPDU is used."
              );
            }
          }
          return BVLC_HEADER_LENGTH32;
        };
        var decode3222 = (buffer, _offset) => {
          let len;
          const func = buffer[1];
          const msgLength = buffer[2] << 8 | buffer[3] << 0;
          if (buffer[0] !== BVLL_TYPE_BACNET_IP22 || buffer.length !== msgLength) {
            return void 0;
          }
          let originatingIP = null;
          switch (func) {
            case 0:
            case 10:
            case 11:
            case 9:
            case 5:
            case 6:
            case 8:
            case 2:
            case 1:
            case 3:
            case 7:
              len = 4;
              break;
            case 4:
              const port = buffer[8] << 8 | buffer[9];
              originatingIP = buffer.slice(4, 8).join(".");
              if (port !== DEFAULT_BACNET_PORT222) {
                originatingIP += ":" + port;
              }
              len = 10;
              break;
            case 12:
              return void 0;
            default:
              return void 0;
          }
          return {
            len,
            func,
            msgLength,
            // Originating IP is set to the IP address of the node that originally
            // sent the packet, when it has been forwarded to us by a BBMD (since the
            // BBMD's IP address will be in the sender field.
            originatingIP
          };
        };
        var EventEmitter222 = import_events222.default.EventEmitter;
        var debug322 = (0, import_debug322.default)("bacnet:client:debug");
        var trace222 = (0, import_debug322.default)("bacnet:client:trace");
        var ALL_INTERFACES22 = "0.0.0.0";
        var LOCALHOST_INTERFACES_IPV422 = "127.0.0.1";
        var BROADCAST_ADDRESS22 = "255.255.255.255";
        var DEFAULT_HOP_COUNT222 = 255;
        var BVLC_HEADER_LENGTH222 = 4;
        var BVLC_FWD_HEADER_LENGTH22 = 10;
        var beU22 = UnconfirmedServiceChoice22;
        var unconfirmedServiceMap22 = {
          [beU22.I_AM]: "iAm",
          [beU22.WHO_IS]: "whoIs",
          [beU22.WHO_HAS]: "whoHas",
          [beU22.UNCONFIRMED_COV_NOTIFICATION]: "covNotifyUnconfirmed",
          [beU22.TIME_SYNCHRONIZATION]: "timeSync",
          [beU22.UTC_TIME_SYNCHRONIZATION]: "timeSyncUTC",
          [beU22.UNCONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
          [beU22.I_HAVE]: "iHave",
          [beU22.UNCONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
        };
        var beC22 = ConfirmedServiceChoice22;
        var confirmedServiceMap22 = {
          [beC22.READ_PROPERTY]: "readProperty",
          [beC22.WRITE_PROPERTY]: "writeProperty",
          [beC22.READ_PROPERTY_MULTIPLE]: "readPropertyMultiple",
          [beC22.WRITE_PROPERTY_MULTIPLE]: "writePropertyMultiple",
          [beC22.CONFIRMED_COV_NOTIFICATION]: "covNotify",
          [beC22.ATOMIC_WRITE_FILE]: "atomicWriteFile",
          [beC22.ATOMIC_READ_FILE]: "atomicReadFile",
          [beC22.SUBSCRIBE_COV]: "subscribeCov",
          [beC22.SUBSCRIBE_COV_PROPERTY]: "subscribeProperty",
          [beC22.DEVICE_COMMUNICATION_CONTROL]: "deviceCommunicationControl",
          [beC22.REINITIALIZE_DEVICE]: "reinitializeDevice",
          [beC22.CONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
          [beC22.READ_RANGE]: "readRange",
          [beC22.CREATE_OBJECT]: "createObject",
          [beC22.DELETE_OBJECT]: "deleteObject",
          [beC22.ACKNOWLEDGE_ALARM]: "alarmAcknowledge",
          [beC22.GET_ALARM_SUMMARY]: "getAlarmSummary",
          [beC22.GET_ENROLLMENT_SUMMARY]: "getEnrollmentSummary",
          [beC22.GET_EVENT_INFORMATION]: "getEventInformation",
          [beC22.LIFE_SAFETY_OPERATION]: "lifeSafetyOperation",
          [beC22.ADD_LIST_ELEMENT]: "addListElement",
          [beC22.REMOVE_LIST_ELEMENT]: "removeListElement",
          [beC22.CONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
        };
        var errorReasonEnums22 = {
          BacnetAbort: RejectReason22
        };
        var BacnetError22 = class extends Error {
          constructor(message, bacnetErrorClass, bacnetErrorCode) {
            super(message);
            this.bacnetErrorClass = bacnetErrorClass;
            this.bacnetErrorCode = bacnetErrorCode;
          }
        };
        function bacnetErrorToString22(err) {
          var _a;
          const isError = err instanceof Error || err instanceof BacnetError22;
          if (!isError)
            return;
          const message = err.message;
          const reasonClass = message == null ? void 0 : message.split(" - ")[0];
          const reason = +((_a = message == null ? void 0 : message.split("Reason:")[1]) == null ? void 0 : _a.split(" ")[0]);
          if (!errorReasonEnums22[reasonClass])
            return;
          const reasonString = errorReasonEnums22[reasonClass][reason];
          return reasonClass + ": " + reasonString;
        }
        var Client22 = class extends EventEmitter222 {
          /**
           *
           * @param options
           */
          constructor(options) {
            super();
            options = options || {};
            this._invokeCounter = 1;
            this._invokeStore = {};
            this._lastSequenceNumber = 0;
            this._segmentStore = [];
            this._settings = {
              port: options.port || 47808,
              interface: options.interface || ALL_INTERFACES22,
              transport: options.transport,
              broadcastAddress: options.broadcastAddress || BROADCAST_ADDRESS22,
              apduTimeout: options.apduTimeout || 3e3
            };
            options.reuseAddr = options.reuseAddr === void 0 ? true : !!options.reuseAddr;
            this._transport = this._settings.transport || new Transport22({
              port: this._settings.port,
              interface: this._settings.interface,
              broadcastAddress: this._settings.broadcastAddress,
              reuseAddr: options.reuseAddr
            });
            this._transport.on("message", this._receiveData.bind(this));
            this._transport.on("error", this._receiveError.bind(this));
            this._transport.on("listening", () => this.emit("listening"));
            this._transport.open();
          }
          /**
           *
           * @returns {number}
           * @private
           */
          _getInvokeId() {
            const id = this._invokeCounter++;
            if (id >= 256)
              this._invokeCounter = 1;
            return id - 1;
          }
          /**
           *
           * @param id
           * @param err
           * @param result
           * @returns {*}
           * @private
           */
          _invokeCallback(id, err, result) {
            const callback = this._invokeStore[id];
            if (callback) {
              return void callback(err, result);
            }
            debug322("InvokeId", id, "not found -> drop package");
          }
          /**
           *
           * @param id
           * @param callback
           * @private
           */
          _addCallback(id, callback) {
            const timeout = setTimeout(() => {
              delete this._invokeStore[id];
              callback(new Error("ERR_TIMEOUT"));
            }, this._settings.apduTimeout);
            this._invokeStore[id] = (err, data) => {
              clearTimeout(timeout);
              delete this._invokeStore[id];
              callback(err, data);
            };
          }
          /**
           *
           * @param isForwarded
           * @returns {{offset: (number), buffer: *}}
           * @private
           */
          _getBuffer(isForwarded) {
            return Object.assign(
              {},
              {
                buffer: Buffer.alloc(this._transport.getMaxPayload()),
                offset: isForwarded ? BVLC_FWD_HEADER_LENGTH22 : BVLC_HEADER_LENGTH222
              }
            );
          }
          /**
           *
           * @param invokeId
           * @param buffer
           * @param offset
           * @param length
           * @returns {*}
           * @private
           */
          _processError(invokeId, buffer, offset, length) {
            const result = error_exports22.decode(buffer, offset);
            trace222("Received error:", result);
            if (!result) {
              return debug322("Couldn`t decode Error");
            }
            const err = new BacnetError22(error_exports22.buildMessage(result));
            err.bacnetErrorClass = result.class;
            err.bacnetErrorCode = result.code;
            this._invokeCallback(invokeId, err);
          }
          /**
           *
           * @param invokeId
           * @param reason
           * @private
           */
          _processAbort(invokeId, reason) {
            const err = new BacnetError22("BacnetAbort - Reason:" + reason);
            err.bacnetAbortReason = reason;
            err.bacnetErrorClass = AbortReason22;
            this._invokeCallback(invokeId, err);
          }
          /**
           *
           * @param receiver
           * @param negative
           * @param server
           * @param originalInvokeId
           * @param sequencenumber
           * @param actualWindowSize
           * @private
           */
          _segmentAckResponse(receiver, negative, server, originalInvokeId, sequencenumber, actualWindowSize) {
            const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
            encode3122(
              buffer,
              0,
              receiver,
              null,
              DEFAULT_HOP_COUNT222,
              0,
              0
            );
            encodeSegmentAck22(
              buffer,
              64 | (negative ? 2 : 0) | (server ? 1 : 0),
              originalInvokeId,
              sequencenumber,
              actualWindowSize
            );
            this.sendBvlc(receiver, buffer);
          }
          /**
           *
           * @param msg
           * @param first
           * @param moreFollows
           * @param buffer
           * @param offset
           * @param length
           * @private
           */
          _performDefaultSegmentHandling(msg, first, moreFollows, buffer, offset, length) {
            if (first) {
              this._segmentStore = [];
              msg.type &= ~8;
              let apduHeaderLen = 3;
              if ((msg.type & PDU_TYPE_MASK22) === 0) {
                apduHeaderLen = 4;
              }
              const apdubuffer = this._getBuffer();
              apdubuffer.offset = 0;
              buffer.copy(apdubuffer.buffer, apduHeaderLen, offset, offset + length);
              if ((msg.type & PDU_TYPE_MASK22) === 0) {
                encodeConfirmedServiceRequest22(
                  apdubuffer,
                  msg.type,
                  msg.service,
                  msg.maxSegments,
                  msg.maxApdu,
                  msg.invokeId,
                  0,
                  0
                );
              } else {
                encodeComplexAck22(
                  apdubuffer,
                  msg.type,
                  msg.service,
                  msg.invokeId,
                  0,
                  0
                );
              }
              this._segmentStore.push(
                //@ts-ignore
                apdubuffer.buffer.slice(0, length + apduHeaderLen)
              );
            } else {
              this._segmentStore.push(buffer.slice(offset, offset + length));
            }
            if (!moreFollows) {
              const apduBuffer = Buffer.concat(this._segmentStore);
              this._segmentStore = [];
              msg.type &= ~8;
              this._handlePdu(apduBuffer, 0, apduBuffer.length, msg.header);
            }
          }
          /**
           *
           * @param msg
           * @param server
           * @param buffer
           * @param offset
           * @param length
           * @private
           */
          _processSegment(msg, server, buffer, offset, length) {
            let first = false;
            if (msg.sequencenumber === 0 && this._lastSequenceNumber === 0) {
              first = true;
            } else {
              if (msg.sequencenumber !== this._lastSequenceNumber + 1) {
                return this._segmentAckResponse(
                  msg.header.address,
                  true,
                  server,
                  msg.invokeId,
                  this._lastSequenceNumber,
                  msg.proposedWindowNumber
                );
              }
            }
            this._lastSequenceNumber = msg.sequencenumber;
            const moreFollows = msg.type & 4;
            if (!moreFollows) {
              this._lastSequenceNumber = 0;
            }
            if (msg.sequencenumber % msg.proposedWindowNumber === 0 || !moreFollows) {
              this._segmentAckResponse(
                msg.header.address,
                false,
                server,
                msg.invokeId,
                msg.sequencenumber,
                msg.proposedWindowNumber
              );
            }
            this._performDefaultSegmentHandling(
              msg,
              first,
              moreFollows,
              buffer,
              offset,
              length
            );
          }
          /**
           *
           * @param serviceMap
           * @param content
           * @param buffer
           * @param offset
           * @param length
           * @returns {*}
           * @private
           */
          _processServiceRequest(serviceMap, content, buffer, offset, length) {
            let result;
            const sender = content.header.sender;
            if (sender.address === LOCALHOST_INTERFACES_IPV422) {
              debug322("Received and skipped localhost service request:", content.service);
              return;
            }
            const name = serviceMap[content.service];
            if (!name) {
              debug322("Received unsupported service request:", content.service);
              return;
            }
            const id = content.invokeId ? "@" + content.invokeId : "";
            trace222(`Received service request${id}:`, name);
            const serviceHandler = services_exports22[name];
            if (serviceHandler) {
              try {
                content.payload = serviceHandler.decode(buffer, offset, length);
                trace222(`Handled service request${id}:`, name, JSON.stringify(content));
              } catch (e) {
                debug322("Exception thrown when processing message:", e);
                debug322("Original message was", name + ":", content);
                return;
              }
              if (!content.payload) {
                return debug322("Received invalid", name, "message");
              }
            } else {
              debug322("No serviceHandler defined for:", name);
            }
            if (this.listenerCount(name)) {
              trace222("listener count by name emits " + name + " with content");
              this.emit(name, content);
            } else {
              if (this.listenerCount("unhandledEvent")) {
                trace222("unhandled event emiting with content");
                this.emit("unhandledEvent", content);
              } else {
                trace222(
                  "no unhandled event handler with header: " + JSON.stringify(content.header)
                );
                if (content.header.expectingReply) {
                  debug322("Replying with error for unhandled service:", name);
                  content.header.sender.forwardedFrom = null;
                  this.errorResponse(
                    content.header.sender,
                    content.service,
                    content.invokeId,
                    5,
                    67
                    /* REJECT_UNRECOGNIZED_SERVICE */
                  );
                }
              }
            }
          }
          /**
           *
           * @param buffer
           * @param offset
           * @param length
           * @param header
           * @private
           */
          _handlePdu(buffer, offset, length, header) {
            let msg;
            trace222("handlePdu Header: ", header);
            switch (header.apduType & PDU_TYPE_MASK22) {
              case 16:
                msg = decodeUnconfirmedServiceRequest22(buffer, offset);
                msg.header = header;
                msg.header.confirmedService = false;
                this._processServiceRequest(
                  unconfirmedServiceMap22,
                  msg,
                  buffer,
                  offset + msg.len,
                  length - msg.len
                );
                break;
              case 32:
                msg = decodeSimpleAck22(buffer, offset);
                offset += msg.len;
                length -= msg.len;
                this._invokeCallback(msg.invokeId, null, {
                  msg,
                  buffer,
                  offset: offset + msg.len,
                  length: length - msg.len
                });
                break;
              case 48:
                msg = decodeComplexAck22(buffer, offset);
                msg.header = header;
                if ((header.apduType & 8) === 0) {
                  this._invokeCallback(msg.invokeId, null, {
                    msg,
                    buffer,
                    offset: offset + msg.len,
                    length: length - msg.len
                  });
                } else {
                  this._processSegment(
                    msg,
                    true,
                    buffer,
                    offset + msg.len,
                    length - msg.len
                  );
                }
                break;
              case 64:
                msg = decodeSegmentAck22(buffer, offset);
                msg.header = header;
                this._processSegment(
                  msg,
                  true,
                  buffer,
                  offset + msg.len,
                  length - msg.len
                );
                break;
              case 80:
                msg = decodeError22(buffer, offset);
                this._processError(
                  msg.invokeId,
                  buffer,
                  offset + msg.len,
                  length - msg.len
                );
                break;
              case 96:
              case 112:
                msg = decodeAbort22(buffer, offset);
                this._processAbort(msg.invokeId, msg.reason);
                break;
              case 0:
                msg = decodeConfirmedServiceRequest22(buffer, offset);
                msg.header = header;
                msg.header.confirmedService = true;
                if ((header.apduType & 8) === 0) {
                  this._processServiceRequest(
                    confirmedServiceMap22,
                    msg,
                    buffer,
                    offset + msg.len,
                    length - msg.len
                  );
                } else {
                  this._processSegment(
                    msg,
                    true,
                    buffer,
                    offset + msg.len,
                    length - msg.len
                  );
                }
                break;
              default:
                debug322(`Received unknown PDU type ${header.apduType} -> Drop packet`);
                break;
            }
          }
          /**
           *
           * @param buffer
           * @param offset
           * @param msgLength
           * @param header
           * @returns {*}
           * @private
           */
          _handleNpdu(buffer, offset, msgLength, header) {
            if (msgLength <= 0) {
              return trace222("No NPDU data -> Drop package");
            }
            const result = decode3122(buffer, offset);
            if (!result) {
              return trace222("Received invalid NPDU header -> Drop package");
            }
            if (result.funct & 128) {
              return trace222("Received network layer message -> Drop package");
            }
            offset += result.len;
            msgLength -= result.len;
            if (msgLength <= 0) {
              return trace222("No APDU data -> Drop package");
            }
            header.apduType = getDecodedType22(buffer, offset);
            header.expectingReply = !!(result.funct & 4);
            this._handlePdu(buffer, offset, msgLength, header);
          }
          /**
           *
           * @param buffer
           * @param remoteAddress
           * @returns {*}
           * @private
           */
          _receiveData(buffer, remoteAddress) {
            if (buffer.length < BVLC_HEADER_LENGTH32) {
              return trace222("Received invalid data -> Drop package");
            }
            const result = decode3222(buffer, 0);
            if (!result) {
              return trace222("Received invalid BVLC header -> Drop package");
            }
            let header = {
              // Which function the packet came in on, so later code can distinguish
              // between ORIGINAL_BROADCAST_NPDU and DISTRIBUTE_BROADCAST_TO_NETWORK.
              func: result.func,
              sender: {
                // Address of the host we are directly connected to. String, IP:port.
                address: remoteAddress,
                // If the host is a BBMD passing messages along to another node, this
                // is the address of the distant BACnet node.  String, IP:port.
                // Typically we won't have network connectivity to this address, but
                // we have to include it in replies so the host we are connect to knows
                // where to forward the messages.
                forwardedFrom: null
              }
            };
            switch (result.func) {
              case 10:
              case 11:
                this._handleNpdu(
                  buffer,
                  result.len,
                  buffer.length - result.len,
                  header
                );
                break;
              case 4:
                header.sender.forwardedFrom = result.originatingIP;
                this._handleNpdu(
                  buffer,
                  result.len,
                  buffer.length - result.len,
                  header
                );
                break;
              case 5:
                let decodeResult = register_foreign_device_exports22.decode(
                  buffer,
                  result.len,
                  buffer.length - result.len
                );
                if (!decodeResult) {
                  return trace222("Received invalid registerForeignDevice message");
                }
                this.emit("registerForeignDevice", {
                  header,
                  payload: decodeResult
                });
                break;
              case 9:
                this._handleNpdu(
                  buffer,
                  result.len,
                  buffer.length - result.len,
                  header
                );
                break;
              default:
                debug322(
                  "Received unknown BVLC function " + result.func + " -> Drop package"
                );
                break;
            }
          }
          /**
           * @event bacnet.error
           * @param {error} err - The error object thrown by the underlying transport layer.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.on('error', (err) => {
           *   console.log('Error occurred: ', err);
           *   client.close();
           * });
           */
          _receiveError(err) {
            this.emit("error", err);
          }
          /**
           * The whoIs command discovers all BACNET devices in a network.
           * @function bacnet.whoIs
           * @param {string} receiver - IP address of the target device.
           * @param {object=} options
           * @param {number=} options.lowLimit - Minimal device instance number to search for.
           * @param {number=} options.highLimit - Maximal device instance number to search for.
           * @fires bacnet.iAm
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.whoIs();
           */
          whoIs(receiver, options) {
            if (!options) {
              if (receiver && typeof receiver === "object" && receiver.address === void 0 && receiver.forwardedFrom === void 0 && (receiver.lowLimit !== void 0 || receiver.highLimit !== void 0)) {
                options = receiver;
                receiver = void 0;
              }
            }
            options = options || {};
            const settings = {
              lowLimit: options.lowLimit,
              highLimit: options.highLimit
            };
            const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
            encode3122(
              buffer,
              0,
              //@ts-ignore
              receiver,
              null,
              DEFAULT_HOP_COUNT222,
              0,
              0
            );
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              8
              /* WHO_IS */
            );
            who_is_exports22.encode(buffer, settings.lowLimit, settings.highLimit);
            this.sendBvlc(receiver, buffer);
          }
          /**
           * The timeSync command sets the time of a target device.
           * @function bacnet.timeSync
           * @param {string} receiver - IP address of the target device.
           * @param {date} dateTime - The date and time to set on the target device.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.timeSync('192.168.1.43', new Date());
           */
          timeSync(receiver, dateTime) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              6
              /* TIME_SYNCHRONIZATION */
            );
            time_sync_exports22.encode(buffer, dateTime);
            this.sendBvlc(receiver, buffer);
          }
          /**
           * The timeSyncUTC command sets the UTC time of a target device.
           * @function bacnet.timeSyncUTC
           * @param {string} receiver - IP address of the target device.
           * @param {date} dateTime - The date and time to set on the target device.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.timeSyncUTC('192.168.1.43', new Date());
           */
          timeSyncUTC(receiver, dateTime) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              9
              /* UTC_TIME_SYNCHRONIZATION */
            );
            time_sync_exports22.encode(buffer, dateTime);
            this.sendBvlc(receiver, buffer);
          }
          /**
           * The readProperty command reads a single property of an object from a device.
           * @function bacnet.readProperty
           * @param {string} receiver - IP address of the target device.
           * @param {object} objectId - The BACNET object ID to read.
           * @param {number} objectId.type - The BACNET object type to read.
           * @param {number} objectId.instance - The BACNET object instance to read.
           * @param {number} propertyId - The BACNET property id in the specified object to read.
           * @param {object=} options
           * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
           * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
           * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
           * @param {number=} options.arrayIndex - The array index of the property to be read.
           * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.readProperty('192.168.1.43', {type: 8, instance: 44301}, 28, (err, value) => {
           *   console.log('value: ', value);
           * });
           */
          readProperty(receiver, objectId, propertyId, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId(),
              arrayIndex: options.arrayIndex || options.arrayIndex === 0 ? options.arrayIndex : ASN1_ARRAY_ALL22
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              //@ts-ignore
              receiver,
              null,
              DEFAULT_HOP_COUNT222,
              0,
              0
            );
            const type = 0 | //@ts-ignore
            (settings.maxSegments !== 0 ? 2 : 0);
            encodeConfirmedServiceRequest22(
              buffer,
              type,
              12,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            read_property_exports22.encode(
              buffer,
              objectId.type,
              objectId.instance,
              propertyId,
              settings.arrayIndex
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              const result = read_property_exports22.decodeAcknowledge(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return void next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           * The writeProperty command writes a single property of an object to a device.
           * @function bacnet.writeProperty
           * @param {string} receiver - IP address of the target device.
           * @param {object} objectId - The BACNET object ID to write.
           * @param {number} objectId.type - The BACNET object type to write.
           * @param {number} objectId.instance - The BACNET object instance to write.
           * @param {number} propertyId - The BACNET property id in the specified object to write.
           * @param {object[]} values - A list of values to be written to the specified property.
           * @param {ApplicationTag} values.type - The data-type of the value to be written.
           * @param {number} values.value - The actual value to be written.
           * @param {object=} options
           * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
           * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
           * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
           * @param {number=} options.arrayIndex - The array index of the property to be read.
           * @param {number=} options.priority - The priority of the value to be written.
           * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.writeProperty('192.168.1.43', {type: 8, instance: 44301}, 28, [
           *   {type: bacnet.enum.ApplicationTag.REAL, value: 100}
           * ], (err, value) => {
           *   console.log('value: ', value);
           * });
           */
          writeProperty(receiver, objectId, propertyId, values, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId(),
              arrayIndex: options.arrayIndex || ASN1_ARRAY_ALL22,
              priority: options.priority || ASN1_NO_PRIORITY22
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              //@ts-ignore Todo somehow types do not match at all
              receiver,
              null,
              DEFAULT_HOP_COUNT222,
              0,
              0
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              15,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            write_property_exports22.encode(
              buffer,
              objectId.type,
              objectId.instance,
              propertyId,
              settings.arrayIndex,
              settings.priority,
              values
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              next(err);
            });
          }
          /**
           * The readPropertyMultiple command reads multiple properties in multiple objects from a device.
           * @function bacnet.readPropertyMultiple
           * @param {string} receiver - IP address of the target device.
           * @param {object[]} propertiesArray - List of object and property specifications to be read.
           * @param {object} propertiesArray.objectId - Specifies which object to read.
           * @param {number} propertiesArray.objectId.type - The BACNET object type to read.
           * @param {number} propertiesArray.objectId.instance - The BACNET object instance to read.
           * @param {object[]} propertiesArray.properties - List of properties to be read.
           * @param {number} propertiesArray.properties.id - The BACNET property id in the specified object to read. Also supports 8 for all properties.
           * @param {object=} options
           * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
           * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
           * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
           * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * const requestArray = [
           *   {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]}
           * ];
           * client.readPropertyMultiple('192.168.1.43', requestArray, (err, value) => {
           *   console.log('value: ', value);
           * });
           */
          readPropertyMultiple(receiver, propertiesArray, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const isForwarded = typeof receiver !== "string" && receiver.forwardedFrom;
            const buffer = this._getBuffer(!!isForwarded);
            encode3122(
              buffer,
              0 | 4,
              //@ts-ignore Todo somehow types do not match at all
              receiver,
              null,
              DEFAULT_HOP_COUNT222,
              0,
              0
            );
            const type = 0 | //@ts-ignore
            (settings.maxSegments !== 0 ? 2 : 0);
            encodeConfirmedServiceRequest22(
              buffer,
              type,
              14,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            read_property_multiple_exports22.encode(buffer, propertiesArray);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return next(err);
              }
              const result = read_property_multiple_exports22.decodeAcknowledge(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           * The writePropertyMultiple command writes multiple properties in multiple objects to a device.
           * @function bacnet.writePropertyMultiple
           * @param {string} receiver - IP address of the target device.
           * @param {object[]} values - List of object and property specifications to be written.
           * @param {object} values.objectId - Specifies which object to read.
           * @param {number} values.objectId.type - The BACNET object type to read.
           * @param {number} values.objectId.instance - The BACNET object instance to read.
           * @param {object[]} values.values - List of properties to be written.
           * @param {object} values.values.property - Property specifications to be written.
           * @param {number} values.values.property.id - The BACNET property id in the specified object to write.
           * @param {number} values.values.property.index - The array index of the property to be written.
           * @param {object[]} values.values.value - A list of values to be written to the specified property.
           * @param {ApplicationTag} values.values.value.type - The data-type of the value to be written.
           * @param {object} values.values.value.value - The actual value to be written.
           * @param {number} values.values.priority - The priority to be used for writing to the property.
           * @param {object=} options
           * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
           * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
           * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
           * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * const values = [
           *   {objectId: {type: 8, instance: 44301}, values: [
           *     {property: {id: 28, index: 12}, value: [{type: bacnet.enum.ApplicationTag.BOOLEAN, value: true}], priority: 8}
           *   ]}
           * ];
           * client.writePropertyMultiple('192.168.1.43', values, (err, value) => {
           *   console.log('value: ', value);
           * });
           */
          writePropertyMultiple(receiver, values, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              //@ts-ignore
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              16,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId
            );
            write_property_multiple_exports22.encodeObject(buffer, values);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              next(err);
            });
          }
          /**
           * The confirmedCOVNotification command is used to push notifications to other
           * systems that have registered with us via a subscribeCOV message.
           * @function bacnet.confirmedCOVNotification
           * @param {string} receiver - IP address of the target device.
           * @param {object} monitoredObject - The object being monitored, from subscribeCOV.
           * @param {number} monitoredObject.type - Object type.
           * @param {number} monitoredObject.instance - Object instance.
           * @param {number} subscribeId - Subscriber ID from subscribeCOV,
           * @param {number} initiatingDeviceId - Our BACnet device ID.
           * @param {number} lifetime - Number of seconds left until the subscription expires.
           * @param {array} values - values for the monitored object.  See example.
           * @param {object=} options
           * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
           * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
           * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
           * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * const settings = {deviceId: 123}; // our BACnet device
           *
           * // Items saved from subscribeCOV message
           * const monitoredObject = {type: 1, instance: 1};
           * const subscriberProcessId = 123;
           *
           * client.confirmedCOVNotification(
           *   '192.168.1.43',
           *   monitoredObject,
           *   subscriberProcessId,
           *   settings.deviceId,
           *   30, // should be lifetime of subscription really
           *   [
           *     {
           *       property: { id: bacnet.enum.PropertyIdentifier.PRESENT_VALUE },
           *       value: [
           *         {value: 123, type: bacnet.enum.ApplicationTag.REAL},
           *       ],
           *     },
           *   ],
           *   (err) => {
           *     console.log('error: ', err);
           *   }
           * );
           */
          confirmedCOVNotification(receiver, monitoredObject, subscribeId, initiatingDeviceId, lifetime, values, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer();
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              1,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            cov_notify_exports22.encode(
              buffer,
              subscribeId,
              initiatingDeviceId,
              monitoredObject,
              lifetime,
              values
            );
            encode3222(
              buffer.buffer,
              10,
              buffer.offset
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           * The deviceCommunicationControl command enables or disables network communication of the target device.
           * @function bacnet.deviceCommunicationControl
           * @param {string} receiver - IP address of the target device.
           * @param {number} timeDuration - The time to hold the network communication state in seconds. 0 for infinite.
           * @param {EnableDisable} enableDisable - The network communication state to set.
           * @param {object=} options
           * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
           * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
           * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
           * @param {string=} options.password - The optional password used to set the network communication state.
           * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.deviceCommunicationControl('192.168.1.43', 0, bacnet.enum.EnableDisable.DISABLE, (err) => {
           *   console.log('error: ', err);
           * });
           */
          deviceCommunicationControl(receiver, timeDuration, enableDisable, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId(),
              password: options.password
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              17,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            device_communication_control_exports22.encode(
              buffer,
              timeDuration,
              enableDisable,
              settings.password
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              next(err);
            });
          }
          /**
           * The reinitializeDevice command initiates a restart of the target device.
           * @function bacnet.reinitializeDevice
           * @param {string} receiver - IP address of the target device.
           * @param {ReinitializedState} state - The type of restart to be initiated.
           * @param {object=} options
           * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
           * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
           * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
           * @param {string=} options.password - The optional password used to restart the device.
           * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.reinitializeDevice('192.168.1.43', bacnet.enum.ReinitializedState.COLDSTART, (err, value) => {
           *   console.log('value: ', value);
           * });
           */
          reinitializeDevice(receiver, state, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId(),
              password: options.password
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              20,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            reinitialize_device_exports22.encode(buffer, state, settings.password);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              next(err);
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param position
           * @param fileBuffer
           * @param options
           * @param next
           */
          writeFile(receiver, objectId, position, fileBuffer, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              7,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            atomic_write_file_exports22.encode(
              buffer,
              false,
              objectId,
              position,
              fileBuffer
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              const result = atomic_write_file_exports22.decodeAcknowledge(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return void next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param position
           * @param count
           * @param options
           * @param next
           */
          readFile(receiver, objectId, position, count, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              6,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            atomic_read_file_exports22.encode(buffer, true, objectId, position, count);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              const result = atomic_read_file_exports22.decodeAcknowledge(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return void next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param idxBegin
           * @param quantity
           * @param options
           * @param next
           */
          readRange(receiver, objectId, idxBegin, quantity, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              26,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            read_range_exports22.encode(
              buffer,
              objectId,
              131,
              ASN1_ARRAY_ALL22,
              0,
              idxBegin,
              /* @__PURE__ */ new Date(),
              quantity
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              const result = read_range_exports22.decodeAcknowledge(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return void next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param subscribeId
           * @param cancel
           * @param issueConfirmedNotifications
           * @param lifetime
           * @param options
           * @param next
           */
          subscribeCov(receiver, objectId, subscribeId, cancel, issueConfirmedNotifications, lifetime, options, nextFunc) {
            const next = nextFunc || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              // @ts-ignore TODO types not matching with documentation and code
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              5,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            subscribe_cov_exports22.encode(
              buffer,
              subscribeId,
              objectId,
              cancel,
              issueConfirmedNotifications,
              lifetime
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param monitoredProperty
           * @param subscribeId
           * @param cancel
           * @param issueConfirmedNotifications
           * @param options
           * @param next
           */
          subscribeProperty(receiver, objectId, monitoredProperty, subscribeId, cancel, issueConfirmedNotifications, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              28,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            subscribe_property_exports22.encode(
              buffer,
              subscribeId,
              objectId,
              cancel,
              issueConfirmedNotifications,
              0,
              monitoredProperty,
              false,
              15
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           * The unconfirmedCOVNotification command sends an unconfirmed COV notification to a device
           * @function bacnet.unconfirmedCOVNotification
           * @param {string} receiver - IP address of the target device.
           * @param {number} subscriberProcessId - The process id which was used by a target device in the subscription.
           * @param {number} initiatingDeviceId - The id of this device.
           * @param {object} monitoredObjectId - Specifies about which object the notification is.
           * @param {number} monitoredObjectId.type - The BACNET object type of the notification.
           * @param {number} monitoredObjectId.instance - The BACNET object instance of the notification.
           * @param {number} timeRemaining - How long the subscription is still active in seconds.
           * @param {object[]} values - List of properties with updated values.
           * @param {object} values.property - Property specifications.
           * @param {number} values.property.id - The updated BACNET property id.
           * @param {number} values.property.index - The array index of the updated property.
           * @param {object[]} values.value - A list of updated values.
           * @param {ApplicationTag} values.value.type - The data-type of the updated value.
           * @param {object} values.value.value - The actual updated value.
           * @param {number} values.priority - The priority of the updated property.
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.unconfirmedCOVNotification(
           *            '127.0.0.1',
           *            3,
           *            433,
           *            {type: 2, instance: 122},
           *            120,
           *            [
           *              {
           *                property: {id: 85},
           *                value: [{type: baEnum.ApplicationTag.REAL, value: 12.3}]
           *              },
           *              {
           *                property: {id: 111},
           *                value: [{type: baEnum.ApplicationTag.BIT_STRING, value: 0xFFFF}]
           *              }
           *            ]);
           */
          unconfirmedCOVNotification(receiver, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) {
            const buffer = this._getBuffer();
            encode3122(buffer, 0, receiver);
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              2
              /* UNCONFIRMED_COV_NOTIFICATION */
            );
            cov_notify_exports22.encode(
              buffer,
              subscriberProcessId,
              initiatingDeviceId,
              monitoredObjectId,
              timeRemaining,
              values
            );
            encode3222(
              buffer.buffer,
              10,
              buffer.offset
            );
            this._transport.send(buffer.buffer, buffer.offset, receiver);
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param values
           * @param options
           * @param next
           */
          createObject(receiver, objectId, values, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              10,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            create_object_exports22.encode(buffer, objectId, values);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param options
           * @param next
           */
          deleteObject(receiver, objectId, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              11,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            delete_object_exports22.encode(buffer, objectId);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param reference
           * @param values
           * @param options
           * @param next
           */
          removeListElement(receiver, objectId, reference, values, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              9,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            add_list_element_exports22.encode(
              buffer,
              objectId,
              reference.id,
              reference.index,
              values
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param reference
           * @param values
           * @param options
           * @param next
           */
          addListElement(receiver, objectId, reference, values, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              8,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            add_list_element_exports22.encode(
              buffer,
              objectId,
              reference.id,
              reference.index,
              values
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           *
           * @param receiver
           * @param options
           * @param next
           */
          getAlarmSummary(receiver, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              3,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              const result = alarm_summary_exports22.decode(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return void next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param options
           * @param next
           */
          getEventInformation(receiver, objectId, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              29,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            encodeContextObjectId22(buffer, 0, objectId.type, objectId.instance);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              const result = event_information_exports22.decode(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return void next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           *
           * @param receiver
           * @param objectId
           * @param eventState
           * @param ackText
           * @param evTimeStamp
           * @param ackTimeStamp
           * @param options
           * @param next
           */
          acknowledgeAlarm(receiver, objectId, eventState, ackText, evTimeStamp, ackTimeStamp, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              0,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            alarm_acknowledge_exports22.encode(
              buffer,
              57,
              objectId,
              eventState,
              ackText,
              evTimeStamp,
              ackTimeStamp
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           *
           * @param receiver
           * @param vendorId
           * @param serviceNumber
           * @param data
           * @param options
           * @param next
           */
          confirmedPrivateTransfer(receiver, vendorId, serviceNumber, data, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              18,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            private_transfer_exports22.encode(buffer, vendorId, serviceNumber, data);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data2) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           *
           * @param receiver
           * @param vendorId
           * @param serviceNumber
           * @param data
           */
          unconfirmedPrivateTransfer(receiver, vendorId, serviceNumber, data) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              4
              /* UNCONFIRMED_PRIVATE_TRANSFER */
            );
            private_transfer_exports22.encode(buffer, vendorId, serviceNumber, data);
            this.sendBvlc(receiver, buffer);
          }
          /**
           *
           * @param receiver
           * @param acknowledgmentFilter
           * @param options
           * @param next
           */
          getEnrollmentSummary(receiver, acknowledgmentFilter, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              4,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            get_enrollment_summary_exports22.encode(
              buffer,
              acknowledgmentFilter,
              options.enrollmentFilter,
              options.eventStateFilter,
              options.eventTypeFilter,
              options.priorityFilter,
              options.notificationClassFilter
            );
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              const result = get_enrollment_summary_exports22.decodeAcknowledge(
                data.buffer,
                data.offset,
                data.length
              );
              if (!result) {
                return void next(new Error("INVALID_DECODING"));
              }
              next(null, result);
            });
          }
          /**
           *
           * @param receiver
           * @param eventNotification
           */
          unconfirmedEventNotification(receiver, eventNotification) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              3
              /* UNCONFIRMED_EVENT_NOTIFICATION */
            );
            event_notify_data_exports22.encode(buffer, eventNotification);
            this.sendBvlc(receiver, buffer);
          }
          /**
           *
           * @param receiver
           * @param eventNotification
           * @param options
           * @param next
           */
          confirmedEventNotification(receiver, eventNotification, options, next) {
            next = next || options;
            const settings = {
              maxSegments: options.maxSegments || 112,
              maxApdu: options.maxApdu || 5,
              invokeId: options.invokeId || this._getInvokeId()
            };
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(
              buffer,
              0 | 4,
              receiver
            );
            encodeConfirmedServiceRequest22(
              buffer,
              0,
              2,
              settings.maxSegments,
              settings.maxApdu,
              settings.invokeId,
              0,
              0
            );
            event_notify_data_exports22.encode(buffer, eventNotification);
            this.sendBvlc(receiver, buffer);
            this._addCallback(settings.invokeId, (err, data) => {
              if (err) {
                return void next(err);
              }
              next();
            });
          }
          /**
           * The readPropertyResponse call sends a response with information about one of our properties.
           * @function bacnet.readPropertyResponse
           * @param {string} receiver - IP address of the target device.
           * @param {number} invokeId - ID of the original readProperty request.
           * @param {object} objectId - objectId from the original request,
           * @param {object} property - property being read, taken from the original request.
           * @param {object=} options varying behaviour for special circumstances
           * @param {string=} options.forwardedFrom - If functioning as a BBMD, the IP address this message originally came from.
           */
          readPropertyResponse(receiver, invokeId, objectId, property, value, options = {}) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeComplexAck22(
              buffer,
              48,
              12,
              invokeId
            );
            read_property_exports22.encodeAcknowledge(
              buffer,
              objectId,
              property.id,
              property.index,
              value
            );
            this.sendBvlc(receiver, buffer);
          }
          readPropertyMultipleResponse(receiver, invokeId, values) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeComplexAck22(
              buffer,
              48,
              14,
              invokeId
            );
            read_property_multiple_exports22.encodeAcknowledge(buffer, values);
            this.sendBvlc(receiver, buffer);
          }
          /**
           * The iAmResponse command is sent as a reply to a whoIs request.
           * @function bacnet.iAmResponse
           * @param {object} receiver - address to send packet to, null for local broadcast.
           * @param {number} deviceId - Our device ID.
           * @param {number} segmentation - an enum.Segmentation value.
           * @param {number} vendorId - The numeric ID assigned to the organisation providing this application.
           */
          iAmResponse(receiver, deviceId, segmentation, vendorId) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              0
              /* I_AM */
            );
            i_am_exports22.encode(
              buffer,
              deviceId,
              this._transport.getMaxPayload(),
              segmentation,
              vendorId
            );
            this.sendBvlc(receiver, buffer);
          }
          /**
           *
           * @param receiver
           * @param deviceId
           * @param objectId
           * @param objectName
           */
          iHaveResponse(receiver, deviceId, objectId, objectName) {
            const buffer = this._getBuffer(
              !!(typeof receiver !== "string" && receiver.forwardedFrom)
            );
            encode3122(buffer, 0, receiver);
            encodeUnconfirmedServiceRequest22(
              buffer,
              16,
              1
              /* I_HAVE */
            );
            i_have_exports22.encode(buffer, deviceId, objectId, objectName);
            this.sendBvlc(receiver, buffer);
          }
          /**
           *
           * @param receiver
           * @param service
           * @param invokeId
           */
          simpleAckResponse(receiver, service, invokeId) {
            if (typeof receiver === "string")
              return;
            const buffer = this._getBuffer(!!receiver.forwardedFrom);
            encode3122(buffer, 0, receiver);
            encodeSimpleAck22(
              buffer,
              32,
              service,
              invokeId
            );
            this.sendBvlc(receiver, buffer);
          }
          /**
           *
           * @param receiver
           * @param service
           * @param invokeId
           * @param errorClass
           * @param errorCode
           */
          errorResponse(receiver, service, invokeId, errorClass, errorCode) {
            trace222(
              `error response on ${JSON.stringify(receiver)} service: ${JSON.stringify(
                service
              )} invokeId: ${invokeId} errorClass: ${errorClass} errorCode: ${errorCode}`
            );
            trace222(
              `error message ${error_exports22.buildMessage({
                class: errorClass,
                code: errorCode
              })}`
            );
            const hasSource = !!(typeof receiver !== "string" && receiver.forwardedFrom);
            if (typeof receiver === "string")
              throw new Error("receiver must be object");
            const buffer = this._getBuffer(hasSource);
            encode3122(buffer, 0, receiver);
            encodeError22(buffer, 80, service, invokeId);
            error_exports22.encode(buffer, errorClass, errorCode);
            this.sendBvlc(receiver, buffer);
          }
          /**
           *
           * @param receiver
           * @param buffer
           */
          sendBvlc(receiver, buffer) {
            if (typeof receiver === "string") {
              receiver = {
                address: receiver
              };
            }
            if (receiver && receiver.forwardedFrom) {
              encode3222(
                buffer.buffer,
                4,
                buffer.offset,
                receiver.forwardedFrom
              );
            } else if (receiver && receiver.address) {
              encode3222(
                buffer.buffer,
                10,
                buffer.offset
              );
            } else {
              encode3222(
                buffer.buffer,
                11,
                buffer.offset
              );
            }
            this._transport.send(
              buffer.buffer,
              buffer.offset,
              receiver && receiver.address || null
            );
          }
          /**
           * The resultResponse is a BVLC-Result message used to respond to certain events, such as BBMD registration.
           * This message cannot be wrapped for passing through a BBMD, as it is used as a BBMD control message.
           * @function bacnet.resultResponse
           * @param {string} receiver - IP address of the target device.
           * @param {number} resultCode - Single value from BvlcResultFormat enum.
           */
          resultResponse(receiver, resultCode) {
            const buffer = this._getBuffer();
            encodeResult22(buffer, resultCode);
            encode3222(
              buffer.buffer,
              0,
              buffer.offset
            );
            this._transport.send(buffer.buffer, buffer.offset, receiver.address);
          }
          /**
           * Unloads the current bacnet instance and closes the underlying UDP socket.
           * @function bacnet.close
           * @example
           * const bacnet = require('node-bacnet');
           * const client = new bacnet();
           *
           * client.close();
           */
          close() {
            this._transport.close();
          }
          /**
           * Helper function to take an array of enums and produce a bitstring suitable
           * for inclusion as a property.
           *
           * @example
           * [bacnet.enum.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED]: [
           *   {value: bacnet.createBitstring([
           *     bacnet.enum.ObjectTypesSupported.ANALOG_INPUT,
           *     bacnet.enum.ObjectTypesSupported.ANALOG_OUTPUT,
           *   ]),
           *   type: bacnet.enum.ApplicationTag.BIT_STRING},
           * ],
           */
          static createBitstring(items) {
            let offset = 0;
            let bytes = [];
            let bitsUsed = 0;
            while (items.length) {
              let value = 0;
              items = items.filter((i) => {
                if (i >= offset + 8) {
                  return true;
                }
                value |= 1 << i - offset;
                bitsUsed = Math.max(bitsUsed, i);
                return false;
              });
              bytes.push(value);
              offset += 8;
            }
            bitsUsed++;
            return {
              value: bytes,
              bitsUsed
            };
          }
        };
        var import_underscore22 = __toESM22(require("underscore"));
        var import_process22 = __toESM22(require("process"));
        var import__22 = __toESM22(require_dist22());
        var PropertyIdentifierToEnumMap22 = {};
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.OBJECT_TYPE] = import__22.enums.ObjectType;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.SEGMENTATION_SUPPORTED] = import__22.enums.Segmentation;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.EVENT_STATE] = import__22.enums.EventState;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.UNITS] = import__22.enums.EngineeringUnits;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.RELIABILITY] = import__22.enums.Reliability;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.NOTIFY_TYPE] = import__22.enums.NotifyType;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.POLARITY] = import__22.enums.Polarity;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED] = import__22.enums.ServicesSupported;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED] = import__22.enums.ObjectTypesSupported;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.STATUS_FLAGS] = import__22.enums.StatusFlags;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.LIMIT_ENABLE] = import__22.enums.LimitEnable;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.EVENT_ENABLE] = import__22.enums.EventTransitionBits;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.ACKED_TRANSITIONS] = import__22.enums.EventTransitionBits;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.SYSTEM_STATUS] = import__22.enums.DeviceStatus;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.SYSTEM_STATUS] = import__22.enums.DeviceStatus;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.ACK_REQUIRED] = import__22.enums.EventTransitionBits;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.LOGGING_TYPE] = import__22.enums.LoggingType;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.FILE_ACCESS_METHOD] = import__22.enums.FileAccessMethod;
        PropertyIdentifierToEnumMap22[import__22.enums.PropertyIdentifier.NODE_TYPE] = import__22.enums.NodeType;
        var ObjectTypeSpecificPropertyIdentifierToEnumMap22 = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_INPUT] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_INPUT][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_INPUT][import__22.enums.PropertyIdentifier.MODE] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.ANALOG_INPUT] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.ANALOG_INPUT][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.ANALOG_OUTPUT] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.ANALOG_OUTPUT][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_OUTPUT] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_OUTPUT][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_OUTPUT][import__22.enums.PropertyIdentifier.RELINQUISH_DEFAULT] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_VALUE] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_VALUE][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_VALUE][import__22.enums.PropertyIdentifier.RELINQUISH_DEFAULT] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_LIGHTING_OUTPUT] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_LIGHTING_OUTPUT][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.BinaryLightingPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BITSTRING_VALUE] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.BINARY_VALUE][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.BinaryPV;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_POINT] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_POINT][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.LifeSafetyState;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_POINT][import__22.enums.PropertyIdentifier.TRACKING_VALUE] = import__22.enums.LifeSafetyState;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_POINT][import__22.enums.PropertyIdentifier.MODE] = import__22.enums.LifeSafetyMode;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_POINT][import__22.enums.PropertyIdentifier.ACCEPTED_MODES] = import__22.enums.LifeSafetyMode;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_POINT][import__22.enums.PropertyIdentifier.SILENCED] = import__22.enums.LifeSafetyState;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_POINT][import__22.enums.PropertyIdentifier.OPERATION_EXPECTED] = import__22.enums.LifeSafetyOperation;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_ZONE] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_ZONE][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.LifeSafetyState;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LIFE_SAFETY_ZONE][import__22.enums.PropertyIdentifier.MODE] = import__22.enums.LifeSafetyMode;
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LOAD_CONTROL] = {};
        ObjectTypeSpecificPropertyIdentifierToEnumMap22[import__22.enums.ObjectType.LOAD_CONTROL][import__22.enums.PropertyIdentifier.PRESENT_VALUE] = import__22.enums.ShedState;
        var propSubSet22 = import_process22.default.argv.includes("--all") ? Object.values(import__22.enums.PropertyIdentifier) : [
          /* normally supported from all devices */
          import__22.enums.PropertyIdentifier.OBJECT_IDENTIFIER,
          import__22.enums.PropertyIdentifier.OBJECT_NAME,
          import__22.enums.PropertyIdentifier.OBJECT_TYPE,
          import__22.enums.PropertyIdentifier.PRESENT_VALUE,
          import__22.enums.PropertyIdentifier.STATUS_FLAGS,
          import__22.enums.PropertyIdentifier.EVENT_STATE,
          import__22.enums.PropertyIdentifier.RELIABILITY,
          import__22.enums.PropertyIdentifier.OUT_OF_SERVICE,
          import__22.enums.PropertyIdentifier.UNITS,
          /* other properties */
          import__22.enums.PropertyIdentifier.DESCRIPTION,
          import__22.enums.PropertyIdentifier.SYSTEM_STATUS,
          import__22.enums.PropertyIdentifier.VENDOR_NAME,
          import__22.enums.PropertyIdentifier.VENDOR_IDENTIFIER,
          import__22.enums.PropertyIdentifier.MODEL_NAME,
          import__22.enums.PropertyIdentifier.FIRMWARE_REVISION,
          import__22.enums.PropertyIdentifier.APPLICATION_SOFTWARE_VERSION,
          import__22.enums.PropertyIdentifier.LOCATION,
          import__22.enums.PropertyIdentifier.LOCAL_DATE,
          import__22.enums.PropertyIdentifier.LOCAL_TIME,
          import__22.enums.PropertyIdentifier.UTC_OFFSET,
          import__22.enums.PropertyIdentifier.DAYLIGHT_SAVINGS_STATUS,
          import__22.enums.PropertyIdentifier.PROTOCOL_VERSION,
          import__22.enums.PropertyIdentifier.PROTOCOL_REVISION,
          import__22.enums.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED,
          import__22.enums.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED,
          import__22.enums.PropertyIdentifier.OBJECT_LIST,
          import__22.enums.PropertyIdentifier.MAX_APDU_LENGTH_ACCEPTED,
          import__22.enums.PropertyIdentifier.SEGMENTATION_SUPPORTED,
          import__22.enums.PropertyIdentifier.APDU_TIMEOUT,
          import__22.enums.PropertyIdentifier.NUMBER_OF_APDU_RETRIES,
          import__22.enums.PropertyIdentifier.DEVICE_ADDRESS_BINDING,
          import__22.enums.PropertyIdentifier.DATABASE_REVISION,
          import__22.enums.PropertyIdentifier.MAX_INFO_FRAMES,
          import__22.enums.PropertyIdentifier.MAX_MASTER,
          import__22.enums.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS,
          import__22.enums.PropertyIdentifier.ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS
        ];
        var debug422 = import_process22.default.argv.includes("--debug");
        function getAllPropertiesManually22(address, objectId, callback, propList, result) {
          if (!propList) {
            propList = propSubSet22.map((x) => x);
          }
          if (!result) {
            result = [];
          }
          if (!propList.length) {
            return callback({
              values: [
                {
                  objectId,
                  values: result
                }
              ]
            });
          }
          const prop = propList.shift();
          bacnetClient.readProperty(address, objectId, prop, {}, (err, value) => {
            if (!err) {
              if (debug422) {
                console.log("Handle value " + prop + ": ", JSON.stringify(value));
              }
              const objRes = value.property;
              objRes.value = value.values;
              result.push(objRes);
            } else {
            }
            getAllPropertiesManually22(address, objectId, callback, propList, result);
          });
        }
        function readBit22(buffer, i, bit) {
          return (buffer[i] >> bit) % 2;
        }
        function handleBitString22(buffer, bitsUsed, usedEnum) {
          const res = [];
          for (let i = 0; i < bitsUsed; i++) {
            const bufferIndex = Math.floor(i / 8);
            if (readBit22(buffer, bufferIndex, i % 8)) {
              res.push(import__22.enums.getEnumName(usedEnum, i));
            }
          }
          return res;
        }
        function parseValue22(address, objId, parentType, value, supportsMultiple, callback) {
          let resValue = null;
          if (value && value.type && value.value !== null && value.value !== void 0) {
            switch (value.type) {
              case import__22.enums.ApplicationTag.NULL:
                resValue = null;
                break;
              case import__22.enums.ApplicationTag.BOOLEAN:
                resValue = !!value.value;
                break;
              case import__22.enums.ApplicationTag.UNSIGNED_INTEGER:
              case import__22.enums.ApplicationTag.SIGNED_INTEGER:
              case import__22.enums.ApplicationTag.REAL:
              case import__22.enums.ApplicationTag.DOUBLE:
              case import__22.enums.ApplicationTag.CHARACTER_STRING:
                resValue = value.value;
                break;
              case import__22.enums.ApplicationTag.DATE:
              case import__22.enums.ApplicationTag.TIME:
              case import__22.enums.ApplicationTag.TIMESTAMP:
                resValue = value.value;
                break;
              case import__22.enums.ApplicationTag.BIT_STRING:
                if (ObjectTypeSpecificPropertyIdentifierToEnumMap22[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap22[parentType][objId]) {
                  resValue = handleBitString22(
                    value.value.value,
                    value.value.bitsUsed,
                    ObjectTypeSpecificPropertyIdentifierToEnumMap22[parentType][objId]
                  );
                } else if (PropertyIdentifierToEnumMap22[objId]) {
                  resValue = handleBitString22(
                    value.value.value,
                    value.value.bitsUsed,
                    PropertyIdentifierToEnumMap22[objId]
                  );
                } else {
                  if (parentType !== import__22.enums.ObjectType.BITSTRING_VALUE) {
                    console.log(
                      "Unknown value for BIT_STRING type for objId " + import__22.enums.getEnumName(import__22.enums.PropertyIdentifier, objId) + " and parent type " + import__22.enums.getEnumName(import__22.enums.ObjectType, parentType)
                    );
                  }
                  resValue = value.value;
                }
                break;
              case import__22.enums.ApplicationTag.ENUMERATED:
                if (ObjectTypeSpecificPropertyIdentifierToEnumMap22[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap22[parentType][objId]) {
                  resValue = import__22.enums.getEnumName(
                    ObjectTypeSpecificPropertyIdentifierToEnumMap22[parentType][objId],
                    value.value
                  );
                } else if (PropertyIdentifierToEnumMap22[objId]) {
                  resValue = import__22.enums.getEnumName(
                    PropertyIdentifierToEnumMap22[objId],
                    value.value
                  );
                } else {
                  console.log(
                    "Unknown value for ENUMERATED type for objId " + import__22.enums.getEnumName(import__22.enums.PropertyIdentifier, objId) + " and parent type " + import__22.enums.getEnumName(import__22.enums.ObjectType, parentType)
                  );
                  resValue = value.value;
                }
                break;
              case import__22.enums.ApplicationTag.OBJECTIDENTIFIER:
                if (objId === import__22.enums.PropertyIdentifier.OBJECT_IDENTIFIER || objId === import__22.enums.PropertyIdentifier.STRUCTURED_OBJECT_LIST || objId === import__22.enums.PropertyIdentifier.SUBORDINATE_LIST) {
                  resValue = value.value;
                } else if (supportsMultiple) {
                  const requestArray = [
                    {
                      objectId: value.value,
                      properties: [{ id: 8 }]
                    }
                  ];
                  bacnetClient.readPropertyMultiple(
                    address,
                    requestArray,
                    (err, resValue2) => {
                      parseDeviceObject22(address, resValue2, value.value, true, callback);
                    }
                  );
                  return;
                } else {
                  getAllPropertiesManually22(address, value.value, (result) => {
                    parseDeviceObject22(address, result, value.value, false, callback);
                  });
                  return;
                }
                break;
              case import__22.enums.ApplicationTag.OCTET_STRING:
                resValue = value.value;
                break;
              case import__22.enums.ApplicationTag.ERROR:
                resValue = {
                  errorClass: import__22.enums.getEnumName(
                    import__22.enums.ErrorClass,
                    value.value.errorClass
                  ),
                  errorCode: import__22.enums.getEnumName(import__22.enums.ErrorCode, value.value.errorCode)
                };
                break;
              case import__22.enums.ApplicationTag.OBJECT_PROPERTY_REFERENCE:
              case import__22.enums.ApplicationTag.DEVICE_OBJECT_PROPERTY_REFERENCE:
              case import__22.enums.ApplicationTag.DEVICE_OBJECT_REFERENCE:
              case import__22.enums.ApplicationTag.READ_ACCESS_SPECIFICATION:
                resValue = value.value;
                break;
              case import__22.enums.ApplicationTag.CONTEXT_SPECIFIC_DECODED:
                parseValue22(
                  address,
                  objId,
                  parentType,
                  value.value,
                  supportsMultiple,
                  callback
                );
                return;
              case import__22.enums.ApplicationTag.READ_ACCESS_RESULT:
                resValue = value.value;
                break;
              default:
                console.log(
                  "unknown type " + value.type + ": " + JSON.stringify(value)
                );
                resValue = value;
            }
          }
          setImmediate(() => callback(resValue));
        }
        function parseDeviceObject22(address, obj, parent, supportsMultiple, callback) {
          if (debug422) {
            console.log(
              "START parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(obj)
            );
          }
          if (!obj) {
            console.log("object not valid on parse device object");
            return;
          }
          if (!obj.values || !Array.isArray(obj.values)) {
            console.log("No device or invalid response");
            callback({ ERROR: "No device or invalid response" });
            return;
          }
          let cbCount = 0;
          let objDef = {};
          const finalize = () => {
            Object.keys(objDef).forEach((devId) => {
              Object.keys(objDef[devId]).forEach((objId) => {
                if (objDef[devId][objId].length === 1) {
                  objDef[devId][objId] = objDef[devId][objId][0];
                }
              });
            });
            if (obj.values.length === 1) {
              objDef = objDef[obj.values[0].objectId.instance];
            }
            if (debug422) {
              console.log(
                "END parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(objDef)
              );
            }
            callback(objDef);
          };
          obj.values.forEach((devBaseObj) => {
            if (!devBaseObj.objectId) {
              console.log("No device Id found in object data");
              return;
            }
            if (devBaseObj.objectId.type === void 0 || devBaseObj.objectId.instance === void 0) {
              console.log("No device type or instance found in object data");
              return;
            }
            if (!devBaseObj.values || !Array.isArray(devBaseObj.values)) {
              console.log("No device values response");
              return;
            }
            const deviceId = devBaseObj.objectId.instance;
            objDef[deviceId] = {};
            devBaseObj.values.forEach((devObj) => {
              let objId = import__22.enums.getEnumName(import__22.enums.PropertyIdentifier, devObj.id);
              if (devObj.index !== 4294967295) {
                objId += "-" + devObj.index;
              }
              if (debug422) {
                console.log("Handle Object property:", deviceId, objId, devObj.value);
              }
              devObj.value.forEach((val) => {
                if (JSON.stringify(val.value) === JSON.stringify(parent)) {
                  objDef[deviceId][objId] = objDef[deviceId][objId] || [];
                  objDef[deviceId][objId].push(val.value);
                  return;
                }
                cbCount++;
                parseValue22(
                  address,
                  devObj.id,
                  parent.type,
                  val,
                  supportsMultiple,
                  (parsedValue) => {
                    if (debug422) {
                      console.log(
                        "RETURN parsedValue",
                        deviceId,
                        objId,
                        devObj.value,
                        parsedValue
                      );
                    }
                    objDef[deviceId][objId] = objDef[deviceId][objId] || [];
                    objDef[deviceId][objId].push(parsedValue);
                    if (!--cbCount) {
                      finalize();
                    }
                  }
                );
              });
            });
          });
          if (cbCount === 0) {
            finalize();
          }
        }
        var limitToDevice22 = null;
        if (import_process22.default.argv.length === 3) {
          limitToDevice22 = parseInt(import_process22.default.argv[2]);
          if (isNaN(limitToDevice22)) {
            limitToDevice22 = null;
          }
        }
        var node_bacnet_default22 = Client22;
      }
    });
    var node_bacnet_exports2 = {};
    __export2(node_bacnet_exports2, {
      _: () => import_underscore2.default,
      bacnetErrorToString: () => bacnetErrorToString2,
      default: () => node_bacnet_default2,
      enums: () => enum_exports2,
      parseValue: () => parseValue2
    });
    module2.exports = __toCommonJS2(node_bacnet_exports2);
    var enum_exports2 = {};
    __export2(enum_exports2, {
      ASN1_ARRAY_ALL: () => ASN1_ARRAY_ALL2,
      ASN1_INSTANCE_BITS: () => ASN1_INSTANCE_BITS2,
      ASN1_MAX_APPLICATION_TAG: () => ASN1_MAX_APPLICATION_TAG2,
      ASN1_MAX_BITSTRING_BYTES: () => ASN1_MAX_BITSTRING_BYTES2,
      ASN1_MAX_INSTANCE: () => ASN1_MAX_INSTANCE2,
      ASN1_MAX_OBJECT: () => ASN1_MAX_OBJECT2,
      ASN1_MAX_OBJECT_TYPE: () => ASN1_MAX_OBJECT_TYPE2,
      ASN1_MAX_PRIORITY: () => ASN1_MAX_PRIORITY2,
      ASN1_MAX_PROPERTY_ID: () => ASN1_MAX_PROPERTY_ID2,
      ASN1_MIN_PRIORITY: () => ASN1_MIN_PRIORITY2,
      ASN1_NO_PRIORITY: () => ASN1_NO_PRIORITY2,
      AbortReason: () => AbortReason2,
      AccessAuthenticationFactorDisable: () => AccessAuthenticationFactorDisable2,
      AccessCredentialDisable: () => AccessCredentialDisable2,
      AccessCredentialDisableReason: () => AccessCredentialDisableReason2,
      AccessEvent: () => AccessEvent2,
      AccessPassbackMode: () => AccessPassbackMode2,
      AccessUserType: () => AccessUserType2,
      AccessZoneOccupancyState: () => AccessZoneOccupancyState2,
      Action: () => Action2,
      ApplicationTag: () => ApplicationTag2,
      ApplicationTagName: () => ApplicationTagName2,
      AuthenticationFactorType: () => AuthenticationFactorType2,
      AuthenticationStatus: () => AuthenticationStatus2,
      AuthorizationExemption: () => AuthorizationExemption2,
      AuthorizationMode: () => AuthorizationMode2,
      BVLC_HEADER_LENGTH: () => BVLC_HEADER_LENGTH3,
      BVLL_TYPE_BACNET_IP: () => BVLL_TYPE_BACNET_IP2,
      BackupState: () => BackupState2,
      BinaryLightingPV: () => BinaryLightingPV2,
      BinaryPV: () => BinaryPV2,
      BvlcResultFormat: () => BvlcResultFormat2,
      BvlcResultPurpose: () => BvlcResultPurpose2,
      CharacterStringEncoding: () => CharacterStringEncoding2,
      ConfirmedServiceChoice: () => ConfirmedServiceChoice2,
      CovType: () => CovType2,
      DaysOfWeek: () => DaysOfWeek2,
      DeviceStatus: () => DeviceStatus2,
      DoorAlarmState: () => DoorAlarmState2,
      DoorSecuredStatus: () => DoorSecuredStatus2,
      DoorStatus: () => DoorStatus2,
      DoorValue: () => DoorValue2,
      EnableDisable: () => EnableDisable2,
      EngineeringUnits: () => EngineeringUnits2,
      ErrorClass: () => ErrorClass2,
      ErrorClassName: () => ErrorClassName2,
      ErrorCode: () => ErrorCode2,
      ErrorCodeName: () => ErrorCodeName2,
      EscalatorFault: () => EscalatorFault2,
      EscalatorMode: () => EscalatorMode2,
      EscalatorOperationDirection: () => EscalatorOperationDirection2,
      EventState: () => EventState2,
      EventTransitionBits: () => EventTransitionBits2,
      EventType: () => EventType2,
      FaultType: () => FaultType2,
      FileAccessMethod: () => FileAccessMethod2,
      IPMode: () => IPMode2,
      LifeSafetyMode: () => LifeSafetyMode2,
      LifeSafetyOperation: () => LifeSafetyOperation2,
      LifeSafetyState: () => LifeSafetyState2,
      LiftCarDirection: () => LiftCarDirection2,
      LiftCarDoorCommand: () => LiftCarDoorCommand2,
      LiftCarDriveStatus: () => LiftCarDriveStatus2,
      LiftCarMode: () => LiftCarMode2,
      LiftFault: () => LiftFault2,
      LiftGroupMode: () => LiftGroupMode2,
      LightingInProgress: () => LightingInProgress2,
      LightingOperation: () => LightingOperation2,
      LightingTransition: () => LightingTransition2,
      LimitEnable: () => LimitEnable2,
      LockStatus: () => LockStatus2,
      LogStatus: () => LogStatus2,
      LoggingType: () => LoggingType2,
      Maintenance: () => Maintenance2,
      MaxApduLengthAccepted: () => MaxApduLengthAccepted2,
      MaxSegmentsAccepted: () => MaxSegmentsAccepted2,
      NetworkLayerMessageType: () => NetworkLayerMessageType2,
      NetworkNumberQuality: () => NetworkNumberQuality2,
      NetworkPortCommand: () => NetworkPortCommand2,
      NetworkType: () => NetworkType2,
      NodeType: () => NodeType2,
      NotifyType: () => NotifyType2,
      NpduControlBit: () => NpduControlBit2,
      NpduControlPriority: () => NpduControlPriority2,
      ObjectType: () => ObjectType2,
      ObjectTypesSupported: () => ObjectTypesSupported2,
      PDU_TYPE_MASK: () => PDU_TYPE_MASK2,
      PduConReqBit: () => PduConReqBit2,
      PduSegAckBit: () => PduSegAckBit2,
      PduType: () => PduType2,
      Polarity: () => Polarity2,
      ProgramError: () => ProgramError2,
      ProgramRequest: () => ProgramRequest2,
      ProgramState: () => ProgramState2,
      PropertyIdentifier: () => PropertyIdentifier2,
      PropertyStates: () => PropertyStates2,
      ProtocolLevel: () => ProtocolLevel2,
      ReadRangeType: () => ReadRangeType2,
      ReinitializedState: () => ReinitializedState2,
      RejectReason: () => RejectReason2,
      Relationship: () => Relationship2,
      Reliability: () => Reliability2,
      RestartReason: () => RestartReason2,
      ResultFlags: () => ResultFlags2,
      SecurityLevel: () => SecurityLevel2,
      SecurityPolicy: () => SecurityPolicy2,
      Segmentation: () => Segmentation2,
      ServicesSupported: () => ServicesSupported2,
      ShedState: () => ShedState2,
      SilencedState: () => SilencedState2,
      StatusFlags: () => StatusFlags2,
      TimeStamp: () => TimeStamp2,
      TimerState: () => TimerState2,
      TimerTransition: () => TimerTransition2,
      UnconfirmedServiceChoice: () => UnconfirmedServiceChoice2,
      VTClass: () => VTClass2,
      WriteStatus: () => WriteStatus2,
      getEnumName: () => getEnumName2
    });
    var import_debug4 = __toESM2(require("debug"));
    var debug5 = (0, import_debug4.default)("bacnet=enum=debug");
    var trace3 = (0, import_debug4.default)("bacnet=enum=trace");
    function invertEnum2(enumToInvert) {
      const invertedEnum = {};
      Object.keys(enumToInvert).forEach((key) => {
        invertedEnum[enumToInvert[key]] = key;
      });
      return invertedEnum;
    }
    function getEnumName2(group, value, addNumberValue = true, undefinedFallbackValue = void 0) {
      if (!Number.isInteger(value)) {
        throw new Error(
          'getEnumName() can only be passed an integer value, was given "' + value + '"'
        );
      }
      let foundEntry;
      try {
        const invertedGroup = invertEnum2(group);
        foundEntry = invertedGroup[value];
        if (foundEntry === void 0 && undefinedFallbackValue) {
          foundEntry = undefinedFallbackValue;
        }
        if (foundEntry === void 0) {
          foundEntry = value.toString();
        } else if (addNumberValue) {
          foundEntry += "(" + value + ")";
        }
      } catch (e) {
        trace3(e.message);
        foundEntry = null;
      }
      return foundEntry;
    }
    var PDU_TYPE_MASK2 = 240;
    var ASN1_MAX_OBJECT2 = 1023;
    var ASN1_INSTANCE_BITS2 = 22;
    var ASN1_MAX_INSTANCE2 = 4194303;
    var ASN1_MAX_BITSTRING_BYTES2 = 15;
    var ASN1_ARRAY_ALL2 = 4294967295;
    var ASN1_NO_PRIORITY2 = 0;
    var ASN1_MIN_PRIORITY2 = 1;
    var ASN1_MAX_PRIORITY2 = 16;
    var ASN1_MAX_APPLICATION_TAG2 = 16;
    var ASN1_MAX_OBJECT_TYPE2 = 1024;
    var ASN1_MAX_PROPERTY_ID2 = 4194303;
    var BVLL_TYPE_BACNET_IP2 = 129;
    var BVLC_HEADER_LENGTH3 = 4;
    var ConfirmedServiceChoice2 = /* @__PURE__ */ ((ConfirmedServiceChoice22) => {
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["READ_PROPERTY"] = 12] = "READ_PROPERTY";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["VT_OPEN"] = 21] = "VT_OPEN";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["VT_CLOSE"] = 22] = "VT_CLOSE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["VT_DATA"] = 23] = "VT_DATA";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["READ_RANGE"] = 26] = "READ_RANGE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["LIFE_SAFETY_OPERATION"] = 27] = "LIFE_SAFETY_OPERATION";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["SUBSCRIBE_COV_PROPERTY"] = 28] = "SUBSCRIBE_COV_PROPERTY";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["GET_EVENT_INFORMATION"] = 29] = "GET_EVENT_INFORMATION";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 30] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
      ConfirmedServiceChoice22[ConfirmedServiceChoice22["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 31] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
      return ConfirmedServiceChoice22;
    })(ConfirmedServiceChoice2 || {});
    var UnconfirmedServiceChoice2 = /* @__PURE__ */ ((UnconfirmedServiceChoice22) => {
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["I_AM"] = 0] = "I_AM";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["I_HAVE"] = 1] = "I_HAVE";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["UNCONFIRMED_COV_NOTIFICATION"] = 2] = "UNCONFIRMED_COV_NOTIFICATION";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["UNCONFIRMED_EVENT_NOTIFICATION"] = 3] = "UNCONFIRMED_EVENT_NOTIFICATION";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["UNCONFIRMED_PRIVATE_TRANSFER"] = 4] = "UNCONFIRMED_PRIVATE_TRANSFER";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["UNCONFIRMED_TEXT_MESSAGE"] = 5] = "UNCONFIRMED_TEXT_MESSAGE";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["TIME_SYNCHRONIZATION"] = 6] = "TIME_SYNCHRONIZATION";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["WHO_HAS"] = 7] = "WHO_HAS";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["WHO_IS"] = 8] = "WHO_IS";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["UTC_TIME_SYNCHRONIZATION"] = 9] = "UTC_TIME_SYNCHRONIZATION";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["WRITE_GROUP"] = 10] = "WRITE_GROUP";
      UnconfirmedServiceChoice22[UnconfirmedServiceChoice22["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 11] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
      return UnconfirmedServiceChoice22;
    })(UnconfirmedServiceChoice2 || {});
    var AbortReason2 = /* @__PURE__ */ ((AbortReason22) => {
      AbortReason22[AbortReason22["OTHER"] = 0] = "OTHER";
      AbortReason22[AbortReason22["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
      AbortReason22[AbortReason22["INVALID_APDU_IN_THIS_STATE"] = 2] = "INVALID_APDU_IN_THIS_STATE";
      AbortReason22[AbortReason22["PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 3] = "PREEMPTED_BY_HIGHER_PRIORITY_TASK";
      AbortReason22[AbortReason22["SEGMENTATION_NOT_SUPPORTED"] = 4] = "SEGMENTATION_NOT_SUPPORTED";
      AbortReason22[AbortReason22["SECURITY_ERROR"] = 5] = "SECURITY_ERROR";
      AbortReason22[AbortReason22["INSUFFICIENT_SECURITY"] = 6] = "INSUFFICIENT_SECURITY";
      AbortReason22[AbortReason22["WINDOW_SIZE_OUT_OF_RANGE"] = 7] = "WINDOW_SIZE_OUT_OF_RANGE";
      AbortReason22[AbortReason22["APPLICATION_EXCEEDED_REPLY_TIME"] = 8] = "APPLICATION_EXCEEDED_REPLY_TIME";
      AbortReason22[AbortReason22["OUT_OF_RESOURCES"] = 9] = "OUT_OF_RESOURCES";
      AbortReason22[AbortReason22["TSM_TIMEOUT"] = 10] = "TSM_TIMEOUT";
      AbortReason22[AbortReason22["APDU_TOO_LONG"] = 11] = "APDU_TOO_LONG";
      return AbortReason22;
    })(AbortReason2 || {});
    var RejectReason2 = /* @__PURE__ */ ((RejectReason22) => {
      RejectReason22[RejectReason22["OTHER"] = 0] = "OTHER";
      RejectReason22[RejectReason22["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
      RejectReason22[RejectReason22["INCONSISTENT_PARAMETERS"] = 2] = "INCONSISTENT_PARAMETERS";
      RejectReason22[RejectReason22["INVALID_PARAMETER_DATA_TYPE"] = 3] = "INVALID_PARAMETER_DATA_TYPE";
      RejectReason22[RejectReason22["INVALID_TAG"] = 4] = "INVALID_TAG";
      RejectReason22[RejectReason22["MISSING_REQUIRED_PARAMETER"] = 5] = "MISSING_REQUIRED_PARAMETER";
      RejectReason22[RejectReason22["PARAMETER_OUT_OF_RANGE"] = 6] = "PARAMETER_OUT_OF_RANGE";
      RejectReason22[RejectReason22["TOO_MANY_ARGUMENTS"] = 7] = "TOO_MANY_ARGUMENTS";
      RejectReason22[RejectReason22["UNDEFINED_ENUMERATION"] = 8] = "UNDEFINED_ENUMERATION";
      RejectReason22[RejectReason22["UNRECOGNIZED_SERVICE"] = 9] = "UNRECOGNIZED_SERVICE";
      return RejectReason22;
    })(RejectReason2 || {});
    var ErrorClass2 = /* @__PURE__ */ ((ErrorClass22) => {
      ErrorClass22[ErrorClass22["DEVICE"] = 0] = "DEVICE";
      ErrorClass22[ErrorClass22["OBJECT"] = 1] = "OBJECT";
      ErrorClass22[ErrorClass22["PROPERTY"] = 2] = "PROPERTY";
      ErrorClass22[ErrorClass22["RESOURCES"] = 3] = "RESOURCES";
      ErrorClass22[ErrorClass22["SECURITY"] = 4] = "SECURITY";
      ErrorClass22[ErrorClass22["SERVICES"] = 5] = "SERVICES";
      ErrorClass22[ErrorClass22["VT"] = 6] = "VT";
      ErrorClass22[ErrorClass22["COMMUNICATION"] = 7] = "COMMUNICATION";
      return ErrorClass22;
    })(ErrorClass2 || {});
    var ErrorClassName2 = invertEnum2(
      ErrorClass2
    );
    var ErrorCode2 = /* @__PURE__ */ ((ErrorCode22) => {
      ErrorCode22[ErrorCode22["ABORT_APDU_TOO_LONG"] = 123] = "ABORT_APDU_TOO_LONG";
      ErrorCode22[ErrorCode22["ABORT_APPLICATION_EXCEEDED_REPLY_TIME"] = 124] = "ABORT_APPLICATION_EXCEEDED_REPLY_TIME";
      ErrorCode22[ErrorCode22["ABORT_BUFFER_OVERFLOW"] = 51] = "ABORT_BUFFER_OVERFLOW";
      ErrorCode22[ErrorCode22["ABORT_INSUFFICIENT_SECURITY"] = 135] = "ABORT_INSUFFICIENT_SECURITY";
      ErrorCode22[ErrorCode22["ABORT_INVALID_APDU_IN_THIS_STATE"] = 52] = "ABORT_INVALID_APDU_IN_THIS_STATE";
      ErrorCode22[ErrorCode22["ABORT_OTHER"] = 56] = "ABORT_OTHER";
      ErrorCode22[ErrorCode22["ABORT_OUT_OF_RESOURCES"] = 125] = "ABORT_OUT_OF_RESOURCES";
      ErrorCode22[ErrorCode22["ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 53] = "ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK";
      ErrorCode22[ErrorCode22["ABORT_PROPRIETARY"] = 55] = "ABORT_PROPRIETARY";
      ErrorCode22[ErrorCode22["ABORT_SECURITY_ERROR"] = 136] = "ABORT_SECURITY_ERROR";
      ErrorCode22[ErrorCode22["ABORT_SEGMENTATION_NOT_SUPPORTED"] = 54] = "ABORT_SEGMENTATION_NOT_SUPPORTED";
      ErrorCode22[ErrorCode22["ABORT_TSM_TIMEOUT"] = 126] = "ABORT_TSM_TIMEOUT";
      ErrorCode22[ErrorCode22["ABORT_WINDOW_SIZE_OUT_OF_RANGE"] = 127] = "ABORT_WINDOW_SIZE_OUT_OF_RANGE";
      ErrorCode22[ErrorCode22["ACCESS_DENIED"] = 85] = "ACCESS_DENIED";
      ErrorCode22[ErrorCode22["ADDRESSING_ERROR"] = 115] = "ADDRESSING_ERROR";
      ErrorCode22[ErrorCode22["BAD_DESTINATION_ADDRESS"] = 86] = "BAD_DESTINATION_ADDRESS";
      ErrorCode22[ErrorCode22["BAD_DESTINATION_DEVICE_ID"] = 87] = "BAD_DESTINATION_DEVICE_ID";
      ErrorCode22[ErrorCode22["BAD_SIGNATURE"] = 88] = "BAD_SIGNATURE";
      ErrorCode22[ErrorCode22["BAD_SOURCE_ADDRESS"] = 89] = "BAD_SOURCE_ADDRESS";
      ErrorCode22[ErrorCode22["BAD_TIMESTAMP"] = 90] = "BAD_TIMESTAMP";
      ErrorCode22[ErrorCode22["BUSY"] = 82] = "BUSY";
      ErrorCode22[ErrorCode22["CANNOT_USE_KEY"] = 91] = "CANNOT_USE_KEY";
      ErrorCode22[ErrorCode22["CANNOT_VERIFY_MESSAGE_ID"] = 92] = "CANNOT_VERIFY_MESSAGE_ID";
      ErrorCode22[ErrorCode22["CHARACTER_SET_NOT_SUPPORTED"] = 41] = "CHARACTER_SET_NOT_SUPPORTED";
      ErrorCode22[ErrorCode22["COMMUNICATION_DISABLED"] = 83] = "COMMUNICATION_DISABLED";
      ErrorCode22[ErrorCode22["CONFIGURATION_IN_PROGRESS"] = 2] = "CONFIGURATION_IN_PROGRESS";
      ErrorCode22[ErrorCode22["CORRECT_KEY_REVISION"] = 93] = "CORRECT_KEY_REVISION";
      ErrorCode22[ErrorCode22["COV_SUBSCRIPTION_FAILED"] = 43] = "COV_SUBSCRIPTION_FAILED";
      ErrorCode22[ErrorCode22["DATATYPE_NOT_SUPPORTED"] = 47] = "DATATYPE_NOT_SUPPORTED";
      ErrorCode22[ErrorCode22["DELETE_FDT_ENTRY_FAILED"] = 120] = "DELETE_FDT_ENTRY_FAILED";
      ErrorCode22[ErrorCode22["DESTINATION_DEVICE_ID_REQUIRED"] = 94] = "DESTINATION_DEVICE_ID_REQUIRED";
      ErrorCode22[ErrorCode22["DEVICE_BUSY"] = 3] = "DEVICE_BUSY";
      ErrorCode22[ErrorCode22["DISTRIBUTE_BROADCAST_FAILED"] = 121] = "DISTRIBUTE_BROADCAST_FAILED";
      ErrorCode22[ErrorCode22["DUPLICATE_ENTRY"] = 137] = "DUPLICATE_ENTRY";
      ErrorCode22[ErrorCode22["DUPLICATE_MESSAGE"] = 95] = "DUPLICATE_MESSAGE";
      ErrorCode22[ErrorCode22["DUPLICATE_NAME"] = 48] = "DUPLICATE_NAME";
      ErrorCode22[ErrorCode22["DUPLICATE_OBJECT_ID"] = 49] = "DUPLICATE_OBJECT_ID";
      ErrorCode22[ErrorCode22["DYNAMIC_CREATION_NOT_SUPPORTED"] = 4] = "DYNAMIC_CREATION_NOT_SUPPORTED";
      ErrorCode22[ErrorCode22["ENCRYPTION_NOT_CONFIGURED"] = 96] = "ENCRYPTION_NOT_CONFIGURED";
      ErrorCode22[ErrorCode22["ENCRYPTION_REQUIRED"] = 97] = "ENCRYPTION_REQUIRED";
      ErrorCode22[ErrorCode22["FILE_ACCESS_DENIED"] = 5] = "FILE_ACCESS_DENIED";
      ErrorCode22[ErrorCode22["FILE_FULL"] = 128] = "FILE_FULL";
      ErrorCode22[ErrorCode22["INCONSISTENT_CONFIGURATION"] = 129] = "INCONSISTENT_CONFIGURATION";
      ErrorCode22[ErrorCode22["INCONSISTENT_OBJECT_TYPE"] = 130] = "INCONSISTENT_OBJECT_TYPE";
      ErrorCode22[ErrorCode22["INCONSISTENT_PARAMETERS"] = 7] = "INCONSISTENT_PARAMETERS";
      ErrorCode22[ErrorCode22["INCONSISTENT_SELECTION_CRITERION"] = 8] = "INCONSISTENT_SELECTION_CRITERION";
      ErrorCode22[ErrorCode22["INCORRECT_KEY"] = 98] = "INCORRECT_KEY";
      ErrorCode22[ErrorCode22["INTERNAL_ERROR"] = 131] = "INTERNAL_ERROR";
      ErrorCode22[ErrorCode22["INVALID_ARRAY_INDEX"] = 42] = "INVALID_ARRAY_INDEX";
      ErrorCode22[ErrorCode22["INVALID_CONFIGURATION_DATA"] = 46] = "INVALID_CONFIGURATION_DATA";
      ErrorCode22[ErrorCode22["INVALID_DATA_TYPE"] = 9] = "INVALID_DATA_TYPE";
      ErrorCode22[ErrorCode22["INVALID_EVENT_STATE"] = 73] = "INVALID_EVENT_STATE";
      ErrorCode22[ErrorCode22["INVALID_FILE_ACCESS_METHOD"] = 10] = "INVALID_FILE_ACCESS_METHOD";
      ErrorCode22[ErrorCode22["INVALID_FILE_START_POSITION"] = 11] = "INVALID_FILE_START_POSITION";
      ErrorCode22[ErrorCode22["INVALID_KEY_DATA"] = 99] = "INVALID_KEY_DATA";
      ErrorCode22[ErrorCode22["INVALID_PARAMETER_DATA_TYPE"] = 13] = "INVALID_PARAMETER_DATA_TYPE";
      ErrorCode22[ErrorCode22["INVALID_TAG"] = 57] = "INVALID_TAG";
      ErrorCode22[ErrorCode22["INVALID_TIMESTAMP"] = 14] = "INVALID_TIMESTAMP";
      ErrorCode22[ErrorCode22["INVALID_VALUE_IN_THIS_STATE"] = 138] = "INVALID_VALUE_IN_THIS_STATE";
      ErrorCode22[ErrorCode22["KEY_UPDATE_IN_PROGRESS"] = 100] = "KEY_UPDATE_IN_PROGRESS";
      ErrorCode22[ErrorCode22["LIST_ELEMENT_NOT_FOUND"] = 81] = "LIST_ELEMENT_NOT_FOUND";
      ErrorCode22[ErrorCode22["LOG_BUFFER_FULL"] = 75] = "LOG_BUFFER_FULL";
      ErrorCode22[ErrorCode22["LOGGED_VALUE_PURGED"] = 76] = "LOGGED_VALUE_PURGED";
      ErrorCode22[ErrorCode22["MALFORMED_MESSAGE"] = 101] = "MALFORMED_MESSAGE";
      ErrorCode22[ErrorCode22["MESSAGE_TOO_LONG"] = 113] = "MESSAGE_TOO_LONG";
      ErrorCode22[ErrorCode22["MISSING_REQUIRED_PARAMETER"] = 16] = "MISSING_REQUIRED_PARAMETER";
      ErrorCode22[ErrorCode22["NETWORK_DOWN"] = 58] = "NETWORK_DOWN";
      ErrorCode22[ErrorCode22["NO_ALARM_CONFIGURED"] = 74] = "NO_ALARM_CONFIGURED";
      ErrorCode22[ErrorCode22["NO_OBJECTS_OF_SPECIFIED_TYPE"] = 17] = "NO_OBJECTS_OF_SPECIFIED_TYPE";
      ErrorCode22[ErrorCode22["NO_PROPERTY_SPECIFIED"] = 77] = "NO_PROPERTY_SPECIFIED";
      ErrorCode22[ErrorCode22["NO_SPACE_FOR_OBJECT"] = 18] = "NO_SPACE_FOR_OBJECT";
      ErrorCode22[ErrorCode22["NO_SPACE_TO_ADD_LIST_ELEMENT"] = 19] = "NO_SPACE_TO_ADD_LIST_ELEMENT";
      ErrorCode22[ErrorCode22["NO_SPACE_TO_WRITE_PROPERTY"] = 20] = "NO_SPACE_TO_WRITE_PROPERTY";
      ErrorCode22[ErrorCode22["NO_VT_SESSIONS_AVAILABLE"] = 21] = "NO_VT_SESSIONS_AVAILABLE";
      ErrorCode22[ErrorCode22["NOT_CONFIGURED"] = 132] = "NOT_CONFIGURED";
      ErrorCode22[ErrorCode22["NOT_CONFIGURED_FOR_TRIGGERED_LOGGING"] = 78] = "NOT_CONFIGURED_FOR_TRIGGERED_LOGGING";
      ErrorCode22[ErrorCode22["NOT_COV_PROPERTY"] = 44] = "NOT_COV_PROPERTY";
      ErrorCode22[ErrorCode22["NOT_KEY_SERVER"] = 102] = "NOT_KEY_SERVER";
      ErrorCode22[ErrorCode22["NOT_ROUTER_TO_DNET"] = 110] = "NOT_ROUTER_TO_DNET";
      ErrorCode22[ErrorCode22["OBJECT_DELETION_NOT_PERMITTED"] = 23] = "OBJECT_DELETION_NOT_PERMITTED";
      ErrorCode22[ErrorCode22["OBJECT_IDENTIFIER_ALREADY_EXISTS"] = 24] = "OBJECT_IDENTIFIER_ALREADY_EXISTS";
      ErrorCode22[ErrorCode22["OPERATIONAL_PROBLEM"] = 25] = "OPERATIONAL_PROBLEM";
      ErrorCode22[ErrorCode22["OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED"] = 45] = "OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED";
      ErrorCode22[ErrorCode22["OTHER"] = 0] = "OTHER";
      ErrorCode22[ErrorCode22["OUT_OF_MEMORY"] = 133] = "OUT_OF_MEMORY";
      ErrorCode22[ErrorCode22["PARAMETER_OUT_OF_RANGE"] = 80] = "PARAMETER_OUT_OF_RANGE";
      ErrorCode22[ErrorCode22["PASSWORD_FAILURE"] = 26] = "PASSWORD_FAILURE";
      ErrorCode22[ErrorCode22["PROPERTY_IS_NOT_A_LIST"] = 22] = "PROPERTY_IS_NOT_A_LIST";
      ErrorCode22[ErrorCode22["PROPERTY_IS_NOT_AN_ARRAY"] = 50] = "PROPERTY_IS_NOT_AN_ARRAY";
      ErrorCode22[ErrorCode22["READ_ACCESS_DENIED"] = 27] = "READ_ACCESS_DENIED";
      ErrorCode22[ErrorCode22["READ_BDT_FAILED"] = 117] = "READ_BDT_FAILED";
      ErrorCode22[ErrorCode22["READ_FDT_FAILED"] = 119] = "READ_FDT_FAILED";
      ErrorCode22[ErrorCode22["REGISTER_FOREIGN_DEVICE_FAILED"] = 118] = "REGISTER_FOREIGN_DEVICE_FAILED";
      ErrorCode22[ErrorCode22["REJECT_BUFFER_OVERFLOW"] = 59] = "REJECT_BUFFER_OVERFLOW";
      ErrorCode22[ErrorCode22["REJECT_INCONSISTENT_PARAMETERS"] = 60] = "REJECT_INCONSISTENT_PARAMETERS";
      ErrorCode22[ErrorCode22["REJECT_INVALID_PARAMETER_DATA_TYPE"] = 61] = "REJECT_INVALID_PARAMETER_DATA_TYPE";
      ErrorCode22[ErrorCode22["REJECT_INVALID_TAG"] = 62] = "REJECT_INVALID_TAG";
      ErrorCode22[ErrorCode22["REJECT_MISSING_REQUIRED_PARAMETER"] = 63] = "REJECT_MISSING_REQUIRED_PARAMETER";
      ErrorCode22[ErrorCode22["REJECT_OTHER"] = 69] = "REJECT_OTHER";
      ErrorCode22[ErrorCode22["REJECT_PARAMETER_OUT_OF_RANGE"] = 64] = "REJECT_PARAMETER_OUT_OF_RANGE";
      ErrorCode22[ErrorCode22["REJECT_PROPRIETARY"] = 68] = "REJECT_PROPRIETARY";
      ErrorCode22[ErrorCode22["REJECT_TOO_MANY_ARGUMENTS"] = 65] = "REJECT_TOO_MANY_ARGUMENTS";
      ErrorCode22[ErrorCode22["REJECT_UNDEFINED_ENUMERATION"] = 66] = "REJECT_UNDEFINED_ENUMERATION";
      ErrorCode22[ErrorCode22["REJECT_UNRECOGNIZED_SERVICE"] = 67] = "REJECT_UNRECOGNIZED_SERVICE";
      ErrorCode22[ErrorCode22["ROUTER_BUSY"] = 111] = "ROUTER_BUSY";
      ErrorCode22[ErrorCode22["SECURITY_ERROR"] = 114] = "SECURITY_ERROR";
      ErrorCode22[ErrorCode22["SECURITY_NOT_CONFIGURED"] = 103] = "SECURITY_NOT_CONFIGURED";
      ErrorCode22[ErrorCode22["SERVICE_REQUEST_DENIED"] = 29] = "SERVICE_REQUEST_DENIED";
      ErrorCode22[ErrorCode22["SOURCE_SECURITY_REQUIRED"] = 104] = "SOURCE_SECURITY_REQUIRED";
      ErrorCode22[ErrorCode22["SUCCESS"] = 84] = "SUCCESS";
      ErrorCode22[ErrorCode22["TIMEOUT"] = 30] = "TIMEOUT";
      ErrorCode22[ErrorCode22["TOO_MANY_KEYS"] = 105] = "TOO_MANY_KEYS";
      ErrorCode22[ErrorCode22["UNKNOWN_AUTHENTICATION_TYPE"] = 106] = "UNKNOWN_AUTHENTICATION_TYPE";
      ErrorCode22[ErrorCode22["UNKNOWN_DEVICE"] = 70] = "UNKNOWN_DEVICE";
      ErrorCode22[ErrorCode22["UNKNOWN_FILE_SIZE"] = 122] = "UNKNOWN_FILE_SIZE";
      ErrorCode22[ErrorCode22["UNKNOWN_KEY"] = 107] = "UNKNOWN_KEY";
      ErrorCode22[ErrorCode22["UNKNOWN_KEY_REVISION"] = 108] = "UNKNOWN_KEY_REVISION";
      ErrorCode22[ErrorCode22["UNKNOWN_NETWORK_MESSAGE"] = 112] = "UNKNOWN_NETWORK_MESSAGE";
      ErrorCode22[ErrorCode22["UNKNOWN_OBJECT"] = 31] = "UNKNOWN_OBJECT";
      ErrorCode22[ErrorCode22["UNKNOWN_PROPERTY"] = 32] = "UNKNOWN_PROPERTY";
      ErrorCode22[ErrorCode22["UNKNOWN_ROUTE"] = 71] = "UNKNOWN_ROUTE";
      ErrorCode22[ErrorCode22["UNKNOWN_SOURCE_MESSAGE"] = 109] = "UNKNOWN_SOURCE_MESSAGE";
      ErrorCode22[ErrorCode22["UNKNOWN_SUBSCRIPTION"] = 79] = "UNKNOWN_SUBSCRIPTION";
      ErrorCode22[ErrorCode22["UNKNOWN_VT_CLASS"] = 34] = "UNKNOWN_VT_CLASS";
      ErrorCode22[ErrorCode22["UNKNOWN_VT_SESSION"] = 35] = "UNKNOWN_VT_SESSION";
      ErrorCode22[ErrorCode22["UNSUPPORTED_OBJECT_TYPE"] = 36] = "UNSUPPORTED_OBJECT_TYPE";
      ErrorCode22[ErrorCode22["VALUE_NOT_INITIALIZED"] = 72] = "VALUE_NOT_INITIALIZED";
      ErrorCode22[ErrorCode22["VALUE_OUT_OF_RANGE"] = 37] = "VALUE_OUT_OF_RANGE";
      ErrorCode22[ErrorCode22["VALUE_TOO_LONG"] = 134] = "VALUE_TOO_LONG";
      ErrorCode22[ErrorCode22["VT_SESSION_ALREADY_CLOSED"] = 38] = "VT_SESSION_ALREADY_CLOSED";
      ErrorCode22[ErrorCode22["VT_SESSION_TERMINATION_FAILURE"] = 39] = "VT_SESSION_TERMINATION_FAILURE";
      ErrorCode22[ErrorCode22["WRITE_ACCESS_DENIED"] = 40] = "WRITE_ACCESS_DENIED";
      ErrorCode22[ErrorCode22["WRITE_BDT_FAILED"] = 116] = "WRITE_BDT_FAILED";
      return ErrorCode22;
    })(ErrorCode2 || {});
    var ErrorCodeName2 = invertEnum2(
      ErrorCode2
    );
    var AccessAuthenticationFactorDisable2 = /* @__PURE__ */ ((AccessAuthenticationFactorDisable22) => {
      AccessAuthenticationFactorDisable22[AccessAuthenticationFactorDisable22["NONE"] = 0] = "NONE";
      AccessAuthenticationFactorDisable22[AccessAuthenticationFactorDisable22["DISABLED"] = 1] = "DISABLED";
      AccessAuthenticationFactorDisable22[AccessAuthenticationFactorDisable22["DISABLED_LOST"] = 2] = "DISABLED_LOST";
      AccessAuthenticationFactorDisable22[AccessAuthenticationFactorDisable22["DISABLED_STOLEN"] = 3] = "DISABLED_STOLEN";
      AccessAuthenticationFactorDisable22[AccessAuthenticationFactorDisable22["DISABLED_DAMAGED"] = 4] = "DISABLED_DAMAGED";
      AccessAuthenticationFactorDisable22[AccessAuthenticationFactorDisable22["DISABLED_DESTROYED"] = 5] = "DISABLED_DESTROYED";
      return AccessAuthenticationFactorDisable22;
    })(AccessAuthenticationFactorDisable2 || {});
    var AccessCredentialDisable2 = /* @__PURE__ */ ((AccessCredentialDisable22) => {
      AccessCredentialDisable22[AccessCredentialDisable22["NONE"] = 0] = "NONE";
      AccessCredentialDisable22[AccessCredentialDisable22["DISABLE"] = 1] = "DISABLE";
      AccessCredentialDisable22[AccessCredentialDisable22["DISABLE_MANUAL"] = 2] = "DISABLE_MANUAL";
      AccessCredentialDisable22[AccessCredentialDisable22["DISABLE_LOCKOUT"] = 3] = "DISABLE_LOCKOUT";
      return AccessCredentialDisable22;
    })(AccessCredentialDisable2 || {});
    var AccessCredentialDisableReason2 = /* @__PURE__ */ ((AccessCredentialDisableReason22) => {
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED"] = 0] = "DISABLED";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_NEEDS_PROVISIONING"] = 1] = "DISABLED_NEEDS_PROVISIONING";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_UNASSIGNED"] = 2] = "DISABLED_UNASSIGNED";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_NOT_YET_ACTIVE"] = 3] = "DISABLED_NOT_YET_ACTIVE";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_EXPIRED"] = 4] = "DISABLED_EXPIRED";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_LOCKOUT"] = 5] = "DISABLED_LOCKOUT";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_MAX_DAYS"] = 6] = "DISABLED_MAX_DAYS";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_MAX_USES"] = 7] = "DISABLED_MAX_USES";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_INACTIVITY"] = 8] = "DISABLED_INACTIVITY";
      AccessCredentialDisableReason22[AccessCredentialDisableReason22["DISABLED_MANUAL"] = 9] = "DISABLED_MANUAL";
      return AccessCredentialDisableReason22;
    })(AccessCredentialDisableReason2 || {});
    var AccessEvent2 = /* @__PURE__ */ ((AccessEvent22) => {
      AccessEvent22[AccessEvent22["NONE"] = 0] = "NONE";
      AccessEvent22[AccessEvent22["GRANTED"] = 1] = "GRANTED";
      AccessEvent22[AccessEvent22["MUSTER"] = 2] = "MUSTER";
      AccessEvent22[AccessEvent22["PASSBACK_DETECTED"] = 3] = "PASSBACK_DETECTED";
      AccessEvent22[AccessEvent22["DURESS"] = 4] = "DURESS";
      AccessEvent22[AccessEvent22["TRACE"] = 5] = "TRACE";
      AccessEvent22[AccessEvent22["LOCKOUT_MAX_ATTEMPTS"] = 6] = "LOCKOUT_MAX_ATTEMPTS";
      AccessEvent22[AccessEvent22["LOCKOUT_OTHER"] = 7] = "LOCKOUT_OTHER";
      AccessEvent22[AccessEvent22["LOCKOUT_RELINQUISHED"] = 8] = "LOCKOUT_RELINQUISHED";
      AccessEvent22[AccessEvent22["LOCKED_BY_HIGHER_PRIORITY"] = 9] = "LOCKED_BY_HIGHER_PRIORITY";
      AccessEvent22[AccessEvent22["OUT_OF_SERVICE"] = 10] = "OUT_OF_SERVICE";
      AccessEvent22[AccessEvent22["OUT_OF_SERVICE_RELINQUISHED"] = 11] = "OUT_OF_SERVICE_RELINQUISHED";
      AccessEvent22[AccessEvent22["ACCOMPANIMENT_BY"] = 12] = "ACCOMPANIMENT_BY";
      AccessEvent22[AccessEvent22["AUTHENTICATION_FACTOR_READ"] = 13] = "AUTHENTICATION_FACTOR_READ";
      AccessEvent22[AccessEvent22["AUTHORIZATION_DELAYED"] = 14] = "AUTHORIZATION_DELAYED";
      AccessEvent22[AccessEvent22["VERIFICATION_REQUIRED"] = 15] = "VERIFICATION_REQUIRED";
      AccessEvent22[AccessEvent22["NO_ENTRY_AFTER_GRANTED"] = 16] = "NO_ENTRY_AFTER_GRANTED";
      AccessEvent22[AccessEvent22["DENIED_DENY_ALL"] = 128] = "DENIED_DENY_ALL";
      AccessEvent22[AccessEvent22["DENIED_UNKNOWN_CREDENTIAL"] = 129] = "DENIED_UNKNOWN_CREDENTIAL";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_UNAVAILABLE"] = 130] = "DENIED_AUTHENTICATION_UNAVAILABLE";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_FACTOR_TIMEOUT"] = 131] = "DENIED_AUTHENTICATION_FACTOR_TIMEOUT";
      AccessEvent22[AccessEvent22["DENIED_INCORRECT_AUTHENTICATION_FACTOR"] = 132] = "DENIED_INCORRECT_AUTHENTICATION_FACTOR";
      AccessEvent22[AccessEvent22["DENIED_ZONE_NO_ACCESS_RIGHTS"] = 133] = "DENIED_ZONE_NO_ACCESS_RIGHTS";
      AccessEvent22[AccessEvent22["DENIED_POINT_NO_ACCESS_RIGHTS"] = 134] = "DENIED_POINT_NO_ACCESS_RIGHTS";
      AccessEvent22[AccessEvent22["DENIED_NO_ACCESS_RIGHTS"] = 135] = "DENIED_NO_ACCESS_RIGHTS";
      AccessEvent22[AccessEvent22["DENIED_OUT_OF_TIME_RANGE"] = 136] = "DENIED_OUT_OF_TIME_RANGE";
      AccessEvent22[AccessEvent22["DENIED_THREAT_LEVEL"] = 137] = "DENIED_THREAT_LEVEL";
      AccessEvent22[AccessEvent22["DENIED_PASSBACK"] = 138] = "DENIED_PASSBACK";
      AccessEvent22[AccessEvent22["DENIED_UNEXPECTED_LOCATION_USAGE"] = 139] = "DENIED_UNEXPECTED_LOCATION_USAGE";
      AccessEvent22[AccessEvent22["DENIED_MAX_ATTEMPTS"] = 140] = "DENIED_MAX_ATTEMPTS";
      AccessEvent22[AccessEvent22["DENIED_LOWER_OCCUPANCY_LIMIT"] = 141] = "DENIED_LOWER_OCCUPANCY_LIMIT";
      AccessEvent22[AccessEvent22["DENIED_UPPER_OCCUPANCY_LIMIT"] = 142] = "DENIED_UPPER_OCCUPANCY_LIMIT";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_FACTOR_LOST"] = 143] = "DENIED_AUTHENTICATION_FACTOR_LOST";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_FACTOR_STOLEN"] = 144] = "DENIED_AUTHENTICATION_FACTOR_STOLEN";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_FACTOR_DAMAGED"] = 145] = "DENIED_AUTHENTICATION_FACTOR_DAMAGED";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_FACTOR_DESTROYED"] = 146] = "DENIED_AUTHENTICATION_FACTOR_DESTROYED";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_FACTOR_DISABLED"] = 147] = "DENIED_AUTHENTICATION_FACTOR_DISABLED";
      AccessEvent22[AccessEvent22["DENIED_AUTHENTICATION_FACTOR_ERROR"] = 148] = "DENIED_AUTHENTICATION_FACTOR_ERROR";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_UNASSIGNED"] = 149] = "DENIED_CREDENTIAL_UNASSIGNED";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_NOT_PROVISIONED"] = 150] = "DENIED_CREDENTIAL_NOT_PROVISIONED";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_NOT_YET_ACTIVE"] = 151] = "DENIED_CREDENTIAL_NOT_YET_ACTIVE";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_EXPIRED"] = 152] = "DENIED_CREDENTIAL_EXPIRED";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_MANUAL_DISABLE"] = 153] = "DENIED_CREDENTIAL_MANUAL_DISABLE";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_LOCKOUT"] = 154] = "DENIED_CREDENTIAL_LOCKOUT";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_MAX_DAYS"] = 155] = "DENIED_CREDENTIAL_MAX_DAYS";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_MAX_USES"] = 156] = "DENIED_CREDENTIAL_MAX_USES";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_INACTIVITY"] = 157] = "DENIED_CREDENTIAL_INACTIVITY";
      AccessEvent22[AccessEvent22["DENIED_CREDENTIAL_DISABLED"] = 158] = "DENIED_CREDENTIAL_DISABLED";
      AccessEvent22[AccessEvent22["DENIED_NO_ACCOMPANIMENT"] = 159] = "DENIED_NO_ACCOMPANIMENT";
      AccessEvent22[AccessEvent22["DENIED_INCORRECT_ACCOMPANIMENT"] = 160] = "DENIED_INCORRECT_ACCOMPANIMENT";
      AccessEvent22[AccessEvent22["DENIED_LOCKOUT"] = 161] = "DENIED_LOCKOUT";
      AccessEvent22[AccessEvent22["DENIED_VERIFICATION_FAILED"] = 162] = "DENIED_VERIFICATION_FAILED";
      AccessEvent22[AccessEvent22["DENIED_VERIFICATION_TIMEOUT"] = 163] = "DENIED_VERIFICATION_TIMEOUT";
      AccessEvent22[AccessEvent22["DENIED_OTHER"] = 164] = "DENIED_OTHER";
      return AccessEvent22;
    })(AccessEvent2 || {});
    var AccessPassbackMode2 = /* @__PURE__ */ ((AccessPassbackMode22) => {
      AccessPassbackMode22[AccessPassbackMode22["PASSBACK_OFF"] = 0] = "PASSBACK_OFF";
      AccessPassbackMode22[AccessPassbackMode22["HARD_PASSBACK"] = 1] = "HARD_PASSBACK";
      AccessPassbackMode22[AccessPassbackMode22["SOFT_PASSBACK"] = 2] = "SOFT_PASSBACK";
      return AccessPassbackMode22;
    })(AccessPassbackMode2 || {});
    var AccessUserType2 = /* @__PURE__ */ ((AccessUserType22) => {
      AccessUserType22[AccessUserType22["ASSET"] = 0] = "ASSET";
      AccessUserType22[AccessUserType22["GROUP"] = 1] = "GROUP";
      AccessUserType22[AccessUserType22["PERSON"] = 2] = "PERSON";
      return AccessUserType22;
    })(AccessUserType2 || {});
    var AccessZoneOccupancyState2 = /* @__PURE__ */ ((AccessZoneOccupancyState22) => {
      AccessZoneOccupancyState22[AccessZoneOccupancyState22["NORMAL"] = 0] = "NORMAL";
      AccessZoneOccupancyState22[AccessZoneOccupancyState22["BELOW_LOWER_LIMIT"] = 1] = "BELOW_LOWER_LIMIT";
      AccessZoneOccupancyState22[AccessZoneOccupancyState22["AT_LOWER_LIMIT"] = 2] = "AT_LOWER_LIMIT";
      AccessZoneOccupancyState22[AccessZoneOccupancyState22["AT_UPPER_LIMIT"] = 3] = "AT_UPPER_LIMIT";
      AccessZoneOccupancyState22[AccessZoneOccupancyState22["ABOVE_UPPER_LIMIT"] = 4] = "ABOVE_UPPER_LIMIT";
      AccessZoneOccupancyState22[AccessZoneOccupancyState22["DISABLED"] = 5] = "DISABLED";
      AccessZoneOccupancyState22[AccessZoneOccupancyState22["NOT_SUPPORTED"] = 6] = "NOT_SUPPORTED";
      return AccessZoneOccupancyState22;
    })(AccessZoneOccupancyState2 || {});
    var Action2 = /* @__PURE__ */ ((Action22) => {
      Action22[Action22["DIRECT"] = 0] = "DIRECT";
      Action22[Action22["REVERSE"] = 1] = "REVERSE";
      return Action22;
    })(Action2 || {});
    var AuthenticationFactorType2 = /* @__PURE__ */ ((AuthenticationFactorType22) => {
      AuthenticationFactorType22[AuthenticationFactorType22["UNDEFINED"] = 0] = "UNDEFINED";
      AuthenticationFactorType22[AuthenticationFactorType22["ERROR"] = 1] = "ERROR";
      AuthenticationFactorType22[AuthenticationFactorType22["CUSTOM"] = 2] = "CUSTOM";
      AuthenticationFactorType22[AuthenticationFactorType22["SIMPLE_NUMBER16"] = 3] = "SIMPLE_NUMBER16";
      AuthenticationFactorType22[AuthenticationFactorType22["SIMPLE_NUMBER32"] = 4] = "SIMPLE_NUMBER32";
      AuthenticationFactorType22[AuthenticationFactorType22["SIMPLE_NUMBER56"] = 5] = "SIMPLE_NUMBER56";
      AuthenticationFactorType22[AuthenticationFactorType22["SIMPLE_ALPHA_NUMERIC"] = 6] = "SIMPLE_ALPHA_NUMERIC";
      AuthenticationFactorType22[AuthenticationFactorType22["ABA_TRACK2"] = 7] = "ABA_TRACK2";
      AuthenticationFactorType22[AuthenticationFactorType22["WIEGAND26"] = 8] = "WIEGAND26";
      AuthenticationFactorType22[AuthenticationFactorType22["WIEGAND37"] = 9] = "WIEGAND37";
      AuthenticationFactorType22[AuthenticationFactorType22["WIEGAND37_FACILITY"] = 10] = "WIEGAND37_FACILITY";
      AuthenticationFactorType22[AuthenticationFactorType22["FACILITY16_CARD32"] = 11] = "FACILITY16_CARD32";
      AuthenticationFactorType22[AuthenticationFactorType22["FACILITY32_CARD32"] = 12] = "FACILITY32_CARD32";
      AuthenticationFactorType22[AuthenticationFactorType22["FASC_N"] = 13] = "FASC_N";
      AuthenticationFactorType22[AuthenticationFactorType22["FASC_N_BCD"] = 14] = "FASC_N_BCD";
      AuthenticationFactorType22[AuthenticationFactorType22["FASC_N_LARGE"] = 15] = "FASC_N_LARGE";
      AuthenticationFactorType22[AuthenticationFactorType22["FASC_N_LARGE_BCD"] = 16] = "FASC_N_LARGE_BCD";
      AuthenticationFactorType22[AuthenticationFactorType22["GSA75"] = 17] = "GSA75";
      AuthenticationFactorType22[AuthenticationFactorType22["CHUID"] = 18] = "CHUID";
      AuthenticationFactorType22[AuthenticationFactorType22["CHUID_FULL"] = 19] = "CHUID_FULL";
      AuthenticationFactorType22[AuthenticationFactorType22["GUID"] = 20] = "GUID";
      AuthenticationFactorType22[AuthenticationFactorType22["CBEFF_A"] = 21] = "CBEFF_A";
      AuthenticationFactorType22[AuthenticationFactorType22["CBEFF_B"] = 22] = "CBEFF_B";
      AuthenticationFactorType22[AuthenticationFactorType22["CBEFF_C"] = 23] = "CBEFF_C";
      AuthenticationFactorType22[AuthenticationFactorType22["USER_PASSWORD"] = 24] = "USER_PASSWORD";
      return AuthenticationFactorType22;
    })(AuthenticationFactorType2 || {});
    var AuthenticationStatus2 = /* @__PURE__ */ ((AuthenticationStatus22) => {
      AuthenticationStatus22[AuthenticationStatus22["NOT_READY"] = 0] = "NOT_READY";
      AuthenticationStatus22[AuthenticationStatus22["READY"] = 1] = "READY";
      AuthenticationStatus22[AuthenticationStatus22["DISABLED"] = 2] = "DISABLED";
      AuthenticationStatus22[AuthenticationStatus22["WAITING_FOR_AUTHENTICATION_FACTOR"] = 3] = "WAITING_FOR_AUTHENTICATION_FACTOR";
      AuthenticationStatus22[AuthenticationStatus22["WAITING_FOR_ACCOMPANIMENT"] = 4] = "WAITING_FOR_ACCOMPANIMENT";
      AuthenticationStatus22[AuthenticationStatus22["WAITING_FOR_VERIFICATION"] = 5] = "WAITING_FOR_VERIFICATION";
      AuthenticationStatus22[AuthenticationStatus22["IN_PROGRESS"] = 6] = "IN_PROGRESS";
      return AuthenticationStatus22;
    })(AuthenticationStatus2 || {});
    var AuthorizationExemption2 = /* @__PURE__ */ ((AuthorizationExemption22) => {
      AuthorizationExemption22[AuthorizationExemption22["PASSBACK"] = 0] = "PASSBACK";
      AuthorizationExemption22[AuthorizationExemption22["OCCUPANCY_CHECK"] = 1] = "OCCUPANCY_CHECK";
      AuthorizationExemption22[AuthorizationExemption22["ACCESS_RIGHTS"] = 2] = "ACCESS_RIGHTS";
      AuthorizationExemption22[AuthorizationExemption22["LOCKOUT"] = 3] = "LOCKOUT";
      AuthorizationExemption22[AuthorizationExemption22["DENY"] = 4] = "DENY";
      AuthorizationExemption22[AuthorizationExemption22["VERIFICATION"] = 5] = "VERIFICATION";
      AuthorizationExemption22[AuthorizationExemption22["AUTHORIZATION_DELAY"] = 6] = "AUTHORIZATION_DELAY";
      return AuthorizationExemption22;
    })(AuthorizationExemption2 || {});
    var AuthorizationMode2 = /* @__PURE__ */ ((AuthorizationMode22) => {
      AuthorizationMode22[AuthorizationMode22["AUTHORIZE"] = 0] = "AUTHORIZE";
      AuthorizationMode22[AuthorizationMode22["GRANT_ACTIVE"] = 1] = "GRANT_ACTIVE";
      AuthorizationMode22[AuthorizationMode22["DENY_ALL"] = 2] = "DENY_ALL";
      AuthorizationMode22[AuthorizationMode22["VERIFICATION_REQUIRED"] = 3] = "VERIFICATION_REQUIRED";
      AuthorizationMode22[AuthorizationMode22["AUTHORIZATION_DELAYED"] = 4] = "AUTHORIZATION_DELAYED";
      AuthorizationMode22[AuthorizationMode22["NONE"] = 5] = "NONE";
      return AuthorizationMode22;
    })(AuthorizationMode2 || {});
    var BackupState2 = /* @__PURE__ */ ((BackupState22) => {
      BackupState22[BackupState22["IDLE"] = 0] = "IDLE";
      BackupState22[BackupState22["PREPARING_FOR_BACKUP"] = 1] = "PREPARING_FOR_BACKUP";
      BackupState22[BackupState22["PREPARING_FOR_RESTORE"] = 2] = "PREPARING_FOR_RESTORE";
      BackupState22[BackupState22["PERFORMING_A_BACKUP"] = 3] = "PERFORMING_A_BACKUP";
      BackupState22[BackupState22["PERFORMING_A_RESTORE"] = 4] = "PERFORMING_A_RESTORE";
      BackupState22[BackupState22["BACKUP_FAILURE"] = 5] = "BACKUP_FAILURE";
      BackupState22[BackupState22["RESTORE_FAILURE"] = 6] = "RESTORE_FAILURE";
      return BackupState22;
    })(BackupState2 || {});
    var BinaryLightingPV2 = /* @__PURE__ */ ((BinaryLightingPV22) => {
      BinaryLightingPV22[BinaryLightingPV22["OFF"] = 0] = "OFF";
      BinaryLightingPV22[BinaryLightingPV22["ON"] = 1] = "ON";
      BinaryLightingPV22[BinaryLightingPV22["WARN"] = 2] = "WARN";
      BinaryLightingPV22[BinaryLightingPV22["WARN_OFF"] = 3] = "WARN_OFF";
      BinaryLightingPV22[BinaryLightingPV22["WARN_RELINQUISH"] = 4] = "WARN_RELINQUISH";
      BinaryLightingPV22[BinaryLightingPV22["STOP"] = 5] = "STOP";
      return BinaryLightingPV22;
    })(BinaryLightingPV2 || {});
    var BinaryPV2 = /* @__PURE__ */ ((BinaryPV22) => {
      BinaryPV22[BinaryPV22["INACTIVE"] = 0] = "INACTIVE";
      BinaryPV22[BinaryPV22["ACTIVE"] = 1] = "ACTIVE";
      return BinaryPV22;
    })(BinaryPV2 || {});
    var DeviceStatus2 = /* @__PURE__ */ ((DeviceStatus22) => {
      DeviceStatus22[DeviceStatus22["OPERATIONAL"] = 0] = "OPERATIONAL";
      DeviceStatus22[DeviceStatus22["OPERATIONAL_READ_ONLY"] = 1] = "OPERATIONAL_READ_ONLY";
      DeviceStatus22[DeviceStatus22["DOWNLOAD_REQUIRED"] = 2] = "DOWNLOAD_REQUIRED";
      DeviceStatus22[DeviceStatus22["DOWNLOAD_IN_PROGRESS"] = 3] = "DOWNLOAD_IN_PROGRESS";
      DeviceStatus22[DeviceStatus22["NON_OPERATIONAL"] = 4] = "NON_OPERATIONAL";
      DeviceStatus22[DeviceStatus22["BACKUP_IN_PROGRESS"] = 5] = "BACKUP_IN_PROGRESS";
      return DeviceStatus22;
    })(DeviceStatus2 || {});
    var DoorAlarmState2 = /* @__PURE__ */ ((DoorAlarmState22) => {
      DoorAlarmState22[DoorAlarmState22["NORMAL"] = 0] = "NORMAL";
      DoorAlarmState22[DoorAlarmState22["ALARM"] = 1] = "ALARM";
      DoorAlarmState22[DoorAlarmState22["DOOR_OPEN_TOO_LONG"] = 2] = "DOOR_OPEN_TOO_LONG";
      DoorAlarmState22[DoorAlarmState22["FORCED_OPEN"] = 3] = "FORCED_OPEN";
      DoorAlarmState22[DoorAlarmState22["TAMPER"] = 4] = "TAMPER";
      DoorAlarmState22[DoorAlarmState22["DOOR_FAULT"] = 5] = "DOOR_FAULT";
      DoorAlarmState22[DoorAlarmState22["LOCK_DOWN"] = 6] = "LOCK_DOWN";
      DoorAlarmState22[DoorAlarmState22["FREE_ACCESS"] = 7] = "FREE_ACCESS";
      DoorAlarmState22[DoorAlarmState22["EGRESS_OPEN"] = 8] = "EGRESS_OPEN";
      return DoorAlarmState22;
    })(DoorAlarmState2 || {});
    var DoorSecuredStatus2 = /* @__PURE__ */ ((DoorSecuredStatus22) => {
      DoorSecuredStatus22[DoorSecuredStatus22["SECURED"] = 0] = "SECURED";
      DoorSecuredStatus22[DoorSecuredStatus22["UNSECURED"] = 1] = "UNSECURED";
      DoorSecuredStatus22[DoorSecuredStatus22["UNKNOWN"] = 2] = "UNKNOWN";
      return DoorSecuredStatus22;
    })(DoorSecuredStatus2 || {});
    var DoorStatus2 = /* @__PURE__ */ ((DoorStatus22) => {
      DoorStatus22[DoorStatus22["CLOSED"] = 0] = "CLOSED";
      DoorStatus22[DoorStatus22["OPENED"] = 1] = "OPENED";
      DoorStatus22[DoorStatus22["UNKNOWN"] = 2] = "UNKNOWN";
      DoorStatus22[DoorStatus22["DOOR_FAULT"] = 3] = "DOOR_FAULT";
      DoorStatus22[DoorStatus22["UNUSED"] = 4] = "UNUSED";
      DoorStatus22[DoorStatus22["NONE"] = 5] = "NONE";
      DoorStatus22[DoorStatus22["CLOSING"] = 6] = "CLOSING";
      DoorStatus22[DoorStatus22["OPENING"] = 7] = "OPENING";
      DoorStatus22[DoorStatus22["SAFETY_LOCKED"] = 8] = "SAFETY_LOCKED";
      DoorStatus22[DoorStatus22["LIMITED_OPENED"] = 9] = "LIMITED_OPENED";
      return DoorStatus22;
    })(DoorStatus2 || {});
    var DoorValue2 = /* @__PURE__ */ ((DoorValue22) => {
      DoorValue22[DoorValue22["LOCK"] = 0] = "LOCK";
      DoorValue22[DoorValue22["UNLOCK"] = 1] = "UNLOCK";
      DoorValue22[DoorValue22["PULSE_UNLOCK"] = 2] = "PULSE_UNLOCK";
      DoorValue22[DoorValue22["EXTENDED_PULSE_UNLOCK"] = 3] = "EXTENDED_PULSE_UNLOCK";
      return DoorValue22;
    })(DoorValue2 || {});
    var EngineeringUnits2 = /* @__PURE__ */ ((EngineeringUnits22) => {
      EngineeringUnits22[EngineeringUnits22["METERS_PER_SECOND_PER_SECOND"] = 166] = "METERS_PER_SECOND_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["SQUARE_METERS"] = 0] = "SQUARE_METERS";
      EngineeringUnits22[EngineeringUnits22["SQUARE_CENTIMETERS"] = 116] = "SQUARE_CENTIMETERS";
      EngineeringUnits22[EngineeringUnits22["SQUARE_FEET"] = 1] = "SQUARE_FEET";
      EngineeringUnits22[EngineeringUnits22["SQUARE_INCHES"] = 115] = "SQUARE_INCHES";
      EngineeringUnits22[EngineeringUnits22["CURRENCY1"] = 105] = "CURRENCY1";
      EngineeringUnits22[EngineeringUnits22["CURRENCY2"] = 106] = "CURRENCY2";
      EngineeringUnits22[EngineeringUnits22["CURRENCY3"] = 107] = "CURRENCY3";
      EngineeringUnits22[EngineeringUnits22["CURRENCY4"] = 108] = "CURRENCY4";
      EngineeringUnits22[EngineeringUnits22["CURRENCY5"] = 109] = "CURRENCY5";
      EngineeringUnits22[EngineeringUnits22["CURRENCY6"] = 110] = "CURRENCY6";
      EngineeringUnits22[EngineeringUnits22["CURRENCY7"] = 111] = "CURRENCY7";
      EngineeringUnits22[EngineeringUnits22["CURRENCY8"] = 112] = "CURRENCY8";
      EngineeringUnits22[EngineeringUnits22["CURRENCY9"] = 113] = "CURRENCY9";
      EngineeringUnits22[EngineeringUnits22["CURRENCY10"] = 114] = "CURRENCY10";
      EngineeringUnits22[EngineeringUnits22["MILLIAMPERES"] = 2] = "MILLIAMPERES";
      EngineeringUnits22[EngineeringUnits22["AMPERES"] = 3] = "AMPERES";
      EngineeringUnits22[EngineeringUnits22["AMPERES_PER_METER"] = 167] = "AMPERES_PER_METER";
      EngineeringUnits22[EngineeringUnits22["AMPERES_PER_SQUARE_METER"] = 168] = "AMPERES_PER_SQUARE_METER";
      EngineeringUnits22[EngineeringUnits22["AMPERE_SQUARE_METERS"] = 169] = "AMPERE_SQUARE_METERS";
      EngineeringUnits22[EngineeringUnits22["DECIBELS"] = 199] = "DECIBELS";
      EngineeringUnits22[EngineeringUnits22["DECIBELS_MILLIVOLT"] = 200] = "DECIBELS_MILLIVOLT";
      EngineeringUnits22[EngineeringUnits22["DECIBELS_VOLT"] = 201] = "DECIBELS_VOLT";
      EngineeringUnits22[EngineeringUnits22["FARADS"] = 170] = "FARADS";
      EngineeringUnits22[EngineeringUnits22["HENRYS"] = 171] = "HENRYS";
      EngineeringUnits22[EngineeringUnits22["OHMS"] = 4] = "OHMS";
      EngineeringUnits22[EngineeringUnits22["OHM_METER_SQUARED_PER_METER"] = 237] = "OHM_METER_SQUARED_PER_METER";
      EngineeringUnits22[EngineeringUnits22["OHM_METERS"] = 172] = "OHM_METERS";
      EngineeringUnits22[EngineeringUnits22["MILLIOHMS"] = 145] = "MILLIOHMS";
      EngineeringUnits22[EngineeringUnits22["KILOHMS"] = 122] = "KILOHMS";
      EngineeringUnits22[EngineeringUnits22["MEGOHMS"] = 123] = "MEGOHMS";
      EngineeringUnits22[EngineeringUnits22["MICROSIEMENS"] = 190] = "MICROSIEMENS";
      EngineeringUnits22[EngineeringUnits22["MILLISIEMENS"] = 202] = "MILLISIEMENS";
      EngineeringUnits22[EngineeringUnits22["SIEMENS"] = 173] = "SIEMENS";
      EngineeringUnits22[EngineeringUnits22["SIEMENS_PER_METER"] = 174] = "SIEMENS_PER_METER";
      EngineeringUnits22[EngineeringUnits22["TESLAS"] = 175] = "TESLAS";
      EngineeringUnits22[EngineeringUnits22["VOLTS"] = 5] = "VOLTS";
      EngineeringUnits22[EngineeringUnits22["MILLIVOLTS"] = 124] = "MILLIVOLTS";
      EngineeringUnits22[EngineeringUnits22["KILOVOLTS"] = 6] = "KILOVOLTS";
      EngineeringUnits22[EngineeringUnits22["MEGAVOLTS"] = 7] = "MEGAVOLTS";
      EngineeringUnits22[EngineeringUnits22["VOLT_AMPERES"] = 8] = "VOLT_AMPERES";
      EngineeringUnits22[EngineeringUnits22["KILOVOLT_AMPERES"] = 9] = "KILOVOLT_AMPERES";
      EngineeringUnits22[EngineeringUnits22["MEGAVOLT_AMPERES"] = 10] = "MEGAVOLT_AMPERES";
      EngineeringUnits22[EngineeringUnits22["VOLT_AMPERES_REACTIVE"] = 11] = "VOLT_AMPERES_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["KILOVOLT_AMPERES_REACTIVE"] = 12] = "KILOVOLT_AMPERES_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["MEGAVOLT_AMPERES_REACTIVE"] = 13] = "MEGAVOLT_AMPERES_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["VOLTS_PER_DEGREE_KELVIN"] = 176] = "VOLTS_PER_DEGREE_KELVIN";
      EngineeringUnits22[EngineeringUnits22["VOLTS_PER_METER"] = 177] = "VOLTS_PER_METER";
      EngineeringUnits22[EngineeringUnits22["DEGREES_PHASE"] = 14] = "DEGREES_PHASE";
      EngineeringUnits22[EngineeringUnits22["POWER_FACTOR"] = 15] = "POWER_FACTOR";
      EngineeringUnits22[EngineeringUnits22["WEBERS"] = 178] = "WEBERS";
      EngineeringUnits22[EngineeringUnits22["AMPERE_SECONDS"] = 238] = "AMPERE_SECONDS";
      EngineeringUnits22[EngineeringUnits22["VOLT_AMPERE_HOURS"] = 239] = "VOLT_AMPERE_HOURS";
      EngineeringUnits22[EngineeringUnits22["KILOVOLT_AMPERE_HOURS"] = 240] = "KILOVOLT_AMPERE_HOURS";
      EngineeringUnits22[EngineeringUnits22["MEGAVOLT_AMPERE_HOURS"] = 241] = "MEGAVOLT_AMPERE_HOURS";
      EngineeringUnits22[EngineeringUnits22["VOLT_AMPERE_HOURS_REACTIVE"] = 242] = "VOLT_AMPERE_HOURS_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["KILOVOLT_AMPERE_HOURS_REACTIVE"] = 243] = "KILOVOLT_AMPERE_HOURS_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["MEGAVOLT_AMPERE_HOURS_REACTIVE"] = 244] = "MEGAVOLT_AMPERE_HOURS_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["VOLT_SQUARE_HOURS"] = 245] = "VOLT_SQUARE_HOURS";
      EngineeringUnits22[EngineeringUnits22["AMPERE_SQUARE_HOURS"] = 246] = "AMPERE_SQUARE_HOURS";
      EngineeringUnits22[EngineeringUnits22["JOULES"] = 16] = "JOULES";
      EngineeringUnits22[EngineeringUnits22["KILOJOULES"] = 17] = "KILOJOULES";
      EngineeringUnits22[EngineeringUnits22["KILOJOULES_PER_KILOGRAM"] = 125] = "KILOJOULES_PER_KILOGRAM";
      EngineeringUnits22[EngineeringUnits22["MEGAJOULES"] = 126] = "MEGAJOULES";
      EngineeringUnits22[EngineeringUnits22["WATT_HOURS"] = 18] = "WATT_HOURS";
      EngineeringUnits22[EngineeringUnits22["KILOWATT_HOURS"] = 19] = "KILOWATT_HOURS";
      EngineeringUnits22[EngineeringUnits22["MEGAWATT_HOURS"] = 146] = "MEGAWATT_HOURS";
      EngineeringUnits22[EngineeringUnits22["WATT_HOURS_REACTIVE"] = 203] = "WATT_HOURS_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["KILOWATT_HOURS_REACTIVE"] = 204] = "KILOWATT_HOURS_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["MEGAWATT_HOURS_REACTIVE"] = 205] = "MEGAWATT_HOURS_REACTIVE";
      EngineeringUnits22[EngineeringUnits22["BTUS"] = 20] = "BTUS";
      EngineeringUnits22[EngineeringUnits22["KILO_BTUS"] = 147] = "KILO_BTUS";
      EngineeringUnits22[EngineeringUnits22["MEGA_BTUS"] = 148] = "MEGA_BTUS";
      EngineeringUnits22[EngineeringUnits22["THERMS"] = 21] = "THERMS";
      EngineeringUnits22[EngineeringUnits22["TON_HOURS"] = 22] = "TON_HOURS";
      EngineeringUnits22[EngineeringUnits22["JOULES_PER_KILOGRAM_DRY_AIR"] = 23] = "JOULES_PER_KILOGRAM_DRY_AIR";
      EngineeringUnits22[EngineeringUnits22["KILOJOULES_PER_KILOGRAM_DRY_AIR"] = 149] = "KILOJOULES_PER_KILOGRAM_DRY_AIR";
      EngineeringUnits22[EngineeringUnits22["MEGAJOULES_PER_KILOGRAM_DRY_AIR"] = 150] = "MEGAJOULES_PER_KILOGRAM_DRY_AIR";
      EngineeringUnits22[EngineeringUnits22["BTUS_PER_POUND_DRY_AIR"] = 24] = "BTUS_PER_POUND_DRY_AIR";
      EngineeringUnits22[EngineeringUnits22["BTUS_PER_POUND"] = 117] = "BTUS_PER_POUND";
      EngineeringUnits22[EngineeringUnits22["JOULES_PER_DEGREE_KELVIN"] = 127] = "JOULES_PER_DEGREE_KELVIN";
      EngineeringUnits22[EngineeringUnits22["KILOJOULES_PER_DEGREE_KELVIN"] = 151] = "KILOJOULES_PER_DEGREE_KELVIN";
      EngineeringUnits22[EngineeringUnits22["MEGAJOULES_PER_DEGREE_KELVIN"] = 152] = "MEGAJOULES_PER_DEGREE_KELVIN";
      EngineeringUnits22[EngineeringUnits22["JOULES_PER_KILOGRAM_DEGREE_KELVIN"] = 128] = "JOULES_PER_KILOGRAM_DEGREE_KELVIN";
      EngineeringUnits22[EngineeringUnits22["NEWTON"] = 153] = "NEWTON";
      EngineeringUnits22[EngineeringUnits22["CYCLES_PER_HOUR"] = 25] = "CYCLES_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["CYCLES_PER_MINUTE"] = 26] = "CYCLES_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["HERTZ"] = 27] = "HERTZ";
      EngineeringUnits22[EngineeringUnits22["KILOHERTZ"] = 129] = "KILOHERTZ";
      EngineeringUnits22[EngineeringUnits22["MEGAHERTZ"] = 130] = "MEGAHERTZ";
      EngineeringUnits22[EngineeringUnits22["PER_HOUR"] = 131] = "PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR"] = 28] = "GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR";
      EngineeringUnits22[EngineeringUnits22["PERCENT_RELATIVE_HUMIDITY"] = 29] = "PERCENT_RELATIVE_HUMIDITY";
      EngineeringUnits22[EngineeringUnits22["MICROMETERS"] = 194] = "MICROMETERS";
      EngineeringUnits22[EngineeringUnits22["MILLIMETERS"] = 30] = "MILLIMETERS";
      EngineeringUnits22[EngineeringUnits22["CENTIMETERS"] = 118] = "CENTIMETERS";
      EngineeringUnits22[EngineeringUnits22["KILOMETERS"] = 193] = "KILOMETERS";
      EngineeringUnits22[EngineeringUnits22["METERS"] = 31] = "METERS";
      EngineeringUnits22[EngineeringUnits22["INCHES"] = 32] = "INCHES";
      EngineeringUnits22[EngineeringUnits22["FEET"] = 33] = "FEET";
      EngineeringUnits22[EngineeringUnits22["CANDELAS"] = 179] = "CANDELAS";
      EngineeringUnits22[EngineeringUnits22["CANDELAS_PER_SQUARE_METER"] = 180] = "CANDELAS_PER_SQUARE_METER";
      EngineeringUnits22[EngineeringUnits22["WATTS_PER_SQUARE_FOOT"] = 34] = "WATTS_PER_SQUARE_FOOT";
      EngineeringUnits22[EngineeringUnits22["WATTS_PER_SQUARE_METER"] = 35] = "WATTS_PER_SQUARE_METER";
      EngineeringUnits22[EngineeringUnits22["LUMENS"] = 36] = "LUMENS";
      EngineeringUnits22[EngineeringUnits22["LUXES"] = 37] = "LUXES";
      EngineeringUnits22[EngineeringUnits22["FOOT_CANDLES"] = 38] = "FOOT_CANDLES";
      EngineeringUnits22[EngineeringUnits22["MILLIGRAMS"] = 196] = "MILLIGRAMS";
      EngineeringUnits22[EngineeringUnits22["GRAMS"] = 195] = "GRAMS";
      EngineeringUnits22[EngineeringUnits22["KILOGRAMS"] = 39] = "KILOGRAMS";
      EngineeringUnits22[EngineeringUnits22["POUNDS_MASS"] = 40] = "POUNDS_MASS";
      EngineeringUnits22[EngineeringUnits22["TONS"] = 41] = "TONS";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_SECOND"] = 154] = "GRAMS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_MINUTE"] = 155] = "GRAMS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["KILOGRAMS_PER_SECOND"] = 42] = "KILOGRAMS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["KILOGRAMS_PER_MINUTE"] = 43] = "KILOGRAMS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["KILOGRAMS_PER_HOUR"] = 44] = "KILOGRAMS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["POUNDS_MASS_PER_SECOND"] = 119] = "POUNDS_MASS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["POUNDS_MASS_PER_MINUTE"] = 45] = "POUNDS_MASS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["POUNDS_MASS_PER_HOUR"] = 46] = "POUNDS_MASS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["TONS_PER_HOUR"] = 156] = "TONS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["MILLIWATTS"] = 132] = "MILLIWATTS";
      EngineeringUnits22[EngineeringUnits22["WATTS"] = 47] = "WATTS";
      EngineeringUnits22[EngineeringUnits22["KILOWATTS"] = 48] = "KILOWATTS";
      EngineeringUnits22[EngineeringUnits22["MEGAWATTS"] = 49] = "MEGAWATTS";
      EngineeringUnits22[EngineeringUnits22["BTUS_PER_HOUR"] = 50] = "BTUS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["KILO_BTUS_PER_HOUR"] = 157] = "KILO_BTUS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["JOULE_PER_HOURS"] = 247] = "JOULE_PER_HOURS";
      EngineeringUnits22[EngineeringUnits22["HORSEPOWER"] = 51] = "HORSEPOWER";
      EngineeringUnits22[EngineeringUnits22["TONS_REFRIGERATION"] = 52] = "TONS_REFRIGERATION";
      EngineeringUnits22[EngineeringUnits22["PASCALS"] = 53] = "PASCALS";
      EngineeringUnits22[EngineeringUnits22["HECTOPASCALS"] = 133] = "HECTOPASCALS";
      EngineeringUnits22[EngineeringUnits22["KILOPASCALS"] = 54] = "KILOPASCALS";
      EngineeringUnits22[EngineeringUnits22["MILLIBARS"] = 134] = "MILLIBARS";
      EngineeringUnits22[EngineeringUnits22["BARS"] = 55] = "BARS";
      EngineeringUnits22[EngineeringUnits22["POUNDS_FORCE_PER_SQUARE_INCH"] = 56] = "POUNDS_FORCE_PER_SQUARE_INCH";
      EngineeringUnits22[EngineeringUnits22["MILLIMETERS_OF_WATER"] = 206] = "MILLIMETERS_OF_WATER";
      EngineeringUnits22[EngineeringUnits22["CENTIMETERS_OF_WATER"] = 57] = "CENTIMETERS_OF_WATER";
      EngineeringUnits22[EngineeringUnits22["INCHES_OF_WATER"] = 58] = "INCHES_OF_WATER";
      EngineeringUnits22[EngineeringUnits22["MILLIMETERS_OF_MERCURY"] = 59] = "MILLIMETERS_OF_MERCURY";
      EngineeringUnits22[EngineeringUnits22["CENTIMETERS_OF_MERCURY"] = 60] = "CENTIMETERS_OF_MERCURY";
      EngineeringUnits22[EngineeringUnits22["INCHES_OF_MERCURY"] = 61] = "INCHES_OF_MERCURY";
      EngineeringUnits22[EngineeringUnits22["DEGREES_CELSIUS"] = 62] = "DEGREES_CELSIUS";
      EngineeringUnits22[EngineeringUnits22["DEGREES_KELVIN"] = 63] = "DEGREES_KELVIN";
      EngineeringUnits22[EngineeringUnits22["DEGREES_KELVIN_PER_HOUR"] = 181] = "DEGREES_KELVIN_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["DEGREES_KELVIN_PER_MINUTE"] = 182] = "DEGREES_KELVIN_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["DEGREES_FAHRENHEIT"] = 64] = "DEGREES_FAHRENHEIT";
      EngineeringUnits22[EngineeringUnits22["DEGREE_DAYS_CELSIUS"] = 65] = "DEGREE_DAYS_CELSIUS";
      EngineeringUnits22[EngineeringUnits22["DEGREE_DAYS_FAHRENHEIT"] = 66] = "DEGREE_DAYS_FAHRENHEIT";
      EngineeringUnits22[EngineeringUnits22["DELTA_DEGREES_FAHRENHEIT"] = 120] = "DELTA_DEGREES_FAHRENHEIT";
      EngineeringUnits22[EngineeringUnits22["DELTA_DEGREES_KELVIN"] = 121] = "DELTA_DEGREES_KELVIN";
      EngineeringUnits22[EngineeringUnits22["YEARS"] = 67] = "YEARS";
      EngineeringUnits22[EngineeringUnits22["MONTHS"] = 68] = "MONTHS";
      EngineeringUnits22[EngineeringUnits22["WEEKS"] = 69] = "WEEKS";
      EngineeringUnits22[EngineeringUnits22["DAYS"] = 70] = "DAYS";
      EngineeringUnits22[EngineeringUnits22["HOURS"] = 71] = "HOURS";
      EngineeringUnits22[EngineeringUnits22["MINUTES"] = 72] = "MINUTES";
      EngineeringUnits22[EngineeringUnits22["SECONDS"] = 73] = "SECONDS";
      EngineeringUnits22[EngineeringUnits22["HUNDREDTHS_SECONDS"] = 158] = "HUNDREDTHS_SECONDS";
      EngineeringUnits22[EngineeringUnits22["MILLISECONDS"] = 159] = "MILLISECONDS";
      EngineeringUnits22[EngineeringUnits22["NEWTON_METERS"] = 160] = "NEWTON_METERS";
      EngineeringUnits22[EngineeringUnits22["MILLIMETERS_PER_SECOND"] = 161] = "MILLIMETERS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["MILLIMETERS_PER_MINUTE"] = 162] = "MILLIMETERS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["METERS_PER_SECOND"] = 74] = "METERS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["METERS_PER_MINUTE"] = 163] = "METERS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["METERS_PER_HOUR"] = 164] = "METERS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["KILOMETERS_PER_HOUR"] = 75] = "KILOMETERS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["FEET_PER_SECOND"] = 76] = "FEET_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["FEET_PER_MINUTE"] = 77] = "FEET_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["MILES_PER_HOUR"] = 78] = "MILES_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["CUBIC_FEET"] = 79] = "CUBIC_FEET";
      EngineeringUnits22[EngineeringUnits22["CUBIC_METERS"] = 80] = "CUBIC_METERS";
      EngineeringUnits22[EngineeringUnits22["IMPERIAL_GALLONS"] = 81] = "IMPERIAL_GALLONS";
      EngineeringUnits22[EngineeringUnits22["MILLILITERS"] = 197] = "MILLILITERS";
      EngineeringUnits22[EngineeringUnits22["LITERS"] = 82] = "LITERS";
      EngineeringUnits22[EngineeringUnits22["US_GALLONS"] = 83] = "US_GALLONS";
      EngineeringUnits22[EngineeringUnits22["CUBIC_FEET_PER_SECOND"] = 142] = "CUBIC_FEET_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["CUBIC_FEET_PER_MINUTE"] = 84] = "CUBIC_FEET_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["MILLION_STANDARD_CUBIC_FEET_PER_MINUTE"] = 254] = "MILLION_STANDARD_CUBIC_FEET_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["CUBIC_FEET_PER_HOUR"] = 191] = "CUBIC_FEET_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["CUBIC_FEET_PER_DAY"] = 248] = "CUBIC_FEET_PER_DAY";
      EngineeringUnits22[EngineeringUnits22["STANDARD_CUBIC_FEET_PER_DAY"] = 47808] = "STANDARD_CUBIC_FEET_PER_DAY";
      EngineeringUnits22[EngineeringUnits22["MILLION_STANDARD_CUBIC_FEET_PER_DAY"] = 47809] = "MILLION_STANDARD_CUBIC_FEET_PER_DAY";
      EngineeringUnits22[EngineeringUnits22["THOUSAND_CUBIC_FEET_PER_DAY"] = 47810] = "THOUSAND_CUBIC_FEET_PER_DAY";
      EngineeringUnits22[EngineeringUnits22["THOUSAND_STANDARD_CUBIC_FEET_PER_DAY"] = 47811] = "THOUSAND_STANDARD_CUBIC_FEET_PER_DAY";
      EngineeringUnits22[EngineeringUnits22["POUNDS_MASS_PER_DAY"] = 47812] = "POUNDS_MASS_PER_DAY";
      EngineeringUnits22[EngineeringUnits22["CUBIC_METERS_PER_SECOND"] = 85] = "CUBIC_METERS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["CUBIC_METERS_PER_MINUTE"] = 165] = "CUBIC_METERS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["CUBIC_METERS_PER_HOUR"] = 135] = "CUBIC_METERS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["CUBIC_METERS_PER_DAY"] = 249] = "CUBIC_METERS_PER_DAY";
      EngineeringUnits22[EngineeringUnits22["IMPERIAL_GALLONS_PER_MINUTE"] = 86] = "IMPERIAL_GALLONS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["MILLILITERS_PER_SECOND"] = 198] = "MILLILITERS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["LITERS_PER_SECOND"] = 87] = "LITERS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["LITERS_PER_MINUTE"] = 88] = "LITERS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["LITERS_PER_HOUR"] = 136] = "LITERS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["US_GALLONS_PER_MINUTE"] = 89] = "US_GALLONS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["US_GALLONS_PER_HOUR"] = 192] = "US_GALLONS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["DEGREES_ANGULAR"] = 90] = "DEGREES_ANGULAR";
      EngineeringUnits22[EngineeringUnits22["DEGREES_CELSIUS_PER_HOUR"] = 91] = "DEGREES_CELSIUS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["DEGREES_CELSIUS_PER_MINUTE"] = 92] = "DEGREES_CELSIUS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["DEGREES_FAHRENHEIT_PER_HOUR"] = 93] = "DEGREES_FAHRENHEIT_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["DEGREES_FAHRENHEIT_PER_MINUTE"] = 94] = "DEGREES_FAHRENHEIT_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["JOULE_SECONDS"] = 183] = "JOULE_SECONDS";
      EngineeringUnits22[EngineeringUnits22["KILOGRAMS_PER_CUBIC_METER"] = 186] = "KILOGRAMS_PER_CUBIC_METER";
      EngineeringUnits22[EngineeringUnits22["KILOWATT_HOURS_PER_SQUARE_METER"] = 137] = "KILOWATT_HOURS_PER_SQUARE_METER";
      EngineeringUnits22[EngineeringUnits22["KILOWATT_HOURS_PER_SQUARE_FOOT"] = 138] = "KILOWATT_HOURS_PER_SQUARE_FOOT";
      EngineeringUnits22[EngineeringUnits22["WATT_HOURS_PER_CUBIC_METER"] = 250] = "WATT_HOURS_PER_CUBIC_METER";
      EngineeringUnits22[EngineeringUnits22["JOULES_PER_CUBIC_METER"] = 251] = "JOULES_PER_CUBIC_METER";
      EngineeringUnits22[EngineeringUnits22["MEGAJOULES_PER_SQUARE_METER"] = 139] = "MEGAJOULES_PER_SQUARE_METER";
      EngineeringUnits22[EngineeringUnits22["MEGAJOULES_PER_SQUARE_FOOT"] = 140] = "MEGAJOULES_PER_SQUARE_FOOT";
      EngineeringUnits22[EngineeringUnits22["MOLE_PERCENT"] = 252] = "MOLE_PERCENT";
      EngineeringUnits22[EngineeringUnits22["NO_UNITS"] = 95] = "NO_UNITS";
      EngineeringUnits22[EngineeringUnits22["NEWTON_SECONDS"] = 187] = "NEWTON_SECONDS";
      EngineeringUnits22[EngineeringUnits22["NEWTONS_PER_METER"] = 188] = "NEWTONS_PER_METER";
      EngineeringUnits22[EngineeringUnits22["PARTS_PER_MILLION"] = 96] = "PARTS_PER_MILLION";
      EngineeringUnits22[EngineeringUnits22["PARTS_PER_BILLION"] = 97] = "PARTS_PER_BILLION";
      EngineeringUnits22[EngineeringUnits22["PASCAL_SECONDS"] = 253] = "PASCAL_SECONDS";
      EngineeringUnits22[EngineeringUnits22["PERCENT"] = 98] = "PERCENT";
      EngineeringUnits22[EngineeringUnits22["PERCENT_OBSCURATION_PER_FOOT"] = 143] = "PERCENT_OBSCURATION_PER_FOOT";
      EngineeringUnits22[EngineeringUnits22["PERCENT_OBSCURATION_PER_METER"] = 144] = "PERCENT_OBSCURATION_PER_METER";
      EngineeringUnits22[EngineeringUnits22["PERCENT_PER_SECOND"] = 99] = "PERCENT_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["PER_MINUTE"] = 100] = "PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["PER_SECOND"] = 101] = "PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["PSI_PER_DEGREE_FAHRENHEIT"] = 102] = "PSI_PER_DEGREE_FAHRENHEIT";
      EngineeringUnits22[EngineeringUnits22["RADIANS"] = 103] = "RADIANS";
      EngineeringUnits22[EngineeringUnits22["RADIANS_PER_SECOND"] = 184] = "RADIANS_PER_SECOND";
      EngineeringUnits22[EngineeringUnits22["REVOLUTIONS_PER_MINUTE"] = 104] = "REVOLUTIONS_PER_MINUTE";
      EngineeringUnits22[EngineeringUnits22["SQUARE_METERS_PER_NEWTON"] = 185] = "SQUARE_METERS_PER_NEWTON";
      EngineeringUnits22[EngineeringUnits22["WATTS_PER_METER_PER_DEGREE_KELVIN"] = 189] = "WATTS_PER_METER_PER_DEGREE_KELVIN";
      EngineeringUnits22[EngineeringUnits22["WATTS_PER_SQUARE_METER_DEGREE_KELVIN"] = 141] = "WATTS_PER_SQUARE_METER_DEGREE_KELVIN";
      EngineeringUnits22[EngineeringUnits22["PER_MILLE"] = 207] = "PER_MILLE";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_GRAM"] = 208] = "GRAMS_PER_GRAM";
      EngineeringUnits22[EngineeringUnits22["KILOGRAMS_PER_KILOGRAM"] = 209] = "KILOGRAMS_PER_KILOGRAM";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_KILOGRAM"] = 210] = "GRAMS_PER_KILOGRAM";
      EngineeringUnits22[EngineeringUnits22["MILLIGRAMS_PER_GRAM"] = 211] = "MILLIGRAMS_PER_GRAM";
      EngineeringUnits22[EngineeringUnits22["MILLIGRAMS_PER_KILOGRAM"] = 212] = "MILLIGRAMS_PER_KILOGRAM";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_MILLILITER"] = 213] = "GRAMS_PER_MILLILITER";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_LITER"] = 214] = "GRAMS_PER_LITER";
      EngineeringUnits22[EngineeringUnits22["MILLIGRAMS_PER_LITER"] = 215] = "MILLIGRAMS_PER_LITER";
      EngineeringUnits22[EngineeringUnits22["MICROGRAMS_PER_LITER"] = 216] = "MICROGRAMS_PER_LITER";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_CUBIC_METER"] = 217] = "GRAMS_PER_CUBIC_METER";
      EngineeringUnits22[EngineeringUnits22["MILLIGRAMS_PER_CUBIC_METER"] = 218] = "MILLIGRAMS_PER_CUBIC_METER";
      EngineeringUnits22[EngineeringUnits22["MICROGRAMS_PER_CUBIC_METER"] = 219] = "MICROGRAMS_PER_CUBIC_METER";
      EngineeringUnits22[EngineeringUnits22["NANOGRAMS_PER_CUBIC_METER"] = 220] = "NANOGRAMS_PER_CUBIC_METER";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_CUBIC_CENTIMETER"] = 221] = "GRAMS_PER_CUBIC_CENTIMETER";
      EngineeringUnits22[EngineeringUnits22["BECQUERELS"] = 222] = "BECQUERELS";
      EngineeringUnits22[EngineeringUnits22["KILOBECQUERELS"] = 223] = "KILOBECQUERELS";
      EngineeringUnits22[EngineeringUnits22["MEGABECQUERELS"] = 224] = "MEGABECQUERELS";
      EngineeringUnits22[EngineeringUnits22["GRAY"] = 225] = "GRAY";
      EngineeringUnits22[EngineeringUnits22["MILLIGRAY"] = 226] = "MILLIGRAY";
      EngineeringUnits22[EngineeringUnits22["MICROGRAY"] = 227] = "MICROGRAY";
      EngineeringUnits22[EngineeringUnits22["SIEVERTS"] = 228] = "SIEVERTS";
      EngineeringUnits22[EngineeringUnits22["MILLISIEVERTS"] = 229] = "MILLISIEVERTS";
      EngineeringUnits22[EngineeringUnits22["MICROSIEVERTS"] = 230] = "MICROSIEVERTS";
      EngineeringUnits22[EngineeringUnits22["MICROSIEVERTS_PER_HOUR"] = 231] = "MICROSIEVERTS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["MILLIREMS"] = 47814] = "MILLIREMS";
      EngineeringUnits22[EngineeringUnits22["MILLIREMS_PER_HOUR"] = 47815] = "MILLIREMS_PER_HOUR";
      EngineeringUnits22[EngineeringUnits22["DECIBELS_A"] = 232] = "DECIBELS_A";
      EngineeringUnits22[EngineeringUnits22["NEPHELOMETRIC_TURBIDITY_UNIT"] = 233] = "NEPHELOMETRIC_TURBIDITY_UNIT";
      EngineeringUnits22[EngineeringUnits22["PH"] = 234] = "PH";
      EngineeringUnits22[EngineeringUnits22["GRAMS_PER_SQUARE_METER"] = 235] = "GRAMS_PER_SQUARE_METER";
      EngineeringUnits22[EngineeringUnits22["MINUTES_PER_DEGREE_KELVIN"] = 236] = "MINUTES_PER_DEGREE_KELVIN";
      return EngineeringUnits22;
    })(EngineeringUnits2 || {});
    var EscalatorFault2 = /* @__PURE__ */ ((EscalatorFault22) => {
      EscalatorFault22[EscalatorFault22["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
      EscalatorFault22[EscalatorFault22["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
      EscalatorFault22[EscalatorFault22["MECHANICAL_COMPONENT_FAULT"] = 2] = "MECHANICAL_COMPONENT_FAULT";
      EscalatorFault22[EscalatorFault22["OVERSPEED_FAULT"] = 3] = "OVERSPEED_FAULT";
      EscalatorFault22[EscalatorFault22["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
      EscalatorFault22[EscalatorFault22["SAFETY_DEVICE_FAULT"] = 5] = "SAFETY_DEVICE_FAULT";
      EscalatorFault22[EscalatorFault22["CONTROLLER_SUPPLY_FAULT"] = 6] = "CONTROLLER_SUPPLY_FAULT";
      EscalatorFault22[EscalatorFault22["DRIVE_TEMPERATURE_EXCEEDED"] = 7] = "DRIVE_TEMPERATURE_EXCEEDED";
      EscalatorFault22[EscalatorFault22["COMB_PLATE_FAULT"] = 8] = "COMB_PLATE_FAULT";
      return EscalatorFault22;
    })(EscalatorFault2 || {});
    var EscalatorMode2 = /* @__PURE__ */ ((EscalatorMode22) => {
      EscalatorMode22[EscalatorMode22["UNKNOWN"] = 0] = "UNKNOWN";
      EscalatorMode22[EscalatorMode22["STOP"] = 1] = "STOP";
      EscalatorMode22[EscalatorMode22["UP"] = 2] = "UP";
      EscalatorMode22[EscalatorMode22["DOWN"] = 3] = "DOWN";
      EscalatorMode22[EscalatorMode22["INSPECTION"] = 4] = "INSPECTION";
      EscalatorMode22[EscalatorMode22["OUT_OF_SERVICE"] = 5] = "OUT_OF_SERVICE";
      return EscalatorMode22;
    })(EscalatorMode2 || {});
    var EscalatorOperationDirection2 = /* @__PURE__ */ ((EscalatorOperationDirection22) => {
      EscalatorOperationDirection22[EscalatorOperationDirection22["UNKNOWN"] = 0] = "UNKNOWN";
      EscalatorOperationDirection22[EscalatorOperationDirection22["STOPPED"] = 1] = "STOPPED";
      EscalatorOperationDirection22[EscalatorOperationDirection22["UP_RATED_SPEED"] = 2] = "UP_RATED_SPEED";
      EscalatorOperationDirection22[EscalatorOperationDirection22["UP_REDUCED_SPEED"] = 3] = "UP_REDUCED_SPEED";
      EscalatorOperationDirection22[EscalatorOperationDirection22["DOWN_RATED_SPEED"] = 4] = "DOWN_RATED_SPEED";
      EscalatorOperationDirection22[EscalatorOperationDirection22["DOWN_REDUCED_SPEED"] = 5] = "DOWN_REDUCED_SPEED";
      return EscalatorOperationDirection22;
    })(EscalatorOperationDirection2 || {});
    var EventState2 = /* @__PURE__ */ ((EventState22) => {
      EventState22[EventState22["NORMAL"] = 0] = "NORMAL";
      EventState22[EventState22["FAULT"] = 1] = "FAULT";
      EventState22[EventState22["OFFNORMAL"] = 2] = "OFFNORMAL";
      EventState22[EventState22["HIGH_LIMIT"] = 3] = "HIGH_LIMIT";
      EventState22[EventState22["LOW_LIMIT"] = 4] = "LOW_LIMIT";
      EventState22[EventState22["LIFE_SAFETY_ALARM"] = 5] = "LIFE_SAFETY_ALARM";
      return EventState22;
    })(EventState2 || {});
    var EventType2 = /* @__PURE__ */ ((EventType22) => {
      EventType22[EventType22["CHANGE_OF_BITSTRING"] = 0] = "CHANGE_OF_BITSTRING";
      EventType22[EventType22["CHANGE_OF_STATE"] = 1] = "CHANGE_OF_STATE";
      EventType22[EventType22["CHANGE_OF_VALUE"] = 2] = "CHANGE_OF_VALUE";
      EventType22[EventType22["COMMAND_FAILURE"] = 3] = "COMMAND_FAILURE";
      EventType22[EventType22["FLOATING_LIMIT"] = 4] = "FLOATING_LIMIT";
      EventType22[EventType22["OUT_OF_RANGE"] = 5] = "OUT_OF_RANGE";
      EventType22[EventType22["COMPLEX_EVENT_TYPE"] = 6] = "COMPLEX_EVENT_TYPE";
      EventType22[EventType22["CHANGE_OF_LIFE_SAFETY"] = 8] = "CHANGE_OF_LIFE_SAFETY";
      EventType22[EventType22["EXTENDED"] = 9] = "EXTENDED";
      EventType22[EventType22["BUFFER_READY"] = 10] = "BUFFER_READY";
      EventType22[EventType22["UNSIGNED_RANGE"] = 11] = "UNSIGNED_RANGE";
      EventType22[EventType22["ACCESS_EVENT"] = 13] = "ACCESS_EVENT";
      EventType22[EventType22["DOUBLE_OUT_OF_RANGE"] = 14] = "DOUBLE_OUT_OF_RANGE";
      EventType22[EventType22["SIGNED_OUT_OF_RANGE"] = 15] = "SIGNED_OUT_OF_RANGE";
      EventType22[EventType22["UNSIGNED_OUT_OF_RANGE"] = 16] = "UNSIGNED_OUT_OF_RANGE";
      EventType22[EventType22["CHANGE_OF_CHARACTERSTRING"] = 17] = "CHANGE_OF_CHARACTERSTRING";
      EventType22[EventType22["CHANGE_OF_STATUS_FLAGS"] = 18] = "CHANGE_OF_STATUS_FLAGS";
      EventType22[EventType22["CHANGE_OF_RELIABILITY"] = 19] = "CHANGE_OF_RELIABILITY";
      EventType22[EventType22["NONE"] = 20] = "NONE";
      EventType22[EventType22["CHANGE_OF_DISCRETE_VALUE"] = 21] = "CHANGE_OF_DISCRETE_VALUE";
      EventType22[EventType22["CHANGE_OF_TIMER"] = 22] = "CHANGE_OF_TIMER";
      return EventType22;
    })(EventType2 || {});
    var FaultType2 = /* @__PURE__ */ ((FaultType22) => {
      FaultType22[FaultType22["NONE"] = 0] = "NONE";
      FaultType22[FaultType22["FAULT_CHARACTERSTRING"] = 1] = "FAULT_CHARACTERSTRING";
      FaultType22[FaultType22["FAULT_EXTENDED"] = 2] = "FAULT_EXTENDED";
      FaultType22[FaultType22["FAULT_LIFE_SAFETY"] = 3] = "FAULT_LIFE_SAFETY";
      FaultType22[FaultType22["FAULT_STATE"] = 4] = "FAULT_STATE";
      FaultType22[FaultType22["FAULT_STATUS_FLAGS"] = 5] = "FAULT_STATUS_FLAGS";
      FaultType22[FaultType22["FAULT_OUT_OF_RANGE"] = 6] = "FAULT_OUT_OF_RANGE";
      FaultType22[FaultType22["FAULT_LISTED"] = 7] = "FAULT_LISTED";
      return FaultType22;
    })(FaultType2 || {});
    var FileAccessMethod2 = /* @__PURE__ */ ((FileAccessMethod22) => {
      FileAccessMethod22[FileAccessMethod22["RECORD_ACCESS"] = 0] = "RECORD_ACCESS";
      FileAccessMethod22[FileAccessMethod22["STREAM_ACCESS"] = 1] = "STREAM_ACCESS";
      return FileAccessMethod22;
    })(FileAccessMethod2 || {});
    var IPMode2 = /* @__PURE__ */ ((IPMode22) => {
      IPMode22[IPMode22["NORMAL"] = 0] = "NORMAL";
      IPMode22[IPMode22["FOREIGN"] = 1] = "FOREIGN";
      IPMode22[IPMode22["BBMD"] = 2] = "BBMD";
      return IPMode22;
    })(IPMode2 || {});
    var LifeSafetyMode2 = /* @__PURE__ */ ((LifeSafetyMode22) => {
      LifeSafetyMode22[LifeSafetyMode22["OFF"] = 0] = "OFF";
      LifeSafetyMode22[LifeSafetyMode22["ON"] = 1] = "ON";
      LifeSafetyMode22[LifeSafetyMode22["TEST"] = 2] = "TEST";
      LifeSafetyMode22[LifeSafetyMode22["MANNED"] = 3] = "MANNED";
      LifeSafetyMode22[LifeSafetyMode22["UNMANNED"] = 4] = "UNMANNED";
      LifeSafetyMode22[LifeSafetyMode22["ARMED"] = 5] = "ARMED";
      LifeSafetyMode22[LifeSafetyMode22["DISARMED"] = 6] = "DISARMED";
      LifeSafetyMode22[LifeSafetyMode22["PREARMED"] = 7] = "PREARMED";
      LifeSafetyMode22[LifeSafetyMode22["SLOW"] = 8] = "SLOW";
      LifeSafetyMode22[LifeSafetyMode22["FAST"] = 9] = "FAST";
      LifeSafetyMode22[LifeSafetyMode22["DISCONNECTED"] = 10] = "DISCONNECTED";
      LifeSafetyMode22[LifeSafetyMode22["ENABLED"] = 11] = "ENABLED";
      LifeSafetyMode22[LifeSafetyMode22["DISABLED"] = 12] = "DISABLED";
      LifeSafetyMode22[LifeSafetyMode22["AUTOMATIC_RELEASE_DISABLED"] = 13] = "AUTOMATIC_RELEASE_DISABLED";
      LifeSafetyMode22[LifeSafetyMode22["DEFAULT"] = 14] = "DEFAULT";
      return LifeSafetyMode22;
    })(LifeSafetyMode2 || {});
    var LifeSafetyOperation2 = /* @__PURE__ */ ((LifeSafetyOperation22) => {
      LifeSafetyOperation22[LifeSafetyOperation22["NONE"] = 0] = "NONE";
      LifeSafetyOperation22[LifeSafetyOperation22["SILENCE"] = 1] = "SILENCE";
      LifeSafetyOperation22[LifeSafetyOperation22["SILENCE_AUDIBLE"] = 2] = "SILENCE_AUDIBLE";
      LifeSafetyOperation22[LifeSafetyOperation22["SILENCE_VISUAL"] = 3] = "SILENCE_VISUAL";
      LifeSafetyOperation22[LifeSafetyOperation22["RESET"] = 4] = "RESET";
      LifeSafetyOperation22[LifeSafetyOperation22["RESET_ALARM"] = 5] = "RESET_ALARM";
      LifeSafetyOperation22[LifeSafetyOperation22["RESET_FAULT"] = 6] = "RESET_FAULT";
      LifeSafetyOperation22[LifeSafetyOperation22["UNSILENCE"] = 7] = "UNSILENCE";
      LifeSafetyOperation22[LifeSafetyOperation22["UNSILENCE_AUDIBLE"] = 8] = "UNSILENCE_AUDIBLE";
      LifeSafetyOperation22[LifeSafetyOperation22["UNSILENCE_VISUAL"] = 9] = "UNSILENCE_VISUAL";
      return LifeSafetyOperation22;
    })(LifeSafetyOperation2 || {});
    var LifeSafetyState2 = /* @__PURE__ */ ((LifeSafetyState22) => {
      LifeSafetyState22[LifeSafetyState22["QUIET"] = 0] = "QUIET";
      LifeSafetyState22[LifeSafetyState22["PRE_ALARM"] = 1] = "PRE_ALARM";
      LifeSafetyState22[LifeSafetyState22["ALARM"] = 2] = "ALARM";
      LifeSafetyState22[LifeSafetyState22["FAULT"] = 3] = "FAULT";
      LifeSafetyState22[LifeSafetyState22["FAULT_PRE_ALARM"] = 4] = "FAULT_PRE_ALARM";
      LifeSafetyState22[LifeSafetyState22["FAULT_ALARM"] = 5] = "FAULT_ALARM";
      LifeSafetyState22[LifeSafetyState22["NOT_READY"] = 6] = "NOT_READY";
      LifeSafetyState22[LifeSafetyState22["ACTIVE"] = 7] = "ACTIVE";
      LifeSafetyState22[LifeSafetyState22["TAMPER"] = 8] = "TAMPER";
      LifeSafetyState22[LifeSafetyState22["TEST_ALARM"] = 9] = "TEST_ALARM";
      LifeSafetyState22[LifeSafetyState22["TEST_ACTIVE"] = 10] = "TEST_ACTIVE";
      LifeSafetyState22[LifeSafetyState22["TEST_FAULT"] = 11] = "TEST_FAULT";
      LifeSafetyState22[LifeSafetyState22["TEST_FAULT_ALARM"] = 12] = "TEST_FAULT_ALARM";
      LifeSafetyState22[LifeSafetyState22["HOLDUP"] = 13] = "HOLDUP";
      LifeSafetyState22[LifeSafetyState22["DURESS"] = 14] = "DURESS";
      LifeSafetyState22[LifeSafetyState22["TAMPER_ALARM"] = 15] = "TAMPER_ALARM";
      LifeSafetyState22[LifeSafetyState22["ABNORMAL"] = 16] = "ABNORMAL";
      LifeSafetyState22[LifeSafetyState22["EMERGENCY_POWER"] = 17] = "EMERGENCY_POWER";
      LifeSafetyState22[LifeSafetyState22["DELAYED"] = 18] = "DELAYED";
      LifeSafetyState22[LifeSafetyState22["BLOCKED"] = 19] = "BLOCKED";
      LifeSafetyState22[LifeSafetyState22["LOCAL_ALARM"] = 20] = "LOCAL_ALARM";
      LifeSafetyState22[LifeSafetyState22["GENERAL_ALARM"] = 21] = "GENERAL_ALARM";
      LifeSafetyState22[LifeSafetyState22["SUPERVISORY"] = 22] = "SUPERVISORY";
      LifeSafetyState22[LifeSafetyState22["TEST_SUPERVISORY"] = 23] = "TEST_SUPERVISORY";
      return LifeSafetyState22;
    })(LifeSafetyState2 || {});
    var LiftCarDirection2 = /* @__PURE__ */ ((LiftCarDirection22) => {
      LiftCarDirection22[LiftCarDirection22["UNKNOWN"] = 0] = "UNKNOWN";
      LiftCarDirection22[LiftCarDirection22["NONE"] = 1] = "NONE";
      LiftCarDirection22[LiftCarDirection22["STOPPED"] = 2] = "STOPPED";
      LiftCarDirection22[LiftCarDirection22["UP"] = 3] = "UP";
      LiftCarDirection22[LiftCarDirection22["DOWN"] = 4] = "DOWN";
      LiftCarDirection22[LiftCarDirection22["UP_AND_DOWN"] = 5] = "UP_AND_DOWN";
      return LiftCarDirection22;
    })(LiftCarDirection2 || {});
    var LiftCarDoorCommand2 = /* @__PURE__ */ ((LiftCarDoorCommand22) => {
      LiftCarDoorCommand22[LiftCarDoorCommand22["NONE"] = 0] = "NONE";
      LiftCarDoorCommand22[LiftCarDoorCommand22["OPEN"] = 1] = "OPEN";
      LiftCarDoorCommand22[LiftCarDoorCommand22["CLOSE"] = 2] = "CLOSE";
      return LiftCarDoorCommand22;
    })(LiftCarDoorCommand2 || {});
    var LiftCarDriveStatus2 = /* @__PURE__ */ ((LiftCarDriveStatus22) => {
      LiftCarDriveStatus22[LiftCarDriveStatus22["UNKNOWN"] = 0] = "UNKNOWN";
      LiftCarDriveStatus22[LiftCarDriveStatus22["STATIONARY"] = 1] = "STATIONARY";
      LiftCarDriveStatus22[LiftCarDriveStatus22["BRAKING"] = 2] = "BRAKING";
      LiftCarDriveStatus22[LiftCarDriveStatus22["ACCELERATE"] = 3] = "ACCELERATE";
      LiftCarDriveStatus22[LiftCarDriveStatus22["DECELERATE"] = 4] = "DECELERATE";
      LiftCarDriveStatus22[LiftCarDriveStatus22["RATED_SPEED"] = 5] = "RATED_SPEED";
      LiftCarDriveStatus22[LiftCarDriveStatus22["SINGLE_FLOOR_JUMP"] = 6] = "SINGLE_FLOOR_JUMP";
      LiftCarDriveStatus22[LiftCarDriveStatus22["TWO_FLOOR_JUMP"] = 7] = "TWO_FLOOR_JUMP";
      LiftCarDriveStatus22[LiftCarDriveStatus22["THREE_FLOOR_JUMP"] = 8] = "THREE_FLOOR_JUMP";
      LiftCarDriveStatus22[LiftCarDriveStatus22["MULTI_FLOOR_JUMP"] = 9] = "MULTI_FLOOR_JUMP";
      return LiftCarDriveStatus22;
    })(LiftCarDriveStatus2 || {});
    var LiftCarMode2 = /* @__PURE__ */ ((LiftCarMode22) => {
      LiftCarMode22[LiftCarMode22["UNKNOWN"] = 0] = "UNKNOWN";
      LiftCarMode22[LiftCarMode22["NORMAL"] = 1] = "NORMAL";
      LiftCarMode22[LiftCarMode22["VIP"] = 2] = "VIP";
      LiftCarMode22[LiftCarMode22["HOMING"] = 3] = "HOMING";
      LiftCarMode22[LiftCarMode22["PARKING"] = 4] = "PARKING";
      LiftCarMode22[LiftCarMode22["ATTENDANT_CONTROL"] = 5] = "ATTENDANT_CONTROL";
      LiftCarMode22[LiftCarMode22["FIREFIGHTER_CONTROL"] = 6] = "FIREFIGHTER_CONTROL";
      LiftCarMode22[LiftCarMode22["EMERGENCY_POWER"] = 7] = "EMERGENCY_POWER";
      LiftCarMode22[LiftCarMode22["INSPECTION"] = 8] = "INSPECTION";
      LiftCarMode22[LiftCarMode22["CABINET_RECALL"] = 9] = "CABINET_RECALL";
      LiftCarMode22[LiftCarMode22["EARTHQUAKE_OPERATION"] = 10] = "EARTHQUAKE_OPERATION";
      LiftCarMode22[LiftCarMode22["FIRE_OPERATION"] = 11] = "FIRE_OPERATION";
      LiftCarMode22[LiftCarMode22["OUT_OF_SERVICE"] = 12] = "OUT_OF_SERVICE";
      LiftCarMode22[LiftCarMode22["OCCUPANT_EVACUATION"] = 13] = "OCCUPANT_EVACUATION";
      return LiftCarMode22;
    })(LiftCarMode2 || {});
    var LiftFault2 = /* @__PURE__ */ ((LiftFault22) => {
      LiftFault22[LiftFault22["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
      LiftFault22[LiftFault22["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
      LiftFault22[LiftFault22["GOVERNOR_AND_SAFETY_GEAR_FAULT"] = 2] = "GOVERNOR_AND_SAFETY_GEAR_FAULT";
      LiftFault22[LiftFault22["LIFT_SHAFT_DEVICE_FAULT"] = 3] = "LIFT_SHAFT_DEVICE_FAULT";
      LiftFault22[LiftFault22["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
      LiftFault22[LiftFault22["SAFETY_INTERLOCK_FAULT"] = 5] = "SAFETY_INTERLOCK_FAULT";
      LiftFault22[LiftFault22["DOOR_CLOSING_FAULT"] = 6] = "DOOR_CLOSING_FAULT";
      LiftFault22[LiftFault22["DOOR_OPENING_FAULT"] = 7] = "DOOR_OPENING_FAULT";
      LiftFault22[LiftFault22["CAR_STOPPED_OUTSIDE_LANDING_ZONE"] = 8] = "CAR_STOPPED_OUTSIDE_LANDING_ZONE";
      LiftFault22[LiftFault22["CALL_BUTTON_STUCK"] = 9] = "CALL_BUTTON_STUCK";
      LiftFault22[LiftFault22["START_FAILURE"] = 10] = "START_FAILURE";
      LiftFault22[LiftFault22["CONTROLLER_SUPPLY_FAULT"] = 11] = "CONTROLLER_SUPPLY_FAULT";
      LiftFault22[LiftFault22["SELF_TEST_FAILURE"] = 12] = "SELF_TEST_FAILURE";
      LiftFault22[LiftFault22["RUNTIME_LIMIT_EXCEEDED"] = 13] = "RUNTIME_LIMIT_EXCEEDED";
      LiftFault22[LiftFault22["POSITION_LOST"] = 14] = "POSITION_LOST";
      LiftFault22[LiftFault22["DRIVE_TEMPERATURE_EXCEEDED"] = 15] = "DRIVE_TEMPERATURE_EXCEEDED";
      LiftFault22[LiftFault22["LOAD_MEASUREMENT_FAULT"] = 16] = "LOAD_MEASUREMENT_FAULT";
      return LiftFault22;
    })(LiftFault2 || {});
    var LiftGroupMode2 = /* @__PURE__ */ ((LiftGroupMode22) => {
      LiftGroupMode22[LiftGroupMode22["UNKNOWN"] = 0] = "UNKNOWN";
      LiftGroupMode22[LiftGroupMode22["NORMAL"] = 1] = "NORMAL";
      LiftGroupMode22[LiftGroupMode22["DOWN_PEAK"] = 2] = "DOWN_PEAK";
      LiftGroupMode22[LiftGroupMode22["TWO_WAY"] = 3] = "TWO_WAY";
      LiftGroupMode22[LiftGroupMode22["FOUR_WAY"] = 4] = "FOUR_WAY";
      LiftGroupMode22[LiftGroupMode22["EMERGENCY_POWER"] = 5] = "EMERGENCY_POWER";
      LiftGroupMode22[LiftGroupMode22["UP_PEAK"] = 6] = "UP_PEAK";
      return LiftGroupMode22;
    })(LiftGroupMode2 || {});
    var LightingInProgress2 = /* @__PURE__ */ ((LightingInProgress22) => {
      LightingInProgress22[LightingInProgress22["IDLE"] = 0] = "IDLE";
      LightingInProgress22[LightingInProgress22["FADE_ACTIVE"] = 1] = "FADE_ACTIVE";
      LightingInProgress22[LightingInProgress22["RAMP_ACTIVE"] = 2] = "RAMP_ACTIVE";
      LightingInProgress22[LightingInProgress22["NOT_CONTROLLED"] = 3] = "NOT_CONTROLLED";
      LightingInProgress22[LightingInProgress22["OTHER"] = 4] = "OTHER";
      return LightingInProgress22;
    })(LightingInProgress2 || {});
    var LightingOperation2 = /* @__PURE__ */ ((LightingOperation22) => {
      LightingOperation22[LightingOperation22["NONE"] = 0] = "NONE";
      LightingOperation22[LightingOperation22["FADE_TO"] = 1] = "FADE_TO";
      LightingOperation22[LightingOperation22["RAMP_TO"] = 2] = "RAMP_TO";
      LightingOperation22[LightingOperation22["STEP_UP"] = 3] = "STEP_UP";
      LightingOperation22[LightingOperation22["STEP_DOWN"] = 4] = "STEP_DOWN";
      LightingOperation22[LightingOperation22["STEP_ON"] = 5] = "STEP_ON";
      LightingOperation22[LightingOperation22["STEP_OFF"] = 6] = "STEP_OFF";
      LightingOperation22[LightingOperation22["WARN"] = 7] = "WARN";
      LightingOperation22[LightingOperation22["WARN_OFF"] = 8] = "WARN_OFF";
      LightingOperation22[LightingOperation22["WARN_RELINQUISH"] = 9] = "WARN_RELINQUISH";
      LightingOperation22[LightingOperation22["STOP"] = 10] = "STOP";
      return LightingOperation22;
    })(LightingOperation2 || {});
    var LightingTransition2 = /* @__PURE__ */ ((LightingTransition22) => {
      LightingTransition22[LightingTransition22["NONE"] = 0] = "NONE";
      LightingTransition22[LightingTransition22["FADE"] = 1] = "FADE";
      LightingTransition22[LightingTransition22["RAMP"] = 2] = "RAMP";
      return LightingTransition22;
    })(LightingTransition2 || {});
    var LockStatus2 = /* @__PURE__ */ ((LockStatus22) => {
      LockStatus22[LockStatus22["LOCKED"] = 0] = "LOCKED";
      LockStatus22[LockStatus22["UNLOCKED"] = 1] = "UNLOCKED";
      LockStatus22[LockStatus22["LOCK_FAULT"] = 2] = "LOCK_FAULT";
      LockStatus22[LockStatus22["UNUSED"] = 3] = "UNUSED";
      LockStatus22[LockStatus22["UNKNOWN"] = 4] = "UNKNOWN";
      return LockStatus22;
    })(LockStatus2 || {});
    var LoggingType2 = /* @__PURE__ */ ((LoggingType22) => {
      LoggingType22[LoggingType22["POLLED"] = 0] = "POLLED";
      LoggingType22[LoggingType22["COV"] = 1] = "COV";
      LoggingType22[LoggingType22["TRIGGERED"] = 2] = "TRIGGERED";
      return LoggingType22;
    })(LoggingType2 || {});
    var Maintenance2 = /* @__PURE__ */ ((Maintenance22) => {
      Maintenance22[Maintenance22["NONE"] = 0] = "NONE";
      Maintenance22[Maintenance22["PERIODIC_TEST"] = 1] = "PERIODIC_TEST";
      Maintenance22[Maintenance22["NEED_SERVICE_OPERATIONAL"] = 2] = "NEED_SERVICE_OPERATIONAL";
      Maintenance22[Maintenance22["NEED_SERVICE_INOPERATIVE"] = 3] = "NEED_SERVICE_INOPERATIVE";
      return Maintenance22;
    })(Maintenance2 || {});
    var NetworkNumberQuality2 = /* @__PURE__ */ ((NetworkNumberQuality22) => {
      NetworkNumberQuality22[NetworkNumberQuality22["UNKNOWN"] = 0] = "UNKNOWN";
      NetworkNumberQuality22[NetworkNumberQuality22["LEARNED"] = 1] = "LEARNED";
      NetworkNumberQuality22[NetworkNumberQuality22["LEARNED_CONFIGURED"] = 2] = "LEARNED_CONFIGURED";
      NetworkNumberQuality22[NetworkNumberQuality22["CONFIGURED"] = 3] = "CONFIGURED";
      return NetworkNumberQuality22;
    })(NetworkNumberQuality2 || {});
    var NetworkPortCommand2 = /* @__PURE__ */ ((NetworkPortCommand22) => {
      NetworkPortCommand22[NetworkPortCommand22["IDLE"] = 0] = "IDLE";
      NetworkPortCommand22[NetworkPortCommand22["DISCARD_CHANGES"] = 1] = "DISCARD_CHANGES";
      NetworkPortCommand22[NetworkPortCommand22["RENEW_FD_REGISTRATION"] = 2] = "RENEW_FD_REGISTRATION";
      NetworkPortCommand22[NetworkPortCommand22["RESTART_SLAVE_DISCOVERY"] = 3] = "RESTART_SLAVE_DISCOVERY";
      NetworkPortCommand22[NetworkPortCommand22["RENEW_DHCP"] = 4] = "RENEW_DHCP";
      NetworkPortCommand22[NetworkPortCommand22["RESTART_AUTONEGOTIATION"] = 5] = "RESTART_AUTONEGOTIATION";
      NetworkPortCommand22[NetworkPortCommand22["DISCONNECT"] = 6] = "DISCONNECT";
      NetworkPortCommand22[NetworkPortCommand22["RESTART_PORT"] = 7] = "RESTART_PORT";
      return NetworkPortCommand22;
    })(NetworkPortCommand2 || {});
    var NetworkType2 = /* @__PURE__ */ ((NetworkType22) => {
      NetworkType22[NetworkType22["ETHERNET"] = 0] = "ETHERNET";
      NetworkType22[NetworkType22["ARCNET"] = 1] = "ARCNET";
      NetworkType22[NetworkType22["MSTP"] = 2] = "MSTP";
      NetworkType22[NetworkType22["PTP"] = 3] = "PTP";
      NetworkType22[NetworkType22["LONTALK"] = 4] = "LONTALK";
      NetworkType22[NetworkType22["IPV4"] = 5] = "IPV4";
      NetworkType22[NetworkType22["ZIGBEE"] = 6] = "ZIGBEE";
      NetworkType22[NetworkType22["VIRTUAL"] = 7] = "VIRTUAL";
      NetworkType22[NetworkType22["IPV6"] = 9] = "IPV6";
      NetworkType22[NetworkType22["SERIAL"] = 10] = "SERIAL";
      return NetworkType22;
    })(NetworkType2 || {});
    var NodeType2 = /* @__PURE__ */ ((NodeType22) => {
      NodeType22[NodeType22["UNKNOWN"] = 0] = "UNKNOWN";
      NodeType22[NodeType22["SYSTEM"] = 1] = "SYSTEM";
      NodeType22[NodeType22["NETWORK"] = 2] = "NETWORK";
      NodeType22[NodeType22["DEVICE"] = 3] = "DEVICE";
      NodeType22[NodeType22["ORGANIZATIONAL"] = 4] = "ORGANIZATIONAL";
      NodeType22[NodeType22["AREA"] = 5] = "AREA";
      NodeType22[NodeType22["EQUIPMENT"] = 6] = "EQUIPMENT";
      NodeType22[NodeType22["POINT"] = 7] = "POINT";
      NodeType22[NodeType22["COLLECTION"] = 8] = "COLLECTION";
      NodeType22[NodeType22["PROPERTY"] = 9] = "PROPERTY";
      NodeType22[NodeType22["FUNCTIONAL"] = 10] = "FUNCTIONAL";
      NodeType22[NodeType22["OTHER"] = 11] = "OTHER";
      NodeType22[NodeType22["SUBSYSTEM"] = 12] = "SUBSYSTEM";
      NodeType22[NodeType22["BUILDING"] = 13] = "BUILDING";
      NodeType22[NodeType22["FLOOR"] = 14] = "FLOOR";
      NodeType22[NodeType22["SECTION"] = 15] = "SECTION";
      NodeType22[NodeType22["MODULE"] = 16] = "MODULE";
      NodeType22[NodeType22["TREE"] = 17] = "TREE";
      NodeType22[NodeType22["MEMBER"] = 18] = "MEMBER";
      NodeType22[NodeType22["PROTOCOL"] = 19] = "PROTOCOL";
      NodeType22[NodeType22["ROOM"] = 20] = "ROOM";
      NodeType22[NodeType22["ZONE"] = 21] = "ZONE";
      return NodeType22;
    })(NodeType2 || {});
    var NotifyType2 = /* @__PURE__ */ ((NotifyType22) => {
      NotifyType22[NotifyType22["ALARM"] = 0] = "ALARM";
      NotifyType22[NotifyType22["EVENT"] = 1] = "EVENT";
      NotifyType22[NotifyType22["ACK_NOTIFICATION"] = 2] = "ACK_NOTIFICATION";
      return NotifyType22;
    })(NotifyType2 || {});
    var ObjectType2 = /* @__PURE__ */ ((ObjectType22) => {
      ObjectType22[ObjectType22["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
      ObjectType22[ObjectType22["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
      ObjectType22[ObjectType22["ACCESS_POINT"] = 33] = "ACCESS_POINT";
      ObjectType22[ObjectType22["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
      ObjectType22[ObjectType22["ACCESS_USER"] = 35] = "ACCESS_USER";
      ObjectType22[ObjectType22["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
      ObjectType22[ObjectType22["ACCUMULATOR"] = 23] = "ACCUMULATOR";
      ObjectType22[ObjectType22["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
      ObjectType22[ObjectType22["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
      ObjectType22[ObjectType22["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
      ObjectType22[ObjectType22["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
      ObjectType22[ObjectType22["AVERAGING"] = 18] = "AVERAGING";
      ObjectType22[ObjectType22["BINARY_INPUT"] = 3] = "BINARY_INPUT";
      ObjectType22[ObjectType22["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
      ObjectType22[ObjectType22["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
      ObjectType22[ObjectType22["BINARY_VALUE"] = 5] = "BINARY_VALUE";
      ObjectType22[ObjectType22["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
      ObjectType22[ObjectType22["CALENDAR"] = 6] = "CALENDAR";
      ObjectType22[ObjectType22["CHANNEL"] = 53] = "CHANNEL";
      ObjectType22[ObjectType22["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
      ObjectType22[ObjectType22["COMMAND"] = 7] = "COMMAND";
      ObjectType22[ObjectType22["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
      ObjectType22[ObjectType22["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
      ObjectType22[ObjectType22["DATE_VALUE"] = 42] = "DATE_VALUE";
      ObjectType22[ObjectType22["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
      ObjectType22[ObjectType22["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
      ObjectType22[ObjectType22["DEVICE"] = 8] = "DEVICE";
      ObjectType22[ObjectType22["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
      ObjectType22[ObjectType22["ESCALATOR"] = 58] = "ESCALATOR";
      ObjectType22[ObjectType22["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
      ObjectType22[ObjectType22["EVENT_LOG"] = 25] = "EVENT_LOG";
      ObjectType22[ObjectType22["FILE"] = 10] = "FILE";
      ObjectType22[ObjectType22["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
      ObjectType22[ObjectType22["GROUP"] = 11] = "GROUP";
      ObjectType22[ObjectType22["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
      ObjectType22[ObjectType22["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
      ObjectType22[ObjectType22["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
      ObjectType22[ObjectType22["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
      ObjectType22[ObjectType22["LIFT"] = 59] = "LIFT";
      ObjectType22[ObjectType22["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
      ObjectType22[ObjectType22["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
      ObjectType22[ObjectType22["LOOP"] = 12] = "LOOP";
      ObjectType22[ObjectType22["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
      ObjectType22[ObjectType22["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
      ObjectType22[ObjectType22["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
      ObjectType22[ObjectType22["NETWORK_PORT"] = 56] = "NETWORK_PORT";
      ObjectType22[ObjectType22["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
      ObjectType22[ObjectType22["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
      ObjectType22[ObjectType22["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
      ObjectType22[ObjectType22["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
      ObjectType22[ObjectType22["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
      ObjectType22[ObjectType22["PROGRAM"] = 16] = "PROGRAM";
      ObjectType22[ObjectType22["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
      ObjectType22[ObjectType22["SCHEDULE"] = 17] = "SCHEDULE";
      ObjectType22[ObjectType22["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
      ObjectType22[ObjectType22["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
      ObjectType22[ObjectType22["TIME_VALUE"] = 50] = "TIME_VALUE";
      ObjectType22[ObjectType22["TIMER"] = 31] = "TIMER";
      ObjectType22[ObjectType22["TREND_LOG"] = 20] = "TREND_LOG";
      ObjectType22[ObjectType22["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
      return ObjectType22;
    })(ObjectType2 || {});
    var Polarity2 = /* @__PURE__ */ ((Polarity22) => {
      Polarity22[Polarity22["NORMAL"] = 0] = "NORMAL";
      Polarity22[Polarity22["REVERSE"] = 1] = "REVERSE";
      return Polarity22;
    })(Polarity2 || {});
    var ProgramError2 = /* @__PURE__ */ ((ProgramError22) => {
      ProgramError22[ProgramError22["NORMAL"] = 0] = "NORMAL";
      ProgramError22[ProgramError22["LOAD_FAILED"] = 1] = "LOAD_FAILED";
      ProgramError22[ProgramError22["INTERNAL"] = 2] = "INTERNAL";
      ProgramError22[ProgramError22["PROGRAM"] = 3] = "PROGRAM";
      ProgramError22[ProgramError22["OTHER"] = 4] = "OTHER";
      return ProgramError22;
    })(ProgramError2 || {});
    var ProgramRequest2 = /* @__PURE__ */ ((ProgramRequest22) => {
      ProgramRequest22[ProgramRequest22["READY"] = 0] = "READY";
      ProgramRequest22[ProgramRequest22["LOAD"] = 1] = "LOAD";
      ProgramRequest22[ProgramRequest22["RUN"] = 2] = "RUN";
      ProgramRequest22[ProgramRequest22["HALT"] = 3] = "HALT";
      ProgramRequest22[ProgramRequest22["RESTART"] = 4] = "RESTART";
      ProgramRequest22[ProgramRequest22["UNLOAD"] = 5] = "UNLOAD";
      return ProgramRequest22;
    })(ProgramRequest2 || {});
    var ProgramState2 = /* @__PURE__ */ ((ProgramState22) => {
      ProgramState22[ProgramState22["IDLE"] = 0] = "IDLE";
      ProgramState22[ProgramState22["LOADING"] = 1] = "LOADING";
      ProgramState22[ProgramState22["RUNNING"] = 2] = "RUNNING";
      ProgramState22[ProgramState22["WAITING"] = 3] = "WAITING";
      ProgramState22[ProgramState22["HALTED"] = 4] = "HALTED";
      ProgramState22[ProgramState22["UNLOADING"] = 5] = "UNLOADING";
      return ProgramState22;
    })(ProgramState2 || {});
    var PropertyIdentifier2 = /* @__PURE__ */ ((PropertyIdentifier22) => {
      PropertyIdentifier22[PropertyIdentifier22["ABSENTEE_LIMIT"] = 244] = "ABSENTEE_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["ACCEPTED_MODES"] = 175] = "ACCEPTED_MODES";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_ALARM_EVENTS"] = 245] = "ACCESS_ALARM_EVENTS";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_DOORS"] = 246] = "ACCESS_DOORS";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_EVENT"] = 247] = "ACCESS_EVENT";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_EVENT_AUTHENTICATION_FACTOR"] = 248] = "ACCESS_EVENT_AUTHENTICATION_FACTOR";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_EVENT_CREDENTIAL"] = 249] = "ACCESS_EVENT_CREDENTIAL";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_EVENT_TAG"] = 322] = "ACCESS_EVENT_TAG";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_EVENT_TIME"] = 250] = "ACCESS_EVENT_TIME";
      PropertyIdentifier22[PropertyIdentifier22["ACCESS_TRANSACTION_EVENTS"] = 251] = "ACCESS_TRANSACTION_EVENTS";
      PropertyIdentifier22[PropertyIdentifier22["ACCOMPANIMENT"] = 252] = "ACCOMPANIMENT";
      PropertyIdentifier22[PropertyIdentifier22["ACCOMPANIMENT_TIME"] = 253] = "ACCOMPANIMENT_TIME";
      PropertyIdentifier22[PropertyIdentifier22["ACK_REQUIRED"] = 1] = "ACK_REQUIRED";
      PropertyIdentifier22[PropertyIdentifier22["ACKED_TRANSITIONS"] = 0] = "ACKED_TRANSITIONS";
      PropertyIdentifier22[PropertyIdentifier22["ACTION"] = 2] = "ACTION";
      PropertyIdentifier22[PropertyIdentifier22["ACTION_TEXT"] = 3] = "ACTION_TEXT";
      PropertyIdentifier22[PropertyIdentifier22["ACTIVATION_TIME"] = 254] = "ACTIVATION_TIME";
      PropertyIdentifier22[PropertyIdentifier22["ACTIVE_AUTHENTICATION_POLICY"] = 255] = "ACTIVE_AUTHENTICATION_POLICY";
      PropertyIdentifier22[PropertyIdentifier22["ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS"] = 481] = "ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS";
      PropertyIdentifier22[PropertyIdentifier22["ACTIVE_COV_SUBSCRIPTIONS"] = 152] = "ACTIVE_COV_SUBSCRIPTIONS";
      PropertyIdentifier22[PropertyIdentifier22["ACTIVE_TEXT"] = 4] = "ACTIVE_TEXT";
      PropertyIdentifier22[PropertyIdentifier22["ACTIVE_VT_SESSIONS"] = 5] = "ACTIVE_VT_SESSIONS";
      PropertyIdentifier22[PropertyIdentifier22["ACTUAL_SHED_LEVEL"] = 212] = "ACTUAL_SHED_LEVEL";
      PropertyIdentifier22[PropertyIdentifier22["ADJUST_VALUE"] = 176] = "ADJUST_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["ALARM_VALUE"] = 6] = "ALARM_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["ALARM_VALUES"] = 7] = "ALARM_VALUES";
      PropertyIdentifier22[PropertyIdentifier22["ALIGN_INTERVALS"] = 193] = "ALIGN_INTERVALS";
      PropertyIdentifier22[PropertyIdentifier22["ALL"] = 8] = "ALL";
      PropertyIdentifier22[PropertyIdentifier22["ALL_WRITES_SUCCESSFUL"] = 9] = "ALL_WRITES_SUCCESSFUL";
      PropertyIdentifier22[PropertyIdentifier22["ALLOW_GROUP_DELAY_INHIBIT"] = 365] = "ALLOW_GROUP_DELAY_INHIBIT";
      PropertyIdentifier22[PropertyIdentifier22["APDU_LENGTH"] = 399] = "APDU_LENGTH";
      PropertyIdentifier22[PropertyIdentifier22["APDU_SEGMENT_TIMEOUT"] = 10] = "APDU_SEGMENT_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["APDU_TIMEOUT"] = 11] = "APDU_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["APPLICATION_SOFTWARE_VERSION"] = 12] = "APPLICATION_SOFTWARE_VERSION";
      PropertyIdentifier22[PropertyIdentifier22["ARCHIVE"] = 13] = "ARCHIVE";
      PropertyIdentifier22[PropertyIdentifier22["ASSIGNED_ACCESS_RIGHTS"] = 256] = "ASSIGNED_ACCESS_RIGHTS";
      PropertyIdentifier22[PropertyIdentifier22["ASSIGNED_LANDING_CALLS"] = 447] = "ASSIGNED_LANDING_CALLS";
      PropertyIdentifier22[PropertyIdentifier22["ATTEMPTED_SAMPLES"] = 124] = "ATTEMPTED_SAMPLES";
      PropertyIdentifier22[PropertyIdentifier22["AUTHENTICATION_FACTORS"] = 257] = "AUTHENTICATION_FACTORS";
      PropertyIdentifier22[PropertyIdentifier22["AUTHENTICATION_POLICY_LIST"] = 258] = "AUTHENTICATION_POLICY_LIST";
      PropertyIdentifier22[PropertyIdentifier22["AUTHENTICATION_POLICY_NAMES"] = 259] = "AUTHENTICATION_POLICY_NAMES";
      PropertyIdentifier22[PropertyIdentifier22["AUTHENTICATION_STATUS"] = 260] = "AUTHENTICATION_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["AUTHORIZATION_EXEMPTIONS"] = 364] = "AUTHORIZATION_EXEMPTIONS";
      PropertyIdentifier22[PropertyIdentifier22["AUTHORIZATION_MODE"] = 261] = "AUTHORIZATION_MODE";
      PropertyIdentifier22[PropertyIdentifier22["AUTO_SLAVE_DISCOVERY"] = 169] = "AUTO_SLAVE_DISCOVERY";
      PropertyIdentifier22[PropertyIdentifier22["AVERAGE_VALUE"] = 125] = "AVERAGE_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["BACKUP_AND_RESTORE_STATE"] = 338] = "BACKUP_AND_RESTORE_STATE";
      PropertyIdentifier22[PropertyIdentifier22["BACKUP_FAILURE_TIMEOUT"] = 153] = "BACKUP_FAILURE_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["BACKUP_PREPARATION_TIME"] = 339] = "BACKUP_PREPARATION_TIME";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IP_GLOBAL_ADDRESS"] = 407] = "BACNET_IP_GLOBAL_ADDRESS";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IP_MODE"] = 408] = "BACNET_IP_MODE";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IP_MULTICAST_ADDRESS"] = 409] = "BACNET_IP_MULTICAST_ADDRESS";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IP_NAT_TRAVERSAL"] = 410] = "BACNET_IP_NAT_TRAVERSAL";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IP_UDP_PORT"] = 412] = "BACNET_IP_UDP_PORT";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IPV6_MODE"] = 435] = "BACNET_IPV6_MODE";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IPV6_UDP_PORT"] = 438] = "BACNET_IPV6_UDP_PORT";
      PropertyIdentifier22[PropertyIdentifier22["BACNET_IPV6_MULTICAST_ADDRESS"] = 440] = "BACNET_IPV6_MULTICAST_ADDRESS";
      PropertyIdentifier22[PropertyIdentifier22["BBMD_ACCEPT_FD_REGISTRATIONS"] = 413] = "BBMD_ACCEPT_FD_REGISTRATIONS";
      PropertyIdentifier22[PropertyIdentifier22["BBMD_BROADCAST_DISTRIBUTION_TABLE"] = 414] = "BBMD_BROADCAST_DISTRIBUTION_TABLE";
      PropertyIdentifier22[PropertyIdentifier22["BBMD_FOREIGN_DEVICE_TABLE"] = 415] = "BBMD_FOREIGN_DEVICE_TABLE";
      PropertyIdentifier22[PropertyIdentifier22["BELONGS_TO"] = 262] = "BELONGS_TO";
      PropertyIdentifier22[PropertyIdentifier22["BIAS"] = 14] = "BIAS";
      PropertyIdentifier22[PropertyIdentifier22["BIT_MASK"] = 342] = "BIT_MASK";
      PropertyIdentifier22[PropertyIdentifier22["BIT_TEXT"] = 343] = "BIT_TEXT";
      PropertyIdentifier22[PropertyIdentifier22["BLINK_WARN_ENABLE"] = 373] = "BLINK_WARN_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["BUFFER_SIZE"] = 126] = "BUFFER_SIZE";
      PropertyIdentifier22[PropertyIdentifier22["CAR_ASSIGNED_DIRECTION"] = 448] = "CAR_ASSIGNED_DIRECTION";
      PropertyIdentifier22[PropertyIdentifier22["CAR_DOOR_COMMAND"] = 449] = "CAR_DOOR_COMMAND";
      PropertyIdentifier22[PropertyIdentifier22["CAR_DOOR_STATUS"] = 450] = "CAR_DOOR_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["CAR_DOOR_TEXT"] = 451] = "CAR_DOOR_TEXT";
      PropertyIdentifier22[PropertyIdentifier22["CAR_DOOR_ZONE"] = 452] = "CAR_DOOR_ZONE";
      PropertyIdentifier22[PropertyIdentifier22["CAR_DRIVE_STATUS"] = 453] = "CAR_DRIVE_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["CAR_LOAD"] = 454] = "CAR_LOAD";
      PropertyIdentifier22[PropertyIdentifier22["CAR_LOAD_UNITS"] = 455] = "CAR_LOAD_UNITS";
      PropertyIdentifier22[PropertyIdentifier22["CAR_MODE"] = 456] = "CAR_MODE";
      PropertyIdentifier22[PropertyIdentifier22["CAR_MOVING_DIRECTION"] = 457] = "CAR_MOVING_DIRECTION";
      PropertyIdentifier22[PropertyIdentifier22["CAR_POSITION"] = 458] = "CAR_POSITION";
      PropertyIdentifier22[PropertyIdentifier22["CHANGE_OF_STATE_COUNT"] = 15] = "CHANGE_OF_STATE_COUNT";
      PropertyIdentifier22[PropertyIdentifier22["CHANGE_OF_STATE_TIME"] = 16] = "CHANGE_OF_STATE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["CHANGES_PENDING"] = 416] = "CHANGES_PENDING";
      PropertyIdentifier22[PropertyIdentifier22["CHANNEL_NUMBER"] = 366] = "CHANNEL_NUMBER";
      PropertyIdentifier22[PropertyIdentifier22["CLIENT_COV_INCREMENT"] = 127] = "CLIENT_COV_INCREMENT";
      PropertyIdentifier22[PropertyIdentifier22["COMMAND"] = 417] = "COMMAND";
      PropertyIdentifier22[PropertyIdentifier22["COMMAND_TIME_ARRAY"] = 430] = "COMMAND_TIME_ARRAY";
      PropertyIdentifier22[PropertyIdentifier22["CONFIGURATION_FILES"] = 154] = "CONFIGURATION_FILES";
      PropertyIdentifier22[PropertyIdentifier22["CONTROL_GROUPS"] = 367] = "CONTROL_GROUPS";
      PropertyIdentifier22[PropertyIdentifier22["CONTROLLED_VARIABLE_REFERENCE"] = 19] = "CONTROLLED_VARIABLE_REFERENCE";
      PropertyIdentifier22[PropertyIdentifier22["CONTROLLED_VARIABLE_UNITS"] = 20] = "CONTROLLED_VARIABLE_UNITS";
      PropertyIdentifier22[PropertyIdentifier22["CONTROLLED_VARIABLE_VALUE"] = 21] = "CONTROLLED_VARIABLE_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["COUNT"] = 177] = "COUNT";
      PropertyIdentifier22[PropertyIdentifier22["COUNT_BEFORE_CHANGE"] = 178] = "COUNT_BEFORE_CHANGE";
      PropertyIdentifier22[PropertyIdentifier22["COUNT_CHANGE_TIME"] = 179] = "COUNT_CHANGE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["COV_INCREMENT"] = 22] = "COV_INCREMENT";
      PropertyIdentifier22[PropertyIdentifier22["COV_PERIOD"] = 180] = "COV_PERIOD";
      PropertyIdentifier22[PropertyIdentifier22["COV_RESUBSCRIPTION_INTERVAL"] = 128] = "COV_RESUBSCRIPTION_INTERVAL";
      PropertyIdentifier22[PropertyIdentifier22["COVU_PERIOD"] = 349] = "COVU_PERIOD";
      PropertyIdentifier22[PropertyIdentifier22["COVU_RECIPIENTS"] = 350] = "COVU_RECIPIENTS";
      PropertyIdentifier22[PropertyIdentifier22["CREDENTIAL_DISABLE"] = 263] = "CREDENTIAL_DISABLE";
      PropertyIdentifier22[PropertyIdentifier22["CREDENTIAL_STATUS"] = 264] = "CREDENTIAL_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["CREDENTIALS"] = 265] = "CREDENTIALS";
      PropertyIdentifier22[PropertyIdentifier22["CREDENTIALS_IN_ZONE"] = 266] = "CREDENTIALS_IN_ZONE";
      PropertyIdentifier22[PropertyIdentifier22["CURRENT_COMMAND_PRIORITY"] = 431] = "CURRENT_COMMAND_PRIORITY";
      PropertyIdentifier22[PropertyIdentifier22["DATABASE_REVISION"] = 155] = "DATABASE_REVISION";
      PropertyIdentifier22[PropertyIdentifier22["DATE_LIST"] = 23] = "DATE_LIST";
      PropertyIdentifier22[PropertyIdentifier22["DAYLIGHT_SAVINGS_STATUS"] = 24] = "DAYLIGHT_SAVINGS_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["DAYS_REMAINING"] = 267] = "DAYS_REMAINING";
      PropertyIdentifier22[PropertyIdentifier22["DEADBAND"] = 25] = "DEADBAND";
      PropertyIdentifier22[PropertyIdentifier22["DEFAULT_FADE_TIME"] = 374] = "DEFAULT_FADE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["DEFAULT_RAMP_RATE"] = 375] = "DEFAULT_RAMP_RATE";
      PropertyIdentifier22[PropertyIdentifier22["DEFAULT_STEP_INCREMENT"] = 376] = "DEFAULT_STEP_INCREMENT";
      PropertyIdentifier22[PropertyIdentifier22["DEFAULT_SUBORDINATE_RELATIONSHIP"] = 490] = "DEFAULT_SUBORDINATE_RELATIONSHIP";
      PropertyIdentifier22[PropertyIdentifier22["DEFAULT_TIMEOUT"] = 393] = "DEFAULT_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["DEPLOYED_PROFILE_LOCATION"] = 484] = "DEPLOYED_PROFILE_LOCATION";
      PropertyIdentifier22[PropertyIdentifier22["DERIVATIVE_CONSTANT"] = 26] = "DERIVATIVE_CONSTANT";
      PropertyIdentifier22[PropertyIdentifier22["DERIVATIVE_CONSTANT_UNITS"] = 27] = "DERIVATIVE_CONSTANT_UNITS";
      PropertyIdentifier22[PropertyIdentifier22["DESCRIPTION"] = 28] = "DESCRIPTION";
      PropertyIdentifier22[PropertyIdentifier22["DESCRIPTION_OF_HALT"] = 29] = "DESCRIPTION_OF_HALT";
      PropertyIdentifier22[PropertyIdentifier22["DEVICE_ADDRESS_BINDING"] = 30] = "DEVICE_ADDRESS_BINDING";
      PropertyIdentifier22[PropertyIdentifier22["DEVICE_TYPE"] = 31] = "DEVICE_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["DIRECT_READING"] = 156] = "DIRECT_READING";
      PropertyIdentifier22[PropertyIdentifier22["DISTRIBUTION_KEY_REVISION"] = 328] = "DISTRIBUTION_KEY_REVISION";
      PropertyIdentifier22[PropertyIdentifier22["DO_NOT_HIDE"] = 329] = "DO_NOT_HIDE";
      PropertyIdentifier22[PropertyIdentifier22["DOOR_ALARM_STATE"] = 226] = "DOOR_ALARM_STATE";
      PropertyIdentifier22[PropertyIdentifier22["DOOR_EXTENDED_PULSE_TIME"] = 227] = "DOOR_EXTENDED_PULSE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["DOOR_MEMBERS"] = 228] = "DOOR_MEMBERS";
      PropertyIdentifier22[PropertyIdentifier22["DOOR_OPEN_TOO_LONG_TIME"] = 229] = "DOOR_OPEN_TOO_LONG_TIME";
      PropertyIdentifier22[PropertyIdentifier22["DOOR_PULSE_TIME"] = 230] = "DOOR_PULSE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["DOOR_STATUS"] = 231] = "DOOR_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["DOOR_UNLOCK_DELAY_TIME"] = 232] = "DOOR_UNLOCK_DELAY_TIME";
      PropertyIdentifier22[PropertyIdentifier22["DUTY_WINDOW"] = 213] = "DUTY_WINDOW";
      PropertyIdentifier22[PropertyIdentifier22["EFFECTIVE_PERIOD"] = 32] = "EFFECTIVE_PERIOD";
      PropertyIdentifier22[PropertyIdentifier22["EGRESS_ACTIVE"] = 386] = "EGRESS_ACTIVE";
      PropertyIdentifier22[PropertyIdentifier22["EGRESS_TIME"] = 377] = "EGRESS_TIME";
      PropertyIdentifier22[PropertyIdentifier22["ELAPSED_ACTIVE_TIME"] = 33] = "ELAPSED_ACTIVE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["ELEVATOR_GROUP"] = 459] = "ELEVATOR_GROUP";
      PropertyIdentifier22[PropertyIdentifier22["ENABLE"] = 133] = "ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["ENERGY_METER"] = 460] = "ENERGY_METER";
      PropertyIdentifier22[PropertyIdentifier22["ENERGY_METER_REF"] = 461] = "ENERGY_METER_REF";
      PropertyIdentifier22[PropertyIdentifier22["ENTRY_POINTS"] = 268] = "ENTRY_POINTS";
      PropertyIdentifier22[PropertyIdentifier22["ERROR_LIMIT"] = 34] = "ERROR_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["ESCALATOR_MODE"] = 462] = "ESCALATOR_MODE";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_ALGORITHM_INHIBIT"] = 354] = "EVENT_ALGORITHM_INHIBIT";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_ALGORITHM_INHIBIT_REF"] = 355] = "EVENT_ALGORITHM_INHIBIT_REF";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_DETECTION_ENABLE"] = 353] = "EVENT_DETECTION_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_ENABLE"] = 35] = "EVENT_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_MESSAGE_TEXTS"] = 351] = "EVENT_MESSAGE_TEXTS";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_MESSAGE_TEXTS_CONFIG"] = 352] = "EVENT_MESSAGE_TEXTS_CONFIG";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_PARAMETERS"] = 83] = "EVENT_PARAMETERS";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_STATE"] = 36] = "EVENT_STATE";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_TIME_STAMPS"] = 130] = "EVENT_TIME_STAMPS";
      PropertyIdentifier22[PropertyIdentifier22["EVENT_TYPE"] = 37] = "EVENT_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["EXCEPTION_SCHEDULE"] = 38] = "EXCEPTION_SCHEDULE";
      PropertyIdentifier22[PropertyIdentifier22["EXECUTION_DELAY"] = 368] = "EXECUTION_DELAY";
      PropertyIdentifier22[PropertyIdentifier22["EXIT_POINTS"] = 269] = "EXIT_POINTS";
      PropertyIdentifier22[PropertyIdentifier22["EXPECTED_SHED_LEVEL"] = 214] = "EXPECTED_SHED_LEVEL";
      PropertyIdentifier22[PropertyIdentifier22["EXPIRATION_TIME"] = 270] = "EXPIRATION_TIME";
      PropertyIdentifier22[PropertyIdentifier22["EXTENDED_TIME_ENABLE"] = 271] = "EXTENDED_TIME_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["FAILED_ATTEMPT_EVENTS"] = 272] = "FAILED_ATTEMPT_EVENTS";
      PropertyIdentifier22[PropertyIdentifier22["FAILED_ATTEMPTS"] = 273] = "FAILED_ATTEMPTS";
      PropertyIdentifier22[PropertyIdentifier22["FAILED_ATTEMPTS_TIME"] = 274] = "FAILED_ATTEMPTS_TIME";
      PropertyIdentifier22[PropertyIdentifier22["FAULT_HIGH_LIMIT"] = 388] = "FAULT_HIGH_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["FAULT_LOW_LIMIT"] = 389] = "FAULT_LOW_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["FAULT_PARAMETERS"] = 358] = "FAULT_PARAMETERS";
      PropertyIdentifier22[PropertyIdentifier22["FAULT_SIGNALS"] = 463] = "FAULT_SIGNALS";
      PropertyIdentifier22[PropertyIdentifier22["FAULT_TYPE"] = 359] = "FAULT_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["FAULT_VALUES"] = 39] = "FAULT_VALUES";
      PropertyIdentifier22[PropertyIdentifier22["FD_BBMD_ADDRESS"] = 418] = "FD_BBMD_ADDRESS";
      PropertyIdentifier22[PropertyIdentifier22["FD_SUBSCRIPTION_LIFETIME"] = 419] = "FD_SUBSCRIPTION_LIFETIME";
      PropertyIdentifier22[PropertyIdentifier22["FEEDBACK_VALUE"] = 40] = "FEEDBACK_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["FILE_ACCESS_METHOD"] = 41] = "FILE_ACCESS_METHOD";
      PropertyIdentifier22[PropertyIdentifier22["FILE_SIZE"] = 42] = "FILE_SIZE";
      PropertyIdentifier22[PropertyIdentifier22["FILE_TYPE"] = 43] = "FILE_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["FIRMWARE_REVISION"] = 44] = "FIRMWARE_REVISION";
      PropertyIdentifier22[PropertyIdentifier22["FLOOR_TEXT"] = 464] = "FLOOR_TEXT";
      PropertyIdentifier22[PropertyIdentifier22["FULL_DUTY_BASELINE"] = 215] = "FULL_DUTY_BASELINE";
      PropertyIdentifier22[PropertyIdentifier22["GLOBAL_IDENTIFIER"] = 323] = "GLOBAL_IDENTIFIER";
      PropertyIdentifier22[PropertyIdentifier22["GROUP_ID"] = 465] = "GROUP_ID";
      PropertyIdentifier22[PropertyIdentifier22["GROUP_MEMBER_NAMES"] = 346] = "GROUP_MEMBER_NAMES";
      PropertyIdentifier22[PropertyIdentifier22["GROUP_MEMBERS"] = 345] = "GROUP_MEMBERS";
      PropertyIdentifier22[PropertyIdentifier22["GROUP_MODE"] = 467] = "GROUP_MODE";
      PropertyIdentifier22[PropertyIdentifier22["HIGH_LIMIT"] = 45] = "HIGH_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["HIGHER_DECK"] = 468] = "HIGHER_DECK";
      PropertyIdentifier22[PropertyIdentifier22["IN_PROCESS"] = 47] = "IN_PROCESS";
      PropertyIdentifier22[PropertyIdentifier22["IN_PROGRESS"] = 378] = "IN_PROGRESS";
      PropertyIdentifier22[PropertyIdentifier22["INACTIVE_TEXT"] = 46] = "INACTIVE_TEXT";
      PropertyIdentifier22[PropertyIdentifier22["INITIAL_TIMEOUT"] = 394] = "INITIAL_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["INPUT_REFERENCE"] = 181] = "INPUT_REFERENCE";
      PropertyIdentifier22[PropertyIdentifier22["INSTALLATION_ID"] = 469] = "INSTALLATION_ID";
      PropertyIdentifier22[PropertyIdentifier22["INSTANCE_OF"] = 48] = "INSTANCE_OF";
      PropertyIdentifier22[PropertyIdentifier22["INSTANTANEOUS_POWER"] = 379] = "INSTANTANEOUS_POWER";
      PropertyIdentifier22[PropertyIdentifier22["INTEGRAL_CONSTANT"] = 49] = "INTEGRAL_CONSTANT";
      PropertyIdentifier22[PropertyIdentifier22["INTEGRAL_CONSTANT_UNITS"] = 50] = "INTEGRAL_CONSTANT_UNITS";
      PropertyIdentifier22[PropertyIdentifier22["INTERFACE_VALUE"] = 387] = "INTERFACE_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["INTERVAL_OFFSET"] = 195] = "INTERVAL_OFFSET";
      PropertyIdentifier22[PropertyIdentifier22["IP_ADDRESS"] = 400] = "IP_ADDRESS";
      PropertyIdentifier22[PropertyIdentifier22["IP_DEFAULT_GATEWAY"] = 401] = "IP_DEFAULT_GATEWAY";
      PropertyIdentifier22[PropertyIdentifier22["IP_DHCP_ENABLE"] = 402] = "IP_DHCP_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["IP_DHCP_LEASE_TIME"] = 403] = "IP_DHCP_LEASE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["IP_DHCP_LEASE_TIME_REMAINING"] = 404] = "IP_DHCP_LEASE_TIME_REMAINING";
      PropertyIdentifier22[PropertyIdentifier22["IP_DHCP_SERVER"] = 405] = "IP_DHCP_SERVER";
      PropertyIdentifier22[PropertyIdentifier22["IP_DNS_SERVER"] = 406] = "IP_DNS_SERVER";
      PropertyIdentifier22[PropertyIdentifier22["IP_SUBNET_MASK"] = 411] = "IP_SUBNET_MASK";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_ADDRESS"] = 436] = "IPV6_ADDRESS";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_AUTO_ADDRESSING_ENABLE"] = 442] = "IPV6_AUTO_ADDRESSING_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_DEFAULT_GATEWAY"] = 439] = "IPV6_DEFAULT_GATEWAY";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_DHCP_LEASE_TIME"] = 443] = "IPV6_DHCP_LEASE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_DHCP_LEASE_TIME_REMAINING"] = 444] = "IPV6_DHCP_LEASE_TIME_REMAINING";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_DHCP_SERVER"] = 445] = "IPV6_DHCP_SERVER";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_DNS_SERVER"] = 441] = "IPV6_DNS_SERVER";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_PREFIX_LENGTH"] = 437] = "IPV6_PREFIX_LENGTH";
      PropertyIdentifier22[PropertyIdentifier22["IPV6_ZONE_INDEX"] = 446] = "IPV6_ZONE_INDEX";
      PropertyIdentifier22[PropertyIdentifier22["IS_UTC"] = 344] = "IS_UTC";
      PropertyIdentifier22[PropertyIdentifier22["KEY_SETS"] = 330] = "KEY_SETS";
      PropertyIdentifier22[PropertyIdentifier22["LANDING_CALL_CONTROL"] = 471] = "LANDING_CALL_CONTROL";
      PropertyIdentifier22[PropertyIdentifier22["LANDING_CALLS"] = 470] = "LANDING_CALLS";
      PropertyIdentifier22[PropertyIdentifier22["LANDING_DOOR_STATUS"] = 472] = "LANDING_DOOR_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["LAST_ACCESS_EVENT"] = 275] = "LAST_ACCESS_EVENT";
      PropertyIdentifier22[PropertyIdentifier22["LAST_ACCESS_POINT"] = 276] = "LAST_ACCESS_POINT";
      PropertyIdentifier22[PropertyIdentifier22["LAST_COMMAND_TIME"] = 432] = "LAST_COMMAND_TIME";
      PropertyIdentifier22[PropertyIdentifier22["LAST_CREDENTIAL_ADDED"] = 277] = "LAST_CREDENTIAL_ADDED";
      PropertyIdentifier22[PropertyIdentifier22["LAST_CREDENTIAL_ADDED_TIME"] = 278] = "LAST_CREDENTIAL_ADDED_TIME";
      PropertyIdentifier22[PropertyIdentifier22["LAST_CREDENTIAL_REMOVED"] = 279] = "LAST_CREDENTIAL_REMOVED";
      PropertyIdentifier22[PropertyIdentifier22["LAST_CREDENTIAL_REMOVED_TIME"] = 280] = "LAST_CREDENTIAL_REMOVED_TIME";
      PropertyIdentifier22[PropertyIdentifier22["LAST_KEY_SERVER"] = 331] = "LAST_KEY_SERVER";
      PropertyIdentifier22[PropertyIdentifier22["LAST_NOTIFY_RECORD"] = 173] = "LAST_NOTIFY_RECORD";
      PropertyIdentifier22[PropertyIdentifier22["LAST_PRIORITY"] = 369] = "LAST_PRIORITY";
      PropertyIdentifier22[PropertyIdentifier22["LAST_RESTART_REASON"] = 196] = "LAST_RESTART_REASON";
      PropertyIdentifier22[PropertyIdentifier22["LAST_RESTORE_TIME"] = 157] = "LAST_RESTORE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["LAST_STATE_CHANGE"] = 395] = "LAST_STATE_CHANGE";
      PropertyIdentifier22[PropertyIdentifier22["LAST_USE_TIME"] = 281] = "LAST_USE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["LIFE_SAFETY_ALARM_VALUES"] = 166] = "LIFE_SAFETY_ALARM_VALUES";
      PropertyIdentifier22[PropertyIdentifier22["LIGHTING_COMMAND"] = 380] = "LIGHTING_COMMAND";
      PropertyIdentifier22[PropertyIdentifier22["LIGHTING_COMMAND_DEFAULT_PRIORITY"] = 381] = "LIGHTING_COMMAND_DEFAULT_PRIORITY";
      PropertyIdentifier22[PropertyIdentifier22["LIMIT_ENABLE"] = 52] = "LIMIT_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["LIMIT_MONITORING_INTERVAL"] = 182] = "LIMIT_MONITORING_INTERVAL";
      PropertyIdentifier22[PropertyIdentifier22["LINK_SPEED"] = 420] = "LINK_SPEED";
      PropertyIdentifier22[PropertyIdentifier22["LINK_SPEED_AUTONEGOTIATE"] = 422] = "LINK_SPEED_AUTONEGOTIATE";
      PropertyIdentifier22[PropertyIdentifier22["LINK_SPEEDS"] = 421] = "LINK_SPEEDS";
      PropertyIdentifier22[PropertyIdentifier22["LIST_OF_GROUP_MEMBERS"] = 53] = "LIST_OF_GROUP_MEMBERS";
      PropertyIdentifier22[PropertyIdentifier22["LIST_OF_OBJECT_PROPERTY_REFERENCES"] = 54] = "LIST_OF_OBJECT_PROPERTY_REFERENCES";
      PropertyIdentifier22[PropertyIdentifier22["LOCAL_DATE"] = 56] = "LOCAL_DATE";
      PropertyIdentifier22[PropertyIdentifier22["LOCAL_FORWARDING_ONLY"] = 360] = "LOCAL_FORWARDING_ONLY";
      PropertyIdentifier22[PropertyIdentifier22["LOCAL_TIME"] = 57] = "LOCAL_TIME";
      PropertyIdentifier22[PropertyIdentifier22["LOCATION"] = 58] = "LOCATION";
      PropertyIdentifier22[PropertyIdentifier22["LOCK_STATUS"] = 233] = "LOCK_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["LOCKOUT"] = 282] = "LOCKOUT";
      PropertyIdentifier22[PropertyIdentifier22["LOCKOUT_RELINQUISH_TIME"] = 283] = "LOCKOUT_RELINQUISH_TIME";
      PropertyIdentifier22[PropertyIdentifier22["LOG_BUFFER"] = 131] = "LOG_BUFFER";
      PropertyIdentifier22[PropertyIdentifier22["LOG_DEVICE_OBJECT_PROPERTY"] = 132] = "LOG_DEVICE_OBJECT_PROPERTY";
      PropertyIdentifier22[PropertyIdentifier22["LOG_INTERVAL"] = 134] = "LOG_INTERVAL";
      PropertyIdentifier22[PropertyIdentifier22["LOGGING_OBJECT"] = 183] = "LOGGING_OBJECT";
      PropertyIdentifier22[PropertyIdentifier22["LOGGING_RECORD"] = 184] = "LOGGING_RECORD";
      PropertyIdentifier22[PropertyIdentifier22["LOGGING_TYPE"] = 197] = "LOGGING_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["LOW_DIFF_LIMIT"] = 390] = "LOW_DIFF_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["LOW_LIMIT"] = 59] = "LOW_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["LOWER_DECK"] = 473] = "LOWER_DECK";
      PropertyIdentifier22[PropertyIdentifier22["MAC_ADDRESS"] = 423] = "MAC_ADDRESS";
      PropertyIdentifier22[PropertyIdentifier22["MACHINE_ROOM_ID"] = 474] = "MACHINE_ROOM_ID";
      PropertyIdentifier22[PropertyIdentifier22["MAINTENANCE_REQUIRED"] = 158] = "MAINTENANCE_REQUIRED";
      PropertyIdentifier22[PropertyIdentifier22["MAKING_CAR_CALL"] = 475] = "MAKING_CAR_CALL";
      PropertyIdentifier22[PropertyIdentifier22["MANIPULATED_VARIABLE_REFERENCE"] = 60] = "MANIPULATED_VARIABLE_REFERENCE";
      PropertyIdentifier22[PropertyIdentifier22["MANUAL_SLAVE_ADDRESS_BINDING"] = 170] = "MANUAL_SLAVE_ADDRESS_BINDING";
      PropertyIdentifier22[PropertyIdentifier22["MASKED_ALARM_VALUES"] = 234] = "MASKED_ALARM_VALUES";
      PropertyIdentifier22[PropertyIdentifier22["MAX_ACTUAL_VALUE"] = 382] = "MAX_ACTUAL_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["MAX_APDU_LENGTH_ACCEPTED"] = 62] = "MAX_APDU_LENGTH_ACCEPTED";
      PropertyIdentifier22[PropertyIdentifier22["MAX_FAILED_ATTEMPTS"] = 285] = "MAX_FAILED_ATTEMPTS";
      PropertyIdentifier22[PropertyIdentifier22["MAX_INFO_FRAMES"] = 63] = "MAX_INFO_FRAMES";
      PropertyIdentifier22[PropertyIdentifier22["MAX_MASTER"] = 64] = "MAX_MASTER";
      PropertyIdentifier22[PropertyIdentifier22["MAX_PRES_VALUE"] = 65] = "MAX_PRES_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["MAX_SEGMENTS_ACCEPTED"] = 167] = "MAX_SEGMENTS_ACCEPTED";
      PropertyIdentifier22[PropertyIdentifier22["MAXIMUM_OUTPUT"] = 61] = "MAXIMUM_OUTPUT";
      PropertyIdentifier22[PropertyIdentifier22["MAXIMUM_VALUE"] = 135] = "MAXIMUM_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["MAXIMUM_VALUE_TIMESTAMP"] = 149] = "MAXIMUM_VALUE_TIMESTAMP";
      PropertyIdentifier22[PropertyIdentifier22["MEMBER_OF"] = 159] = "MEMBER_OF";
      PropertyIdentifier22[PropertyIdentifier22["MEMBER_STATUS_FLAGS"] = 347] = "MEMBER_STATUS_FLAGS";
      PropertyIdentifier22[PropertyIdentifier22["MEMBERS"] = 286] = "MEMBERS";
      PropertyIdentifier22[PropertyIdentifier22["MIN_ACTUAL_VALUE"] = 383] = "MIN_ACTUAL_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["MIN_PRES_VALUE"] = 69] = "MIN_PRES_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["MINIMUM_OFF_TIME"] = 66] = "MINIMUM_OFF_TIME";
      PropertyIdentifier22[PropertyIdentifier22["MINIMUM_ON_TIME"] = 67] = "MINIMUM_ON_TIME";
      PropertyIdentifier22[PropertyIdentifier22["MINIMUM_OUTPUT"] = 68] = "MINIMUM_OUTPUT";
      PropertyIdentifier22[PropertyIdentifier22["MINIMUM_VALUE"] = 136] = "MINIMUM_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["MINIMUM_VALUE_TIMESTAMP"] = 150] = "MINIMUM_VALUE_TIMESTAMP";
      PropertyIdentifier22[PropertyIdentifier22["MODE"] = 160] = "MODE";
      PropertyIdentifier22[PropertyIdentifier22["MODEL_NAME"] = 70] = "MODEL_NAME";
      PropertyIdentifier22[PropertyIdentifier22["MODIFICATION_DATE"] = 71] = "MODIFICATION_DATE";
      PropertyIdentifier22[PropertyIdentifier22["MUSTER_POINT"] = 287] = "MUSTER_POINT";
      PropertyIdentifier22[PropertyIdentifier22["NEGATIVE_ACCESS_RULES"] = 288] = "NEGATIVE_ACCESS_RULES";
      PropertyIdentifier22[PropertyIdentifier22["NETWORK_ACCESS_SECURITY_POLICIES"] = 332] = "NETWORK_ACCESS_SECURITY_POLICIES";
      PropertyIdentifier22[PropertyIdentifier22["NETWORK_INTERFACE_NAME"] = 424] = "NETWORK_INTERFACE_NAME";
      PropertyIdentifier22[PropertyIdentifier22["NETWORK_NUMBER"] = 425] = "NETWORK_NUMBER";
      PropertyIdentifier22[PropertyIdentifier22["NETWORK_NUMBER_QUALITY"] = 426] = "NETWORK_NUMBER_QUALITY";
      PropertyIdentifier22[PropertyIdentifier22["NETWORK_TYPE"] = 427] = "NETWORK_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["NEXT_STOPPING_FLOOR"] = 476] = "NEXT_STOPPING_FLOOR";
      PropertyIdentifier22[PropertyIdentifier22["NODE_SUBTYPE"] = 207] = "NODE_SUBTYPE";
      PropertyIdentifier22[PropertyIdentifier22["NODE_TYPE"] = 208] = "NODE_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["NOTIFICATION_CLASS"] = 17] = "NOTIFICATION_CLASS";
      PropertyIdentifier22[PropertyIdentifier22["NOTIFICATION_THRESHOLD"] = 137] = "NOTIFICATION_THRESHOLD";
      PropertyIdentifier22[PropertyIdentifier22["NOTIFY_TYPE"] = 72] = "NOTIFY_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["NUMBER_OF_APDU_RETRIES"] = 73] = "NUMBER_OF_APDU_RETRIES";
      PropertyIdentifier22[PropertyIdentifier22["NUMBER_OF_AUTHENTICATION_POLICIES"] = 289] = "NUMBER_OF_AUTHENTICATION_POLICIES";
      PropertyIdentifier22[PropertyIdentifier22["NUMBER_OF_STATES"] = 74] = "NUMBER_OF_STATES";
      PropertyIdentifier22[PropertyIdentifier22["OBJECT_IDENTIFIER"] = 75] = "OBJECT_IDENTIFIER";
      PropertyIdentifier22[PropertyIdentifier22["OBJECT_LIST"] = 76] = "OBJECT_LIST";
      PropertyIdentifier22[PropertyIdentifier22["OBJECT_NAME"] = 77] = "OBJECT_NAME";
      PropertyIdentifier22[PropertyIdentifier22["OBJECT_PROPERTY_REFERENCE"] = 78] = "OBJECT_PROPERTY_REFERENCE";
      PropertyIdentifier22[PropertyIdentifier22["OBJECT_TYPE"] = 79] = "OBJECT_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_COUNT"] = 290] = "OCCUPANCY_COUNT";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_COUNT_ADJUST"] = 291] = "OCCUPANCY_COUNT_ADJUST";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_COUNT_ENABLE"] = 292] = "OCCUPANCY_COUNT_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_LOWER_LIMIT"] = 294] = "OCCUPANCY_LOWER_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_LOWER_LIMIT_ENFORCED"] = 295] = "OCCUPANCY_LOWER_LIMIT_ENFORCED";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_STATE"] = 296] = "OCCUPANCY_STATE";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_UPPER_LIMIT"] = 297] = "OCCUPANCY_UPPER_LIMIT";
      PropertyIdentifier22[PropertyIdentifier22["OCCUPANCY_UPPER_LIMIT_ENFORCED"] = 298] = "OCCUPANCY_UPPER_LIMIT_ENFORCED";
      PropertyIdentifier22[PropertyIdentifier22["OPERATION_DIRECTION"] = 477] = "OPERATION_DIRECTION";
      PropertyIdentifier22[PropertyIdentifier22["OPERATION_EXPECTED"] = 161] = "OPERATION_EXPECTED";
      PropertyIdentifier22[PropertyIdentifier22["OPTIONAL"] = 80] = "OPTIONAL";
      PropertyIdentifier22[PropertyIdentifier22["OUT_OF_SERVICE"] = 81] = "OUT_OF_SERVICE";
      PropertyIdentifier22[PropertyIdentifier22["OUTPUT_UNITS"] = 82] = "OUTPUT_UNITS";
      PropertyIdentifier22[PropertyIdentifier22["PACKET_REORDER_TIME"] = 333] = "PACKET_REORDER_TIME";
      PropertyIdentifier22[PropertyIdentifier22["PASSBACK_MODE"] = 300] = "PASSBACK_MODE";
      PropertyIdentifier22[PropertyIdentifier22["PASSBACK_TIMEOUT"] = 301] = "PASSBACK_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["PASSENGER_ALARM"] = 478] = "PASSENGER_ALARM";
      PropertyIdentifier22[PropertyIdentifier22["POLARITY"] = 84] = "POLARITY";
      PropertyIdentifier22[PropertyIdentifier22["PORT_FILTER"] = 363] = "PORT_FILTER";
      PropertyIdentifier22[PropertyIdentifier22["POSITIVE_ACCESS_RULES"] = 302] = "POSITIVE_ACCESS_RULES";
      PropertyIdentifier22[PropertyIdentifier22["POWER"] = 384] = "POWER";
      PropertyIdentifier22[PropertyIdentifier22["POWER_MODE"] = 479] = "POWER_MODE";
      PropertyIdentifier22[PropertyIdentifier22["PRESCALE"] = 185] = "PRESCALE";
      PropertyIdentifier22[PropertyIdentifier22["PRESENT_VALUE"] = 85] = "PRESENT_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["PRIORITY"] = 86] = "PRIORITY";
      PropertyIdentifier22[PropertyIdentifier22["PRIORITY_ARRAY"] = 87] = "PRIORITY_ARRAY";
      PropertyIdentifier22[PropertyIdentifier22["PRIORITY_FOR_WRITING"] = 88] = "PRIORITY_FOR_WRITING";
      PropertyIdentifier22[PropertyIdentifier22["PROCESS_IDENTIFIER"] = 89] = "PROCESS_IDENTIFIER";
      PropertyIdentifier22[PropertyIdentifier22["PROCESS_IDENTIFIER_FILTER"] = 361] = "PROCESS_IDENTIFIER_FILTER";
      PropertyIdentifier22[PropertyIdentifier22["PROFILE_LOCATION"] = 485] = "PROFILE_LOCATION";
      PropertyIdentifier22[PropertyIdentifier22["PROFILE_NAME"] = 168] = "PROFILE_NAME";
      PropertyIdentifier22[PropertyIdentifier22["PROGRAM_CHANGE"] = 90] = "PROGRAM_CHANGE";
      PropertyIdentifier22[PropertyIdentifier22["PROGRAM_LOCATION"] = 91] = "PROGRAM_LOCATION";
      PropertyIdentifier22[PropertyIdentifier22["PROGRAM_STATE"] = 92] = "PROGRAM_STATE";
      PropertyIdentifier22[PropertyIdentifier22["PROPERTY_LIST"] = 371] = "PROPERTY_LIST";
      PropertyIdentifier22[PropertyIdentifier22["PROPORTIONAL_CONSTANT"] = 93] = "PROPORTIONAL_CONSTANT";
      PropertyIdentifier22[PropertyIdentifier22["PROPORTIONAL_CONSTANT_UNITS"] = 94] = "PROPORTIONAL_CONSTANT_UNITS";
      PropertyIdentifier22[PropertyIdentifier22["PROTOCOL_LEVEL"] = 482] = "PROTOCOL_LEVEL";
      PropertyIdentifier22[PropertyIdentifier22["PROTOCOL_OBJECT_TYPES_SUPPORTED"] = 96] = "PROTOCOL_OBJECT_TYPES_SUPPORTED";
      PropertyIdentifier22[PropertyIdentifier22["PROTOCOL_REVISION"] = 139] = "PROTOCOL_REVISION";
      PropertyIdentifier22[PropertyIdentifier22["PROTOCOL_SERVICES_SUPPORTED"] = 97] = "PROTOCOL_SERVICES_SUPPORTED";
      PropertyIdentifier22[PropertyIdentifier22["PROTOCOL_VERSION"] = 98] = "PROTOCOL_VERSION";
      PropertyIdentifier22[PropertyIdentifier22["PULSE_RATE"] = 186] = "PULSE_RATE";
      PropertyIdentifier22[PropertyIdentifier22["READ_ONLY"] = 99] = "READ_ONLY";
      PropertyIdentifier22[PropertyIdentifier22["REASON_FOR_DISABLE"] = 303] = "REASON_FOR_DISABLE";
      PropertyIdentifier22[PropertyIdentifier22["REASON_FOR_HALT"] = 100] = "REASON_FOR_HALT";
      PropertyIdentifier22[PropertyIdentifier22["RECIPIENT_LIST"] = 102] = "RECIPIENT_LIST";
      PropertyIdentifier22[PropertyIdentifier22["RECORD_COUNT"] = 141] = "RECORD_COUNT";
      PropertyIdentifier22[PropertyIdentifier22["RECORDS_SINCE_NOTIFICATION"] = 140] = "RECORDS_SINCE_NOTIFICATION";
      PropertyIdentifier22[PropertyIdentifier22["REFERENCE_PORT"] = 483] = "REFERENCE_PORT";
      PropertyIdentifier22[PropertyIdentifier22["REGISTERED_CAR_CALL"] = 480] = "REGISTERED_CAR_CALL";
      PropertyIdentifier22[PropertyIdentifier22["RELIABILITY"] = 103] = "RELIABILITY";
      PropertyIdentifier22[PropertyIdentifier22["RELIABILITY_EVALUATION_INHIBIT"] = 357] = "RELIABILITY_EVALUATION_INHIBIT";
      PropertyIdentifier22[PropertyIdentifier22["RELINQUISH_DEFAULT"] = 104] = "RELINQUISH_DEFAULT";
      PropertyIdentifier22[PropertyIdentifier22["REPRESENTS"] = 491] = "REPRESENTS";
      PropertyIdentifier22[PropertyIdentifier22["REQUESTED_SHED_LEVEL"] = 218] = "REQUESTED_SHED_LEVEL";
      PropertyIdentifier22[PropertyIdentifier22["REQUESTED_UPDATE_INTERVAL"] = 348] = "REQUESTED_UPDATE_INTERVAL";
      PropertyIdentifier22[PropertyIdentifier22["REQUIRED"] = 105] = "REQUIRED";
      PropertyIdentifier22[PropertyIdentifier22["RESOLUTION"] = 106] = "RESOLUTION";
      PropertyIdentifier22[PropertyIdentifier22["RESTART_NOTIFICATION_RECIPIENTS"] = 202] = "RESTART_NOTIFICATION_RECIPIENTS";
      PropertyIdentifier22[PropertyIdentifier22["RESTORE_COMPLETION_TIME"] = 340] = "RESTORE_COMPLETION_TIME";
      PropertyIdentifier22[PropertyIdentifier22["RESTORE_PREPARATION_TIME"] = 341] = "RESTORE_PREPARATION_TIME";
      PropertyIdentifier22[PropertyIdentifier22["ROUTING_TABLE"] = 428] = "ROUTING_TABLE";
      PropertyIdentifier22[PropertyIdentifier22["SCALE"] = 187] = "SCALE";
      PropertyIdentifier22[PropertyIdentifier22["SCALE_FACTOR"] = 188] = "SCALE_FACTOR";
      PropertyIdentifier22[PropertyIdentifier22["SCHEDULE_DEFAULT"] = 174] = "SCHEDULE_DEFAULT";
      PropertyIdentifier22[PropertyIdentifier22["SECURED_STATUS"] = 235] = "SECURED_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["SECURITY_PDU_TIMEOUT"] = 334] = "SECURITY_PDU_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["SECURITY_TIME_WINDOW"] = 335] = "SECURITY_TIME_WINDOW";
      PropertyIdentifier22[PropertyIdentifier22["SEGMENTATION_SUPPORTED"] = 107] = "SEGMENTATION_SUPPORTED";
      PropertyIdentifier22[PropertyIdentifier22["SERIAL_NUMBER"] = 372] = "SERIAL_NUMBER";
      PropertyIdentifier22[PropertyIdentifier22["SETPOINT"] = 108] = "SETPOINT";
      PropertyIdentifier22[PropertyIdentifier22["SETPOINT_REFERENCE"] = 109] = "SETPOINT_REFERENCE";
      PropertyIdentifier22[PropertyIdentifier22["SETTING"] = 162] = "SETTING";
      PropertyIdentifier22[PropertyIdentifier22["SHED_DURATION"] = 219] = "SHED_DURATION";
      PropertyIdentifier22[PropertyIdentifier22["SHED_LEVEL_DESCRIPTIONS"] = 220] = "SHED_LEVEL_DESCRIPTIONS";
      PropertyIdentifier22[PropertyIdentifier22["SHED_LEVELS"] = 221] = "SHED_LEVELS";
      PropertyIdentifier22[PropertyIdentifier22["SILENCED"] = 163] = "SILENCED";
      PropertyIdentifier22[PropertyIdentifier22["SLAVE_ADDRESS_BINDING"] = 171] = "SLAVE_ADDRESS_BINDING";
      PropertyIdentifier22[PropertyIdentifier22["SLAVE_PROXY_ENABLE"] = 172] = "SLAVE_PROXY_ENABLE";
      PropertyIdentifier22[PropertyIdentifier22["START_TIME"] = 142] = "START_TIME";
      PropertyIdentifier22[PropertyIdentifier22["STATE_CHANGE_VALUES"] = 396] = "STATE_CHANGE_VALUES";
      PropertyIdentifier22[PropertyIdentifier22["STATE_DESCRIPTION"] = 222] = "STATE_DESCRIPTION";
      PropertyIdentifier22[PropertyIdentifier22["STATE_TEXT"] = 110] = "STATE_TEXT";
      PropertyIdentifier22[PropertyIdentifier22["STATUS_FLAGS"] = 111] = "STATUS_FLAGS";
      PropertyIdentifier22[PropertyIdentifier22["STOP_TIME"] = 143] = "STOP_TIME";
      PropertyIdentifier22[PropertyIdentifier22["STOP_WHEN_FULL"] = 144] = "STOP_WHEN_FULL";
      PropertyIdentifier22[PropertyIdentifier22["STRIKE_COUNT"] = 391] = "STRIKE_COUNT";
      PropertyIdentifier22[PropertyIdentifier22["STRUCTURED_OBJECT_LIST"] = 209] = "STRUCTURED_OBJECT_LIST";
      PropertyIdentifier22[PropertyIdentifier22["SUBORDINATE_ANNOTATIONS"] = 210] = "SUBORDINATE_ANNOTATIONS";
      PropertyIdentifier22[PropertyIdentifier22["SUBORDINATE_LIST"] = 211] = "SUBORDINATE_LIST";
      PropertyIdentifier22[PropertyIdentifier22["SUBORDINATE_NODE_TYPES"] = 487] = "SUBORDINATE_NODE_TYPES";
      PropertyIdentifier22[PropertyIdentifier22["SUBORDINATE_RELATIONSHIPS"] = 489] = "SUBORDINATE_RELATIONSHIPS";
      PropertyIdentifier22[PropertyIdentifier22["SUBORDINATE_TAGS"] = 488] = "SUBORDINATE_TAGS";
      PropertyIdentifier22[PropertyIdentifier22["SUBSCRIBED_RECIPIENTS"] = 362] = "SUBSCRIBED_RECIPIENTS";
      PropertyIdentifier22[PropertyIdentifier22["SUPPORTED_FORMAT_CLASSES"] = 305] = "SUPPORTED_FORMAT_CLASSES";
      PropertyIdentifier22[PropertyIdentifier22["SUPPORTED_FORMATS"] = 304] = "SUPPORTED_FORMATS";
      PropertyIdentifier22[PropertyIdentifier22["SUPPORTED_SECURITY_ALGORITHMS"] = 336] = "SUPPORTED_SECURITY_ALGORITHMS";
      PropertyIdentifier22[PropertyIdentifier22["SYSTEM_STATUS"] = 112] = "SYSTEM_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["TAGS"] = 486] = "TAGS";
      PropertyIdentifier22[PropertyIdentifier22["THREAT_AUTHORITY"] = 306] = "THREAT_AUTHORITY";
      PropertyIdentifier22[PropertyIdentifier22["THREAT_LEVEL"] = 307] = "THREAT_LEVEL";
      PropertyIdentifier22[PropertyIdentifier22["TIME_DELAY"] = 113] = "TIME_DELAY";
      PropertyIdentifier22[PropertyIdentifier22["TIME_DELAY_NORMAL"] = 356] = "TIME_DELAY_NORMAL";
      PropertyIdentifier22[PropertyIdentifier22["TIME_OF_ACTIVE_TIME_RESET"] = 114] = "TIME_OF_ACTIVE_TIME_RESET";
      PropertyIdentifier22[PropertyIdentifier22["TIME_OF_DEVICE_RESTART"] = 203] = "TIME_OF_DEVICE_RESTART";
      PropertyIdentifier22[PropertyIdentifier22["TIME_OF_STATE_COUNT_RESET"] = 115] = "TIME_OF_STATE_COUNT_RESET";
      PropertyIdentifier22[PropertyIdentifier22["TIME_OF_STRIKE_COUNT_RESET"] = 392] = "TIME_OF_STRIKE_COUNT_RESET";
      PropertyIdentifier22[PropertyIdentifier22["TIME_SYNCHRONIZATION_INTERVAL"] = 204] = "TIME_SYNCHRONIZATION_INTERVAL";
      PropertyIdentifier22[PropertyIdentifier22["TIME_SYNCHRONIZATION_RECIPIENTS"] = 116] = "TIME_SYNCHRONIZATION_RECIPIENTS";
      PropertyIdentifier22[PropertyIdentifier22["TIMER_RUNNING"] = 397] = "TIMER_RUNNING";
      PropertyIdentifier22[PropertyIdentifier22["TIMER_STATE"] = 398] = "TIMER_STATE";
      PropertyIdentifier22[PropertyIdentifier22["TOTAL_RECORD_COUNT"] = 145] = "TOTAL_RECORD_COUNT";
      PropertyIdentifier22[PropertyIdentifier22["TRACE_FLAG"] = 308] = "TRACE_FLAG";
      PropertyIdentifier22[PropertyIdentifier22["TRACKING_VALUE"] = 164] = "TRACKING_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["TRANSACTION_NOTIFICATION_CLASS"] = 309] = "TRANSACTION_NOTIFICATION_CLASS";
      PropertyIdentifier22[PropertyIdentifier22["TRANSITION"] = 385] = "TRANSITION";
      PropertyIdentifier22[PropertyIdentifier22["TRIGGER"] = 205] = "TRIGGER";
      PropertyIdentifier22[PropertyIdentifier22["UNITS"] = 117] = "UNITS";
      PropertyIdentifier22[PropertyIdentifier22["UPDATE_INTERVAL"] = 118] = "UPDATE_INTERVAL";
      PropertyIdentifier22[PropertyIdentifier22["UPDATE_KEY_SET_TIMEOUT"] = 337] = "UPDATE_KEY_SET_TIMEOUT";
      PropertyIdentifier22[PropertyIdentifier22["UPDATE_TIME"] = 189] = "UPDATE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["USER_EXTERNAL_IDENTIFIER"] = 310] = "USER_EXTERNAL_IDENTIFIER";
      PropertyIdentifier22[PropertyIdentifier22["USER_INFORMATION_REFERENCE"] = 311] = "USER_INFORMATION_REFERENCE";
      PropertyIdentifier22[PropertyIdentifier22["USER_NAME"] = 317] = "USER_NAME";
      PropertyIdentifier22[PropertyIdentifier22["USER_TYPE"] = 318] = "USER_TYPE";
      PropertyIdentifier22[PropertyIdentifier22["USES_REMAINING"] = 319] = "USES_REMAINING";
      PropertyIdentifier22[PropertyIdentifier22["UTC_OFFSET"] = 119] = "UTC_OFFSET";
      PropertyIdentifier22[PropertyIdentifier22["UTC_TIME_SYNCHRONIZATION_RECIPIENTS"] = 206] = "UTC_TIME_SYNCHRONIZATION_RECIPIENTS";
      PropertyIdentifier22[PropertyIdentifier22["VALID_SAMPLES"] = 146] = "VALID_SAMPLES";
      PropertyIdentifier22[PropertyIdentifier22["VALUE_BEFORE_CHANGE"] = 190] = "VALUE_BEFORE_CHANGE";
      PropertyIdentifier22[PropertyIdentifier22["VALUE_CHANGE_TIME"] = 192] = "VALUE_CHANGE_TIME";
      PropertyIdentifier22[PropertyIdentifier22["VALUE_SET"] = 191] = "VALUE_SET";
      PropertyIdentifier22[PropertyIdentifier22["VALUE_SOURCE"] = 433] = "VALUE_SOURCE";
      PropertyIdentifier22[PropertyIdentifier22["VALUE_SOURCE_ARRAY"] = 434] = "VALUE_SOURCE_ARRAY";
      PropertyIdentifier22[PropertyIdentifier22["VARIANCE_VALUE"] = 151] = "VARIANCE_VALUE";
      PropertyIdentifier22[PropertyIdentifier22["VENDOR_IDENTIFIER"] = 120] = "VENDOR_IDENTIFIER";
      PropertyIdentifier22[PropertyIdentifier22["VENDOR_NAME"] = 121] = "VENDOR_NAME";
      PropertyIdentifier22[PropertyIdentifier22["VERIFICATION_TIME"] = 326] = "VERIFICATION_TIME";
      PropertyIdentifier22[PropertyIdentifier22["VIRTUAL_MAC_ADDRESS_TABLE"] = 429] = "VIRTUAL_MAC_ADDRESS_TABLE";
      PropertyIdentifier22[PropertyIdentifier22["VT_CLASSES_SUPPORTED"] = 122] = "VT_CLASSES_SUPPORTED";
      PropertyIdentifier22[PropertyIdentifier22["WEEKLY_SCHEDULE"] = 123] = "WEEKLY_SCHEDULE";
      PropertyIdentifier22[PropertyIdentifier22["WINDOW_INTERVAL"] = 147] = "WINDOW_INTERVAL";
      PropertyIdentifier22[PropertyIdentifier22["WINDOW_SAMPLES"] = 148] = "WINDOW_SAMPLES";
      PropertyIdentifier22[PropertyIdentifier22["WRITE_STATUS"] = 370] = "WRITE_STATUS";
      PropertyIdentifier22[PropertyIdentifier22["ZONE_FROM"] = 320] = "ZONE_FROM";
      PropertyIdentifier22[PropertyIdentifier22["ZONE_MEMBERS"] = 165] = "ZONE_MEMBERS";
      PropertyIdentifier22[PropertyIdentifier22["ZONE_TO"] = 321] = "ZONE_TO";
      return PropertyIdentifier22;
    })(PropertyIdentifier2 || {});
    var ProtocolLevel2 = /* @__PURE__ */ ((ProtocolLevel22) => {
      ProtocolLevel22[ProtocolLevel22["PHYSICAL"] = 0] = "PHYSICAL";
      ProtocolLevel22[ProtocolLevel22["PROTOCOL"] = 1] = "PROTOCOL";
      ProtocolLevel22[ProtocolLevel22["BACNET_APPLICATION"] = 2] = "BACNET_APPLICATION";
      ProtocolLevel22[ProtocolLevel22["NON_BACNET_APPLICATION"] = 3] = "NON_BACNET_APPLICATION";
      return ProtocolLevel22;
    })(ProtocolLevel2 || {});
    var Relationship2 = /* @__PURE__ */ ((Relationship22) => {
      Relationship22[Relationship22["UNKNOWN"] = 0] = "UNKNOWN";
      Relationship22[Relationship22["DEFAULT"] = 1] = "DEFAULT";
      Relationship22[Relationship22["CONTAINS"] = 2] = "CONTAINS";
      Relationship22[Relationship22["CONTAINED_BY"] = 3] = "CONTAINED_BY";
      Relationship22[Relationship22["USES"] = 4] = "USES";
      Relationship22[Relationship22["USED_BY"] = 5] = "USED_BY";
      Relationship22[Relationship22["COMMANDS"] = 6] = "COMMANDS";
      Relationship22[Relationship22["COMMANDED_BY"] = 7] = "COMMANDED_BY";
      Relationship22[Relationship22["ADJUSTS"] = 8] = "ADJUSTS";
      Relationship22[Relationship22["ADJUSTED_BY"] = 9] = "ADJUSTED_BY";
      Relationship22[Relationship22["INGRESS"] = 10] = "INGRESS";
      Relationship22[Relationship22["EGRESS"] = 11] = "EGRESS";
      Relationship22[Relationship22["SUPPLIES_AIR"] = 12] = "SUPPLIES_AIR";
      Relationship22[Relationship22["RECEIVES_AIR"] = 13] = "RECEIVES_AIR";
      Relationship22[Relationship22["SUPPLIES_HOT_AIR"] = 14] = "SUPPLIES_HOT_AIR";
      Relationship22[Relationship22["RECEIVES_HOT_AIR"] = 15] = "RECEIVES_HOT_AIR";
      Relationship22[Relationship22["SUPPLIES_COOL_AIR"] = 16] = "SUPPLIES_COOL_AIR";
      Relationship22[Relationship22["RECEIVES_COOL_AIR"] = 17] = "RECEIVES_COOL_AIR";
      Relationship22[Relationship22["SUPPLIES_POWER"] = 18] = "SUPPLIES_POWER";
      Relationship22[Relationship22["RECEIVES_POWER"] = 19] = "RECEIVES_POWER";
      Relationship22[Relationship22["SUPPLIES_GAS"] = 20] = "SUPPLIES_GAS";
      Relationship22[Relationship22["RECEIVES_GAS"] = 21] = "RECEIVES_GAS";
      Relationship22[Relationship22["SUPPLIES_WATER"] = 22] = "SUPPLIES_WATER";
      Relationship22[Relationship22["RECEIVES_WATER"] = 23] = "RECEIVES_WATER";
      Relationship22[Relationship22["SUPPLIES_HOT_WATER"] = 24] = "SUPPLIES_HOT_WATER";
      Relationship22[Relationship22["RECEIVES_HOT_WATER"] = 25] = "RECEIVES_HOT_WATER";
      Relationship22[Relationship22["SUPPLIES_COOL_WATER"] = 26] = "SUPPLIES_COOL_WATER";
      Relationship22[Relationship22["RECEIVES_COOL_WATER"] = 27] = "RECEIVES_COOL_WATER";
      Relationship22[Relationship22["SUPPLIES_STEAM"] = 28] = "SUPPLIES_STEAM";
      Relationship22[Relationship22["RECEIVES_STEAM"] = 29] = "RECEIVES_STEAM";
      return Relationship22;
    })(Relationship2 || {});
    var Reliability2 = /* @__PURE__ */ ((Reliability22) => {
      Reliability22[Reliability22["NO_FAULT_DETECTED"] = 0] = "NO_FAULT_DETECTED";
      Reliability22[Reliability22["NO_SENSOR"] = 1] = "NO_SENSOR";
      Reliability22[Reliability22["OVER_RANGE"] = 2] = "OVER_RANGE";
      Reliability22[Reliability22["UNDER_RANGE"] = 3] = "UNDER_RANGE";
      Reliability22[Reliability22["OPEN_LOOP"] = 4] = "OPEN_LOOP";
      Reliability22[Reliability22["SHORTED_LOOP"] = 5] = "SHORTED_LOOP";
      Reliability22[Reliability22["NO_OUTPUT"] = 6] = "NO_OUTPUT";
      Reliability22[Reliability22["UNRELIABLE_OTHER"] = 7] = "UNRELIABLE_OTHER";
      Reliability22[Reliability22["PROCESS_ERROR"] = 8] = "PROCESS_ERROR";
      Reliability22[Reliability22["MULTI_STATE_FAULT"] = 9] = "MULTI_STATE_FAULT";
      Reliability22[Reliability22["CONFIGURATION_ERROR"] = 10] = "CONFIGURATION_ERROR";
      Reliability22[Reliability22["COMMUNICATION_FAILURE"] = 12] = "COMMUNICATION_FAILURE";
      Reliability22[Reliability22["MEMBER_FAULT"] = 13] = "MEMBER_FAULT";
      Reliability22[Reliability22["MONITORED_OBJECT_FAULT"] = 14] = "MONITORED_OBJECT_FAULT";
      Reliability22[Reliability22["TRIPPED"] = 15] = "TRIPPED";
      Reliability22[Reliability22["LAMP_FAILURE"] = 16] = "LAMP_FAILURE";
      Reliability22[Reliability22["ACTIVATION_FAILURE"] = 17] = "ACTIVATION_FAILURE";
      Reliability22[Reliability22["RENEW_DHCP_FAILURE"] = 18] = "RENEW_DHCP_FAILURE";
      Reliability22[Reliability22["RENEW_FD_REGISTRATION_FAILURE"] = 19] = "RENEW_FD_REGISTRATION_FAILURE";
      Reliability22[Reliability22["RESTART_AUTO_NEGOTIATION_FAILURE"] = 20] = "RESTART_AUTO_NEGOTIATION_FAILURE";
      Reliability22[Reliability22["RESTART_FAILURE"] = 21] = "RESTART_FAILURE";
      Reliability22[Reliability22["PROPRIETARY_COMMAND_FAILURE"] = 22] = "PROPRIETARY_COMMAND_FAILURE";
      Reliability22[Reliability22["FAULTS_LISTED"] = 23] = "FAULTS_LISTED";
      Reliability22[Reliability22["REFERENCED_OBJECT_FAULT"] = 24] = "REFERENCED_OBJECT_FAULT";
      return Reliability22;
    })(Reliability2 || {});
    var RestartReason2 = /* @__PURE__ */ ((RestartReason22) => {
      RestartReason22[RestartReason22["UNKNOWN"] = 0] = "UNKNOWN";
      RestartReason22[RestartReason22["COLDSTART"] = 1] = "COLDSTART";
      RestartReason22[RestartReason22["WARMSTART"] = 2] = "WARMSTART";
      RestartReason22[RestartReason22["DETECTED_POWER_LOST"] = 3] = "DETECTED_POWER_LOST";
      RestartReason22[RestartReason22["DETECTED_POWERED_OFF"] = 4] = "DETECTED_POWERED_OFF";
      RestartReason22[RestartReason22["HARDWARE_WATCHDOG"] = 5] = "HARDWARE_WATCHDOG";
      RestartReason22[RestartReason22["SOFTWARE_WATCHDOG"] = 6] = "SOFTWARE_WATCHDOG";
      RestartReason22[RestartReason22["SUSPENDED"] = 7] = "SUSPENDED";
      RestartReason22[RestartReason22["ACTIVATE_CHANGES"] = 8] = "ACTIVATE_CHANGES";
      return RestartReason22;
    })(RestartReason2 || {});
    var SecurityLevel2 = /* @__PURE__ */ ((SecurityLevel22) => {
      SecurityLevel22[SecurityLevel22["INCAPABLE"] = 0] = "INCAPABLE";
      SecurityLevel22[SecurityLevel22["PLAIN"] = 1] = "PLAIN";
      SecurityLevel22[SecurityLevel22["SIGNED"] = 2] = "SIGNED";
      SecurityLevel22[SecurityLevel22["ENCRYPTED"] = 3] = "ENCRYPTED";
      SecurityLevel22[SecurityLevel22["SIGNED_END_TO_END"] = 4] = "SIGNED_END_TO_END";
      SecurityLevel22[SecurityLevel22["ENCRYPTED_END_TO_END"] = 5] = "ENCRYPTED_END_TO_END";
      return SecurityLevel22;
    })(SecurityLevel2 || {});
    var SecurityPolicy2 = /* @__PURE__ */ ((SecurityPolicy22) => {
      SecurityPolicy22[SecurityPolicy22["PLAIN_NON_TRUSTED"] = 0] = "PLAIN_NON_TRUSTED";
      SecurityPolicy22[SecurityPolicy22["PLAIN_TRUSTED"] = 1] = "PLAIN_TRUSTED";
      SecurityPolicy22[SecurityPolicy22["SIGNED_TRUSTED"] = 2] = "SIGNED_TRUSTED";
      SecurityPolicy22[SecurityPolicy22["ENCRYPTED_TRUSTED"] = 3] = "ENCRYPTED_TRUSTED";
      return SecurityPolicy22;
    })(SecurityPolicy2 || {});
    var Segmentation2 = /* @__PURE__ */ ((Segmentation22) => {
      Segmentation22[Segmentation22["SEGMENTED_BOTH"] = 0] = "SEGMENTED_BOTH";
      Segmentation22[Segmentation22["SEGMENTED_TRANSMIT"] = 1] = "SEGMENTED_TRANSMIT";
      Segmentation22[Segmentation22["SEGMENTED_RECEIVE"] = 2] = "SEGMENTED_RECEIVE";
      Segmentation22[Segmentation22["NO_SEGMENTATION"] = 3] = "NO_SEGMENTATION";
      return Segmentation22;
    })(Segmentation2 || {});
    var ShedState2 = /* @__PURE__ */ ((ShedState22) => {
      ShedState22[ShedState22["SHED_INACTIVE"] = 0] = "SHED_INACTIVE";
      ShedState22[ShedState22["SHED_REQUEST_PENDING"] = 1] = "SHED_REQUEST_PENDING";
      ShedState22[ShedState22["SHED_COMPLIANT"] = 2] = "SHED_COMPLIANT";
      ShedState22[ShedState22["SHED_NON_COMPLIANT"] = 3] = "SHED_NON_COMPLIANT";
      return ShedState22;
    })(ShedState2 || {});
    var SilencedState2 = /* @__PURE__ */ ((SilencedState22) => {
      SilencedState22[SilencedState22["UNSILENCED"] = 0] = "UNSILENCED";
      SilencedState22[SilencedState22["AUDIBLE_SILENCED"] = 1] = "AUDIBLE_SILENCED";
      SilencedState22[SilencedState22["VISIBLE_SILENCED"] = 2] = "VISIBLE_SILENCED";
      SilencedState22[SilencedState22["ALL_SILENCED"] = 3] = "ALL_SILENCED";
      return SilencedState22;
    })(SilencedState2 || {});
    var TimerState2 = /* @__PURE__ */ ((TimerState22) => {
      TimerState22[TimerState22["IDLE"] = 0] = "IDLE";
      TimerState22[TimerState22["RUNNING"] = 1] = "RUNNING";
      TimerState22[TimerState22["EXPIRED"] = 2] = "EXPIRED";
      return TimerState22;
    })(TimerState2 || {});
    var TimerTransition2 = /* @__PURE__ */ ((TimerTransition22) => {
      TimerTransition22[TimerTransition22["NONE"] = 0] = "NONE";
      TimerTransition22[TimerTransition22["IDLE_TO_RUNNING"] = 1] = "IDLE_TO_RUNNING";
      TimerTransition22[TimerTransition22["RUNNING_TO_IDLE"] = 2] = "RUNNING_TO_IDLE";
      TimerTransition22[TimerTransition22["RUNNING_TO_RUNNING"] = 3] = "RUNNING_TO_RUNNING";
      TimerTransition22[TimerTransition22["RUNNING_TO_EXPIRED"] = 4] = "RUNNING_TO_EXPIRED";
      TimerTransition22[TimerTransition22["FORCED_TO_EXPIRED"] = 5] = "FORCED_TO_EXPIRED";
      TimerTransition22[TimerTransition22["EXPIRED_TO_IDLE"] = 6] = "EXPIRED_TO_IDLE";
      TimerTransition22[TimerTransition22["EXPIRED_TO_RUNNING"] = 7] = "EXPIRED_TO_RUNNING";
      return TimerTransition22;
    })(TimerTransition2 || {});
    var VTClass2 = /* @__PURE__ */ ((VTClass22) => {
      VTClass22[VTClass22["DEFAULT_TERMINAL"] = 0] = "DEFAULT_TERMINAL";
      VTClass22[VTClass22["ANSI_X3_64"] = 1] = "ANSI_X3_64";
      VTClass22[VTClass22["DEC_VT52"] = 2] = "DEC_VT52";
      VTClass22[VTClass22["DEC_VT100"] = 3] = "DEC_VT100";
      VTClass22[VTClass22["DEC_VT220"] = 4] = "DEC_VT220";
      VTClass22[VTClass22["HP_700_94"] = 5] = "HP_700_94";
      VTClass22[VTClass22["IBM_3130"] = 6] = "IBM_3130";
      return VTClass22;
    })(VTClass2 || {});
    var WriteStatus2 = /* @__PURE__ */ ((WriteStatus22) => {
      WriteStatus22[WriteStatus22["IDLE"] = 0] = "IDLE";
      WriteStatus22[WriteStatus22["IN_PROGRESS"] = 1] = "IN_PROGRESS";
      WriteStatus22[WriteStatus22["SUCCESSFUL"] = 2] = "SUCCESSFUL";
      WriteStatus22[WriteStatus22["FAILED"] = 3] = "FAILED";
      return WriteStatus22;
    })(WriteStatus2 || {});
    var DaysOfWeek2 = /* @__PURE__ */ ((DaysOfWeek22) => {
      DaysOfWeek22[DaysOfWeek22["MONDAY"] = 0] = "MONDAY";
      DaysOfWeek22[DaysOfWeek22["TUESDAY"] = 1] = "TUESDAY";
      DaysOfWeek22[DaysOfWeek22["WEDNESDAY"] = 2] = "WEDNESDAY";
      DaysOfWeek22[DaysOfWeek22["THURSDAY"] = 3] = "THURSDAY";
      DaysOfWeek22[DaysOfWeek22["FRIDAY"] = 4] = "FRIDAY";
      DaysOfWeek22[DaysOfWeek22["SATURDAY"] = 5] = "SATURDAY";
      DaysOfWeek22[DaysOfWeek22["SUNDAY"] = 6] = "SUNDAY";
      return DaysOfWeek22;
    })(DaysOfWeek2 || {});
    var EventTransitionBits2 = /* @__PURE__ */ ((EventTransitionBits22) => {
      EventTransitionBits22[EventTransitionBits22["TO_OFFNORMAL"] = 0] = "TO_OFFNORMAL";
      EventTransitionBits22[EventTransitionBits22["TO_FAULT"] = 1] = "TO_FAULT";
      EventTransitionBits22[EventTransitionBits22["TO_NORMAL"] = 2] = "TO_NORMAL";
      return EventTransitionBits22;
    })(EventTransitionBits2 || {});
    var LimitEnable2 = /* @__PURE__ */ ((LimitEnable22) => {
      LimitEnable22[LimitEnable22["LOW_LIMIT_ENABLE"] = 0] = "LOW_LIMIT_ENABLE";
      LimitEnable22[LimitEnable22["HIGH_LIMIT_ENABLE"] = 1] = "HIGH_LIMIT_ENABLE";
      return LimitEnable22;
    })(LimitEnable2 || {});
    var LogStatus2 = /* @__PURE__ */ ((LogStatus22) => {
      LogStatus22[LogStatus22["LOG_DISABLED"] = 0] = "LOG_DISABLED";
      LogStatus22[LogStatus22["BUFFER_PURGED"] = 1] = "BUFFER_PURGED";
      LogStatus22[LogStatus22["LOG_INTERRUPTED"] = 2] = "LOG_INTERRUPTED";
      return LogStatus22;
    })(LogStatus2 || {});
    var ObjectTypesSupported2 = /* @__PURE__ */ ((ObjectTypesSupported22) => {
      ObjectTypesSupported22[ObjectTypesSupported22["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["BINARY_INPUT"] = 3] = "BINARY_INPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["BINARY_VALUE"] = 5] = "BINARY_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["CALENDAR"] = 6] = "CALENDAR";
      ObjectTypesSupported22[ObjectTypesSupported22["COMMAND"] = 7] = "COMMAND";
      ObjectTypesSupported22[ObjectTypesSupported22["DEVICE"] = 8] = "DEVICE";
      ObjectTypesSupported22[ObjectTypesSupported22["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
      ObjectTypesSupported22[ObjectTypesSupported22["FILE"] = 10] = "FILE";
      ObjectTypesSupported22[ObjectTypesSupported22["GROUP"] = 11] = "GROUP";
      ObjectTypesSupported22[ObjectTypesSupported22["LOOP"] = 12] = "LOOP";
      ObjectTypesSupported22[ObjectTypesSupported22["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
      ObjectTypesSupported22[ObjectTypesSupported22["PROGRAM"] = 16] = "PROGRAM";
      ObjectTypesSupported22[ObjectTypesSupported22["SCHEDULE"] = 17] = "SCHEDULE";
      ObjectTypesSupported22[ObjectTypesSupported22["AVERAGING"] = 18] = "AVERAGING";
      ObjectTypesSupported22[ObjectTypesSupported22["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["TREND_LOG"] = 20] = "TREND_LOG";
      ObjectTypesSupported22[ObjectTypesSupported22["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
      ObjectTypesSupported22[ObjectTypesSupported22["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
      ObjectTypesSupported22[ObjectTypesSupported22["ACCUMULATOR"] = 23] = "ACCUMULATOR";
      ObjectTypesSupported22[ObjectTypesSupported22["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
      ObjectTypesSupported22[ObjectTypesSupported22["EVENT_LOG"] = 25] = "EVENT_LOG";
      ObjectTypesSupported22[ObjectTypesSupported22["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
      ObjectTypesSupported22[ObjectTypesSupported22["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
      ObjectTypesSupported22[ObjectTypesSupported22["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
      ObjectTypesSupported22[ObjectTypesSupported22["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
      ObjectTypesSupported22[ObjectTypesSupported22["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
      ObjectTypesSupported22[ObjectTypesSupported22["TIMER"] = 31] = "TIMER";
      ObjectTypesSupported22[ObjectTypesSupported22["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
      ObjectTypesSupported22[ObjectTypesSupported22["ACCESS_POINT"] = 33] = "ACCESS_POINT";
      ObjectTypesSupported22[ObjectTypesSupported22["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
      ObjectTypesSupported22[ObjectTypesSupported22["ACCESS_USER"] = 35] = "ACCESS_USER";
      ObjectTypesSupported22[ObjectTypesSupported22["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
      ObjectTypesSupported22[ObjectTypesSupported22["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
      ObjectTypesSupported22[ObjectTypesSupported22["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["DATE_VALUE"] = 42] = "DATE_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["TIME_VALUE"] = 50] = "TIME_VALUE";
      ObjectTypesSupported22[ObjectTypesSupported22["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
      ObjectTypesSupported22[ObjectTypesSupported22["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
      ObjectTypesSupported22[ObjectTypesSupported22["CHANNEL"] = 53] = "CHANNEL";
      ObjectTypesSupported22[ObjectTypesSupported22["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
      ObjectTypesSupported22[ObjectTypesSupported22["NETWORK_PORT"] = 56] = "NETWORK_PORT";
      ObjectTypesSupported22[ObjectTypesSupported22["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
      ObjectTypesSupported22[ObjectTypesSupported22["ESCALATOR"] = 58] = "ESCALATOR";
      ObjectTypesSupported22[ObjectTypesSupported22["LIFT"] = 59] = "LIFT";
      return ObjectTypesSupported22;
    })(ObjectTypesSupported2 || {});
    var ResultFlags2 = /* @__PURE__ */ ((ResultFlags22) => {
      ResultFlags22[ResultFlags22["FIRST_ITEM"] = 0] = "FIRST_ITEM";
      ResultFlags22[ResultFlags22["LAST_ITEM"] = 1] = "LAST_ITEM";
      ResultFlags22[ResultFlags22["MORE_ITEMS"] = 2] = "MORE_ITEMS";
      return ResultFlags22;
    })(ResultFlags2 || {});
    var ServicesSupported2 = /* @__PURE__ */ ((ServicesSupported22) => {
      ServicesSupported22[ServicesSupported22["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
      ServicesSupported22[ServicesSupported22["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
      ServicesSupported22[ServicesSupported22["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
      ServicesSupported22[ServicesSupported22["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
      ServicesSupported22[ServicesSupported22["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
      ServicesSupported22[ServicesSupported22["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
      ServicesSupported22[ServicesSupported22["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
      ServicesSupported22[ServicesSupported22["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
      ServicesSupported22[ServicesSupported22["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
      ServicesSupported22[ServicesSupported22["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
      ServicesSupported22[ServicesSupported22["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
      ServicesSupported22[ServicesSupported22["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
      ServicesSupported22[ServicesSupported22["READ_PROPERTY"] = 12] = "READ_PROPERTY";
      ServicesSupported22[ServicesSupported22["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
      ServicesSupported22[ServicesSupported22["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
      ServicesSupported22[ServicesSupported22["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
      ServicesSupported22[ServicesSupported22["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
      ServicesSupported22[ServicesSupported22["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
      ServicesSupported22[ServicesSupported22["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
      ServicesSupported22[ServicesSupported22["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
      ServicesSupported22[ServicesSupported22["VT_OPEN"] = 21] = "VT_OPEN";
      ServicesSupported22[ServicesSupported22["VT_CLOSE"] = 22] = "VT_CLOSE";
      ServicesSupported22[ServicesSupported22["VT_DATA"] = 23] = "VT_DATA";
      ServicesSupported22[ServicesSupported22["READ_PROPERTY_CONDITIONAL"] = 13] = "READ_PROPERTY_CONDITIONAL";
      ServicesSupported22[ServicesSupported22["AUTHENTICATE"] = 24] = "AUTHENTICATE";
      ServicesSupported22[ServicesSupported22["REQUEST_KEY"] = 25] = "REQUEST_KEY";
      ServicesSupported22[ServicesSupported22["I_AM"] = 26] = "I_AM";
      ServicesSupported22[ServicesSupported22["I_HAVE"] = 27] = "I_HAVE";
      ServicesSupported22[ServicesSupported22["UNCONFIRMED_COV_NOTIFICATION"] = 28] = "UNCONFIRMED_COV_NOTIFICATION";
      ServicesSupported22[ServicesSupported22["UNCONFIRMED_EVENT_NOTIFICATION"] = 29] = "UNCONFIRMED_EVENT_NOTIFICATION";
      ServicesSupported22[ServicesSupported22["UNCONFIRMED_PRIVATE_TRANSFER"] = 30] = "UNCONFIRMED_PRIVATE_TRANSFER";
      ServicesSupported22[ServicesSupported22["UNCONFIRMED_TEXT_MESSAGE"] = 31] = "UNCONFIRMED_TEXT_MESSAGE";
      ServicesSupported22[ServicesSupported22["TIME_SYNCHRONIZATION"] = 32] = "TIME_SYNCHRONIZATION";
      ServicesSupported22[ServicesSupported22["WHO_HAS"] = 33] = "WHO_HAS";
      ServicesSupported22[ServicesSupported22["WHO_IS"] = 34] = "WHO_IS";
      ServicesSupported22[ServicesSupported22["READ_RANGE"] = 35] = "READ_RANGE";
      ServicesSupported22[ServicesSupported22["UTC_TIME_SYNCHRONIZATION"] = 36] = "UTC_TIME_SYNCHRONIZATION";
      ServicesSupported22[ServicesSupported22["LIFE_SAFETY_OPERATION"] = 37] = "LIFE_SAFETY_OPERATION";
      ServicesSupported22[ServicesSupported22["SUBSCRIBE_COV_PROPERTY"] = 38] = "SUBSCRIBE_COV_PROPERTY";
      ServicesSupported22[ServicesSupported22["GET_EVENT_INFORMATION"] = 39] = "GET_EVENT_INFORMATION";
      ServicesSupported22[ServicesSupported22["WRITE_GROUP"] = 40] = "WRITE_GROUP";
      ServicesSupported22[ServicesSupported22["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 41] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
      ServicesSupported22[ServicesSupported22["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 42] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
      ServicesSupported22[ServicesSupported22["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 43] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
      return ServicesSupported22;
    })(ServicesSupported2 || {});
    var StatusFlags2 = /* @__PURE__ */ ((StatusFlags22) => {
      StatusFlags22[StatusFlags22["IN_ALARM"] = 0] = "IN_ALARM";
      StatusFlags22[StatusFlags22["FAULT"] = 1] = "FAULT";
      StatusFlags22[StatusFlags22["OVERRIDDEN"] = 2] = "OVERRIDDEN";
      StatusFlags22[StatusFlags22["OUT_OF_SERVICE"] = 3] = "OUT_OF_SERVICE";
      return StatusFlags22;
    })(StatusFlags2 || {});
    var ApplicationTag2 = /* @__PURE__ */ ((ApplicationTag22) => {
      ApplicationTag22[ApplicationTag22["NULL"] = 0] = "NULL";
      ApplicationTag22[ApplicationTag22["BOOLEAN"] = 1] = "BOOLEAN";
      ApplicationTag22[ApplicationTag22["UNSIGNED_INTEGER"] = 2] = "UNSIGNED_INTEGER";
      ApplicationTag22[ApplicationTag22["SIGNED_INTEGER"] = 3] = "SIGNED_INTEGER";
      ApplicationTag22[ApplicationTag22["REAL"] = 4] = "REAL";
      ApplicationTag22[ApplicationTag22["DOUBLE"] = 5] = "DOUBLE";
      ApplicationTag22[ApplicationTag22["OCTET_STRING"] = 6] = "OCTET_STRING";
      ApplicationTag22[ApplicationTag22["CHARACTER_STRING"] = 7] = "CHARACTER_STRING";
      ApplicationTag22[ApplicationTag22["BIT_STRING"] = 8] = "BIT_STRING";
      ApplicationTag22[ApplicationTag22["ENUMERATED"] = 9] = "ENUMERATED";
      ApplicationTag22[ApplicationTag22["DATE"] = 10] = "DATE";
      ApplicationTag22[ApplicationTag22["TIME"] = 11] = "TIME";
      ApplicationTag22[ApplicationTag22["OBJECTIDENTIFIER"] = 12] = "OBJECTIDENTIFIER";
      ApplicationTag22[ApplicationTag22["EMPTYLIST"] = 100] = "EMPTYLIST";
      ApplicationTag22[ApplicationTag22["WEEKNDAY"] = 101] = "WEEKNDAY";
      ApplicationTag22[ApplicationTag22["DATERANGE"] = 102] = "DATERANGE";
      ApplicationTag22[ApplicationTag22["DATETIME"] = 103] = "DATETIME";
      ApplicationTag22[ApplicationTag22["TIMESTAMP"] = 104] = "TIMESTAMP";
      ApplicationTag22[ApplicationTag22["ERROR"] = 105] = "ERROR";
      ApplicationTag22[ApplicationTag22["DEVICE_OBJECT_PROPERTY_REFERENCE"] = 106] = "DEVICE_OBJECT_PROPERTY_REFERENCE";
      ApplicationTag22[ApplicationTag22["DEVICE_OBJECT_REFERENCE"] = 107] = "DEVICE_OBJECT_REFERENCE";
      ApplicationTag22[ApplicationTag22["OBJECT_PROPERTY_REFERENCE"] = 108] = "OBJECT_PROPERTY_REFERENCE";
      ApplicationTag22[ApplicationTag22["DESTINATION"] = 109] = "DESTINATION";
      ApplicationTag22[ApplicationTag22["RECIPIENT"] = 110] = "RECIPIENT";
      ApplicationTag22[ApplicationTag22["COV_SUBSCRIPTION"] = 111] = "COV_SUBSCRIPTION";
      ApplicationTag22[ApplicationTag22["CALENDAR_ENTRY"] = 112] = "CALENDAR_ENTRY";
      ApplicationTag22[ApplicationTag22["WEEKLY_SCHEDULE"] = 113] = "WEEKLY_SCHEDULE";
      ApplicationTag22[ApplicationTag22["SPECIAL_EVENT"] = 114] = "SPECIAL_EVENT";
      ApplicationTag22[ApplicationTag22["READ_ACCESS_SPECIFICATION"] = 115] = "READ_ACCESS_SPECIFICATION";
      ApplicationTag22[ApplicationTag22["READ_ACCESS_RESULT"] = 116] = "READ_ACCESS_RESULT";
      ApplicationTag22[ApplicationTag22["LIGHTING_COMMAND"] = 117] = "LIGHTING_COMMAND";
      ApplicationTag22[ApplicationTag22["CONTEXT_SPECIFIC_DECODED"] = 118] = "CONTEXT_SPECIFIC_DECODED";
      ApplicationTag22[ApplicationTag22["CONTEXT_SPECIFIC_ENCODED"] = 119] = "CONTEXT_SPECIFIC_ENCODED";
      ApplicationTag22[ApplicationTag22["LOG_RECORD"] = 120] = "LOG_RECORD";
      return ApplicationTag22;
    })(ApplicationTag2 || {});
    var ApplicationTagName2 = invertEnum2(
      ApplicationTag2
    );
    var BvlcResultFormat2 = /* @__PURE__ */ ((BvlcResultFormat22) => {
      BvlcResultFormat22[BvlcResultFormat22["SUCCESSFUL_COMPLETION"] = 0] = "SUCCESSFUL_COMPLETION";
      BvlcResultFormat22[BvlcResultFormat22["WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 16] = "WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK";
      BvlcResultFormat22[BvlcResultFormat22["READ_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 32] = "READ_BROADCAST_DISTRIBUTION_TABLE_NAK";
      BvlcResultFormat22[BvlcResultFormat22["REGISTER_FOREIGN_DEVICE_NAK"] = 48] = "REGISTER_FOREIGN_DEVICE_NAK";
      BvlcResultFormat22[BvlcResultFormat22["READ_FOREIGN_DEVICE_TABLE_NAK"] = 64] = "READ_FOREIGN_DEVICE_TABLE_NAK";
      BvlcResultFormat22[BvlcResultFormat22["DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK"] = 80] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK";
      BvlcResultFormat22[BvlcResultFormat22["DISTRIBUTE_BROADCAST_TO_NETWORK_NAK"] = 96] = "DISTRIBUTE_BROADCAST_TO_NETWORK_NAK";
      return BvlcResultFormat22;
    })(BvlcResultFormat2 || {});
    var BvlcResultPurpose2 = /* @__PURE__ */ ((BvlcResultPurpose22) => {
      BvlcResultPurpose22[BvlcResultPurpose22["BVLC_RESULT"] = 0] = "BVLC_RESULT";
      BvlcResultPurpose22[BvlcResultPurpose22["WRITE_BROADCAST_DISTRIBUTION_TABLE"] = 1] = "WRITE_BROADCAST_DISTRIBUTION_TABLE";
      BvlcResultPurpose22[BvlcResultPurpose22["READ_BROADCAST_DISTRIBUTION_TABLE"] = 2] = "READ_BROADCAST_DISTRIBUTION_TABLE";
      BvlcResultPurpose22[BvlcResultPurpose22["READ_BROADCAST_DISTRIBUTION_TABLE_ACK"] = 3] = "READ_BROADCAST_DISTRIBUTION_TABLE_ACK";
      BvlcResultPurpose22[BvlcResultPurpose22["FORWARDED_NPDU"] = 4] = "FORWARDED_NPDU";
      BvlcResultPurpose22[BvlcResultPurpose22["REGISTER_FOREIGN_DEVICE"] = 5] = "REGISTER_FOREIGN_DEVICE";
      BvlcResultPurpose22[BvlcResultPurpose22["READ_FOREIGN_DEVICE_TABLE"] = 6] = "READ_FOREIGN_DEVICE_TABLE";
      BvlcResultPurpose22[BvlcResultPurpose22["READ_FOREIGN_DEVICE_TABLE_ACK"] = 7] = "READ_FOREIGN_DEVICE_TABLE_ACK";
      BvlcResultPurpose22[BvlcResultPurpose22["DELETE_FOREIGN_DEVICE_TABLE_ENTRY"] = 8] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY";
      BvlcResultPurpose22[BvlcResultPurpose22["DISTRIBUTE_BROADCAST_TO_NETWORK"] = 9] = "DISTRIBUTE_BROADCAST_TO_NETWORK";
      BvlcResultPurpose22[BvlcResultPurpose22["ORIGINAL_UNICAST_NPDU"] = 10] = "ORIGINAL_UNICAST_NPDU";
      BvlcResultPurpose22[BvlcResultPurpose22["ORIGINAL_BROADCAST_NPDU"] = 11] = "ORIGINAL_BROADCAST_NPDU";
      BvlcResultPurpose22[BvlcResultPurpose22["SECURE_BVLL"] = 12] = "SECURE_BVLL";
      return BvlcResultPurpose22;
    })(BvlcResultPurpose2 || {});
    var CharacterStringEncoding2 = /* @__PURE__ */ ((CharacterStringEncoding22) => {
      CharacterStringEncoding22[CharacterStringEncoding22["UTF_8"] = 0] = "UTF_8";
      CharacterStringEncoding22[CharacterStringEncoding22["MICROSOFT_DBCS"] = 1] = "MICROSOFT_DBCS";
      CharacterStringEncoding22[CharacterStringEncoding22["JIS_X_0208"] = 2] = "JIS_X_0208";
      CharacterStringEncoding22[CharacterStringEncoding22["UCS_4"] = 3] = "UCS_4";
      CharacterStringEncoding22[CharacterStringEncoding22["UCS_2"] = 4] = "UCS_2";
      CharacterStringEncoding22[CharacterStringEncoding22["ISO_8859_1"] = 5] = "ISO_8859_1";
      return CharacterStringEncoding22;
    })(CharacterStringEncoding2 || {});
    var CovType2 = /* @__PURE__ */ ((CovType22) => {
      CovType22[CovType22["REAL"] = 0] = "REAL";
      CovType22[CovType22["BIT_STRING"] = 1] = "BIT_STRING";
      return CovType22;
    })(CovType2 || {});
    var EnableDisable2 = /* @__PURE__ */ ((EnableDisable22) => {
      EnableDisable22[EnableDisable22["ENABLE"] = 0] = "ENABLE";
      EnableDisable22[EnableDisable22["DISABLE"] = 1] = "DISABLE";
      EnableDisable22[EnableDisable22["DISABLE_INITIATION"] = 2] = "DISABLE_INITIATION";
      return EnableDisable22;
    })(EnableDisable2 || {});
    var MaxApduLengthAccepted2 = /* @__PURE__ */ ((MaxApduLengthAccepted22) => {
      MaxApduLengthAccepted22[MaxApduLengthAccepted22["OCTETS_50"] = 0] = "OCTETS_50";
      MaxApduLengthAccepted22[MaxApduLengthAccepted22["OCTETS_128"] = 1] = "OCTETS_128";
      MaxApduLengthAccepted22[MaxApduLengthAccepted22["OCTETS_206"] = 2] = "OCTETS_206";
      MaxApduLengthAccepted22[MaxApduLengthAccepted22["OCTETS_480"] = 3] = "OCTETS_480";
      MaxApduLengthAccepted22[MaxApduLengthAccepted22["OCTETS_1024"] = 4] = "OCTETS_1024";
      MaxApduLengthAccepted22[MaxApduLengthAccepted22["OCTETS_1476"] = 5] = "OCTETS_1476";
      return MaxApduLengthAccepted22;
    })(MaxApduLengthAccepted2 || {});
    var MaxSegmentsAccepted2 = /* @__PURE__ */ ((MaxSegmentsAccepted22) => {
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_0"] = 0] = "SEGMENTS_0";
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_2"] = 16] = "SEGMENTS_2";
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_4"] = 32] = "SEGMENTS_4";
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_8"] = 48] = "SEGMENTS_8";
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_16"] = 64] = "SEGMENTS_16";
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_32"] = 80] = "SEGMENTS_32";
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_64"] = 96] = "SEGMENTS_64";
      MaxSegmentsAccepted22[MaxSegmentsAccepted22["SEGMENTS_65"] = 112] = "SEGMENTS_65";
      return MaxSegmentsAccepted22;
    })(MaxSegmentsAccepted2 || {});
    var NetworkLayerMessageType2 = /* @__PURE__ */ ((NetworkLayerMessageType22) => {
      NetworkLayerMessageType22[NetworkLayerMessageType22["WHO_IS_ROUTER_TO_NETWORK"] = 0] = "WHO_IS_ROUTER_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["I_AM_ROUTER_TO_NETWORK"] = 1] = "I_AM_ROUTER_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["I_COULD_BE_ROUTER_TO_NETWORK"] = 2] = "I_COULD_BE_ROUTER_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["REJECT_MESSAGE_TO_NETWORK"] = 3] = "REJECT_MESSAGE_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["ROUTER_BUSY_TO_NETWORK"] = 4] = "ROUTER_BUSY_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["ROUTER_AVAILABLE_TO_NETWORK"] = 5] = "ROUTER_AVAILABLE_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["INITIALIZE_ROUTING_TABLE"] = 6] = "INITIALIZE_ROUTING_TABLE";
      NetworkLayerMessageType22[NetworkLayerMessageType22["INITIALIZE_ROUTING_TABLE_ACK"] = 7] = "INITIALIZE_ROUTING_TABLE_ACK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["ESTABLISH_CONNECTION_TO_NETWORK"] = 8] = "ESTABLISH_CONNECTION_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["DISCONNECT_CONNECTION_TO_NETWORK"] = 9] = "DISCONNECT_CONNECTION_TO_NETWORK";
      NetworkLayerMessageType22[NetworkLayerMessageType22["CHALLENGE_REQUEST"] = 10] = "CHALLENGE_REQUEST";
      NetworkLayerMessageType22[NetworkLayerMessageType22["SECURITY_PAYLOAD"] = 11] = "SECURITY_PAYLOAD";
      NetworkLayerMessageType22[NetworkLayerMessageType22["SECURITY_RESPONSE"] = 12] = "SECURITY_RESPONSE";
      NetworkLayerMessageType22[NetworkLayerMessageType22["REQUEST_KEY_UPDATE"] = 13] = "REQUEST_KEY_UPDATE";
      NetworkLayerMessageType22[NetworkLayerMessageType22["UPDATE_KEY_SET"] = 14] = "UPDATE_KEY_SET";
      NetworkLayerMessageType22[NetworkLayerMessageType22["UPDATE_DISTRIBUTION_KEY"] = 15] = "UPDATE_DISTRIBUTION_KEY";
      NetworkLayerMessageType22[NetworkLayerMessageType22["REQUEST_MASTER_KEY"] = 16] = "REQUEST_MASTER_KEY";
      NetworkLayerMessageType22[NetworkLayerMessageType22["SET_MASTER_KEY"] = 17] = "SET_MASTER_KEY";
      NetworkLayerMessageType22[NetworkLayerMessageType22["WHAT_IS_NETWORK_NUMBER"] = 18] = "WHAT_IS_NETWORK_NUMBER";
      NetworkLayerMessageType22[NetworkLayerMessageType22["NETWORK_NUMBER_IS"] = 19] = "NETWORK_NUMBER_IS";
      return NetworkLayerMessageType22;
    })(NetworkLayerMessageType2 || {});
    var NpduControlBit2 = /* @__PURE__ */ ((NpduControlBit22) => {
      NpduControlBit22[NpduControlBit22["EXPECTING_REPLY"] = 4] = "EXPECTING_REPLY";
      NpduControlBit22[NpduControlBit22["SOURCE_SPECIFIED"] = 8] = "SOURCE_SPECIFIED";
      NpduControlBit22[NpduControlBit22["DESTINATION_SPECIFIED"] = 32] = "DESTINATION_SPECIFIED";
      NpduControlBit22[NpduControlBit22["NETWORK_LAYER_MESSAGE"] = 128] = "NETWORK_LAYER_MESSAGE";
      return NpduControlBit22;
    })(NpduControlBit2 || {});
    var NpduControlPriority2 = /* @__PURE__ */ ((NpduControlPriority22) => {
      NpduControlPriority22[NpduControlPriority22["NORMAL_MESSAGE"] = 0] = "NORMAL_MESSAGE";
      NpduControlPriority22[NpduControlPriority22["URGENT_MESSAGE"] = 1] = "URGENT_MESSAGE";
      NpduControlPriority22[NpduControlPriority22["CRITICAL_EQUIPMENT_MESSAGE"] = 2] = "CRITICAL_EQUIPMENT_MESSAGE";
      NpduControlPriority22[NpduControlPriority22["LIFE_SAFETY_MESSAGE"] = 3] = "LIFE_SAFETY_MESSAGE";
      return NpduControlPriority22;
    })(NpduControlPriority2 || {});
    var PduConReqBit2 = /* @__PURE__ */ ((PduConReqBit22) => {
      PduConReqBit22[PduConReqBit22["SEGMENTED_RESPONSE_ACCEPTED"] = 2] = "SEGMENTED_RESPONSE_ACCEPTED";
      PduConReqBit22[PduConReqBit22["MORE_FOLLOWS"] = 4] = "MORE_FOLLOWS";
      PduConReqBit22[PduConReqBit22["SEGMENTED_MESSAGE"] = 8] = "SEGMENTED_MESSAGE";
      return PduConReqBit22;
    })(PduConReqBit2 || {});
    var PduSegAckBit2 = /* @__PURE__ */ ((PduSegAckBit22) => {
      PduSegAckBit22[PduSegAckBit22["SERVER"] = 1] = "SERVER";
      PduSegAckBit22[PduSegAckBit22["NEGATIVE_ACK"] = 2] = "NEGATIVE_ACK";
      return PduSegAckBit22;
    })(PduSegAckBit2 || {});
    var PduType2 = /* @__PURE__ */ ((PduType22) => {
      PduType22[PduType22["CONFIRMED_REQUEST"] = 0] = "CONFIRMED_REQUEST";
      PduType22[PduType22["UNCONFIRMED_REQUEST"] = 16] = "UNCONFIRMED_REQUEST";
      PduType22[PduType22["SIMPLE_ACK"] = 32] = "SIMPLE_ACK";
      PduType22[PduType22["COMPLEX_ACK"] = 48] = "COMPLEX_ACK";
      PduType22[PduType22["SEGMENT_ACK"] = 64] = "SEGMENT_ACK";
      PduType22[PduType22["ERROR"] = 80] = "ERROR";
      PduType22[PduType22["REJECT"] = 96] = "REJECT";
      PduType22[PduType22["ABORT"] = 112] = "ABORT";
      return PduType22;
    })(PduType2 || {});
    var PropertyStates2 = /* @__PURE__ */ ((PropertyStates22) => {
      PropertyStates22[PropertyStates22["BOOLEAN_VALUE"] = 0] = "BOOLEAN_VALUE";
      PropertyStates22[PropertyStates22["BINARY_VALUE"] = 1] = "BINARY_VALUE";
      PropertyStates22[PropertyStates22["EVENT_TYPE"] = 2] = "EVENT_TYPE";
      PropertyStates22[PropertyStates22["POLARITY"] = 3] = "POLARITY";
      PropertyStates22[PropertyStates22["PROGRAM_CHANGE"] = 4] = "PROGRAM_CHANGE";
      PropertyStates22[PropertyStates22["PROGRAM_STATE"] = 5] = "PROGRAM_STATE";
      PropertyStates22[PropertyStates22["REASON_FOR_HALT"] = 6] = "REASON_FOR_HALT";
      PropertyStates22[PropertyStates22["RELIABILITY"] = 7] = "RELIABILITY";
      PropertyStates22[PropertyStates22["STATE"] = 8] = "STATE";
      PropertyStates22[PropertyStates22["SYSTEM_STATUS"] = 9] = "SYSTEM_STATUS";
      PropertyStates22[PropertyStates22["UNITS"] = 10] = "UNITS";
      PropertyStates22[PropertyStates22["UNSIGNED_VALUE"] = 11] = "UNSIGNED_VALUE";
      PropertyStates22[PropertyStates22["LIFE_SAFETY_MODE"] = 12] = "LIFE_SAFETY_MODE";
      PropertyStates22[PropertyStates22["LIFE_SAFETY_STATE"] = 13] = "LIFE_SAFETY_STATE";
      PropertyStates22[PropertyStates22["RESTART_REASON"] = 14] = "RESTART_REASON";
      PropertyStates22[PropertyStates22["DOOR_ALARM_STATE"] = 15] = "DOOR_ALARM_STATE";
      PropertyStates22[PropertyStates22["ACTION"] = 16] = "ACTION";
      PropertyStates22[PropertyStates22["DOOR_SECURED_STATUS"] = 17] = "DOOR_SECURED_STATUS";
      PropertyStates22[PropertyStates22["DOOR_STATUS"] = 18] = "DOOR_STATUS";
      PropertyStates22[PropertyStates22["DOOR_VALUE"] = 19] = "DOOR_VALUE";
      PropertyStates22[PropertyStates22["FILE_ACCESS_METHOD"] = 20] = "FILE_ACCESS_METHOD";
      PropertyStates22[PropertyStates22["LOCK_STATUS"] = 21] = "LOCK_STATUS";
      PropertyStates22[PropertyStates22["LIFE_SAFETY_OPERATION"] = 22] = "LIFE_SAFETY_OPERATION";
      PropertyStates22[PropertyStates22["MAINTENANCE"] = 23] = "MAINTENANCE";
      PropertyStates22[PropertyStates22["NODE_TYPE"] = 24] = "NODE_TYPE";
      PropertyStates22[PropertyStates22["NOTIFY_TYPE"] = 25] = "NOTIFY_TYPE";
      PropertyStates22[PropertyStates22["SECURITY_LEVEL"] = 26] = "SECURITY_LEVEL";
      PropertyStates22[PropertyStates22["SHED_STATE"] = 27] = "SHED_STATE";
      PropertyStates22[PropertyStates22["SILENCED_STATE"] = 28] = "SILENCED_STATE";
      PropertyStates22[PropertyStates22["ACCESS_EVENT"] = 30] = "ACCESS_EVENT";
      PropertyStates22[PropertyStates22["ZONE_OCCUPANCY_STATE"] = 31] = "ZONE_OCCUPANCY_STATE";
      PropertyStates22[PropertyStates22["ACCESS_CREDENTIAL_DISABLE_REASON"] = 32] = "ACCESS_CREDENTIAL_DISABLE_REASON";
      PropertyStates22[PropertyStates22["ACCESS_CREDENTIAL_DISABLE"] = 33] = "ACCESS_CREDENTIAL_DISABLE";
      PropertyStates22[PropertyStates22["AUTHENTICATION_STATUS"] = 34] = "AUTHENTICATION_STATUS";
      PropertyStates22[PropertyStates22["BACKUP_STATE"] = 36] = "BACKUP_STATE";
      PropertyStates22[PropertyStates22["WRITE_STATUS"] = 37] = "WRITE_STATUS";
      PropertyStates22[PropertyStates22["LIGHTING_IN_PROGRESS"] = 38] = "LIGHTING_IN_PROGRESS";
      PropertyStates22[PropertyStates22["LIGHTING_OPERATION"] = 39] = "LIGHTING_OPERATION";
      PropertyStates22[PropertyStates22["LIGHTING_TRANSITION"] = 40] = "LIGHTING_TRANSITION";
      PropertyStates22[PropertyStates22["INTEGER_VALUE"] = 41] = "INTEGER_VALUE";
      PropertyStates22[PropertyStates22["BINARY_LIGHTING_VALUE"] = 42] = "BINARY_LIGHTING_VALUE";
      PropertyStates22[PropertyStates22["TIMER_STATE"] = 43] = "TIMER_STATE";
      PropertyStates22[PropertyStates22["TIMER_TRANSITION"] = 44] = "TIMER_TRANSITION";
      PropertyStates22[PropertyStates22["BACNET_IP_MODE"] = 45] = "BACNET_IP_MODE";
      PropertyStates22[PropertyStates22["NETWORK_PORT_COMMAND"] = 46] = "NETWORK_PORT_COMMAND";
      PropertyStates22[PropertyStates22["NETWORK_TYPE"] = 47] = "NETWORK_TYPE";
      PropertyStates22[PropertyStates22["NETWORK_NUMBER_QUALITY"] = 48] = "NETWORK_NUMBER_QUALITY";
      PropertyStates22[PropertyStates22["ESCALATOR_OPERATION_DIRECTION"] = 49] = "ESCALATOR_OPERATION_DIRECTION";
      PropertyStates22[PropertyStates22["ESCALATOR_FAULT"] = 50] = "ESCALATOR_FAULT";
      PropertyStates22[PropertyStates22["ESCALATOR_MODE"] = 51] = "ESCALATOR_MODE";
      PropertyStates22[PropertyStates22["LIFT_CAR_DIRECTION"] = 52] = "LIFT_CAR_DIRECTION";
      PropertyStates22[PropertyStates22["LIFT_CAR_DOOR_COMMAND"] = 53] = "LIFT_CAR_DOOR_COMMAND";
      PropertyStates22[PropertyStates22["LIFT_CAR_DRIVE_STATUS"] = 54] = "LIFT_CAR_DRIVE_STATUS";
      PropertyStates22[PropertyStates22["LIFT_CAR_MODE"] = 55] = "LIFT_CAR_MODE";
      PropertyStates22[PropertyStates22["LIFT_GROUP_MODE"] = 56] = "LIFT_GROUP_MODE";
      PropertyStates22[PropertyStates22["LIFT_FAULT"] = 57] = "LIFT_FAULT";
      PropertyStates22[PropertyStates22["PROTOCOL_LEVEL"] = 58] = "PROTOCOL_LEVEL";
      PropertyStates22[PropertyStates22["EXTENDED_VALUE"] = 63] = "EXTENDED_VALUE";
      return PropertyStates22;
    })(PropertyStates2 || {});
    var ReadRangeType2 = /* @__PURE__ */ ((ReadRangeType22) => {
      ReadRangeType22[ReadRangeType22["BY_POSITION"] = 0] = "BY_POSITION";
      ReadRangeType22[ReadRangeType22["BY_SEQUENCE_NUMBER"] = 1] = "BY_SEQUENCE_NUMBER";
      ReadRangeType22[ReadRangeType22["BY_TIME_REFERENCE_TIME_COUNT"] = 2] = "BY_TIME_REFERENCE_TIME_COUNT";
      return ReadRangeType22;
    })(ReadRangeType2 || {});
    var ReinitializedState2 = /* @__PURE__ */ ((ReinitializedState22) => {
      ReinitializedState22[ReinitializedState22["COLDSTART"] = 0] = "COLDSTART";
      ReinitializedState22[ReinitializedState22["WARMSTART"] = 1] = "WARMSTART";
      ReinitializedState22[ReinitializedState22["STARTBACKUP"] = 2] = "STARTBACKUP";
      ReinitializedState22[ReinitializedState22["ENDBACKUP"] = 3] = "ENDBACKUP";
      ReinitializedState22[ReinitializedState22["STARTRESTORE"] = 4] = "STARTRESTORE";
      ReinitializedState22[ReinitializedState22["ENDRESTORE"] = 5] = "ENDRESTORE";
      ReinitializedState22[ReinitializedState22["ABORTRESTORE"] = 6] = "ABORTRESTORE";
      ReinitializedState22[ReinitializedState22["ACTIVATE_CHANGES"] = 7] = "ACTIVATE_CHANGES";
      return ReinitializedState22;
    })(ReinitializedState2 || {});
    var TimeStamp2 = /* @__PURE__ */ ((TimeStamp22) => {
      TimeStamp22[TimeStamp22["TIME"] = 0] = "TIME";
      TimeStamp22[TimeStamp22["SEQUENCE_NUMBER"] = 1] = "SEQUENCE_NUMBER";
      TimeStamp22[TimeStamp22["DATETIME"] = 2] = "DATETIME";
      return TimeStamp22;
    })(TimeStamp2 || {});
    var import_events22 = __toESM2(require("events"));
    var import_debug32 = __toESM2(require("debug"));
    var import_dgram2 = require("dgram");
    var import_events3 = __toESM2(require("events"));
    var import_debug22 = __toESM2(require("debug"));
    var EventEmitter3 = import_events3.default.EventEmitter;
    var debug22 = (0, import_debug22.default)("bacnet:client:debug");
    var DEFAULT_BACNET_PORT3 = 47808;
    var Transport2 = class extends EventEmitter3 {
      constructor(settings) {
        super();
        this._lastSendMessages = {};
        this._settings = settings;
        this._server = (0, import_dgram2.createSocket)({
          type: "udp4",
          reuseAddr: settings.reuseAddr
        });
        this._server.on("message", (msg, rinfo) => {
          if (this.ownAddress.port === rinfo.port) {
            for (let [messageKey, earlierSentBuffer] of Object.entries(
              this._lastSendMessages
            )) {
              if (msg.equals(earlierSentBuffer)) {
                debug22(
                  `server IGNORE message from ${rinfo.address}:${rinfo.port} (${messageKey}): ${msg.toString("hex")}`
                );
                return;
              }
            }
          }
          debug22(
            `server got message from ${rinfo.address}:${rinfo.port}: ${msg.toString(
              "hex"
            )}`
          );
          this.emit(
            "message",
            msg,
            rinfo.address + (rinfo.port === DEFAULT_BACNET_PORT3 ? "" : ":" + rinfo.port)
          );
        });
        this._server.on("listening", () => {
          this.ownAddress = this._server.address();
          debug22(
            `server listening on ${this.ownAddress.address}:${this.ownAddress.port}`
          );
          this.emit("listening", this.ownAddress);
        });
        this._server.on("error", (err) => {
          debug22("transport error", err.message);
          this.emit("error", err);
        });
        this._server.on("close", () => {
          debug22("transport closed");
          this.emit("close");
        });
      }
      getBroadcastAddress() {
        return this._settings.broadcastAddress;
      }
      getMaxPayload() {
        return 1482;
      }
      send(buffer, offset, receiver) {
        if (!receiver) {
          receiver = this.getBroadcastAddress();
          const dataToSend = Buffer.alloc(offset);
          const hrTime = process.hrtime();
          const messageKey = hrTime[0] * 1e9 + hrTime[1];
          buffer.copy(dataToSend, 0, 0, offset);
          this._lastSendMessages[messageKey] = dataToSend;
          setTimeout(() => {
            delete this._lastSendMessages[messageKey];
          }, 1e4);
        }
        const receiverAddress = typeof receiver === "string" ? receiver : receiver.address;
        const [address, port] = receiverAddress.split(":");
        debug22(
          "Send packet to " + receiver + ": " + buffer.toString("hex").substr(0, offset * 2)
        );
        this._server.send(buffer, 0, offset, +port || DEFAULT_BACNET_PORT3, address);
      }
      open() {
        this._server.bind(this._settings.port, this._settings.interface, () => {
          this._server.setBroadcast(true);
        });
      }
      close() {
        this._server.close();
      }
    };
    var services_exports2 = {};
    __export2(services_exports2, {
      addListElement: () => add_list_element_exports2,
      alarmAcknowledge: () => alarm_acknowledge_exports2,
      alarmSummary: () => alarm_summary_exports2,
      atomicReadFile: () => atomic_read_file_exports2,
      atomicWriteFile: () => atomic_write_file_exports2,
      covNotify: () => cov_notify_exports2,
      covNotifyUnconfirmed: () => cov_notify_exports2,
      createObject: () => create_object_exports2,
      deleteObject: () => delete_object_exports2,
      deviceCommunicationControl: () => device_communication_control_exports2,
      error: () => error_exports2,
      eventInformation: () => event_information_exports2,
      eventNotifyData: () => event_notify_data_exports2,
      getEnrollmentSummary: () => get_enrollment_summary_exports2,
      getEventInformation: () => get_event_information_exports2,
      iAm: () => i_am_exports2,
      iHave: () => i_have_exports2,
      lifeSafetyOperation: () => life_safety_operation_exports2,
      privateTransfer: () => private_transfer_exports2,
      readProperty: () => read_property_exports2,
      readPropertyMultiple: () => read_property_multiple_exports2,
      readRange: () => read_range_exports2,
      registerForeignDevice: () => register_foreign_device_exports2,
      reinitializeDevice: () => reinitialize_device_exports2,
      subscribeCov: () => subscribe_cov_exports2,
      subscribeProperty: () => subscribe_property_exports2,
      timeSync: () => time_sync_exports2,
      timeSyncUTC: () => time_sync_exports2,
      whoHas: () => who_has_exports2,
      whoIs: () => who_is_exports2,
      writeProperty: () => write_property_exports2,
      writePropertyMultiple: () => write_property_multiple_exports2
    });
    var add_list_element_exports2 = {};
    __export2(add_list_element_exports2, {
      decode: () => decode33,
      encode: () => encode33
    });
    var import_iconv_lite2 = __toESM2(require("iconv-lite"));
    var enums_default2 = enum_exports2;
    var START_YEAR2 = 1900;
    var MAX_YEARS2 = 256;
    var getBuffer2 = () => {
      return {
        buffer: Buffer.alloc(1472),
        offset: 0
      };
    };
    var getSignedLength2 = (value) => {
      if (value >= -128 && value < 128)
        return 1;
      else if (value >= -32768 && value < 32768)
        return 2;
      else if (value > -8388608 && value < 8388608)
        return 3;
      else
        return 4;
    };
    var getUnsignedLength2 = (value) => {
      if (value < 256)
        return 1;
      else if (value < 65536)
        return 2;
      else if (value < 16777216)
        return 3;
      else
        return 4;
    };
    var getEncodingType2 = (encoding, decodingBuffer, decodingOffset) => {
      switch (encoding) {
        case enums_default2.CharacterStringEncoding.UCS_2:
          if (decodingBuffer && decodingBuffer[decodingOffset] === 255 && decodingBuffer[decodingOffset + 1] === 254) {
            return "ucs2";
          }
          return "UTF-16BE";
        case enums_default2.CharacterStringEncoding.ISO_8859_1:
          return "latin1";
        case enums_default2.CharacterStringEncoding.MICROSOFT_DBCS:
          return "cp850";
        case enums_default2.CharacterStringEncoding.JIS_X_0208:
          return "Shift_JIS";
        default:
          return "utf8";
      }
    };
    var encodeUnsigned2 = (buffer, value, length) => {
      buffer.buffer.writeUIntBE(value, buffer.offset, length, true);
      buffer.offset += length;
    };
    var encodeBacnetUnsigned2 = (buffer, value) => {
      encodeUnsigned2(buffer, value, getUnsignedLength2(value));
    };
    var encodeSigned2 = (buffer, value, length) => {
      buffer.buffer.writeIntBE(value, buffer.offset, length, true);
      buffer.offset += length;
    };
    var encodeBacnetSigned2 = (buffer, value) => {
      encodeSigned2(buffer, value, getSignedLength2(value));
    };
    var encodeBacnetReal2 = (buffer, value) => {
      buffer.buffer.writeFloatBE(value, buffer.offset, true);
      buffer.offset += 4;
    };
    var encodeBacnetDouble2 = (buffer, value) => {
      buffer.buffer.writeDoubleBE(value, buffer.offset, true);
      buffer.offset += 8;
    };
    var decodeUnsigned2 = (buffer, offset, length) => {
      if (length === 0) {
        return {
          len: 0,
          value: 0
        };
      }
      return {
        len: length,
        //@ts-ignore
        value: buffer.readUIntBE(offset, length)
      };
    };
    var decodeEnumerated2 = (buffer, offset, length) => {
      return decodeUnsigned2(buffer, offset, length);
    };
    var encodeBacnetObjectId2 = (buffer, objectType, instance) => {
      const value = ((objectType & enums_default2.ASN1_MAX_OBJECT) << enums_default2.ASN1_INSTANCE_BITS | instance & enums_default2.ASN1_MAX_INSTANCE) >>> 0;
      encodeUnsigned2(buffer, value, 4);
    };
    var encodeTag2 = (buffer, tagNumber, contextSpecific, lenValueType) => {
      let len = 1;
      const tmp = new Array(3);
      tmp[0] = 0;
      if (contextSpecific) {
        tmp[0] |= 8;
      }
      if (tagNumber <= 14) {
        tmp[0] |= tagNumber << 4;
      } else {
        tmp[0] |= 240;
        tmp[1] = tagNumber;
        len++;
      }
      if (lenValueType <= 4) {
        tmp[0] |= lenValueType;
        Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
        buffer.offset += len;
      } else {
        tmp[0] |= 5;
        if (lenValueType <= 253) {
          tmp[len++] = lenValueType;
          Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
          buffer.offset += len;
        } else if (lenValueType <= 65535) {
          tmp[len++] = 254;
          Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
          buffer.offset += len;
          encodeUnsigned2(buffer, lenValueType, 2);
        } else {
          tmp[len++] = 255;
          Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
          buffer.offset += len;
          encodeUnsigned2(buffer, lenValueType, 4);
        }
      }
    };
    var encodeBacnetEnumerated2 = (buffer, value) => {
      encodeBacnetUnsigned2(buffer, value);
    };
    var isExtendedTagNumber2 = (x) => {
      return (x & 240) === 240;
    };
    var isExtendedValue2 = (x) => {
      return (x & 7) === 5;
    };
    var isContextSpecific2 = (x) => {
      return (x & 8) === 8;
    };
    var isOpeningTag2 = (x) => {
      return (x & 7) === 6;
    };
    var isClosingTag2 = (x) => {
      return (x & 7) === 7;
    };
    var encodeContextReal2 = (buffer, tagNumber, value) => {
      encodeTag2(buffer, tagNumber, true, 4);
      encodeBacnetReal2(buffer, value);
    };
    var encodeContextUnsigned2 = (buffer, tagNumber, value) => {
      encodeTag2(buffer, tagNumber, true, getUnsignedLength2(value));
      encodeBacnetUnsigned2(buffer, value);
    };
    var encodeContextEnumerated2 = (buffer, tagNumber, value) => {
      encodeContextUnsigned2(buffer, tagNumber, value);
    };
    var encodeOctetString2 = (buffer, octetString, octetOffset, octetCount) => {
      if (octetString) {
        for (let i = octetOffset; i < octetOffset + octetCount; i++) {
          buffer.buffer[buffer.offset++] = octetString[i];
        }
      }
    };
    var encodeApplicationOctetString2 = (buffer, octetString, octetOffset, octetCount) => {
      encodeTag2(buffer, enums_default2.ApplicationTag.OCTET_STRING, false, octetCount);
      encodeOctetString2(buffer, octetString, octetOffset, octetCount);
    };
    var encodeApplicationNull2 = (buffer) => {
      buffer.buffer[buffer.offset++] = enums_default2.ApplicationTag.NULL;
    };
    var encodeApplicationBoolean2 = (buffer, booleanValue) => {
      encodeTag2(buffer, enums_default2.ApplicationTag.BOOLEAN, false, booleanValue ? 1 : 0);
    };
    var encodeApplicationReal2 = (buffer, value) => {
      encodeTag2(buffer, enums_default2.ApplicationTag.REAL, false, 4);
      encodeBacnetReal2(buffer, value);
    };
    var encodeApplicationDouble2 = (buffer, value) => {
      encodeTag2(buffer, enums_default2.ApplicationTag.DOUBLE, false, 8);
      encodeBacnetDouble2(buffer, value);
    };
    var bitstringBytesUsed2 = (bitString) => {
      let len = 0;
      if (bitString.bitsUsed > 0) {
        const lastBit = bitString.bitsUsed - 1;
        const usedBytes = lastBit / 8 + 1;
        len = Math.floor(usedBytes);
      }
      return len;
    };
    var encodeApplicationObjectId2 = (buffer, objectType, instance) => {
      const tmp = getBuffer2();
      encodeBacnetObjectId2(tmp, objectType, instance);
      encodeTag2(buffer, enums_default2.ApplicationTag.OBJECTIDENTIFIER, false, tmp.offset);
      tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
      buffer.offset += tmp.offset;
    };
    var encodeApplicationUnsigned2 = (buffer, value) => {
      const tmp = getBuffer2();
      encodeBacnetUnsigned2(tmp, value);
      encodeTag2(buffer, enums_default2.ApplicationTag.UNSIGNED_INTEGER, false, tmp.offset);
      tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
      buffer.offset += tmp.offset;
    };
    var encodeApplicationEnumerated2 = (buffer, value) => {
      const tmp = getBuffer2();
      encodeBacnetEnumerated2(tmp, value);
      encodeTag2(buffer, enums_default2.ApplicationTag.ENUMERATED, false, tmp.offset);
      tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
      buffer.offset += tmp.offset;
    };
    var encodeApplicationSigned2 = (buffer, value) => {
      const tmp = getBuffer2();
      encodeBacnetSigned2(tmp, value);
      encodeTag2(buffer, enums_default2.ApplicationTag.SIGNED_INTEGER, false, tmp.offset);
      tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
      buffer.offset += tmp.offset;
    };
    var byteReverseBits2 = (inByte) => {
      let outByte = 0;
      if ((inByte & 1) > 0) {
        outByte |= 128;
      }
      if ((inByte & 2) > 0) {
        outByte |= 64;
      }
      if ((inByte & 4) > 0) {
        outByte |= 32;
      }
      if ((inByte & 8) > 0) {
        outByte |= 16;
      }
      if ((inByte & 16) > 0) {
        outByte |= 8;
      }
      if ((inByte & 32) > 0) {
        outByte |= 4;
      }
      if ((inByte & 64) > 0) {
        outByte |= 2;
      }
      if ((inByte & 128) > 0) {
        outByte |= 1;
      }
      return outByte;
    };
    var bitstringOctet2 = (bitString, octetIndex) => {
      let octet = 0;
      if (bitString.value && octetIndex < enums_default2.ASN1_MAX_BITSTRING_BYTES) {
        octet = bitString.value[octetIndex];
      }
      return octet;
    };
    var encodeBitstring2 = (buffer, bitString) => {
      if (bitString.bitsUsed === 0) {
        buffer.buffer[buffer.offset++] = 0;
      } else {
        const usedBytes = bitstringBytesUsed2(bitString);
        const remainingUsedBits = bitString.bitsUsed - (usedBytes - 1) * 8;
        buffer.buffer[buffer.offset++] = 8 - remainingUsedBits;
        for (let i = 0; i < usedBytes; i++) {
          buffer.buffer[buffer.offset++] = byteReverseBits2(
            bitstringOctet2(bitString, i)
          );
        }
      }
    };
    var encodeApplicationBitstring2 = (buffer, bitString) => {
      let bitStringEncodedLength = 1;
      bitStringEncodedLength += bitstringBytesUsed2(bitString);
      encodeTag2(
        buffer,
        enums_default2.ApplicationTag.BIT_STRING,
        false,
        bitStringEncodedLength
      );
      encodeBitstring2(buffer, bitString);
    };
    var encodeBacnetDate2 = (buffer, value) => {
      if (value === new Date(1, 1, 1)) {
        buffer.buffer[buffer.offset++] = 255;
        buffer.buffer[buffer.offset++] = 255;
        buffer.buffer[buffer.offset++] = 255;
        buffer.buffer[buffer.offset++] = 255;
        return;
      }
      if (value.getFullYear() >= START_YEAR2) {
        buffer.buffer[buffer.offset++] = value.getFullYear() - START_YEAR2;
      } else if (value.getFullYear() < MAX_YEARS2) {
        buffer.buffer[buffer.offset++] = value.getFullYear();
      } else {
        throw new Error("invaide year: " + value.getFullYear());
      }
      buffer.buffer[buffer.offset++] = value.getMonth();
      buffer.buffer[buffer.offset++] = value.getDate();
      buffer.buffer[buffer.offset++] = value.getDay() === 0 ? 7 : value.getDay();
    };
    var encodeApplicationDate2 = (buffer, value) => {
      encodeTag2(buffer, enums_default2.ApplicationTag.DATE, false, 4);
      encodeBacnetDate2(buffer, value);
    };
    var encodeBacnetTime2 = (buffer, value) => {
      buffer.buffer[buffer.offset++] = value.getHours();
      buffer.buffer[buffer.offset++] = value.getMinutes();
      buffer.buffer[buffer.offset++] = value.getSeconds();
      buffer.buffer[buffer.offset++] = value.getMilliseconds() / 10;
    };
    var encodeApplicationTime2 = (buffer, value) => {
      encodeTag2(buffer, enums_default2.ApplicationTag.TIME, false, 4);
      encodeBacnetTime2(buffer, value);
    };
    var bacappEncodeDatetime2 = (buffer, value) => {
      if (value !== new Date(1, 1, 1)) {
        encodeApplicationDate2(buffer, value);
        encodeApplicationTime2(buffer, value);
      }
    };
    var encodeContextObjectId2 = (buffer, tagNumber, objectType, instance) => {
      encodeTag2(buffer, tagNumber, true, 4);
      encodeBacnetObjectId2(buffer, objectType, instance);
    };
    var encodeOpeningTag2 = (buffer, tagNumber) => {
      let len = 1;
      const tmp = new Array(2);
      tmp[0] = 8;
      if (tagNumber <= 14) {
        tmp[0] |= tagNumber << 4;
      } else {
        tmp[0] |= 240;
        tmp[1] = tagNumber;
        len++;
      }
      tmp[0] |= 6;
      Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
      buffer.offset += len;
    };
    var encodeClosingTag2 = (buffer, tagNumber) => {
      let len = 1;
      const tmp = new Array(2);
      tmp[0] = 8;
      if (tagNumber <= 14) {
        tmp[0] |= tagNumber << 4;
      } else {
        tmp[0] |= 240;
        tmp[1] = tagNumber;
        len++;
      }
      tmp[0] |= 7;
      Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
      buffer.offset += len;
    };
    var encodeReadAccessSpecification2 = (buffer, value) => {
      encodeContextObjectId2(
        buffer,
        0,
        value.objectId.type,
        value.objectId.instance
      );
      encodeOpeningTag2(buffer, 1);
      value.properties.forEach((p) => {
        encodeContextEnumerated2(buffer, 0, p.id);
        if (p.index && p.index !== enums_default2.ASN1_ARRAY_ALL) {
          encodeContextUnsigned2(buffer, 1, p.index);
        }
      });
      encodeClosingTag2(buffer, 1);
    };
    var encodeContextBoolean2 = (buffer, tagNumber, booleanValue) => {
      encodeTag2(buffer, tagNumber, true, 1);
      buffer.buffer.writeUInt8(booleanValue ? 1 : 0, buffer.offset, true);
      buffer.offset += 1;
    };
    var encodeCovSubscription2 = (buffer, value) => {
      encodeOpeningTag2(buffer, 0);
      encodeOpeningTag2(buffer, 0);
      encodeOpeningTag2(buffer, 1);
      encodeApplicationUnsigned2(buffer, value.recipient.network);
      if (value.recipient.network === 65535) {
        encodeApplicationOctetString2(buffer, 0, 0, 0);
      } else {
        encodeApplicationOctetString2(
          buffer,
          value.recipient.address,
          0,
          value.recipient.address.length
        );
      }
      encodeClosingTag2(buffer, 1);
      encodeClosingTag2(buffer, 0);
      encodeContextUnsigned2(buffer, 1, value.subscriptionProcessId);
      encodeClosingTag2(buffer, 0);
      encodeOpeningTag2(buffer, 1);
      encodeContextObjectId2(
        buffer,
        0,
        value.monitoredObjectId.type,
        value.monitoredObjectId.instance
      );
      encodeContextEnumerated2(buffer, 1, value.monitoredProperty.id);
      if (value.monitoredProperty.index !== enums_default2.ASN1_ARRAY_ALL) {
        encodeContextUnsigned2(buffer, 2, value.monitoredProperty.index);
      }
      encodeClosingTag2(buffer, 1);
      encodeContextBoolean2(buffer, 2, value.issueConfirmedNotifications);
      encodeContextUnsigned2(buffer, 3, value.timeRemaining);
      if (value.covIncrement > 0) {
        encodeContextReal2(buffer, 4, value.covIncrement);
      }
    };
    var bacappEncodeApplicationData2 = (buffer, value) => {
      if (value.value === null) {
        value.type = enums_default2.ApplicationTag.NULL;
      }
      switch (value.type) {
        case enums_default2.ApplicationTag.NULL:
          encodeApplicationNull2(buffer);
          break;
        case enums_default2.ApplicationTag.BOOLEAN:
          encodeApplicationBoolean2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.UNSIGNED_INTEGER:
          encodeApplicationUnsigned2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.SIGNED_INTEGER:
          encodeApplicationSigned2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.REAL:
          encodeApplicationReal2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.DOUBLE:
          encodeApplicationDouble2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.OCTET_STRING:
          encodeApplicationOctetString2(buffer, value.value, 0, value.value.length);
          break;
        case enums_default2.ApplicationTag.CHARACTER_STRING:
          encodeApplicationCharacterString2(buffer, value.value, value.encoding);
          break;
        case enums_default2.ApplicationTag.BIT_STRING:
          encodeApplicationBitstring2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.ENUMERATED:
          encodeApplicationEnumerated2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.DATE:
          encodeApplicationDate2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.TIME:
          encodeApplicationTime2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.TIMESTAMP:
          bacappEncodeTimestamp2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.DATETIME:
          bacappEncodeDatetime2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.OBJECTIDENTIFIER:
          encodeApplicationObjectId2(buffer, value.value.type, value.value.instance);
          break;
        case enums_default2.ApplicationTag.COV_SUBSCRIPTION:
          encodeCovSubscription2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.READ_ACCESS_RESULT:
          encodeReadAccessResult2(buffer, value.value);
          break;
        case enums_default2.ApplicationTag.READ_ACCESS_SPECIFICATION:
          encodeReadAccessSpecification2(buffer, value.value);
          break;
        case void 0:
          throw new Error(
            "Cannot encode a value if the type has not been specified"
          );
        default:
          throw "No encode for ApplicationTag type: " + enums_default2.getEnumName(
            enums_default2.ApplicationTag,
            value.type
          );
      }
    };
    var bacappEncodeDeviceObjPropertyRef2 = (buffer, value) => {
      encodeContextObjectId2(
        buffer,
        0,
        value.objectId.type,
        value.objectId.instance
      );
      encodeContextEnumerated2(buffer, 1, value.id);
      if (value.arrayIndex !== enums_default2.ASN1_ARRAY_ALL) {
        encodeContextUnsigned2(buffer, 2, value.arrayIndex);
      }
      if (value.deviceIndentifier.type === enums_default2.ObjectType.DEVICE) {
        encodeContextObjectId2(
          buffer,
          3,
          value.deviceIndentifier.type,
          value.deviceIndentifier.instance
        );
      }
    };
    var bacappEncodeContextDeviceObjPropertyRef2 = (buffer, tagNumber, value) => {
      encodeOpeningTag2(buffer, tagNumber);
      bacappEncodeDeviceObjPropertyRef2(buffer, value);
      encodeClosingTag2(buffer, tagNumber);
    };
    var bacappEncodePropertyState2 = (buffer, value) => {
      switch (value.type) {
        case enums_default2.PropertyStates.BOOLEAN_VALUE:
          encodeContextBoolean2(buffer, 0, value.state === 1);
          break;
        case enums_default2.PropertyStates.BINARY_VALUE:
          encodeContextEnumerated2(buffer, 1, value.state);
          break;
        case enums_default2.PropertyStates.EVENT_TYPE:
          encodeContextEnumerated2(buffer, 2, value.state);
          break;
        case enums_default2.PropertyStates.POLARITY:
          encodeContextEnumerated2(buffer, 3, value.state);
          break;
        case enums_default2.PropertyStates.PROGRAM_CHANGE:
          encodeContextEnumerated2(buffer, 4, value.state);
          break;
        case enums_default2.PropertyStates.PROGRAM_STATE:
          encodeContextEnumerated2(buffer, 5, value.state);
          break;
        case enums_default2.PropertyStates.REASON_FOR_HALT:
          encodeContextEnumerated2(buffer, 6, value.state);
          break;
        case enums_default2.PropertyStates.RELIABILITY:
          encodeContextEnumerated2(buffer, 7, value.state);
          break;
        case enums_default2.PropertyStates.STATE:
          encodeContextEnumerated2(buffer, 8, value.state);
          break;
        case enums_default2.PropertyStates.SYSTEM_STATUS:
          encodeContextEnumerated2(buffer, 9, value.state);
          break;
        case enums_default2.PropertyStates.UNITS:
          encodeContextEnumerated2(buffer, 10, value.state);
          break;
        case enums_default2.PropertyStates.UNSIGNED_VALUE:
          encodeContextUnsigned2(buffer, 11, value.state);
          break;
        case enums_default2.PropertyStates.LIFE_SAFETY_MODE:
          encodeContextEnumerated2(buffer, 12, value.state);
          break;
        case enums_default2.PropertyStates.LIFE_SAFETY_STATE:
          encodeContextEnumerated2(buffer, 13, value.state);
          break;
        default:
          break;
      }
    };
    var encodeContextBitstring2 = (buffer, tagNumber, bitString) => {
      let bitStringEncodedLength = 1;
      bitStringEncodedLength += bitstringBytesUsed2(bitString);
      encodeTag2(buffer, tagNumber, true, bitStringEncodedLength);
      encodeBitstring2(buffer, bitString);
    };
    var encodeContextSigned2 = (buffer, tagNumber, value) => {
      encodeTag2(buffer, tagNumber, true, getSignedLength2(value));
      encodeBacnetSigned2(buffer, value);
    };
    var encodeContextTime2 = (buffer, tagNumber, value) => {
      encodeTag2(buffer, tagNumber, true, 4);
      encodeBacnetTime2(buffer, value);
    };
    var bacappEncodeContextDatetime2 = (buffer, tagNumber, value) => {
      if (value !== new Date(1, 1, 1)) {
        encodeOpeningTag2(buffer, tagNumber);
        bacappEncodeDatetime2(buffer, value);
        encodeClosingTag2(buffer, tagNumber);
      } else {
        throw new Error("wrong Datetime while bacapp encoding context");
      }
    };
    var decodeTagNumber2 = (buffer, offset) => {
      let len = 1;
      let tagNumber;
      if (isExtendedTagNumber2(buffer[offset])) {
        tagNumber = buffer[offset + 1];
        len++;
      } else {
        tagNumber = buffer[offset] >> 4;
      }
      return {
        len,
        tagNumber
      };
    };
    var decodeIsContextTag2 = (buffer, offset, tagNumber) => {
      const result = decodeTagNumber2(buffer, offset);
      return isContextSpecific2(buffer[offset]) && result.tagNumber === tagNumber;
    };
    var decodeIsOpeningTagNumber2 = (buffer, offset, tagNumber) => {
      const result = decodeTagNumber2(buffer, offset);
      return isOpeningTag2(buffer[offset]) && result.tagNumber === tagNumber;
    };
    var decodeIsClosingTagNumber2 = (buffer, offset, tagNumber) => {
      const result = decodeTagNumber2(buffer, offset);
      return isClosingTag2(buffer[offset]) && result.tagNumber === tagNumber;
    };
    var decodeIsClosingTag2 = (buffer, offset) => {
      return (buffer[offset] & 7) === 7;
    };
    var decodeIsOpeningTag2 = (buffer, offset) => {
      return (buffer[offset] & 7) === 6;
    };
    var decodeObjectId2 = (buffer, offset, NOT_USED_NUMBER = 0) => {
      const result = decodeUnsigned2(buffer, offset, 4);
      const objectType = result.value >> enums_default2.ASN1_INSTANCE_BITS & enums_default2.ASN1_MAX_OBJECT;
      const instance = result.value & enums_default2.ASN1_MAX_INSTANCE;
      return {
        len: result.len,
        objectType,
        instance
      };
    };
    var decodeObjectIdSafe2 = (buffer, offset, lenValue) => {
      if (lenValue !== 4) {
        return {
          len: 0,
          objectType: 0,
          instance: 0
        };
      } else {
        return decodeObjectId2(buffer, offset);
      }
    };
    var decodeTagNumberAndValue2 = (buffer, offset) => {
      let value;
      let result = decodeTagNumber2(buffer, offset);
      let len = result.len;
      if (isExtendedValue2(buffer[offset])) {
        if (buffer[offset + len] === 255) {
          len++;
          result = decodeUnsigned2(buffer, offset + len, 4);
          len += result.len;
          value = result.value;
        } else if (buffer[offset + len] === 254) {
          len++;
          result = decodeUnsigned2(buffer, offset + len, 2);
          len += result.len;
          value = result.value;
        } else {
          value = buffer[offset + len];
          len++;
        }
      } else if (isOpeningTag2(buffer[offset])) {
        value = 0;
      } else if (isClosingTag2(buffer[offset])) {
        value = 0;
      } else {
        value = buffer[offset] & 7;
      }
      return {
        len,
        tagNumber: result.tagNumber,
        value
      };
    };
    var bacappDecodeApplicationData2 = (buffer, offset, maxOffset, objectType, propertyId) => {
      if (!isContextSpecific2(buffer[offset])) {
        let result = decodeTagNumberAndValue2(buffer, offset);
        if (result) {
          let len = result.len;
          result = bacappDecodeData2(
            buffer,
            offset + len,
            maxOffset,
            result.tagNumber,
            result.value
          );
          if (!result) {
            return void 0;
          }
          let resObj = {
            len: len + result.len,
            type: result.type,
            value: result.value
          };
          if (result.encoding !== void 0)
            resObj.encoding = result.encoding;
          return resObj;
        }
      } else {
        return bacappDecodeContextApplicationData2(
          buffer,
          offset,
          maxOffset,
          objectType,
          propertyId
        );
      }
    };
    var encodeReadAccessResult2 = (buffer, value) => {
      encodeContextObjectId2(
        buffer,
        0,
        value.objectId.type,
        value.objectId.instance
      );
      encodeOpeningTag2(buffer, 1);
      value.values.forEach((item) => {
        encodeContextEnumerated2(buffer, 2, item.property.id);
        if (item.property.index !== enums_default2.ASN1_ARRAY_ALL) {
          encodeContextUnsigned2(buffer, 3, item.property.index);
        }
        if (item.value && item.value[0] && item.value[0].value && item.value[0].value.type === "BacnetError") {
          encodeOpeningTag2(buffer, 5);
          encodeApplicationEnumerated2(buffer, item.value[0].value.errorClass);
          encodeApplicationEnumerated2(buffer, item.value[0].value.errorCode);
          encodeClosingTag2(buffer, 5);
        } else {
          if (!item.value)
            throw new Error("No value in item");
          encodeOpeningTag2(buffer, 4);
          item.value.forEach((subItem) => {
            bacappEncodeApplicationData2(buffer, subItem);
          });
          encodeClosingTag2(buffer, 4);
        }
      });
      encodeClosingTag2(buffer, 1);
    };
    var decodeReadAccessResult2 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      let result = decodeObjectId2(buffer, offset + len);
      value.objectId = {
        type: result.objectType,
        instance: result.instance
      };
      len += result.len;
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        return -1;
      }
      len++;
      const values = [];
      while (apduLen - len > 0) {
        let newEntry = {};
        if (decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
          len++;
          break;
        }
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 2) {
          return void 0;
        }
        result = decodeEnumerated2(buffer, offset + len, result.value);
        newEntry.id = result.value;
        len += result.len;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        if (result.tagNumber === 3) {
          len += result.len;
          result = decodeUnsigned2(buffer, offset + len, result.value);
          newEntry.index = result.value;
          len += result.len;
        } else {
          newEntry.index = enums_default2.ASN1_ARRAY_ALL;
        }
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber === 4) {
          const localValues = [];
          while (len + offset <= buffer.length && !decodeIsClosingTagNumber2(buffer, offset + len, 4)) {
            let localResult = bacappDecodeApplicationData2(
              buffer,
              offset + len,
              apduLen + offset - 1,
              value.objectId.type,
              newEntry.id
            );
            if (!localResult) {
              return void 0;
            }
            len += localResult.len;
            let resObj = {
              value: localResult.value,
              type: localResult.type
            };
            if (localResult.encoding !== void 0)
              resObj.encoding = localResult.encoding;
            localValues.push(resObj);
          }
          if (!decodeIsClosingTagNumber2(buffer, offset + len, 4)) {
            return void 0;
          }
          if (localValues.count === 2 && localValues[0].type === enums_default2.ApplicationTag.DATE && localValues[1].type === enums_default2.ApplicationTag.TIME) {
            const date = localValues[0].value;
            const time = localValues[1].value;
            const bdatetime = new Date(
              date.year,
              date.month,
              date.day,
              time.hour,
              time.minute,
              time.second,
              time.millisecond
            );
            newEntry.value = [
              { type: enums_default2.ApplicationTag.DATETIME, value: bdatetime }
            ];
          } else {
            newEntry.value = localValues;
          }
          len++;
        } else if (result.tagNumber === 5) {
          let err = {};
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          result = decodeEnumerated2(buffer, offset + len, result.value);
          len += result.len;
          err.errorClass = result.value;
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          result = decodeEnumerated2(buffer, offset + len, result.value);
          len += result.len;
          err.errorCode = result.value;
          if (!decodeIsClosingTagNumber2(buffer, offset + len, 5)) {
            return void 0;
          }
          len++;
          newEntry.value = [
            {
              type: enums_default2.ApplicationTag.ERROR,
              value: err
            }
          ];
        }
        values.push(newEntry);
      }
      value.values = values;
      return {
        len,
        value
      };
    };
    var decodeSigned2 = (buffer, offset, length) => {
      return {
        len: length,
        value: buffer.readIntBE(offset, length, true)
      };
    };
    var decodeReal2 = (buffer, offset) => {
      return {
        len: 4,
        value: buffer.readFloatBE(offset, true)
      };
    };
    var decodeRealSafe2 = (buffer, offset, lenValue) => {
      if (lenValue !== 4) {
        return {
          len: lenValue,
          value: 0
        };
      } else {
        return decodeReal2(buffer, offset);
      }
    };
    var decodeDouble2 = (buffer, offset) => {
      return {
        len: 8,
        value: buffer.readDoubleBE(offset, true)
      };
    };
    var decodeDoubleSafe2 = (buffer, offset, lenValue) => {
      if (lenValue !== 8) {
        return {
          len: lenValue,
          value: 0
        };
      } else {
        return decodeDouble2(buffer, offset);
      }
    };
    var decodeOctetString2 = (buffer, offset, maxLength, octetStringOffset, octetStringLength) => {
      const octetString = [];
      for (let i = octetStringOffset; i < octetStringOffset + octetStringLength; i++) {
        octetString.push(buffer[offset + i]);
      }
      return {
        len: octetStringLength,
        value: octetString
      };
    };
    var multiCharsetCharacterstringDecode2 = (buffer, offset, maxLength, encoding, length) => {
      const stringBuf = Buffer.alloc(length);
      buffer.copy(stringBuf, 0, offset, offset + length);
      return {
        value: import_iconv_lite2.default.decode(stringBuf, getEncodingType2(encoding, buffer, offset)),
        len: length + 1,
        encoding
      };
    };
    var decodeCharacterString2 = (buffer, offset, maxLength, lenValue) => {
      return multiCharsetCharacterstringDecode2(
        buffer,
        offset + 1,
        maxLength,
        buffer[offset],
        lenValue - 1
      );
    };
    var bitstringSetBitsUsed2 = (bitString, bytesUsed, unusedBits) => {
      bitString.bitsUsed = bytesUsed * 8;
      bitString.bitsUsed -= unusedBits;
    };
    var decodeBitstring2 = (buffer, offset, lenValue) => {
      let len = 0;
      let bitString = {};
      bitString.value = [];
      if (lenValue > 0) {
        const bytesUsed = lenValue - 1;
        if (bytesUsed <= enums_default2.ASN1_MAX_BITSTRING_BYTES) {
          len = 1;
          for (let i = 0; i < bytesUsed; i++) {
            bitString.value.push(byteReverseBits2(buffer[offset + len++]));
          }
          const unusedBits = buffer[offset] & 7;
          bitstringSetBitsUsed2(bitString, bytesUsed, unusedBits);
        }
      }
      return {
        len,
        value: bitString
      };
    };
    var decodeDate2 = (buffer, offset) => {
      let date;
      const year = buffer[offset] + 1900;
      const month = buffer[offset + 1];
      const day = buffer[offset + 2];
      const wday = buffer[offset + 3];
      if (month === 255 && day === 255 && wday === 255 && year - 1900 === 255) {
        date = new Date(1, 1, 1);
      } else {
        date = new Date(year, month, day);
      }
      return {
        len: 4,
        value: date
      };
    };
    var decodeDateSafe2 = (buffer, offset, lenValue) => {
      if (lenValue !== 4) {
        return {
          len: lenValue,
          value: new Date(1, 1, 1)
        };
      } else {
        return decodeDate2(buffer, offset);
      }
    };
    var decodeApplicationDate2 = (buffer, offset) => {
      const result = decodeTagNumber2(buffer, offset);
      if (result.tagNumber === enums_default2.ApplicationTag.DATE) {
        const value = decodeDate2(buffer, offset + 1);
        return {
          len: value.len + 1,
          value
        };
      }
      return void 0;
    };
    var decodeBacnetTime2 = (buffer, offset, value = new Date(1, 1, 1)) => {
      const hour = buffer[offset + 0];
      const min = buffer[offset + 1];
      const sec = buffer[offset + 2];
      let hundredths = buffer[offset + 3];
      if (hour === 255 && min === 255 && sec === 255 && hundredths === 255) {
        value = new Date(1, 1, 1);
      } else {
        if (hundredths > 100)
          hundredths = 0;
        value = new Date(1, 1, 1, hour, min, sec, hundredths * 10);
      }
      return {
        len: 4,
        value
      };
    };
    var decodeBacnetTimeSafe2 = (buffer, offset, lenValue) => {
      if (lenValue !== 4) {
        return {
          len: lenValue,
          value: new Date(1, 1, 1)
        };
      } else {
        return decodeBacnetTime2(buffer, offset);
      }
    };
    var decodeApplicationTime2 = (buffer, offset) => {
      const result = decodeTagNumber2(buffer, offset);
      if (result.tagNumber === enums_default2.ApplicationTag.TIME) {
        const value = decodeBacnetTime2(buffer, offset + 1);
        return {
          len: value.len + 1,
          value
        };
      }
      return void 0;
    };
    var decodeBacnetDatetime2 = (buffer, offset) => {
      let len = 0;
      const date = decodeApplicationDate2(buffer, offset + len);
      len += date.len;
      const time = decodeApplicationTime2(buffer, offset + len);
      len += time.len;
      return {
        len,
        value: new Date(
          date.year,
          date.month,
          date.day,
          time.hour,
          time.minute,
          time.second,
          time.millisecond
        )
      };
    };
    var bacappDecodeData2 = (buffer, offset, maxLength, tagDataType, lenValueType) => {
      let result;
      let value = {
        len: 0,
        type: tagDataType
      };
      switch (tagDataType) {
        case enums_default2.ApplicationTag.NULL:
          value.value = null;
          break;
        case enums_default2.ApplicationTag.BOOLEAN:
          value.value = lenValueType > 0;
          break;
        case enums_default2.ApplicationTag.UNSIGNED_INTEGER:
          result = decodeUnsigned2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.SIGNED_INTEGER:
          result = decodeSigned2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.REAL:
          result = decodeRealSafe2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.DOUBLE:
          result = decodeDoubleSafe2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.OCTET_STRING:
          result = decodeOctetString2(buffer, offset, maxLength, 0, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.CHARACTER_STRING:
          result = decodeCharacterString2(buffer, offset, maxLength, lenValueType);
          value.len += result.len;
          value.value = result.value;
          value.encoding = result.encoding;
          break;
        case enums_default2.ApplicationTag.BIT_STRING:
          result = decodeBitstring2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.ENUMERATED:
          result = decodeEnumerated2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.DATE:
          result = decodeDateSafe2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.TIME:
          result = decodeBacnetTimeSafe2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = result.value;
          break;
        case enums_default2.ApplicationTag.OBJECTIDENTIFIER:
          result = decodeObjectIdSafe2(buffer, offset, lenValueType);
          value.len += result.len;
          value.value = { type: result.objectType, instance: result.instance };
          break;
        default:
          break;
      }
      return value;
    };
    var bacappContextTagType2 = (property, tagNumber) => {
      let tag = 0;
      switch (property) {
        case enums_default2.PropertyIdentifier.ACTUAL_SHED_LEVEL:
        case enums_default2.PropertyIdentifier.REQUESTED_SHED_LEVEL:
        case enums_default2.PropertyIdentifier.EXPECTED_SHED_LEVEL:
          switch (tagNumber) {
            case 0:
            case 1:
              tag = enums_default2.ApplicationTag.UNSIGNED_INTEGER;
              break;
            case 2:
              tag = enums_default2.ApplicationTag.REAL;
              break;
            default:
              break;
          }
          break;
        case enums_default2.PropertyIdentifier.ACTION:
          switch (tagNumber) {
            case 0:
            case 1:
              tag = enums_default2.ApplicationTag.OBJECTIDENTIFIER;
              break;
            case 2:
              tag = enums_default2.ApplicationTag.ENUMERATED;
              break;
            case 3:
            case 5:
            case 6:
              tag = enums_default2.ApplicationTag.UNSIGNED_INTEGER;
              break;
            case 7:
            case 8:
              tag = enums_default2.ApplicationTag.BOOLEAN;
              break;
            default:
              break;
          }
          break;
        case enums_default2.PropertyIdentifier.LIST_OF_GROUP_MEMBERS:
          switch (tagNumber) {
            case 0:
              tag = enums_default2.ApplicationTag.OBJECTIDENTIFIER;
              break;
            default:
              break;
          }
          break;
        case enums_default2.PropertyIdentifier.EXCEPTION_SCHEDULE:
          switch (tagNumber) {
            case 1:
              tag = enums_default2.ApplicationTag.OBJECTIDENTIFIER;
              break;
            case 3:
              tag = enums_default2.ApplicationTag.UNSIGNED_INTEGER;
              break;
            default:
              break;
          }
          break;
        case enums_default2.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY:
          switch (tagNumber) {
            case 0:
            case 3:
              tag = enums_default2.ApplicationTag.OBJECTIDENTIFIER;
              break;
            case 1:
              tag = enums_default2.ApplicationTag.ENUMERATED;
              break;
            case 2:
              tag = enums_default2.ApplicationTag.UNSIGNED_INTEGER;
              break;
            default:
              break;
          }
          break;
        case enums_default2.PropertyIdentifier.SUBORDINATE_LIST:
          switch (tagNumber) {
            case 0:
            case 1:
              tag = enums_default2.ApplicationTag.OBJECTIDENTIFIER;
              break;
            default:
              break;
          }
          break;
        case enums_default2.PropertyIdentifier.RECIPIENT_LIST:
          switch (tagNumber) {
            case 0:
              tag = enums_default2.ApplicationTag.OBJECTIDENTIFIER;
              break;
            default:
              break;
          }
          break;
        case enums_default2.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS:
          switch (tagNumber) {
            case 0:
            case 1:
              break;
            case 2:
              tag = enums_default2.ApplicationTag.BOOLEAN;
              break;
            case 3:
              tag = enums_default2.ApplicationTag.UNSIGNED_INTEGER;
              break;
            case 4:
              tag = enums_default2.ApplicationTag.REAL;
              break;
            default:
              break;
          }
          break;
        default:
          break;
      }
      return tag;
    };
    var decodeDeviceObjPropertyRef2 = (buffer, offset, NOTUSEDARG = 0) => {
      let len = 0;
      let arrayIndex = enums_default2.ASN1_ARRAY_ALL;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      let objectId = decodeObjectId2(buffer, offset + len);
      len += objectId.len;
      let result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      let id = decodeEnumerated2(buffer, offset + len, result.value);
      len += id.len;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      if (result.tagNumber === 2) {
        len += result.len;
        arrayIndex = decodeUnsigned2(buffer, offset + len, result.value);
        len += arrayIndex.len;
      }
      if (decodeIsContextTag2(buffer, offset + len, 3)) {
        if (!isClosingTag2(buffer[offset + len])) {
          len++;
          objectId = decodeObjectId2(buffer, offset + len);
          len += objectId.len;
        }
      }
      return {
        len,
        value: {
          objectId,
          id
        }
      };
    };
    var decodeReadAccessSpecification2 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      let decodedValue = decodeObjectId2(buffer, offset + len);
      value.objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      len += decodedValue.len;
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      const propertyIdAndArrayIndex = [];
      while (apduLen - len > 1 && !decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
        let propertyRef = {};
        if (!isContextSpecific2(buffer[offset + len])) {
          return void 0;
        }
        let result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 0) {
          return void 0;
        }
        if (len + result.value >= apduLen) {
          return void 0;
        }
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        propertyRef.id = decodedValue.value;
        len += decodedValue.len;
        propertyRef.index = enums_default2.ASN1_ARRAY_ALL;
        if (isContextSpecific2(buffer[offset + len]) && !isClosingTag2(buffer[offset + len])) {
          const tmp = decodeTagNumberAndValue2(buffer, offset + len);
          if (tmp.tagNumber === 1) {
            len += tmp.len;
            if (len + tmp.value >= apduLen) {
              return void 0;
            }
            decodedValue = decodeUnsigned2(buffer, offset + len, tmp.value);
            propertyRef.index = decodedValue.value;
            len += decodedValue.len;
          }
        }
        propertyIdAndArrayIndex.push(propertyRef);
      }
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      value.properties = propertyIdAndArrayIndex;
      return {
        len,
        value
      };
    };
    var decodeCovSubscription2 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      let result;
      let decodedValue;
      value.recipient = {};
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== enums_default2.ApplicationTag.UNSIGNED_INTEGER) {
        return void 0;
      }
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.recipient.net = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== enums_default2.ApplicationTag.OCTET_STRING) {
        return void 0;
      }
      decodedValue = decodeOctetString2(
        buffer,
        offset + len,
        apduLen,
        0,
        result.value
      );
      len += decodedValue.len;
      value.recipient.adr = decodedValue.value;
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.subscriptionProcessId = decodedValue.value;
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 0) {
        return void 0;
      }
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.monitoredObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.monitoredProperty = {};
      value.monitoredProperty.id = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      if (result.tagNumber === 2) {
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.monitoredProperty.index = decodedValue.value;
      } else {
        value.monitoredProperty.index = enums_default2.ASN1_ARRAY_ALL;
      }
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 2) {
        return void 0;
      }
      value.issueConfirmedNotifications = buffer[offset + len] > 0;
      len++;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 3) {
        return void 0;
      }
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.timeRemaining = decodedValue.value;
      if (len < apduLen && !isClosingTag2(buffer[offset + len])) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 4) {
          return void 0;
        }
        decodedValue = decodeReal2(buffer, offset + len);
        len += decodedValue.len;
        value.covIncrement = decodedValue.value;
      }
      return {
        len,
        value
      };
    };
    var decodeCalendarDate2 = (buffer, offset) => {
      return {
        len: 4,
        year: buffer[offset],
        month: buffer[offset + 1],
        day: buffer[offset + 2],
        wday: buffer[offset + 3]
      };
    };
    var decodeCalendarDateRange2 = (buffer, offset) => {
      let len = 1;
      const startDate = decodeDate2(buffer, offset + len);
      len += startDate.len + 1;
      const endDate = decodeDate2(buffer, offset + len);
      len += endDate.len + 1;
      return {
        len,
        startDate,
        endDate
      };
    };
    var decodeCalendarWeekDay2 = (buffer, offset) => {
      return {
        len: 3,
        month: buffer[offset],
        week: buffer[offset + 1],
        wday: buffer[offset + 2]
      };
    };
    var decodeCalendar2 = (buffer, offset, apduLen) => {
      let len = 0;
      const entries = [];
      let decodedValue;
      while (len < apduLen) {
        const result = decodeTagNumber2(buffer, offset + len);
        len += result.len;
        switch (result.tagNumber) {
          case 0:
            decodedValue = decodeCalendarDate2(buffer, offset + len);
            len += decodedValue.len;
            entries.push(decodedValue);
            break;
          case 1:
            decodedValue = decodeCalendarDateRange2(buffer, offset + len);
            len += decodedValue.len;
            entries.push(decodedValue);
            break;
          case 2:
            decodedValue = decodeCalendarWeekDay2(buffer, offset + len);
            len += decodedValue.len;
            entries.push(decodedValue);
            break;
          default:
            return {
              len: len - 1,
              value: entries
            };
        }
      }
    };
    var bacappDecodeContextApplicationData2 = (buffer, offset, maxOffset, objectType, propertyId) => {
      let len = 0;
      let result;
      if (isContextSpecific2(buffer[offset])) {
        if (propertyId === enums_default2.PropertyIdentifier.LIST_OF_GROUP_MEMBERS) {
          result = decodeReadAccessSpecification2(buffer, offset, maxOffset);
          if (!result) {
            return void 0;
          }
          return {
            type: enums_default2.ApplicationTag.READ_ACCESS_SPECIFICATION,
            value: result.value,
            len: result.len
          };
        } else if (propertyId === enums_default2.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS) {
          result = decodeCovSubscription2(buffer, offset, maxOffset);
          if (!result) {
            return void 0;
          }
          return {
            type: enums_default2.ApplicationTag.COV_SUBSCRIPTION,
            value: result.value,
            len: result.len
          };
        } else if (objectType === enums_default2.ObjectType.GROUP && propertyId === enums_default2.PropertyIdentifier.PRESENT_VALUE) {
          result = decodeReadAccessResult2(buffer, offset, maxOffset);
          if (!result) {
            return void 0;
          }
          return {
            type: enums_default2.ApplicationTag.READ_ACCESS_RESULT,
            value: result.value,
            len: result.len
          };
        } else if (propertyId === enums_default2.PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES || propertyId === enums_default2.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY || propertyId === enums_default2.PropertyIdentifier.OBJECT_PROPERTY_REFERENCE) {
          result = decodeDeviceObjPropertyRef2(buffer, offset, maxOffset);
          if (!result) {
            return void 0;
          }
          return {
            type: enums_default2.ApplicationTag.OBJECT_PROPERTY_REFERENCE,
            value: result.value,
            len: result.len
          };
        } else if (propertyId === enums_default2.PropertyIdentifier.DATE_LIST) {
          result = decodeCalendar2(buffer, offset, maxOffset);
          if (!result) {
            return void 0;
          }
          return {
            type: enums_default2.ApplicationTag.CONTEXT_SPECIFIC_DECODED,
            value: result.value,
            len: result.len
          };
        } else if (propertyId === enums_default2.PropertyIdentifier.EVENT_TIME_STAMPS) {
          let subEvtResult;
          let evtResult = decodeTagNumberAndValue2(buffer, offset + len);
          len += 1;
          if (evtResult.tagNumber === 0) {
            subEvtResult = decodeBacnetTime2(buffer, offset + 1);
            return {
              type: enums_default2.ApplicationTag.TIMESTAMP,
              value: subEvtResult.value,
              len: subEvtResult.len + 1
            };
          } else if (evtResult.tagNumber === 1) {
            subEvtResult = decodeUnsigned2(buffer, offset + len, evtResult.value);
            return {
              type: enums_default2.ApplicationTag.UNSIGNED_INTEGER,
              value: subEvtResult.value,
              len: subEvtResult.len + 1
            };
          } else if (evtResult.tagNumber === 2) {
            subEvtResult = decodeBacnetDatetime2(buffer, offset + len);
            return {
              type: enums_default2.ApplicationTag.TIMESTAMP,
              value: subEvtResult.value,
              len: subEvtResult.len + 2
            };
          } else {
            return void 0;
          }
        }
        const list = [];
        let tagResult = decodeTagNumberAndValue2(buffer, offset + len);
        let multipleValues = isOpeningTag2(buffer[offset + len]);
        while (len + offset <= maxOffset && !isClosingTag2(buffer[offset + len])) {
          let subResult = decodeTagNumberAndValue2(buffer, offset + len);
          if (!subResult) {
            return void 0;
          }
          if (subResult.value === 0) {
            len += subResult.len;
            result = bacappDecodeApplicationData2(
              buffer,
              offset + len,
              maxOffset,
              enums_default2.ASN1_MAX_OBJECT_TYPE,
              enums_default2.ASN1_MAX_PROPERTY_ID
            );
            if (!result) {
              return void 0;
            }
            list.push(result);
            len += result.len;
          } else {
            const overrideTagNumber = bacappContextTagType2(
              propertyId,
              subResult.tagNumber
            );
            if (overrideTagNumber !== enums_default2.ASN1_MAX_APPLICATION_TAG) {
              subResult.tagNumber = overrideTagNumber;
            }
            let bacappResult = bacappDecodeData2(
              buffer,
              offset + len + subResult.len,
              maxOffset,
              subResult.tagNumber,
              subResult.value
            );
            if (!bacappResult) {
              return void 0;
            }
            if (bacappResult.len === subResult.value) {
              let resObj = {
                value: bacappResult.value,
                type: bacappResult.type
              };
              if (bacappResult.encoding !== void 0)
                resObj.encoding = bacappResult.encoding;
              list.push(resObj);
              len += subResult.len + subResult.value;
            } else {
              list.push({
                value: buffer.slice(
                  offset + len + subResult.len,
                  offset + len + subResult.len + subResult.value
                ),
                type: enums_default2.ApplicationTag.CONTEXT_SPECIFIC_ENCODED
              });
              len += subResult.len + subResult.value;
            }
          }
          if (multipleValues === false) {
            return {
              len,
              value: list[0],
              type: enums_default2.ApplicationTag.CONTEXT_SPECIFIC_DECODED
            };
          }
        }
        if (len + offset > maxOffset) {
          return void 0;
        }
        if (decodeIsClosingTagNumber2(buffer, offset + len, tagResult.tagNumber)) {
          len++;
        }
        return {
          len,
          value: list,
          type: enums_default2.ApplicationTag.CONTEXT_SPECIFIC_DECODED
        };
      }
      return void 0;
    };
    var bacappEncodeTimestamp2 = (buffer, value) => {
      switch (value.type) {
        case enums_default2.TimeStamp.TIME:
          encodeContextTime2(buffer, 0, value.value);
          break;
        case enums_default2.TimeStamp.SEQUENCE_NUMBER:
          encodeContextUnsigned2(buffer, 1, value.value);
          break;
        case enums_default2.TimeStamp.DATETIME:
          bacappEncodeContextDatetime2(buffer, 2, value.value);
          break;
        default:
          throw new Error("NOT_IMPLEMENTED");
      }
    };
    var bacappEncodeContextTimestamp2 = (buffer, tagNumber, value) => {
      encodeOpeningTag2(buffer, tagNumber);
      bacappEncodeTimestamp2(buffer, value);
      encodeClosingTag2(buffer, tagNumber);
    };
    var decodeContextCharacterString2 = (buffer, offset, maxLength, tagNumber) => {
      let len = 0;
      if (!decodeIsContextTag2(buffer, offset + len, tagNumber)) {
        return void 0;
      }
      const result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      const decodedValue = multiCharsetCharacterstringDecode2(
        buffer,
        offset + 1 + len,
        maxLength,
        buffer[offset + len],
        result.value - 1
      );
      if (!decodedValue) {
        return void 0;
      }
      len += result.value;
      return {
        len,
        value: decodedValue.value,
        encoding: decodedValue.encoding
      };
    };
    var decodeIsContextTagWithLength2 = (buffer, offset, tagNumber) => {
      const result = decodeTagNumber2(buffer, offset);
      return {
        len: result.len,
        value: isContextSpecific2(buffer[offset]) && result.tagNumber === tagNumber
      };
    };
    var decodeContextObjectId2 = (buffer, offset, tagNumber) => {
      const result = decodeIsContextTagWithLength2(buffer, offset, tagNumber);
      if (!result.value) {
        return void 0;
      }
      const decodedValue = decodeObjectId2(buffer, offset + result.len);
      decodedValue.len = decodedValue.len + result.len;
      return decodedValue;
    };
    var encodeBacnetCharacterString2 = (buffer, value, encoding) => {
      encoding = encoding || enums_default2.CharacterStringEncoding.UTF_8;
      buffer.buffer[buffer.offset++] = encoding;
      const bufEncoded = import_iconv_lite2.default.encode(value, getEncodingType2(encoding));
      buffer.offset += bufEncoded.copy(buffer.buffer, buffer.offset);
    };
    var encodeApplicationCharacterString2 = (buffer, value, encoding) => {
      const tmp = getBuffer2();
      encodeBacnetCharacterString2(tmp, value, encoding);
      encodeTag2(buffer, enums_default2.ApplicationTag.CHARACTER_STRING, false, tmp.offset);
      tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
      buffer.offset += tmp.offset;
    };
    var encodeContextCharacterString2 = (buffer, tagNumber, value, encoding) => {
      const tmp = getBuffer2();
      encodeBacnetCharacterString2(tmp, value, encoding);
      encodeTag2(buffer, tagNumber, true, tmp.offset);
      tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
      buffer.offset += tmp.offset;
    };
    var encode33 = (buffer, objectId, propertyId, arrayIndex, values) => {
      encodeContextObjectId2(buffer, 0, objectId.type, objectId.instance);
      encodeContextEnumerated2(buffer, 1, propertyId);
      if (arrayIndex !== ASN1_ARRAY_ALL2) {
        encodeContextUnsigned2(buffer, 2, arrayIndex);
      }
      encodeOpeningTag2(buffer, 3);
      values.forEach((value) => {
        bacappEncodeApplicationData2(buffer, value);
      });
      encodeClosingTag2(buffer, 3);
    };
    var decode33 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let value = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.property = { id: decodedValue.value };
      if (len < apduLen && decodeIsContextTag2(buffer, offset + len, 2)) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.property.index = decodedValue.value;
      } else {
        value.property.index = ASN1_ARRAY_ALL2;
      }
      const values = [];
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 3)) {
        return void 0;
      }
      len++;
      while (apduLen - len > 1) {
        result = bacappDecodeApplicationData2(
          buffer,
          offset + len,
          apduLen + offset,
          value.objectId.type,
          value.property.id
        );
        if (!result) {
          return void 0;
        }
        len += result.len;
        delete result.len;
        values.push(result);
      }
      value.values = values;
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 3)) {
        return void 0;
      }
      len++;
      value.len = len;
      return value;
    };
    var alarm_acknowledge_exports2 = {};
    __export2(alarm_acknowledge_exports2, {
      decode: () => decode210,
      encode: () => encode210
    });
    var encode210 = (buffer, ackProcessId, eventObjectId, eventStateAcknowledged, ackSource, eventTimeStamp, ackTimeStamp) => {
      encodeContextUnsigned2(buffer, 0, ackProcessId);
      encodeContextObjectId2(
        buffer,
        1,
        eventObjectId.type,
        eventObjectId.instance
      );
      encodeContextEnumerated2(buffer, 2, eventStateAcknowledged);
      bacappEncodeContextTimestamp2(buffer, 3, eventTimeStamp);
      encodeContextCharacterString2(buffer, 4, ackSource);
      bacappEncodeContextTimestamp2(buffer, 5, ackTimeStamp);
    };
    var decode210 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      let result;
      let decodedValue;
      let date;
      let time;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.acknowledgedProcessId = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.eventObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.eventStateAcknowledged = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber === 0) {
        decodedValue = decodeBacnetTime2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.eventTimeStamp = decodedValue.value;
      } else if (result.tagNumber === 1) {
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.eventTimeStamp = decodedValue.value;
      } else if (result.tagNumber === 2) {
        date = decodeApplicationDate2(buffer, offset + len);
        len += date.len;
        date = date.value.value;
        time = decodeApplicationTime2(buffer, offset + len);
        len += time.len;
        time = time.value.value;
        value.eventTimeStamp = new Date(
          date.getFullYear(),
          date.getMonth(),
          date.getDate(),
          time.getHours(),
          time.getMinutes(),
          time.getSeconds(),
          time.getMilliseconds()
        );
        len++;
      }
      len++;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeCharacterString2(
        buffer,
        offset + len,
        apduLen - (offset + len),
        result.value
      );
      value.acknowledgeSource = decodedValue.value;
      len += decodedValue.len;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber === 0) {
        decodedValue = decodeBacnetTime2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.acknowledgeTimeStamp = decodedValue.value;
      } else if (result.tagNumber === 1) {
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.acknowledgeTimeStamp = decodedValue.value;
      } else if (result.tagNumber === 2) {
        date = decodeApplicationDate2(buffer, offset + len);
        len += date.len;
        date = date.value.value;
        time = decodeApplicationTime2(buffer, offset + len);
        len += time.len;
        time = time.value.value;
        value.acknowledgeTimeStamp = new Date(
          date.getFullYear(),
          date.getMonth(),
          date.getDate(),
          time.getHours(),
          time.getMinutes(),
          time.getSeconds(),
          time.getMilliseconds()
        );
        len++;
      }
      len++;
      value.len = len;
      return value;
    };
    var alarm_summary_exports2 = {};
    __export2(alarm_summary_exports2, {
      decode: () => decode34,
      encode: () => encode34
    });
    var encode34 = (buffer, alarms) => {
      alarms.forEach((alarm) => {
        encodeContextObjectId2(
          buffer,
          12,
          alarm.objectId.type,
          alarm.objectId.instance
        );
        encodeContextEnumerated2(buffer, 9, alarm.alarmState);
        encodeContextBitstring2(buffer, 8, alarm.acknowledgedTransitions);
      });
    };
    var decode34 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      const alarms = [];
      while (apduLen - 3 - len > 0) {
        let value = {};
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeObjectId2(buffer, offset + len);
        len += decodedValue.len;
        value.objectId = {
          type: decodedValue.objectType,
          instance: decodedValue.instance
        };
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.alarmState = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeBitstring2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.acknowledgedTransitions = decodedValue.value;
        alarms.push(value);
      }
      return {
        len,
        alarms
      };
    };
    var atomic_read_file_exports2 = {};
    __export2(atomic_read_file_exports2, {
      decode: () => decode42,
      decodeAcknowledge: () => decodeAcknowledge8,
      encode: () => encode42,
      encodeAcknowledge: () => encodeAcknowledge9
    });
    var encode42 = (buffer, isStream, objectId, position, count) => {
      encodeApplicationObjectId2(buffer, objectId.type, objectId.instance);
      if (isStream) {
        encodeOpeningTag2(buffer, 0);
        encodeApplicationSigned2(buffer, position);
        encodeApplicationUnsigned2(buffer, count);
        encodeClosingTag2(buffer, 0);
      } else {
        encodeOpeningTag2(buffer, 1);
        encodeApplicationSigned2(buffer, position);
        encodeApplicationUnsigned2(buffer, count);
        encodeClosingTag2(buffer, 1);
      }
    };
    var decode42 = (buffer, offset) => {
      let len = 0;
      let result;
      let decodedValue;
      let isStream = true;
      let objectId = {};
      let position = -1;
      let count = 0;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 12) {
        return void 0;
      }
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
      if (decodeIsOpeningTagNumber2(buffer, offset + len, 0)) {
        isStream = true;
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 3) {
          return void 0;
        }
        decodedValue = decodeSigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        position = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 2) {
          return void 0;
        }
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        count = decodedValue.value;
        if (!decodeIsClosingTagNumber2(buffer, offset + len, 0)) {
          return void 0;
        }
        len++;
      } else if (decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        isStream = false;
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 3) {
          return void 0;
        }
        decodedValue = decodeSigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        position = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 2) {
          return void 0;
        }
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        count = decodedValue.value;
        if (!decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
          return void 0;
        }
        len++;
      } else {
        return void 0;
      }
      return {
        len,
        isStream,
        objectId,
        position,
        count
      };
    };
    var encodeAcknowledge9 = (buffer, isStream, endOfFile, position, blockCount, blocks, counts) => {
      encodeApplicationBoolean2(buffer, endOfFile);
      if (isStream) {
        encodeOpeningTag2(buffer, 0);
        encodeApplicationSigned2(buffer, position);
        encodeApplicationOctetString2(buffer, blocks[0], 0, counts[0]);
        encodeClosingTag2(buffer, 0);
      } else {
        encodeOpeningTag2(buffer, 1);
        encodeApplicationSigned2(buffer, position);
        encodeApplicationUnsigned2(buffer, blockCount);
        for (let i = 0; i < blockCount; i++) {
          encodeApplicationOctetString2(buffer, blocks[i], 0, counts[i]);
        }
        encodeClosingTag2(buffer, 1);
      }
    };
    var decodeAcknowledge8 = (buffer, offset, length = 0) => {
      let len = length;
      let result;
      let decodedValue;
      let endOfFile;
      let isStream;
      let position;
      let targetBuffer;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      endOfFile = result.value > 0;
      if (decodeIsOpeningTagNumber2(buffer, offset + len, 0)) {
        isStream = true;
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 3) {
          return void 0;
        }
        decodedValue = decodeSigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        position = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 6) {
          return void 0;
        }
        targetBuffer = buffer.slice(offset + len, offset + len + result.value);
        len += result.value;
        if (!decodeIsClosingTagNumber2(buffer, offset + len, 0)) {
          return void 0;
        }
        len++;
      } else if (decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        isStream = false;
        throw new Error("NotImplemented");
      } else {
        return void 0;
      }
      return {
        len,
        endOfFile,
        isStream,
        position,
        buffer: targetBuffer
      };
    };
    var atomic_write_file_exports2 = {};
    __export2(atomic_write_file_exports2, {
      decode: () => decode52,
      decodeAcknowledge: () => decodeAcknowledge22,
      encode: () => encode52,
      encodeAcknowledge: () => encodeAcknowledge22
    });
    var encode52 = (buffer, isStream, objectId, position, blocks) => {
      encodeApplicationObjectId2(buffer, objectId.type, objectId.instance);
      if (isStream) {
        encodeOpeningTag2(buffer, 0);
        encodeApplicationSigned2(buffer, position);
        encodeApplicationOctetString2(buffer, blocks[0], 0, blocks[0].length);
        encodeClosingTag2(buffer, 0);
      } else {
        encodeOpeningTag2(buffer, 1);
        encodeApplicationSigned2(buffer, position);
        encodeApplicationUnsigned2(buffer, blocks.length);
        for (let i = 0; i < blocks.length; i++) {
          encodeApplicationOctetString2(
            buffer,
            blocks[i],
            0,
            blocks[i].length
          );
        }
        encodeClosingTag2(buffer, 1);
      }
    };
    var decode52 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let isStream;
      let position;
      let blocks = [];
      let blockCount;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 12) {
        return void 0;
      }
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      let objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      if (decodeIsOpeningTagNumber2(buffer, offset + len, 0)) {
        isStream = true;
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 3) {
          return void 0;
        }
        decodedValue = decodeSigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        position = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 6) {
          return void 0;
        }
        decodedValue = decodeOctetString2(
          buffer,
          offset + len,
          apduLen,
          0,
          result.value
        );
        len += decodedValue.len;
        blocks.push(decodedValue.value);
        if (!decodeIsClosingTagNumber2(buffer, offset + len, 0)) {
          return void 0;
        }
        len++;
      } else if (decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        isStream = false;
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 3) {
          return void 0;
        }
        decodedValue = decodeSigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        position = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 2) {
          return void 0;
        }
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        blockCount = decodedValue.value;
        for (let i = 0; i < blockCount; i++) {
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          if (result.tagNumber !== 6) {
            return void 0;
          }
          decodedValue = decodeOctetString2(
            buffer,
            offset + len,
            apduLen,
            0,
            result.value
          );
          len += decodedValue.len;
          blocks.push(decodedValue.value);
        }
        if (!decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
          return void 0;
        }
        len++;
      } else {
        return void 0;
      }
      return {
        len,
        isStream,
        objectId,
        position,
        blocks
      };
    };
    var encodeAcknowledge22 = (buffer, isStream, position) => {
      if (isStream) {
        encodeContextSigned2(buffer, 0, position);
      } else {
        encodeContextSigned2(buffer, 1, position);
      }
    };
    var decodeAcknowledge22 = (buffer, offset, length = 0) => {
      let len = length;
      let isStream = false;
      let position = 0;
      let decodedValue;
      const result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber === 0) {
        isStream = true;
      } else if (result.tagNumber === 1) {
        isStream = false;
      } else {
        return void 0;
      }
      decodedValue = decodeSigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      position = decodedValue.value;
      return {
        len,
        isStream,
        position
      };
    };
    var cov_notify_exports2 = {};
    __export2(cov_notify_exports2, {
      decode: () => decode62,
      encode: () => encode62
    });
    var encode62 = (buffer, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) => {
      encodeContextUnsigned2(buffer, 0, subscriberProcessId);
      encodeContextObjectId2(
        buffer,
        1,
        8,
        initiatingDeviceId
      );
      encodeContextObjectId2(
        buffer,
        2,
        monitoredObjectId.type,
        monitoredObjectId.instance
      );
      encodeContextUnsigned2(buffer, 3, timeRemaining);
      encodeOpeningTag2(buffer, 4);
      values.forEach((value) => {
        encodeContextEnumerated2(buffer, 0, value.property.id);
        if (value.property.index === ASN1_ARRAY_ALL2) {
          encodeContextUnsigned2(buffer, 1, value.property.index);
        }
        encodeOpeningTag2(buffer, 2);
        value.value.forEach((v) => {
          bacappEncodeApplicationData2(buffer, v);
        });
        encodeClosingTag2(buffer, 2);
        if (value.priority === ASN1_NO_PRIORITY2) {
          encodeContextUnsigned2(buffer, 3, value.priority);
        }
      });
      encodeClosingTag2(buffer, 4);
    };
    var decode62 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      const subscriberProcessId = decodedValue.value;
      if (!decodeIsContextTag2(buffer, offset + len, 1)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      const initiatingDeviceId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      if (!decodeIsContextTag2(buffer, offset + len, 2)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      const monitoredObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      if (!decodeIsContextTag2(buffer, offset + len, 3)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      const timeRemaining = decodedValue.value;
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 4)) {
        return void 0;
      }
      len++;
      const values = [];
      while (apduLen - len > 1 && !decodeIsClosingTagNumber2(buffer, offset + len, 4)) {
        let newEntry = {};
        newEntry.property = {};
        if (!decodeIsContextTag2(buffer, offset + len, 0)) {
          return void 0;
        }
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        newEntry.property.id = decodedValue.value;
        if (decodeIsContextTag2(buffer, offset + len, 1)) {
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          newEntry.property.index = decodedValue.value;
        } else {
          newEntry.property.index = ASN1_ARRAY_ALL2;
        }
        if (!decodeIsOpeningTagNumber2(buffer, offset + len, 2)) {
          return void 0;
        }
        len++;
        const properties = [];
        while (apduLen - len > 1 && !decodeIsClosingTagNumber2(buffer, offset + len, 2)) {
          decodedValue = bacappDecodeApplicationData2(
            buffer,
            offset + len,
            apduLen + offset,
            monitoredObjectId.type,
            newEntry.property.id
          );
          if (!decodedValue) {
            return void 0;
          }
          len += decodedValue.len;
          delete decodedValue.len;
          properties.push(decodedValue);
        }
        newEntry.value = properties;
        len++;
        if (decodeIsContextTag2(buffer, offset + len, 3)) {
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          newEntry.priority = decodedValue.value;
        } else {
          newEntry.priority = ASN1_NO_PRIORITY2;
        }
        values.push(newEntry);
      }
      return {
        len,
        subscriberProcessId,
        initiatingDeviceId,
        monitoredObjectId,
        timeRemaining,
        values
      };
    };
    var create_object_exports2 = {};
    __export2(create_object_exports2, {
      decode: () => decode72,
      encode: () => encode72,
      encodeAcknowledge: () => encodeAcknowledge32
    });
    var encode72 = (buffer, objectId, values) => {
      encodeOpeningTag2(buffer, 0);
      encodeContextObjectId2(buffer, 1, objectId.type, objectId.instance);
      encodeClosingTag2(buffer, 0);
      encodeOpeningTag2(buffer, 1);
      values.forEach((propertyValue) => {
        encodeContextEnumerated2(buffer, 0, propertyValue.property.id);
        if (propertyValue.property.index !== ASN1_ARRAY_ALL2) {
          encodeContextUnsigned2(buffer, 1, propertyValue.property.index);
        }
        encodeOpeningTag2(buffer, 2);
        propertyValue.value.forEach((value) => {
          bacappEncodeApplicationData2(buffer, value);
        });
        encodeClosingTag2(buffer, 2);
        if (propertyValue.priority !== ASN1_NO_PRIORITY2) {
          encodeContextUnsigned2(buffer, 3, propertyValue.priority);
        }
      });
      encodeClosingTag2(buffer, 1);
    };
    var decode72 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let objectId;
      const valueList = [];
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber === 0 && apduLen > len) {
        apduLen -= len;
        if (apduLen < 4) {
          return void 0;
        }
        decodedValue = decodeContextObjectId2(buffer, offset + len, 1);
        len += decodedValue.len;
        objectId = {
          type: decodedValue.objectType,
          instance: decodedValue.instance
        };
      } else {
        return void 0;
      }
      if (decodeIsClosingTag2(buffer, offset + len)) {
        len++;
      }
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      while (apduLen - len > 1) {
        let newEntry = {};
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 0) {
          return void 0;
        }
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        let propertyId = decodedValue.value;
        let arraIndex = ASN1_ARRAY_ALL2;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber === 1) {
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          arraIndex += decodedValue.value;
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
        }
        newEntry.property = { id: propertyId, index: arraIndex };
        if (result.tagNumber === 2 && decodeIsOpeningTag2(buffer, offset + len - 1)) {
          const values = [];
          while (!decodeIsClosingTag2(buffer, offset + len)) {
            decodedValue = bacappDecodeApplicationData2(
              buffer,
              offset + len,
              apduLen + offset,
              objectId.type,
              propertyId
            );
            if (!decodedValue) {
              return void 0;
            }
            len += decodedValue.len;
            delete decodedValue.len;
            values.push(decodedValue);
          }
          len++;
          newEntry.value = values;
        } else {
          return void 0;
        }
        valueList.push(newEntry);
      }
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      return {
        len,
        objectId,
        values: valueList
      };
    };
    var encodeAcknowledge32 = (buffer, objectId) => {
      encodeApplicationObjectId2(buffer, objectId.type, objectId.instance);
    };
    var delete_object_exports2 = {};
    __export2(delete_object_exports2, {
      decode: () => decode82,
      encode: () => encode82
    });
    var decode82 = (buffer, offset, apduLen) => {
      const result = decodeTagNumberAndValue2(buffer, offset);
      if (result.tagNumber !== 12) {
        return void 0;
      }
      let len = 1;
      const value = decodeObjectId2(buffer, offset + len);
      len += value.len;
      if (len !== apduLen) {
        return void 0;
      }
      value.len = len;
      return value;
    };
    var encode82 = (buffer, objectId) => {
      encodeApplicationObjectId2(buffer, objectId.type, objectId.instance);
    };
    var device_communication_control_exports2 = {};
    __export2(device_communication_control_exports2, {
      decode: () => decode92,
      encode: () => encode92
    });
    var encode92 = (buffer, timeDuration, enableDisable, password) => {
      if (timeDuration > 0) {
        encodeContextUnsigned2(buffer, 0, timeDuration);
      }
      encodeContextEnumerated2(buffer, 1, enableDisable);
      if (password && password !== "") {
        encodeContextCharacterString2(buffer, 2, password);
      }
    };
    var decode92 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      let decodedValue;
      let result;
      if (decodeIsContextTag2(buffer, offset + len, 0)) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        value.timeDuration = decodedValue.value;
        len += decodedValue.len;
      }
      if (!decodeIsContextTag2(buffer, offset + len, 1)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      value.enableDisable = decodedValue.value;
      len += decodedValue.len;
      if (len < apduLen) {
        if (!decodeIsContextTag2(buffer, offset + len, 2)) {
          return void 0;
        }
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeCharacterString2(
          buffer,
          offset + len,
          apduLen - (offset + len),
          result.value
        );
        value.password = decodedValue.value;
        len += decodedValue.len;
      }
      value.len = len;
      return value;
    };
    var error_exports2 = {};
    __export2(error_exports2, {
      buildMessage: () => buildMessage2,
      decode: () => decode102,
      encode: () => encode102
    });
    var encode102 = (buffer, errorClass, errorCode) => {
      encodeApplicationEnumerated2(buffer, errorClass);
      encodeApplicationEnumerated2(buffer, errorCode);
    };
    var decode102 = (buffer, offset) => {
      const orgOffset = offset;
      let result;
      result = decodeTagNumberAndValue2(buffer, offset);
      offset += result.len;
      const errorClass = decodeEnumerated2(buffer, offset, result.value);
      offset += errorClass.len;
      result = decodeTagNumberAndValue2(buffer, offset);
      offset += result.len;
      const errorCode = decodeEnumerated2(buffer, offset, result.value);
      offset += errorClass.len;
      return {
        len: offset - orgOffset,
        class: errorClass.value,
        code: errorCode.value
      };
    };
    var buildMessage2 = function(result) {
      return "BacnetError Class: " + ErrorClassName2[result.class] + " (" + result.class + ") Code: " + ErrorCodeName2[result.code] + " (" + result.code + ")";
    };
    var event_information_exports2 = {};
    __export2(event_information_exports2, {
      decode: () => decode112,
      encode: () => encode112
    });
    var encode112 = (buffer, events, moreEvents) => {
      encodeOpeningTag2(buffer, 0);
      events.forEach((event) => {
        encodeContextObjectId2(
          buffer,
          0,
          event.objectId.type,
          event.objectId.instance
        );
        encodeContextEnumerated2(buffer, 1, event.eventState);
        encodeContextBitstring2(buffer, 2, event.acknowledgedTransitions);
        encodeOpeningTag2(buffer, 3);
        for (let i = 0; i < 3; i++) {
          encodeApplicationDate2(buffer, event.eventTimeStamps[i]);
          encodeApplicationTime2(buffer, event.eventTimeStamps[i]);
        }
        encodeClosingTag2(buffer, 3);
        encodeContextEnumerated2(buffer, 4, event.notifyType);
        encodeContextBitstring2(buffer, 5, event.eventEnable);
        encodeOpeningTag2(buffer, 6);
        for (let i = 0; i < 3; i++) {
          encodeApplicationUnsigned2(buffer, event.eventPriorities[i]);
        }
        encodeClosingTag2(buffer, 6);
      });
      encodeClosingTag2(buffer, 0);
      encodeContextBoolean2(buffer, 1, moreEvents);
    };
    var decode112 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      len++;
      const alarms = [];
      let moreEvents;
      while (apduLen - 3 - len > 0) {
        let value = {};
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeObjectId2(buffer, offset + len);
        len += decodedValue.len;
        value.objectId = {
          type: decodedValue.objectType,
          instance: decodedValue.instance
        };
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.eventState = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeBitstring2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.acknowledgedTransitions = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        value.eventTimeStamps = [];
        for (let i = 0; i < 3; i++) {
          if (result.tagNumber !== 0) {
            decodedValue = decodeApplicationDate2(buffer, offset + len);
            len += decodedValue.len;
            const date = decodedValue.value.value;
            decodedValue = decodeApplicationTime2(buffer, offset + len);
            len += decodedValue.len;
            const time = decodedValue.value.value;
            value.eventTimeStamps[i] = new Date(
              date.getFullYear(),
              date.getMonth(),
              date.getDate(),
              time.getHours(),
              time.getMinutes(),
              time.getSeconds(),
              time.getMilliseconds()
            );
          } else {
            len += result.value;
          }
        }
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.notifyType = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeBitstring2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.eventEnable = decodedValue.value;
        len++;
        value.eventPriorities = [];
        for (let i = 0; i < 3; i++) {
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.eventPriorities[i] = decodedValue.value;
        }
        len++;
        alarms.push(value);
      }
      moreEvents = buffer[apduLen - 1] === 1;
      return {
        len,
        alarms,
        moreEvents
      };
    };
    var event_notify_data_exports2 = {};
    __export2(event_notify_data_exports2, {
      decode: () => decode122,
      encode: () => encode122
    });
    var encode122 = (buffer, data) => {
      encodeContextUnsigned2(buffer, 0, data.processId);
      encodeContextObjectId2(
        buffer,
        1,
        data.initiatingObjectId.type,
        data.initiatingObjectId.instance
      );
      encodeContextObjectId2(
        buffer,
        2,
        data.eventObjectId.type,
        data.eventObjectId.instance
      );
      bacappEncodeContextTimestamp2(buffer, 3, data.timeStamp);
      encodeContextUnsigned2(buffer, 4, data.notificationClass);
      encodeContextUnsigned2(buffer, 5, data.priority);
      encodeContextEnumerated2(buffer, 6, data.eventType);
      if (data.messageText && data.messageText !== "") {
        encodeContextCharacterString2(buffer, 7, data.messageText);
      }
      encodeContextEnumerated2(buffer, 8, data.notifyType);
      switch (data.notifyType) {
        case 0:
        case 1:
          encodeContextBoolean2(buffer, 9, data.ackRequired);
          encodeContextEnumerated2(buffer, 10, data.fromState);
          break;
        default:
          break;
      }
      encodeContextEnumerated2(buffer, 11, data.toState);
      switch (data.notifyType) {
        case 0:
        case 1:
          encodeOpeningTag2(buffer, 12);
          switch (data.eventType) {
            case 0:
              encodeOpeningTag2(buffer, 0);
              encodeContextBitstring2(
                buffer,
                0,
                data.changeOfBitstringReferencedBitString
              );
              encodeContextBitstring2(
                buffer,
                1,
                data.changeOfBitstringStatusFlags
              );
              encodeClosingTag2(buffer, 0);
              break;
            case 1:
              encodeOpeningTag2(buffer, 1);
              encodeOpeningTag2(buffer, 0);
              bacappEncodePropertyState2(buffer, data.changeOfStateNewState);
              encodeClosingTag2(buffer, 0);
              encodeContextBitstring2(
                buffer,
                1,
                data.changeOfStateStatusFlags
              );
              encodeClosingTag2(buffer, 1);
              break;
            case 2:
              encodeOpeningTag2(buffer, 2);
              encodeOpeningTag2(buffer, 0);
              switch (data.changeOfValueTag) {
                case 0:
                  encodeContextReal2(
                    buffer,
                    1,
                    data.changeOfValueChangeValue
                  );
                  break;
                case 1:
                  encodeContextBitstring2(
                    buffer,
                    0,
                    data.changeOfValueChangedBits
                  );
                  break;
                default:
                  throw new Error("NotImplemented");
              }
              encodeClosingTag2(buffer, 0);
              encodeContextBitstring2(
                buffer,
                1,
                data.changeOfValueStatusFlags
              );
              encodeClosingTag2(buffer, 2);
              break;
            case 4:
              encodeOpeningTag2(buffer, 4);
              encodeContextReal2(buffer, 0, data.floatingLimitReferenceValue);
              encodeContextBitstring2(
                buffer,
                1,
                data.floatingLimitStatusFlags
              );
              encodeContextReal2(buffer, 2, data.floatingLimitSetPointValue);
              encodeContextReal2(buffer, 3, data.floatingLimitErrorLimit);
              encodeClosingTag2(buffer, 4);
              break;
            case 5:
              encodeOpeningTag2(buffer, 5);
              encodeContextReal2(buffer, 0, data.outOfRangeExceedingValue);
              encodeContextBitstring2(buffer, 1, data.outOfRangeStatusFlags);
              encodeContextReal2(buffer, 2, data.outOfRangeDeadband);
              encodeContextReal2(buffer, 3, data.outOfRangeExceededLimit);
              encodeClosingTag2(buffer, 5);
              break;
            case 8:
              encodeOpeningTag2(buffer, 8);
              encodeContextEnumerated2(
                buffer,
                0,
                data.changeOfLifeSafetyNewState
              );
              encodeContextEnumerated2(
                buffer,
                1,
                data.changeOfLifeSafetyNewMode
              );
              encodeContextBitstring2(
                buffer,
                2,
                data.changeOfLifeSafetyStatusFlags
              );
              encodeContextEnumerated2(
                buffer,
                3,
                data.changeOfLifeSafetyOperationExpected
              );
              encodeClosingTag2(buffer, 8);
              break;
            case 10:
              encodeOpeningTag2(buffer, 10);
              bacappEncodeContextDeviceObjPropertyRef2(
                buffer,
                0,
                data.bufferReadyBufferProperty
              );
              encodeContextUnsigned2(
                buffer,
                1,
                data.bufferReadyPreviousNotification
              );
              encodeContextUnsigned2(
                buffer,
                2,
                data.bufferReadyCurrentNotification
              );
              encodeClosingTag2(buffer, 10);
              break;
            case 11:
              encodeOpeningTag2(buffer, 11);
              encodeContextUnsigned2(
                buffer,
                0,
                data.unsignedRangeExceedingValue
              );
              encodeContextBitstring2(
                buffer,
                1,
                data.unsignedRangeStatusFlags
              );
              encodeContextUnsigned2(
                buffer,
                2,
                data.unsignedRangeExceededLimit
              );
              encodeClosingTag2(buffer, 11);
              break;
            case 9:
            case 3:
              throw new Error("NotImplemented");
            default:
              throw new Error("NotImplemented");
          }
          encodeClosingTag2(buffer, 12);
          break;
        case 2:
          throw new Error("NotImplemented");
        default:
          break;
      }
    };
    var decode122 = (buffer, offset) => {
      let len = 0;
      let result;
      let decodedValue;
      let eventData = {};
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      eventData.processId = decodedValue.value;
      if (!decodeIsContextTag2(buffer, offset + len, 1)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      eventData.initiatingObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      if (!decodeIsContextTag2(buffer, offset + len, 2)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      eventData.eventObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      if (!decodeIsContextTag2(buffer, offset + len, 3)) {
        return void 0;
      }
      len += 2;
      decodedValue = decodeApplicationDate2(buffer, offset + len);
      len += decodedValue.len;
      const date = decodedValue.value.value;
      decodedValue = decodeApplicationTime2(buffer, offset + len);
      len += decodedValue.len;
      const time = decodedValue.value.value;
      eventData.timeStamp = new Date(
        date.getFullYear(),
        date.getMonth(),
        date.getDate(),
        time.getHours(),
        time.getMinutes(),
        time.getSeconds(),
        time.getMilliseconds()
      );
      len += 2;
      if (!decodeIsContextTag2(buffer, offset + len, 4)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      eventData.notificationClass = decodedValue.value;
      if (!decodeIsContextTag2(buffer, offset + len, 5)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      eventData.priority = decodedValue.value;
      if (eventData.priority > 255) {
        return void 0;
      }
      if (!decodeIsContextTag2(buffer, offset + len, 6)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      eventData.eventType = decodedValue.value;
      if (decodeIsContextTag2(buffer, offset + len, 7)) {
        decodedValue = decodeContextCharacterString2(
          buffer,
          offset + len,
          2e4,
          7
        );
        len += decodedValue.len;
        eventData.messageText = decodedValue.value;
      }
      if (!decodeIsContextTag2(buffer, offset + len, 8)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      eventData.notifyType = decodedValue.value;
      switch (eventData.notifyType) {
        case 0:
        case 1:
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned2(buffer, offset + len, 1);
          len += decodedValue.len;
          eventData.ackRequired = decodedValue.value > 0;
          if (!decodeIsContextTag2(buffer, offset + len, 10)) {
            return void 0;
          }
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          decodedValue = decodeEnumerated2(
            buffer,
            offset + len,
            result.value
          );
          len += decodedValue.len;
          eventData.fromState = decodedValue.value;
          break;
        default:
          break;
      }
      if (!decodeIsContextTag2(buffer, offset + len, 11)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      eventData.toState = decodedValue.value;
      eventData.len = len;
      return eventData;
    };
    var get_enrollment_summary_exports2 = {};
    __export2(get_enrollment_summary_exports2, {
      decode: () => decode132,
      decodeAcknowledge: () => decodeAcknowledge32,
      encode: () => encode132,
      encodeAcknowledge: () => encodeAcknowledge42
    });
    var encode132 = (buffer, acknowledgmentFilter, enrollmentFilter, eventStateFilter, eventTypeFilter, priorityFilter, notificationClassFilter) => {
      encodeContextEnumerated2(buffer, 0, acknowledgmentFilter);
      if (enrollmentFilter) {
        encodeOpeningTag2(buffer, 1);
        encodeOpeningTag2(buffer, 0);
        encodeContextObjectId2(
          buffer,
          0,
          enrollmentFilter.objectId.type,
          enrollmentFilter.objectId.instance
        );
        encodeClosingTag2(buffer, 0);
        encodeContextUnsigned2(buffer, 1, enrollmentFilter.processId);
        encodeClosingTag2(buffer, 1);
      }
      if (eventStateFilter) {
        encodeOpeningTag2(buffer, 2);
        encodeContextEnumerated2(buffer, 0, eventStateFilter);
        encodeClosingTag2(buffer, 2);
      }
      if (eventTypeFilter) {
        encodeOpeningTag2(buffer, 3);
        encodeContextEnumerated2(buffer, 0, eventTypeFilter);
        encodeClosingTag2(buffer, 3);
      }
      if (priorityFilter) {
        encodeOpeningTag2(buffer, 4);
        encodeContextUnsigned2(buffer, 0, priorityFilter.min);
        encodeContextUnsigned2(buffer, 1, priorityFilter.max);
        encodeClosingTag2(buffer, 4);
      }
      if (notificationClassFilter) {
        encodeOpeningTag2(buffer, 5);
        encodeContextUnsigned2(buffer, 0, notificationClassFilter);
        encodeClosingTag2(buffer, 5);
      }
    };
    var decode132 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let value = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.acknowledgmentFilter = decodedValue.value;
      if (decodeIsContextTag2(buffer, offset + len, 1)) {
        len++;
        value.enrollmentFilter = {};
        if (!decodeIsContextTag2(buffer, offset + len, 0)) {
          return void 0;
        }
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeObjectId2(buffer, offset + len);
        len += decodedValue.len;
        value.enrollmentFilter.objectId = {
          type: decodedValue.objectType,
          instance: decodedValue.instance
        };
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.enrollmentFilter.processId = decodedValue.value;
        len++;
      }
      if (decodeIsContextTag2(buffer, offset + len, 2)) {
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.eventStateFilter = decodedValue.value;
        len++;
      }
      if (decodeIsContextTag2(buffer, offset + len, 3)) {
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.eventTypeFilter = decodedValue.value;
        len++;
      }
      if (decodeIsContextTag2(buffer, offset + len, 4)) {
        len++;
        value.priorityFilter = {};
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.priorityFilter.min = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.priorityFilter.max = decodedValue.value;
        len++;
      }
      if (decodeIsContextTag2(buffer, offset + len, 5)) {
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.notificationClassFilter = decodedValue.value;
        len++;
      }
      value.len = len;
      return value;
    };
    var encodeAcknowledge42 = (buffer, enrollmentSummaries) => {
      enrollmentSummaries.forEach((enrollmentSummary) => {
        encodeApplicationObjectId2(
          buffer,
          enrollmentSummary.objectId.type,
          enrollmentSummary.objectId.instance
        );
        encodeApplicationEnumerated2(buffer, enrollmentSummary.eventType);
        encodeApplicationEnumerated2(buffer, enrollmentSummary.eventState);
        encodeApplicationUnsigned2(buffer, enrollmentSummary.priority);
        encodeApplicationUnsigned2(
          buffer,
          enrollmentSummary.notificationClass
        );
      });
    };
    var decodeAcknowledge32 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      const enrollmentSummaries = [];
      while (apduLen - len > 0) {
        const enrollmentSummary = {};
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 12) {
          return void 0;
        }
        result = decodeObjectId2(buffer, offset + len);
        len += result.len;
        enrollmentSummary.objectId = {
          type: result.objectType,
          instance: result.instance
        };
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 9) {
          return void 0;
        }
        result = decodeEnumerated2(buffer, offset + len, result.value);
        len += result.len;
        enrollmentSummary.eventType = result.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 9) {
          return void 0;
        }
        result = decodeEnumerated2(buffer, offset + len, result.value);
        len += result.len;
        enrollmentSummary.eventState = result.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 2) {
          return void 0;
        }
        result = decodeUnsigned2(buffer, offset + len, result.value);
        len += result.len;
        enrollmentSummary.priority = result.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 2) {
          return void 0;
        }
        result = decodeUnsigned2(buffer, offset + len, result.value);
        len += result.len;
        enrollmentSummary.notificationClass = result.value;
        enrollmentSummaries.push(enrollmentSummary);
      }
      return {
        enrollmentSummaries,
        len
      };
    };
    var get_event_information_exports2 = {};
    __export2(get_event_information_exports2, {
      decode: () => decode142,
      decodeAcknowledge: () => decodeAcknowledge42,
      encode: () => encode142,
      encodeAcknowledge: () => encodeAcknowledge52
    });
    var encode142 = (buffer, lastReceivedObjectId) => {
      encodeContextObjectId2(
        buffer,
        0,
        lastReceivedObjectId.type,
        lastReceivedObjectId.instance
      );
    };
    var decode142 = (buffer, offset) => {
      let len = 0;
      let result;
      let decodedValue;
      let value = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.lastReceivedObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      value.len = len;
      return value;
    };
    var encodeAcknowledge52 = (buffer, events, moreEvents) => {
      encodeOpeningTag2(buffer, 0);
      events.forEach((eventData) => {
        encodeContextObjectId2(
          buffer,
          0,
          eventData.objectId.type,
          eventData.objectId.instance
        );
        encodeContextEnumerated2(buffer, 1, eventData.eventState);
        encodeContextBitstring2(buffer, 2, eventData.acknowledgedTransitions);
        encodeOpeningTag2(buffer, 3);
        for (let i = 0; i < 3; i++) {
          bacappEncodeTimestamp2(buffer, eventData.eventTimeStamps[i]);
        }
        encodeClosingTag2(buffer, 3);
        encodeContextEnumerated2(buffer, 4, eventData.notifyType);
        encodeContextBitstring2(buffer, 5, eventData.eventEnable);
        encodeOpeningTag2(buffer, 6);
        for (let i = 0; i < 3; i++) {
          encodeApplicationUnsigned2(buffer, eventData.eventPriorities[i]);
        }
        encodeClosingTag2(buffer, 6);
      });
      encodeClosingTag2(buffer, 0);
      encodeContextBoolean2(buffer, 1, moreEvents);
    };
    var decodeAcknowledge42 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let value = {};
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      value.events = [];
      while (apduLen - len > 3) {
        let event = {};
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeObjectId2(buffer, offset + len);
        len += decodedValue.len;
        event.objectId = {
          type: decodedValue.objectType,
          instance: decodedValue.instance
        };
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        event.eventState = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeBitstring2(buffer, offset + len, result.value);
        len += decodedValue.len;
        event.acknowledgedTransitions = decodedValue.value;
        if (!decodeIsOpeningTagNumber2(buffer, offset + len, 3)) {
          return void 0;
        }
        len++;
        event.eventTimeStamps = [];
        for (let i = 0; i < 3; i++) {
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          if (result.tagNumber === 0) {
            decodedValue = decodeBacnetTime2(
              buffer,
              offset + len,
              result.value
            );
            len += decodedValue.len;
            event.eventTimeStamps[i] = {
              value: decodedValue.value,
              type: 0
              /* TIME */
            };
          } else if (result.tagNumber === 1) {
            decodedValue = decodeUnsigned2(
              buffer,
              offset + len,
              result.value
            );
            len += decodedValue.len;
            event.eventTimeStamps[i] = {
              value: decodedValue.value,
              type: 1
              /* SEQUENCE_NUMBER */
            };
          } else if (result.tagNumber === 2) {
            let date = decodeApplicationDate2(
              buffer,
              offset + len
            );
            len += date.len;
            date = date.value.value;
            let time = decodeApplicationTime2(
              buffer,
              offset + len
            );
            len += time.len;
            time = time.value.value;
            event.eventTimeStamps[i] = {
              value: new Date(
                date.getFullYear(),
                date.getMonth(),
                date.getDate(),
                time.getHours(),
                time.getMinutes(),
                time.getSeconds(),
                time.getMilliseconds()
              ),
              type: 2
              /* DATETIME */
            };
            len++;
          }
        }
        if (!decodeIsClosingTagNumber2(buffer, offset + len, 3)) {
          return void 0;
        }
        len++;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        event.notifyType = decodedValue.value;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeBitstring2(buffer, offset + len, result.value);
        len += decodedValue.len;
        event.eventEnable = decodedValue.value;
        if (!decodeIsOpeningTagNumber2(buffer, offset + len, 6)) {
          return void 0;
        }
        len++;
        event.eventPriorities = [];
        for (let i = 0; i < 3; i++) {
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          event.eventPriorities[i] = decodedValue.value;
        }
        if (!decodeIsClosingTagNumber2(buffer, offset + len, 6)) {
          return void 0;
        }
        len++;
        value.events.push(event);
      }
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      value.moreEvents = buffer[offset + len] > 0;
      len++;
      value.len = len;
      return value;
    };
    var i_am_exports2 = {};
    __export2(i_am_exports2, {
      decode: () => decode152,
      encode: () => encode152
    });
    var encode152 = (buffer, deviceId, maxApdu, segmentation, vendorId) => {
      encodeApplicationObjectId2(buffer, 8, deviceId);
      encodeApplicationUnsigned2(buffer, maxApdu);
      encodeApplicationEnumerated2(buffer, segmentation);
      encodeApplicationUnsigned2(buffer, vendorId);
    };
    var decode152 = (buffer, offset) => {
      let result;
      let apduLen = 0;
      const orgOffset = offset;
      result = decodeTagNumberAndValue2(buffer, offset + apduLen);
      apduLen += result.len;
      if (result.tagNumber !== 12) {
        return void 0;
      }
      result = decodeObjectId2(buffer, offset + apduLen);
      apduLen += result.len;
      if (result.objectType !== 8) {
        return void 0;
      }
      const deviceId = result.instance;
      result = decodeTagNumberAndValue2(buffer, offset + apduLen);
      apduLen += result.len;
      if (result.tagNumber !== 2) {
        return void 0;
      }
      result = decodeUnsigned2(buffer, offset + apduLen, result.value);
      apduLen += result.len;
      const maxApdu = result.value;
      result = decodeTagNumberAndValue2(buffer, offset + apduLen);
      apduLen += result.len;
      if (result.tagNumber !== 9) {
        return void 0;
      }
      result = decodeEnumerated2(buffer, offset + apduLen, result.value);
      apduLen += result.len;
      if (result.value > 3) {
        return void 0;
      }
      const segmentation = result.value;
      result = decodeTagNumberAndValue2(buffer, offset + apduLen);
      apduLen += result.len;
      if (result.tagNumber !== 2) {
        return void 0;
      }
      result = decodeUnsigned2(buffer, offset + apduLen, result.value);
      apduLen += result.len;
      if (result.value > 65535) {
        return void 0;
      }
      const vendorId = result.value;
      return {
        len: offset - orgOffset,
        deviceId,
        maxApdu,
        segmentation,
        vendorId
      };
    };
    var i_have_exports2 = {};
    __export2(i_have_exports2, {
      decode: () => decode162,
      encode: () => encode162
    });
    var encode162 = (buffer, deviceId, objectId, objectName) => {
      encodeApplicationObjectId2(buffer, deviceId.type, deviceId.instance);
      encodeApplicationObjectId2(buffer, objectId.type, objectId.instance);
      encodeApplicationCharacterString2(buffer, objectName);
    };
    var decode162 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let value = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.deviceId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeCharacterString2(
        buffer,
        offset + len,
        apduLen - (offset + len),
        result.value
      );
      len += decodedValue.len;
      value.objectName = decodedValue.value;
      value.len = len;
      return value;
    };
    var life_safety_operation_exports2 = {};
    __export2(life_safety_operation_exports2, {
      decode: () => decode172,
      encode: () => encode172
    });
    var encode172 = (buffer, processId, requestingSource, operation, targetObjectId) => {
      encodeContextUnsigned2(buffer, 0, processId);
      encodeContextCharacterString2(buffer, 1, requestingSource);
      encodeContextEnumerated2(buffer, 2, operation);
      encodeContextObjectId2(
        buffer,
        3,
        targetObjectId.type,
        targetObjectId.instance
      );
    };
    var decode172 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let value = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.processId = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeCharacterString2(
        buffer,
        offset + len,
        apduLen - (offset + len),
        result.value
      );
      len += decodedValue.len;
      value.requestingSource = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.operation = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.targetObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      value.len = len;
      return value;
    };
    var private_transfer_exports2 = {};
    __export2(private_transfer_exports2, {
      decode: () => decode182,
      encode: () => encode182
    });
    var encode182 = (buffer, vendorId, serviceNumber, data) => {
      encodeContextUnsigned2(buffer, 0, vendorId);
      encodeContextUnsigned2(buffer, 1, serviceNumber);
      encodeOpeningTag2(buffer, 2);
      for (let i = 0; i < data.length; i++) {
        buffer.buffer[buffer.offset++] = data[i];
      }
      encodeClosingTag2(buffer, 2);
    };
    var decode182 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let value = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.vendorId = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.serviceNumber = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      const size = apduLen - (offset + len + 1);
      const data = [];
      for (let i = 0; i < size; i++) {
        data.push(buffer[offset + len++]);
      }
      value.data = data;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      value.len = len;
      return value;
    };
    var read_property_exports2 = {};
    __export2(read_property_exports2, {
      decode: () => decode192,
      decodeAcknowledge: () => decodeAcknowledge52,
      encode: () => encode192,
      encodeAcknowledge: () => encodeAcknowledge62
    });
    var encode192 = (buffer, objectType, objectInstance, propertyId, arrayIndex) => {
      if (objectType <= ASN1_MAX_OBJECT2) {
        encodeContextObjectId2(buffer, 0, objectType, objectInstance);
      }
      if (propertyId <= ASN1_MAX_PROPERTY_ID2) {
        encodeContextEnumerated2(buffer, 1, propertyId);
      }
      if (arrayIndex !== ASN1_ARRAY_ALL2) {
        encodeContextUnsigned2(
          buffer,
          2,
          arrayIndex || arrayIndex === 0 ? arrayIndex : ASN1_ARRAY_ALL2
        );
      }
    };
    var decode192 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      if (apduLen < 7) {
        return void 0;
      }
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      let objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      let property = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      property.id = decodedValue.value;
      property.index = ASN1_ARRAY_ALL2;
      if (len < apduLen) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber === 2 && len < apduLen) {
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          property.index = decodedValue.value;
        } else {
          return void 0;
        }
      }
      if (len < apduLen) {
        return void 0;
      }
      return {
        len,
        objectId,
        property
      };
    };
    var encodeAcknowledge62 = (buffer, objectId, propertyId, arrayIndex, values) => {
      encodeContextObjectId2(buffer, 0, objectId.type, objectId.instance);
      encodeContextEnumerated2(buffer, 1, propertyId);
      if (arrayIndex !== ASN1_ARRAY_ALL2) {
        encodeContextUnsigned2(buffer, 2, arrayIndex);
      }
      encodeOpeningTag2(buffer, 3);
      values.forEach((value) => {
        bacappEncodeApplicationData2(buffer, value);
      });
      encodeClosingTag2(buffer, 3);
    };
    var decodeAcknowledge52 = (buffer, offset, apduLen) => {
      let result;
      let decodedValue;
      let objectId = {};
      let property = {};
      if (!decodeIsContextTag2(buffer, offset, 0)) {
        return void 0;
      }
      let len = 1;
      result = decodeObjectId2(buffer, offset + len);
      len += result.len;
      objectId.type = result.objectType;
      objectId.instance = result.instance;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      result = decodeEnumerated2(buffer, offset + len, result.value);
      len += result.len;
      property.id = result.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      if (result.tagNumber === 2) {
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        property.index = decodedValue.value;
      } else {
        property.index = ASN1_ARRAY_ALL2;
      }
      const values = [];
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 3)) {
        return void 0;
      }
      len++;
      while (apduLen - len > 1) {
        result = bacappDecodeApplicationData2(
          buffer,
          offset + len,
          apduLen + offset,
          objectId.type,
          property.id
        );
        if (!result) {
          return void 0;
        }
        len += result.len;
        delete result.len;
        values.push(result);
      }
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 3)) {
        return void 0;
      }
      len++;
      return {
        len,
        objectId,
        property,
        values
      };
    };
    var read_property_multiple_exports2 = {};
    __export2(read_property_multiple_exports2, {
      decode: () => decode202,
      decodeAcknowledge: () => decodeAcknowledge62,
      encode: () => encode202,
      encodeAcknowledge: () => encodeAcknowledge72
    });
    var encode202 = (buffer, properties) => {
      properties.forEach((value) => {
        encodeReadAccessSpecification2(buffer, value);
      });
    };
    var decode202 = (buffer, offset, apduLen) => {
      let len = 0;
      const values = [];
      while (apduLen - len > 0) {
        const decodedValue = decodeReadAccessSpecification2(
          buffer,
          offset + len,
          apduLen - len
        );
        if (!decodedValue) {
          return void 0;
        }
        len += decodedValue.len;
        values.push(decodedValue.value);
      }
      return {
        len,
        properties: values
      };
    };
    var encodeAcknowledge72 = (buffer, values) => {
      values.forEach((value) => {
        encodeReadAccessResult2(buffer, value);
      });
    };
    var decodeAcknowledge62 = (buffer, offset, apduLen) => {
      let len = 0;
      const values = [];
      while (apduLen - len > 0) {
        const result = decodeReadAccessResult2(
          buffer,
          offset + len,
          apduLen - len
        );
        if (!result || result === -1) {
          return void 0;
        }
        len += result.len;
        values.push(result.value);
      }
      return {
        len,
        values
      };
    };
    var read_range_exports2 = {};
    __export2(read_range_exports2, {
      decode: () => decode212,
      decodeAcknowledge: () => decodeAcknowledge72,
      encode: () => encode212,
      encodeAcknowledge: () => encodeAcknowledge82
    });
    var encode212 = (buffer, objectId, propertyId, arrayIndex, requestType, position, time, count) => {
      encodeContextObjectId2(buffer, 0, objectId.type, objectId.instance);
      encodeContextEnumerated2(buffer, 1, propertyId);
      if (arrayIndex !== ASN1_ARRAY_ALL2) {
        encodeContextUnsigned2(buffer, 2, arrayIndex);
      }
      switch (requestType) {
        case 0:
          encodeOpeningTag2(buffer, 3);
          encodeApplicationUnsigned2(buffer, position);
          encodeApplicationSigned2(buffer, count);
          encodeClosingTag2(buffer, 3);
          break;
        case 1:
          encodeOpeningTag2(buffer, 6);
          encodeApplicationUnsigned2(buffer, position);
          encodeApplicationSigned2(buffer, count);
          encodeClosingTag2(buffer, 6);
          break;
        case 2:
          encodeOpeningTag2(buffer, 7);
          encodeApplicationDate2(buffer, time);
          encodeApplicationTime2(buffer, time);
          encodeApplicationSigned2(buffer, count);
          encodeClosingTag2(buffer, 7);
          break;
        default:
          break;
      }
    };
    var decode212 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let requestType;
      let position;
      let time;
      let count;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      decodedValue = decodeObjectId2(buffer, offset + len, 0);
      len += decodedValue.len;
      let objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      let property = {};
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      property.id = decodedValue.value;
      if (len < apduLen && decodeIsContextTag2(buffer, offset + len, 2)) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        property.index = decodedValue.value;
      } else {
        property.index = ASN1_ARRAY_ALL2;
      }
      if (len < apduLen) {
        result = decodeTagNumber2(buffer, offset + len);
        len += result.len;
        switch (result.tagNumber) {
          case 3:
            requestType = 0;
            result = decodeTagNumberAndValue2(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned2(
              buffer,
              offset + len,
              result.value
            );
            len += decodedValue.len;
            position = decodedValue.value;
            result = decodeTagNumberAndValue2(buffer, offset + len);
            len += result.len;
            decodedValue = decodeSigned2(buffer, offset + len, result.value);
            len += decodedValue.len;
            count = decodedValue.value;
            break;
          case 6:
            requestType = 1;
            result = decodeTagNumberAndValue2(buffer, offset + len);
            len += result.len;
            decodedValue = decodeUnsigned2(
              buffer,
              offset + len,
              result.value
            );
            len += decodedValue.len;
            position = decodedValue.value;
            result = decodeTagNumberAndValue2(buffer, offset + len);
            len += result.len;
            decodedValue = decodeSigned2(buffer, offset + len, result.value);
            len += decodedValue.len;
            count = decodedValue.value;
            break;
          case 7:
            requestType = 2;
            decodedValue = decodeApplicationDate2(buffer, offset + len);
            len += decodedValue.len;
            const tmpDate = decodedValue.value.value;
            decodedValue = decodeApplicationTime2(buffer, offset + len);
            len += decodedValue.len;
            const tmpTime = decodedValue.value.value;
            time = new Date(
              tmpDate.getYear(),
              tmpDate.getMonth(),
              tmpDate.getDate(),
              tmpTime.getHours(),
              tmpTime.getMinutes(),
              tmpTime.getSeconds(),
              tmpTime.getMilliseconds()
            );
            result = decodeTagNumberAndValue2(buffer, offset + len);
            len += result.len;
            decodedValue = decodeSigned2(buffer, offset + len, result.value);
            len += decodedValue.len;
            count = decodedValue.value;
            break;
          default:
            return void 0;
        }
        result = decodeTagNumber2(buffer, offset + len);
        len += result.len;
      }
      return {
        len,
        objectId,
        property,
        requestType,
        position,
        time,
        count
      };
    };
    var encodeAcknowledge82 = (buffer, objectId, propertyId, arrayIndex, resultFlags, itemCount, applicationData, requestType, firstSequence) => {
      encodeContextObjectId2(buffer, 0, objectId.type, objectId.instance);
      encodeContextEnumerated2(buffer, 1, propertyId);
      if (arrayIndex !== ASN1_ARRAY_ALL2) {
        encodeContextUnsigned2(buffer, 2, arrayIndex);
      }
      encodeContextBitstring2(buffer, 3, resultFlags);
      encodeContextUnsigned2(buffer, 4, itemCount);
      encodeOpeningTag2(buffer, 5);
      if (itemCount !== 0) {
        applicationData.copy(
          buffer.buffer,
          buffer.offset,
          0,
          applicationData.length
        );
        buffer.offset += applicationData.length;
      }
      encodeClosingTag2(buffer, 5);
      if (itemCount !== 0 && requestType && requestType !== 0) {
        encodeContextUnsigned2(buffer, 6, firstSequence);
      }
    };
    var decodeAcknowledge72 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      const objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      const property = { index: ASN1_ARRAY_ALL2 };
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      property.id = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      if (result.tagNumber === 2 && len < apduLen) {
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        property.index = decodedValue.value;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeBitstring2(buffer, offset + len, result.value);
      len += decodedValue.len;
      const resultFlag = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      const itemCount = decodedValue.value;
      if (!decodeIsOpeningTag2(buffer, offset + len)) {
        return void 0;
      }
      len++;
      const rangeBuffer = buffer.slice(offset + len, apduLen - 3);
      return {
        objectId,
        property,
        resultFlag,
        itemCount,
        rangeBuffer,
        len
      };
    };
    var register_foreign_device_exports2 = {};
    __export2(register_foreign_device_exports2, {
      decode: () => decode222,
      encode: () => encode222
    });
    var encode222 = (buffer, ttl, length = 2) => {
      encodeUnsigned2(buffer, ttl, length);
    };
    var decode222 = (buffer, offset, length = 2) => {
      let len = 0;
      let result = decodeUnsigned2(buffer, offset + len, length);
      len += result.len;
      return {
        len,
        ttl: result.value
      };
    };
    var reinitialize_device_exports2 = {};
    __export2(reinitialize_device_exports2, {
      decode: () => decode232,
      encode: () => encode232
    });
    var encode232 = (buffer, state, password) => {
      encodeContextEnumerated2(buffer, 0, state);
      if (password && password !== "") {
        encodeContextCharacterString2(buffer, 1, password);
      }
    };
    var decode232 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      let result;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      let decodedValue = decodeEnumerated2(
        buffer,
        offset + len,
        result.value
      );
      value.state = decodedValue.value;
      len += decodedValue.len;
      if (len < apduLen) {
        if (!decodeIsContextTag2(buffer, offset + len, 1)) {
          return void 0;
        }
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeCharacterString2(
          buffer,
          offset + len,
          apduLen - (offset + len),
          result.value
        );
        value.password = decodedValue.value;
        len += decodedValue.len;
      }
      value.len = len;
      return value;
    };
    var subscribe_cov_exports2 = {};
    __export2(subscribe_cov_exports2, {
      decode: () => decode242,
      encode: () => encode242
    });
    var encode242 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime) => {
      encodeContextUnsigned2(buffer, 0, subscriberProcessId);
      encodeContextObjectId2(
        buffer,
        1,
        monitoredObjectId.type,
        monitoredObjectId.instance
      );
      if (!cancellationRequest) {
        encodeContextBoolean2(buffer, 2, issueConfirmedNotifications);
        encodeContextUnsigned2(buffer, 3, lifetime);
      }
    };
    var decode242 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      let result;
      let decodedValue;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.subscriberProcessId = decodedValue.value;
      if (!decodeIsContextTag2(buffer, offset + len, 1)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.monitoredObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      value.cancellationRequest = true;
      if (len < apduLen) {
        value.issueConfirmedNotifications = false;
        if (decodeIsContextTag2(buffer, offset + len, 2)) {
          value.cancellationRequest = false;
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          value.issueConfirmedNotifications = buffer[offset + len] > 0;
          len++;
        }
        value.lifetime = 0;
        if (decodeIsContextTag2(buffer, offset + len, 3)) {
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          value.lifetime = decodedValue.value;
        }
      }
      value.len = len;
      return value;
    };
    var subscribe_property_exports2 = {};
    __export2(subscribe_property_exports2, {
      decode: () => decode252,
      encode: () => encode252
    });
    var encode252 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime, monitoredProperty, covIncrementPresent, covIncrement) => {
      encodeContextUnsigned2(buffer, 0, subscriberProcessId);
      encodeContextObjectId2(
        buffer,
        1,
        monitoredObjectId.type,
        monitoredObjectId.instance
      );
      if (!cancellationRequest) {
        encodeContextBoolean2(buffer, 2, issueConfirmedNotifications);
        encodeContextUnsigned2(buffer, 3, lifetime);
      }
      encodeOpeningTag2(buffer, 4);
      encodeContextEnumerated2(buffer, 0, monitoredProperty.id);
      if (monitoredProperty.index !== ASN1_ARRAY_ALL2) {
        encodeContextUnsigned2(buffer, 1, monitoredProperty.index);
      }
      encodeClosingTag2(buffer, 4);
      if (covIncrementPresent) {
        encodeContextReal2(buffer, 5, covIncrement);
      }
    };
    var decode252 = (buffer, offset) => {
      let len = 0;
      let value = {};
      let result;
      let decodedValue;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.subscriberProcessId = decodedValue.value;
      if (!decodeIsContextTag2(buffer, offset + len, 1)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      value.monitoredObjectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      value.cancellationRequest = true;
      value.issueConfirmedNotifications = false;
      if (decodeIsContextTag2(buffer, offset + len, 2)) {
        value.cancellationRequest = false;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        value.issueConfirmedNotifications = buffer[offset + len] > 0;
        len++;
      }
      value.lifetime = 0;
      if (decodeIsContextTag2(buffer, offset + len, 3)) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.lifetime = decodedValue.value;
      }
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 4)) {
        return void 0;
      }
      len++;
      value.monitoredProperty = {};
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.monitoredProperty.id = decodedValue.value;
      value.monitoredProperty.index = ASN1_ARRAY_ALL2;
      if (decodeIsContextTag2(buffer, offset + len, 1)) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.monitoredProperty.index = decodedValue.value;
      }
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 4)) {
        return void 0;
      }
      len++;
      value.covIncrement = 0;
      if (decodeIsContextTag2(buffer, offset + len, 5)) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        decodedValue = decodeReal2(buffer, offset + len);
        len += decodedValue.len;
        value.covIncrement = decodedValue.value;
      }
      value.len = len;
      return value;
    };
    var time_sync_exports2 = {};
    __export2(time_sync_exports2, {
      decode: () => decode262,
      encode: () => encode262
    });
    var encode262 = (buffer, time) => {
      encodeApplicationDate2(buffer, time);
      encodeApplicationTime2(buffer, time);
    };
    var decode262 = (buffer, offset, length) => {
      let len = 0;
      let result;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 10) {
        return void 0;
      }
      const date = decodeDate2(buffer, offset + len);
      len += date.len;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 11) {
        return void 0;
      }
      const time = decodeBacnetTime2(buffer, offset + len);
      len += time.len;
      return {
        len,
        value: new Date(
          date.value.getFullYear(),
          date.value.getMonth(),
          date.value.getDate(),
          time.value.getHours(),
          time.value.getMinutes(),
          time.value.getSeconds(),
          time.value.getMilliseconds()
        )
      };
    };
    var who_has_exports2 = {};
    __export2(who_has_exports2, {
      decode: () => decode272,
      encode: () => encode272
    });
    var encode272 = (buffer, lowLimit, highLimit, objectId, objectName) => {
      if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE2 && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE2) {
        encodeContextUnsigned2(buffer, 0, lowLimit);
        encodeContextUnsigned2(buffer, 1, highLimit);
      }
      if (objectName && objectName !== "") {
        encodeContextCharacterString2(buffer, 3, objectName);
      } else {
        encodeContextObjectId2(buffer, 2, objectId.type, objectId.instance);
      }
    };
    var decode272 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      let decodedValue;
      let result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber === 0) {
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        if (decodedValue.value <= ASN1_MAX_INSTANCE2) {
          value.lowLimit = decodedValue.value;
        }
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
      }
      if (result.tagNumber === 1) {
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        if (decodedValue.value <= ASN1_MAX_INSTANCE2) {
          value.highLimit = decodedValue.value;
        }
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
      }
      if (result.tagNumber === 2) {
        decodedValue = decodeObjectId2(buffer, offset + len);
        len += decodedValue.len;
        value.objectId = {
          type: decodedValue.objectType,
          instance: decodedValue.instance
        };
      }
      if (result.tagNumber === 3) {
        decodedValue = decodeCharacterString2(
          buffer,
          offset + len,
          apduLen - (offset + len),
          result.value
        );
        len += decodedValue.len;
        value.objectName = decodedValue.value;
      }
      value.len = len;
      return value;
    };
    var who_is_exports2 = {};
    __export2(who_is_exports2, {
      decode: () => decode282,
      encode: () => encode282
    });
    var encode282 = (buffer, lowLimit, highLimit) => {
      if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE2 && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE2) {
        encodeContextUnsigned2(buffer, 0, lowLimit);
        encodeContextUnsigned2(buffer, 1, highLimit);
      }
    };
    var decode282 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {};
      if (apduLen <= 0) {
        return {};
      }
      let result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 0) {
        return void 0;
      }
      if (apduLen <= len) {
        return void 0;
      }
      let decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      if (decodedValue.value <= ASN1_MAX_INSTANCE2) {
        value.lowLimit = decodedValue.value;
      }
      if (apduLen <= len) {
        return void 0;
      }
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      if (apduLen <= len) {
        return void 0;
      }
      decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
      len += decodedValue.len;
      if (decodedValue.value <= ASN1_MAX_INSTANCE2) {
        value.highLimit = decodedValue.value;
      }
      value.len = len;
      return value;
    };
    var write_property_exports2 = {};
    __export2(write_property_exports2, {
      decode: () => decode292,
      encode: () => encode292
    });
    var encode292 = (buffer, objectType, objectInstance, propertyId, arrayIndex, priority, values) => {
      encodeContextObjectId2(buffer, 0, objectType, objectInstance);
      encodeContextEnumerated2(buffer, 1, propertyId);
      if (arrayIndex !== ASN1_ARRAY_ALL2) {
        encodeContextUnsigned2(buffer, 2, arrayIndex);
      }
      encodeOpeningTag2(buffer, 3);
      values.forEach((value) => {
        bacappEncodeApplicationData2(buffer, value);
      });
      encodeClosingTag2(buffer, 3);
      if (priority !== ASN1_NO_PRIORITY2) {
        encodeContextUnsigned2(buffer, 4, priority);
      }
    };
    var decode292 = (buffer, offset, apduLen) => {
      let len = 0;
      let value = {
        property: {}
      };
      let decodedValue;
      let result;
      if (!decodeIsContextTag2(buffer, offset + len, 0)) {
        return void 0;
      }
      len++;
      decodedValue = decodeObjectId2(buffer, offset + len);
      let objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      len += decodedValue.len;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 1) {
        return void 0;
      }
      decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.property.id = decodedValue.value;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      if (result.tagNumber === 2) {
        len += result.len;
        decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
        len += decodedValue.len;
        value.property.index = decodedValue.value;
      } else {
        value.property.index = ASN1_ARRAY_ALL2;
      }
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 3)) {
        return void 0;
      }
      len++;
      const values = [];
      while (apduLen - len > 1 && !decodeIsClosingTagNumber2(buffer, offset + len, 3)) {
        decodedValue = bacappDecodeApplicationData2(
          buffer,
          offset + len,
          apduLen + offset,
          objectId.type,
          value.property.id
        );
        if (!decodedValue) {
          return void 0;
        }
        len += decodedValue.len;
        delete decodedValue.len;
        values.push(decodedValue);
      }
      value.value = values;
      if (!decodeIsClosingTagNumber2(buffer, offset + len, 3)) {
        return void 0;
      }
      len++;
      value.priority = ASN1_MAX_PRIORITY2;
      if (len < apduLen) {
        result = decodeTagNumberAndValue2(buffer, offset + len);
        if (result.tagNumber === 4) {
          len += result.len;
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue;
          if (decodedValue.value >= ASN1_MIN_PRIORITY2 && decodedValue.value <= ASN1_MAX_PRIORITY2) {
            value.priority = decodedValue.value;
          } else {
            return void 0;
          }
        }
      }
      return {
        len,
        objectId,
        value
      };
    };
    var write_property_multiple_exports2 = {};
    __export2(write_property_multiple_exports2, {
      decode: () => decode302,
      encode: () => encode302,
      encodeObject: () => encodeObject2
    });
    var encode302 = (buffer, objectId, values) => {
      encodeContextObjectId2(buffer, 0, objectId.type, objectId.instance);
      encodeOpeningTag2(buffer, 1);
      values.forEach((pValue) => {
        encodeContextEnumerated2(buffer, 0, pValue.property.id);
        if (pValue.property.index !== ASN1_ARRAY_ALL2) {
          encodeContextUnsigned2(buffer, 1, pValue.property.index);
        }
        encodeOpeningTag2(buffer, 2);
        pValue.value.forEach((value) => {
          bacappEncodeApplicationData2(buffer, value);
        });
        encodeClosingTag2(buffer, 2);
        if (pValue.priority !== ASN1_NO_PRIORITY2) {
          encodeContextUnsigned2(buffer, 3, pValue.priority);
        }
      });
      encodeClosingTag2(buffer, 1);
    };
    var decode302 = (buffer, offset, apduLen) => {
      let len = 0;
      let result;
      let decodedValue;
      let objectId;
      result = decodeTagNumberAndValue2(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 0 || apduLen <= len) {
        return void 0;
      }
      apduLen -= len;
      if (apduLen < 4) {
        return void 0;
      }
      decodedValue = decodeObjectId2(buffer, offset + len);
      len += decodedValue.len;
      objectId = {
        type: decodedValue.objectType,
        instance: decodedValue.instance
      };
      if (!decodeIsOpeningTagNumber2(buffer, offset + len, 1)) {
        return void 0;
      }
      len++;
      const _values = [];
      while (apduLen - len > 1) {
        let newEntry = {};
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber !== 0) {
          return void 0;
        }
        decodedValue = decodeEnumerated2(buffer, offset + len, result.value);
        len += decodedValue.len;
        let propertyId = decodedValue.value;
        let arrayIndex = ASN1_ARRAY_ALL2;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber === 1) {
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          arrayIndex = decodedValue.value;
          result = decodeTagNumberAndValue2(buffer, offset + len);
          len += result.len;
        }
        newEntry.property = { id: propertyId, index: arrayIndex };
        if (result.tagNumber !== 2 || !decodeIsOpeningTag2(buffer, offset + len - 1)) {
          return void 0;
        }
        const values = [];
        while (len + offset <= buffer.length && !decodeIsClosingTag2(buffer, offset + len)) {
          let value = bacappDecodeApplicationData2(
            buffer,
            offset + len,
            apduLen + offset,
            objectId.type,
            propertyId
          );
          if (!value) {
            return void 0;
          }
          len += value.len;
          delete value.len;
          values.push(value);
        }
        len++;
        newEntry.value = values;
        let priority = ASN1_NO_PRIORITY2;
        result = decodeTagNumberAndValue2(buffer, offset + len);
        len += result.len;
        if (result.tagNumber === 3) {
          decodedValue = decodeUnsigned2(buffer, offset + len, result.value);
          len += decodedValue.len;
          priority = decodedValue.value;
        } else {
          len--;
        }
        newEntry.priority = priority;
        _values.push(newEntry);
        if (decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
          len++;
        }
      }
      if (decodeIsClosingTagNumber2(buffer, offset + len, 1)) {
        len++;
      }
      return {
        len,
        objectId,
        values: _values
      };
    };
    var encodeObject2 = (buffer, values) => {
      values.forEach((object) => {
        encode302(buffer, object.objectId, object.values);
      });
    };
    var getDecodedType2 = (buffer, offset) => {
      return buffer[offset];
    };
    var encodeConfirmedServiceRequest2 = (buffer, type, service, maxSegments, maxApdu, invokeId, sequencenumber, proposedWindowSize) => {
      buffer.buffer[buffer.offset++] = type;
      buffer.buffer[buffer.offset++] = maxSegments | maxApdu;
      buffer.buffer[buffer.offset++] = invokeId;
      if ((type & 8) > 0) {
        buffer.buffer[buffer.offset++] = sequencenumber;
        buffer.buffer[buffer.offset++] = proposedWindowSize;
      }
      buffer.buffer[buffer.offset++] = service;
    };
    var decodeConfirmedServiceRequest2 = (buffer, offset) => {
      const orgOffset = offset;
      const type = buffer[offset++];
      const maxSegments = buffer[offset] & 240;
      const maxApdu = buffer[offset++] & 15;
      const invokeId = buffer[offset++];
      let sequencenumber = 0;
      let proposedWindowNumber = 0;
      if ((type & 8) > 0) {
        sequencenumber = buffer[offset++];
        proposedWindowNumber = buffer[offset++];
      }
      const service = buffer[offset++];
      return {
        len: offset - orgOffset,
        type,
        service,
        maxSegments,
        maxApdu,
        invokeId,
        sequencenumber,
        proposedWindowNumber
      };
    };
    var encodeUnconfirmedServiceRequest2 = (buffer, type, service) => {
      buffer.buffer[buffer.offset++] = type;
      buffer.buffer[buffer.offset++] = service;
    };
    var decodeUnconfirmedServiceRequest2 = (buffer, offset) => {
      const orgOffset = offset;
      const type = buffer[offset++];
      const service = buffer[offset++];
      return {
        len: offset - orgOffset,
        type,
        service
      };
    };
    var encodeSimpleAck2 = (buffer, type, service, invokeId) => {
      buffer.buffer[buffer.offset++] = type;
      buffer.buffer[buffer.offset++] = invokeId;
      buffer.buffer[buffer.offset++] = service;
    };
    var decodeSimpleAck2 = (buffer, offset) => {
      const orgOffset = offset;
      const type = buffer[offset++];
      const invokeId = buffer[offset++];
      const service = buffer[offset++];
      return {
        len: offset - orgOffset,
        type,
        service,
        invokeId
      };
    };
    var encodeComplexAck2 = (buffer, type, service, invokeId, sequencenumber, proposedWindowNumber) => {
      let len = 3;
      buffer.buffer[buffer.offset++] = type;
      buffer.buffer[buffer.offset++] = invokeId;
      if ((type & 8) > 0) {
        buffer.buffer[buffer.offset++] = sequencenumber;
        buffer.buffer[buffer.offset++] = proposedWindowNumber;
        len += 2;
      }
      buffer.buffer[buffer.offset++] = service;
      return len;
    };
    var decodeComplexAck2 = (buffer, offset) => {
      const orgOffset = offset;
      const type = buffer[offset++];
      const invokeId = buffer[offset++];
      let sequencenumber = 0;
      let proposedWindowNumber = 0;
      if ((type & 8) > 0) {
        sequencenumber = buffer[offset++];
        proposedWindowNumber = buffer[offset++];
      }
      const service = buffer[offset++];
      return {
        len: offset - orgOffset,
        type,
        service,
        invokeId,
        sequencenumber,
        proposedWindowNumber
      };
    };
    var encodeSegmentAck2 = (buffer, type, originalInvokeId, sequencenumber, actualWindowSize) => {
      buffer.buffer[buffer.offset++] = type;
      buffer.buffer[buffer.offset++] = originalInvokeId;
      buffer.buffer[buffer.offset++] = sequencenumber;
      buffer.buffer[buffer.offset++] = actualWindowSize;
    };
    var decodeSegmentAck2 = (buffer, offset) => {
      const orgOffset = offset;
      const type = buffer[offset++];
      const originalInvokeId = buffer[offset++];
      const sequencenumber = buffer[offset++];
      const actualWindowSize = buffer[offset++];
      return {
        len: offset - orgOffset,
        type,
        originalInvokeId,
        sequencenumber,
        actualWindowSize
      };
    };
    var encodeResult2 = (buffer, resultCode) => {
      encodeUnsigned2(buffer, resultCode, 2);
    };
    var encodeError2 = (buffer, type, service, invokeId) => {
      buffer.buffer[buffer.offset++] = type;
      buffer.buffer[buffer.offset++] = invokeId;
      buffer.buffer[buffer.offset++] = service;
    };
    var decodeError2 = (buffer, offset) => {
      const orgOffset = offset;
      const type = buffer[offset++];
      const invokeId = buffer[offset++];
      const service = buffer[offset++];
      return {
        len: offset - orgOffset,
        type,
        service,
        invokeId
      };
    };
    var decodeAbort2 = (buffer, offset) => {
      const orgOffset = offset;
      const type = buffer[offset++];
      const invokeId = buffer[offset++];
      const reason = buffer[offset++];
      return {
        len: offset - orgOffset,
        type,
        invokeId,
        reason
      };
    };
    var DEFAULT_HOP_COUNT3 = 255;
    var BACNET_PROTOCOL_VERSION2 = 1;
    var BACNET_ADDRESS_TYPES2 = {
      NONE: 0,
      IP: 1
    };
    var decodeTarget2 = (buffer, offset) => {
      let len = 0;
      const target = {
        type: BACNET_ADDRESS_TYPES2.NONE,
        net: buffer[offset + len++] << 8 | buffer[offset + len++] << 0
      };
      const adrLen = buffer[offset + len++];
      if (adrLen > 0) {
        target.adr = [];
        for (let i = 0; i < adrLen; i++) {
          target.adr.push(buffer[offset + len++]);
        }
      }
      return {
        target,
        len
      };
    };
    var encodeTarget2 = (buffer, target) => {
      buffer.buffer[buffer.offset++] = (target.net & 65280) >> 8;
      buffer.buffer[buffer.offset++] = (target.net & 255) >> 0;
      if (target.net === 65535 || !target.adr) {
        buffer.buffer[buffer.offset++] = 0;
      } else {
        buffer.buffer[buffer.offset++] = target.adr.length;
        if (target.adr.length > 0) {
          for (let i = 0; i < target.adr.length; i++) {
            buffer.buffer[buffer.offset++] = target.adr[i];
          }
        }
      }
    };
    var decode312 = (buffer, offset) => {
      let adrLen;
      const orgOffset = offset;
      offset++;
      const funct = buffer[offset++];
      let destination;
      if (funct & 32) {
        const tmpDestination = decodeTarget2(buffer, offset);
        offset += tmpDestination.len;
        destination = tmpDestination.target;
      }
      let source;
      if (funct & 8) {
        const tmpSource = decodeTarget2(buffer, offset);
        offset += tmpSource.len;
        source = tmpSource.target;
      }
      let hopCount = 0;
      if (funct & 32) {
        hopCount = buffer[offset++];
      }
      let networkMsgType = 0;
      let vendorId = 0;
      if (funct & 128) {
        networkMsgType = buffer[offset++];
        if (networkMsgType >= 128) {
          vendorId = buffer[offset++] << 8 | buffer[offset++] << 0;
        } else if (networkMsgType === 0) {
          offset += 2;
        }
      }
      if (buffer[orgOffset + 0] !== BACNET_PROTOCOL_VERSION2) {
        return void 0;
      }
      return {
        len: offset - orgOffset,
        funct,
        destination,
        source,
        hopCount,
        networkMsgType,
        vendorId
      };
    };
    var encode312 = (buffer, funct, destination, source, hopCount, networkMsgType, vendorId) => {
      const hasDestination = destination && destination.net > 0;
      const hasSource = source && source.net > 0 && source.net !== 65535;
      buffer.buffer[buffer.offset++] = BACNET_PROTOCOL_VERSION2;
      buffer.buffer[buffer.offset++] = funct | (hasDestination ? 32 : 0) | (hasSource ? 8 : 0);
      if (hasDestination) {
        encodeTarget2(buffer, destination);
      }
      if (hasSource) {
        encodeTarget2(buffer, source);
      }
      if (hasDestination) {
        buffer.buffer[buffer.offset++] = hopCount || DEFAULT_HOP_COUNT3;
      }
      if ((funct & 128) > 0) {
        buffer.buffer[buffer.offset++] = networkMsgType;
        if (networkMsgType >= 128) {
          buffer.buffer[buffer.offset++] = (vendorId & 65280) >> 8;
          buffer.buffer[buffer.offset++] = (vendorId & 255) >> 0;
        }
      }
    };
    var DEFAULT_BACNET_PORT22 = 47808;
    var encode322 = (buffer, func, msgLength, originatingIP) => {
      buffer[0] = BVLL_TYPE_BACNET_IP2;
      buffer[1] = func;
      buffer[2] = (msgLength & 65280) >> 8;
      buffer[3] = (msgLength & 255) >> 0;
      if (originatingIP) {
        if (func !== 4) {
          throw new Error(
            "Cannot specify originatingIP unless BvlcResultPurpose.FORWARDED_NPDU is used."
          );
        }
        const [ipstr, portstr] = originatingIP.split(":");
        const port = parseInt(portstr, 10) || DEFAULT_BACNET_PORT22;
        const ip = ipstr.split(".");
        buffer[4] = parseInt(ip[0], 10);
        buffer[5] = parseInt(ip[1], 10);
        buffer[6] = parseInt(ip[2], 10);
        buffer[7] = parseInt(ip[3], 10);
        buffer[8] = (port & 65280) >> 8;
        buffer[9] = (port & 255) >> 0;
        return 6 + BVLC_HEADER_LENGTH3;
      } else {
        if (func === 4) {
          throw new Error(
            "Must specify originatingIP if BvlcResultPurpose.FORWARDED_NPDU is used."
          );
        }
      }
      return BVLC_HEADER_LENGTH3;
    };
    var decode322 = (buffer, _offset) => {
      let len;
      const func = buffer[1];
      const msgLength = buffer[2] << 8 | buffer[3] << 0;
      if (buffer[0] !== BVLL_TYPE_BACNET_IP2 || buffer.length !== msgLength) {
        return void 0;
      }
      let originatingIP = null;
      switch (func) {
        case 0:
        case 10:
        case 11:
        case 9:
        case 5:
        case 6:
        case 8:
        case 2:
        case 1:
        case 3:
        case 7:
          len = 4;
          break;
        case 4:
          const port = buffer[8] << 8 | buffer[9];
          originatingIP = buffer.slice(4, 8).join(".");
          if (port !== DEFAULT_BACNET_PORT22) {
            originatingIP += ":" + port;
          }
          len = 10;
          break;
        case 12:
          return void 0;
        default:
          return void 0;
      }
      return {
        len,
        func,
        msgLength,
        // Originating IP is set to the IP address of the node that originally
        // sent the packet, when it has been forwarded to us by a BBMD (since the
        // BBMD's IP address will be in the sender field.
        originatingIP
      };
    };
    var EventEmitter22 = import_events22.default.EventEmitter;
    var debug32 = (0, import_debug32.default)("bacnet:client:debug");
    var trace22 = (0, import_debug32.default)("bacnet:client:trace");
    var ALL_INTERFACES2 = "0.0.0.0";
    var LOCALHOST_INTERFACES_IPV42 = "127.0.0.1";
    var BROADCAST_ADDRESS2 = "255.255.255.255";
    var DEFAULT_HOP_COUNT22 = 255;
    var BVLC_HEADER_LENGTH22 = 4;
    var BVLC_FWD_HEADER_LENGTH2 = 10;
    var beU2 = UnconfirmedServiceChoice2;
    var unconfirmedServiceMap2 = {
      [beU2.I_AM]: "iAm",
      [beU2.WHO_IS]: "whoIs",
      [beU2.WHO_HAS]: "whoHas",
      [beU2.UNCONFIRMED_COV_NOTIFICATION]: "covNotifyUnconfirmed",
      [beU2.TIME_SYNCHRONIZATION]: "timeSync",
      [beU2.UTC_TIME_SYNCHRONIZATION]: "timeSyncUTC",
      [beU2.UNCONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
      [beU2.I_HAVE]: "iHave",
      [beU2.UNCONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
    };
    var beC2 = ConfirmedServiceChoice2;
    var confirmedServiceMap2 = {
      [beC2.READ_PROPERTY]: "readProperty",
      [beC2.WRITE_PROPERTY]: "writeProperty",
      [beC2.READ_PROPERTY_MULTIPLE]: "readPropertyMultiple",
      [beC2.WRITE_PROPERTY_MULTIPLE]: "writePropertyMultiple",
      [beC2.CONFIRMED_COV_NOTIFICATION]: "covNotify",
      [beC2.ATOMIC_WRITE_FILE]: "atomicWriteFile",
      [beC2.ATOMIC_READ_FILE]: "atomicReadFile",
      [beC2.SUBSCRIBE_COV]: "subscribeCov",
      [beC2.SUBSCRIBE_COV_PROPERTY]: "subscribeProperty",
      [beC2.DEVICE_COMMUNICATION_CONTROL]: "deviceCommunicationControl",
      [beC2.REINITIALIZE_DEVICE]: "reinitializeDevice",
      [beC2.CONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
      [beC2.READ_RANGE]: "readRange",
      [beC2.CREATE_OBJECT]: "createObject",
      [beC2.DELETE_OBJECT]: "deleteObject",
      [beC2.ACKNOWLEDGE_ALARM]: "alarmAcknowledge",
      [beC2.GET_ALARM_SUMMARY]: "getAlarmSummary",
      [beC2.GET_ENROLLMENT_SUMMARY]: "getEnrollmentSummary",
      [beC2.GET_EVENT_INFORMATION]: "getEventInformation",
      [beC2.LIFE_SAFETY_OPERATION]: "lifeSafetyOperation",
      [beC2.ADD_LIST_ELEMENT]: "addListElement",
      [beC2.REMOVE_LIST_ELEMENT]: "removeListElement",
      [beC2.CONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
    };
    var errorReasonEnums2 = {
      BacnetAbort: RejectReason2
    };
    var BacnetError2 = class extends Error {
      constructor(message, bacnetErrorClass, bacnetErrorCode) {
        super(message);
        this.bacnetErrorClass = bacnetErrorClass;
        this.bacnetErrorCode = bacnetErrorCode;
      }
    };
    function bacnetErrorToString2(err) {
      var _a;
      const isError = err instanceof Error || err instanceof BacnetError2;
      if (!isError)
        return;
      const message = err.message;
      const reasonClass = message == null ? void 0 : message.split(" - ")[0];
      const reason = +((_a = message == null ? void 0 : message.split("Reason:")[1]) == null ? void 0 : _a.split(" ")[0]);
      if (!errorReasonEnums2[reasonClass])
        return;
      const reasonString = errorReasonEnums2[reasonClass][reason];
      return reasonClass + ": " + reasonString;
    }
    var Client2 = class extends EventEmitter22 {
      /**
       *
       * @param options
       */
      constructor(options) {
        super();
        options = options || {};
        this._invokeCounter = 1;
        this._invokeStore = {};
        this._lastSequenceNumber = 0;
        this._segmentStore = [];
        this._settings = {
          port: options.port || 47808,
          interface: options.interface || ALL_INTERFACES2,
          transport: options.transport,
          broadcastAddress: options.broadcastAddress || BROADCAST_ADDRESS2,
          apduTimeout: options.apduTimeout || 3e3
        };
        options.reuseAddr = options.reuseAddr === void 0 ? true : !!options.reuseAddr;
        this._transport = this._settings.transport || new Transport2({
          port: this._settings.port,
          interface: this._settings.interface,
          broadcastAddress: this._settings.broadcastAddress,
          reuseAddr: options.reuseAddr
        });
        this._transport.on("message", this._receiveData.bind(this));
        this._transport.on("error", this._receiveError.bind(this));
        this._transport.on("listening", () => this.emit("listening"));
        this._transport.open();
      }
      /**
       *
       * @returns {number}
       * @private
       */
      _getInvokeId() {
        const id = this._invokeCounter++;
        if (id >= 256)
          this._invokeCounter = 1;
        return id - 1;
      }
      /**
       *
       * @param id
       * @param err
       * @param result
       * @returns {*}
       * @private
       */
      _invokeCallback(id, err, result) {
        const callback = this._invokeStore[id];
        if (callback) {
          return void callback(err, result);
        }
        debug32("InvokeId", id, "not found -> drop package");
      }
      /**
       *
       * @param id
       * @param callback
       * @private
       */
      _addCallback(id, callback) {
        const timeout = setTimeout(() => {
          delete this._invokeStore[id];
          callback(new Error("ERR_TIMEOUT"));
        }, this._settings.apduTimeout);
        this._invokeStore[id] = (err, data) => {
          clearTimeout(timeout);
          delete this._invokeStore[id];
          callback(err, data);
        };
      }
      /**
       *
       * @param isForwarded
       * @returns {{offset: (number), buffer: *}}
       * @private
       */
      _getBuffer(isForwarded) {
        return Object.assign(
          {},
          {
            buffer: Buffer.alloc(this._transport.getMaxPayload()),
            offset: isForwarded ? BVLC_FWD_HEADER_LENGTH2 : BVLC_HEADER_LENGTH22
          }
        );
      }
      /**
       *
       * @param invokeId
       * @param buffer
       * @param offset
       * @param length
       * @returns {*}
       * @private
       */
      _processError(invokeId, buffer, offset, length) {
        const result = error_exports2.decode(buffer, offset);
        trace22("Received error:", result);
        if (!result) {
          return debug32("Couldn`t decode Error");
        }
        const err = new BacnetError2(error_exports2.buildMessage(result));
        err.bacnetErrorClass = result.class;
        err.bacnetErrorCode = result.code;
        this._invokeCallback(invokeId, err);
      }
      /**
       *
       * @param invokeId
       * @param reason
       * @private
       */
      _processAbort(invokeId, reason) {
        const err = new BacnetError2("BacnetAbort - Reason:" + reason);
        err.bacnetAbortReason = reason;
        err.bacnetErrorClass = AbortReason2;
        this._invokeCallback(invokeId, err);
      }
      /**
       *
       * @param receiver
       * @param negative
       * @param server
       * @param originalInvokeId
       * @param sequencenumber
       * @param actualWindowSize
       * @private
       */
      _segmentAckResponse(receiver, negative, server, originalInvokeId, sequencenumber, actualWindowSize) {
        const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
        encode312(
          buffer,
          0,
          receiver,
          null,
          DEFAULT_HOP_COUNT22,
          0,
          0
        );
        encodeSegmentAck2(
          buffer,
          64 | (negative ? 2 : 0) | (server ? 1 : 0),
          originalInvokeId,
          sequencenumber,
          actualWindowSize
        );
        this.sendBvlc(receiver, buffer);
      }
      /**
       *
       * @param msg
       * @param first
       * @param moreFollows
       * @param buffer
       * @param offset
       * @param length
       * @private
       */
      _performDefaultSegmentHandling(msg, first, moreFollows, buffer, offset, length) {
        if (first) {
          this._segmentStore = [];
          msg.type &= ~8;
          let apduHeaderLen = 3;
          if ((msg.type & PDU_TYPE_MASK2) === 0) {
            apduHeaderLen = 4;
          }
          const apdubuffer = this._getBuffer();
          apdubuffer.offset = 0;
          buffer.copy(apdubuffer.buffer, apduHeaderLen, offset, offset + length);
          if ((msg.type & PDU_TYPE_MASK2) === 0) {
            encodeConfirmedServiceRequest2(
              apdubuffer,
              msg.type,
              msg.service,
              msg.maxSegments,
              msg.maxApdu,
              msg.invokeId,
              0,
              0
            );
          } else {
            encodeComplexAck2(
              apdubuffer,
              msg.type,
              msg.service,
              msg.invokeId,
              0,
              0
            );
          }
          this._segmentStore.push(
            //@ts-ignore
            apdubuffer.buffer.slice(0, length + apduHeaderLen)
          );
        } else {
          this._segmentStore.push(buffer.slice(offset, offset + length));
        }
        if (!moreFollows) {
          const apduBuffer = Buffer.concat(this._segmentStore);
          this._segmentStore = [];
          msg.type &= ~8;
          this._handlePdu(apduBuffer, 0, apduBuffer.length, msg.header);
        }
      }
      /**
       *
       * @param msg
       * @param server
       * @param buffer
       * @param offset
       * @param length
       * @private
       */
      _processSegment(msg, server, buffer, offset, length) {
        let first = false;
        if (msg.sequencenumber === 0 && this._lastSequenceNumber === 0) {
          first = true;
        } else {
          if (msg.sequencenumber !== this._lastSequenceNumber + 1) {
            return this._segmentAckResponse(
              msg.header.address,
              true,
              server,
              msg.invokeId,
              this._lastSequenceNumber,
              msg.proposedWindowNumber
            );
          }
        }
        this._lastSequenceNumber = msg.sequencenumber;
        const moreFollows = msg.type & 4;
        if (!moreFollows) {
          this._lastSequenceNumber = 0;
        }
        if (msg.sequencenumber % msg.proposedWindowNumber === 0 || !moreFollows) {
          this._segmentAckResponse(
            msg.header.address,
            false,
            server,
            msg.invokeId,
            msg.sequencenumber,
            msg.proposedWindowNumber
          );
        }
        this._performDefaultSegmentHandling(
          msg,
          first,
          moreFollows,
          buffer,
          offset,
          length
        );
      }
      /**
       *
       * @param serviceMap
       * @param content
       * @param buffer
       * @param offset
       * @param length
       * @returns {*}
       * @private
       */
      _processServiceRequest(serviceMap, content, buffer, offset, length) {
        let result;
        const sender = content.header.sender;
        if (sender.address === LOCALHOST_INTERFACES_IPV42) {
          debug32("Received and skipped localhost service request:", content.service);
          return;
        }
        const name = serviceMap[content.service];
        if (!name) {
          debug32("Received unsupported service request:", content.service);
          return;
        }
        const id = content.invokeId ? "@" + content.invokeId : "";
        trace22(`Received service request${id}:`, name);
        const serviceHandler = services_exports2[name];
        if (serviceHandler) {
          try {
            content.payload = serviceHandler.decode(buffer, offset, length);
            trace22(`Handled service request${id}:`, name, JSON.stringify(content));
          } catch (e) {
            debug32("Exception thrown when processing message:", e);
            debug32("Original message was", name + ":", content);
            return;
          }
          if (!content.payload) {
            return debug32("Received invalid", name, "message");
          }
        } else {
          debug32("No serviceHandler defined for:", name);
        }
        if (this.listenerCount(name)) {
          trace22("listener count by name emits " + name + " with content");
          this.emit(name, content);
        } else {
          if (this.listenerCount("unhandledEvent")) {
            trace22("unhandled event emiting with content");
            this.emit("unhandledEvent", content);
          } else {
            trace22(
              "no unhandled event handler with header: " + JSON.stringify(content.header)
            );
            if (content.header.expectingReply) {
              debug32("Replying with error for unhandled service:", name);
              content.header.sender.forwardedFrom = null;
              this.errorResponse(
                content.header.sender,
                content.service,
                content.invokeId,
                5,
                67
                /* REJECT_UNRECOGNIZED_SERVICE */
              );
            }
          }
        }
      }
      /**
       *
       * @param buffer
       * @param offset
       * @param length
       * @param header
       * @private
       */
      _handlePdu(buffer, offset, length, header) {
        let msg;
        trace22("handlePdu Header: ", header);
        switch (header.apduType & PDU_TYPE_MASK2) {
          case 16:
            msg = decodeUnconfirmedServiceRequest2(buffer, offset);
            msg.header = header;
            msg.header.confirmedService = false;
            this._processServiceRequest(
              unconfirmedServiceMap2,
              msg,
              buffer,
              offset + msg.len,
              length - msg.len
            );
            break;
          case 32:
            msg = decodeSimpleAck2(buffer, offset);
            offset += msg.len;
            length -= msg.len;
            this._invokeCallback(msg.invokeId, null, {
              msg,
              buffer,
              offset: offset + msg.len,
              length: length - msg.len
            });
            break;
          case 48:
            msg = decodeComplexAck2(buffer, offset);
            msg.header = header;
            if ((header.apduType & 8) === 0) {
              this._invokeCallback(msg.invokeId, null, {
                msg,
                buffer,
                offset: offset + msg.len,
                length: length - msg.len
              });
            } else {
              this._processSegment(
                msg,
                true,
                buffer,
                offset + msg.len,
                length - msg.len
              );
            }
            break;
          case 64:
            msg = decodeSegmentAck2(buffer, offset);
            msg.header = header;
            this._processSegment(
              msg,
              true,
              buffer,
              offset + msg.len,
              length - msg.len
            );
            break;
          case 80:
            msg = decodeError2(buffer, offset);
            this._processError(
              msg.invokeId,
              buffer,
              offset + msg.len,
              length - msg.len
            );
            break;
          case 96:
          case 112:
            msg = decodeAbort2(buffer, offset);
            this._processAbort(msg.invokeId, msg.reason);
            break;
          case 0:
            msg = decodeConfirmedServiceRequest2(buffer, offset);
            msg.header = header;
            msg.header.confirmedService = true;
            if ((header.apduType & 8) === 0) {
              this._processServiceRequest(
                confirmedServiceMap2,
                msg,
                buffer,
                offset + msg.len,
                length - msg.len
              );
            } else {
              this._processSegment(
                msg,
                true,
                buffer,
                offset + msg.len,
                length - msg.len
              );
            }
            break;
          default:
            debug32(`Received unknown PDU type ${header.apduType} -> Drop packet`);
            break;
        }
      }
      /**
       *
       * @param buffer
       * @param offset
       * @param msgLength
       * @param header
       * @returns {*}
       * @private
       */
      _handleNpdu(buffer, offset, msgLength, header) {
        if (msgLength <= 0) {
          return trace22("No NPDU data -> Drop package");
        }
        const result = decode312(buffer, offset);
        if (!result) {
          return trace22("Received invalid NPDU header -> Drop package");
        }
        if (result.funct & 128) {
          return trace22("Received network layer message -> Drop package");
        }
        offset += result.len;
        msgLength -= result.len;
        if (msgLength <= 0) {
          return trace22("No APDU data -> Drop package");
        }
        header.apduType = getDecodedType2(buffer, offset);
        header.expectingReply = !!(result.funct & 4);
        this._handlePdu(buffer, offset, msgLength, header);
      }
      /**
       *
       * @param buffer
       * @param remoteAddress
       * @returns {*}
       * @private
       */
      _receiveData(buffer, remoteAddress) {
        if (buffer.length < BVLC_HEADER_LENGTH3) {
          return trace22("Received invalid data -> Drop package");
        }
        const result = decode322(buffer, 0);
        if (!result) {
          return trace22("Received invalid BVLC header -> Drop package");
        }
        let header = {
          // Which function the packet came in on, so later code can distinguish
          // between ORIGINAL_BROADCAST_NPDU and DISTRIBUTE_BROADCAST_TO_NETWORK.
          func: result.func,
          sender: {
            // Address of the host we are directly connected to. String, IP:port.
            address: remoteAddress,
            // If the host is a BBMD passing messages along to another node, this
            // is the address of the distant BACnet node.  String, IP:port.
            // Typically we won't have network connectivity to this address, but
            // we have to include it in replies so the host we are connect to knows
            // where to forward the messages.
            forwardedFrom: null
          }
        };
        switch (result.func) {
          case 10:
          case 11:
            this._handleNpdu(
              buffer,
              result.len,
              buffer.length - result.len,
              header
            );
            break;
          case 4:
            header.sender.forwardedFrom = result.originatingIP;
            this._handleNpdu(
              buffer,
              result.len,
              buffer.length - result.len,
              header
            );
            break;
          case 5:
            let decodeResult = register_foreign_device_exports2.decode(
              buffer,
              result.len,
              buffer.length - result.len
            );
            if (!decodeResult) {
              return trace22("Received invalid registerForeignDevice message");
            }
            this.emit("registerForeignDevice", {
              header,
              payload: decodeResult
            });
            break;
          case 9:
            this._handleNpdu(
              buffer,
              result.len,
              buffer.length - result.len,
              header
            );
            break;
          default:
            debug32(
              "Received unknown BVLC function " + result.func + " -> Drop package"
            );
            break;
        }
      }
      /**
       * @event bacnet.error
       * @param {error} err - The error object thrown by the underlying transport layer.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.on('error', (err) => {
       *   console.log('Error occurred: ', err);
       *   client.close();
       * });
       */
      _receiveError(err) {
        this.emit("error", err);
      }
      /**
       * The whoIs command discovers all BACNET devices in a network.
       * @function bacnet.whoIs
       * @param {string} receiver - IP address of the target device.
       * @param {object=} options
       * @param {number=} options.lowLimit - Minimal device instance number to search for.
       * @param {number=} options.highLimit - Maximal device instance number to search for.
       * @fires bacnet.iAm
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.whoIs();
       */
      whoIs(receiver, options) {
        if (!options) {
          if (receiver && typeof receiver === "object" && receiver.address === void 0 && receiver.forwardedFrom === void 0 && (receiver.lowLimit !== void 0 || receiver.highLimit !== void 0)) {
            options = receiver;
            receiver = void 0;
          }
        }
        options = options || {};
        const settings = {
          lowLimit: options.lowLimit,
          highLimit: options.highLimit
        };
        const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
        encode312(
          buffer,
          0,
          //@ts-ignore
          receiver,
          null,
          DEFAULT_HOP_COUNT22,
          0,
          0
        );
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          8
          /* WHO_IS */
        );
        who_is_exports2.encode(buffer, settings.lowLimit, settings.highLimit);
        this.sendBvlc(receiver, buffer);
      }
      /**
       * The timeSync command sets the time of a target device.
       * @function bacnet.timeSync
       * @param {string} receiver - IP address of the target device.
       * @param {date} dateTime - The date and time to set on the target device.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.timeSync('192.168.1.43', new Date());
       */
      timeSync(receiver, dateTime) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          6
          /* TIME_SYNCHRONIZATION */
        );
        time_sync_exports2.encode(buffer, dateTime);
        this.sendBvlc(receiver, buffer);
      }
      /**
       * The timeSyncUTC command sets the UTC time of a target device.
       * @function bacnet.timeSyncUTC
       * @param {string} receiver - IP address of the target device.
       * @param {date} dateTime - The date and time to set on the target device.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.timeSyncUTC('192.168.1.43', new Date());
       */
      timeSyncUTC(receiver, dateTime) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          9
          /* UTC_TIME_SYNCHRONIZATION */
        );
        time_sync_exports2.encode(buffer, dateTime);
        this.sendBvlc(receiver, buffer);
      }
      /**
       * The readProperty command reads a single property of an object from a device.
       * @function bacnet.readProperty
       * @param {string} receiver - IP address of the target device.
       * @param {object} objectId - The BACNET object ID to read.
       * @param {number} objectId.type - The BACNET object type to read.
       * @param {number} objectId.instance - The BACNET object instance to read.
       * @param {number} propertyId - The BACNET property id in the specified object to read.
       * @param {object=} options
       * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
       * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
       * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
       * @param {number=} options.arrayIndex - The array index of the property to be read.
       * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.readProperty('192.168.1.43', {type: 8, instance: 44301}, 28, (err, value) => {
       *   console.log('value: ', value);
       * });
       */
      readProperty(receiver, objectId, propertyId, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId(),
          arrayIndex: options.arrayIndex || options.arrayIndex === 0 ? options.arrayIndex : ASN1_ARRAY_ALL2
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          //@ts-ignore
          receiver,
          null,
          DEFAULT_HOP_COUNT22,
          0,
          0
        );
        const type = 0 | //@ts-ignore
        (settings.maxSegments !== 0 ? 2 : 0);
        encodeConfirmedServiceRequest2(
          buffer,
          type,
          12,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        read_property_exports2.encode(
          buffer,
          objectId.type,
          objectId.instance,
          propertyId,
          settings.arrayIndex
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          const result = read_property_exports2.decodeAcknowledge(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return void next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       * The writeProperty command writes a single property of an object to a device.
       * @function bacnet.writeProperty
       * @param {string} receiver - IP address of the target device.
       * @param {object} objectId - The BACNET object ID to write.
       * @param {number} objectId.type - The BACNET object type to write.
       * @param {number} objectId.instance - The BACNET object instance to write.
       * @param {number} propertyId - The BACNET property id in the specified object to write.
       * @param {object[]} values - A list of values to be written to the specified property.
       * @param {ApplicationTag} values.type - The data-type of the value to be written.
       * @param {number} values.value - The actual value to be written.
       * @param {object=} options
       * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
       * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
       * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
       * @param {number=} options.arrayIndex - The array index of the property to be read.
       * @param {number=} options.priority - The priority of the value to be written.
       * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.writeProperty('192.168.1.43', {type: 8, instance: 44301}, 28, [
       *   {type: bacnet.enum.ApplicationTag.REAL, value: 100}
       * ], (err, value) => {
       *   console.log('value: ', value);
       * });
       */
      writeProperty(receiver, objectId, propertyId, values, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId(),
          arrayIndex: options.arrayIndex || ASN1_ARRAY_ALL2,
          priority: options.priority || ASN1_NO_PRIORITY2
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          //@ts-ignore Todo somehow types do not match at all
          receiver,
          null,
          DEFAULT_HOP_COUNT22,
          0,
          0
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          15,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        write_property_exports2.encode(
          buffer,
          objectId.type,
          objectId.instance,
          propertyId,
          settings.arrayIndex,
          settings.priority,
          values
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          next(err);
        });
      }
      /**
       * The readPropertyMultiple command reads multiple properties in multiple objects from a device.
       * @function bacnet.readPropertyMultiple
       * @param {string} receiver - IP address of the target device.
       * @param {object[]} propertiesArray - List of object and property specifications to be read.
       * @param {object} propertiesArray.objectId - Specifies which object to read.
       * @param {number} propertiesArray.objectId.type - The BACNET object type to read.
       * @param {number} propertiesArray.objectId.instance - The BACNET object instance to read.
       * @param {object[]} propertiesArray.properties - List of properties to be read.
       * @param {number} propertiesArray.properties.id - The BACNET property id in the specified object to read. Also supports 8 for all properties.
       * @param {object=} options
       * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
       * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
       * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
       * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * const requestArray = [
       *   {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]}
       * ];
       * client.readPropertyMultiple('192.168.1.43', requestArray, (err, value) => {
       *   console.log('value: ', value);
       * });
       */
      readPropertyMultiple(receiver, propertiesArray, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const isForwarded = typeof receiver !== "string" && receiver.forwardedFrom;
        const buffer = this._getBuffer(!!isForwarded);
        encode312(
          buffer,
          0 | 4,
          //@ts-ignore Todo somehow types do not match at all
          receiver,
          null,
          DEFAULT_HOP_COUNT22,
          0,
          0
        );
        const type = 0 | //@ts-ignore
        (settings.maxSegments !== 0 ? 2 : 0);
        encodeConfirmedServiceRequest2(
          buffer,
          type,
          14,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        read_property_multiple_exports2.encode(buffer, propertiesArray);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return next(err);
          }
          const result = read_property_multiple_exports2.decodeAcknowledge(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       * The writePropertyMultiple command writes multiple properties in multiple objects to a device.
       * @function bacnet.writePropertyMultiple
       * @param {string} receiver - IP address of the target device.
       * @param {object[]} values - List of object and property specifications to be written.
       * @param {object} values.objectId - Specifies which object to read.
       * @param {number} values.objectId.type - The BACNET object type to read.
       * @param {number} values.objectId.instance - The BACNET object instance to read.
       * @param {object[]} values.values - List of properties to be written.
       * @param {object} values.values.property - Property specifications to be written.
       * @param {number} values.values.property.id - The BACNET property id in the specified object to write.
       * @param {number} values.values.property.index - The array index of the property to be written.
       * @param {object[]} values.values.value - A list of values to be written to the specified property.
       * @param {ApplicationTag} values.values.value.type - The data-type of the value to be written.
       * @param {object} values.values.value.value - The actual value to be written.
       * @param {number} values.values.priority - The priority to be used for writing to the property.
       * @param {object=} options
       * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
       * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
       * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
       * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * const values = [
       *   {objectId: {type: 8, instance: 44301}, values: [
       *     {property: {id: 28, index: 12}, value: [{type: bacnet.enum.ApplicationTag.BOOLEAN, value: true}], priority: 8}
       *   ]}
       * ];
       * client.writePropertyMultiple('192.168.1.43', values, (err, value) => {
       *   console.log('value: ', value);
       * });
       */
      writePropertyMultiple(receiver, values, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          //@ts-ignore
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          16,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId
        );
        write_property_multiple_exports2.encodeObject(buffer, values);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          next(err);
        });
      }
      /**
       * The confirmedCOVNotification command is used to push notifications to other
       * systems that have registered with us via a subscribeCOV message.
       * @function bacnet.confirmedCOVNotification
       * @param {string} receiver - IP address of the target device.
       * @param {object} monitoredObject - The object being monitored, from subscribeCOV.
       * @param {number} monitoredObject.type - Object type.
       * @param {number} monitoredObject.instance - Object instance.
       * @param {number} subscribeId - Subscriber ID from subscribeCOV,
       * @param {number} initiatingDeviceId - Our BACnet device ID.
       * @param {number} lifetime - Number of seconds left until the subscription expires.
       * @param {array} values - values for the monitored object.  See example.
       * @param {object=} options
       * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
       * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
       * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
       * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * const settings = {deviceId: 123}; // our BACnet device
       *
       * // Items saved from subscribeCOV message
       * const monitoredObject = {type: 1, instance: 1};
       * const subscriberProcessId = 123;
       *
       * client.confirmedCOVNotification(
       *   '192.168.1.43',
       *   monitoredObject,
       *   subscriberProcessId,
       *   settings.deviceId,
       *   30, // should be lifetime of subscription really
       *   [
       *     {
       *       property: { id: bacnet.enum.PropertyIdentifier.PRESENT_VALUE },
       *       value: [
       *         {value: 123, type: bacnet.enum.ApplicationTag.REAL},
       *       ],
       *     },
       *   ],
       *   (err) => {
       *     console.log('error: ', err);
       *   }
       * );
       */
      confirmedCOVNotification(receiver, monitoredObject, subscribeId, initiatingDeviceId, lifetime, values, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer();
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          1,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        cov_notify_exports2.encode(
          buffer,
          subscribeId,
          initiatingDeviceId,
          monitoredObject,
          lifetime,
          values
        );
        encode322(
          buffer.buffer,
          10,
          buffer.offset
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       * The deviceCommunicationControl command enables or disables network communication of the target device.
       * @function bacnet.deviceCommunicationControl
       * @param {string} receiver - IP address of the target device.
       * @param {number} timeDuration - The time to hold the network communication state in seconds. 0 for infinite.
       * @param {EnableDisable} enableDisable - The network communication state to set.
       * @param {object=} options
       * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
       * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
       * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
       * @param {string=} options.password - The optional password used to set the network communication state.
       * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.deviceCommunicationControl('192.168.1.43', 0, bacnet.enum.EnableDisable.DISABLE, (err) => {
       *   console.log('error: ', err);
       * });
       */
      deviceCommunicationControl(receiver, timeDuration, enableDisable, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId(),
          password: options.password
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          17,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        device_communication_control_exports2.encode(
          buffer,
          timeDuration,
          enableDisable,
          settings.password
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          next(err);
        });
      }
      /**
       * The reinitializeDevice command initiates a restart of the target device.
       * @function bacnet.reinitializeDevice
       * @param {string} receiver - IP address of the target device.
       * @param {ReinitializedState} state - The type of restart to be initiated.
       * @param {object=} options
       * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
       * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
       * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
       * @param {string=} options.password - The optional password used to restart the device.
       * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.reinitializeDevice('192.168.1.43', bacnet.enum.ReinitializedState.COLDSTART, (err, value) => {
       *   console.log('value: ', value);
       * });
       */
      reinitializeDevice(receiver, state, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId(),
          password: options.password
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          20,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        reinitialize_device_exports2.encode(buffer, state, settings.password);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          next(err);
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param position
       * @param fileBuffer
       * @param options
       * @param next
       */
      writeFile(receiver, objectId, position, fileBuffer, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          7,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        atomic_write_file_exports2.encode(
          buffer,
          false,
          objectId,
          position,
          fileBuffer
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          const result = atomic_write_file_exports2.decodeAcknowledge(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return void next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param position
       * @param count
       * @param options
       * @param next
       */
      readFile(receiver, objectId, position, count, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          6,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        atomic_read_file_exports2.encode(buffer, true, objectId, position, count);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          const result = atomic_read_file_exports2.decodeAcknowledge(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return void next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param idxBegin
       * @param quantity
       * @param options
       * @param next
       */
      readRange(receiver, objectId, idxBegin, quantity, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          26,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        read_range_exports2.encode(
          buffer,
          objectId,
          131,
          ASN1_ARRAY_ALL2,
          0,
          idxBegin,
          /* @__PURE__ */ new Date(),
          quantity
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          const result = read_range_exports2.decodeAcknowledge(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return void next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param subscribeId
       * @param cancel
       * @param issueConfirmedNotifications
       * @param lifetime
       * @param options
       * @param next
       */
      subscribeCov(receiver, objectId, subscribeId, cancel, issueConfirmedNotifications, lifetime, options, nextFunc) {
        const next = nextFunc || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          // @ts-ignore TODO types not matching with documentation and code
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          5,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        subscribe_cov_exports2.encode(
          buffer,
          subscribeId,
          objectId,
          cancel,
          issueConfirmedNotifications,
          lifetime
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param monitoredProperty
       * @param subscribeId
       * @param cancel
       * @param issueConfirmedNotifications
       * @param options
       * @param next
       */
      subscribeProperty(receiver, objectId, monitoredProperty, subscribeId, cancel, issueConfirmedNotifications, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          28,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        subscribe_property_exports2.encode(
          buffer,
          subscribeId,
          objectId,
          cancel,
          issueConfirmedNotifications,
          0,
          monitoredProperty,
          false,
          15
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       * The unconfirmedCOVNotification command sends an unconfirmed COV notification to a device
       * @function bacnet.unconfirmedCOVNotification
       * @param {string} receiver - IP address of the target device.
       * @param {number} subscriberProcessId - The process id which was used by a target device in the subscription.
       * @param {number} initiatingDeviceId - The id of this device.
       * @param {object} monitoredObjectId - Specifies about which object the notification is.
       * @param {number} monitoredObjectId.type - The BACNET object type of the notification.
       * @param {number} monitoredObjectId.instance - The BACNET object instance of the notification.
       * @param {number} timeRemaining - How long the subscription is still active in seconds.
       * @param {object[]} values - List of properties with updated values.
       * @param {object} values.property - Property specifications.
       * @param {number} values.property.id - The updated BACNET property id.
       * @param {number} values.property.index - The array index of the updated property.
       * @param {object[]} values.value - A list of updated values.
       * @param {ApplicationTag} values.value.type - The data-type of the updated value.
       * @param {object} values.value.value - The actual updated value.
       * @param {number} values.priority - The priority of the updated property.
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.unconfirmedCOVNotification(
       *            '127.0.0.1',
       *            3,
       *            433,
       *            {type: 2, instance: 122},
       *            120,
       *            [
       *              {
       *                property: {id: 85},
       *                value: [{type: baEnum.ApplicationTag.REAL, value: 12.3}]
       *              },
       *              {
       *                property: {id: 111},
       *                value: [{type: baEnum.ApplicationTag.BIT_STRING, value: 0xFFFF}]
       *              }
       *            ]);
       */
      unconfirmedCOVNotification(receiver, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) {
        const buffer = this._getBuffer();
        encode312(buffer, 0, receiver);
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          2
          /* UNCONFIRMED_COV_NOTIFICATION */
        );
        cov_notify_exports2.encode(
          buffer,
          subscriberProcessId,
          initiatingDeviceId,
          monitoredObjectId,
          timeRemaining,
          values
        );
        encode322(
          buffer.buffer,
          10,
          buffer.offset
        );
        this._transport.send(buffer.buffer, buffer.offset, receiver);
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param values
       * @param options
       * @param next
       */
      createObject(receiver, objectId, values, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          10,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        create_object_exports2.encode(buffer, objectId, values);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param options
       * @param next
       */
      deleteObject(receiver, objectId, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          11,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        delete_object_exports2.encode(buffer, objectId);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param reference
       * @param values
       * @param options
       * @param next
       */
      removeListElement(receiver, objectId, reference, values, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          9,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        add_list_element_exports2.encode(
          buffer,
          objectId,
          reference.id,
          reference.index,
          values
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param reference
       * @param values
       * @param options
       * @param next
       */
      addListElement(receiver, objectId, reference, values, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          8,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        add_list_element_exports2.encode(
          buffer,
          objectId,
          reference.id,
          reference.index,
          values
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       *
       * @param receiver
       * @param options
       * @param next
       */
      getAlarmSummary(receiver, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          3,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          const result = alarm_summary_exports2.decode(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return void next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param options
       * @param next
       */
      getEventInformation(receiver, objectId, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          29,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        encodeContextObjectId2(buffer, 0, objectId.type, objectId.instance);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          const result = event_information_exports2.decode(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return void next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       *
       * @param receiver
       * @param objectId
       * @param eventState
       * @param ackText
       * @param evTimeStamp
       * @param ackTimeStamp
       * @param options
       * @param next
       */
      acknowledgeAlarm(receiver, objectId, eventState, ackText, evTimeStamp, ackTimeStamp, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          0,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        alarm_acknowledge_exports2.encode(
          buffer,
          57,
          objectId,
          eventState,
          ackText,
          evTimeStamp,
          ackTimeStamp
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       *
       * @param receiver
       * @param vendorId
       * @param serviceNumber
       * @param data
       * @param options
       * @param next
       */
      confirmedPrivateTransfer(receiver, vendorId, serviceNumber, data, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          18,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        private_transfer_exports2.encode(buffer, vendorId, serviceNumber, data);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data2) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       *
       * @param receiver
       * @param vendorId
       * @param serviceNumber
       * @param data
       */
      unconfirmedPrivateTransfer(receiver, vendorId, serviceNumber, data) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          4
          /* UNCONFIRMED_PRIVATE_TRANSFER */
        );
        private_transfer_exports2.encode(buffer, vendorId, serviceNumber, data);
        this.sendBvlc(receiver, buffer);
      }
      /**
       *
       * @param receiver
       * @param acknowledgmentFilter
       * @param options
       * @param next
       */
      getEnrollmentSummary(receiver, acknowledgmentFilter, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          4,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        get_enrollment_summary_exports2.encode(
          buffer,
          acknowledgmentFilter,
          options.enrollmentFilter,
          options.eventStateFilter,
          options.eventTypeFilter,
          options.priorityFilter,
          options.notificationClassFilter
        );
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          const result = get_enrollment_summary_exports2.decodeAcknowledge(
            data.buffer,
            data.offset,
            data.length
          );
          if (!result) {
            return void next(new Error("INVALID_DECODING"));
          }
          next(null, result);
        });
      }
      /**
       *
       * @param receiver
       * @param eventNotification
       */
      unconfirmedEventNotification(receiver, eventNotification) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          3
          /* UNCONFIRMED_EVENT_NOTIFICATION */
        );
        event_notify_data_exports2.encode(buffer, eventNotification);
        this.sendBvlc(receiver, buffer);
      }
      /**
       *
       * @param receiver
       * @param eventNotification
       * @param options
       * @param next
       */
      confirmedEventNotification(receiver, eventNotification, options, next) {
        next = next || options;
        const settings = {
          maxSegments: options.maxSegments || 112,
          maxApdu: options.maxApdu || 5,
          invokeId: options.invokeId || this._getInvokeId()
        };
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(
          buffer,
          0 | 4,
          receiver
        );
        encodeConfirmedServiceRequest2(
          buffer,
          0,
          2,
          settings.maxSegments,
          settings.maxApdu,
          settings.invokeId,
          0,
          0
        );
        event_notify_data_exports2.encode(buffer, eventNotification);
        this.sendBvlc(receiver, buffer);
        this._addCallback(settings.invokeId, (err, data) => {
          if (err) {
            return void next(err);
          }
          next();
        });
      }
      /**
       * The readPropertyResponse call sends a response with information about one of our properties.
       * @function bacnet.readPropertyResponse
       * @param {string} receiver - IP address of the target device.
       * @param {number} invokeId - ID of the original readProperty request.
       * @param {object} objectId - objectId from the original request,
       * @param {object} property - property being read, taken from the original request.
       * @param {object=} options varying behaviour for special circumstances
       * @param {string=} options.forwardedFrom - If functioning as a BBMD, the IP address this message originally came from.
       */
      readPropertyResponse(receiver, invokeId, objectId, property, value, options = {}) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeComplexAck2(
          buffer,
          48,
          12,
          invokeId
        );
        read_property_exports2.encodeAcknowledge(
          buffer,
          objectId,
          property.id,
          property.index,
          value
        );
        this.sendBvlc(receiver, buffer);
      }
      readPropertyMultipleResponse(receiver, invokeId, values) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeComplexAck2(
          buffer,
          48,
          14,
          invokeId
        );
        read_property_multiple_exports2.encodeAcknowledge(buffer, values);
        this.sendBvlc(receiver, buffer);
      }
      /**
       * The iAmResponse command is sent as a reply to a whoIs request.
       * @function bacnet.iAmResponse
       * @param {object} receiver - address to send packet to, null for local broadcast.
       * @param {number} deviceId - Our device ID.
       * @param {number} segmentation - an enum.Segmentation value.
       * @param {number} vendorId - The numeric ID assigned to the organisation providing this application.
       */
      iAmResponse(receiver, deviceId, segmentation, vendorId) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          0
          /* I_AM */
        );
        i_am_exports2.encode(
          buffer,
          deviceId,
          this._transport.getMaxPayload(),
          segmentation,
          vendorId
        );
        this.sendBvlc(receiver, buffer);
      }
      /**
       *
       * @param receiver
       * @param deviceId
       * @param objectId
       * @param objectName
       */
      iHaveResponse(receiver, deviceId, objectId, objectName) {
        const buffer = this._getBuffer(
          !!(typeof receiver !== "string" && receiver.forwardedFrom)
        );
        encode312(buffer, 0, receiver);
        encodeUnconfirmedServiceRequest2(
          buffer,
          16,
          1
          /* I_HAVE */
        );
        i_have_exports2.encode(buffer, deviceId, objectId, objectName);
        this.sendBvlc(receiver, buffer);
      }
      /**
       *
       * @param receiver
       * @param service
       * @param invokeId
       */
      simpleAckResponse(receiver, service, invokeId) {
        if (typeof receiver === "string")
          return;
        const buffer = this._getBuffer(!!receiver.forwardedFrom);
        encode312(buffer, 0, receiver);
        encodeSimpleAck2(
          buffer,
          32,
          service,
          invokeId
        );
        this.sendBvlc(receiver, buffer);
      }
      /**
       *
       * @param receiver
       * @param service
       * @param invokeId
       * @param errorClass
       * @param errorCode
       */
      errorResponse(receiver, service, invokeId, errorClass, errorCode) {
        trace22(
          `error response on ${JSON.stringify(receiver)} service: ${JSON.stringify(
            service
          )} invokeId: ${invokeId} errorClass: ${errorClass} errorCode: ${errorCode}`
        );
        trace22(
          `error message ${error_exports2.buildMessage({
            class: errorClass,
            code: errorCode
          })}`
        );
        const hasSource = !!(typeof receiver !== "string" && receiver.forwardedFrom);
        if (typeof receiver === "string")
          throw new Error("receiver must be object");
        const buffer = this._getBuffer(hasSource);
        encode312(buffer, 0, receiver);
        encodeError2(buffer, 80, service, invokeId);
        error_exports2.encode(buffer, errorClass, errorCode);
        this.sendBvlc(receiver, buffer);
      }
      /**
       *
       * @param receiver
       * @param buffer
       */
      sendBvlc(receiver, buffer) {
        if (typeof receiver === "string") {
          receiver = {
            address: receiver
          };
        }
        if (receiver && receiver.forwardedFrom) {
          encode322(
            buffer.buffer,
            4,
            buffer.offset,
            receiver.forwardedFrom
          );
        } else if (receiver && receiver.address) {
          encode322(
            buffer.buffer,
            10,
            buffer.offset
          );
        } else {
          encode322(
            buffer.buffer,
            11,
            buffer.offset
          );
        }
        this._transport.send(
          buffer.buffer,
          buffer.offset,
          receiver && receiver.address || null
        );
      }
      /**
       * The resultResponse is a BVLC-Result message used to respond to certain events, such as BBMD registration.
       * This message cannot be wrapped for passing through a BBMD, as it is used as a BBMD control message.
       * @function bacnet.resultResponse
       * @param {string} receiver - IP address of the target device.
       * @param {number} resultCode - Single value from BvlcResultFormat enum.
       */
      resultResponse(receiver, resultCode) {
        const buffer = this._getBuffer();
        encodeResult2(buffer, resultCode);
        encode322(
          buffer.buffer,
          0,
          buffer.offset
        );
        this._transport.send(buffer.buffer, buffer.offset, receiver.address);
      }
      /**
       * Unloads the current bacnet instance and closes the underlying UDP socket.
       * @function bacnet.close
       * @example
       * const bacnet = require('node-bacnet');
       * const client = new bacnet();
       *
       * client.close();
       */
      close() {
        this._transport.close();
      }
      /**
       * Helper function to take an array of enums and produce a bitstring suitable
       * for inclusion as a property.
       *
       * @example
       * [bacnet.enum.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED]: [
       *   {value: bacnet.createBitstring([
       *     bacnet.enum.ObjectTypesSupported.ANALOG_INPUT,
       *     bacnet.enum.ObjectTypesSupported.ANALOG_OUTPUT,
       *   ]),
       *   type: bacnet.enum.ApplicationTag.BIT_STRING},
       * ],
       */
      static createBitstring(items) {
        let offset = 0;
        let bytes = [];
        let bitsUsed = 0;
        while (items.length) {
          let value = 0;
          items = items.filter((i) => {
            if (i >= offset + 8) {
              return true;
            }
            value |= 1 << i - offset;
            bitsUsed = Math.max(bitsUsed, i);
            return false;
          });
          bytes.push(value);
          offset += 8;
        }
        bitsUsed++;
        return {
          value: bytes,
          bitsUsed
        };
      }
    };
    var import_underscore2 = __toESM2(require("underscore"));
    var import_process2 = __toESM2(require("process"));
    var import__2 = __toESM2(require_dist2());
    var PropertyIdentifierToEnumMap2 = {};
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.OBJECT_TYPE] = import__2.enums.ObjectType;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.SEGMENTATION_SUPPORTED] = import__2.enums.Segmentation;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.EVENT_STATE] = import__2.enums.EventState;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.UNITS] = import__2.enums.EngineeringUnits;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.RELIABILITY] = import__2.enums.Reliability;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.NOTIFY_TYPE] = import__2.enums.NotifyType;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.POLARITY] = import__2.enums.Polarity;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED] = import__2.enums.ServicesSupported;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED] = import__2.enums.ObjectTypesSupported;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.STATUS_FLAGS] = import__2.enums.StatusFlags;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.LIMIT_ENABLE] = import__2.enums.LimitEnable;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.EVENT_ENABLE] = import__2.enums.EventTransitionBits;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.ACKED_TRANSITIONS] = import__2.enums.EventTransitionBits;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.SYSTEM_STATUS] = import__2.enums.DeviceStatus;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.SYSTEM_STATUS] = import__2.enums.DeviceStatus;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.ACK_REQUIRED] = import__2.enums.EventTransitionBits;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.LOGGING_TYPE] = import__2.enums.LoggingType;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.FILE_ACCESS_METHOD] = import__2.enums.FileAccessMethod;
    PropertyIdentifierToEnumMap2[import__2.enums.PropertyIdentifier.NODE_TYPE] = import__2.enums.NodeType;
    var ObjectTypeSpecificPropertyIdentifierToEnumMap2 = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_INPUT] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_INPUT][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_INPUT][import__2.enums.PropertyIdentifier.MODE] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.ANALOG_INPUT] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.ANALOG_INPUT][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.ANALOG_OUTPUT] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.ANALOG_OUTPUT][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_OUTPUT] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_OUTPUT][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_OUTPUT][import__2.enums.PropertyIdentifier.RELINQUISH_DEFAULT] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_VALUE] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_VALUE][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_VALUE][import__2.enums.PropertyIdentifier.RELINQUISH_DEFAULT] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_LIGHTING_OUTPUT] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_LIGHTING_OUTPUT][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.BinaryLightingPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BITSTRING_VALUE] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.BINARY_VALUE][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.BinaryPV;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_POINT] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_POINT][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.LifeSafetyState;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_POINT][import__2.enums.PropertyIdentifier.TRACKING_VALUE] = import__2.enums.LifeSafetyState;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_POINT][import__2.enums.PropertyIdentifier.MODE] = import__2.enums.LifeSafetyMode;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_POINT][import__2.enums.PropertyIdentifier.ACCEPTED_MODES] = import__2.enums.LifeSafetyMode;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_POINT][import__2.enums.PropertyIdentifier.SILENCED] = import__2.enums.LifeSafetyState;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_POINT][import__2.enums.PropertyIdentifier.OPERATION_EXPECTED] = import__2.enums.LifeSafetyOperation;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_ZONE] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_ZONE][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.LifeSafetyState;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LIFE_SAFETY_ZONE][import__2.enums.PropertyIdentifier.MODE] = import__2.enums.LifeSafetyMode;
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LOAD_CONTROL] = {};
    ObjectTypeSpecificPropertyIdentifierToEnumMap2[import__2.enums.ObjectType.LOAD_CONTROL][import__2.enums.PropertyIdentifier.PRESENT_VALUE] = import__2.enums.ShedState;
    var propSubSet2 = import_process2.default.argv.includes("--all") ? Object.values(import__2.enums.PropertyIdentifier) : [
      /* normally supported from all devices */
      import__2.enums.PropertyIdentifier.OBJECT_IDENTIFIER,
      import__2.enums.PropertyIdentifier.OBJECT_NAME,
      import__2.enums.PropertyIdentifier.OBJECT_TYPE,
      import__2.enums.PropertyIdentifier.PRESENT_VALUE,
      import__2.enums.PropertyIdentifier.STATUS_FLAGS,
      import__2.enums.PropertyIdentifier.EVENT_STATE,
      import__2.enums.PropertyIdentifier.RELIABILITY,
      import__2.enums.PropertyIdentifier.OUT_OF_SERVICE,
      import__2.enums.PropertyIdentifier.UNITS,
      /* other properties */
      import__2.enums.PropertyIdentifier.DESCRIPTION,
      import__2.enums.PropertyIdentifier.SYSTEM_STATUS,
      import__2.enums.PropertyIdentifier.VENDOR_NAME,
      import__2.enums.PropertyIdentifier.VENDOR_IDENTIFIER,
      import__2.enums.PropertyIdentifier.MODEL_NAME,
      import__2.enums.PropertyIdentifier.FIRMWARE_REVISION,
      import__2.enums.PropertyIdentifier.APPLICATION_SOFTWARE_VERSION,
      import__2.enums.PropertyIdentifier.LOCATION,
      import__2.enums.PropertyIdentifier.LOCAL_DATE,
      import__2.enums.PropertyIdentifier.LOCAL_TIME,
      import__2.enums.PropertyIdentifier.UTC_OFFSET,
      import__2.enums.PropertyIdentifier.DAYLIGHT_SAVINGS_STATUS,
      import__2.enums.PropertyIdentifier.PROTOCOL_VERSION,
      import__2.enums.PropertyIdentifier.PROTOCOL_REVISION,
      import__2.enums.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED,
      import__2.enums.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED,
      import__2.enums.PropertyIdentifier.OBJECT_LIST,
      import__2.enums.PropertyIdentifier.MAX_APDU_LENGTH_ACCEPTED,
      import__2.enums.PropertyIdentifier.SEGMENTATION_SUPPORTED,
      import__2.enums.PropertyIdentifier.APDU_TIMEOUT,
      import__2.enums.PropertyIdentifier.NUMBER_OF_APDU_RETRIES,
      import__2.enums.PropertyIdentifier.DEVICE_ADDRESS_BINDING,
      import__2.enums.PropertyIdentifier.DATABASE_REVISION,
      import__2.enums.PropertyIdentifier.MAX_INFO_FRAMES,
      import__2.enums.PropertyIdentifier.MAX_MASTER,
      import__2.enums.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS,
      import__2.enums.PropertyIdentifier.ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS
    ];
    var debug42 = import_process2.default.argv.includes("--debug");
    function getAllPropertiesManually2(address, objectId, callback, propList, result) {
      if (!propList) {
        propList = propSubSet2.map((x) => x);
      }
      if (!result) {
        result = [];
      }
      if (!propList.length) {
        return callback({
          values: [
            {
              objectId,
              values: result
            }
          ]
        });
      }
      const prop = propList.shift();
      bacnetClient.readProperty(address, objectId, prop, {}, (err, value) => {
        if (!err) {
          if (debug42) {
            console.log("Handle value " + prop + ": ", JSON.stringify(value));
          }
          const objRes = value.property;
          objRes.value = value.values;
          result.push(objRes);
        } else {
        }
        getAllPropertiesManually2(address, objectId, callback, propList, result);
      });
    }
    function readBit2(buffer, i, bit) {
      return (buffer[i] >> bit) % 2;
    }
    function handleBitString2(buffer, bitsUsed, usedEnum) {
      const res = [];
      for (let i = 0; i < bitsUsed; i++) {
        const bufferIndex = Math.floor(i / 8);
        if (readBit2(buffer, bufferIndex, i % 8)) {
          res.push(import__2.enums.getEnumName(usedEnum, i));
        }
      }
      return res;
    }
    function parseValue2(address, objId, parentType, value, supportsMultiple, callback) {
      let resValue = null;
      if (value && value.type && value.value !== null && value.value !== void 0) {
        switch (value.type) {
          case import__2.enums.ApplicationTag.NULL:
            resValue = null;
            break;
          case import__2.enums.ApplicationTag.BOOLEAN:
            resValue = !!value.value;
            break;
          case import__2.enums.ApplicationTag.UNSIGNED_INTEGER:
          case import__2.enums.ApplicationTag.SIGNED_INTEGER:
          case import__2.enums.ApplicationTag.REAL:
          case import__2.enums.ApplicationTag.DOUBLE:
          case import__2.enums.ApplicationTag.CHARACTER_STRING:
            resValue = value.value;
            break;
          case import__2.enums.ApplicationTag.DATE:
          case import__2.enums.ApplicationTag.TIME:
          case import__2.enums.ApplicationTag.TIMESTAMP:
            resValue = value.value;
            break;
          case import__2.enums.ApplicationTag.BIT_STRING:
            if (ObjectTypeSpecificPropertyIdentifierToEnumMap2[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap2[parentType][objId]) {
              resValue = handleBitString2(
                value.value.value,
                value.value.bitsUsed,
                ObjectTypeSpecificPropertyIdentifierToEnumMap2[parentType][objId]
              );
            } else if (PropertyIdentifierToEnumMap2[objId]) {
              resValue = handleBitString2(
                value.value.value,
                value.value.bitsUsed,
                PropertyIdentifierToEnumMap2[objId]
              );
            } else {
              if (parentType !== import__2.enums.ObjectType.BITSTRING_VALUE) {
                console.log(
                  "Unknown value for BIT_STRING type for objId " + import__2.enums.getEnumName(import__2.enums.PropertyIdentifier, objId) + " and parent type " + import__2.enums.getEnumName(import__2.enums.ObjectType, parentType)
                );
              }
              resValue = value.value;
            }
            break;
          case import__2.enums.ApplicationTag.ENUMERATED:
            if (ObjectTypeSpecificPropertyIdentifierToEnumMap2[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap2[parentType][objId]) {
              resValue = import__2.enums.getEnumName(
                ObjectTypeSpecificPropertyIdentifierToEnumMap2[parentType][objId],
                value.value
              );
            } else if (PropertyIdentifierToEnumMap2[objId]) {
              resValue = import__2.enums.getEnumName(
                PropertyIdentifierToEnumMap2[objId],
                value.value
              );
            } else {
              console.log(
                "Unknown value for ENUMERATED type for objId " + import__2.enums.getEnumName(import__2.enums.PropertyIdentifier, objId) + " and parent type " + import__2.enums.getEnumName(import__2.enums.ObjectType, parentType)
              );
              resValue = value.value;
            }
            break;
          case import__2.enums.ApplicationTag.OBJECTIDENTIFIER:
            if (objId === import__2.enums.PropertyIdentifier.OBJECT_IDENTIFIER || objId === import__2.enums.PropertyIdentifier.STRUCTURED_OBJECT_LIST || objId === import__2.enums.PropertyIdentifier.SUBORDINATE_LIST) {
              resValue = value.value;
            } else if (supportsMultiple) {
              const requestArray = [
                {
                  objectId: value.value,
                  properties: [{ id: 8 }]
                }
              ];
              bacnetClient.readPropertyMultiple(
                address,
                requestArray,
                (err, resValue2) => {
                  parseDeviceObject2(address, resValue2, value.value, true, callback);
                }
              );
              return;
            } else {
              getAllPropertiesManually2(address, value.value, (result) => {
                parseDeviceObject2(address, result, value.value, false, callback);
              });
              return;
            }
            break;
          case import__2.enums.ApplicationTag.OCTET_STRING:
            resValue = value.value;
            break;
          case import__2.enums.ApplicationTag.ERROR:
            resValue = {
              errorClass: import__2.enums.getEnumName(
                import__2.enums.ErrorClass,
                value.value.errorClass
              ),
              errorCode: import__2.enums.getEnumName(import__2.enums.ErrorCode, value.value.errorCode)
            };
            break;
          case import__2.enums.ApplicationTag.OBJECT_PROPERTY_REFERENCE:
          case import__2.enums.ApplicationTag.DEVICE_OBJECT_PROPERTY_REFERENCE:
          case import__2.enums.ApplicationTag.DEVICE_OBJECT_REFERENCE:
          case import__2.enums.ApplicationTag.READ_ACCESS_SPECIFICATION:
            resValue = value.value;
            break;
          case import__2.enums.ApplicationTag.CONTEXT_SPECIFIC_DECODED:
            parseValue2(
              address,
              objId,
              parentType,
              value.value,
              supportsMultiple,
              callback
            );
            return;
          case import__2.enums.ApplicationTag.READ_ACCESS_RESULT:
            resValue = value.value;
            break;
          default:
            console.log(
              "unknown type " + value.type + ": " + JSON.stringify(value)
            );
            resValue = value;
        }
      }
      setImmediate(() => callback(resValue));
    }
    function parseDeviceObject2(address, obj, parent, supportsMultiple, callback) {
      if (debug42) {
        console.log(
          "START parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(obj)
        );
      }
      if (!obj) {
        console.log("object not valid on parse device object");
        return;
      }
      if (!obj.values || !Array.isArray(obj.values)) {
        console.log("No device or invalid response");
        callback({ ERROR: "No device or invalid response" });
        return;
      }
      let cbCount = 0;
      let objDef = {};
      const finalize = () => {
        Object.keys(objDef).forEach((devId) => {
          Object.keys(objDef[devId]).forEach((objId) => {
            if (objDef[devId][objId].length === 1) {
              objDef[devId][objId] = objDef[devId][objId][0];
            }
          });
        });
        if (obj.values.length === 1) {
          objDef = objDef[obj.values[0].objectId.instance];
        }
        if (debug42) {
          console.log(
            "END parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(objDef)
          );
        }
        callback(objDef);
      };
      obj.values.forEach((devBaseObj) => {
        if (!devBaseObj.objectId) {
          console.log("No device Id found in object data");
          return;
        }
        if (devBaseObj.objectId.type === void 0 || devBaseObj.objectId.instance === void 0) {
          console.log("No device type or instance found in object data");
          return;
        }
        if (!devBaseObj.values || !Array.isArray(devBaseObj.values)) {
          console.log("No device values response");
          return;
        }
        const deviceId = devBaseObj.objectId.instance;
        objDef[deviceId] = {};
        devBaseObj.values.forEach((devObj) => {
          let objId = import__2.enums.getEnumName(import__2.enums.PropertyIdentifier, devObj.id);
          if (devObj.index !== 4294967295) {
            objId += "-" + devObj.index;
          }
          if (debug42) {
            console.log("Handle Object property:", deviceId, objId, devObj.value);
          }
          devObj.value.forEach((val) => {
            if (JSON.stringify(val.value) === JSON.stringify(parent)) {
              objDef[deviceId][objId] = objDef[deviceId][objId] || [];
              objDef[deviceId][objId].push(val.value);
              return;
            }
            cbCount++;
            parseValue2(
              address,
              devObj.id,
              parent.type,
              val,
              supportsMultiple,
              (parsedValue) => {
                if (debug42) {
                  console.log(
                    "RETURN parsedValue",
                    deviceId,
                    objId,
                    devObj.value,
                    parsedValue
                  );
                }
                objDef[deviceId][objId] = objDef[deviceId][objId] || [];
                objDef[deviceId][objId].push(parsedValue);
                if (!--cbCount) {
                  finalize();
                }
              }
            );
          });
        });
      });
      if (cbCount === 0) {
        finalize();
      }
    }
    var limitToDevice2 = null;
    if (import_process2.default.argv.length === 3) {
      limitToDevice2 = parseInt(import_process2.default.argv[2]);
      if (isNaN(limitToDevice2)) {
        limitToDevice2 = null;
      }
    }
    var node_bacnet_default2 = Client2;
  }
});

// index.ts
var node_bacnet_exports = {};
__export(node_bacnet_exports, {
  _: () => import_underscore.default,
  bacnetErrorToString: () => bacnetErrorToString,
  default: () => node_bacnet_default,
  enums: () => enum_exports,
  parseValue: () => parseValue
});
module.exports = __toCommonJS(node_bacnet_exports);

// src/enum.ts
var enum_exports = {};
__export(enum_exports, {
  ASN1_ARRAY_ALL: () => ASN1_ARRAY_ALL,
  ASN1_INSTANCE_BITS: () => ASN1_INSTANCE_BITS,
  ASN1_MAX_APPLICATION_TAG: () => ASN1_MAX_APPLICATION_TAG,
  ASN1_MAX_BITSTRING_BYTES: () => ASN1_MAX_BITSTRING_BYTES,
  ASN1_MAX_INSTANCE: () => ASN1_MAX_INSTANCE,
  ASN1_MAX_OBJECT: () => ASN1_MAX_OBJECT,
  ASN1_MAX_OBJECT_TYPE: () => ASN1_MAX_OBJECT_TYPE,
  ASN1_MAX_PRIORITY: () => ASN1_MAX_PRIORITY,
  ASN1_MAX_PROPERTY_ID: () => ASN1_MAX_PROPERTY_ID,
  ASN1_MIN_PRIORITY: () => ASN1_MIN_PRIORITY,
  ASN1_NO_PRIORITY: () => ASN1_NO_PRIORITY,
  AbortReason: () => AbortReason,
  AccessAuthenticationFactorDisable: () => AccessAuthenticationFactorDisable,
  AccessCredentialDisable: () => AccessCredentialDisable,
  AccessCredentialDisableReason: () => AccessCredentialDisableReason,
  AccessEvent: () => AccessEvent,
  AccessPassbackMode: () => AccessPassbackMode,
  AccessUserType: () => AccessUserType,
  AccessZoneOccupancyState: () => AccessZoneOccupancyState,
  Action: () => Action,
  ApplicationTag: () => ApplicationTag,
  ApplicationTagName: () => ApplicationTagName,
  AuthenticationFactorType: () => AuthenticationFactorType,
  AuthenticationStatus: () => AuthenticationStatus,
  AuthorizationExemption: () => AuthorizationExemption,
  AuthorizationMode: () => AuthorizationMode,
  BVLC_HEADER_LENGTH: () => BVLC_HEADER_LENGTH,
  BVLL_TYPE_BACNET_IP: () => BVLL_TYPE_BACNET_IP,
  BackupState: () => BackupState,
  BinaryLightingPV: () => BinaryLightingPV,
  BinaryPV: () => BinaryPV,
  BvlcResultFormat: () => BvlcResultFormat,
  BvlcResultPurpose: () => BvlcResultPurpose,
  CharacterStringEncoding: () => CharacterStringEncoding,
  ConfirmedServiceChoice: () => ConfirmedServiceChoice,
  CovType: () => CovType,
  DaysOfWeek: () => DaysOfWeek,
  DeviceStatus: () => DeviceStatus,
  DoorAlarmState: () => DoorAlarmState,
  DoorSecuredStatus: () => DoorSecuredStatus,
  DoorStatus: () => DoorStatus,
  DoorValue: () => DoorValue,
  EnableDisable: () => EnableDisable,
  EngineeringUnits: () => EngineeringUnits,
  ErrorClass: () => ErrorClass,
  ErrorClassName: () => ErrorClassName,
  ErrorCode: () => ErrorCode,
  ErrorCodeName: () => ErrorCodeName,
  EscalatorFault: () => EscalatorFault,
  EscalatorMode: () => EscalatorMode,
  EscalatorOperationDirection: () => EscalatorOperationDirection,
  EventState: () => EventState,
  EventTransitionBits: () => EventTransitionBits,
  EventType: () => EventType,
  FaultType: () => FaultType,
  FileAccessMethod: () => FileAccessMethod,
  IPMode: () => IPMode,
  LifeSafetyMode: () => LifeSafetyMode,
  LifeSafetyOperation: () => LifeSafetyOperation,
  LifeSafetyState: () => LifeSafetyState,
  LiftCarDirection: () => LiftCarDirection,
  LiftCarDoorCommand: () => LiftCarDoorCommand,
  LiftCarDriveStatus: () => LiftCarDriveStatus,
  LiftCarMode: () => LiftCarMode,
  LiftFault: () => LiftFault,
  LiftGroupMode: () => LiftGroupMode,
  LightingInProgress: () => LightingInProgress,
  LightingOperation: () => LightingOperation,
  LightingTransition: () => LightingTransition,
  LimitEnable: () => LimitEnable,
  LockStatus: () => LockStatus,
  LogStatus: () => LogStatus,
  LoggingType: () => LoggingType,
  Maintenance: () => Maintenance,
  MaxApduLengthAccepted: () => MaxApduLengthAccepted,
  MaxSegmentsAccepted: () => MaxSegmentsAccepted,
  NetworkLayerMessageType: () => NetworkLayerMessageType,
  NetworkNumberQuality: () => NetworkNumberQuality,
  NetworkPortCommand: () => NetworkPortCommand,
  NetworkType: () => NetworkType,
  NodeType: () => NodeType,
  NotifyType: () => NotifyType,
  NpduControlBit: () => NpduControlBit,
  NpduControlPriority: () => NpduControlPriority,
  ObjectType: () => ObjectType,
  ObjectTypesSupported: () => ObjectTypesSupported,
  PDU_TYPE_MASK: () => PDU_TYPE_MASK,
  PduConReqBit: () => PduConReqBit,
  PduSegAckBit: () => PduSegAckBit,
  PduType: () => PduType,
  Polarity: () => Polarity,
  ProgramError: () => ProgramError,
  ProgramRequest: () => ProgramRequest,
  ProgramState: () => ProgramState,
  PropertyIdentifier: () => PropertyIdentifier,
  PropertyStates: () => PropertyStates,
  ProtocolLevel: () => ProtocolLevel,
  ReadRangeType: () => ReadRangeType,
  ReinitializedState: () => ReinitializedState,
  RejectReason: () => RejectReason,
  Relationship: () => Relationship,
  Reliability: () => Reliability,
  RestartReason: () => RestartReason,
  ResultFlags: () => ResultFlags,
  SecurityLevel: () => SecurityLevel,
  SecurityPolicy: () => SecurityPolicy,
  Segmentation: () => Segmentation,
  ServicesSupported: () => ServicesSupported,
  ShedState: () => ShedState,
  SilencedState: () => SilencedState,
  StatusFlags: () => StatusFlags,
  TimeStamp: () => TimeStamp,
  TimerState: () => TimerState,
  TimerTransition: () => TimerTransition,
  UnconfirmedServiceChoice: () => UnconfirmedServiceChoice,
  VTClass: () => VTClass,
  WriteStatus: () => WriteStatus,
  getEnumName: () => getEnumName
});
var import_debug = __toESM(require("debug"));
var debug = (0, import_debug.default)("bacnet=enum=debug");
var trace = (0, import_debug.default)("bacnet=enum=trace");
function invertEnum(enumToInvert) {
  const invertedEnum = {};
  Object.keys(enumToInvert).forEach((key) => {
    invertedEnum[enumToInvert[key]] = key;
  });
  return invertedEnum;
}
function getEnumName(group, value, addNumberValue = true, undefinedFallbackValue = void 0) {
  if (!Number.isInteger(value)) {
    throw new Error(
      'getEnumName() can only be passed an integer value, was given "' + value + '"'
    );
  }
  let foundEntry;
  try {
    const invertedGroup = invertEnum(group);
    foundEntry = invertedGroup[value];
    if (foundEntry === void 0 && undefinedFallbackValue) {
      foundEntry = undefinedFallbackValue;
    }
    if (foundEntry === void 0) {
      foundEntry = value.toString();
    } else if (addNumberValue) {
      foundEntry += "(" + value + ")";
    }
  } catch (e) {
    trace(e.message);
    foundEntry = null;
  }
  return foundEntry;
}
var PDU_TYPE_MASK = 240;
var ASN1_MAX_OBJECT = 1023;
var ASN1_INSTANCE_BITS = 22;
var ASN1_MAX_INSTANCE = 4194303;
var ASN1_MAX_BITSTRING_BYTES = 15;
var ASN1_ARRAY_ALL = 4294967295;
var ASN1_NO_PRIORITY = 0;
var ASN1_MIN_PRIORITY = 1;
var ASN1_MAX_PRIORITY = 16;
var ASN1_MAX_APPLICATION_TAG = 16;
var ASN1_MAX_OBJECT_TYPE = 1024;
var ASN1_MAX_PROPERTY_ID = 4194303;
var BVLL_TYPE_BACNET_IP = 129;
var BVLC_HEADER_LENGTH = 4;
var ConfirmedServiceChoice = /* @__PURE__ */ ((ConfirmedServiceChoice2) => {
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["READ_PROPERTY"] = 12] = "READ_PROPERTY";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["VT_OPEN"] = 21] = "VT_OPEN";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["VT_CLOSE"] = 22] = "VT_CLOSE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["VT_DATA"] = 23] = "VT_DATA";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["READ_RANGE"] = 26] = "READ_RANGE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["LIFE_SAFETY_OPERATION"] = 27] = "LIFE_SAFETY_OPERATION";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["SUBSCRIBE_COV_PROPERTY"] = 28] = "SUBSCRIBE_COV_PROPERTY";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["GET_EVENT_INFORMATION"] = 29] = "GET_EVENT_INFORMATION";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 30] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
  ConfirmedServiceChoice2[ConfirmedServiceChoice2["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 31] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
  return ConfirmedServiceChoice2;
})(ConfirmedServiceChoice || {});
var UnconfirmedServiceChoice = /* @__PURE__ */ ((UnconfirmedServiceChoice2) => {
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["I_AM"] = 0] = "I_AM";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["I_HAVE"] = 1] = "I_HAVE";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["UNCONFIRMED_COV_NOTIFICATION"] = 2] = "UNCONFIRMED_COV_NOTIFICATION";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["UNCONFIRMED_EVENT_NOTIFICATION"] = 3] = "UNCONFIRMED_EVENT_NOTIFICATION";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["UNCONFIRMED_PRIVATE_TRANSFER"] = 4] = "UNCONFIRMED_PRIVATE_TRANSFER";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["UNCONFIRMED_TEXT_MESSAGE"] = 5] = "UNCONFIRMED_TEXT_MESSAGE";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["TIME_SYNCHRONIZATION"] = 6] = "TIME_SYNCHRONIZATION";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["WHO_HAS"] = 7] = "WHO_HAS";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["WHO_IS"] = 8] = "WHO_IS";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["UTC_TIME_SYNCHRONIZATION"] = 9] = "UTC_TIME_SYNCHRONIZATION";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["WRITE_GROUP"] = 10] = "WRITE_GROUP";
  UnconfirmedServiceChoice2[UnconfirmedServiceChoice2["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 11] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
  return UnconfirmedServiceChoice2;
})(UnconfirmedServiceChoice || {});
var AbortReason = /* @__PURE__ */ ((AbortReason2) => {
  AbortReason2[AbortReason2["OTHER"] = 0] = "OTHER";
  AbortReason2[AbortReason2["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
  AbortReason2[AbortReason2["INVALID_APDU_IN_THIS_STATE"] = 2] = "INVALID_APDU_IN_THIS_STATE";
  AbortReason2[AbortReason2["PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 3] = "PREEMPTED_BY_HIGHER_PRIORITY_TASK";
  AbortReason2[AbortReason2["SEGMENTATION_NOT_SUPPORTED"] = 4] = "SEGMENTATION_NOT_SUPPORTED";
  AbortReason2[AbortReason2["SECURITY_ERROR"] = 5] = "SECURITY_ERROR";
  AbortReason2[AbortReason2["INSUFFICIENT_SECURITY"] = 6] = "INSUFFICIENT_SECURITY";
  AbortReason2[AbortReason2["WINDOW_SIZE_OUT_OF_RANGE"] = 7] = "WINDOW_SIZE_OUT_OF_RANGE";
  AbortReason2[AbortReason2["APPLICATION_EXCEEDED_REPLY_TIME"] = 8] = "APPLICATION_EXCEEDED_REPLY_TIME";
  AbortReason2[AbortReason2["OUT_OF_RESOURCES"] = 9] = "OUT_OF_RESOURCES";
  AbortReason2[AbortReason2["TSM_TIMEOUT"] = 10] = "TSM_TIMEOUT";
  AbortReason2[AbortReason2["APDU_TOO_LONG"] = 11] = "APDU_TOO_LONG";
  return AbortReason2;
})(AbortReason || {});
var RejectReason = /* @__PURE__ */ ((RejectReason2) => {
  RejectReason2[RejectReason2["OTHER"] = 0] = "OTHER";
  RejectReason2[RejectReason2["BUFFER_OVERFLOW"] = 1] = "BUFFER_OVERFLOW";
  RejectReason2[RejectReason2["INCONSISTENT_PARAMETERS"] = 2] = "INCONSISTENT_PARAMETERS";
  RejectReason2[RejectReason2["INVALID_PARAMETER_DATA_TYPE"] = 3] = "INVALID_PARAMETER_DATA_TYPE";
  RejectReason2[RejectReason2["INVALID_TAG"] = 4] = "INVALID_TAG";
  RejectReason2[RejectReason2["MISSING_REQUIRED_PARAMETER"] = 5] = "MISSING_REQUIRED_PARAMETER";
  RejectReason2[RejectReason2["PARAMETER_OUT_OF_RANGE"] = 6] = "PARAMETER_OUT_OF_RANGE";
  RejectReason2[RejectReason2["TOO_MANY_ARGUMENTS"] = 7] = "TOO_MANY_ARGUMENTS";
  RejectReason2[RejectReason2["UNDEFINED_ENUMERATION"] = 8] = "UNDEFINED_ENUMERATION";
  RejectReason2[RejectReason2["UNRECOGNIZED_SERVICE"] = 9] = "UNRECOGNIZED_SERVICE";
  return RejectReason2;
})(RejectReason || {});
var ErrorClass = /* @__PURE__ */ ((ErrorClass2) => {
  ErrorClass2[ErrorClass2["DEVICE"] = 0] = "DEVICE";
  ErrorClass2[ErrorClass2["OBJECT"] = 1] = "OBJECT";
  ErrorClass2[ErrorClass2["PROPERTY"] = 2] = "PROPERTY";
  ErrorClass2[ErrorClass2["RESOURCES"] = 3] = "RESOURCES";
  ErrorClass2[ErrorClass2["SECURITY"] = 4] = "SECURITY";
  ErrorClass2[ErrorClass2["SERVICES"] = 5] = "SERVICES";
  ErrorClass2[ErrorClass2["VT"] = 6] = "VT";
  ErrorClass2[ErrorClass2["COMMUNICATION"] = 7] = "COMMUNICATION";
  return ErrorClass2;
})(ErrorClass || {});
var ErrorClassName = invertEnum(
  ErrorClass
);
var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
  ErrorCode2[ErrorCode2["ABORT_APDU_TOO_LONG"] = 123] = "ABORT_APDU_TOO_LONG";
  ErrorCode2[ErrorCode2["ABORT_APPLICATION_EXCEEDED_REPLY_TIME"] = 124] = "ABORT_APPLICATION_EXCEEDED_REPLY_TIME";
  ErrorCode2[ErrorCode2["ABORT_BUFFER_OVERFLOW"] = 51] = "ABORT_BUFFER_OVERFLOW";
  ErrorCode2[ErrorCode2["ABORT_INSUFFICIENT_SECURITY"] = 135] = "ABORT_INSUFFICIENT_SECURITY";
  ErrorCode2[ErrorCode2["ABORT_INVALID_APDU_IN_THIS_STATE"] = 52] = "ABORT_INVALID_APDU_IN_THIS_STATE";
  ErrorCode2[ErrorCode2["ABORT_OTHER"] = 56] = "ABORT_OTHER";
  ErrorCode2[ErrorCode2["ABORT_OUT_OF_RESOURCES"] = 125] = "ABORT_OUT_OF_RESOURCES";
  ErrorCode2[ErrorCode2["ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK"] = 53] = "ABORT_PREEMPTED_BY_HIGHER_PRIORITY_TASK";
  ErrorCode2[ErrorCode2["ABORT_PROPRIETARY"] = 55] = "ABORT_PROPRIETARY";
  ErrorCode2[ErrorCode2["ABORT_SECURITY_ERROR"] = 136] = "ABORT_SECURITY_ERROR";
  ErrorCode2[ErrorCode2["ABORT_SEGMENTATION_NOT_SUPPORTED"] = 54] = "ABORT_SEGMENTATION_NOT_SUPPORTED";
  ErrorCode2[ErrorCode2["ABORT_TSM_TIMEOUT"] = 126] = "ABORT_TSM_TIMEOUT";
  ErrorCode2[ErrorCode2["ABORT_WINDOW_SIZE_OUT_OF_RANGE"] = 127] = "ABORT_WINDOW_SIZE_OUT_OF_RANGE";
  ErrorCode2[ErrorCode2["ACCESS_DENIED"] = 85] = "ACCESS_DENIED";
  ErrorCode2[ErrorCode2["ADDRESSING_ERROR"] = 115] = "ADDRESSING_ERROR";
  ErrorCode2[ErrorCode2["BAD_DESTINATION_ADDRESS"] = 86] = "BAD_DESTINATION_ADDRESS";
  ErrorCode2[ErrorCode2["BAD_DESTINATION_DEVICE_ID"] = 87] = "BAD_DESTINATION_DEVICE_ID";
  ErrorCode2[ErrorCode2["BAD_SIGNATURE"] = 88] = "BAD_SIGNATURE";
  ErrorCode2[ErrorCode2["BAD_SOURCE_ADDRESS"] = 89] = "BAD_SOURCE_ADDRESS";
  ErrorCode2[ErrorCode2["BAD_TIMESTAMP"] = 90] = "BAD_TIMESTAMP";
  ErrorCode2[ErrorCode2["BUSY"] = 82] = "BUSY";
  ErrorCode2[ErrorCode2["CANNOT_USE_KEY"] = 91] = "CANNOT_USE_KEY";
  ErrorCode2[ErrorCode2["CANNOT_VERIFY_MESSAGE_ID"] = 92] = "CANNOT_VERIFY_MESSAGE_ID";
  ErrorCode2[ErrorCode2["CHARACTER_SET_NOT_SUPPORTED"] = 41] = "CHARACTER_SET_NOT_SUPPORTED";
  ErrorCode2[ErrorCode2["COMMUNICATION_DISABLED"] = 83] = "COMMUNICATION_DISABLED";
  ErrorCode2[ErrorCode2["CONFIGURATION_IN_PROGRESS"] = 2] = "CONFIGURATION_IN_PROGRESS";
  ErrorCode2[ErrorCode2["CORRECT_KEY_REVISION"] = 93] = "CORRECT_KEY_REVISION";
  ErrorCode2[ErrorCode2["COV_SUBSCRIPTION_FAILED"] = 43] = "COV_SUBSCRIPTION_FAILED";
  ErrorCode2[ErrorCode2["DATATYPE_NOT_SUPPORTED"] = 47] = "DATATYPE_NOT_SUPPORTED";
  ErrorCode2[ErrorCode2["DELETE_FDT_ENTRY_FAILED"] = 120] = "DELETE_FDT_ENTRY_FAILED";
  ErrorCode2[ErrorCode2["DESTINATION_DEVICE_ID_REQUIRED"] = 94] = "DESTINATION_DEVICE_ID_REQUIRED";
  ErrorCode2[ErrorCode2["DEVICE_BUSY"] = 3] = "DEVICE_BUSY";
  ErrorCode2[ErrorCode2["DISTRIBUTE_BROADCAST_FAILED"] = 121] = "DISTRIBUTE_BROADCAST_FAILED";
  ErrorCode2[ErrorCode2["DUPLICATE_ENTRY"] = 137] = "DUPLICATE_ENTRY";
  ErrorCode2[ErrorCode2["DUPLICATE_MESSAGE"] = 95] = "DUPLICATE_MESSAGE";
  ErrorCode2[ErrorCode2["DUPLICATE_NAME"] = 48] = "DUPLICATE_NAME";
  ErrorCode2[ErrorCode2["DUPLICATE_OBJECT_ID"] = 49] = "DUPLICATE_OBJECT_ID";
  ErrorCode2[ErrorCode2["DYNAMIC_CREATION_NOT_SUPPORTED"] = 4] = "DYNAMIC_CREATION_NOT_SUPPORTED";
  ErrorCode2[ErrorCode2["ENCRYPTION_NOT_CONFIGURED"] = 96] = "ENCRYPTION_NOT_CONFIGURED";
  ErrorCode2[ErrorCode2["ENCRYPTION_REQUIRED"] = 97] = "ENCRYPTION_REQUIRED";
  ErrorCode2[ErrorCode2["FILE_ACCESS_DENIED"] = 5] = "FILE_ACCESS_DENIED";
  ErrorCode2[ErrorCode2["FILE_FULL"] = 128] = "FILE_FULL";
  ErrorCode2[ErrorCode2["INCONSISTENT_CONFIGURATION"] = 129] = "INCONSISTENT_CONFIGURATION";
  ErrorCode2[ErrorCode2["INCONSISTENT_OBJECT_TYPE"] = 130] = "INCONSISTENT_OBJECT_TYPE";
  ErrorCode2[ErrorCode2["INCONSISTENT_PARAMETERS"] = 7] = "INCONSISTENT_PARAMETERS";
  ErrorCode2[ErrorCode2["INCONSISTENT_SELECTION_CRITERION"] = 8] = "INCONSISTENT_SELECTION_CRITERION";
  ErrorCode2[ErrorCode2["INCORRECT_KEY"] = 98] = "INCORRECT_KEY";
  ErrorCode2[ErrorCode2["INTERNAL_ERROR"] = 131] = "INTERNAL_ERROR";
  ErrorCode2[ErrorCode2["INVALID_ARRAY_INDEX"] = 42] = "INVALID_ARRAY_INDEX";
  ErrorCode2[ErrorCode2["INVALID_CONFIGURATION_DATA"] = 46] = "INVALID_CONFIGURATION_DATA";
  ErrorCode2[ErrorCode2["INVALID_DATA_TYPE"] = 9] = "INVALID_DATA_TYPE";
  ErrorCode2[ErrorCode2["INVALID_EVENT_STATE"] = 73] = "INVALID_EVENT_STATE";
  ErrorCode2[ErrorCode2["INVALID_FILE_ACCESS_METHOD"] = 10] = "INVALID_FILE_ACCESS_METHOD";
  ErrorCode2[ErrorCode2["INVALID_FILE_START_POSITION"] = 11] = "INVALID_FILE_START_POSITION";
  ErrorCode2[ErrorCode2["INVALID_KEY_DATA"] = 99] = "INVALID_KEY_DATA";
  ErrorCode2[ErrorCode2["INVALID_PARAMETER_DATA_TYPE"] = 13] = "INVALID_PARAMETER_DATA_TYPE";
  ErrorCode2[ErrorCode2["INVALID_TAG"] = 57] = "INVALID_TAG";
  ErrorCode2[ErrorCode2["INVALID_TIMESTAMP"] = 14] = "INVALID_TIMESTAMP";
  ErrorCode2[ErrorCode2["INVALID_VALUE_IN_THIS_STATE"] = 138] = "INVALID_VALUE_IN_THIS_STATE";
  ErrorCode2[ErrorCode2["KEY_UPDATE_IN_PROGRESS"] = 100] = "KEY_UPDATE_IN_PROGRESS";
  ErrorCode2[ErrorCode2["LIST_ELEMENT_NOT_FOUND"] = 81] = "LIST_ELEMENT_NOT_FOUND";
  ErrorCode2[ErrorCode2["LOG_BUFFER_FULL"] = 75] = "LOG_BUFFER_FULL";
  ErrorCode2[ErrorCode2["LOGGED_VALUE_PURGED"] = 76] = "LOGGED_VALUE_PURGED";
  ErrorCode2[ErrorCode2["MALFORMED_MESSAGE"] = 101] = "MALFORMED_MESSAGE";
  ErrorCode2[ErrorCode2["MESSAGE_TOO_LONG"] = 113] = "MESSAGE_TOO_LONG";
  ErrorCode2[ErrorCode2["MISSING_REQUIRED_PARAMETER"] = 16] = "MISSING_REQUIRED_PARAMETER";
  ErrorCode2[ErrorCode2["NETWORK_DOWN"] = 58] = "NETWORK_DOWN";
  ErrorCode2[ErrorCode2["NO_ALARM_CONFIGURED"] = 74] = "NO_ALARM_CONFIGURED";
  ErrorCode2[ErrorCode2["NO_OBJECTS_OF_SPECIFIED_TYPE"] = 17] = "NO_OBJECTS_OF_SPECIFIED_TYPE";
  ErrorCode2[ErrorCode2["NO_PROPERTY_SPECIFIED"] = 77] = "NO_PROPERTY_SPECIFIED";
  ErrorCode2[ErrorCode2["NO_SPACE_FOR_OBJECT"] = 18] = "NO_SPACE_FOR_OBJECT";
  ErrorCode2[ErrorCode2["NO_SPACE_TO_ADD_LIST_ELEMENT"] = 19] = "NO_SPACE_TO_ADD_LIST_ELEMENT";
  ErrorCode2[ErrorCode2["NO_SPACE_TO_WRITE_PROPERTY"] = 20] = "NO_SPACE_TO_WRITE_PROPERTY";
  ErrorCode2[ErrorCode2["NO_VT_SESSIONS_AVAILABLE"] = 21] = "NO_VT_SESSIONS_AVAILABLE";
  ErrorCode2[ErrorCode2["NOT_CONFIGURED"] = 132] = "NOT_CONFIGURED";
  ErrorCode2[ErrorCode2["NOT_CONFIGURED_FOR_TRIGGERED_LOGGING"] = 78] = "NOT_CONFIGURED_FOR_TRIGGERED_LOGGING";
  ErrorCode2[ErrorCode2["NOT_COV_PROPERTY"] = 44] = "NOT_COV_PROPERTY";
  ErrorCode2[ErrorCode2["NOT_KEY_SERVER"] = 102] = "NOT_KEY_SERVER";
  ErrorCode2[ErrorCode2["NOT_ROUTER_TO_DNET"] = 110] = "NOT_ROUTER_TO_DNET";
  ErrorCode2[ErrorCode2["OBJECT_DELETION_NOT_PERMITTED"] = 23] = "OBJECT_DELETION_NOT_PERMITTED";
  ErrorCode2[ErrorCode2["OBJECT_IDENTIFIER_ALREADY_EXISTS"] = 24] = "OBJECT_IDENTIFIER_ALREADY_EXISTS";
  ErrorCode2[ErrorCode2["OPERATIONAL_PROBLEM"] = 25] = "OPERATIONAL_PROBLEM";
  ErrorCode2[ErrorCode2["OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED"] = 45] = "OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED";
  ErrorCode2[ErrorCode2["OTHER"] = 0] = "OTHER";
  ErrorCode2[ErrorCode2["OUT_OF_MEMORY"] = 133] = "OUT_OF_MEMORY";
  ErrorCode2[ErrorCode2["PARAMETER_OUT_OF_RANGE"] = 80] = "PARAMETER_OUT_OF_RANGE";
  ErrorCode2[ErrorCode2["PASSWORD_FAILURE"] = 26] = "PASSWORD_FAILURE";
  ErrorCode2[ErrorCode2["PROPERTY_IS_NOT_A_LIST"] = 22] = "PROPERTY_IS_NOT_A_LIST";
  ErrorCode2[ErrorCode2["PROPERTY_IS_NOT_AN_ARRAY"] = 50] = "PROPERTY_IS_NOT_AN_ARRAY";
  ErrorCode2[ErrorCode2["READ_ACCESS_DENIED"] = 27] = "READ_ACCESS_DENIED";
  ErrorCode2[ErrorCode2["READ_BDT_FAILED"] = 117] = "READ_BDT_FAILED";
  ErrorCode2[ErrorCode2["READ_FDT_FAILED"] = 119] = "READ_FDT_FAILED";
  ErrorCode2[ErrorCode2["REGISTER_FOREIGN_DEVICE_FAILED"] = 118] = "REGISTER_FOREIGN_DEVICE_FAILED";
  ErrorCode2[ErrorCode2["REJECT_BUFFER_OVERFLOW"] = 59] = "REJECT_BUFFER_OVERFLOW";
  ErrorCode2[ErrorCode2["REJECT_INCONSISTENT_PARAMETERS"] = 60] = "REJECT_INCONSISTENT_PARAMETERS";
  ErrorCode2[ErrorCode2["REJECT_INVALID_PARAMETER_DATA_TYPE"] = 61] = "REJECT_INVALID_PARAMETER_DATA_TYPE";
  ErrorCode2[ErrorCode2["REJECT_INVALID_TAG"] = 62] = "REJECT_INVALID_TAG";
  ErrorCode2[ErrorCode2["REJECT_MISSING_REQUIRED_PARAMETER"] = 63] = "REJECT_MISSING_REQUIRED_PARAMETER";
  ErrorCode2[ErrorCode2["REJECT_OTHER"] = 69] = "REJECT_OTHER";
  ErrorCode2[ErrorCode2["REJECT_PARAMETER_OUT_OF_RANGE"] = 64] = "REJECT_PARAMETER_OUT_OF_RANGE";
  ErrorCode2[ErrorCode2["REJECT_PROPRIETARY"] = 68] = "REJECT_PROPRIETARY";
  ErrorCode2[ErrorCode2["REJECT_TOO_MANY_ARGUMENTS"] = 65] = "REJECT_TOO_MANY_ARGUMENTS";
  ErrorCode2[ErrorCode2["REJECT_UNDEFINED_ENUMERATION"] = 66] = "REJECT_UNDEFINED_ENUMERATION";
  ErrorCode2[ErrorCode2["REJECT_UNRECOGNIZED_SERVICE"] = 67] = "REJECT_UNRECOGNIZED_SERVICE";
  ErrorCode2[ErrorCode2["ROUTER_BUSY"] = 111] = "ROUTER_BUSY";
  ErrorCode2[ErrorCode2["SECURITY_ERROR"] = 114] = "SECURITY_ERROR";
  ErrorCode2[ErrorCode2["SECURITY_NOT_CONFIGURED"] = 103] = "SECURITY_NOT_CONFIGURED";
  ErrorCode2[ErrorCode2["SERVICE_REQUEST_DENIED"] = 29] = "SERVICE_REQUEST_DENIED";
  ErrorCode2[ErrorCode2["SOURCE_SECURITY_REQUIRED"] = 104] = "SOURCE_SECURITY_REQUIRED";
  ErrorCode2[ErrorCode2["SUCCESS"] = 84] = "SUCCESS";
  ErrorCode2[ErrorCode2["TIMEOUT"] = 30] = "TIMEOUT";
  ErrorCode2[ErrorCode2["TOO_MANY_KEYS"] = 105] = "TOO_MANY_KEYS";
  ErrorCode2[ErrorCode2["UNKNOWN_AUTHENTICATION_TYPE"] = 106] = "UNKNOWN_AUTHENTICATION_TYPE";
  ErrorCode2[ErrorCode2["UNKNOWN_DEVICE"] = 70] = "UNKNOWN_DEVICE";
  ErrorCode2[ErrorCode2["UNKNOWN_FILE_SIZE"] = 122] = "UNKNOWN_FILE_SIZE";
  ErrorCode2[ErrorCode2["UNKNOWN_KEY"] = 107] = "UNKNOWN_KEY";
  ErrorCode2[ErrorCode2["UNKNOWN_KEY_REVISION"] = 108] = "UNKNOWN_KEY_REVISION";
  ErrorCode2[ErrorCode2["UNKNOWN_NETWORK_MESSAGE"] = 112] = "UNKNOWN_NETWORK_MESSAGE";
  ErrorCode2[ErrorCode2["UNKNOWN_OBJECT"] = 31] = "UNKNOWN_OBJECT";
  ErrorCode2[ErrorCode2["UNKNOWN_PROPERTY"] = 32] = "UNKNOWN_PROPERTY";
  ErrorCode2[ErrorCode2["UNKNOWN_ROUTE"] = 71] = "UNKNOWN_ROUTE";
  ErrorCode2[ErrorCode2["UNKNOWN_SOURCE_MESSAGE"] = 109] = "UNKNOWN_SOURCE_MESSAGE";
  ErrorCode2[ErrorCode2["UNKNOWN_SUBSCRIPTION"] = 79] = "UNKNOWN_SUBSCRIPTION";
  ErrorCode2[ErrorCode2["UNKNOWN_VT_CLASS"] = 34] = "UNKNOWN_VT_CLASS";
  ErrorCode2[ErrorCode2["UNKNOWN_VT_SESSION"] = 35] = "UNKNOWN_VT_SESSION";
  ErrorCode2[ErrorCode2["UNSUPPORTED_OBJECT_TYPE"] = 36] = "UNSUPPORTED_OBJECT_TYPE";
  ErrorCode2[ErrorCode2["VALUE_NOT_INITIALIZED"] = 72] = "VALUE_NOT_INITIALIZED";
  ErrorCode2[ErrorCode2["VALUE_OUT_OF_RANGE"] = 37] = "VALUE_OUT_OF_RANGE";
  ErrorCode2[ErrorCode2["VALUE_TOO_LONG"] = 134] = "VALUE_TOO_LONG";
  ErrorCode2[ErrorCode2["VT_SESSION_ALREADY_CLOSED"] = 38] = "VT_SESSION_ALREADY_CLOSED";
  ErrorCode2[ErrorCode2["VT_SESSION_TERMINATION_FAILURE"] = 39] = "VT_SESSION_TERMINATION_FAILURE";
  ErrorCode2[ErrorCode2["WRITE_ACCESS_DENIED"] = 40] = "WRITE_ACCESS_DENIED";
  ErrorCode2[ErrorCode2["WRITE_BDT_FAILED"] = 116] = "WRITE_BDT_FAILED";
  return ErrorCode2;
})(ErrorCode || {});
var ErrorCodeName = invertEnum(
  ErrorCode
);
var AccessAuthenticationFactorDisable = /* @__PURE__ */ ((AccessAuthenticationFactorDisable2) => {
  AccessAuthenticationFactorDisable2[AccessAuthenticationFactorDisable2["NONE"] = 0] = "NONE";
  AccessAuthenticationFactorDisable2[AccessAuthenticationFactorDisable2["DISABLED"] = 1] = "DISABLED";
  AccessAuthenticationFactorDisable2[AccessAuthenticationFactorDisable2["DISABLED_LOST"] = 2] = "DISABLED_LOST";
  AccessAuthenticationFactorDisable2[AccessAuthenticationFactorDisable2["DISABLED_STOLEN"] = 3] = "DISABLED_STOLEN";
  AccessAuthenticationFactorDisable2[AccessAuthenticationFactorDisable2["DISABLED_DAMAGED"] = 4] = "DISABLED_DAMAGED";
  AccessAuthenticationFactorDisable2[AccessAuthenticationFactorDisable2["DISABLED_DESTROYED"] = 5] = "DISABLED_DESTROYED";
  return AccessAuthenticationFactorDisable2;
})(AccessAuthenticationFactorDisable || {});
var AccessCredentialDisable = /* @__PURE__ */ ((AccessCredentialDisable2) => {
  AccessCredentialDisable2[AccessCredentialDisable2["NONE"] = 0] = "NONE";
  AccessCredentialDisable2[AccessCredentialDisable2["DISABLE"] = 1] = "DISABLE";
  AccessCredentialDisable2[AccessCredentialDisable2["DISABLE_MANUAL"] = 2] = "DISABLE_MANUAL";
  AccessCredentialDisable2[AccessCredentialDisable2["DISABLE_LOCKOUT"] = 3] = "DISABLE_LOCKOUT";
  return AccessCredentialDisable2;
})(AccessCredentialDisable || {});
var AccessCredentialDisableReason = /* @__PURE__ */ ((AccessCredentialDisableReason2) => {
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED"] = 0] = "DISABLED";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_NEEDS_PROVISIONING"] = 1] = "DISABLED_NEEDS_PROVISIONING";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_UNASSIGNED"] = 2] = "DISABLED_UNASSIGNED";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_NOT_YET_ACTIVE"] = 3] = "DISABLED_NOT_YET_ACTIVE";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_EXPIRED"] = 4] = "DISABLED_EXPIRED";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_LOCKOUT"] = 5] = "DISABLED_LOCKOUT";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_MAX_DAYS"] = 6] = "DISABLED_MAX_DAYS";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_MAX_USES"] = 7] = "DISABLED_MAX_USES";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_INACTIVITY"] = 8] = "DISABLED_INACTIVITY";
  AccessCredentialDisableReason2[AccessCredentialDisableReason2["DISABLED_MANUAL"] = 9] = "DISABLED_MANUAL";
  return AccessCredentialDisableReason2;
})(AccessCredentialDisableReason || {});
var AccessEvent = /* @__PURE__ */ ((AccessEvent2) => {
  AccessEvent2[AccessEvent2["NONE"] = 0] = "NONE";
  AccessEvent2[AccessEvent2["GRANTED"] = 1] = "GRANTED";
  AccessEvent2[AccessEvent2["MUSTER"] = 2] = "MUSTER";
  AccessEvent2[AccessEvent2["PASSBACK_DETECTED"] = 3] = "PASSBACK_DETECTED";
  AccessEvent2[AccessEvent2["DURESS"] = 4] = "DURESS";
  AccessEvent2[AccessEvent2["TRACE"] = 5] = "TRACE";
  AccessEvent2[AccessEvent2["LOCKOUT_MAX_ATTEMPTS"] = 6] = "LOCKOUT_MAX_ATTEMPTS";
  AccessEvent2[AccessEvent2["LOCKOUT_OTHER"] = 7] = "LOCKOUT_OTHER";
  AccessEvent2[AccessEvent2["LOCKOUT_RELINQUISHED"] = 8] = "LOCKOUT_RELINQUISHED";
  AccessEvent2[AccessEvent2["LOCKED_BY_HIGHER_PRIORITY"] = 9] = "LOCKED_BY_HIGHER_PRIORITY";
  AccessEvent2[AccessEvent2["OUT_OF_SERVICE"] = 10] = "OUT_OF_SERVICE";
  AccessEvent2[AccessEvent2["OUT_OF_SERVICE_RELINQUISHED"] = 11] = "OUT_OF_SERVICE_RELINQUISHED";
  AccessEvent2[AccessEvent2["ACCOMPANIMENT_BY"] = 12] = "ACCOMPANIMENT_BY";
  AccessEvent2[AccessEvent2["AUTHENTICATION_FACTOR_READ"] = 13] = "AUTHENTICATION_FACTOR_READ";
  AccessEvent2[AccessEvent2["AUTHORIZATION_DELAYED"] = 14] = "AUTHORIZATION_DELAYED";
  AccessEvent2[AccessEvent2["VERIFICATION_REQUIRED"] = 15] = "VERIFICATION_REQUIRED";
  AccessEvent2[AccessEvent2["NO_ENTRY_AFTER_GRANTED"] = 16] = "NO_ENTRY_AFTER_GRANTED";
  AccessEvent2[AccessEvent2["DENIED_DENY_ALL"] = 128] = "DENIED_DENY_ALL";
  AccessEvent2[AccessEvent2["DENIED_UNKNOWN_CREDENTIAL"] = 129] = "DENIED_UNKNOWN_CREDENTIAL";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_UNAVAILABLE"] = 130] = "DENIED_AUTHENTICATION_UNAVAILABLE";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_FACTOR_TIMEOUT"] = 131] = "DENIED_AUTHENTICATION_FACTOR_TIMEOUT";
  AccessEvent2[AccessEvent2["DENIED_INCORRECT_AUTHENTICATION_FACTOR"] = 132] = "DENIED_INCORRECT_AUTHENTICATION_FACTOR";
  AccessEvent2[AccessEvent2["DENIED_ZONE_NO_ACCESS_RIGHTS"] = 133] = "DENIED_ZONE_NO_ACCESS_RIGHTS";
  AccessEvent2[AccessEvent2["DENIED_POINT_NO_ACCESS_RIGHTS"] = 134] = "DENIED_POINT_NO_ACCESS_RIGHTS";
  AccessEvent2[AccessEvent2["DENIED_NO_ACCESS_RIGHTS"] = 135] = "DENIED_NO_ACCESS_RIGHTS";
  AccessEvent2[AccessEvent2["DENIED_OUT_OF_TIME_RANGE"] = 136] = "DENIED_OUT_OF_TIME_RANGE";
  AccessEvent2[AccessEvent2["DENIED_THREAT_LEVEL"] = 137] = "DENIED_THREAT_LEVEL";
  AccessEvent2[AccessEvent2["DENIED_PASSBACK"] = 138] = "DENIED_PASSBACK";
  AccessEvent2[AccessEvent2["DENIED_UNEXPECTED_LOCATION_USAGE"] = 139] = "DENIED_UNEXPECTED_LOCATION_USAGE";
  AccessEvent2[AccessEvent2["DENIED_MAX_ATTEMPTS"] = 140] = "DENIED_MAX_ATTEMPTS";
  AccessEvent2[AccessEvent2["DENIED_LOWER_OCCUPANCY_LIMIT"] = 141] = "DENIED_LOWER_OCCUPANCY_LIMIT";
  AccessEvent2[AccessEvent2["DENIED_UPPER_OCCUPANCY_LIMIT"] = 142] = "DENIED_UPPER_OCCUPANCY_LIMIT";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_FACTOR_LOST"] = 143] = "DENIED_AUTHENTICATION_FACTOR_LOST";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_FACTOR_STOLEN"] = 144] = "DENIED_AUTHENTICATION_FACTOR_STOLEN";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_FACTOR_DAMAGED"] = 145] = "DENIED_AUTHENTICATION_FACTOR_DAMAGED";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_FACTOR_DESTROYED"] = 146] = "DENIED_AUTHENTICATION_FACTOR_DESTROYED";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_FACTOR_DISABLED"] = 147] = "DENIED_AUTHENTICATION_FACTOR_DISABLED";
  AccessEvent2[AccessEvent2["DENIED_AUTHENTICATION_FACTOR_ERROR"] = 148] = "DENIED_AUTHENTICATION_FACTOR_ERROR";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_UNASSIGNED"] = 149] = "DENIED_CREDENTIAL_UNASSIGNED";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_NOT_PROVISIONED"] = 150] = "DENIED_CREDENTIAL_NOT_PROVISIONED";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_NOT_YET_ACTIVE"] = 151] = "DENIED_CREDENTIAL_NOT_YET_ACTIVE";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_EXPIRED"] = 152] = "DENIED_CREDENTIAL_EXPIRED";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_MANUAL_DISABLE"] = 153] = "DENIED_CREDENTIAL_MANUAL_DISABLE";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_LOCKOUT"] = 154] = "DENIED_CREDENTIAL_LOCKOUT";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_MAX_DAYS"] = 155] = "DENIED_CREDENTIAL_MAX_DAYS";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_MAX_USES"] = 156] = "DENIED_CREDENTIAL_MAX_USES";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_INACTIVITY"] = 157] = "DENIED_CREDENTIAL_INACTIVITY";
  AccessEvent2[AccessEvent2["DENIED_CREDENTIAL_DISABLED"] = 158] = "DENIED_CREDENTIAL_DISABLED";
  AccessEvent2[AccessEvent2["DENIED_NO_ACCOMPANIMENT"] = 159] = "DENIED_NO_ACCOMPANIMENT";
  AccessEvent2[AccessEvent2["DENIED_INCORRECT_ACCOMPANIMENT"] = 160] = "DENIED_INCORRECT_ACCOMPANIMENT";
  AccessEvent2[AccessEvent2["DENIED_LOCKOUT"] = 161] = "DENIED_LOCKOUT";
  AccessEvent2[AccessEvent2["DENIED_VERIFICATION_FAILED"] = 162] = "DENIED_VERIFICATION_FAILED";
  AccessEvent2[AccessEvent2["DENIED_VERIFICATION_TIMEOUT"] = 163] = "DENIED_VERIFICATION_TIMEOUT";
  AccessEvent2[AccessEvent2["DENIED_OTHER"] = 164] = "DENIED_OTHER";
  return AccessEvent2;
})(AccessEvent || {});
var AccessPassbackMode = /* @__PURE__ */ ((AccessPassbackMode2) => {
  AccessPassbackMode2[AccessPassbackMode2["PASSBACK_OFF"] = 0] = "PASSBACK_OFF";
  AccessPassbackMode2[AccessPassbackMode2["HARD_PASSBACK"] = 1] = "HARD_PASSBACK";
  AccessPassbackMode2[AccessPassbackMode2["SOFT_PASSBACK"] = 2] = "SOFT_PASSBACK";
  return AccessPassbackMode2;
})(AccessPassbackMode || {});
var AccessUserType = /* @__PURE__ */ ((AccessUserType2) => {
  AccessUserType2[AccessUserType2["ASSET"] = 0] = "ASSET";
  AccessUserType2[AccessUserType2["GROUP"] = 1] = "GROUP";
  AccessUserType2[AccessUserType2["PERSON"] = 2] = "PERSON";
  return AccessUserType2;
})(AccessUserType || {});
var AccessZoneOccupancyState = /* @__PURE__ */ ((AccessZoneOccupancyState2) => {
  AccessZoneOccupancyState2[AccessZoneOccupancyState2["NORMAL"] = 0] = "NORMAL";
  AccessZoneOccupancyState2[AccessZoneOccupancyState2["BELOW_LOWER_LIMIT"] = 1] = "BELOW_LOWER_LIMIT";
  AccessZoneOccupancyState2[AccessZoneOccupancyState2["AT_LOWER_LIMIT"] = 2] = "AT_LOWER_LIMIT";
  AccessZoneOccupancyState2[AccessZoneOccupancyState2["AT_UPPER_LIMIT"] = 3] = "AT_UPPER_LIMIT";
  AccessZoneOccupancyState2[AccessZoneOccupancyState2["ABOVE_UPPER_LIMIT"] = 4] = "ABOVE_UPPER_LIMIT";
  AccessZoneOccupancyState2[AccessZoneOccupancyState2["DISABLED"] = 5] = "DISABLED";
  AccessZoneOccupancyState2[AccessZoneOccupancyState2["NOT_SUPPORTED"] = 6] = "NOT_SUPPORTED";
  return AccessZoneOccupancyState2;
})(AccessZoneOccupancyState || {});
var Action = /* @__PURE__ */ ((Action2) => {
  Action2[Action2["DIRECT"] = 0] = "DIRECT";
  Action2[Action2["REVERSE"] = 1] = "REVERSE";
  return Action2;
})(Action || {});
var AuthenticationFactorType = /* @__PURE__ */ ((AuthenticationFactorType2) => {
  AuthenticationFactorType2[AuthenticationFactorType2["UNDEFINED"] = 0] = "UNDEFINED";
  AuthenticationFactorType2[AuthenticationFactorType2["ERROR"] = 1] = "ERROR";
  AuthenticationFactorType2[AuthenticationFactorType2["CUSTOM"] = 2] = "CUSTOM";
  AuthenticationFactorType2[AuthenticationFactorType2["SIMPLE_NUMBER16"] = 3] = "SIMPLE_NUMBER16";
  AuthenticationFactorType2[AuthenticationFactorType2["SIMPLE_NUMBER32"] = 4] = "SIMPLE_NUMBER32";
  AuthenticationFactorType2[AuthenticationFactorType2["SIMPLE_NUMBER56"] = 5] = "SIMPLE_NUMBER56";
  AuthenticationFactorType2[AuthenticationFactorType2["SIMPLE_ALPHA_NUMERIC"] = 6] = "SIMPLE_ALPHA_NUMERIC";
  AuthenticationFactorType2[AuthenticationFactorType2["ABA_TRACK2"] = 7] = "ABA_TRACK2";
  AuthenticationFactorType2[AuthenticationFactorType2["WIEGAND26"] = 8] = "WIEGAND26";
  AuthenticationFactorType2[AuthenticationFactorType2["WIEGAND37"] = 9] = "WIEGAND37";
  AuthenticationFactorType2[AuthenticationFactorType2["WIEGAND37_FACILITY"] = 10] = "WIEGAND37_FACILITY";
  AuthenticationFactorType2[AuthenticationFactorType2["FACILITY16_CARD32"] = 11] = "FACILITY16_CARD32";
  AuthenticationFactorType2[AuthenticationFactorType2["FACILITY32_CARD32"] = 12] = "FACILITY32_CARD32";
  AuthenticationFactorType2[AuthenticationFactorType2["FASC_N"] = 13] = "FASC_N";
  AuthenticationFactorType2[AuthenticationFactorType2["FASC_N_BCD"] = 14] = "FASC_N_BCD";
  AuthenticationFactorType2[AuthenticationFactorType2["FASC_N_LARGE"] = 15] = "FASC_N_LARGE";
  AuthenticationFactorType2[AuthenticationFactorType2["FASC_N_LARGE_BCD"] = 16] = "FASC_N_LARGE_BCD";
  AuthenticationFactorType2[AuthenticationFactorType2["GSA75"] = 17] = "GSA75";
  AuthenticationFactorType2[AuthenticationFactorType2["CHUID"] = 18] = "CHUID";
  AuthenticationFactorType2[AuthenticationFactorType2["CHUID_FULL"] = 19] = "CHUID_FULL";
  AuthenticationFactorType2[AuthenticationFactorType2["GUID"] = 20] = "GUID";
  AuthenticationFactorType2[AuthenticationFactorType2["CBEFF_A"] = 21] = "CBEFF_A";
  AuthenticationFactorType2[AuthenticationFactorType2["CBEFF_B"] = 22] = "CBEFF_B";
  AuthenticationFactorType2[AuthenticationFactorType2["CBEFF_C"] = 23] = "CBEFF_C";
  AuthenticationFactorType2[AuthenticationFactorType2["USER_PASSWORD"] = 24] = "USER_PASSWORD";
  return AuthenticationFactorType2;
})(AuthenticationFactorType || {});
var AuthenticationStatus = /* @__PURE__ */ ((AuthenticationStatus2) => {
  AuthenticationStatus2[AuthenticationStatus2["NOT_READY"] = 0] = "NOT_READY";
  AuthenticationStatus2[AuthenticationStatus2["READY"] = 1] = "READY";
  AuthenticationStatus2[AuthenticationStatus2["DISABLED"] = 2] = "DISABLED";
  AuthenticationStatus2[AuthenticationStatus2["WAITING_FOR_AUTHENTICATION_FACTOR"] = 3] = "WAITING_FOR_AUTHENTICATION_FACTOR";
  AuthenticationStatus2[AuthenticationStatus2["WAITING_FOR_ACCOMPANIMENT"] = 4] = "WAITING_FOR_ACCOMPANIMENT";
  AuthenticationStatus2[AuthenticationStatus2["WAITING_FOR_VERIFICATION"] = 5] = "WAITING_FOR_VERIFICATION";
  AuthenticationStatus2[AuthenticationStatus2["IN_PROGRESS"] = 6] = "IN_PROGRESS";
  return AuthenticationStatus2;
})(AuthenticationStatus || {});
var AuthorizationExemption = /* @__PURE__ */ ((AuthorizationExemption2) => {
  AuthorizationExemption2[AuthorizationExemption2["PASSBACK"] = 0] = "PASSBACK";
  AuthorizationExemption2[AuthorizationExemption2["OCCUPANCY_CHECK"] = 1] = "OCCUPANCY_CHECK";
  AuthorizationExemption2[AuthorizationExemption2["ACCESS_RIGHTS"] = 2] = "ACCESS_RIGHTS";
  AuthorizationExemption2[AuthorizationExemption2["LOCKOUT"] = 3] = "LOCKOUT";
  AuthorizationExemption2[AuthorizationExemption2["DENY"] = 4] = "DENY";
  AuthorizationExemption2[AuthorizationExemption2["VERIFICATION"] = 5] = "VERIFICATION";
  AuthorizationExemption2[AuthorizationExemption2["AUTHORIZATION_DELAY"] = 6] = "AUTHORIZATION_DELAY";
  return AuthorizationExemption2;
})(AuthorizationExemption || {});
var AuthorizationMode = /* @__PURE__ */ ((AuthorizationMode2) => {
  AuthorizationMode2[AuthorizationMode2["AUTHORIZE"] = 0] = "AUTHORIZE";
  AuthorizationMode2[AuthorizationMode2["GRANT_ACTIVE"] = 1] = "GRANT_ACTIVE";
  AuthorizationMode2[AuthorizationMode2["DENY_ALL"] = 2] = "DENY_ALL";
  AuthorizationMode2[AuthorizationMode2["VERIFICATION_REQUIRED"] = 3] = "VERIFICATION_REQUIRED";
  AuthorizationMode2[AuthorizationMode2["AUTHORIZATION_DELAYED"] = 4] = "AUTHORIZATION_DELAYED";
  AuthorizationMode2[AuthorizationMode2["NONE"] = 5] = "NONE";
  return AuthorizationMode2;
})(AuthorizationMode || {});
var BackupState = /* @__PURE__ */ ((BackupState2) => {
  BackupState2[BackupState2["IDLE"] = 0] = "IDLE";
  BackupState2[BackupState2["PREPARING_FOR_BACKUP"] = 1] = "PREPARING_FOR_BACKUP";
  BackupState2[BackupState2["PREPARING_FOR_RESTORE"] = 2] = "PREPARING_FOR_RESTORE";
  BackupState2[BackupState2["PERFORMING_A_BACKUP"] = 3] = "PERFORMING_A_BACKUP";
  BackupState2[BackupState2["PERFORMING_A_RESTORE"] = 4] = "PERFORMING_A_RESTORE";
  BackupState2[BackupState2["BACKUP_FAILURE"] = 5] = "BACKUP_FAILURE";
  BackupState2[BackupState2["RESTORE_FAILURE"] = 6] = "RESTORE_FAILURE";
  return BackupState2;
})(BackupState || {});
var BinaryLightingPV = /* @__PURE__ */ ((BinaryLightingPV2) => {
  BinaryLightingPV2[BinaryLightingPV2["OFF"] = 0] = "OFF";
  BinaryLightingPV2[BinaryLightingPV2["ON"] = 1] = "ON";
  BinaryLightingPV2[BinaryLightingPV2["WARN"] = 2] = "WARN";
  BinaryLightingPV2[BinaryLightingPV2["WARN_OFF"] = 3] = "WARN_OFF";
  BinaryLightingPV2[BinaryLightingPV2["WARN_RELINQUISH"] = 4] = "WARN_RELINQUISH";
  BinaryLightingPV2[BinaryLightingPV2["STOP"] = 5] = "STOP";
  return BinaryLightingPV2;
})(BinaryLightingPV || {});
var BinaryPV = /* @__PURE__ */ ((BinaryPV2) => {
  BinaryPV2[BinaryPV2["INACTIVE"] = 0] = "INACTIVE";
  BinaryPV2[BinaryPV2["ACTIVE"] = 1] = "ACTIVE";
  return BinaryPV2;
})(BinaryPV || {});
var DeviceStatus = /* @__PURE__ */ ((DeviceStatus2) => {
  DeviceStatus2[DeviceStatus2["OPERATIONAL"] = 0] = "OPERATIONAL";
  DeviceStatus2[DeviceStatus2["OPERATIONAL_READ_ONLY"] = 1] = "OPERATIONAL_READ_ONLY";
  DeviceStatus2[DeviceStatus2["DOWNLOAD_REQUIRED"] = 2] = "DOWNLOAD_REQUIRED";
  DeviceStatus2[DeviceStatus2["DOWNLOAD_IN_PROGRESS"] = 3] = "DOWNLOAD_IN_PROGRESS";
  DeviceStatus2[DeviceStatus2["NON_OPERATIONAL"] = 4] = "NON_OPERATIONAL";
  DeviceStatus2[DeviceStatus2["BACKUP_IN_PROGRESS"] = 5] = "BACKUP_IN_PROGRESS";
  return DeviceStatus2;
})(DeviceStatus || {});
var DoorAlarmState = /* @__PURE__ */ ((DoorAlarmState2) => {
  DoorAlarmState2[DoorAlarmState2["NORMAL"] = 0] = "NORMAL";
  DoorAlarmState2[DoorAlarmState2["ALARM"] = 1] = "ALARM";
  DoorAlarmState2[DoorAlarmState2["DOOR_OPEN_TOO_LONG"] = 2] = "DOOR_OPEN_TOO_LONG";
  DoorAlarmState2[DoorAlarmState2["FORCED_OPEN"] = 3] = "FORCED_OPEN";
  DoorAlarmState2[DoorAlarmState2["TAMPER"] = 4] = "TAMPER";
  DoorAlarmState2[DoorAlarmState2["DOOR_FAULT"] = 5] = "DOOR_FAULT";
  DoorAlarmState2[DoorAlarmState2["LOCK_DOWN"] = 6] = "LOCK_DOWN";
  DoorAlarmState2[DoorAlarmState2["FREE_ACCESS"] = 7] = "FREE_ACCESS";
  DoorAlarmState2[DoorAlarmState2["EGRESS_OPEN"] = 8] = "EGRESS_OPEN";
  return DoorAlarmState2;
})(DoorAlarmState || {});
var DoorSecuredStatus = /* @__PURE__ */ ((DoorSecuredStatus2) => {
  DoorSecuredStatus2[DoorSecuredStatus2["SECURED"] = 0] = "SECURED";
  DoorSecuredStatus2[DoorSecuredStatus2["UNSECURED"] = 1] = "UNSECURED";
  DoorSecuredStatus2[DoorSecuredStatus2["UNKNOWN"] = 2] = "UNKNOWN";
  return DoorSecuredStatus2;
})(DoorSecuredStatus || {});
var DoorStatus = /* @__PURE__ */ ((DoorStatus2) => {
  DoorStatus2[DoorStatus2["CLOSED"] = 0] = "CLOSED";
  DoorStatus2[DoorStatus2["OPENED"] = 1] = "OPENED";
  DoorStatus2[DoorStatus2["UNKNOWN"] = 2] = "UNKNOWN";
  DoorStatus2[DoorStatus2["DOOR_FAULT"] = 3] = "DOOR_FAULT";
  DoorStatus2[DoorStatus2["UNUSED"] = 4] = "UNUSED";
  DoorStatus2[DoorStatus2["NONE"] = 5] = "NONE";
  DoorStatus2[DoorStatus2["CLOSING"] = 6] = "CLOSING";
  DoorStatus2[DoorStatus2["OPENING"] = 7] = "OPENING";
  DoorStatus2[DoorStatus2["SAFETY_LOCKED"] = 8] = "SAFETY_LOCKED";
  DoorStatus2[DoorStatus2["LIMITED_OPENED"] = 9] = "LIMITED_OPENED";
  return DoorStatus2;
})(DoorStatus || {});
var DoorValue = /* @__PURE__ */ ((DoorValue2) => {
  DoorValue2[DoorValue2["LOCK"] = 0] = "LOCK";
  DoorValue2[DoorValue2["UNLOCK"] = 1] = "UNLOCK";
  DoorValue2[DoorValue2["PULSE_UNLOCK"] = 2] = "PULSE_UNLOCK";
  DoorValue2[DoorValue2["EXTENDED_PULSE_UNLOCK"] = 3] = "EXTENDED_PULSE_UNLOCK";
  return DoorValue2;
})(DoorValue || {});
var EngineeringUnits = /* @__PURE__ */ ((EngineeringUnits2) => {
  EngineeringUnits2[EngineeringUnits2["METERS_PER_SECOND_PER_SECOND"] = 166] = "METERS_PER_SECOND_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["SQUARE_METERS"] = 0] = "SQUARE_METERS";
  EngineeringUnits2[EngineeringUnits2["SQUARE_CENTIMETERS"] = 116] = "SQUARE_CENTIMETERS";
  EngineeringUnits2[EngineeringUnits2["SQUARE_FEET"] = 1] = "SQUARE_FEET";
  EngineeringUnits2[EngineeringUnits2["SQUARE_INCHES"] = 115] = "SQUARE_INCHES";
  EngineeringUnits2[EngineeringUnits2["CURRENCY1"] = 105] = "CURRENCY1";
  EngineeringUnits2[EngineeringUnits2["CURRENCY2"] = 106] = "CURRENCY2";
  EngineeringUnits2[EngineeringUnits2["CURRENCY3"] = 107] = "CURRENCY3";
  EngineeringUnits2[EngineeringUnits2["CURRENCY4"] = 108] = "CURRENCY4";
  EngineeringUnits2[EngineeringUnits2["CURRENCY5"] = 109] = "CURRENCY5";
  EngineeringUnits2[EngineeringUnits2["CURRENCY6"] = 110] = "CURRENCY6";
  EngineeringUnits2[EngineeringUnits2["CURRENCY7"] = 111] = "CURRENCY7";
  EngineeringUnits2[EngineeringUnits2["CURRENCY8"] = 112] = "CURRENCY8";
  EngineeringUnits2[EngineeringUnits2["CURRENCY9"] = 113] = "CURRENCY9";
  EngineeringUnits2[EngineeringUnits2["CURRENCY10"] = 114] = "CURRENCY10";
  EngineeringUnits2[EngineeringUnits2["MILLIAMPERES"] = 2] = "MILLIAMPERES";
  EngineeringUnits2[EngineeringUnits2["AMPERES"] = 3] = "AMPERES";
  EngineeringUnits2[EngineeringUnits2["AMPERES_PER_METER"] = 167] = "AMPERES_PER_METER";
  EngineeringUnits2[EngineeringUnits2["AMPERES_PER_SQUARE_METER"] = 168] = "AMPERES_PER_SQUARE_METER";
  EngineeringUnits2[EngineeringUnits2["AMPERE_SQUARE_METERS"] = 169] = "AMPERE_SQUARE_METERS";
  EngineeringUnits2[EngineeringUnits2["DECIBELS"] = 199] = "DECIBELS";
  EngineeringUnits2[EngineeringUnits2["DECIBELS_MILLIVOLT"] = 200] = "DECIBELS_MILLIVOLT";
  EngineeringUnits2[EngineeringUnits2["DECIBELS_VOLT"] = 201] = "DECIBELS_VOLT";
  EngineeringUnits2[EngineeringUnits2["FARADS"] = 170] = "FARADS";
  EngineeringUnits2[EngineeringUnits2["HENRYS"] = 171] = "HENRYS";
  EngineeringUnits2[EngineeringUnits2["OHMS"] = 4] = "OHMS";
  EngineeringUnits2[EngineeringUnits2["OHM_METER_SQUARED_PER_METER"] = 237] = "OHM_METER_SQUARED_PER_METER";
  EngineeringUnits2[EngineeringUnits2["OHM_METERS"] = 172] = "OHM_METERS";
  EngineeringUnits2[EngineeringUnits2["MILLIOHMS"] = 145] = "MILLIOHMS";
  EngineeringUnits2[EngineeringUnits2["KILOHMS"] = 122] = "KILOHMS";
  EngineeringUnits2[EngineeringUnits2["MEGOHMS"] = 123] = "MEGOHMS";
  EngineeringUnits2[EngineeringUnits2["MICROSIEMENS"] = 190] = "MICROSIEMENS";
  EngineeringUnits2[EngineeringUnits2["MILLISIEMENS"] = 202] = "MILLISIEMENS";
  EngineeringUnits2[EngineeringUnits2["SIEMENS"] = 173] = "SIEMENS";
  EngineeringUnits2[EngineeringUnits2["SIEMENS_PER_METER"] = 174] = "SIEMENS_PER_METER";
  EngineeringUnits2[EngineeringUnits2["TESLAS"] = 175] = "TESLAS";
  EngineeringUnits2[EngineeringUnits2["VOLTS"] = 5] = "VOLTS";
  EngineeringUnits2[EngineeringUnits2["MILLIVOLTS"] = 124] = "MILLIVOLTS";
  EngineeringUnits2[EngineeringUnits2["KILOVOLTS"] = 6] = "KILOVOLTS";
  EngineeringUnits2[EngineeringUnits2["MEGAVOLTS"] = 7] = "MEGAVOLTS";
  EngineeringUnits2[EngineeringUnits2["VOLT_AMPERES"] = 8] = "VOLT_AMPERES";
  EngineeringUnits2[EngineeringUnits2["KILOVOLT_AMPERES"] = 9] = "KILOVOLT_AMPERES";
  EngineeringUnits2[EngineeringUnits2["MEGAVOLT_AMPERES"] = 10] = "MEGAVOLT_AMPERES";
  EngineeringUnits2[EngineeringUnits2["VOLT_AMPERES_REACTIVE"] = 11] = "VOLT_AMPERES_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["KILOVOLT_AMPERES_REACTIVE"] = 12] = "KILOVOLT_AMPERES_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["MEGAVOLT_AMPERES_REACTIVE"] = 13] = "MEGAVOLT_AMPERES_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["VOLTS_PER_DEGREE_KELVIN"] = 176] = "VOLTS_PER_DEGREE_KELVIN";
  EngineeringUnits2[EngineeringUnits2["VOLTS_PER_METER"] = 177] = "VOLTS_PER_METER";
  EngineeringUnits2[EngineeringUnits2["DEGREES_PHASE"] = 14] = "DEGREES_PHASE";
  EngineeringUnits2[EngineeringUnits2["POWER_FACTOR"] = 15] = "POWER_FACTOR";
  EngineeringUnits2[EngineeringUnits2["WEBERS"] = 178] = "WEBERS";
  EngineeringUnits2[EngineeringUnits2["AMPERE_SECONDS"] = 238] = "AMPERE_SECONDS";
  EngineeringUnits2[EngineeringUnits2["VOLT_AMPERE_HOURS"] = 239] = "VOLT_AMPERE_HOURS";
  EngineeringUnits2[EngineeringUnits2["KILOVOLT_AMPERE_HOURS"] = 240] = "KILOVOLT_AMPERE_HOURS";
  EngineeringUnits2[EngineeringUnits2["MEGAVOLT_AMPERE_HOURS"] = 241] = "MEGAVOLT_AMPERE_HOURS";
  EngineeringUnits2[EngineeringUnits2["VOLT_AMPERE_HOURS_REACTIVE"] = 242] = "VOLT_AMPERE_HOURS_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["KILOVOLT_AMPERE_HOURS_REACTIVE"] = 243] = "KILOVOLT_AMPERE_HOURS_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["MEGAVOLT_AMPERE_HOURS_REACTIVE"] = 244] = "MEGAVOLT_AMPERE_HOURS_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["VOLT_SQUARE_HOURS"] = 245] = "VOLT_SQUARE_HOURS";
  EngineeringUnits2[EngineeringUnits2["AMPERE_SQUARE_HOURS"] = 246] = "AMPERE_SQUARE_HOURS";
  EngineeringUnits2[EngineeringUnits2["JOULES"] = 16] = "JOULES";
  EngineeringUnits2[EngineeringUnits2["KILOJOULES"] = 17] = "KILOJOULES";
  EngineeringUnits2[EngineeringUnits2["KILOJOULES_PER_KILOGRAM"] = 125] = "KILOJOULES_PER_KILOGRAM";
  EngineeringUnits2[EngineeringUnits2["MEGAJOULES"] = 126] = "MEGAJOULES";
  EngineeringUnits2[EngineeringUnits2["WATT_HOURS"] = 18] = "WATT_HOURS";
  EngineeringUnits2[EngineeringUnits2["KILOWATT_HOURS"] = 19] = "KILOWATT_HOURS";
  EngineeringUnits2[EngineeringUnits2["MEGAWATT_HOURS"] = 146] = "MEGAWATT_HOURS";
  EngineeringUnits2[EngineeringUnits2["WATT_HOURS_REACTIVE"] = 203] = "WATT_HOURS_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["KILOWATT_HOURS_REACTIVE"] = 204] = "KILOWATT_HOURS_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["MEGAWATT_HOURS_REACTIVE"] = 205] = "MEGAWATT_HOURS_REACTIVE";
  EngineeringUnits2[EngineeringUnits2["BTUS"] = 20] = "BTUS";
  EngineeringUnits2[EngineeringUnits2["KILO_BTUS"] = 147] = "KILO_BTUS";
  EngineeringUnits2[EngineeringUnits2["MEGA_BTUS"] = 148] = "MEGA_BTUS";
  EngineeringUnits2[EngineeringUnits2["THERMS"] = 21] = "THERMS";
  EngineeringUnits2[EngineeringUnits2["TON_HOURS"] = 22] = "TON_HOURS";
  EngineeringUnits2[EngineeringUnits2["JOULES_PER_KILOGRAM_DRY_AIR"] = 23] = "JOULES_PER_KILOGRAM_DRY_AIR";
  EngineeringUnits2[EngineeringUnits2["KILOJOULES_PER_KILOGRAM_DRY_AIR"] = 149] = "KILOJOULES_PER_KILOGRAM_DRY_AIR";
  EngineeringUnits2[EngineeringUnits2["MEGAJOULES_PER_KILOGRAM_DRY_AIR"] = 150] = "MEGAJOULES_PER_KILOGRAM_DRY_AIR";
  EngineeringUnits2[EngineeringUnits2["BTUS_PER_POUND_DRY_AIR"] = 24] = "BTUS_PER_POUND_DRY_AIR";
  EngineeringUnits2[EngineeringUnits2["BTUS_PER_POUND"] = 117] = "BTUS_PER_POUND";
  EngineeringUnits2[EngineeringUnits2["JOULES_PER_DEGREE_KELVIN"] = 127] = "JOULES_PER_DEGREE_KELVIN";
  EngineeringUnits2[EngineeringUnits2["KILOJOULES_PER_DEGREE_KELVIN"] = 151] = "KILOJOULES_PER_DEGREE_KELVIN";
  EngineeringUnits2[EngineeringUnits2["MEGAJOULES_PER_DEGREE_KELVIN"] = 152] = "MEGAJOULES_PER_DEGREE_KELVIN";
  EngineeringUnits2[EngineeringUnits2["JOULES_PER_KILOGRAM_DEGREE_KELVIN"] = 128] = "JOULES_PER_KILOGRAM_DEGREE_KELVIN";
  EngineeringUnits2[EngineeringUnits2["NEWTON"] = 153] = "NEWTON";
  EngineeringUnits2[EngineeringUnits2["CYCLES_PER_HOUR"] = 25] = "CYCLES_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["CYCLES_PER_MINUTE"] = 26] = "CYCLES_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["HERTZ"] = 27] = "HERTZ";
  EngineeringUnits2[EngineeringUnits2["KILOHERTZ"] = 129] = "KILOHERTZ";
  EngineeringUnits2[EngineeringUnits2["MEGAHERTZ"] = 130] = "MEGAHERTZ";
  EngineeringUnits2[EngineeringUnits2["PER_HOUR"] = 131] = "PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR"] = 28] = "GRAMS_OF_WATER_PER_KILOGRAM_DRY_AIR";
  EngineeringUnits2[EngineeringUnits2["PERCENT_RELATIVE_HUMIDITY"] = 29] = "PERCENT_RELATIVE_HUMIDITY";
  EngineeringUnits2[EngineeringUnits2["MICROMETERS"] = 194] = "MICROMETERS";
  EngineeringUnits2[EngineeringUnits2["MILLIMETERS"] = 30] = "MILLIMETERS";
  EngineeringUnits2[EngineeringUnits2["CENTIMETERS"] = 118] = "CENTIMETERS";
  EngineeringUnits2[EngineeringUnits2["KILOMETERS"] = 193] = "KILOMETERS";
  EngineeringUnits2[EngineeringUnits2["METERS"] = 31] = "METERS";
  EngineeringUnits2[EngineeringUnits2["INCHES"] = 32] = "INCHES";
  EngineeringUnits2[EngineeringUnits2["FEET"] = 33] = "FEET";
  EngineeringUnits2[EngineeringUnits2["CANDELAS"] = 179] = "CANDELAS";
  EngineeringUnits2[EngineeringUnits2["CANDELAS_PER_SQUARE_METER"] = 180] = "CANDELAS_PER_SQUARE_METER";
  EngineeringUnits2[EngineeringUnits2["WATTS_PER_SQUARE_FOOT"] = 34] = "WATTS_PER_SQUARE_FOOT";
  EngineeringUnits2[EngineeringUnits2["WATTS_PER_SQUARE_METER"] = 35] = "WATTS_PER_SQUARE_METER";
  EngineeringUnits2[EngineeringUnits2["LUMENS"] = 36] = "LUMENS";
  EngineeringUnits2[EngineeringUnits2["LUXES"] = 37] = "LUXES";
  EngineeringUnits2[EngineeringUnits2["FOOT_CANDLES"] = 38] = "FOOT_CANDLES";
  EngineeringUnits2[EngineeringUnits2["MILLIGRAMS"] = 196] = "MILLIGRAMS";
  EngineeringUnits2[EngineeringUnits2["GRAMS"] = 195] = "GRAMS";
  EngineeringUnits2[EngineeringUnits2["KILOGRAMS"] = 39] = "KILOGRAMS";
  EngineeringUnits2[EngineeringUnits2["POUNDS_MASS"] = 40] = "POUNDS_MASS";
  EngineeringUnits2[EngineeringUnits2["TONS"] = 41] = "TONS";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_SECOND"] = 154] = "GRAMS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_MINUTE"] = 155] = "GRAMS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["KILOGRAMS_PER_SECOND"] = 42] = "KILOGRAMS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["KILOGRAMS_PER_MINUTE"] = 43] = "KILOGRAMS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["KILOGRAMS_PER_HOUR"] = 44] = "KILOGRAMS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["POUNDS_MASS_PER_SECOND"] = 119] = "POUNDS_MASS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["POUNDS_MASS_PER_MINUTE"] = 45] = "POUNDS_MASS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["POUNDS_MASS_PER_HOUR"] = 46] = "POUNDS_MASS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["TONS_PER_HOUR"] = 156] = "TONS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["MILLIWATTS"] = 132] = "MILLIWATTS";
  EngineeringUnits2[EngineeringUnits2["WATTS"] = 47] = "WATTS";
  EngineeringUnits2[EngineeringUnits2["KILOWATTS"] = 48] = "KILOWATTS";
  EngineeringUnits2[EngineeringUnits2["MEGAWATTS"] = 49] = "MEGAWATTS";
  EngineeringUnits2[EngineeringUnits2["BTUS_PER_HOUR"] = 50] = "BTUS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["KILO_BTUS_PER_HOUR"] = 157] = "KILO_BTUS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["JOULE_PER_HOURS"] = 247] = "JOULE_PER_HOURS";
  EngineeringUnits2[EngineeringUnits2["HORSEPOWER"] = 51] = "HORSEPOWER";
  EngineeringUnits2[EngineeringUnits2["TONS_REFRIGERATION"] = 52] = "TONS_REFRIGERATION";
  EngineeringUnits2[EngineeringUnits2["PASCALS"] = 53] = "PASCALS";
  EngineeringUnits2[EngineeringUnits2["HECTOPASCALS"] = 133] = "HECTOPASCALS";
  EngineeringUnits2[EngineeringUnits2["KILOPASCALS"] = 54] = "KILOPASCALS";
  EngineeringUnits2[EngineeringUnits2["MILLIBARS"] = 134] = "MILLIBARS";
  EngineeringUnits2[EngineeringUnits2["BARS"] = 55] = "BARS";
  EngineeringUnits2[EngineeringUnits2["POUNDS_FORCE_PER_SQUARE_INCH"] = 56] = "POUNDS_FORCE_PER_SQUARE_INCH";
  EngineeringUnits2[EngineeringUnits2["MILLIMETERS_OF_WATER"] = 206] = "MILLIMETERS_OF_WATER";
  EngineeringUnits2[EngineeringUnits2["CENTIMETERS_OF_WATER"] = 57] = "CENTIMETERS_OF_WATER";
  EngineeringUnits2[EngineeringUnits2["INCHES_OF_WATER"] = 58] = "INCHES_OF_WATER";
  EngineeringUnits2[EngineeringUnits2["MILLIMETERS_OF_MERCURY"] = 59] = "MILLIMETERS_OF_MERCURY";
  EngineeringUnits2[EngineeringUnits2["CENTIMETERS_OF_MERCURY"] = 60] = "CENTIMETERS_OF_MERCURY";
  EngineeringUnits2[EngineeringUnits2["INCHES_OF_MERCURY"] = 61] = "INCHES_OF_MERCURY";
  EngineeringUnits2[EngineeringUnits2["DEGREES_CELSIUS"] = 62] = "DEGREES_CELSIUS";
  EngineeringUnits2[EngineeringUnits2["DEGREES_KELVIN"] = 63] = "DEGREES_KELVIN";
  EngineeringUnits2[EngineeringUnits2["DEGREES_KELVIN_PER_HOUR"] = 181] = "DEGREES_KELVIN_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["DEGREES_KELVIN_PER_MINUTE"] = 182] = "DEGREES_KELVIN_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["DEGREES_FAHRENHEIT"] = 64] = "DEGREES_FAHRENHEIT";
  EngineeringUnits2[EngineeringUnits2["DEGREE_DAYS_CELSIUS"] = 65] = "DEGREE_DAYS_CELSIUS";
  EngineeringUnits2[EngineeringUnits2["DEGREE_DAYS_FAHRENHEIT"] = 66] = "DEGREE_DAYS_FAHRENHEIT";
  EngineeringUnits2[EngineeringUnits2["DELTA_DEGREES_FAHRENHEIT"] = 120] = "DELTA_DEGREES_FAHRENHEIT";
  EngineeringUnits2[EngineeringUnits2["DELTA_DEGREES_KELVIN"] = 121] = "DELTA_DEGREES_KELVIN";
  EngineeringUnits2[EngineeringUnits2["YEARS"] = 67] = "YEARS";
  EngineeringUnits2[EngineeringUnits2["MONTHS"] = 68] = "MONTHS";
  EngineeringUnits2[EngineeringUnits2["WEEKS"] = 69] = "WEEKS";
  EngineeringUnits2[EngineeringUnits2["DAYS"] = 70] = "DAYS";
  EngineeringUnits2[EngineeringUnits2["HOURS"] = 71] = "HOURS";
  EngineeringUnits2[EngineeringUnits2["MINUTES"] = 72] = "MINUTES";
  EngineeringUnits2[EngineeringUnits2["SECONDS"] = 73] = "SECONDS";
  EngineeringUnits2[EngineeringUnits2["HUNDREDTHS_SECONDS"] = 158] = "HUNDREDTHS_SECONDS";
  EngineeringUnits2[EngineeringUnits2["MILLISECONDS"] = 159] = "MILLISECONDS";
  EngineeringUnits2[EngineeringUnits2["NEWTON_METERS"] = 160] = "NEWTON_METERS";
  EngineeringUnits2[EngineeringUnits2["MILLIMETERS_PER_SECOND"] = 161] = "MILLIMETERS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["MILLIMETERS_PER_MINUTE"] = 162] = "MILLIMETERS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["METERS_PER_SECOND"] = 74] = "METERS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["METERS_PER_MINUTE"] = 163] = "METERS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["METERS_PER_HOUR"] = 164] = "METERS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["KILOMETERS_PER_HOUR"] = 75] = "KILOMETERS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["FEET_PER_SECOND"] = 76] = "FEET_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["FEET_PER_MINUTE"] = 77] = "FEET_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["MILES_PER_HOUR"] = 78] = "MILES_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["CUBIC_FEET"] = 79] = "CUBIC_FEET";
  EngineeringUnits2[EngineeringUnits2["CUBIC_METERS"] = 80] = "CUBIC_METERS";
  EngineeringUnits2[EngineeringUnits2["IMPERIAL_GALLONS"] = 81] = "IMPERIAL_GALLONS";
  EngineeringUnits2[EngineeringUnits2["MILLILITERS"] = 197] = "MILLILITERS";
  EngineeringUnits2[EngineeringUnits2["LITERS"] = 82] = "LITERS";
  EngineeringUnits2[EngineeringUnits2["US_GALLONS"] = 83] = "US_GALLONS";
  EngineeringUnits2[EngineeringUnits2["CUBIC_FEET_PER_SECOND"] = 142] = "CUBIC_FEET_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["CUBIC_FEET_PER_MINUTE"] = 84] = "CUBIC_FEET_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["MILLION_STANDARD_CUBIC_FEET_PER_MINUTE"] = 254] = "MILLION_STANDARD_CUBIC_FEET_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["CUBIC_FEET_PER_HOUR"] = 191] = "CUBIC_FEET_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["CUBIC_FEET_PER_DAY"] = 248] = "CUBIC_FEET_PER_DAY";
  EngineeringUnits2[EngineeringUnits2["STANDARD_CUBIC_FEET_PER_DAY"] = 47808] = "STANDARD_CUBIC_FEET_PER_DAY";
  EngineeringUnits2[EngineeringUnits2["MILLION_STANDARD_CUBIC_FEET_PER_DAY"] = 47809] = "MILLION_STANDARD_CUBIC_FEET_PER_DAY";
  EngineeringUnits2[EngineeringUnits2["THOUSAND_CUBIC_FEET_PER_DAY"] = 47810] = "THOUSAND_CUBIC_FEET_PER_DAY";
  EngineeringUnits2[EngineeringUnits2["THOUSAND_STANDARD_CUBIC_FEET_PER_DAY"] = 47811] = "THOUSAND_STANDARD_CUBIC_FEET_PER_DAY";
  EngineeringUnits2[EngineeringUnits2["POUNDS_MASS_PER_DAY"] = 47812] = "POUNDS_MASS_PER_DAY";
  EngineeringUnits2[EngineeringUnits2["CUBIC_METERS_PER_SECOND"] = 85] = "CUBIC_METERS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["CUBIC_METERS_PER_MINUTE"] = 165] = "CUBIC_METERS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["CUBIC_METERS_PER_HOUR"] = 135] = "CUBIC_METERS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["CUBIC_METERS_PER_DAY"] = 249] = "CUBIC_METERS_PER_DAY";
  EngineeringUnits2[EngineeringUnits2["IMPERIAL_GALLONS_PER_MINUTE"] = 86] = "IMPERIAL_GALLONS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["MILLILITERS_PER_SECOND"] = 198] = "MILLILITERS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["LITERS_PER_SECOND"] = 87] = "LITERS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["LITERS_PER_MINUTE"] = 88] = "LITERS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["LITERS_PER_HOUR"] = 136] = "LITERS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["US_GALLONS_PER_MINUTE"] = 89] = "US_GALLONS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["US_GALLONS_PER_HOUR"] = 192] = "US_GALLONS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["DEGREES_ANGULAR"] = 90] = "DEGREES_ANGULAR";
  EngineeringUnits2[EngineeringUnits2["DEGREES_CELSIUS_PER_HOUR"] = 91] = "DEGREES_CELSIUS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["DEGREES_CELSIUS_PER_MINUTE"] = 92] = "DEGREES_CELSIUS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["DEGREES_FAHRENHEIT_PER_HOUR"] = 93] = "DEGREES_FAHRENHEIT_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["DEGREES_FAHRENHEIT_PER_MINUTE"] = 94] = "DEGREES_FAHRENHEIT_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["JOULE_SECONDS"] = 183] = "JOULE_SECONDS";
  EngineeringUnits2[EngineeringUnits2["KILOGRAMS_PER_CUBIC_METER"] = 186] = "KILOGRAMS_PER_CUBIC_METER";
  EngineeringUnits2[EngineeringUnits2["KILOWATT_HOURS_PER_SQUARE_METER"] = 137] = "KILOWATT_HOURS_PER_SQUARE_METER";
  EngineeringUnits2[EngineeringUnits2["KILOWATT_HOURS_PER_SQUARE_FOOT"] = 138] = "KILOWATT_HOURS_PER_SQUARE_FOOT";
  EngineeringUnits2[EngineeringUnits2["WATT_HOURS_PER_CUBIC_METER"] = 250] = "WATT_HOURS_PER_CUBIC_METER";
  EngineeringUnits2[EngineeringUnits2["JOULES_PER_CUBIC_METER"] = 251] = "JOULES_PER_CUBIC_METER";
  EngineeringUnits2[EngineeringUnits2["MEGAJOULES_PER_SQUARE_METER"] = 139] = "MEGAJOULES_PER_SQUARE_METER";
  EngineeringUnits2[EngineeringUnits2["MEGAJOULES_PER_SQUARE_FOOT"] = 140] = "MEGAJOULES_PER_SQUARE_FOOT";
  EngineeringUnits2[EngineeringUnits2["MOLE_PERCENT"] = 252] = "MOLE_PERCENT";
  EngineeringUnits2[EngineeringUnits2["NO_UNITS"] = 95] = "NO_UNITS";
  EngineeringUnits2[EngineeringUnits2["NEWTON_SECONDS"] = 187] = "NEWTON_SECONDS";
  EngineeringUnits2[EngineeringUnits2["NEWTONS_PER_METER"] = 188] = "NEWTONS_PER_METER";
  EngineeringUnits2[EngineeringUnits2["PARTS_PER_MILLION"] = 96] = "PARTS_PER_MILLION";
  EngineeringUnits2[EngineeringUnits2["PARTS_PER_BILLION"] = 97] = "PARTS_PER_BILLION";
  EngineeringUnits2[EngineeringUnits2["PASCAL_SECONDS"] = 253] = "PASCAL_SECONDS";
  EngineeringUnits2[EngineeringUnits2["PERCENT"] = 98] = "PERCENT";
  EngineeringUnits2[EngineeringUnits2["PERCENT_OBSCURATION_PER_FOOT"] = 143] = "PERCENT_OBSCURATION_PER_FOOT";
  EngineeringUnits2[EngineeringUnits2["PERCENT_OBSCURATION_PER_METER"] = 144] = "PERCENT_OBSCURATION_PER_METER";
  EngineeringUnits2[EngineeringUnits2["PERCENT_PER_SECOND"] = 99] = "PERCENT_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["PER_MINUTE"] = 100] = "PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["PER_SECOND"] = 101] = "PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["PSI_PER_DEGREE_FAHRENHEIT"] = 102] = "PSI_PER_DEGREE_FAHRENHEIT";
  EngineeringUnits2[EngineeringUnits2["RADIANS"] = 103] = "RADIANS";
  EngineeringUnits2[EngineeringUnits2["RADIANS_PER_SECOND"] = 184] = "RADIANS_PER_SECOND";
  EngineeringUnits2[EngineeringUnits2["REVOLUTIONS_PER_MINUTE"] = 104] = "REVOLUTIONS_PER_MINUTE";
  EngineeringUnits2[EngineeringUnits2["SQUARE_METERS_PER_NEWTON"] = 185] = "SQUARE_METERS_PER_NEWTON";
  EngineeringUnits2[EngineeringUnits2["WATTS_PER_METER_PER_DEGREE_KELVIN"] = 189] = "WATTS_PER_METER_PER_DEGREE_KELVIN";
  EngineeringUnits2[EngineeringUnits2["WATTS_PER_SQUARE_METER_DEGREE_KELVIN"] = 141] = "WATTS_PER_SQUARE_METER_DEGREE_KELVIN";
  EngineeringUnits2[EngineeringUnits2["PER_MILLE"] = 207] = "PER_MILLE";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_GRAM"] = 208] = "GRAMS_PER_GRAM";
  EngineeringUnits2[EngineeringUnits2["KILOGRAMS_PER_KILOGRAM"] = 209] = "KILOGRAMS_PER_KILOGRAM";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_KILOGRAM"] = 210] = "GRAMS_PER_KILOGRAM";
  EngineeringUnits2[EngineeringUnits2["MILLIGRAMS_PER_GRAM"] = 211] = "MILLIGRAMS_PER_GRAM";
  EngineeringUnits2[EngineeringUnits2["MILLIGRAMS_PER_KILOGRAM"] = 212] = "MILLIGRAMS_PER_KILOGRAM";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_MILLILITER"] = 213] = "GRAMS_PER_MILLILITER";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_LITER"] = 214] = "GRAMS_PER_LITER";
  EngineeringUnits2[EngineeringUnits2["MILLIGRAMS_PER_LITER"] = 215] = "MILLIGRAMS_PER_LITER";
  EngineeringUnits2[EngineeringUnits2["MICROGRAMS_PER_LITER"] = 216] = "MICROGRAMS_PER_LITER";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_CUBIC_METER"] = 217] = "GRAMS_PER_CUBIC_METER";
  EngineeringUnits2[EngineeringUnits2["MILLIGRAMS_PER_CUBIC_METER"] = 218] = "MILLIGRAMS_PER_CUBIC_METER";
  EngineeringUnits2[EngineeringUnits2["MICROGRAMS_PER_CUBIC_METER"] = 219] = "MICROGRAMS_PER_CUBIC_METER";
  EngineeringUnits2[EngineeringUnits2["NANOGRAMS_PER_CUBIC_METER"] = 220] = "NANOGRAMS_PER_CUBIC_METER";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_CUBIC_CENTIMETER"] = 221] = "GRAMS_PER_CUBIC_CENTIMETER";
  EngineeringUnits2[EngineeringUnits2["BECQUERELS"] = 222] = "BECQUERELS";
  EngineeringUnits2[EngineeringUnits2["KILOBECQUERELS"] = 223] = "KILOBECQUERELS";
  EngineeringUnits2[EngineeringUnits2["MEGABECQUERELS"] = 224] = "MEGABECQUERELS";
  EngineeringUnits2[EngineeringUnits2["GRAY"] = 225] = "GRAY";
  EngineeringUnits2[EngineeringUnits2["MILLIGRAY"] = 226] = "MILLIGRAY";
  EngineeringUnits2[EngineeringUnits2["MICROGRAY"] = 227] = "MICROGRAY";
  EngineeringUnits2[EngineeringUnits2["SIEVERTS"] = 228] = "SIEVERTS";
  EngineeringUnits2[EngineeringUnits2["MILLISIEVERTS"] = 229] = "MILLISIEVERTS";
  EngineeringUnits2[EngineeringUnits2["MICROSIEVERTS"] = 230] = "MICROSIEVERTS";
  EngineeringUnits2[EngineeringUnits2["MICROSIEVERTS_PER_HOUR"] = 231] = "MICROSIEVERTS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["MILLIREMS"] = 47814] = "MILLIREMS";
  EngineeringUnits2[EngineeringUnits2["MILLIREMS_PER_HOUR"] = 47815] = "MILLIREMS_PER_HOUR";
  EngineeringUnits2[EngineeringUnits2["DECIBELS_A"] = 232] = "DECIBELS_A";
  EngineeringUnits2[EngineeringUnits2["NEPHELOMETRIC_TURBIDITY_UNIT"] = 233] = "NEPHELOMETRIC_TURBIDITY_UNIT";
  EngineeringUnits2[EngineeringUnits2["PH"] = 234] = "PH";
  EngineeringUnits2[EngineeringUnits2["GRAMS_PER_SQUARE_METER"] = 235] = "GRAMS_PER_SQUARE_METER";
  EngineeringUnits2[EngineeringUnits2["MINUTES_PER_DEGREE_KELVIN"] = 236] = "MINUTES_PER_DEGREE_KELVIN";
  return EngineeringUnits2;
})(EngineeringUnits || {});
var EscalatorFault = /* @__PURE__ */ ((EscalatorFault2) => {
  EscalatorFault2[EscalatorFault2["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
  EscalatorFault2[EscalatorFault2["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
  EscalatorFault2[EscalatorFault2["MECHANICAL_COMPONENT_FAULT"] = 2] = "MECHANICAL_COMPONENT_FAULT";
  EscalatorFault2[EscalatorFault2["OVERSPEED_FAULT"] = 3] = "OVERSPEED_FAULT";
  EscalatorFault2[EscalatorFault2["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
  EscalatorFault2[EscalatorFault2["SAFETY_DEVICE_FAULT"] = 5] = "SAFETY_DEVICE_FAULT";
  EscalatorFault2[EscalatorFault2["CONTROLLER_SUPPLY_FAULT"] = 6] = "CONTROLLER_SUPPLY_FAULT";
  EscalatorFault2[EscalatorFault2["DRIVE_TEMPERATURE_EXCEEDED"] = 7] = "DRIVE_TEMPERATURE_EXCEEDED";
  EscalatorFault2[EscalatorFault2["COMB_PLATE_FAULT"] = 8] = "COMB_PLATE_FAULT";
  return EscalatorFault2;
})(EscalatorFault || {});
var EscalatorMode = /* @__PURE__ */ ((EscalatorMode2) => {
  EscalatorMode2[EscalatorMode2["UNKNOWN"] = 0] = "UNKNOWN";
  EscalatorMode2[EscalatorMode2["STOP"] = 1] = "STOP";
  EscalatorMode2[EscalatorMode2["UP"] = 2] = "UP";
  EscalatorMode2[EscalatorMode2["DOWN"] = 3] = "DOWN";
  EscalatorMode2[EscalatorMode2["INSPECTION"] = 4] = "INSPECTION";
  EscalatorMode2[EscalatorMode2["OUT_OF_SERVICE"] = 5] = "OUT_OF_SERVICE";
  return EscalatorMode2;
})(EscalatorMode || {});
var EscalatorOperationDirection = /* @__PURE__ */ ((EscalatorOperationDirection2) => {
  EscalatorOperationDirection2[EscalatorOperationDirection2["UNKNOWN"] = 0] = "UNKNOWN";
  EscalatorOperationDirection2[EscalatorOperationDirection2["STOPPED"] = 1] = "STOPPED";
  EscalatorOperationDirection2[EscalatorOperationDirection2["UP_RATED_SPEED"] = 2] = "UP_RATED_SPEED";
  EscalatorOperationDirection2[EscalatorOperationDirection2["UP_REDUCED_SPEED"] = 3] = "UP_REDUCED_SPEED";
  EscalatorOperationDirection2[EscalatorOperationDirection2["DOWN_RATED_SPEED"] = 4] = "DOWN_RATED_SPEED";
  EscalatorOperationDirection2[EscalatorOperationDirection2["DOWN_REDUCED_SPEED"] = 5] = "DOWN_REDUCED_SPEED";
  return EscalatorOperationDirection2;
})(EscalatorOperationDirection || {});
var EventState = /* @__PURE__ */ ((EventState2) => {
  EventState2[EventState2["NORMAL"] = 0] = "NORMAL";
  EventState2[EventState2["FAULT"] = 1] = "FAULT";
  EventState2[EventState2["OFFNORMAL"] = 2] = "OFFNORMAL";
  EventState2[EventState2["HIGH_LIMIT"] = 3] = "HIGH_LIMIT";
  EventState2[EventState2["LOW_LIMIT"] = 4] = "LOW_LIMIT";
  EventState2[EventState2["LIFE_SAFETY_ALARM"] = 5] = "LIFE_SAFETY_ALARM";
  return EventState2;
})(EventState || {});
var EventType = /* @__PURE__ */ ((EventType2) => {
  EventType2[EventType2["CHANGE_OF_BITSTRING"] = 0] = "CHANGE_OF_BITSTRING";
  EventType2[EventType2["CHANGE_OF_STATE"] = 1] = "CHANGE_OF_STATE";
  EventType2[EventType2["CHANGE_OF_VALUE"] = 2] = "CHANGE_OF_VALUE";
  EventType2[EventType2["COMMAND_FAILURE"] = 3] = "COMMAND_FAILURE";
  EventType2[EventType2["FLOATING_LIMIT"] = 4] = "FLOATING_LIMIT";
  EventType2[EventType2["OUT_OF_RANGE"] = 5] = "OUT_OF_RANGE";
  EventType2[EventType2["COMPLEX_EVENT_TYPE"] = 6] = "COMPLEX_EVENT_TYPE";
  EventType2[EventType2["CHANGE_OF_LIFE_SAFETY"] = 8] = "CHANGE_OF_LIFE_SAFETY";
  EventType2[EventType2["EXTENDED"] = 9] = "EXTENDED";
  EventType2[EventType2["BUFFER_READY"] = 10] = "BUFFER_READY";
  EventType2[EventType2["UNSIGNED_RANGE"] = 11] = "UNSIGNED_RANGE";
  EventType2[EventType2["ACCESS_EVENT"] = 13] = "ACCESS_EVENT";
  EventType2[EventType2["DOUBLE_OUT_OF_RANGE"] = 14] = "DOUBLE_OUT_OF_RANGE";
  EventType2[EventType2["SIGNED_OUT_OF_RANGE"] = 15] = "SIGNED_OUT_OF_RANGE";
  EventType2[EventType2["UNSIGNED_OUT_OF_RANGE"] = 16] = "UNSIGNED_OUT_OF_RANGE";
  EventType2[EventType2["CHANGE_OF_CHARACTERSTRING"] = 17] = "CHANGE_OF_CHARACTERSTRING";
  EventType2[EventType2["CHANGE_OF_STATUS_FLAGS"] = 18] = "CHANGE_OF_STATUS_FLAGS";
  EventType2[EventType2["CHANGE_OF_RELIABILITY"] = 19] = "CHANGE_OF_RELIABILITY";
  EventType2[EventType2["NONE"] = 20] = "NONE";
  EventType2[EventType2["CHANGE_OF_DISCRETE_VALUE"] = 21] = "CHANGE_OF_DISCRETE_VALUE";
  EventType2[EventType2["CHANGE_OF_TIMER"] = 22] = "CHANGE_OF_TIMER";
  return EventType2;
})(EventType || {});
var FaultType = /* @__PURE__ */ ((FaultType2) => {
  FaultType2[FaultType2["NONE"] = 0] = "NONE";
  FaultType2[FaultType2["FAULT_CHARACTERSTRING"] = 1] = "FAULT_CHARACTERSTRING";
  FaultType2[FaultType2["FAULT_EXTENDED"] = 2] = "FAULT_EXTENDED";
  FaultType2[FaultType2["FAULT_LIFE_SAFETY"] = 3] = "FAULT_LIFE_SAFETY";
  FaultType2[FaultType2["FAULT_STATE"] = 4] = "FAULT_STATE";
  FaultType2[FaultType2["FAULT_STATUS_FLAGS"] = 5] = "FAULT_STATUS_FLAGS";
  FaultType2[FaultType2["FAULT_OUT_OF_RANGE"] = 6] = "FAULT_OUT_OF_RANGE";
  FaultType2[FaultType2["FAULT_LISTED"] = 7] = "FAULT_LISTED";
  return FaultType2;
})(FaultType || {});
var FileAccessMethod = /* @__PURE__ */ ((FileAccessMethod2) => {
  FileAccessMethod2[FileAccessMethod2["RECORD_ACCESS"] = 0] = "RECORD_ACCESS";
  FileAccessMethod2[FileAccessMethod2["STREAM_ACCESS"] = 1] = "STREAM_ACCESS";
  return FileAccessMethod2;
})(FileAccessMethod || {});
var IPMode = /* @__PURE__ */ ((IPMode2) => {
  IPMode2[IPMode2["NORMAL"] = 0] = "NORMAL";
  IPMode2[IPMode2["FOREIGN"] = 1] = "FOREIGN";
  IPMode2[IPMode2["BBMD"] = 2] = "BBMD";
  return IPMode2;
})(IPMode || {});
var LifeSafetyMode = /* @__PURE__ */ ((LifeSafetyMode2) => {
  LifeSafetyMode2[LifeSafetyMode2["OFF"] = 0] = "OFF";
  LifeSafetyMode2[LifeSafetyMode2["ON"] = 1] = "ON";
  LifeSafetyMode2[LifeSafetyMode2["TEST"] = 2] = "TEST";
  LifeSafetyMode2[LifeSafetyMode2["MANNED"] = 3] = "MANNED";
  LifeSafetyMode2[LifeSafetyMode2["UNMANNED"] = 4] = "UNMANNED";
  LifeSafetyMode2[LifeSafetyMode2["ARMED"] = 5] = "ARMED";
  LifeSafetyMode2[LifeSafetyMode2["DISARMED"] = 6] = "DISARMED";
  LifeSafetyMode2[LifeSafetyMode2["PREARMED"] = 7] = "PREARMED";
  LifeSafetyMode2[LifeSafetyMode2["SLOW"] = 8] = "SLOW";
  LifeSafetyMode2[LifeSafetyMode2["FAST"] = 9] = "FAST";
  LifeSafetyMode2[LifeSafetyMode2["DISCONNECTED"] = 10] = "DISCONNECTED";
  LifeSafetyMode2[LifeSafetyMode2["ENABLED"] = 11] = "ENABLED";
  LifeSafetyMode2[LifeSafetyMode2["DISABLED"] = 12] = "DISABLED";
  LifeSafetyMode2[LifeSafetyMode2["AUTOMATIC_RELEASE_DISABLED"] = 13] = "AUTOMATIC_RELEASE_DISABLED";
  LifeSafetyMode2[LifeSafetyMode2["DEFAULT"] = 14] = "DEFAULT";
  return LifeSafetyMode2;
})(LifeSafetyMode || {});
var LifeSafetyOperation = /* @__PURE__ */ ((LifeSafetyOperation2) => {
  LifeSafetyOperation2[LifeSafetyOperation2["NONE"] = 0] = "NONE";
  LifeSafetyOperation2[LifeSafetyOperation2["SILENCE"] = 1] = "SILENCE";
  LifeSafetyOperation2[LifeSafetyOperation2["SILENCE_AUDIBLE"] = 2] = "SILENCE_AUDIBLE";
  LifeSafetyOperation2[LifeSafetyOperation2["SILENCE_VISUAL"] = 3] = "SILENCE_VISUAL";
  LifeSafetyOperation2[LifeSafetyOperation2["RESET"] = 4] = "RESET";
  LifeSafetyOperation2[LifeSafetyOperation2["RESET_ALARM"] = 5] = "RESET_ALARM";
  LifeSafetyOperation2[LifeSafetyOperation2["RESET_FAULT"] = 6] = "RESET_FAULT";
  LifeSafetyOperation2[LifeSafetyOperation2["UNSILENCE"] = 7] = "UNSILENCE";
  LifeSafetyOperation2[LifeSafetyOperation2["UNSILENCE_AUDIBLE"] = 8] = "UNSILENCE_AUDIBLE";
  LifeSafetyOperation2[LifeSafetyOperation2["UNSILENCE_VISUAL"] = 9] = "UNSILENCE_VISUAL";
  return LifeSafetyOperation2;
})(LifeSafetyOperation || {});
var LifeSafetyState = /* @__PURE__ */ ((LifeSafetyState2) => {
  LifeSafetyState2[LifeSafetyState2["QUIET"] = 0] = "QUIET";
  LifeSafetyState2[LifeSafetyState2["PRE_ALARM"] = 1] = "PRE_ALARM";
  LifeSafetyState2[LifeSafetyState2["ALARM"] = 2] = "ALARM";
  LifeSafetyState2[LifeSafetyState2["FAULT"] = 3] = "FAULT";
  LifeSafetyState2[LifeSafetyState2["FAULT_PRE_ALARM"] = 4] = "FAULT_PRE_ALARM";
  LifeSafetyState2[LifeSafetyState2["FAULT_ALARM"] = 5] = "FAULT_ALARM";
  LifeSafetyState2[LifeSafetyState2["NOT_READY"] = 6] = "NOT_READY";
  LifeSafetyState2[LifeSafetyState2["ACTIVE"] = 7] = "ACTIVE";
  LifeSafetyState2[LifeSafetyState2["TAMPER"] = 8] = "TAMPER";
  LifeSafetyState2[LifeSafetyState2["TEST_ALARM"] = 9] = "TEST_ALARM";
  LifeSafetyState2[LifeSafetyState2["TEST_ACTIVE"] = 10] = "TEST_ACTIVE";
  LifeSafetyState2[LifeSafetyState2["TEST_FAULT"] = 11] = "TEST_FAULT";
  LifeSafetyState2[LifeSafetyState2["TEST_FAULT_ALARM"] = 12] = "TEST_FAULT_ALARM";
  LifeSafetyState2[LifeSafetyState2["HOLDUP"] = 13] = "HOLDUP";
  LifeSafetyState2[LifeSafetyState2["DURESS"] = 14] = "DURESS";
  LifeSafetyState2[LifeSafetyState2["TAMPER_ALARM"] = 15] = "TAMPER_ALARM";
  LifeSafetyState2[LifeSafetyState2["ABNORMAL"] = 16] = "ABNORMAL";
  LifeSafetyState2[LifeSafetyState2["EMERGENCY_POWER"] = 17] = "EMERGENCY_POWER";
  LifeSafetyState2[LifeSafetyState2["DELAYED"] = 18] = "DELAYED";
  LifeSafetyState2[LifeSafetyState2["BLOCKED"] = 19] = "BLOCKED";
  LifeSafetyState2[LifeSafetyState2["LOCAL_ALARM"] = 20] = "LOCAL_ALARM";
  LifeSafetyState2[LifeSafetyState2["GENERAL_ALARM"] = 21] = "GENERAL_ALARM";
  LifeSafetyState2[LifeSafetyState2["SUPERVISORY"] = 22] = "SUPERVISORY";
  LifeSafetyState2[LifeSafetyState2["TEST_SUPERVISORY"] = 23] = "TEST_SUPERVISORY";
  return LifeSafetyState2;
})(LifeSafetyState || {});
var LiftCarDirection = /* @__PURE__ */ ((LiftCarDirection2) => {
  LiftCarDirection2[LiftCarDirection2["UNKNOWN"] = 0] = "UNKNOWN";
  LiftCarDirection2[LiftCarDirection2["NONE"] = 1] = "NONE";
  LiftCarDirection2[LiftCarDirection2["STOPPED"] = 2] = "STOPPED";
  LiftCarDirection2[LiftCarDirection2["UP"] = 3] = "UP";
  LiftCarDirection2[LiftCarDirection2["DOWN"] = 4] = "DOWN";
  LiftCarDirection2[LiftCarDirection2["UP_AND_DOWN"] = 5] = "UP_AND_DOWN";
  return LiftCarDirection2;
})(LiftCarDirection || {});
var LiftCarDoorCommand = /* @__PURE__ */ ((LiftCarDoorCommand2) => {
  LiftCarDoorCommand2[LiftCarDoorCommand2["NONE"] = 0] = "NONE";
  LiftCarDoorCommand2[LiftCarDoorCommand2["OPEN"] = 1] = "OPEN";
  LiftCarDoorCommand2[LiftCarDoorCommand2["CLOSE"] = 2] = "CLOSE";
  return LiftCarDoorCommand2;
})(LiftCarDoorCommand || {});
var LiftCarDriveStatus = /* @__PURE__ */ ((LiftCarDriveStatus2) => {
  LiftCarDriveStatus2[LiftCarDriveStatus2["UNKNOWN"] = 0] = "UNKNOWN";
  LiftCarDriveStatus2[LiftCarDriveStatus2["STATIONARY"] = 1] = "STATIONARY";
  LiftCarDriveStatus2[LiftCarDriveStatus2["BRAKING"] = 2] = "BRAKING";
  LiftCarDriveStatus2[LiftCarDriveStatus2["ACCELERATE"] = 3] = "ACCELERATE";
  LiftCarDriveStatus2[LiftCarDriveStatus2["DECELERATE"] = 4] = "DECELERATE";
  LiftCarDriveStatus2[LiftCarDriveStatus2["RATED_SPEED"] = 5] = "RATED_SPEED";
  LiftCarDriveStatus2[LiftCarDriveStatus2["SINGLE_FLOOR_JUMP"] = 6] = "SINGLE_FLOOR_JUMP";
  LiftCarDriveStatus2[LiftCarDriveStatus2["TWO_FLOOR_JUMP"] = 7] = "TWO_FLOOR_JUMP";
  LiftCarDriveStatus2[LiftCarDriveStatus2["THREE_FLOOR_JUMP"] = 8] = "THREE_FLOOR_JUMP";
  LiftCarDriveStatus2[LiftCarDriveStatus2["MULTI_FLOOR_JUMP"] = 9] = "MULTI_FLOOR_JUMP";
  return LiftCarDriveStatus2;
})(LiftCarDriveStatus || {});
var LiftCarMode = /* @__PURE__ */ ((LiftCarMode2) => {
  LiftCarMode2[LiftCarMode2["UNKNOWN"] = 0] = "UNKNOWN";
  LiftCarMode2[LiftCarMode2["NORMAL"] = 1] = "NORMAL";
  LiftCarMode2[LiftCarMode2["VIP"] = 2] = "VIP";
  LiftCarMode2[LiftCarMode2["HOMING"] = 3] = "HOMING";
  LiftCarMode2[LiftCarMode2["PARKING"] = 4] = "PARKING";
  LiftCarMode2[LiftCarMode2["ATTENDANT_CONTROL"] = 5] = "ATTENDANT_CONTROL";
  LiftCarMode2[LiftCarMode2["FIREFIGHTER_CONTROL"] = 6] = "FIREFIGHTER_CONTROL";
  LiftCarMode2[LiftCarMode2["EMERGENCY_POWER"] = 7] = "EMERGENCY_POWER";
  LiftCarMode2[LiftCarMode2["INSPECTION"] = 8] = "INSPECTION";
  LiftCarMode2[LiftCarMode2["CABINET_RECALL"] = 9] = "CABINET_RECALL";
  LiftCarMode2[LiftCarMode2["EARTHQUAKE_OPERATION"] = 10] = "EARTHQUAKE_OPERATION";
  LiftCarMode2[LiftCarMode2["FIRE_OPERATION"] = 11] = "FIRE_OPERATION";
  LiftCarMode2[LiftCarMode2["OUT_OF_SERVICE"] = 12] = "OUT_OF_SERVICE";
  LiftCarMode2[LiftCarMode2["OCCUPANT_EVACUATION"] = 13] = "OCCUPANT_EVACUATION";
  return LiftCarMode2;
})(LiftCarMode || {});
var LiftFault = /* @__PURE__ */ ((LiftFault2) => {
  LiftFault2[LiftFault2["CONTROLLER_FAULT"] = 0] = "CONTROLLER_FAULT";
  LiftFault2[LiftFault2["DRIVE_AND_MOTOR_FAULT"] = 1] = "DRIVE_AND_MOTOR_FAULT";
  LiftFault2[LiftFault2["GOVERNOR_AND_SAFETY_GEAR_FAULT"] = 2] = "GOVERNOR_AND_SAFETY_GEAR_FAULT";
  LiftFault2[LiftFault2["LIFT_SHAFT_DEVICE_FAULT"] = 3] = "LIFT_SHAFT_DEVICE_FAULT";
  LiftFault2[LiftFault2["POWER_SUPPLY_FAULT"] = 4] = "POWER_SUPPLY_FAULT";
  LiftFault2[LiftFault2["SAFETY_INTERLOCK_FAULT"] = 5] = "SAFETY_INTERLOCK_FAULT";
  LiftFault2[LiftFault2["DOOR_CLOSING_FAULT"] = 6] = "DOOR_CLOSING_FAULT";
  LiftFault2[LiftFault2["DOOR_OPENING_FAULT"] = 7] = "DOOR_OPENING_FAULT";
  LiftFault2[LiftFault2["CAR_STOPPED_OUTSIDE_LANDING_ZONE"] = 8] = "CAR_STOPPED_OUTSIDE_LANDING_ZONE";
  LiftFault2[LiftFault2["CALL_BUTTON_STUCK"] = 9] = "CALL_BUTTON_STUCK";
  LiftFault2[LiftFault2["START_FAILURE"] = 10] = "START_FAILURE";
  LiftFault2[LiftFault2["CONTROLLER_SUPPLY_FAULT"] = 11] = "CONTROLLER_SUPPLY_FAULT";
  LiftFault2[LiftFault2["SELF_TEST_FAILURE"] = 12] = "SELF_TEST_FAILURE";
  LiftFault2[LiftFault2["RUNTIME_LIMIT_EXCEEDED"] = 13] = "RUNTIME_LIMIT_EXCEEDED";
  LiftFault2[LiftFault2["POSITION_LOST"] = 14] = "POSITION_LOST";
  LiftFault2[LiftFault2["DRIVE_TEMPERATURE_EXCEEDED"] = 15] = "DRIVE_TEMPERATURE_EXCEEDED";
  LiftFault2[LiftFault2["LOAD_MEASUREMENT_FAULT"] = 16] = "LOAD_MEASUREMENT_FAULT";
  return LiftFault2;
})(LiftFault || {});
var LiftGroupMode = /* @__PURE__ */ ((LiftGroupMode2) => {
  LiftGroupMode2[LiftGroupMode2["UNKNOWN"] = 0] = "UNKNOWN";
  LiftGroupMode2[LiftGroupMode2["NORMAL"] = 1] = "NORMAL";
  LiftGroupMode2[LiftGroupMode2["DOWN_PEAK"] = 2] = "DOWN_PEAK";
  LiftGroupMode2[LiftGroupMode2["TWO_WAY"] = 3] = "TWO_WAY";
  LiftGroupMode2[LiftGroupMode2["FOUR_WAY"] = 4] = "FOUR_WAY";
  LiftGroupMode2[LiftGroupMode2["EMERGENCY_POWER"] = 5] = "EMERGENCY_POWER";
  LiftGroupMode2[LiftGroupMode2["UP_PEAK"] = 6] = "UP_PEAK";
  return LiftGroupMode2;
})(LiftGroupMode || {});
var LightingInProgress = /* @__PURE__ */ ((LightingInProgress2) => {
  LightingInProgress2[LightingInProgress2["IDLE"] = 0] = "IDLE";
  LightingInProgress2[LightingInProgress2["FADE_ACTIVE"] = 1] = "FADE_ACTIVE";
  LightingInProgress2[LightingInProgress2["RAMP_ACTIVE"] = 2] = "RAMP_ACTIVE";
  LightingInProgress2[LightingInProgress2["NOT_CONTROLLED"] = 3] = "NOT_CONTROLLED";
  LightingInProgress2[LightingInProgress2["OTHER"] = 4] = "OTHER";
  return LightingInProgress2;
})(LightingInProgress || {});
var LightingOperation = /* @__PURE__ */ ((LightingOperation2) => {
  LightingOperation2[LightingOperation2["NONE"] = 0] = "NONE";
  LightingOperation2[LightingOperation2["FADE_TO"] = 1] = "FADE_TO";
  LightingOperation2[LightingOperation2["RAMP_TO"] = 2] = "RAMP_TO";
  LightingOperation2[LightingOperation2["STEP_UP"] = 3] = "STEP_UP";
  LightingOperation2[LightingOperation2["STEP_DOWN"] = 4] = "STEP_DOWN";
  LightingOperation2[LightingOperation2["STEP_ON"] = 5] = "STEP_ON";
  LightingOperation2[LightingOperation2["STEP_OFF"] = 6] = "STEP_OFF";
  LightingOperation2[LightingOperation2["WARN"] = 7] = "WARN";
  LightingOperation2[LightingOperation2["WARN_OFF"] = 8] = "WARN_OFF";
  LightingOperation2[LightingOperation2["WARN_RELINQUISH"] = 9] = "WARN_RELINQUISH";
  LightingOperation2[LightingOperation2["STOP"] = 10] = "STOP";
  return LightingOperation2;
})(LightingOperation || {});
var LightingTransition = /* @__PURE__ */ ((LightingTransition2) => {
  LightingTransition2[LightingTransition2["NONE"] = 0] = "NONE";
  LightingTransition2[LightingTransition2["FADE"] = 1] = "FADE";
  LightingTransition2[LightingTransition2["RAMP"] = 2] = "RAMP";
  return LightingTransition2;
})(LightingTransition || {});
var LockStatus = /* @__PURE__ */ ((LockStatus2) => {
  LockStatus2[LockStatus2["LOCKED"] = 0] = "LOCKED";
  LockStatus2[LockStatus2["UNLOCKED"] = 1] = "UNLOCKED";
  LockStatus2[LockStatus2["LOCK_FAULT"] = 2] = "LOCK_FAULT";
  LockStatus2[LockStatus2["UNUSED"] = 3] = "UNUSED";
  LockStatus2[LockStatus2["UNKNOWN"] = 4] = "UNKNOWN";
  return LockStatus2;
})(LockStatus || {});
var LoggingType = /* @__PURE__ */ ((LoggingType2) => {
  LoggingType2[LoggingType2["POLLED"] = 0] = "POLLED";
  LoggingType2[LoggingType2["COV"] = 1] = "COV";
  LoggingType2[LoggingType2["TRIGGERED"] = 2] = "TRIGGERED";
  return LoggingType2;
})(LoggingType || {});
var Maintenance = /* @__PURE__ */ ((Maintenance2) => {
  Maintenance2[Maintenance2["NONE"] = 0] = "NONE";
  Maintenance2[Maintenance2["PERIODIC_TEST"] = 1] = "PERIODIC_TEST";
  Maintenance2[Maintenance2["NEED_SERVICE_OPERATIONAL"] = 2] = "NEED_SERVICE_OPERATIONAL";
  Maintenance2[Maintenance2["NEED_SERVICE_INOPERATIVE"] = 3] = "NEED_SERVICE_INOPERATIVE";
  return Maintenance2;
})(Maintenance || {});
var NetworkNumberQuality = /* @__PURE__ */ ((NetworkNumberQuality2) => {
  NetworkNumberQuality2[NetworkNumberQuality2["UNKNOWN"] = 0] = "UNKNOWN";
  NetworkNumberQuality2[NetworkNumberQuality2["LEARNED"] = 1] = "LEARNED";
  NetworkNumberQuality2[NetworkNumberQuality2["LEARNED_CONFIGURED"] = 2] = "LEARNED_CONFIGURED";
  NetworkNumberQuality2[NetworkNumberQuality2["CONFIGURED"] = 3] = "CONFIGURED";
  return NetworkNumberQuality2;
})(NetworkNumberQuality || {});
var NetworkPortCommand = /* @__PURE__ */ ((NetworkPortCommand2) => {
  NetworkPortCommand2[NetworkPortCommand2["IDLE"] = 0] = "IDLE";
  NetworkPortCommand2[NetworkPortCommand2["DISCARD_CHANGES"] = 1] = "DISCARD_CHANGES";
  NetworkPortCommand2[NetworkPortCommand2["RENEW_FD_REGISTRATION"] = 2] = "RENEW_FD_REGISTRATION";
  NetworkPortCommand2[NetworkPortCommand2["RESTART_SLAVE_DISCOVERY"] = 3] = "RESTART_SLAVE_DISCOVERY";
  NetworkPortCommand2[NetworkPortCommand2["RENEW_DHCP"] = 4] = "RENEW_DHCP";
  NetworkPortCommand2[NetworkPortCommand2["RESTART_AUTONEGOTIATION"] = 5] = "RESTART_AUTONEGOTIATION";
  NetworkPortCommand2[NetworkPortCommand2["DISCONNECT"] = 6] = "DISCONNECT";
  NetworkPortCommand2[NetworkPortCommand2["RESTART_PORT"] = 7] = "RESTART_PORT";
  return NetworkPortCommand2;
})(NetworkPortCommand || {});
var NetworkType = /* @__PURE__ */ ((NetworkType2) => {
  NetworkType2[NetworkType2["ETHERNET"] = 0] = "ETHERNET";
  NetworkType2[NetworkType2["ARCNET"] = 1] = "ARCNET";
  NetworkType2[NetworkType2["MSTP"] = 2] = "MSTP";
  NetworkType2[NetworkType2["PTP"] = 3] = "PTP";
  NetworkType2[NetworkType2["LONTALK"] = 4] = "LONTALK";
  NetworkType2[NetworkType2["IPV4"] = 5] = "IPV4";
  NetworkType2[NetworkType2["ZIGBEE"] = 6] = "ZIGBEE";
  NetworkType2[NetworkType2["VIRTUAL"] = 7] = "VIRTUAL";
  NetworkType2[NetworkType2["IPV6"] = 9] = "IPV6";
  NetworkType2[NetworkType2["SERIAL"] = 10] = "SERIAL";
  return NetworkType2;
})(NetworkType || {});
var NodeType = /* @__PURE__ */ ((NodeType2) => {
  NodeType2[NodeType2["UNKNOWN"] = 0] = "UNKNOWN";
  NodeType2[NodeType2["SYSTEM"] = 1] = "SYSTEM";
  NodeType2[NodeType2["NETWORK"] = 2] = "NETWORK";
  NodeType2[NodeType2["DEVICE"] = 3] = "DEVICE";
  NodeType2[NodeType2["ORGANIZATIONAL"] = 4] = "ORGANIZATIONAL";
  NodeType2[NodeType2["AREA"] = 5] = "AREA";
  NodeType2[NodeType2["EQUIPMENT"] = 6] = "EQUIPMENT";
  NodeType2[NodeType2["POINT"] = 7] = "POINT";
  NodeType2[NodeType2["COLLECTION"] = 8] = "COLLECTION";
  NodeType2[NodeType2["PROPERTY"] = 9] = "PROPERTY";
  NodeType2[NodeType2["FUNCTIONAL"] = 10] = "FUNCTIONAL";
  NodeType2[NodeType2["OTHER"] = 11] = "OTHER";
  NodeType2[NodeType2["SUBSYSTEM"] = 12] = "SUBSYSTEM";
  NodeType2[NodeType2["BUILDING"] = 13] = "BUILDING";
  NodeType2[NodeType2["FLOOR"] = 14] = "FLOOR";
  NodeType2[NodeType2["SECTION"] = 15] = "SECTION";
  NodeType2[NodeType2["MODULE"] = 16] = "MODULE";
  NodeType2[NodeType2["TREE"] = 17] = "TREE";
  NodeType2[NodeType2["MEMBER"] = 18] = "MEMBER";
  NodeType2[NodeType2["PROTOCOL"] = 19] = "PROTOCOL";
  NodeType2[NodeType2["ROOM"] = 20] = "ROOM";
  NodeType2[NodeType2["ZONE"] = 21] = "ZONE";
  return NodeType2;
})(NodeType || {});
var NotifyType = /* @__PURE__ */ ((NotifyType2) => {
  NotifyType2[NotifyType2["ALARM"] = 0] = "ALARM";
  NotifyType2[NotifyType2["EVENT"] = 1] = "EVENT";
  NotifyType2[NotifyType2["ACK_NOTIFICATION"] = 2] = "ACK_NOTIFICATION";
  return NotifyType2;
})(NotifyType || {});
var ObjectType = /* @__PURE__ */ ((ObjectType2) => {
  ObjectType2[ObjectType2["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
  ObjectType2[ObjectType2["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
  ObjectType2[ObjectType2["ACCESS_POINT"] = 33] = "ACCESS_POINT";
  ObjectType2[ObjectType2["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
  ObjectType2[ObjectType2["ACCESS_USER"] = 35] = "ACCESS_USER";
  ObjectType2[ObjectType2["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
  ObjectType2[ObjectType2["ACCUMULATOR"] = 23] = "ACCUMULATOR";
  ObjectType2[ObjectType2["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
  ObjectType2[ObjectType2["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
  ObjectType2[ObjectType2["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
  ObjectType2[ObjectType2["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
  ObjectType2[ObjectType2["AVERAGING"] = 18] = "AVERAGING";
  ObjectType2[ObjectType2["BINARY_INPUT"] = 3] = "BINARY_INPUT";
  ObjectType2[ObjectType2["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
  ObjectType2[ObjectType2["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
  ObjectType2[ObjectType2["BINARY_VALUE"] = 5] = "BINARY_VALUE";
  ObjectType2[ObjectType2["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
  ObjectType2[ObjectType2["CALENDAR"] = 6] = "CALENDAR";
  ObjectType2[ObjectType2["CHANNEL"] = 53] = "CHANNEL";
  ObjectType2[ObjectType2["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
  ObjectType2[ObjectType2["COMMAND"] = 7] = "COMMAND";
  ObjectType2[ObjectType2["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
  ObjectType2[ObjectType2["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
  ObjectType2[ObjectType2["DATE_VALUE"] = 42] = "DATE_VALUE";
  ObjectType2[ObjectType2["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
  ObjectType2[ObjectType2["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
  ObjectType2[ObjectType2["DEVICE"] = 8] = "DEVICE";
  ObjectType2[ObjectType2["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
  ObjectType2[ObjectType2["ESCALATOR"] = 58] = "ESCALATOR";
  ObjectType2[ObjectType2["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
  ObjectType2[ObjectType2["EVENT_LOG"] = 25] = "EVENT_LOG";
  ObjectType2[ObjectType2["FILE"] = 10] = "FILE";
  ObjectType2[ObjectType2["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
  ObjectType2[ObjectType2["GROUP"] = 11] = "GROUP";
  ObjectType2[ObjectType2["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
  ObjectType2[ObjectType2["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
  ObjectType2[ObjectType2["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
  ObjectType2[ObjectType2["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
  ObjectType2[ObjectType2["LIFT"] = 59] = "LIFT";
  ObjectType2[ObjectType2["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
  ObjectType2[ObjectType2["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
  ObjectType2[ObjectType2["LOOP"] = 12] = "LOOP";
  ObjectType2[ObjectType2["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
  ObjectType2[ObjectType2["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
  ObjectType2[ObjectType2["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
  ObjectType2[ObjectType2["NETWORK_PORT"] = 56] = "NETWORK_PORT";
  ObjectType2[ObjectType2["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
  ObjectType2[ObjectType2["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
  ObjectType2[ObjectType2["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
  ObjectType2[ObjectType2["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
  ObjectType2[ObjectType2["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
  ObjectType2[ObjectType2["PROGRAM"] = 16] = "PROGRAM";
  ObjectType2[ObjectType2["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
  ObjectType2[ObjectType2["SCHEDULE"] = 17] = "SCHEDULE";
  ObjectType2[ObjectType2["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
  ObjectType2[ObjectType2["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
  ObjectType2[ObjectType2["TIME_VALUE"] = 50] = "TIME_VALUE";
  ObjectType2[ObjectType2["TIMER"] = 31] = "TIMER";
  ObjectType2[ObjectType2["TREND_LOG"] = 20] = "TREND_LOG";
  ObjectType2[ObjectType2["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
  return ObjectType2;
})(ObjectType || {});
var Polarity = /* @__PURE__ */ ((Polarity2) => {
  Polarity2[Polarity2["NORMAL"] = 0] = "NORMAL";
  Polarity2[Polarity2["REVERSE"] = 1] = "REVERSE";
  return Polarity2;
})(Polarity || {});
var ProgramError = /* @__PURE__ */ ((ProgramError2) => {
  ProgramError2[ProgramError2["NORMAL"] = 0] = "NORMAL";
  ProgramError2[ProgramError2["LOAD_FAILED"] = 1] = "LOAD_FAILED";
  ProgramError2[ProgramError2["INTERNAL"] = 2] = "INTERNAL";
  ProgramError2[ProgramError2["PROGRAM"] = 3] = "PROGRAM";
  ProgramError2[ProgramError2["OTHER"] = 4] = "OTHER";
  return ProgramError2;
})(ProgramError || {});
var ProgramRequest = /* @__PURE__ */ ((ProgramRequest2) => {
  ProgramRequest2[ProgramRequest2["READY"] = 0] = "READY";
  ProgramRequest2[ProgramRequest2["LOAD"] = 1] = "LOAD";
  ProgramRequest2[ProgramRequest2["RUN"] = 2] = "RUN";
  ProgramRequest2[ProgramRequest2["HALT"] = 3] = "HALT";
  ProgramRequest2[ProgramRequest2["RESTART"] = 4] = "RESTART";
  ProgramRequest2[ProgramRequest2["UNLOAD"] = 5] = "UNLOAD";
  return ProgramRequest2;
})(ProgramRequest || {});
var ProgramState = /* @__PURE__ */ ((ProgramState2) => {
  ProgramState2[ProgramState2["IDLE"] = 0] = "IDLE";
  ProgramState2[ProgramState2["LOADING"] = 1] = "LOADING";
  ProgramState2[ProgramState2["RUNNING"] = 2] = "RUNNING";
  ProgramState2[ProgramState2["WAITING"] = 3] = "WAITING";
  ProgramState2[ProgramState2["HALTED"] = 4] = "HALTED";
  ProgramState2[ProgramState2["UNLOADING"] = 5] = "UNLOADING";
  return ProgramState2;
})(ProgramState || {});
var PropertyIdentifier = /* @__PURE__ */ ((PropertyIdentifier2) => {
  PropertyIdentifier2[PropertyIdentifier2["ABSENTEE_LIMIT"] = 244] = "ABSENTEE_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["ACCEPTED_MODES"] = 175] = "ACCEPTED_MODES";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_ALARM_EVENTS"] = 245] = "ACCESS_ALARM_EVENTS";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_DOORS"] = 246] = "ACCESS_DOORS";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_EVENT"] = 247] = "ACCESS_EVENT";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_EVENT_AUTHENTICATION_FACTOR"] = 248] = "ACCESS_EVENT_AUTHENTICATION_FACTOR";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_EVENT_CREDENTIAL"] = 249] = "ACCESS_EVENT_CREDENTIAL";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_EVENT_TAG"] = 322] = "ACCESS_EVENT_TAG";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_EVENT_TIME"] = 250] = "ACCESS_EVENT_TIME";
  PropertyIdentifier2[PropertyIdentifier2["ACCESS_TRANSACTION_EVENTS"] = 251] = "ACCESS_TRANSACTION_EVENTS";
  PropertyIdentifier2[PropertyIdentifier2["ACCOMPANIMENT"] = 252] = "ACCOMPANIMENT";
  PropertyIdentifier2[PropertyIdentifier2["ACCOMPANIMENT_TIME"] = 253] = "ACCOMPANIMENT_TIME";
  PropertyIdentifier2[PropertyIdentifier2["ACK_REQUIRED"] = 1] = "ACK_REQUIRED";
  PropertyIdentifier2[PropertyIdentifier2["ACKED_TRANSITIONS"] = 0] = "ACKED_TRANSITIONS";
  PropertyIdentifier2[PropertyIdentifier2["ACTION"] = 2] = "ACTION";
  PropertyIdentifier2[PropertyIdentifier2["ACTION_TEXT"] = 3] = "ACTION_TEXT";
  PropertyIdentifier2[PropertyIdentifier2["ACTIVATION_TIME"] = 254] = "ACTIVATION_TIME";
  PropertyIdentifier2[PropertyIdentifier2["ACTIVE_AUTHENTICATION_POLICY"] = 255] = "ACTIVE_AUTHENTICATION_POLICY";
  PropertyIdentifier2[PropertyIdentifier2["ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS"] = 481] = "ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS";
  PropertyIdentifier2[PropertyIdentifier2["ACTIVE_COV_SUBSCRIPTIONS"] = 152] = "ACTIVE_COV_SUBSCRIPTIONS";
  PropertyIdentifier2[PropertyIdentifier2["ACTIVE_TEXT"] = 4] = "ACTIVE_TEXT";
  PropertyIdentifier2[PropertyIdentifier2["ACTIVE_VT_SESSIONS"] = 5] = "ACTIVE_VT_SESSIONS";
  PropertyIdentifier2[PropertyIdentifier2["ACTUAL_SHED_LEVEL"] = 212] = "ACTUAL_SHED_LEVEL";
  PropertyIdentifier2[PropertyIdentifier2["ADJUST_VALUE"] = 176] = "ADJUST_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["ALARM_VALUE"] = 6] = "ALARM_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["ALARM_VALUES"] = 7] = "ALARM_VALUES";
  PropertyIdentifier2[PropertyIdentifier2["ALIGN_INTERVALS"] = 193] = "ALIGN_INTERVALS";
  PropertyIdentifier2[PropertyIdentifier2["ALL"] = 8] = "ALL";
  PropertyIdentifier2[PropertyIdentifier2["ALL_WRITES_SUCCESSFUL"] = 9] = "ALL_WRITES_SUCCESSFUL";
  PropertyIdentifier2[PropertyIdentifier2["ALLOW_GROUP_DELAY_INHIBIT"] = 365] = "ALLOW_GROUP_DELAY_INHIBIT";
  PropertyIdentifier2[PropertyIdentifier2["APDU_LENGTH"] = 399] = "APDU_LENGTH";
  PropertyIdentifier2[PropertyIdentifier2["APDU_SEGMENT_TIMEOUT"] = 10] = "APDU_SEGMENT_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["APDU_TIMEOUT"] = 11] = "APDU_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["APPLICATION_SOFTWARE_VERSION"] = 12] = "APPLICATION_SOFTWARE_VERSION";
  PropertyIdentifier2[PropertyIdentifier2["ARCHIVE"] = 13] = "ARCHIVE";
  PropertyIdentifier2[PropertyIdentifier2["ASSIGNED_ACCESS_RIGHTS"] = 256] = "ASSIGNED_ACCESS_RIGHTS";
  PropertyIdentifier2[PropertyIdentifier2["ASSIGNED_LANDING_CALLS"] = 447] = "ASSIGNED_LANDING_CALLS";
  PropertyIdentifier2[PropertyIdentifier2["ATTEMPTED_SAMPLES"] = 124] = "ATTEMPTED_SAMPLES";
  PropertyIdentifier2[PropertyIdentifier2["AUTHENTICATION_FACTORS"] = 257] = "AUTHENTICATION_FACTORS";
  PropertyIdentifier2[PropertyIdentifier2["AUTHENTICATION_POLICY_LIST"] = 258] = "AUTHENTICATION_POLICY_LIST";
  PropertyIdentifier2[PropertyIdentifier2["AUTHENTICATION_POLICY_NAMES"] = 259] = "AUTHENTICATION_POLICY_NAMES";
  PropertyIdentifier2[PropertyIdentifier2["AUTHENTICATION_STATUS"] = 260] = "AUTHENTICATION_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["AUTHORIZATION_EXEMPTIONS"] = 364] = "AUTHORIZATION_EXEMPTIONS";
  PropertyIdentifier2[PropertyIdentifier2["AUTHORIZATION_MODE"] = 261] = "AUTHORIZATION_MODE";
  PropertyIdentifier2[PropertyIdentifier2["AUTO_SLAVE_DISCOVERY"] = 169] = "AUTO_SLAVE_DISCOVERY";
  PropertyIdentifier2[PropertyIdentifier2["AVERAGE_VALUE"] = 125] = "AVERAGE_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["BACKUP_AND_RESTORE_STATE"] = 338] = "BACKUP_AND_RESTORE_STATE";
  PropertyIdentifier2[PropertyIdentifier2["BACKUP_FAILURE_TIMEOUT"] = 153] = "BACKUP_FAILURE_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["BACKUP_PREPARATION_TIME"] = 339] = "BACKUP_PREPARATION_TIME";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IP_GLOBAL_ADDRESS"] = 407] = "BACNET_IP_GLOBAL_ADDRESS";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IP_MODE"] = 408] = "BACNET_IP_MODE";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IP_MULTICAST_ADDRESS"] = 409] = "BACNET_IP_MULTICAST_ADDRESS";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IP_NAT_TRAVERSAL"] = 410] = "BACNET_IP_NAT_TRAVERSAL";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IP_UDP_PORT"] = 412] = "BACNET_IP_UDP_PORT";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IPV6_MODE"] = 435] = "BACNET_IPV6_MODE";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IPV6_UDP_PORT"] = 438] = "BACNET_IPV6_UDP_PORT";
  PropertyIdentifier2[PropertyIdentifier2["BACNET_IPV6_MULTICAST_ADDRESS"] = 440] = "BACNET_IPV6_MULTICAST_ADDRESS";
  PropertyIdentifier2[PropertyIdentifier2["BBMD_ACCEPT_FD_REGISTRATIONS"] = 413] = "BBMD_ACCEPT_FD_REGISTRATIONS";
  PropertyIdentifier2[PropertyIdentifier2["BBMD_BROADCAST_DISTRIBUTION_TABLE"] = 414] = "BBMD_BROADCAST_DISTRIBUTION_TABLE";
  PropertyIdentifier2[PropertyIdentifier2["BBMD_FOREIGN_DEVICE_TABLE"] = 415] = "BBMD_FOREIGN_DEVICE_TABLE";
  PropertyIdentifier2[PropertyIdentifier2["BELONGS_TO"] = 262] = "BELONGS_TO";
  PropertyIdentifier2[PropertyIdentifier2["BIAS"] = 14] = "BIAS";
  PropertyIdentifier2[PropertyIdentifier2["BIT_MASK"] = 342] = "BIT_MASK";
  PropertyIdentifier2[PropertyIdentifier2["BIT_TEXT"] = 343] = "BIT_TEXT";
  PropertyIdentifier2[PropertyIdentifier2["BLINK_WARN_ENABLE"] = 373] = "BLINK_WARN_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["BUFFER_SIZE"] = 126] = "BUFFER_SIZE";
  PropertyIdentifier2[PropertyIdentifier2["CAR_ASSIGNED_DIRECTION"] = 448] = "CAR_ASSIGNED_DIRECTION";
  PropertyIdentifier2[PropertyIdentifier2["CAR_DOOR_COMMAND"] = 449] = "CAR_DOOR_COMMAND";
  PropertyIdentifier2[PropertyIdentifier2["CAR_DOOR_STATUS"] = 450] = "CAR_DOOR_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["CAR_DOOR_TEXT"] = 451] = "CAR_DOOR_TEXT";
  PropertyIdentifier2[PropertyIdentifier2["CAR_DOOR_ZONE"] = 452] = "CAR_DOOR_ZONE";
  PropertyIdentifier2[PropertyIdentifier2["CAR_DRIVE_STATUS"] = 453] = "CAR_DRIVE_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["CAR_LOAD"] = 454] = "CAR_LOAD";
  PropertyIdentifier2[PropertyIdentifier2["CAR_LOAD_UNITS"] = 455] = "CAR_LOAD_UNITS";
  PropertyIdentifier2[PropertyIdentifier2["CAR_MODE"] = 456] = "CAR_MODE";
  PropertyIdentifier2[PropertyIdentifier2["CAR_MOVING_DIRECTION"] = 457] = "CAR_MOVING_DIRECTION";
  PropertyIdentifier2[PropertyIdentifier2["CAR_POSITION"] = 458] = "CAR_POSITION";
  PropertyIdentifier2[PropertyIdentifier2["CHANGE_OF_STATE_COUNT"] = 15] = "CHANGE_OF_STATE_COUNT";
  PropertyIdentifier2[PropertyIdentifier2["CHANGE_OF_STATE_TIME"] = 16] = "CHANGE_OF_STATE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["CHANGES_PENDING"] = 416] = "CHANGES_PENDING";
  PropertyIdentifier2[PropertyIdentifier2["CHANNEL_NUMBER"] = 366] = "CHANNEL_NUMBER";
  PropertyIdentifier2[PropertyIdentifier2["CLIENT_COV_INCREMENT"] = 127] = "CLIENT_COV_INCREMENT";
  PropertyIdentifier2[PropertyIdentifier2["COMMAND"] = 417] = "COMMAND";
  PropertyIdentifier2[PropertyIdentifier2["COMMAND_TIME_ARRAY"] = 430] = "COMMAND_TIME_ARRAY";
  PropertyIdentifier2[PropertyIdentifier2["CONFIGURATION_FILES"] = 154] = "CONFIGURATION_FILES";
  PropertyIdentifier2[PropertyIdentifier2["CONTROL_GROUPS"] = 367] = "CONTROL_GROUPS";
  PropertyIdentifier2[PropertyIdentifier2["CONTROLLED_VARIABLE_REFERENCE"] = 19] = "CONTROLLED_VARIABLE_REFERENCE";
  PropertyIdentifier2[PropertyIdentifier2["CONTROLLED_VARIABLE_UNITS"] = 20] = "CONTROLLED_VARIABLE_UNITS";
  PropertyIdentifier2[PropertyIdentifier2["CONTROLLED_VARIABLE_VALUE"] = 21] = "CONTROLLED_VARIABLE_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["COUNT"] = 177] = "COUNT";
  PropertyIdentifier2[PropertyIdentifier2["COUNT_BEFORE_CHANGE"] = 178] = "COUNT_BEFORE_CHANGE";
  PropertyIdentifier2[PropertyIdentifier2["COUNT_CHANGE_TIME"] = 179] = "COUNT_CHANGE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["COV_INCREMENT"] = 22] = "COV_INCREMENT";
  PropertyIdentifier2[PropertyIdentifier2["COV_PERIOD"] = 180] = "COV_PERIOD";
  PropertyIdentifier2[PropertyIdentifier2["COV_RESUBSCRIPTION_INTERVAL"] = 128] = "COV_RESUBSCRIPTION_INTERVAL";
  PropertyIdentifier2[PropertyIdentifier2["COVU_PERIOD"] = 349] = "COVU_PERIOD";
  PropertyIdentifier2[PropertyIdentifier2["COVU_RECIPIENTS"] = 350] = "COVU_RECIPIENTS";
  PropertyIdentifier2[PropertyIdentifier2["CREDENTIAL_DISABLE"] = 263] = "CREDENTIAL_DISABLE";
  PropertyIdentifier2[PropertyIdentifier2["CREDENTIAL_STATUS"] = 264] = "CREDENTIAL_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["CREDENTIALS"] = 265] = "CREDENTIALS";
  PropertyIdentifier2[PropertyIdentifier2["CREDENTIALS_IN_ZONE"] = 266] = "CREDENTIALS_IN_ZONE";
  PropertyIdentifier2[PropertyIdentifier2["CURRENT_COMMAND_PRIORITY"] = 431] = "CURRENT_COMMAND_PRIORITY";
  PropertyIdentifier2[PropertyIdentifier2["DATABASE_REVISION"] = 155] = "DATABASE_REVISION";
  PropertyIdentifier2[PropertyIdentifier2["DATE_LIST"] = 23] = "DATE_LIST";
  PropertyIdentifier2[PropertyIdentifier2["DAYLIGHT_SAVINGS_STATUS"] = 24] = "DAYLIGHT_SAVINGS_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["DAYS_REMAINING"] = 267] = "DAYS_REMAINING";
  PropertyIdentifier2[PropertyIdentifier2["DEADBAND"] = 25] = "DEADBAND";
  PropertyIdentifier2[PropertyIdentifier2["DEFAULT_FADE_TIME"] = 374] = "DEFAULT_FADE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["DEFAULT_RAMP_RATE"] = 375] = "DEFAULT_RAMP_RATE";
  PropertyIdentifier2[PropertyIdentifier2["DEFAULT_STEP_INCREMENT"] = 376] = "DEFAULT_STEP_INCREMENT";
  PropertyIdentifier2[PropertyIdentifier2["DEFAULT_SUBORDINATE_RELATIONSHIP"] = 490] = "DEFAULT_SUBORDINATE_RELATIONSHIP";
  PropertyIdentifier2[PropertyIdentifier2["DEFAULT_TIMEOUT"] = 393] = "DEFAULT_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["DEPLOYED_PROFILE_LOCATION"] = 484] = "DEPLOYED_PROFILE_LOCATION";
  PropertyIdentifier2[PropertyIdentifier2["DERIVATIVE_CONSTANT"] = 26] = "DERIVATIVE_CONSTANT";
  PropertyIdentifier2[PropertyIdentifier2["DERIVATIVE_CONSTANT_UNITS"] = 27] = "DERIVATIVE_CONSTANT_UNITS";
  PropertyIdentifier2[PropertyIdentifier2["DESCRIPTION"] = 28] = "DESCRIPTION";
  PropertyIdentifier2[PropertyIdentifier2["DESCRIPTION_OF_HALT"] = 29] = "DESCRIPTION_OF_HALT";
  PropertyIdentifier2[PropertyIdentifier2["DEVICE_ADDRESS_BINDING"] = 30] = "DEVICE_ADDRESS_BINDING";
  PropertyIdentifier2[PropertyIdentifier2["DEVICE_TYPE"] = 31] = "DEVICE_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["DIRECT_READING"] = 156] = "DIRECT_READING";
  PropertyIdentifier2[PropertyIdentifier2["DISTRIBUTION_KEY_REVISION"] = 328] = "DISTRIBUTION_KEY_REVISION";
  PropertyIdentifier2[PropertyIdentifier2["DO_NOT_HIDE"] = 329] = "DO_NOT_HIDE";
  PropertyIdentifier2[PropertyIdentifier2["DOOR_ALARM_STATE"] = 226] = "DOOR_ALARM_STATE";
  PropertyIdentifier2[PropertyIdentifier2["DOOR_EXTENDED_PULSE_TIME"] = 227] = "DOOR_EXTENDED_PULSE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["DOOR_MEMBERS"] = 228] = "DOOR_MEMBERS";
  PropertyIdentifier2[PropertyIdentifier2["DOOR_OPEN_TOO_LONG_TIME"] = 229] = "DOOR_OPEN_TOO_LONG_TIME";
  PropertyIdentifier2[PropertyIdentifier2["DOOR_PULSE_TIME"] = 230] = "DOOR_PULSE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["DOOR_STATUS"] = 231] = "DOOR_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["DOOR_UNLOCK_DELAY_TIME"] = 232] = "DOOR_UNLOCK_DELAY_TIME";
  PropertyIdentifier2[PropertyIdentifier2["DUTY_WINDOW"] = 213] = "DUTY_WINDOW";
  PropertyIdentifier2[PropertyIdentifier2["EFFECTIVE_PERIOD"] = 32] = "EFFECTIVE_PERIOD";
  PropertyIdentifier2[PropertyIdentifier2["EGRESS_ACTIVE"] = 386] = "EGRESS_ACTIVE";
  PropertyIdentifier2[PropertyIdentifier2["EGRESS_TIME"] = 377] = "EGRESS_TIME";
  PropertyIdentifier2[PropertyIdentifier2["ELAPSED_ACTIVE_TIME"] = 33] = "ELAPSED_ACTIVE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["ELEVATOR_GROUP"] = 459] = "ELEVATOR_GROUP";
  PropertyIdentifier2[PropertyIdentifier2["ENABLE"] = 133] = "ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["ENERGY_METER"] = 460] = "ENERGY_METER";
  PropertyIdentifier2[PropertyIdentifier2["ENERGY_METER_REF"] = 461] = "ENERGY_METER_REF";
  PropertyIdentifier2[PropertyIdentifier2["ENTRY_POINTS"] = 268] = "ENTRY_POINTS";
  PropertyIdentifier2[PropertyIdentifier2["ERROR_LIMIT"] = 34] = "ERROR_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["ESCALATOR_MODE"] = 462] = "ESCALATOR_MODE";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_ALGORITHM_INHIBIT"] = 354] = "EVENT_ALGORITHM_INHIBIT";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_ALGORITHM_INHIBIT_REF"] = 355] = "EVENT_ALGORITHM_INHIBIT_REF";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_DETECTION_ENABLE"] = 353] = "EVENT_DETECTION_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_ENABLE"] = 35] = "EVENT_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_MESSAGE_TEXTS"] = 351] = "EVENT_MESSAGE_TEXTS";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_MESSAGE_TEXTS_CONFIG"] = 352] = "EVENT_MESSAGE_TEXTS_CONFIG";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_PARAMETERS"] = 83] = "EVENT_PARAMETERS";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_STATE"] = 36] = "EVENT_STATE";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_TIME_STAMPS"] = 130] = "EVENT_TIME_STAMPS";
  PropertyIdentifier2[PropertyIdentifier2["EVENT_TYPE"] = 37] = "EVENT_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["EXCEPTION_SCHEDULE"] = 38] = "EXCEPTION_SCHEDULE";
  PropertyIdentifier2[PropertyIdentifier2["EXECUTION_DELAY"] = 368] = "EXECUTION_DELAY";
  PropertyIdentifier2[PropertyIdentifier2["EXIT_POINTS"] = 269] = "EXIT_POINTS";
  PropertyIdentifier2[PropertyIdentifier2["EXPECTED_SHED_LEVEL"] = 214] = "EXPECTED_SHED_LEVEL";
  PropertyIdentifier2[PropertyIdentifier2["EXPIRATION_TIME"] = 270] = "EXPIRATION_TIME";
  PropertyIdentifier2[PropertyIdentifier2["EXTENDED_TIME_ENABLE"] = 271] = "EXTENDED_TIME_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["FAILED_ATTEMPT_EVENTS"] = 272] = "FAILED_ATTEMPT_EVENTS";
  PropertyIdentifier2[PropertyIdentifier2["FAILED_ATTEMPTS"] = 273] = "FAILED_ATTEMPTS";
  PropertyIdentifier2[PropertyIdentifier2["FAILED_ATTEMPTS_TIME"] = 274] = "FAILED_ATTEMPTS_TIME";
  PropertyIdentifier2[PropertyIdentifier2["FAULT_HIGH_LIMIT"] = 388] = "FAULT_HIGH_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["FAULT_LOW_LIMIT"] = 389] = "FAULT_LOW_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["FAULT_PARAMETERS"] = 358] = "FAULT_PARAMETERS";
  PropertyIdentifier2[PropertyIdentifier2["FAULT_SIGNALS"] = 463] = "FAULT_SIGNALS";
  PropertyIdentifier2[PropertyIdentifier2["FAULT_TYPE"] = 359] = "FAULT_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["FAULT_VALUES"] = 39] = "FAULT_VALUES";
  PropertyIdentifier2[PropertyIdentifier2["FD_BBMD_ADDRESS"] = 418] = "FD_BBMD_ADDRESS";
  PropertyIdentifier2[PropertyIdentifier2["FD_SUBSCRIPTION_LIFETIME"] = 419] = "FD_SUBSCRIPTION_LIFETIME";
  PropertyIdentifier2[PropertyIdentifier2["FEEDBACK_VALUE"] = 40] = "FEEDBACK_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["FILE_ACCESS_METHOD"] = 41] = "FILE_ACCESS_METHOD";
  PropertyIdentifier2[PropertyIdentifier2["FILE_SIZE"] = 42] = "FILE_SIZE";
  PropertyIdentifier2[PropertyIdentifier2["FILE_TYPE"] = 43] = "FILE_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["FIRMWARE_REVISION"] = 44] = "FIRMWARE_REVISION";
  PropertyIdentifier2[PropertyIdentifier2["FLOOR_TEXT"] = 464] = "FLOOR_TEXT";
  PropertyIdentifier2[PropertyIdentifier2["FULL_DUTY_BASELINE"] = 215] = "FULL_DUTY_BASELINE";
  PropertyIdentifier2[PropertyIdentifier2["GLOBAL_IDENTIFIER"] = 323] = "GLOBAL_IDENTIFIER";
  PropertyIdentifier2[PropertyIdentifier2["GROUP_ID"] = 465] = "GROUP_ID";
  PropertyIdentifier2[PropertyIdentifier2["GROUP_MEMBER_NAMES"] = 346] = "GROUP_MEMBER_NAMES";
  PropertyIdentifier2[PropertyIdentifier2["GROUP_MEMBERS"] = 345] = "GROUP_MEMBERS";
  PropertyIdentifier2[PropertyIdentifier2["GROUP_MODE"] = 467] = "GROUP_MODE";
  PropertyIdentifier2[PropertyIdentifier2["HIGH_LIMIT"] = 45] = "HIGH_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["HIGHER_DECK"] = 468] = "HIGHER_DECK";
  PropertyIdentifier2[PropertyIdentifier2["IN_PROCESS"] = 47] = "IN_PROCESS";
  PropertyIdentifier2[PropertyIdentifier2["IN_PROGRESS"] = 378] = "IN_PROGRESS";
  PropertyIdentifier2[PropertyIdentifier2["INACTIVE_TEXT"] = 46] = "INACTIVE_TEXT";
  PropertyIdentifier2[PropertyIdentifier2["INITIAL_TIMEOUT"] = 394] = "INITIAL_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["INPUT_REFERENCE"] = 181] = "INPUT_REFERENCE";
  PropertyIdentifier2[PropertyIdentifier2["INSTALLATION_ID"] = 469] = "INSTALLATION_ID";
  PropertyIdentifier2[PropertyIdentifier2["INSTANCE_OF"] = 48] = "INSTANCE_OF";
  PropertyIdentifier2[PropertyIdentifier2["INSTANTANEOUS_POWER"] = 379] = "INSTANTANEOUS_POWER";
  PropertyIdentifier2[PropertyIdentifier2["INTEGRAL_CONSTANT"] = 49] = "INTEGRAL_CONSTANT";
  PropertyIdentifier2[PropertyIdentifier2["INTEGRAL_CONSTANT_UNITS"] = 50] = "INTEGRAL_CONSTANT_UNITS";
  PropertyIdentifier2[PropertyIdentifier2["INTERFACE_VALUE"] = 387] = "INTERFACE_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["INTERVAL_OFFSET"] = 195] = "INTERVAL_OFFSET";
  PropertyIdentifier2[PropertyIdentifier2["IP_ADDRESS"] = 400] = "IP_ADDRESS";
  PropertyIdentifier2[PropertyIdentifier2["IP_DEFAULT_GATEWAY"] = 401] = "IP_DEFAULT_GATEWAY";
  PropertyIdentifier2[PropertyIdentifier2["IP_DHCP_ENABLE"] = 402] = "IP_DHCP_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["IP_DHCP_LEASE_TIME"] = 403] = "IP_DHCP_LEASE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["IP_DHCP_LEASE_TIME_REMAINING"] = 404] = "IP_DHCP_LEASE_TIME_REMAINING";
  PropertyIdentifier2[PropertyIdentifier2["IP_DHCP_SERVER"] = 405] = "IP_DHCP_SERVER";
  PropertyIdentifier2[PropertyIdentifier2["IP_DNS_SERVER"] = 406] = "IP_DNS_SERVER";
  PropertyIdentifier2[PropertyIdentifier2["IP_SUBNET_MASK"] = 411] = "IP_SUBNET_MASK";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_ADDRESS"] = 436] = "IPV6_ADDRESS";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_AUTO_ADDRESSING_ENABLE"] = 442] = "IPV6_AUTO_ADDRESSING_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_DEFAULT_GATEWAY"] = 439] = "IPV6_DEFAULT_GATEWAY";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_DHCP_LEASE_TIME"] = 443] = "IPV6_DHCP_LEASE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_DHCP_LEASE_TIME_REMAINING"] = 444] = "IPV6_DHCP_LEASE_TIME_REMAINING";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_DHCP_SERVER"] = 445] = "IPV6_DHCP_SERVER";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_DNS_SERVER"] = 441] = "IPV6_DNS_SERVER";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_PREFIX_LENGTH"] = 437] = "IPV6_PREFIX_LENGTH";
  PropertyIdentifier2[PropertyIdentifier2["IPV6_ZONE_INDEX"] = 446] = "IPV6_ZONE_INDEX";
  PropertyIdentifier2[PropertyIdentifier2["IS_UTC"] = 344] = "IS_UTC";
  PropertyIdentifier2[PropertyIdentifier2["KEY_SETS"] = 330] = "KEY_SETS";
  PropertyIdentifier2[PropertyIdentifier2["LANDING_CALL_CONTROL"] = 471] = "LANDING_CALL_CONTROL";
  PropertyIdentifier2[PropertyIdentifier2["LANDING_CALLS"] = 470] = "LANDING_CALLS";
  PropertyIdentifier2[PropertyIdentifier2["LANDING_DOOR_STATUS"] = 472] = "LANDING_DOOR_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["LAST_ACCESS_EVENT"] = 275] = "LAST_ACCESS_EVENT";
  PropertyIdentifier2[PropertyIdentifier2["LAST_ACCESS_POINT"] = 276] = "LAST_ACCESS_POINT";
  PropertyIdentifier2[PropertyIdentifier2["LAST_COMMAND_TIME"] = 432] = "LAST_COMMAND_TIME";
  PropertyIdentifier2[PropertyIdentifier2["LAST_CREDENTIAL_ADDED"] = 277] = "LAST_CREDENTIAL_ADDED";
  PropertyIdentifier2[PropertyIdentifier2["LAST_CREDENTIAL_ADDED_TIME"] = 278] = "LAST_CREDENTIAL_ADDED_TIME";
  PropertyIdentifier2[PropertyIdentifier2["LAST_CREDENTIAL_REMOVED"] = 279] = "LAST_CREDENTIAL_REMOVED";
  PropertyIdentifier2[PropertyIdentifier2["LAST_CREDENTIAL_REMOVED_TIME"] = 280] = "LAST_CREDENTIAL_REMOVED_TIME";
  PropertyIdentifier2[PropertyIdentifier2["LAST_KEY_SERVER"] = 331] = "LAST_KEY_SERVER";
  PropertyIdentifier2[PropertyIdentifier2["LAST_NOTIFY_RECORD"] = 173] = "LAST_NOTIFY_RECORD";
  PropertyIdentifier2[PropertyIdentifier2["LAST_PRIORITY"] = 369] = "LAST_PRIORITY";
  PropertyIdentifier2[PropertyIdentifier2["LAST_RESTART_REASON"] = 196] = "LAST_RESTART_REASON";
  PropertyIdentifier2[PropertyIdentifier2["LAST_RESTORE_TIME"] = 157] = "LAST_RESTORE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["LAST_STATE_CHANGE"] = 395] = "LAST_STATE_CHANGE";
  PropertyIdentifier2[PropertyIdentifier2["LAST_USE_TIME"] = 281] = "LAST_USE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["LIFE_SAFETY_ALARM_VALUES"] = 166] = "LIFE_SAFETY_ALARM_VALUES";
  PropertyIdentifier2[PropertyIdentifier2["LIGHTING_COMMAND"] = 380] = "LIGHTING_COMMAND";
  PropertyIdentifier2[PropertyIdentifier2["LIGHTING_COMMAND_DEFAULT_PRIORITY"] = 381] = "LIGHTING_COMMAND_DEFAULT_PRIORITY";
  PropertyIdentifier2[PropertyIdentifier2["LIMIT_ENABLE"] = 52] = "LIMIT_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["LIMIT_MONITORING_INTERVAL"] = 182] = "LIMIT_MONITORING_INTERVAL";
  PropertyIdentifier2[PropertyIdentifier2["LINK_SPEED"] = 420] = "LINK_SPEED";
  PropertyIdentifier2[PropertyIdentifier2["LINK_SPEED_AUTONEGOTIATE"] = 422] = "LINK_SPEED_AUTONEGOTIATE";
  PropertyIdentifier2[PropertyIdentifier2["LINK_SPEEDS"] = 421] = "LINK_SPEEDS";
  PropertyIdentifier2[PropertyIdentifier2["LIST_OF_GROUP_MEMBERS"] = 53] = "LIST_OF_GROUP_MEMBERS";
  PropertyIdentifier2[PropertyIdentifier2["LIST_OF_OBJECT_PROPERTY_REFERENCES"] = 54] = "LIST_OF_OBJECT_PROPERTY_REFERENCES";
  PropertyIdentifier2[PropertyIdentifier2["LOCAL_DATE"] = 56] = "LOCAL_DATE";
  PropertyIdentifier2[PropertyIdentifier2["LOCAL_FORWARDING_ONLY"] = 360] = "LOCAL_FORWARDING_ONLY";
  PropertyIdentifier2[PropertyIdentifier2["LOCAL_TIME"] = 57] = "LOCAL_TIME";
  PropertyIdentifier2[PropertyIdentifier2["LOCATION"] = 58] = "LOCATION";
  PropertyIdentifier2[PropertyIdentifier2["LOCK_STATUS"] = 233] = "LOCK_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["LOCKOUT"] = 282] = "LOCKOUT";
  PropertyIdentifier2[PropertyIdentifier2["LOCKOUT_RELINQUISH_TIME"] = 283] = "LOCKOUT_RELINQUISH_TIME";
  PropertyIdentifier2[PropertyIdentifier2["LOG_BUFFER"] = 131] = "LOG_BUFFER";
  PropertyIdentifier2[PropertyIdentifier2["LOG_DEVICE_OBJECT_PROPERTY"] = 132] = "LOG_DEVICE_OBJECT_PROPERTY";
  PropertyIdentifier2[PropertyIdentifier2["LOG_INTERVAL"] = 134] = "LOG_INTERVAL";
  PropertyIdentifier2[PropertyIdentifier2["LOGGING_OBJECT"] = 183] = "LOGGING_OBJECT";
  PropertyIdentifier2[PropertyIdentifier2["LOGGING_RECORD"] = 184] = "LOGGING_RECORD";
  PropertyIdentifier2[PropertyIdentifier2["LOGGING_TYPE"] = 197] = "LOGGING_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["LOW_DIFF_LIMIT"] = 390] = "LOW_DIFF_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["LOW_LIMIT"] = 59] = "LOW_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["LOWER_DECK"] = 473] = "LOWER_DECK";
  PropertyIdentifier2[PropertyIdentifier2["MAC_ADDRESS"] = 423] = "MAC_ADDRESS";
  PropertyIdentifier2[PropertyIdentifier2["MACHINE_ROOM_ID"] = 474] = "MACHINE_ROOM_ID";
  PropertyIdentifier2[PropertyIdentifier2["MAINTENANCE_REQUIRED"] = 158] = "MAINTENANCE_REQUIRED";
  PropertyIdentifier2[PropertyIdentifier2["MAKING_CAR_CALL"] = 475] = "MAKING_CAR_CALL";
  PropertyIdentifier2[PropertyIdentifier2["MANIPULATED_VARIABLE_REFERENCE"] = 60] = "MANIPULATED_VARIABLE_REFERENCE";
  PropertyIdentifier2[PropertyIdentifier2["MANUAL_SLAVE_ADDRESS_BINDING"] = 170] = "MANUAL_SLAVE_ADDRESS_BINDING";
  PropertyIdentifier2[PropertyIdentifier2["MASKED_ALARM_VALUES"] = 234] = "MASKED_ALARM_VALUES";
  PropertyIdentifier2[PropertyIdentifier2["MAX_ACTUAL_VALUE"] = 382] = "MAX_ACTUAL_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["MAX_APDU_LENGTH_ACCEPTED"] = 62] = "MAX_APDU_LENGTH_ACCEPTED";
  PropertyIdentifier2[PropertyIdentifier2["MAX_FAILED_ATTEMPTS"] = 285] = "MAX_FAILED_ATTEMPTS";
  PropertyIdentifier2[PropertyIdentifier2["MAX_INFO_FRAMES"] = 63] = "MAX_INFO_FRAMES";
  PropertyIdentifier2[PropertyIdentifier2["MAX_MASTER"] = 64] = "MAX_MASTER";
  PropertyIdentifier2[PropertyIdentifier2["MAX_PRES_VALUE"] = 65] = "MAX_PRES_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["MAX_SEGMENTS_ACCEPTED"] = 167] = "MAX_SEGMENTS_ACCEPTED";
  PropertyIdentifier2[PropertyIdentifier2["MAXIMUM_OUTPUT"] = 61] = "MAXIMUM_OUTPUT";
  PropertyIdentifier2[PropertyIdentifier2["MAXIMUM_VALUE"] = 135] = "MAXIMUM_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["MAXIMUM_VALUE_TIMESTAMP"] = 149] = "MAXIMUM_VALUE_TIMESTAMP";
  PropertyIdentifier2[PropertyIdentifier2["MEMBER_OF"] = 159] = "MEMBER_OF";
  PropertyIdentifier2[PropertyIdentifier2["MEMBER_STATUS_FLAGS"] = 347] = "MEMBER_STATUS_FLAGS";
  PropertyIdentifier2[PropertyIdentifier2["MEMBERS"] = 286] = "MEMBERS";
  PropertyIdentifier2[PropertyIdentifier2["MIN_ACTUAL_VALUE"] = 383] = "MIN_ACTUAL_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["MIN_PRES_VALUE"] = 69] = "MIN_PRES_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["MINIMUM_OFF_TIME"] = 66] = "MINIMUM_OFF_TIME";
  PropertyIdentifier2[PropertyIdentifier2["MINIMUM_ON_TIME"] = 67] = "MINIMUM_ON_TIME";
  PropertyIdentifier2[PropertyIdentifier2["MINIMUM_OUTPUT"] = 68] = "MINIMUM_OUTPUT";
  PropertyIdentifier2[PropertyIdentifier2["MINIMUM_VALUE"] = 136] = "MINIMUM_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["MINIMUM_VALUE_TIMESTAMP"] = 150] = "MINIMUM_VALUE_TIMESTAMP";
  PropertyIdentifier2[PropertyIdentifier2["MODE"] = 160] = "MODE";
  PropertyIdentifier2[PropertyIdentifier2["MODEL_NAME"] = 70] = "MODEL_NAME";
  PropertyIdentifier2[PropertyIdentifier2["MODIFICATION_DATE"] = 71] = "MODIFICATION_DATE";
  PropertyIdentifier2[PropertyIdentifier2["MUSTER_POINT"] = 287] = "MUSTER_POINT";
  PropertyIdentifier2[PropertyIdentifier2["NEGATIVE_ACCESS_RULES"] = 288] = "NEGATIVE_ACCESS_RULES";
  PropertyIdentifier2[PropertyIdentifier2["NETWORK_ACCESS_SECURITY_POLICIES"] = 332] = "NETWORK_ACCESS_SECURITY_POLICIES";
  PropertyIdentifier2[PropertyIdentifier2["NETWORK_INTERFACE_NAME"] = 424] = "NETWORK_INTERFACE_NAME";
  PropertyIdentifier2[PropertyIdentifier2["NETWORK_NUMBER"] = 425] = "NETWORK_NUMBER";
  PropertyIdentifier2[PropertyIdentifier2["NETWORK_NUMBER_QUALITY"] = 426] = "NETWORK_NUMBER_QUALITY";
  PropertyIdentifier2[PropertyIdentifier2["NETWORK_TYPE"] = 427] = "NETWORK_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["NEXT_STOPPING_FLOOR"] = 476] = "NEXT_STOPPING_FLOOR";
  PropertyIdentifier2[PropertyIdentifier2["NODE_SUBTYPE"] = 207] = "NODE_SUBTYPE";
  PropertyIdentifier2[PropertyIdentifier2["NODE_TYPE"] = 208] = "NODE_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["NOTIFICATION_CLASS"] = 17] = "NOTIFICATION_CLASS";
  PropertyIdentifier2[PropertyIdentifier2["NOTIFICATION_THRESHOLD"] = 137] = "NOTIFICATION_THRESHOLD";
  PropertyIdentifier2[PropertyIdentifier2["NOTIFY_TYPE"] = 72] = "NOTIFY_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["NUMBER_OF_APDU_RETRIES"] = 73] = "NUMBER_OF_APDU_RETRIES";
  PropertyIdentifier2[PropertyIdentifier2["NUMBER_OF_AUTHENTICATION_POLICIES"] = 289] = "NUMBER_OF_AUTHENTICATION_POLICIES";
  PropertyIdentifier2[PropertyIdentifier2["NUMBER_OF_STATES"] = 74] = "NUMBER_OF_STATES";
  PropertyIdentifier2[PropertyIdentifier2["OBJECT_IDENTIFIER"] = 75] = "OBJECT_IDENTIFIER";
  PropertyIdentifier2[PropertyIdentifier2["OBJECT_LIST"] = 76] = "OBJECT_LIST";
  PropertyIdentifier2[PropertyIdentifier2["OBJECT_NAME"] = 77] = "OBJECT_NAME";
  PropertyIdentifier2[PropertyIdentifier2["OBJECT_PROPERTY_REFERENCE"] = 78] = "OBJECT_PROPERTY_REFERENCE";
  PropertyIdentifier2[PropertyIdentifier2["OBJECT_TYPE"] = 79] = "OBJECT_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_COUNT"] = 290] = "OCCUPANCY_COUNT";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_COUNT_ADJUST"] = 291] = "OCCUPANCY_COUNT_ADJUST";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_COUNT_ENABLE"] = 292] = "OCCUPANCY_COUNT_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_LOWER_LIMIT"] = 294] = "OCCUPANCY_LOWER_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_LOWER_LIMIT_ENFORCED"] = 295] = "OCCUPANCY_LOWER_LIMIT_ENFORCED";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_STATE"] = 296] = "OCCUPANCY_STATE";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_UPPER_LIMIT"] = 297] = "OCCUPANCY_UPPER_LIMIT";
  PropertyIdentifier2[PropertyIdentifier2["OCCUPANCY_UPPER_LIMIT_ENFORCED"] = 298] = "OCCUPANCY_UPPER_LIMIT_ENFORCED";
  PropertyIdentifier2[PropertyIdentifier2["OPERATION_DIRECTION"] = 477] = "OPERATION_DIRECTION";
  PropertyIdentifier2[PropertyIdentifier2["OPERATION_EXPECTED"] = 161] = "OPERATION_EXPECTED";
  PropertyIdentifier2[PropertyIdentifier2["OPTIONAL"] = 80] = "OPTIONAL";
  PropertyIdentifier2[PropertyIdentifier2["OUT_OF_SERVICE"] = 81] = "OUT_OF_SERVICE";
  PropertyIdentifier2[PropertyIdentifier2["OUTPUT_UNITS"] = 82] = "OUTPUT_UNITS";
  PropertyIdentifier2[PropertyIdentifier2["PACKET_REORDER_TIME"] = 333] = "PACKET_REORDER_TIME";
  PropertyIdentifier2[PropertyIdentifier2["PASSBACK_MODE"] = 300] = "PASSBACK_MODE";
  PropertyIdentifier2[PropertyIdentifier2["PASSBACK_TIMEOUT"] = 301] = "PASSBACK_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["PASSENGER_ALARM"] = 478] = "PASSENGER_ALARM";
  PropertyIdentifier2[PropertyIdentifier2["POLARITY"] = 84] = "POLARITY";
  PropertyIdentifier2[PropertyIdentifier2["PORT_FILTER"] = 363] = "PORT_FILTER";
  PropertyIdentifier2[PropertyIdentifier2["POSITIVE_ACCESS_RULES"] = 302] = "POSITIVE_ACCESS_RULES";
  PropertyIdentifier2[PropertyIdentifier2["POWER"] = 384] = "POWER";
  PropertyIdentifier2[PropertyIdentifier2["POWER_MODE"] = 479] = "POWER_MODE";
  PropertyIdentifier2[PropertyIdentifier2["PRESCALE"] = 185] = "PRESCALE";
  PropertyIdentifier2[PropertyIdentifier2["PRESENT_VALUE"] = 85] = "PRESENT_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["PRIORITY"] = 86] = "PRIORITY";
  PropertyIdentifier2[PropertyIdentifier2["PRIORITY_ARRAY"] = 87] = "PRIORITY_ARRAY";
  PropertyIdentifier2[PropertyIdentifier2["PRIORITY_FOR_WRITING"] = 88] = "PRIORITY_FOR_WRITING";
  PropertyIdentifier2[PropertyIdentifier2["PROCESS_IDENTIFIER"] = 89] = "PROCESS_IDENTIFIER";
  PropertyIdentifier2[PropertyIdentifier2["PROCESS_IDENTIFIER_FILTER"] = 361] = "PROCESS_IDENTIFIER_FILTER";
  PropertyIdentifier2[PropertyIdentifier2["PROFILE_LOCATION"] = 485] = "PROFILE_LOCATION";
  PropertyIdentifier2[PropertyIdentifier2["PROFILE_NAME"] = 168] = "PROFILE_NAME";
  PropertyIdentifier2[PropertyIdentifier2["PROGRAM_CHANGE"] = 90] = "PROGRAM_CHANGE";
  PropertyIdentifier2[PropertyIdentifier2["PROGRAM_LOCATION"] = 91] = "PROGRAM_LOCATION";
  PropertyIdentifier2[PropertyIdentifier2["PROGRAM_STATE"] = 92] = "PROGRAM_STATE";
  PropertyIdentifier2[PropertyIdentifier2["PROPERTY_LIST"] = 371] = "PROPERTY_LIST";
  PropertyIdentifier2[PropertyIdentifier2["PROPORTIONAL_CONSTANT"] = 93] = "PROPORTIONAL_CONSTANT";
  PropertyIdentifier2[PropertyIdentifier2["PROPORTIONAL_CONSTANT_UNITS"] = 94] = "PROPORTIONAL_CONSTANT_UNITS";
  PropertyIdentifier2[PropertyIdentifier2["PROTOCOL_LEVEL"] = 482] = "PROTOCOL_LEVEL";
  PropertyIdentifier2[PropertyIdentifier2["PROTOCOL_OBJECT_TYPES_SUPPORTED"] = 96] = "PROTOCOL_OBJECT_TYPES_SUPPORTED";
  PropertyIdentifier2[PropertyIdentifier2["PROTOCOL_REVISION"] = 139] = "PROTOCOL_REVISION";
  PropertyIdentifier2[PropertyIdentifier2["PROTOCOL_SERVICES_SUPPORTED"] = 97] = "PROTOCOL_SERVICES_SUPPORTED";
  PropertyIdentifier2[PropertyIdentifier2["PROTOCOL_VERSION"] = 98] = "PROTOCOL_VERSION";
  PropertyIdentifier2[PropertyIdentifier2["PULSE_RATE"] = 186] = "PULSE_RATE";
  PropertyIdentifier2[PropertyIdentifier2["READ_ONLY"] = 99] = "READ_ONLY";
  PropertyIdentifier2[PropertyIdentifier2["REASON_FOR_DISABLE"] = 303] = "REASON_FOR_DISABLE";
  PropertyIdentifier2[PropertyIdentifier2["REASON_FOR_HALT"] = 100] = "REASON_FOR_HALT";
  PropertyIdentifier2[PropertyIdentifier2["RECIPIENT_LIST"] = 102] = "RECIPIENT_LIST";
  PropertyIdentifier2[PropertyIdentifier2["RECORD_COUNT"] = 141] = "RECORD_COUNT";
  PropertyIdentifier2[PropertyIdentifier2["RECORDS_SINCE_NOTIFICATION"] = 140] = "RECORDS_SINCE_NOTIFICATION";
  PropertyIdentifier2[PropertyIdentifier2["REFERENCE_PORT"] = 483] = "REFERENCE_PORT";
  PropertyIdentifier2[PropertyIdentifier2["REGISTERED_CAR_CALL"] = 480] = "REGISTERED_CAR_CALL";
  PropertyIdentifier2[PropertyIdentifier2["RELIABILITY"] = 103] = "RELIABILITY";
  PropertyIdentifier2[PropertyIdentifier2["RELIABILITY_EVALUATION_INHIBIT"] = 357] = "RELIABILITY_EVALUATION_INHIBIT";
  PropertyIdentifier2[PropertyIdentifier2["RELINQUISH_DEFAULT"] = 104] = "RELINQUISH_DEFAULT";
  PropertyIdentifier2[PropertyIdentifier2["REPRESENTS"] = 491] = "REPRESENTS";
  PropertyIdentifier2[PropertyIdentifier2["REQUESTED_SHED_LEVEL"] = 218] = "REQUESTED_SHED_LEVEL";
  PropertyIdentifier2[PropertyIdentifier2["REQUESTED_UPDATE_INTERVAL"] = 348] = "REQUESTED_UPDATE_INTERVAL";
  PropertyIdentifier2[PropertyIdentifier2["REQUIRED"] = 105] = "REQUIRED";
  PropertyIdentifier2[PropertyIdentifier2["RESOLUTION"] = 106] = "RESOLUTION";
  PropertyIdentifier2[PropertyIdentifier2["RESTART_NOTIFICATION_RECIPIENTS"] = 202] = "RESTART_NOTIFICATION_RECIPIENTS";
  PropertyIdentifier2[PropertyIdentifier2["RESTORE_COMPLETION_TIME"] = 340] = "RESTORE_COMPLETION_TIME";
  PropertyIdentifier2[PropertyIdentifier2["RESTORE_PREPARATION_TIME"] = 341] = "RESTORE_PREPARATION_TIME";
  PropertyIdentifier2[PropertyIdentifier2["ROUTING_TABLE"] = 428] = "ROUTING_TABLE";
  PropertyIdentifier2[PropertyIdentifier2["SCALE"] = 187] = "SCALE";
  PropertyIdentifier2[PropertyIdentifier2["SCALE_FACTOR"] = 188] = "SCALE_FACTOR";
  PropertyIdentifier2[PropertyIdentifier2["SCHEDULE_DEFAULT"] = 174] = "SCHEDULE_DEFAULT";
  PropertyIdentifier2[PropertyIdentifier2["SECURED_STATUS"] = 235] = "SECURED_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["SECURITY_PDU_TIMEOUT"] = 334] = "SECURITY_PDU_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["SECURITY_TIME_WINDOW"] = 335] = "SECURITY_TIME_WINDOW";
  PropertyIdentifier2[PropertyIdentifier2["SEGMENTATION_SUPPORTED"] = 107] = "SEGMENTATION_SUPPORTED";
  PropertyIdentifier2[PropertyIdentifier2["SERIAL_NUMBER"] = 372] = "SERIAL_NUMBER";
  PropertyIdentifier2[PropertyIdentifier2["SETPOINT"] = 108] = "SETPOINT";
  PropertyIdentifier2[PropertyIdentifier2["SETPOINT_REFERENCE"] = 109] = "SETPOINT_REFERENCE";
  PropertyIdentifier2[PropertyIdentifier2["SETTING"] = 162] = "SETTING";
  PropertyIdentifier2[PropertyIdentifier2["SHED_DURATION"] = 219] = "SHED_DURATION";
  PropertyIdentifier2[PropertyIdentifier2["SHED_LEVEL_DESCRIPTIONS"] = 220] = "SHED_LEVEL_DESCRIPTIONS";
  PropertyIdentifier2[PropertyIdentifier2["SHED_LEVELS"] = 221] = "SHED_LEVELS";
  PropertyIdentifier2[PropertyIdentifier2["SILENCED"] = 163] = "SILENCED";
  PropertyIdentifier2[PropertyIdentifier2["SLAVE_ADDRESS_BINDING"] = 171] = "SLAVE_ADDRESS_BINDING";
  PropertyIdentifier2[PropertyIdentifier2["SLAVE_PROXY_ENABLE"] = 172] = "SLAVE_PROXY_ENABLE";
  PropertyIdentifier2[PropertyIdentifier2["START_TIME"] = 142] = "START_TIME";
  PropertyIdentifier2[PropertyIdentifier2["STATE_CHANGE_VALUES"] = 396] = "STATE_CHANGE_VALUES";
  PropertyIdentifier2[PropertyIdentifier2["STATE_DESCRIPTION"] = 222] = "STATE_DESCRIPTION";
  PropertyIdentifier2[PropertyIdentifier2["STATE_TEXT"] = 110] = "STATE_TEXT";
  PropertyIdentifier2[PropertyIdentifier2["STATUS_FLAGS"] = 111] = "STATUS_FLAGS";
  PropertyIdentifier2[PropertyIdentifier2["STOP_TIME"] = 143] = "STOP_TIME";
  PropertyIdentifier2[PropertyIdentifier2["STOP_WHEN_FULL"] = 144] = "STOP_WHEN_FULL";
  PropertyIdentifier2[PropertyIdentifier2["STRIKE_COUNT"] = 391] = "STRIKE_COUNT";
  PropertyIdentifier2[PropertyIdentifier2["STRUCTURED_OBJECT_LIST"] = 209] = "STRUCTURED_OBJECT_LIST";
  PropertyIdentifier2[PropertyIdentifier2["SUBORDINATE_ANNOTATIONS"] = 210] = "SUBORDINATE_ANNOTATIONS";
  PropertyIdentifier2[PropertyIdentifier2["SUBORDINATE_LIST"] = 211] = "SUBORDINATE_LIST";
  PropertyIdentifier2[PropertyIdentifier2["SUBORDINATE_NODE_TYPES"] = 487] = "SUBORDINATE_NODE_TYPES";
  PropertyIdentifier2[PropertyIdentifier2["SUBORDINATE_RELATIONSHIPS"] = 489] = "SUBORDINATE_RELATIONSHIPS";
  PropertyIdentifier2[PropertyIdentifier2["SUBORDINATE_TAGS"] = 488] = "SUBORDINATE_TAGS";
  PropertyIdentifier2[PropertyIdentifier2["SUBSCRIBED_RECIPIENTS"] = 362] = "SUBSCRIBED_RECIPIENTS";
  PropertyIdentifier2[PropertyIdentifier2["SUPPORTED_FORMAT_CLASSES"] = 305] = "SUPPORTED_FORMAT_CLASSES";
  PropertyIdentifier2[PropertyIdentifier2["SUPPORTED_FORMATS"] = 304] = "SUPPORTED_FORMATS";
  PropertyIdentifier2[PropertyIdentifier2["SUPPORTED_SECURITY_ALGORITHMS"] = 336] = "SUPPORTED_SECURITY_ALGORITHMS";
  PropertyIdentifier2[PropertyIdentifier2["SYSTEM_STATUS"] = 112] = "SYSTEM_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["TAGS"] = 486] = "TAGS";
  PropertyIdentifier2[PropertyIdentifier2["THREAT_AUTHORITY"] = 306] = "THREAT_AUTHORITY";
  PropertyIdentifier2[PropertyIdentifier2["THREAT_LEVEL"] = 307] = "THREAT_LEVEL";
  PropertyIdentifier2[PropertyIdentifier2["TIME_DELAY"] = 113] = "TIME_DELAY";
  PropertyIdentifier2[PropertyIdentifier2["TIME_DELAY_NORMAL"] = 356] = "TIME_DELAY_NORMAL";
  PropertyIdentifier2[PropertyIdentifier2["TIME_OF_ACTIVE_TIME_RESET"] = 114] = "TIME_OF_ACTIVE_TIME_RESET";
  PropertyIdentifier2[PropertyIdentifier2["TIME_OF_DEVICE_RESTART"] = 203] = "TIME_OF_DEVICE_RESTART";
  PropertyIdentifier2[PropertyIdentifier2["TIME_OF_STATE_COUNT_RESET"] = 115] = "TIME_OF_STATE_COUNT_RESET";
  PropertyIdentifier2[PropertyIdentifier2["TIME_OF_STRIKE_COUNT_RESET"] = 392] = "TIME_OF_STRIKE_COUNT_RESET";
  PropertyIdentifier2[PropertyIdentifier2["TIME_SYNCHRONIZATION_INTERVAL"] = 204] = "TIME_SYNCHRONIZATION_INTERVAL";
  PropertyIdentifier2[PropertyIdentifier2["TIME_SYNCHRONIZATION_RECIPIENTS"] = 116] = "TIME_SYNCHRONIZATION_RECIPIENTS";
  PropertyIdentifier2[PropertyIdentifier2["TIMER_RUNNING"] = 397] = "TIMER_RUNNING";
  PropertyIdentifier2[PropertyIdentifier2["TIMER_STATE"] = 398] = "TIMER_STATE";
  PropertyIdentifier2[PropertyIdentifier2["TOTAL_RECORD_COUNT"] = 145] = "TOTAL_RECORD_COUNT";
  PropertyIdentifier2[PropertyIdentifier2["TRACE_FLAG"] = 308] = "TRACE_FLAG";
  PropertyIdentifier2[PropertyIdentifier2["TRACKING_VALUE"] = 164] = "TRACKING_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["TRANSACTION_NOTIFICATION_CLASS"] = 309] = "TRANSACTION_NOTIFICATION_CLASS";
  PropertyIdentifier2[PropertyIdentifier2["TRANSITION"] = 385] = "TRANSITION";
  PropertyIdentifier2[PropertyIdentifier2["TRIGGER"] = 205] = "TRIGGER";
  PropertyIdentifier2[PropertyIdentifier2["UNITS"] = 117] = "UNITS";
  PropertyIdentifier2[PropertyIdentifier2["UPDATE_INTERVAL"] = 118] = "UPDATE_INTERVAL";
  PropertyIdentifier2[PropertyIdentifier2["UPDATE_KEY_SET_TIMEOUT"] = 337] = "UPDATE_KEY_SET_TIMEOUT";
  PropertyIdentifier2[PropertyIdentifier2["UPDATE_TIME"] = 189] = "UPDATE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["USER_EXTERNAL_IDENTIFIER"] = 310] = "USER_EXTERNAL_IDENTIFIER";
  PropertyIdentifier2[PropertyIdentifier2["USER_INFORMATION_REFERENCE"] = 311] = "USER_INFORMATION_REFERENCE";
  PropertyIdentifier2[PropertyIdentifier2["USER_NAME"] = 317] = "USER_NAME";
  PropertyIdentifier2[PropertyIdentifier2["USER_TYPE"] = 318] = "USER_TYPE";
  PropertyIdentifier2[PropertyIdentifier2["USES_REMAINING"] = 319] = "USES_REMAINING";
  PropertyIdentifier2[PropertyIdentifier2["UTC_OFFSET"] = 119] = "UTC_OFFSET";
  PropertyIdentifier2[PropertyIdentifier2["UTC_TIME_SYNCHRONIZATION_RECIPIENTS"] = 206] = "UTC_TIME_SYNCHRONIZATION_RECIPIENTS";
  PropertyIdentifier2[PropertyIdentifier2["VALID_SAMPLES"] = 146] = "VALID_SAMPLES";
  PropertyIdentifier2[PropertyIdentifier2["VALUE_BEFORE_CHANGE"] = 190] = "VALUE_BEFORE_CHANGE";
  PropertyIdentifier2[PropertyIdentifier2["VALUE_CHANGE_TIME"] = 192] = "VALUE_CHANGE_TIME";
  PropertyIdentifier2[PropertyIdentifier2["VALUE_SET"] = 191] = "VALUE_SET";
  PropertyIdentifier2[PropertyIdentifier2["VALUE_SOURCE"] = 433] = "VALUE_SOURCE";
  PropertyIdentifier2[PropertyIdentifier2["VALUE_SOURCE_ARRAY"] = 434] = "VALUE_SOURCE_ARRAY";
  PropertyIdentifier2[PropertyIdentifier2["VARIANCE_VALUE"] = 151] = "VARIANCE_VALUE";
  PropertyIdentifier2[PropertyIdentifier2["VENDOR_IDENTIFIER"] = 120] = "VENDOR_IDENTIFIER";
  PropertyIdentifier2[PropertyIdentifier2["VENDOR_NAME"] = 121] = "VENDOR_NAME";
  PropertyIdentifier2[PropertyIdentifier2["VERIFICATION_TIME"] = 326] = "VERIFICATION_TIME";
  PropertyIdentifier2[PropertyIdentifier2["VIRTUAL_MAC_ADDRESS_TABLE"] = 429] = "VIRTUAL_MAC_ADDRESS_TABLE";
  PropertyIdentifier2[PropertyIdentifier2["VT_CLASSES_SUPPORTED"] = 122] = "VT_CLASSES_SUPPORTED";
  PropertyIdentifier2[PropertyIdentifier2["WEEKLY_SCHEDULE"] = 123] = "WEEKLY_SCHEDULE";
  PropertyIdentifier2[PropertyIdentifier2["WINDOW_INTERVAL"] = 147] = "WINDOW_INTERVAL";
  PropertyIdentifier2[PropertyIdentifier2["WINDOW_SAMPLES"] = 148] = "WINDOW_SAMPLES";
  PropertyIdentifier2[PropertyIdentifier2["WRITE_STATUS"] = 370] = "WRITE_STATUS";
  PropertyIdentifier2[PropertyIdentifier2["ZONE_FROM"] = 320] = "ZONE_FROM";
  PropertyIdentifier2[PropertyIdentifier2["ZONE_MEMBERS"] = 165] = "ZONE_MEMBERS";
  PropertyIdentifier2[PropertyIdentifier2["ZONE_TO"] = 321] = "ZONE_TO";
  return PropertyIdentifier2;
})(PropertyIdentifier || {});
var ProtocolLevel = /* @__PURE__ */ ((ProtocolLevel2) => {
  ProtocolLevel2[ProtocolLevel2["PHYSICAL"] = 0] = "PHYSICAL";
  ProtocolLevel2[ProtocolLevel2["PROTOCOL"] = 1] = "PROTOCOL";
  ProtocolLevel2[ProtocolLevel2["BACNET_APPLICATION"] = 2] = "BACNET_APPLICATION";
  ProtocolLevel2[ProtocolLevel2["NON_BACNET_APPLICATION"] = 3] = "NON_BACNET_APPLICATION";
  return ProtocolLevel2;
})(ProtocolLevel || {});
var Relationship = /* @__PURE__ */ ((Relationship2) => {
  Relationship2[Relationship2["UNKNOWN"] = 0] = "UNKNOWN";
  Relationship2[Relationship2["DEFAULT"] = 1] = "DEFAULT";
  Relationship2[Relationship2["CONTAINS"] = 2] = "CONTAINS";
  Relationship2[Relationship2["CONTAINED_BY"] = 3] = "CONTAINED_BY";
  Relationship2[Relationship2["USES"] = 4] = "USES";
  Relationship2[Relationship2["USED_BY"] = 5] = "USED_BY";
  Relationship2[Relationship2["COMMANDS"] = 6] = "COMMANDS";
  Relationship2[Relationship2["COMMANDED_BY"] = 7] = "COMMANDED_BY";
  Relationship2[Relationship2["ADJUSTS"] = 8] = "ADJUSTS";
  Relationship2[Relationship2["ADJUSTED_BY"] = 9] = "ADJUSTED_BY";
  Relationship2[Relationship2["INGRESS"] = 10] = "INGRESS";
  Relationship2[Relationship2["EGRESS"] = 11] = "EGRESS";
  Relationship2[Relationship2["SUPPLIES_AIR"] = 12] = "SUPPLIES_AIR";
  Relationship2[Relationship2["RECEIVES_AIR"] = 13] = "RECEIVES_AIR";
  Relationship2[Relationship2["SUPPLIES_HOT_AIR"] = 14] = "SUPPLIES_HOT_AIR";
  Relationship2[Relationship2["RECEIVES_HOT_AIR"] = 15] = "RECEIVES_HOT_AIR";
  Relationship2[Relationship2["SUPPLIES_COOL_AIR"] = 16] = "SUPPLIES_COOL_AIR";
  Relationship2[Relationship2["RECEIVES_COOL_AIR"] = 17] = "RECEIVES_COOL_AIR";
  Relationship2[Relationship2["SUPPLIES_POWER"] = 18] = "SUPPLIES_POWER";
  Relationship2[Relationship2["RECEIVES_POWER"] = 19] = "RECEIVES_POWER";
  Relationship2[Relationship2["SUPPLIES_GAS"] = 20] = "SUPPLIES_GAS";
  Relationship2[Relationship2["RECEIVES_GAS"] = 21] = "RECEIVES_GAS";
  Relationship2[Relationship2["SUPPLIES_WATER"] = 22] = "SUPPLIES_WATER";
  Relationship2[Relationship2["RECEIVES_WATER"] = 23] = "RECEIVES_WATER";
  Relationship2[Relationship2["SUPPLIES_HOT_WATER"] = 24] = "SUPPLIES_HOT_WATER";
  Relationship2[Relationship2["RECEIVES_HOT_WATER"] = 25] = "RECEIVES_HOT_WATER";
  Relationship2[Relationship2["SUPPLIES_COOL_WATER"] = 26] = "SUPPLIES_COOL_WATER";
  Relationship2[Relationship2["RECEIVES_COOL_WATER"] = 27] = "RECEIVES_COOL_WATER";
  Relationship2[Relationship2["SUPPLIES_STEAM"] = 28] = "SUPPLIES_STEAM";
  Relationship2[Relationship2["RECEIVES_STEAM"] = 29] = "RECEIVES_STEAM";
  return Relationship2;
})(Relationship || {});
var Reliability = /* @__PURE__ */ ((Reliability2) => {
  Reliability2[Reliability2["NO_FAULT_DETECTED"] = 0] = "NO_FAULT_DETECTED";
  Reliability2[Reliability2["NO_SENSOR"] = 1] = "NO_SENSOR";
  Reliability2[Reliability2["OVER_RANGE"] = 2] = "OVER_RANGE";
  Reliability2[Reliability2["UNDER_RANGE"] = 3] = "UNDER_RANGE";
  Reliability2[Reliability2["OPEN_LOOP"] = 4] = "OPEN_LOOP";
  Reliability2[Reliability2["SHORTED_LOOP"] = 5] = "SHORTED_LOOP";
  Reliability2[Reliability2["NO_OUTPUT"] = 6] = "NO_OUTPUT";
  Reliability2[Reliability2["UNRELIABLE_OTHER"] = 7] = "UNRELIABLE_OTHER";
  Reliability2[Reliability2["PROCESS_ERROR"] = 8] = "PROCESS_ERROR";
  Reliability2[Reliability2["MULTI_STATE_FAULT"] = 9] = "MULTI_STATE_FAULT";
  Reliability2[Reliability2["CONFIGURATION_ERROR"] = 10] = "CONFIGURATION_ERROR";
  Reliability2[Reliability2["COMMUNICATION_FAILURE"] = 12] = "COMMUNICATION_FAILURE";
  Reliability2[Reliability2["MEMBER_FAULT"] = 13] = "MEMBER_FAULT";
  Reliability2[Reliability2["MONITORED_OBJECT_FAULT"] = 14] = "MONITORED_OBJECT_FAULT";
  Reliability2[Reliability2["TRIPPED"] = 15] = "TRIPPED";
  Reliability2[Reliability2["LAMP_FAILURE"] = 16] = "LAMP_FAILURE";
  Reliability2[Reliability2["ACTIVATION_FAILURE"] = 17] = "ACTIVATION_FAILURE";
  Reliability2[Reliability2["RENEW_DHCP_FAILURE"] = 18] = "RENEW_DHCP_FAILURE";
  Reliability2[Reliability2["RENEW_FD_REGISTRATION_FAILURE"] = 19] = "RENEW_FD_REGISTRATION_FAILURE";
  Reliability2[Reliability2["RESTART_AUTO_NEGOTIATION_FAILURE"] = 20] = "RESTART_AUTO_NEGOTIATION_FAILURE";
  Reliability2[Reliability2["RESTART_FAILURE"] = 21] = "RESTART_FAILURE";
  Reliability2[Reliability2["PROPRIETARY_COMMAND_FAILURE"] = 22] = "PROPRIETARY_COMMAND_FAILURE";
  Reliability2[Reliability2["FAULTS_LISTED"] = 23] = "FAULTS_LISTED";
  Reliability2[Reliability2["REFERENCED_OBJECT_FAULT"] = 24] = "REFERENCED_OBJECT_FAULT";
  return Reliability2;
})(Reliability || {});
var RestartReason = /* @__PURE__ */ ((RestartReason2) => {
  RestartReason2[RestartReason2["UNKNOWN"] = 0] = "UNKNOWN";
  RestartReason2[RestartReason2["COLDSTART"] = 1] = "COLDSTART";
  RestartReason2[RestartReason2["WARMSTART"] = 2] = "WARMSTART";
  RestartReason2[RestartReason2["DETECTED_POWER_LOST"] = 3] = "DETECTED_POWER_LOST";
  RestartReason2[RestartReason2["DETECTED_POWERED_OFF"] = 4] = "DETECTED_POWERED_OFF";
  RestartReason2[RestartReason2["HARDWARE_WATCHDOG"] = 5] = "HARDWARE_WATCHDOG";
  RestartReason2[RestartReason2["SOFTWARE_WATCHDOG"] = 6] = "SOFTWARE_WATCHDOG";
  RestartReason2[RestartReason2["SUSPENDED"] = 7] = "SUSPENDED";
  RestartReason2[RestartReason2["ACTIVATE_CHANGES"] = 8] = "ACTIVATE_CHANGES";
  return RestartReason2;
})(RestartReason || {});
var SecurityLevel = /* @__PURE__ */ ((SecurityLevel2) => {
  SecurityLevel2[SecurityLevel2["INCAPABLE"] = 0] = "INCAPABLE";
  SecurityLevel2[SecurityLevel2["PLAIN"] = 1] = "PLAIN";
  SecurityLevel2[SecurityLevel2["SIGNED"] = 2] = "SIGNED";
  SecurityLevel2[SecurityLevel2["ENCRYPTED"] = 3] = "ENCRYPTED";
  SecurityLevel2[SecurityLevel2["SIGNED_END_TO_END"] = 4] = "SIGNED_END_TO_END";
  SecurityLevel2[SecurityLevel2["ENCRYPTED_END_TO_END"] = 5] = "ENCRYPTED_END_TO_END";
  return SecurityLevel2;
})(SecurityLevel || {});
var SecurityPolicy = /* @__PURE__ */ ((SecurityPolicy2) => {
  SecurityPolicy2[SecurityPolicy2["PLAIN_NON_TRUSTED"] = 0] = "PLAIN_NON_TRUSTED";
  SecurityPolicy2[SecurityPolicy2["PLAIN_TRUSTED"] = 1] = "PLAIN_TRUSTED";
  SecurityPolicy2[SecurityPolicy2["SIGNED_TRUSTED"] = 2] = "SIGNED_TRUSTED";
  SecurityPolicy2[SecurityPolicy2["ENCRYPTED_TRUSTED"] = 3] = "ENCRYPTED_TRUSTED";
  return SecurityPolicy2;
})(SecurityPolicy || {});
var Segmentation = /* @__PURE__ */ ((Segmentation2) => {
  Segmentation2[Segmentation2["SEGMENTED_BOTH"] = 0] = "SEGMENTED_BOTH";
  Segmentation2[Segmentation2["SEGMENTED_TRANSMIT"] = 1] = "SEGMENTED_TRANSMIT";
  Segmentation2[Segmentation2["SEGMENTED_RECEIVE"] = 2] = "SEGMENTED_RECEIVE";
  Segmentation2[Segmentation2["NO_SEGMENTATION"] = 3] = "NO_SEGMENTATION";
  return Segmentation2;
})(Segmentation || {});
var ShedState = /* @__PURE__ */ ((ShedState2) => {
  ShedState2[ShedState2["SHED_INACTIVE"] = 0] = "SHED_INACTIVE";
  ShedState2[ShedState2["SHED_REQUEST_PENDING"] = 1] = "SHED_REQUEST_PENDING";
  ShedState2[ShedState2["SHED_COMPLIANT"] = 2] = "SHED_COMPLIANT";
  ShedState2[ShedState2["SHED_NON_COMPLIANT"] = 3] = "SHED_NON_COMPLIANT";
  return ShedState2;
})(ShedState || {});
var SilencedState = /* @__PURE__ */ ((SilencedState2) => {
  SilencedState2[SilencedState2["UNSILENCED"] = 0] = "UNSILENCED";
  SilencedState2[SilencedState2["AUDIBLE_SILENCED"] = 1] = "AUDIBLE_SILENCED";
  SilencedState2[SilencedState2["VISIBLE_SILENCED"] = 2] = "VISIBLE_SILENCED";
  SilencedState2[SilencedState2["ALL_SILENCED"] = 3] = "ALL_SILENCED";
  return SilencedState2;
})(SilencedState || {});
var TimerState = /* @__PURE__ */ ((TimerState2) => {
  TimerState2[TimerState2["IDLE"] = 0] = "IDLE";
  TimerState2[TimerState2["RUNNING"] = 1] = "RUNNING";
  TimerState2[TimerState2["EXPIRED"] = 2] = "EXPIRED";
  return TimerState2;
})(TimerState || {});
var TimerTransition = /* @__PURE__ */ ((TimerTransition2) => {
  TimerTransition2[TimerTransition2["NONE"] = 0] = "NONE";
  TimerTransition2[TimerTransition2["IDLE_TO_RUNNING"] = 1] = "IDLE_TO_RUNNING";
  TimerTransition2[TimerTransition2["RUNNING_TO_IDLE"] = 2] = "RUNNING_TO_IDLE";
  TimerTransition2[TimerTransition2["RUNNING_TO_RUNNING"] = 3] = "RUNNING_TO_RUNNING";
  TimerTransition2[TimerTransition2["RUNNING_TO_EXPIRED"] = 4] = "RUNNING_TO_EXPIRED";
  TimerTransition2[TimerTransition2["FORCED_TO_EXPIRED"] = 5] = "FORCED_TO_EXPIRED";
  TimerTransition2[TimerTransition2["EXPIRED_TO_IDLE"] = 6] = "EXPIRED_TO_IDLE";
  TimerTransition2[TimerTransition2["EXPIRED_TO_RUNNING"] = 7] = "EXPIRED_TO_RUNNING";
  return TimerTransition2;
})(TimerTransition || {});
var VTClass = /* @__PURE__ */ ((VTClass2) => {
  VTClass2[VTClass2["DEFAULT_TERMINAL"] = 0] = "DEFAULT_TERMINAL";
  VTClass2[VTClass2["ANSI_X3_64"] = 1] = "ANSI_X3_64";
  VTClass2[VTClass2["DEC_VT52"] = 2] = "DEC_VT52";
  VTClass2[VTClass2["DEC_VT100"] = 3] = "DEC_VT100";
  VTClass2[VTClass2["DEC_VT220"] = 4] = "DEC_VT220";
  VTClass2[VTClass2["HP_700_94"] = 5] = "HP_700_94";
  VTClass2[VTClass2["IBM_3130"] = 6] = "IBM_3130";
  return VTClass2;
})(VTClass || {});
var WriteStatus = /* @__PURE__ */ ((WriteStatus2) => {
  WriteStatus2[WriteStatus2["IDLE"] = 0] = "IDLE";
  WriteStatus2[WriteStatus2["IN_PROGRESS"] = 1] = "IN_PROGRESS";
  WriteStatus2[WriteStatus2["SUCCESSFUL"] = 2] = "SUCCESSFUL";
  WriteStatus2[WriteStatus2["FAILED"] = 3] = "FAILED";
  return WriteStatus2;
})(WriteStatus || {});
var DaysOfWeek = /* @__PURE__ */ ((DaysOfWeek2) => {
  DaysOfWeek2[DaysOfWeek2["MONDAY"] = 0] = "MONDAY";
  DaysOfWeek2[DaysOfWeek2["TUESDAY"] = 1] = "TUESDAY";
  DaysOfWeek2[DaysOfWeek2["WEDNESDAY"] = 2] = "WEDNESDAY";
  DaysOfWeek2[DaysOfWeek2["THURSDAY"] = 3] = "THURSDAY";
  DaysOfWeek2[DaysOfWeek2["FRIDAY"] = 4] = "FRIDAY";
  DaysOfWeek2[DaysOfWeek2["SATURDAY"] = 5] = "SATURDAY";
  DaysOfWeek2[DaysOfWeek2["SUNDAY"] = 6] = "SUNDAY";
  return DaysOfWeek2;
})(DaysOfWeek || {});
var EventTransitionBits = /* @__PURE__ */ ((EventTransitionBits2) => {
  EventTransitionBits2[EventTransitionBits2["TO_OFFNORMAL"] = 0] = "TO_OFFNORMAL";
  EventTransitionBits2[EventTransitionBits2["TO_FAULT"] = 1] = "TO_FAULT";
  EventTransitionBits2[EventTransitionBits2["TO_NORMAL"] = 2] = "TO_NORMAL";
  return EventTransitionBits2;
})(EventTransitionBits || {});
var LimitEnable = /* @__PURE__ */ ((LimitEnable2) => {
  LimitEnable2[LimitEnable2["LOW_LIMIT_ENABLE"] = 0] = "LOW_LIMIT_ENABLE";
  LimitEnable2[LimitEnable2["HIGH_LIMIT_ENABLE"] = 1] = "HIGH_LIMIT_ENABLE";
  return LimitEnable2;
})(LimitEnable || {});
var LogStatus = /* @__PURE__ */ ((LogStatus2) => {
  LogStatus2[LogStatus2["LOG_DISABLED"] = 0] = "LOG_DISABLED";
  LogStatus2[LogStatus2["BUFFER_PURGED"] = 1] = "BUFFER_PURGED";
  LogStatus2[LogStatus2["LOG_INTERRUPTED"] = 2] = "LOG_INTERRUPTED";
  return LogStatus2;
})(LogStatus || {});
var ObjectTypesSupported = /* @__PURE__ */ ((ObjectTypesSupported2) => {
  ObjectTypesSupported2[ObjectTypesSupported2["ANALOG_INPUT"] = 0] = "ANALOG_INPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["ANALOG_OUTPUT"] = 1] = "ANALOG_OUTPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["ANALOG_VALUE"] = 2] = "ANALOG_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["BINARY_INPUT"] = 3] = "BINARY_INPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["BINARY_OUTPUT"] = 4] = "BINARY_OUTPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["BINARY_VALUE"] = 5] = "BINARY_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["CALENDAR"] = 6] = "CALENDAR";
  ObjectTypesSupported2[ObjectTypesSupported2["COMMAND"] = 7] = "COMMAND";
  ObjectTypesSupported2[ObjectTypesSupported2["DEVICE"] = 8] = "DEVICE";
  ObjectTypesSupported2[ObjectTypesSupported2["EVENT_ENROLLMENT"] = 9] = "EVENT_ENROLLMENT";
  ObjectTypesSupported2[ObjectTypesSupported2["FILE"] = 10] = "FILE";
  ObjectTypesSupported2[ObjectTypesSupported2["GROUP"] = 11] = "GROUP";
  ObjectTypesSupported2[ObjectTypesSupported2["LOOP"] = 12] = "LOOP";
  ObjectTypesSupported2[ObjectTypesSupported2["MULTI_STATE_INPUT"] = 13] = "MULTI_STATE_INPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["MULTI_STATE_OUTPUT"] = 14] = "MULTI_STATE_OUTPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["NOTIFICATION_CLASS"] = 15] = "NOTIFICATION_CLASS";
  ObjectTypesSupported2[ObjectTypesSupported2["PROGRAM"] = 16] = "PROGRAM";
  ObjectTypesSupported2[ObjectTypesSupported2["SCHEDULE"] = 17] = "SCHEDULE";
  ObjectTypesSupported2[ObjectTypesSupported2["AVERAGING"] = 18] = "AVERAGING";
  ObjectTypesSupported2[ObjectTypesSupported2["MULTI_STATE_VALUE"] = 19] = "MULTI_STATE_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["TREND_LOG"] = 20] = "TREND_LOG";
  ObjectTypesSupported2[ObjectTypesSupported2["LIFE_SAFETY_POINT"] = 21] = "LIFE_SAFETY_POINT";
  ObjectTypesSupported2[ObjectTypesSupported2["LIFE_SAFETY_ZONE"] = 22] = "LIFE_SAFETY_ZONE";
  ObjectTypesSupported2[ObjectTypesSupported2["ACCUMULATOR"] = 23] = "ACCUMULATOR";
  ObjectTypesSupported2[ObjectTypesSupported2["PULSE_CONVERTER"] = 24] = "PULSE_CONVERTER";
  ObjectTypesSupported2[ObjectTypesSupported2["EVENT_LOG"] = 25] = "EVENT_LOG";
  ObjectTypesSupported2[ObjectTypesSupported2["GLOBAL_GROUP"] = 26] = "GLOBAL_GROUP";
  ObjectTypesSupported2[ObjectTypesSupported2["TREND_LOG_MULTIPLE"] = 27] = "TREND_LOG_MULTIPLE";
  ObjectTypesSupported2[ObjectTypesSupported2["LOAD_CONTROL"] = 28] = "LOAD_CONTROL";
  ObjectTypesSupported2[ObjectTypesSupported2["STRUCTURED_VIEW"] = 29] = "STRUCTURED_VIEW";
  ObjectTypesSupported2[ObjectTypesSupported2["ACCESS_DOOR"] = 30] = "ACCESS_DOOR";
  ObjectTypesSupported2[ObjectTypesSupported2["TIMER"] = 31] = "TIMER";
  ObjectTypesSupported2[ObjectTypesSupported2["ACCESS_CREDENTIAL"] = 32] = "ACCESS_CREDENTIAL";
  ObjectTypesSupported2[ObjectTypesSupported2["ACCESS_POINT"] = 33] = "ACCESS_POINT";
  ObjectTypesSupported2[ObjectTypesSupported2["ACCESS_RIGHTS"] = 34] = "ACCESS_RIGHTS";
  ObjectTypesSupported2[ObjectTypesSupported2["ACCESS_USER"] = 35] = "ACCESS_USER";
  ObjectTypesSupported2[ObjectTypesSupported2["ACCESS_ZONE"] = 36] = "ACCESS_ZONE";
  ObjectTypesSupported2[ObjectTypesSupported2["CREDENTIAL_DATA_INPUT"] = 37] = "CREDENTIAL_DATA_INPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["NETWORK_SECURITY"] = 38] = "NETWORK_SECURITY";
  ObjectTypesSupported2[ObjectTypesSupported2["BITSTRING_VALUE"] = 39] = "BITSTRING_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["CHARACTERSTRING_VALUE"] = 40] = "CHARACTERSTRING_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["DATEPATTERN_VALUE"] = 41] = "DATEPATTERN_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["DATE_VALUE"] = 42] = "DATE_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["DATETIMEPATTERN_VALUE"] = 43] = "DATETIMEPATTERN_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["DATETIME_VALUE"] = 44] = "DATETIME_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["INTEGER_VALUE"] = 45] = "INTEGER_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["LARGE_ANALOG_VALUE"] = 46] = "LARGE_ANALOG_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["OCTETSTRING_VALUE"] = 47] = "OCTETSTRING_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["POSITIVE_INTEGER_VALUE"] = 48] = "POSITIVE_INTEGER_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["TIMEPATTERN_VALUE"] = 49] = "TIMEPATTERN_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["TIME_VALUE"] = 50] = "TIME_VALUE";
  ObjectTypesSupported2[ObjectTypesSupported2["NOTIFICATION_FORWARDER"] = 51] = "NOTIFICATION_FORWARDER";
  ObjectTypesSupported2[ObjectTypesSupported2["ALERT_ENROLLMENT"] = 52] = "ALERT_ENROLLMENT";
  ObjectTypesSupported2[ObjectTypesSupported2["CHANNEL"] = 53] = "CHANNEL";
  ObjectTypesSupported2[ObjectTypesSupported2["LIGHTING_OUTPUT"] = 54] = "LIGHTING_OUTPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["BINARY_LIGHTING_OUTPUT"] = 55] = "BINARY_LIGHTING_OUTPUT";
  ObjectTypesSupported2[ObjectTypesSupported2["NETWORK_PORT"] = 56] = "NETWORK_PORT";
  ObjectTypesSupported2[ObjectTypesSupported2["ELEVATOR_GROUP"] = 57] = "ELEVATOR_GROUP";
  ObjectTypesSupported2[ObjectTypesSupported2["ESCALATOR"] = 58] = "ESCALATOR";
  ObjectTypesSupported2[ObjectTypesSupported2["LIFT"] = 59] = "LIFT";
  return ObjectTypesSupported2;
})(ObjectTypesSupported || {});
var ResultFlags = /* @__PURE__ */ ((ResultFlags2) => {
  ResultFlags2[ResultFlags2["FIRST_ITEM"] = 0] = "FIRST_ITEM";
  ResultFlags2[ResultFlags2["LAST_ITEM"] = 1] = "LAST_ITEM";
  ResultFlags2[ResultFlags2["MORE_ITEMS"] = 2] = "MORE_ITEMS";
  return ResultFlags2;
})(ResultFlags || {});
var ServicesSupported = /* @__PURE__ */ ((ServicesSupported2) => {
  ServicesSupported2[ServicesSupported2["ACKNOWLEDGE_ALARM"] = 0] = "ACKNOWLEDGE_ALARM";
  ServicesSupported2[ServicesSupported2["CONFIRMED_COV_NOTIFICATION"] = 1] = "CONFIRMED_COV_NOTIFICATION";
  ServicesSupported2[ServicesSupported2["CONFIRMED_EVENT_NOTIFICATION"] = 2] = "CONFIRMED_EVENT_NOTIFICATION";
  ServicesSupported2[ServicesSupported2["GET_ALARM_SUMMARY"] = 3] = "GET_ALARM_SUMMARY";
  ServicesSupported2[ServicesSupported2["GET_ENROLLMENT_SUMMARY"] = 4] = "GET_ENROLLMENT_SUMMARY";
  ServicesSupported2[ServicesSupported2["SUBSCRIBE_COV"] = 5] = "SUBSCRIBE_COV";
  ServicesSupported2[ServicesSupported2["ATOMIC_READ_FILE"] = 6] = "ATOMIC_READ_FILE";
  ServicesSupported2[ServicesSupported2["ATOMIC_WRITE_FILE"] = 7] = "ATOMIC_WRITE_FILE";
  ServicesSupported2[ServicesSupported2["ADD_LIST_ELEMENT"] = 8] = "ADD_LIST_ELEMENT";
  ServicesSupported2[ServicesSupported2["REMOVE_LIST_ELEMENT"] = 9] = "REMOVE_LIST_ELEMENT";
  ServicesSupported2[ServicesSupported2["CREATE_OBJECT"] = 10] = "CREATE_OBJECT";
  ServicesSupported2[ServicesSupported2["DELETE_OBJECT"] = 11] = "DELETE_OBJECT";
  ServicesSupported2[ServicesSupported2["READ_PROPERTY"] = 12] = "READ_PROPERTY";
  ServicesSupported2[ServicesSupported2["READ_PROPERTY_MULTIPLE"] = 14] = "READ_PROPERTY_MULTIPLE";
  ServicesSupported2[ServicesSupported2["WRITE_PROPERTY"] = 15] = "WRITE_PROPERTY";
  ServicesSupported2[ServicesSupported2["WRITE_PROPERTY_MULTIPLE"] = 16] = "WRITE_PROPERTY_MULTIPLE";
  ServicesSupported2[ServicesSupported2["DEVICE_COMMUNICATION_CONTROL"] = 17] = "DEVICE_COMMUNICATION_CONTROL";
  ServicesSupported2[ServicesSupported2["CONFIRMED_PRIVATE_TRANSFER"] = 18] = "CONFIRMED_PRIVATE_TRANSFER";
  ServicesSupported2[ServicesSupported2["CONFIRMED_TEXT_MESSAGE"] = 19] = "CONFIRMED_TEXT_MESSAGE";
  ServicesSupported2[ServicesSupported2["REINITIALIZE_DEVICE"] = 20] = "REINITIALIZE_DEVICE";
  ServicesSupported2[ServicesSupported2["VT_OPEN"] = 21] = "VT_OPEN";
  ServicesSupported2[ServicesSupported2["VT_CLOSE"] = 22] = "VT_CLOSE";
  ServicesSupported2[ServicesSupported2["VT_DATA"] = 23] = "VT_DATA";
  ServicesSupported2[ServicesSupported2["READ_PROPERTY_CONDITIONAL"] = 13] = "READ_PROPERTY_CONDITIONAL";
  ServicesSupported2[ServicesSupported2["AUTHENTICATE"] = 24] = "AUTHENTICATE";
  ServicesSupported2[ServicesSupported2["REQUEST_KEY"] = 25] = "REQUEST_KEY";
  ServicesSupported2[ServicesSupported2["I_AM"] = 26] = "I_AM";
  ServicesSupported2[ServicesSupported2["I_HAVE"] = 27] = "I_HAVE";
  ServicesSupported2[ServicesSupported2["UNCONFIRMED_COV_NOTIFICATION"] = 28] = "UNCONFIRMED_COV_NOTIFICATION";
  ServicesSupported2[ServicesSupported2["UNCONFIRMED_EVENT_NOTIFICATION"] = 29] = "UNCONFIRMED_EVENT_NOTIFICATION";
  ServicesSupported2[ServicesSupported2["UNCONFIRMED_PRIVATE_TRANSFER"] = 30] = "UNCONFIRMED_PRIVATE_TRANSFER";
  ServicesSupported2[ServicesSupported2["UNCONFIRMED_TEXT_MESSAGE"] = 31] = "UNCONFIRMED_TEXT_MESSAGE";
  ServicesSupported2[ServicesSupported2["TIME_SYNCHRONIZATION"] = 32] = "TIME_SYNCHRONIZATION";
  ServicesSupported2[ServicesSupported2["WHO_HAS"] = 33] = "WHO_HAS";
  ServicesSupported2[ServicesSupported2["WHO_IS"] = 34] = "WHO_IS";
  ServicesSupported2[ServicesSupported2["READ_RANGE"] = 35] = "READ_RANGE";
  ServicesSupported2[ServicesSupported2["UTC_TIME_SYNCHRONIZATION"] = 36] = "UTC_TIME_SYNCHRONIZATION";
  ServicesSupported2[ServicesSupported2["LIFE_SAFETY_OPERATION"] = 37] = "LIFE_SAFETY_OPERATION";
  ServicesSupported2[ServicesSupported2["SUBSCRIBE_COV_PROPERTY"] = 38] = "SUBSCRIBE_COV_PROPERTY";
  ServicesSupported2[ServicesSupported2["GET_EVENT_INFORMATION"] = 39] = "GET_EVENT_INFORMATION";
  ServicesSupported2[ServicesSupported2["WRITE_GROUP"] = 40] = "WRITE_GROUP";
  ServicesSupported2[ServicesSupported2["SUBSCRIBE_COV_PROPERTY_MULTIPLE"] = 41] = "SUBSCRIBE_COV_PROPERTY_MULTIPLE";
  ServicesSupported2[ServicesSupported2["CONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 42] = "CONFIRMED_COV_NOTIFICATION_MULTIPLE";
  ServicesSupported2[ServicesSupported2["UNCONFIRMED_COV_NOTIFICATION_MULTIPLE"] = 43] = "UNCONFIRMED_COV_NOTIFICATION_MULTIPLE";
  return ServicesSupported2;
})(ServicesSupported || {});
var StatusFlags = /* @__PURE__ */ ((StatusFlags2) => {
  StatusFlags2[StatusFlags2["IN_ALARM"] = 0] = "IN_ALARM";
  StatusFlags2[StatusFlags2["FAULT"] = 1] = "FAULT";
  StatusFlags2[StatusFlags2["OVERRIDDEN"] = 2] = "OVERRIDDEN";
  StatusFlags2[StatusFlags2["OUT_OF_SERVICE"] = 3] = "OUT_OF_SERVICE";
  return StatusFlags2;
})(StatusFlags || {});
var ApplicationTag = /* @__PURE__ */ ((ApplicationTag2) => {
  ApplicationTag2[ApplicationTag2["NULL"] = 0] = "NULL";
  ApplicationTag2[ApplicationTag2["BOOLEAN"] = 1] = "BOOLEAN";
  ApplicationTag2[ApplicationTag2["UNSIGNED_INTEGER"] = 2] = "UNSIGNED_INTEGER";
  ApplicationTag2[ApplicationTag2["SIGNED_INTEGER"] = 3] = "SIGNED_INTEGER";
  ApplicationTag2[ApplicationTag2["REAL"] = 4] = "REAL";
  ApplicationTag2[ApplicationTag2["DOUBLE"] = 5] = "DOUBLE";
  ApplicationTag2[ApplicationTag2["OCTET_STRING"] = 6] = "OCTET_STRING";
  ApplicationTag2[ApplicationTag2["CHARACTER_STRING"] = 7] = "CHARACTER_STRING";
  ApplicationTag2[ApplicationTag2["BIT_STRING"] = 8] = "BIT_STRING";
  ApplicationTag2[ApplicationTag2["ENUMERATED"] = 9] = "ENUMERATED";
  ApplicationTag2[ApplicationTag2["DATE"] = 10] = "DATE";
  ApplicationTag2[ApplicationTag2["TIME"] = 11] = "TIME";
  ApplicationTag2[ApplicationTag2["OBJECTIDENTIFIER"] = 12] = "OBJECTIDENTIFIER";
  ApplicationTag2[ApplicationTag2["EMPTYLIST"] = 100] = "EMPTYLIST";
  ApplicationTag2[ApplicationTag2["WEEKNDAY"] = 101] = "WEEKNDAY";
  ApplicationTag2[ApplicationTag2["DATERANGE"] = 102] = "DATERANGE";
  ApplicationTag2[ApplicationTag2["DATETIME"] = 103] = "DATETIME";
  ApplicationTag2[ApplicationTag2["TIMESTAMP"] = 104] = "TIMESTAMP";
  ApplicationTag2[ApplicationTag2["ERROR"] = 105] = "ERROR";
  ApplicationTag2[ApplicationTag2["DEVICE_OBJECT_PROPERTY_REFERENCE"] = 106] = "DEVICE_OBJECT_PROPERTY_REFERENCE";
  ApplicationTag2[ApplicationTag2["DEVICE_OBJECT_REFERENCE"] = 107] = "DEVICE_OBJECT_REFERENCE";
  ApplicationTag2[ApplicationTag2["OBJECT_PROPERTY_REFERENCE"] = 108] = "OBJECT_PROPERTY_REFERENCE";
  ApplicationTag2[ApplicationTag2["DESTINATION"] = 109] = "DESTINATION";
  ApplicationTag2[ApplicationTag2["RECIPIENT"] = 110] = "RECIPIENT";
  ApplicationTag2[ApplicationTag2["COV_SUBSCRIPTION"] = 111] = "COV_SUBSCRIPTION";
  ApplicationTag2[ApplicationTag2["CALENDAR_ENTRY"] = 112] = "CALENDAR_ENTRY";
  ApplicationTag2[ApplicationTag2["WEEKLY_SCHEDULE"] = 113] = "WEEKLY_SCHEDULE";
  ApplicationTag2[ApplicationTag2["SPECIAL_EVENT"] = 114] = "SPECIAL_EVENT";
  ApplicationTag2[ApplicationTag2["READ_ACCESS_SPECIFICATION"] = 115] = "READ_ACCESS_SPECIFICATION";
  ApplicationTag2[ApplicationTag2["READ_ACCESS_RESULT"] = 116] = "READ_ACCESS_RESULT";
  ApplicationTag2[ApplicationTag2["LIGHTING_COMMAND"] = 117] = "LIGHTING_COMMAND";
  ApplicationTag2[ApplicationTag2["CONTEXT_SPECIFIC_DECODED"] = 118] = "CONTEXT_SPECIFIC_DECODED";
  ApplicationTag2[ApplicationTag2["CONTEXT_SPECIFIC_ENCODED"] = 119] = "CONTEXT_SPECIFIC_ENCODED";
  ApplicationTag2[ApplicationTag2["LOG_RECORD"] = 120] = "LOG_RECORD";
  return ApplicationTag2;
})(ApplicationTag || {});
var ApplicationTagName = invertEnum(
  ApplicationTag
);
var BvlcResultFormat = /* @__PURE__ */ ((BvlcResultFormat2) => {
  BvlcResultFormat2[BvlcResultFormat2["SUCCESSFUL_COMPLETION"] = 0] = "SUCCESSFUL_COMPLETION";
  BvlcResultFormat2[BvlcResultFormat2["WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 16] = "WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK";
  BvlcResultFormat2[BvlcResultFormat2["READ_BROADCAST_DISTRIBUTION_TABLE_NAK"] = 32] = "READ_BROADCAST_DISTRIBUTION_TABLE_NAK";
  BvlcResultFormat2[BvlcResultFormat2["REGISTER_FOREIGN_DEVICE_NAK"] = 48] = "REGISTER_FOREIGN_DEVICE_NAK";
  BvlcResultFormat2[BvlcResultFormat2["READ_FOREIGN_DEVICE_TABLE_NAK"] = 64] = "READ_FOREIGN_DEVICE_TABLE_NAK";
  BvlcResultFormat2[BvlcResultFormat2["DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK"] = 80] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY_NAK";
  BvlcResultFormat2[BvlcResultFormat2["DISTRIBUTE_BROADCAST_TO_NETWORK_NAK"] = 96] = "DISTRIBUTE_BROADCAST_TO_NETWORK_NAK";
  return BvlcResultFormat2;
})(BvlcResultFormat || {});
var BvlcResultPurpose = /* @__PURE__ */ ((BvlcResultPurpose2) => {
  BvlcResultPurpose2[BvlcResultPurpose2["BVLC_RESULT"] = 0] = "BVLC_RESULT";
  BvlcResultPurpose2[BvlcResultPurpose2["WRITE_BROADCAST_DISTRIBUTION_TABLE"] = 1] = "WRITE_BROADCAST_DISTRIBUTION_TABLE";
  BvlcResultPurpose2[BvlcResultPurpose2["READ_BROADCAST_DISTRIBUTION_TABLE"] = 2] = "READ_BROADCAST_DISTRIBUTION_TABLE";
  BvlcResultPurpose2[BvlcResultPurpose2["READ_BROADCAST_DISTRIBUTION_TABLE_ACK"] = 3] = "READ_BROADCAST_DISTRIBUTION_TABLE_ACK";
  BvlcResultPurpose2[BvlcResultPurpose2["FORWARDED_NPDU"] = 4] = "FORWARDED_NPDU";
  BvlcResultPurpose2[BvlcResultPurpose2["REGISTER_FOREIGN_DEVICE"] = 5] = "REGISTER_FOREIGN_DEVICE";
  BvlcResultPurpose2[BvlcResultPurpose2["READ_FOREIGN_DEVICE_TABLE"] = 6] = "READ_FOREIGN_DEVICE_TABLE";
  BvlcResultPurpose2[BvlcResultPurpose2["READ_FOREIGN_DEVICE_TABLE_ACK"] = 7] = "READ_FOREIGN_DEVICE_TABLE_ACK";
  BvlcResultPurpose2[BvlcResultPurpose2["DELETE_FOREIGN_DEVICE_TABLE_ENTRY"] = 8] = "DELETE_FOREIGN_DEVICE_TABLE_ENTRY";
  BvlcResultPurpose2[BvlcResultPurpose2["DISTRIBUTE_BROADCAST_TO_NETWORK"] = 9] = "DISTRIBUTE_BROADCAST_TO_NETWORK";
  BvlcResultPurpose2[BvlcResultPurpose2["ORIGINAL_UNICAST_NPDU"] = 10] = "ORIGINAL_UNICAST_NPDU";
  BvlcResultPurpose2[BvlcResultPurpose2["ORIGINAL_BROADCAST_NPDU"] = 11] = "ORIGINAL_BROADCAST_NPDU";
  BvlcResultPurpose2[BvlcResultPurpose2["SECURE_BVLL"] = 12] = "SECURE_BVLL";
  return BvlcResultPurpose2;
})(BvlcResultPurpose || {});
var CharacterStringEncoding = /* @__PURE__ */ ((CharacterStringEncoding2) => {
  CharacterStringEncoding2[CharacterStringEncoding2["UTF_8"] = 0] = "UTF_8";
  CharacterStringEncoding2[CharacterStringEncoding2["MICROSOFT_DBCS"] = 1] = "MICROSOFT_DBCS";
  CharacterStringEncoding2[CharacterStringEncoding2["JIS_X_0208"] = 2] = "JIS_X_0208";
  CharacterStringEncoding2[CharacterStringEncoding2["UCS_4"] = 3] = "UCS_4";
  CharacterStringEncoding2[CharacterStringEncoding2["UCS_2"] = 4] = "UCS_2";
  CharacterStringEncoding2[CharacterStringEncoding2["ISO_8859_1"] = 5] = "ISO_8859_1";
  return CharacterStringEncoding2;
})(CharacterStringEncoding || {});
var CovType = /* @__PURE__ */ ((CovType2) => {
  CovType2[CovType2["REAL"] = 0] = "REAL";
  CovType2[CovType2["BIT_STRING"] = 1] = "BIT_STRING";
  return CovType2;
})(CovType || {});
var EnableDisable = /* @__PURE__ */ ((EnableDisable2) => {
  EnableDisable2[EnableDisable2["ENABLE"] = 0] = "ENABLE";
  EnableDisable2[EnableDisable2["DISABLE"] = 1] = "DISABLE";
  EnableDisable2[EnableDisable2["DISABLE_INITIATION"] = 2] = "DISABLE_INITIATION";
  return EnableDisable2;
})(EnableDisable || {});
var MaxApduLengthAccepted = /* @__PURE__ */ ((MaxApduLengthAccepted2) => {
  MaxApduLengthAccepted2[MaxApduLengthAccepted2["OCTETS_50"] = 0] = "OCTETS_50";
  MaxApduLengthAccepted2[MaxApduLengthAccepted2["OCTETS_128"] = 1] = "OCTETS_128";
  MaxApduLengthAccepted2[MaxApduLengthAccepted2["OCTETS_206"] = 2] = "OCTETS_206";
  MaxApduLengthAccepted2[MaxApduLengthAccepted2["OCTETS_480"] = 3] = "OCTETS_480";
  MaxApduLengthAccepted2[MaxApduLengthAccepted2["OCTETS_1024"] = 4] = "OCTETS_1024";
  MaxApduLengthAccepted2[MaxApduLengthAccepted2["OCTETS_1476"] = 5] = "OCTETS_1476";
  return MaxApduLengthAccepted2;
})(MaxApduLengthAccepted || {});
var MaxSegmentsAccepted = /* @__PURE__ */ ((MaxSegmentsAccepted2) => {
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_0"] = 0] = "SEGMENTS_0";
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_2"] = 16] = "SEGMENTS_2";
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_4"] = 32] = "SEGMENTS_4";
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_8"] = 48] = "SEGMENTS_8";
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_16"] = 64] = "SEGMENTS_16";
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_32"] = 80] = "SEGMENTS_32";
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_64"] = 96] = "SEGMENTS_64";
  MaxSegmentsAccepted2[MaxSegmentsAccepted2["SEGMENTS_65"] = 112] = "SEGMENTS_65";
  return MaxSegmentsAccepted2;
})(MaxSegmentsAccepted || {});
var NetworkLayerMessageType = /* @__PURE__ */ ((NetworkLayerMessageType2) => {
  NetworkLayerMessageType2[NetworkLayerMessageType2["WHO_IS_ROUTER_TO_NETWORK"] = 0] = "WHO_IS_ROUTER_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["I_AM_ROUTER_TO_NETWORK"] = 1] = "I_AM_ROUTER_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["I_COULD_BE_ROUTER_TO_NETWORK"] = 2] = "I_COULD_BE_ROUTER_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["REJECT_MESSAGE_TO_NETWORK"] = 3] = "REJECT_MESSAGE_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["ROUTER_BUSY_TO_NETWORK"] = 4] = "ROUTER_BUSY_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["ROUTER_AVAILABLE_TO_NETWORK"] = 5] = "ROUTER_AVAILABLE_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["INITIALIZE_ROUTING_TABLE"] = 6] = "INITIALIZE_ROUTING_TABLE";
  NetworkLayerMessageType2[NetworkLayerMessageType2["INITIALIZE_ROUTING_TABLE_ACK"] = 7] = "INITIALIZE_ROUTING_TABLE_ACK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["ESTABLISH_CONNECTION_TO_NETWORK"] = 8] = "ESTABLISH_CONNECTION_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["DISCONNECT_CONNECTION_TO_NETWORK"] = 9] = "DISCONNECT_CONNECTION_TO_NETWORK";
  NetworkLayerMessageType2[NetworkLayerMessageType2["CHALLENGE_REQUEST"] = 10] = "CHALLENGE_REQUEST";
  NetworkLayerMessageType2[NetworkLayerMessageType2["SECURITY_PAYLOAD"] = 11] = "SECURITY_PAYLOAD";
  NetworkLayerMessageType2[NetworkLayerMessageType2["SECURITY_RESPONSE"] = 12] = "SECURITY_RESPONSE";
  NetworkLayerMessageType2[NetworkLayerMessageType2["REQUEST_KEY_UPDATE"] = 13] = "REQUEST_KEY_UPDATE";
  NetworkLayerMessageType2[NetworkLayerMessageType2["UPDATE_KEY_SET"] = 14] = "UPDATE_KEY_SET";
  NetworkLayerMessageType2[NetworkLayerMessageType2["UPDATE_DISTRIBUTION_KEY"] = 15] = "UPDATE_DISTRIBUTION_KEY";
  NetworkLayerMessageType2[NetworkLayerMessageType2["REQUEST_MASTER_KEY"] = 16] = "REQUEST_MASTER_KEY";
  NetworkLayerMessageType2[NetworkLayerMessageType2["SET_MASTER_KEY"] = 17] = "SET_MASTER_KEY";
  NetworkLayerMessageType2[NetworkLayerMessageType2["WHAT_IS_NETWORK_NUMBER"] = 18] = "WHAT_IS_NETWORK_NUMBER";
  NetworkLayerMessageType2[NetworkLayerMessageType2["NETWORK_NUMBER_IS"] = 19] = "NETWORK_NUMBER_IS";
  return NetworkLayerMessageType2;
})(NetworkLayerMessageType || {});
var NpduControlBit = /* @__PURE__ */ ((NpduControlBit2) => {
  NpduControlBit2[NpduControlBit2["EXPECTING_REPLY"] = 4] = "EXPECTING_REPLY";
  NpduControlBit2[NpduControlBit2["SOURCE_SPECIFIED"] = 8] = "SOURCE_SPECIFIED";
  NpduControlBit2[NpduControlBit2["DESTINATION_SPECIFIED"] = 32] = "DESTINATION_SPECIFIED";
  NpduControlBit2[NpduControlBit2["NETWORK_LAYER_MESSAGE"] = 128] = "NETWORK_LAYER_MESSAGE";
  return NpduControlBit2;
})(NpduControlBit || {});
var NpduControlPriority = /* @__PURE__ */ ((NpduControlPriority2) => {
  NpduControlPriority2[NpduControlPriority2["NORMAL_MESSAGE"] = 0] = "NORMAL_MESSAGE";
  NpduControlPriority2[NpduControlPriority2["URGENT_MESSAGE"] = 1] = "URGENT_MESSAGE";
  NpduControlPriority2[NpduControlPriority2["CRITICAL_EQUIPMENT_MESSAGE"] = 2] = "CRITICAL_EQUIPMENT_MESSAGE";
  NpduControlPriority2[NpduControlPriority2["LIFE_SAFETY_MESSAGE"] = 3] = "LIFE_SAFETY_MESSAGE";
  return NpduControlPriority2;
})(NpduControlPriority || {});
var PduConReqBit = /* @__PURE__ */ ((PduConReqBit2) => {
  PduConReqBit2[PduConReqBit2["SEGMENTED_RESPONSE_ACCEPTED"] = 2] = "SEGMENTED_RESPONSE_ACCEPTED";
  PduConReqBit2[PduConReqBit2["MORE_FOLLOWS"] = 4] = "MORE_FOLLOWS";
  PduConReqBit2[PduConReqBit2["SEGMENTED_MESSAGE"] = 8] = "SEGMENTED_MESSAGE";
  return PduConReqBit2;
})(PduConReqBit || {});
var PduSegAckBit = /* @__PURE__ */ ((PduSegAckBit2) => {
  PduSegAckBit2[PduSegAckBit2["SERVER"] = 1] = "SERVER";
  PduSegAckBit2[PduSegAckBit2["NEGATIVE_ACK"] = 2] = "NEGATIVE_ACK";
  return PduSegAckBit2;
})(PduSegAckBit || {});
var PduType = /* @__PURE__ */ ((PduType2) => {
  PduType2[PduType2["CONFIRMED_REQUEST"] = 0] = "CONFIRMED_REQUEST";
  PduType2[PduType2["UNCONFIRMED_REQUEST"] = 16] = "UNCONFIRMED_REQUEST";
  PduType2[PduType2["SIMPLE_ACK"] = 32] = "SIMPLE_ACK";
  PduType2[PduType2["COMPLEX_ACK"] = 48] = "COMPLEX_ACK";
  PduType2[PduType2["SEGMENT_ACK"] = 64] = "SEGMENT_ACK";
  PduType2[PduType2["ERROR"] = 80] = "ERROR";
  PduType2[PduType2["REJECT"] = 96] = "REJECT";
  PduType2[PduType2["ABORT"] = 112] = "ABORT";
  return PduType2;
})(PduType || {});
var PropertyStates = /* @__PURE__ */ ((PropertyStates2) => {
  PropertyStates2[PropertyStates2["BOOLEAN_VALUE"] = 0] = "BOOLEAN_VALUE";
  PropertyStates2[PropertyStates2["BINARY_VALUE"] = 1] = "BINARY_VALUE";
  PropertyStates2[PropertyStates2["EVENT_TYPE"] = 2] = "EVENT_TYPE";
  PropertyStates2[PropertyStates2["POLARITY"] = 3] = "POLARITY";
  PropertyStates2[PropertyStates2["PROGRAM_CHANGE"] = 4] = "PROGRAM_CHANGE";
  PropertyStates2[PropertyStates2["PROGRAM_STATE"] = 5] = "PROGRAM_STATE";
  PropertyStates2[PropertyStates2["REASON_FOR_HALT"] = 6] = "REASON_FOR_HALT";
  PropertyStates2[PropertyStates2["RELIABILITY"] = 7] = "RELIABILITY";
  PropertyStates2[PropertyStates2["STATE"] = 8] = "STATE";
  PropertyStates2[PropertyStates2["SYSTEM_STATUS"] = 9] = "SYSTEM_STATUS";
  PropertyStates2[PropertyStates2["UNITS"] = 10] = "UNITS";
  PropertyStates2[PropertyStates2["UNSIGNED_VALUE"] = 11] = "UNSIGNED_VALUE";
  PropertyStates2[PropertyStates2["LIFE_SAFETY_MODE"] = 12] = "LIFE_SAFETY_MODE";
  PropertyStates2[PropertyStates2["LIFE_SAFETY_STATE"] = 13] = "LIFE_SAFETY_STATE";
  PropertyStates2[PropertyStates2["RESTART_REASON"] = 14] = "RESTART_REASON";
  PropertyStates2[PropertyStates2["DOOR_ALARM_STATE"] = 15] = "DOOR_ALARM_STATE";
  PropertyStates2[PropertyStates2["ACTION"] = 16] = "ACTION";
  PropertyStates2[PropertyStates2["DOOR_SECURED_STATUS"] = 17] = "DOOR_SECURED_STATUS";
  PropertyStates2[PropertyStates2["DOOR_STATUS"] = 18] = "DOOR_STATUS";
  PropertyStates2[PropertyStates2["DOOR_VALUE"] = 19] = "DOOR_VALUE";
  PropertyStates2[PropertyStates2["FILE_ACCESS_METHOD"] = 20] = "FILE_ACCESS_METHOD";
  PropertyStates2[PropertyStates2["LOCK_STATUS"] = 21] = "LOCK_STATUS";
  PropertyStates2[PropertyStates2["LIFE_SAFETY_OPERATION"] = 22] = "LIFE_SAFETY_OPERATION";
  PropertyStates2[PropertyStates2["MAINTENANCE"] = 23] = "MAINTENANCE";
  PropertyStates2[PropertyStates2["NODE_TYPE"] = 24] = "NODE_TYPE";
  PropertyStates2[PropertyStates2["NOTIFY_TYPE"] = 25] = "NOTIFY_TYPE";
  PropertyStates2[PropertyStates2["SECURITY_LEVEL"] = 26] = "SECURITY_LEVEL";
  PropertyStates2[PropertyStates2["SHED_STATE"] = 27] = "SHED_STATE";
  PropertyStates2[PropertyStates2["SILENCED_STATE"] = 28] = "SILENCED_STATE";
  PropertyStates2[PropertyStates2["ACCESS_EVENT"] = 30] = "ACCESS_EVENT";
  PropertyStates2[PropertyStates2["ZONE_OCCUPANCY_STATE"] = 31] = "ZONE_OCCUPANCY_STATE";
  PropertyStates2[PropertyStates2["ACCESS_CREDENTIAL_DISABLE_REASON"] = 32] = "ACCESS_CREDENTIAL_DISABLE_REASON";
  PropertyStates2[PropertyStates2["ACCESS_CREDENTIAL_DISABLE"] = 33] = "ACCESS_CREDENTIAL_DISABLE";
  PropertyStates2[PropertyStates2["AUTHENTICATION_STATUS"] = 34] = "AUTHENTICATION_STATUS";
  PropertyStates2[PropertyStates2["BACKUP_STATE"] = 36] = "BACKUP_STATE";
  PropertyStates2[PropertyStates2["WRITE_STATUS"] = 37] = "WRITE_STATUS";
  PropertyStates2[PropertyStates2["LIGHTING_IN_PROGRESS"] = 38] = "LIGHTING_IN_PROGRESS";
  PropertyStates2[PropertyStates2["LIGHTING_OPERATION"] = 39] = "LIGHTING_OPERATION";
  PropertyStates2[PropertyStates2["LIGHTING_TRANSITION"] = 40] = "LIGHTING_TRANSITION";
  PropertyStates2[PropertyStates2["INTEGER_VALUE"] = 41] = "INTEGER_VALUE";
  PropertyStates2[PropertyStates2["BINARY_LIGHTING_VALUE"] = 42] = "BINARY_LIGHTING_VALUE";
  PropertyStates2[PropertyStates2["TIMER_STATE"] = 43] = "TIMER_STATE";
  PropertyStates2[PropertyStates2["TIMER_TRANSITION"] = 44] = "TIMER_TRANSITION";
  PropertyStates2[PropertyStates2["BACNET_IP_MODE"] = 45] = "BACNET_IP_MODE";
  PropertyStates2[PropertyStates2["NETWORK_PORT_COMMAND"] = 46] = "NETWORK_PORT_COMMAND";
  PropertyStates2[PropertyStates2["NETWORK_TYPE"] = 47] = "NETWORK_TYPE";
  PropertyStates2[PropertyStates2["NETWORK_NUMBER_QUALITY"] = 48] = "NETWORK_NUMBER_QUALITY";
  PropertyStates2[PropertyStates2["ESCALATOR_OPERATION_DIRECTION"] = 49] = "ESCALATOR_OPERATION_DIRECTION";
  PropertyStates2[PropertyStates2["ESCALATOR_FAULT"] = 50] = "ESCALATOR_FAULT";
  PropertyStates2[PropertyStates2["ESCALATOR_MODE"] = 51] = "ESCALATOR_MODE";
  PropertyStates2[PropertyStates2["LIFT_CAR_DIRECTION"] = 52] = "LIFT_CAR_DIRECTION";
  PropertyStates2[PropertyStates2["LIFT_CAR_DOOR_COMMAND"] = 53] = "LIFT_CAR_DOOR_COMMAND";
  PropertyStates2[PropertyStates2["LIFT_CAR_DRIVE_STATUS"] = 54] = "LIFT_CAR_DRIVE_STATUS";
  PropertyStates2[PropertyStates2["LIFT_CAR_MODE"] = 55] = "LIFT_CAR_MODE";
  PropertyStates2[PropertyStates2["LIFT_GROUP_MODE"] = 56] = "LIFT_GROUP_MODE";
  PropertyStates2[PropertyStates2["LIFT_FAULT"] = 57] = "LIFT_FAULT";
  PropertyStates2[PropertyStates2["PROTOCOL_LEVEL"] = 58] = "PROTOCOL_LEVEL";
  PropertyStates2[PropertyStates2["EXTENDED_VALUE"] = 63] = "EXTENDED_VALUE";
  return PropertyStates2;
})(PropertyStates || {});
var ReadRangeType = /* @__PURE__ */ ((ReadRangeType2) => {
  ReadRangeType2[ReadRangeType2["BY_POSITION"] = 0] = "BY_POSITION";
  ReadRangeType2[ReadRangeType2["BY_SEQUENCE_NUMBER"] = 1] = "BY_SEQUENCE_NUMBER";
  ReadRangeType2[ReadRangeType2["BY_TIME_REFERENCE_TIME_COUNT"] = 2] = "BY_TIME_REFERENCE_TIME_COUNT";
  return ReadRangeType2;
})(ReadRangeType || {});
var ReinitializedState = /* @__PURE__ */ ((ReinitializedState2) => {
  ReinitializedState2[ReinitializedState2["COLDSTART"] = 0] = "COLDSTART";
  ReinitializedState2[ReinitializedState2["WARMSTART"] = 1] = "WARMSTART";
  ReinitializedState2[ReinitializedState2["STARTBACKUP"] = 2] = "STARTBACKUP";
  ReinitializedState2[ReinitializedState2["ENDBACKUP"] = 3] = "ENDBACKUP";
  ReinitializedState2[ReinitializedState2["STARTRESTORE"] = 4] = "STARTRESTORE";
  ReinitializedState2[ReinitializedState2["ENDRESTORE"] = 5] = "ENDRESTORE";
  ReinitializedState2[ReinitializedState2["ABORTRESTORE"] = 6] = "ABORTRESTORE";
  ReinitializedState2[ReinitializedState2["ACTIVATE_CHANGES"] = 7] = "ACTIVATE_CHANGES";
  return ReinitializedState2;
})(ReinitializedState || {});
var TimeStamp = /* @__PURE__ */ ((TimeStamp2) => {
  TimeStamp2[TimeStamp2["TIME"] = 0] = "TIME";
  TimeStamp2[TimeStamp2["SEQUENCE_NUMBER"] = 1] = "SEQUENCE_NUMBER";
  TimeStamp2[TimeStamp2["DATETIME"] = 2] = "DATETIME";
  return TimeStamp2;
})(TimeStamp || {});

// src/client.ts
var import_events2 = __toESM(require("events"));
var import_debug3 = __toESM(require("debug"));

// src/transport.ts
var import_dgram = require("dgram");
var import_events = __toESM(require("events"));
var import_debug2 = __toESM(require("debug"));
var EventEmitter = import_events.default.EventEmitter;
var debug2 = (0, import_debug2.default)("bacnet:client:debug");
var DEFAULT_BACNET_PORT = 47808;
var Transport = class extends EventEmitter {
  constructor(settings) {
    super();
    this._lastSendMessages = {};
    this._settings = settings;
    this._server = (0, import_dgram.createSocket)({
      type: "udp4",
      reuseAddr: settings.reuseAddr
    });
    this._server.on("message", (msg, rinfo) => {
      if (this.ownAddress.port === rinfo.port) {
        for (let [messageKey, earlierSentBuffer] of Object.entries(
          this._lastSendMessages
        )) {
          if (msg.equals(earlierSentBuffer)) {
            debug2(
              `server IGNORE message from ${rinfo.address}:${rinfo.port} (${messageKey}): ${msg.toString("hex")}`
            );
            return;
          }
        }
      }
      debug2(
        `server got message from ${rinfo.address}:${rinfo.port}: ${msg.toString(
          "hex"
        )}`
      );
      this.emit(
        "message",
        msg,
        rinfo.address + (rinfo.port === DEFAULT_BACNET_PORT ? "" : ":" + rinfo.port)
      );
    });
    this._server.on("listening", () => {
      this.ownAddress = this._server.address();
      debug2(
        `server listening on ${this.ownAddress.address}:${this.ownAddress.port}`
      );
      this.emit("listening", this.ownAddress);
    });
    this._server.on("error", (err) => {
      debug2("transport error", err.message);
      this.emit("error", err);
    });
    this._server.on("close", () => {
      debug2("transport closed");
      this.emit("close");
    });
  }
  getBroadcastAddress() {
    return this._settings.broadcastAddress;
  }
  getMaxPayload() {
    return 1482;
  }
  send(buffer, offset, receiver) {
    if (!receiver) {
      receiver = this.getBroadcastAddress();
      const dataToSend = Buffer.alloc(offset);
      const hrTime = process.hrtime();
      const messageKey = hrTime[0] * 1e9 + hrTime[1];
      buffer.copy(dataToSend, 0, 0, offset);
      this._lastSendMessages[messageKey] = dataToSend;
      setTimeout(() => {
        delete this._lastSendMessages[messageKey];
      }, 1e4);
    }
    const receiverAddress = typeof receiver === "string" ? receiver : receiver.address;
    const [address, port] = receiverAddress.split(":");
    debug2(
      "Send packet to " + receiver + ": " + buffer.toString("hex").substr(0, offset * 2)
    );
    this._server.send(buffer, 0, offset, +port || DEFAULT_BACNET_PORT, address);
  }
  open() {
    this._server.bind(this._settings.port, this._settings.interface, () => {
      this._server.setBroadcast(true);
    });
  }
  close() {
    this._server.close();
  }
};

// src/services/index.ts
var services_exports = {};
__export(services_exports, {
  addListElement: () => add_list_element_exports,
  alarmAcknowledge: () => alarm_acknowledge_exports,
  alarmSummary: () => alarm_summary_exports,
  atomicReadFile: () => atomic_read_file_exports,
  atomicWriteFile: () => atomic_write_file_exports,
  covNotify: () => cov_notify_exports,
  covNotifyUnconfirmed: () => cov_notify_exports,
  createObject: () => create_object_exports,
  deleteObject: () => delete_object_exports,
  deviceCommunicationControl: () => device_communication_control_exports,
  error: () => error_exports,
  eventInformation: () => event_information_exports,
  eventNotifyData: () => event_notify_data_exports,
  getEnrollmentSummary: () => get_enrollment_summary_exports,
  getEventInformation: () => get_event_information_exports,
  iAm: () => i_am_exports,
  iHave: () => i_have_exports,
  lifeSafetyOperation: () => life_safety_operation_exports,
  privateTransfer: () => private_transfer_exports,
  readProperty: () => read_property_exports,
  readPropertyMultiple: () => read_property_multiple_exports,
  readRange: () => read_range_exports,
  registerForeignDevice: () => register_foreign_device_exports,
  reinitializeDevice: () => reinitialize_device_exports,
  subscribeCov: () => subscribe_cov_exports,
  subscribeProperty: () => subscribe_property_exports,
  timeSync: () => time_sync_exports,
  timeSyncUTC: () => time_sync_exports,
  whoHas: () => who_has_exports,
  whoIs: () => who_is_exports,
  writeProperty: () => write_property_exports,
  writePropertyMultiple: () => write_property_multiple_exports
});

// src/services/add-list-element.ts
var add_list_element_exports = {};
__export(add_list_element_exports, {
  decode: () => decode,
  encode: () => encode
});

// src/asn1.ts
var import_iconv_lite = __toESM(require("iconv-lite"));

// src/enums.ts
var enums_default = enum_exports;

// src/asn1.ts
var START_YEAR = 1900;
var MAX_YEARS = 256;
var getBuffer = () => {
  return {
    buffer: Buffer.alloc(1472),
    offset: 0
  };
};
var getSignedLength = (value) => {
  if (value >= -128 && value < 128)
    return 1;
  else if (value >= -32768 && value < 32768)
    return 2;
  else if (value > -8388608 && value < 8388608)
    return 3;
  else
    return 4;
};
var getUnsignedLength = (value) => {
  if (value < 256)
    return 1;
  else if (value < 65536)
    return 2;
  else if (value < 16777216)
    return 3;
  else
    return 4;
};
var getEncodingType = (encoding, decodingBuffer, decodingOffset) => {
  switch (encoding) {
    case enums_default.CharacterStringEncoding.UCS_2:
      if (decodingBuffer && decodingBuffer[decodingOffset] === 255 && decodingBuffer[decodingOffset + 1] === 254) {
        return "ucs2";
      }
      return "UTF-16BE";
    case enums_default.CharacterStringEncoding.ISO_8859_1:
      return "latin1";
    case enums_default.CharacterStringEncoding.MICROSOFT_DBCS:
      return "cp850";
    case enums_default.CharacterStringEncoding.JIS_X_0208:
      return "Shift_JIS";
    default:
      return "utf8";
  }
};
var encodeUnsigned = (buffer, value, length) => {
  buffer.buffer.writeUIntBE(value, buffer.offset, length, true);
  buffer.offset += length;
};
var encodeBacnetUnsigned = (buffer, value) => {
  encodeUnsigned(buffer, value, getUnsignedLength(value));
};
var encodeSigned = (buffer, value, length) => {
  buffer.buffer.writeIntBE(value, buffer.offset, length, true);
  buffer.offset += length;
};
var encodeBacnetSigned = (buffer, value) => {
  encodeSigned(buffer, value, getSignedLength(value));
};
var encodeBacnetReal = (buffer, value) => {
  buffer.buffer.writeFloatBE(value, buffer.offset, true);
  buffer.offset += 4;
};
var encodeBacnetDouble = (buffer, value) => {
  buffer.buffer.writeDoubleBE(value, buffer.offset, true);
  buffer.offset += 8;
};
var decodeUnsigned = (buffer, offset, length) => {
  if (length === 0) {
    return {
      len: 0,
      value: 0
    };
  }
  return {
    len: length,
    //@ts-ignore
    value: buffer.readUIntBE(offset, length)
  };
};
var decodeEnumerated = (buffer, offset, length) => {
  return decodeUnsigned(buffer, offset, length);
};
var encodeBacnetObjectId = (buffer, objectType, instance) => {
  const value = ((objectType & enums_default.ASN1_MAX_OBJECT) << enums_default.ASN1_INSTANCE_BITS | instance & enums_default.ASN1_MAX_INSTANCE) >>> 0;
  encodeUnsigned(buffer, value, 4);
};
var encodeTag = (buffer, tagNumber, contextSpecific, lenValueType) => {
  let len = 1;
  const tmp = new Array(3);
  tmp[0] = 0;
  if (contextSpecific) {
    tmp[0] |= 8;
  }
  if (tagNumber <= 14) {
    tmp[0] |= tagNumber << 4;
  } else {
    tmp[0] |= 240;
    tmp[1] = tagNumber;
    len++;
  }
  if (lenValueType <= 4) {
    tmp[0] |= lenValueType;
    Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
    buffer.offset += len;
  } else {
    tmp[0] |= 5;
    if (lenValueType <= 253) {
      tmp[len++] = lenValueType;
      Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
      buffer.offset += len;
    } else if (lenValueType <= 65535) {
      tmp[len++] = 254;
      Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
      buffer.offset += len;
      encodeUnsigned(buffer, lenValueType, 2);
    } else {
      tmp[len++] = 255;
      Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
      buffer.offset += len;
      encodeUnsigned(buffer, lenValueType, 4);
    }
  }
};
var encodeBacnetEnumerated = (buffer, value) => {
  encodeBacnetUnsigned(buffer, value);
};
var isExtendedTagNumber = (x) => {
  return (x & 240) === 240;
};
var isExtendedValue = (x) => {
  return (x & 7) === 5;
};
var isContextSpecific = (x) => {
  return (x & 8) === 8;
};
var isOpeningTag = (x) => {
  return (x & 7) === 6;
};
var isClosingTag = (x) => {
  return (x & 7) === 7;
};
var encodeContextReal = (buffer, tagNumber, value) => {
  encodeTag(buffer, tagNumber, true, 4);
  encodeBacnetReal(buffer, value);
};
var encodeContextUnsigned = (buffer, tagNumber, value) => {
  encodeTag(buffer, tagNumber, true, getUnsignedLength(value));
  encodeBacnetUnsigned(buffer, value);
};
var encodeContextEnumerated = (buffer, tagNumber, value) => {
  encodeContextUnsigned(buffer, tagNumber, value);
};
var encodeOctetString = (buffer, octetString, octetOffset, octetCount) => {
  if (octetString) {
    for (let i = octetOffset; i < octetOffset + octetCount; i++) {
      buffer.buffer[buffer.offset++] = octetString[i];
    }
  }
};
var encodeApplicationOctetString = (buffer, octetString, octetOffset, octetCount) => {
  encodeTag(buffer, enums_default.ApplicationTag.OCTET_STRING, false, octetCount);
  encodeOctetString(buffer, octetString, octetOffset, octetCount);
};
var encodeApplicationNull = (buffer) => {
  buffer.buffer[buffer.offset++] = enums_default.ApplicationTag.NULL;
};
var encodeApplicationBoolean = (buffer, booleanValue) => {
  encodeTag(buffer, enums_default.ApplicationTag.BOOLEAN, false, booleanValue ? 1 : 0);
};
var encodeApplicationReal = (buffer, value) => {
  encodeTag(buffer, enums_default.ApplicationTag.REAL, false, 4);
  encodeBacnetReal(buffer, value);
};
var encodeApplicationDouble = (buffer, value) => {
  encodeTag(buffer, enums_default.ApplicationTag.DOUBLE, false, 8);
  encodeBacnetDouble(buffer, value);
};
var bitstringBytesUsed = (bitString) => {
  let len = 0;
  if (bitString.bitsUsed > 0) {
    const lastBit = bitString.bitsUsed - 1;
    const usedBytes = lastBit / 8 + 1;
    len = Math.floor(usedBytes);
  }
  return len;
};
var encodeApplicationObjectId = (buffer, objectType, instance) => {
  const tmp = getBuffer();
  encodeBacnetObjectId(tmp, objectType, instance);
  encodeTag(buffer, enums_default.ApplicationTag.OBJECTIDENTIFIER, false, tmp.offset);
  tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
  buffer.offset += tmp.offset;
};
var encodeApplicationUnsigned = (buffer, value) => {
  const tmp = getBuffer();
  encodeBacnetUnsigned(tmp, value);
  encodeTag(buffer, enums_default.ApplicationTag.UNSIGNED_INTEGER, false, tmp.offset);
  tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
  buffer.offset += tmp.offset;
};
var encodeApplicationEnumerated = (buffer, value) => {
  const tmp = getBuffer();
  encodeBacnetEnumerated(tmp, value);
  encodeTag(buffer, enums_default.ApplicationTag.ENUMERATED, false, tmp.offset);
  tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
  buffer.offset += tmp.offset;
};
var encodeApplicationSigned = (buffer, value) => {
  const tmp = getBuffer();
  encodeBacnetSigned(tmp, value);
  encodeTag(buffer, enums_default.ApplicationTag.SIGNED_INTEGER, false, tmp.offset);
  tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
  buffer.offset += tmp.offset;
};
var byteReverseBits = (inByte) => {
  let outByte = 0;
  if ((inByte & 1) > 0) {
    outByte |= 128;
  }
  if ((inByte & 2) > 0) {
    outByte |= 64;
  }
  if ((inByte & 4) > 0) {
    outByte |= 32;
  }
  if ((inByte & 8) > 0) {
    outByte |= 16;
  }
  if ((inByte & 16) > 0) {
    outByte |= 8;
  }
  if ((inByte & 32) > 0) {
    outByte |= 4;
  }
  if ((inByte & 64) > 0) {
    outByte |= 2;
  }
  if ((inByte & 128) > 0) {
    outByte |= 1;
  }
  return outByte;
};
var bitstringOctet = (bitString, octetIndex) => {
  let octet = 0;
  if (bitString.value && octetIndex < enums_default.ASN1_MAX_BITSTRING_BYTES) {
    octet = bitString.value[octetIndex];
  }
  return octet;
};
var encodeBitstring = (buffer, bitString) => {
  if (bitString.bitsUsed === 0) {
    buffer.buffer[buffer.offset++] = 0;
  } else {
    const usedBytes = bitstringBytesUsed(bitString);
    const remainingUsedBits = bitString.bitsUsed - (usedBytes - 1) * 8;
    buffer.buffer[buffer.offset++] = 8 - remainingUsedBits;
    for (let i = 0; i < usedBytes; i++) {
      buffer.buffer[buffer.offset++] = byteReverseBits(
        bitstringOctet(bitString, i)
      );
    }
  }
};
var encodeApplicationBitstring = (buffer, bitString) => {
  let bitStringEncodedLength = 1;
  bitStringEncodedLength += bitstringBytesUsed(bitString);
  encodeTag(
    buffer,
    enums_default.ApplicationTag.BIT_STRING,
    false,
    bitStringEncodedLength
  );
  encodeBitstring(buffer, bitString);
};
var encodeBacnetDate = (buffer, value) => {
  if (value === new Date(1, 1, 1)) {
    buffer.buffer[buffer.offset++] = 255;
    buffer.buffer[buffer.offset++] = 255;
    buffer.buffer[buffer.offset++] = 255;
    buffer.buffer[buffer.offset++] = 255;
    return;
  }
  if (value.getFullYear() >= START_YEAR) {
    buffer.buffer[buffer.offset++] = value.getFullYear() - START_YEAR;
  } else if (value.getFullYear() < MAX_YEARS) {
    buffer.buffer[buffer.offset++] = value.getFullYear();
  } else {
    throw new Error("invaide year: " + value.getFullYear());
  }
  buffer.buffer[buffer.offset++] = value.getMonth();
  buffer.buffer[buffer.offset++] = value.getDate();
  buffer.buffer[buffer.offset++] = value.getDay() === 0 ? 7 : value.getDay();
};
var encodeApplicationDate = (buffer, value) => {
  encodeTag(buffer, enums_default.ApplicationTag.DATE, false, 4);
  encodeBacnetDate(buffer, value);
};
var encodeBacnetTime = (buffer, value) => {
  buffer.buffer[buffer.offset++] = value.getHours();
  buffer.buffer[buffer.offset++] = value.getMinutes();
  buffer.buffer[buffer.offset++] = value.getSeconds();
  buffer.buffer[buffer.offset++] = value.getMilliseconds() / 10;
};
var encodeApplicationTime = (buffer, value) => {
  encodeTag(buffer, enums_default.ApplicationTag.TIME, false, 4);
  encodeBacnetTime(buffer, value);
};
var bacappEncodeDatetime = (buffer, value) => {
  if (value !== new Date(1, 1, 1)) {
    encodeApplicationDate(buffer, value);
    encodeApplicationTime(buffer, value);
  }
};
var encodeContextObjectId = (buffer, tagNumber, objectType, instance) => {
  encodeTag(buffer, tagNumber, true, 4);
  encodeBacnetObjectId(buffer, objectType, instance);
};
var encodeOpeningTag = (buffer, tagNumber) => {
  let len = 1;
  const tmp = new Array(2);
  tmp[0] = 8;
  if (tagNumber <= 14) {
    tmp[0] |= tagNumber << 4;
  } else {
    tmp[0] |= 240;
    tmp[1] = tagNumber;
    len++;
  }
  tmp[0] |= 6;
  Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
  buffer.offset += len;
};
var encodeClosingTag = (buffer, tagNumber) => {
  let len = 1;
  const tmp = new Array(2);
  tmp[0] = 8;
  if (tagNumber <= 14) {
    tmp[0] |= tagNumber << 4;
  } else {
    tmp[0] |= 240;
    tmp[1] = tagNumber;
    len++;
  }
  tmp[0] |= 7;
  Buffer.from(tmp).copy(buffer.buffer, buffer.offset, 0, len);
  buffer.offset += len;
};
var encodeReadAccessSpecification = (buffer, value) => {
  encodeContextObjectId(
    buffer,
    0,
    value.objectId.type,
    value.objectId.instance
  );
  encodeOpeningTag(buffer, 1);
  value.properties.forEach((p) => {
    encodeContextEnumerated(buffer, 0, p.id);
    if (p.index && p.index !== enums_default.ASN1_ARRAY_ALL) {
      encodeContextUnsigned(buffer, 1, p.index);
    }
  });
  encodeClosingTag(buffer, 1);
};
var encodeContextBoolean = (buffer, tagNumber, booleanValue) => {
  encodeTag(buffer, tagNumber, true, 1);
  buffer.buffer.writeUInt8(booleanValue ? 1 : 0, buffer.offset, true);
  buffer.offset += 1;
};
var encodeCovSubscription = (buffer, value) => {
  encodeOpeningTag(buffer, 0);
  encodeOpeningTag(buffer, 0);
  encodeOpeningTag(buffer, 1);
  encodeApplicationUnsigned(buffer, value.recipient.network);
  if (value.recipient.network === 65535) {
    encodeApplicationOctetString(buffer, 0, 0, 0);
  } else {
    encodeApplicationOctetString(
      buffer,
      value.recipient.address,
      0,
      value.recipient.address.length
    );
  }
  encodeClosingTag(buffer, 1);
  encodeClosingTag(buffer, 0);
  encodeContextUnsigned(buffer, 1, value.subscriptionProcessId);
  encodeClosingTag(buffer, 0);
  encodeOpeningTag(buffer, 1);
  encodeContextObjectId(
    buffer,
    0,
    value.monitoredObjectId.type,
    value.monitoredObjectId.instance
  );
  encodeContextEnumerated(buffer, 1, value.monitoredProperty.id);
  if (value.monitoredProperty.index !== enums_default.ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 2, value.monitoredProperty.index);
  }
  encodeClosingTag(buffer, 1);
  encodeContextBoolean(buffer, 2, value.issueConfirmedNotifications);
  encodeContextUnsigned(buffer, 3, value.timeRemaining);
  if (value.covIncrement > 0) {
    encodeContextReal(buffer, 4, value.covIncrement);
  }
};
var bacappEncodeApplicationData = (buffer, value) => {
  if (value.value === null) {
    value.type = enums_default.ApplicationTag.NULL;
  }
  switch (value.type) {
    case enums_default.ApplicationTag.NULL:
      encodeApplicationNull(buffer);
      break;
    case enums_default.ApplicationTag.BOOLEAN:
      encodeApplicationBoolean(buffer, value.value);
      break;
    case enums_default.ApplicationTag.UNSIGNED_INTEGER:
      encodeApplicationUnsigned(buffer, value.value);
      break;
    case enums_default.ApplicationTag.SIGNED_INTEGER:
      encodeApplicationSigned(buffer, value.value);
      break;
    case enums_default.ApplicationTag.REAL:
      encodeApplicationReal(buffer, value.value);
      break;
    case enums_default.ApplicationTag.DOUBLE:
      encodeApplicationDouble(buffer, value.value);
      break;
    case enums_default.ApplicationTag.OCTET_STRING:
      encodeApplicationOctetString(buffer, value.value, 0, value.value.length);
      break;
    case enums_default.ApplicationTag.CHARACTER_STRING:
      encodeApplicationCharacterString(buffer, value.value, value.encoding);
      break;
    case enums_default.ApplicationTag.BIT_STRING:
      encodeApplicationBitstring(buffer, value.value);
      break;
    case enums_default.ApplicationTag.ENUMERATED:
      encodeApplicationEnumerated(buffer, value.value);
      break;
    case enums_default.ApplicationTag.DATE:
      encodeApplicationDate(buffer, value.value);
      break;
    case enums_default.ApplicationTag.TIME:
      encodeApplicationTime(buffer, value.value);
      break;
    case enums_default.ApplicationTag.TIMESTAMP:
      bacappEncodeTimestamp(buffer, value.value);
      break;
    case enums_default.ApplicationTag.DATETIME:
      bacappEncodeDatetime(buffer, value.value);
      break;
    case enums_default.ApplicationTag.OBJECTIDENTIFIER:
      encodeApplicationObjectId(buffer, value.value.type, value.value.instance);
      break;
    case enums_default.ApplicationTag.COV_SUBSCRIPTION:
      encodeCovSubscription(buffer, value.value);
      break;
    case enums_default.ApplicationTag.READ_ACCESS_RESULT:
      encodeReadAccessResult(buffer, value.value);
      break;
    case enums_default.ApplicationTag.READ_ACCESS_SPECIFICATION:
      encodeReadAccessSpecification(buffer, value.value);
      break;
    case void 0:
      throw new Error(
        "Cannot encode a value if the type has not been specified"
      );
    default:
      throw "No encode for ApplicationTag type: " + enums_default.getEnumName(
        enums_default.ApplicationTag,
        value.type
      );
  }
};
var bacappEncodeDeviceObjPropertyRef = (buffer, value) => {
  encodeContextObjectId(
    buffer,
    0,
    value.objectId.type,
    value.objectId.instance
  );
  encodeContextEnumerated(buffer, 1, value.id);
  if (value.arrayIndex !== enums_default.ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 2, value.arrayIndex);
  }
  if (value.deviceIndentifier.type === enums_default.ObjectType.DEVICE) {
    encodeContextObjectId(
      buffer,
      3,
      value.deviceIndentifier.type,
      value.deviceIndentifier.instance
    );
  }
};
var bacappEncodeContextDeviceObjPropertyRef = (buffer, tagNumber, value) => {
  encodeOpeningTag(buffer, tagNumber);
  bacappEncodeDeviceObjPropertyRef(buffer, value);
  encodeClosingTag(buffer, tagNumber);
};
var bacappEncodePropertyState = (buffer, value) => {
  switch (value.type) {
    case enums_default.PropertyStates.BOOLEAN_VALUE:
      encodeContextBoolean(buffer, 0, value.state === 1);
      break;
    case enums_default.PropertyStates.BINARY_VALUE:
      encodeContextEnumerated(buffer, 1, value.state);
      break;
    case enums_default.PropertyStates.EVENT_TYPE:
      encodeContextEnumerated(buffer, 2, value.state);
      break;
    case enums_default.PropertyStates.POLARITY:
      encodeContextEnumerated(buffer, 3, value.state);
      break;
    case enums_default.PropertyStates.PROGRAM_CHANGE:
      encodeContextEnumerated(buffer, 4, value.state);
      break;
    case enums_default.PropertyStates.PROGRAM_STATE:
      encodeContextEnumerated(buffer, 5, value.state);
      break;
    case enums_default.PropertyStates.REASON_FOR_HALT:
      encodeContextEnumerated(buffer, 6, value.state);
      break;
    case enums_default.PropertyStates.RELIABILITY:
      encodeContextEnumerated(buffer, 7, value.state);
      break;
    case enums_default.PropertyStates.STATE:
      encodeContextEnumerated(buffer, 8, value.state);
      break;
    case enums_default.PropertyStates.SYSTEM_STATUS:
      encodeContextEnumerated(buffer, 9, value.state);
      break;
    case enums_default.PropertyStates.UNITS:
      encodeContextEnumerated(buffer, 10, value.state);
      break;
    case enums_default.PropertyStates.UNSIGNED_VALUE:
      encodeContextUnsigned(buffer, 11, value.state);
      break;
    case enums_default.PropertyStates.LIFE_SAFETY_MODE:
      encodeContextEnumerated(buffer, 12, value.state);
      break;
    case enums_default.PropertyStates.LIFE_SAFETY_STATE:
      encodeContextEnumerated(buffer, 13, value.state);
      break;
    default:
      break;
  }
};
var encodeContextBitstring = (buffer, tagNumber, bitString) => {
  let bitStringEncodedLength = 1;
  bitStringEncodedLength += bitstringBytesUsed(bitString);
  encodeTag(buffer, tagNumber, true, bitStringEncodedLength);
  encodeBitstring(buffer, bitString);
};
var encodeContextSigned = (buffer, tagNumber, value) => {
  encodeTag(buffer, tagNumber, true, getSignedLength(value));
  encodeBacnetSigned(buffer, value);
};
var encodeContextTime = (buffer, tagNumber, value) => {
  encodeTag(buffer, tagNumber, true, 4);
  encodeBacnetTime(buffer, value);
};
var bacappEncodeContextDatetime = (buffer, tagNumber, value) => {
  if (value !== new Date(1, 1, 1)) {
    encodeOpeningTag(buffer, tagNumber);
    bacappEncodeDatetime(buffer, value);
    encodeClosingTag(buffer, tagNumber);
  } else {
    throw new Error("wrong Datetime while bacapp encoding context");
  }
};
var decodeTagNumber = (buffer, offset) => {
  let len = 1;
  let tagNumber;
  if (isExtendedTagNumber(buffer[offset])) {
    tagNumber = buffer[offset + 1];
    len++;
  } else {
    tagNumber = buffer[offset] >> 4;
  }
  return {
    len,
    tagNumber
  };
};
var decodeIsContextTag = (buffer, offset, tagNumber) => {
  const result = decodeTagNumber(buffer, offset);
  return isContextSpecific(buffer[offset]) && result.tagNumber === tagNumber;
};
var decodeIsOpeningTagNumber = (buffer, offset, tagNumber) => {
  const result = decodeTagNumber(buffer, offset);
  return isOpeningTag(buffer[offset]) && result.tagNumber === tagNumber;
};
var decodeIsClosingTagNumber = (buffer, offset, tagNumber) => {
  const result = decodeTagNumber(buffer, offset);
  return isClosingTag(buffer[offset]) && result.tagNumber === tagNumber;
};
var decodeIsClosingTag = (buffer, offset) => {
  return (buffer[offset] & 7) === 7;
};
var decodeIsOpeningTag = (buffer, offset) => {
  return (buffer[offset] & 7) === 6;
};
var decodeObjectId = (buffer, offset, NOT_USED_NUMBER = 0) => {
  const result = decodeUnsigned(buffer, offset, 4);
  const objectType = result.value >> enums_default.ASN1_INSTANCE_BITS & enums_default.ASN1_MAX_OBJECT;
  const instance = result.value & enums_default.ASN1_MAX_INSTANCE;
  return {
    len: result.len,
    objectType,
    instance
  };
};
var decodeObjectIdSafe = (buffer, offset, lenValue) => {
  if (lenValue !== 4) {
    return {
      len: 0,
      objectType: 0,
      instance: 0
    };
  } else {
    return decodeObjectId(buffer, offset);
  }
};
var decodeTagNumberAndValue = (buffer, offset) => {
  let value;
  let result = decodeTagNumber(buffer, offset);
  let len = result.len;
  if (isExtendedValue(buffer[offset])) {
    if (buffer[offset + len] === 255) {
      len++;
      result = decodeUnsigned(buffer, offset + len, 4);
      len += result.len;
      value = result.value;
    } else if (buffer[offset + len] === 254) {
      len++;
      result = decodeUnsigned(buffer, offset + len, 2);
      len += result.len;
      value = result.value;
    } else {
      value = buffer[offset + len];
      len++;
    }
  } else if (isOpeningTag(buffer[offset])) {
    value = 0;
  } else if (isClosingTag(buffer[offset])) {
    value = 0;
  } else {
    value = buffer[offset] & 7;
  }
  return {
    len,
    tagNumber: result.tagNumber,
    value
  };
};
var bacappDecodeApplicationData = (buffer, offset, maxOffset, objectType, propertyId) => {
  if (!isContextSpecific(buffer[offset])) {
    let result = decodeTagNumberAndValue(buffer, offset);
    if (result) {
      let len = result.len;
      result = bacappDecodeData(
        buffer,
        offset + len,
        maxOffset,
        result.tagNumber,
        result.value
      );
      if (!result) {
        return void 0;
      }
      let resObj = {
        len: len + result.len,
        type: result.type,
        value: result.value
      };
      if (result.encoding !== void 0)
        resObj.encoding = result.encoding;
      return resObj;
    }
  } else {
    return bacappDecodeContextApplicationData(
      buffer,
      offset,
      maxOffset,
      objectType,
      propertyId
    );
  }
};
var encodeReadAccessResult = (buffer, value) => {
  encodeContextObjectId(
    buffer,
    0,
    value.objectId.type,
    value.objectId.instance
  );
  encodeOpeningTag(buffer, 1);
  value.values.forEach((item) => {
    encodeContextEnumerated(buffer, 2, item.property.id);
    if (item.property.index !== enums_default.ASN1_ARRAY_ALL) {
      encodeContextUnsigned(buffer, 3, item.property.index);
    }
    if (item.value && item.value[0] && item.value[0].value && item.value[0].value.type === "BacnetError") {
      encodeOpeningTag(buffer, 5);
      encodeApplicationEnumerated(buffer, item.value[0].value.errorClass);
      encodeApplicationEnumerated(buffer, item.value[0].value.errorCode);
      encodeClosingTag(buffer, 5);
    } else {
      if (!item.value)
        throw new Error("No value in item");
      encodeOpeningTag(buffer, 4);
      item.value.forEach((subItem) => {
        bacappEncodeApplicationData(buffer, subItem);
      });
      encodeClosingTag(buffer, 4);
    }
  });
  encodeClosingTag(buffer, 1);
};
var decodeReadAccessResult = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  let result = decodeObjectId(buffer, offset + len);
  value.objectId = {
    type: result.objectType,
    instance: result.instance
  };
  len += result.len;
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    return -1;
  }
  len++;
  const values = [];
  while (apduLen - len > 0) {
    let newEntry = {};
    if (decodeIsClosingTagNumber(buffer, offset + len, 1)) {
      len++;
      break;
    }
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 2) {
      return void 0;
    }
    result = decodeEnumerated(buffer, offset + len, result.value);
    newEntry.id = result.value;
    len += result.len;
    result = decodeTagNumberAndValue(buffer, offset + len);
    if (result.tagNumber === 3) {
      len += result.len;
      result = decodeUnsigned(buffer, offset + len, result.value);
      newEntry.index = result.value;
      len += result.len;
    } else {
      newEntry.index = enums_default.ASN1_ARRAY_ALL;
    }
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber === 4) {
      const localValues = [];
      while (len + offset <= buffer.length && !decodeIsClosingTagNumber(buffer, offset + len, 4)) {
        let localResult = bacappDecodeApplicationData(
          buffer,
          offset + len,
          apduLen + offset - 1,
          value.objectId.type,
          newEntry.id
        );
        if (!localResult) {
          return void 0;
        }
        len += localResult.len;
        let resObj = {
          value: localResult.value,
          type: localResult.type
        };
        if (localResult.encoding !== void 0)
          resObj.encoding = localResult.encoding;
        localValues.push(resObj);
      }
      if (!decodeIsClosingTagNumber(buffer, offset + len, 4)) {
        return void 0;
      }
      if (localValues.count === 2 && localValues[0].type === enums_default.ApplicationTag.DATE && localValues[1].type === enums_default.ApplicationTag.TIME) {
        const date = localValues[0].value;
        const time = localValues[1].value;
        const bdatetime = new Date(
          date.year,
          date.month,
          date.day,
          time.hour,
          time.minute,
          time.second,
          time.millisecond
        );
        newEntry.value = [
          { type: enums_default.ApplicationTag.DATETIME, value: bdatetime }
        ];
      } else {
        newEntry.value = localValues;
      }
      len++;
    } else if (result.tagNumber === 5) {
      let err = {};
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      result = decodeEnumerated(buffer, offset + len, result.value);
      len += result.len;
      err.errorClass = result.value;
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      result = decodeEnumerated(buffer, offset + len, result.value);
      len += result.len;
      err.errorCode = result.value;
      if (!decodeIsClosingTagNumber(buffer, offset + len, 5)) {
        return void 0;
      }
      len++;
      newEntry.value = [
        {
          type: enums_default.ApplicationTag.ERROR,
          value: err
        }
      ];
    }
    values.push(newEntry);
  }
  value.values = values;
  return {
    len,
    value
  };
};
var decodeSigned = (buffer, offset, length) => {
  return {
    len: length,
    value: buffer.readIntBE(offset, length, true)
  };
};
var decodeReal = (buffer, offset) => {
  return {
    len: 4,
    value: buffer.readFloatBE(offset, true)
  };
};
var decodeRealSafe = (buffer, offset, lenValue) => {
  if (lenValue !== 4) {
    return {
      len: lenValue,
      value: 0
    };
  } else {
    return decodeReal(buffer, offset);
  }
};
var decodeDouble = (buffer, offset) => {
  return {
    len: 8,
    value: buffer.readDoubleBE(offset, true)
  };
};
var decodeDoubleSafe = (buffer, offset, lenValue) => {
  if (lenValue !== 8) {
    return {
      len: lenValue,
      value: 0
    };
  } else {
    return decodeDouble(buffer, offset);
  }
};
var decodeOctetString = (buffer, offset, maxLength, octetStringOffset, octetStringLength) => {
  const octetString = [];
  for (let i = octetStringOffset; i < octetStringOffset + octetStringLength; i++) {
    octetString.push(buffer[offset + i]);
  }
  return {
    len: octetStringLength,
    value: octetString
  };
};
var multiCharsetCharacterstringDecode = (buffer, offset, maxLength, encoding, length) => {
  const stringBuf = Buffer.alloc(length);
  buffer.copy(stringBuf, 0, offset, offset + length);
  return {
    value: import_iconv_lite.default.decode(stringBuf, getEncodingType(encoding, buffer, offset)),
    len: length + 1,
    encoding
  };
};
var decodeCharacterString = (buffer, offset, maxLength, lenValue) => {
  return multiCharsetCharacterstringDecode(
    buffer,
    offset + 1,
    maxLength,
    buffer[offset],
    lenValue - 1
  );
};
var bitstringSetBitsUsed = (bitString, bytesUsed, unusedBits) => {
  bitString.bitsUsed = bytesUsed * 8;
  bitString.bitsUsed -= unusedBits;
};
var decodeBitstring = (buffer, offset, lenValue) => {
  let len = 0;
  let bitString = {};
  bitString.value = [];
  if (lenValue > 0) {
    const bytesUsed = lenValue - 1;
    if (bytesUsed <= enums_default.ASN1_MAX_BITSTRING_BYTES) {
      len = 1;
      for (let i = 0; i < bytesUsed; i++) {
        bitString.value.push(byteReverseBits(buffer[offset + len++]));
      }
      const unusedBits = buffer[offset] & 7;
      bitstringSetBitsUsed(bitString, bytesUsed, unusedBits);
    }
  }
  return {
    len,
    value: bitString
  };
};
var decodeDate = (buffer, offset) => {
  let date;
  const year = buffer[offset] + 1900;
  const month = buffer[offset + 1];
  const day = buffer[offset + 2];
  const wday = buffer[offset + 3];
  if (month === 255 && day === 255 && wday === 255 && year - 1900 === 255) {
    date = new Date(1, 1, 1);
  } else {
    date = new Date(year, month, day);
  }
  return {
    len: 4,
    value: date
  };
};
var decodeDateSafe = (buffer, offset, lenValue) => {
  if (lenValue !== 4) {
    return {
      len: lenValue,
      value: new Date(1, 1, 1)
    };
  } else {
    return decodeDate(buffer, offset);
  }
};
var decodeApplicationDate = (buffer, offset) => {
  const result = decodeTagNumber(buffer, offset);
  if (result.tagNumber === enums_default.ApplicationTag.DATE) {
    const value = decodeDate(buffer, offset + 1);
    return {
      len: value.len + 1,
      value
    };
  }
  return void 0;
};
var decodeBacnetTime = (buffer, offset, value = new Date(1, 1, 1)) => {
  const hour = buffer[offset + 0];
  const min = buffer[offset + 1];
  const sec = buffer[offset + 2];
  let hundredths = buffer[offset + 3];
  if (hour === 255 && min === 255 && sec === 255 && hundredths === 255) {
    value = new Date(1, 1, 1);
  } else {
    if (hundredths > 100)
      hundredths = 0;
    value = new Date(1, 1, 1, hour, min, sec, hundredths * 10);
  }
  return {
    len: 4,
    value
  };
};
var decodeBacnetTimeSafe = (buffer, offset, lenValue) => {
  if (lenValue !== 4) {
    return {
      len: lenValue,
      value: new Date(1, 1, 1)
    };
  } else {
    return decodeBacnetTime(buffer, offset);
  }
};
var decodeApplicationTime = (buffer, offset) => {
  const result = decodeTagNumber(buffer, offset);
  if (result.tagNumber === enums_default.ApplicationTag.TIME) {
    const value = decodeBacnetTime(buffer, offset + 1);
    return {
      len: value.len + 1,
      value
    };
  }
  return void 0;
};
var decodeBacnetDatetime = (buffer, offset) => {
  let len = 0;
  const date = decodeApplicationDate(buffer, offset + len);
  len += date.len;
  const time = decodeApplicationTime(buffer, offset + len);
  len += time.len;
  return {
    len,
    value: new Date(
      date.year,
      date.month,
      date.day,
      time.hour,
      time.minute,
      time.second,
      time.millisecond
    )
  };
};
var bacappDecodeData = (buffer, offset, maxLength, tagDataType, lenValueType) => {
  let result;
  let value = {
    len: 0,
    type: tagDataType
  };
  switch (tagDataType) {
    case enums_default.ApplicationTag.NULL:
      value.value = null;
      break;
    case enums_default.ApplicationTag.BOOLEAN:
      value.value = lenValueType > 0;
      break;
    case enums_default.ApplicationTag.UNSIGNED_INTEGER:
      result = decodeUnsigned(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.SIGNED_INTEGER:
      result = decodeSigned(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.REAL:
      result = decodeRealSafe(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.DOUBLE:
      result = decodeDoubleSafe(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.OCTET_STRING:
      result = decodeOctetString(buffer, offset, maxLength, 0, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.CHARACTER_STRING:
      result = decodeCharacterString(buffer, offset, maxLength, lenValueType);
      value.len += result.len;
      value.value = result.value;
      value.encoding = result.encoding;
      break;
    case enums_default.ApplicationTag.BIT_STRING:
      result = decodeBitstring(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.ENUMERATED:
      result = decodeEnumerated(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.DATE:
      result = decodeDateSafe(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.TIME:
      result = decodeBacnetTimeSafe(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = result.value;
      break;
    case enums_default.ApplicationTag.OBJECTIDENTIFIER:
      result = decodeObjectIdSafe(buffer, offset, lenValueType);
      value.len += result.len;
      value.value = { type: result.objectType, instance: result.instance };
      break;
    default:
      break;
  }
  return value;
};
var bacappContextTagType = (property, tagNumber) => {
  let tag = 0;
  switch (property) {
    case enums_default.PropertyIdentifier.ACTUAL_SHED_LEVEL:
    case enums_default.PropertyIdentifier.REQUESTED_SHED_LEVEL:
    case enums_default.PropertyIdentifier.EXPECTED_SHED_LEVEL:
      switch (tagNumber) {
        case 0:
        case 1:
          tag = enums_default.ApplicationTag.UNSIGNED_INTEGER;
          break;
        case 2:
          tag = enums_default.ApplicationTag.REAL;
          break;
        default:
          break;
      }
      break;
    case enums_default.PropertyIdentifier.ACTION:
      switch (tagNumber) {
        case 0:
        case 1:
          tag = enums_default.ApplicationTag.OBJECTIDENTIFIER;
          break;
        case 2:
          tag = enums_default.ApplicationTag.ENUMERATED;
          break;
        case 3:
        case 5:
        case 6:
          tag = enums_default.ApplicationTag.UNSIGNED_INTEGER;
          break;
        case 7:
        case 8:
          tag = enums_default.ApplicationTag.BOOLEAN;
          break;
        default:
          break;
      }
      break;
    case enums_default.PropertyIdentifier.LIST_OF_GROUP_MEMBERS:
      switch (tagNumber) {
        case 0:
          tag = enums_default.ApplicationTag.OBJECTIDENTIFIER;
          break;
        default:
          break;
      }
      break;
    case enums_default.PropertyIdentifier.EXCEPTION_SCHEDULE:
      switch (tagNumber) {
        case 1:
          tag = enums_default.ApplicationTag.OBJECTIDENTIFIER;
          break;
        case 3:
          tag = enums_default.ApplicationTag.UNSIGNED_INTEGER;
          break;
        default:
          break;
      }
      break;
    case enums_default.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY:
      switch (tagNumber) {
        case 0:
        case 3:
          tag = enums_default.ApplicationTag.OBJECTIDENTIFIER;
          break;
        case 1:
          tag = enums_default.ApplicationTag.ENUMERATED;
          break;
        case 2:
          tag = enums_default.ApplicationTag.UNSIGNED_INTEGER;
          break;
        default:
          break;
      }
      break;
    case enums_default.PropertyIdentifier.SUBORDINATE_LIST:
      switch (tagNumber) {
        case 0:
        case 1:
          tag = enums_default.ApplicationTag.OBJECTIDENTIFIER;
          break;
        default:
          break;
      }
      break;
    case enums_default.PropertyIdentifier.RECIPIENT_LIST:
      switch (tagNumber) {
        case 0:
          tag = enums_default.ApplicationTag.OBJECTIDENTIFIER;
          break;
        default:
          break;
      }
      break;
    case enums_default.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS:
      switch (tagNumber) {
        case 0:
        case 1:
          break;
        case 2:
          tag = enums_default.ApplicationTag.BOOLEAN;
          break;
        case 3:
          tag = enums_default.ApplicationTag.UNSIGNED_INTEGER;
          break;
        case 4:
          tag = enums_default.ApplicationTag.REAL;
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
  return tag;
};
var decodeDeviceObjPropertyRef = (buffer, offset, NOTUSEDARG = 0) => {
  let len = 0;
  let arrayIndex = enums_default.ASN1_ARRAY_ALL;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  let objectId = decodeObjectId(buffer, offset + len);
  len += objectId.len;
  let result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  let id = decodeEnumerated(buffer, offset + len, result.value);
  len += id.len;
  result = decodeTagNumberAndValue(buffer, offset + len);
  if (result.tagNumber === 2) {
    len += result.len;
    arrayIndex = decodeUnsigned(buffer, offset + len, result.value);
    len += arrayIndex.len;
  }
  if (decodeIsContextTag(buffer, offset + len, 3)) {
    if (!isClosingTag(buffer[offset + len])) {
      len++;
      objectId = decodeObjectId(buffer, offset + len);
      len += objectId.len;
    }
  }
  return {
    len,
    value: {
      objectId,
      id
    }
  };
};
var decodeReadAccessSpecification = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  let decodedValue = decodeObjectId(buffer, offset + len);
  value.objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  len += decodedValue.len;
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  const propertyIdAndArrayIndex = [];
  while (apduLen - len > 1 && !decodeIsClosingTagNumber(buffer, offset + len, 1)) {
    let propertyRef = {};
    if (!isContextSpecific(buffer[offset + len])) {
      return void 0;
    }
    let result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 0) {
      return void 0;
    }
    if (len + result.value >= apduLen) {
      return void 0;
    }
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    propertyRef.id = decodedValue.value;
    len += decodedValue.len;
    propertyRef.index = enums_default.ASN1_ARRAY_ALL;
    if (isContextSpecific(buffer[offset + len]) && !isClosingTag(buffer[offset + len])) {
      const tmp = decodeTagNumberAndValue(buffer, offset + len);
      if (tmp.tagNumber === 1) {
        len += tmp.len;
        if (len + tmp.value >= apduLen) {
          return void 0;
        }
        decodedValue = decodeUnsigned(buffer, offset + len, tmp.value);
        propertyRef.index = decodedValue.value;
        len += decodedValue.len;
      }
    }
    propertyIdAndArrayIndex.push(propertyRef);
  }
  if (!decodeIsClosingTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  value.properties = propertyIdAndArrayIndex;
  return {
    len,
    value
  };
};
var decodeCovSubscription = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  let result;
  let decodedValue;
  value.recipient = {};
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== enums_default.ApplicationTag.UNSIGNED_INTEGER) {
    return void 0;
  }
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.recipient.net = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== enums_default.ApplicationTag.OCTET_STRING) {
    return void 0;
  }
  decodedValue = decodeOctetString(
    buffer,
    offset + len,
    apduLen,
    0,
    result.value
  );
  len += decodedValue.len;
  value.recipient.adr = decodedValue.value;
  if (!decodeIsClosingTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  if (!decodeIsClosingTagNumber(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.subscriptionProcessId = decodedValue.value;
  if (!decodeIsClosingTagNumber(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 0) {
    return void 0;
  }
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.monitoredObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.monitoredProperty = {};
  value.monitoredProperty.id = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  if (result.tagNumber === 2) {
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.monitoredProperty.index = decodedValue.value;
  } else {
    value.monitoredProperty.index = enums_default.ASN1_ARRAY_ALL;
  }
  if (!decodeIsClosingTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 2) {
    return void 0;
  }
  value.issueConfirmedNotifications = buffer[offset + len] > 0;
  len++;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 3) {
    return void 0;
  }
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.timeRemaining = decodedValue.value;
  if (len < apduLen && !isClosingTag(buffer[offset + len])) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 4) {
      return void 0;
    }
    decodedValue = decodeReal(buffer, offset + len);
    len += decodedValue.len;
    value.covIncrement = decodedValue.value;
  }
  return {
    len,
    value
  };
};
var decodeCalendarDate = (buffer, offset) => {
  return {
    len: 4,
    year: buffer[offset],
    month: buffer[offset + 1],
    day: buffer[offset + 2],
    wday: buffer[offset + 3]
  };
};
var decodeCalendarDateRange = (buffer, offset) => {
  let len = 1;
  const startDate = decodeDate(buffer, offset + len);
  len += startDate.len + 1;
  const endDate = decodeDate(buffer, offset + len);
  len += endDate.len + 1;
  return {
    len,
    startDate,
    endDate
  };
};
var decodeCalendarWeekDay = (buffer, offset) => {
  return {
    len: 3,
    month: buffer[offset],
    week: buffer[offset + 1],
    wday: buffer[offset + 2]
  };
};
var decodeCalendar = (buffer, offset, apduLen) => {
  let len = 0;
  const entries = [];
  let decodedValue;
  while (len < apduLen) {
    const result = decodeTagNumber(buffer, offset + len);
    len += result.len;
    switch (result.tagNumber) {
      case 0:
        decodedValue = decodeCalendarDate(buffer, offset + len);
        len += decodedValue.len;
        entries.push(decodedValue);
        break;
      case 1:
        decodedValue = decodeCalendarDateRange(buffer, offset + len);
        len += decodedValue.len;
        entries.push(decodedValue);
        break;
      case 2:
        decodedValue = decodeCalendarWeekDay(buffer, offset + len);
        len += decodedValue.len;
        entries.push(decodedValue);
        break;
      default:
        return {
          len: len - 1,
          value: entries
        };
    }
  }
};
var bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectType, propertyId) => {
  let len = 0;
  let result;
  if (isContextSpecific(buffer[offset])) {
    if (propertyId === enums_default.PropertyIdentifier.LIST_OF_GROUP_MEMBERS) {
      result = decodeReadAccessSpecification(buffer, offset, maxOffset);
      if (!result) {
        return void 0;
      }
      return {
        type: enums_default.ApplicationTag.READ_ACCESS_SPECIFICATION,
        value: result.value,
        len: result.len
      };
    } else if (propertyId === enums_default.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS) {
      result = decodeCovSubscription(buffer, offset, maxOffset);
      if (!result) {
        return void 0;
      }
      return {
        type: enums_default.ApplicationTag.COV_SUBSCRIPTION,
        value: result.value,
        len: result.len
      };
    } else if (objectType === enums_default.ObjectType.GROUP && propertyId === enums_default.PropertyIdentifier.PRESENT_VALUE) {
      result = decodeReadAccessResult(buffer, offset, maxOffset);
      if (!result) {
        return void 0;
      }
      return {
        type: enums_default.ApplicationTag.READ_ACCESS_RESULT,
        value: result.value,
        len: result.len
      };
    } else if (propertyId === enums_default.PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES || propertyId === enums_default.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY || propertyId === enums_default.PropertyIdentifier.OBJECT_PROPERTY_REFERENCE) {
      result = decodeDeviceObjPropertyRef(buffer, offset, maxOffset);
      if (!result) {
        return void 0;
      }
      return {
        type: enums_default.ApplicationTag.OBJECT_PROPERTY_REFERENCE,
        value: result.value,
        len: result.len
      };
    } else if (propertyId === enums_default.PropertyIdentifier.DATE_LIST) {
      result = decodeCalendar(buffer, offset, maxOffset);
      if (!result) {
        return void 0;
      }
      return {
        type: enums_default.ApplicationTag.CONTEXT_SPECIFIC_DECODED,
        value: result.value,
        len: result.len
      };
    } else if (propertyId === enums_default.PropertyIdentifier.EVENT_TIME_STAMPS) {
      let subEvtResult;
      let evtResult = decodeTagNumberAndValue(buffer, offset + len);
      len += 1;
      if (evtResult.tagNumber === 0) {
        subEvtResult = decodeBacnetTime(buffer, offset + 1);
        return {
          type: enums_default.ApplicationTag.TIMESTAMP,
          value: subEvtResult.value,
          len: subEvtResult.len + 1
        };
      } else if (evtResult.tagNumber === 1) {
        subEvtResult = decodeUnsigned(buffer, offset + len, evtResult.value);
        return {
          type: enums_default.ApplicationTag.UNSIGNED_INTEGER,
          value: subEvtResult.value,
          len: subEvtResult.len + 1
        };
      } else if (evtResult.tagNumber === 2) {
        subEvtResult = decodeBacnetDatetime(buffer, offset + len);
        return {
          type: enums_default.ApplicationTag.TIMESTAMP,
          value: subEvtResult.value,
          len: subEvtResult.len + 2
        };
      } else {
        return void 0;
      }
    }
    const list = [];
    let tagResult = decodeTagNumberAndValue(buffer, offset + len);
    let multipleValues = isOpeningTag(buffer[offset + len]);
    while (len + offset <= maxOffset && !isClosingTag(buffer[offset + len])) {
      let subResult = decodeTagNumberAndValue(buffer, offset + len);
      if (!subResult) {
        return void 0;
      }
      if (subResult.value === 0) {
        len += subResult.len;
        result = bacappDecodeApplicationData(
          buffer,
          offset + len,
          maxOffset,
          enums_default.ASN1_MAX_OBJECT_TYPE,
          enums_default.ASN1_MAX_PROPERTY_ID
        );
        if (!result) {
          return void 0;
        }
        list.push(result);
        len += result.len;
      } else {
        const overrideTagNumber = bacappContextTagType(
          propertyId,
          subResult.tagNumber
        );
        if (overrideTagNumber !== enums_default.ASN1_MAX_APPLICATION_TAG) {
          subResult.tagNumber = overrideTagNumber;
        }
        let bacappResult = bacappDecodeData(
          buffer,
          offset + len + subResult.len,
          maxOffset,
          subResult.tagNumber,
          subResult.value
        );
        if (!bacappResult) {
          return void 0;
        }
        if (bacappResult.len === subResult.value) {
          let resObj = {
            value: bacappResult.value,
            type: bacappResult.type
          };
          if (bacappResult.encoding !== void 0)
            resObj.encoding = bacappResult.encoding;
          list.push(resObj);
          len += subResult.len + subResult.value;
        } else {
          list.push({
            value: buffer.slice(
              offset + len + subResult.len,
              offset + len + subResult.len + subResult.value
            ),
            type: enums_default.ApplicationTag.CONTEXT_SPECIFIC_ENCODED
          });
          len += subResult.len + subResult.value;
        }
      }
      if (multipleValues === false) {
        return {
          len,
          value: list[0],
          type: enums_default.ApplicationTag.CONTEXT_SPECIFIC_DECODED
        };
      }
    }
    if (len + offset > maxOffset) {
      return void 0;
    }
    if (decodeIsClosingTagNumber(buffer, offset + len, tagResult.tagNumber)) {
      len++;
    }
    return {
      len,
      value: list,
      type: enums_default.ApplicationTag.CONTEXT_SPECIFIC_DECODED
    };
  }
  return void 0;
};
var bacappEncodeTimestamp = (buffer, value) => {
  switch (value.type) {
    case enums_default.TimeStamp.TIME:
      encodeContextTime(buffer, 0, value.value);
      break;
    case enums_default.TimeStamp.SEQUENCE_NUMBER:
      encodeContextUnsigned(buffer, 1, value.value);
      break;
    case enums_default.TimeStamp.DATETIME:
      bacappEncodeContextDatetime(buffer, 2, value.value);
      break;
    default:
      throw new Error("NOT_IMPLEMENTED");
  }
};
var bacappEncodeContextTimestamp = (buffer, tagNumber, value) => {
  encodeOpeningTag(buffer, tagNumber);
  bacappEncodeTimestamp(buffer, value);
  encodeClosingTag(buffer, tagNumber);
};
var decodeContextCharacterString = (buffer, offset, maxLength, tagNumber) => {
  let len = 0;
  if (!decodeIsContextTag(buffer, offset + len, tagNumber)) {
    return void 0;
  }
  const result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  const decodedValue = multiCharsetCharacterstringDecode(
    buffer,
    offset + 1 + len,
    maxLength,
    buffer[offset + len],
    result.value - 1
  );
  if (!decodedValue) {
    return void 0;
  }
  len += result.value;
  return {
    len,
    value: decodedValue.value,
    encoding: decodedValue.encoding
  };
};
var decodeIsContextTagWithLength = (buffer, offset, tagNumber) => {
  const result = decodeTagNumber(buffer, offset);
  return {
    len: result.len,
    value: isContextSpecific(buffer[offset]) && result.tagNumber === tagNumber
  };
};
var decodeContextObjectId = (buffer, offset, tagNumber) => {
  const result = decodeIsContextTagWithLength(buffer, offset, tagNumber);
  if (!result.value) {
    return void 0;
  }
  const decodedValue = decodeObjectId(buffer, offset + result.len);
  decodedValue.len = decodedValue.len + result.len;
  return decodedValue;
};
var encodeBacnetCharacterString = (buffer, value, encoding) => {
  encoding = encoding || enums_default.CharacterStringEncoding.UTF_8;
  buffer.buffer[buffer.offset++] = encoding;
  const bufEncoded = import_iconv_lite.default.encode(value, getEncodingType(encoding));
  buffer.offset += bufEncoded.copy(buffer.buffer, buffer.offset);
};
var encodeApplicationCharacterString = (buffer, value, encoding) => {
  const tmp = getBuffer();
  encodeBacnetCharacterString(tmp, value, encoding);
  encodeTag(buffer, enums_default.ApplicationTag.CHARACTER_STRING, false, tmp.offset);
  tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
  buffer.offset += tmp.offset;
};
var encodeContextCharacterString = (buffer, tagNumber, value, encoding) => {
  const tmp = getBuffer();
  encodeBacnetCharacterString(tmp, value, encoding);
  encodeTag(buffer, tagNumber, true, tmp.offset);
  tmp.buffer.copy(buffer.buffer, buffer.offset, 0, tmp.offset);
  buffer.offset += tmp.offset;
};

// src/services/add-list-element.ts
var encode = (buffer, objectId, propertyId, arrayIndex, values) => {
  encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
  encodeContextEnumerated(buffer, 1, propertyId);
  if (arrayIndex !== ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 2, arrayIndex);
  }
  encodeOpeningTag(buffer, 3);
  values.forEach((value) => {
    bacappEncodeApplicationData(buffer, value);
  });
  encodeClosingTag(buffer, 3);
};
var decode = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let value = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.property = { id: decodedValue.value };
  if (len < apduLen && decodeIsContextTag(buffer, offset + len, 2)) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.property.index = decodedValue.value;
  } else {
    value.property.index = ASN1_ARRAY_ALL;
  }
  const values = [];
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 3)) {
    return void 0;
  }
  len++;
  while (apduLen - len > 1) {
    result = bacappDecodeApplicationData(
      buffer,
      offset + len,
      apduLen + offset,
      value.objectId.type,
      value.property.id
    );
    if (!result) {
      return void 0;
    }
    len += result.len;
    delete result.len;
    values.push(result);
  }
  value.values = values;
  if (!decodeIsClosingTagNumber(buffer, offset + len, 3)) {
    return void 0;
  }
  len++;
  value.len = len;
  return value;
};

// src/services/alarm-acknowledge.ts
var alarm_acknowledge_exports = {};
__export(alarm_acknowledge_exports, {
  decode: () => decode2,
  encode: () => encode2
});
var encode2 = (buffer, ackProcessId, eventObjectId, eventStateAcknowledged, ackSource, eventTimeStamp, ackTimeStamp) => {
  encodeContextUnsigned(buffer, 0, ackProcessId);
  encodeContextObjectId(
    buffer,
    1,
    eventObjectId.type,
    eventObjectId.instance
  );
  encodeContextEnumerated(buffer, 2, eventStateAcknowledged);
  bacappEncodeContextTimestamp(buffer, 3, eventTimeStamp);
  encodeContextCharacterString(buffer, 4, ackSource);
  bacappEncodeContextTimestamp(buffer, 5, ackTimeStamp);
};
var decode2 = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  let result;
  let decodedValue;
  let date;
  let time;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.acknowledgedProcessId = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.eventObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.eventStateAcknowledged = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber === 0 /* TIME */) {
    decodedValue = decodeBacnetTime(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.eventTimeStamp = decodedValue.value;
  } else if (result.tagNumber === 1 /* SEQUENCE_NUMBER */) {
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.eventTimeStamp = decodedValue.value;
  } else if (result.tagNumber === 2 /* DATETIME */) {
    date = decodeApplicationDate(buffer, offset + len);
    len += date.len;
    date = date.value.value;
    time = decodeApplicationTime(buffer, offset + len);
    len += time.len;
    time = time.value.value;
    value.eventTimeStamp = new Date(
      date.getFullYear(),
      date.getMonth(),
      date.getDate(),
      time.getHours(),
      time.getMinutes(),
      time.getSeconds(),
      time.getMilliseconds()
    );
    len++;
  }
  len++;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeCharacterString(
    buffer,
    offset + len,
    apduLen - (offset + len),
    result.value
  );
  value.acknowledgeSource = decodedValue.value;
  len += decodedValue.len;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber === 0 /* TIME */) {
    decodedValue = decodeBacnetTime(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.acknowledgeTimeStamp = decodedValue.value;
  } else if (result.tagNumber === 1 /* SEQUENCE_NUMBER */) {
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.acknowledgeTimeStamp = decodedValue.value;
  } else if (result.tagNumber === 2 /* DATETIME */) {
    date = decodeApplicationDate(buffer, offset + len);
    len += date.len;
    date = date.value.value;
    time = decodeApplicationTime(buffer, offset + len);
    len += time.len;
    time = time.value.value;
    value.acknowledgeTimeStamp = new Date(
      date.getFullYear(),
      date.getMonth(),
      date.getDate(),
      time.getHours(),
      time.getMinutes(),
      time.getSeconds(),
      time.getMilliseconds()
    );
    len++;
  }
  len++;
  value.len = len;
  return value;
};

// src/services/alarm-summary.ts
var alarm_summary_exports = {};
__export(alarm_summary_exports, {
  decode: () => decode3,
  encode: () => encode3
});
var encode3 = (buffer, alarms) => {
  alarms.forEach((alarm) => {
    encodeContextObjectId(
      buffer,
      12,
      alarm.objectId.type,
      alarm.objectId.instance
    );
    encodeContextEnumerated(buffer, 9, alarm.alarmState);
    encodeContextBitstring(buffer, 8, alarm.acknowledgedTransitions);
  });
};
var decode3 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  const alarms = [];
  while (apduLen - 3 - len > 0) {
    let value = {};
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeObjectId(buffer, offset + len);
    len += decodedValue.len;
    value.objectId = {
      type: decodedValue.objectType,
      instance: decodedValue.instance
    };
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.alarmState = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeBitstring(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.acknowledgedTransitions = decodedValue.value;
    alarms.push(value);
  }
  return {
    len,
    alarms
  };
};

// src/services/atomic-read-file.ts
var atomic_read_file_exports = {};
__export(atomic_read_file_exports, {
  decode: () => decode4,
  decodeAcknowledge: () => decodeAcknowledge,
  encode: () => encode4,
  encodeAcknowledge: () => encodeAcknowledge
});
var encode4 = (buffer, isStream, objectId, position, count) => {
  encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
  if (isStream) {
    encodeOpeningTag(buffer, 0);
    encodeApplicationSigned(buffer, position);
    encodeApplicationUnsigned(buffer, count);
    encodeClosingTag(buffer, 0);
  } else {
    encodeOpeningTag(buffer, 1);
    encodeApplicationSigned(buffer, position);
    encodeApplicationUnsigned(buffer, count);
    encodeClosingTag(buffer, 1);
  }
};
var decode4 = (buffer, offset) => {
  let len = 0;
  let result;
  let decodedValue;
  let isStream = true;
  let objectId = {};
  let position = -1;
  let count = 0;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 12 /* OBJECTIDENTIFIER */) {
    return void 0;
  }
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  objectId = { type: decodedValue.objectType, instance: decodedValue.instance };
  if (decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
    isStream = true;
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 3 /* SIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeSigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    position = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 2 /* UNSIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    count = decodedValue.value;
    if (!decodeIsClosingTagNumber(buffer, offset + len, 0)) {
      return void 0;
    }
    len++;
  } else if (decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    isStream = false;
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 3 /* SIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeSigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    position = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 2 /* UNSIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    count = decodedValue.value;
    if (!decodeIsClosingTagNumber(buffer, offset + len, 1)) {
      return void 0;
    }
    len++;
  } else {
    return void 0;
  }
  return {
    len,
    isStream,
    objectId,
    position,
    count
  };
};
var encodeAcknowledge = (buffer, isStream, endOfFile, position, blockCount, blocks, counts) => {
  encodeApplicationBoolean(buffer, endOfFile);
  if (isStream) {
    encodeOpeningTag(buffer, 0);
    encodeApplicationSigned(buffer, position);
    encodeApplicationOctetString(buffer, blocks[0], 0, counts[0]);
    encodeClosingTag(buffer, 0);
  } else {
    encodeOpeningTag(buffer, 1);
    encodeApplicationSigned(buffer, position);
    encodeApplicationUnsigned(buffer, blockCount);
    for (let i = 0; i < blockCount; i++) {
      encodeApplicationOctetString(buffer, blocks[i], 0, counts[i]);
    }
    encodeClosingTag(buffer, 1);
  }
};
var decodeAcknowledge = (buffer, offset, length = 0) => {
  let len = length;
  let result;
  let decodedValue;
  let endOfFile;
  let isStream;
  let position;
  let targetBuffer;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1 /* BOOLEAN */) {
    return void 0;
  }
  endOfFile = result.value > 0;
  if (decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
    isStream = true;
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 3 /* SIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeSigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    position = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 6 /* OCTET_STRING */) {
      return void 0;
    }
    targetBuffer = buffer.slice(offset + len, offset + len + result.value);
    len += result.value;
    if (!decodeIsClosingTagNumber(buffer, offset + len, 0)) {
      return void 0;
    }
    len++;
  } else if (decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    isStream = false;
    throw new Error("NotImplemented");
  } else {
    return void 0;
  }
  return {
    len,
    endOfFile,
    isStream,
    position,
    buffer: targetBuffer
  };
};

// src/services/atomic-write-file.ts
var atomic_write_file_exports = {};
__export(atomic_write_file_exports, {
  decode: () => decode5,
  decodeAcknowledge: () => decodeAcknowledge2,
  encode: () => encode5,
  encodeAcknowledge: () => encodeAcknowledge2
});
var encode5 = (buffer, isStream, objectId, position, blocks) => {
  encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
  if (isStream) {
    encodeOpeningTag(buffer, 0);
    encodeApplicationSigned(buffer, position);
    encodeApplicationOctetString(buffer, blocks[0], 0, blocks[0].length);
    encodeClosingTag(buffer, 0);
  } else {
    encodeOpeningTag(buffer, 1);
    encodeApplicationSigned(buffer, position);
    encodeApplicationUnsigned(buffer, blocks.length);
    for (let i = 0; i < blocks.length; i++) {
      encodeApplicationOctetString(
        buffer,
        blocks[i],
        0,
        blocks[i].length
      );
    }
    encodeClosingTag(buffer, 1);
  }
};
var decode5 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let isStream;
  let position;
  let blocks = [];
  let blockCount;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 12 /* OBJECTIDENTIFIER */) {
    return void 0;
  }
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  let objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  if (decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
    isStream = true;
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 3 /* SIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeSigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    position = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 6 /* OCTET_STRING */) {
      return void 0;
    }
    decodedValue = decodeOctetString(
      buffer,
      offset + len,
      apduLen,
      0,
      result.value
    );
    len += decodedValue.len;
    blocks.push(decodedValue.value);
    if (!decodeIsClosingTagNumber(buffer, offset + len, 0)) {
      return void 0;
    }
    len++;
  } else if (decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    isStream = false;
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 3 /* SIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeSigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    position = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 2 /* UNSIGNED_INTEGER */) {
      return void 0;
    }
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    blockCount = decodedValue.value;
    for (let i = 0; i < blockCount; i++) {
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      if (result.tagNumber !== 6 /* OCTET_STRING */) {
        return void 0;
      }
      decodedValue = decodeOctetString(
        buffer,
        offset + len,
        apduLen,
        0,
        result.value
      );
      len += decodedValue.len;
      blocks.push(decodedValue.value);
    }
    if (!decodeIsClosingTagNumber(buffer, offset + len, 1)) {
      return void 0;
    }
    len++;
  } else {
    return void 0;
  }
  return {
    len,
    isStream,
    objectId,
    position,
    blocks
  };
};
var encodeAcknowledge2 = (buffer, isStream, position) => {
  if (isStream) {
    encodeContextSigned(buffer, 0, position);
  } else {
    encodeContextSigned(buffer, 1, position);
  }
};
var decodeAcknowledge2 = (buffer, offset, length = 0) => {
  let len = length;
  let isStream = false;
  let position = 0;
  let decodedValue;
  const result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber === 0) {
    isStream = true;
  } else if (result.tagNumber === 1) {
    isStream = false;
  } else {
    return void 0;
  }
  decodedValue = decodeSigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  position = decodedValue.value;
  return {
    len,
    isStream,
    position
  };
};

// src/services/cov-notify.ts
var cov_notify_exports = {};
__export(cov_notify_exports, {
  decode: () => decode6,
  encode: () => encode6
});
var encode6 = (buffer, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) => {
  encodeContextUnsigned(buffer, 0, subscriberProcessId);
  encodeContextObjectId(
    buffer,
    1,
    8 /* DEVICE */,
    initiatingDeviceId
  );
  encodeContextObjectId(
    buffer,
    2,
    monitoredObjectId.type,
    monitoredObjectId.instance
  );
  encodeContextUnsigned(buffer, 3, timeRemaining);
  encodeOpeningTag(buffer, 4);
  values.forEach((value) => {
    encodeContextEnumerated(buffer, 0, value.property.id);
    if (value.property.index === ASN1_ARRAY_ALL) {
      encodeContextUnsigned(buffer, 1, value.property.index);
    }
    encodeOpeningTag(buffer, 2);
    value.value.forEach((v) => {
      bacappEncodeApplicationData(buffer, v);
    });
    encodeClosingTag(buffer, 2);
    if (value.priority === ASN1_NO_PRIORITY) {
      encodeContextUnsigned(buffer, 3, value.priority);
    }
  });
  encodeClosingTag(buffer, 4);
};
var decode6 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  const subscriberProcessId = decodedValue.value;
  if (!decodeIsContextTag(buffer, offset + len, 1)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  const initiatingDeviceId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  if (!decodeIsContextTag(buffer, offset + len, 2)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  const monitoredObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  if (!decodeIsContextTag(buffer, offset + len, 3)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  const timeRemaining = decodedValue.value;
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 4)) {
    return void 0;
  }
  len++;
  const values = [];
  while (apduLen - len > 1 && !decodeIsClosingTagNumber(buffer, offset + len, 4)) {
    let newEntry = {};
    newEntry.property = {};
    if (!decodeIsContextTag(buffer, offset + len, 0)) {
      return void 0;
    }
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    newEntry.property.id = decodedValue.value;
    if (decodeIsContextTag(buffer, offset + len, 1)) {
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      newEntry.property.index = decodedValue.value;
    } else {
      newEntry.property.index = ASN1_ARRAY_ALL;
    }
    if (!decodeIsOpeningTagNumber(buffer, offset + len, 2)) {
      return void 0;
    }
    len++;
    const properties = [];
    while (apduLen - len > 1 && !decodeIsClosingTagNumber(buffer, offset + len, 2)) {
      decodedValue = bacappDecodeApplicationData(
        buffer,
        offset + len,
        apduLen + offset,
        monitoredObjectId.type,
        newEntry.property.id
      );
      if (!decodedValue) {
        return void 0;
      }
      len += decodedValue.len;
      delete decodedValue.len;
      properties.push(decodedValue);
    }
    newEntry.value = properties;
    len++;
    if (decodeIsContextTag(buffer, offset + len, 3)) {
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      newEntry.priority = decodedValue.value;
    } else {
      newEntry.priority = ASN1_NO_PRIORITY;
    }
    values.push(newEntry);
  }
  return {
    len,
    subscriberProcessId,
    initiatingDeviceId,
    monitoredObjectId,
    timeRemaining,
    values
  };
};

// src/services/create-object.ts
var create_object_exports = {};
__export(create_object_exports, {
  decode: () => decode7,
  encode: () => encode7,
  encodeAcknowledge: () => encodeAcknowledge3
});
var encode7 = (buffer, objectId, values) => {
  encodeOpeningTag(buffer, 0);
  encodeContextObjectId(buffer, 1, objectId.type, objectId.instance);
  encodeClosingTag(buffer, 0);
  encodeOpeningTag(buffer, 1);
  values.forEach((propertyValue) => {
    encodeContextEnumerated(buffer, 0, propertyValue.property.id);
    if (propertyValue.property.index !== ASN1_ARRAY_ALL) {
      encodeContextUnsigned(buffer, 1, propertyValue.property.index);
    }
    encodeOpeningTag(buffer, 2);
    propertyValue.value.forEach((value) => {
      bacappEncodeApplicationData(buffer, value);
    });
    encodeClosingTag(buffer, 2);
    if (propertyValue.priority !== ASN1_NO_PRIORITY) {
      encodeContextUnsigned(buffer, 3, propertyValue.priority);
    }
  });
  encodeClosingTag(buffer, 1);
};
var decode7 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let objectId;
  const valueList = [];
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber === 0 && apduLen > len) {
    apduLen -= len;
    if (apduLen < 4) {
      return void 0;
    }
    decodedValue = decodeContextObjectId(buffer, offset + len, 1);
    len += decodedValue.len;
    objectId = {
      type: decodedValue.objectType,
      instance: decodedValue.instance
    };
  } else {
    return void 0;
  }
  if (decodeIsClosingTag(buffer, offset + len)) {
    len++;
  }
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  while (apduLen - len > 1) {
    let newEntry = {};
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 0) {
      return void 0;
    }
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    let propertyId = decodedValue.value;
    let arraIndex = ASN1_ARRAY_ALL;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber === 1) {
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      arraIndex += decodedValue.value;
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
    }
    newEntry.property = { id: propertyId, index: arraIndex };
    if (result.tagNumber === 2 && decodeIsOpeningTag(buffer, offset + len - 1)) {
      const values = [];
      while (!decodeIsClosingTag(buffer, offset + len)) {
        decodedValue = bacappDecodeApplicationData(
          buffer,
          offset + len,
          apduLen + offset,
          objectId.type,
          propertyId
        );
        if (!decodedValue) {
          return void 0;
        }
        len += decodedValue.len;
        delete decodedValue.len;
        values.push(decodedValue);
      }
      len++;
      newEntry.value = values;
    } else {
      return void 0;
    }
    valueList.push(newEntry);
  }
  if (!decodeIsClosingTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  return {
    len,
    objectId,
    values: valueList
  };
};
var encodeAcknowledge3 = (buffer, objectId) => {
  encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
};

// src/services/delete-object.ts
var delete_object_exports = {};
__export(delete_object_exports, {
  decode: () => decode8,
  encode: () => encode8
});
var decode8 = (buffer, offset, apduLen) => {
  const result = decodeTagNumberAndValue(buffer, offset);
  if (result.tagNumber !== 12) {
    return void 0;
  }
  let len = 1;
  const value = decodeObjectId(buffer, offset + len);
  len += value.len;
  if (len !== apduLen) {
    return void 0;
  }
  value.len = len;
  return value;
};
var encode8 = (buffer, objectId) => {
  encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
};

// src/services/device-communication-control.ts
var device_communication_control_exports = {};
__export(device_communication_control_exports, {
  decode: () => decode9,
  encode: () => encode9
});
var encode9 = (buffer, timeDuration, enableDisable, password) => {
  if (timeDuration > 0) {
    encodeContextUnsigned(buffer, 0, timeDuration);
  }
  encodeContextEnumerated(buffer, 1, enableDisable);
  if (password && password !== "") {
    encodeContextCharacterString(buffer, 2, password);
  }
};
var decode9 = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  let decodedValue;
  let result;
  if (decodeIsContextTag(buffer, offset + len, 0)) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    value.timeDuration = decodedValue.value;
    len += decodedValue.len;
  }
  if (!decodeIsContextTag(buffer, offset + len, 1)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  value.enableDisable = decodedValue.value;
  len += decodedValue.len;
  if (len < apduLen) {
    if (!decodeIsContextTag(buffer, offset + len, 2)) {
      return void 0;
    }
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeCharacterString(
      buffer,
      offset + len,
      apduLen - (offset + len),
      result.value
    );
    value.password = decodedValue.value;
    len += decodedValue.len;
  }
  value.len = len;
  return value;
};

// src/services/error.ts
var error_exports = {};
__export(error_exports, {
  buildMessage: () => buildMessage,
  decode: () => decode10,
  encode: () => encode10
});
var encode10 = (buffer, errorClass, errorCode) => {
  encodeApplicationEnumerated(buffer, errorClass);
  encodeApplicationEnumerated(buffer, errorCode);
};
var decode10 = (buffer, offset) => {
  const orgOffset = offset;
  let result;
  result = decodeTagNumberAndValue(buffer, offset);
  offset += result.len;
  const errorClass = decodeEnumerated(buffer, offset, result.value);
  offset += errorClass.len;
  result = decodeTagNumberAndValue(buffer, offset);
  offset += result.len;
  const errorCode = decodeEnumerated(buffer, offset, result.value);
  offset += errorClass.len;
  return {
    len: offset - orgOffset,
    class: errorClass.value,
    code: errorCode.value
  };
};
var buildMessage = function(result) {
  return "BacnetError Class: " + ErrorClassName[result.class] + " (" + result.class + ") Code: " + ErrorCodeName[result.code] + " (" + result.code + ")";
};

// src/services/event-information.ts
var event_information_exports = {};
__export(event_information_exports, {
  decode: () => decode11,
  encode: () => encode11
});
var encode11 = (buffer, events, moreEvents) => {
  encodeOpeningTag(buffer, 0);
  events.forEach((event) => {
    encodeContextObjectId(
      buffer,
      0,
      event.objectId.type,
      event.objectId.instance
    );
    encodeContextEnumerated(buffer, 1, event.eventState);
    encodeContextBitstring(buffer, 2, event.acknowledgedTransitions);
    encodeOpeningTag(buffer, 3);
    for (let i = 0; i < 3; i++) {
      encodeApplicationDate(buffer, event.eventTimeStamps[i]);
      encodeApplicationTime(buffer, event.eventTimeStamps[i]);
    }
    encodeClosingTag(buffer, 3);
    encodeContextEnumerated(buffer, 4, event.notifyType);
    encodeContextBitstring(buffer, 5, event.eventEnable);
    encodeOpeningTag(buffer, 6);
    for (let i = 0; i < 3; i++) {
      encodeApplicationUnsigned(buffer, event.eventPriorities[i]);
    }
    encodeClosingTag(buffer, 6);
  });
  encodeClosingTag(buffer, 0);
  encodeContextBoolean(buffer, 1, moreEvents);
};
var decode11 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  len++;
  const alarms = [];
  let moreEvents;
  while (apduLen - 3 - len > 0) {
    let value = {};
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeObjectId(buffer, offset + len);
    len += decodedValue.len;
    value.objectId = {
      type: decodedValue.objectType,
      instance: decodedValue.instance
    };
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.eventState = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeBitstring(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.acknowledgedTransitions = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    value.eventTimeStamps = [];
    for (let i = 0; i < 3; i++) {
      if (result.tagNumber !== 0 /* NULL */) {
        decodedValue = decodeApplicationDate(buffer, offset + len);
        len += decodedValue.len;
        const date = decodedValue.value.value;
        decodedValue = decodeApplicationTime(buffer, offset + len);
        len += decodedValue.len;
        const time = decodedValue.value.value;
        value.eventTimeStamps[i] = new Date(
          date.getFullYear(),
          date.getMonth(),
          date.getDate(),
          time.getHours(),
          time.getMinutes(),
          time.getSeconds(),
          time.getMilliseconds()
        );
      } else {
        len += result.value;
      }
    }
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.notifyType = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeBitstring(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.eventEnable = decodedValue.value;
    len++;
    value.eventPriorities = [];
    for (let i = 0; i < 3; i++) {
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.eventPriorities[i] = decodedValue.value;
    }
    len++;
    alarms.push(value);
  }
  moreEvents = buffer[apduLen - 1] === 1;
  return {
    len,
    alarms,
    moreEvents
  };
};

// src/services/event-notify-data.ts
var event_notify_data_exports = {};
__export(event_notify_data_exports, {
  decode: () => decode12,
  encode: () => encode12
});
var encode12 = (buffer, data) => {
  encodeContextUnsigned(buffer, 0, data.processId);
  encodeContextObjectId(
    buffer,
    1,
    data.initiatingObjectId.type,
    data.initiatingObjectId.instance
  );
  encodeContextObjectId(
    buffer,
    2,
    data.eventObjectId.type,
    data.eventObjectId.instance
  );
  bacappEncodeContextTimestamp(buffer, 3, data.timeStamp);
  encodeContextUnsigned(buffer, 4, data.notificationClass);
  encodeContextUnsigned(buffer, 5, data.priority);
  encodeContextEnumerated(buffer, 6, data.eventType);
  if (data.messageText && data.messageText !== "") {
    encodeContextCharacterString(buffer, 7, data.messageText);
  }
  encodeContextEnumerated(buffer, 8, data.notifyType);
  switch (data.notifyType) {
    case 0 /* ALARM */:
    case 1 /* EVENT */:
      encodeContextBoolean(buffer, 9, data.ackRequired);
      encodeContextEnumerated(buffer, 10, data.fromState);
      break;
    default:
      break;
  }
  encodeContextEnumerated(buffer, 11, data.toState);
  switch (data.notifyType) {
    case 0 /* ALARM */:
    case 1 /* EVENT */:
      encodeOpeningTag(buffer, 12);
      switch (data.eventType) {
        case 0 /* CHANGE_OF_BITSTRING */:
          encodeOpeningTag(buffer, 0);
          encodeContextBitstring(
            buffer,
            0,
            data.changeOfBitstringReferencedBitString
          );
          encodeContextBitstring(
            buffer,
            1,
            data.changeOfBitstringStatusFlags
          );
          encodeClosingTag(buffer, 0);
          break;
        case 1 /* CHANGE_OF_STATE */:
          encodeOpeningTag(buffer, 1);
          encodeOpeningTag(buffer, 0);
          bacappEncodePropertyState(buffer, data.changeOfStateNewState);
          encodeClosingTag(buffer, 0);
          encodeContextBitstring(
            buffer,
            1,
            data.changeOfStateStatusFlags
          );
          encodeClosingTag(buffer, 1);
          break;
        case 2 /* CHANGE_OF_VALUE */:
          encodeOpeningTag(buffer, 2);
          encodeOpeningTag(buffer, 0);
          switch (data.changeOfValueTag) {
            case 0 /* REAL */:
              encodeContextReal(
                buffer,
                1,
                data.changeOfValueChangeValue
              );
              break;
            case 1 /* BIT_STRING */:
              encodeContextBitstring(
                buffer,
                0,
                data.changeOfValueChangedBits
              );
              break;
            default:
              throw new Error("NotImplemented");
          }
          encodeClosingTag(buffer, 0);
          encodeContextBitstring(
            buffer,
            1,
            data.changeOfValueStatusFlags
          );
          encodeClosingTag(buffer, 2);
          break;
        case 4 /* FLOATING_LIMIT */:
          encodeOpeningTag(buffer, 4);
          encodeContextReal(buffer, 0, data.floatingLimitReferenceValue);
          encodeContextBitstring(
            buffer,
            1,
            data.floatingLimitStatusFlags
          );
          encodeContextReal(buffer, 2, data.floatingLimitSetPointValue);
          encodeContextReal(buffer, 3, data.floatingLimitErrorLimit);
          encodeClosingTag(buffer, 4);
          break;
        case 5 /* OUT_OF_RANGE */:
          encodeOpeningTag(buffer, 5);
          encodeContextReal(buffer, 0, data.outOfRangeExceedingValue);
          encodeContextBitstring(buffer, 1, data.outOfRangeStatusFlags);
          encodeContextReal(buffer, 2, data.outOfRangeDeadband);
          encodeContextReal(buffer, 3, data.outOfRangeExceededLimit);
          encodeClosingTag(buffer, 5);
          break;
        case 8 /* CHANGE_OF_LIFE_SAFETY */:
          encodeOpeningTag(buffer, 8);
          encodeContextEnumerated(
            buffer,
            0,
            data.changeOfLifeSafetyNewState
          );
          encodeContextEnumerated(
            buffer,
            1,
            data.changeOfLifeSafetyNewMode
          );
          encodeContextBitstring(
            buffer,
            2,
            data.changeOfLifeSafetyStatusFlags
          );
          encodeContextEnumerated(
            buffer,
            3,
            data.changeOfLifeSafetyOperationExpected
          );
          encodeClosingTag(buffer, 8);
          break;
        case 10 /* BUFFER_READY */:
          encodeOpeningTag(buffer, 10);
          bacappEncodeContextDeviceObjPropertyRef(
            buffer,
            0,
            data.bufferReadyBufferProperty
          );
          encodeContextUnsigned(
            buffer,
            1,
            data.bufferReadyPreviousNotification
          );
          encodeContextUnsigned(
            buffer,
            2,
            data.bufferReadyCurrentNotification
          );
          encodeClosingTag(buffer, 10);
          break;
        case 11 /* UNSIGNED_RANGE */:
          encodeOpeningTag(buffer, 11);
          encodeContextUnsigned(
            buffer,
            0,
            data.unsignedRangeExceedingValue
          );
          encodeContextBitstring(
            buffer,
            1,
            data.unsignedRangeStatusFlags
          );
          encodeContextUnsigned(
            buffer,
            2,
            data.unsignedRangeExceededLimit
          );
          encodeClosingTag(buffer, 11);
          break;
        case 9 /* EXTENDED */:
        case 3 /* COMMAND_FAILURE */:
          throw new Error("NotImplemented");
        default:
          throw new Error("NotImplemented");
      }
      encodeClosingTag(buffer, 12);
      break;
    case 2 /* ACK_NOTIFICATION */:
      throw new Error("NotImplemented");
    default:
      break;
  }
};
var decode12 = (buffer, offset) => {
  let len = 0;
  let result;
  let decodedValue;
  let eventData = {};
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  eventData.processId = decodedValue.value;
  if (!decodeIsContextTag(buffer, offset + len, 1)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  eventData.initiatingObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  if (!decodeIsContextTag(buffer, offset + len, 2)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  eventData.eventObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  if (!decodeIsContextTag(buffer, offset + len, 3)) {
    return void 0;
  }
  len += 2;
  decodedValue = decodeApplicationDate(buffer, offset + len);
  len += decodedValue.len;
  const date = decodedValue.value.value;
  decodedValue = decodeApplicationTime(buffer, offset + len);
  len += decodedValue.len;
  const time = decodedValue.value.value;
  eventData.timeStamp = new Date(
    date.getFullYear(),
    date.getMonth(),
    date.getDate(),
    time.getHours(),
    time.getMinutes(),
    time.getSeconds(),
    time.getMilliseconds()
  );
  len += 2;
  if (!decodeIsContextTag(buffer, offset + len, 4)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  eventData.notificationClass = decodedValue.value;
  if (!decodeIsContextTag(buffer, offset + len, 5)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  eventData.priority = decodedValue.value;
  if (eventData.priority > 255) {
    return void 0;
  }
  if (!decodeIsContextTag(buffer, offset + len, 6)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  eventData.eventType = decodedValue.value;
  if (decodeIsContextTag(buffer, offset + len, 7)) {
    decodedValue = decodeContextCharacterString(
      buffer,
      offset + len,
      2e4,
      7
    );
    len += decodedValue.len;
    eventData.messageText = decodedValue.value;
  }
  if (!decodeIsContextTag(buffer, offset + len, 8)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  eventData.notifyType = decodedValue.value;
  switch (eventData.notifyType) {
    case 0 /* ALARM */:
    case 1 /* EVENT */:
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned(buffer, offset + len, 1);
      len += decodedValue.len;
      eventData.ackRequired = decodedValue.value > 0;
      if (!decodeIsContextTag(buffer, offset + len, 10)) {
        return void 0;
      }
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      decodedValue = decodeEnumerated(
        buffer,
        offset + len,
        result.value
      );
      len += decodedValue.len;
      eventData.fromState = decodedValue.value;
      break;
    default:
      break;
  }
  if (!decodeIsContextTag(buffer, offset + len, 11)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  eventData.toState = decodedValue.value;
  eventData.len = len;
  return eventData;
};

// src/services/get-enrollment-summary.ts
var get_enrollment_summary_exports = {};
__export(get_enrollment_summary_exports, {
  decode: () => decode13,
  decodeAcknowledge: () => decodeAcknowledge3,
  encode: () => encode13,
  encodeAcknowledge: () => encodeAcknowledge4
});
var encode13 = (buffer, acknowledgmentFilter, enrollmentFilter, eventStateFilter, eventTypeFilter, priorityFilter, notificationClassFilter) => {
  encodeContextEnumerated(buffer, 0, acknowledgmentFilter);
  if (enrollmentFilter) {
    encodeOpeningTag(buffer, 1);
    encodeOpeningTag(buffer, 0);
    encodeContextObjectId(
      buffer,
      0,
      enrollmentFilter.objectId.type,
      enrollmentFilter.objectId.instance
    );
    encodeClosingTag(buffer, 0);
    encodeContextUnsigned(buffer, 1, enrollmentFilter.processId);
    encodeClosingTag(buffer, 1);
  }
  if (eventStateFilter) {
    encodeOpeningTag(buffer, 2);
    encodeContextEnumerated(buffer, 0, eventStateFilter);
    encodeClosingTag(buffer, 2);
  }
  if (eventTypeFilter) {
    encodeOpeningTag(buffer, 3);
    encodeContextEnumerated(buffer, 0, eventTypeFilter);
    encodeClosingTag(buffer, 3);
  }
  if (priorityFilter) {
    encodeOpeningTag(buffer, 4);
    encodeContextUnsigned(buffer, 0, priorityFilter.min);
    encodeContextUnsigned(buffer, 1, priorityFilter.max);
    encodeClosingTag(buffer, 4);
  }
  if (notificationClassFilter) {
    encodeOpeningTag(buffer, 5);
    encodeContextUnsigned(buffer, 0, notificationClassFilter);
    encodeClosingTag(buffer, 5);
  }
};
var decode13 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let value = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.acknowledgmentFilter = decodedValue.value;
  if (decodeIsContextTag(buffer, offset + len, 1)) {
    len++;
    value.enrollmentFilter = {};
    if (!decodeIsContextTag(buffer, offset + len, 0)) {
      return void 0;
    }
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeObjectId(buffer, offset + len);
    len += decodedValue.len;
    value.enrollmentFilter.objectId = {
      type: decodedValue.objectType,
      instance: decodedValue.instance
    };
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.enrollmentFilter.processId = decodedValue.value;
    len++;
  }
  if (decodeIsContextTag(buffer, offset + len, 2)) {
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.eventStateFilter = decodedValue.value;
    len++;
  }
  if (decodeIsContextTag(buffer, offset + len, 3)) {
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.eventTypeFilter = decodedValue.value;
    len++;
  }
  if (decodeIsContextTag(buffer, offset + len, 4)) {
    len++;
    value.priorityFilter = {};
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.priorityFilter.min = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.priorityFilter.max = decodedValue.value;
    len++;
  }
  if (decodeIsContextTag(buffer, offset + len, 5)) {
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.notificationClassFilter = decodedValue.value;
    len++;
  }
  value.len = len;
  return value;
};
var encodeAcknowledge4 = (buffer, enrollmentSummaries) => {
  enrollmentSummaries.forEach((enrollmentSummary) => {
    encodeApplicationObjectId(
      buffer,
      enrollmentSummary.objectId.type,
      enrollmentSummary.objectId.instance
    );
    encodeApplicationEnumerated(buffer, enrollmentSummary.eventType);
    encodeApplicationEnumerated(buffer, enrollmentSummary.eventState);
    encodeApplicationUnsigned(buffer, enrollmentSummary.priority);
    encodeApplicationUnsigned(
      buffer,
      enrollmentSummary.notificationClass
    );
  });
};
var decodeAcknowledge3 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  const enrollmentSummaries = [];
  while (apduLen - len > 0) {
    const enrollmentSummary = {};
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 12 /* OBJECTIDENTIFIER */) {
      return void 0;
    }
    result = decodeObjectId(buffer, offset + len);
    len += result.len;
    enrollmentSummary.objectId = {
      type: result.objectType,
      instance: result.instance
    };
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 9 /* ENUMERATED */) {
      return void 0;
    }
    result = decodeEnumerated(buffer, offset + len, result.value);
    len += result.len;
    enrollmentSummary.eventType = result.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 9 /* ENUMERATED */) {
      return void 0;
    }
    result = decodeEnumerated(buffer, offset + len, result.value);
    len += result.len;
    enrollmentSummary.eventState = result.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 2 /* UNSIGNED_INTEGER */) {
      return void 0;
    }
    result = decodeUnsigned(buffer, offset + len, result.value);
    len += result.len;
    enrollmentSummary.priority = result.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 2 /* UNSIGNED_INTEGER */) {
      return void 0;
    }
    result = decodeUnsigned(buffer, offset + len, result.value);
    len += result.len;
    enrollmentSummary.notificationClass = result.value;
    enrollmentSummaries.push(enrollmentSummary);
  }
  return {
    enrollmentSummaries,
    len
  };
};

// src/services/get-event-information.ts
var get_event_information_exports = {};
__export(get_event_information_exports, {
  decode: () => decode14,
  decodeAcknowledge: () => decodeAcknowledge4,
  encode: () => encode14,
  encodeAcknowledge: () => encodeAcknowledge5
});
var encode14 = (buffer, lastReceivedObjectId) => {
  encodeContextObjectId(
    buffer,
    0,
    lastReceivedObjectId.type,
    lastReceivedObjectId.instance
  );
};
var decode14 = (buffer, offset) => {
  let len = 0;
  let result;
  let decodedValue;
  let value = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.lastReceivedObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  value.len = len;
  return value;
};
var encodeAcknowledge5 = (buffer, events, moreEvents) => {
  encodeOpeningTag(buffer, 0);
  events.forEach((eventData) => {
    encodeContextObjectId(
      buffer,
      0,
      eventData.objectId.type,
      eventData.objectId.instance
    );
    encodeContextEnumerated(buffer, 1, eventData.eventState);
    encodeContextBitstring(buffer, 2, eventData.acknowledgedTransitions);
    encodeOpeningTag(buffer, 3);
    for (let i = 0; i < 3; i++) {
      bacappEncodeTimestamp(buffer, eventData.eventTimeStamps[i]);
    }
    encodeClosingTag(buffer, 3);
    encodeContextEnumerated(buffer, 4, eventData.notifyType);
    encodeContextBitstring(buffer, 5, eventData.eventEnable);
    encodeOpeningTag(buffer, 6);
    for (let i = 0; i < 3; i++) {
      encodeApplicationUnsigned(buffer, eventData.eventPriorities[i]);
    }
    encodeClosingTag(buffer, 6);
  });
  encodeClosingTag(buffer, 0);
  encodeContextBoolean(buffer, 1, moreEvents);
};
var decodeAcknowledge4 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let value = {};
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  value.events = [];
  while (apduLen - len > 3) {
    let event = {};
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeObjectId(buffer, offset + len);
    len += decodedValue.len;
    event.objectId = {
      type: decodedValue.objectType,
      instance: decodedValue.instance
    };
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    event.eventState = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeBitstring(buffer, offset + len, result.value);
    len += decodedValue.len;
    event.acknowledgedTransitions = decodedValue.value;
    if (!decodeIsOpeningTagNumber(buffer, offset + len, 3)) {
      return void 0;
    }
    len++;
    event.eventTimeStamps = [];
    for (let i = 0; i < 3; i++) {
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      if (result.tagNumber === 0 /* TIME */) {
        decodedValue = decodeBacnetTime(
          buffer,
          offset + len,
          result.value
        );
        len += decodedValue.len;
        event.eventTimeStamps[i] = {
          value: decodedValue.value,
          type: 0 /* TIME */
        };
      } else if (result.tagNumber === 1 /* SEQUENCE_NUMBER */) {
        decodedValue = decodeUnsigned(
          buffer,
          offset + len,
          result.value
        );
        len += decodedValue.len;
        event.eventTimeStamps[i] = {
          value: decodedValue.value,
          type: 1 /* SEQUENCE_NUMBER */
        };
      } else if (result.tagNumber === 2 /* DATETIME */) {
        let date = decodeApplicationDate(
          buffer,
          offset + len
        );
        len += date.len;
        date = date.value.value;
        let time = decodeApplicationTime(
          buffer,
          offset + len
        );
        len += time.len;
        time = time.value.value;
        event.eventTimeStamps[i] = {
          value: new Date(
            date.getFullYear(),
            date.getMonth(),
            date.getDate(),
            time.getHours(),
            time.getMinutes(),
            time.getSeconds(),
            time.getMilliseconds()
          ),
          type: 2 /* DATETIME */
        };
        len++;
      }
    }
    if (!decodeIsClosingTagNumber(buffer, offset + len, 3)) {
      return void 0;
    }
    len++;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    event.notifyType = decodedValue.value;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeBitstring(buffer, offset + len, result.value);
    len += decodedValue.len;
    event.eventEnable = decodedValue.value;
    if (!decodeIsOpeningTagNumber(buffer, offset + len, 6)) {
      return void 0;
    }
    len++;
    event.eventPriorities = [];
    for (let i = 0; i < 3; i++) {
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      event.eventPriorities[i] = decodedValue.value;
    }
    if (!decodeIsClosingTagNumber(buffer, offset + len, 6)) {
      return void 0;
    }
    len++;
    value.events.push(event);
  }
  if (!decodeIsClosingTagNumber(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  value.moreEvents = buffer[offset + len] > 0;
  len++;
  value.len = len;
  return value;
};

// src/services/i-am.ts
var i_am_exports = {};
__export(i_am_exports, {
  decode: () => decode15,
  encode: () => encode15
});
var encode15 = (buffer, deviceId, maxApdu, segmentation, vendorId) => {
  encodeApplicationObjectId(buffer, 8 /* DEVICE */, deviceId);
  encodeApplicationUnsigned(buffer, maxApdu);
  encodeApplicationEnumerated(buffer, segmentation);
  encodeApplicationUnsigned(buffer, vendorId);
};
var decode15 = (buffer, offset) => {
  let result;
  let apduLen = 0;
  const orgOffset = offset;
  result = decodeTagNumberAndValue(buffer, offset + apduLen);
  apduLen += result.len;
  if (result.tagNumber !== 12 /* OBJECTIDENTIFIER */) {
    return void 0;
  }
  result = decodeObjectId(buffer, offset + apduLen);
  apduLen += result.len;
  if (result.objectType !== 8 /* DEVICE */) {
    return void 0;
  }
  const deviceId = result.instance;
  result = decodeTagNumberAndValue(buffer, offset + apduLen);
  apduLen += result.len;
  if (result.tagNumber !== 2 /* UNSIGNED_INTEGER */) {
    return void 0;
  }
  result = decodeUnsigned(buffer, offset + apduLen, result.value);
  apduLen += result.len;
  const maxApdu = result.value;
  result = decodeTagNumberAndValue(buffer, offset + apduLen);
  apduLen += result.len;
  if (result.tagNumber !== 9 /* ENUMERATED */) {
    return void 0;
  }
  result = decodeEnumerated(buffer, offset + apduLen, result.value);
  apduLen += result.len;
  if (result.value > 3 /* NO_SEGMENTATION */) {
    return void 0;
  }
  const segmentation = result.value;
  result = decodeTagNumberAndValue(buffer, offset + apduLen);
  apduLen += result.len;
  if (result.tagNumber !== 2 /* UNSIGNED_INTEGER */) {
    return void 0;
  }
  result = decodeUnsigned(buffer, offset + apduLen, result.value);
  apduLen += result.len;
  if (result.value > 65535) {
    return void 0;
  }
  const vendorId = result.value;
  return {
    len: offset - orgOffset,
    deviceId,
    maxApdu,
    segmentation,
    vendorId
  };
};

// src/services/i-have.ts
var i_have_exports = {};
__export(i_have_exports, {
  decode: () => decode16,
  encode: () => encode16
});
var encode16 = (buffer, deviceId, objectId, objectName) => {
  encodeApplicationObjectId(buffer, deviceId.type, deviceId.instance);
  encodeApplicationObjectId(buffer, objectId.type, objectId.instance);
  encodeApplicationCharacterString(buffer, objectName);
};
var decode16 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let value = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.deviceId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeCharacterString(
    buffer,
    offset + len,
    apduLen - (offset + len),
    result.value
  );
  len += decodedValue.len;
  value.objectName = decodedValue.value;
  value.len = len;
  return value;
};

// src/services/life-safety-operation.ts
var life_safety_operation_exports = {};
__export(life_safety_operation_exports, {
  decode: () => decode17,
  encode: () => encode17
});
var encode17 = (buffer, processId, requestingSource, operation, targetObjectId) => {
  encodeContextUnsigned(buffer, 0, processId);
  encodeContextCharacterString(buffer, 1, requestingSource);
  encodeContextEnumerated(buffer, 2, operation);
  encodeContextObjectId(
    buffer,
    3,
    targetObjectId.type,
    targetObjectId.instance
  );
};
var decode17 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let value = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.processId = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeCharacterString(
    buffer,
    offset + len,
    apduLen - (offset + len),
    result.value
  );
  len += decodedValue.len;
  value.requestingSource = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.operation = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.targetObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  value.len = len;
  return value;
};

// src/services/private-transfer.ts
var private_transfer_exports = {};
__export(private_transfer_exports, {
  decode: () => decode18,
  encode: () => encode18
});
var encode18 = (buffer, vendorId, serviceNumber, data) => {
  encodeContextUnsigned(buffer, 0, vendorId);
  encodeContextUnsigned(buffer, 1, serviceNumber);
  encodeOpeningTag(buffer, 2);
  for (let i = 0; i < data.length; i++) {
    buffer.buffer[buffer.offset++] = data[i];
  }
  encodeClosingTag(buffer, 2);
};
var decode18 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let value = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.vendorId = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.serviceNumber = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  const size = apduLen - (offset + len + 1);
  const data = [];
  for (let i = 0; i < size; i++) {
    data.push(buffer[offset + len++]);
  }
  value.data = data;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  value.len = len;
  return value;
};

// src/services/read-property.ts
var read_property_exports = {};
__export(read_property_exports, {
  decode: () => decode19,
  decodeAcknowledge: () => decodeAcknowledge5,
  encode: () => encode19,
  encodeAcknowledge: () => encodeAcknowledge6
});
var encode19 = (buffer, objectType, objectInstance, propertyId, arrayIndex) => {
  if (objectType <= ASN1_MAX_OBJECT) {
    encodeContextObjectId(buffer, 0, objectType, objectInstance);
  }
  if (propertyId <= ASN1_MAX_PROPERTY_ID) {
    encodeContextEnumerated(buffer, 1, propertyId);
  }
  if (arrayIndex !== ASN1_ARRAY_ALL) {
    encodeContextUnsigned(
      buffer,
      2,
      arrayIndex || arrayIndex === 0 ? arrayIndex : ASN1_ARRAY_ALL
    );
  }
};
var decode19 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  if (apduLen < 7) {
    return void 0;
  }
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  let objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  let property = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  property.id = decodedValue.value;
  property.index = ASN1_ARRAY_ALL;
  if (len < apduLen) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber === 2 && len < apduLen) {
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      property.index = decodedValue.value;
    } else {
      return void 0;
    }
  }
  if (len < apduLen) {
    return void 0;
  }
  return {
    len,
    objectId,
    property
  };
};
var encodeAcknowledge6 = (buffer, objectId, propertyId, arrayIndex, values) => {
  encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
  encodeContextEnumerated(buffer, 1, propertyId);
  if (arrayIndex !== ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 2, arrayIndex);
  }
  encodeOpeningTag(buffer, 3);
  values.forEach((value) => {
    bacappEncodeApplicationData(buffer, value);
  });
  encodeClosingTag(buffer, 3);
};
var decodeAcknowledge5 = (buffer, offset, apduLen) => {
  let result;
  let decodedValue;
  let objectId = {};
  let property = {};
  if (!decodeIsContextTag(buffer, offset, 0)) {
    return void 0;
  }
  let len = 1;
  result = decodeObjectId(buffer, offset + len);
  len += result.len;
  objectId.type = result.objectType;
  objectId.instance = result.instance;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  result = decodeEnumerated(buffer, offset + len, result.value);
  len += result.len;
  property.id = result.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  if (result.tagNumber === 2) {
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    property.index = decodedValue.value;
  } else {
    property.index = ASN1_ARRAY_ALL;
  }
  const values = [];
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 3)) {
    return void 0;
  }
  len++;
  while (apduLen - len > 1) {
    result = bacappDecodeApplicationData(
      buffer,
      offset + len,
      apduLen + offset,
      objectId.type,
      property.id
    );
    if (!result) {
      return void 0;
    }
    len += result.len;
    delete result.len;
    values.push(result);
  }
  if (!decodeIsClosingTagNumber(buffer, offset + len, 3)) {
    return void 0;
  }
  len++;
  return {
    len,
    objectId,
    property,
    values
  };
};

// src/services/read-property-multiple.ts
var read_property_multiple_exports = {};
__export(read_property_multiple_exports, {
  decode: () => decode20,
  decodeAcknowledge: () => decodeAcknowledge6,
  encode: () => encode20,
  encodeAcknowledge: () => encodeAcknowledge7
});
var encode20 = (buffer, properties) => {
  properties.forEach((value) => {
    encodeReadAccessSpecification(buffer, value);
  });
};
var decode20 = (buffer, offset, apduLen) => {
  let len = 0;
  const values = [];
  while (apduLen - len > 0) {
    const decodedValue = decodeReadAccessSpecification(
      buffer,
      offset + len,
      apduLen - len
    );
    if (!decodedValue) {
      return void 0;
    }
    len += decodedValue.len;
    values.push(decodedValue.value);
  }
  return {
    len,
    properties: values
  };
};
var encodeAcknowledge7 = (buffer, values) => {
  values.forEach((value) => {
    encodeReadAccessResult(buffer, value);
  });
};
var decodeAcknowledge6 = (buffer, offset, apduLen) => {
  let len = 0;
  const values = [];
  while (apduLen - len > 0) {
    const result = decodeReadAccessResult(
      buffer,
      offset + len,
      apduLen - len
    );
    if (!result || result === -1) {
      return void 0;
    }
    len += result.len;
    values.push(result.value);
  }
  return {
    len,
    values
  };
};

// src/services/read-range.ts
var read_range_exports = {};
__export(read_range_exports, {
  decode: () => decode21,
  decodeAcknowledge: () => decodeAcknowledge7,
  encode: () => encode21,
  encodeAcknowledge: () => encodeAcknowledge8
});
var encode21 = (buffer, objectId, propertyId, arrayIndex, requestType, position, time, count) => {
  encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
  encodeContextEnumerated(buffer, 1, propertyId);
  if (arrayIndex !== ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 2, arrayIndex);
  }
  switch (requestType) {
    case 0 /* BY_POSITION */:
      encodeOpeningTag(buffer, 3);
      encodeApplicationUnsigned(buffer, position);
      encodeApplicationSigned(buffer, count);
      encodeClosingTag(buffer, 3);
      break;
    case 1 /* BY_SEQUENCE_NUMBER */:
      encodeOpeningTag(buffer, 6);
      encodeApplicationUnsigned(buffer, position);
      encodeApplicationSigned(buffer, count);
      encodeClosingTag(buffer, 6);
      break;
    case 2 /* BY_TIME_REFERENCE_TIME_COUNT */:
      encodeOpeningTag(buffer, 7);
      encodeApplicationDate(buffer, time);
      encodeApplicationTime(buffer, time);
      encodeApplicationSigned(buffer, count);
      encodeClosingTag(buffer, 7);
      break;
    default:
      break;
  }
};
var decode21 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let requestType;
  let position;
  let time;
  let count;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  decodedValue = decodeObjectId(buffer, offset + len, 0);
  len += decodedValue.len;
  let objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  let property = {};
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  property.id = decodedValue.value;
  if (len < apduLen && decodeIsContextTag(buffer, offset + len, 2)) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    property.index = decodedValue.value;
  } else {
    property.index = ASN1_ARRAY_ALL;
  }
  if (len < apduLen) {
    result = decodeTagNumber(buffer, offset + len);
    len += result.len;
    switch (result.tagNumber) {
      case 3:
        requestType = 0 /* BY_POSITION */;
        result = decodeTagNumberAndValue(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned(
          buffer,
          offset + len,
          result.value
        );
        len += decodedValue.len;
        position = decodedValue.value;
        result = decodeTagNumberAndValue(buffer, offset + len);
        len += result.len;
        decodedValue = decodeSigned(buffer, offset + len, result.value);
        len += decodedValue.len;
        count = decodedValue.value;
        break;
      case 6:
        requestType = 1 /* BY_SEQUENCE_NUMBER */;
        result = decodeTagNumberAndValue(buffer, offset + len);
        len += result.len;
        decodedValue = decodeUnsigned(
          buffer,
          offset + len,
          result.value
        );
        len += decodedValue.len;
        position = decodedValue.value;
        result = decodeTagNumberAndValue(buffer, offset + len);
        len += result.len;
        decodedValue = decodeSigned(buffer, offset + len, result.value);
        len += decodedValue.len;
        count = decodedValue.value;
        break;
      case 7:
        requestType = 2 /* BY_TIME_REFERENCE_TIME_COUNT */;
        decodedValue = decodeApplicationDate(buffer, offset + len);
        len += decodedValue.len;
        const tmpDate = decodedValue.value.value;
        decodedValue = decodeApplicationTime(buffer, offset + len);
        len += decodedValue.len;
        const tmpTime = decodedValue.value.value;
        time = new Date(
          tmpDate.getYear(),
          tmpDate.getMonth(),
          tmpDate.getDate(),
          tmpTime.getHours(),
          tmpTime.getMinutes(),
          tmpTime.getSeconds(),
          tmpTime.getMilliseconds()
        );
        result = decodeTagNumberAndValue(buffer, offset + len);
        len += result.len;
        decodedValue = decodeSigned(buffer, offset + len, result.value);
        len += decodedValue.len;
        count = decodedValue.value;
        break;
      default:
        return void 0;
    }
    result = decodeTagNumber(buffer, offset + len);
    len += result.len;
  }
  return {
    len,
    objectId,
    property,
    requestType,
    position,
    time,
    count
  };
};
var encodeAcknowledge8 = (buffer, objectId, propertyId, arrayIndex, resultFlags, itemCount, applicationData, requestType, firstSequence) => {
  encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
  encodeContextEnumerated(buffer, 1, propertyId);
  if (arrayIndex !== ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 2, arrayIndex);
  }
  encodeContextBitstring(buffer, 3, resultFlags);
  encodeContextUnsigned(buffer, 4, itemCount);
  encodeOpeningTag(buffer, 5);
  if (itemCount !== 0) {
    applicationData.copy(
      buffer.buffer,
      buffer.offset,
      0,
      applicationData.length
    );
    buffer.offset += applicationData.length;
  }
  encodeClosingTag(buffer, 5);
  if (itemCount !== 0 && requestType && requestType !== 0 /* BY_POSITION */) {
    encodeContextUnsigned(buffer, 6, firstSequence);
  }
};
var decodeAcknowledge7 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  const objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  const property = { index: ASN1_ARRAY_ALL };
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  property.id = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  if (result.tagNumber === 2 && len < apduLen) {
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    property.index = decodedValue.value;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeBitstring(buffer, offset + len, result.value);
  len += decodedValue.len;
  const resultFlag = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  const itemCount = decodedValue.value;
  if (!decodeIsOpeningTag(buffer, offset + len)) {
    return void 0;
  }
  len++;
  const rangeBuffer = buffer.slice(offset + len, apduLen - 3);
  return {
    objectId,
    property,
    resultFlag,
    itemCount,
    rangeBuffer,
    len
  };
};

// src/services/register-foreign-device.ts
var register_foreign_device_exports = {};
__export(register_foreign_device_exports, {
  decode: () => decode22,
  encode: () => encode22
});
var encode22 = (buffer, ttl, length = 2) => {
  encodeUnsigned(buffer, ttl, length);
};
var decode22 = (buffer, offset, length = 2) => {
  let len = 0;
  let result = decodeUnsigned(buffer, offset + len, length);
  len += result.len;
  return {
    len,
    ttl: result.value
  };
};

// src/services/reinitialize-device.ts
var reinitialize_device_exports = {};
__export(reinitialize_device_exports, {
  decode: () => decode23,
  encode: () => encode23
});
var encode23 = (buffer, state, password) => {
  encodeContextEnumerated(buffer, 0, state);
  if (password && password !== "") {
    encodeContextCharacterString(buffer, 1, password);
  }
};
var decode23 = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  let result;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  let decodedValue = decodeEnumerated(
    buffer,
    offset + len,
    result.value
  );
  value.state = decodedValue.value;
  len += decodedValue.len;
  if (len < apduLen) {
    if (!decodeIsContextTag(buffer, offset + len, 1)) {
      return void 0;
    }
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeCharacterString(
      buffer,
      offset + len,
      apduLen - (offset + len),
      result.value
    );
    value.password = decodedValue.value;
    len += decodedValue.len;
  }
  value.len = len;
  return value;
};

// src/services/subscribe-cov.ts
var subscribe_cov_exports = {};
__export(subscribe_cov_exports, {
  decode: () => decode24,
  encode: () => encode24
});
var encode24 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime) => {
  encodeContextUnsigned(buffer, 0, subscriberProcessId);
  encodeContextObjectId(
    buffer,
    1,
    monitoredObjectId.type,
    monitoredObjectId.instance
  );
  if (!cancellationRequest) {
    encodeContextBoolean(buffer, 2, issueConfirmedNotifications);
    encodeContextUnsigned(buffer, 3, lifetime);
  }
};
var decode24 = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  let result;
  let decodedValue;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.subscriberProcessId = decodedValue.value;
  if (!decodeIsContextTag(buffer, offset + len, 1)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.monitoredObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  value.cancellationRequest = true;
  if (len < apduLen) {
    value.issueConfirmedNotifications = false;
    if (decodeIsContextTag(buffer, offset + len, 2)) {
      value.cancellationRequest = false;
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      value.issueConfirmedNotifications = buffer[offset + len] > 0;
      len++;
    }
    value.lifetime = 0;
    if (decodeIsContextTag(buffer, offset + len, 3)) {
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      value.lifetime = decodedValue.value;
    }
  }
  value.len = len;
  return value;
};

// src/services/subscribe-property.ts
var subscribe_property_exports = {};
__export(subscribe_property_exports, {
  decode: () => decode25,
  encode: () => encode25
});
var encode25 = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime, monitoredProperty, covIncrementPresent, covIncrement) => {
  encodeContextUnsigned(buffer, 0, subscriberProcessId);
  encodeContextObjectId(
    buffer,
    1,
    monitoredObjectId.type,
    monitoredObjectId.instance
  );
  if (!cancellationRequest) {
    encodeContextBoolean(buffer, 2, issueConfirmedNotifications);
    encodeContextUnsigned(buffer, 3, lifetime);
  }
  encodeOpeningTag(buffer, 4);
  encodeContextEnumerated(buffer, 0, monitoredProperty.id);
  if (monitoredProperty.index !== ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 1, monitoredProperty.index);
  }
  encodeClosingTag(buffer, 4);
  if (covIncrementPresent) {
    encodeContextReal(buffer, 5, covIncrement);
  }
};
var decode25 = (buffer, offset) => {
  let len = 0;
  let value = {};
  let result;
  let decodedValue;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.subscriberProcessId = decodedValue.value;
  if (!decodeIsContextTag(buffer, offset + len, 1)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  value.monitoredObjectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  value.cancellationRequest = true;
  value.issueConfirmedNotifications = false;
  if (decodeIsContextTag(buffer, offset + len, 2)) {
    value.cancellationRequest = false;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    value.issueConfirmedNotifications = buffer[offset + len] > 0;
    len++;
  }
  value.lifetime = 0;
  if (decodeIsContextTag(buffer, offset + len, 3)) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.lifetime = decodedValue.value;
  }
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 4)) {
    return void 0;
  }
  len++;
  value.monitoredProperty = {};
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.monitoredProperty.id = decodedValue.value;
  value.monitoredProperty.index = ASN1_ARRAY_ALL;
  if (decodeIsContextTag(buffer, offset + len, 1)) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.monitoredProperty.index = decodedValue.value;
  }
  if (!decodeIsClosingTagNumber(buffer, offset + len, 4)) {
    return void 0;
  }
  len++;
  value.covIncrement = 0;
  if (decodeIsContextTag(buffer, offset + len, 5)) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    decodedValue = decodeReal(buffer, offset + len);
    len += decodedValue.len;
    value.covIncrement = decodedValue.value;
  }
  value.len = len;
  return value;
};

// src/services/time-sync.ts
var time_sync_exports = {};
__export(time_sync_exports, {
  decode: () => decode26,
  encode: () => encode26
});
var encode26 = (buffer, time) => {
  encodeApplicationDate(buffer, time);
  encodeApplicationTime(buffer, time);
};
var decode26 = (buffer, offset, length) => {
  let len = 0;
  let result;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 10 /* DATE */) {
    return void 0;
  }
  const date = decodeDate(buffer, offset + len);
  len += date.len;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 11 /* TIME */) {
    return void 0;
  }
  const time = decodeBacnetTime(buffer, offset + len);
  len += time.len;
  return {
    len,
    value: new Date(
      date.value.getFullYear(),
      date.value.getMonth(),
      date.value.getDate(),
      time.value.getHours(),
      time.value.getMinutes(),
      time.value.getSeconds(),
      time.value.getMilliseconds()
    )
  };
};

// src/services/who-has.ts
var who_has_exports = {};
__export(who_has_exports, {
  decode: () => decode27,
  encode: () => encode27
});
var encode27 = (buffer, lowLimit, highLimit, objectId, objectName) => {
  if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE) {
    encodeContextUnsigned(buffer, 0, lowLimit);
    encodeContextUnsigned(buffer, 1, highLimit);
  }
  if (objectName && objectName !== "") {
    encodeContextCharacterString(buffer, 3, objectName);
  } else {
    encodeContextObjectId(buffer, 2, objectId.type, objectId.instance);
  }
};
var decode27 = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  let decodedValue;
  let result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber === 0) {
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    if (decodedValue.value <= ASN1_MAX_INSTANCE) {
      value.lowLimit = decodedValue.value;
    }
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
  }
  if (result.tagNumber === 1) {
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    if (decodedValue.value <= ASN1_MAX_INSTANCE) {
      value.highLimit = decodedValue.value;
    }
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
  }
  if (result.tagNumber === 2) {
    decodedValue = decodeObjectId(buffer, offset + len);
    len += decodedValue.len;
    value.objectId = {
      type: decodedValue.objectType,
      instance: decodedValue.instance
    };
  }
  if (result.tagNumber === 3) {
    decodedValue = decodeCharacterString(
      buffer,
      offset + len,
      apduLen - (offset + len),
      result.value
    );
    len += decodedValue.len;
    value.objectName = decodedValue.value;
  }
  value.len = len;
  return value;
};

// src/services/who-is.ts
var who_is_exports = {};
__export(who_is_exports, {
  decode: () => decode28,
  encode: () => encode28
});
var encode28 = (buffer, lowLimit, highLimit) => {
  if (lowLimit >= 0 && lowLimit <= ASN1_MAX_INSTANCE && highLimit >= 0 && highLimit <= ASN1_MAX_INSTANCE) {
    encodeContextUnsigned(buffer, 0, lowLimit);
    encodeContextUnsigned(buffer, 1, highLimit);
  }
};
var decode28 = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {};
  if (apduLen <= 0) {
    return {};
  }
  let result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 0) {
    return void 0;
  }
  if (apduLen <= len) {
    return void 0;
  }
  let decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  if (decodedValue.value <= ASN1_MAX_INSTANCE) {
    value.lowLimit = decodedValue.value;
  }
  if (apduLen <= len) {
    return void 0;
  }
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  if (apduLen <= len) {
    return void 0;
  }
  decodedValue = decodeUnsigned(buffer, offset + len, result.value);
  len += decodedValue.len;
  if (decodedValue.value <= ASN1_MAX_INSTANCE) {
    value.highLimit = decodedValue.value;
  }
  value.len = len;
  return value;
};

// src/services/write-property.ts
var write_property_exports = {};
__export(write_property_exports, {
  decode: () => decode29,
  encode: () => encode29
});
var encode29 = (buffer, objectType, objectInstance, propertyId, arrayIndex, priority, values) => {
  encodeContextObjectId(buffer, 0, objectType, objectInstance);
  encodeContextEnumerated(buffer, 1, propertyId);
  if (arrayIndex !== ASN1_ARRAY_ALL) {
    encodeContextUnsigned(buffer, 2, arrayIndex);
  }
  encodeOpeningTag(buffer, 3);
  values.forEach((value) => {
    bacappEncodeApplicationData(buffer, value);
  });
  encodeClosingTag(buffer, 3);
  if (priority !== ASN1_NO_PRIORITY) {
    encodeContextUnsigned(buffer, 4, priority);
  }
};
var decode29 = (buffer, offset, apduLen) => {
  let len = 0;
  let value = {
    property: {}
  };
  let decodedValue;
  let result;
  if (!decodeIsContextTag(buffer, offset + len, 0)) {
    return void 0;
  }
  len++;
  decodedValue = decodeObjectId(buffer, offset + len);
  let objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  len += decodedValue.len;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 1) {
    return void 0;
  }
  decodedValue = decodeEnumerated(buffer, offset + len, result.value);
  len += decodedValue.len;
  value.property.id = decodedValue.value;
  result = decodeTagNumberAndValue(buffer, offset + len);
  if (result.tagNumber === 2) {
    len += result.len;
    decodedValue = decodeUnsigned(buffer, offset + len, result.value);
    len += decodedValue.len;
    value.property.index = decodedValue.value;
  } else {
    value.property.index = ASN1_ARRAY_ALL;
  }
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 3)) {
    return void 0;
  }
  len++;
  const values = [];
  while (apduLen - len > 1 && !decodeIsClosingTagNumber(buffer, offset + len, 3)) {
    decodedValue = bacappDecodeApplicationData(
      buffer,
      offset + len,
      apduLen + offset,
      objectId.type,
      value.property.id
    );
    if (!decodedValue) {
      return void 0;
    }
    len += decodedValue.len;
    delete decodedValue.len;
    values.push(decodedValue);
  }
  value.value = values;
  if (!decodeIsClosingTagNumber(buffer, offset + len, 3)) {
    return void 0;
  }
  len++;
  value.priority = ASN1_MAX_PRIORITY;
  if (len < apduLen) {
    result = decodeTagNumberAndValue(buffer, offset + len);
    if (result.tagNumber === 4) {
      len += result.len;
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue;
      if (decodedValue.value >= ASN1_MIN_PRIORITY && decodedValue.value <= ASN1_MAX_PRIORITY) {
        value.priority = decodedValue.value;
      } else {
        return void 0;
      }
    }
  }
  return {
    len,
    objectId,
    value
  };
};

// src/services/write-property-multiple.ts
var write_property_multiple_exports = {};
__export(write_property_multiple_exports, {
  decode: () => decode30,
  encode: () => encode30,
  encodeObject: () => encodeObject
});
var encode30 = (buffer, objectId, values) => {
  encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
  encodeOpeningTag(buffer, 1);
  values.forEach((pValue) => {
    encodeContextEnumerated(buffer, 0, pValue.property.id);
    if (pValue.property.index !== ASN1_ARRAY_ALL) {
      encodeContextUnsigned(buffer, 1, pValue.property.index);
    }
    encodeOpeningTag(buffer, 2);
    pValue.value.forEach((value) => {
      bacappEncodeApplicationData(buffer, value);
    });
    encodeClosingTag(buffer, 2);
    if (pValue.priority !== ASN1_NO_PRIORITY) {
      encodeContextUnsigned(buffer, 3, pValue.priority);
    }
  });
  encodeClosingTag(buffer, 1);
};
var decode30 = (buffer, offset, apduLen) => {
  let len = 0;
  let result;
  let decodedValue;
  let objectId;
  result = decodeTagNumberAndValue(buffer, offset + len);
  len += result.len;
  if (result.tagNumber !== 0 || apduLen <= len) {
    return void 0;
  }
  apduLen -= len;
  if (apduLen < 4) {
    return void 0;
  }
  decodedValue = decodeObjectId(buffer, offset + len);
  len += decodedValue.len;
  objectId = {
    type: decodedValue.objectType,
    instance: decodedValue.instance
  };
  if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) {
    return void 0;
  }
  len++;
  const _values = [];
  while (apduLen - len > 1) {
    let newEntry = {};
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber !== 0) {
      return void 0;
    }
    decodedValue = decodeEnumerated(buffer, offset + len, result.value);
    len += decodedValue.len;
    let propertyId = decodedValue.value;
    let arrayIndex = ASN1_ARRAY_ALL;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber === 1) {
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      arrayIndex = decodedValue.value;
      result = decodeTagNumberAndValue(buffer, offset + len);
      len += result.len;
    }
    newEntry.property = { id: propertyId, index: arrayIndex };
    if (result.tagNumber !== 2 || !decodeIsOpeningTag(buffer, offset + len - 1)) {
      return void 0;
    }
    const values = [];
    while (len + offset <= buffer.length && !decodeIsClosingTag(buffer, offset + len)) {
      let value = bacappDecodeApplicationData(
        buffer,
        offset + len,
        apduLen + offset,
        objectId.type,
        propertyId
      );
      if (!value) {
        return void 0;
      }
      len += value.len;
      delete value.len;
      values.push(value);
    }
    len++;
    newEntry.value = values;
    let priority = ASN1_NO_PRIORITY;
    result = decodeTagNumberAndValue(buffer, offset + len);
    len += result.len;
    if (result.tagNumber === 3) {
      decodedValue = decodeUnsigned(buffer, offset + len, result.value);
      len += decodedValue.len;
      priority = decodedValue.value;
    } else {
      len--;
    }
    newEntry.priority = priority;
    _values.push(newEntry);
    if (decodeIsClosingTagNumber(buffer, offset + len, 1)) {
      len++;
    }
  }
  if (decodeIsClosingTagNumber(buffer, offset + len, 1)) {
    len++;
  }
  return {
    len,
    objectId,
    values: _values
  };
};
var encodeObject = (buffer, values) => {
  values.forEach((object) => {
    encode30(buffer, object.objectId, object.values);
  });
};

// src/apdu.ts
var getDecodedType = (buffer, offset) => {
  return buffer[offset];
};
var encodeConfirmedServiceRequest = (buffer, type, service, maxSegments, maxApdu, invokeId, sequencenumber, proposedWindowSize) => {
  buffer.buffer[buffer.offset++] = type;
  buffer.buffer[buffer.offset++] = maxSegments | maxApdu;
  buffer.buffer[buffer.offset++] = invokeId;
  if ((type & 8 /* SEGMENTED_MESSAGE */) > 0) {
    buffer.buffer[buffer.offset++] = sequencenumber;
    buffer.buffer[buffer.offset++] = proposedWindowSize;
  }
  buffer.buffer[buffer.offset++] = service;
};
var decodeConfirmedServiceRequest = (buffer, offset) => {
  const orgOffset = offset;
  const type = buffer[offset++];
  const maxSegments = buffer[offset] & 240;
  const maxApdu = buffer[offset++] & 15;
  const invokeId = buffer[offset++];
  let sequencenumber = 0;
  let proposedWindowNumber = 0;
  if ((type & 8 /* SEGMENTED_MESSAGE */) > 0) {
    sequencenumber = buffer[offset++];
    proposedWindowNumber = buffer[offset++];
  }
  const service = buffer[offset++];
  return {
    len: offset - orgOffset,
    type,
    service,
    maxSegments,
    maxApdu,
    invokeId,
    sequencenumber,
    proposedWindowNumber
  };
};
var encodeUnconfirmedServiceRequest = (buffer, type, service) => {
  buffer.buffer[buffer.offset++] = type;
  buffer.buffer[buffer.offset++] = service;
};
var decodeUnconfirmedServiceRequest = (buffer, offset) => {
  const orgOffset = offset;
  const type = buffer[offset++];
  const service = buffer[offset++];
  return {
    len: offset - orgOffset,
    type,
    service
  };
};
var encodeSimpleAck = (buffer, type, service, invokeId) => {
  buffer.buffer[buffer.offset++] = type;
  buffer.buffer[buffer.offset++] = invokeId;
  buffer.buffer[buffer.offset++] = service;
};
var decodeSimpleAck = (buffer, offset) => {
  const orgOffset = offset;
  const type = buffer[offset++];
  const invokeId = buffer[offset++];
  const service = buffer[offset++];
  return {
    len: offset - orgOffset,
    type,
    service,
    invokeId
  };
};
var encodeComplexAck = (buffer, type, service, invokeId, sequencenumber, proposedWindowNumber) => {
  let len = 3;
  buffer.buffer[buffer.offset++] = type;
  buffer.buffer[buffer.offset++] = invokeId;
  if ((type & 8 /* SEGMENTED_MESSAGE */) > 0) {
    buffer.buffer[buffer.offset++] = sequencenumber;
    buffer.buffer[buffer.offset++] = proposedWindowNumber;
    len += 2;
  }
  buffer.buffer[buffer.offset++] = service;
  return len;
};
var decodeComplexAck = (buffer, offset) => {
  const orgOffset = offset;
  const type = buffer[offset++];
  const invokeId = buffer[offset++];
  let sequencenumber = 0;
  let proposedWindowNumber = 0;
  if ((type & 8 /* SEGMENTED_MESSAGE */) > 0) {
    sequencenumber = buffer[offset++];
    proposedWindowNumber = buffer[offset++];
  }
  const service = buffer[offset++];
  return {
    len: offset - orgOffset,
    type,
    service,
    invokeId,
    sequencenumber,
    proposedWindowNumber
  };
};
var encodeSegmentAck = (buffer, type, originalInvokeId, sequencenumber, actualWindowSize) => {
  buffer.buffer[buffer.offset++] = type;
  buffer.buffer[buffer.offset++] = originalInvokeId;
  buffer.buffer[buffer.offset++] = sequencenumber;
  buffer.buffer[buffer.offset++] = actualWindowSize;
};
var decodeSegmentAck = (buffer, offset) => {
  const orgOffset = offset;
  const type = buffer[offset++];
  const originalInvokeId = buffer[offset++];
  const sequencenumber = buffer[offset++];
  const actualWindowSize = buffer[offset++];
  return {
    len: offset - orgOffset,
    type,
    originalInvokeId,
    sequencenumber,
    actualWindowSize
  };
};
var encodeResult = (buffer, resultCode) => {
  encodeUnsigned(buffer, resultCode, 2);
};
var encodeError = (buffer, type, service, invokeId) => {
  buffer.buffer[buffer.offset++] = type;
  buffer.buffer[buffer.offset++] = invokeId;
  buffer.buffer[buffer.offset++] = service;
};
var decodeError = (buffer, offset) => {
  const orgOffset = offset;
  const type = buffer[offset++];
  const invokeId = buffer[offset++];
  const service = buffer[offset++];
  return {
    len: offset - orgOffset,
    type,
    service,
    invokeId
  };
};
var decodeAbort = (buffer, offset) => {
  const orgOffset = offset;
  const type = buffer[offset++];
  const invokeId = buffer[offset++];
  const reason = buffer[offset++];
  return {
    len: offset - orgOffset,
    type,
    invokeId,
    reason
  };
};

// src/npdu.ts
var DEFAULT_HOP_COUNT = 255;
var BACNET_PROTOCOL_VERSION = 1;
var BACNET_ADDRESS_TYPES = {
  NONE: 0,
  IP: 1
};
var decodeTarget = (buffer, offset) => {
  let len = 0;
  const target = {
    type: BACNET_ADDRESS_TYPES.NONE,
    net: buffer[offset + len++] << 8 | buffer[offset + len++] << 0
  };
  const adrLen = buffer[offset + len++];
  if (adrLen > 0) {
    target.adr = [];
    for (let i = 0; i < adrLen; i++) {
      target.adr.push(buffer[offset + len++]);
    }
  }
  return {
    target,
    len
  };
};
var encodeTarget = (buffer, target) => {
  buffer.buffer[buffer.offset++] = (target.net & 65280) >> 8;
  buffer.buffer[buffer.offset++] = (target.net & 255) >> 0;
  if (target.net === 65535 || !target.adr) {
    buffer.buffer[buffer.offset++] = 0;
  } else {
    buffer.buffer[buffer.offset++] = target.adr.length;
    if (target.adr.length > 0) {
      for (let i = 0; i < target.adr.length; i++) {
        buffer.buffer[buffer.offset++] = target.adr[i];
      }
    }
  }
};
var decode31 = (buffer, offset) => {
  let adrLen;
  const orgOffset = offset;
  offset++;
  const funct = buffer[offset++];
  let destination;
  if (funct & 32 /* DESTINATION_SPECIFIED */) {
    const tmpDestination = decodeTarget(buffer, offset);
    offset += tmpDestination.len;
    destination = tmpDestination.target;
  }
  let source;
  if (funct & 8 /* SOURCE_SPECIFIED */) {
    const tmpSource = decodeTarget(buffer, offset);
    offset += tmpSource.len;
    source = tmpSource.target;
  }
  let hopCount = 0;
  if (funct & 32 /* DESTINATION_SPECIFIED */) {
    hopCount = buffer[offset++];
  }
  let networkMsgType = 0 /* WHO_IS_ROUTER_TO_NETWORK */;
  let vendorId = 0;
  if (funct & 128 /* NETWORK_LAYER_MESSAGE */) {
    networkMsgType = buffer[offset++];
    if (networkMsgType >= 128) {
      vendorId = buffer[offset++] << 8 | buffer[offset++] << 0;
    } else if (networkMsgType === 0 /* WHO_IS_ROUTER_TO_NETWORK */) {
      offset += 2;
    }
  }
  if (buffer[orgOffset + 0] !== BACNET_PROTOCOL_VERSION) {
    return void 0;
  }
  return {
    len: offset - orgOffset,
    funct,
    destination,
    source,
    hopCount,
    networkMsgType,
    vendorId
  };
};
var encode31 = (buffer, funct, destination, source, hopCount, networkMsgType, vendorId) => {
  const hasDestination = destination && destination.net > 0;
  const hasSource = source && source.net > 0 && source.net !== 65535;
  buffer.buffer[buffer.offset++] = BACNET_PROTOCOL_VERSION;
  buffer.buffer[buffer.offset++] = funct | (hasDestination ? 32 /* DESTINATION_SPECIFIED */ : 0) | (hasSource ? 8 /* SOURCE_SPECIFIED */ : 0);
  if (hasDestination) {
    encodeTarget(buffer, destination);
  }
  if (hasSource) {
    encodeTarget(buffer, source);
  }
  if (hasDestination) {
    buffer.buffer[buffer.offset++] = hopCount || DEFAULT_HOP_COUNT;
  }
  if ((funct & 128 /* NETWORK_LAYER_MESSAGE */) > 0) {
    buffer.buffer[buffer.offset++] = networkMsgType;
    if (networkMsgType >= 128) {
      buffer.buffer[buffer.offset++] = (vendorId & 65280) >> 8;
      buffer.buffer[buffer.offset++] = (vendorId & 255) >> 0;
    }
  }
};

// src/bvlc.ts
var DEFAULT_BACNET_PORT2 = 47808;
var encode32 = (buffer, func, msgLength, originatingIP) => {
  buffer[0] = BVLL_TYPE_BACNET_IP;
  buffer[1] = func;
  buffer[2] = (msgLength & 65280) >> 8;
  buffer[3] = (msgLength & 255) >> 0;
  if (originatingIP) {
    if (func !== 4 /* FORWARDED_NPDU */) {
      throw new Error(
        "Cannot specify originatingIP unless BvlcResultPurpose.FORWARDED_NPDU is used."
      );
    }
    const [ipstr, portstr] = originatingIP.split(":");
    const port = parseInt(portstr, 10) || DEFAULT_BACNET_PORT2;
    const ip = ipstr.split(".");
    buffer[4] = parseInt(ip[0], 10);
    buffer[5] = parseInt(ip[1], 10);
    buffer[6] = parseInt(ip[2], 10);
    buffer[7] = parseInt(ip[3], 10);
    buffer[8] = (port & 65280) >> 8;
    buffer[9] = (port & 255) >> 0;
    return 6 + BVLC_HEADER_LENGTH;
  } else {
    if (func === 4 /* FORWARDED_NPDU */) {
      throw new Error(
        "Must specify originatingIP if BvlcResultPurpose.FORWARDED_NPDU is used."
      );
    }
  }
  return BVLC_HEADER_LENGTH;
};
var decode32 = (buffer, _offset) => {
  let len;
  const func = buffer[1];
  const msgLength = buffer[2] << 8 | buffer[3] << 0;
  if (buffer[0] !== BVLL_TYPE_BACNET_IP || buffer.length !== msgLength) {
    return void 0;
  }
  let originatingIP = null;
  switch (func) {
    case 0 /* BVLC_RESULT */:
    case 10 /* ORIGINAL_UNICAST_NPDU */:
    case 11 /* ORIGINAL_BROADCAST_NPDU */:
    case 9 /* DISTRIBUTE_BROADCAST_TO_NETWORK */:
    case 5 /* REGISTER_FOREIGN_DEVICE */:
    case 6 /* READ_FOREIGN_DEVICE_TABLE */:
    case 8 /* DELETE_FOREIGN_DEVICE_TABLE_ENTRY */:
    case 2 /* READ_BROADCAST_DISTRIBUTION_TABLE */:
    case 1 /* WRITE_BROADCAST_DISTRIBUTION_TABLE */:
    case 3 /* READ_BROADCAST_DISTRIBUTION_TABLE_ACK */:
    case 7 /* READ_FOREIGN_DEVICE_TABLE_ACK */:
      len = 4;
      break;
    case 4 /* FORWARDED_NPDU */:
      const port = buffer[8] << 8 | buffer[9];
      originatingIP = buffer.slice(4, 8).join(".");
      if (port !== DEFAULT_BACNET_PORT2) {
        originatingIP += ":" + port;
      }
      len = 10;
      break;
    case 12 /* SECURE_BVLL */:
      return void 0;
    default:
      return void 0;
  }
  return {
    len,
    func,
    msgLength,
    // Originating IP is set to the IP address of the node that originally
    // sent the packet, when it has been forwarded to us by a BBMD (since the
    // BBMD's IP address will be in the sender field.
    originatingIP
  };
};

// src/client.ts
var EventEmitter2 = import_events2.default.EventEmitter;
var debug3 = (0, import_debug3.default)("bacnet:client:debug");
var trace2 = (0, import_debug3.default)("bacnet:client:trace");
var ALL_INTERFACES = "0.0.0.0";
var LOCALHOST_INTERFACES_IPV4 = "127.0.0.1";
var BROADCAST_ADDRESS = "255.255.255.255";
var DEFAULT_HOP_COUNT2 = 255;
var BVLC_HEADER_LENGTH2 = 4;
var BVLC_FWD_HEADER_LENGTH = 10;
var beU = UnconfirmedServiceChoice;
var unconfirmedServiceMap = {
  [beU.I_AM]: "iAm",
  [beU.WHO_IS]: "whoIs",
  [beU.WHO_HAS]: "whoHas",
  [beU.UNCONFIRMED_COV_NOTIFICATION]: "covNotifyUnconfirmed",
  [beU.TIME_SYNCHRONIZATION]: "timeSync",
  [beU.UTC_TIME_SYNCHRONIZATION]: "timeSyncUTC",
  [beU.UNCONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
  [beU.I_HAVE]: "iHave",
  [beU.UNCONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
};
var beC = ConfirmedServiceChoice;
var confirmedServiceMap = {
  [beC.READ_PROPERTY]: "readProperty",
  [beC.WRITE_PROPERTY]: "writeProperty",
  [beC.READ_PROPERTY_MULTIPLE]: "readPropertyMultiple",
  [beC.WRITE_PROPERTY_MULTIPLE]: "writePropertyMultiple",
  [beC.CONFIRMED_COV_NOTIFICATION]: "covNotify",
  [beC.ATOMIC_WRITE_FILE]: "atomicWriteFile",
  [beC.ATOMIC_READ_FILE]: "atomicReadFile",
  [beC.SUBSCRIBE_COV]: "subscribeCov",
  [beC.SUBSCRIBE_COV_PROPERTY]: "subscribeProperty",
  [beC.DEVICE_COMMUNICATION_CONTROL]: "deviceCommunicationControl",
  [beC.REINITIALIZE_DEVICE]: "reinitializeDevice",
  [beC.CONFIRMED_EVENT_NOTIFICATION]: "eventNotify",
  [beC.READ_RANGE]: "readRange",
  [beC.CREATE_OBJECT]: "createObject",
  [beC.DELETE_OBJECT]: "deleteObject",
  [beC.ACKNOWLEDGE_ALARM]: "alarmAcknowledge",
  [beC.GET_ALARM_SUMMARY]: "getAlarmSummary",
  [beC.GET_ENROLLMENT_SUMMARY]: "getEnrollmentSummary",
  [beC.GET_EVENT_INFORMATION]: "getEventInformation",
  [beC.LIFE_SAFETY_OPERATION]: "lifeSafetyOperation",
  [beC.ADD_LIST_ELEMENT]: "addListElement",
  [beC.REMOVE_LIST_ELEMENT]: "removeListElement",
  [beC.CONFIRMED_PRIVATE_TRANSFER]: "privateTransfer"
};
var errorReasonEnums = {
  BacnetAbort: RejectReason
};
var BacnetError = class extends Error {
  constructor(message, bacnetErrorClass, bacnetErrorCode) {
    super(message);
    this.bacnetErrorClass = bacnetErrorClass;
    this.bacnetErrorCode = bacnetErrorCode;
  }
};
function bacnetErrorToString(err) {
  var _a;
  const isError = err instanceof Error || err instanceof BacnetError;
  if (!isError)
    return;
  const message = err.message;
  const reasonClass = message == null ? void 0 : message.split(" - ")[0];
  const reason = +((_a = message == null ? void 0 : message.split("Reason:")[1]) == null ? void 0 : _a.split(" ")[0]);
  if (!errorReasonEnums[reasonClass])
    return;
  const reasonString = errorReasonEnums[reasonClass][reason];
  return reasonClass + ": " + reasonString;
}
var Client = class extends EventEmitter2 {
  /**
   *
   * @param options
   */
  constructor(options) {
    super();
    options = options || {};
    this._invokeCounter = 1;
    this._invokeStore = {};
    this._lastSequenceNumber = 0;
    this._segmentStore = [];
    this._settings = {
      port: options.port || 47808,
      interface: options.interface || ALL_INTERFACES,
      transport: options.transport,
      broadcastAddress: options.broadcastAddress || BROADCAST_ADDRESS,
      apduTimeout: options.apduTimeout || 3e3
    };
    options.reuseAddr = options.reuseAddr === void 0 ? true : !!options.reuseAddr;
    this._transport = this._settings.transport || new Transport({
      port: this._settings.port,
      interface: this._settings.interface,
      broadcastAddress: this._settings.broadcastAddress,
      reuseAddr: options.reuseAddr
    });
    this._transport.on("message", this._receiveData.bind(this));
    this._transport.on("error", this._receiveError.bind(this));
    this._transport.on("listening", () => this.emit("listening"));
    this._transport.open();
  }
  /**
   *
   * @returns {number}
   * @private
   */
  _getInvokeId() {
    const id = this._invokeCounter++;
    if (id >= 256)
      this._invokeCounter = 1;
    return id - 1;
  }
  /**
   *
   * @param id
   * @param err
   * @param result
   * @returns {*}
   * @private
   */
  _invokeCallback(id, err, result) {
    const callback = this._invokeStore[id];
    if (callback) {
      return void callback(err, result);
    }
    debug3("InvokeId", id, "not found -> drop package");
  }
  /**
   *
   * @param id
   * @param callback
   * @private
   */
  _addCallback(id, callback) {
    const timeout = setTimeout(() => {
      delete this._invokeStore[id];
      callback(new Error("ERR_TIMEOUT"));
    }, this._settings.apduTimeout);
    this._invokeStore[id] = (err, data) => {
      clearTimeout(timeout);
      delete this._invokeStore[id];
      callback(err, data);
    };
  }
  /**
   *
   * @param isForwarded
   * @returns {{offset: (number), buffer: *}}
   * @private
   */
  _getBuffer(isForwarded) {
    return Object.assign(
      {},
      {
        buffer: Buffer.alloc(this._transport.getMaxPayload()),
        offset: isForwarded ? BVLC_FWD_HEADER_LENGTH : BVLC_HEADER_LENGTH2
      }
    );
  }
  /**
   *
   * @param invokeId
   * @param buffer
   * @param offset
   * @param length
   * @returns {*}
   * @private
   */
  _processError(invokeId, buffer, offset, length) {
    const result = error_exports.decode(buffer, offset);
    trace2("Received error:", result);
    if (!result) {
      return debug3("Couldn`t decode Error");
    }
    const err = new BacnetError(error_exports.buildMessage(result));
    err.bacnetErrorClass = result.class;
    err.bacnetErrorCode = result.code;
    this._invokeCallback(invokeId, err);
  }
  /**
   *
   * @param invokeId
   * @param reason
   * @private
   */
  _processAbort(invokeId, reason) {
    const err = new BacnetError("BacnetAbort - Reason:" + reason);
    err.bacnetAbortReason = reason;
    err.bacnetErrorClass = AbortReason;
    this._invokeCallback(invokeId, err);
  }
  /**
   *
   * @param receiver
   * @param negative
   * @param server
   * @param originalInvokeId
   * @param sequencenumber
   * @param actualWindowSize
   * @private
   */
  _segmentAckResponse(receiver, negative, server, originalInvokeId, sequencenumber, actualWindowSize) {
    const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */,
      receiver,
      null,
      DEFAULT_HOP_COUNT2,
      0 /* WHO_IS_ROUTER_TO_NETWORK */,
      0
    );
    encodeSegmentAck(
      buffer,
      64 /* SEGMENT_ACK */ | (negative ? 2 /* NEGATIVE_ACK */ : 0) | (server ? 1 /* SERVER */ : 0),
      originalInvokeId,
      sequencenumber,
      actualWindowSize
    );
    this.sendBvlc(receiver, buffer);
  }
  /**
   *
   * @param msg
   * @param first
   * @param moreFollows
   * @param buffer
   * @param offset
   * @param length
   * @private
   */
  _performDefaultSegmentHandling(msg, first, moreFollows, buffer, offset, length) {
    if (first) {
      this._segmentStore = [];
      msg.type &= ~8 /* SEGMENTED_MESSAGE */;
      let apduHeaderLen = 3;
      if ((msg.type & PDU_TYPE_MASK) === 0 /* CONFIRMED_REQUEST */) {
        apduHeaderLen = 4;
      }
      const apdubuffer = this._getBuffer();
      apdubuffer.offset = 0;
      buffer.copy(apdubuffer.buffer, apduHeaderLen, offset, offset + length);
      if ((msg.type & PDU_TYPE_MASK) === 0 /* CONFIRMED_REQUEST */) {
        encodeConfirmedServiceRequest(
          apdubuffer,
          msg.type,
          msg.service,
          msg.maxSegments,
          msg.maxApdu,
          msg.invokeId,
          0,
          0
        );
      } else {
        encodeComplexAck(
          apdubuffer,
          msg.type,
          msg.service,
          msg.invokeId,
          0,
          0
        );
      }
      this._segmentStore.push(
        //@ts-ignore
        apdubuffer.buffer.slice(0, length + apduHeaderLen)
      );
    } else {
      this._segmentStore.push(buffer.slice(offset, offset + length));
    }
    if (!moreFollows) {
      const apduBuffer = Buffer.concat(this._segmentStore);
      this._segmentStore = [];
      msg.type &= ~8 /* SEGMENTED_MESSAGE */;
      this._handlePdu(apduBuffer, 0, apduBuffer.length, msg.header);
    }
  }
  /**
   *
   * @param msg
   * @param server
   * @param buffer
   * @param offset
   * @param length
   * @private
   */
  _processSegment(msg, server, buffer, offset, length) {
    let first = false;
    if (msg.sequencenumber === 0 && this._lastSequenceNumber === 0) {
      first = true;
    } else {
      if (msg.sequencenumber !== this._lastSequenceNumber + 1) {
        return this._segmentAckResponse(
          msg.header.address,
          true,
          server,
          msg.invokeId,
          this._lastSequenceNumber,
          msg.proposedWindowNumber
        );
      }
    }
    this._lastSequenceNumber = msg.sequencenumber;
    const moreFollows = msg.type & 4 /* MORE_FOLLOWS */;
    if (!moreFollows) {
      this._lastSequenceNumber = 0;
    }
    if (msg.sequencenumber % msg.proposedWindowNumber === 0 || !moreFollows) {
      this._segmentAckResponse(
        msg.header.address,
        false,
        server,
        msg.invokeId,
        msg.sequencenumber,
        msg.proposedWindowNumber
      );
    }
    this._performDefaultSegmentHandling(
      msg,
      first,
      moreFollows,
      buffer,
      offset,
      length
    );
  }
  /**
   *
   * @param serviceMap
   * @param content
   * @param buffer
   * @param offset
   * @param length
   * @returns {*}
   * @private
   */
  _processServiceRequest(serviceMap, content, buffer, offset, length) {
    let result;
    const sender = content.header.sender;
    if (sender.address === LOCALHOST_INTERFACES_IPV4) {
      debug3("Received and skipped localhost service request:", content.service);
      return;
    }
    const name = serviceMap[content.service];
    if (!name) {
      debug3("Received unsupported service request:", content.service);
      return;
    }
    const id = content.invokeId ? "@" + content.invokeId : "";
    trace2(`Received service request${id}:`, name);
    const serviceHandler = services_exports[name];
    if (serviceHandler) {
      try {
        content.payload = serviceHandler.decode(buffer, offset, length);
        trace2(`Handled service request${id}:`, name, JSON.stringify(content));
      } catch (e) {
        debug3("Exception thrown when processing message:", e);
        debug3("Original message was", name + ":", content);
        return;
      }
      if (!content.payload) {
        return debug3("Received invalid", name, "message");
      }
    } else {
      debug3("No serviceHandler defined for:", name);
    }
    if (this.listenerCount(name)) {
      trace2("listener count by name emits " + name + " with content");
      this.emit(name, content);
    } else {
      if (this.listenerCount("unhandledEvent")) {
        trace2("unhandled event emiting with content");
        this.emit("unhandledEvent", content);
      } else {
        trace2(
          "no unhandled event handler with header: " + JSON.stringify(content.header)
        );
        if (content.header.expectingReply) {
          debug3("Replying with error for unhandled service:", name);
          content.header.sender.forwardedFrom = null;
          this.errorResponse(
            content.header.sender,
            content.service,
            content.invokeId,
            5 /* SERVICES */,
            67 /* REJECT_UNRECOGNIZED_SERVICE */
          );
        }
      }
    }
  }
  /**
   *
   * @param buffer
   * @param offset
   * @param length
   * @param header
   * @private
   */
  _handlePdu(buffer, offset, length, header) {
    let msg;
    trace2("handlePdu Header: ", header);
    switch (header.apduType & PDU_TYPE_MASK) {
      case 16 /* UNCONFIRMED_REQUEST */:
        msg = decodeUnconfirmedServiceRequest(buffer, offset);
        msg.header = header;
        msg.header.confirmedService = false;
        this._processServiceRequest(
          unconfirmedServiceMap,
          msg,
          buffer,
          offset + msg.len,
          length - msg.len
        );
        break;
      case 32 /* SIMPLE_ACK */:
        msg = decodeSimpleAck(buffer, offset);
        offset += msg.len;
        length -= msg.len;
        this._invokeCallback(msg.invokeId, null, {
          msg,
          buffer,
          offset: offset + msg.len,
          length: length - msg.len
        });
        break;
      case 48 /* COMPLEX_ACK */:
        msg = decodeComplexAck(buffer, offset);
        msg.header = header;
        if ((header.apduType & 8 /* SEGMENTED_MESSAGE */) === 0) {
          this._invokeCallback(msg.invokeId, null, {
            msg,
            buffer,
            offset: offset + msg.len,
            length: length - msg.len
          });
        } else {
          this._processSegment(
            msg,
            true,
            buffer,
            offset + msg.len,
            length - msg.len
          );
        }
        break;
      case 64 /* SEGMENT_ACK */:
        msg = decodeSegmentAck(buffer, offset);
        msg.header = header;
        this._processSegment(
          msg,
          true,
          buffer,
          offset + msg.len,
          length - msg.len
        );
        break;
      case 80 /* ERROR */:
        msg = decodeError(buffer, offset);
        this._processError(
          msg.invokeId,
          buffer,
          offset + msg.len,
          length - msg.len
        );
        break;
      case 96 /* REJECT */:
      case 112 /* ABORT */:
        msg = decodeAbort(buffer, offset);
        this._processAbort(msg.invokeId, msg.reason);
        break;
      case 0 /* CONFIRMED_REQUEST */:
        msg = decodeConfirmedServiceRequest(buffer, offset);
        msg.header = header;
        msg.header.confirmedService = true;
        if ((header.apduType & 8 /* SEGMENTED_MESSAGE */) === 0) {
          this._processServiceRequest(
            confirmedServiceMap,
            msg,
            buffer,
            offset + msg.len,
            length - msg.len
          );
        } else {
          this._processSegment(
            msg,
            true,
            buffer,
            offset + msg.len,
            length - msg.len
          );
        }
        break;
      default:
        debug3(`Received unknown PDU type ${header.apduType} -> Drop packet`);
        break;
    }
  }
  /**
   *
   * @param buffer
   * @param offset
   * @param msgLength
   * @param header
   * @returns {*}
   * @private
   */
  _handleNpdu(buffer, offset, msgLength, header) {
    if (msgLength <= 0) {
      return trace2("No NPDU data -> Drop package");
    }
    const result = decode31(buffer, offset);
    if (!result) {
      return trace2("Received invalid NPDU header -> Drop package");
    }
    if (result.funct & 128 /* NETWORK_LAYER_MESSAGE */) {
      return trace2("Received network layer message -> Drop package");
    }
    offset += result.len;
    msgLength -= result.len;
    if (msgLength <= 0) {
      return trace2("No APDU data -> Drop package");
    }
    header.apduType = getDecodedType(buffer, offset);
    header.expectingReply = !!(result.funct & 4 /* EXPECTING_REPLY */);
    this._handlePdu(buffer, offset, msgLength, header);
  }
  /**
   *
   * @param buffer
   * @param remoteAddress
   * @returns {*}
   * @private
   */
  _receiveData(buffer, remoteAddress) {
    if (buffer.length < BVLC_HEADER_LENGTH) {
      return trace2("Received invalid data -> Drop package");
    }
    const result = decode32(buffer, 0);
    if (!result) {
      return trace2("Received invalid BVLC header -> Drop package");
    }
    let header = {
      // Which function the packet came in on, so later code can distinguish
      // between ORIGINAL_BROADCAST_NPDU and DISTRIBUTE_BROADCAST_TO_NETWORK.
      func: result.func,
      sender: {
        // Address of the host we are directly connected to. String, IP:port.
        address: remoteAddress,
        // If the host is a BBMD passing messages along to another node, this
        // is the address of the distant BACnet node.  String, IP:port.
        // Typically we won't have network connectivity to this address, but
        // we have to include it in replies so the host we are connect to knows
        // where to forward the messages.
        forwardedFrom: null
      }
    };
    switch (result.func) {
      case 10 /* ORIGINAL_UNICAST_NPDU */:
      case 11 /* ORIGINAL_BROADCAST_NPDU */:
        this._handleNpdu(
          buffer,
          result.len,
          buffer.length - result.len,
          header
        );
        break;
      case 4 /* FORWARDED_NPDU */:
        header.sender.forwardedFrom = result.originatingIP;
        this._handleNpdu(
          buffer,
          result.len,
          buffer.length - result.len,
          header
        );
        break;
      case 5 /* REGISTER_FOREIGN_DEVICE */:
        let decodeResult = register_foreign_device_exports.decode(
          buffer,
          result.len,
          buffer.length - result.len
        );
        if (!decodeResult) {
          return trace2("Received invalid registerForeignDevice message");
        }
        this.emit("registerForeignDevice", {
          header,
          payload: decodeResult
        });
        break;
      case 9 /* DISTRIBUTE_BROADCAST_TO_NETWORK */:
        this._handleNpdu(
          buffer,
          result.len,
          buffer.length - result.len,
          header
        );
        break;
      default:
        debug3(
          "Received unknown BVLC function " + result.func + " -> Drop package"
        );
        break;
    }
  }
  /**
   * @event bacnet.error
   * @param {error} err - The error object thrown by the underlying transport layer.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.on('error', (err) => {
   *   console.log('Error occurred: ', err);
   *   client.close();
   * });
   */
  _receiveError(err) {
    this.emit("error", err);
  }
  /**
   * The whoIs command discovers all BACNET devices in a network.
   * @function bacnet.whoIs
   * @param {string} receiver - IP address of the target device.
   * @param {object=} options
   * @param {number=} options.lowLimit - Minimal device instance number to search for.
   * @param {number=} options.highLimit - Maximal device instance number to search for.
   * @fires bacnet.iAm
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.whoIs();
   */
  whoIs(receiver, options) {
    if (!options) {
      if (receiver && typeof receiver === "object" && receiver.address === void 0 && receiver.forwardedFrom === void 0 && (receiver.lowLimit !== void 0 || receiver.highLimit !== void 0)) {
        options = receiver;
        receiver = void 0;
      }
    }
    options = options || {};
    const settings = {
      lowLimit: options.lowLimit,
      highLimit: options.highLimit
    };
    const buffer = this._getBuffer(receiver && receiver.forwardedFrom);
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */,
      //@ts-ignore
      receiver,
      null,
      DEFAULT_HOP_COUNT2,
      0 /* WHO_IS_ROUTER_TO_NETWORK */,
      0
    );
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      8 /* WHO_IS */
    );
    who_is_exports.encode(buffer, settings.lowLimit, settings.highLimit);
    this.sendBvlc(receiver, buffer);
  }
  /**
   * The timeSync command sets the time of a target device.
   * @function bacnet.timeSync
   * @param {string} receiver - IP address of the target device.
   * @param {date} dateTime - The date and time to set on the target device.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.timeSync('192.168.1.43', new Date());
   */
  timeSync(receiver, dateTime) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      6 /* TIME_SYNCHRONIZATION */
    );
    time_sync_exports.encode(buffer, dateTime);
    this.sendBvlc(receiver, buffer);
  }
  /**
   * The timeSyncUTC command sets the UTC time of a target device.
   * @function bacnet.timeSyncUTC
   * @param {string} receiver - IP address of the target device.
   * @param {date} dateTime - The date and time to set on the target device.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.timeSyncUTC('192.168.1.43', new Date());
   */
  timeSyncUTC(receiver, dateTime) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      9 /* UTC_TIME_SYNCHRONIZATION */
    );
    time_sync_exports.encode(buffer, dateTime);
    this.sendBvlc(receiver, buffer);
  }
  /**
   * The readProperty command reads a single property of an object from a device.
   * @function bacnet.readProperty
   * @param {string} receiver - IP address of the target device.
   * @param {object} objectId - The BACNET object ID to read.
   * @param {number} objectId.type - The BACNET object type to read.
   * @param {number} objectId.instance - The BACNET object instance to read.
   * @param {number} propertyId - The BACNET property id in the specified object to read.
   * @param {object=} options
   * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
   * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
   * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
   * @param {number=} options.arrayIndex - The array index of the property to be read.
   * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.readProperty('192.168.1.43', {type: 8, instance: 44301}, 28, (err, value) => {
   *   console.log('value: ', value);
   * });
   */
  readProperty(receiver, objectId, propertyId, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId(),
      arrayIndex: options.arrayIndex || options.arrayIndex === 0 ? options.arrayIndex : ASN1_ARRAY_ALL
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      //@ts-ignore
      receiver,
      null,
      DEFAULT_HOP_COUNT2,
      0 /* WHO_IS_ROUTER_TO_NETWORK */,
      0
    );
    const type = 0 /* CONFIRMED_REQUEST */ | //@ts-ignore
    (settings.maxSegments !== 0 /* SEGMENTS_0 */ ? 2 /* SEGMENTED_RESPONSE_ACCEPTED */ : 0);
    encodeConfirmedServiceRequest(
      buffer,
      type,
      12 /* READ_PROPERTY */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    read_property_exports.encode(
      buffer,
      objectId.type,
      objectId.instance,
      propertyId,
      settings.arrayIndex
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      const result = read_property_exports.decodeAcknowledge(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return void next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   * The writeProperty command writes a single property of an object to a device.
   * @function bacnet.writeProperty
   * @param {string} receiver - IP address of the target device.
   * @param {object} objectId - The BACNET object ID to write.
   * @param {number} objectId.type - The BACNET object type to write.
   * @param {number} objectId.instance - The BACNET object instance to write.
   * @param {number} propertyId - The BACNET property id in the specified object to write.
   * @param {object[]} values - A list of values to be written to the specified property.
   * @param {ApplicationTag} values.type - The data-type of the value to be written.
   * @param {number} values.value - The actual value to be written.
   * @param {object=} options
   * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
   * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
   * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
   * @param {number=} options.arrayIndex - The array index of the property to be read.
   * @param {number=} options.priority - The priority of the value to be written.
   * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.writeProperty('192.168.1.43', {type: 8, instance: 44301}, 28, [
   *   {type: bacnet.enum.ApplicationTag.REAL, value: 100}
   * ], (err, value) => {
   *   console.log('value: ', value);
   * });
   */
  writeProperty(receiver, objectId, propertyId, values, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId(),
      arrayIndex: options.arrayIndex || ASN1_ARRAY_ALL,
      priority: options.priority || ASN1_NO_PRIORITY
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      //@ts-ignore Todo somehow types do not match at all
      receiver,
      null,
      DEFAULT_HOP_COUNT2,
      0 /* WHO_IS_ROUTER_TO_NETWORK */,
      0
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      15 /* WRITE_PROPERTY */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    write_property_exports.encode(
      buffer,
      objectId.type,
      objectId.instance,
      propertyId,
      settings.arrayIndex,
      settings.priority,
      values
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      next(err);
    });
  }
  /**
   * The readPropertyMultiple command reads multiple properties in multiple objects from a device.
   * @function bacnet.readPropertyMultiple
   * @param {string} receiver - IP address of the target device.
   * @param {object[]} propertiesArray - List of object and property specifications to be read.
   * @param {object} propertiesArray.objectId - Specifies which object to read.
   * @param {number} propertiesArray.objectId.type - The BACNET object type to read.
   * @param {number} propertiesArray.objectId.instance - The BACNET object instance to read.
   * @param {object[]} propertiesArray.properties - List of properties to be read.
   * @param {number} propertiesArray.properties.id - The BACNET property id in the specified object to read. Also supports 8 for all properties.
   * @param {object=} options
   * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
   * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
   * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
   * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * const requestArray = [
   *   {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]}
   * ];
   * client.readPropertyMultiple('192.168.1.43', requestArray, (err, value) => {
   *   console.log('value: ', value);
   * });
   */
  readPropertyMultiple(receiver, propertiesArray, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const isForwarded = typeof receiver !== "string" && receiver.forwardedFrom;
    const buffer = this._getBuffer(!!isForwarded);
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      //@ts-ignore Todo somehow types do not match at all
      receiver,
      null,
      DEFAULT_HOP_COUNT2,
      0 /* WHO_IS_ROUTER_TO_NETWORK */,
      0
    );
    const type = 0 /* CONFIRMED_REQUEST */ | //@ts-ignore
    (settings.maxSegments !== 0 /* SEGMENTS_0 */ ? 2 /* SEGMENTED_RESPONSE_ACCEPTED */ : 0);
    encodeConfirmedServiceRequest(
      buffer,
      type,
      14 /* READ_PROPERTY_MULTIPLE */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    read_property_multiple_exports.encode(buffer, propertiesArray);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return next(err);
      }
      const result = read_property_multiple_exports.decodeAcknowledge(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   * The writePropertyMultiple command writes multiple properties in multiple objects to a device.
   * @function bacnet.writePropertyMultiple
   * @param {string} receiver - IP address of the target device.
   * @param {object[]} values - List of object and property specifications to be written.
   * @param {object} values.objectId - Specifies which object to read.
   * @param {number} values.objectId.type - The BACNET object type to read.
   * @param {number} values.objectId.instance - The BACNET object instance to read.
   * @param {object[]} values.values - List of properties to be written.
   * @param {object} values.values.property - Property specifications to be written.
   * @param {number} values.values.property.id - The BACNET property id in the specified object to write.
   * @param {number} values.values.property.index - The array index of the property to be written.
   * @param {object[]} values.values.value - A list of values to be written to the specified property.
   * @param {ApplicationTag} values.values.value.type - The data-type of the value to be written.
   * @param {object} values.values.value.value - The actual value to be written.
   * @param {number} values.values.priority - The priority to be used for writing to the property.
   * @param {object=} options
   * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
   * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
   * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
   * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * const values = [
   *   {objectId: {type: 8, instance: 44301}, values: [
   *     {property: {id: 28, index: 12}, value: [{type: bacnet.enum.ApplicationTag.BOOLEAN, value: true}], priority: 8}
   *   ]}
   * ];
   * client.writePropertyMultiple('192.168.1.43', values, (err, value) => {
   *   console.log('value: ', value);
   * });
   */
  writePropertyMultiple(receiver, values, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      //@ts-ignore
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      16 /* WRITE_PROPERTY_MULTIPLE */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId
    );
    write_property_multiple_exports.encodeObject(buffer, values);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      next(err);
    });
  }
  /**
   * The confirmedCOVNotification command is used to push notifications to other
   * systems that have registered with us via a subscribeCOV message.
   * @function bacnet.confirmedCOVNotification
   * @param {string} receiver - IP address of the target device.
   * @param {object} monitoredObject - The object being monitored, from subscribeCOV.
   * @param {number} monitoredObject.type - Object type.
   * @param {number} monitoredObject.instance - Object instance.
   * @param {number} subscribeId - Subscriber ID from subscribeCOV,
   * @param {number} initiatingDeviceId - Our BACnet device ID.
   * @param {number} lifetime - Number of seconds left until the subscription expires.
   * @param {array} values - values for the monitored object.  See example.
   * @param {object=} options
   * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
   * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
   * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
   * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * const settings = {deviceId: 123}; // our BACnet device
   *
   * // Items saved from subscribeCOV message
   * const monitoredObject = {type: 1, instance: 1};
   * const subscriberProcessId = 123;
   *
   * client.confirmedCOVNotification(
   *   '192.168.1.43',
   *   monitoredObject,
   *   subscriberProcessId,
   *   settings.deviceId,
   *   30, // should be lifetime of subscription really
   *   [
   *     {
   *       property: { id: bacnet.enum.PropertyIdentifier.PRESENT_VALUE },
   *       value: [
   *         {value: 123, type: bacnet.enum.ApplicationTag.REAL},
   *       ],
   *     },
   *   ],
   *   (err) => {
   *     console.log('error: ', err);
   *   }
   * );
   */
  confirmedCOVNotification(receiver, monitoredObject, subscribeId, initiatingDeviceId, lifetime, values, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer();
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      1 /* CONFIRMED_COV_NOTIFICATION */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    cov_notify_exports.encode(
      buffer,
      subscribeId,
      initiatingDeviceId,
      monitoredObject,
      lifetime,
      values
    );
    encode32(
      buffer.buffer,
      10 /* ORIGINAL_UNICAST_NPDU */,
      buffer.offset
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   * The deviceCommunicationControl command enables or disables network communication of the target device.
   * @function bacnet.deviceCommunicationControl
   * @param {string} receiver - IP address of the target device.
   * @param {number} timeDuration - The time to hold the network communication state in seconds. 0 for infinite.
   * @param {EnableDisable} enableDisable - The network communication state to set.
   * @param {object=} options
   * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
   * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
   * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
   * @param {string=} options.password - The optional password used to set the network communication state.
   * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.deviceCommunicationControl('192.168.1.43', 0, bacnet.enum.EnableDisable.DISABLE, (err) => {
   *   console.log('error: ', err);
   * });
   */
  deviceCommunicationControl(receiver, timeDuration, enableDisable, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId(),
      password: options.password
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      17 /* DEVICE_COMMUNICATION_CONTROL */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    device_communication_control_exports.encode(
      buffer,
      timeDuration,
      enableDisable,
      settings.password
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      next(err);
    });
  }
  /**
   * The reinitializeDevice command initiates a restart of the target device.
   * @function bacnet.reinitializeDevice
   * @param {string} receiver - IP address of the target device.
   * @param {ReinitializedState} state - The type of restart to be initiated.
   * @param {object=} options
   * @param {MaxSegmentsAccepted=} options.maxSegments - The maximimal allowed number of segments.
   * @param {MaxApduLengthAccepted=} options.maxApdu - The maximal allowed APDU size.
   * @param {number=} options.invokeId - The invoke ID of the confirmed service telegram.
   * @param {string=} options.password - The optional password used to restart the device.
   * @param {function} next - The callback containing an error, in case of a failure and value object in case of success.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.reinitializeDevice('192.168.1.43', bacnet.enum.ReinitializedState.COLDSTART, (err, value) => {
   *   console.log('value: ', value);
   * });
   */
  reinitializeDevice(receiver, state, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId(),
      password: options.password
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      20 /* REINITIALIZE_DEVICE */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    reinitialize_device_exports.encode(buffer, state, settings.password);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      next(err);
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param position
   * @param fileBuffer
   * @param options
   * @param next
   */
  writeFile(receiver, objectId, position, fileBuffer, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      7 /* ATOMIC_WRITE_FILE */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    atomic_write_file_exports.encode(
      buffer,
      false,
      objectId,
      position,
      fileBuffer
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      const result = atomic_write_file_exports.decodeAcknowledge(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return void next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param position
   * @param count
   * @param options
   * @param next
   */
  readFile(receiver, objectId, position, count, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      6 /* ATOMIC_READ_FILE */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    atomic_read_file_exports.encode(buffer, true, objectId, position, count);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      const result = atomic_read_file_exports.decodeAcknowledge(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return void next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param idxBegin
   * @param quantity
   * @param options
   * @param next
   */
  readRange(receiver, objectId, idxBegin, quantity, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      26 /* READ_RANGE */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    read_range_exports.encode(
      buffer,
      objectId,
      131 /* LOG_BUFFER */,
      ASN1_ARRAY_ALL,
      0 /* BY_POSITION */,
      idxBegin,
      /* @__PURE__ */ new Date(),
      quantity
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      const result = read_range_exports.decodeAcknowledge(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return void next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param subscribeId
   * @param cancel
   * @param issueConfirmedNotifications
   * @param lifetime
   * @param options
   * @param next
   */
  subscribeCov(receiver, objectId, subscribeId, cancel, issueConfirmedNotifications, lifetime, options, nextFunc) {
    const next = nextFunc || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      // @ts-ignore TODO types not matching with documentation and code
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      5 /* SUBSCRIBE_COV */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    subscribe_cov_exports.encode(
      buffer,
      subscribeId,
      objectId,
      cancel,
      issueConfirmedNotifications,
      lifetime
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param monitoredProperty
   * @param subscribeId
   * @param cancel
   * @param issueConfirmedNotifications
   * @param options
   * @param next
   */
  subscribeProperty(receiver, objectId, monitoredProperty, subscribeId, cancel, issueConfirmedNotifications, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      28 /* SUBSCRIBE_COV_PROPERTY */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    subscribe_property_exports.encode(
      buffer,
      subscribeId,
      objectId,
      cancel,
      issueConfirmedNotifications,
      0,
      monitoredProperty,
      false,
      15
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   * The unconfirmedCOVNotification command sends an unconfirmed COV notification to a device
   * @function bacnet.unconfirmedCOVNotification
   * @param {string} receiver - IP address of the target device.
   * @param {number} subscriberProcessId - The process id which was used by a target device in the subscription.
   * @param {number} initiatingDeviceId - The id of this device.
   * @param {object} monitoredObjectId - Specifies about which object the notification is.
   * @param {number} monitoredObjectId.type - The BACNET object type of the notification.
   * @param {number} monitoredObjectId.instance - The BACNET object instance of the notification.
   * @param {number} timeRemaining - How long the subscription is still active in seconds.
   * @param {object[]} values - List of properties with updated values.
   * @param {object} values.property - Property specifications.
   * @param {number} values.property.id - The updated BACNET property id.
   * @param {number} values.property.index - The array index of the updated property.
   * @param {object[]} values.value - A list of updated values.
   * @param {ApplicationTag} values.value.type - The data-type of the updated value.
   * @param {object} values.value.value - The actual updated value.
   * @param {number} values.priority - The priority of the updated property.
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.unconfirmedCOVNotification(
   *            '127.0.0.1',
   *            3,
   *            433,
   *            {type: 2, instance: 122},
   *            120,
   *            [
   *              {
   *                property: {id: 85},
   *                value: [{type: baEnum.ApplicationTag.REAL, value: 12.3}]
   *              },
   *              {
   *                property: {id: 111},
   *                value: [{type: baEnum.ApplicationTag.BIT_STRING, value: 0xFFFF}]
   *              }
   *            ]);
   */
  unconfirmedCOVNotification(receiver, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) {
    const buffer = this._getBuffer();
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      2 /* UNCONFIRMED_COV_NOTIFICATION */
    );
    cov_notify_exports.encode(
      buffer,
      subscriberProcessId,
      initiatingDeviceId,
      monitoredObjectId,
      timeRemaining,
      values
    );
    encode32(
      buffer.buffer,
      10 /* ORIGINAL_UNICAST_NPDU */,
      buffer.offset
    );
    this._transport.send(buffer.buffer, buffer.offset, receiver);
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param values
   * @param options
   * @param next
   */
  createObject(receiver, objectId, values, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      10 /* CREATE_OBJECT */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    create_object_exports.encode(buffer, objectId, values);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param options
   * @param next
   */
  deleteObject(receiver, objectId, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      11 /* DELETE_OBJECT */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    delete_object_exports.encode(buffer, objectId);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param reference
   * @param values
   * @param options
   * @param next
   */
  removeListElement(receiver, objectId, reference, values, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      9 /* REMOVE_LIST_ELEMENT */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    add_list_element_exports.encode(
      buffer,
      objectId,
      reference.id,
      reference.index,
      values
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param reference
   * @param values
   * @param options
   * @param next
   */
  addListElement(receiver, objectId, reference, values, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      8 /* ADD_LIST_ELEMENT */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    add_list_element_exports.encode(
      buffer,
      objectId,
      reference.id,
      reference.index,
      values
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   *
   * @param receiver
   * @param options
   * @param next
   */
  getAlarmSummary(receiver, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      3 /* GET_ALARM_SUMMARY */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      const result = alarm_summary_exports.decode(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return void next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param options
   * @param next
   */
  getEventInformation(receiver, objectId, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      29 /* GET_EVENT_INFORMATION */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    encodeContextObjectId(buffer, 0, objectId.type, objectId.instance);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      const result = event_information_exports.decode(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return void next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   *
   * @param receiver
   * @param objectId
   * @param eventState
   * @param ackText
   * @param evTimeStamp
   * @param ackTimeStamp
   * @param options
   * @param next
   */
  acknowledgeAlarm(receiver, objectId, eventState, ackText, evTimeStamp, ackTimeStamp, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      0 /* ACKNOWLEDGE_ALARM */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    alarm_acknowledge_exports.encode(
      buffer,
      57,
      objectId,
      eventState,
      ackText,
      evTimeStamp,
      ackTimeStamp
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   *
   * @param receiver
   * @param vendorId
   * @param serviceNumber
   * @param data
   * @param options
   * @param next
   */
  confirmedPrivateTransfer(receiver, vendorId, serviceNumber, data, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      18 /* CONFIRMED_PRIVATE_TRANSFER */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    private_transfer_exports.encode(buffer, vendorId, serviceNumber, data);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data2) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   *
   * @param receiver
   * @param vendorId
   * @param serviceNumber
   * @param data
   */
  unconfirmedPrivateTransfer(receiver, vendorId, serviceNumber, data) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      4 /* UNCONFIRMED_PRIVATE_TRANSFER */
    );
    private_transfer_exports.encode(buffer, vendorId, serviceNumber, data);
    this.sendBvlc(receiver, buffer);
  }
  /**
   *
   * @param receiver
   * @param acknowledgmentFilter
   * @param options
   * @param next
   */
  getEnrollmentSummary(receiver, acknowledgmentFilter, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      4 /* GET_ENROLLMENT_SUMMARY */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    get_enrollment_summary_exports.encode(
      buffer,
      acknowledgmentFilter,
      options.enrollmentFilter,
      options.eventStateFilter,
      options.eventTypeFilter,
      options.priorityFilter,
      options.notificationClassFilter
    );
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      const result = get_enrollment_summary_exports.decodeAcknowledge(
        data.buffer,
        data.offset,
        data.length
      );
      if (!result) {
        return void next(new Error("INVALID_DECODING"));
      }
      next(null, result);
    });
  }
  /**
   *
   * @param receiver
   * @param eventNotification
   */
  unconfirmedEventNotification(receiver, eventNotification) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      3 /* UNCONFIRMED_EVENT_NOTIFICATION */
    );
    event_notify_data_exports.encode(buffer, eventNotification);
    this.sendBvlc(receiver, buffer);
  }
  /**
   *
   * @param receiver
   * @param eventNotification
   * @param options
   * @param next
   */
  confirmedEventNotification(receiver, eventNotification, options, next) {
    next = next || options;
    const settings = {
      maxSegments: options.maxSegments || 112 /* SEGMENTS_65 */,
      maxApdu: options.maxApdu || 5 /* OCTETS_1476 */,
      invokeId: options.invokeId || this._getInvokeId()
    };
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(
      buffer,
      0 /* NORMAL_MESSAGE */ | 4 /* EXPECTING_REPLY */,
      receiver
    );
    encodeConfirmedServiceRequest(
      buffer,
      0 /* CONFIRMED_REQUEST */,
      2 /* CONFIRMED_EVENT_NOTIFICATION */,
      settings.maxSegments,
      settings.maxApdu,
      settings.invokeId,
      0,
      0
    );
    event_notify_data_exports.encode(buffer, eventNotification);
    this.sendBvlc(receiver, buffer);
    this._addCallback(settings.invokeId, (err, data) => {
      if (err) {
        return void next(err);
      }
      next();
    });
  }
  /**
   * The readPropertyResponse call sends a response with information about one of our properties.
   * @function bacnet.readPropertyResponse
   * @param {string} receiver - IP address of the target device.
   * @param {number} invokeId - ID of the original readProperty request.
   * @param {object} objectId - objectId from the original request,
   * @param {object} property - property being read, taken from the original request.
   * @param {object=} options varying behaviour for special circumstances
   * @param {string=} options.forwardedFrom - If functioning as a BBMD, the IP address this message originally came from.
   */
  readPropertyResponse(receiver, invokeId, objectId, property, value, options = {}) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeComplexAck(
      buffer,
      48 /* COMPLEX_ACK */,
      12 /* READ_PROPERTY */,
      invokeId
    );
    read_property_exports.encodeAcknowledge(
      buffer,
      objectId,
      property.id,
      property.index,
      value
    );
    this.sendBvlc(receiver, buffer);
  }
  readPropertyMultipleResponse(receiver, invokeId, values) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeComplexAck(
      buffer,
      48 /* COMPLEX_ACK */,
      14 /* READ_PROPERTY_MULTIPLE */,
      invokeId
    );
    read_property_multiple_exports.encodeAcknowledge(buffer, values);
    this.sendBvlc(receiver, buffer);
  }
  /**
   * The iAmResponse command is sent as a reply to a whoIs request.
   * @function bacnet.iAmResponse
   * @param {object} receiver - address to send packet to, null for local broadcast.
   * @param {number} deviceId - Our device ID.
   * @param {number} segmentation - an enum.Segmentation value.
   * @param {number} vendorId - The numeric ID assigned to the organisation providing this application.
   */
  iAmResponse(receiver, deviceId, segmentation, vendorId) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      0 /* I_AM */
    );
    i_am_exports.encode(
      buffer,
      deviceId,
      this._transport.getMaxPayload(),
      segmentation,
      vendorId
    );
    this.sendBvlc(receiver, buffer);
  }
  /**
   *
   * @param receiver
   * @param deviceId
   * @param objectId
   * @param objectName
   */
  iHaveResponse(receiver, deviceId, objectId, objectName) {
    const buffer = this._getBuffer(
      !!(typeof receiver !== "string" && receiver.forwardedFrom)
    );
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeUnconfirmedServiceRequest(
      buffer,
      16 /* UNCONFIRMED_REQUEST */,
      1 /* I_HAVE */
    );
    i_have_exports.encode(buffer, deviceId, objectId, objectName);
    this.sendBvlc(receiver, buffer);
  }
  /**
   *
   * @param receiver
   * @param service
   * @param invokeId
   */
  simpleAckResponse(receiver, service, invokeId) {
    if (typeof receiver === "string")
      return;
    const buffer = this._getBuffer(!!receiver.forwardedFrom);
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeSimpleAck(
      buffer,
      32 /* SIMPLE_ACK */,
      service,
      invokeId
    );
    this.sendBvlc(receiver, buffer);
  }
  /**
   *
   * @param receiver
   * @param service
   * @param invokeId
   * @param errorClass
   * @param errorCode
   */
  errorResponse(receiver, service, invokeId, errorClass, errorCode) {
    trace2(
      `error response on ${JSON.stringify(receiver)} service: ${JSON.stringify(
        service
      )} invokeId: ${invokeId} errorClass: ${errorClass} errorCode: ${errorCode}`
    );
    trace2(
      `error message ${error_exports.buildMessage({
        class: errorClass,
        code: errorCode
      })}`
    );
    const hasSource = !!(typeof receiver !== "string" && receiver.forwardedFrom);
    if (typeof receiver === "string")
      throw new Error("receiver must be object");
    const buffer = this._getBuffer(hasSource);
    encode31(buffer, 0 /* NORMAL_MESSAGE */, receiver);
    encodeError(buffer, 80 /* ERROR */, service, invokeId);
    error_exports.encode(buffer, errorClass, errorCode);
    this.sendBvlc(receiver, buffer);
  }
  /**
   *
   * @param receiver
   * @param buffer
   */
  sendBvlc(receiver, buffer) {
    if (typeof receiver === "string") {
      receiver = {
        address: receiver
      };
    }
    if (receiver && receiver.forwardedFrom) {
      encode32(
        buffer.buffer,
        4 /* FORWARDED_NPDU */,
        buffer.offset,
        receiver.forwardedFrom
      );
    } else if (receiver && receiver.address) {
      encode32(
        buffer.buffer,
        10 /* ORIGINAL_UNICAST_NPDU */,
        buffer.offset
      );
    } else {
      encode32(
        buffer.buffer,
        11 /* ORIGINAL_BROADCAST_NPDU */,
        buffer.offset
      );
    }
    this._transport.send(
      buffer.buffer,
      buffer.offset,
      receiver && receiver.address || null
    );
  }
  /**
   * The resultResponse is a BVLC-Result message used to respond to certain events, such as BBMD registration.
   * This message cannot be wrapped for passing through a BBMD, as it is used as a BBMD control message.
   * @function bacnet.resultResponse
   * @param {string} receiver - IP address of the target device.
   * @param {number} resultCode - Single value from BvlcResultFormat enum.
   */
  resultResponse(receiver, resultCode) {
    const buffer = this._getBuffer();
    encodeResult(buffer, resultCode);
    encode32(
      buffer.buffer,
      0 /* BVLC_RESULT */,
      buffer.offset
    );
    this._transport.send(buffer.buffer, buffer.offset, receiver.address);
  }
  /**
   * Unloads the current bacnet instance and closes the underlying UDP socket.
   * @function bacnet.close
   * @example
   * const bacnet = require('node-bacnet');
   * const client = new bacnet();
   *
   * client.close();
   */
  close() {
    this._transport.close();
  }
  /**
   * Helper function to take an array of enums and produce a bitstring suitable
   * for inclusion as a property.
   *
   * @example
   * [bacnet.enum.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED]: [
   *   {value: bacnet.createBitstring([
   *     bacnet.enum.ObjectTypesSupported.ANALOG_INPUT,
   *     bacnet.enum.ObjectTypesSupported.ANALOG_OUTPUT,
   *   ]),
   *   type: bacnet.enum.ApplicationTag.BIT_STRING},
   * ],
   */
  static createBitstring(items) {
    let offset = 0;
    let bytes = [];
    let bitsUsed = 0;
    while (items.length) {
      let value = 0;
      items = items.filter((i) => {
        if (i >= offset + 8) {
          return true;
        }
        value |= 1 << i - offset;
        bitsUsed = Math.max(bitsUsed, i);
        return false;
      });
      bytes.push(value);
      offset += 8;
    }
    bitsUsed++;
    return {
      value: bytes,
      bitsUsed
    };
  }
};

// index.ts
var import_underscore = __toESM(require("underscore"));

// src/read-device.ts
var import_process = __toESM(require("process"));
var import__ = __toESM(require_dist());
var PropertyIdentifierToEnumMap = {};
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.OBJECT_TYPE] = import__.enums.ObjectType;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.SEGMENTATION_SUPPORTED] = import__.enums.Segmentation;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.EVENT_STATE] = import__.enums.EventState;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.UNITS] = import__.enums.EngineeringUnits;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.RELIABILITY] = import__.enums.Reliability;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.NOTIFY_TYPE] = import__.enums.NotifyType;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.POLARITY] = import__.enums.Polarity;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED] = import__.enums.ServicesSupported;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED] = import__.enums.ObjectTypesSupported;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.STATUS_FLAGS] = import__.enums.StatusFlags;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.LIMIT_ENABLE] = import__.enums.LimitEnable;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.EVENT_ENABLE] = import__.enums.EventTransitionBits;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.ACKED_TRANSITIONS] = import__.enums.EventTransitionBits;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.SYSTEM_STATUS] = import__.enums.DeviceStatus;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.SYSTEM_STATUS] = import__.enums.DeviceStatus;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.ACK_REQUIRED] = import__.enums.EventTransitionBits;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.LOGGING_TYPE] = import__.enums.LoggingType;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.FILE_ACCESS_METHOD] = import__.enums.FileAccessMethod;
PropertyIdentifierToEnumMap[import__.enums.PropertyIdentifier.NODE_TYPE] = import__.enums.NodeType;
var ObjectTypeSpecificPropertyIdentifierToEnumMap = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_INPUT] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_INPUT][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_INPUT][import__.enums.PropertyIdentifier.MODE] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.ANALOG_INPUT] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.ANALOG_INPUT][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.ANALOG_OUTPUT] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.ANALOG_OUTPUT][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_OUTPUT] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_OUTPUT][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_OUTPUT][import__.enums.PropertyIdentifier.RELINQUISH_DEFAULT] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_VALUE] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_VALUE][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_VALUE][import__.enums.PropertyIdentifier.RELINQUISH_DEFAULT] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_LIGHTING_OUTPUT] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_LIGHTING_OUTPUT][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.BinaryLightingPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BITSTRING_VALUE] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.BINARY_VALUE][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.BinaryPV;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_POINT] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_POINT][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.LifeSafetyState;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_POINT][import__.enums.PropertyIdentifier.TRACKING_VALUE] = import__.enums.LifeSafetyState;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_POINT][import__.enums.PropertyIdentifier.MODE] = import__.enums.LifeSafetyMode;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_POINT][import__.enums.PropertyIdentifier.ACCEPTED_MODES] = import__.enums.LifeSafetyMode;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_POINT][import__.enums.PropertyIdentifier.SILENCED] = import__.enums.LifeSafetyState;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_POINT][import__.enums.PropertyIdentifier.OPERATION_EXPECTED] = import__.enums.LifeSafetyOperation;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_ZONE] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_ZONE][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.LifeSafetyState;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LIFE_SAFETY_ZONE][import__.enums.PropertyIdentifier.MODE] = import__.enums.LifeSafetyMode;
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LOAD_CONTROL] = {};
ObjectTypeSpecificPropertyIdentifierToEnumMap[import__.enums.ObjectType.LOAD_CONTROL][import__.enums.PropertyIdentifier.PRESENT_VALUE] = import__.enums.ShedState;
var propSubSet = import_process.default.argv.includes("--all") ? Object.values(import__.enums.PropertyIdentifier) : [
  /* normally supported from all devices */
  import__.enums.PropertyIdentifier.OBJECT_IDENTIFIER,
  import__.enums.PropertyIdentifier.OBJECT_NAME,
  import__.enums.PropertyIdentifier.OBJECT_TYPE,
  import__.enums.PropertyIdentifier.PRESENT_VALUE,
  import__.enums.PropertyIdentifier.STATUS_FLAGS,
  import__.enums.PropertyIdentifier.EVENT_STATE,
  import__.enums.PropertyIdentifier.RELIABILITY,
  import__.enums.PropertyIdentifier.OUT_OF_SERVICE,
  import__.enums.PropertyIdentifier.UNITS,
  /* other properties */
  import__.enums.PropertyIdentifier.DESCRIPTION,
  import__.enums.PropertyIdentifier.SYSTEM_STATUS,
  import__.enums.PropertyIdentifier.VENDOR_NAME,
  import__.enums.PropertyIdentifier.VENDOR_IDENTIFIER,
  import__.enums.PropertyIdentifier.MODEL_NAME,
  import__.enums.PropertyIdentifier.FIRMWARE_REVISION,
  import__.enums.PropertyIdentifier.APPLICATION_SOFTWARE_VERSION,
  import__.enums.PropertyIdentifier.LOCATION,
  import__.enums.PropertyIdentifier.LOCAL_DATE,
  import__.enums.PropertyIdentifier.LOCAL_TIME,
  import__.enums.PropertyIdentifier.UTC_OFFSET,
  import__.enums.PropertyIdentifier.DAYLIGHT_SAVINGS_STATUS,
  import__.enums.PropertyIdentifier.PROTOCOL_VERSION,
  import__.enums.PropertyIdentifier.PROTOCOL_REVISION,
  import__.enums.PropertyIdentifier.PROTOCOL_SERVICES_SUPPORTED,
  import__.enums.PropertyIdentifier.PROTOCOL_OBJECT_TYPES_SUPPORTED,
  import__.enums.PropertyIdentifier.OBJECT_LIST,
  import__.enums.PropertyIdentifier.MAX_APDU_LENGTH_ACCEPTED,
  import__.enums.PropertyIdentifier.SEGMENTATION_SUPPORTED,
  import__.enums.PropertyIdentifier.APDU_TIMEOUT,
  import__.enums.PropertyIdentifier.NUMBER_OF_APDU_RETRIES,
  import__.enums.PropertyIdentifier.DEVICE_ADDRESS_BINDING,
  import__.enums.PropertyIdentifier.DATABASE_REVISION,
  import__.enums.PropertyIdentifier.MAX_INFO_FRAMES,
  import__.enums.PropertyIdentifier.MAX_MASTER,
  import__.enums.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS,
  import__.enums.PropertyIdentifier.ACTIVE_COV_MULTIPLE_SUBSCRIPTIONS
];
var debug4 = import_process.default.argv.includes("--debug");
function getAllPropertiesManually(address, objectId, callback, propList, result) {
  if (!propList) {
    propList = propSubSet.map((x) => x);
  }
  if (!result) {
    result = [];
  }
  if (!propList.length) {
    return callback({
      values: [
        {
          objectId,
          values: result
        }
      ]
    });
  }
  const prop = propList.shift();
  bacnetClient.readProperty(address, objectId, prop, {}, (err, value) => {
    if (!err) {
      if (debug4) {
        console.log("Handle value " + prop + ": ", JSON.stringify(value));
      }
      const objRes = value.property;
      objRes.value = value.values;
      result.push(objRes);
    } else {
    }
    getAllPropertiesManually(address, objectId, callback, propList, result);
  });
}
function readBit(buffer, i, bit) {
  return (buffer[i] >> bit) % 2;
}
function handleBitString(buffer, bitsUsed, usedEnum) {
  const res = [];
  for (let i = 0; i < bitsUsed; i++) {
    const bufferIndex = Math.floor(i / 8);
    if (readBit(buffer, bufferIndex, i % 8)) {
      res.push(import__.enums.getEnumName(usedEnum, i));
    }
  }
  return res;
}
function parseValue(address, objId, parentType, value, supportsMultiple, callback) {
  let resValue = null;
  if (value && value.type && value.value !== null && value.value !== void 0) {
    switch (value.type) {
      case import__.enums.ApplicationTag.NULL:
        resValue = null;
        break;
      case import__.enums.ApplicationTag.BOOLEAN:
        resValue = !!value.value;
        break;
      case import__.enums.ApplicationTag.UNSIGNED_INTEGER:
      case import__.enums.ApplicationTag.SIGNED_INTEGER:
      case import__.enums.ApplicationTag.REAL:
      case import__.enums.ApplicationTag.DOUBLE:
      case import__.enums.ApplicationTag.CHARACTER_STRING:
        resValue = value.value;
        break;
      case import__.enums.ApplicationTag.DATE:
      case import__.enums.ApplicationTag.TIME:
      case import__.enums.ApplicationTag.TIMESTAMP:
        resValue = value.value;
        break;
      case import__.enums.ApplicationTag.BIT_STRING:
        if (ObjectTypeSpecificPropertyIdentifierToEnumMap[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap[parentType][objId]) {
          resValue = handleBitString(
            value.value.value,
            value.value.bitsUsed,
            ObjectTypeSpecificPropertyIdentifierToEnumMap[parentType][objId]
          );
        } else if (PropertyIdentifierToEnumMap[objId]) {
          resValue = handleBitString(
            value.value.value,
            value.value.bitsUsed,
            PropertyIdentifierToEnumMap[objId]
          );
        } else {
          if (parentType !== import__.enums.ObjectType.BITSTRING_VALUE) {
            console.log(
              "Unknown value for BIT_STRING type for objId " + import__.enums.getEnumName(import__.enums.PropertyIdentifier, objId) + " and parent type " + import__.enums.getEnumName(import__.enums.ObjectType, parentType)
            );
          }
          resValue = value.value;
        }
        break;
      case import__.enums.ApplicationTag.ENUMERATED:
        if (ObjectTypeSpecificPropertyIdentifierToEnumMap[parentType] && ObjectTypeSpecificPropertyIdentifierToEnumMap[parentType][objId]) {
          resValue = import__.enums.getEnumName(
            ObjectTypeSpecificPropertyIdentifierToEnumMap[parentType][objId],
            value.value
          );
        } else if (PropertyIdentifierToEnumMap[objId]) {
          resValue = import__.enums.getEnumName(
            PropertyIdentifierToEnumMap[objId],
            value.value
          );
        } else {
          console.log(
            "Unknown value for ENUMERATED type for objId " + import__.enums.getEnumName(import__.enums.PropertyIdentifier, objId) + " and parent type " + import__.enums.getEnumName(import__.enums.ObjectType, parentType)
          );
          resValue = value.value;
        }
        break;
      case import__.enums.ApplicationTag.OBJECTIDENTIFIER:
        if (objId === import__.enums.PropertyIdentifier.OBJECT_IDENTIFIER || objId === import__.enums.PropertyIdentifier.STRUCTURED_OBJECT_LIST || objId === import__.enums.PropertyIdentifier.SUBORDINATE_LIST) {
          resValue = value.value;
        } else if (supportsMultiple) {
          const requestArray = [
            {
              objectId: value.value,
              properties: [{ id: 8 }]
            }
          ];
          bacnetClient.readPropertyMultiple(
            address,
            requestArray,
            (err, resValue2) => {
              parseDeviceObject(address, resValue2, value.value, true, callback);
            }
          );
          return;
        } else {
          getAllPropertiesManually(address, value.value, (result) => {
            parseDeviceObject(address, result, value.value, false, callback);
          });
          return;
        }
        break;
      case import__.enums.ApplicationTag.OCTET_STRING:
        resValue = value.value;
        break;
      case import__.enums.ApplicationTag.ERROR:
        resValue = {
          errorClass: import__.enums.getEnumName(
            import__.enums.ErrorClass,
            value.value.errorClass
          ),
          errorCode: import__.enums.getEnumName(import__.enums.ErrorCode, value.value.errorCode)
        };
        break;
      case import__.enums.ApplicationTag.OBJECT_PROPERTY_REFERENCE:
      case import__.enums.ApplicationTag.DEVICE_OBJECT_PROPERTY_REFERENCE:
      case import__.enums.ApplicationTag.DEVICE_OBJECT_REFERENCE:
      case import__.enums.ApplicationTag.READ_ACCESS_SPECIFICATION:
        resValue = value.value;
        break;
      case import__.enums.ApplicationTag.CONTEXT_SPECIFIC_DECODED:
        parseValue(
          address,
          objId,
          parentType,
          value.value,
          supportsMultiple,
          callback
        );
        return;
      case import__.enums.ApplicationTag.READ_ACCESS_RESULT:
        resValue = value.value;
        break;
      default:
        console.log(
          "unknown type " + value.type + ": " + JSON.stringify(value)
        );
        resValue = value;
    }
  }
  setImmediate(() => callback(resValue));
}
function parseDeviceObject(address, obj, parent, supportsMultiple, callback) {
  if (debug4) {
    console.log(
      "START parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(obj)
    );
  }
  if (!obj) {
    console.log("object not valid on parse device object");
    return;
  }
  if (!obj.values || !Array.isArray(obj.values)) {
    console.log("No device or invalid response");
    callback({ ERROR: "No device or invalid response" });
    return;
  }
  let cbCount = 0;
  let objDef = {};
  const finalize = () => {
    Object.keys(objDef).forEach((devId) => {
      Object.keys(objDef[devId]).forEach((objId) => {
        if (objDef[devId][objId].length === 1) {
          objDef[devId][objId] = objDef[devId][objId][0];
        }
      });
    });
    if (obj.values.length === 1) {
      objDef = objDef[obj.values[0].objectId.instance];
    }
    if (debug4) {
      console.log(
        "END parseDeviceObject: " + JSON.stringify(parent) + " : " + JSON.stringify(objDef)
      );
    }
    callback(objDef);
  };
  obj.values.forEach((devBaseObj) => {
    if (!devBaseObj.objectId) {
      console.log("No device Id found in object data");
      return;
    }
    if (devBaseObj.objectId.type === void 0 || devBaseObj.objectId.instance === void 0) {
      console.log("No device type or instance found in object data");
      return;
    }
    if (!devBaseObj.values || !Array.isArray(devBaseObj.values)) {
      console.log("No device values response");
      return;
    }
    const deviceId = devBaseObj.objectId.instance;
    objDef[deviceId] = {};
    devBaseObj.values.forEach((devObj) => {
      let objId = import__.enums.getEnumName(import__.enums.PropertyIdentifier, devObj.id);
      if (devObj.index !== 4294967295) {
        objId += "-" + devObj.index;
      }
      if (debug4) {
        console.log("Handle Object property:", deviceId, objId, devObj.value);
      }
      devObj.value.forEach((val) => {
        if (JSON.stringify(val.value) === JSON.stringify(parent)) {
          objDef[deviceId][objId] = objDef[deviceId][objId] || [];
          objDef[deviceId][objId].push(val.value);
          return;
        }
        cbCount++;
        parseValue(
          address,
          devObj.id,
          parent.type,
          val,
          supportsMultiple,
          (parsedValue) => {
            if (debug4) {
              console.log(
                "RETURN parsedValue",
                deviceId,
                objId,
                devObj.value,
                parsedValue
              );
            }
            objDef[deviceId][objId] = objDef[deviceId][objId] || [];
            objDef[deviceId][objId].push(parsedValue);
            if (!--cbCount) {
              finalize();
            }
          }
        );
      });
    });
  });
  if (cbCount === 0) {
    finalize();
  }
}
var limitToDevice = null;
if (import_process.default.argv.length === 3) {
  limitToDevice = parseInt(import_process.default.argv[2]);
  if (isNaN(limitToDevice)) {
    limitToDevice = null;
  }
}

// index.ts
var node_bacnet_default = Client;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  _,
  bacnetErrorToString,
  enums,
  parseValue
});