code: def forward(
      self,
      x,
      c,
      blocks,
      deform_inputs1,
      deform_inputs2,
      H_c,
      W_c,
      H_toks,
      W_toks,
  ):
      x = self.injector(
          query=x,
          reference_points=deform_inputs1[0],
          feat=c,
          spatial_shapes=deform_inputs1[1],
          level_start_index=deform_inputs1[2],
      )
      for idx, blk in enumerate(blocks):
          x = blk(x, H_toks, W_toks)
      c = self.extractor(
          query=c,
          reference_points=deform_inputs2[0],
          feat=x,
          spatial_shapes=deform_inputs2[1],
          level_start_index=deform_inputs2[2],
          H=H_c,
          W=W_c,
      )
      if self.extra_extractors is not None:
          for extractor in self.extra_extractors:
              c = extractor(
                  query=c,
                  reference_points=deform_inputs2[0],
                  feat=x,
                  spatial_shapes=deform_inputs2[1],
                  level_start_index=deform_inputs2[2],
                  H=H_c,
                  W=W_c,
              )
      return x, c
  
imports: from functools import partial
  import torch
  import torch.nn
  import torch.utils.checkpoint
  from ...ops.modules import MSDeformAttn
  from .drop_path import DropPath
label_desc: Use image node_id 2 for calling the InteractionBlock obj's underlying member method code with example usage: obj.forward(x, c, blocks, deform_inputs1, deform_inputs2, H_c, W_c, H_toks, W_toks) and returns: x,  c