    return msgs;
  }
  
  std::deque<HistoryLogModel::Message> HistoryLogModel::fetchData(uint64_t from_time, uint64_t min_time) {
    const QList<uint8_t> mask;
    const auto &events = can->events(msg_id);
    const auto freq = can->lastMessage(msg_id).freq;
    const bool update_colors = !display_signals_mode || sigs.empty();
  
    const auto speed = can->getSpeed();
 
</s> remove   const QList<uint8_t>& mask(const MessageId &id);
 </s> add   const std::vector<uint8_t>& mask(const MessageId &id);
    return msgs;
  }
  
  std::deque<HistoryLogModel::Message> HistoryLogModel::fetchData(uint64_t from_time, uint64_t min_time) {

    const auto &events = can->events(msg_id);
    const auto freq = can->lastMessage(msg_id).freq;
    const bool update_colors = !display_signals_mode || sigs.empty();
  
    const auto speed = can->getSpeed();
keep keep keep keep replace keep keep keep keep keep
 cabana: fixed the multi-threading issues of AbstractStream (#28590)

* fix multi-threading issues

* protect masks with mutex 
tools/cabana/historylog.cc