      LOGD("Checksum a mismtach: %02X, %02X", ck_a, msg_parse_buf[6]);
      return false;
    }
    if(ck_b != msg_parse_buf[bytes_in_parse_buf - 1]) {
      LOGD("Checksum b mismtach: %02X, %02X", ck_b, msg_parse_buf[7]);
      return false;
    }
    return true;
  }
  
 
</s> remove     LOGD("Checksum a mismtach: %02X, %02X", ck_a, msg_parse_buf[6]);
 </s> add     LOGD("Checksum a mismatch: %02X, %02X", ck_a, msg_parse_buf[6]); </s> remove const std::string sos_ack = "\xb5\x62\x09\x14\x08\x00\x02\x00\x00\x00\x01\x00\x00\x00";
const std::string sos_nack = "\xb5\x62\x09\x14\x08\x00\x02\x00\x00\x00\x00\x00\x00\x00";
 </s> add const std::string sos_save_ack = "\xb5\x62\x09\x14\x08\x00\x02\x00\x00\x00\x01\x00\x00\x00";
const std::string sos_save_nack = "\xb5\x62\x09\x14\x08\x00\x02\x00\x00\x00\x00\x00\x00\x00";
    LOGD("Checksum b mismatch: %02X, %02X", ck_b, msg_parse_buf[7]);
      LOGD("Checksum a mismtach: %02X, %02X", ck_a, msg_parse_buf[6]);
      return false;
    }
    if(ck_b != msg_parse_buf[bytes_in_parse_buf - 1]) {
    LOGD("Checksum b mismatch: %02X, %02X", ck_b, msg_parse_buf[7]);
      return false;
    }
    return true;
  }
  
keep keep keep keep replace keep keep keep keep keep
 add check for restoring almanac, and clear like suggested in the datasheet (#23153)

Co-authored-by: Comma Device <device@comma.ai> 
selfdrive/locationd/ublox_msg.cc