Upgrade to bazel 7.1.1

Change-Id: I7207da90df84e4634cdb3661a27f5e380fe9ca5c
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/.bazelrc b/.bazelrc
index 3a3c729..6642c31 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -100,6 +100,7 @@
 build --strategy=TsProject=sandboxed
 build --strategy=CopyFile=standalone
 build --strategy=CopyDirectory=standalone
+build --strategy=CopyToDirectory=standalone
 
 # Honor the setting of `skipLibCheck` in the tsconfig.json file.
 # https://www.typescriptlang.org/tsconfig#skipLibCheck
@@ -136,8 +137,13 @@
 # NOTE: Explicitly disable -Werror because the `-external/.*` filter does not work
 build --per_file_copt=third_party/.*,external/.*@-Wno-sign-compare,-Wno-cast-align,-Wno-error,-Wno-unused-parameter,-Wno-cast-qual,-Wno-format-nonliteral,-Wno-tautological-type-limit-compare,-Wno-missing-field-initializers,-Wno-unused-function,-Wno-cast-function-type,-Wno-comment,-Wno-typedef-redefinition,-Wno-tautological-unsigned-enum-zero-compare,-Wno-extra,-Wno-type-limits,-Wno-attributes,-Wno-deprecated
 
+# bzlmod breaks our code base right now, deal with this later.
+common --enable_bzlmod=false
+
+# Disable warnings about using directories in Bazel.
+startup --host_jvm_args=-DBAZEL_TRACK_SOURCE_DIRECTORIES=1
+
 # Load a local file that users can use to customize bazel invocations.  This
 # should stay the last line in this file so users can override things when they
 # want.
 try-import %workspace%/.bazelrc.user
-
diff --git a/BUILD b/BUILD
index 219495d..87de71b 100644
--- a/BUILD
+++ b/BUILD
@@ -1,8 +1,8 @@
-load("@bazel_gazelle//:def.bzl", "gazelle")
-load("@aspect_rules_ts//ts:defs.bzl", "ts_config")
-load("@npm//:defs.bzl", "npm_link_all_packages")
 load("@aspect_rules_js//npm:defs.bzl", "npm_link_package")
+load("@aspect_rules_ts//ts:defs.bzl", "ts_config")
+load("@bazel_gazelle//:def.bzl", "gazelle")
 load("@hedron_compile_commands//:refresh_compile_commands.bzl", "refresh_compile_commands")
+load("@npm//:defs.bzl", "npm_link_all_packages")
 
 # Link npm packages
 npm_link_all_packages(name = "node_modules")
diff --git a/WORKSPACE b/WORKSPACE
index 42756e2..371829f 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -11,9 +11,11 @@
 
 http_archive(
     name = "platforms",
-    sha256 = "2c8d8347427e6bb0ba7cf9f933c08fe2be2b62ff2454546ad852f7bf267aad87",
-    strip_prefix = "platforms-e658a6af526089406d0057160542597501ba65d7",
-    url = "https://github.com/bazelbuild/platforms/archive/e658a6af526089406d0057160542597501ba65d7.zip",
+    sha256 = "218efe8ee736d26a3572663b374a253c012b716d8af0c07e842e82f238a0a7ee",
+    urls = [
+        "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.10/platforms-0.0.10.tar.gz",
+        "https://github.com/bazelbuild/platforms/releases/download/0.0.10/platforms-0.0.10.tar.gz",
+    ],
 )
 
 http_archive(
@@ -31,9 +33,9 @@
 
 http_archive(
     name = "aspect_bazel_lib",
-    sha256 = "979667bb7276ee8fcf2c114c9be9932b9a3052a64a647e0dcaacfb9c0016f0a3",
-    strip_prefix = "bazel-lib-2.4.1",
-    url = "https://github.com/aspect-build/bazel-lib/releases/download/v2.4.1/bazel-lib-v2.4.1.tar.gz",
+    sha256 = "a8a92645e7298bbf538aa880131c6adb4cf6239bbd27230f077a00414d58e4ce",
+    strip_prefix = "bazel-lib-2.7.2",
+    url = "https://github.com/aspect-build/bazel-lib/releases/download/v2.7.2/bazel-lib-v2.7.2.tar.gz",
 )
 
 load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies", "aspect_bazel_lib_register_toolchains", "register_jq_toolchains")
@@ -117,64 +119,20 @@
     apache2_debs = "files",
 )
 load(
-    "//debian:postgresql_amd64.bzl",
-    postgresql_amd64_debs = "files",
-)
-load(
-    "//debian:patch.bzl",
-    patch_debs = "files",
-)
-load(
-    "//debian:rsync.bzl",
-    rsync_debs = "files",
-)
-load(
-    "//debian:ssh.bzl",
-    ssh_debs = "files",
-)
-load(
-    "//debian:pandoc.bzl",
-    pandoc_debs = "files",
-)
-load(
-    "//debian:libusb.bzl",
-    libusb_debs = "files",
-)
-load(
-    "//debian:mingw_compiler.bzl",
-    mingw_compiler_debs = "files",
-)
-load(
-    "//debian:patchelf.bzl",
-    patchelf_debs = "files",
-)
-load(
     "//debian:arm_frc_gnueabi_deps.bzl",
     arm_frc_gnueabi_deps_debs = "files",
 )
 load(
-    "//debian:gtk_runtime.bzl",
-    gtk_runtime_debs = "files",
-)
-load(
-    "//debian:opencv_amd64.bzl",
-    opencv_amd64_debs = "files",
+    "//debian:clang_amd64.bzl",
+    clang_amd64_debs = "files",
 )
 load(
     "//debian:gstreamer_amd64.bzl",
     gstreamer_amd64_debs = "files",
 )
 load(
-    "//debian:m4.bzl",
-    m4_debs = "files",
-)
-load(
-    "//debian:lzma_amd64.bzl",
-    lzma_amd64_debs = "files",
-)
-load(
-    "//debian:lzma_arm64.bzl",
-    lzma_arm64_debs = "files",
+    "//debian:gtk_runtime.bzl",
+    gtk_runtime_debs = "files",
 )
 load(
     "//debian:libtinfo5_amd64.bzl",
@@ -185,14 +143,58 @@
     libtinfo5_arm64_debs = "files",
 )
 load(
+    "//debian:libusb.bzl",
+    libusb_debs = "files",
+)
+load(
+    "//debian:lzma_amd64.bzl",
+    lzma_amd64_debs = "files",
+)
+load(
+    "//debian:lzma_arm64.bzl",
+    lzma_arm64_debs = "files",
+)
+load(
+    "//debian:m4.bzl",
+    m4_debs = "files",
+)
+load(
+    "//debian:mingw_compiler.bzl",
+    mingw_compiler_debs = "files",
+)
+load(
+    "//debian:opencv_amd64.bzl",
+    opencv_amd64_debs = "files",
+)
+load("//debian:packages.bzl", "generate_repositories_for_debs")
+load(
+    "//debian:pandoc.bzl",
+    pandoc_debs = "files",
+)
+load(
+    "//debian:patch.bzl",
+    patch_debs = "files",
+)
+load(
+    "//debian:patchelf.bzl",
+    patchelf_debs = "files",
+)
+load(
+    "//debian:postgresql_amd64.bzl",
+    postgresql_amd64_debs = "files",
+)
+load(
+    "//debian:rsync.bzl",
+    rsync_debs = "files",
+)
+load(
+    "//debian:ssh.bzl",
+    ssh_debs = "files",
+)
+load(
     "//debian:xvfb_amd64.bzl",
     xvfb_amd64_debs = "files",
 )
-load(
-    "//debian:clang_amd64.bzl",
-    clang_amd64_debs = "files",
-)
-load("//debian:packages.bzl", "generate_repositories_for_debs")
 
 generate_repositories_for_debs(rsync_debs)
 
@@ -379,9 +381,9 @@
     name = "com_google_absl",
     patch_args = ["-p1"],
     patches = ["//third_party/abseil:abseil.patch"],
-    sha256 = "ea1d31db00eb37e607bfda17ffac09064670ddf05da067944c4766f517876390",
-    strip_prefix = "abseil-cpp-c2435f8342c2d0ed8101cb43adfd605fdc52dca2",
-    url = "https://github.com/abseil/abseil-cpp/archive/c2435f8342c2d0ed8101cb43adfd605fdc52dca2.zip",
+    sha256 = "733726b8c3a6d39a4120d7e45ea8b41a434cdacde401cba500f14236c49b39dc",
+    strip_prefix = "abseil-cpp-20240116.2",
+    url = "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.2.tar.gz",
 )
 
 local_repository(
@@ -869,9 +871,15 @@
 
 http_archive(
     name = "aspect_rules_js",
-    sha256 = "630a71aba66c4023a5b16ab3efafaeed8b1a2865ccd168a34611eb73876b3fc4",
-    strip_prefix = "rules_js-1.37.1",
-    url = "https://github.com/aspect-build/rules_js/releases/download/v1.37.1/rules_js-v1.37.1.tar.gz",
+    patch_args = [
+        "-p1",
+    ],
+    patches = [
+        "//third_party:rules_js/0001-Fix-package-permissions.patch",
+    ],
+    sha256 = "bc9b4a01ef8eb050d8a7a050eedde8ffb1e45a56b0e4094e26f06c17d5fcf1d5",
+    strip_prefix = "rules_js-1.41.2",
+    url = "https://github.com/aspect-build/rules_js/releases/download/v1.41.2/rules_js-v1.41.2.tar.gz",
 )
 
 load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
@@ -1319,10 +1327,10 @@
     patches = [
         "@//third_party:rules_go/0001-Disable-warnings-for-external-repositories.patch",
     ],
-    sha256 = "dd926a88a564a9246713a9c00b35315f54cbd46b31a26d5d8fb264c07045f05d",
+    sha256 = "af47f30e9cbd70ae34e49866e201b3f77069abb111183f2c0297e7e74ba6bbc0",
     urls = [
-        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip",
-        "https://github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip",
+        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.47.0/rules_go-v0.47.0.zip",
+        "https://github.com/bazelbuild/rules_go/releases/download/v0.47.0/rules_go-v0.47.0.zip",
     ],
 )
 
@@ -1334,10 +1342,10 @@
     patches = [
         "@//third_party:bazel-gazelle/0001-Fix-visibility-of-gazelle-runner.patch",
     ],
-    sha256 = "ecba0f04f96b4960a5b250c8e8eeec42281035970aa8852dda73098274d14a1d",
+    sha256 = "75df288c4b31c81eb50f51e2e14f4763cb7548daae126817247064637fd9ea62",
     urls = [
-        "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
-        "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
+        "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.36.0/bazel-gazelle-v0.36.0.tar.gz",
+        "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.36.0/bazel-gazelle-v0.36.0.tar.gz",
     ],
 )
 
@@ -1360,18 +1368,18 @@
 
 http_archive(
     name = "com_google_protobuf",
-    sha256 = "ace0abf35274ee0f08d5564635505ed55a0bc346a6534413d3c5b040fc926332",
-    strip_prefix = "protobuf-24.3",
-    url = "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v24.3.zip",
+    sha256 = "4fc5ff1b2c339fb86cd3a25f0b5311478ab081e65ad258c6789359cd84d421f8",
+    strip_prefix = "protobuf-26.1",
+    url = "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v26.1.tar.gz",
 )
 
 http_archive(
     name = "com_github_grpc_grpc",
     patch_args = ["-p1"],
     patches = ["//debian:grpc.patch"],
-    sha256 = "a3a65f0129c4922c5d7f4c11dcd40083a12ca54076fd3a927bcd63c53b7e44a5",
-    strip_prefix = "grpc-1.59.2",
-    url = "https://github.com/grpc/grpc/archive/refs/tags/v1.59.2.tar.gz",
+    sha256 = "493d9905aa09124c2f44268b66205dd013f3925a7e82995f36745974e97af609",
+    strip_prefix = "grpc-1.63.0",
+    url = "https://github.com/grpc/grpc/archive/refs/tags/v1.63.0.tar.gz",
 )
 
 load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")
@@ -1472,17 +1480,15 @@
 )
 
 # This one is tricky to get an archive because it has recursive submodules. These semi-automated steps do work though:
-# git clone -b 1.10.34 --recurse-submodules --depth=1 https://github.com/aws/aws-sdk-cpp
+# git clone -b 1.11.321 --recurse-submodules --depth=1 https://github.com/aws/aws-sdk-cpp
 # cd aws-sdk-cpp
 # echo bsdtar -a -cf aws_sdk-version.tar.gz --ignore-zeros @\<\(git archive HEAD\) $(git submodule foreach --recursive --quiet 'echo @\<\(cd $displaypath \&\& git archive HEAD --prefix=$displaypath/\)')
 # Now run the command that printed, and the output will be at aws_sdk-version.tar.gz.
 http_archive(
     name = "aws_sdk",
     build_file = "//debian:aws_sdk.BUILD",
-    patch_args = ["-p1"],
-    patches = ["//debian:aws_sdk.patch"],
-    sha256 = "de6570d10c246189fd8c02100f7f0d9af8499a3ef94a131eeb85619f3bd6c604",
-    url = "https://software.frc971.org/Build-Dependencies/aws_sdk-1.10.34.tar.gz",
+    sha256 = "08856b91139d209f7423e60dd8f74a14ab6d053ca40088fcb42fd02484003e95",
+    url = "https://software.frc971.org/Build-Dependencies/aws_sdk-1.11.321.tar.gz",
 )
 
 # Source code of LZ4 (files under lib/) are under BSD 2-Clause.
diff --git a/aos/BUILD b/aos/BUILD
index 1f2d975..e67b593 100644
--- a/aos/BUILD
+++ b/aos/BUILD
@@ -1,7 +1,7 @@
 load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library", "flatbuffer_py_library")
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:autocxx.bzl", "autocxx_library")
 load("//tools/rust:defs.bzl", "flatbuffer_rust_library", "rust_library")
 
diff --git a/aos/actions/BUILD b/aos/actions/BUILD
index 2127547..9f88d89 100644
--- a/aos/actions/BUILD
+++ b/aos/actions/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/aos/analysis/BUILD b/aos/analysis/BUILD
index 63f2d57..1e3b2fa 100644
--- a/aos/analysis/BUILD
+++ b/aos/analysis/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//tools/build_rules:js.bzl", "ts_project")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//tools/build_rules:js.bzl", "ts_project")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/aos/events/BUILD b/aos/events/BUILD
index e82fdde..e500417 100644
--- a/aos/events/BUILD
+++ b/aos/events/BUILD
@@ -1,7 +1,7 @@
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:autocxx.bzl", "autocxx_library")
 load("//tools/rust:defs.bzl", "flatbuffer_rust_library", "rust_binary", "rust_library", "rust_test")
 
diff --git a/aos/events/logging/BUILD b/aos/events/logging/BUILD
index c914d1d..a8979ee 100644
--- a/aos/events/logging/BUILD
+++ b/aos/events/logging/BUILD
@@ -1,6 +1,6 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
 load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 static_flatbuffer(
     name = "logger_fbs",
@@ -201,9 +201,9 @@
         "@com_google_absl//absl/types:span",
     ] + select({
         "//tools:cpu_k8": [
+            ":lzma_encoder",
             ":s3_fetcher",
             ":s3_file_operations",
-            ":lzma_encoder",
         ],
         "//tools:cpu_arm64": [":lzma_encoder"],
         "//conditions:default": [],
diff --git a/aos/flatbuffers/generate.bzl b/aos/flatbuffers/generate.bzl
index 288b281..52627bc 100644
--- a/aos/flatbuffers/generate.bzl
+++ b/aos/flatbuffers/generate.bzl
@@ -1,5 +1,5 @@
-load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
 load("@aspect_bazel_lib//lib:run_binary.bzl", "run_binary")
+load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
 
 def static_flatbuffer(name, visibility = None, deps = [], srcs = [], **kwargs):
     """Generates the code for the static C++ flatbuffer API for the specified fbs file.
diff --git a/aos/logging/BUILD b/aos/logging/BUILD
index 9bd4807..5f56a50 100644
--- a/aos/logging/BUILD
+++ b/aos/logging/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 # The primary client logging interface.
 cc_library(
diff --git a/aos/network/BUILD b/aos/network/BUILD
index cd31731..db62286 100644
--- a/aos/network/BUILD
+++ b/aos/network/BUILD
@@ -1,12 +1,12 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//aos/seasocks:gen_embedded.bzl", "gen_embedded")
-load("//aos:config.bzl", "aos_config")
-load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
 load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library")
 load("@rules_cc//cc:defs.bzl", "cc_proto_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//aos:config.bzl", "aos_config")
+load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//aos/seasocks:gen_embedded.bzl", "gen_embedded")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/aos/network/www/BUILD b/aos/network/www/BUILD
index 8cccfa6..4f21778 100644
--- a/aos/network/www/BUILD
+++ b/aos/network/www/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 load("//aos:config.bzl", "aos_config")
+load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 
 exports_files(["styles.css"])
 
diff --git a/aos/starter/BUILD b/aos/starter/BUILD
index 0ebe0f5..9d359d4 100644
--- a/aos/starter/BUILD
+++ b/aos/starter/BUILD
@@ -1,6 +1,6 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//aos:config.bzl", "aos_config")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 exports_files(["roborio_irq_config.json"])
 
diff --git a/aos/util/BUILD b/aos/util/BUILD
index 206bd8f..fa73d5e 100644
--- a/aos/util/BUILD
+++ b/aos/util/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
-load("config_validator_macro.bzl", "config_validator_test")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("config_validator_macro.bzl", "config_validator_test")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/build_tests/BUILD b/build_tests/BUILD
index 282365e..1eaf737 100644
--- a/build_tests/BUILD
+++ b/build_tests/BUILD
@@ -1,11 +1,11 @@
-load("//tools/build_rules:js.bzl", "ts_project")
-load("@rules_cc//cc:defs.bzl", "cc_proto_library")
-load("@rules_proto//proto:defs.bzl", "proto_library")
 load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_go_library", "flatbuffer_py_library")
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
-load("//tools/build_rules:apache.bzl", "apache_wrapper")
+load("@rules_cc//cc:defs.bzl", "cc_proto_library")
+load("@rules_proto//proto:defs.bzl", "proto_library")
 load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library")
+load("//tools/build_rules:apache.bzl", "apache_wrapper")
 load("//tools/build_rules:autocxx.bzl", "autocxx_library")
+load("//tools/build_rules:js.bzl", "ts_project")
 
 cc_test(
     name = "gflags_build_test",
diff --git a/debian/BUILD b/debian/BUILD
index a7b3b97..3aa05a3 100644
--- a/debian/BUILD
+++ b/debian/BUILD
@@ -3,60 +3,20 @@
     apache2_debs = "files",
 )
 load(
-    ":postgresql_amd64.bzl",
-    postgresql_amd64_debs = "files",
-)
-load(
-    ":patch.bzl",
-    patch_debs = "files",
-)
-load(
-    ":rsync.bzl",
-    rsync_debs = "files",
-)
-load(
-    ":ssh.bzl",
-    ssh_debs = "files",
-)
-load(
-    ":pandoc.bzl",
-    pandoc_debs = "files",
-)
-load(
-    ":libusb.bzl",
-    libusb_debs = "files",
-)
-load(
-    ":mingw_compiler.bzl",
-    mingw_compiler_debs = "files",
-)
-load(
-    ":patchelf.bzl",
-    patchelf_debs = "files",
-)
-load(
     ":arm_frc_gnueabi_deps.bzl",
     arm_frc_gnueabi_deps_debs = "files",
 )
 load(
-    ":gtk_runtime.bzl",
-    gtk_runtime_debs = "files",
-)
-load(
-    ":opencv_amd64.bzl",
-    opencv_amd64_debs = "files",
+    ":clang_amd64.bzl",
+    clang_amd64_debs = "files",
 )
 load(
     ":gstreamer_amd64.bzl",
     gstreamer_amd64_debs = "files",
 )
 load(
-    ":lzma_amd64.bzl",
-    lzma_amd64_debs = "files",
-)
-load(
-    ":lzma_arm64.bzl",
-    lzma_arm64_debs = "files",
+    ":gtk_runtime.bzl",
+    gtk_runtime_debs = "files",
 )
 load(
     ":libtinfo5_amd64.bzl",
@@ -67,14 +27,54 @@
     libtinfo5_arm64_debs = "files",
 )
 load(
+    ":libusb.bzl",
+    libusb_debs = "files",
+)
+load(
+    ":lzma_amd64.bzl",
+    lzma_amd64_debs = "files",
+)
+load(
+    ":lzma_arm64.bzl",
+    lzma_arm64_debs = "files",
+)
+load(
+    ":mingw_compiler.bzl",
+    mingw_compiler_debs = "files",
+)
+load(
+    ":opencv_amd64.bzl",
+    opencv_amd64_debs = "files",
+)
+load(":packages.bzl", "download_packages", "generate_deb_tarball")
+load(
+    ":pandoc.bzl",
+    pandoc_debs = "files",
+)
+load(
+    ":patch.bzl",
+    patch_debs = "files",
+)
+load(
+    ":patchelf.bzl",
+    patchelf_debs = "files",
+)
+load(
+    ":postgresql_amd64.bzl",
+    postgresql_amd64_debs = "files",
+)
+load(
+    ":rsync.bzl",
+    rsync_debs = "files",
+)
+load(
+    ":ssh.bzl",
+    ssh_debs = "files",
+)
+load(
     ":xvfb_amd64.bzl",
     xvfb_amd64_debs = "files",
 )
-load(
-    ":clang_amd64.bzl",
-    clang_amd64_debs = "files",
-)
-load(":packages.bzl", "download_packages", "generate_deb_tarball")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/debian/aws_sdk.BUILD b/debian/aws_sdk.BUILD
index 46ac375..b5b2619 100644
--- a/debian/aws_sdk.BUILD
+++ b/debian/aws_sdk.BUILD
@@ -1,10 +1,18 @@
 load("@org_frc971//tools/build_rules:select.bzl", "compiler_select")
 
+common_copts = [
+    "-DPLATFORM_LINUX",
+    "-DINTEL_NO_ITTNOTIFY_API",
+    "-Wno-cast-align",
+    "-Wno-cast-qual",
+]
+
 cc_library(
     name = "s3",
-    srcs = glob(["aws-cpp-sdk-s3/source/**/*.cpp"]),
-    hdrs = glob(["aws-cpp-sdk-s3/include/**/*.h"]),
-    includes = ["aws-cpp-sdk-s3/include"],
+    srcs = glob(["generated/src/aws-cpp-sdk-s3/source/**/*.cpp"]),
+    hdrs = glob(["generated/src/aws-cpp-sdk-s3/include/**/*.h"]),
+    copts = common_copts,
+    includes = ["generated/src/aws-cpp-sdk-s3/include"],
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//visibility:public"],
     deps = [
@@ -15,7 +23,7 @@
 
 genrule(
     name = "gen_SDKConfig",
-    outs = ["aws-cpp-sdk-core/include/aws/core/SDKConfig.h"],
+    outs = ["src/aws-cpp-sdk-core/include/aws/core/SDKConfig.h"],
     cmd = "echo '#undef USE_AWS_MEMORY_MANAGEMENT' > $@",
     target_compatible_with = ["@platforms//os:linux"],
 )
@@ -23,43 +31,41 @@
 cc_library(
     name = "core",
     srcs = glob(
-        include = ["aws-cpp-sdk-core/source/**/*.cpp"],
+        include = ["src/aws-cpp-sdk-core/source/**/*.cpp"],
         exclude = [
-            "aws-cpp-sdk-core/source/utils/crypto/*/*.cpp",
-            "aws-cpp-sdk-core/source/platform/**/*.cpp",
-            "aws-cpp-sdk-core/source/platform/windows/**/*.cpp",
+            "src/aws-cpp-sdk-core/source/utils/crypto/*/*.cpp",
+            "src/aws-cpp-sdk-core/source/platform/**/*.cpp",
+            "src/aws-cpp-sdk-core/source/platform/windows/**/*.cpp",
             # net/*.cpp is for not-(linux or windows), so exclude everything in there.
-            "aws-cpp-sdk-core/source/net/**/*.cpp",
-            "aws-cpp-sdk-core/source/http/windows/**/*.cpp",
+            "src/aws-cpp-sdk-core/source/net/**/*.cpp",
+            "src/aws-cpp-sdk-core/source/http/windows/**/*.cpp",
         ],
     ) + glob([
-        "aws-cpp-sdk-core/source/utils/crypto/openssl/*.cpp",
-        "aws-cpp-sdk-core/source/utils/crypto/factory/*.cpp",
-        "aws-cpp-sdk-core/source/platform/linux-shared/**/*.cpp",
-        "aws-cpp-sdk-core/source/net/linux-shared/*.cpp",
+        "src/aws-cpp-sdk-core/source/utils/crypto/openssl/*.cpp",
+        "src/aws-cpp-sdk-core/source/utils/crypto/factory/*.cpp",
+        "src/aws-cpp-sdk-core/source/platform/linux-shared/**/*.cpp",
+        "src/aws-cpp-sdk-core/source/net/linux-shared/*.cpp",
     ]) + [
         ":gen_SDKConfig",
     ],
     hdrs = glob(
-        include = ["aws-cpp-sdk-core/include/**/*.h"],
+        include = ["src/aws-cpp-sdk-core/include/**/*.h"],
         exclude = [
-            "aws-cpp-sdk-core/include/aws/core/utils/crypto/*/*.h",
-            "aws-cpp-sdk-core/include/aws/core/http/windows/**/*.h",
+            "src/aws-cpp-sdk-core/include/aws/core/utils/crypto/*/*.h",
+            "src/aws-cpp-sdk-core/include/aws/core/http/windows/**/*.h",
         ],
     ) + glob([
-        "aws-cpp-sdk-core/include/aws/core/utils/crypto/openssl/*.h",
+        "src/aws-cpp-sdk-core/include/aws/core/utils/crypto/openssl/*.h",
     ]),
-    copts = [
+    copts = common_copts + [
         "-DAWS_SDK_VERSION_MAJOR=10",
         "-DAWS_SDK_VERSION_MINOR=34",
         "-DAWS_SDK_VERSION_PATCH=\"\\\"BRT\"\\\"",
         "-DENABLE_OPENSSL_ENCRYPTION",
         "-DENABLE_CURL_CLIENT",
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
         "-Wno-format-nonliteral",
     ],
-    includes = ["aws-cpp-sdk-core/include"],
+    includes = ["src/aws-cpp-sdk-core/include"],
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//visibility:public"],
     deps = [
@@ -69,13 +75,22 @@
         ":crt",
         "@boringssl//:crypto",
         "@com_github_curl_curl//:curl",
+        "@io_opentelemetry_cpp//api",
+        "@io_opentelemetry_cpp//exporters/ostream:ostream_metric_exporter",
+        "@io_opentelemetry_cpp//exporters/ostream:ostream_span_exporter",
+        "@io_opentelemetry_cpp//sdk:headers",
     ],
 )
 
 genrule(
     name = "gen_Config",
     outs = ["crt/aws-crt-cpp/include/aws/crt/Config.h"],
-    cmd = "echo '#define AWS_CRT_CPP_VERSION \"1.10.34\"' > $@",
+    cmd = "; ".join([
+        "echo '#define AWS_CRT_CPP_VERSION \"1.11.321\"' > $@",
+        "echo '#define AWS_CRT_CPP_VERSION_MAJOR 1' >> $@",
+        "echo '#define AWS_CRT_CPP_VERSION_MINOR 11' >> $@",
+        "echo '#define AWS_CRT_CPP_VERSION_PATCH 321' >> $@",
+    ]),
     target_compatible_with = ["@platforms//os:linux"],
 )
 
@@ -85,9 +100,8 @@
     hdrs = glob(["crt/aws-crt-cpp/include/**/*.h"]) + [
         ":gen_Config",
     ],
-    copts = [
+    copts = common_copts + [
         "-Wno-sign-compare",
-        "-Wno-cast-qual",
         "-Wno-tautological-type-limit-compare",
         "-Wno-missing-field-initializers",
     ],
@@ -123,6 +137,7 @@
     name = "aws-c-common",
     srcs = glob([
         "crt/aws-crt-cpp/crt/aws-c-common/source/*.c",
+        "crt/aws-crt-cpp/crt/aws-c-common/source/linux/*.c",
         "crt/aws-crt-cpp/crt/aws-c-common/source/external/*.c",
         "crt/aws-crt-cpp/crt/aws-c-common/source/posix/*.c",
     ]) + [
@@ -147,10 +162,8 @@
         ]),
         "//conditions:default": [],
     }),
-    hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-common/include/**/*.h"]),
-    copts = [
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
+    hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-common/include/**/*.h"]) + ["crt/aws-crt-cpp/crt/aws-c-common/source/external/cJSON.h"],
+    copts = common_copts + [
         "-Wno-sign-compare",
         "-Wno-format-nonliteral",
     ] + compiler_select({
@@ -159,7 +172,10 @@
             "-Wno-old-style-declaration",
         ],
     }),
-    includes = ["crt/aws-crt-cpp/crt/aws-c-common/include"],
+    includes = [
+        "crt/aws-crt-cpp/crt/aws-c-common/include",
+        "crt/aws-crt-cpp/crt/aws-c-common/source",
+    ],
     target_compatible_with = ["@platforms//os:linux"],
     textual_hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-common/include/**/*.inl"]),
     visibility = ["//visibility:public"],
@@ -175,10 +191,7 @@
         "//conditions:default": [],
     }),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-event-stream/include/**/*.h"]),
-    copts = [
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
-    ],
+    copts = common_copts,
     includes = ["crt/aws-crt-cpp/crt/aws-c-event-stream/include"],
     deps = [
         ":aws-c-common",
@@ -196,9 +209,7 @@
         "//conditions:default": [],
     }),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-checksums/include/**/*.h"]),
-    copts = [
-        "-Wno-cast-qual",
-        "-Wno-cast-align",
+    copts = common_copts + [
         "-Wno-implicit-function-declaration",
     ],
     includes = ["crt/aws-crt-cpp/crt/aws-checksums/include"],
@@ -215,13 +226,11 @@
         "crt/aws-crt-cpp/crt/aws-c-cal/source/unix/*.c",
     ]),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-cal/include/**/*.h"]),
-    copts = [
-        "-DOPENSSL_IS_AWSLC",
+    copts = common_copts + [
+        #"-DOPENSSL_IS_AWSLC",
         "-Wno-incompatible-pointer-types",
         "-Wno-unused-function",
         "-Wno-unused-parameter",
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
     ],
     includes = ["crt/aws-crt-cpp/crt/aws-c-cal/include"],
     target_compatible_with = ["@platforms//os:linux"],
@@ -235,10 +244,7 @@
     name = "aws-c-s3",
     srcs = glob(["crt/aws-crt-cpp/crt/aws-c-s3/source/**/*.c"]),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-s3/include/**/*.h"]),
-    copts = [
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
-    ],
+    copts = common_copts,
     includes = ["crt/aws-crt-cpp/crt/aws-c-s3/include"],
     target_compatible_with = ["@platforms//os:linux"],
     deps = [
@@ -252,7 +258,7 @@
     name = "aws-c-compression",
     srcs = glob(["crt/aws-crt-cpp/crt/aws-c-compression/source/*.c"]),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-compression/include/**/*.h"]),
-    copts = ["-Wno-cast-qual"],
+    copts = common_copts,
     includes = ["crt/aws-crt-cpp/crt/aws-c-compression/include"],
     target_compatible_with = ["@platforms//os:linux"],
     deps = [
@@ -264,10 +270,8 @@
     name = "aws-c-http",
     srcs = glob(["crt/aws-crt-cpp/crt/aws-c-http/source/**/*.c"]),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-http/include/**/*.h"]),
-    copts = [
+    copts = common_copts + [
         "-Wno-unused-but-set-variable",
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
     ],
     includes = ["crt/aws-crt-cpp/crt/aws-c-http/include"],
     target_compatible_with = ["@platforms//os:linux"],
@@ -283,10 +287,7 @@
     name = "aws-c-sdkutils",
     srcs = glob(["crt/aws-crt-cpp/crt/aws-c-sdkutils/source/**/*.c"]),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-sdkutils/include/**/*.h"]),
-    copts = [
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
-    ],
+    copts = common_copts,
     includes = ["crt/aws-crt-cpp/crt/aws-c-sdkutils/include"],
     target_compatible_with = ["@platforms//os:linux"],
     deps = [
@@ -298,10 +299,7 @@
     name = "aws-c-auth",
     srcs = glob(["crt/aws-crt-cpp/crt/aws-c-auth/source/**/*.c"]),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-auth/include/**/*.h"]),
-    copts = [
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
-    ],
+    copts = common_copts,
     includes = ["crt/aws-crt-cpp/crt/aws-c-auth/include"],
     target_compatible_with = ["@platforms//os:linux"],
     deps = [
@@ -316,9 +314,7 @@
     name = "aws-c-mqtt",
     srcs = glob(["crt/aws-crt-cpp/crt/aws-c-mqtt/source/**/*.c"]),
     hdrs = glob(["crt/aws-crt-cpp/crt/aws-c-mqtt/include/**/*.h"]),
-    copts = [
-        "-Wno-cast-qual",
-        "-Wno-cast-align",
+    copts = common_copts + [
         "-DAWS_MQTT_WITH_WEBSOCKETS",
     ],
     includes = ["crt/aws-crt-cpp/crt/aws-c-mqtt/include"],
@@ -343,11 +339,9 @@
     ] + glob([
         "crt/aws-crt-cpp/crt/aws-c-io/source/pkcs11/v2.40/*.h",
     ]),
-    copts = [
+    copts = common_copts + [
         "-DUSE_S2N",
         "-DAWS_USE_EPOLL",
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
         "-Wno-sign-compare",
         "-Wno-unused-parameter",
     ],
@@ -372,12 +366,10 @@
         "crt/aws-crt-cpp/crt/s2n/pq-crypto/*.c",
     ]),
     hdrs = ["crt/aws-crt-cpp/crt/s2n/api/s2n.h"],
-    copts = [
+    copts = common_copts + [
         "-Iexternal/aws_sdk/crt/aws-crt-cpp/crt/s2n",
         "-DS2N_NO_PQ",
         "-Wno-unknown-pragmas",
-        "-Wno-cast-align",
-        "-Wno-cast-qual",
         "-Wno-unused-parameter",
         "-Wno-sign-compare",
     ],
diff --git a/debian/aws_sdk.patch b/debian/aws_sdk.patch
index 8780e9b..785cc24 100644
--- a/debian/aws_sdk.patch
+++ b/debian/aws_sdk.patch
@@ -1,25 +1,13 @@
-Submodule crt/aws-crt-cpp contains modified content
-Submodule crt/aws-c-cal contains modified content
 diff --git a/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c b/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c
 index 761455b..fc434ba 100644
 --- a/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c
 +++ b/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c
-@@ -37,7 +37,7 @@ struct openssl_evp_md_ctx_table *g_aws_openssl_evp_md_ctx_table = NULL;
- /* 1.1 */
- extern HMAC_CTX *HMAC_CTX_new(void) __attribute__((weak, used));
- extern void HMAC_CTX_free(HMAC_CTX *) __attribute__((weak, used));
--extern int HMAC_CTX_reset(HMAC_CTX *) __attribute__((weak, used));
-+//extern int HMAC_CTX_reset(HMAC_CTX *) __attribute__((weak, used));
-
- /* 1.0.2 */
- extern void HMAC_CTX_init(HMAC_CTX *) __attribute__((weak, used));
-@@ -46,7 +46,7 @@ extern void HMAC_CTX_cleanup(HMAC_CTX *) __attribute__((weak)) __attribute__((us
- /* common */
+@@ -44,7 +44,7 @@ extern void HMAC_CTX_init(HMAC_CTX *) __attribute__((weak, used));
+ extern void HMAC_CTX_cleanup(HMAC_CTX *) __attribute__((weak, used));
  extern int HMAC_Update(HMAC_CTX *, const unsigned char *, size_t) __attribute__((weak, used));
  extern int HMAC_Final(HMAC_CTX *, unsigned char *, unsigned int *) __attribute__((weak, used));
--extern int HMAC_Init_ex(HMAC_CTX *, const void *, int, const EVP_MD *, ENGINE *) __attribute__((weak, used));
-+//extern int HMAC_Init_ex(HMAC_CTX *, const void *, int, const EVP_MD *, ENGINE *) __attribute__((weak, used));
-
- /* libcrypto 1.1 stub for init */
- static void s_hmac_ctx_init_noop(HMAC_CTX *ctx) {
-Submodule crt/s2n contains modified content
+-extern int HMAC_Init_ex(HMAC_CTX *, const void *, size_t, const EVP_MD *, ENGINE *) __attribute__((weak, used));
++//extern int HMAC_Init_ex(HMAC_CTX *, const void *, size_t, const EVP_MD *, ENGINE *) __attribute__((weak, used));
+ 
+ static int s_hmac_init_ex_bssl(HMAC_CTX *ctx, const void *key, size_t key_len, const EVP_MD *md, ENGINE *impl) {
+     AWS_PRECONDITION(ctx);
diff --git a/debian/packages.bzl b/debian/packages.bzl
index 97d6355..dad67d4 100644
--- a/debian/packages.bzl
+++ b/debian/packages.bzl
@@ -1,5 +1,5 @@
-load("@rules_pkg//:pkg.bzl", "pkg_tar")
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
+load("@rules_pkg//:pkg.bzl", "pkg_tar")
 
 # In order to use deb packages in the build you have to follow these steps.
 #
diff --git a/frc971/autonomous/BUILD b/frc971/autonomous/BUILD
index 0dd86ca..f20538c 100644
--- a/frc971/autonomous/BUILD
+++ b/frc971/autonomous/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/frc971/codelab/BUILD b/frc971/codelab/BUILD
index 5e0c1ea..2d1cfc6 100644
--- a/frc971/codelab/BUILD
+++ b/frc971/codelab/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/frc971/constants/testdata/BUILD b/frc971/constants/testdata/BUILD
index fee7b86..00dd33d 100644
--- a/frc971/constants/testdata/BUILD
+++ b/frc971/constants/testdata/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 exports_files([
     "test_constants.json",
diff --git a/frc971/control_loops/BUILD b/frc971/control_loops/BUILD
index 9986fef..9ce0e99 100644
--- a/frc971/control_loops/BUILD
+++ b/frc971/control_loops/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:config.bzl", "aos_config")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/frc971/control_loops/drivetrain/BUILD b/frc971/control_loops/drivetrain/BUILD
index 9d439b6..48d7a20 100644
--- a/frc971/control_loops/drivetrain/BUILD
+++ b/frc971/control_loops/drivetrain/BUILD
@@ -1,10 +1,10 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//tools/build_rules:template.bzl", "jinja2_template")
-load("//tools/build_rules:js.bzl", "ts_project")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:config.bzl", "aos_config")
-load("//tools/build_rules:select.bzl", "cpu_select")
 load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//tools/build_rules:js.bzl", "ts_project")
+load("//tools/build_rules:select.bzl", "cpu_select")
+load("//tools/build_rules:template.bzl", "jinja2_template")
 
 package(default_visibility = ["//visibility:public"])
 
@@ -197,10 +197,10 @@
         "drivetrain_config.h",
     ],
     deps = [
+        ":drivetrain_config_fbs",
         "//frc971:shifter_hall_effect",
         "//frc971/control_loops:state_feedback_loop",
         "//frc971/control_loops:state_feedback_loop_converters",
-        ":drivetrain_config_fbs",
     ] + select({
         "@platforms//os:linux": [
             "//frc971/control_loops:hybrid_state_feedback_loop",
diff --git a/frc971/control_loops/drivetrain/localization/BUILD b/frc971/control_loops/drivetrain/localization/BUILD
index 1cf83d4..3316446 100644
--- a/frc971/control_loops/drivetrain/localization/BUILD
+++ b/frc971/control_loops/drivetrain/localization/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 cc_library(
     name = "utils",
diff --git a/frc971/control_loops/flywheel/BUILD b/frc971/control_loops/flywheel/BUILD
index f077682..bae14aa 100644
--- a/frc971/control_loops/flywheel/BUILD
+++ b/frc971/control_loops/flywheel/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:config.bzl", "aos_config")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 static_flatbuffer(
     name = "flywheel_controller_status_fbs",
diff --git a/frc971/image_streamer/www/BUILD b/frc971/image_streamer/www/BUILD
index f808a73..74422bd 100644
--- a/frc971/image_streamer/www/BUILD
+++ b/frc971/image_streamer/www/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/frc971/imu_fdcan/Dual_IMU/Core/BUILD b/frc971/imu_fdcan/Dual_IMU/Core/BUILD
index 9ebb287..9405a46 100644
--- a/frc971/imu_fdcan/Dual_IMU/Core/BUILD
+++ b/frc971/imu_fdcan/Dual_IMU/Core/BUILD
@@ -1,5 +1,5 @@
-load("//motors:macros.bzl", "hex_from_elf")
 load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file")
+load("//motors:macros.bzl", "hex_from_elf")
 
 copy_file(
     name = "copy_startup",
diff --git a/frc971/imu_reader/BUILD b/frc971/imu_reader/BUILD
index cf2df44..809a3fc 100644
--- a/frc971/imu_reader/BUILD
+++ b/frc971/imu_reader/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 cc_library(
     name = "imu",
diff --git a/frc971/input/BUILD b/frc971/input/BUILD
index 329dfce..9e5fd9c 100644
--- a/frc971/input/BUILD
+++ b/frc971/input/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/frc971/math/BUILD b/frc971/math/BUILD
index dd160d0..b8cd2fc 100644
--- a/frc971/math/BUILD
+++ b/frc971/math/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 static_flatbuffer(
     name = "matrix_fbs",
diff --git a/frc971/orin/BUILD b/frc971/orin/BUILD
index 4985db9..f47e23b 100644
--- a/frc971/orin/BUILD
+++ b/frc971/orin/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//frc971:halide.bzl", "halide_library")
 
 exports_files(["orin_irq_config.json"])
diff --git a/frc971/vision/BUILD b/frc971/vision/BUILD
index 46b7cea..01a6d1a 100644
--- a/frc971/vision/BUILD
+++ b/frc971/vision/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_py_library")
-load("//aos:config.bzl", "aos_config")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 static_flatbuffer(
     name = "vision_fbs",
diff --git a/frc971/wpilib/BUILD b/frc971/wpilib/BUILD
index 2cf2109..be544ca 100644
--- a/frc971/wpilib/BUILD
+++ b/frc971/wpilib/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//tools/build_rules:js.bzl", "ts_project")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//tools/build_rules:js.bzl", "ts_project")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/scouting/deploy/BUILD b/scouting/deploy/BUILD
index c8f68c4..65b33fb 100644
--- a/scouting/deploy/BUILD
+++ b/scouting/deploy/BUILD
@@ -1,5 +1,5 @@
-load("@rules_pkg//pkg:pkg.bzl", "pkg_deb", "pkg_tar")
 load("@rules_pkg//pkg:mappings.bzl", "pkg_files")
+load("@rules_pkg//pkg:pkg.bzl", "pkg_deb", "pkg_tar")
 
 pkg_files(
     name = "systemd_files",
diff --git a/third_party/abseil/abseil.patch b/third_party/abseil/abseil.patch
index 6c7f380..36b37dc 100644
--- a/third_party/abseil/abseil.patch
+++ b/third_party/abseil/abseil.patch
@@ -244,15 +244,6 @@
      textual_hdrs = ["include/cctz/civil_time_detail.h"],
      visibility = ["//visibility:public"],
      deps = ["//absl/base:config"],
-@@ -53,6 +62,8 @@ cc_library(
-         "include/cctz/time_zone.h",
-         "include/cctz/zone_info_source.h",
-     ],
-+    copts = ABSL_DEFAULT_COPTS,
-+    linkopts = ABSL_DEFAULT_LINKOPTS,
-     # OS X and iOS no longer use `linkopts = ["-framework CoreFoundation"]`
-     # as (1) bazel adds it automatically, and (2) it caused problems when
-     # cross-compiling for Android.
 diff --git a/absl/copts/configure_copts.bzl b/absl/copts/configure_copts.bzl
 index ca5f26da..0b10dc0b 100644
 --- a/absl/copts/configure_copts.bzl
diff --git a/third_party/rules_js/0001-Fix-package-permissions.patch b/third_party/rules_js/0001-Fix-package-permissions.patch
new file mode 100644
index 0000000..282df88
--- /dev/null
+++ b/third_party/rules_js/0001-Fix-package-permissions.patch
@@ -0,0 +1,33 @@
+diff --git a/npm/private/npm_package_store.bzl b/npm/private/npm_package_store.bzl
+index 9ab33e56..46446bd9 100644
+--- a/npm/private/npm_package_store.bzl
++++ b/npm/private/npm_package_store.bzl
+@@ -198,23 +198,14 @@ def _npm_package_store_impl(ctx):
+             if utils.is_tarball_extension(src_directory.extension):
+                 # npm packages are always published with one top-level directory inside the tarball, tho the name is not predictable
+                 # we can use the --strip-components 1 argument with tar to strip one directory level
+-                args = ctx.actions.args()
+-                args.add("--extract")
+-                args.add("--no-same-owner")
+-                args.add("--no-same-permissions")
+-                args.add("--strip-components")
+-                args.add(str(1))
+-                args.add("--file")
+-                args.add(src_directory.path)
+-                args.add("--directory")
+-                args.add(virtual_store_directory.path)
+-
+                 bsdtar = ctx.toolchains["@aspect_bazel_lib//lib:tar_toolchain_type"]
+-                ctx.actions.run(
+-                    executable = bsdtar.tarinfo.binary,
++                ctx.actions.run_shell(
++                    tools = [bsdtar.tarinfo.binary],
+                     inputs = depset(direct = [src_directory], transitive = [bsdtar.default.files]),
+                     outputs = [virtual_store_directory],
+-                    arguments = [args],
++                    command = bsdtar.tarinfo.binary.path + " --extract --no-same-owner --no-same-permissions --strip-components 1 --file " +
++                              src_directory.path + " --directory " +
++                              virtual_store_directory.path + " && find " + virtual_store_directory.path + " -type d -exec chmod 755 {} \\;",
+                     mnemonic = "NpmPackageExtract",
+                     progress_message = "Extracting npm package {}@{}".format(package, version),
+                 )
diff --git a/tools/bazel b/tools/bazel
index 97f31d9..d4312b2 100755
--- a/tools/bazel
+++ b/tools/bazel
@@ -24,7 +24,7 @@
   exec "${BAZEL_OVERRIDE}" "$@"
 fi
 
-readonly VERSION="6.0.0"
+readonly VERSION="7.1.1"
 
 readonly DOWNLOAD_DIR="${HOME}/.cache/bazel"
 # Directory to unpack bazel into.  This must change whenever bazel changes.
diff --git a/tools/build_rules/autocxx.bzl b/tools/build_rules/autocxx.bzl
index 5cadf2b..92ea16e 100644
--- a/tools/build_rules/autocxx.bzl
+++ b/tools/build_rules/autocxx.bzl
@@ -1,6 +1,6 @@
+load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
 load("@org_frc971//tools/rust:defs.bzl", "rust_library")
 load("@rules_cc//cc:find_cc_toolchain.bzl", "find_cc_toolchain")
-load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
 
 def _cc_toolchain_flags(ctx, cc_toolchain):
     feature_configuration = cc_common.configure_features(
diff --git a/tools/build_rules/js.bzl b/tools/build_rules/js.bzl
index bb15c2c..e90beca 100644
--- a/tools/build_rules/js.bzl
+++ b/tools/build_rules/js.bzl
@@ -1,17 +1,17 @@
+load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file")
+load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory")
+load("@aspect_rules_cypress//cypress:defs.bzl", "cypress_module_test")
+load("@aspect_rules_esbuild//esbuild:defs.bzl", "esbuild")
 load("@aspect_rules_js//js:providers.bzl", "JsInfo")
 load("@aspect_rules_js//npm:defs.bzl", "npm_package")
+load("@aspect_rules_rollup//rollup:defs.bzl", upstream_rollup_bundle = "rollup")
+load("@aspect_rules_terser//terser:defs.bzl", terser_minified = "terser")
 load("@bazel_skylib//rules:write_file.bzl", "write_file")
-load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory")
-load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file")
-load("@aspect_rules_esbuild//esbuild:defs.bzl", "esbuild")
 
 #load("@npm//:history-server/package_json.bzl", history_server_bin = "bin")
 load("@npm//:html-insert-assets/package_json.bzl", html_insert_assets_bin = "bin")
 load("//tools/build_rules/js:ng.bzl", "ng_esbuild", "ng_project")
 load("//tools/build_rules/js:ts.bzl", _ts_project = "ts_project")
-load("@aspect_rules_rollup//rollup:defs.bzl", upstream_rollup_bundle = "rollup")
-load("@aspect_rules_terser//terser:defs.bzl", terser_minified = "terser")
-load("@aspect_rules_cypress//cypress:defs.bzl", "cypress_module_test")
 
 ts_project = _ts_project
 
diff --git a/tools/cpp/toolchain_config.bzl b/tools/cpp/toolchain_config.bzl
index 6c37962..ad0c86d 100644
--- a/tools/cpp/toolchain_config.bzl
+++ b/tools/cpp/toolchain_config.bzl
@@ -1,3 +1,4 @@
+load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
 load(
     "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
     "action_config",
@@ -8,7 +9,6 @@
     "tool_path",
     "with_feature_set",
 )
-load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
 
 def _impl(ctx):
     if ctx.attr.cpu == "rp2040":
diff --git a/tools/dependency_rewrite b/tools/dependency_rewrite
index 14980dd..f6eb9a0 100644
--- a/tools/dependency_rewrite
+++ b/tools/dependency_rewrite
@@ -19,6 +19,7 @@
 rewrite www.googleapis.com/(.*) software.frc971.org/Build-Dependencies/www.googleapis.com/$1
 rewrite www.johnvansickle.com/(.*) software.frc971.org/Build-Dependencies/www.johnvansickle.com/$1
 rewrite docs.opencv.org/(.*) software.frc971.org/Build-Dependencies/docs.opencv.org/$1
+rewrite security.ubuntu.com/(.*) software.frc971.org/Build-Dependencies/security.ubuntu.com/$1
 allow crates.io
 allow golang.org
 allow go.dev
diff --git a/tools/go/mirrored_go_deps.bzl b/tools/go/mirrored_go_deps.bzl
index dbf4f29..dcd7405 100644
--- a/tools/go/mirrored_go_deps.bzl
+++ b/tools/go/mirrored_go_deps.bzl
@@ -1,6 +1,6 @@
-load("//tools/go:go_mirrors.bzl", "GO_MIRROR_INFO")
 load("@bazel_gazelle//:deps.bzl", "go_repository")
 load("@ci_configure//:ci.bzl", "RUNNING_IN_CI")
+load("//tools/go:go_mirrors.bzl", "GO_MIRROR_INFO")
 
 def maybe_override_go_dep(name, importpath, sum, version, **kwargs):
     """This macro selects between our dependency mirrors and upstream sources.
diff --git a/tools/lint/BUILD b/tools/lint/BUILD
index 907f17c..7b6803d 100644
--- a/tools/lint/BUILD
+++ b/tools/lint/BUILD
@@ -1,6 +1,6 @@
 load("@ci_configure//:ci.bzl", "RUNNING_IN_CI")
-load("@pip_deps//:requirements.bzl", "entry_point")
 load("@npm//:prettier/package_json.bzl", prettier_bin = "bin")
+load("@pip_deps//:requirements.bzl", "entry_point")
 
 prettier_bin.prettier_binary(
     name = "prettier_binary",
diff --git a/tools/rust/BUILD b/tools/rust/BUILD
index 2095511..66242a0 100644
--- a/tools/rust/BUILD
+++ b/tools/rust/BUILD
@@ -1,5 +1,5 @@
-load("@rules_rust//rust:toolchain.bzl", "rust_stdlib_filegroup", "rust_toolchain")
 load("@bazel_skylib//rules:write_file.bzl", "write_file")
+load("@rules_rust//rust:toolchain.bzl", "rust_stdlib_filegroup", "rust_toolchain")
 
 # We have to declare our toolchains individually to get the corect constraints
 # configured so we can robustly select the correct one for each of our
diff --git a/tools/rust/defs.bzl b/tools/rust/defs.bzl
index 88caca5..06f1ad1 100644
--- a/tools/rust/defs.bzl
+++ b/tools/rust/defs.bzl
@@ -1,3 +1,4 @@
+load("@com_github_google_flatbuffers//:build_defs.bzl", _flatbuffer_rust_library = "flatbuffer_rust_library")
 load(
     "@rules_rust//rust:defs.bzl",
     _rust_binary = "rust_binary",
@@ -6,7 +7,6 @@
     _rust_library = "rust_library",
     _rust_test = "rust_test",
 )
-load("@com_github_google_flatbuffers//:build_defs.bzl", _flatbuffer_rust_library = "flatbuffer_rust_library")
 
 def rust_doc_test(target_compatible_with = ["//tools/platforms/rust:has_support"], tags = [], **kwargs):
     # TODO(james): Attempting to execute this remotely results
diff --git a/y2014/BUILD b/y2014/BUILD
index 5be5cfa..c4e419f 100644
--- a/y2014/BUILD
+++ b/y2014/BUILD
@@ -1,5 +1,5 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 cc_library(
     name = "constants",
diff --git a/y2016/BUILD b/y2016/BUILD
index ed3256f..849f0f6 100644
--- a/y2016/BUILD
+++ b/y2016/BUILD
@@ -1,5 +1,5 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 cc_library(
     name = "constants",
diff --git a/y2016/vision/BUILD b/y2016/vision/BUILD
index f1925a6..8936878 100644
--- a/y2016/vision/BUILD
+++ b/y2016/vision/BUILD
@@ -1,8 +1,8 @@
 load("@rules_cc//cc:defs.bzl", "cc_proto_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
-load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools:platforms.bzl", "platforms")
+load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
 
 static_flatbuffer(
     name = "vision_fbs",
diff --git a/y2016/vision/tools/BUILD b/y2016/vision/tools/BUILD
index 48ed352..15508e7 100644
--- a/y2016/vision/tools/BUILD
+++ b/y2016/vision/tools/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
 load("//tools:platforms.bzl", "platforms")
+load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
 
 gtk_dependent_cc_binary(
     name = "blob_stream_replay",
diff --git a/y2017/BUILD b/y2017/BUILD
index a557815..aeb4d67 100644
--- a/y2017/BUILD
+++ b/y2017/BUILD
@@ -1,5 +1,5 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 cc_library(
     name = "constants",
diff --git a/y2017/vision/BUILD b/y2017/vision/BUILD
index c4045b8..dcace86 100644
--- a/y2017/vision/BUILD
+++ b/y2017/vision/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
 load("@rules_cc//cc:defs.bzl", "cc_proto_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//tools/build_rules:gtk_dependent.bzl", "gtk_dependent_cc_binary")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/y2018/BUILD b/y2018/BUILD
index e3531b2..129cd84 100644
--- a/y2018/BUILD
+++ b/y2018/BUILD
@@ -1,8 +1,8 @@
-load("//frc971:downloader.bzl", "robot_downloader")
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//aos:config.bzl", "aos_config")
 load("@rules_cc//cc:defs.bzl", "cc_proto_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 robot_downloader(
     start_binaries = [
diff --git a/y2019/BUILD b/y2019/BUILD
index fee2db9..7bc0c33 100644
--- a/y2019/BUILD
+++ b/y2019/BUILD
@@ -1,8 +1,8 @@
-load("//frc971:downloader.bzl", "robot_downloader")
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//aos:config.bzl", "aos_config")
 load("@rules_cc//cc:defs.bzl", "cc_proto_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 robot_downloader(
     data = [
diff --git a/y2019/control_loops/drivetrain/BUILD b/y2019/control_loops/drivetrain/BUILD
index 53cb777..71bd0ee 100644
--- a/y2019/control_loops/drivetrain/BUILD
+++ b/y2019/control_loops/drivetrain/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:select.bzl", "cpu_select")
 
 genrule(
diff --git a/y2019/jevois/BUILD b/y2019/jevois/BUILD
index adb1dd2..0b2f618 100644
--- a/y2019/jevois/BUILD
+++ b/y2019/jevois/BUILD
@@ -1,5 +1,5 @@
-load("//motors:macros.bzl", "hex_from_elf")
 load("@org_frc971//tools/build_rules:select.bzl", "compiler_select")
+load("//motors:macros.bzl", "hex_from_elf")
 
 jevois_crc_args = [
     "$(location //third_party/pycrc:pycrc_main)",
diff --git a/y2019/vision/server/BUILD b/y2019/vision/server/BUILD
index 105a8e8..d942ff9 100644
--- a/y2019/vision/server/BUILD
+++ b/y2019/vision/server/BUILD
@@ -1,8 +1,8 @@
-load("//tools/build_rules:js.bzl", "ts_project")
-load("//aos/seasocks:gen_embedded.bzl", "gen_embedded")
 load("@rules_cc//cc:defs.bzl", "cc_proto_library")
 load("@rules_proto//proto:defs.bzl", "proto_library")
+load("//aos/seasocks:gen_embedded.bzl", "gen_embedded")
 load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+load("//tools/build_rules:js.bzl", "ts_project")
 
 ts_project(
     name = "demo",
diff --git a/y2020/BUILD b/y2020/BUILD
index 001ef89..3def80a 100644
--- a/y2020/BUILD
+++ b/y2020/BUILD
@@ -1,8 +1,8 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
-load("//tools/build_rules:template.bzl", "jinja2_template")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos/util:config_validator_macro.bzl", "config_validator_test")
+load("//frc971:downloader.bzl", "robot_downloader")
+load("//tools/build_rules:template.bzl", "jinja2_template")
 
 config_validator_test(
     name = "config_validator_test",
diff --git a/y2020/control_loops/drivetrain/BUILD b/y2020/control_loops/drivetrain/BUILD
index 0070156..feabb62 100644
--- a/y2020/control_loops/drivetrain/BUILD
+++ b/y2020/control_loops/drivetrain/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//tools/build_rules:js.bzl", "ts_project")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//tools/build_rules:js.bzl", "ts_project")
 
 genrule(
     name = "genrule_drivetrain",
diff --git a/y2020/control_loops/superstructure/BUILD b/y2020/control_loops/superstructure/BUILD
index c77f35d..0b91150 100644
--- a/y2020/control_loops/superstructure/BUILD
+++ b/y2020/control_loops/superstructure/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:js.bzl", "ts_project")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/y2020/vision/sift/BUILD b/y2020/vision/sift/BUILD
index 8b420ea..a220664 100644
--- a/y2020/vision/sift/BUILD
+++ b/y2020/vision/sift/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load(":fast_gaussian.bzl", "fast_gaussian")
 load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_py_library")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load(":fast_gaussian.bzl", "fast_gaussian")
 
 # Note that this file is also used directly by :fast_gaussian_halide_generator,
 # without any dependencies added here.
diff --git a/y2020/www/BUILD b/y2020/www/BUILD
index 0c05900..85457b0 100644
--- a/y2020/www/BUILD
+++ b/y2020/www/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 
 ts_project(
     name = "camera_main",
diff --git a/y2021_bot3/BUILD b/y2021_bot3/BUILD
index 0fc468b..7d898f5 100644
--- a/y2021_bot3/BUILD
+++ b/y2021_bot3/BUILD
@@ -1,5 +1,5 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 robot_downloader(
     data = [
diff --git a/y2022/BUILD b/y2022/BUILD
index a839f37..bce1f66 100644
--- a/y2022/BUILD
+++ b/y2022/BUILD
@@ -1,8 +1,8 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
-load("//tools/build_rules:template.bzl", "jinja2_template")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos/util:config_validator_macro.bzl", "config_validator_test")
+load("//frc971:downloader.bzl", "robot_downloader")
+load("//tools/build_rules:template.bzl", "jinja2_template")
 
 config_validator_test(
     name = "config_validator_test",
diff --git a/y2022/control_loops/superstructure/BUILD b/y2022/control_loops/superstructure/BUILD
index 52b4db0..0a72b71 100644
--- a/y2022/control_loops/superstructure/BUILD
+++ b/y2022/control_loops/superstructure/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:js.bzl", "ts_project")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/y2022/localizer/BUILD b/y2022/localizer/BUILD
index 63f720f..6053efb 100644
--- a/y2022/localizer/BUILD
+++ b/y2022/localizer/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//tools/build_rules:js.bzl", "ts_project")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//tools/build_rules:js.bzl", "ts_project")
 
 ts_project(
     name = "localizer_plotter",
diff --git a/y2022/vision/BUILD b/y2022/vision/BUILD
index 523ee04..795d75f 100644
--- a/y2022/vision/BUILD
+++ b/y2022/vision/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:js.bzl", "ts_project")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 ts_project(
     name = "vision_plotter",
diff --git a/y2022/www/BUILD b/y2022/www/BUILD
index e806404..e4969fd 100644
--- a/y2022/www/BUILD
+++ b/y2022/www/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 
 filegroup(
     name = "files",
diff --git a/y2022_bot3/BUILD b/y2022_bot3/BUILD
index 125ff44..08f4e2c 100644
--- a/y2022_bot3/BUILD
+++ b/y2022_bot3/BUILD
@@ -1,5 +1,5 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 robot_downloader(
     binaries = [
diff --git a/y2022_bot3/control_loops/superstructure/BUILD b/y2022_bot3/control_loops/superstructure/BUILD
index a3f74f9..cff7b18 100644
--- a/y2022_bot3/control_loops/superstructure/BUILD
+++ b/y2022_bot3/control_loops/superstructure/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/y2023/BUILD b/y2023/BUILD
index 9bbed4f..e3d9a2e 100644
--- a/y2023/BUILD
+++ b/y2023/BUILD
@@ -1,7 +1,7 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
-load("//tools/build_rules:template.bzl", "jinja2_template")
 load("//aos/util:config_validator_macro.bzl", "config_validator_test")
+load("//frc971:downloader.bzl", "robot_downloader")
+load("//tools/build_rules:template.bzl", "jinja2_template")
 
 config_validator_test(
     name = "config_validator_test",
diff --git a/y2023/constants/BUILD b/y2023/constants/BUILD
index bbcec56..5bece66 100644
--- a/y2023/constants/BUILD
+++ b/y2023/constants/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@aspect_bazel_lib//lib:run_binary.bzl", "run_binary")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:template.bzl", "jinja2_template")
 
 cc_library(
diff --git a/y2023/control_loops/drivetrain/BUILD b/y2023/control_loops/drivetrain/BUILD
index ea2110e..a1e1cd8 100644
--- a/y2023/control_loops/drivetrain/BUILD
+++ b/y2023/control_loops/drivetrain/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 genrule(
     name = "genrule_drivetrain",
diff --git a/y2023/control_loops/superstructure/BUILD b/y2023/control_loops/superstructure/BUILD
index f62d790..91fca1d 100644
--- a/y2023/control_loops/superstructure/BUILD
+++ b/y2023/control_loops/superstructure/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:js.bzl", "ts_project")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/y2023/localizer/BUILD b/y2023/localizer/BUILD
index 9b35fcf..824813a 100644
--- a/y2023/localizer/BUILD
+++ b/y2023/localizer/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:js.bzl", "ts_project")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 ts_project(
     name = "localizer_plotter",
diff --git a/y2023/vision/BUILD b/y2023/vision/BUILD
index 97ce003..79849d9 100644
--- a/y2023/vision/BUILD
+++ b/y2023/vision/BUILD
@@ -1,7 +1,7 @@
-load("//frc971:halide.bzl", "halide_library")
-load("//tools/build_rules:select.bzl", "cpu_select")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//frc971:halide.bzl", "halide_library")
+load("//tools/build_rules:select.bzl", "cpu_select")
 
 cc_binary(
     name = "camera_reader",
diff --git a/y2023/www/BUILD b/y2023/www/BUILD
index 94a1a13..051a26f 100644
--- a/y2023/www/BUILD
+++ b/y2023/www/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 
 filegroup(
     name = "files",
diff --git a/y2023_bot3/BUILD b/y2023_bot3/BUILD
index 86625da..e1c8d06 100644
--- a/y2023_bot3/BUILD
+++ b/y2023_bot3/BUILD
@@ -1,6 +1,6 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
 load("//aos/util:config_validator_macro.bzl", "config_validator_test")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 config_validator_test(
     name = "config_validator_test",
diff --git a/y2023_bot3/control_loops/superstructure/BUILD b/y2023_bot3/control_loops/superstructure/BUILD
index d74d033..97ea2f9 100644
--- a/y2023_bot3/control_loops/superstructure/BUILD
+++ b/y2023_bot3/control_loops/superstructure/BUILD
@@ -1,5 +1,5 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/y2024/BUILD b/y2024/BUILD
index 2727ac7..26727a5 100644
--- a/y2024/BUILD
+++ b/y2024/BUILD
@@ -1,6 +1,6 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
 load("//aos/util:config_validator_macro.bzl", "config_validator_test")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 config_validator_test(
     name = "config_validator_test",
diff --git a/y2024/constants/BUILD b/y2024/constants/BUILD
index b07851e..7e5a41a 100644
--- a/y2024/constants/BUILD
+++ b/y2024/constants/BUILD
@@ -23,16 +23,16 @@
     includes = glob([
         "test_data/*.json",
     ]) + [
-        "//y2024/control_loops/superstructure/intake_pivot:intake_pivot_json",
-        "//y2024/control_loops/superstructure/climber:climber_json",
-        "//y2024/control_loops/superstructure/catapult:catapult_json",
-        "//y2024/control_loops/superstructure/altitude:altitude_json",
-        "//y2024/control_loops/superstructure/extend:extend_json",
-        "//y2024/control_loops/superstructure/turret:turret_json",
-        "//y2024/control_loops/drivetrain:drivetrain_config.json",
-        "//y2024/constants/calib_files",
-        "common.json",
         "common.jinja2",
+        "common.json",
+        "//y2024/constants/calib_files",
+        "//y2024/control_loops/drivetrain:drivetrain_config.json",
+        "//y2024/control_loops/superstructure/altitude:altitude_json",
+        "//y2024/control_loops/superstructure/catapult:catapult_json",
+        "//y2024/control_loops/superstructure/climber:climber_json",
+        "//y2024/control_loops/superstructure/extend:extend_json",
+        "//y2024/control_loops/superstructure/intake_pivot:intake_pivot_json",
+        "//y2024/control_loops/superstructure/turret:turret_json",
         "//y2024/vision/maps",
     ],
     parameters = {},
diff --git a/y2024/control_loops/drivetrain/BUILD b/y2024/control_loops/drivetrain/BUILD
index 2a97a7b..958b723 100644
--- a/y2024/control_loops/drivetrain/BUILD
+++ b/y2024/control_loops/drivetrain/BUILD
@@ -1,6 +1,6 @@
 load("//aos:config.bzl", "aos_config")
-load("//tools/build_rules:template.bzl", "jinja2_template")
 load("//frc971/control_loops/drivetrain:drivetrain_config.bzl", "drivetrain_config")
+load("//tools/build_rules:template.bzl", "jinja2_template")
 
 genrule(
     name = "genrule_drivetrain",
diff --git a/y2024/control_loops/superstructure/BUILD b/y2024/control_loops/superstructure/BUILD
index b824fbf..6c1075a 100644
--- a/y2024/control_loops/superstructure/BUILD
+++ b/y2024/control_loops/superstructure/BUILD
@@ -1,6 +1,6 @@
-load("//tools/build_rules:js.bzl", "ts_project")
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
+load("//tools/build_rules:js.bzl", "ts_project")
 
 package(default_visibility = ["//visibility:public"])
 
diff --git a/y2024/localizer/BUILD b/y2024/localizer/BUILD
index 5e2581a..d5a4348 100644
--- a/y2024/localizer/BUILD
+++ b/y2024/localizer/BUILD
@@ -1,6 +1,6 @@
+load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//tools/build_rules:js.bzl", "ts_project")
-load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
 
 ts_project(
     name = "localizer_plotter",
diff --git a/y2024/www/BUILD b/y2024/www/BUILD
index 8bc3755..6b751ed 100644
--- a/y2024/www/BUILD
+++ b/y2024/www/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 
 filegroup(
     name = "files",
diff --git a/y2024_defense/BUILD b/y2024_defense/BUILD
index 63b9502..8f888a5 100644
--- a/y2024_defense/BUILD
+++ b/y2024_defense/BUILD
@@ -1,6 +1,6 @@
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
 load("//aos/util:config_validator_macro.bzl", "config_validator_test")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 config_validator_test(
     name = "config_validator_test",
diff --git a/y2024_defense/www/BUILD b/y2024_defense/www/BUILD
index 7af68fe..aeaccf8 100644
--- a/y2024_defense/www/BUILD
+++ b/y2024_defense/www/BUILD
@@ -1,5 +1,5 @@
-load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 load("//frc971/downloader:downloader.bzl", "aos_downloader_dir")
+load("//tools/build_rules:js.bzl", "rollup_bundle", "ts_project")
 
 filegroup(
     name = "files",
diff --git a/y2024_swerve/BUILD b/y2024_swerve/BUILD
index 53f98b8..c696c5a 100644
--- a/y2024_swerve/BUILD
+++ b/y2024_swerve/BUILD
@@ -1,7 +1,7 @@
-load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
-load("//frc971:downloader.bzl", "robot_downloader")
 load("//aos:config.bzl", "aos_config")
+load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
 load("//aos/util:config_validator_macro.bzl", "config_validator_test")
+load("//frc971:downloader.bzl", "robot_downloader")
 
 config_validator_test(
     name = "config_validator_test",