diff --git a/.direnv/bin/nix-direnv-reload b/.direnv/bin/nix-direnv-reload
deleted file mode 100755
index d69c8f0..0000000
--- a/.direnv/bin/nix-direnv-reload
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-set -e
-if [[ ! -d "/home/spectre/code/aocrust" ]]; then
- echo "Cannot find source directory; Did you move it?"
- echo "(Looking for "/home/spectre/code/aocrust")"
- echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
- exit 1
-fi
-
-# rebuild the cache forcefully
-_nix_direnv_force_reload=1 direnv exec "/home/spectre/code/aocrust" true
-
-# Update the mtime for .envrc.
-# This will cause direnv to reload again - but without re-building.
-touch "/home/spectre/code/aocrust/.envrc"
-
-# Also update the timestamp of whatever profile_rc we have.
-# This makes sure that we know we are up to date.
-touch -r "/home/spectre/code/aocrust/.envrc" "/home/spectre/code/aocrust/.direnv"/*.rc
diff --git a/.direnv/flake-inputs/01x5k4nlxcpyd85nnr0b9gm89rm8ff4x-source b/.direnv/flake-inputs/01x5k4nlxcpyd85nnr0b9gm89rm8ff4x-source
deleted file mode 120000
index f7fce9f..0000000
--- a/.direnv/flake-inputs/01x5k4nlxcpyd85nnr0b9gm89rm8ff4x-source
+++ /dev/null
@@ -1 +0,0 @@
-/nix/store/01x5k4nlxcpyd85nnr0b9gm89rm8ff4x-source
\ No newline at end of file
diff --git a/.direnv/flake-inputs/21j7n6lxhfshy95gi0zr4vwswgy294jm-source b/.direnv/flake-inputs/21j7n6lxhfshy95gi0zr4vwswgy294jm-source
deleted file mode 120000
index ef9eb0e..0000000
--- a/.direnv/flake-inputs/21j7n6lxhfshy95gi0zr4vwswgy294jm-source
+++ /dev/null
@@ -1 +0,0 @@
-/nix/store/21j7n6lxhfshy95gi0zr4vwswgy294jm-source
\ No newline at end of file
diff --git a/.direnv/flake-inputs/63wl439w735818rb3sl7ks63raqzqxx2-source b/.direnv/flake-inputs/63wl439w735818rb3sl7ks63raqzqxx2-source
deleted file mode 120000
index aa24e83..0000000
--- a/.direnv/flake-inputs/63wl439w735818rb3sl7ks63raqzqxx2-source
+++ /dev/null
@@ -1 +0,0 @@
-/nix/store/63wl439w735818rb3sl7ks63raqzqxx2-source
\ No newline at end of file
diff --git a/.direnv/flake-inputs/ab78nf3ad8ly49zfyd3igw3f2n5q7fz4-source b/.direnv/flake-inputs/ab78nf3ad8ly49zfyd3igw3f2n5q7fz4-source
deleted file mode 120000
index 7887e65..0000000
--- a/.direnv/flake-inputs/ab78nf3ad8ly49zfyd3igw3f2n5q7fz4-source
+++ /dev/null
@@ -1 +0,0 @@
-/nix/store/ab78nf3ad8ly49zfyd3igw3f2n5q7fz4-source
\ No newline at end of file
diff --git a/.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source b/.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
deleted file mode 120000
index f17959f..0000000
--- a/.direnv/flake-inputs/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
+++ /dev/null
@@ -1 +0,0 @@
-/nix/store/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source
\ No newline at end of file
diff --git a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
deleted file mode 120000
index 8f05fbc..0000000
--- a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa
+++ /dev/null
@@ -1 +0,0 @@
-/nix/store/3zv4qkyn3yqzksv0kbrbqy73yfpqi152-nix-shell-env
\ No newline at end of file
diff --git a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc b/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
deleted file mode 100644
index 646bb54..0000000
--- a/.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
+++ /dev/null
@@ -1,2055 +0,0 @@
-unset shellHook
-PATH=${PATH:-}
-nix_saved_PATH="$PATH"
-XDG_DATA_DIRS=${XDG_DATA_DIRS:-}
-nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS"
-AR='ar'
-export AR
-AR_FOR_TARGET='ar'
-export AR_FOR_TARGET
-AS='as'
-export AS
-AS_FOR_TARGET='as'
-export AS_FOR_TARGET
-BASH='/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin/bash'
-CC='gcc'
-export CC
-CC_FOR_TARGET='gcc'
-export CC_FOR_TARGET
-CONFIG_SHELL='/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin/bash'
-export CONFIG_SHELL
-CXX='g++'
-export CXX
-CXX_FOR_TARGET='g++'
-export CXX_FOR_TARGET
-HOSTTYPE='x86_64'
-HOST_PATH='/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0/bin:/nix/store/9bacph866qhmr2zfib1h49jixq5hhd01-binutils-wrapper-2.43.1/bin:/nix/store/40yym8srkji787nrml52v4v160z41v65-openssl-3.3.2-bin/bin:/nix/store/f1gamyykr0f8n4afy910ass2jx2g9zkv-pkg-config-wrapper-0.29.2/bin:/nix/store/y3swnj6xfbbmjawi524v12j69k9g35ds-cargo-deny-0.16.2/bin:/nix/store/9kw90wqbaj0nz618yy6dar012mpz8ik1-cargo-edit-0.13.0/bin:/nix/store/66kz62g4cd72b44crkqlhsy1p60w9hga-cargo-watch-8.5.3/bin:/nix/store/8ky932dblp2vb2khjyhb92xwsy4ah859-rust-analyzer-2024-11-11/bin:/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02/bin:/nix/store/k48bha2fjqzarg52picsdfwlqx75aqbb-coreutils-9.5/bin:/nix/store/lfhmpajzgfmgl8xrdvp2r9hdi2rf17wy-findutils-4.10.0/bin:/nix/store/xrpvl6c1pyq7zazqnb41kgshmkr85da1-diffutils-3.10/bin:/nix/store/gvivnz7rb2gz1vy7d9mdxgzj9didz7w2-gnused-4.9/bin:/nix/store/14aswfz6pm8zvyyy927xzmi8x4rnvlc8-gnugrep-3.11/bin:/nix/store/45jb5s18799g8day8zjixrvknj4chp6r-gawk-5.3.1/bin:/nix/store/sdljgkhcmlflr785i4jffg1rvm294i1k-gnutar-1.35/bin:/nix/store/pg1n8f8zlwh4q4bsbnm9gwhx7cbix1m6-gzip-1.13/bin:/nix/store/y59bxw99pbld247dznzv352cqdhlybqi-bzip2-1.0.8-bin/bin:/nix/store/a08385589ajv3ahmp81nml9bh5dsi55n-gnumake-4.4.1/bin:/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin:/nix/store/0knrdpnzi5s4igcvzw8yhkj8daq84a2v-patch-2.7.6/bin:/nix/store/g6rf9zyrz8hrgz4r7sd2hab3j1afxdkr-xz-5.6.3-bin/bin:/nix/store/83jpg0nha0gp1pggdvsk7zh6wn5lgm00-file-5.45/bin'
-export HOST_PATH
-IFS='
-'
-IN_NIX_SHELL='impure'
-export IN_NIX_SHELL
-LD='ld'
-export LD
-LD_FOR_TARGET='ld'
-export LD_FOR_TARGET
-LINENO='76'
-MACHTYPE='x86_64-pc-linux-gnu'
-NIX_BINTOOLS='/nix/store/9bacph866qhmr2zfib1h49jixq5hhd01-binutils-wrapper-2.43.1'
-export NIX_BINTOOLS
-NIX_BINTOOLS_FOR_TARGET='/nix/store/9bacph866qhmr2zfib1h49jixq5hhd01-binutils-wrapper-2.43.1'
-export NIX_BINTOOLS_FOR_TARGET
-NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
-export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
-NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1'
-export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu
-NIX_BUILD_CORES='8'
-export NIX_BUILD_CORES
-NIX_CC='/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0'
-export NIX_CC
-NIX_CC_FOR_TARGET='/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0'
-export NIX_CC_FOR_TARGET
-NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
-export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
-NIX_CC_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1'
-export NIX_CC_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu
-NIX_CFLAGS_COMPILE=' -frandom-seed=3zv4qkyn3y -isystem /nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev/include -isystem /nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev/include -isystem /nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev/include -isystem /nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev/include'
-export NIX_CFLAGS_COMPILE
-NIX_CFLAGS_COMPILE_FOR_TARGET=' -isystem /nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev/include'
-export NIX_CFLAGS_COMPILE_FOR_TARGET
-NIX_ENFORCE_NO_NATIVE='1'
-export NIX_ENFORCE_NO_NATIVE
-NIX_HARDENING_ENABLE='bindnow format fortify fortify3 pic relro stackprotector strictoverflow zerocallusedregs'
-export NIX_HARDENING_ENABLE
-NIX_LDFLAGS='-rpath /home/spectre/code/aocrust/outputs/out/lib -L/nix/store/5dlhinba4wbr5ijy0vcmyzh4i678z94w-openssl-3.3.2/lib -L/nix/store/5dlhinba4wbr5ijy0vcmyzh4i678z94w-openssl-3.3.2/lib -L/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02/lib -L/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02/lib -L/nix/store/5dlhinba4wbr5ijy0vcmyzh4i678z94w-openssl-3.3.2/lib -L/nix/store/5dlhinba4wbr5ijy0vcmyzh4i678z94w-openssl-3.3.2/lib -L/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02/lib -L/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02/lib'
-export NIX_LDFLAGS
-NIX_LDFLAGS_FOR_TARGET=' -L/nix/store/5dlhinba4wbr5ijy0vcmyzh4i678z94w-openssl-3.3.2/lib -L/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02/lib'
-export NIX_LDFLAGS_FOR_TARGET
-NIX_NO_SELF_RPATH='1'
-NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu='1'
-export NIX_PKG_CONFIG_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu
-NIX_STORE='/nix/store'
-export NIX_STORE
-NM='nm'
-export NM
-NM_FOR_TARGET='nm'
-export NM_FOR_TARGET
-OBJCOPY='objcopy'
-export OBJCOPY
-OBJCOPY_FOR_TARGET='objcopy'
-export OBJCOPY_FOR_TARGET
-OBJDUMP='objdump'
-export OBJDUMP
-OBJDUMP_FOR_TARGET='objdump'
-export OBJDUMP_FOR_TARGET
-OLDPWD=''
-export OLDPWD
-OPTERR='1'
-OSTYPE='linux-gnu'
-PATH='/nix/store/xjlvb8x7z3f5rxxswa3c6ghay74a58jm-patchelf-0.15.0/bin:/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0/bin:/nix/store/xzfmarrq8x8s4ivpya24rrndqsq2ndiz-gcc-13.3.0/bin:/nix/store/26dy2y29fhissya64ygahwpidpvs3bm3-glibc-2.40-36-bin/bin:/nix/store/k48bha2fjqzarg52picsdfwlqx75aqbb-coreutils-9.5/bin:/nix/store/9bacph866qhmr2zfib1h49jixq5hhd01-binutils-wrapper-2.43.1/bin:/nix/store/va7kw1i822h95im4jacci19v0cqajfyf-binutils-2.43.1/bin:/nix/store/40yym8srkji787nrml52v4v160z41v65-openssl-3.3.2-bin/bin:/nix/store/f1gamyykr0f8n4afy910ass2jx2g9zkv-pkg-config-wrapper-0.29.2/bin:/nix/store/y3swnj6xfbbmjawi524v12j69k9g35ds-cargo-deny-0.16.2/bin:/nix/store/9kw90wqbaj0nz618yy6dar012mpz8ik1-cargo-edit-0.13.0/bin:/nix/store/66kz62g4cd72b44crkqlhsy1p60w9hga-cargo-watch-8.5.3/bin:/nix/store/8ky932dblp2vb2khjyhb92xwsy4ah859-rust-analyzer-2024-11-11/bin:/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02/bin:/nix/store/k48bha2fjqzarg52picsdfwlqx75aqbb-coreutils-9.5/bin:/nix/store/lfhmpajzgfmgl8xrdvp2r9hdi2rf17wy-findutils-4.10.0/bin:/nix/store/xrpvl6c1pyq7zazqnb41kgshmkr85da1-diffutils-3.10/bin:/nix/store/gvivnz7rb2gz1vy7d9mdxgzj9didz7w2-gnused-4.9/bin:/nix/store/14aswfz6pm8zvyyy927xzmi8x4rnvlc8-gnugrep-3.11/bin:/nix/store/45jb5s18799g8day8zjixrvknj4chp6r-gawk-5.3.1/bin:/nix/store/sdljgkhcmlflr785i4jffg1rvm294i1k-gnutar-1.35/bin:/nix/store/pg1n8f8zlwh4q4bsbnm9gwhx7cbix1m6-gzip-1.13/bin:/nix/store/y59bxw99pbld247dznzv352cqdhlybqi-bzip2-1.0.8-bin/bin:/nix/store/a08385589ajv3ahmp81nml9bh5dsi55n-gnumake-4.4.1/bin:/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin:/nix/store/0knrdpnzi5s4igcvzw8yhkj8daq84a2v-patch-2.7.6/bin:/nix/store/g6rf9zyrz8hrgz4r7sd2hab3j1afxdkr-xz-5.6.3-bin/bin:/nix/store/83jpg0nha0gp1pggdvsk7zh6wn5lgm00-file-5.45/bin'
-export PATH
-PKG_CONFIG_FOR_TARGET='pkg-config'
-export PKG_CONFIG_FOR_TARGET
-PKG_CONFIG_PATH_FOR_TARGET='/nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev/lib/pkgconfig'
-export PKG_CONFIG_PATH_FOR_TARGET
-PS4='+ '
-RANLIB='ranlib'
-export RANLIB
-RANLIB_FOR_TARGET='ranlib'
-export RANLIB_FOR_TARGET
-READELF='readelf'
-export READELF
-READELF_FOR_TARGET='readelf'
-export READELF_FOR_TARGET
-SIZE='size'
-export SIZE
-SIZE_FOR_TARGET='size'
-export SIZE_FOR_TARGET
-SOURCE_DATE_EPOCH='315532800'
-export SOURCE_DATE_EPOCH
-STRINGS='strings'
-export STRINGS
-STRINGS_FOR_TARGET='strings'
-export STRINGS_FOR_TARGET
-STRIP='strip'
-export STRIP
-STRIP_FOR_TARGET='strip'
-export STRIP_FOR_TARGET
-XDG_DATA_DIRS='/nix/store/xjlvb8x7z3f5rxxswa3c6ghay74a58jm-patchelf-0.15.0/share'
-export XDG_DATA_DIRS
-__structuredAttrs=''
-export __structuredAttrs
-_substituteStream_has_warned_replace_deprecation='false'
-buildInputs='/nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev /nix/store/f1gamyykr0f8n4afy910ass2jx2g9zkv-pkg-config-wrapper-0.29.2 /nix/store/y3swnj6xfbbmjawi524v12j69k9g35ds-cargo-deny-0.16.2 /nix/store/9kw90wqbaj0nz618yy6dar012mpz8ik1-cargo-edit-0.13.0 /nix/store/66kz62g4cd72b44crkqlhsy1p60w9hga-cargo-watch-8.5.3 /nix/store/8ky932dblp2vb2khjyhb92xwsy4ah859-rust-analyzer-2024-11-11 /nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02'
-export buildInputs
-buildPhase='{ echo "------------------------------------------------------------";
- echo " WARNING: the existence of this path is not guaranteed.";
- echo " It is an internal implementation detail for pkgs.mkShell.";
- echo "------------------------------------------------------------";
- echo;
- # Record all build inputs as runtime dependencies
- export;
-} >> "$out"
-'
-export buildPhase
-builder='/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin/bash'
-export builder
-cmakeFlags=''
-export cmakeFlags
-configureFlags=''
-export configureFlags
-defaultBuildInputs=''
-defaultNativeBuildInputs='/nix/store/xjlvb8x7z3f5rxxswa3c6ghay74a58jm-patchelf-0.15.0 /nix/store/sjdccq7ywcpfjnmisl0ah60b7rg1cjpf-update-autotools-gnu-config-scripts-hook /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh /nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh /nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0'
-depsBuildBuild=''
-export depsBuildBuild
-depsBuildBuildPropagated=''
-export depsBuildBuildPropagated
-depsBuildTarget=''
-export depsBuildTarget
-depsBuildTargetPropagated=''
-export depsBuildTargetPropagated
-depsHostHost=''
-export depsHostHost
-depsHostHostPropagated=''
-export depsHostHostPropagated
-depsTargetTarget=''
-export depsTargetTarget
-depsTargetTargetPropagated=''
-export depsTargetTargetPropagated
-doCheck=''
-export doCheck
-doInstallCheck=''
-export doInstallCheck
-dontAddDisableDepTrack='1'
-export dontAddDisableDepTrack
-declare -a envBuildBuildHooks=()
-declare -a envBuildHostHooks=()
-declare -a envBuildTargetHooks=()
-declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
-declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
-declare -a envTargetTargetHooks=('pkgConfigWrapper_addPkgConfigPath' 'ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
-declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' )
-guess='8'
-initialPath='/nix/store/k48bha2fjqzarg52picsdfwlqx75aqbb-coreutils-9.5 /nix/store/lfhmpajzgfmgl8xrdvp2r9hdi2rf17wy-findutils-4.10.0 /nix/store/xrpvl6c1pyq7zazqnb41kgshmkr85da1-diffutils-3.10 /nix/store/gvivnz7rb2gz1vy7d9mdxgzj9didz7w2-gnused-4.9 /nix/store/14aswfz6pm8zvyyy927xzmi8x4rnvlc8-gnugrep-3.11 /nix/store/45jb5s18799g8day8zjixrvknj4chp6r-gawk-5.3.1 /nix/store/sdljgkhcmlflr785i4jffg1rvm294i1k-gnutar-1.35 /nix/store/pg1n8f8zlwh4q4bsbnm9gwhx7cbix1m6-gzip-1.13 /nix/store/y59bxw99pbld247dznzv352cqdhlybqi-bzip2-1.0.8-bin /nix/store/a08385589ajv3ahmp81nml9bh5dsi55n-gnumake-4.4.1 /nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37 /nix/store/0knrdpnzi5s4igcvzw8yhkj8daq84a2v-patch-2.7.6 /nix/store/g6rf9zyrz8hrgz4r7sd2hab3j1afxdkr-xz-5.6.3-bin /nix/store/83jpg0nha0gp1pggdvsk7zh6wn5lgm00-file-5.45'
-mesonFlags=''
-export mesonFlags
-name='nix-shell-env'
-export name
-nativeBuildInputs=''
-export nativeBuildInputs
-out='/home/spectre/code/aocrust/outputs/out'
-export out
-outputBin='out'
-outputDev='out'
-outputDevdoc='REMOVE'
-outputDevman='out'
-outputDoc='out'
-outputInclude='out'
-outputInfo='out'
-outputLib='out'
-outputMan='out'
-outputs='out'
-export outputs
-patches=''
-export patches
-phases='buildPhase'
-export phases
-pkg='/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0'
-declare -a pkgsBuildBuild=()
-declare -a pkgsBuildHost=('/nix/store/xjlvb8x7z3f5rxxswa3c6ghay74a58jm-patchelf-0.15.0' '/nix/store/sjdccq7ywcpfjnmisl0ah60b7rg1cjpf-update-autotools-gnu-config-scripts-hook' '/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh' '/nix/store/12lvf0c7xric9cny7slvf9cmhypl1p67-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/aazf105snicrlvyzzbdj85sx4179rpfp-set-source-date-epoch-to-latest.sh' '/nix/store/gps9qrh99j7g02840wv5x78ykmz30byp-strip.sh' '/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0' '/nix/store/9bacph866qhmr2zfib1h49jixq5hhd01-binutils-wrapper-2.43.1' )
-declare -a pkgsBuildTarget=()
-declare -a pkgsHostHost=('/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0' '/nix/store/9bacph866qhmr2zfib1h49jixq5hhd01-binutils-wrapper-2.43.1' )
-declare -a pkgsHostTarget=('/nix/store/4r4ig3y8xm9zwvra4m3kimn133m24dnv-openssl-3.3.2-dev' '/nix/store/40yym8srkji787nrml52v4v160z41v65-openssl-3.3.2-bin' '/nix/store/5dlhinba4wbr5ijy0vcmyzh4i678z94w-openssl-3.3.2' '/nix/store/f1gamyykr0f8n4afy910ass2jx2g9zkv-pkg-config-wrapper-0.29.2' '/nix/store/y3swnj6xfbbmjawi524v12j69k9g35ds-cargo-deny-0.16.2' '/nix/store/9kw90wqbaj0nz618yy6dar012mpz8ik1-cargo-edit-0.13.0' '/nix/store/66kz62g4cd72b44crkqlhsy1p60w9hga-cargo-watch-8.5.3' '/nix/store/8ky932dblp2vb2khjyhb92xwsy4ah859-rust-analyzer-2024-11-11' '/nix/store/nlrv3m4vd69lw8z6xbwi4yg7z7fqpcka-rust-default-1.85.0-nightly-2024-12-02' '/nix/store/3ix5h74n7ar9950vwzp4dxmil70pmx0k-gcc-wrapper-13.3.0' '/nix/store/9bacph866qhmr2zfib1h49jixq5hhd01-binutils-wrapper-2.43.1' )
-declare -a pkgsTargetTarget=()
-declare -a postFixupHooks=('_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' )
-declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' )
-declare -a preConfigureHooks=('_multioutConfig' )
-preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase'
-declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' )
-preferLocalBuild='1'
-export preferLocalBuild
-prefix='/home/spectre/code/aocrust/outputs/out'
-declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' )
-propagatedBuildInputs=''
-export propagatedBuildInputs
-declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' )
-propagatedNativeBuildInputs=''
-export propagatedNativeBuildInputs
-declare -a propagatedTargetDepFiles=('propagated-target-target-deps' )
-shell='/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin/bash'
-export shell
-shellHook=''
-export shellHook
-stdenv='/nix/store/gw0swsnbfk9l8d1il70psm8b3r5m33jv-stdenv-linux'
-export stdenv
-strictDeps=''
-export strictDeps
-system='x86_64-linux'
-export system
-declare -a unpackCmdHooks=('_defaultUnpack' )
-_activatePkgs ()
-{
-
- local hostOffset targetOffset;
- local pkg;
- for hostOffset in "${allPlatOffsets[@]}";
- do
- local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}";
- for targetOffset in "${allPlatOffsets[@]}";
- do
- (( hostOffset <= targetOffset )) || continue;
- local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]";
- local pkgsSlice="${!pkgsRef}[@]";
- for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
- do
- activatePackage "$pkg" "$hostOffset" "$targetOffset";
- done;
- done;
- done
-}
-_addRpathPrefix ()
-{
-
- if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then
- export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}";
- fi
-}
-_addToEnv ()
-{
-
- local depHostOffset depTargetOffset;
- local pkg;
- for depHostOffset in "${allPlatOffsets[@]}";
- do
- local hookVar="${pkgHookVarVars[depHostOffset + 1]}";
- local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}";
- for depTargetOffset in "${allPlatOffsets[@]}";
- do
- (( depHostOffset <= depTargetOffset )) || continue;
- local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]";
- if [[ -z "${strictDeps-}" ]]; then
- local visitedPkgs="";
- for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}";
- do
- if [[ "$visitedPkgs" = *"$pkg"* ]]; then
- continue;
- fi;
- runHook "${!hookRef}" "$pkg";
- visitedPkgs+=" $pkg";
- done;
- else
- local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]";
- local pkgsSlice="${!pkgsRef}[@]";
- for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
- do
- runHook "${!hookRef}" "$pkg";
- done;
- fi;
- done;
- done
-}
-_allFlags ()
-{
-
- export system pname name version;
- while IFS='' read -r varName; do
- nixTalkativeLog "@${varName}@ -> ${!varName}";
- args+=("--subst-var" "$varName");
- done < <(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }')
-}
-_assignFirst ()
-{
-
- local varName="$1";
- local _var;
- local REMOVE=REMOVE;
- shift;
- for _var in "$@";
- do
- if [ -n "${!_var-}" ]; then
- eval "${varName}"="${_var}";
- return;
- fi;
- done;
- echo;
- echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}.";
- echo " The following variables were all unset or empty:";
- echo " $*";
- if [ -z "${out:-}" ]; then
- echo ' If you do not want an "out" output in your derivation, make sure to define';
- echo ' the other specific required outputs. This can be achieved by picking one';
- echo " of the above as an output.";
- echo ' You do not have to remove "out" if you want to have a different default';
- echo ' output, because the first output is taken as a default.';
- echo;
- fi;
- return 1
-}
-_callImplicitHook ()
-{
-
- local def="$1";
- local hookName="$2";
- if declare -F "$hookName" > /dev/null; then
- nixTalkativeLog "calling implicit '$hookName' function hook";
- "$hookName";
- else
- if type -p "$hookName" > /dev/null; then
- nixTalkativeLog "sourcing implicit '$hookName' script hook";
- source "$hookName";
- else
- if [ -n "${!hookName:-}" ]; then
- nixTalkativeLog "evaling implicit '$hookName' string hook";
- eval "${!hookName}";
- else
- return "$def";
- fi;
- fi;
- fi
-}
-_defaultUnpack ()
-{
-
- local fn="$1";
- local destination;
- if [ -d "$fn" ]; then
- destination="$(stripHash "$fn")";
- if [ -e "$destination" ]; then
- echo "Cannot copy $fn to $destination: destination already exists!";
- echo "Did you specify two \"srcs\" with the same \"name\"?";
- return 1;
- fi;
- cp -pr --reflink=auto -- "$fn" "$destination";
- else
- case "$fn" in
- *.tar.xz | *.tar.lzma | *.txz)
- ( XZ_OPT="--threads=$NIX_BUILD_CORES" xz -d < "$fn";
- true ) | tar xf - --mode=+w --warning=no-timestamp
- ;;
- *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz)
- tar xf "$fn" --mode=+w --warning=no-timestamp
- ;;
- *)
- return 1
- ;;
- esac;
- fi
-}
-_doStrip ()
-{
-
- local -ra flags=(dontStripHost dontStripTarget);
- local -ra debugDirs=(stripDebugList stripDebugListTarget);
- local -ra allDirs=(stripAllList stripAllListTarget);
- local -ra stripCmds=(STRIP STRIP_FOR_TARGET);
- local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET);
- stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin};
- stripDebugListTarget=${stripDebugListTarget[*]:-};
- stripAllList=${stripAllList[*]:-};
- stripAllListTarget=${stripAllListTarget[*]:-};
- local i;
- for i in ${!stripCmds[@]};
- do
- local -n flag="${flags[$i]}";
- local -n debugDirList="${debugDirs[$i]}";
- local -n allDirList="${allDirs[$i]}";
- local -n stripCmd="${stripCmds[$i]}";
- local -n ranlibCmd="${ranlibCmds[$i]}";
- if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then
- continue;
- fi;
- stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}";
- stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}";
- done
-}
-_eval ()
-{
-
- if declare -F "$1" > /dev/null 2>&1; then
- "$@";
- else
- eval "$1";
- fi
-}
-_logHook ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]]; then
- return;
- fi;
- local hookKind="$1";
- local hookExpr="$2";
- shift 2;
- if declare -F "$hookExpr" > /dev/null 2>&1; then
- nixTalkativeLog "calling '$hookKind' function hook '$hookExpr'" "$@";
- else
- if type -p "$hookExpr" > /dev/null; then
- nixTalkativeLog "sourcing '$hookKind' script hook '$hookExpr'";
- else
- if [[ "$hookExpr" != "_callImplicitHook"* ]]; then
- local exprToOutput;
- if [[ ${NIX_DEBUG:-0} -ge 5 ]]; then
- exprToOutput="$hookExpr";
- else
- local hookExprLine;
- while IFS= read -r hookExprLine; do
- hookExprLine="${hookExprLine#"${hookExprLine%%[![:space:]]*}"}";
- if [[ -n "$hookExprLine" ]]; then
- exprToOutput+="$hookExprLine\\n ";
- fi;
- done <<< "$hookExpr";
- exprToOutput="${exprToOutput%%\\n }";
- fi;
- nixTalkativeLog "evaling '$hookKind' string hook '$exprToOutput'";
- fi;
- fi;
- fi
-}
-_makeSymlinksRelative ()
-{
-
- local symlinkTarget;
- if [ "${dontRewriteSymlinks-}" ] || [ ! -e "$prefix" ]; then
- return;
- fi;
- while IFS= read -r -d '' f; do
- symlinkTarget=$(readlink "$f");
- if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then
- continue;
- fi;
- if [ ! -e "$symlinkTarget" ]; then
- echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)";
- fi;
- echo "rewriting symlink $f to be relative to $prefix";
- ln -snrf "$symlinkTarget" "$f";
- done < <(find $prefix -type l -print0)
-}
-_makeSymlinksRelativeInAllOutputs ()
-{
-
- local output;
- for output in $(getAllOutputNames);
- do
- prefix="${!output}" _makeSymlinksRelative;
- done
-}
-_moveLib64 ()
-{
-
- if [ "${dontMoveLib64-}" = 1 ]; then
- return;
- fi;
- if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then
- return;
- fi;
- echo "moving $prefix/lib64/* to $prefix/lib";
- mkdir -p $prefix/lib;
- shopt -s dotglob;
- for i in $prefix/lib64/*;
- do
- mv --no-clobber "$i" $prefix/lib;
- done;
- shopt -u dotglob;
- rmdir $prefix/lib64;
- ln -s lib $prefix/lib64
-}
-_moveSbin ()
-{
-
- if [ "${dontMoveSbin-}" = 1 ]; then
- return;
- fi;
- if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then
- return;
- fi;
- echo "moving $prefix/sbin/* to $prefix/bin";
- mkdir -p $prefix/bin;
- shopt -s dotglob;
- for i in $prefix/sbin/*;
- do
- mv "$i" $prefix/bin;
- done;
- shopt -u dotglob;
- rmdir $prefix/sbin;
- ln -s bin $prefix/sbin
-}
-_moveSystemdUserUnits ()
-{
-
- if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then
- return;
- fi;
- if [ ! -e "${prefix:?}/lib/systemd/user" ]; then
- return;
- fi;
- local source="$prefix/lib/systemd/user";
- local target="$prefix/share/systemd/user";
- echo "moving $source/* to $target";
- mkdir -p "$target";
- ( shopt -s dotglob;
- for i in "$source"/*;
- do
- mv "$i" "$target";
- done );
- rmdir "$source";
- ln -s "$target" "$source"
-}
-_moveToShare ()
-{
-
- if [ -n "$__structuredAttrs" ]; then
- if [ -z "${forceShare-}" ]; then
- forceShare=(man doc info);
- fi;
- else
- forceShare=(${forceShare:-man doc info});
- fi;
- if [[ -z "$out" ]]; then
- return;
- fi;
- for d in "${forceShare[@]}";
- do
- if [ -d "$out/$d" ]; then
- if [ -d "$out/share/$d" ]; then
- echo "both $d/ and share/$d/ exist!";
- else
- echo "moving $out/$d to $out/share/$d";
- mkdir -p $out/share;
- mv $out/$d $out/share/;
- fi;
- fi;
- done
-}
-_multioutConfig ()
-{
-
- if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then
- return;
- fi;
- if [ -z "${shareDocName:-}" ]; then
- local confScript="${configureScript:-}";
- if [ -z "$confScript" ] && [ -x ./configure ]; then
- confScript=./configure;
- fi;
- if [ -f "$confScript" ]; then
- local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")";
- fi;
- if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then
- shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')";
- fi;
- fi;
- prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --oldincludedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale;
- prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal
-}
-_multioutDevs ()
-{
-
- if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then
- return;
- fi;
- moveToOutput include "${!outputInclude}";
- moveToOutput lib/pkgconfig "${!outputDev}";
- moveToOutput share/pkgconfig "${!outputDev}";
- moveToOutput lib/cmake "${!outputDev}";
- moveToOutput share/aclocal "${!outputDev}";
- for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc;
- do
- echo "Patching '$f' includedir to output ${!outputInclude}";
- sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f";
- done
-}
-_multioutDocs ()
-{
-
- local REMOVE=REMOVE;
- moveToOutput share/info "${!outputInfo}";
- moveToOutput share/doc "${!outputDoc}";
- moveToOutput share/gtk-doc "${!outputDevdoc}";
- moveToOutput share/devhelp/books "${!outputDevdoc}";
- moveToOutput share/man "${!outputMan}";
- moveToOutput share/man/man3 "${!outputDevman}"
-}
-_multioutPropagateDev ()
-{
-
- if [ "$(getAllOutputNames)" = "out" ]; then
- return;
- fi;
- local outputFirst;
- for outputFirst in $(getAllOutputNames);
- do
- break;
- done;
- local propagaterOutput="$outputDev";
- if [ -z "$propagaterOutput" ]; then
- propagaterOutput="$outputFirst";
- fi;
- if [ -z "${propagatedBuildOutputs+1}" ]; then
- local po_dirty="$outputBin $outputInclude $outputLib";
- set +o pipefail;
- propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `;
- set -o pipefail;
- fi;
- if [ -z "$propagatedBuildOutputs" ]; then
- return;
- fi;
- mkdir -p "${!propagaterOutput}"/nix-support;
- for output in $propagatedBuildOutputs;
- do
- echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs;
- done
-}
-_overrideFirst ()
-{
-
- if [ -z "${!1-}" ]; then
- _assignFirst "$@";
- fi
-}
-_pruneLibtoolFiles ()
-{
-
- if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then
- return;
- fi;
- find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \;
-}
-_updateSourceDateEpochFromSourceRoot ()
-{
-
- if [ -n "$sourceRoot" ]; then
- updateSourceDateEpoch "$sourceRoot";
- fi
-}
-activatePackage ()
-{
-
- local pkg="$1";
- local -r hostOffset="$2";
- local -r targetOffset="$3";
- (( hostOffset <= targetOffset )) || exit 1;
- if [ -f "$pkg" ]; then
- nixTalkativeLog "sourcing setup hook '$pkg'";
- source "$pkg";
- fi;
- if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then
- addToSearchPath _PATH "$pkg/bin";
- fi;
- if (( hostOffset <= -1 )); then
- addToSearchPath _XDG_DATA_DIRS "$pkg/share";
- fi;
- if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then
- addToSearchPath _HOST_PATH "$pkg/bin";
- fi;
- if [[ -f "$pkg/nix-support/setup-hook" ]]; then
- nixTalkativeLog "sourcing setup hook '$pkg/nix-support/setup-hook'";
- source "$pkg/nix-support/setup-hook";
- fi
-}
-addEnvHooks ()
-{
-
- local depHostOffset="$1";
- shift;
- local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]";
- local pkgHookVar;
- for pkgHookVar in "${!pkgHookVarsSlice}";
- do
- eval "${pkgHookVar}s"'+=("$@")';
- done
-}
-addToSearchPath ()
-{
-
- addToSearchPathWithCustomDelimiter ":" "$@"
-}
-addToSearchPathWithCustomDelimiter ()
-{
-
- local delimiter="$1";
- local varName="$2";
- local dir="$3";
- if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then
- export "${varName}=${!varName:+${!varName}${delimiter}}${dir}";
- fi
-}
-appendToVar ()
-{
-
- local -n nameref="$1";
- local useArray type;
- if [ -n "$__structuredAttrs" ]; then
- useArray=true;
- else
- useArray=false;
- fi;
- if type=$(declare -p "$1" 2> /dev/null); then
- case "${type#* }" in
- -A*)
- echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2;
- return 1
- ;;
- -a*)
- useArray=true
- ;;
- *)
- useArray=false
- ;;
- esac;
- fi;
- shift;
- if $useArray; then
- nameref=(${nameref+"${nameref[@]}"} "$@");
- else
- nameref="${nameref-} $*";
- fi
-}
-auditTmpdir ()
-{
-
- local dir="$1";
- [ -e "$dir" ] || return 0;
- echo "checking for references to $TMPDIR/ in $dir...";
- local i;
- find "$dir" -type f -print0 | while IFS= read -r -d '' i; do
- if [[ "$i" =~ .build-id ]]; then
- continue;
- fi;
- if isELF "$i"; then
- if {
- printf :;
- patchelf --print-rpath "$i"
- } | grep -q -F ":$TMPDIR/"; then
- echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/";
- exit 1;
- fi;
- fi;
- if isScript "$i"; then
- if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then
- if grep -q -F "$TMPDIR/" "$i"; then
- echo "wrapper script $i contains a forbidden reference to $TMPDIR/";
- exit 1;
- fi;
- fi;
- fi;
- done
-}
-bintoolsWrapper_addLDVars ()
-{
-
- local role_post;
- getHostRoleEnvHook;
- if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then
- export NIX_LDFLAGS${role_post}+=" -L$1/lib64";
- fi;
- if [[ -d "$1/lib" ]]; then
- local -a glob=($1/lib/lib*);
- if [ "${#glob[*]}" -gt 0 ]; then
- export NIX_LDFLAGS${role_post}+=" -L$1/lib";
- fi;
- fi
-}
-buildPhase ()
-{
-
- runHook preBuild;
- if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then
- echo "no Makefile or custom buildPhase, doing nothing";
- else
- foundMakefile=1;
- local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
- concatTo flagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray;
- echoCmd 'build flags' "${flagsArray[@]}";
- make ${makefile:+-f $makefile} "${flagsArray[@]}";
- unset flagsArray;
- fi;
- runHook postBuild
-}
-ccWrapper_addCVars ()
-{
-
- local role_post;
- getHostRoleEnvHook;
- if [ -d "$1/include" ]; then
- export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include";
- fi;
- if [ -d "$1/Library/Frameworks" ]; then
- export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks";
- fi
-}
-checkPhase ()
-{
-
- runHook preCheck;
- if [[ -z "${foundMakefile:-}" ]]; then
- echo "no Makefile or custom checkPhase, doing nothing";
- runHook postCheck;
- return;
- fi;
- if [[ -z "${checkTarget:-}" ]]; then
- if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then
- checkTarget="check";
- else
- if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then
- checkTarget="test";
- fi;
- fi;
- fi;
- if [[ -z "${checkTarget:-}" ]]; then
- echo "no check/test target in ${makefile:-Makefile}, doing nothing";
- else
- local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
- concatTo flagsArray makeFlags makeFlagsArray checkFlags=VERBOSE=y checkFlagsArray checkTarget;
- echoCmd 'check flags' "${flagsArray[@]}";
- make ${makefile:+-f $makefile} "${flagsArray[@]}";
- unset flagsArray;
- fi;
- runHook postCheck
-}
-compressManPages ()
-{
-
- local dir="$1";
- if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then
- return;
- fi;
- echo "gzipping man pages under $dir/share/man/";
- find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do
- if gzip -c -n "$f" > "$f".gz; then
- rm "$f";
- else
- rm "$f".gz;
- fi;
- done;
- find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do
- local target;
- target="$(readlink -f "$f")";
- if [ -f "$target".gz ]; then
- ln -sf "$target".gz "$f".gz && rm "$f";
- fi;
- done
-}
-concatStringsSep ()
-{
-
- local sep="$1";
- local name="$2";
- local type oldifs;
- if type=$(declare -p "$name" 2> /dev/null); then
- local -n nameref="$name";
- case "${type#* }" in
- -A*)
- echo "concatStringsSep(): ERROR: trying to use concatStringsSep on an associative array." 1>&2;
- return 1
- ;;
- -a*)
- local IFS="$sep";
- echo -n "${nameref[*]}"
- ;;
- *)
- echo -n "${nameref// /"${sep}"}"
- ;;
- esac;
- fi
-}
-concatTo ()
-{
-
- local -;
- set -o noglob;
- local -n targetref="$1";
- shift;
- local arg default name type;
- for arg in "$@";
- do
- IFS="=" read -r name default <<< "$arg";
- local -n nameref="$name";
- if [[ -z "${nameref[*]}" && -n "$default" ]]; then
- targetref+=("$default");
- else
- if type=$(declare -p "$name" 2> /dev/null); then
- case "${type#* }" in
- -A*)
- echo "concatTo(): ERROR: trying to use concatTo on an associative array." 1>&2;
- return 1
- ;;
- -a*)
- targetref+=("${nameref[@]}")
- ;;
- *)
- if [[ "$name" = *"Array" ]]; then
- nixErrorLog "concatTo(): $name is not declared as array, treating as a singleton. This will become an error in future";
- targetref+=(${nameref+"${nameref[@]}"});
- else
- targetref+=(${nameref-});
- fi
- ;;
- esac;
- fi;
- fi;
- done
-}
-configurePhase ()
-{
-
- runHook preConfigure;
- : "${configureScript=}";
- if [[ -z "$configureScript" && -x ./configure ]]; then
- configureScript=./configure;
- fi;
- if [ -z "${dontFixLibtool:-}" ]; then
- export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}";
- local i;
- find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do
- echo "fixing libtool script $i";
- fixLibtool "$i";
- done;
- CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX);
- find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;;
- rm -f "$CONFIGURE_MTIME_REFERENCE";
- fi;
- if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then
- prependToVar configureFlags "${prefixKey:---prefix=}$prefix";
- fi;
- if [[ -f "$configureScript" ]]; then
- if [ -z "${dontAddDisableDepTrack:-}" ]; then
- if grep -q dependency-tracking "$configureScript"; then
- prependToVar configureFlags --disable-dependency-tracking;
- fi;
- fi;
- if [ -z "${dontDisableStatic:-}" ]; then
- if grep -q enable-static "$configureScript"; then
- prependToVar configureFlags --disable-static;
- fi;
- fi;
- if [ -z "${dontPatchShebangsInConfigure:-}" ]; then
- patchShebangs --build "$configureScript";
- fi;
- fi;
- if [ -n "$configureScript" ]; then
- local -a flagsArray;
- concatTo flagsArray configureFlags configureFlagsArray;
- echoCmd 'configure flags' "${flagsArray[@]}";
- $configureScript "${flagsArray[@]}";
- unset flagsArray;
- else
- echo "no configure script, doing nothing";
- fi;
- runHook postConfigure
-}
-consumeEntire ()
-{
-
- if IFS='' read -r -d '' "$1"; then
- echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2;
- return 1;
- fi
-}
-distPhase ()
-{
-
- runHook preDist;
- local flagsArray=();
- concatTo flagsArray distFlags distFlagsArray distTarget=dist;
- echo 'dist flags: %q' "${flagsArray[@]}";
- make ${makefile:+-f $makefile} "${flagsArray[@]}";
- if [ "${dontCopyDist:-0}" != 1 ]; then
- mkdir -p "$out/tarballs";
- cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs";
- fi;
- runHook postDist
-}
-dumpVars ()
-{
-
- if [ "${noDumpEnvVars:-0}" != 1 ]; then
- {
- install -m 0600 /dev/null "$NIX_BUILD_TOP/env-vars" && export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars"
- } || true;
- fi
-}
-echoCmd ()
-{
-
- printf "%s:" "$1";
- shift;
- printf ' %q' "$@";
- echo
-}
-exitHandler ()
-{
-
- exitCode="$?";
- set +e;
- if [ -n "${showBuildStats:-}" ]; then
- read -r -d '' -a buildTimes < <(times);
- echo "build times:";
- echo "user time for the shell ${buildTimes[0]}";
- echo "system time for the shell ${buildTimes[1]}";
- echo "user time for all child processes ${buildTimes[2]}";
- echo "system time for all child processes ${buildTimes[3]}";
- fi;
- if (( "$exitCode" != 0 )); then
- runHook failureHook;
- if [ -n "${succeedOnFailure:-}" ]; then
- echo "build failed with exit code $exitCode (ignored)";
- mkdir -p "$out/nix-support";
- printf "%s" "$exitCode" > "$out/nix-support/failed";
- exit 0;
- fi;
- else
- runHook exitHook;
- fi;
- return "$exitCode"
-}
-findInputs ()
-{
-
- local -r pkg="$1";
- local -r hostOffset="$2";
- local -r targetOffset="$3";
- (( hostOffset <= targetOffset )) || exit 1;
- local varVar="${pkgAccumVarVars[hostOffset + 1]}";
- local varRef="$varVar[$((targetOffset - hostOffset))]";
- local var="${!varRef}";
- unset -v varVar varRef;
- local varSlice="$var[*]";
- case "${!varSlice-}" in
- *" $pkg "*)
- return 0
- ;;
- esac;
- unset -v varSlice;
- eval "$var"'+=("$pkg")';
- if ! [ -e "$pkg" ]; then
- echo "build input $pkg does not exist" 1>&2;
- exit 1;
- fi;
- function mapOffset ()
- {
- local -r inputOffset="$1";
- local -n outputOffset="$2";
- if (( inputOffset <= 0 )); then
- outputOffset=$((inputOffset + hostOffset));
- else
- outputOffset=$((inputOffset - 1 + targetOffset));
- fi
- };
- local relHostOffset;
- for relHostOffset in "${allPlatOffsets[@]}";
- do
- local files="${propagatedDepFilesVars[relHostOffset + 1]}";
- local hostOffsetNext;
- mapOffset "$relHostOffset" hostOffsetNext;
- (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
- local relTargetOffset;
- for relTargetOffset in "${allPlatOffsets[@]}";
- do
- (( "$relHostOffset" <= "$relTargetOffset" )) || continue;
- local fileRef="${files}[$relTargetOffset - $relHostOffset]";
- local file="${!fileRef}";
- unset -v fileRef;
- local targetOffsetNext;
- mapOffset "$relTargetOffset" targetOffsetNext;
- (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
- [[ -f "$pkg/nix-support/$file" ]] || continue;
- local pkgNext;
- read -r -d '' pkgNext < "$pkg/nix-support/$file" || true;
- for pkgNext in $pkgNext;
- do
- findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext";
- done;
- done;
- done
-}
-fixLibtool ()
-{
-
- local search_path;
- for flag in $NIX_LDFLAGS;
- do
- case $flag in
- -L*)
- search_path+=" ${flag#-L}"
- ;;
- esac;
- done;
- sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^'
-}
-fixupPhase ()
-{
-
- local output;
- for output in $(getAllOutputNames);
- do
- if [ -e "${!output}" ]; then
- chmod -R u+w,u-s,g-s "${!output}";
- fi;
- done;
- runHook preFixup;
- local output;
- for output in $(getAllOutputNames);
- do
- prefix="${!output}" runHook fixupOutput;
- done;
- recordPropagatedDependencies;
- if [ -n "${setupHook:-}" ]; then
- mkdir -p "${!outputDev}/nix-support";
- substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook";
- fi;
- if [ -n "${setupHooks:-}" ]; then
- mkdir -p "${!outputDev}/nix-support";
- local hook;
- for hook in ${setupHooks[@]};
- do
- local content;
- consumeEntire content < "$hook";
- substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook";
- unset -v content;
- done;
- unset -v hook;
- fi;
- if [ -n "${propagatedUserEnvPkgs:-}" ]; then
- mkdir -p "${!outputBin}/nix-support";
- printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages";
- fi;
- runHook postFixup
-}
-genericBuild ()
-{
-
- export GZIP_NO_TIMESTAMPS=1;
- if [ -f "${buildCommandPath:-}" ]; then
- source "$buildCommandPath";
- return;
- fi;
- if [ -n "${buildCommand:-}" ]; then
- eval "$buildCommand";
- return;
- fi;
- if [ -z "${phases[*]:-}" ]; then
- phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}";
- fi;
- for curPhase in ${phases[*]};
- do
- runPhase "$curPhase";
- done
-}
-getAllOutputNames ()
-{
-
- if [ -n "$__structuredAttrs" ]; then
- echo "${!outputs[*]}";
- else
- echo "$outputs";
- fi
-}
-getHostRole ()
-{
-
- getRole "$hostOffset"
-}
-getHostRoleEnvHook ()
-{
-
- getRole "$depHostOffset"
-}
-getRole ()
-{
-
- case $1 in
- -1)
- role_post='_FOR_BUILD'
- ;;
- 0)
- role_post=''
- ;;
- 1)
- role_post='_FOR_TARGET'
- ;;
- *)
- echo "binutils-wrapper-2.43.1: used as improper sort of dependency" 1>&2;
- return 1
- ;;
- esac
-}
-getTargetRole ()
-{
-
- getRole "$targetOffset"
-}
-getTargetRoleEnvHook ()
-{
-
- getRole "$depTargetOffset"
-}
-getTargetRoleWrapper ()
-{
-
- case $targetOffset in
- -1)
- export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1
- ;;
- 0)
- export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1
- ;;
- 1)
- export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1
- ;;
- *)
- echo "binutils-wrapper-2.43.1: used as improper sort of dependency" 1>&2;
- return 1
- ;;
- esac
-}
-installCheckPhase ()
-{
-
- runHook preInstallCheck;
- if [[ -z "${foundMakefile:-}" ]]; then
- echo "no Makefile or custom installCheckPhase, doing nothing";
- else
- if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then
- echo "no installcheck target in ${makefile:-Makefile}, doing nothing";
- else
- local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
- concatTo flagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray installCheckTarget=installcheck;
- echoCmd 'installcheck flags' "${flagsArray[@]}";
- make ${makefile:+-f $makefile} "${flagsArray[@]}";
- unset flagsArray;
- fi;
- fi;
- runHook postInstallCheck
-}
-installPhase ()
-{
-
- runHook preInstall;
- if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then
- echo "no Makefile or custom installPhase, doing nothing";
- runHook postInstall;
- return;
- else
- foundMakefile=1;
- fi;
- if [ -n "$prefix" ]; then
- mkdir -p "$prefix";
- fi;
- local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL="$SHELL");
- concatTo flagsArray makeFlags makeFlagsArray installFlags installFlagsArray installTargets=install;
- echoCmd 'install flags' "${flagsArray[@]}";
- make ${makefile:+-f $makefile} "${flagsArray[@]}";
- unset flagsArray;
- runHook postInstall
-}
-isELF ()
-{
-
- local fn="$1";
- local fd;
- local magic;
- exec {fd}< "$fn";
- read -r -n 4 -u "$fd" magic;
- exec {fd}>&-;
- if [ "$magic" = 'ELF' ]; then
- return 0;
- else
- return 1;
- fi
-}
-isMachO ()
-{
-
- local fn="$1";
- local fd;
- local magic;
- exec {fd}< "$fn";
- read -r -n 4 -u "$fd" magic;
- exec {fd}>&-;
- if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then
- return 0;
- else
- if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then
- return 0;
- else
- if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then
- return 0;
- else
- return 1;
- fi;
- fi;
- fi
-}
-isScript ()
-{
-
- local fn="$1";
- local fd;
- local magic;
- exec {fd}< "$fn";
- read -r -n 2 -u "$fd" magic;
- exec {fd}>&-;
- if [[ "$magic" =~ \#! ]]; then
- return 0;
- else
- return 1;
- fi
-}
-mapOffset ()
-{
-
- local -r inputOffset="$1";
- local -n outputOffset="$2";
- if (( inputOffset <= 0 )); then
- outputOffset=$((inputOffset + hostOffset));
- else
- outputOffset=$((inputOffset - 1 + targetOffset));
- fi
-}
-moveToOutput ()
-{
-
- local patt="$1";
- local dstOut="$2";
- local output;
- for output in $(getAllOutputNames);
- do
- if [ "${!output}" = "$dstOut" ]; then
- continue;
- fi;
- local srcPath;
- for srcPath in "${!output}"/$patt;
- do
- if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then
- continue;
- fi;
- if [ "$dstOut" = REMOVE ]; then
- echo "Removing $srcPath";
- rm -r "$srcPath";
- else
- local dstPath="$dstOut${srcPath#${!output}}";
- echo "Moving $srcPath to $dstPath";
- if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then
- rmdir "$srcPath" --ignore-fail-on-non-empty;
- if [ -d "$srcPath" ]; then
- mv -t "$dstPath" "$srcPath"/*;
- rmdir "$srcPath";
- fi;
- else
- mkdir -p "$(readlink -m "$dstPath/..")";
- mv "$srcPath" "$dstPath";
- fi;
- fi;
- local srcParent="$(readlink -m "$srcPath/..")";
- if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then
- echo "Removing empty $srcParent/ and (possibly) its parents";
- rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true;
- fi;
- done;
- done
-}
-nixChattyLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 5 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-nixDebugLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 6 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-nixErrorLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 0 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-nixInfoLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 3 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-nixNoticeLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 2 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-nixTalkativeLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 4 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-nixVomitLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 7 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-nixWarnLog ()
-{
-
- if [[ -z ${NIX_LOG_FD-} ]] || [[ ${NIX_DEBUG:-0} -lt 1 ]]; then
- return;
- fi;
- printf "%s\n" "$*" >&"$NIX_LOG_FD"
-}
-patchELF ()
-{
-
- local dir="$1";
- [ -e "$dir" ] || return 0;
- echo "shrinking RPATHs of ELF executables and libraries in $dir";
- local i;
- while IFS= read -r -d '' i; do
- if [[ "$i" =~ .build-id ]]; then
- continue;
- fi;
- if ! isELF "$i"; then
- continue;
- fi;
- echo "shrinking $i";
- patchelf --shrink-rpath "$i" || true;
- done < <(find "$dir" -type f -print0)
-}
-patchPhase ()
-{
-
- runHook prePatch;
- local -a patchesArray;
- concatTo patchesArray patches;
- for i in "${patchesArray[@]}";
- do
- echo "applying patch $i";
- local uncompress=cat;
- case "$i" in
- *.gz)
- uncompress="gzip -d"
- ;;
- *.bz2)
- uncompress="bzip2 -d"
- ;;
- *.xz)
- uncompress="xz -d"
- ;;
- *.lzma)
- uncompress="lzma -d"
- ;;
- esac;
- local -a flagsArray;
- concatTo flagsArray patchFlags=-p1;
- $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}";
- done;
- runHook postPatch
-}
-patchShebangs ()
-{
-
- local pathName;
- local update;
- while [[ $# -gt 0 ]]; do
- case "$1" in
- --host)
- pathName=HOST_PATH;
- shift
- ;;
- --build)
- pathName=PATH;
- shift
- ;;
- --update)
- update=true;
- shift
- ;;
- --)
- shift;
- break
- ;;
- -* | --*)
- echo "Unknown option $1 supplied to patchShebangs" 1>&2;
- return 1
- ;;
- *)
- break
- ;;
- esac;
- done;
- echo "patching script interpreter paths in $@";
- local f;
- local oldPath;
- local newPath;
- local arg0;
- local args;
- local oldInterpreterLine;
- local newInterpreterLine;
- if [[ $# -eq 0 ]]; then
- echo "No arguments supplied to patchShebangs" 1>&2;
- return 0;
- fi;
- local f;
- while IFS= read -r -d '' f; do
- isScript "$f" || continue;
- read -r oldInterpreterLine < "$f" || [ "$oldInterpreterLine" ];
- read -r oldPath arg0 args <<< "${oldInterpreterLine:2}";
- if [[ -z "${pathName:-}" ]]; then
- if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then
- pathName=HOST_PATH;
- else
- pathName=PATH;
- fi;
- fi;
- if [[ "$oldPath" == *"/bin/env" ]]; then
- if [[ $arg0 == "-S" ]]; then
- arg0=${args%% *};
- args=${args#* };
- newPath="$(PATH="${!pathName}" type -P "env" || true)";
- args="-S $(PATH="${!pathName}" type -P "$arg0" || true) $args";
- else
- if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then
- echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2;
- exit 1;
- else
- newPath="$(PATH="${!pathName}" type -P "$arg0" || true)";
- fi;
- fi;
- else
- if [[ -z $oldPath ]]; then
- oldPath="/bin/sh";
- fi;
- newPath="$(PATH="${!pathName}" type -P "$(basename "$oldPath")" || true)";
- args="$arg0 $args";
- fi;
- newInterpreterLine="$newPath $args";
- newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}};
- if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then
- if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then
- echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\"";
- escapedInterpreterLine=${newInterpreterLine//\\/\\\\};
- timestamp=$(stat --printf "%y" "$f");
- sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f";
- touch --date "$timestamp" "$f";
- fi;
- fi;
- done < <(find "$@" -type f -perm -0100 -print0)
-}
-patchShebangsAuto ()
-{
-
- if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then
- if [[ "$output" != out && "$output" = "$outputDev" ]]; then
- patchShebangs --build "$prefix";
- else
- patchShebangs --host "$prefix";
- fi;
- fi
-}
-pkgConfigWrapper_addPkgConfigPath ()
-{
-
- local role_post;
- getHostRoleEnvHook;
- addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/lib/pkgconfig";
- addToSearchPath "PKG_CONFIG_PATH${role_post}" "$1/share/pkgconfig"
-}
-prependToVar ()
-{
-
- local -n nameref="$1";
- local useArray type;
- if [ -n "$__structuredAttrs" ]; then
- useArray=true;
- else
- useArray=false;
- fi;
- if type=$(declare -p "$1" 2> /dev/null); then
- case "${type#* }" in
- -A*)
- echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2;
- return 1
- ;;
- -a*)
- useArray=true
- ;;
- *)
- useArray=false
- ;;
- esac;
- fi;
- shift;
- if $useArray; then
- nameref=("$@" ${nameref+"${nameref[@]}"});
- else
- nameref="$* ${nameref-}";
- fi
-}
-printLines ()
-{
-
- (( "$#" > 0 )) || return 0;
- printf '%s\n' "$@"
-}
-printWords ()
-{
-
- (( "$#" > 0 )) || return 0;
- printf '%s ' "$@"
-}
-recordPropagatedDependencies ()
-{
-
- declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated);
- declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}");
- local propagatedInputsIndex;
- for propagatedInputsIndex in "${!flatVars[@]}";
- do
- local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]";
- local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}";
- [[ -n "${!propagatedInputsSlice}" ]] || continue;
- mkdir -p "${!outputDev}/nix-support";
- printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile";
- done
-}
-runHook ()
-{
-
- local hookName="$1";
- shift;
- local hooksSlice="${hookName%Hook}Hooks[@]";
- local hook;
- for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"};
- do
- _logHook "$hookName" "$hook" "$@";
- _eval "$hook" "$@";
- done;
- return 0
-}
-runOneHook ()
-{
-
- local hookName="$1";
- shift;
- local hooksSlice="${hookName%Hook}Hooks[@]";
- local hook ret=1;
- for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"};
- do
- _logHook "$hookName" "$hook" "$@";
- if _eval "$hook" "$@"; then
- ret=0;
- break;
- fi;
- done;
- return "$ret"
-}
-runPhase ()
-{
-
- local curPhase="$*";
- if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then
- return;
- fi;
- if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then
- return;
- fi;
- showPhaseHeader "$curPhase";
- dumpVars;
- local startTime endTime;
- startTime=$(date +"%s");
- eval "${!curPhase:-$curPhase}";
- endTime=$(date +"%s");
- showPhaseFooter "$curPhase" "$startTime" "$endTime";
- if [ "$curPhase" = unpackPhase ]; then
- [ -n "${sourceRoot:-}" ] && chmod +x -- "${sourceRoot}";
- cd -- "${sourceRoot:-.}";
- fi
-}
-showPhaseFooter ()
-{
-
- local phase="$1";
- local startTime="$2";
- local endTime="$3";
- local delta=$(( endTime - startTime ));
- (( delta < 30 )) && return;
- local H=$((delta/3600));
- local M=$((delta%3600/60));
- local S=$((delta%60));
- echo -n "$phase completed in ";
- (( H > 0 )) && echo -n "$H hours ";
- (( M > 0 )) && echo -n "$M minutes ";
- echo "$S seconds"
-}
-showPhaseHeader ()
-{
-
- local phase="$1";
- echo "Running phase: $phase";
- if [[ -z ${NIX_LOG_FD-} ]]; then
- return;
- fi;
- printf "@nix { \"action\": \"setPhase\", \"phase\": \"%s\" }\n" "$phase" >&"$NIX_LOG_FD"
-}
-stripDirs ()
-{
-
- local cmd="$1";
- local ranlibCmd="$2";
- local paths="$3";
- local stripFlags="$4";
- local excludeFlags=();
- local pathsNew=;
- [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1;
- [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1;
- local pattern;
- if [ -n "${stripExclude:-}" ]; then
- for pattern in "${stripExclude[@]}";
- do
- excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')');
- done;
- fi;
- local p;
- for p in ${paths};
- do
- if [ -e "$prefix/$p" ]; then
- pathsNew="${pathsNew} $prefix/$p";
- fi;
- done;
- paths=${pathsNew};
- if [ -n "${paths}" ]; then
- echo "stripping (with command $cmd and flags $stripFlags) in $paths";
- local striperr;
- striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')";
- find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -printf '%D-%i,%p\0' | sort -t, -k1,1 -u -z | cut -d, -f2- -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?;
- [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 );
- rm "$striperr";
- find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null;
- fi
-}
-stripHash ()
-{
-
- local strippedName casematchOpt=0;
- strippedName="$(basename -- "$1")";
- shopt -q nocasematch && casematchOpt=1;
- shopt -u nocasematch;
- if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then
- echo "${strippedName:33}";
- else
- echo "$strippedName";
- fi;
- if (( casematchOpt )); then
- shopt -s nocasematch;
- fi
-}
-substitute ()
-{
-
- local input="$1";
- local output="$2";
- shift 2;
- if [ ! -f "$input" ]; then
- echo "substitute(): ERROR: file '$input' does not exist" 1>&2;
- return 1;
- fi;
- local content;
- consumeEntire content < "$input";
- if [ -e "$output" ]; then
- chmod +w "$output";
- fi;
- substituteStream content "file '$input'" "$@" > "$output"
-}
-substituteAll ()
-{
-
- local input="$1";
- local output="$2";
- local -a args=();
- _allFlags;
- substitute "$input" "$output" "${args[@]}"
-}
-substituteAllInPlace ()
-{
-
- local fileName="$1";
- shift;
- substituteAll "$fileName" "$fileName" "$@"
-}
-substituteAllStream ()
-{
-
- local -a args=();
- _allFlags;
- substituteStream "$1" "$2" "${args[@]}"
-}
-substituteInPlace ()
-{
-
- local -a fileNames=();
- for arg in "$@";
- do
- if [[ "$arg" = "--"* ]]; then
- break;
- fi;
- fileNames+=("$arg");
- shift;
- done;
- if ! [[ "${#fileNames[@]}" -gt 0 ]]; then
- echo "substituteInPlace called without any files to operate on (files must come before options!)" 1>&2;
- return 1;
- fi;
- for file in "${fileNames[@]}";
- do
- substitute "$file" "$file" "$@";
- done
-}
-substituteStream ()
-{
-
- local var=$1;
- local description=$2;
- shift 2;
- while (( "$#" )); do
- local replace_mode="$1";
- case "$1" in
- --replace)
- if ! "$_substituteStream_has_warned_replace_deprecation"; then
- echo "substituteStream() in derivation $name: WARNING: '--replace' is deprecated, use --replace-{fail,warn,quiet}. ($description)" 1>&2;
- _substituteStream_has_warned_replace_deprecation=true;
- fi;
- replace_mode='--replace-warn'
- ;&
- --replace-quiet | --replace-warn | --replace-fail)
- pattern="$2";
- replacement="$3";
- shift 3;
- local savedvar;
- savedvar="${!var}";
- eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}';
- if [ "$pattern" != "$replacement" ]; then
- if [ "${!var}" == "$savedvar" ]; then
- if [ "$replace_mode" == --replace-warn ]; then
- printf "substituteStream() in derivation $name: WARNING: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2;
- else
- if [ "$replace_mode" == --replace-fail ]; then
- printf "substituteStream() in derivation $name: ERROR: pattern %q doesn't match anything in %s\n" "$pattern" "$description" 1>&2;
- return 1;
- fi;
- fi;
- fi;
- fi
- ;;
- --subst-var)
- local varName="$2";
- shift 2;
- if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then
- echo "substituteStream() in derivation $name: ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2;
- return 1;
- fi;
- if [ -z ${!varName+x} ]; then
- echo "substituteStream() in derivation $name: ERROR: variable \$$varName is unset" 1>&2;
- return 1;
- fi;
- pattern="@$varName@";
- replacement="${!varName}";
- eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'
- ;;
- --subst-var-by)
- pattern="@$2@";
- replacement="$3";
- eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}';
- shift 3
- ;;
- *)
- echo "substituteStream() in derivation $name: ERROR: Invalid command line argument: $1" 1>&2;
- return 1
- ;;
- esac;
- done;
- printf "%s" "${!var}"
-}
-unpackFile ()
-{
-
- curSrc="$1";
- echo "unpacking source archive $curSrc";
- if ! runOneHook unpackCmd "$curSrc"; then
- echo "do not know how to unpack source archive $curSrc";
- exit 1;
- fi
-}
-unpackPhase ()
-{
-
- runHook preUnpack;
- if [ -z "${srcs:-}" ]; then
- if [ -z "${src:-}" ]; then
- echo 'variable $src or $srcs should point to the source';
- exit 1;
- fi;
- srcs="$src";
- fi;
- local -a srcsArray;
- concatTo srcsArray srcs;
- local dirsBefore="";
- for i in *;
- do
- if [ -d "$i" ]; then
- dirsBefore="$dirsBefore $i ";
- fi;
- done;
- for i in "${srcsArray[@]}";
- do
- unpackFile "$i";
- done;
- : "${sourceRoot=}";
- if [ -n "${setSourceRoot:-}" ]; then
- runOneHook setSourceRoot;
- else
- if [ -z "$sourceRoot" ]; then
- for i in *;
- do
- if [ -d "$i" ]; then
- case $dirsBefore in
- *\ $i\ *)
-
- ;;
- *)
- if [ -n "$sourceRoot" ]; then
- echo "unpacker produced multiple directories";
- exit 1;
- fi;
- sourceRoot="$i"
- ;;
- esac;
- fi;
- done;
- fi;
- fi;
- if [ -z "$sourceRoot" ]; then
- echo "unpacker appears to have produced no directories";
- exit 1;
- fi;
- echo "source root is $sourceRoot";
- if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then
- chmod -R u+w -- "$sourceRoot";
- fi;
- runHook postUnpack
-}
-updateAutotoolsGnuConfigScriptsPhase ()
-{
-
- if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then
- return;
- fi;
- for script in config.sub config.guess;
- do
- for f in $(find . -type f -name "$script");
- do
- echo "Updating Autotools / GNU config script to a newer upstream version: $f";
- cp -f "/nix/store/hi0n0389lgyjp7v95q7wmxrf3db448xp-gnu-config-2024-01-01/$script" "$f";
- done;
- done
-}
-updateSourceDateEpoch ()
-{
-
- local path="$1";
- [[ $path == -* ]] && path="./$path";
- local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1));
- local time="${res[0]//\.[0-9]*/}";
- local newestFile="${res[1]}";
- if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then
- echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile";
- export SOURCE_DATE_EPOCH="$time";
- local now="$(date +%s)";
- if [ "$time" -gt $((now - 60)) ]; then
- echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic";
- fi;
- fi
-}
-PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}"
-XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}"
-export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)"
-export TMP="$NIX_BUILD_TOP"
-export TMPDIR="$NIX_BUILD_TOP"
-export TEMP="$NIX_BUILD_TOP"
-export TEMPDIR="$NIX_BUILD_TOP"
-eval "$shellHook"
diff --git a/.envrc b/.envrc
deleted file mode 100644
index 3550a30..0000000
--- a/.envrc
+++ /dev/null
@@ -1 +0,0 @@
-use flake
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/AdventOfCode.iml b/.idea/AdventOfCode.iml
new file mode 100644
index 0000000..4661634
--- /dev/null
+++ b/.idea/AdventOfCode.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..0df2490
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index a100470..7219f43 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,36 +2,19 @@
# It is not intended for manual editing.
version = 3
-[[package]]
-name = "addr2line"
-version = "0.24.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler2"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
-
[[package]]
name = "advent_of_code_rust"
version = "0.1.0"
dependencies = [
"aoc2023",
- "aoc2024",
- "reqwest",
"shared",
]
[[package]]
name = "aho-corasick"
-version = "1.1.3"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
dependencies = [
"memchr",
]
@@ -46,820 +29,38 @@ dependencies = [
"substring",
]
-[[package]]
-name = "aoc2024"
-version = "0.1.0"
-dependencies = [
- "itertools",
- "regex",
- "shared",
- "substring",
-]
-
-[[package]]
-name = "atomic-waker"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
-
[[package]]
name = "autocfg"
-version = "1.4.0"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
-
-[[package]]
-name = "backtrace"
-version = "0.3.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
-dependencies = [
- "addr2line",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
- "windows-targets",
-]
-
-[[package]]
-name = "base64"
-version = "0.22.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-
-[[package]]
-name = "bitflags"
-version = "2.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
-
-[[package]]
-name = "bumpalo"
-version = "3.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
-
-[[package]]
-name = "bytes"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
-
-[[package]]
-name = "cc"
-version = "1.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc"
-dependencies = [
- "shlex",
-]
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "cookie"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
-dependencies = [
- "percent-encoding",
- "time",
- "version_check",
-]
-
-[[package]]
-name = "cookie_store"
-version = "0.21.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9"
-dependencies = [
- "cookie",
- "document-features",
- "idna",
- "log",
- "publicsuffix",
- "serde",
- "serde_derive",
- "serde_json",
- "time",
- "url",
-]
-
-[[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
-
-[[package]]
-name = "deranged"
-version = "0.3.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
-dependencies = [
- "powerfmt",
-]
-
-[[package]]
-name = "displaydoc"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "document-features"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0"
-dependencies = [
- "litrs",
-]
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "either"
-version = "1.13.0"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
-
-[[package]]
-name = "encoding_rs"
-version = "0.8.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "equivalent"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
-
-[[package]]
-name = "errno"
-version = "0.3.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
-dependencies = [
- "libc",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4"
-
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
-[[package]]
-name = "form_urlencoded"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
-dependencies = [
- "percent-encoding",
-]
-
-[[package]]
-name = "futures-channel"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
-dependencies = [
- "futures-core",
- "futures-sink",
-]
-
-[[package]]
-name = "futures-core"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
-
-[[package]]
-name = "futures-io"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
-
-[[package]]
-name = "futures-sink"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
-
-[[package]]
-name = "futures-task"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
-
-[[package]]
-name = "futures-util"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
-dependencies = [
- "futures-core",
- "futures-io",
- "futures-sink",
- "futures-task",
- "memchr",
- "pin-project-lite",
- "pin-utils",
- "slab",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "gimli"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
-
-[[package]]
-name = "h2"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e"
-dependencies = [
- "atomic-waker",
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "http",
- "indexmap",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.15.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
-
-[[package]]
-name = "http"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
-dependencies = [
- "bytes",
- "fnv",
- "itoa",
-]
-
-[[package]]
-name = "http-body"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
-dependencies = [
- "bytes",
- "http",
-]
-
-[[package]]
-name = "http-body-util"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
-dependencies = [
- "bytes",
- "futures-util",
- "http",
- "http-body",
- "pin-project-lite",
-]
-
-[[package]]
-name = "httparse"
-version = "1.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
-
-[[package]]
-name = "hyper"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "httparse",
- "itoa",
- "pin-project-lite",
- "smallvec",
- "tokio",
- "want",
-]
-
-[[package]]
-name = "hyper-rustls"
-version = "0.27.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
-dependencies = [
- "futures-util",
- "http",
- "hyper",
- "hyper-util",
- "rustls",
- "rustls-pki-types",
- "tokio",
- "tokio-rustls",
- "tower-service",
-]
-
-[[package]]
-name = "hyper-tls"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
-dependencies = [
- "bytes",
- "http-body-util",
- "hyper",
- "hyper-util",
- "native-tls",
- "tokio",
- "tokio-native-tls",
- "tower-service",
-]
-
-[[package]]
-name = "hyper-util"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-util",
- "http",
- "http-body",
- "hyper",
- "pin-project-lite",
- "socket2",
- "tokio",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "icu_collections"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
-dependencies = [
- "displaydoc",
- "yoke",
- "zerofrom",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locid"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
-dependencies = [
- "displaydoc",
- "litemap",
- "tinystr",
- "writeable",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locid_transform"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
-dependencies = [
- "displaydoc",
- "icu_locid",
- "icu_locid_transform_data",
- "icu_provider",
- "tinystr",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locid_transform_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
-
-[[package]]
-name = "icu_normalizer"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
-dependencies = [
- "displaydoc",
- "icu_collections",
- "icu_normalizer_data",
- "icu_properties",
- "icu_provider",
- "smallvec",
- "utf16_iter",
- "utf8_iter",
- "write16",
- "zerovec",
-]
-
-[[package]]
-name = "icu_normalizer_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
-
-[[package]]
-name = "icu_properties"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
-dependencies = [
- "displaydoc",
- "icu_collections",
- "icu_locid_transform",
- "icu_properties_data",
- "icu_provider",
- "tinystr",
- "zerovec",
-]
-
-[[package]]
-name = "icu_properties_data"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
-
-[[package]]
-name = "icu_provider"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
-dependencies = [
- "displaydoc",
- "icu_locid",
- "icu_provider_macros",
- "stable_deref_trait",
- "tinystr",
- "writeable",
- "yoke",
- "zerofrom",
- "zerovec",
-]
-
-[[package]]
-name = "icu_provider_macros"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "idna"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
-dependencies = [
- "idna_adapter",
- "smallvec",
- "utf8_iter",
-]
-
-[[package]]
-name = "idna_adapter"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
-dependencies = [
- "icu_normalizer",
- "icu_properties",
-]
-
-[[package]]
-name = "indexmap"
-version = "2.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
-dependencies = [
- "equivalent",
- "hashbrown",
-]
-
-[[package]]
-name = "ipnet"
-version = "2.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "itertools"
-version = "0.12.1"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
dependencies = [
"either",
]
-[[package]]
-name = "itoa"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
-
-[[package]]
-name = "js-sys"
-version = "0.3.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705"
-dependencies = [
- "once_cell",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.167"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
-
-[[package]]
-name = "litemap"
-version = "0.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"
-
-[[package]]
-name = "litrs"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5"
-
-[[package]]
-name = "log"
-version = "0.4.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
-
[[package]]
name = "memchr"
-version = "2.7.4"
+version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
-
-[[package]]
-name = "mime"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-
-[[package]]
-name = "miniz_oxide"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
-dependencies = [
- "adler2",
-]
-
-[[package]]
-name = "mio"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
-dependencies = [
- "libc",
- "wasi",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "native-tls"
-version = "0.2.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466"
-dependencies = [
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework",
- "security-framework-sys",
- "tempfile",
-]
-
-[[package]]
-name = "num-conv"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
-
-[[package]]
-name = "object"
-version = "0.36.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
-
-[[package]]
-name = "openssl"
-version = "0.10.68"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5"
-dependencies = [
- "bitflags",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.104"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
-name = "pkg-config"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
-
-[[package]]
-name = "powerfmt"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "psl-types"
-version = "2.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac"
-
-[[package]]
-name = "publicsuffix"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf"
-dependencies = [
- "idna",
- "psl-types",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
-dependencies = [
- "proc-macro2",
-]
+checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
[[package]]
name = "regex"
-version = "1.11.1"
+version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
dependencies = [
"aho-corasick",
"memchr",
@@ -869,9 +70,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.9"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
dependencies = [
"aho-corasick",
"memchr",
@@ -880,258 +81,14 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.8.5"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
-
-[[package]]
-name = "reqwest"
-version = "0.12.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f"
-dependencies = [
- "base64",
- "bytes",
- "cookie",
- "cookie_store",
- "encoding_rs",
- "futures-channel",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "http-body-util",
- "hyper",
- "hyper-rustls",
- "hyper-tls",
- "hyper-util",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "native-tls",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "rustls-pemfile",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper",
- "system-configuration",
- "tokio",
- "tokio-native-tls",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "windows-registry",
-]
-
-[[package]]
-name = "ring"
-version = "0.17.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
-dependencies = [
- "cc",
- "cfg-if",
- "getrandom",
- "libc",
- "spin",
- "untrusted",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "rustc-demangle"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
-
-[[package]]
-name = "rustix"
-version = "0.38.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6"
-dependencies = [
- "bitflags",
- "errno",
- "libc",
- "linux-raw-sys",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "rustls"
-version = "0.23.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1"
-dependencies = [
- "once_cell",
- "rustls-pki-types",
- "rustls-webpki",
- "subtle",
- "zeroize",
-]
-
-[[package]]
-name = "rustls-pemfile"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
-dependencies = [
- "rustls-pki-types",
-]
-
-[[package]]
-name = "rustls-pki-types"
-version = "1.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
-
-[[package]]
-name = "rustls-webpki"
-version = "0.102.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
-dependencies = [
- "ring",
- "rustls-pki-types",
- "untrusted",
-]
-
-[[package]]
-name = "ryu"
-version = "1.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
-
-[[package]]
-name = "schannel"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
-dependencies = [
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "security-framework"
-version = "2.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
-dependencies = [
- "bitflags",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.215"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.215"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.133"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
-dependencies = [
- "itoa",
- "memchr",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serde_urlencoded"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
-dependencies = [
- "form_urlencoded",
- "itoa",
- "ryu",
- "serde",
-]
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "shared"
version = "0.1.0"
-[[package]]
-name = "shlex"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
-
-[[package]]
-name = "slab"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
-
-[[package]]
-name = "socket2"
-version = "0.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "spin"
-version = "0.9.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
-
-[[package]]
-name = "stable_deref_trait"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
-
[[package]]
name = "substring"
version = "1.4.5"
@@ -1140,532 +97,3 @@ checksum = "42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86"
dependencies = [
"autocfg",
]
-
-[[package]]
-name = "subtle"
-version = "2.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
-
-[[package]]
-name = "syn"
-version = "2.0.90"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "sync_wrapper"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
-dependencies = [
- "futures-core",
-]
-
-[[package]]
-name = "synstructure"
-version = "0.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "system-configuration"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
-dependencies = [
- "bitflags",
- "core-foundation",
- "system-configuration-sys",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "tempfile"
-version = "3.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c"
-dependencies = [
- "cfg-if",
- "fastrand",
- "once_cell",
- "rustix",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "time"
-version = "0.3.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
-dependencies = [
- "deranged",
- "itoa",
- "num-conv",
- "powerfmt",
- "serde",
- "time-core",
- "time-macros",
-]
-
-[[package]]
-name = "time-core"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
-
-[[package]]
-name = "time-macros"
-version = "0.2.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
-dependencies = [
- "num-conv",
- "time-core",
-]
-
-[[package]]
-name = "tinystr"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
-dependencies = [
- "displaydoc",
- "zerovec",
-]
-
-[[package]]
-name = "tokio"
-version = "1.41.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33"
-dependencies = [
- "backtrace",
- "bytes",
- "libc",
- "mio",
- "pin-project-lite",
- "socket2",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "tokio-native-tls"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
-[[package]]
-name = "tokio-rustls"
-version = "0.26.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
-dependencies = [
- "rustls",
- "rustls-pki-types",
- "tokio",
-]
-
-[[package]]
-name = "tokio-util"
-version = "0.7.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
-dependencies = [
- "bytes",
- "futures-core",
- "futures-sink",
- "pin-project-lite",
- "tokio",
-]
-
-[[package]]
-name = "tower-service"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
-
-[[package]]
-name = "tracing"
-version = "0.1.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
-dependencies = [
- "pin-project-lite",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-core"
-version = "0.1.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
-dependencies = [
- "once_cell",
-]
-
-[[package]]
-name = "try-lock"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
-
-[[package]]
-name = "untrusted"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
-
-[[package]]
-name = "url"
-version = "2.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
-dependencies = [
- "form_urlencoded",
- "idna",
- "percent-encoding",
-]
-
-[[package]]
-name = "utf16_iter"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
-
-[[package]]
-name = "utf8_iter"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
-name = "version_check"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-
-[[package]]
-name = "want"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
-dependencies = [
- "try-lock",
-]
-
-[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c"
-dependencies = [
- "cfg-if",
- "once_cell",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.47"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d"
-dependencies = [
- "cfg-if",
- "js-sys",
- "once_cell",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.97"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49"
-
-[[package]]
-name = "web-sys"
-version = "0.3.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "windows-registry"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
-dependencies = [
- "windows-result",
- "windows-strings",
- "windows-targets",
-]
-
-[[package]]
-name = "windows-result"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-strings"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
-dependencies = [
- "windows-result",
- "windows-targets",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.59.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
-
-[[package]]
-name = "write16"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
-
-[[package]]
-name = "writeable"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
-
-[[package]]
-name = "yoke"
-version = "0.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
-dependencies = [
- "serde",
- "stable_deref_trait",
- "yoke-derive",
- "zerofrom",
-]
-
-[[package]]
-name = "yoke-derive"
-version = "0.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "synstructure",
-]
-
-[[package]]
-name = "zerofrom"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e"
-dependencies = [
- "zerofrom-derive",
-]
-
-[[package]]
-name = "zerofrom-derive"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "synstructure",
-]
-
-[[package]]
-name = "zeroize"
-version = "1.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
-
-[[package]]
-name = "zerovec"
-version = "0.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
-dependencies = [
- "yoke",
- "zerofrom",
- "zerovec-derive",
-]
-
-[[package]]
-name = "zerovec-derive"
-version = "0.10.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
diff --git a/Cargo.toml b/Cargo.toml
index be8cf4e..cbdcc64 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,10 +6,8 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[workspace]
-members = ["shared", "aoc2023", "aoc2024"]
+members = ["shared", "aoc2023"]
[dependencies]
shared = { path = "shared" }
aoc2023 = { path = "aoc2023" }
-aoc2024 = { path = "aoc2024" }
-reqwest = { version = "0.12.9", features = ["cookies", "blocking"] }
diff --git a/aoc2023/src/day01.rs b/aoc2023/src/day01.rs
index 3955f1a..89634d7 100644
--- a/aoc2023/src/day01.rs
+++ b/aoc2023/src/day01.rs
@@ -1,4 +1,4 @@
-use shared::{Answer, Solution};
+use shared::{Answer, load_test, Solution};
use regex::{Regex};
pub struct Day01;
diff --git a/aoc2023/src/lib.rs b/aoc2023/src/lib.rs
index 330afef..ba1cbad 100644
--- a/aoc2023/src/lib.rs
+++ b/aoc2023/src/lib.rs
@@ -1,118 +1,58 @@
-use shared::{Solution, Answer};
+use shared::Solution;
+use crate::day01::Day01;
+use crate::day02::Day02;
+use crate::day03::Day03;
+use crate::day04::Day04;
+use crate::day05::Day05;
+use crate::day06::Day06;
+use crate::day07::Day07;
+use crate::day08::Day08;
+use crate::day09::Day09;
+use crate::day10::Day10;
+use crate::day11::Day11;
+use crate::day12::Day12;
+use crate::day13::Day13;
+use crate::day14::Day14;
+use crate::day15::Day15;
+use crate::day16::Day16;
+use crate::day17::Day17;
+use crate::day18::Day18;
+use crate::day19::Day19;
+use crate::day20::Day20;
+use crate::day21::Day21;
+use crate::day22::Day22;
+use crate::day23::Day23;
+use crate::day24::Day24;
+use crate::day25::Day25;
-pub use crate::day01::Day01;
-pub use crate::day02::Day02;
-pub use crate::day03::Day03;
-pub use crate::day04::Day04;
-pub use crate::day05::Day05;
-pub use crate::day06::Day06;
-pub use crate::day07::Day07;
-pub use crate::day08::Day08;
-pub use crate::day09::Day09;
-pub use crate::day10::Day10;
-pub use crate::day11::Day11;
-pub use crate::day12::Day12;
-pub use crate::day13::Day13;
-pub use crate::day14::Day14;
-pub use crate::day15::Day15;
-pub use crate::day16::Day16;
-pub use crate::day17::Day17;
-pub use crate::day18::Day18;
-pub use crate::day19::Day19;
-pub use crate::day20::Day20;
-pub use crate::day21::Day21;
-pub use crate::day22::Day22;
-pub use crate::day23::Day23;
-pub use crate::day24::Day24;
-pub use crate::day25::Day25;
+pub mod day01;
+pub mod day02;
+pub mod day03;
+pub mod day04;
+pub mod day05;
+pub mod day06;
+pub mod day07;
+pub mod day08;
+pub mod day09;
+pub mod day10;
-pub fn solution(input: &str, day: usize, part: usize) -> Option {
- match part {
- 1 => match day {
- 1 => Some(Day01.part_1(input)),
- 2 => Some(Day02.part_1(input)),
- 3 => Some(Day03.part_1(input)),
- 4 => Some(Day04.part_1(input)),
- 5 => Some(Day05.part_1(input)),
- 6 => Some(Day06.part_1(input)),
- 7 => Some(Day07.part_1(input)),
- 8 => Some(Day08.part_1(input)),
- 9 => Some(Day09.part_1(input)),
- 10 => Some(Day10.part_1(input)),
- 11 => Some(Day11.part_1(input)),
- 12 => Some(Day12.part_1(input)),
- 13 => Some(Day13.part_1(input)),
- 14 => Some(Day14.part_1(input)),
- 15 => Some(Day15.part_1(input)),
- 16 => Some(Day16.part_1(input)),
- 17 => Some(Day17.part_1(input)),
- 18 => Some(Day18.part_1(input)),
- 19 => Some(Day19.part_1(input)),
- 20 => Some(Day20.part_1(input)),
- 21 => Some(Day21.part_1(input)),
- 22 => Some(Day22.part_1(input)),
- 23 => Some(Day23.part_1(input)),
- 24 => Some(Day24.part_1(input)),
- 25 => Some(Day25.part_1(input)),
- _ => None
- },
- 2 => match day {
- 1 => Some(Day01.part_2(input)),
- 2 => Some(Day02.part_2(input)),
- 3 => Some(Day03.part_2(input)),
- 4 => Some(Day04.part_2(input)),
- 5 => Some(Day05.part_2(input)),
- 6 => Some(Day06.part_2(input)),
- 7 => Some(Day07.part_2(input)),
- 8 => Some(Day08.part_2(input)),
- 9 => Some(Day09.part_2(input)),
- 10 => Some(Day10.part_2(input)),
- 11 => Some(Day11.part_2(input)),
- 12 => Some(Day12.part_2(input)),
- 13 => Some(Day13.part_2(input)),
- 14 => Some(Day14.part_2(input)),
- 15 => Some(Day15.part_2(input)),
- 16 => Some(Day16.part_2(input)),
- 17 => Some(Day17.part_2(input)),
- 18 => Some(Day18.part_2(input)),
- 19 => Some(Day19.part_2(input)),
- 20 => Some(Day20.part_2(input)),
- 21 => Some(Day21.part_2(input)),
- 22 => Some(Day22.part_2(input)),
- 23 => Some(Day23.part_2(input)),
- 24 => Some(Day24.part_2(input)),
- 25 => Some(Day25.part_2(input)),
- _ => None
- },
- _ => None
- }
-}
+pub mod day11;
-mod day01;
-mod day02;
-mod day03;
-mod day04;
-mod day05;
-mod day06;
-mod day07;
-mod day08;
-mod day09;
-mod day10;
-mod day11;
-mod day12;
-mod day13;
-mod day14;
-mod day15;
-mod day16;
-mod day17;
-mod day18;
-mod day19;
-mod day20;
-mod day21;
-mod day22;
-mod day23;
-mod day24;
-mod day25;
+pub mod day12;
+
+pub mod day13;
+pub mod day14;
+pub mod day15;
+pub mod day16;
+pub mod day17;
+pub mod day18;
+pub mod day19;
+pub mod day20;
+pub mod day21;
+pub mod day22;
+pub mod day23;
+pub mod day24;
+pub mod day25;
#[test]
fn examples() {
diff --git a/aoc2024/Cargo.toml b/aoc2024/Cargo.toml
deleted file mode 100644
index ad4e092..0000000
--- a/aoc2024/Cargo.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-[package]
-name = "aoc2024"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-shared = { path = "../shared" }
-regex = "1.10.2"
-substring = "1.4.5"
-itertools = "0.12.0"
diff --git a/aoc2024/src/day01.rs b/aoc2024/src/day01.rs
deleted file mode 100644
index c37246f..0000000
--- a/aoc2024/src/day01.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day01;
-
-impl Solution for Day01 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day02.rs b/aoc2024/src/day02.rs
deleted file mode 100644
index fbe59f7..0000000
--- a/aoc2024/src/day02.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day02;
-
-impl Solution for Day02 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day03.rs b/aoc2024/src/day03.rs
deleted file mode 100644
index 9350be5..0000000
--- a/aoc2024/src/day03.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day03;
-
-impl Solution for Day03 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day04.rs b/aoc2024/src/day04.rs
deleted file mode 100644
index 456f666..0000000
--- a/aoc2024/src/day04.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day04;
-
-impl Solution for Day04 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day05.rs b/aoc2024/src/day05.rs
deleted file mode 100644
index 7f52f64..0000000
--- a/aoc2024/src/day05.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day05;
-
-impl Solution for Day05 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day06.rs b/aoc2024/src/day06.rs
deleted file mode 100644
index 0782ba9..0000000
--- a/aoc2024/src/day06.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day06;
-
-impl Solution for Day06 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day07.rs b/aoc2024/src/day07.rs
deleted file mode 100644
index b8194ec..0000000
--- a/aoc2024/src/day07.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day07;
-
-impl Solution for Day07 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day08.rs b/aoc2024/src/day08.rs
deleted file mode 100644
index b6128f3..0000000
--- a/aoc2024/src/day08.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day08;
-
-impl Solution for Day08 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day09.rs b/aoc2024/src/day09.rs
deleted file mode 100644
index 70f0234..0000000
--- a/aoc2024/src/day09.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day09;
-
-impl Solution for Day09 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day10.rs b/aoc2024/src/day10.rs
deleted file mode 100644
index 2b164ca..0000000
--- a/aoc2024/src/day10.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day10;
-
-impl Solution for Day10 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day11.rs b/aoc2024/src/day11.rs
deleted file mode 100644
index 2e4945b..0000000
--- a/aoc2024/src/day11.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day11;
-
-impl Solution for Day11 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day12.rs b/aoc2024/src/day12.rs
deleted file mode 100644
index c82f532..0000000
--- a/aoc2024/src/day12.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day12;
-
-impl Solution for Day12 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day13.rs b/aoc2024/src/day13.rs
deleted file mode 100644
index 8d01691..0000000
--- a/aoc2024/src/day13.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day13;
-
-impl Solution for Day13 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day14.rs b/aoc2024/src/day14.rs
deleted file mode 100644
index ad9e61f..0000000
--- a/aoc2024/src/day14.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day14;
-
-impl Solution for Day14 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day15.rs b/aoc2024/src/day15.rs
deleted file mode 100644
index bef6f40..0000000
--- a/aoc2024/src/day15.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day15;
-
-impl Solution for Day15 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day16.rs b/aoc2024/src/day16.rs
deleted file mode 100644
index e885d65..0000000
--- a/aoc2024/src/day16.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day16;
-
-impl Solution for Day16 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day17.rs b/aoc2024/src/day17.rs
deleted file mode 100644
index c8bbad3..0000000
--- a/aoc2024/src/day17.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day17;
-
-impl Solution for Day17 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day18.rs b/aoc2024/src/day18.rs
deleted file mode 100644
index 4ba74c0..0000000
--- a/aoc2024/src/day18.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day18;
-
-impl Solution for Day18 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day19.rs b/aoc2024/src/day19.rs
deleted file mode 100644
index 9890723..0000000
--- a/aoc2024/src/day19.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day19;
-
-impl Solution for Day19 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day20.rs b/aoc2024/src/day20.rs
deleted file mode 100644
index b963f4a..0000000
--- a/aoc2024/src/day20.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day20;
-
-impl Solution for Day20 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day21.rs b/aoc2024/src/day21.rs
deleted file mode 100644
index 6b425f3..0000000
--- a/aoc2024/src/day21.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day21;
-
-impl Solution for Day21 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day22.rs b/aoc2024/src/day22.rs
deleted file mode 100644
index 16d508f..0000000
--- a/aoc2024/src/day22.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day22;
-
-impl Solution for Day22 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day23.rs b/aoc2024/src/day23.rs
deleted file mode 100644
index d8b6804..0000000
--- a/aoc2024/src/day23.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day23;
-
-impl Solution for Day23 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day24.rs b/aoc2024/src/day24.rs
deleted file mode 100644
index dd78ed8..0000000
--- a/aoc2024/src/day24.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day24;
-
-impl Solution for Day24 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/day25.rs b/aoc2024/src/day25.rs
deleted file mode 100644
index d44608d..0000000
--- a/aoc2024/src/day25.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day25;
-
-impl Solution for Day25 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/aoc2024/src/lib.rs b/aoc2024/src/lib.rs
deleted file mode 100644
index 330afef..0000000
--- a/aoc2024/src/lib.rs
+++ /dev/null
@@ -1,120 +0,0 @@
-use shared::{Solution, Answer};
-
-pub use crate::day01::Day01;
-pub use crate::day02::Day02;
-pub use crate::day03::Day03;
-pub use crate::day04::Day04;
-pub use crate::day05::Day05;
-pub use crate::day06::Day06;
-pub use crate::day07::Day07;
-pub use crate::day08::Day08;
-pub use crate::day09::Day09;
-pub use crate::day10::Day10;
-pub use crate::day11::Day11;
-pub use crate::day12::Day12;
-pub use crate::day13::Day13;
-pub use crate::day14::Day14;
-pub use crate::day15::Day15;
-pub use crate::day16::Day16;
-pub use crate::day17::Day17;
-pub use crate::day18::Day18;
-pub use crate::day19::Day19;
-pub use crate::day20::Day20;
-pub use crate::day21::Day21;
-pub use crate::day22::Day22;
-pub use crate::day23::Day23;
-pub use crate::day24::Day24;
-pub use crate::day25::Day25;
-
-pub fn solution(input: &str, day: usize, part: usize) -> Option {
- match part {
- 1 => match day {
- 1 => Some(Day01.part_1(input)),
- 2 => Some(Day02.part_1(input)),
- 3 => Some(Day03.part_1(input)),
- 4 => Some(Day04.part_1(input)),
- 5 => Some(Day05.part_1(input)),
- 6 => Some(Day06.part_1(input)),
- 7 => Some(Day07.part_1(input)),
- 8 => Some(Day08.part_1(input)),
- 9 => Some(Day09.part_1(input)),
- 10 => Some(Day10.part_1(input)),
- 11 => Some(Day11.part_1(input)),
- 12 => Some(Day12.part_1(input)),
- 13 => Some(Day13.part_1(input)),
- 14 => Some(Day14.part_1(input)),
- 15 => Some(Day15.part_1(input)),
- 16 => Some(Day16.part_1(input)),
- 17 => Some(Day17.part_1(input)),
- 18 => Some(Day18.part_1(input)),
- 19 => Some(Day19.part_1(input)),
- 20 => Some(Day20.part_1(input)),
- 21 => Some(Day21.part_1(input)),
- 22 => Some(Day22.part_1(input)),
- 23 => Some(Day23.part_1(input)),
- 24 => Some(Day24.part_1(input)),
- 25 => Some(Day25.part_1(input)),
- _ => None
- },
- 2 => match day {
- 1 => Some(Day01.part_2(input)),
- 2 => Some(Day02.part_2(input)),
- 3 => Some(Day03.part_2(input)),
- 4 => Some(Day04.part_2(input)),
- 5 => Some(Day05.part_2(input)),
- 6 => Some(Day06.part_2(input)),
- 7 => Some(Day07.part_2(input)),
- 8 => Some(Day08.part_2(input)),
- 9 => Some(Day09.part_2(input)),
- 10 => Some(Day10.part_2(input)),
- 11 => Some(Day11.part_2(input)),
- 12 => Some(Day12.part_2(input)),
- 13 => Some(Day13.part_2(input)),
- 14 => Some(Day14.part_2(input)),
- 15 => Some(Day15.part_2(input)),
- 16 => Some(Day16.part_2(input)),
- 17 => Some(Day17.part_2(input)),
- 18 => Some(Day18.part_2(input)),
- 19 => Some(Day19.part_2(input)),
- 20 => Some(Day20.part_2(input)),
- 21 => Some(Day21.part_2(input)),
- 22 => Some(Day22.part_2(input)),
- 23 => Some(Day23.part_2(input)),
- 24 => Some(Day24.part_2(input)),
- 25 => Some(Day25.part_2(input)),
- _ => None
- },
- _ => None
- }
-}
-
-mod day01;
-mod day02;
-mod day03;
-mod day04;
-mod day05;
-mod day06;
-mod day07;
-mod day08;
-mod day09;
-mod day10;
-mod day11;
-mod day12;
-mod day13;
-mod day14;
-mod day15;
-mod day16;
-mod day17;
-mod day18;
-mod day19;
-mod day20;
-mod day21;
-mod day22;
-mod day23;
-mod day24;
-mod day25;
-
-#[test]
-fn examples() {
- todo!()
-}
diff --git a/flake.lock b/flake.lock
index d07eab5..e77b2e6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1731533236,
- "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+ "lastModified": 1681202837,
+ "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+ "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"type": "github"
},
"original": {
@@ -20,39 +20,37 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1733015953,
- "narHash": "sha256-t4BBVpwG9B4hLgc6GUBuj3cjU7lP/PJfpTHuSqE+crk=",
+ "lastModified": 1703134684,
+ "narHash": "sha256-SQmng1EnBFLzS7WSRyPM9HgmZP2kLJcPAz+Ug/nug6o=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "ac35b104800bff9028425fec3b6e8a41de2bbfff",
+ "rev": "d6863cbcbbb80e71cecfc03356db1cda38919523",
"type": "github"
},
"original": {
- "owner": "NixOS",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
- "type": "github"
+ "id": "nixpkgs",
+ "type": "indirect"
}
},
"root": {
"inputs": {
- "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
+ "flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
- "lastModified": 1733106880,
- "narHash": "sha256-aJmAIjZfWfPSWSExwrYBLRgXVvgF5LP1vaeUGOOIQ98=",
+ "lastModified": 1689302058,
+ "narHash": "sha256-yD74lcHTrw4niXcE9goJLbzsgyce48rQQoy5jK5ZK40=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "e66c0d43abf5bdefb664c3583ca8994983c332ae",
+ "rev": "7b8dbbf4c67ed05a9bf3d9e658c12d4108bc24c8",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 2808caf..11a3b21 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,9 +1,7 @@
{
- description = "Dev Shell for AdventOfCode by lilith";
+ description = "A Nix-flake-based Rust development environment";
inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
- flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
@@ -11,35 +9,42 @@
};
outputs = {
+ self,
nixpkgs,
rust-overlay,
- flake-utils,
- ...
- }:
- flake-utils.lib.eachDefaultSystem (
- system: let
- overlays = [(import rust-overlay)];
- pkgs = import nixpkgs {
- inherit system overlays;
- };
- in {
- devShells.default = with pkgs;
- mkShell {
- buildInputs = [
- openssl
- pkg-config
- cargo-deny
- cargo-edit
- cargo-watch
- rust-analyzer
- (
- rust-bin.selectLatestNightlyWith (toolchain:
- toolchain.default.override {
- extensions = ["rust-src"];
- })
- )
- ];
- };
- }
- );
+ }: let
+ overlays = [
+ rust-overlay.overlays.default
+ (final: prev: {
+ rustToolchain = let
+ rust = prev.rust-bin;
+ in
+ if builtins.pathExists ./rust-toolchain.toml
+ then rust.fromRustupToolchainFile ./rust-toolchain.toml
+ else if builtins.pathExists ./rust-toolchain
+ then rust.fromRustupToolchainFile ./rust-toolchain
+ else rust.stable.latest.default;
+ })
+ ];
+ supportedSystems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"];
+ forEachSupportedSystem = f:
+ nixpkgs.lib.genAttrs supportedSystems (system:
+ f {
+ pkgs = import nixpkgs {inherit overlays system;};
+ });
+ in {
+ devShells = forEachSupportedSystem ({pkgs}: {
+ default = pkgs.mkShell {
+ packages = with pkgs; [
+ rustToolchain
+ openssl
+ pkg-config
+ cargo-deny
+ cargo-edit
+ cargo-watch
+ rust-analyzer
+ ];
+ };
+ });
+ };
}
diff --git a/src/input_data.rs b/shared/src/input_data.rs
similarity index 58%
rename from src/input_data.rs
rename to shared/src/input_data.rs
index 5b4e611..e53c62c 100644
--- a/src/input_data.rs
+++ b/shared/src/input_data.rs
@@ -1,11 +1,11 @@
use std::{fs, io};
-pub fn load_actual(year: usize, day: usize) -> io::Result {
+pub fn load_actual(year: u64, day: u64) -> io::Result {
let path = format!("./data/{year}/day{:02}", day);
fs::read_to_string(path)
}
-pub fn load_test(year: usize, day: usize) -> io::Result {
+pub fn load_test(year: u64, day: u64) -> io::Result {
let path = format!("./examples/{year}/day{:02}", day);
fs::read_to_string(path)
-}
+}
\ No newline at end of file
diff --git a/shared/src/lib.rs b/shared/src/lib.rs
index 7408c33..06c0cb9 100644
--- a/shared/src/lib.rs
+++ b/shared/src/lib.rs
@@ -1,6 +1,9 @@
mod answer;
+mod input_data;
mod solution;
pub use answer::Answer;
pub use solution::Solution;
+pub use input_data::{load_test, load_actual};
+
diff --git a/src/main.rs b/src/main.rs
index b1cf701..61a10dd 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,52 +1,20 @@
-mod solution;
-use solution::solution;
+use shared::Solution;
-mod input_data;
-use input_data::load_actual;
+use shared::load_actual;
-use reqwest::blocking::Client;
-use reqwest::header::COOKIE;
-
-use std::{time::Instant, env};
+use std::time::Instant;
fn main() {
- let year = 2024;
- let day = 2;
+ let now = Instant::now();
- fetch_data(year, day).unwrap();
-
- let Ok(data) = load_actual(year, day)
+ let Ok(data) = load_actual(2023, 12)
else { panic!("No Input Data"); };
-
- let now = Instant::now();
- let part1 = solution(&data, year, day, 1).unwrap();
+ let result = aoc2023::day12::Day12.part_2(&data);
- let elapsed1 = now.elapsed();
+ let elapsed = now.elapsed();
- let now = Instant::now();
-
- let part2 = solution(&data, year, day, 2).unwrap();
-
- let elapsed2 = now.elapsed();
-
- println!("Part 1 result is {}, took {}ms", part1, elapsed1.as_millis());
- println!("Part 2 result is {}, took {}ms", part2, elapsed2.as_millis());
+ println!("{}", result);
-}
-
-fn fetch_data(year: usize, day: usize) -> Result<(), Box> {
- let url = format!("https://adventofcode.com/{year}/day/{day}/input");
- let session_cookie = env::var("ADVENT_TOKEN")?;
-
- let client = Client::new();
- let response = client
- .get(url)
- .header(COOKIE, session_cookie)
- .send()?;
-
- let body = response.text();
- println!("Response: {:?}", body);
-
- Ok(())
+ println!("{:?}", elapsed);
}
diff --git a/src/solution.rs b/src/solution.rs
deleted file mode 100644
index 98b3843..0000000
--- a/src/solution.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-use shared::Answer;
-
-
-pub fn solution(input: &str, year: usize, day: usize, part: usize) -> Option {
- match year {
- 2023 => aoc2024::solution(input, day, part),
- 2024 => aoc2024::solution(input, day, part),
- _ => None,
- }
-}
diff --git a/template/Cargo.toml b/template/Cargo.toml
deleted file mode 100644
index 4a043b5..0000000
--- a/template/Cargo.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[package]
-name = "aoc202X"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-shared = { path = "../shared" }
diff --git a/template/src/day01.rs b/template/src/day01.rs
deleted file mode 100644
index c37246f..0000000
--- a/template/src/day01.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day01;
-
-impl Solution for Day01 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day02.rs b/template/src/day02.rs
deleted file mode 100644
index fbe59f7..0000000
--- a/template/src/day02.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day02;
-
-impl Solution for Day02 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day03.rs b/template/src/day03.rs
deleted file mode 100644
index 9350be5..0000000
--- a/template/src/day03.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day03;
-
-impl Solution for Day03 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day04.rs b/template/src/day04.rs
deleted file mode 100644
index 456f666..0000000
--- a/template/src/day04.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day04;
-
-impl Solution for Day04 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day05.rs b/template/src/day05.rs
deleted file mode 100644
index 7f52f64..0000000
--- a/template/src/day05.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day05;
-
-impl Solution for Day05 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day06.rs b/template/src/day06.rs
deleted file mode 100644
index 0782ba9..0000000
--- a/template/src/day06.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day06;
-
-impl Solution for Day06 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day07.rs b/template/src/day07.rs
deleted file mode 100644
index b8194ec..0000000
--- a/template/src/day07.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day07;
-
-impl Solution for Day07 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day08.rs b/template/src/day08.rs
deleted file mode 100644
index b6128f3..0000000
--- a/template/src/day08.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day08;
-
-impl Solution for Day08 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day09.rs b/template/src/day09.rs
deleted file mode 100644
index 70f0234..0000000
--- a/template/src/day09.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day09;
-
-impl Solution for Day09 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day10.rs b/template/src/day10.rs
deleted file mode 100644
index 2b164ca..0000000
--- a/template/src/day10.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day10;
-
-impl Solution for Day10 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day11.rs b/template/src/day11.rs
deleted file mode 100644
index 2e4945b..0000000
--- a/template/src/day11.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day11;
-
-impl Solution for Day11 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day12.rs b/template/src/day12.rs
deleted file mode 100644
index c82f532..0000000
--- a/template/src/day12.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day12;
-
-impl Solution for Day12 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day13.rs b/template/src/day13.rs
deleted file mode 100644
index 8d01691..0000000
--- a/template/src/day13.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day13;
-
-impl Solution for Day13 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day14.rs b/template/src/day14.rs
deleted file mode 100644
index ad9e61f..0000000
--- a/template/src/day14.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day14;
-
-impl Solution for Day14 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day15.rs b/template/src/day15.rs
deleted file mode 100644
index bef6f40..0000000
--- a/template/src/day15.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day15;
-
-impl Solution for Day15 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day16.rs b/template/src/day16.rs
deleted file mode 100644
index e885d65..0000000
--- a/template/src/day16.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day16;
-
-impl Solution for Day16 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day17.rs b/template/src/day17.rs
deleted file mode 100644
index c8bbad3..0000000
--- a/template/src/day17.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day17;
-
-impl Solution for Day17 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day18.rs b/template/src/day18.rs
deleted file mode 100644
index 4ba74c0..0000000
--- a/template/src/day18.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day18;
-
-impl Solution for Day18 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day19.rs b/template/src/day19.rs
deleted file mode 100644
index 9890723..0000000
--- a/template/src/day19.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day19;
-
-impl Solution for Day19 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day20.rs b/template/src/day20.rs
deleted file mode 100644
index b963f4a..0000000
--- a/template/src/day20.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day20;
-
-impl Solution for Day20 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day21.rs b/template/src/day21.rs
deleted file mode 100644
index 6b425f3..0000000
--- a/template/src/day21.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day21;
-
-impl Solution for Day21 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day22.rs b/template/src/day22.rs
deleted file mode 100644
index 16d508f..0000000
--- a/template/src/day22.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day22;
-
-impl Solution for Day22 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day23.rs b/template/src/day23.rs
deleted file mode 100644
index d8b6804..0000000
--- a/template/src/day23.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day23;
-
-impl Solution for Day23 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day24.rs b/template/src/day24.rs
deleted file mode 100644
index dd78ed8..0000000
--- a/template/src/day24.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day24;
-
-impl Solution for Day24 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/day25.rs b/template/src/day25.rs
deleted file mode 100644
index d44608d..0000000
--- a/template/src/day25.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use shared::{Solution, Answer};
-
-pub struct Day25;
-
-impl Solution for Day25 {
- fn part_1(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-
- fn part_2(&self, input: &str) -> Answer {
- Answer::Unimplemented
- }
-}
diff --git a/template/src/lib.rs b/template/src/lib.rs
deleted file mode 100644
index 330afef..0000000
--- a/template/src/lib.rs
+++ /dev/null
@@ -1,120 +0,0 @@
-use shared::{Solution, Answer};
-
-pub use crate::day01::Day01;
-pub use crate::day02::Day02;
-pub use crate::day03::Day03;
-pub use crate::day04::Day04;
-pub use crate::day05::Day05;
-pub use crate::day06::Day06;
-pub use crate::day07::Day07;
-pub use crate::day08::Day08;
-pub use crate::day09::Day09;
-pub use crate::day10::Day10;
-pub use crate::day11::Day11;
-pub use crate::day12::Day12;
-pub use crate::day13::Day13;
-pub use crate::day14::Day14;
-pub use crate::day15::Day15;
-pub use crate::day16::Day16;
-pub use crate::day17::Day17;
-pub use crate::day18::Day18;
-pub use crate::day19::Day19;
-pub use crate::day20::Day20;
-pub use crate::day21::Day21;
-pub use crate::day22::Day22;
-pub use crate::day23::Day23;
-pub use crate::day24::Day24;
-pub use crate::day25::Day25;
-
-pub fn solution(input: &str, day: usize, part: usize) -> Option {
- match part {
- 1 => match day {
- 1 => Some(Day01.part_1(input)),
- 2 => Some(Day02.part_1(input)),
- 3 => Some(Day03.part_1(input)),
- 4 => Some(Day04.part_1(input)),
- 5 => Some(Day05.part_1(input)),
- 6 => Some(Day06.part_1(input)),
- 7 => Some(Day07.part_1(input)),
- 8 => Some(Day08.part_1(input)),
- 9 => Some(Day09.part_1(input)),
- 10 => Some(Day10.part_1(input)),
- 11 => Some(Day11.part_1(input)),
- 12 => Some(Day12.part_1(input)),
- 13 => Some(Day13.part_1(input)),
- 14 => Some(Day14.part_1(input)),
- 15 => Some(Day15.part_1(input)),
- 16 => Some(Day16.part_1(input)),
- 17 => Some(Day17.part_1(input)),
- 18 => Some(Day18.part_1(input)),
- 19 => Some(Day19.part_1(input)),
- 20 => Some(Day20.part_1(input)),
- 21 => Some(Day21.part_1(input)),
- 22 => Some(Day22.part_1(input)),
- 23 => Some(Day23.part_1(input)),
- 24 => Some(Day24.part_1(input)),
- 25 => Some(Day25.part_1(input)),
- _ => None
- },
- 2 => match day {
- 1 => Some(Day01.part_2(input)),
- 2 => Some(Day02.part_2(input)),
- 3 => Some(Day03.part_2(input)),
- 4 => Some(Day04.part_2(input)),
- 5 => Some(Day05.part_2(input)),
- 6 => Some(Day06.part_2(input)),
- 7 => Some(Day07.part_2(input)),
- 8 => Some(Day08.part_2(input)),
- 9 => Some(Day09.part_2(input)),
- 10 => Some(Day10.part_2(input)),
- 11 => Some(Day11.part_2(input)),
- 12 => Some(Day12.part_2(input)),
- 13 => Some(Day13.part_2(input)),
- 14 => Some(Day14.part_2(input)),
- 15 => Some(Day15.part_2(input)),
- 16 => Some(Day16.part_2(input)),
- 17 => Some(Day17.part_2(input)),
- 18 => Some(Day18.part_2(input)),
- 19 => Some(Day19.part_2(input)),
- 20 => Some(Day20.part_2(input)),
- 21 => Some(Day21.part_2(input)),
- 22 => Some(Day22.part_2(input)),
- 23 => Some(Day23.part_2(input)),
- 24 => Some(Day24.part_2(input)),
- 25 => Some(Day25.part_2(input)),
- _ => None
- },
- _ => None
- }
-}
-
-mod day01;
-mod day02;
-mod day03;
-mod day04;
-mod day05;
-mod day06;
-mod day07;
-mod day08;
-mod day09;
-mod day10;
-mod day11;
-mod day12;
-mod day13;
-mod day14;
-mod day15;
-mod day16;
-mod day17;
-mod day18;
-mod day19;
-mod day20;
-mod day21;
-mod day22;
-mod day23;
-mod day24;
-mod day25;
-
-#[test]
-fn examples() {
- todo!()
-}