code: def engle_granger_cv(trend: str, num_x: int, nobs: int) -> pd.Series:
      """
      Critical Values for Engle-Granger t-tests
  
      Parameters
      ----------
      trend : {"n", "c", "ct", "ctt"}
          The trend included in the model
      num_x : The number of cross-sectional regressors in the model.
          Must be between 1 and 12.
      nobs : int
          The number of observations in the time series.
  
      Returns
      -------
      Series
          The critical values for 1, 5 and 10%
      """
      trends = ("n", "c", "ct", "ctt")
      if trend not in trends:
          valid = ",".join(trends)
          raise ValueError(f"Trend must by one of: {valid}")
      if not 1 <= num_x <= 12:
          raise ValueError(
              "The number of cross-sectional variables must be between 1 and "
              "12 (inclusive)"
          )
      tbl = CV_PARAMETERS[trend]
  
      crit_vals = {}
      for size in (10, 5, 1):
          params = tbl[size][num_x]
          x = 1.0 / (nobs ** np.arange(4.0))
          crit_vals[size] = x @ params
      return pd.Series(crit_vals)
  
imports: from __future__ import annotations
  import numpy
  import pandas
  from scipy import stats
  from statsmodels.iolib.summary import Summary
  from statsmodels.iolib.table import SimpleTable
  from statsmodels.regression.linear_model import RegressionResults
  from arch.typing import ArrayLike1D, ArrayLike2D, Literal, UnitRootTrend
  from arch.unitroot._shared import ResidualCointegrationTestResult, _check_cointegrating_regression, _cross_section
  from arch.unitroot.critical_values.engle_granger import CV_PARAMETERS, LARGE_PARAMETERS, SMALL_PARAMETERS, TAU_MAX, TAU_MIN, TAU_STAR
  from arch.unitroot.unitroot import ADF, TREND_DESCRIPTION
label_desc: Use image node_id 2 for calling a global function with example usage: engle_granger_cv(trend, num_x, nobs) and returns: pd