docs: def inverable_group_multi_list(item_lists):
      """
      aid_list1 = np.array([1, 1, 2, 2, 3, 3])
      aid2_list = np.array([4, 2, 1, 9, 8, 7])
      item_lists = (np.array(aid1_list), np.array(aid2_list))
      """
      #unique_list1, inverse1 = np.unique(item1_list, return_index=True, return_inverse=True)
      import vtool as vt
      import utool as ut
      # Find uniques and groups in each individual list
      unique_lists = []
      groupx_lists = []
      for item_list in item_lists:
          unique_items, groupxs = vt.group_indices(item_list)
          unique_lists.append(unique_items)
          groupx_lists.append(groupxs)
      # Merge all indexes into a signle long list
      groups_stacked = ut.flatten(groupx_lists)
      flat_stacked, cumsum = ut.invertible_flatten2(unique_lists)
      # Find uniques in those lists
      flat_unique, stack_groups = vt.group_indices(np.array(flat_stacked))
      # Get a list of corresonding group indicies from each input list
      flat_groupx_multilist = [ut.take(groups_stacked, groupx) for groupx in stack_groups]
      # flat_unique corresponds with the aids (hence chips) the flag_groupxs
      # multilist is a list where each item is a tuple who's nth item indexes
      # into the nth input list. Ie (1, 0) is a list of indexes into the 1st chip
      # the 0th keypoint list
      return flat_unique, flat_groupx_multilist