code: def _decode_ew_run(value):
      
      res = []
      defects = []
      last_ws = ''
      while value:
          try:
              tok, ws, value = _wsp_splitter(value, 1)
          except ValueError:
              tok, ws, value = value, '', ''
          if not (tok.startswith('=?') and tok.endswith('?=')):
              return ''.join(res), last_ws + tok + ws + value, defects
          text, charset, lang, new_defects = _ew.decode(tok)
          res.append(text)
          defects.extend(new_defects)
          last_ws = ws
      return ''.join(res), last_ws, defects
docs: Decode a run of RFC2047 encoded words.
  
          _decode_ew_run(value) -> (text, value, defects)
  
      Scans the supplied value for a run of tokens that look like they are RFC
      2047 encoded words, decodes those words into text according to RFC 2047
      rules (whitespace between encoded words is discarded), and returns the text
      and the remaining value (including any leading whitespace on the remaining
      value), as well as a list of any defects encountered while decoding.  The
      input value may not have any leading whitespace.