code: def _parse_vendor_features(read_buffer, mask_length):
      
      # The mask length tells us the format string to use when unpacking
      # from the buffer read from file.
      mask_format = {1: 'B', 2: 'H', 4: 'I'}[mask_length]
  
      num_vendor_features, = struct.unpack_from('>H', read_buffer)
  
      # Each vendor feature consists of a 16-byte UUID plus a mask whose
      # length is specified by, you guessed it, "mask_length".
      entry_length = 16 + mask_length
      vendor_feature = []
      vendor_mask = []
      for j in range(num_vendor_features):
          uslice = slice(2 + j * entry_length, 2 + (j + 1) * entry_length)
          ubuffer = read_buffer[uslice]
          vendor_feature.append(UUID(bytes=ubuffer[0:16]))
  
          vmask = struct.unpack('>' + mask_format, ubuffer[16:])
          vendor_mask.append(vmask)
  
      return vendor_feature, vendor_mask
docs: Construct vendor features, vendor mask data from the file.
  
      Specifically working on Reader Requirements box.
  
      Parameters
      ----------
      fptr : file object
          File object for JP2K file.
      mask_length : int
          Length of vendor mask flag