          return Upscale2xBlock(filters, activation=activation, fast=False)
      return UpscaleResizeImagesBlock(filters, activation=activation)
  
  
  def _get_curve(start_y, end_y, num_points, scale):
      """ Obtain a curve.
  
      For the given start and end y values, return the y co-ordinates of a curve for the given
      number of points. The points are rounded down to the nearest 8.
  
 
</s> remove     def _max_nodes(self):
 </s> add     def _max_nodes(self) -> int: </s> remove     def _min_nodes(self):
 </s> add     def _min_nodes(self) -> int: </s> remove def _scale_dim(target_resolution, original_dim):
 </s> add def _scale_dim(target_resolution: int, original_dim: int) -> int: </s> remove     logger.debug("Obtaining curve: (start_y: %s, end_y: %s, num_points: %s, scale: %s)",
                 start_y, end_y, num_points, scale)
    x_axis = np.linspace(0., 1., num=num_points)
    y_axis = (x_axis - x_axis * scale) / (scale - abs(x_axis) * 2 * scale + 1)
    y_axis = y_axis * (end_y - start_y) + start_y
    retval = [int((y // 8) * 8) for y in y_axis]
 </s> add     logger.debug("Obtaining curve: (start_y: %s, end_y: %s, num_points: %s, scale: %s, mode: %s)",
                 start_y, end_y, num_points, scale, mode)
    if mode == "full":
        x_axis = np.linspace(0., 1., num=num_points)
        y_axis = (x_axis - x_axis * scale) / (scale - abs(x_axis) * 2 * scale + 1)
        y_axis = y_axis * (end_y - start_y) + start_y
        retval = [int((y // 8) * 8) for y in y_axis]
    else:
        y_axis = [start_y]
        scale = 1. - abs(scale)
        for _ in range(num_points):
            current_value = max(end_y, int(((y_axis[-1] * scale) // 8) * 8))
            y_axis.append(current_value)
            if current_value == end_y:
                break
        pad = [start_y if mode == "cap_max" else end_y for _ in range(num_points - len(y_axis))]
        retval = pad + y_axis if mode == "cap_max" else y_axis + pad
def _get_curve(start_y: int,
               end_y: int,
               num_points: int,
               scale: float,
               mode: Literal["full", "cap_max", "cap_min"] = "full") -> List[int]:
          return Upscale2xBlock(filters, activation=activation, fast=False)
      return UpscaleResizeImagesBlock(filters, activation=activation)
  
  
def _get_curve(start_y: int,
               end_y: int,
               num_points: int,
               scale: float,
               mode: Literal["full", "cap_max", "cap_min"] = "full") -> List[int]:
      """ Obtain a curve.
  
      For the given start and end y values, return the y co-ordinates of a curve for the given
      number of points. The points are rounded down to the nearest 8.
  
keep keep keep keep replace keep keep keep keep keep
 Model updates
- Increase model summary width
- Phaze A updates
  - Update some min/max values
  - Add Decoder Filter Slope Mode
  - Add additional arguments for Upsampling2D
  - Adjust upsampling method for multiple upsamples in FC layers
  - Typing 
plugins/train/model/phaze_a.py