          logger.debug("Initialized: %s (side: %s, min_nodes: %s, max_nodes: %s)",
                       self.__class__.__name__, self._side, self._min_nodes, self._max_nodes)
  
      @property
      def _min_nodes(self):
          """ int: The number of nodes for the first Dense. For non g-block layers this will be the
          given minimum filters multiplied by the dimensions squared. For g-block layers, this is the
          given value """
          if self._side == "gblock":
              return self._config["fc_gblock_min_nodes"]
 
</s> remove     def _max_nodes(self):
 </s> add     def _max_nodes(self) -> int: </s> remove     def __init__(self, side, input_shape, config):
 </s> add     def __init__(self,
                 side: Literal["a", "b", "both", "gblock", "shared"],
                 input_shape: tuple,
                 config: dict) -> None: </s> remove     def __init__(self, side, input_shape, config):
 </s> add     def __init__(self,
                 side: Literal["a", "b", "both"],
                 input_shape: Tuple[int, int, int],
                 config: dict) -> None: </s> remove     def _build_g_blocks(self, inputs):
 </s> add     def _build_g_blocks(
                self,
                inputs: Dict[str, List[keras.models.Model]]
            ) -> Dict[str, Union[List[keras.models.Model], keras.models.Model]]: </s> remove         info="The rate that the filters reduce at each upscale layer. EG:\n"
             "Negative numbers will drop the number of filters quicker at first and slow down "
             "each upscale.\n"
             "Positive numbers will drop the number of filters slower at first but then speed "
             "up each upscale.\n"
             "0.0 - This will reduce at a linear rate (i.e. the same number of filters will be "
             "reduced at each upscale).",
 </s> add         info="The rate that the filters reduce at each upscale layer.\n"
             "\n\tFull Slope Mode: Negative numbers will drop the number of filters quicker at "
             "first and slow down each upscale. Positive numbers will drop the number of filters "
             "slower at first but then speed up each upscale. A value of 0.0 will reduce at a "
             "linear rate (i.e. the same number of filters will be reduced at each upscale).\n"
             "\n\tCap Min/Max Slope Mode: Only positive values will work here. Negative values "
             "will automatically be converted to their positive counterpart. A value of 0.5 will "
             "halve the number of filters at each upscale until the minimum value is reached. A "
             "value of 0.33 will be reduce the number of filters by a third until the minimum "
             "value is reached etc.",
    def _min_nodes(self) -> int:
          logger.debug("Initialized: %s (side: %s, min_nodes: %s, max_nodes: %s)",
                       self.__class__.__name__, self._side, self._min_nodes, self._max_nodes)
  
      @property
    def _min_nodes(self) -> int:
          """ int: The number of nodes for the first Dense. For non g-block layers this will be the
          given minimum filters multiplied by the dimensions squared. For g-block layers, this is the
          given value """
          if self._side == "gblock":
              return self._config["fc_gblock_min_nodes"]
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