code: def get_cds_time(days, msecs):
      """Compute timestamp given the days since epoch and milliseconds of the day.
  
      1958-01-01 00:00 is interpreted as fill value and will be replaced by NaT (Not a Time).
  
      Args:
          days (int, either scalar or numpy.ndarray):
              Days since 1958-01-01
          msecs (int, either scalar or numpy.ndarray):
              Milliseconds of the day
  
      Returns:
          numpy.datetime64: Timestamp(s)
  
      """
      if np.isscalar(days):
          days = np.array([days], dtype="int64")
          msecs = np.array([msecs], dtype="int64")
  
      # use nanosecond precision to silence warning from XArray
      nsecs = 1000000 * msecs.astype("timedelta64[ns]")
      time = (
          np.datetime64("1958-01-01").astype("datetime64[ms]")
          + days.astype("timedelta64[D]")
          + nsecs
      )
      time[time == np.datetime64("1958-01-01 00:00")] = np.datetime64(
          "NaT"
      )
  
      if len(time) == 1:
          return time[0]
      return time
  
imports: from __future__ import annotations
  import warnings
  from datetime import datetime, timedelta
  import dask.array
  import numpy
  import pyproj
  from numpy.polynomial.chebyshev import Chebyshev
  from satpy.readers.eum_base import issue_revision, time_cds_short
  from satpy.readers.utils import apply_earthsun_distance_correction
  from satpy.utils import get_legacy_chunk_size
label_desc: Use image node_id 3 for calling a global function with example usage: get_cds_time(days, msecs) and returns: time, time