code: def should_record_thread(self, participants):
          
          if not self.thread_filter:
              return True
          if len(participants) != len(self.thread_filter):
              return False
          participants = [[p.lower()] + p.lower().split(" ")
                          for p in participants]
          matches = defaultdict(set)
          for e, p in enumerate(participants):
              for f in self.thread_filter:
                  if f in p:
                      matches[f].add(e)
          matched = set()
          for f in matches:
              if len(matches[f]) == 0:
                  return False
              matched |= matches[f]
          return len(matched) == len(participants)
docs: Determines if the thread should be parsed based on the
          participants and the filter given.
  
          For example, if the filter states ['jack', 'billy joe'],
          then only threads with exactly two participants
          (excluding the owner of the chat history) containing
          someone with the first or last name 'Jack' and someone
          named 'Billy Joel' will be included.
  
          Any of the following would match that criteria:
  
              - Jack Stevenson, Billy Joel
              - Billy Joel, Jack Stevens
              - Jack Jenson, Billy Joel
              - Jack Jack, Billy Joel
  
          participants -- the participants of the thread
                          (excluding the history owner)