Merge changes I685fb4e6,I4f73e6b9,I7525de16,Ifc9cdf3a

* changes:
  Refactor TimestampProblem into a solver and a problem statement
  Only solve with the constraints which are relevant
  Fix constrained simultaneous solver
  Use a Primal-Dual Interior-Point method solver
diff --git a/aos/config.bzl b/aos/config.bzl
index 57d6af3..4aa6b4a 100644
--- a/aos/config.bzl
+++ b/aos/config.bzl
@@ -9,6 +9,9 @@
     _aos_config(
         name = name,
         src = src,
+        config_json = name + ".json",
+        config_stripped = name + ".stripped.json",
+        config_binary = name + ".bfbs",
         deps = deps,
         flatbuffers = [expand_label(flatbuffer) + "_reflection_out" for flatbuffer in flatbuffers],
         visibility = visibility,
@@ -17,9 +20,9 @@
     )
 
 def _aos_config_impl(ctx):
-    config = ctx.actions.declare_file(ctx.label.name + ".json")
-    stripped_config = ctx.actions.declare_file(ctx.label.name + ".stripped.json")
-    binary_config = ctx.actions.declare_file(ctx.label.name + ".bfbs")
+    config = ctx.outputs.config_json
+    stripped_config = ctx.outputs.config_stripped
+    binary_config = ctx.outputs.config_binary
 
     flatbuffers_depset = depset(
         ctx.files.flatbuffers,
@@ -59,6 +62,9 @@
 
 _aos_config = rule(
     attrs = {
+        "config_json": attr.output(mandatory = True),
+        "config_stripped": attr.output(mandatory = True),
+        "config_binary": attr.output(mandatory = True),
         "_config_flattener": attr.label(
             executable = True,
             cfg = "host",
diff --git a/aos/events/BUILD b/aos/events/BUILD
index b339b67..190d30a 100644
--- a/aos/events/BUILD
+++ b/aos/events/BUILD
@@ -382,7 +382,7 @@
 cc_test(
     name = "shm_event_loop_test",
     srcs = ["shm_event_loop_test.cc"],
-    shard_count = 16,
+    shard_count = 24,
     target_compatible_with = ["@platforms//os:linux"],
     deps = [
         ":event_loop_param_test",
diff --git a/aos/events/aos_timing_report_streamer.cc b/aos/events/aos_timing_report_streamer.cc
index ee5efde..35a78b9 100644
--- a/aos/events/aos_timing_report_streamer.cc
+++ b/aos/events/aos_timing_report_streamer.cc
@@ -5,7 +5,7 @@
 #include "aos/json_to_flatbuffer.h"
 #include "gflags/gflags.h"
 
-DEFINE_string(config, "/app/aos_config.json", "The path to the config to use.");
+DEFINE_string(config, "aos_config.json", "The path to the config to use.");
 DEFINE_string(application, "",
               "Application filter to use. Empty for no filter.");
 DEFINE_bool(stream, true, "Stream out all the timing reports that we receive.");
diff --git a/aos/network/rawrtc.cc b/aos/network/rawrtc.cc
index c195a4b..db4de07 100644
--- a/aos/network/rawrtc.cc
+++ b/aos/network/rawrtc.cc
@@ -3,7 +3,7 @@
 extern "C" {
 #include <rawrtc.h>
 
-#include "external/com_github_rawrtc_rawrtc_common/include/rawrtcc/utils.h"
+#include "rawrtcc/utils.h"
 }
 
 #include <functional>
diff --git a/aos/network/rawrtc.h b/aos/network/rawrtc.h
index f9de8b0..f43cc5e 100644
--- a/aos/network/rawrtc.h
+++ b/aos/network/rawrtc.h
@@ -7,7 +7,7 @@
 extern "C" {
 #include <rawrtc.h>
 
-#include "external/com_github_rawrtc_rawrtc_common/include/rawrtcc/utils.h"
+#include "rawrtcc/utils.h"
 }
 
 #include "flatbuffers/flatbuffers.h"
diff --git a/frc971/constants/testdata/BUILD b/frc971/constants/testdata/BUILD
index cdfb0c9..04cf8d3 100644
--- a/frc971/constants/testdata/BUILD
+++ b/frc971/constants/testdata/BUILD
@@ -24,7 +24,7 @@
 
 aos_config(
     name = "aos_config",
-    src = "aos_config.json",
+    src = "test_config.json",
     flatbuffers = [
         "//frc971/constants/testdata:constants_data_fbs",
         "//frc971/constants/testdata:constants_list_fbs",
diff --git a/frc971/constants/testdata/aos_config.json b/frc971/constants/testdata/test_config.json
similarity index 100%
rename from frc971/constants/testdata/aos_config.json
rename to frc971/constants/testdata/test_config.json