code: def parse_ctype(ctype):
      
  
      result_ctype = None
      result = {}
      for part in quoted_split(ctype, ';'):
          # Extract the content type first
          if result_ctype is None:
              result_ctype = part
              result['_'] = part
              continue
  
          # OK, we have a 'key' or 'key=value' to handle; figure it
          # out...
          equal = part.find('=')
          if equal > 0 and part.find('"', 0, equal) < 0:
              result[part[:equal]] = unquote(part[equal + 1:])
          else:
              # If equal > 0 but it's preceded by a ", it's seriously
              # messed up, but go ahead and be liberal...
              result[part] = True
  
      # If we failed to parse a content type out, return an empty
      # content type
      if result_ctype is None:
          result_ctype = ''
  
      return result_ctype, result
docs: Parse a content type.
  
      :param ctype: The content type, with corresponding parameters.
  
      :returns: A tuple of the content type and a dictionary containing
                the content type parameters.  The content type will
                additionally be available in the dictionary as the '_'
                key.