about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/cardinal/default.nix4
-rw-r--r--pkgs/applications/audio/cider/default.nix10
-rw-r--r--pkgs/applications/audio/cozy/default.nix57
-rw-r--r--pkgs/applications/audio/feishin/darwin.nix41
-rw-r--r--pkgs/applications/audio/feishin/default.nix137
-rw-r--r--pkgs/applications/audio/feishin/linux.nix71
-rw-r--r--pkgs/applications/audio/ft2-clone/default.nix4
-rw-r--r--pkgs/applications/audio/guitarix/default.nix37
-rw-r--r--pkgs/applications/audio/kid3/default.nix53
-rw-r--r--pkgs/applications/audio/ledfx/default.nix18
-rw-r--r--pkgs/applications/audio/linuxsampler/default.nix4
-rw-r--r--pkgs/applications/audio/mopidy/jellyfin.nix4
-rw-r--r--pkgs/applications/audio/open-stage-control/default.nix4
-rw-r--r--pkgs/applications/audio/parlatype/default.nix6
-rw-r--r--pkgs/applications/audio/psst/default.nix6
-rw-r--r--pkgs/applications/audio/psst/make-build-reproducible.patch2
-rw-r--r--pkgs/applications/audio/pyradio/default.nix6
-rw-r--r--pkgs/applications/audio/reaper/default.nix8
-rw-r--r--pkgs/applications/audio/soundtracker/default.nix5
-rw-r--r--pkgs/applications/audio/squeezelite/default.nix6
-rw-r--r--pkgs/applications/audio/sublime-music/default.nix1
-rw-r--r--pkgs/applications/audio/synaesthesia/default.nix2
-rw-r--r--pkgs/applications/audio/tauon/default.nix4
-rw-r--r--pkgs/applications/audio/touchosc/default.nix8
-rw-r--r--pkgs/applications/audio/vgmstream/default.nix4
-rw-r--r--pkgs/applications/audio/zrythm/default.nix4
-rw-r--r--pkgs/applications/blockchains/bisq-desktop/default.nix4
-rw-r--r--pkgs/applications/blockchains/bitcoin-abc/default.nix4
-rw-r--r--pkgs/applications/blockchains/btcdeb/default.nix8
-rw-r--r--pkgs/applications/blockchains/clightning/default.nix4
-rw-r--r--pkgs/applications/blockchains/gridcoin-research/default.nix4
-rw-r--r--pkgs/applications/blockchains/monero-cli/default.nix10
-rw-r--r--pkgs/applications/blockchains/monero-gui/default.nix4
-rw-r--r--pkgs/applications/blockchains/optimism/default.nix6
-rw-r--r--pkgs/applications/blockchains/polkadot/Cargo.lock657
-rw-r--r--pkgs/applications/blockchains/polkadot/default.nix4
-rw-r--r--pkgs/applications/blockchains/solana-validator/Cargo.lock2527
-rw-r--r--pkgs/applications/blockchains/solana-validator/default.nix11
-rw-r--r--pkgs/applications/blockchains/solana-validator/pin.json4
-rw-r--r--pkgs/applications/display-managers/greetd/regreet.nix4
-rw-r--r--pkgs/applications/editors/aewan/default.nix4
-rw-r--r--pkgs/applications/editors/android-studio/common.nix23
-rw-r--r--pkgs/applications/editors/android-studio/default.nix12
-rw-r--r--pkgs/applications/editors/helix/default.nix9
-rw-r--r--pkgs/applications/editors/jetbrains/bin/versions.json440
-rw-r--r--pkgs/applications/editors/jetbrains/default.nix5
-rw-r--r--pkgs/applications/editors/jetbrains/plugins/plugins.json328
-rw-r--r--pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix2
-rw-r--r--pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix13
-rw-r--r--pkgs/applications/editors/kakoune/plugins/deprecated.json4
-rw-r--r--pkgs/applications/editors/kakoune/plugins/overrides.nix4
-rw-r--r--pkgs/applications/editors/openvi/default.nix4
-rw-r--r--pkgs/applications/editors/quartus-prime/default.nix17
-rw-r--r--pkgs/applications/editors/quartus-prime/quartus.nix36
-rw-r--r--pkgs/applications/editors/vim/plugins/generated.nix48
-rw-r--r--pkgs/applications/editors/vim/plugins/overrides.nix7
-rw-r--r--pkgs/applications/editors/vim/plugins/vim-plugin-names4
-rw-r--r--pkgs/applications/editors/vscode/extensions/default.nix52
-rw-r--r--pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix2
-rw-r--r--pkgs/applications/editors/vscode/extensions/vscode-utils.nix4
-rw-r--r--pkgs/applications/editors/vscode/vscodium.nix12
-rw-r--r--pkgs/applications/editors/wily/default.nix6
-rw-r--r--pkgs/applications/emulators/86box/default.nix88
-rw-r--r--pkgs/applications/emulators/cemu/default.nix4
-rw-r--r--pkgs/applications/emulators/dosbox-x/default.nix32
-rw-r--r--pkgs/applications/emulators/duckstation/default.nix2
-rw-r--r--pkgs/applications/emulators/retroarch/hashes.json60
-rw-r--r--pkgs/applications/emulators/wine/sources.nix6
-rw-r--r--pkgs/applications/graphics/conjure/default.nix4
-rw-r--r--pkgs/applications/graphics/curtail/default.nix4
-rw-r--r--pkgs/applications/graphics/drawio/default.nix6
-rw-r--r--pkgs/applications/graphics/f3d/default.nix4
-rw-r--r--pkgs/applications/graphics/geeqie/default.nix43
-rw-r--r--pkgs/applications/graphics/krita/generic.nix11
-rw-r--r--pkgs/applications/graphics/krita/wrapper.nix27
-rw-r--r--pkgs/applications/graphics/oculante/default.nix6
-rw-r--r--pkgs/applications/graphics/pineapple-pictures/default.nix4
-rw-r--r--pkgs/applications/graphics/potreeconverter/default.nix10
-rw-r--r--pkgs/applications/graphics/rnote/Cargo.lock395
-rw-r--r--pkgs/applications/graphics/rnote/default.nix4
-rw-r--r--pkgs/applications/misc/ArchiSteamFarm/default.nix4
-rw-r--r--pkgs/applications/misc/ArchiSteamFarm/deps.nix72
-rw-r--r--pkgs/applications/misc/ArchiSteamFarm/web-ui/default.nix6
-rw-r--r--pkgs/applications/misc/ausweisapp/default.nix4
-rw-r--r--pkgs/applications/misc/bashSnippets/default.nix2
-rw-r--r--pkgs/applications/misc/buku/default.nix2
-rw-r--r--pkgs/applications/misc/camunda-modeler/default.nix4
-rw-r--r--pkgs/applications/misc/cherrytree/default.nix4
-rw-r--r--pkgs/applications/misc/confy/default.nix6
-rw-r--r--pkgs/applications/misc/fluidd/default.nix4
-rw-r--r--pkgs/applications/misc/gnome-solanum/default.nix4
-rw-r--r--pkgs/applications/misc/googleearth-pro/default.nix2
-rw-r--r--pkgs/applications/misc/gpu-viewer/default.nix4
-rw-r--r--pkgs/applications/misc/gramps/default.nix6
-rw-r--r--pkgs/applications/misc/heimer/default.nix4
-rw-r--r--pkgs/applications/misc/inlyne/default.nix6
-rw-r--r--pkgs/applications/misc/johnny-reborn/default.nix4
-rw-r--r--pkgs/applications/misc/josm/default.nix10
-rw-r--r--pkgs/applications/misc/jrnl/default.nix41
-rw-r--r--pkgs/applications/misc/kord/default.nix12
-rw-r--r--pkgs/applications/misc/megasync/default.nix15
-rw-r--r--pkgs/applications/misc/megasync/ffmpeg_44.patch14
-rw-r--r--pkgs/applications/misc/merkaartor/default.nix8
-rw-r--r--pkgs/applications/misc/minder/default.nix4
-rw-r--r--pkgs/applications/misc/mkgmap/default.nix4
-rw-r--r--pkgs/applications/misc/mkgmap/splitter/default.nix4
-rw-r--r--pkgs/applications/misc/nwg-displays/default.nix2
-rw-r--r--pkgs/applications/misc/organicmaps/default.nix4
-rw-r--r--pkgs/applications/misc/parsec/bin.nix6
-rw-r--r--pkgs/applications/misc/passky-desktop/default.nix4
-rw-r--r--pkgs/applications/misc/pgmodeler/default.nix30
-rw-r--r--pkgs/applications/misc/plots/default.nix4
-rw-r--r--pkgs/applications/misc/process-compose/default.nix4
-rw-r--r--pkgs/applications/misc/prusa-slicer/default.nix4
-rw-r--r--pkgs/applications/misc/sweethome3d/default.nix4
-rw-r--r--pkgs/applications/misc/syncthingtray/default.nix4
-rw-r--r--pkgs/applications/misc/tandoor-recipes/common.nix6
-rw-r--r--pkgs/applications/misc/tandoor-recipes/default.nix19
-rw-r--r--pkgs/applications/misc/tandoor-recipes/pytest-xdist.patch12
-rw-r--r--pkgs/applications/misc/tasknc/default.nix2
-rw-r--r--pkgs/applications/misc/tmatrix/default.nix2
-rw-r--r--pkgs/applications/misc/translate-shell/default.nix2
-rw-r--r--pkgs/applications/misc/ulauncher/default.nix4
-rw-r--r--pkgs/applications/misc/waybar/default.nix3
-rw-r--r--pkgs/applications/misc/wmenu/default.nix8
-rw-r--r--pkgs/applications/misc/wttrbar/default.nix3
-rw-r--r--pkgs/applications/misc/xmrig/default.nix4
-rw-r--r--pkgs/applications/networking/avalanchego/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/brave/default.nix238
-rw-r--r--pkgs/applications/networking/browsers/brave/make-brave.nix218
-rwxr-xr-xpkgs/applications/networking/browsers/brave/update.sh46
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.nix24
-rw-r--r--pkgs/applications/networking/browsers/librewolf/src.json10
-rw-r--r--pkgs/applications/networking/browsers/microsoft-edge/default.nix12
-rw-r--r--pkgs/applications/networking/browsers/opera/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/vivaldi/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/argocd/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/arkade/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/atmos/default.nix8
-rw-r--r--pkgs/applications/networking/cluster/helm/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/krane/Gemfile.lock33
-rw-r--r--pkgs/applications/networking/cluster/krane/gemset.nix64
-rw-r--r--pkgs/applications/networking/cluster/krelay/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/kubectl-view-allocations/Cargo.lock1478
-rw-r--r--pkgs/applications/networking/cluster/kubectl-view-allocations/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/kubeseal/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/kubespy/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/kuma/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/linkerd/edge.nix6
-rw-r--r--pkgs/applications/networking/cluster/nixops/plugins/nixops-digitalocean.nix7
-rw-r--r--pkgs/applications/networking/cluster/ocm/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/pachyderm/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/terraform-compliance/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/terraform/default.nix8
-rw-r--r--pkgs/applications/networking/cluster/terragrunt/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/tfswitch/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/tftui/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/werf/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/zarf/default.nix6
-rw-r--r--pkgs/applications/networking/deck/default.nix6
-rw-r--r--pkgs/applications/networking/gnome-network-displays/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/abaddon/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/beeper/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/chatterino2/default.nix20
-rw-r--r--pkgs/applications/networking/instant-messengers/dino/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/discord/default.nix28
-rw-r--r--pkgs/applications/networking/instant-messengers/element/pin.nix10
-rw-r--r--pkgs/applications/networking/instant-messengers/ferdium/default.nix11
-rw-r--r--pkgs/applications/networking/instant-messengers/gurk-rs/Cargo.lock1512
-rw-r--r--pkgs/applications/networking/instant-messengers/gurk-rs/default.nix12
-rw-r--r--pkgs/applications/networking/instant-messengers/qq/default.nix14
-rw-r--r--pkgs/applications/networking/instant-messengers/ripcord/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/tangram/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/teams-for-linux/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/telegram-desktop/default.nix4
-rw-r--r--pkgs/applications/networking/irc/weechat/default.nix4
-rw-r--r--pkgs/applications/networking/ktailctl/default.nix19
-rw-r--r--pkgs/applications/networking/mailreaders/tutanota-desktop/default.nix4
-rw-r--r--pkgs/applications/networking/mullvad/Cargo.lock219
-rw-r--r--pkgs/applications/networking/mullvad/libwg.nix9
-rw-r--r--pkgs/applications/networking/mullvad/mullvad.nix5
-rw-r--r--pkgs/applications/networking/mumble/default.nix2
-rw-r--r--pkgs/applications/networking/newsreaders/pan/default.nix4
-rw-r--r--pkgs/applications/networking/remote/vmware-horizon-client/default.nix6
-rw-r--r--pkgs/applications/networking/syncthing/default.nix6
-rw-r--r--pkgs/applications/networking/trayscale/default.nix4
-rw-r--r--pkgs/applications/networking/znc/modules.nix4
-rw-r--r--pkgs/applications/office/appflowy/default.nix4
-rw-r--r--pkgs/applications/office/foliate/default.nix9
-rw-r--r--pkgs/applications/office/morgen/default.nix2
-rw-r--r--pkgs/applications/office/paperless-ngx/default.nix29
-rw-r--r--pkgs/applications/office/qownnotes/default.nix19
-rw-r--r--pkgs/applications/office/treesheets/default.nix8
-rw-r--r--pkgs/applications/office/trilium/desktop.nix6
-rw-r--r--pkgs/applications/office/trilium/server.nix4
-rw-r--r--pkgs/applications/office/tryton/default.nix4
-rw-r--r--pkgs/applications/radio/cloudlog/default.nix4
-rw-r--r--pkgs/applications/radio/limesuite/default.nix3
-rw-r--r--pkgs/applications/radio/quisk/default.nix4
-rw-r--r--pkgs/applications/radio/tqsl/default.nix7
-rw-r--r--pkgs/applications/science/biology/minimap2/default.nix4
-rw-r--r--pkgs/applications/science/biology/seqkit/default.nix4
-rw-r--r--pkgs/applications/science/electronics/nvc/default.nix4
-rw-r--r--pkgs/applications/science/logic/klee/default.nix8
-rw-r--r--pkgs/applications/science/logic/klee/klee-uclibc.nix4
-rw-r--r--pkgs/applications/science/math/almonds/default.nix2
-rw-r--r--pkgs/applications/science/math/eigenmath/default.nix6
-rw-r--r--pkgs/applications/science/math/polymake/default.nix9
-rw-r--r--pkgs/applications/science/misc/boinc/default.nix4
-rw-r--r--pkgs/applications/science/misc/snakemake/default.nix4
-rw-r--r--pkgs/applications/science/robotics/mujoco/default.nix4
-rw-r--r--pkgs/applications/terminal-emulators/blackbox-terminal/default.nix8
-rw-r--r--pkgs/applications/terminal-emulators/foot/default.nix4
-rw-r--r--pkgs/applications/terminal-emulators/st/default.nix4
-rw-r--r--pkgs/applications/version-management/cgit/common.nix2
-rw-r--r--pkgs/applications/version-management/commitizen/default.nix4
-rw-r--r--pkgs/applications/version-management/ghq/default.nix4
-rw-r--r--pkgs/applications/version-management/git-cliff/default.nix6
-rw-r--r--pkgs/applications/version-management/git-credential-oauth/default.nix8
-rw-r--r--pkgs/applications/version-management/git-mit/default.nix6
-rw-r--r--pkgs/applications/version-management/git-repo/default.nix4
-rw-r--r--pkgs/applications/version-management/git-repo/import-ssl-module.patch4
-rw-r--r--pkgs/applications/version-management/git-town/default.nix8
-rw-r--r--pkgs/applications/version-management/glitter/default.nix6
-rw-r--r--pkgs/applications/version-management/pijul/default.nix6
-rw-r--r--pkgs/applications/version-management/sourcehut/builds.nix8
-rw-r--r--pkgs/applications/version-management/sourcehut/core.nix4
-rw-r--r--pkgs/applications/version-management/sourcehut/fix-gqlgen-trimpath.nix10
-rw-r--r--pkgs/applications/version-management/sourcehut/git.nix16
-rw-r--r--pkgs/applications/version-management/sourcehut/hg.nix8
-rw-r--r--pkgs/applications/version-management/sourcehut/hub.nix8
-rw-r--r--pkgs/applications/version-management/sourcehut/lists.nix8
-rw-r--r--pkgs/applications/version-management/sourcehut/man.nix8
-rw-r--r--pkgs/applications/version-management/sourcehut/meta.nix8
-rw-r--r--pkgs/applications/version-management/sourcehut/pages.nix12
-rw-r--r--pkgs/applications/version-management/sourcehut/paste.nix8
-rw-r--r--pkgs/applications/version-management/sourcehut/scm.nix4
-rw-r--r--pkgs/applications/version-management/sourcehut/todo.nix8
-rwxr-xr-xpkgs/applications/version-management/sourcehut/update.sh18
-rw-r--r--pkgs/applications/version-management/ungit/default.nix6
-rw-r--r--pkgs/applications/video/anilibria-winmaclinux/0003-build-with-vlc.patch28
-rw-r--r--pkgs/applications/video/anilibria-winmaclinux/default.nix17
-rw-r--r--pkgs/applications/video/flowblade/default.nix6
-rw-r--r--pkgs/applications/video/manim/default.nix4
-rw-r--r--pkgs/applications/video/mpv/scripts/default.nix1
-rw-r--r--pkgs/applications/video/mpv/scripts/dynamic-crop.nix26
-rw-r--r--pkgs/applications/video/mpv/scripts/modernx-zydezu.nix4
-rw-r--r--pkgs/applications/video/mpv/scripts/sponsorblock-minimal.nix15
-rw-r--r--pkgs/applications/video/mpv/scripts/uosc.nix13
-rw-r--r--pkgs/applications/video/obs-studio/default.nix4
-rw-r--r--pkgs/applications/video/qmplay2/default.nix4
-rw-r--r--pkgs/applications/video/streamlink-twitch-gui/bin.nix14
-rw-r--r--pkgs/applications/virtualization/conmon-rs/default.nix6
-rw-r--r--pkgs/applications/virtualization/containerd/default.nix4
-rw-r--r--pkgs/applications/virtualization/crosvm/default.nix10
-rw-r--r--pkgs/applications/virtualization/docker/compose.nix6
-rw-r--r--pkgs/applications/virtualization/docker/default.nix19
-rw-r--r--pkgs/applications/virtualization/driver/win-pvdrivers/default.nix4
-rw-r--r--pkgs/applications/virtualization/ecs-agent/default.nix4
-rw-r--r--pkgs/applications/virtualization/kraft/default.nix6
-rw-r--r--pkgs/applications/virtualization/looking-glass-client/0001-client-cmake-move-X11-config-directives-to-displayse.patch57
-rw-r--r--pkgs/applications/virtualization/looking-glass-client/default.nix26
-rw-r--r--pkgs/applications/virtualization/virter/default.nix6
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland/default.nix6
-rw-r--r--pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix6
-rw-r--r--pkgs/applications/window-managers/i3/status-rust.nix6
-rw-r--r--pkgs/applications/window-managers/miriway/default.nix6
-rw-r--r--pkgs/applications/window-managers/phosh/default.nix4
-rw-r--r--pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix8
-rw-r--r--pkgs/applications/window-managers/sommelier/default.nix17
-rw-r--r--pkgs/build-support/build-fhsenv-bubblewrap/buildFHSEnv.nix13
-rw-r--r--pkgs/build-support/build-fhsenv-bubblewrap/default.nix2
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix5
-rw-r--r--pkgs/build-support/docker/default.nix4
-rw-r--r--pkgs/build-support/docker/examples.nix18
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/basic-dynamic/default.nix15
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/basic/default.nix15
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/git-dependency-branch/default.nix15
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev-non-workspace-nested-crate/default.nix13
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev/default.nix15
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/git-dependency-tag/default.nix15
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/git-dependency/default.nix15
-rw-r--r--pkgs/build-support/rust/test/import-cargo-lock/v1/default.nix15
-rw-r--r--pkgs/build-support/trivial-builders/test/default.nix6
-rw-r--r--pkgs/build-support/vm/default.nix24
-rw-r--r--pkgs/by-name/_0/_0xpropo/package.nix33
-rw-r--r--pkgs/by-name/_6/_64gram/package.nix7
-rw-r--r--pkgs/by-name/aa/aaaaxy/package.nix6
-rw-r--r--pkgs/by-name/am/amphetype/package.nix15
-rw-r--r--pkgs/by-name/an/anchor/Cargo.lock (renamed from pkgs/development/tools/rust/cargo-lambda/Cargo.lock)5609
-rw-r--r--pkgs/by-name/an/anchor/package.nix48
-rw-r--r--pkgs/by-name/an/annextimelog/package.nix35
-rw-r--r--pkgs/by-name/ar/ark-pixel-font/package.nix11
-rw-r--r--pkgs/by-name/as/asahi-bless/package.nix26
-rw-r--r--pkgs/by-name/as/asahi-btsync/package.nix26
-rw-r--r--pkgs/by-name/as/asahi-nvram/package.nix26
-rw-r--r--pkgs/by-name/as/asahi-wifisync/package.nix26
-rw-r--r--pkgs/by-name/as/ast-grep/package.nix6
-rw-r--r--pkgs/by-name/au/audiness/package.nix36
-rw-r--r--pkgs/by-name/au/audio-sharing/package.nix6
-rw-r--r--pkgs/by-name/ba/bashly/Gemfile.lock12
-rw-r--r--pkgs/by-name/ba/bashly/gemset.nix24
-rw-r--r--pkgs/by-name/bi/bitbake-language-server/package.nix16
-rw-r--r--pkgs/by-name/bl/bluetuith/package.nix6
-rw-r--r--pkgs/by-name/bo/boogie/package.nix4
-rw-r--r--pkgs/by-name/bp/bpftop/package.nix6
-rw-r--r--pkgs/by-name/br/brainstem/package.nix90
-rw-r--r--pkgs/by-name/br/bruno/package.nix13
-rw-r--r--pkgs/by-name/bu/buckle/package.nix35
-rw-r--r--pkgs/by-name/c2/c2patool/package.nix66
-rw-r--r--pkgs/by-name/ca/cargo-autoinherit/package.nix25
-rw-r--r--pkgs/by-name/ca/cargo-expand/package.nix6
-rw-r--r--pkgs/by-name/ca/cargo-make/package.nix6
-rw-r--r--pkgs/by-name/ca/cargo-shear/package.nix24
-rw-r--r--pkgs/by-name/ca/cargo-unfmt/package.nix34
-rw-r--r--pkgs/by-name/cc/cc1541/package.nix40
-rw-r--r--pkgs/by-name/ce/centrifugo/package.nix6
-rw-r--r--pkgs/by-name/ce/cert-viewer/package.nix8
-rw-r--r--pkgs/by-name/ch/changelog-d/package.nix1
-rw-r--r--pkgs/by-name/ch/charm-freeze/package.nix26
-rw-r--r--pkgs/by-name/ch/chess-tui/package.nix26
-rw-r--r--pkgs/by-name/cl/clipcat/package.nix6
-rw-r--r--pkgs/by-name/co/cockpit/package.nix4
-rw-r--r--pkgs/by-name/co/codeium/package.nix10
-rw-r--r--pkgs/by-name/co/colstr/package.nix45
-rw-r--r--pkgs/by-name/co/corrscope/package.nix (renamed from pkgs/applications/video/corrscope/default.nix)34
-rw-r--r--pkgs/by-name/cr/crc/package.nix12
-rw-r--r--pkgs/by-name/cr/crossplane-cli/package.nix6
-rw-r--r--pkgs/by-name/cs/csvkit/package.nix4
-rw-r--r--pkgs/by-name/cu/cue/package.nix4
-rw-r--r--pkgs/by-name/de/deltatouch/package.nix91
-rw-r--r--pkgs/by-name/de/dep-scan/package.nix22
-rw-r--r--pkgs/by-name/de/devcontainer/package.nix70
-rw-r--r--pkgs/by-name/de/devenv/package.nix10
-rw-r--r--pkgs/by-name/dh/dhcpig/package.nix37
-rw-r--r--pkgs/by-name/dm/dmd/binary.nix (renamed from pkgs/development/compilers/dmd/binary.nix)0
-rw-r--r--pkgs/by-name/dm/dmd/bootstrap.nix (renamed from pkgs/development/compilers/dmd/bootstrap.nix)0
-rw-r--r--pkgs/by-name/dm/dmd/generic.nix (renamed from pkgs/development/compilers/dmd/generic.nix)70
-rw-r--r--pkgs/by-name/dm/dmd/package.nix5
-rw-r--r--pkgs/by-name/do/docfd/package.nix41
-rw-r--r--pkgs/by-name/do/dotnet-outdated/package.nix4
-rw-r--r--pkgs/by-name/do/dotslash/package.nix6
-rw-r--r--pkgs/by-name/do/doublecmd/package.nix4
-rw-r--r--pkgs/by-name/ds/dstep/dub-lock.json3
-rw-r--r--pkgs/by-name/ds/dstep/package.nix34
-rw-r--r--pkgs/by-name/dt/dtools/disabled-tests.diff11
-rw-r--r--pkgs/by-name/dt/dtools/fix-ldc-arm64.diff102
-rw-r--r--pkgs/by-name/dt/dtools/package.nix49
-rw-r--r--pkgs/by-name/dy/dyalog/dyalogscript.patch20
-rw-r--r--pkgs/by-name/dy/dyalog/mapl.patch31
-rw-r--r--pkgs/by-name/dy/dyalog/package.nix128
-rw-r--r--pkgs/by-name/ei/eigenlayer/package.nix6
-rw-r--r--pkgs/by-name/el/elasticsearch-curator/package.nix21
-rw-r--r--pkgs/by-name/er/errands/package.nix4
-rw-r--r--pkgs/by-name/et/etlegacy-unwrapped/package.nix5
-rw-r--r--pkgs/by-name/et/etlegacy/package.nix7
-rw-r--r--pkgs/by-name/fe/fernglas/package.nix72
-rw-r--r--pkgs/by-name/fi/files-cli/package.nix6
-rw-r--r--pkgs/by-name/fl/flarectl/package.nix6
-rw-r--r--pkgs/by-name/fm/fm-go/package.nix6
-rw-r--r--pkgs/by-name/fo/forgejo-runner/package.nix (renamed from pkgs/development/tools/continuous-integration/forgejo-actions-runner/default.nix)16
-rw-r--r--pkgs/by-name/fr/francis/package.nix52
-rw-r--r--pkgs/by-name/fw/fwupd/package.nix4
-rw-r--r--pkgs/by-name/ga/gamescope/package.nix (renamed from pkgs/applications/window-managers/gamescope/default.nix)0
-rw-r--r--pkgs/by-name/ga/gamescope/shaders-path.patch (renamed from pkgs/applications/window-managers/gamescope/shaders-path.patch)0
-rw-r--r--pkgs/by-name/ga/gamescope/use-pkgconfig.patch (renamed from pkgs/applications/window-managers/gamescope/use-pkgconfig.patch)0
-rw-r--r--pkgs/by-name/ga/garnet/deps.nix88
-rw-r--r--pkgs/by-name/ga/garnet/package.nix40
-rw-r--r--pkgs/by-name/gi/git-gr/package.nix6
-rw-r--r--pkgs/by-name/gi/gitu/package.nix6
-rw-r--r--pkgs/by-name/gm/gmid/package.nix (renamed from pkgs/servers/gemini/gmid/default.nix)4
-rw-r--r--pkgs/by-name/go/go-critic/package.nix6
-rw-r--r--pkgs/by-name/go/goldwarden/package.nix4
-rw-r--r--pkgs/by-name/go/gordonflashtool/package.nix41
-rw-r--r--pkgs/by-name/gp/gpustat/package.nix71
-rw-r--r--pkgs/by-name/gu/guix/package.nix14
-rw-r--r--pkgs/by-name/gv/gvisor/package.nix (renamed from pkgs/applications/virtualization/gvisor/default.nix)6
-rw-r--r--pkgs/by-name/ha/halloy/Cargo.lock1128
-rw-r--r--pkgs/by-name/ha/halloy/package.nix9
-rw-r--r--pkgs/by-name/ha/hap-py/boost-library-flags.patch50
-rw-r--r--pkgs/by-name/ha/hap-py/package.nix92
-rw-r--r--pkgs/by-name/ha/hap-py/python3.patch342
-rw-r--r--pkgs/by-name/he/helix-gpt/package.nix2
-rw-r--r--pkgs/by-name/he/helix-gpt/pin.json3
-rw-r--r--pkgs/by-name/he/hermitcli/package.nix4
-rw-r--r--pkgs/by-name/hi/hidden-bar/package.nix37
-rw-r--r--pkgs/by-name/ho/home-manager/package.nix6
-rw-r--r--pkgs/by-name/hu/hujsonfmt/package.nix29
-rw-r--r--pkgs/by-name/hy/hyprcursor/package.nix11
-rw-r--r--pkgs/by-name/hy/hyprdim/Cargo.lock1213
-rw-r--r--pkgs/by-name/hy/hyprdim/package.nix11
-rw-r--r--pkgs/by-name/hy/hyprland-monitor-attached/package.nix24
-rw-r--r--pkgs/by-name/i2/i2p/package.nix122
-rw-r--r--pkgs/by-name/ig/igir/package.nix6
-rw-r--r--pkgs/by-name/im/imhex/package.nix20
-rw-r--r--pkgs/by-name/in/incus/lts.nix11
-rw-r--r--pkgs/by-name/in/incus/package.nix6
-rw-r--r--pkgs/by-name/in/inshellisense/package.nix18
-rw-r--r--pkgs/by-name/in/insync-nautilus/package.nix48
-rw-r--r--pkgs/by-name/in/insync/package.nix73
-rw-r--r--pkgs/by-name/in/intiface-central/package.nix6
-rw-r--r--pkgs/by-name/in/intiface-central/pubspec.lock.json206
-rw-r--r--pkgs/by-name/ja/jankyborders/package.nix11
-rw-r--r--pkgs/by-name/ju/justbuild/package.nix14
-rw-r--r--pkgs/by-name/ka/kakoune-lsp/Use-full-Perl-path.patch (renamed from pkgs/tools/misc/kak-lsp/0001-Use-full-Perl-path.patch)0
-rw-r--r--pkgs/by-name/ka/kakoune-lsp/package.nix (renamed from pkgs/tools/misc/kak-lsp/default.nix)14
-rw-r--r--pkgs/by-name/kc/kcl-cli/package.nix27
-rw-r--r--pkgs/by-name/ke/keydb/package.nix106
-rw-r--r--pkgs/by-name/ko/koji/package.nix43
-rw-r--r--pkgs/by-name/ko/kokkos/package.nix4
-rw-r--r--pkgs/by-name/kr/krita-plugin-gmic/package.nix51
-rw-r--r--pkgs/by-name/ld/ldproxy/package.nix29
-rw-r--r--pkgs/by-name/le/lefthook/package.nix6
-rw-r--r--pkgs/by-name/li/liana/Cargo.lock494
-rw-r--r--pkgs/by-name/li/liana/package.nix8
-rw-r--r--pkgs/by-name/li/lightningcss/0001-napi-fix-build-error-in-cargo-auditable.patch16
-rw-r--r--pkgs/by-name/li/lightningcss/package.nix15
-rw-r--r--pkgs/by-name/li/limine/package.nix4
-rw-r--r--pkgs/by-name/ll/llama-cpp/package.nix4
-rw-r--r--pkgs/by-name/lo/local-ai/package.nix208
-rw-r--r--pkgs/by-name/lo/local-ai/tests.nix160
-rw-r--r--pkgs/by-name/lo/loco-cli/Cargo.lock1606
-rw-r--r--pkgs/by-name/lo/loco-cli/package.nix29
-rw-r--r--pkgs/by-name/lo/loksh/package.nix4
-rw-r--r--pkgs/by-name/lu/lubelogger/package.nix4
-rw-r--r--pkgs/by-name/lx/lxd-ui/package.nix9
-rw-r--r--pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix2
-rw-r--r--pkgs/by-name/ma/makima/package.nix32
-rw-r--r--pkgs/by-name/ma/markdown-oxide/Cargo.lock692
-rw-r--r--pkgs/by-name/ma/markdown-oxide/package.nix4
-rw-r--r--pkgs/by-name/mc/mcumgr-client/Cargo.lock965
-rw-r--r--pkgs/by-name/mc/mcumgr-client/package.nix46
-rw-r--r--pkgs/by-name/me/mermaid-cli/package.nix6
-rw-r--r--pkgs/by-name/mi/mihomo/package.nix2
-rw-r--r--pkgs/by-name/mi/min/lock.json52
-rw-r--r--pkgs/by-name/mi/min/package.nix45
-rw-r--r--pkgs/by-name/mi/mini-calc/package.nix30
-rw-r--r--pkgs/by-name/mi/minijinja/package.nix6
-rw-r--r--pkgs/by-name/mo/mountpoint-s3/package.nix6
-rw-r--r--pkgs/by-name/mo/movim/package.nix121
-rw-r--r--pkgs/by-name/my/mystmd/package.nix6
-rw-r--r--pkgs/by-name/na/namespace-cli/package.nix4
-rw-r--r--pkgs/by-name/na/naps2/deps.nix7
-rw-r--r--pkgs/by-name/na/naps2/package.nix9
-rw-r--r--pkgs/by-name/ne/nekoray/nekobox-core.nix36
-rw-r--r--pkgs/by-name/ne/nekoray/nekoray-core.nix26
-rw-r--r--pkgs/by-name/ne/nekoray/package.nix159
-rw-r--r--pkgs/by-name/ne/nezha-agent/package.nix45
-rw-r--r--pkgs/by-name/ng/ngrid/package.nix69
-rw-r--r--pkgs/by-name/nh/nh/package.nix6
-rw-r--r--pkgs/by-name/ni/nilaway/package.nix10
-rw-r--r--pkgs/by-name/ni/nix-inspect/package.nix60
-rw-r--r--pkgs/by-name/nu/nuclei-templates/package.nix13
-rw-r--r--pkgs/by-name/nw/nwg-hello/package.nix4
-rw-r--r--pkgs/by-name/ob/obs-cmd/package.nix6
-rw-r--r--pkgs/by-name/oc/ocis-bin/package.nix8
-rw-r--r--pkgs/by-name/oe/oelint-adv/package.nix5
-rw-r--r--pkgs/by-name/of/offat/package.nix19
-rw-r--r--pkgs/by-name/op/openapi-changes/package.nix41
-rw-r--r--pkgs/by-name/op/opencflite/package.nix2
-rw-r--r--pkgs/by-name/or/orchard/package.nix4
-rw-r--r--pkgs/by-name/pa/pablodraw/deps.nix28
-rw-r--r--pkgs/by-name/pa/pablodraw/package.nix69
-rw-r--r--pkgs/by-name/pa/pacu/package.nix74
-rw-r--r--pkgs/by-name/pa/passt/package.nix52
-rw-r--r--pkgs/by-name/ph/phpunit/package.nix4
-rw-r--r--pkgs/by-name/pi/piv-agent/package.nix41
-rw-r--r--pkgs/by-name/pi/pixel-code/package.nix27
-rw-r--r--pkgs/by-name/pk/pkcs11-provider/package.nix47
-rw-r--r--pkgs/by-name/po/pomodoro-gtk/package.nix63
-rw-r--r--pkgs/by-name/pr/pretalx/package.nix2
-rw-r--r--pkgs/by-name/pr/pretix/language-build.patch12
-rw-r--r--pkgs/by-name/pr/pretix/package.nix35
-rw-r--r--pkgs/by-name/pr/proto/package.nix52
-rw-r--r--pkgs/by-name/pr/protoc-go-inject-tag/package.nix25
-rw-r--r--pkgs/by-name/pr/prowler/package.nix11
-rw-r--r--pkgs/by-name/pu/pupdate/deps.nix53
-rw-r--r--pkgs/by-name/pu/pupdate/package.nix4
-rw-r--r--pkgs/by-name/pw/pwndbg/package.nix58
-rw-r--r--pkgs/by-name/py/pyprland/package.nix4
-rw-r--r--pkgs/by-name/qr/qrtool/package.nix6
-rw-r--r--pkgs/by-name/qu/quarkus/package.nix4
-rw-r--r--pkgs/by-name/ra/rabbit/package.nix4
-rw-r--r--pkgs/by-name/re/realmd/package.nix80
-rw-r--r--pkgs/by-name/re/realmd/remove-tap-driver.patch40
-rw-r--r--pkgs/by-name/re/redict/package.nix94
-rw-r--r--pkgs/by-name/re/renode/package.nix11
-rw-r--r--pkgs/by-name/re/rerun/package.nix11
-rw-r--r--pkgs/by-name/ro/rockcraft/package.nix4
-rw-r--r--pkgs/by-name/rp/rpcs3/package.nix8
-rwxr-xr-xpkgs/by-name/rp/rpcs3/update.sh2
-rw-r--r--pkgs/by-name/rq/rqbit/Cargo.lock217
-rw-r--r--pkgs/by-name/rq/rqbit/package.nix4
-rw-r--r--pkgs/by-name/ru/rustdesk-flutter/Cargo.lock1804
-rw-r--r--pkgs/by-name/ru/rustdesk-flutter/package.nix68
-rw-r--r--pkgs/by-name/ru/rustdesk-flutter/pubspec.lock.json279
-rw-r--r--pkgs/by-name/ry/ryzen-monitor-ng/package.nix41
-rw-r--r--pkgs/by-name/sc/scope-tui/Cargo.lock962
-rw-r--r--pkgs/by-name/sc/scope-tui/package.nix38
-rw-r--r--pkgs/by-name/sc/scrutiny-collector/package.nix4
-rw-r--r--pkgs/by-name/sc/scrutiny/package.nix5
-rw-r--r--pkgs/by-name/se/sesh/package.nix4
-rw-r--r--pkgs/by-name/sh/shanggu-fonts/package.nix70
-rw-r--r--pkgs/by-name/sh/shopware-cli/package.nix6
-rw-r--r--pkgs/by-name/si/simdutf/package.nix4
-rw-r--r--pkgs/by-name/si/simplotask/package.nix4
-rw-r--r--pkgs/by-name/sn/snippetexpander/package.nix21
-rw-r--r--pkgs/by-name/sn/snippetexpanderd/package.nix34
-rw-r--r--pkgs/by-name/sn/snippetexpandergui/package.nix26
-rw-r--r--pkgs/by-name/sn/snippetexpanderx/package.nix10
-rw-r--r--pkgs/by-name/so/solana-cli/Cargo.lock (renamed from pkgs/applications/blockchains/solana/Cargo.lock)0
-rw-r--r--pkgs/by-name/so/solana-cli/package.nix (renamed from pkgs/applications/blockchains/solana/default.nix)37
-rw-r--r--pkgs/by-name/so/solo5/package.nix (renamed from pkgs/os-specific/solo5/default.nix)12
-rw-r--r--pkgs/by-name/sp/spicetify-cli/package.nix6
-rw-r--r--pkgs/by-name/sr/srb2/cmake.patch (renamed from pkgs/games/srb2/cmake.patch)0
-rw-r--r--pkgs/by-name/sr/srb2/package.nix (renamed from pkgs/games/srb2/default.nix)30
-rw-r--r--pkgs/by-name/sr/srb2/thirdparty.patch (renamed from pkgs/games/srb2/thirdparty.patch)0
-rw-r--r--pkgs/by-name/st/stackit-cli/package.nix6
-rw-r--r--pkgs/by-name/st/stats/package.nix4
-rw-r--r--pkgs/by-name/st/steampipe/package.nix6
-rw-r--r--pkgs/by-name/st/stirling-pdf/package.nix4
-rw-r--r--pkgs/by-name/st/stylance-cli/package.nix24
-rw-r--r--pkgs/by-name/sw/swayimg/package.nix4
-rw-r--r--pkgs/by-name/sy/syn2mas/package.nix6
-rw-r--r--pkgs/by-name/sy/syslogng/package.nix3
-rw-r--r--pkgs/by-name/ta/tangerine/package.nix40
-rw-r--r--pkgs/by-name/te/technitium-dns-server/library-nuget-deps.nix5
-rw-r--r--pkgs/by-name/te/technitium-dns-server/nuget-deps.nix5
-rw-r--r--pkgs/by-name/te/technitium-dns-server/package.nix69
-rw-r--r--pkgs/by-name/te/tenki/package.nix6
-rw-r--r--pkgs/by-name/te/tenv/package.nix6
-rw-r--r--pkgs/by-name/th/thcrap-steam-proton-wrapper/package.nix56
-rw-r--r--pkgs/by-name/ti/tinymist/Cargo.lock517
-rw-r--r--pkgs/by-name/ti/tinymist/package.nix13
-rw-r--r--pkgs/by-name/to/tootik/package.nix35
-rw-r--r--pkgs/by-name/tp/tpm2-openssl/package.nix46
-rw-r--r--pkgs/by-name/tp/tpnote/package.nix7
-rw-r--r--pkgs/by-name/tu/tup/package.nix14
-rw-r--r--pkgs/by-name/ty/typos-lsp/package.nix6
-rw-r--r--pkgs/by-name/ty/typst-preview/Cargo.lock79
-rw-r--r--pkgs/by-name/ty/typst-preview/dom.json8
-rw-r--r--pkgs/by-name/ty/typst-preview/frontend.json4
-rw-r--r--pkgs/by-name/ty/typst-preview/package.nix10
-rw-r--r--pkgs/by-name/ty/typstyle/Cargo.lock2
-rw-r--r--pkgs/by-name/ty/typstyle/package.nix4
-rw-r--r--pkgs/by-name/ug/ugm/package.nix37
-rw-r--r--pkgs/by-name/ui/uiua/package.nix6
-rw-r--r--pkgs/by-name/un/unciv/package.nix4
-rw-r--r--pkgs/by-name/up/updatecli/package.nix6
-rwxr-xr-xpkgs/by-name/uu/uuu/package.nix6
-rw-r--r--pkgs/by-name/ux/uxn/package.nix6
-rw-r--r--pkgs/by-name/vi/victoriametrics/package.nix4
-rw-r--r--pkgs/by-name/vu/vunnel/package.nix37
-rw-r--r--pkgs/by-name/vv/vvvvvv/package.nix (renamed from pkgs/games/vvvvvv/default.nix)4
-rw-r--r--pkgs/by-name/wa/walker/package.nix44
-rw-r--r--pkgs/by-name/wa/warp-terminal/versions.json8
-rw-r--r--pkgs/by-name/wa/waybar-mpris/package.nix3
-rw-r--r--pkgs/by-name/wa/wayfarer/package.nix64
-rw-r--r--pkgs/by-name/wh/where-is-my-sddm-theme/package.nix81
-rw-r--r--pkgs/by-name/wo/workout-tracker/package.nix4
-rw-r--r--pkgs/by-name/ws/wslu/package.nix4
-rw-r--r--pkgs/by-name/xe/xevd/package.nix63
-rw-r--r--pkgs/by-name/xe/xeve/package.nix49
-rw-r--r--pkgs/by-name/ya/yamlscript/package.nix4
-rw-r--r--pkgs/by-name/yu/yutto/package.nix12
-rw-r--r--pkgs/by-name/ze/zed-editor/Cargo.lock12702
-rw-r--r--pkgs/by-name/ze/zed-editor/package.nix208
-rw-r--r--pkgs/data/documentation/man-pages/default.nix19
-rw-r--r--pkgs/data/fonts/iosevka/bin.nix2
-rw-r--r--pkgs/data/fonts/iosevka/default.nix6
-rw-r--r--pkgs/data/fonts/iosevka/variants.nix180
-rw-r--r--pkgs/data/fonts/nerdfonts/shas.nix131
-rw-r--r--pkgs/data/fonts/nerdfonts/version.nix2
-rw-r--r--pkgs/data/fonts/sketchybar-app-font/default.nix101
-rw-r--r--pkgs/data/icons/phinger-cursors/default.nix4
-rw-r--r--pkgs/data/icons/pop-icon-theme/default.nix4
-rw-r--r--pkgs/data/icons/whitesur-icon-theme/default.nix4
-rw-r--r--pkgs/data/misc/hackage/pin.json8
-rw-r--r--pkgs/data/misc/sing-geoip/default.nix18
-rw-r--r--pkgs/data/misc/sing-geoip/main.go68
-rw-r--r--pkgs/data/themes/catppuccin-gtk/default.nix13
-rw-r--r--pkgs/data/themes/catppuccin-sddm-corners/default.nix3
-rw-r--r--pkgs/data/themes/catppuccin/default.nix14
-rw-r--r--pkgs/data/themes/dracula-theme/default.nix6
-rw-r--r--pkgs/data/themes/where-is-my-sddm-theme/default.nix50
-rw-r--r--pkgs/data/themes/yaru/default.nix4
-rw-r--r--pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix6
-rw-r--r--pkgs/desktops/gnome/core/gnome-control-center/default.nix4
-rw-r--r--pkgs/desktops/gnome/extensions/arcmenu/default.nix4
-rw-r--r--pkgs/desktops/gnome/extensions/argos/default.nix9
-rw-r--r--pkgs/desktops/gnome/extensions/collisions.json18
-rw-r--r--pkgs/desktops/gnome/extensions/default.nix3
-rw-r--r--pkgs/desktops/gnome/extensions/extensionOverrides.nix8
-rw-r--r--pkgs/desktops/gnome/extensions/extensionOverridesPatches/mullvadindicator_at_pobega.github.com.patch25
-rw-r--r--pkgs/desktops/gnome/extensions/extensions.json1331
-rw-r--r--pkgs/desktops/gnome/extensions/impatience/default.nix4
-rw-r--r--pkgs/desktops/gnome/extensions/pop-shell/default.nix9
-rwxr-xr-xpkgs/desktops/gnome/extensions/update-extensions.py1
-rw-r--r--pkgs/desktops/mate/mate-panel/default.nix4
-rw-r--r--pkgs/desktops/mate/mate-themes/default.nix4
-rw-r--r--pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix14
-rw-r--r--pkgs/development/ada-modules/gprbuild/default.nix2
-rw-r--r--pkgs/development/beam-modules/erlang-ls/default.nix10
-rw-r--r--pkgs/development/beam-modules/erlang-ls/rebar-deps.nix8
-rw-r--r--pkgs/development/compilers/cakelisp/default.nix6
-rw-r--r--pkgs/development/compilers/carp/default.nix2
-rw-r--r--pkgs/development/compilers/circt/default.nix4
-rw-r--r--pkgs/development/compilers/dmd/default.nix5
-rw-r--r--pkgs/development/compilers/dotnet/9/deps.nix17
-rw-r--r--pkgs/development/compilers/dotnet/9/release-info.json6
-rw-r--r--pkgs/development/compilers/dotnet/9/release.json12
-rw-r--r--pkgs/development/compilers/dotnet/combine-deps.nix2
-rw-r--r--pkgs/development/compilers/dotnet/common.nix12
-rw-r--r--pkgs/development/compilers/dotnet/fix-tmp-path.patch27
-rw-r--r--pkgs/development/compilers/dotnet/patch-npm-packages.proj5
-rw-r--r--pkgs/development/compilers/dotnet/patch-nupkgs.nix18
-rw-r--r--pkgs/development/compilers/dotnet/stage0.nix9
-rw-r--r--pkgs/development/compilers/dotnet/stop-passing-bare-sdk-arg-to-swiftc.patch2
-rw-r--r--pkgs/development/compilers/dotnet/versions/9.0.nix199
-rw-r--r--pkgs/development/compilers/dotnet/vmr.nix106
-rw-r--r--pkgs/development/compilers/erg/default.nix6
-rw-r--r--pkgs/development/compilers/ghc/common-hadrian.nix4
-rw-r--r--pkgs/development/compilers/go/1.21.nix1
-rw-r--r--pkgs/development/compilers/go/1.22.nix1
-rw-r--r--pkgs/development/compilers/kaitai-struct-compiler/default.nix2
-rw-r--r--pkgs/development/compilers/llvm/12/default.nix24
-rw-r--r--pkgs/development/compilers/llvm/12/libunwind/default.nix37
-rw-r--r--pkgs/development/compilers/llvm/12/openmp/default.nix48
-rw-r--r--pkgs/development/compilers/llvm/13/default.nix20
-rw-r--r--pkgs/development/compilers/llvm/13/libunwind/default.nix33
-rw-r--r--pkgs/development/compilers/llvm/13/lld/default.nix55
-rw-r--r--pkgs/development/compilers/llvm/13/openmp/default.nix53
-rw-r--r--pkgs/development/compilers/llvm/14/default.nix17
-rw-r--r--pkgs/development/compilers/llvm/14/libunwind/default.nix47
-rw-r--r--pkgs/development/compilers/llvm/14/lld/default.nix58
-rw-r--r--pkgs/development/compilers/llvm/14/openmp/default.nix69
-rw-r--r--pkgs/development/compilers/llvm/15/default.nix17
-rw-r--r--pkgs/development/compilers/llvm/15/libunwind/default.nix67
-rw-r--r--pkgs/development/compilers/llvm/15/lld/default.nix57
-rw-r--r--pkgs/development/compilers/llvm/16/default.nix18
-rw-r--r--pkgs/development/compilers/llvm/16/libunwind/default.nix67
-rw-r--r--pkgs/development/compilers/llvm/16/lld/default.nix58
-rw-r--r--pkgs/development/compilers/llvm/16/openmp/default.nix74
-rw-r--r--pkgs/development/compilers/llvm/17/default.nix15
-rw-r--r--pkgs/development/compilers/llvm/17/libunwind/default.nix63
-rw-r--r--pkgs/development/compilers/llvm/17/lld/default.nix58
-rw-r--r--pkgs/development/compilers/llvm/17/openmp/default.nix74
-rw-r--r--pkgs/development/compilers/llvm/18/default.nix15
-rw-r--r--pkgs/development/compilers/llvm/18/libunwind/default.nix54
-rw-r--r--pkgs/development/compilers/llvm/18/lld/default.nix57
-rw-r--r--pkgs/development/compilers/llvm/18/openmp/default.nix73
-rw-r--r--pkgs/development/compilers/llvm/9/clang/HIP-use-PATH-9.patch80
-rw-r--r--pkgs/development/compilers/llvm/9/clang/compiler-rt-baremetal.patch53
-rw-r--r--pkgs/development/compilers/llvm/9/clang/default.nix140
-rw-r--r--pkgs/development/compilers/llvm/9/clang/gnu-install-dirs.patch278
-rw-r--r--pkgs/development/compilers/llvm/9/clang/purity.patch30
-rw-r--r--pkgs/development/compilers/llvm/9/compiler-rt/armv7l.patch38
-rw-r--r--pkgs/development/compilers/llvm/9/compiler-rt/default.nix123
-rw-r--r--pkgs/development/compilers/llvm/9/compiler-rt/gnu-install-dirs.patch117
-rw-r--r--pkgs/development/compilers/llvm/9/default.nix273
-rw-r--r--pkgs/development/compilers/llvm/9/libcxx/default.nix88
-rw-r--r--pkgs/development/compilers/llvm/9/libcxx/gnu-install-dirs.patch99
-rw-r--r--pkgs/development/compilers/llvm/9/libcxxabi/default.nix85
-rw-r--r--pkgs/development/compilers/llvm/9/libcxxabi/gnu-install-dirs.patch34
-rw-r--r--pkgs/development/compilers/llvm/9/libunwind/default.nix31
-rw-r--r--pkgs/development/compilers/llvm/9/libunwind/gnu-install-dirs.patch34
-rw-r--r--pkgs/development/compilers/llvm/9/lld/default.nix46
-rw-r--r--pkgs/development/compilers/llvm/9/lld/gnu-install-dirs.patch68
-rw-r--r--pkgs/development/compilers/llvm/9/lldb/default.nix117
-rw-r--r--pkgs/development/compilers/llvm/9/lldb/gnu-install-dirs.patch105
-rw-r--r--pkgs/development/compilers/llvm/9/lldb/lldb-gdb-remote-no-libcompress.patch17
-rw-r--r--pkgs/development/compilers/llvm/9/lldb/procfs.patch31
-rw-r--r--pkgs/development/compilers/llvm/9/llvm/default.nix346
-rw-r--r--pkgs/development/compilers/llvm/9/llvm/exegesis-force-bdver2.patch11
-rw-r--r--pkgs/development/compilers/llvm/9/llvm/fix-test-on-non-x86-like-others.patch23
-rw-r--r--pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs-polly.patch106
-rw-r--r--pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs.patch395
-rw-r--r--pkgs/development/compilers/llvm/9/openmp/default.nix37
-rw-r--r--pkgs/development/compilers/llvm/common/libunwind/default.nix87
-rw-r--r--pkgs/development/compilers/llvm/common/lld/default.nix (renamed from pkgs/development/compilers/llvm/12/lld/default.nix)55
-rw-r--r--pkgs/development/compilers/llvm/common/openmp/default.nix (renamed from pkgs/development/compilers/llvm/15/openmp/default.nix)72
-rw-r--r--pkgs/development/compilers/llvm/git/compiler-rt/default.nix2
-rw-r--r--pkgs/development/compilers/llvm/git/default.nix19
-rw-r--r--pkgs/development/compilers/llvm/git/libunwind/default.nix54
-rw-r--r--pkgs/development/compilers/llvm/git/lld/default.nix57
-rw-r--r--pkgs/development/compilers/llvm/git/llvm/default.nix4
-rw-r--r--pkgs/development/compilers/llvm/git/openmp/default.nix73
-rw-r--r--pkgs/development/compilers/mlton/20210117-binary.nix (renamed from pkgs/development/compilers/mlton/20210107-binary.nix)2
-rw-r--r--pkgs/development/compilers/mlton/default.nix6
-rw-r--r--pkgs/development/compilers/orc/default.nix5
-rw-r--r--pkgs/development/coq-modules/vscoq-language-server/default.nix10
-rw-r--r--pkgs/development/cuda-modules/aliases.nix16
-rw-r--r--pkgs/development/cuda-modules/cudatoolkit/default.nix1
-rw-r--r--pkgs/development/cuda-modules/setup-hooks/extension.nix7
-rw-r--r--pkgs/development/embedded/avrdude/default.nix4
-rw-r--r--pkgs/development/embedded/svdtools/default.nix6
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix29
-rw-r--r--pkgs/development/haskell-modules/configuration-darwin.nix2
-rw-r--r--pkgs/development/haskell-modules/configuration-ghc-9.4.x.nix2
-rw-r--r--pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix6
-rw-r--r--pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml4
-rw-r--r--pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml1
-rw-r--r--pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml86
-rw-r--r--pkgs/development/haskell-modules/configuration-nix.nix2
-rw-r--r--pkgs/development/haskell-modules/hackage-packages.nix2236
-rw-r--r--pkgs/development/interpreters/bats/libraries.nix6
-rw-r--r--pkgs/development/interpreters/cling/default.nix107
-rw-r--r--pkgs/development/interpreters/cling/fix-llvm-dylib-usage.patch24
-rw-r--r--pkgs/development/interpreters/cling/fix-llvm-include.patch27
-rw-r--r--pkgs/development/interpreters/cling/force-install-cling-targets.patch16
-rw-r--r--pkgs/development/interpreters/erlang/24.nix4
-rw-r--r--pkgs/development/interpreters/erlang/26.nix4
-rw-r--r--pkgs/development/interpreters/erlang/generic-builder.nix3
-rw-r--r--pkgs/development/interpreters/expr/default.nix6
-rw-r--r--pkgs/development/interpreters/luau/default.nix5
-rw-r--r--pkgs/development/interpreters/php/8.1.nix14
-rw-r--r--pkgs/development/interpreters/php/8.2.nix4
-rw-r--r--pkgs/development/interpreters/php/8.3.nix4
-rw-r--r--pkgs/development/interpreters/picolisp/default.nix85
-rw-r--r--pkgs/development/java-modules/jna/default.nix16
-rw-r--r--pkgs/development/libraries/botan/3.0.nix4
-rw-r--r--pkgs/development/libraries/box2d/default.nix65
-rw-r--r--pkgs/development/libraries/c-blosc/2.nix4
-rw-r--r--pkgs/development/libraries/capstone/4.nix35
-rw-r--r--pkgs/development/libraries/capstone/default.nix8
-rw-r--r--pkgs/development/libraries/cista/default.nix4
-rw-r--r--pkgs/development/libraries/ctranslate2/default.nix4
-rw-r--r--pkgs/development/libraries/duckdb/default.nix1
-rw-r--r--pkgs/development/libraries/eclib/default.nix4
-rw-r--r--pkgs/development/libraries/entt/default.nix4
-rw-r--r--pkgs/development/libraries/faudio/default.nix4
-rw-r--r--pkgs/development/libraries/ffmpeg/default.nix9
-rw-r--r--pkgs/development/libraries/ffmpeg/generic.nix28
-rw-r--r--pkgs/development/libraries/flint/default.nix3
-rw-r--r--pkgs/development/libraries/gdal/default.nix4
-rw-r--r--pkgs/development/libraries/hax11/default.nix2
-rw-r--r--pkgs/development/libraries/hunspell/dictionaries.nix2
-rw-r--r--pkgs/development/libraries/igraph/default.nix4
-rw-r--r--pkgs/development/libraries/imgui/default.nix4
-rw-r--r--pkgs/development/libraries/jose/default.nix5
-rw-r--r--pkgs/development/libraries/kde-frameworks/kio/default.nix6
-rw-r--r--pkgs/development/libraries/libhugetlbfs/default.nix17
-rw-r--r--pkgs/development/libraries/libimobiledevice-glue/default.nix2
-rw-r--r--pkgs/development/libraries/libimobiledevice/default.nix2
-rw-r--r--pkgs/development/libraries/libmspack/default.nix4
-rw-r--r--pkgs/development/libraries/libplist/default.nix2
-rw-r--r--pkgs/development/libraries/libpulsar/default.nix4
-rw-r--r--pkgs/development/libraries/libressl/default.nix5
-rw-r--r--pkgs/development/libraries/libserdes/default.nix2
-rw-r--r--pkgs/development/libraries/libtiff/default.nix1
-rw-r--r--pkgs/development/libraries/libusbmuxd/default.nix2
-rw-r--r--pkgs/development/libraries/litehtml/default.nix8
-rw-r--r--pkgs/development/libraries/nco/default.nix4
-rw-r--r--pkgs/development/libraries/nghttp3/default.nix10
-rw-r--r--pkgs/development/libraries/ngtcp2/default.nix14
-rw-r--r--pkgs/development/libraries/podofo/0.10.x.nix4
-rw-r--r--pkgs/development/libraries/podofo/default.nix9
-rw-r--r--pkgs/development/libraries/qmlbox2d/default.nix46
-rw-r--r--pkgs/development/libraries/qt-6/default.nix22
-rw-r--r--pkgs/development/libraries/qt-6/fetch.sh2
-rw-r--r--pkgs/development/libraries/qt-6/modules/qtdeclarative.nix4
-rw-r--r--pkgs/development/libraries/qt-6/modules/qtmqtt.nix4
-rw-r--r--pkgs/development/libraries/qt-6/modules/qtwebengine.nix3
-rw-r--r--pkgs/development/libraries/qt-6/patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch9
-rw-r--r--pkgs/development/libraries/qt-6/patches/0001-qtdeclarative-disable-qml-disk-cache.patch (renamed from pkgs/development/libraries/qt-6/patches/qtdeclarative-default-disable-qmlcache.patch)9
-rw-r--r--pkgs/development/libraries/qt-6/patches/0002-qtbase-qmake-fix-mkspecs-for-darwin.patch20
-rw-r--r--pkgs/development/libraries/qt-6/patches/0002-qtdeclarative-also-use-versioned-qml-paths.patch (renamed from pkgs/development/libraries/qt-6/patches/qtdeclarative-qml-paths.patch)13
-rw-r--r--pkgs/development/libraries/qt-6/patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch9
-rw-r--r--pkgs/development/libraries/qt-6/patches/0004-qtbase-deal-with-a-font-face-at-index-0-as-Regular-f.patch26
-rw-r--r--pkgs/development/libraries/qt-6/patches/0004-qtbase-qt-cmake-always-use-cmake-from-path.patch48
-rw-r--r--pkgs/development/libraries/qt-6/patches/0005-qtbase-find-tools-in-PATH.patch (renamed from pkgs/development/libraries/qt-6/patches/0006-qtbase-find-tools-in-PATH.patch)11
-rw-r--r--pkgs/development/libraries/qt-6/patches/0005-qtbase-qt-cmake-always-use-cmake-from-path.patch32
-rw-r--r--pkgs/development/libraries/qt-6/patches/0006-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch (renamed from pkgs/development/libraries/qt-6/patches/0007-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch)11
-rw-r--r--pkgs/development/libraries/qt-6/patches/0007-qtbase-allow-translations-outside-prefix.patch (renamed from pkgs/development/libraries/qt-6/patches/0008-qtbase-allow-translations-outside-prefix.patch)8
-rw-r--r--pkgs/development/libraries/qt-6/patches/0008-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch (renamed from pkgs/development/libraries/qt-6/patches/0009-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch)12
-rw-r--r--pkgs/development/libraries/qt-6/patches/0009-qtbase-check-in-the-QML-folder-of-this-library-does-.patch (renamed from pkgs/development/libraries/qt-6/patches/0010-qtbase-check-in-the-QML-folder-of-this-library-does-.patch)13
-rw-r--r--pkgs/development/libraries/qt-6/patches/0010-qtbase-derive-plugin-load-path-from-PATH.patch (renamed from pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch)11
-rw-r--r--pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-copy-certificate-chain.patch16
-rw-r--r--pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-low-latency-flag.patch61
-rw-r--r--pkgs/development/libraries/qt-6/srcs.nix312
-rw-r--r--pkgs/development/libraries/quantlib/default.nix16
-rw-r--r--pkgs/development/libraries/rapidfuzz-cpp/default.nix4
-rw-r--r--pkgs/development/libraries/science/astronomy/indilib/default.nix4
-rw-r--r--pkgs/development/libraries/science/astronomy/indilib/indi-full.nix2
-rw-r--r--pkgs/development/libraries/sentry-native/default.nix4
-rw-r--r--pkgs/development/libraries/simdjson/default.nix4
-rw-r--r--pkgs/development/libraries/spglib/default.nix4
-rw-r--r--pkgs/development/libraries/virglrenderer/default.nix11
-rw-r--r--pkgs/development/libraries/webkitgtk/default.nix8
-rw-r--r--pkgs/development/libraries/xgboost/default.nix12
-rw-r--r--pkgs/development/libraries/yyjson/default.nix5
-rw-r--r--pkgs/development/lisp-modules/packages.nix6
-rw-r--r--pkgs/development/lua-modules/generated-packages.nix62
-rw-r--r--pkgs/development/lua-modules/overrides.nix12
-rwxr-xr-xpkgs/development/lua-modules/updater/updater.py2
-rw-r--r--pkgs/development/misc/juce/default.nix4
-rw-r--r--pkgs/development/node-packages/overrides.nix2
-rw-r--r--pkgs/development/ocaml-modules/cfstream/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/charInfo_width/default.nix22
-rw-r--r--pkgs/development/ocaml-modules/eio/posix.nix6
-rw-r--r--pkgs/development/ocaml-modules/janestreet/0.12.nix31
-rw-r--r--pkgs/development/ocaml-modules/janestreet/default.nix610
-rw-r--r--pkgs/development/ocaml-modules/janestreet/janePackage.nix23
-rw-r--r--pkgs/development/ocaml-modules/janestreet/janePackage_0_12.nix6
-rw-r--r--pkgs/development/ocaml-modules/landmarks-ppx/default.nix18
-rw-r--r--pkgs/development/ocaml-modules/landmarks/default.nix23
-rw-r--r--pkgs/development/ocaml-modules/metadata/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ppxlib/default.nix1
-rw-r--r--pkgs/development/ocaml-modules/re/default.nix6
-rw-r--r--pkgs/development/ocaml-modules/secp256k1/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/stdlib-shims/default.nix7
-rw-r--r--pkgs/development/ocaml-modules/wayland/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/zed/default.nix26
-rw-r--r--pkgs/development/php-packages/mongodb/default.nix4
-rw-r--r--pkgs/development/php-packages/opentelemetry/default.nix4
-rw-r--r--pkgs/development/python-modules/aggdraw/default.nix13
-rw-r--r--pkgs/development/python-modules/ailment/default.nix29
-rw-r--r--pkgs/development/python-modules/aio-pika/default.nix53
-rw-r--r--pkgs/development/python-modules/aioasuswrt/default.nix50
-rw-r--r--pkgs/development/python-modules/aioautomower/default.nix6
-rw-r--r--pkgs/development/python-modules/aiodhcpwatcher/default.nix4
-rw-r--r--pkgs/development/python-modules/aioeafm/default.nix38
-rw-r--r--pkgs/development/python-modules/aiolifx-themes/default.nix4
-rw-r--r--pkgs/development/python-modules/aiolifx/default.nix37
-rw-r--r--pkgs/development/python-modules/aionut/default.nix46
-rw-r--r--pkgs/development/python-modules/aioopenexchangerates/default.nix4
-rw-r--r--pkgs/development/python-modules/aiopvapi/default.nix38
-rw-r--r--pkgs/development/python-modules/aiortm/default.nix45
-rw-r--r--pkgs/development/python-modules/ajsonrpc/default.nix22
-rw-r--r--pkgs/development/python-modules/angr/default.nix81
-rw-r--r--pkgs/development/python-modules/angrop/default.nix25
-rw-r--r--pkgs/development/python-modules/anywidget/default.nix10
-rw-r--r--pkgs/development/python-modules/aplpy/default.nix14
-rw-r--r--pkgs/development/python-modules/appthreat-vulnerability-db/default.nix51
-rw-r--r--pkgs/development/python-modules/apsw/default.nix29
-rw-r--r--pkgs/development/python-modules/archinfo/default.nix35
-rw-r--r--pkgs/development/python-modules/arviz/default.nix19
-rw-r--r--pkgs/development/python-modules/asf-search/default.nix55
-rw-r--r--pkgs/development/python-modules/astropy-iers-data/default.nix4
-rw-r--r--pkgs/development/python-modules/auth0-python/default.nix6
-rw-r--r--pkgs/development/python-modules/aws-lambda-builders/default.nix4
-rw-r--r--pkgs/development/python-modules/axis/default.nix35
-rw-r--r--pkgs/development/python-modules/azure-batch/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-eventgrid/default.nix8
-rw-r--r--pkgs/development/python-modules/azure-eventhub/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix37
-rw-r--r--pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix34
-rw-r--r--pkgs/development/python-modules/azure-mgmt-botservice/default.nix34
-rw-r--r--pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix28
-rw-r--r--pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix37
-rw-r--r--pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix24
-rw-r--r--pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix36
-rw-r--r--pkgs/development/python-modules/azure-mgmt-kusto/azure-mgmt-apimanagement/default.nix31
-rw-r--r--pkgs/development/python-modules/azure-mgmt-kusto/default.nix24
-rw-r--r--pkgs/development/python-modules/azure-mgmt-managedservices/default.nix36
-rw-r--r--pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix36
-rw-r--r--pkgs/development/python-modules/azure-mgmt-synapse/default.nix31
-rw-r--r--pkgs/development/python-modules/azure-multiapi-storage/default.nix35
-rw-r--r--pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix28
-rw-r--r--pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix28
-rw-r--r--pkgs/development/python-modules/azure-synapse-spark/default.nix28
-rw-r--r--pkgs/development/python-modules/b2sdk/default.nix83
-rw-r--r--pkgs/development/python-modules/batinfo/default.nix46
-rw-r--r--pkgs/development/python-modules/bellows/default.nix13
-rw-r--r--pkgs/development/python-modules/bleak-retry-connector/default.nix43
-rw-r--r--pkgs/development/python-modules/boltons/default.nix4
-rw-r--r--pkgs/development/python-modules/boto3-stubs/default.nix2161
-rw-r--r--pkgs/development/python-modules/bring-api/default.nix48
-rw-r--r--pkgs/development/python-modules/brother/default.nix4
-rw-r--r--pkgs/development/python-modules/capstone/4.nix40
-rw-r--r--pkgs/development/python-modules/capstone/default.nix4
-rw-r--r--pkgs/development/python-modules/catppuccin/default.nix12
-rw-r--r--pkgs/development/python-modules/clarabel/default.nix2
-rw-r--r--pkgs/development/python-modules/clarifai-grpc/default.nix27
-rw-r--r--pkgs/development/python-modules/clarifai/default.nix76
-rw-r--r--pkgs/development/python-modules/claripy/default.nix39
-rw-r--r--pkgs/development/python-modules/cle/default.nix46
-rw-r--r--pkgs/development/python-modules/clickhouse-connect/default.nix4
-rw-r--r--pkgs/development/python-modules/clifford/default.nix13
-rw-r--r--pkgs/development/python-modules/cloudsmith-api/default.nix4
-rw-r--r--pkgs/development/python-modules/craft-grammar/default.nix4
-rw-r--r--pkgs/development/python-modules/credstash/default.nix51
-rw-r--r--pkgs/development/python-modules/crytic-compile/default.nix4
-rw-r--r--pkgs/development/python-modules/cvss/default.nix4
-rw-r--r--pkgs/development/python-modules/cwl-utils/default.nix46
-rw-r--r--pkgs/development/python-modules/dazl/default.nix2
-rw-r--r--pkgs/development/python-modules/dfdiskcache/default.nix45
-rw-r--r--pkgs/development/python-modules/dirigera/default.nix4
-rw-r--r--pkgs/development/python-modules/django-countries/default.nix14
-rw-r--r--pkgs/development/python-modules/django-filter/default.nix13
-rw-r--r--pkgs/development/python-modules/django-import-export/default.nix4
-rw-r--r--pkgs/development/python-modules/django-vite/default.nix4
-rw-r--r--pkgs/development/python-modules/django-webpack-loader/default.nix28
-rw-r--r--pkgs/development/python-modules/django/5.nix18
-rw-r--r--pkgs/development/python-modules/dsnap/default.nix52
-rw-r--r--pkgs/development/python-modules/dvc-render/default.nix47
-rw-r--r--pkgs/development/python-modules/elastic-apm/default.nix98
-rw-r--r--pkgs/development/python-modules/elasticsearch-dsl/default.nix4
-rw-r--r--pkgs/development/python-modules/es-client/default.nix54
-rw-r--r--pkgs/development/python-modules/eval-type-backport/default.nix35
-rw-r--r--pkgs/development/python-modules/exchangelib/default.nix73
-rw-r--r--pkgs/development/python-modules/flask-admin/default.nix88
-rw-r--r--pkgs/development/python-modules/flask-paginate/default.nix38
-rw-r--r--pkgs/development/python-modules/fontbakery/default.nix29
-rw-r--r--pkgs/development/python-modules/forecast-solar/default.nix19
-rw-r--r--pkgs/development/python-modules/fyta-cli/default.nix40
-rw-r--r--pkgs/development/python-modules/garminconnect/default.nix31
-rw-r--r--pkgs/development/python-modules/gdb-pt-dump/default.nix29
-rw-r--r--pkgs/development/python-modules/gekko/default.nix38
-rw-r--r--pkgs/development/python-modules/gflanguages/default.nix13
-rw-r--r--pkgs/development/python-modules/gfsubsets/default.nix47
-rw-r--r--pkgs/development/python-modules/glyphsets/0001-relax-setuptools-scm-dep.patch22
-rw-r--r--pkgs/development/python-modules/glyphsets/default.nix22
-rw-r--r--pkgs/development/python-modules/goodwe/default.nix30
-rw-r--r--pkgs/development/python-modules/google-cloud-securitycenter/default.nix31
-rw-r--r--pkgs/development/python-modules/google-cloud-speech/default.nix4
-rw-r--r--pkgs/development/python-modules/google-generativeai/default.nix50
-rw-r--r--pkgs/development/python-modules/gradio-pdf/default.nix4
-rw-r--r--pkgs/development/python-modules/graphene-django/default.nix4
-rw-r--r--pkgs/development/python-modules/hahomematic/default.nix20
-rw-r--r--pkgs/development/python-modules/hass-nabucasa/default.nix64
-rw-r--r--pkgs/development/python-modules/herepy/default.nix4
-rw-r--r--pkgs/development/python-modules/hikari/default.nix80
-rw-r--r--pkgs/development/python-modules/homeassistant-bring-api/default.nix45
-rw-r--r--pkgs/development/python-modules/htmldate/default.nix77
-rw-r--r--pkgs/development/python-modules/httpsig/default.nix16
-rw-r--r--pkgs/development/python-modules/hwi/default.nix4
-rw-r--r--pkgs/development/python-modules/indexed-bzip2/default.nix7
-rw-r--r--pkgs/development/python-modules/indexed-gzip/default.nix6
-rw-r--r--pkgs/development/python-modules/indexed-zstd/default.nix8
-rw-r--r--pkgs/development/python-modules/ipykernel/default.nix4
-rw-r--r--pkgs/development/python-modules/ipyparallel/default.nix4
-rw-r--r--pkgs/development/python-modules/ipyvuetify/default.nix4
-rw-r--r--pkgs/development/python-modules/jaraco-abode/default.nix17
-rw-r--r--pkgs/development/python-modules/javaobj-py3/default.nix4
-rw-r--r--pkgs/development/python-modules/jenkins-job-builder/default.nix4
-rw-r--r--pkgs/development/python-modules/junos-eznc/default.nix61
-rw-r--r--pkgs/development/python-modules/jupyterhub/default.nix4
-rw-r--r--pkgs/development/python-modules/jupyterlab-server/default.nix4
-rw-r--r--pkgs/development/python-modules/jupyterlab/default.nix4
-rw-r--r--pkgs/development/python-modules/kaggle/default.nix4
-rw-r--r--pkgs/development/python-modules/labelbox/default.nix37
-rw-r--r--pkgs/development/python-modules/langchain-community/default.nix4
-rw-r--r--pkgs/development/python-modules/langchain-core/default.nix4
-rw-r--r--pkgs/development/python-modules/langchain/default.nix4
-rw-r--r--pkgs/development/python-modules/langsmith/default.nix4
-rw-r--r--pkgs/development/python-modules/linien-common/default.nix4
-rw-r--r--pkgs/development/python-modules/litellm/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-core/default.nix4
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix34
-rw-r--r--pkgs/development/python-modules/llama-index-embeddings-google/default.nix36
-rw-r--r--pkgs/development/python-modules/llama-index-llms-openai/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix27
-rw-r--r--pkgs/development/python-modules/llama-index-readers-file/default.nix40
-rw-r--r--pkgs/development/python-modules/llama-index-readers-s3/default.nix29
-rw-r--r--pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix4
-rw-r--r--pkgs/development/python-modules/llamaindex-py-client/default.nix4
-rw-r--r--pkgs/development/python-modules/marimo/default.nix4
-rw-r--r--pkgs/development/python-modules/memory-allocator/default.nix4
-rw-r--r--pkgs/development/python-modules/meshtastic/default.nix67
-rw-r--r--pkgs/development/python-modules/midea-beautiful-air/default.nix54
-rw-r--r--pkgs/development/python-modules/mido/default.nix6
-rw-r--r--pkgs/development/python-modules/mitogen/default.nix4
-rw-r--r--pkgs/development/python-modules/mkdocs-material/default.nix4
-rw-r--r--pkgs/development/python-modules/mkdocstrings-python/default.nix33
-rw-r--r--pkgs/development/python-modules/mkdocstrings/default.nix69
-rw-r--r--pkgs/development/python-modules/moderngl-window/default.nix4
-rw-r--r--pkgs/development/python-modules/molecule/default.nix70
-rw-r--r--pkgs/development/python-modules/monty/default.nix4
-rw-r--r--pkgs/development/python-modules/mplhep/default.nix4
-rw-r--r--pkgs/development/python-modules/msal/default.nix4
-rw-r--r--pkgs/development/python-modules/mujoco/default.nix4
-rw-r--r--pkgs/development/python-modules/multiset/default.nix4
-rw-r--r--pkgs/development/python-modules/mypy-boto3/default.nix38
-rw-r--r--pkgs/development/python-modules/nbformat/default.nix14
-rw-r--r--pkgs/development/python-modules/niaarm/default.nix4
-rw-r--r--pkgs/development/python-modules/numba/default.nix4
-rw-r--r--pkgs/development/python-modules/oci/default.nix4
-rw-r--r--pkgs/development/python-modules/oncalendar/default.nix28
-rw-r--r--pkgs/development/python-modules/openai/default.nix4
-rw-r--r--pkgs/development/python-modules/optimum/default.nix4
-rw-r--r--pkgs/development/python-modules/optuna/default.nix4
-rw-r--r--pkgs/development/python-modules/oras/default.nix35
-rw-r--r--pkgs/development/python-modules/orbax-checkpoint/default.nix51
-rw-r--r--pkgs/development/python-modules/osc/default.nix6
-rw-r--r--pkgs/development/python-modules/paste/default.nix4
-rw-r--r--pkgs/development/python-modules/pbs-installer/default.nix50
-rw-r--r--pkgs/development/python-modules/pillow-heif/default.nix4
-rw-r--r--pkgs/development/python-modules/ping3/default.nix35
-rw-r--r--pkgs/development/python-modules/playwrightcapture/default.nix52
-rw-r--r--pkgs/development/python-modules/pplpy/default.nix4
-rw-r--r--pkgs/development/python-modules/pre-commit-hooks/default.nix4
-rw-r--r--pkgs/development/python-modules/psd-tools/default.nix6
-rw-r--r--pkgs/development/python-modules/publicsuffix/default.nix20
-rw-r--r--pkgs/development/python-modules/publicsuffix2/default.nix15
-rw-r--r--pkgs/development/python-modules/publicsuffixlist/default.nix4
-rw-r--r--pkgs/development/python-modules/pubnub/default.nix41
-rw-r--r--pkgs/development/python-modules/pwndbg/default.nix80
-rw-r--r--pkgs/development/python-modules/pyTelegramBotAPI/default.nix90
-rw-r--r--pkgs/development/python-modules/pyads/default.nix41
-rw-r--r--pkgs/development/python-modules/pybotvac/default.nix38
-rw-r--r--pkgs/development/python-modules/pybotvac/urllib3-2.0-compat.patch21
-rw-r--r--pkgs/development/python-modules/pycaption/default.nix4
-rw-r--r--pkgs/development/python-modules/pydantic/default.nix20
-rw-r--r--pkgs/development/python-modules/pyfibaro/default.nix39
-rw-r--r--pkgs/development/python-modules/pyformlang/default.nix4
-rw-r--r--pkgs/development/python-modules/pyftdi/default.nix32
-rw-r--r--pkgs/development/python-modules/pykakasi/default.nix15
-rw-r--r--pkgs/development/python-modules/pylibftdi/default.nix34
-rw-r--r--pkgs/development/python-modules/pylitterbot/default.nix4
-rw-r--r--pkgs/development/python-modules/pymodbus/default.nix73
-rw-r--r--pkgs/development/python-modules/pymumble/default.nix2
-rw-r--r--pkgs/development/python-modules/pynitrokey/default.nix6
-rw-r--r--pkgs/development/python-modules/pynobo/default.nix23
-rw-r--r--pkgs/development/python-modules/pyocd/default.nix4
-rw-r--r--pkgs/development/python-modules/pyqt/6.x.nix18
-rw-r--r--pkgs/development/python-modules/pyquil/default.nix80
-rw-r--r--pkgs/development/python-modules/pyradios/default.nix2
-rw-r--r--pkgs/development/python-modules/pyrisco/default.nix4
-rw-r--r--pkgs/development/python-modules/pyside6/default.nix4
-rw-r--r--pkgs/development/python-modules/pysmi-lextudio/default.nix4
-rw-r--r--pkgs/development/python-modules/pysnmp-lextudio/default.nix4
-rw-r--r--pkgs/development/python-modules/pytenable/default.nix51
-rw-r--r--pkgs/development/python-modules/pytest-aio/default.nix52
-rw-r--r--pkgs/development/python-modules/pytest-bdd/default.nix61
-rw-r--r--pkgs/development/python-modules/pytest-jupyter/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-notebook/default.nix4
-rw-r--r--pkgs/development/python-modules/python-digitalocean/default.nix (renamed from pkgs/development/python-modules/digitalocean/default.nix)46
-rw-r--r--pkgs/development/python-modules/python-docs-theme/default.nix4
-rw-r--r--pkgs/development/python-modules/python-homewizard-energy/default.nix4
-rw-r--r--pkgs/development/python-modules/python-motionmount/default.nix36
-rw-r--r--pkgs/development/python-modules/python-roborock/default.nix62
-rw-r--r--pkgs/development/python-modules/python-telegram-bot/default.nix4
-rw-r--r--pkgs/development/python-modules/pytorch-metric-learning/default.nix4
-rw-r--r--pkgs/development/python-modules/pytorch-pfn-extras/default.nix60
-rw-r--r--pkgs/development/python-modules/pyvex/default.nix4
-rw-r--r--pkgs/development/python-modules/qcs-api-client/default.nix58
-rw-r--r--pkgs/development/python-modules/qcs-sdk-python/Cargo.lock1067
-rw-r--r--pkgs/development/python-modules/qcs-sdk-python/default.nix31
-rw-r--r--pkgs/development/python-modules/qtile-extras/default.nix6
-rw-r--r--pkgs/development/python-modules/qtile/default.nix2
-rw-r--r--pkgs/development/python-modules/quart/default.nix15
-rw-r--r--pkgs/development/python-modules/quil/default.nix29
-rw-r--r--pkgs/development/python-modules/radio-beam/default.nix12
-rw-r--r--pkgs/development/python-modules/randomfiletree/default.nix26
-rw-r--r--pkgs/development/python-modules/rapidfuzz/default.nix8
-rw-r--r--pkgs/development/python-modules/rapidgzip/default.nix11
-rw-r--r--pkgs/development/python-modules/rarfile/default.nix6
-rw-r--r--pkgs/development/python-modules/rasterio/default.nix25
-rw-r--r--pkgs/development/python-modules/ratarmount/default.nix4
-rw-r--r--pkgs/development/python-modules/ratarmountcore/default.nix32
-rw-r--r--pkgs/development/python-modules/reconplogger/default.nix41
-rw-r--r--pkgs/development/python-modules/reptor/default.nix85
-rw-r--r--pkgs/development/python-modules/reuse/default.nix4
-rw-r--r--pkgs/development/python-modules/ring-doorbell/default.nix4
-rw-r--r--pkgs/development/python-modules/riscv-config/default.nix43
-rw-r--r--pkgs/development/python-modules/robotframework-requests/default.nix4
-rw-r--r--pkgs/development/python-modules/roombapy/default.nix15
-rw-r--r--pkgs/development/python-modules/sagemaker/default.nix40
-rw-r--r--pkgs/development/python-modules/schema-salad/default.nix89
-rw-r--r--pkgs/development/python-modules/scs/default.nix2
-rw-r--r--pkgs/development/python-modules/semver/default.nix39
-rw-r--r--pkgs/development/python-modules/sentry-sdk/default.nix162
-rw-r--r--pkgs/development/python-modules/setuptools-git-versioning/default.nix4
-rw-r--r--pkgs/development/python-modules/shaperglot/default.nix12
-rw-r--r--pkgs/development/python-modules/shiboken6/default.nix16
-rw-r--r--pkgs/development/python-modules/sievelib/default.nix32
-rw-r--r--pkgs/development/python-modules/simplesqlite/default.nix46
-rw-r--r--pkgs/development/python-modules/snakemake-interface-common/default.nix36
-rw-r--r--pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix4
-rw-r--r--pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix54
-rw-r--r--pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix51
-rw-r--r--pkgs/development/python-modules/snowflake-connector-python/default.nix95
-rw-r--r--pkgs/development/python-modules/sparse/default.nix23
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix4
-rw-r--r--pkgs/development/python-modules/spsdk/default.nix7
-rw-r--r--pkgs/development/python-modules/sqliteschema/default.nix55
-rw-r--r--pkgs/development/python-modules/sqlmap/default.nix28
-rw-r--r--pkgs/development/python-modules/sse-starlette/default.nix43
-rw-r--r--pkgs/development/python-modules/std-uritemplate/default.nix23
-rw-r--r--pkgs/development/python-modules/streamlit/default.nix4
-rw-r--r--pkgs/development/python-modules/survey/default.nix4
-rw-r--r--pkgs/development/python-modules/systembridgemodels/default.nix6
-rw-r--r--pkgs/development/python-modules/tcxreader/default.nix4
-rw-r--r--pkgs/development/python-modules/tencentcloud-sdk-python/default.nix35
-rw-r--r--pkgs/development/python-modules/testcontainers/default.nix9
-rw-r--r--pkgs/development/python-modules/testrail-api/default.nix7
-rw-r--r--pkgs/development/python-modules/tololib/default.nix14
-rw-r--r--pkgs/development/python-modules/torch/bin.nix2
-rw-r--r--pkgs/development/python-modules/torch/binary-hashes.nix98
-rw-r--r--pkgs/development/python-modules/torch/default.nix4
-rw-r--r--pkgs/development/python-modules/torchaudio/bin.nix2
-rw-r--r--pkgs/development/python-modules/torchaudio/binary-hashes.nix98
-rw-r--r--pkgs/development/python-modules/torchaudio/default.nix4
-rw-r--r--pkgs/development/python-modules/torchvision/bin.nix2
-rw-r--r--pkgs/development/python-modules/torchvision/binary-hashes.nix74
-rw-r--r--pkgs/development/python-modules/torchvision/default.nix4
-rw-r--r--pkgs/development/python-modules/trafilatura/default.nix4
-rw-r--r--pkgs/development/python-modules/trimesh/default.nix4
-rw-r--r--pkgs/development/python-modules/trytond/default.nix4
-rw-r--r--pkgs/development/python-modules/twilio/default.nix47
-rw-r--r--pkgs/development/python-modules/typeguard/default.nix4
-rw-r--r--pkgs/development/python-modules/types-aiobotocore-packages/default.nix698
-rw-r--r--pkgs/development/python-modules/types-aiobotocore/default.nix10
-rwxr-xr-x[-rw-r--r--]pkgs/development/python-modules/types-aiobotocore/update.sh4
-rw-r--r--pkgs/development/python-modules/types-dataclasses/default.nix31
-rw-r--r--pkgs/development/python-modules/types-docutils/default.nix21
-rw-r--r--pkgs/development/python-modules/types-pillow/default.nix4
-rw-r--r--pkgs/development/python-modules/types-protobuf/default.nix4
-rw-r--r--pkgs/development/python-modules/types-requests/default.nix4
-rw-r--r--pkgs/development/python-modules/types-setuptools/default.nix4
-rw-r--r--pkgs/development/python-modules/umap-learn/default.nix4
-rw-r--r--pkgs/development/python-modules/unearth/default.nix17
-rw-r--r--pkgs/development/python-modules/unicurses/default.nix4
-rw-r--r--pkgs/development/python-modules/universal-silabs-flasher/default.nix11
-rw-r--r--pkgs/development/python-modules/unstructured/default.nix4
-rw-r--r--pkgs/development/python-modules/velbus-aio/default.nix35
-rw-r--r--pkgs/development/python-modules/vilfo-api-client/default.nix6
-rw-r--r--pkgs/development/python-modules/wagtail-localize/default.nix6
-rw-r--r--pkgs/development/python-modules/wagtail/default.nix13
-rw-r--r--pkgs/development/python-modules/wand/default.nix2
-rw-r--r--pkgs/development/python-modules/whirlpool-sixth-sense/default.nix39
-rw-r--r--pkgs/development/python-modules/whispers/default.nix70
-rw-r--r--pkgs/development/python-modules/xknxproject/default.nix41
-rw-r--r--pkgs/development/python-modules/xmlschema/default.nix37
-rw-r--r--pkgs/development/python-modules/xyzservices/default.nix4
-rw-r--r--pkgs/development/python-modules/yapsy/default.nix27
-rw-r--r--pkgs/development/python-modules/yolink-api/default.nix31
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix16
-rw-r--r--pkgs/development/python-modules/zha-quirks/default.nix39
-rw-r--r--pkgs/development/python-modules/zha/default.nix126
-rw-r--r--pkgs/development/python-modules/zigpy/default.nix33
-rw-r--r--pkgs/development/python-modules/zodb/default.nix4
-rw-r--r--pkgs/development/r-modules/bioc-packages.nix2
-rw-r--r--pkgs/development/r-modules/default.nix48
-rw-r--r--pkgs/development/r-modules/patches/FLAMES.patch17
-rw-r--r--pkgs/development/rocm-modules/5/miopen/default.nix4
-rw-r--r--pkgs/development/rocm-modules/6/default.nix5
-rw-r--r--pkgs/development/rocm-modules/6/hiprand/default.nix76
-rw-r--r--pkgs/development/rocm-modules/6/miopen/default.nix4
-rw-r--r--pkgs/development/rocm-modules/6/rocrand/default.nix3
-rw-r--r--pkgs/development/tools/allure/default.nix4
-rw-r--r--pkgs/development/tools/altair-graphql-client/default.nix4
-rw-r--r--pkgs/development/tools/amazon-qldb-shell/default.nix2
-rw-r--r--pkgs/development/tools/analysis/checkov/default.nix9
-rw-r--r--pkgs/development/tools/analysis/hopper/default.nix1
-rw-r--r--pkgs/development/tools/analysis/include-what-you-use/default.nix6
-rw-r--r--pkgs/development/tools/analysis/radare2/default.nix10
-rw-r--r--pkgs/development/tools/analysis/snyk/default.nix6
-rw-r--r--pkgs/development/tools/analysis/stylelint/default.nix6
-rw-r--r--pkgs/development/tools/appthreat-depscan/default.nix53
-rw-r--r--pkgs/development/tools/azure-static-sites-client/default.nix2
-rw-r--r--pkgs/development/tools/backblaze-b2/default.nix28
-rw-r--r--pkgs/development/tools/bazel-gazelle/default.nix4
-rw-r--r--pkgs/development/tools/bearer/default.nix19
-rw-r--r--pkgs/development/tools/build-managers/bazel/buildtools/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/bear/default.nix2
-rw-r--r--pkgs/development/tools/build-managers/corrosion/default.nix35
-rw-r--r--pkgs/development/tools/build-managers/rake/Gemfile.lock2
-rw-r--r--pkgs/development/tools/build-managers/rake/gemset.nix4
-rw-r--r--pkgs/development/tools/build-managers/rebar3/default.nix4
-rw-r--r--pkgs/development/tools/check-jsonschema/default.nix4
-rw-r--r--pkgs/development/tools/cloud-nuke/default.nix4
-rw-r--r--pkgs/development/tools/cloudsmith-cli/default.nix4
-rw-r--r--pkgs/development/tools/coder/default.nix115
-rw-r--r--pkgs/development/tools/continuous-integration/cirrus-cli/default.nix6
-rw-r--r--pkgs/development/tools/cpm-cmake/default.nix4
-rw-r--r--pkgs/development/tools/database/liquibase/default.nix4
-rw-r--r--pkgs/development/tools/database/pg_activity/default.nix4
-rw-r--r--pkgs/development/tools/database/prisma-engines/Cargo.lock725
-rw-r--r--pkgs/development/tools/database/prisma-engines/default.nix8
-rw-r--r--pkgs/development/tools/devbox/default.nix6
-rw-r--r--pkgs/development/tools/dtools/default.nix51
-rw-r--r--pkgs/development/tools/electron/binary/default.nix42
-rw-r--r--pkgs/development/tools/electron/common.nix2
-rw-r--r--pkgs/development/tools/electron/info.json56
-rw-r--r--pkgs/development/tools/faas-cli/default.nix4
-rw-r--r--pkgs/development/tools/fblog/default.nix6
-rw-r--r--pkgs/development/tools/firebase-tools/default.nix6
-rw-r--r--pkgs/development/tools/frugal/default.nix6
-rw-r--r--pkgs/development/tools/gammaray/default.nix22
-rw-r--r--pkgs/development/tools/gauge/default.nix6
-rw-r--r--pkgs/development/tools/goa/default.nix6
-rw-r--r--pkgs/development/tools/hcloud/default.nix6
-rw-r--r--pkgs/development/tools/infisical/default.nix2
-rw-r--r--pkgs/development/tools/infisical/hashes.json8
-rw-r--r--pkgs/development/tools/kubeswitch/default.nix40
-rw-r--r--pkgs/development/tools/language-servers/helm-ls/default.nix4
-rw-r--r--pkgs/development/tools/language-servers/vhdl-ls/default.nix6
-rw-r--r--pkgs/development/tools/maizzle/default.nix6
-rw-r--r--pkgs/development/tools/melange/default.nix6
-rw-r--r--pkgs/development/tools/micronaut/default.nix4
-rw-r--r--pkgs/development/tools/misc/blackfire/default.nix12
-rw-r--r--pkgs/development/tools/misc/dart-sass/default.nix8
-rw-r--r--pkgs/development/tools/misc/dart-sass/pubspec.lock.json28
-rw-r--r--pkgs/development/tools/misc/edb/default.nix4
-rw-r--r--pkgs/development/tools/misc/pest-ide-tools/default.nix6
-rw-r--r--pkgs/development/tools/misc/pwndbg/default.nix63
-rw-r--r--pkgs/development/tools/misc/terraform-ls/default.nix6
-rw-r--r--pkgs/development/tools/neil/default.nix4
-rw-r--r--pkgs/development/tools/oh-my-posh/default.nix6
-rw-r--r--pkgs/development/tools/parsing/re-flex/default.nix4
-rw-r--r--pkgs/development/tools/protolint/default.nix4
-rw-r--r--pkgs/development/tools/pyenv/default.nix4
-rw-r--r--pkgs/development/tools/qtcreator/default.nix6
-rw-r--r--pkgs/development/tools/rain/default.nix6
-rw-r--r--pkgs/development/tools/refinery-cli/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-about/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-deny/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-deps/default.nix21
-rw-r--r--pkgs/development/tools/rust/cargo-lambda/default.nix13
-rw-r--r--pkgs/development/tools/rust/cargo-llvm-cov/default.nix8
-rw-r--r--pkgs/development/tools/rust/cargo-llvm-lines/default.nix6
-rw-r--r--pkgs/development/tools/rust/cargo-show-asm/default.nix6
-rw-r--r--pkgs/development/tools/rust/crate2nix/default.nix6
-rw-r--r--pkgs/development/tools/rust/dioxus-cli/default.nix6
-rw-r--r--pkgs/development/tools/rust/rust-analyzer/default.nix6
-rw-r--r--pkgs/development/tools/semantic-release/default.nix6
-rw-r--r--pkgs/development/tools/sentry-cli/default.nix6
-rw-r--r--pkgs/development/tools/skaffold/default.nix4
-rw-r--r--pkgs/development/tools/subxt/default.nix6
-rw-r--r--pkgs/development/tools/supabase-cli/default.nix6
-rw-r--r--pkgs/development/tools/templ/default.nix4
-rw-r--r--pkgs/development/tools/trunk/default.nix2
-rw-r--r--pkgs/development/tools/ttfb/default.nix6
-rw-r--r--pkgs/development/tools/twilio-cli/default.nix4
-rw-r--r--pkgs/development/tools/typos/default.nix6
-rw-r--r--pkgs/development/tools/upbound/default.nix6
-rw-r--r--pkgs/development/tools/viceroy/default.nix6
-rw-r--r--pkgs/development/tools/yarn-berry/default.nix16
-rw-r--r--pkgs/development/tools/yarn/default.nix25
-rw-r--r--pkgs/development/web/bun/default.nix10
-rw-r--r--pkgs/development/web/nodejs/v18.nix7
-rw-r--r--pkgs/games/chiaki4deck/default.nix4
-rw-r--r--pkgs/games/commandergenius/default.nix23
-rw-r--r--pkgs/games/ecwolf/default.nix3
-rw-r--r--pkgs/games/ferium/default.nix13
-rw-r--r--pkgs/games/fheroes2/default.nix6
-rw-r--r--pkgs/games/heroic/default.nix4
-rw-r--r--pkgs/games/minecraft/default.nix2
-rw-r--r--pkgs/games/openjk/default.nix8
-rw-r--r--pkgs/games/pacvim/default.nix2
-rw-r--r--pkgs/games/quake2/yquake2/default.nix18
-rw-r--r--pkgs/games/quake2/yquake2/games.nix2
-rw-r--r--pkgs/games/quake2/yquake2/wrapper.nix31
-rw-r--r--pkgs/games/r2modman/default.nix4
-rw-r--r--pkgs/games/shattered-pixel-dungeon/rkpd2.nix6
-rw-r--r--pkgs/games/snipes/default.nix11
-rw-r--r--pkgs/kde/frameworks/kfilemetadata/default.nix3
-rw-r--r--pkgs/kde/frameworks/kservice/default.nix4
-rw-r--r--pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch14
-rw-r--r--pkgs/kde/frameworks/qqc2-desktop-style/default.nix2
-rw-r--r--pkgs/kde/gear/akonadi-search/default.nix5
-rw-r--r--pkgs/kde/gear/angelfish/default.nix5
-rw-r--r--pkgs/kde/gear/kdepim-addons/default.nix5
-rw-r--r--pkgs/kde/gear/kompare/default.nix5
-rw-r--r--pkgs/kde/gear/libkomparediff2/default.nix2
-rw-r--r--pkgs/kde/generated/dependencies.json63
-rw-r--r--pkgs/kde/generated/projects.json18
-rw-r--r--pkgs/kde/generated/sources/frameworks.json432
-rw-r--r--pkgs/kde/generated/sources/gear.json1476
-rw-r--r--pkgs/misc/ananicy-rules-cachyos/default.nix8
-rw-r--r--pkgs/misc/fastly/default.nix6
-rw-r--r--pkgs/misc/uboot/default.nix18
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/CarbonHeaders/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/CommonCrypto/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/Csu/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/Librpcsvc/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/dyld/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/libunwind/default.nix2
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/libutil/default.nix2
-rw-r--r--pkgs/os-specific/darwin/cctools/apple.nix2
-rw-r--r--pkgs/os-specific/darwin/cctools/port.nix2
-rw-r--r--pkgs/os-specific/darwin/grandperspective/default.nix4
-rw-r--r--pkgs/os-specific/darwin/moltenvk/default.nix4
-rw-r--r--pkgs/os-specific/darwin/raycast/default.nix4
-rw-r--r--pkgs/os-specific/darwin/sketchybar/default.nix11
-rw-r--r--pkgs/os-specific/darwin/skhd/default.nix11
-rw-r--r--pkgs/os-specific/darwin/yabai/default.nix6
-rw-r--r--pkgs/os-specific/linux/cpuid/default.nix26
-rw-r--r--pkgs/os-specific/linux/drbd/driver.nix57
-rw-r--r--pkgs/os-specific/linux/drbd/utils.nix (renamed from pkgs/os-specific/linux/drbd/default.nix)15
-rw-r--r--pkgs/os-specific/linux/firmware/linux-firmware/source.nix8
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix7
-rw-r--r--pkgs/os-specific/linux/kernel/htmldocs.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/kernels-org.json20
-rw-r--r--pkgs/os-specific/linux/kernel/linux-rt-6.6.nix6
-rwxr-xr-xpkgs/os-specific/linux/kernel/update-mainline.py7
-rw-r--r--pkgs/os-specific/linux/kernel/zen-kernels.nix10
-rw-r--r--pkgs/os-specific/linux/ksmbd-tools/default.nix4
-rw-r--r--pkgs/os-specific/linux/kvdo/default.nix4
-rw-r--r--pkgs/os-specific/linux/ndiswrapper/default.nix4
-rw-r--r--pkgs/os-specific/linux/oddjob/default.nix62
-rw-r--r--pkgs/os-specific/linux/power-profiles-daemon/default.nix12
-rw-r--r--pkgs/os-specific/linux/ryzen-smu/default.nix69
-rw-r--r--pkgs/os-specific/linux/setools/default.nix4
-rw-r--r--pkgs/os-specific/linux/sssd/default.nix10
-rw-r--r--pkgs/os-specific/linux/systemd/default.nix2
-rw-r--r--pkgs/os-specific/linux/tomb/default.nix6
-rw-r--r--pkgs/os-specific/linux/zfs/unstable.nix6
-rw-r--r--pkgs/servers/akkoma/default.nix343
-rw-r--r--pkgs/servers/akkoma/mix.nix2230
-rw-r--r--pkgs/servers/bird/default.nix2
-rw-r--r--pkgs/servers/dex/default.nix6
-rw-r--r--pkgs/servers/elasticmq-server-bin/default.nix4
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix173
-rw-r--r--pkgs/servers/home-assistant/custom-components/default.nix8
-rw-r--r--pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix4
-rw-r--r--pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix25
-rw-r--r--pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix28
-rw-r--r--pkgs/servers/home-assistant/custom-components/moonraker/default.nix4
-rw-r--r--pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix34
-rw-r--r--pkgs/servers/home-assistant/custom-components/yassi/default.nix28
-rw-r--r--pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix6
-rw-r--r--pkgs/servers/home-assistant/default.nix65
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rw-r--r--pkgs/servers/home-assistant/intents.nix21
-rw-r--r--pkgs/servers/home-assistant/stubs.nix4
-rw-r--r--pkgs/servers/homepage-dashboard/default.nix6
-rw-r--r--pkgs/servers/http/envoy/default.nix1
-rw-r--r--pkgs/servers/http/jetty/common.nix4
-rw-r--r--pkgs/servers/http/lighttpd/default.nix2
-rw-r--r--pkgs/servers/http/pomerium/default.nix4
-rw-r--r--pkgs/servers/http/tomcat/axis2/default.nix4
-rw-r--r--pkgs/servers/http/tomcat/default.nix4
-rw-r--r--pkgs/servers/http/trafficserver/default.nix4
-rw-r--r--pkgs/servers/invidious/default.nix2
-rw-r--r--pkgs/servers/jackett/default.nix4
-rw-r--r--pkgs/servers/klipper/default.nix6
-rw-r--r--pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix10
-rw-r--r--pkgs/servers/mail/mailpit/default.nix4
-rw-r--r--pkgs/servers/matrix-synapse/tools/synadm.nix4
-rw-r--r--pkgs/servers/minio/default.nix6
-rw-r--r--pkgs/servers/monitoring/grafana-agent/default.nix6
-rw-r--r--pkgs/servers/monitoring/grafana-dash-n-grab/default.nix6
-rw-r--r--pkgs/servers/monitoring/grafana-image-renderer/default.nix6
-rw-r--r--pkgs/servers/monitoring/grafana-image-renderer/package.json2
-rw-r--r--pkgs/servers/monitoring/loki/default.nix16
-rw-r--r--pkgs/servers/monitoring/prometheus/blackbox-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/exportarr/default.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/ping-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/unpoller/default.nix6
-rw-r--r--pkgs/servers/monitoring/vmagent/default.nix4
-rw-r--r--pkgs/servers/nats-server/default.nix6
-rw-r--r--pkgs/servers/nosql/aerospike/default.nix4
-rw-r--r--pkgs/servers/nosql/mongodb/4.4.nix20
-rw-r--r--pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-4_4.patch93
-rw-r--r--pkgs/servers/nosql/mongodb/mongodb.nix21
-rw-r--r--pkgs/servers/nosql/redis/default.nix1
-rw-r--r--pkgs/servers/openvscode-server/default.nix3
-rw-r--r--pkgs/servers/owncast/default.nix6
-rw-r--r--pkgs/servers/pocketbase/default.nix6
-rw-r--r--pkgs/servers/radicale/2.x.nix2
-rw-r--r--pkgs/servers/readarr/default.nix8
-rw-r--r--pkgs/servers/rmfakecloud/default.nix6
-rw-r--r--pkgs/servers/rmfakecloud/webui.nix2
-rw-r--r--pkgs/servers/search/khoj/default.nix3
-rw-r--r--pkgs/servers/search/typesense/sources.json8
-rw-r--r--pkgs/servers/search/weaviate/default.nix4
-rw-r--r--pkgs/servers/sickbeard/sickgear.nix4
-rw-r--r--pkgs/servers/snappymail/default.nix4
-rw-r--r--pkgs/servers/sonarr/default.nix10
-rw-r--r--pkgs/servers/spicedb/default.nix4
-rw-r--r--pkgs/servers/sql/dolt/default.nix6
-rw-r--r--pkgs/servers/sql/postgresql/ext/lantern.nix4
-rw-r--r--pkgs/servers/sql/postgresql/ext/pgtap.nix4
-rw-r--r--pkgs/servers/tailscale/default.nix6
-rw-r--r--pkgs/servers/unifi/default.nix20
-rw-r--r--pkgs/servers/web-apps/bookstack/default.nix4
-rw-r--r--pkgs/servers/web-apps/healthchecks/default.nix11
-rw-r--r--pkgs/servers/web-apps/wallabag/default.nix4
-rw-r--r--pkgs/servers/web-apps/wordpress/default.nix6
-rw-r--r--pkgs/servers/web-apps/wordpress/packages/languages.json18
-rw-r--r--pkgs/servers/web-apps/wordpress/packages/plugins.json172
-rw-r--r--pkgs/servers/web-apps/wordpress/packages/themes.json40
-rw-r--r--pkgs/servers/x11/quartz-wm/default.nix2
-rw-r--r--pkgs/servers/x11/xorg/default.nix6
-rw-r--r--pkgs/servers/x11/xorg/tarballs.list2
-rw-r--r--pkgs/servers/x11/xorg/xwayland.nix4
-rw-r--r--pkgs/shells/fish/plugins/done.nix4
-rw-r--r--pkgs/shells/fish/plugins/fzf-fish.nix4
-rw-r--r--pkgs/shells/fish/plugins/sdkman-for-fish.nix4
-rw-r--r--pkgs/shells/nushell/plugins/net.nix8
-rw-r--r--pkgs/shells/oksh/default.nix4
-rw-r--r--pkgs/shells/zsh/oh-my-zsh/default.nix3
-rw-r--r--pkgs/shells/zsh/zsh-syntax-highlighting/default.nix12
-rw-r--r--pkgs/stdenv/generic/check-meta.nix39
-rw-r--r--pkgs/test/check-by-name/pinned-version.txt2
-rw-r--r--pkgs/test/default.nix1
-rw-r--r--pkgs/tools/X11/xwinwrap/default.nix2
-rw-r--r--pkgs/tools/admin/aliyun-cli/default.nix4
-rw-r--r--pkgs/tools/admin/auth0-cli/default.nix18
-rw-r--r--pkgs/tools/admin/aws-encryption-sdk-cli/default.nix4
-rw-r--r--pkgs/tools/admin/aws-sso-cli/default.nix4
-rw-r--r--pkgs/tools/admin/awslimitchecker/default.nix4
-rw-r--r--pkgs/tools/admin/azure-cli/0001-optional-immutable-configuration-dir.patch98
-rw-r--r--pkgs/tools/admin/azure-cli/default.nix79
-rw-r--r--pkgs/tools/admin/azure-cli/extensions-generated.nix982
-rw-r--r--pkgs/tools/admin/azure-cli/python-packages.nix13
-rwxr-xr-xpkgs/tools/admin/azure-cli/query-extension-index.sh163
-rw-r--r--pkgs/tools/admin/balena-cli/default.nix6
-rw-r--r--pkgs/tools/admin/berglas/default.nix6
-rw-r--r--pkgs/tools/admin/drawterm/default.nix6
-rw-r--r--pkgs/tools/admin/exoscale-cli/default.nix4
-rw-r--r--pkgs/tools/admin/fastlane/Gemfile.lock69
-rw-r--r--pkgs/tools/admin/fastlane/gemset.nix127
-rw-r--r--pkgs/tools/admin/granted/default.nix6
-rw-r--r--pkgs/tools/admin/mycli/default.nix4
-rw-r--r--pkgs/tools/admin/pgadmin/default.nix38
-rw-r--r--pkgs/tools/admin/pgadmin/yarn.lock26
-rw-r--r--pkgs/tools/admin/qovery-cli/default.nix21
-rw-r--r--pkgs/tools/admin/syft/default.nix6
-rw-r--r--pkgs/tools/archivers/afio/default.nix21
-rw-r--r--pkgs/tools/archivers/atool/default.nix1
-rw-r--r--pkgs/tools/audio/botamusique/default.nix2
-rw-r--r--pkgs/tools/audio/dl-librescore/default.nix4
-rw-r--r--pkgs/tools/audio/spotdl/default.nix10
-rw-r--r--pkgs/tools/audio/tts/default.nix1
-rw-r--r--pkgs/tools/audio/whisper-ctranslate2/default.nix4
-rw-r--r--pkgs/tools/backup/restic/rest-server.nix4
-rw-r--r--pkgs/tools/backup/s3ql/default.nix60
-rw-r--r--pkgs/tools/bluetooth/blueman/default.nix4
-rw-r--r--pkgs/tools/compression/gzip/default.nix2
-rw-r--r--pkgs/tools/filesystems/ceph-csi/default.nix4
-rw-r--r--pkgs/tools/filesystems/garage/default.nix25
-rw-r--r--pkgs/tools/filesystems/hfsprogs/default.nix2
-rw-r--r--pkgs/tools/filesystems/ifuse/default.nix2
-rw-r--r--pkgs/tools/filesystems/irods/common.nix1
-rw-r--r--pkgs/tools/filesystems/irods/default.nix14
-rw-r--r--pkgs/tools/filesystems/juicefs/default.nix6
-rw-r--r--pkgs/tools/filesystems/rmount/default.nix2
-rw-r--r--pkgs/tools/filesystems/stratisd/default.nix6
-rw-r--r--pkgs/tools/graphics/blockhash/default.nix2
-rw-r--r--pkgs/tools/graphics/jpegexiforient/default.nix2
-rw-r--r--pkgs/tools/graphics/maim/default.nix4
-rw-r--r--pkgs/tools/graphics/netpbm/default.nix6
-rw-r--r--pkgs/tools/graphics/vulkan-cts/default.nix4
-rw-r--r--pkgs/tools/graphics/vulkan-cts/sources.nix4
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix4
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix4
-rw-r--r--pkgs/tools/llm/shell_gpt/default.nix4
-rw-r--r--pkgs/tools/misc/aichat/default.nix6
-rw-r--r--pkgs/tools/misc/apkeep/default.nix8
-rwxr-xr-xpkgs/tools/misc/archi/update.sh21
-rw-r--r--pkgs/tools/misc/btdu/default.nix2
-rw-r--r--pkgs/tools/misc/btrfs-assistant/default.nix21
-rw-r--r--pkgs/tools/misc/calamares-nixos-extensions/default.nix4
-rw-r--r--pkgs/tools/misc/calamares/default.nix4
-rw-r--r--pkgs/tools/misc/calamares/nixos-extensions-paths.patch21
-rw-r--r--pkgs/tools/misc/calamares/nonroot.patch17
-rw-r--r--pkgs/tools/misc/calamares/supportedlocale.patch2
-rw-r--r--pkgs/tools/misc/calamares/uimod.patch23
-rw-r--r--pkgs/tools/misc/calamares/waylandkbd.patch12
-rw-r--r--pkgs/tools/misc/cope/default.nix28
-rw-r--r--pkgs/tools/misc/cyberchef/default.nix4
-rw-r--r--pkgs/tools/misc/daktilo/default.nix6
-rw-r--r--pkgs/tools/misc/diffoscope/default.nix5
-rw-r--r--pkgs/tools/misc/diffoscope/openssh-no-dsa.patch29
-rw-r--r--pkgs/tools/misc/dijo/default.nix2
-rw-r--r--pkgs/tools/misc/dooit/default.nix11
-rw-r--r--pkgs/tools/misc/fastfetch/default.nix4
-rw-r--r--pkgs/tools/misc/fluent-bit/default.nix4
-rw-r--r--pkgs/tools/misc/fzf/default.nix30
-rw-r--r--pkgs/tools/misc/goose/default.nix6
-rw-r--r--pkgs/tools/misc/goreleaser/default.nix4
-rw-r--r--pkgs/tools/misc/grizzly/default.nix6
-rw-r--r--pkgs/tools/misc/hueadm/default.nix2
-rw-r--r--pkgs/tools/misc/hwatch/default.nix6
-rw-r--r--pkgs/tools/misc/ideviceinstaller/default.nix2
-rw-r--r--pkgs/tools/misc/kalker/default.nix6
-rw-r--r--pkgs/tools/misc/mise/default.nix6
-rw-r--r--pkgs/tools/misc/moar/default.nix4
-rw-r--r--pkgs/tools/misc/nms/default.nix2
-rw-r--r--pkgs/tools/misc/nomino/default.nix6
-rw-r--r--pkgs/tools/misc/ollama/default.nix1
-rw-r--r--pkgs/tools/misc/opentelemetry-collector/default.nix6
-rw-r--r--pkgs/tools/misc/pdd/default.nix2
-rw-r--r--pkgs/tools/misc/pferd/default.nix4
-rw-r--r--pkgs/tools/misc/phrase-cli/default.nix6
-rw-r--r--pkgs/tools/misc/plantuml-server/default.nix4
-rw-r--r--pkgs/tools/misc/plantuml/default.nix4
-rw-r--r--pkgs/tools/misc/pre-commit/default.nix10
-rw-r--r--pkgs/tools/misc/rfc/default.nix4
-rw-r--r--pkgs/tools/misc/ripdrag/default.nix6
-rw-r--r--pkgs/tools/misc/rustypaste-cli/default.nix6
-rw-r--r--pkgs/tools/misc/sta/default.nix2
-rw-r--r--pkgs/tools/misc/stow/default.nix20
-rw-r--r--pkgs/tools/misc/szyszka/default.nix4
-rw-r--r--pkgs/tools/misc/topicctl/default.nix4
-rw-r--r--pkgs/tools/misc/usbmuxd/default.nix2
-rw-r--r--pkgs/tools/misc/valeronoi/default.nix2
-rw-r--r--pkgs/tools/misc/vector/Cargo.lock22
-rw-r--r--pkgs/tools/misc/vector/default.nix11
-rw-r--r--pkgs/tools/misc/vector/vector-lto.patch12
-rw-r--r--pkgs/tools/misc/vrc-get/default.nix21
-rw-r--r--pkgs/tools/misc/vtm/default.nix4
-rw-r--r--pkgs/tools/misc/wakapi/default.nix6
-rw-r--r--pkgs/tools/misc/yt-dlp/default.nix9
-rw-r--r--pkgs/tools/networking/axel/default.nix4
-rw-r--r--pkgs/tools/networking/boundary/default.nix10
-rw-r--r--pkgs/tools/networking/bsd-finger/default.nix171
-rw-r--r--pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch261
-rw-r--r--pkgs/tools/networking/bukubrow/default.nix2
-rw-r--r--pkgs/tools/networking/croc/default.nix6
-rw-r--r--pkgs/tools/networking/curl-impersonate/default.nix6
-rw-r--r--pkgs/tools/networking/curl-impersonate/deps.nix22
-rw-r--r--pkgs/tools/networking/ddns-go/default.nix6
-rw-r--r--pkgs/tools/networking/grpcui/default.nix6
-rw-r--r--pkgs/tools/networking/grpcurl/default.nix6
-rw-r--r--pkgs/tools/networking/i2p/default.nix86
-rw-r--r--pkgs/tools/networking/i2p/i2p.patch43
-rw-r--r--pkgs/tools/networking/i2pd/default.nix4
-rw-r--r--pkgs/tools/networking/lxi-tools/default.nix4
-rw-r--r--pkgs/tools/networking/minio-client/default.nix6
-rw-r--r--pkgs/tools/networking/mozillavpn/default.nix10
-rw-r--r--pkgs/tools/networking/netbird/default.nix6
-rw-r--r--pkgs/tools/networking/ockam/default.nix6
-rw-r--r--pkgs/tools/networking/ooniprobe-cli/default.nix4
-rw-r--r--pkgs/tools/networking/shadowfox/default.nix2
-rw-r--r--pkgs/tools/networking/sing-box/default.nix10
-rw-r--r--pkgs/tools/networking/sitespeed-io/default.nix6
-rw-r--r--pkgs/tools/networking/wireproxy/default.nix6
-rw-r--r--pkgs/tools/networking/xh/default.nix6
-rw-r--r--pkgs/tools/package-management/apkg/default.nix4
-rw-r--r--pkgs/tools/package-management/nix-visualize/default.nix49
-rw-r--r--pkgs/tools/package-management/nix/common.nix2
-rw-r--r--pkgs/tools/package-management/nix/default.nix11
-rw-r--r--pkgs/tools/package-management/nix/patches/2_19/CVE-2024-27297.patch407
-rw-r--r--pkgs/tools/package-management/pdm/default.nix32
-rw-r--r--pkgs/tools/security/browserpass/default.nix2
-rw-r--r--pkgs/tools/security/bws/Cargo.lock4127
-rw-r--r--pkgs/tools/security/bws/default.nix34
-rw-r--r--pkgs/tools/security/chipsec/default.nix5
-rw-r--r--pkgs/tools/security/cnquery/default.nix28
-rw-r--r--pkgs/tools/security/cnspec/default.nix6
-rw-r--r--pkgs/tools/security/crowdsec/default.nix11
-rw-r--r--pkgs/tools/security/cyclonedx-gomod/default.nix22
-rw-r--r--pkgs/tools/security/doppler/default.nix4
-rw-r--r--pkgs/tools/security/enum4linux-ng/default.nix31
-rw-r--r--pkgs/tools/security/exploitdb/default.nix32
-rw-r--r--pkgs/tools/security/fulcio/default.nix6
-rw-r--r--pkgs/tools/security/gallia/default.nix35
-rw-r--r--pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch37
-rw-r--r--pkgs/tools/security/ghidra/build.nix16
-rw-r--r--pkgs/tools/security/gitleaks/default.nix1
-rw-r--r--pkgs/tools/security/gopass/default.nix6
-rw-r--r--pkgs/tools/security/gopass/git-credential.nix15
-rw-r--r--pkgs/tools/security/gopass/hibp.nix15
-rw-r--r--pkgs/tools/security/gopass/jsonapi.nix15
-rw-r--r--pkgs/tools/security/gopass/summon.nix15
-rw-r--r--pkgs/tools/security/iaito/default.nix4
-rw-r--r--pkgs/tools/security/metasploit/Gemfile2
-rw-r--r--pkgs/tools/security/metasploit/Gemfile.lock6
-rw-r--r--pkgs/tools/security/metasploit/default.nix4
-rw-r--r--pkgs/tools/security/metasploit/gemset.nix6
-rw-r--r--pkgs/tools/security/nuclei/default.nix6
-rw-r--r--pkgs/tools/security/opensc/default.nix4
-rw-r--r--pkgs/tools/security/s5/default.nix6
-rw-r--r--pkgs/tools/security/sbomnix/default.nix58
-rw-r--r--pkgs/tools/security/scilla/default.nix20
-rw-r--r--pkgs/tools/security/spire/default.nix6
-rw-r--r--pkgs/tools/security/tor/default.nix4
-rw-r--r--pkgs/tools/security/trufflehog/default.nix22
-rw-r--r--pkgs/tools/security/vault/default.nix6
-rw-r--r--pkgs/tools/security/vault/vault-bin.nix12
-rw-r--r--pkgs/tools/security/vaultwarden/webvault.nix8
-rw-r--r--pkgs/tools/system/automatic-timezoned/default.nix6
-rw-r--r--pkgs/tools/system/btop/default.nix8
-rw-r--r--pkgs/tools/system/kmon/default.nix6
-rw-r--r--pkgs/tools/system/lact/default.nix4
-rw-r--r--pkgs/tools/system/pdisk/default.nix2
-rw-r--r--pkgs/tools/system/s-tui/default.nix2
-rw-r--r--pkgs/tools/system/stress-ng/default.nix4
-rw-r--r--pkgs/tools/text/base16384/default.nix4
-rw-r--r--pkgs/tools/text/crowdin-cli/default.nix4
-rw-r--r--pkgs/tools/text/mdbook-graphviz/default.nix6
-rw-r--r--pkgs/tools/text/sad/default.nix15
-rw-r--r--pkgs/tools/text/ugrep/default.nix4
-rw-r--r--pkgs/tools/text/vale/default.nix4
-rw-r--r--pkgs/tools/typesetting/pulldown-cmark/default.nix6
-rw-r--r--pkgs/tools/typesetting/tex/texpresso/default.nix6
-rw-r--r--pkgs/tools/typesetting/tex/texpresso/tectonic.nix6
-rw-r--r--pkgs/tools/wayland/wayland-proxy-virtwl/default.nix6
-rw-r--r--pkgs/top-level/aliases.nix21
-rw-r--r--pkgs/top-level/all-packages.nix189
-rw-r--r--pkgs/top-level/linux-kernels.nix4
-rw-r--r--pkgs/top-level/ocaml-packages.nix12
-rw-r--r--pkgs/top-level/python-aliases.nix2
-rw-r--r--pkgs/top-level/python-packages.nix53
-rw-r--r--pkgs/top-level/qt6-packages.nix1
-rw-r--r--pkgs/top-level/release-haskell.nix6
-rw-r--r--pkgs/top-level/release.nix3
1599 files changed, 57529 insertions, 29398 deletions
diff --git a/pkgs/applications/audio/cardinal/default.nix b/pkgs/applications/audio/cardinal/default.nix
index 70d199d43b11e..33ad843db529d 100644
--- a/pkgs/applications/audio/cardinal/default.nix
+++ b/pkgs/applications/audio/cardinal/default.nix
@@ -27,11 +27,11 @@
 
 stdenv.mkDerivation rec {
   pname = "cardinal";
-  version = "23.10";
+  version = "24.04";
 
   src = fetchurl {
     url = "https://github.com/DISTRHO/Cardinal/releases/download/${version}/cardinal+deps-${version}.tar.xz";
-    hash = "sha256-6Wt2sC7vdrz2Fkl08bNLfnGu+pAV7b5lZUmsx1wtJRE=";
+    hash = "sha256-vowDdHAXVZ+HSMoQsvJdzghsJzH+OrSpx6MxPRAgtJA=";
   };
 
   prePatch = ''
diff --git a/pkgs/applications/audio/cider/default.nix b/pkgs/applications/audio/cider/default.nix
index 315fa2c9a65b8..258a9cd2065af 100644
--- a/pkgs/applications/audio/cider/default.nix
+++ b/pkgs/applications/audio/cider/default.nix
@@ -1,4 +1,4 @@
-{ appimageTools, lib, fetchurl }:
+{ appimageTools, lib, fetchurl, makeWrapper}:
 
 appimageTools.wrapType2 rec {
   pname = "cider";
@@ -14,9 +14,13 @@ appimageTools.wrapType2 rec {
     in ''
       mv $out/bin/${pname}-${version} $out/bin/${pname}
 
+      source "${makeWrapper}/nix-support/setup-hook"
+      wrapProgram $out/bin/${pname} \
+        --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
+
       install -m 444 -D ${contents}/${pname}.desktop -t $out/share/applications
       substituteInPlace $out/share/applications/${pname}.desktop \
-        --replace 'Exec=AppRun' 'Exec=${pname}'
+        --replace-warn 'Exec=AppRun' 'Exec=${pname}'
       cp -r ${contents}/usr/share/icons $out/share
     '';
 
@@ -24,8 +28,8 @@ appimageTools.wrapType2 rec {
     description = "A new look into listening and enjoying Apple Music in style and performance.";
     homepage = "https://github.com/ciderapp/Cider";
     license = licenses.agpl3Only;
+    mainProgram = "cider";
     maintainers = [ maintainers.cigrainger ];
     platforms = [ "x86_64-linux" ];
-    mainProgram = "cider";
   };
 }
diff --git a/pkgs/applications/audio/cozy/default.nix b/pkgs/applications/audio/cozy/default.nix
index e07217567d340..65cad453f6b73 100644
--- a/pkgs/applications/audio/cozy/default.nix
+++ b/pkgs/applications/audio/cozy/default.nix
@@ -1,52 +1,41 @@
-{ lib, fetchFromGitHub
-, ninja
+{ lib
+, python3Packages
+, fetchFromGitHub
 , meson
+, ninja
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , appstream-glib
 , desktop-file-utils
-, gtk3
-, gst_all_1
 , gobject-introspection
 , libadwaita
-, libdazzle
-, python3Packages
-, cairo
-, gettext
-, gnome
-, pantheon
+, gst_all_1
 }:
 
 python3Packages.buildPythonApplication rec {
-
-  format = "other"; # no setup.py
-
   pname = "cozy";
   version = "1.3.0";
+  pyproject = false; # built with meson
 
   src = fetchFromGitHub {
     owner = "geigi";
-    repo = pname;
+    repo = "cozy";
     rev = version;
     hash = "sha256-oMgdz2dny0u1XV13aHu5s8/pcAz8z/SAOf4hbCDsdjw";
   };
 
   nativeBuildInputs = [
-    meson ninja pkg-config
-    wrapGAppsHook
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook4
     appstream-glib
     desktop-file-utils
     gobject-introspection
   ];
 
   buildInputs = [
-    gtk3
-    cairo
-    gettext
-    gnome.adwaita-icon-theme
     libadwaita
-    libdazzle
-    pantheon.granite
   ] ++ (with gst_all_1; [
     gstreamer
     gst-plugins-good
@@ -56,32 +45,30 @@ python3Packages.buildPythonApplication rec {
   ]);
 
   propagatedBuildInputs = with python3Packages; [
-    apsw
-    cairo
-    dbus-python
     distro
-    gst-python
-    magic
     mutagen
-    packaging
     peewee
     pygobject3
     pytz
     requests
   ];
 
-  postPatch = ''
-    patchShebangs meson/*.py
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
   '';
 
-  postInstall = ''
+  postFixup = ''
     ln -s $out/bin/com.github.geigi.cozy $out/bin/cozy
   '';
 
   meta = with lib; {
-    description = "A modern audio book player for Linux using GTK 3";
+    description = "A modern audio book player for Linux";
     homepage = "https://cozy.geigi.de/";
-    maintainers = [ maintainers.makefu ];
-    license = licenses.gpl3;
+    maintainers = with maintainers; [ makefu aleksana ];
+    license = licenses.gpl3Plus;
+    mainProgram = "com.github.geigi.cozy";
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/audio/feishin/darwin.nix b/pkgs/applications/audio/feishin/darwin.nix
deleted file mode 100644
index 5da2fa6ee0256..0000000000000
--- a/pkgs/applications/audio/feishin/darwin.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ stdenv
-, lib
-, meta
-, fetchurl
-, unzip
-, mpv
-, electron_24
-, makeDesktopItem
-, makeWrapper
-, pname
-, appname
-, version
-}:
-
-stdenv.mkDerivation {
-  inherit pname version meta;
-
-  src = fetchurl {
-    url = "https://github.com/jeffvli/feishin/releases/download/v${version}/${appname}-${version}-mac-x64.zip";
-    hash = "sha256-sJg3hYOiELm+edw2JTFt6cPFdbDj6mLcLngeqEPaPgs=";
-  };
-
-  nativeBuildInputs = [ makeWrapper unzip ];
-
-  # Installs mpv as a requirement
-  propagatedBuildInputs = [ mpv ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/{Applications/${appname}.app,bin}
-    cp -R . $out/Applications/${appname}.app
-    makeWrapper $out/Applications/${appname}.app/Contents/MacOS/${appname} $out/bin/${pname}
-    runHook postInstall
-  '';
-
-  shellHook = ''
-    set -x
-    export LD_LIBRARY_PATH=${mpv}/lib
-    set +x
-  '';
-}
diff --git a/pkgs/applications/audio/feishin/default.nix b/pkgs/applications/audio/feishin/default.nix
index c89d5163c2a6d..5168d084af72a 100644
--- a/pkgs/applications/audio/feishin/default.nix
+++ b/pkgs/applications/audio/feishin/default.nix
@@ -1,27 +1,130 @@
-{ lib
-, stdenv
-, callPackage
-, ...
-}@args:
-
+{
+  lib,
+  buildNpmPackage,
+  fetchFromGitHub,
+  electron_27,
+  copyDesktopItems,
+  makeDesktopItem,
+  ...
+}:
 let
-  extraArgs = removeAttrs args [ "callPackage" ];
+  pname = "feishin";
+  version = "0.6.1";
+
+  src = fetchFromGitHub {
+    owner = "jeffvli";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-Nj8GwrH49ph14xvJldj5GQR4mlt9unCPEcgLrsH/sx8=";
+  };
 
+  electron = electron_27;
+in
+buildNpmPackage {
   pname = "feishin";
-  version = "0.5.1";
-  appname = "Feishin";
+  inherit version;
+
+  inherit src;
+  npmDepsHash = "sha256-+pr9fWg/9kxkYMmthtqhjgF6MOomSQxVCO5V8tHHRdE=";
+
+  npmFlags = [ "--legacy-peer-deps" ];
+  makeCacheWritable = true;
+
+  env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
+
+  nativeBuildInputs = [ copyDesktopItems ];
+
+  postPatch = ''
+    # release/app dependencies are installed on preConfigure
+    substituteInPlace package.json \
+      --replace-fail "electron-builder install-app-deps &&" ""
+
+    # https://github.com/electron/electron/issues/31121
+    substituteInPlace src/main/main.ts \
+      --replace-fail "process.resourcesPath" "'$out/share/feishin/resources'"
+  '';
+
+  preConfigure =
+    let
+      releaseAppDeps = buildNpmPackage {
+        pname = "${pname}-release-app";
+        inherit version;
+
+        src = "${src}/release/app";
+        npmDepsHash = "sha256-MRwKxe1hoFs5bPXT6K/UspSDs9XBdcRJGvxGlTKExp4=";
+
+        npmFlags = [ "--ignore-scripts" ];
+        dontNpmBuild = true;
+
+        env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
+      };
+      releaseNodeModules = "${releaseAppDeps}/lib/node_modules/feishin/node_modules";
+    in
+    ''
+      for release_module_path in "${releaseNodeModules}"/*; do
+        rm -rf node_modules/"$(basename "$release_module_path")"
+        ln -s "$release_module_path" node_modules/
+      done
+    '';
+
+  postBuild = ''
+    npm exec electron-builder -- \
+      --dir \
+      -c.electronDist=${electron}/libexec/electron \
+      -c.electronVersion=${electron.version} \
+      -c.npmRebuild=false
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/feishin
+    pushd release/build/*/
+    cp -r locales resources{,.pak} $out/share/feishin
+    popd
+
+    # Code relies on checking app.isPackaged, which returns false if the executable is electron.
+    # Set ELECTRON_FORCE_IS_PACKAGED=1.
+    # https://github.com/electron/electron/issues/35153#issuecomment-1202718531
+    makeWrapper ${lib.getExe electron} $out/bin/feishin \
+      --add-flags $out/share/feishin/resources/app.asar \
+      --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
+      --set ELECTRON_FORCE_IS_PACKAGED=1 \
+      --inherit-argv0
+
+    for size in 32 64 128 256 512 1024; do
+      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+      ln -s \
+        $out/share/feishin/resources/assets/icons/"$size"x"$size".png \
+        $out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
+    done
+
+    runHook postInstall
+  '';
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "feishin";
+      desktopName = "Feishin";
+      comment = "Full-featured Subsonic/Jellyfin compatible desktop music player";
+      icon = pname;
+      exec = "feishin %u";
+      categories = [
+        "Audio"
+        "AudioVideo"
+      ];
+      mimeTypes = [ "x-scheme-handler/feishin" ];
+    })
+  ];
 
   meta = with lib; {
     description = "Full-featured Subsonic/Jellyfin compatible desktop music player";
     homepage = "https://github.com/jeffvli/feishin";
     changelog = "https://github.com/jeffvli/feishin/releases/tag/v${version}";
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    license = licenses.mit;
-    platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
+    sourceProvenance = with sourceTypes; [ fromSource ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    mainProgram = "feishin";
     maintainers = with maintainers; [ onny ];
   };
-
-in
-if stdenv.isDarwin
-then callPackage ./darwin.nix (extraArgs // { inherit pname appname version meta; })
-else callPackage ./linux.nix (extraArgs // { inherit pname appname version meta; })
+}
diff --git a/pkgs/applications/audio/feishin/linux.nix b/pkgs/applications/audio/feishin/linux.nix
deleted file mode 100644
index d503492adfc9e..0000000000000
--- a/pkgs/applications/audio/feishin/linux.nix
+++ /dev/null
@@ -1,71 +0,0 @@
-{ stdenv
-, meta
-, lib
-, fetchurl
-, mpv
-, graphicsmagick
-, electron_24
-, makeDesktopItem
-, makeWrapper
-, pname
-, appname
-, version
-}:
-
-let
-  icon = fetchurl {
-    url =
-      "https://github.com/jeffvli/feishin/raw/development/assets/icons/1024x1024.png";
-    sha256 = "sha256-8Qigt1CNMa3SDVK2cdqWJuMSl19yfy6nPQfME4qA48I=";
-  };
-
-  desktopItem = makeDesktopItem {
-    name = "feishin";
-    desktopName = "Feishin";
-    comment = "Full-featured Subsonic/Jellyfin compatible desktop music player";
-    icon = "feishin";
-    exec = "feishin %u";
-    categories = [ "Audio" "AudioVideo" ];
-    mimeTypes = [ "x-scheme-handler/feishin" ];
-  };
-in
-
-stdenv.mkDerivation {
-  inherit pname version meta;
-
-  src = fetchurl {
-    url = "https://github.com/jeffvli/feishin/releases/download/v${version}/${appname}-${version}-linux-x64.tar.xz";
-    hash = "sha256-uYswGxSXz2YddoFs5F7f+ywqAr7qXqp6WryQ7ENSawQ=";
-  };
-
-
-  nativeBuildInputs = [ makeWrapper graphicsmagick ];
-
-  # Installs mpv as a requirement
-  propagatedBuildInputs = [ mpv ];
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin
-    mkdir -p $out/share
-    cp -r resources $out/share/${pname}/
-    cp -r locales $out/share/${pname}/
-
-    makeWrapper ${electron_24}/bin/electron $out/bin/${pname} \
-      --add-flags $out/share/${pname}/app.asar
-    install -m 444 -D "${desktopItem}/share/applications/"* \
-      -t $out/share/applications/
-    for size in 16 24 32 48 64 128 256 512; do
-      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
-      gm convert -resize "$size"x"$size" ${icon} $out/share/icons/hicolor/"$size"x"$size"/apps/${appname}.png
-    done
-    runHook postInstall
-  '';
-
-  shellHook = ''
-    set -x
-    export LD_LIBRARY_PATH=${mpv}/lib
-    set +x
-  '';
-}
diff --git a/pkgs/applications/audio/ft2-clone/default.nix b/pkgs/applications/audio/ft2-clone/default.nix
index 0587fc8d4bbb9..5541950650f7b 100644
--- a/pkgs/applications/audio/ft2-clone/default.nix
+++ b/pkgs/applications/audio/ft2-clone/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ft2-clone";
-  version = "1.79.2";
+  version = "1.80";
 
   src = fetchFromGitHub {
     owner = "8bitbubsy";
     repo = "ft2-clone";
     rev = "v${version}";
-    hash = "sha256-/RZXtSjJ0nRtlMreT4M/IYQpdv/UXjVJaHMld9wwaUw=";
+    hash = "sha256-Zm/HJasZ6iF1wWOzpViQVutFBjv/qbeWkUJOGAbbEYw=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/audio/guitarix/default.nix b/pkgs/applications/audio/guitarix/default.nix
index 2134370eac9f4..c1d1cf5571c50 100644
--- a/pkgs/applications/audio/guitarix/default.nix
+++ b/pkgs/applications/audio/guitarix/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
-, fetchurl
-, fetchpatch
+, fetchFromGitHub
 , avahi
 , bluez
 , boost
@@ -42,29 +41,19 @@ let
   inherit (lib) optional;
 in
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "guitarix";
-  version = "0.44.1";
+  version = "0.46.0";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz";
-    sha256 = "d+g9dU9RrDjFQj847rVd5bPiYSjmC1EbAtLe/PNubBg=";
+  src = fetchFromGitHub {
+    owner = "brummer10";
+    repo = "guitarix";
+    rev = "V${finalAttrs.version}";
+    fetchSubmodules = true;
+    hash = "sha256-AftC6fQEDzG/3C/83YbK/++bRgP7vPD0E2X6KEWpowc=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "gcc13-fixes.patch";
-      url = "https://github.com/brummer10/guitarix/commit/b52736180b6966f24398f8a5ad179a58173473ec.patch";
-      hash = "sha256-+jilgLujy/B6ijUb8NHzt3+4IKCt17X8LmuMLdmsvGw=";
-      relative = "trunk";
-    })
-  ];
-
-  # doesnt apply cleanly, so doing with substituteInPlace
-  # https://github.com/brummer10/guitarix/commit/39d7c21c4173eb0f121b1bbff439d9cf43331a00.patch
-  postPatch = ''
-    substituteInPlace wscript --replace "open(src_fname, 'rU')" "open(src_fname, 'r')"
-  '';
+  sourceRoot = "${finalAttrs.src.name}/trunk";
 
   nativeBuildInputs = [
     gettext
@@ -140,9 +129,9 @@ stdenv.mkDerivation rec {
       clean-sounds, nice overdrive, fat distortion and a diversity of
       crazy sounds never heard before.
     '';
-    homepage = "http://guitarix.sourceforge.net/";
+    homepage = "https://github.com/brummer10/guitarix";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ astsmtl goibhniu ];
+    maintainers = with maintainers; [ astsmtl goibhniu lord-valen ];
     platforms = platforms.linux;
   };
-}
+})
diff --git a/pkgs/applications/audio/kid3/default.nix b/pkgs/applications/audio/kid3/default.nix
index 1aa79a69e5239..cae02e03e613c 100644
--- a/pkgs/applications/audio/kid3/default.nix
+++ b/pkgs/applications/audio/kid3/default.nix
@@ -1,5 +1,4 @@
-{
-  chromaprint
+{ chromaprint
 , cmake
 , docbook_xml_dtd_45
 , docbook_xsl
@@ -7,25 +6,43 @@
 , ffmpeg
 , flac
 , id3lib
+, kdePackages
 , lib
 , libogg
 , libvorbis
 , libxslt
 , mp4v2
-, phonon
 , pkg-config
 , python3
 , qtbase
+, qtdeclarative
 , qtmultimedia
-, qtquickcontrols
 , qttools
 , readline
 , stdenv
 , taglib
 , wrapQtAppsHook
 , zlib
+, withCLI ? true
+, withKDE ? true
+, withQt ? false
 }:
 
+let
+  inherit (lib) optionals;
+
+  apps = lib.concatStringsSep ";" (
+    optionals withCLI [ "CLI" ]
+    ++ optionals withKDE [ "KDE" ]
+    ++ optionals withQt [ "Qt" ]
+  );
+
+  mainProgram =
+    if withQt then "kid3-qt"
+    else if withKDE then "kid3"
+    else "kid3-cli";
+
+in
 stdenv.mkDerivation (finalAttrs: {
   pname = "kid3";
   version = "3.9.5";
@@ -41,6 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
     docbook_xsl
     pkg-config
     python3
+    qttools
     wrapQtAppsHook
   ];
 
@@ -53,25 +71,32 @@ stdenv.mkDerivation (finalAttrs: {
     libvorbis
     libxslt
     mp4v2
-    phonon
     qtbase
+    qtdeclarative
     qtmultimedia
-    qtquickcontrols
-    qttools
     readline
     taglib
     zlib
-  ];
+  ] ++ lib.optionals withKDE (with kdePackages; [
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kio
+    kxmlgui
+    phonon
+  ]);
 
-  cmakeFlags = [ "-DWITH_APPS=Qt;CLI" ];
-  NIX_LDFLAGS = "-lm -lpthread";
+  cmakeFlags = [ (lib.cmakeFeature "WITH_APPS" apps) ];
 
-  preConfigure = ''
-    export DOCBOOKDIR="${docbook_xsl}/xml/xsl/docbook/"
-  '';
+  env = {
+    DOCBOOKDIR = "${docbook_xsl}/xml/xsl/docbook/";
+    LANG = "C.UTF-8";
+    NIX_LDFLAGS = "-lm -lpthread";
+  };
 
   meta = {
     description = "A simple and powerful audio tag editor";
+    inherit mainProgram;
     homepage = "https://kid3.kde.org/";
     license = lib.licenses.lgpl2Plus;
     longDescription = ''
@@ -103,7 +128,7 @@ stdenv.mkDerivation (finalAttrs: {
       - Edit synchronized lyrics and event timing codes, import and export
         LRC files.
     '';
-    maintainers = [ lib.maintainers.AndersonTorres ];
+    maintainers = with lib.maintainers; [ AndersonTorres ];
     platforms = lib.platforms.linux;
   };
 })
diff --git a/pkgs/applications/audio/ledfx/default.nix b/pkgs/applications/audio/ledfx/default.nix
index 62ba0f90ace93..bcbe1bc397d3e 100644
--- a/pkgs/applications/audio/ledfx/default.nix
+++ b/pkgs/applications/audio/ledfx/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, fetchPypi
-, python3
+{
+  lib,
+  fetchPypi,
+  python3,
 }:
 
 python3.pkgs.buildPythonPackage rec {
   pname = "ledfx";
-  version = "2.0.94";
+  version = "2.0.96";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-l498NXt3Ib9QLTWoJcpngAwkbY6JqLbVLKhTWQye7Fs=";
+    hash = "sha256-nvPHAnoD5j1rneeuMufQkXj8YWXau2zJYug+Avpe87I=";
   };
 
   pythonRelaxDeps = true;
@@ -20,13 +21,14 @@ python3.pkgs.buildPythonPackage rec {
     "rpi-ws281x"
   ];
 
-  nativeBuildInputs = with python3.pkgs; [
+  build-system = with python3.pkgs; [
     cython
     poetry-core
-    pythonRelaxDepsHook
   ];
 
-  propagatedBuildInputs = with python3.pkgs; [
+  nativeBuildInputs = with python3.pkgs; [ pythonRelaxDepsHook ];
+
+  dependencies = with python3.pkgs; [
     aiohttp
     aiohttp-cors
     aubio
diff --git a/pkgs/applications/audio/linuxsampler/default.nix b/pkgs/applications/audio/linuxsampler/default.nix
index 93e16098a84cf..f2d512c721a82 100644
--- a/pkgs/applications/audio/linuxsampler/default.nix
+++ b/pkgs/applications/audio/linuxsampler/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "linuxsampler";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchurl {
     url = "https://download.linuxsampler.org/packages/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-Ii+dylTUXmazP8NVjAAMdHs7NK+puml0IrF4fc6DEls=";
+    sha256 = "sha256-T7quk5N5JBiPqIziQd0vaCr8tLDbwS6otz6egY01OTE=";
   };
 
   preConfigure = ''
diff --git a/pkgs/applications/audio/mopidy/jellyfin.nix b/pkgs/applications/audio/mopidy/jellyfin.nix
index d7d808cf685d5..932983aa4ddaf 100644
--- a/pkgs/applications/audio/mopidy/jellyfin.nix
+++ b/pkgs/applications/audio/mopidy/jellyfin.nix
@@ -2,12 +2,12 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "mopidy-jellyfin";
-  version = "1.0.4";
+  version = "1.0.5";
 
   src = fetchPypi {
     inherit version;
     pname = "Mopidy-Jellyfin";
-    sha256 = "ny0u6HdOlZCsmIzZuQ1rql+bvHU3xkh8IdwhJVHNH9c=";
+    sha256 = "sha256-cZliraTxTAJ2dXaxttWI3x4wCkmEhEo33GTNtAYwgTc=";
   };
 
   propagatedBuildInputs = [ mopidy python3Packages.unidecode python3Packages.websocket-client ];
diff --git a/pkgs/applications/audio/open-stage-control/default.nix b/pkgs/applications/audio/open-stage-control/default.nix
index b789dc668a8e4..60b9bc23bc362 100644
--- a/pkgs/applications/audio/open-stage-control/default.nix
+++ b/pkgs/applications/audio/open-stage-control/default.nix
@@ -12,13 +12,13 @@
 
 buildNpmPackage rec {
   pname = "open-stage-control";
-  version = "1.26.1";
+  version = "1.26.2";
 
   src = fetchFromGitHub {
     owner = "jean-emmanuel";
     repo = "open-stage-control";
     rev = "v${version}";
-    hash = "sha256-uw9vj12vs2N4nap6z1L6sGoCuPpRCmvfGoK/b+zHwHA=";
+    hash = "sha256-hBQyz6VAtiC1XOADZml1MwGKtmdyiJNlRAmHRjt6QsA=";
   };
 
   # Remove some Electron stuff from package.json
diff --git a/pkgs/applications/audio/parlatype/default.nix b/pkgs/applications/audio/parlatype/default.nix
index bb5bf0e9ddfe6..927de1d938569 100644
--- a/pkgs/applications/audio/parlatype/default.nix
+++ b/pkgs/applications/audio/parlatype/default.nix
@@ -16,7 +16,7 @@
 , ninja
 , pkg-config
 , python3
-, wrapGAppsHook
+, wrapGAppsHook4
 }:
 
 stdenv.mkDerivation rec {
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
     ninja
     pkg-config
     python3
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
@@ -58,6 +58,8 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
+    substituteInPlace data/meson_post_install.py \
+      --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
     patchShebangs data/meson_post_install.py
     patchShebangs libparlatype/tests/data/generate_config_data
   '';
diff --git a/pkgs/applications/audio/psst/default.nix b/pkgs/applications/audio/psst/default.nix
index 7abb8e78d1616..4d81f3f212bbb 100644
--- a/pkgs/applications/audio/psst/default.nix
+++ b/pkgs/applications/audio/psst/default.nix
@@ -16,13 +16,13 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "psst";
-  version = "unstable-2024-02-11";
+  version = "unstable-2024-04-01";
 
   src = fetchFromGitHub {
     owner = "jpochyla";
     repo = pname;
-    rev = "0cb4f6964b5ba771182ccfe005260a86a494ef92";
-    hash = "sha256-W+MFToyvYDQuC/8DqigvENxzJ6QGQOAeAdmdWG6+qZk=";
+    rev = "37d8da11774c6eff3d1c2902ac883dace178e832";
+    hash = "sha256-BGIbf7jtrspFqURyy2AIYKSSkcirLgj0oUBq0CHl+2s=";
   };
 
   cargoLock = {
diff --git a/pkgs/applications/audio/psst/make-build-reproducible.patch b/pkgs/applications/audio/psst/make-build-reproducible.patch
index fb74db8ccb995..5598c443b3c6b 100644
--- a/pkgs/applications/audio/psst/make-build-reproducible.patch
+++ b/pkgs/applications/audio/psst/make-build-reproducible.patch
@@ -51,7 +51,7 @@ index fcbd491..2d71ee3 100644
 -pub const GIT_VERSION: &str = git_version!();
 -pub const BUILD_TIME: &str = include!(concat!(env!("OUT_DIR"), "/build-time.txt"));
 -pub const REMOTE_URL: &str = include!(concat!(env!("OUT_DIR"), "/remote-url.txt"));
-+pub const GIT_VERSION: &str = "0cb4f6964b5ba771182ccfe005260a86a494ef92";
++pub const GIT_VERSION: &str = "37d8da11774c6eff3d1c2902ac883dace178e832";
 +pub const BUILD_TIME: &str = "1970-01-01 00:00:00";
 +pub const REMOTE_URL: &str = "https://github.com/jpochyla/psst";
  
diff --git a/pkgs/applications/audio/pyradio/default.nix b/pkgs/applications/audio/pyradio/default.nix
index 9748c9f16111b..e3bf3acf98d9b 100644
--- a/pkgs/applications/audio/pyradio/default.nix
+++ b/pkgs/applications/audio/pyradio/default.nix
@@ -6,13 +6,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "pyradio";
-  version = "0.9.2.25";
+  version = "0.9.3.2";
 
   src = fetchFromGitHub {
     owner = "coderholic";
     repo = "pyradio";
     rev = "refs/tags/${version}";
-    hash = "sha256-GkOp0iK84HDvVH8RmtmIKJ5EtQIECgZS5g8pmaIhUcc=";
+    hash = "sha256-aIWU68bdPUsIh8QRNnF0NcK7FemmYyUHbJg9KcUALBk=";
   };
 
   nativeBuildInputs = [
@@ -42,6 +42,6 @@ python3Packages.buildPythonApplication rec {
     mainProgram = "pyradio";
     changelog = "https://github.com/coderholic/pyradio/releases/tag/${version}";
     license = licenses.mit;
-    maintainers = with maintainers; [ contrun ];
+    maintainers = with maintainers; [ contrun yayayayaka ];
   };
 }
diff --git a/pkgs/applications/audio/reaper/default.nix b/pkgs/applications/audio/reaper/default.nix
index ba84f8c2aba4f..387fc659aa657 100644
--- a/pkgs/applications/audio/reaper/default.nix
+++ b/pkgs/applications/audio/reaper/default.nix
@@ -28,13 +28,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "reaper";
-  version = "7.11";
+  version = "7.13";
 
   src = fetchurl {
     url = url_for_platform version stdenv.hostPlatform.qemuArch;
-    hash = if stdenv.isDarwin then "sha256-8GWfrr+kKF3Ei6Fed9Oei461veRXXbTICvyNJNLBbYM=" else {
-      x86_64-linux = "sha256-lpgGXHWWhhs1jLllq5C3UhOLgLyMTE6qWFiGkBcuWlo=";
-      aarch64-linux = "sha256-0iTdrZYjKzPyNLMIM4othtAMox/65HBEy1VickOZFnA=";
+    hash = if stdenv.isDarwin then "sha256-g9t1vCPKTw68w6/b401OAdMNth4UlT9Obht6oPArqKY=" else {
+      x86_64-linux = "sha256-Zj+3LXNoHD6+v0dDn8mKqN14Y9Tk2+fZ4W343VjZoLw=";
+      aarch64-linux = "sha256-kbonwYlEd13AIzy1DNbsFwy+rRrQpOTrup3NZpJOmUA=";
     }.${stdenv.hostPlatform.system};
   };
 
diff --git a/pkgs/applications/audio/soundtracker/default.nix b/pkgs/applications/audio/soundtracker/default.nix
index eb51b2cd6e4bb..bf308fd29d280 100644
--- a/pkgs/applications/audio/soundtracker/default.nix
+++ b/pkgs/applications/audio/soundtracker/default.nix
@@ -14,7 +14,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "soundtracker";
-  version = "1.0.4";
+  version = "1.0.5";
 
   src = fetchzip {
     # Past releases get moved to the "old releases" directory.
@@ -22,7 +22,7 @@ stdenv.mkDerivation (finalAttrs: {
     # Nonetheless, only the name of the file seems to affect which file is
     # downloaded, so this path should be fine both for old and current releases.
     url = "mirror://sourceforge/soundtracker/soundtracker-${finalAttrs.version}.tar.xz";
-    hash = "sha256-kNt0BSRaEQY+oa1xbuZ1l6nCqXhcktVugxzcC3ZDaX0=";
+    hash = "sha256-g96Z1SdFGMq7WFI6x+UtmAHPZF0C+tHUOjNhmK2ld8I=";
   };
 
   postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
@@ -75,5 +75,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.all;
+    hydraPlatforms = platforms.linux; # sdl-config times out on darwin
   };
 })
diff --git a/pkgs/applications/audio/squeezelite/default.nix b/pkgs/applications/audio/squeezelite/default.nix
index 5c1ed3905539f..04b84e1ee263c 100644
--- a/pkgs/applications/audio/squeezelite/default.nix
+++ b/pkgs/applications/audio/squeezelite/default.nix
@@ -45,13 +45,13 @@ stdenv.mkDerivation {
   pname = binName;
   # versions are specified in `squeezelite.h`
   # see https://github.com/ralph-irving/squeezelite/issues/29
-  version = "2.0.0.1476";
+  version = "2.0.0.1481";
 
   src = fetchFromGitHub {
     owner = "ralph-irving";
     repo = "squeezelite";
-    rev = "7bba683e26f84b7dccc6ef5f40762a67b4f63606";
-    hash = "sha256-iRrZRnSIp8NbZ/Pi8WoQjyeBgxoU0mchNEf00W1Gsvo=";
+    rev = "c751ef146265c243cdbd7c0353dd0b70ab51730c";
+    hash = "sha256-wvHIKOTi/a5tdn7E4SnUrDz3htvyZQMJeQFa+24OKwI=";
   };
 
   buildInputs = [ flac libmad libvorbis mpg123 ]
diff --git a/pkgs/applications/audio/sublime-music/default.nix b/pkgs/applications/audio/sublime-music/default.nix
index b2cf3a5d842dc..2ce12df23dcf6 100644
--- a/pkgs/applications/audio/sublime-music/default.nix
+++ b/pkgs/applications/audio/sublime-music/default.nix
@@ -26,6 +26,7 @@ let
           rev = "refs/tags/${version}";
           hash = "sha256-IWTo/P9JRxBQlhtcH3JMJZZrwAA8EALF4dtHajWUc4w=";
         };
+        doCheck = false; # no tests
       });
 
       dataclasses-json = super.dataclasses-json.overridePythonAttrs (oldAttrs: rec {
diff --git a/pkgs/applications/audio/synaesthesia/default.nix b/pkgs/applications/audio/synaesthesia/default.nix
index 765e724cd8ecb..c8575d77b50fa 100644
--- a/pkgs/applications/audio/synaesthesia/default.nix
+++ b/pkgs/applications/audio/synaesthesia/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     description = "Program for representing sounds visually";
     license = lib.licenses.gpl2Only;
     platforms = lib.platforms.linux;
-    maintainers = [ lib.maintainers.infinisil ];
+    maintainers = [ ];
     mainProgram = "synaesthesia";
   };
 }
diff --git a/pkgs/applications/audio/tauon/default.nix b/pkgs/applications/audio/tauon/default.nix
index 09136728a4b9f..2d7a3f441e4c6 100644
--- a/pkgs/applications/audio/tauon/default.nix
+++ b/pkgs/applications/audio/tauon/default.nix
@@ -26,13 +26,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "tauon";
-  version = "7.7.1";
+  version = "7.7.2";
 
   src = fetchFromGitHub {
     owner = "Taiko2k";
     repo = "TauonMusicBox";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-rRYM8wdvwfetoIpS/lzAV/uV5XVpXyXsHSrClPWcsCo=";
+    hash = "sha256-IVl7XL6nn42zaY4bDraF9os0dXfquUql4E96djfVdVg=";
   };
 
   postUnpack = ''
diff --git a/pkgs/applications/audio/touchosc/default.nix b/pkgs/applications/audio/touchosc/default.nix
index 99d0fba6fa95c..bcd078eeb9f1b 100644
--- a/pkgs/applications/audio/touchosc/default.nix
+++ b/pkgs/applications/audio/touchosc/default.nix
@@ -45,7 +45,7 @@ in
 
 stdenv.mkDerivation rec {
   pname = "touchosc";
-  version = "1.2.9.200";
+  version = "1.3.0.202";
 
   suffix = {
     aarch64-linux = "linux-arm64";
@@ -56,9 +56,9 @@ stdenv.mkDerivation rec {
   src = fetchurl {
     url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.deb";
     hash = {
-      aarch64-linux = "sha256-JrpwD4xD4t9e3qmBCl6hfHv/InnRBRsYIsNNrxwQojo=";
-      armv7l-linux  = "sha256-8e50jznyHUJt9aL5K/emp0T8VSLdXMuBl6KCMot8kIY=";
-      x86_64-linux  = "sha256-lQi1HFW53LdS6Q86s0exp0WmTMTz4g48yZC73DaM2lo=";
+      aarch64-linux = "sha256-qsjZ/oo2V6mknrMktuTP188hp57oiPxO/iwp3G57JXU=";
+      armv7l-linux  = "sha256-33SnAYumfnZlxKms3fANt9wRJghaQHUstZbKqTxBF3Q=";
+      x86_64-linux  = "sha256-4SE2iw45sLyapYLCd31xT/aZMTmetsjmgfWFf0FrluI=";
     }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
   };
 
diff --git a/pkgs/applications/audio/vgmstream/default.nix b/pkgs/applications/audio/vgmstream/default.nix
index 2dae5a5f0d379..ed8cb27b506eb 100644
--- a/pkgs/applications/audio/vgmstream/default.nix
+++ b/pkgs/applications/audio/vgmstream/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "vgmstream";
-  version = "1896";
+  version = "1917";
 
   src = fetchFromGitHub {
     owner = "vgmstream";
     repo = "vgmstream";
     rev = "refs/tags/r${version}";
-    sha256 = "sha256-1BWJgV631MxxzdUtK8f+XRb9cqfhjlwN2LgWI0VmIHE=";
+    sha256 = "sha256-9HIa5/whdLouUWNFml7tPfXStIkO76dxUl5S4yiat64=";
   };
 
   passthru.updateScript = nix-update-script {
diff --git a/pkgs/applications/audio/zrythm/default.nix b/pkgs/applications/audio/zrythm/default.nix
index 254e0e5b746d0..663c159d5d9b0 100644
--- a/pkgs/applications/audio/zrythm/default.nix
+++ b/pkgs/applications/audio/zrythm/default.nix
@@ -64,7 +64,7 @@
 , sratom
 , texi2html
 , vamp-plugin-sdk
-, wrapGAppsHook
+, wrapGAppsHook4
 , xdg-utils
 , xxHash
 , zix
@@ -112,7 +112,7 @@ stdenv.mkDerivation rec {
     python3.pkgs.sphinx
     sassc
     texi2html
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/applications/blockchains/bisq-desktop/default.nix b/pkgs/applications/blockchains/bisq-desktop/default.nix
index 31c044f39c611..d4a3bdf0a444b 100644
--- a/pkgs/applications/blockchains/bisq-desktop/default.nix
+++ b/pkgs/applications/blockchains/bisq-desktop/default.nix
@@ -38,11 +38,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "bisq-desktop";
-  version = "1.9.14";
+  version = "1.9.15";
 
   src = fetchurl {
     url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb";
-    sha256 = "0xbq94qbp59523xjp80bly38aisfwkfi0y9hmyhf8xlw084b82kz";
+    sha256 = "0bz4yzfrzn9rwsmwwnsqdgxsqd42dyiz3vxi53qxj36h49nh8lzg";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/blockchains/bitcoin-abc/default.nix b/pkgs/applications/blockchains/bitcoin-abc/default.nix
index 5ed1308196856..427576b688ebc 100644
--- a/pkgs/applications/blockchains/bitcoin-abc/default.nix
+++ b/pkgs/applications/blockchains/bitcoin-abc/default.nix
@@ -25,13 +25,13 @@
 
 mkDerivation rec {
   pname = "bitcoin" + lib.optionalString (!withGui) "d" + "-abc";
-  version = "0.29.0";
+  version = "0.29.1";
 
   src = fetchFromGitHub {
     owner = "bitcoin-ABC";
     repo = "bitcoin-abc";
     rev = "v${version}";
-    hash = "sha256-9BJfzGXX9b7JRWFU9Flda8CWDqkgE2/IZcPopCyfBck=";
+    hash = "sha256-QEuOMl1sbVdB2nRwBO/2adqj/NIQGbwrBqML39fymM0=";
   };
 
   nativeBuildInputs = [ pkg-config cmake ];
diff --git a/pkgs/applications/blockchains/btcdeb/default.nix b/pkgs/applications/blockchains/btcdeb/default.nix
index 16e89b1e9daf3..7c5f803a968cc 100644
--- a/pkgs/applications/blockchains/btcdeb/default.nix
+++ b/pkgs/applications/blockchains/btcdeb/default.nix
@@ -6,15 +6,15 @@
 , unstableGitUpdater
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "btcdeb";
-  version = "0.3.20-unstable-2024-02-06";
+  version = "0.3.20-unstable-2024-03-26";
 
   src = fetchFromGitHub {
     owner = "bitcoin-core";
     repo = "btcdeb";
-    rev = "b9288fc3371eb1d9be0cae2549be25de66659be8";
-    hash = "sha256-IieLNMA3m6g2Kn7g3iewmUL9c+meMR4hrrwVYqNZoh8=";
+    rev = "675b7820f0eec8a76f68ade7ea35974a561d49dd";
+    hash = "sha256-J9E0edRbFONMut1/ZFaUqgWAtEUifc+pmGypeUQ0m4c=";
   };
 
   nativeBuildInputs = [ pkg-config autoreconfHook ];
diff --git a/pkgs/applications/blockchains/clightning/default.nix b/pkgs/applications/blockchains/clightning/default.nix
index cf8279e78c7b8..cab5a9c42d7b0 100644
--- a/pkgs/applications/blockchains/clightning/default.nix
+++ b/pkgs/applications/blockchains/clightning/default.nix
@@ -22,11 +22,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "clightning";
-  version = "24.02.1";
+  version = "24.02.2";
 
   src = fetchurl {
     url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
-    sha256 = "sha256-cz4rQUEaWILZMxmIP4V15pWf4zow5PDeWJzn5FEaUSs=";
+    sha256 = "sha256-KQS/4VmUxJkNpvPcxL5Up9f25leiPzvi2AiKuzRQmDo=";
   };
 
   # when building on darwin we need dawin.cctools to provide the correct libtool
diff --git a/pkgs/applications/blockchains/gridcoin-research/default.nix b/pkgs/applications/blockchains/gridcoin-research/default.nix
index 4a5bd601ced79..5774c082e2a34 100644
--- a/pkgs/applications/blockchains/gridcoin-research/default.nix
+++ b/pkgs/applications/blockchains/gridcoin-research/default.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gridcoin-research";
-  version = "5.4.7.0";
+  version = "5.4.8.0";
 
   src = fetchFromGitHub {
     owner = "gridcoin-community";
     repo = "Gridcoin-Research";
     rev = "${version}";
-    sha256 = "sha256-wdXah7QnWohGAtC98exPSkhg5F3BaBOiFs6bklFxD7E=";
+    sha256 = "sha256-HZirzXkqM2aep+wq8k2UCFWHPtN0sBZXjamgt7RYPBo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/blockchains/monero-cli/default.nix b/pkgs/applications/blockchains/monero-cli/default.nix
index 341e346b1c4d1..8f2f3b8501255 100644
--- a/pkgs/applications/blockchains/monero-cli/default.nix
+++ b/pkgs/applications/blockchains/monero-cli/default.nix
@@ -12,26 +12,26 @@ let
     owner = "monero-project";
     repo = "supercop";
     rev = "633500ad8c8759995049ccd022107d1fa8a1bbc9";
-    sha256 = "26UmESotSWnQ21VbAYEappLpkEMyl0jiuCaezRYd/sE=";
+    hash = "sha256-26UmESotSWnQ21VbAYEappLpkEMyl0jiuCaezRYd/sE=";
   };
   trezor-common = fetchFromGitHub {
     owner = "trezor";
     repo = "trezor-common";
-    rev = "bff7fdfe436c727982cc553bdfb29a9021b423b0";
-    sha256 = "VNypeEz9AV0ts8X3vINwYMOgO8VpNmyUPC4iY3OOuZI=";
+    rev = "bc28c316d05bf1e9ebfe3d7df1ab25831d98d168";
+    hash = "sha256-F1Hf1WwHqXMd/5OWrdkpomszACTozDuC7DQXW3p6248=";
   };
 
 in
 
 stdenv.mkDerivation rec {
   pname = "monero-cli";
-  version = "0.18.3.2";
+  version = "0.18.3.3";
 
   src = fetchFromGitHub {
     owner = "monero-project";
     repo = "monero";
     rev = "v${version}";
-    hash = "sha256-iVxy5SKBowTd8tY1L/MrXAu3r2S7bv67up3qWf0xJiw=";
+    hash = "sha256-1LkKIrud317BEE+713t5wiJV6FcDlJdj4ypXPR0bKTs=";
   };
 
   patches = [
diff --git a/pkgs/applications/blockchains/monero-gui/default.nix b/pkgs/applications/blockchains/monero-gui/default.nix
index a1ab9ff5889e5..d72cad5c53673 100644
--- a/pkgs/applications/blockchains/monero-gui/default.nix
+++ b/pkgs/applications/blockchains/monero-gui/default.nix
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation rec {
   pname = "monero-gui";
-  version = "0.18.3.2";
+  version = "0.18.3.3";
 
   src = fetchFromGitHub {
     owner = "monero-project";
     repo = "monero-gui";
     rev = "v${version}";
-    hash = "sha256-7/pJcEWc7zujegBnlRDMOfYpVuUDMGsQO805nYgN5PY=";
+    hash = "sha256-6qadBm4bPui11OVY1tLFcHsfswXWBFiJvutIsF6EfX8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/blockchains/optimism/default.nix b/pkgs/applications/blockchains/optimism/default.nix
index 02ec6b101cc54..7e368b3e686a7 100644
--- a/pkgs/applications/blockchains/optimism/default.nix
+++ b/pkgs/applications/blockchains/optimism/default.nix
@@ -6,19 +6,19 @@
 
 buildGoModule rec {
   pname = "optimism";
-  version = "1.7.2";
+  version = "1.7.3";
 
   src = fetchFromGitHub {
     owner = "ethereum-optimism";
     repo = "optimism";
     rev = "op-node/v${version}";
-    hash = "sha256-p3dbyszUeknAXrI1WqN9WS6AkEYQdVfMP90Kk/L41vM=";
+    hash = "sha256-KKCVjGBQeO5K6wq3GV3f7qaGY1uXNPI27w4DEC31pzU=";
     fetchSubmodules = true;
   };
 
   subPackages = [ "op-node/cmd" "op-proposer/cmd" "op-batcher/cmd" ];
 
-  vendorHash = "sha256-24zj480UU9SYqr2mV6rCJ46gwLgzilLuhqrkNKHVR28=";
+  vendorHash = "sha256-pQhNXOYohBoV5QsBnNpNjFg+Vvk5jK1zvSKkolp4yiQ=";
 
   buildInputs = [
     libpcap
diff --git a/pkgs/applications/blockchains/polkadot/Cargo.lock b/pkgs/applications/blockchains/polkadot/Cargo.lock
index 439e4052adff8..ad5d007915020 100644
--- a/pkgs/applications/blockchains/polkadot/Cargo.lock
+++ b/pkgs/applications/blockchains/polkadot/Cargo.lock
@@ -191,7 +191,7 @@ checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -202,11 +202,11 @@ checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c"
 dependencies = [
  "const-hex",
  "dunce",
- "heck",
+ "heck 0.4.1",
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
  "syn-solidity",
  "tiny-keccak",
 ]
@@ -275,9 +275,9 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.2"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
 
 [[package]]
 name = "anstyle-parse"
@@ -309,9 +309,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.75"
+version = "1.0.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
 
 [[package]]
 name = "approx"
@@ -347,7 +347,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -841,6 +841,7 @@ dependencies = [
  "pallet-xcm",
  "parachains-common",
  "parity-scale-codec",
+ "penpal-runtime",
  "rococo-runtime",
  "rococo-system-emulated-network",
  "sp-runtime",
@@ -866,6 +867,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -962,6 +964,7 @@ dependencies = [
  "pallet-xcm",
  "parachains-common",
  "parity-scale-codec",
+ "penpal-runtime",
  "polkadot-runtime-common",
  "sp-runtime",
  "staging-xcm",
@@ -988,6 +991,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -1226,7 +1230,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -1237,13 +1241,13 @@ checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae"
 
 [[package]]
 name = "async-trait"
-version = "0.1.74"
+version = "0.1.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -1391,7 +1395,7 @@ name = "binary-merkle-tree"
 version = "13.0.0"
 dependencies = [
  "array-bytes 6.1.0",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "hash-db",
  "log",
  "sp-core",
@@ -1425,7 +1429,7 @@ dependencies = [
  "regex",
  "rustc-hash",
  "shlex",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -2008,6 +2012,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -2146,6 +2151,7 @@ dependencies = [
  "pallet-message-queue",
  "pallet-xcm",
  "parachains-common",
+ "parity-scale-codec",
  "rococo-westend-system-emulated-network",
  "sp-runtime",
  "staging-xcm",
@@ -2178,6 +2184,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -2611,28 +2618,28 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.1"
+version = "4.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da"
+checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813"
 dependencies = [
  "clap_builder",
- "clap_derive 4.5.0",
+ "clap_derive 4.5.3",
 ]
 
 [[package]]
 name = "clap-num"
-version = "1.1.1"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e063d263364859dc54fb064cedb7c122740cd4733644b14b176c097f51e8ab7"
+checksum = "488557e97528174edaa2ee268b23a809e0c598213a4bbcb4f34575a46fda147e"
 dependencies = [
  "num-traits",
 ]
 
 [[package]]
 name = "clap_builder"
-version = "4.5.1"
+version = "4.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
 dependencies = [
  "anstream",
  "anstyle",
@@ -2647,7 +2654,7 @@ version = "4.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "586a385f7ef2f8b4d86bddaa0c094794e7ccbfe5ffef1f434fe928143fc783a5"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
 ]
 
 [[package]]
@@ -2656,7 +2663,7 @@ version = "3.2.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro-error",
  "proc-macro2",
  "quote",
@@ -2665,14 +2672,14 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.0"
+version = "4.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
+checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
 dependencies = [
- "heck",
+ "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -2736,6 +2743,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -2841,10 +2849,11 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
 
 [[package]]
 name = "colored"
-version = "2.1.0"
+version = "2.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8"
+checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6"
 dependencies = [
+ "is-terminal",
  "lazy_static",
  "windows-sys 0.48.0",
 ]
@@ -2990,6 +2999,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -3084,6 +3094,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -3148,6 +3159,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -3381,7 +3393,7 @@ dependencies = [
  "anes",
  "cast",
  "ciborium",
- "clap 4.5.1",
+ "clap 4.5.3",
  "criterion-plot",
  "futures",
  "is-terminal",
@@ -3534,7 +3546,7 @@ dependencies = [
 name = "cumulus-client-cli"
 version = "0.7.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "parity-scale-codec",
  "sc-chain-spec",
  "sc-cli",
@@ -3800,6 +3812,7 @@ dependencies = [
  "sp-blockchain",
  "sp-consensus",
  "sp-core",
+ "sp-io",
  "sp-runtime",
  "sp-transaction-pool",
 ]
@@ -3893,7 +3906,7 @@ dependencies = [
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -4045,7 +4058,7 @@ dependencies = [
  "cumulus-primitives-core",
  "cumulus-primitives-proof-size-hostfunction",
  "cumulus-test-runtime",
- "docify 0.2.7",
+ "docify",
  "frame-support",
  "frame-system",
  "log",
@@ -4297,7 +4310,7 @@ name = "cumulus-test-service"
 version = "0.1.0"
 dependencies = [
  "async-trait",
- "clap 4.5.1",
+ "clap 4.5.3",
  "criterion 0.5.1",
  "cumulus-client-cli",
  "cumulus-client-consensus-common",
@@ -4318,7 +4331,6 @@ dependencies = [
  "frame-system-rpc-runtime-api",
  "futures",
  "jsonrpsee",
- "pallet-im-online",
  "pallet-timestamp",
  "pallet-transaction-payment",
  "parachains-common",
@@ -4408,7 +4420,7 @@ checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -4448,7 +4460,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "scratch",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -4465,7 +4477,7 @@ checksum = "50c49547d73ba8dcfd4ad7325d64c6d5391ff4224d498fc39a6f3f49825a530d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -4569,6 +4581,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "derive-syn-parse"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.53",
+]
+
+[[package]]
 name = "derive_more"
 version = "0.99.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4673,7 +4696,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -4715,52 +4738,26 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
 
 [[package]]
 name = "docify"
-version = "0.1.16"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af1b04e6ef3d21119d3eb7b032bca17f99fe041e9c072f30f32cc0e1a2b1f3c4"
+checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce"
 dependencies = [
- "docify_macros 0.1.16",
-]
-
-[[package]]
-name = "docify"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cc4fd38aaa9fb98ac70794c82a00360d1e165a87fbf96a8a91f9dfc602aaee2"
-dependencies = [
- "docify_macros 0.2.7",
+ "docify_macros",
 ]
 
 [[package]]
 name = "docify_macros"
-version = "0.1.16"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b5610df7f2acf89a1bb5d1a66ae56b1c7fcdcfe3948856fb3ace3f644d70eb7"
+checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad"
 dependencies = [
  "common-path",
- "derive-syn-parse",
- "lazy_static",
- "proc-macro2",
- "quote",
- "regex",
- "syn 2.0.50",
- "termcolor",
- "walkdir",
-]
-
-[[package]]
-name = "docify_macros"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63fa215f3a0d40fb2a221b3aa90d8e1fbb8379785a990cb60d62ac71ebdc6460"
-dependencies = [
- "common-path",
- "derive-syn-parse",
+ "derive-syn-parse 0.2.0",
  "once_cell",
  "proc-macro2",
  "quote",
  "regex",
- "syn 2.0.50",
+ "syn 2.0.53",
  "termcolor",
  "toml 0.8.8",
  "walkdir",
@@ -4931,6 +4928,7 @@ dependencies = [
  "parachains-common",
  "parity-scale-codec",
  "paste",
+ "polkadot-parachain-primitives",
  "polkadot-primitives",
  "polkadot-runtime-parachains",
  "sc-consensus-grandpa",
@@ -4964,7 +4962,7 @@ version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "syn 1.0.109",
@@ -4987,7 +4985,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -4998,14 +4996,14 @@ checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
-name = "env_logger"
-version = "0.8.4"
+name = "env_filter"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
+checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea"
 dependencies = [
  "log",
  "regex",
@@ -5013,15 +5011,12 @@ dependencies = [
 
 [[package]]
 name = "env_logger"
-version = "0.9.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7"
+checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
 dependencies = [
- "atty",
- "humantime",
  "log",
  "regex",
- "termcolor",
 ]
 
 [[package]]
@@ -5038,6 +5033,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "env_logger"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "env_filter",
+ "humantime",
+ "log",
+]
+
+[[package]]
 name = "environmental"
 version = "1.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5051,9 +5059,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "erased-serde"
-version = "0.3.30"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "837c0466252947ada828b975e12daf82e18bb5444e4df87be6038d4469e2a3d2"
+checksum = "2b73807008a3c7f171cc40312f37d95ef0396e048b5848d775f54b1a4dd4a0d3"
 dependencies = [
  "serde",
 ]
@@ -5188,7 +5196,7 @@ dependencies = [
  "fs-err",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -5450,7 +5458,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa"
 name = "frame"
 version = "0.0.1-dev"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-executive",
  "frame-support",
  "frame-system",
@@ -5509,7 +5517,7 @@ dependencies = [
  "Inflector",
  "array-bytes 6.1.0",
  "chrono",
- "clap 4.5.1",
+ "clap 4.5.3",
  "comfy-table",
  "frame-benchmarking",
  "frame-support",
@@ -5575,7 +5583,7 @@ dependencies = [
  "quote",
  "scale-info",
  "sp-arithmetic",
- "syn 2.0.50",
+ "syn 2.0.53",
  "trybuild",
 ]
 
@@ -5601,7 +5609,7 @@ dependencies = [
 name = "frame-election-solution-type-fuzzer"
 version = "2.0.0-alpha.5"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "frame-election-provider-solution-type",
  "frame-election-provider-support",
  "frame-support",
@@ -5679,7 +5687,7 @@ dependencies = [
  "array-bytes 6.1.0",
  "assert_matches",
  "bitflags 1.3.2",
- "docify 0.2.7",
+ "docify",
  "environmental",
  "frame-metadata",
  "frame-support-procedural",
@@ -5722,7 +5730,7 @@ version = "23.0.0"
 dependencies = [
  "Inflector",
  "cfg-expr",
- "derive-syn-parse",
+ "derive-syn-parse 0.2.0",
  "expander 2.0.0",
  "frame-support-procedural-tools",
  "itertools 0.10.5",
@@ -5732,7 +5740,7 @@ dependencies = [
  "quote",
  "regex",
  "sp-crypto-hashing",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -5743,7 +5751,7 @@ dependencies = [
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -5752,7 +5760,7 @@ version = "11.0.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -5823,7 +5831,7 @@ version = "28.0.0"
 dependencies = [
  "cfg-if",
  "criterion 0.4.0",
- "docify 0.2.7",
+ "docify",
  "frame-support",
  "log",
  "parity-scale-codec",
@@ -5985,7 +5993,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -6340,6 +6348,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
 name = "hermit-abi"
 version = "0.1.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6763,7 +6777,7 @@ version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f"
 dependencies = [
- "socket2 0.5.3",
+ "socket2 0.5.6",
  "widestring",
  "windows-sys 0.48.0",
  "winreg",
@@ -6845,9 +6859,9 @@ checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd"
 
 [[package]]
 name = "jsonrpsee"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a95f7cc23d5fab0cdeeaf6bad8c8f5e7a3aa7f0d211957ea78232b327ab27b0"
+checksum = "87f3ae45a64cfc0882934f963be9431b2a165d667f53140358181f262aca0702"
 dependencies = [
  "jsonrpsee-core",
  "jsonrpsee-http-client",
@@ -6861,9 +6875,9 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-client-transport"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b1736cfa3845fd9f8f43751f2b8e0e83f7b6081e754502f7d63b6587692cc83"
+checksum = "455fc882e56f58228df2aee36b88a1340eafd707c76af2fa68cf94b37d461131"
 dependencies = [
  "futures-util",
  "http",
@@ -6882,9 +6896,9 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-core"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82030d038658974732103e623ba2e0abec03bbbe175b39c0a2fafbada60c5868"
+checksum = "b75568f4f9696e3a47426e1985b548e1a9fcb13372a5e320372acaf04aca30d1"
 dependencies = [
  "anyhow",
  "async-lock 3.3.0",
@@ -6908,9 +6922,9 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-http-client"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36a06ef0de060005fddf772d54597bb6a8b0413da47dcffd304b0306147b9678"
+checksum = "9e7a95e346f55df84fb167b7e06470e196e7d5b9488a21d69c5d9732043ba7ba"
 dependencies = [
  "async-trait",
  "hyper",
@@ -6928,22 +6942,22 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-proc-macros"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69fc56131589f82e57805f7338b87023db4aafef813555708b159787e34ad6bc"
+checksum = "30ca066e73dd70294aebc5c2675d8ffae43be944af027c857ce0d4c51785f014"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "jsonrpsee-server"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d85be77fe5b2a94589e3164fb780017f7aff7d646b49278c0d0346af16975c8e"
+checksum = "0e29c1bd1f9bba83c864977c73404e505f74f730fa0db89dd490ec174e36d7f0"
 dependencies = [
  "futures-util",
  "http",
@@ -6965,9 +6979,9 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-types"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a48fdc1202eafc51c63e00406575e59493284ace8b8b61aa16f3a6db5d64f1a"
+checksum = "3467fd35feeee179f71ab294516bdf3a81139e7aeebdd860e46897c12e1a3368"
 dependencies = [
  "anyhow",
  "beef",
@@ -6978,9 +6992,9 @@ dependencies = [
 
 [[package]]
 name = "jsonrpsee-ws-client"
-version = "0.22.0"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5ce25d70a8e4d3cc574bbc3cad0137c326ad64b194793d5e7bbdd3fa4504181"
+checksum = "68ca71e74983f624c0cb67828e480a981586074da8ad3a2f214c6a3f884edab9"
 dependencies = [
  "http",
  "jsonrpsee-client-transport",
@@ -7583,7 +7597,7 @@ version = "0.32.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "quote",
  "syn 1.0.109",
 ]
@@ -7836,9 +7850,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.20"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
 dependencies = [
  "serde",
  "value-bag",
@@ -7924,7 +7938,7 @@ dependencies = [
  "macro_magic_core",
  "macro_magic_macros",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -7934,11 +7948,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "468155613a44cfd825f1fb0ffa532b018253920d404e6fca1e8d43155198a46d"
 dependencies = [
  "const-random",
- "derive-syn-parse",
+ "derive-syn-parse 0.1.5",
  "macro_magic_core_macros",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -7949,7 +7963,7 @@ checksum = "9ea73aa640dc01d62a590d48c0c3521ed739d53b27f919b25c3551e233481654"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -7960,7 +7974,7 @@ checksum = "ef9d79ae96aaba821963320eb2b6e34d17df1e5a83d8a1985c29cc5be59577b3"
 dependencies = [
  "macro_magic_core",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -8117,7 +8131,7 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 name = "minimal-template-node"
 version = "0.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "frame",
  "futures",
  "futures-timer",
@@ -8586,7 +8600,7 @@ name = "node-bench"
 version = "0.9.0-dev"
 dependencies = [
  "array-bytes 6.1.0",
- "clap 4.5.1",
+ "clap 4.5.3",
  "derive_more",
  "fs_extra",
  "futures",
@@ -8663,7 +8677,7 @@ dependencies = [
 name = "node-runtime-generate-bags"
 version = "3.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "generate-bags",
  "kitchensink-runtime",
 ]
@@ -8672,7 +8686,7 @@ dependencies = [
 name = "node-template-release"
 version = "3.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "flate2",
  "fs_extra",
  "glob",
@@ -9206,7 +9220,7 @@ name = "pallet-bags-list"
 version = "27.0.0"
 dependencies = [
  "aquamarine 0.5.0",
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-election-provider-support",
  "frame-support",
@@ -9254,7 +9268,7 @@ dependencies = [
 name = "pallet-balances"
 version = "28.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -9525,7 +9539,7 @@ dependencies = [
  "array-bytes 6.1.0",
  "assert_matches",
  "bitflags 1.3.2",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "environmental",
  "frame-benchmarking",
  "frame-support",
@@ -9543,6 +9557,7 @@ dependencies = [
  "pallet-timestamp",
  "pallet-utility",
  "parity-scale-codec",
+ "paste",
  "pretty_assertions",
  "rand",
  "rand_pcg",
@@ -9570,7 +9585,7 @@ dependencies = [
  "anyhow",
  "frame-system",
  "parity-wasm",
- "polkavm-linker 0.5.0",
+ "polkavm-linker",
  "sp-runtime",
  "tempfile",
  "toml 0.8.8",
@@ -9621,7 +9636,7 @@ version = "18.0.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -9631,7 +9646,7 @@ dependencies = [
  "bitflags 1.3.2",
  "parity-scale-codec",
  "paste",
- "polkavm-derive 0.5.0",
+ "polkavm-derive",
  "scale-info",
 ]
 
@@ -9771,7 +9786,7 @@ dependencies = [
  "sp-runtime",
  "sp-std 14.0.0",
  "sp-tracing 16.0.0",
- "strum 0.24.1",
+ "strum 0.26.2",
 ]
 
 [[package]]
@@ -9872,7 +9887,7 @@ dependencies = [
 name = "pallet-example-single-block-migrations"
 version = "0.0.1"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-executive",
  "frame-support",
  "frame-system",
@@ -9938,7 +9953,7 @@ dependencies = [
 name = "pallet-fast-unstake"
 version = "27.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-election-provider-support",
  "frame-support",
@@ -10139,7 +10154,7 @@ dependencies = [
 name = "pallet-migrations"
 version = "1.0.0"
 dependencies = [
- "docify 0.1.16",
+ "docify",
  "frame-benchmarking",
  "frame-executive",
  "frame-support",
@@ -10192,7 +10207,7 @@ name = "pallet-mmr"
 version = "27.0.0"
 dependencies = [
  "array-bytes 6.1.0",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -10443,7 +10458,7 @@ dependencies = [
 name = "pallet-paged-list"
 version = "0.6.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -10485,7 +10500,7 @@ dependencies = [
 name = "pallet-parameters"
 version = "0.0.1"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -10646,7 +10661,7 @@ dependencies = [
 name = "pallet-safe-mode"
 version = "9.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -10703,7 +10718,7 @@ dependencies = [
 name = "pallet-scheduler"
 version = "29.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -10849,7 +10864,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "sp-runtime",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -10916,7 +10931,7 @@ dependencies = [
 name = "pallet-sudo"
 version = "28.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -10946,7 +10961,7 @@ dependencies = [
 name = "pallet-timestamp"
 version = "27.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -11050,7 +11065,7 @@ dependencies = [
 name = "pallet-treasury"
 version = "27.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -11070,7 +11085,7 @@ dependencies = [
 name = "pallet-tx-pause"
 version = "9.0.0"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "frame-benchmarking",
  "frame-support",
  "frame-system",
@@ -11179,6 +11194,7 @@ dependencies = [
  "staging-xcm",
  "staging-xcm-builder",
  "staging-xcm-executor",
+ "xcm-fee-payment-runtime-api",
 ]
 
 [[package]]
@@ -11254,7 +11270,7 @@ dependencies = [
 name = "parachain-template-node"
 version = "0.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "color-print",
  "cumulus-client-cli",
  "cumulus-client-collator",
@@ -11645,9 +11661,8 @@ dependencies = [
  "frame-support",
  "parachains-common",
  "penpal-runtime",
- "rococo-emulated-chain",
  "sp-core",
- "westend-emulated-chain",
+ "staging-xcm",
 ]
 
 [[package]]
@@ -11757,6 +11772,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "enumflags2",
  "frame-benchmarking",
@@ -11856,6 +11872,7 @@ dependencies = [
  "cumulus-pallet-xcmp-queue",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "enumflags2",
  "frame-benchmarking",
@@ -11945,7 +11962,7 @@ dependencies = [
  "pest_meta",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -11986,7 +12003,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -12084,7 +12101,7 @@ version = "7.0.0"
 dependencies = [
  "assert_matches",
  "bitvec",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "futures",
  "futures-timer",
  "itertools 0.10.5",
@@ -12114,7 +12131,7 @@ dependencies = [
  "always-assert",
  "assert_matches",
  "bitvec",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "futures",
  "futures-timer",
  "log",
@@ -12170,7 +12187,7 @@ version = "7.0.0"
 dependencies = [
  "assert_matches",
  "async-trait",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "fatality",
  "futures",
  "futures-timer",
@@ -12201,7 +12218,7 @@ name = "polkadot-cli"
 version = "7.0.0"
 dependencies = [
  "cfg-if",
- "clap 4.5.1",
+ "clap 4.5.3",
  "frame-benchmarking-cli",
  "futures",
  "log",
@@ -12232,7 +12249,7 @@ version = "7.0.0"
 dependencies = [
  "assert_matches",
  "bitvec",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "fatality",
  "futures",
  "futures-timer",
@@ -12388,6 +12405,7 @@ dependencies = [
  "polkadot-node-subsystem-util",
  "polkadot-primitives",
  "polkadot-primitives-test-helpers",
+ "rstest",
  "sp-core",
  "sp-keyring",
  "sp-maybe-compressed-blob",
@@ -12403,7 +12421,7 @@ dependencies = [
  "async-trait",
  "bitvec",
  "derive_more",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "futures",
  "futures-timer",
  "itertools 0.10.5",
@@ -12445,7 +12463,7 @@ version = "7.0.0"
 dependencies = [
  "assert_matches",
  "bitvec",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "futures",
  "futures-timer",
  "kvdb",
@@ -12887,7 +12905,7 @@ dependencies = [
  "rand_chacha 0.3.1",
  "sc-authority-discovery",
  "sc-network",
- "strum 0.24.1",
+ "strum 0.26.2",
  "thiserror",
  "tracing-gum",
 ]
@@ -12979,7 +12997,7 @@ dependencies = [
  "assert_matches",
  "async-trait",
  "derive_more",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "fatality",
  "futures",
  "futures-channel",
@@ -13043,7 +13061,7 @@ dependencies = [
 
 [[package]]
 name = "polkadot-parachain-bin"
-version = "1.9.0"
+version = "1.10.0"
 dependencies = [
  "assert_cmd",
  "asset-hub-rococo-runtime",
@@ -13051,7 +13069,7 @@ dependencies = [
  "async-trait",
  "bridge-hub-rococo-runtime",
  "bridge-hub-westend-runtime",
- "clap 4.5.1",
+ "clap 4.5.3",
  "collectives-westend-runtime",
  "color-print",
  "contracts-rococo-runtime",
@@ -13358,7 +13376,7 @@ version = "0.0.1"
 dependencies = [
  "cumulus-pallet-aura-ext",
  "cumulus-pallet-parachain-system",
- "docify 0.2.7",
+ "docify",
  "frame",
  "frame-executive",
  "frame-support",
@@ -13367,7 +13385,9 @@ dependencies = [
  "pallet-assets",
  "pallet-aura",
  "pallet-authorship",
+ "pallet-babe",
  "pallet-balances",
+ "pallet-broker",
  "pallet-collective",
  "pallet-default-config-example",
  "pallet-democracy",
@@ -13375,10 +13395,14 @@ dependencies = [
  "pallet-example-single-block-migrations",
  "pallet-examples",
  "pallet-multisig",
+ "pallet-nfts",
+ "pallet-preimage",
  "pallet-proxy",
+ "pallet-referenda",
  "pallet-scheduler",
  "pallet-timestamp",
  "pallet-transaction-payment",
+ "pallet-uniques",
  "pallet-utility",
  "parity-scale-codec",
  "sc-cli",
@@ -13395,6 +13419,7 @@ dependencies = [
  "scale-info",
  "simple-mermaid",
  "sp-api",
+ "sp-arithmetic",
  "sp-core",
  "sp-io",
  "sp-keyring",
@@ -13416,7 +13441,7 @@ dependencies = [
  "assert_matches",
  "async-trait",
  "bitvec",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "frame-benchmarking",
  "frame-benchmarking-cli",
  "frame-support",
@@ -13430,7 +13455,6 @@ dependencies = [
  "log",
  "mmr-gadget",
  "pallet-babe",
- "pallet-im-online",
  "pallet-staking",
  "pallet-transaction-payment",
  "pallet-transaction-payment-rpc-runtime-api",
@@ -13527,12 +13551,14 @@ dependencies = [
  "sp-transaction-pool",
  "sp-version",
  "sp-weights",
+ "staging-xcm",
  "substrate-prometheus-endpoint",
  "tempfile",
  "thiserror",
  "tracing-gum",
  "westend-runtime",
  "westend-runtime-constants",
+ "xcm-fee-payment-runtime-api",
 ]
 
 [[package]]
@@ -13587,11 +13613,11 @@ dependencies = [
  "async-trait",
  "bincode",
  "bitvec",
- "clap 4.5.1",
+ "clap 4.5.3",
  "clap-num",
  "color-eyre",
  "colored",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "futures",
  "futures-timer",
  "hex",
@@ -13631,6 +13657,7 @@ dependencies = [
  "sc-service",
  "schnorrkel 0.11.4",
  "serde",
+ "serde_json",
  "serde_yaml",
  "sha1",
  "sp-application-crypto",
@@ -13681,7 +13708,7 @@ version = "1.0.0"
 dependencies = [
  "assert_matches",
  "async-trait",
- "clap 4.5.1",
+ "clap 4.5.3",
  "color-eyre",
  "futures",
  "futures-timer",
@@ -13828,7 +13855,7 @@ dependencies = [
 name = "polkadot-voter-bags"
 version = "7.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "generate-bags",
  "sp-io",
  "westend-runtime",
@@ -13843,7 +13870,7 @@ dependencies = [
  "libc",
  "log",
  "polkavm-assembler",
- "polkavm-common 0.9.0",
+ "polkavm-common",
  "polkavm-linux-raw",
 ]
 
@@ -13858,12 +13885,6 @@ dependencies = [
 
 [[package]]
 name = "polkavm-common"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c"
-
-[[package]]
-name = "polkavm-common"
 version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92"
@@ -13873,16 +13894,6 @@ dependencies = [
 
 [[package]]
 name = "polkavm-derive"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8"
-dependencies = [
- "polkavm-derive-impl 0.5.0",
- "syn 2.0.50",
-]
-
-[[package]]
-name = "polkavm-derive"
 version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606"
@@ -13892,26 +13903,14 @@ dependencies = [
 
 [[package]]
 name = "polkavm-derive-impl"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d"
-dependencies = [
- "polkavm-common 0.5.0",
- "proc-macro2",
- "quote",
- "syn 2.0.50",
-]
-
-[[package]]
-name = "polkavm-derive-impl"
 version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c"
 dependencies = [
- "polkavm-common 0.9.0",
+ "polkavm-common",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -13920,23 +13919,8 @@ version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429"
 dependencies = [
- "polkavm-derive-impl 0.9.0",
- "syn 2.0.50",
-]
-
-[[package]]
-name = "polkavm-linker"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5a668bb33c7f0b5f4ca91adb1e1e71cf4930fef5e6909f46c2180d65cce37d0"
-dependencies = [
- "gimli 0.28.0",
- "hashbrown 0.14.3",
- "log",
- "object 0.32.2",
- "polkavm-common 0.5.0",
- "regalloc2 0.9.3",
- "rustc-demangle",
+ "polkavm-derive-impl",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -13949,7 +13933,7 @@ dependencies = [
  "hashbrown 0.14.3",
  "log",
  "object 0.32.2",
- "polkavm-common 0.9.0",
+ "polkavm-common",
  "regalloc2 0.9.3",
  "rustc-demangle",
 ]
@@ -14132,7 +14116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62"
 dependencies = [
  "proc-macro2",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -14223,7 +14207,7 @@ checksum = "9b698b0b09d40e9b7c1a47b132d66a8b54bcd20583d9b6d06e4535e383b4405c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -14295,7 +14279,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -14357,7 +14341,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
 dependencies = [
  "bytes",
- "heck",
+ "heck 0.4.1",
  "itertools 0.10.5",
  "lazy_static",
  "log",
@@ -14395,7 +14379,7 @@ dependencies = [
  "itertools 0.11.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -14738,7 +14722,7 @@ checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -14826,7 +14810,7 @@ checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc"
 name = "remote-ext-tests-bags-list"
 version = "1.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "frame-system",
  "log",
  "pallet-bags-list-remote-tests",
@@ -15003,6 +14987,7 @@ dependencies = [
  "cumulus-ping",
  "cumulus-primitives-aura",
  "cumulus-primitives-core",
+ "cumulus-primitives-storage-weight-reclaim",
  "cumulus-primitives-utility",
  "frame-benchmarking",
  "frame-executive",
@@ -15073,7 +15058,6 @@ dependencies = [
  "pallet-elections-phragmen",
  "pallet-grandpa",
  "pallet-identity",
- "pallet-im-online",
  "pallet-indices",
  "pallet-membership",
  "pallet-message-queue",
@@ -15144,6 +15128,7 @@ dependencies = [
  "substrate-wasm-builder",
  "tiny-keccak",
  "tokio",
+ "xcm-fee-payment-runtime-api",
 ]
 
 [[package]]
@@ -15229,7 +15214,7 @@ dependencies = [
  "regex",
  "relative-path",
  "rustc_version 0.4.0",
- "syn 2.0.50",
+ "syn 2.0.53",
  "unicode-ident",
 ]
 
@@ -15584,6 +15569,7 @@ dependencies = [
  "futures-timer",
  "ip_network",
  "libp2p",
+ "linked_hash_set",
  "log",
  "multihash 0.18.1",
  "multihash-codetable",
@@ -15652,7 +15638,7 @@ name = "sc-chain-spec"
 version = "27.0.0"
 dependencies = [
  "array-bytes 6.1.0",
- "docify 0.2.7",
+ "docify",
  "log",
  "memmap2 0.9.3",
  "parity-scale-codec",
@@ -15683,7 +15669,7 @@ dependencies = [
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -15692,7 +15678,7 @@ version = "0.36.0"
 dependencies = [
  "array-bytes 6.1.0",
  "chrono",
- "clap 4.5.1",
+ "clap 4.5.3",
  "fdlimit",
  "futures",
  "futures-timer",
@@ -16165,7 +16151,7 @@ dependencies = [
  "array-bytes 6.1.0",
  "assert_matches",
  "criterion 0.4.0",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "num_cpus",
  "parity-scale-codec",
  "parking_lot 0.12.1",
@@ -16601,7 +16587,7 @@ name = "sc-rpc"
 version = "29.0.0"
 dependencies = [
  "assert_matches",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "futures",
  "jsonrpsee",
  "log",
@@ -16843,7 +16829,7 @@ dependencies = [
 name = "sc-statement-store"
 version = "10.0.0"
 dependencies = [
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "log",
  "parity-db",
  "parking_lot 0.12.1",
@@ -16863,7 +16849,7 @@ dependencies = [
 name = "sc-storage-monitor"
 version = "0.16.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "fs4",
  "log",
  "sp-core",
@@ -16965,7 +16951,7 @@ dependencies = [
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -17035,9 +17021,9 @@ dependencies = [
 
 [[package]]
 name = "scale-info"
-version = "2.10.0"
+version = "2.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f7d66a1128282b7ef025a8ead62a4a9fcf017382ec53b8ffbf4d7bf77bd3c60"
+checksum = "788745a868b0e751750388f4e6546eb921ef714a4317fa6954f7cde114eb2eb7"
 dependencies = [
  "bitvec",
  "cfg-if",
@@ -17049,9 +17035,9 @@ dependencies = [
 
 [[package]]
 name = "scale-info-derive"
-version = "2.10.0"
+version = "2.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abf2c68b89cafb3b8d918dd07b42be0da66ff202cf1155c5739a4e0c1ea0dc19"
+checksum = "7dc2f4e8bc344b9fc3d5f74f72c2e55bfc38d28dc2ebc69c194a3df424e4d9ac"
 dependencies = [
  "proc-macro-crate 1.3.1",
  "proc-macro2",
@@ -17367,7 +17353,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -17424,9 +17410,9 @@ dependencies = [
 
 [[package]]
 name = "serde_yaml"
-version = "0.9.32"
+version = "0.9.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f"
+checksum = "a0623d197252096520c6f2a5e1171ee436e5af99a5d7caa2891e55e61950e6d9"
 dependencies = [
  "indexmap 2.2.3",
  "itoa",
@@ -17467,7 +17453,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -17926,7 +17912,7 @@ name = "snowbridge-outbound-queue-merkle-tree"
 version = "0.3.0"
 dependencies = [
  "array-bytes 4.2.0",
- "env_logger 0.9.3",
+ "env_logger 0.11.3",
  "hex",
  "hex-literal",
  "parity-scale-codec",
@@ -18236,12 +18222,12 @@ dependencies = [
 
 [[package]]
 name = "socket2"
-version = "0.5.3"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -18265,7 +18251,7 @@ dependencies = [
 name = "solochain-template-node"
 version = "0.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "frame-benchmarking-cli",
  "frame-system",
  "futures",
@@ -18375,7 +18361,7 @@ dependencies = [
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -18429,6 +18415,7 @@ name = "sp-arithmetic"
 version = "23.0.0"
 dependencies = [
  "criterion 0.4.0",
+ "docify",
  "integer-sqrt",
  "num-traits",
  "parity-scale-codec",
@@ -18479,7 +18466,6 @@ dependencies = [
  "sp-api",
  "sp-application-crypto",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18489,7 +18475,6 @@ dependencies = [
  "sp-api",
  "sp-inherents",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18536,7 +18521,6 @@ dependencies = [
  "sp-consensus-slots",
  "sp-inherents",
  "sp-runtime",
- "sp-std 14.0.0",
  "sp-timestamp",
 ]
 
@@ -18554,7 +18538,6 @@ dependencies = [
  "sp-core",
  "sp-inherents",
  "sp-runtime",
- "sp-std 14.0.0",
  "sp-timestamp",
 ]
 
@@ -18575,8 +18558,7 @@ dependencies = [
  "sp-keystore",
  "sp-mmr-primitives",
  "sp-runtime",
- "sp-std 14.0.0",
- "strum 0.24.1",
+ "strum 0.26.2",
  "w3f-bls",
 ]
 
@@ -18594,7 +18576,6 @@ dependencies = [
  "sp-core",
  "sp-keystore",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18605,7 +18586,6 @@ dependencies = [
  "sp-api",
  "sp-core",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18620,7 +18600,6 @@ dependencies = [
  "sp-consensus-slots",
  "sp-core",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18630,7 +18609,6 @@ dependencies = [
  "parity-scale-codec",
  "scale-info",
  "serde",
- "sp-std 14.0.0",
  "sp-timestamp",
 ]
 
@@ -18746,7 +18724,6 @@ dependencies = [
  "ark-ed-on-bls12-381-bandersnatch-ext",
  "ark-scale 0.0.12",
  "sp-runtime-interface 24.0.0",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18769,7 +18746,7 @@ version = "0.0.0"
 dependencies = [
  "quote",
  "sp-crypto-hashing",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -18787,7 +18764,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk#82912acb33a9030c0ef3bf5
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -18796,7 +18773,7 @@ version = "14.0.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -18816,7 +18793,6 @@ version = "0.25.0"
 dependencies = [
  "environmental",
  "parity-scale-codec",
- "sp-std 14.0.0",
  "sp-storage 19.0.0",
 ]
 
@@ -18827,7 +18803,6 @@ dependencies = [
  "serde_json",
  "sp-api",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18840,7 +18815,6 @@ dependencies = [
  "parity-scale-codec",
  "scale-info",
  "sp-runtime",
- "sp-std 14.0.0",
  "thiserror",
 ]
 
@@ -18853,7 +18827,7 @@ dependencies = [
  "libsecp256k1",
  "log",
  "parity-scale-codec",
- "polkavm-derive 0.9.1",
+ "polkavm-derive",
  "rustversion",
  "secp256k1",
  "sp-core",
@@ -18875,7 +18849,7 @@ version = "31.0.0"
 dependencies = [
  "sp-core",
  "sp-runtime",
- "strum 0.24.1",
+ "strum 0.26.2",
 ]
 
 [[package]]
@@ -18905,7 +18879,6 @@ dependencies = [
  "frame-metadata",
  "parity-scale-codec",
  "scale-info",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18916,7 +18889,6 @@ dependencies = [
  "scale-info",
  "sp-api",
  "sp-application-crypto",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -18933,7 +18905,6 @@ dependencies = [
  "sp-core",
  "sp-debug-derive 14.0.0",
  "sp-runtime",
- "sp-std 14.0.0",
  "thiserror",
 ]
 
@@ -18948,7 +18919,6 @@ dependencies = [
  "sp-arithmetic",
  "sp-core",
  "sp-runtime",
- "sp-std 14.0.0",
  "substrate-test-utils",
 ]
 
@@ -18956,7 +18926,7 @@ dependencies = [
 name = "sp-npos-elections-fuzzer"
 version = "2.0.0-alpha.5"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "honggfuzz",
  "rand",
  "sp-npos-elections",
@@ -18995,7 +18965,7 @@ dependencies = [
 name = "sp-runtime"
 version = "31.0.1"
 dependencies = [
- "docify 0.2.7",
+ "docify",
  "either",
  "hash256-std-hasher",
  "impl-trait-for-tuples",
@@ -19045,7 +19015,7 @@ dependencies = [
  "bytes",
  "impl-trait-for-tuples",
  "parity-scale-codec",
- "polkavm-derive 0.9.1",
+ "polkavm-derive",
  "primitive-types",
  "rustversion",
  "sp-core",
@@ -19071,7 +19041,7 @@ dependencies = [
  "proc-macro-crate 1.3.1",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -19083,7 +19053,7 @@ dependencies = [
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -19135,7 +19105,6 @@ dependencies = [
  "sp-keystore",
  "sp-runtime",
  "sp-staking",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -19148,7 +19117,6 @@ dependencies = [
  "serde",
  "sp-core",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -19168,7 +19136,6 @@ dependencies = [
  "sp-externalities 0.25.0",
  "sp-panic-handler",
  "sp-runtime",
- "sp-std 14.0.0",
  "sp-trie",
  "thiserror",
  "tracing",
@@ -19194,7 +19161,6 @@ dependencies = [
  "sp-externalities 0.25.0",
  "sp-runtime",
  "sp-runtime-interface 24.0.0",
- "sp-std 14.0.0",
  "thiserror",
  "x25519-dalek 2.0.0",
 ]
@@ -19230,7 +19196,6 @@ dependencies = [
  "ref-cast",
  "serde",
  "sp-debug-derive 14.0.0",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -19243,7 +19208,6 @@ dependencies = [
  "sp-application-crypto",
  "sp-core",
  "sp-runtime",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -19254,7 +19218,6 @@ dependencies = [
  "parity-scale-codec",
  "sp-inherents",
  "sp-runtime",
- "sp-std 14.0.0",
  "thiserror",
 ]
 
@@ -19275,7 +19238,6 @@ name = "sp-tracing"
 version = "16.0.0"
 dependencies = [
  "parity-scale-codec",
- "sp-std 14.0.0",
  "tracing",
  "tracing-core",
  "tracing-subscriber 0.2.25",
@@ -19299,7 +19261,6 @@ dependencies = [
  "sp-core",
  "sp-inherents",
  "sp-runtime",
- "sp-std 14.0.0",
  "sp-trie",
 ]
 
@@ -19322,7 +19283,6 @@ dependencies = [
  "sp-core",
  "sp-externalities 0.25.0",
  "sp-runtime",
- "sp-std 14.0.0",
  "thiserror",
  "tracing",
  "trie-bench",
@@ -19355,7 +19315,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "sp-version",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -19379,7 +19339,6 @@ dependencies = [
  "impl-trait-for-tuples",
  "log",
  "parity-scale-codec",
- "sp-std 14.0.0",
  "wasmtime",
 ]
 
@@ -19395,7 +19354,6 @@ dependencies = [
  "smallvec",
  "sp-arithmetic",
  "sp-debug-derive 14.0.0",
- "sp-std 14.0.0",
 ]
 
 [[package]]
@@ -19479,7 +19437,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
 name = "staging-chain-spec-builder"
 version = "2.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "log",
  "sc-chain-spec",
  "serde_json",
@@ -19492,7 +19450,7 @@ version = "3.0.0-dev"
 dependencies = [
  "array-bytes 6.1.0",
  "assert_cmd",
- "clap 4.5.1",
+ "clap 4.5.3",
  "clap_complete",
  "criterion 0.4.0",
  "frame-benchmarking",
@@ -19602,7 +19560,7 @@ dependencies = [
 name = "staging-node-inspect"
 version = "0.12.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "parity-scale-codec",
  "sc-cli",
  "sc-client-api",
@@ -19778,12 +19736,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
 
 [[package]]
+name = "strum"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
+dependencies = [
+ "strum_macros 0.26.2",
+]
+
+[[package]]
 name = "strum_macros"
 version = "0.24.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "rustversion",
@@ -19796,18 +19763,31 @@ version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
 dependencies = [
- "heck",
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.53",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
+dependencies = [
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "subkey"
 version = "9.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "sc-cli",
 ]
 
@@ -19849,7 +19829,7 @@ dependencies = [
 name = "substrate-frame-cli"
 version = "32.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "frame-support",
  "frame-system",
  "sc-cli",
@@ -20006,7 +19986,6 @@ dependencies = [
  "sp-runtime",
  "sp-session",
  "sp-state-machine",
- "sp-std 14.0.0",
  "sp-tracing 16.0.0",
  "sp-transaction-pool",
  "sp-trie",
@@ -20067,9 +20046,9 @@ dependencies = [
  "console",
  "filetime",
  "parity-wasm",
- "polkavm-linker 0.9.2",
+ "polkavm-linker",
  "sp-maybe-compressed-blob",
- "strum 0.24.1",
+ "strum 0.26.2",
  "tempfile",
  "toml 0.8.8",
  "walkdir",
@@ -20198,9 +20177,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.50"
+version = "2.0.53"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb"
+checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -20216,7 +20195,7 @@ dependencies = [
  "paste",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -20330,7 +20309,7 @@ dependencies = [
 name = "test-parachain-adder-collator"
 version = "1.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "futures",
  "futures-timer",
  "log",
@@ -20378,7 +20357,7 @@ dependencies = [
 name = "test-parachain-undying-collator"
 version = "1.0.0"
 dependencies = [
- "clap 4.5.1",
+ "clap 4.5.3",
  "futures",
  "futures-timer",
  "log",
@@ -20481,7 +20460,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -20617,9 +20596,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.33.0"
+version = "1.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653"
+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
 dependencies = [
  "backtrace",
  "bytes",
@@ -20629,20 +20608,20 @@ dependencies = [
  "parking_lot 0.12.1",
  "pin-project-lite 0.2.12",
  "signal-hook-registry",
- "socket2 0.5.3",
+ "socket2 0.5.6",
  "tokio-macros",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "tokio-macros"
-version = "2.1.0"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -20849,7 +20828,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -20891,7 +20870,7 @@ dependencies = [
  "proc-macro-crate 3.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -21073,7 +21052,7 @@ version = "0.38.0"
 dependencies = [
  "assert_cmd",
  "async-trait",
- "clap 4.5.1",
+ "clap 4.5.3",
  "frame-remote-externalities",
  "frame-try-runtime",
  "hex",
@@ -21246,9 +21225,9 @@ dependencies = [
 
 [[package]]
 name = "unsafe-libyaml"
-version = "0.2.10"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b"
+checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
 
 [[package]]
 name = "unsigned-varint"
@@ -21311,9 +21290,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
 
 [[package]]
 name = "value-bag"
-version = "1.4.1"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3"
+checksum = "8fec26a25bd6fca441cdd0f769fd7f891bae119f996de31f86a5eddccef54c1d"
 dependencies = [
  "value-bag-serde1",
  "value-bag-sval2",
@@ -21321,9 +21300,9 @@ dependencies = [
 
 [[package]]
 name = "value-bag-serde1"
-version = "1.4.1"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0b9f3feef403a50d4d67e9741a6d8fc688bcbb4e4f31bd4aab72cc690284394"
+checksum = "ead5b693d906686203f19a49e88c477fb8c15798b68cf72f60b4b5521b4ad891"
 dependencies = [
  "erased-serde",
  "serde",
@@ -21332,9 +21311,9 @@ dependencies = [
 
 [[package]]
 name = "value-bag-sval2"
-version = "1.4.1"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30b24f4146b6f3361e91cbf527d1fb35e9376c3c0cef72ca5ec5af6d640fad7d"
+checksum = "3b9d0f4a816370c3a0d7d82d603b62198af17675b12fe5e91de6b47ceb505882"
 dependencies = [
  "sval",
  "sval_buffer",
@@ -21456,7 +21435,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
  "wasm-bindgen-shared",
 ]
 
@@ -21490,7 +21469,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -21951,7 +21930,6 @@ dependencies = [
  "pallet-fast-unstake",
  "pallet-grandpa",
  "pallet-identity",
- "pallet-im-online",
  "pallet-indices",
  "pallet-membership",
  "pallet-message-queue",
@@ -22026,6 +22004,7 @@ dependencies = [
  "tiny-keccak",
  "tokio",
  "westend-runtime-constants",
+ "xcm-fee-payment-runtime-api",
 ]
 
 [[package]]
@@ -22500,6 +22479,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "xcm-fee-payment-runtime-api"
+version = "0.1.0"
+dependencies = [
+ "frame-support",
+ "parity-scale-codec",
+ "scale-info",
+ "sp-api",
+ "sp-runtime",
+ "sp-std 14.0.0",
+ "sp-weights",
+ "staging-xcm",
+]
+
+[[package]]
 name = "xcm-procedural"
 version = "7.0.0"
 dependencies = [
@@ -22507,7 +22500,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "staging-xcm",
- "syn 2.0.50",
+ "syn 2.0.53",
  "trybuild",
 ]
 
@@ -22629,7 +22622,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -22649,7 +22642,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.50",
+ "syn 2.0.53",
 ]
 
 [[package]]
diff --git a/pkgs/applications/blockchains/polkadot/default.nix b/pkgs/applications/blockchains/polkadot/default.nix
index 8f545fa8a1666..770b4a29543e9 100644
--- a/pkgs/applications/blockchains/polkadot/default.nix
+++ b/pkgs/applications/blockchains/polkadot/default.nix
@@ -11,13 +11,13 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "polkadot";
-  version = "1.9.0";
+  version = "1.10.0";
 
   src = fetchFromGitHub {
     owner = "paritytech";
     repo = "polkadot-sdk";
     rev = "polkadot-v${version}";
-    hash = "sha256-YLd1XKluL8QBbZPTb1FCvBDVD0YWjZfZTvl4p9jx28Y=";
+    hash = "sha256-xRuV/1+OZeoth/lb5OXwVzHl2IWK1G0GgIN0E8EZlYg=";
 
     # the build process of polkadot requires a .git folder in order to determine
     # the git commit hash that is being built and add it to the version string.
diff --git a/pkgs/applications/blockchains/solana-validator/Cargo.lock b/pkgs/applications/blockchains/solana-validator/Cargo.lock
index 312da60ed048e..984d2e3828bfb 100644
--- a/pkgs/applications/blockchains/solana-validator/Cargo.lock
+++ b/pkgs/applications/blockchains/solana-validator/Cargo.lock
@@ -13,6 +13,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "addr2line"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
 name = "adler"
 version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -60,21 +69,22 @@ version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
 dependencies = [
- "getrandom 0.2.8",
+ "getrandom 0.2.10",
  "once_cell",
  "version_check",
 ]
 
 [[package]]
 name = "ahash"
-version = "0.8.3"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
+checksum = "cd7d5a2cecb58716e47d67d5703a249964b14c7be1ec3cad3affc295b2d1c35d"
 dependencies = [
  "cfg-if 1.0.0",
- "getrandom 0.2.8",
+ "getrandom 0.2.10",
  "once_cell",
  "version_check",
+ "zerocopy",
 ]
 
 [[package]]
@@ -117,6 +127,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
 name = "android_system_properties"
 version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -126,6 +142,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
 name = "ansi_term"
 version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -135,10 +157,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "anstyle"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+
+[[package]]
 name = "anyhow"
-version = "1.0.71"
+version = "1.0.75"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
 
 [[package]]
 name = "arc-swap"
@@ -187,7 +215,7 @@ dependencies = [
  "derivative",
  "digest 0.10.7",
  "itertools",
- "num-bigint 0.4.3",
+ "num-bigint 0.4.4",
  "num-traits",
  "paste",
  "rustc_version 0.4.0",
@@ -200,7 +228,7 @@ version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348"
 dependencies = [
- "quote 1.0.28",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -210,10 +238,10 @@ version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565"
 dependencies = [
- "num-bigint 0.4.3",
+ "num-bigint 0.4.4",
  "num-traits",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -239,7 +267,7 @@ dependencies = [
  "ark-serialize-derive",
  "ark-std",
  "digest 0.10.7",
- "num-bigint 0.4.3",
+ "num-bigint 0.4.4",
 ]
 
 [[package]]
@@ -248,8 +276,8 @@ version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -277,9 +305,9 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
 
 [[package]]
 name = "arrayvec"
-version = "0.7.2"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
 
 [[package]]
 name = "ascii"
@@ -300,7 +328,7 @@ dependencies = [
  "num-traits",
  "rusticata-macros",
  "thiserror",
- "time 0.3.9",
+ "time",
 ]
 
 [[package]]
@@ -309,8 +337,8 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
  "synstructure",
 ]
@@ -321,8 +349,8 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -348,9 +376,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
 
 [[package]]
 name = "async-channel"
-version = "1.8.0"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833"
+checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
 dependencies = [
  "concurrent-queue",
  "event-listener",
@@ -359,9 +387,9 @@ dependencies = [
 
 [[package]]
 name = "async-compression"
-version = "0.3.14"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "345fd392ab01f746c717b1357165b76f0b67a60192007b234058c9045fdcf695"
+checksum = "62b74f44609f0f91493e3082d3734d98497e094777144380ea4db9f9905dd5b6"
 dependencies = [
  "brotli",
  "flate2",
@@ -396,20 +424,20 @@ version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "async-trait"
-version = "0.1.68"
+version = "0.1.74"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
+checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -440,13 +468,13 @@ dependencies = [
 
 [[package]]
 name = "axum"
-version = "0.6.4"
+version = "0.6.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5694b64066a2459918d8074c2ce0d5a88f409431994c2356617c8ae0c4721fc"
+checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
 dependencies = [
  "async-trait",
  "axum-core",
- "bitflags",
+ "bitflags 1.3.2",
  "bytes",
  "futures-util",
  "http",
@@ -456,22 +484,21 @@ dependencies = [
  "matchit",
  "memchr",
  "mime",
- "percent-encoding 2.2.0",
+ "percent-encoding 2.3.0",
  "pin-project-lite",
  "rustversion",
  "serde",
  "sync_wrapper",
  "tower",
- "tower-http",
  "tower-layer",
  "tower-service",
 ]
 
 [[package]]
 name = "axum-core"
-version = "0.3.2"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34"
+checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
 dependencies = [
  "async-trait",
  "bytes",
@@ -491,7 +518,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
 dependencies = [
  "futures-core",
- "getrandom 0.2.8",
+ "getrandom 0.2.10",
  "instant",
  "pin-project-lite",
  "rand 0.8.5",
@@ -499,6 +526,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "backtrace"
+version = "0.3.68"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if 1.0.0",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
 name = "base64"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -512,9 +554,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 
 [[package]]
 name = "base64"
-version = "0.21.2"
+version = "0.21.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
+checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
 
 [[package]]
 name = "base64ct"
@@ -537,19 +579,19 @@ version = "0.65.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cexpr",
  "clang-sys",
  "lazy_static",
  "lazycell",
  "peeking_take_while",
  "prettyplease 0.2.4",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "regex",
  "rustc-hash",
  "shlex",
- "syn 2.0.18",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -574,6 +616,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
+name = "bitflags"
+version = "2.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+dependencies = [
+ "serde",
+]
+
+[[package]]
 name = "bitmaps"
 version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -584,9 +635,9 @@ dependencies = [
 
 [[package]]
 name = "blake3"
-version = "1.3.3"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef"
+checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87"
 dependencies = [
  "arrayref",
  "arrayvec",
@@ -659,7 +710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b"
 dependencies = [
  "borsh-derive 0.10.3",
- "hashbrown 0.11.2",
+ "hashbrown 0.12.3",
 ]
 
 [[package]]
@@ -671,7 +722,7 @@ dependencies = [
  "borsh-derive-internal 0.9.3",
  "borsh-schema-derive-internal 0.9.3",
  "proc-macro-crate 0.1.5",
- "proc-macro2 1.0.60",
+ "proc-macro2",
  "syn 1.0.109",
 ]
 
@@ -684,7 +735,7 @@ dependencies = [
  "borsh-derive-internal 0.10.3",
  "borsh-schema-derive-internal 0.10.3",
  "proc-macro-crate 0.1.5",
- "proc-macro2 1.0.60",
+ "proc-macro2",
  "syn 1.0.109",
 ]
 
@@ -694,8 +745,8 @@ version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -705,8 +756,8 @@ version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -716,8 +767,8 @@ version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -727,8 +778,8 @@ version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -776,7 +827,7 @@ checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09"
 dependencies = [
  "memchr",
  "once_cell",
- "regex-automata",
+ "regex-automata 0.1.10",
  "serde",
 ]
 
@@ -814,9 +865,9 @@ dependencies = [
 
 [[package]]
 name = "bytecount"
-version = "0.6.3"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c"
+checksum = "ad152d03a2c813c80bb94fedbf3a3f02b28f793e39e7c214c8a0bcc196343de7"
 
 [[package]]
 name = "bytemuck"
@@ -833,22 +884,22 @@ version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "byteorder"
-version = "1.4.3"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
 
 [[package]]
 name = "bytesize"
@@ -913,7 +964,7 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a"
 dependencies = [
  "camino",
  "cargo-platform",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_json",
  "thiserror",
@@ -929,12 +980,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
 name = "cc"
-version = "1.0.79"
+version = "1.0.83"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
 dependencies = [
  "jobserver",
+ "libc",
 ]
 
 [[package]]
@@ -960,30 +1018,56 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.24"
+version = "0.4.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
+checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
 dependencies = [
+ "android-tzdata",
  "iana-time-zone",
  "js-sys",
- "num-integer",
  "num-traits",
  "serde",
- "time 0.1.43",
  "wasm-bindgen",
- "winapi 0.3.9",
+ "windows-targets 0.48.0",
 ]
 
 [[package]]
 name = "chrono-humanize"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32dce1ea1988dbdf9f9815ff11425828523bd2a134ec0805d2ac8af26ee6096e"
+checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b"
 dependencies = [
  "chrono",
 ]
 
 [[package]]
+name = "ciborium"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
 name = "cipher"
 version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1011,7 +1095,7 @@ checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
 dependencies = [
  "ansi_term",
  "atty",
- "bitflags",
+ "bitflags 1.3.2",
  "strsim 0.8.0",
  "textwrap 0.11.0",
  "unicode-width",
@@ -1025,10 +1109,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
 dependencies = [
  "atty",
- "bitflags",
+ "bitflags 1.3.2",
  "clap_derive",
- "clap_lex",
- "indexmap",
+ "clap_lex 0.2.4",
+ "indexmap 1.9.3",
  "once_cell",
  "strsim 0.10.0",
  "termcolor",
@@ -1036,15 +1120,34 @@ dependencies = [
 ]
 
 [[package]]
+name = "clap"
+version = "4.3.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.3.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa"
+dependencies = [
+ "anstyle",
+ "clap_lex 0.5.0",
+]
+
+[[package]]
 name = "clap_derive"
 version = "3.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65"
 dependencies = [
- "heck 0.4.0",
+ "heck",
  "proc-macro-error",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -1058,6 +1161,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "clap_lex"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+
+[[package]]
 name = "combine"
 version = "3.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1120,29 +1229,29 @@ checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3"
 
 [[package]]
 name = "const_format"
-version = "0.2.30"
+version = "0.2.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7309d9b4d3d2c0641e018d449232f2e28f1b22933c137f157d3dbc14228b8c0e"
+checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673"
 dependencies = [
  "const_format_proc_macros",
 ]
 
 [[package]]
 name = "const_format_proc_macros"
-version = "0.2.29"
+version = "0.2.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f47bf7270cf70d370f8f98c1abb6d2d4cf60a6845d30e05bfb90c6568650"
+checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "unicode-xid 0.2.2",
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
 ]
 
 [[package]]
 name = "constant_time_eq"
-version = "0.2.5"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b"
+checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
 
 [[package]]
 name = "convert_case"
@@ -1180,9 +1289,9 @@ dependencies = [
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.1"
+version = "0.2.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469"
+checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58"
 dependencies = [
  "libc",
 ]
@@ -1197,12 +1306,48 @@ dependencies = [
 ]
 
 [[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast 0.3.0",
+ "ciborium",
+ "clap 4.3.21",
+ "criterion-plot",
+ "is-terminal",
+ "itertools",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast 0.3.0",
+ "itertools",
+]
+
+[[package]]
 name = "criterion-stats"
 version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "387df94cb74ada1b33e10ce034bb0d9360cc73edb5063e7d7d4120a40ee1c9d2"
 dependencies = [
- "cast",
+ "cast 0.2.7",
  "num-traits",
  "num_cpus",
  "rand 0.4.6",
@@ -1279,9 +1424,9 @@ dependencies = [
 
 [[package]]
 name = "csv"
-version = "1.2.1"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad"
+checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe"
 dependencies = [
  "csv-core",
  "itoa",
@@ -1291,9 +1436,9 @@ dependencies = [
 
 [[package]]
 name = "csv-core"
-version = "0.1.10"
+version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
+checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70"
 dependencies = [
  "memchr",
 ]
@@ -1309,11 +1454,11 @@ dependencies = [
 
 [[package]]
 name = "ctrlc"
-version = "3.3.1"
+version = "3.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7394a21d012ce5c850497fb774b167d81b99f060025fbf06ee92b9848bd97eb2"
+checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf"
 dependencies = [
- "nix",
+ "nix 0.27.1",
  "windows-sys 0.48.0",
 ]
 
@@ -1349,10 +1494,10 @@ checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb"
 dependencies = [
  "fnv",
  "ident_case",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "strsim 0.10.0",
- "syn 2.0.18",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -1362,8 +1507,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a"
 dependencies = [
  "darling_core",
- "quote 1.0.28",
- "syn 2.0.18",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -1379,13 +1524,15 @@ dependencies = [
 
 [[package]]
 name = "dashmap"
-version = "5.2.0"
+version = "5.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c8858831f7781322e539ea39e72449c46b059638250c14344fec8d0aa6e539c"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
 dependencies = [
  "cfg-if 1.0.0",
- "num_cpus",
- "parking_lot 0.12.1",
+ "hashbrown 0.14.1",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core 0.9.8",
 ]
 
 [[package]]
@@ -1412,7 +1559,7 @@ dependencies = [
  "asn1-rs",
  "displaydoc",
  "nom",
- "num-bigint 0.4.3",
+ "num-bigint 0.4.4",
  "num-traits",
  "rusticata-macros",
 ]
@@ -1429,8 +1576,8 @@ version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -1441,8 +1588,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df"
 dependencies = [
  "convert_case",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "rustc_version 0.3.3",
  "syn 1.0.109",
 ]
@@ -1530,32 +1677,32 @@ version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
-name = "dlopen"
-version = "0.1.8"
+name = "dlopen2"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71e80ad39f814a9abe68583cd50a2d45c8a67561c3361ab8da240587dda80937"
+checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa"
 dependencies = [
- "dlopen_derive",
- "lazy_static",
+ "dlopen2_derive",
  "libc",
+ "once_cell",
  "winapi 0.3.9",
 ]
 
 [[package]]
-name = "dlopen_derive"
-version = "0.1.4"
+name = "dlopen2_derive"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f236d9e1b1fbd81cea0f9cbdc8dcc7e8ebcd80e6659cd7cb2ad5f6c05946c581"
+checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3"
 dependencies = [
- "libc",
- "quote 0.6.13",
- "syn 0.15.44",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -1602,7 +1749,7 @@ dependencies = [
  "derivation-path",
  "ed25519-dalek",
  "hmac 0.12.1",
- "sha2 0.10.6",
+ "sha2 0.10.8",
 ]
 
 [[package]]
@@ -1612,16 +1759,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f86b50932a01e7ec5c06160492ab660fb19b6bb2a7878030dd6cd68d21df9d4d"
 dependencies = [
  "enum-ordinalize",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "either"
-version = "1.8.1"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
 
 [[package]]
 name = "encode_unicode"
@@ -1653,9 +1800,9 @@ version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -1664,10 +1811,10 @@ version = "3.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b166c9e378360dd5a6666a9604bb4f54ae0cac39023ffbac425e917a2a04fef"
 dependencies = [
- "num-bigint 0.4.3",
+ "num-bigint 0.4.4",
  "num-traits",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -1685,6 +1832,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "equivalent"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1"
+
+[[package]]
 name = "errno"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1707,16 +1860,17 @@ dependencies = [
 
 [[package]]
 name = "etcd-client"
-version = "0.8.2"
+version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3bfae4cb9cd8c3c2a552d45e155cafd079f385a3b9421b9a010878f44531f1e"
+checksum = "f4b0ea5ef6dc2388a4b1669fa32097249bc03a15417b97cb75e38afb309e4a89"
 dependencies = [
  "http",
- "prost 0.9.0",
+ "prost",
  "tokio",
  "tokio-stream",
- "tonic 0.6.2",
- "tonic-build 0.6.2",
+ "tonic",
+ "tonic-build",
+ "tower",
  "tower-service",
 ]
 
@@ -1743,18 +1897,15 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "1.6.0"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "779d043b6a0b90cc4c0ed7ee380a6504394cee7efd7db050e3774eee387324b2"
-dependencies = [
- "instant",
-]
+checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
 
 [[package]]
 name = "fd-lock"
-version = "3.0.12"
+version = "3.0.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39ae6b3d9530211fb3b12a95374b8b0823be812f53d09e18c5675c0146b09642"
+checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"
 dependencies = [
  "cfg-if 1.0.0",
  "rustix",
@@ -1798,9 +1949,9 @@ checksum = "398ea4fabe40b9b0d885340a2a991a44c8a645624075ad966d21f88688e2b69e"
 
 [[package]]
 name = "flate2"
-version = "1.0.26"
+version = "1.0.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
 dependencies = [
  "crc32fast",
  "miniz_oxide",
@@ -1838,14 +1989,20 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 
 [[package]]
 name = "form_urlencoded"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
 dependencies = [
- "percent-encoding 2.2.0",
+ "percent-encoding 2.3.0",
 ]
 
 [[package]]
+name = "fs-err"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541"
+
+[[package]]
 name = "fs_extra"
 version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1918,9 +2075,9 @@ version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -1970,7 +2127,7 @@ version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32c95766e0414f8bfc1d07055574c621b67739466d6ba516c4fef8e99d30d2e6"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if 1.0.0",
  "log",
  "managed",
@@ -1980,7 +2137,7 @@ dependencies = [
 
 [[package]]
 name = "gen-headers"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "log",
  "regex",
@@ -1988,7 +2145,7 @@ dependencies = [
 
 [[package]]
 name = "gen-syscall-list"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "regex",
 ]
@@ -2038,9 +2195,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.8"
+version = "0.2.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
 dependencies = [
  "cfg-if 1.0.0",
  "js-sys",
@@ -2050,6 +2207,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "gimli"
+version = "0.27.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
+
+[[package]]
 name = "glob"
 version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2083,7 +2246,7 @@ dependencies = [
  "serde_json",
  "simpl",
  "smpl_jwt",
- "time 0.3.9",
+ "time",
  "tokio",
 ]
 
@@ -2100,9 +2263,9 @@ dependencies = [
 
 [[package]]
 name = "h2"
-version = "0.3.18"
+version = "0.3.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21"
+checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
 dependencies = [
  "bytes",
  "fnv",
@@ -2110,7 +2273,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http",
- "indexmap",
+ "indexmap 2.0.2",
  "slab",
  "tokio",
  "tokio-util 0.7.1",
@@ -2118,6 +2281,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "half"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+
+[[package]]
 name = "hash32"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2150,17 +2319,23 @@ version = "0.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
 dependencies = [
- "ahash 0.8.3",
+ "ahash 0.8.5",
 ]
 
 [[package]]
+name = "hashbrown"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
+
+[[package]]
 name = "headers"
 version = "0.3.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4cff78e5788be1e0ab65b04d306b2ed5092c815ec97ec70f4ebd5aee158aa55d"
 dependencies = [
  "base64 0.13.1",
- "bitflags",
+ "bitflags 1.3.2",
  "bytes",
  "headers-core",
  "http",
@@ -2180,15 +2355,6 @@ dependencies = [
 
 [[package]]
 name = "heck"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
-dependencies = [
- "unicode-segmentation",
-]
-
-[[package]]
-name = "heck"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
@@ -2204,15 +2370,6 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "hermit-abi"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
@@ -2225,9 +2382,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 
 [[package]]
 name = "hidapi"
-version = "2.3.3"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f841dbb77615e116fb2ca38044b42310370f0d093c774a72361670ff2ae431b"
+checksum = "723777263b0dcc5730aec947496bd8c3940ba63c15f5633b288cc615f4f6af79"
 dependencies = [
  "cc",
  "libc",
@@ -2294,12 +2451,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "http-range-header"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
-
-[[package]]
 name = "httparse"
 version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2319,9 +2470,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
 
 [[package]]
 name = "hyper"
-version = "0.14.26"
+version = "0.14.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4"
+checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -2334,7 +2485,7 @@ dependencies = [
  "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2",
+ "socket2 0.4.9",
  "tokio",
  "tower-service",
  "tracing",
@@ -2361,15 +2512,16 @@ dependencies = [
 
 [[package]]
 name = "hyper-rustls"
-version = "0.23.0"
+version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac"
+checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97"
 dependencies = [
+ "futures-util",
  "http",
  "hyper",
- "rustls 0.20.8",
+ "rustls",
  "tokio",
- "tokio-rustls 0.23.3",
+ "tokio-rustls",
 ]
 
 [[package]]
@@ -2429,9 +2581,9 @@ dependencies = [
 
 [[package]]
 name = "idna"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
 dependencies = [
  "unicode-bidi",
  "unicode-normalization",
@@ -2473,14 +2625,24 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
 dependencies = [
  "autocfg",
  "hashbrown 0.12.3",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.1",
  "rayon",
 ]
 
 [[package]]
 name = "indicatif"
-version = "0.17.4"
+version = "0.17.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db45317f37ef454e6519b6c3ed7d377e5f23346f0823f86e65ca36912d1d0ef8"
+checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25"
 dependencies = [
  "console",
  "instant",
@@ -2499,23 +2661,23 @@ dependencies = [
 ]
 
 [[package]]
-name = "io-lifetimes"
-version = "1.0.10"
+name = "ipnet"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220"
+checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
 dependencies = [
  "hermit-abi 0.3.1",
- "libc",
+ "rustix",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "ipnet"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9"
-
-[[package]]
 name = "itertools"
 version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2526,9 +2688,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.1"
+version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
 name = "jobserver"
@@ -2541,9 +2703,9 @@ dependencies = [
 
 [[package]]
 name = "js-sys"
-version = "0.3.63"
+version = "0.3.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790"
+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -2610,8 +2772,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2"
 dependencies = [
  "proc-macro-crate 0.1.5",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -2709,9 +2871,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
 
 [[package]]
 name = "libc"
-version = "0.2.144"
+version = "0.2.149"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
+checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
 
 [[package]]
 name = "libloading"
@@ -2804,6 +2966,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "light-poseidon"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee"
+dependencies = [
+ "ark-bn254",
+ "ark-ff",
+ "num-bigint 0.4.4",
+ "thiserror",
+]
+
+[[package]]
 name = "linked-hash-map"
 version = "0.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2811,27 +2985,25 @@ checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.3.6"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c"
+checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
 
 [[package]]
 name = "lock_api"
-version = "0.4.6"
+version = "0.4.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"
+checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
 dependencies = [
+ "autocfg",
  "scopeguard",
 ]
 
 [[package]]
 name = "log"
-version = "0.4.17"
+version = "0.4.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if 1.0.0",
-]
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
 
 [[package]]
 name = "lru"
@@ -2888,9 +3060,9 @@ checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40"
 
 [[package]]
 name = "memchr"
-version = "2.5.0"
+version = "2.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
 
 [[package]]
 name = "memmap2"
@@ -2969,24 +3141,13 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.7.14"
+version = "0.8.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc"
+checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
 dependencies = [
  "libc",
- "log",
- "miow",
- "ntapi",
- "winapi 0.3.9",
-]
-
-[[package]]
-name = "miow"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
-dependencies = [
- "winapi 0.3.9",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -3005,8 +3166,8 @@ version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -3047,16 +3208,26 @@ dependencies = [
 
 [[package]]
 name = "nix"
-version = "0.26.2"
+version = "0.26.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
+checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if 1.0.0",
  "libc",
  "memoffset 0.7.1",
  "pin-utils",
- "static_assertions",
+]
+
+[[package]]
+name = "nix"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+dependencies = [
+ "bitflags 2.3.3",
+ "cfg-if 1.0.0",
+ "libc",
 ]
 
 [[package]]
@@ -3077,14 +3248,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
 
 [[package]]
-name = "ntapi"
-version = "0.3.7"
-source = "git+https://github.com/solana-labs/ntapi?rev=97ede981a1777883ff86d142b75024b023f04fad#97ede981a1777883ff86d142b75024b023f04fad"
-dependencies = [
- "winapi 0.3.9",
-]
-
-[[package]]
 name = "num"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3111,9 +3274,9 @@ dependencies = [
 
 [[package]]
 name = "num-bigint"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
 dependencies = [
  "autocfg",
  "num-integer",
@@ -3136,20 +3299,20 @@ version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "num-derive"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e6a0fd4f737c707bd9086cc16c925f294943eb62eb71499e9fd4cf71f8b9f4e"
+checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -3187,9 +3350,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.15"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
 dependencies = [
  "autocfg",
  "libm",
@@ -3197,11 +3360,11 @@ dependencies = [
 
 [[package]]
 name = "num_cpus"
-version = "1.15.0"
+version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi 0.2.6",
+ "hermit-abi 0.3.1",
  "libc",
 ]
 
@@ -3225,11 +3388,11 @@ dependencies = [
 
 [[package]]
 name = "num_enum"
-version = "0.7.0"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb"
+checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0"
 dependencies = [
- "num_enum_derive 0.7.0",
+ "num_enum_derive 0.7.1",
 ]
 
 [[package]]
@@ -3239,8 +3402,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
 dependencies = [
  "proc-macro-crate 1.1.0",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -3251,21 +3414,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
 dependencies = [
  "proc-macro-crate 1.1.0",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
 name = "num_enum_derive"
-version = "0.7.0"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597"
+checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e"
 dependencies = [
  "proc-macro-crate 1.1.0",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -3284,6 +3447,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
 
 [[package]]
+name = "object"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
 name = "oid-registry"
 version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3294,9 +3466,15 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.17.1"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+
+[[package]]
+name = "oorandom"
+version = "11.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
 
 [[package]]
 name = "opaque-debug"
@@ -3312,11 +3490,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
 
 [[package]]
 name = "openssl"
-version = "0.10.55"
+version = "0.10.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d"
+checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
 dependencies = [
- "bitflags",
+ "bitflags 2.3.3",
  "cfg-if 1.0.0",
  "foreign-types",
  "libc",
@@ -3331,8 +3509,8 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -3353,9 +3531,9 @@ dependencies = [
 
 [[package]]
 name = "openssl-sys"
-version = "0.9.89"
+version = "0.9.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4026ef4fae4cd0c85aee4846e497cea7855659077108067c0d37c0d628f3e40a"
+checksum = "db7e971c2c2bba161b2d2fdf37080177eff520b3bc044787c7f1f5f9e78d869b"
 dependencies = [
  "cc",
  "libc",
@@ -3377,7 +3555,7 @@ dependencies = [
  "futures-util",
  "js-sys",
  "lazy_static",
- "percent-encoding 2.2.0",
+ "percent-encoding 2.3.0",
  "pin-project",
  "rand 0.8.5",
  "thiserror",
@@ -3407,8 +3585,8 @@ checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7"
 dependencies = [
  "Inflector",
  "proc-macro-error",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -3444,7 +3622,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
 dependencies = [
  "lock_api",
- "parking_lot_core 0.9.1",
+ "parking_lot_core 0.9.8",
 ]
 
 [[package]]
@@ -3463,15 +3641,15 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.1"
+version = "0.9.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954"
+checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
- "redox_syscall 0.2.10",
+ "redox_syscall 0.3.5",
  "smallvec",
- "windows-sys 0.32.0",
+ "windows-targets 0.48.0",
 ]
 
 [[package]]
@@ -3521,9 +3699,9 @@ checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
 
 [[package]]
 name = "percent-encoding"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
 
 [[package]]
 name = "percentage"
@@ -3561,8 +3739,8 @@ checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55"
 dependencies = [
  "pest",
  "pest_meta",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -3584,7 +3762,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f"
 dependencies = [
  "fixedbitset",
- "indexmap",
+ "indexmap 1.9.3",
 ]
 
 [[package]]
@@ -3612,16 +3790,16 @@ version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.7"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
 
 [[package]]
 name = "pin-utils"
@@ -3653,6 +3831,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
 
 [[package]]
+name = "plotters"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
 name = "polyval"
 version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3718,7 +3924,7 @@ version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3b83ec2d0af5c5c556257ff52c9f98934e243b9fd39604bfb2a9b75ec2e97f18"
 dependencies = [
- "proc-macro2 1.0.60",
+ "proc-macro2",
  "syn 1.0.109",
 ]
 
@@ -3728,8 +3934,8 @@ version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1ceca8aaf45b5c46ec7ed39fff75f57290368c1846d33d24a122ca81416ab058"
 dependencies = [
- "proc-macro2 1.0.60",
- "syn 2.0.18",
+ "proc-macro2",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -3758,8 +3964,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
 dependencies = [
  "proc-macro-error-attr",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
  "version_check",
 ]
@@ -3770,44 +3976,35 @@ version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "version_check",
 ]
 
 [[package]]
 name = "proc-macro2"
-version = "0.4.30"
+version = "1.0.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
-dependencies = [
- "unicode-xid 0.1.0",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406"
+checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "proptest"
-version = "1.2.0"
+version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65"
+checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e"
 dependencies = [
  "bit-set",
- "bitflags",
- "byteorder",
+ "bit-vec",
+ "bitflags 2.3.3",
  "lazy_static",
  "num-traits",
  "rand 0.8.5",
  "rand_chacha 0.3.1",
  "rand_xorshift",
- "regex-syntax 0.6.29",
+ "regex-syntax 0.7.5",
  "rusty-fork",
  "tempfile",
  "unarray",
@@ -3815,60 +4012,30 @@ dependencies = [
 
 [[package]]
 name = "prost"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001"
-dependencies = [
- "bytes",
- "prost-derive 0.9.0",
-]
-
-[[package]]
-name = "prost"
 version = "0.11.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd"
 dependencies = [
  "bytes",
- "prost-derive 0.11.9",
+ "prost-derive",
 ]
 
 [[package]]
 name = "prost-build"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
-dependencies = [
- "bytes",
- "heck 0.3.3",
- "itertools",
- "lazy_static",
- "log",
- "multimap",
- "petgraph",
- "prost 0.9.0",
- "prost-types 0.9.0",
- "regex",
- "tempfile",
- "which",
-]
-
-[[package]]
-name = "prost-build"
-version = "0.11.4"
+version = "0.11.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "276470f7f281b0ed53d2ae42dd52b4a8d08853a3c70e7fe95882acbb98a6ae94"
+checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
 dependencies = [
  "bytes",
- "heck 0.4.0",
+ "heck",
  "itertools",
  "lazy_static",
  "log",
  "multimap",
  "petgraph",
  "prettyplease 0.1.9",
- "prost 0.11.9",
- "prost-types 0.11.9",
+ "prost",
+ "prost-types",
  "regex",
  "syn 1.0.109",
  "tempfile",
@@ -3877,55 +4044,32 @@ dependencies = [
 
 [[package]]
 name = "prost-derive"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
-dependencies = [
- "anyhow",
- "itertools",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "prost-derive"
 version = "0.11.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
 dependencies = [
  "anyhow",
  "itertools",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "prost-types"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a"
-dependencies = [
- "bytes",
- "prost 0.9.0",
-]
-
-[[package]]
-name = "prost-types"
 version = "0.11.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13"
 dependencies = [
- "prost 0.11.9",
+ "prost",
 ]
 
 [[package]]
 name = "proto"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "protobuf-src",
- "tonic-build 0.8.4",
+ "tonic-build",
 ]
 
 [[package]]
@@ -3943,7 +4087,18 @@ version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e"
 dependencies = [
- "percent-encoding 2.2.0",
+ "percent-encoding 2.3.0",
+]
+
+[[package]]
+name = "qualifier_attr"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -3954,70 +4109,59 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
 
 [[package]]
 name = "quinn"
-version = "0.9.4"
+version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e8b432585672228923edbbf64b8b12c14e1112f62e88737655b4a083dbcd78e"
+checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75"
 dependencies = [
  "bytes",
  "pin-project-lite",
  "quinn-proto",
  "quinn-udp",
  "rustc-hash",
- "rustls 0.20.8",
+ "rustls",
  "thiserror",
  "tokio",
  "tracing",
- "webpki 0.22.0",
 ]
 
 [[package]]
 name = "quinn-proto"
-version = "0.9.5"
+version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c956be1b23f4261676aed05a0046e204e8a6836e50203902683a718af0797989"
+checksum = "2c78e758510582acc40acb90458401172d41f1016f8c9dde89e49677afb7eec1"
 dependencies = [
  "bytes",
  "rand 0.8.5",
  "ring",
  "rustc-hash",
- "rustls 0.20.8",
+ "rustls",
  "rustls-native-certs",
  "slab",
  "thiserror",
  "tinyvec",
  "tracing",
- "webpki 0.22.0",
 ]
 
 [[package]]
 name = "quinn-udp"
-version = "0.3.2"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "641538578b21f5e5c8ea733b736895576d0fe329bb883b937db6f4d163dbaaf4"
+checksum = "6df19e284d93757a9fb91d63672f7741b129246a669db09d1c0063071debc0c0"
 dependencies = [
+ "bytes",
  "libc",
- "quinn-proto",
- "socket2",
+ "socket2 0.5.5",
  "tracing",
- "windows-sys 0.42.0",
-]
-
-[[package]]
-name = "quote"
-version = "0.6.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
-dependencies = [
- "proc-macro2 0.4.30",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.28"
+version = "1.0.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
 dependencies = [
- "proc-macro2 1.0.60",
+ "proc-macro2",
 ]
 
 [[package]]
@@ -4107,7 +4251,7 @@ version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 dependencies = [
- "getrandom 0.2.8",
+ "getrandom 0.2.10",
 ]
 
 [[package]]
@@ -4145,9 +4289,9 @@ checksum = "655b020bbf5c89791160a30f0d4706d8ec7aa5718d6a198f6df19c400e4f4470"
 
 [[package]]
 name = "rayon"
-version = "1.7.0"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
 dependencies = [
  "either",
  "rayon-core",
@@ -4155,19 +4299,17 @@ dependencies = [
 
 [[package]]
 name = "rayon-core"
-version = "1.11.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
 dependencies = [
- "crossbeam-channel",
  "crossbeam-deque",
  "crossbeam-utils",
- "num_cpus",
 ]
 
 [[package]]
 name = "rbpf-cli"
-version = "1.16.26"
+version = "1.17.28"
 
 [[package]]
 name = "rcgen"
@@ -4177,7 +4319,7 @@ checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b"
 dependencies = [
  "pem",
  "ring",
- "time 0.3.9",
+ "time",
  "yasna",
 ]
 
@@ -4196,7 +4338,7 @@ version = "0.2.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
@@ -4205,7 +4347,7 @@ version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
@@ -4214,7 +4356,7 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
 dependencies = [
- "getrandom 0.2.8",
+ "getrandom 0.2.10",
  "redox_syscall 0.2.10",
 ]
 
@@ -4235,13 +4377,14 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.8.3"
+version = "1.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81ca098a9821bd52d6b24fd8b10bd081f47d39c22778cafaa75a2857a62c6390"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
 dependencies = [
  "aho-corasick 1.0.1",
  "memchr",
- "regex-syntax 0.7.2",
+ "regex-automata 0.4.3",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
@@ -4251,25 +4394,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
 
 [[package]]
+name = "regex-automata"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+dependencies = [
+ "aho-corasick 1.0.1",
+ "memchr",
+ "regex-syntax 0.8.2",
+]
+
+[[package]]
 name = "regex-syntax"
-version = "0.6.29"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.2"
+version = "0.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
 name = "reqwest"
-version = "0.11.17"
+version = "0.11.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13293b639a097af28fc8a90f22add145a9c954e49d77da06263d58cf44d5fb91"
+checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
 dependencies = [
  "async-compression",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bytes",
  "encoding_rs",
  "futures-core",
@@ -4286,23 +4440,24 @@ dependencies = [
  "mime",
  "native-tls",
  "once_cell",
- "percent-encoding 2.2.0",
+ "percent-encoding 2.3.0",
  "pin-project-lite",
- "rustls 0.20.8",
+ "rustls",
  "rustls-pemfile 1.0.0",
  "serde",
  "serde_json",
  "serde_urlencoded",
+ "system-configuration",
  "tokio",
  "tokio-native-tls",
- "tokio-rustls 0.23.3",
+ "tokio-rustls",
  "tokio-util 0.7.1",
  "tower-service",
- "url 2.3.1",
+ "url 2.4.1",
  "wasm-bindgen",
  "wasm-bindgen-futures",
  "web-sys",
- "webpki-roots",
+ "webpki-roots 0.25.2",
  "winreg",
 ]
 
@@ -4388,7 +4543,7 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
 dependencies = [
- "semver 1.0.17",
+ "semver 1.0.20",
 ]
 
 [[package]]
@@ -4402,13 +4557,12 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.37.18"
+version = "0.38.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bbfc1d1c7c40c01715f47d71444744a81669ca84e8b63e25a55e169b1f86433"
+checksum = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4"
 dependencies = [
- "bitflags",
+ "bitflags 2.3.3",
  "errno",
- "io-lifetimes",
  "libc",
  "linux-raw-sys",
  "windows-sys 0.48.0",
@@ -4416,27 +4570,14 @@ dependencies = [
 
 [[package]]
 name = "rustls"
-version = "0.19.1"
+version = "0.21.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7"
+checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8"
 dependencies = [
- "base64 0.13.1",
  "log",
  "ring",
- "sct 0.6.1",
- "webpki 0.21.4",
-]
-
-[[package]]
-name = "rustls"
-version = "0.20.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
-dependencies = [
- "log",
- "ring",
- "sct 0.7.0",
- "webpki 0.22.0",
+ "rustls-webpki",
+ "sct",
 ]
 
 [[package]]
@@ -4470,10 +4611,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustls-webpki"
+version = "0.101.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
 name = "rustversion"
-version = "1.0.12"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "rusty-fork"
@@ -4514,9 +4665,9 @@ dependencies = [
 
 [[package]]
 name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "scroll"
@@ -4533,23 +4684,13 @@ version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "sct"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce"
-dependencies = [
- "ring",
- "untrusted",
-]
-
-[[package]]
-name = "sct"
 version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
@@ -4564,7 +4705,7 @@ version = "2.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "core-foundation",
  "core-foundation-sys",
  "libc",
@@ -4592,9 +4733,9 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.17"
+version = "1.0.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
+checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
 dependencies = [
  "serde",
 ]
@@ -4610,38 +4751,38 @@ dependencies = [
 
 [[package]]
 name = "serde"
-version = "1.0.163"
+version = "1.0.189"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2"
+checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_bytes"
-version = "0.11.9"
+version = "0.11.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
+checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.163"
+version = "1.0.189"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e"
+checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.96"
+version = "1.0.107"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
 dependencies = [
  "itoa",
  "ryu",
@@ -4677,9 +4818,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f"
 dependencies = [
  "darling",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -4688,7 +4829,7 @@ version = "0.8.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
 dependencies = [
- "indexmap",
+ "indexmap 1.9.3",
  "ryu",
  "serde",
  "yaml-rust",
@@ -4696,11 +4837,11 @@ dependencies = [
 
 [[package]]
 name = "serde_yaml"
-version = "0.9.21"
+version = "0.9.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c"
+checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574"
 dependencies = [
- "indexmap",
+ "indexmap 2.0.2",
  "itoa",
  "ryu",
  "serde",
@@ -4709,11 +4850,11 @@ dependencies = [
 
 [[package]]
 name = "serial_test"
-version = "0.9.0"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92761393ee4dc3ff8f4af487bd58f4307c9329bbedea02cac0089ad9c411e153"
+checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d"
 dependencies = [
- "dashmap 5.2.0",
+ "dashmap 5.5.3",
  "futures 0.3.28",
  "lazy_static",
  "log",
@@ -4723,14 +4864,13 @@ dependencies = [
 
 [[package]]
 name = "serial_test_derive"
-version = "0.9.0"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b6f5d1c3087fb119617cff2966fe3808a80e5eb59a8c1601d5994d66f4346a5"
+checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
 dependencies = [
- "proc-macro-error",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 1.0.109",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -4770,6 +4910,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "sha1"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
+dependencies = [
+ "cfg-if 1.0.0",
+ "cpufeatures",
+ "digest 0.10.7",
+]
+
+[[package]]
 name = "sha2"
 version = "0.9.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4784,9 +4935,9 @@ dependencies = [
 
 [[package]]
 name = "sha2"
-version = "0.10.6"
+version = "0.10.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
 dependencies = [
  "cfg-if 1.0.0",
  "cpufeatures",
@@ -4832,15 +4983,15 @@ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
 
 [[package]]
 name = "shlex"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 
 [[package]]
 name = "signal-hook"
-version = "0.3.15"
+version = "0.3.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
 dependencies = [
  "libc",
  "signal-hook-registry",
@@ -4868,6 +5019,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2a30f10c911c0355f80f1c2faa8096efc4a58cdf8590b954d5b395efa071c711"
 
 [[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
 name = "sized-chunks"
 version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4885,9 +5042,9 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
 
 [[package]]
 name = "smallvec"
-version = "1.7.0"
+version = "1.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
+checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
 
 [[package]]
 name = "smpl_jwt"
@@ -4902,7 +5059,7 @@ dependencies = [
  "serde_derive",
  "serde_json",
  "simpl",
- "time 0.3.9",
+ "time",
 ]
 
 [[package]]
@@ -4916,6 +5073,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "socket2"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "soketto"
 version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4932,10 +5099,11 @@ dependencies = [
 
 [[package]]
 name = "solana-account-decoder"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "Inflector",
- "base64 0.21.2",
+ "assert_matches",
+ "base64 0.21.4",
  "bincode",
  "bs58",
  "bv",
@@ -4943,12 +5111,12 @@ dependencies = [
  "serde",
  "serde_derive",
  "serde_json",
- "solana-address-lookup-table-program",
  "solana-config-program",
  "solana-sdk",
  "spl-pod",
  "spl-token",
  "spl-token-2022",
+ "spl-token-group-interface",
  "spl-token-metadata-interface",
  "thiserror",
  "zstd",
@@ -4956,27 +5124,28 @@ dependencies = [
 
 [[package]]
 name = "solana-accounts-bench"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 2.33.3",
  "log",
  "rayon",
+ "solana-accounts-db",
  "solana-logger",
  "solana-measure",
- "solana-runtime",
  "solana-sdk",
  "solana-version",
 ]
 
 [[package]]
 name = "solana-accounts-cluster-bench"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 2.33.3",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "solana-account-decoder",
+ "solana-accounts-db",
  "solana-clap-utils",
  "solana-cli-config",
  "solana-client",
@@ -4998,8 +5167,72 @@ dependencies = [
 ]
 
 [[package]]
+name = "solana-accounts-db"
+version = "1.17.28"
+dependencies = [
+ "arrayref",
+ "assert_matches",
+ "bincode",
+ "blake3",
+ "bv",
+ "bytemuck",
+ "byteorder",
+ "bzip2",
+ "crossbeam-channel",
+ "dashmap 4.0.2",
+ "ed25519-dalek",
+ "flate2",
+ "fnv",
+ "fs-err",
+ "im",
+ "index_list",
+ "itertools",
+ "lazy_static",
+ "libsecp256k1",
+ "log",
+ "lz4",
+ "memmap2",
+ "memoffset 0.9.0",
+ "modular-bitfield",
+ "num-derive 0.3.3",
+ "num-traits",
+ "num_cpus",
+ "num_enum 0.6.1",
+ "ouroboros",
+ "percentage",
+ "qualifier_attr",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
+ "rayon",
+ "regex",
+ "rustc_version 0.4.0",
+ "serde",
+ "serde_derive",
+ "solana-accounts-db",
+ "solana-bucket-map",
+ "solana-config-program",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-logger",
+ "solana-measure",
+ "solana-metrics",
+ "solana-program-runtime",
+ "solana-rayon-threadlimit",
+ "solana-sdk",
+ "solana-stake-program",
+ "solana-system-program",
+ "solana-vote-program",
+ "static_assertions",
+ "strum",
+ "strum_macros",
+ "tar",
+ "tempfile",
+ "thiserror",
+]
+
+[[package]]
 name = "solana-address-lookup-table-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "bytemuck",
@@ -5018,7 +5251,7 @@ dependencies = [
 
 [[package]]
 name = "solana-address-lookup-table-program-tests"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "bincode",
@@ -5029,12 +5262,12 @@ dependencies = [
 
 [[package]]
 name = "solana-banking-bench"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 3.2.23",
  "crossbeam-channel",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "solana-client",
  "solana-core",
@@ -5053,7 +5286,7 @@ dependencies = [
 
 [[package]]
 name = "solana-banks-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "borsh 0.10.3",
  "futures 0.3.28",
@@ -5070,7 +5303,7 @@ dependencies = [
 
 [[package]]
 name = "solana-banks-interface"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "serde",
  "solana-sdk",
@@ -5079,11 +5312,12 @@ dependencies = [
 
 [[package]]
 name = "solana-banks-server"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "crossbeam-channel",
  "futures 0.3.28",
+ "solana-accounts-db",
  "solana-banks-interface",
  "solana-client",
  "solana-runtime",
@@ -5096,7 +5330,7 @@ dependencies = [
 
 [[package]]
 name = "solana-bench-streamer"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 3.2.23",
  "crossbeam-channel",
@@ -5107,15 +5341,15 @@ dependencies = [
 
 [[package]]
 name = "solana-bench-tps"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 2.33.3",
  "crossbeam-channel",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "serde_json",
- "serde_yaml 0.9.21",
+ "serde_yaml 0.9.25",
  "serial_test",
  "solana-clap-utils",
  "solana-cli-config",
@@ -5148,12 +5382,12 @@ dependencies = [
 
 [[package]]
 name = "solana-bloom"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bv",
  "fnv",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "rustc_version 0.4.0",
  "serde",
@@ -5165,25 +5399,28 @@ dependencies = [
 
 [[package]]
 name = "solana-bpf-loader-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "bincode",
  "byteorder",
  "libsecp256k1",
  "log",
  "memoffset 0.9.0",
- "rand 0.7.3",
+ "rand 0.8.5",
+ "scopeguard",
  "solana-measure",
  "solana-program-runtime",
  "solana-sdk",
  "solana-zk-token-sdk",
  "solana_rbpf",
+ "test-case",
  "thiserror",
 ]
 
 [[package]]
 name = "solana-bpf-loader-program-tests"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "bincode",
@@ -5194,15 +5431,16 @@ dependencies = [
 
 [[package]]
 name = "solana-bucket-map"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bv",
+ "bytemuck",
  "fs_extra",
  "log",
  "memmap2",
  "modular-bitfield",
  "num_enum 0.6.1",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "solana-logger",
  "solana-measure",
@@ -5212,28 +5450,26 @@ dependencies = [
 
 [[package]]
 name = "solana-cargo-build-bpf"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "cargo_metadata",
- "clap 3.2.23",
  "log",
  "solana-logger",
- "solana-sdk",
 ]
 
 [[package]]
 name = "solana-cargo-build-sbf"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_cmd",
  "bzip2",
  "cargo_metadata",
  "clap 3.2.23",
+ "itertools",
  "log",
  "predicates",
  "regex",
  "reqwest",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serial_test",
  "solana-download-utils",
  "solana-logger",
@@ -5243,47 +5479,44 @@ dependencies = [
 
 [[package]]
 name = "solana-cargo-test-bpf"
-version = "1.16.26"
-dependencies = [
- "cargo_metadata",
- "clap 3.2.23",
-]
+version = "1.17.28"
 
 [[package]]
 name = "solana-cargo-test-sbf"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "cargo_metadata",
  "clap 3.2.23",
+ "itertools",
  "log",
  "solana-logger",
 ]
 
 [[package]]
 name = "solana-clap-utils"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "chrono",
  "clap 2.33.3",
  "rpassword",
- "solana-perf",
  "solana-remote-wallet",
  "solana-sdk",
  "tempfile",
  "thiserror",
  "tiny-bip39",
  "uriparse",
- "url 2.3.1",
+ "url 2.4.1",
 ]
 
 [[package]]
 name = "solana-clap-v3-utils"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "chrono",
  "clap 3.2.23",
  "rpassword",
- "solana-perf",
  "solana-remote-wallet",
  "solana-sdk",
  "solana-zk-token-sdk",
@@ -5291,13 +5524,14 @@ dependencies = [
  "thiserror",
  "tiny-bip39",
  "uriparse",
- "url 2.3.1",
+ "url 2.4.1",
 ]
 
 [[package]]
 name = "solana-cli"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "bincode",
  "bs58",
  "clap 2.33.3",
@@ -5312,12 +5546,11 @@ dependencies = [
  "num-traits",
  "pretty-hex",
  "reqwest",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_derive",
  "serde_json",
  "solana-account-decoder",
- "solana-address-lookup-table-program",
  "solana-bpf-loader-program",
  "solana-clap-utils",
  "solana-cli-config",
@@ -5325,6 +5558,7 @@ dependencies = [
  "solana-client",
  "solana-config-program",
  "solana-faucet",
+ "solana-loader-v4-program",
  "solana-logger",
  "solana-program-runtime",
  "solana-pubsub-client",
@@ -5348,25 +5582,25 @@ dependencies = [
 
 [[package]]
 name = "solana-cli-config"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "anyhow",
  "dirs-next",
  "lazy_static",
  "serde",
  "serde_derive",
- "serde_yaml 0.9.21",
+ "serde_yaml 0.9.25",
  "solana-clap-utils",
  "solana-sdk",
- "url 2.3.1",
+ "url 2.4.1",
 ]
 
 [[package]]
 name = "solana-cli-output"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "Inflector",
- "base64 0.21.2",
+ "base64 0.21.4",
  "chrono",
  "clap 2.33.3",
  "console",
@@ -5374,7 +5608,7 @@ dependencies = [
  "humantime",
  "indicatif",
  "pretty-hex",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_json",
  "solana-account-decoder",
@@ -5389,19 +5623,18 @@ dependencies = [
 
 [[package]]
 name = "solana-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "async-trait",
  "bincode",
  "crossbeam-channel",
+ "dashmap 4.0.2",
  "futures 0.3.28",
  "futures-util",
- "indexmap",
+ "indexmap 2.0.2",
  "indicatif",
  "log",
  "quinn",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
  "rayon",
  "solana-connection-cache",
  "solana-measure",
@@ -5422,10 +5655,12 @@ dependencies = [
 
 [[package]]
 name = "solana-client-test"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "futures-util",
+ "rand 0.8.5",
  "serde_json",
+ "solana-client",
  "solana-ledger",
  "solana-logger",
  "solana-measure",
@@ -5450,7 +5685,7 @@ dependencies = [
 
 [[package]]
 name = "solana-compute-budget-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "solana-program-runtime",
  "solana-sdk",
@@ -5458,7 +5693,7 @@ dependencies = [
 
 [[package]]
 name = "solana-config-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "chrono",
@@ -5471,16 +5706,17 @@ dependencies = [
 
 [[package]]
 name = "solana-connection-cache"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "async-trait",
  "bincode",
+ "crossbeam-channel",
  "futures-util",
- "indexmap",
+ "indexmap 2.0.2",
  "indicatif",
  "log",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
  "rayon",
  "rcgen",
  "solana-logger",
@@ -5494,38 +5730,46 @@ dependencies = [
 
 [[package]]
 name = "solana-core"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "base64 0.21.2",
+ "assert_matches",
+ "base64 0.21.4",
  "bincode",
  "bs58",
+ "bytes",
  "chrono",
  "crossbeam-channel",
  "dashmap 4.0.2",
  "eager",
  "etcd-client",
  "fs_extra",
+ "futures 0.3.28",
  "histogram",
  "itertools",
  "lazy_static",
  "log",
  "lru",
- "matches",
  "min-max-heap",
  "num_enum 0.6.1",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "quinn",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
  "raptorq",
  "rayon",
+ "rcgen",
  "rolling-file",
  "rustc_version 0.4.0",
+ "rustls",
  "serde",
+ "serde_bytes",
  "serde_derive",
  "serde_json",
  "serial_test",
- "solana-address-lookup-table-program",
+ "solana-accounts-db",
  "solana-bloom",
  "solana-client",
+ "solana-core",
+ "solana-cost-model",
  "solana-entry",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
@@ -5539,6 +5783,7 @@ dependencies = [
  "solana-perf",
  "solana-poh",
  "solana-program-runtime",
+ "solana-quic-client",
  "solana-rayon-threadlimit",
  "solana-rpc",
  "solana-rpc-client-api",
@@ -5549,7 +5794,9 @@ dependencies = [
  "solana-streamer",
  "solana-tpu-client",
  "solana-transaction-status",
+ "solana-turbine",
  "solana-version",
+ "solana-vote",
  "solana-vote-program",
  "static_assertions",
  "strum",
@@ -5565,15 +5812,40 @@ dependencies = [
 ]
 
 [[package]]
+name = "solana-cost-model"
+version = "1.17.28"
+dependencies = [
+ "lazy_static",
+ "log",
+ "rustc_version 0.4.0",
+ "solana-address-lookup-table-program",
+ "solana-bpf-loader-program",
+ "solana-compute-budget-program",
+ "solana-config-program",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-loader-v4-program",
+ "solana-logger",
+ "solana-metrics",
+ "solana-program-runtime",
+ "solana-sdk",
+ "solana-stake-program",
+ "solana-system-program",
+ "solana-vote-program",
+ "static_assertions",
+ "test-case",
+]
+
+[[package]]
 name = "solana-dos"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "clap 3.2.23",
  "crossbeam-channel",
  "itertools",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "serde",
  "solana-bench-tps",
  "solana-client",
@@ -5596,7 +5868,7 @@ dependencies = [
 
 [[package]]
 name = "solana-download-utils"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "console",
  "indicatif",
@@ -5608,27 +5880,26 @@ dependencies = [
 
 [[package]]
 name = "solana-ed25519-program-tests"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "ed25519-dalek",
- "rand 0.7.3",
+ "rand 0.8.5",
  "solana-program-test",
  "solana-sdk",
 ]
 
 [[package]]
 name = "solana-entry"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "bincode",
  "crossbeam-channel",
- "dlopen",
- "dlopen_derive",
+ "dlopen2",
  "lazy_static",
  "log",
- "matches",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "serde",
  "solana-logger",
@@ -5642,7 +5913,7 @@ dependencies = [
 
 [[package]]
 name = "solana-faucet"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "byteorder",
@@ -5664,9 +5935,10 @@ dependencies = [
 
 [[package]]
 name = "solana-frozen-abi"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "ahash 0.8.3",
+ "ahash 0.8.5",
+ "bitflags 2.3.3",
  "blake3",
  "block-buffer 0.10.4",
  "bs58",
@@ -5675,19 +5947,16 @@ dependencies = [
  "cc",
  "either",
  "generic-array 0.14.7",
- "getrandom 0.1.16",
  "im",
  "lazy_static",
  "log",
  "memmap2",
- "once_cell",
- "rand_core 0.6.4",
  "rustc_version 0.4.0",
  "serde",
  "serde_bytes",
  "serde_derive",
  "serde_json",
- "sha2 0.10.6",
+ "sha2 0.10.8",
  "solana-frozen-abi-macro",
  "solana-logger",
  "subtle",
@@ -5696,25 +5965,26 @@ dependencies = [
 
 [[package]]
 name = "solana-frozen-abi-macro"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "rustc_version 0.4.0",
- "syn 2.0.18",
+ "syn 2.0.38",
 ]
 
 [[package]]
 name = "solana-genesis"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "clap 2.33.3",
  "itertools",
  "serde",
  "serde_json",
- "serde_yaml 0.9.21",
+ "serde_yaml 0.9.25",
+ "solana-accounts-db",
  "solana-clap-utils",
  "solana-cli-config",
  "solana-entry",
@@ -5730,18 +6000,18 @@ dependencies = [
 
 [[package]]
 name = "solana-genesis-utils"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "log",
+ "solana-accounts-db",
  "solana-download-utils",
  "solana-rpc-client",
- "solana-runtime",
  "solana-sdk",
 ]
 
 [[package]]
 name = "solana-geyser-plugin-interface"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "log",
  "solana-sdk",
@@ -5751,7 +6021,7 @@ dependencies = [
 
 [[package]]
 name = "solana-geyser-plugin-manager"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bs58",
  "crossbeam-channel",
@@ -5761,6 +6031,7 @@ dependencies = [
  "libloading",
  "log",
  "serde_json",
+ "solana-accounts-db",
  "solana-entry",
  "solana-geyser-plugin-interface",
  "solana-ledger",
@@ -5775,25 +6046,25 @@ dependencies = [
 
 [[package]]
 name = "solana-gossip"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "bincode",
  "bv",
  "clap 2.33.3",
  "crossbeam-channel",
  "flate2",
- "indexmap",
+ "indexmap 2.0.2",
  "itertools",
  "log",
  "lru",
- "matches",
  "num-traits",
  "num_cpus",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
  "rayon",
- "regex",
  "rustc_version 0.4.0",
+ "rustversion",
  "serde",
  "serde_bytes",
  "serde_derive",
@@ -5817,14 +6088,16 @@ dependencies = [
  "solana-thin-client",
  "solana-tpu-client",
  "solana-version",
+ "solana-vote",
  "solana-vote-program",
  "static_assertions",
+ "test-case",
  "thiserror",
 ]
 
 [[package]]
 name = "solana-install"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "atty",
  "bincode",
@@ -5837,13 +6110,13 @@ dependencies = [
  "dirs-next",
  "indicatif",
  "lazy_static",
- "nix",
+ "nix 0.26.4",
  "reqwest",
  "scopeguard",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_yaml 0.8.26",
- "serde_yaml 0.9.21",
+ "serde_yaml 0.9.25",
  "solana-clap-utils",
  "solana-config-program",
  "solana-logger",
@@ -5852,14 +6125,14 @@ dependencies = [
  "solana-version",
  "tar",
  "tempfile",
- "url 2.3.1",
+ "url 2.4.1",
  "winapi 0.3.9",
  "winreg",
 ]
 
 [[package]]
 name = "solana-keygen"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bs58",
  "clap 3.2.23",
@@ -5876,11 +6149,11 @@ dependencies = [
 
 [[package]]
 name = "solana-ledger"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "bincode",
- "bitflags",
+ "bitflags 2.3.3",
  "bs58",
  "byteorder",
  "chrono",
@@ -5894,12 +6167,11 @@ dependencies = [
  "libc",
  "log",
  "lru",
- "matches",
  "num_cpus",
  "num_enum 0.6.1",
- "prost 0.11.9",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "prost",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
  "rayon",
  "reed-solomon-erasure",
  "rocksdb",
@@ -5907,9 +6179,11 @@ dependencies = [
  "scopeguard",
  "serde",
  "serde_bytes",
- "sha2 0.10.6",
+ "sha2 0.10.8",
  "solana-account-decoder",
+ "solana-accounts-db",
  "solana-bpf-loader-program",
+ "solana-cost-model",
  "solana-entry",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
@@ -5925,11 +6199,14 @@ dependencies = [
  "solana-storage-bigtable",
  "solana-storage-proto",
  "solana-transaction-status",
+ "solana-vote",
  "solana-vote-program",
  "spl-pod",
  "spl-token",
  "spl-token-2022",
  "static_assertions",
+ "strum",
+ "strum_macros",
  "tempfile",
  "test-case",
  "thiserror",
@@ -5940,7 +6217,7 @@ dependencies = [
 
 [[package]]
 name = "solana-ledger-tool"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_cmd",
  "bs58",
@@ -5960,10 +6237,12 @@ dependencies = [
  "serde_json",
  "signal-hook",
  "solana-account-decoder",
+ "solana-accounts-db",
  "solana-bpf-loader-program",
  "solana-clap-utils",
  "solana-cli-output",
  "solana-core",
+ "solana-cost-model",
  "solana-entry",
  "solana-geyser-plugin-manager",
  "solana-gossip",
@@ -5987,11 +6266,10 @@ dependencies = [
 
 [[package]]
 name = "solana-loader-v4-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "log",
- "rand 0.7.3",
  "solana-measure",
  "solana-program-runtime",
  "solana-sdk",
@@ -6000,7 +6278,7 @@ dependencies = [
 
 [[package]]
 name = "solana-local-cluster"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "crossbeam-channel",
@@ -6008,9 +6286,10 @@ dependencies = [
  "gag",
  "itertools",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "serial_test",
+ "solana-accounts-db",
  "solana-client",
  "solana-config-program",
  "solana-core",
@@ -6028,14 +6307,17 @@ dependencies = [
  "solana-streamer",
  "solana-thin-client",
  "solana-tpu-client",
+ "solana-turbine",
+ "solana-vote",
  "solana-vote-program",
+ "static_assertions",
  "tempfile",
  "trees",
 ]
 
 [[package]]
 name = "solana-log-analyzer"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "byte-unit",
  "clap 3.2.23",
@@ -6047,7 +6329,7 @@ dependencies = [
 
 [[package]]
 name = "solana-logger"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "env_logger",
  "lazy_static",
@@ -6056,7 +6338,7 @@ dependencies = [
 
 [[package]]
 name = "solana-measure"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "log",
  "solana-sdk",
@@ -6064,52 +6346,52 @@ dependencies = [
 
 [[package]]
 name = "solana-memory-management"
-version = "1.16.26"
+version = "1.17.28"
 
 [[package]]
 name = "solana-merkle-root-bench"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 2.33.3",
  "log",
+ "solana-accounts-db",
  "solana-logger",
  "solana-measure",
- "solana-runtime",
  "solana-sdk",
  "solana-version",
 ]
 
 [[package]]
 name = "solana-merkle-tree"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "fast-math",
  "hex",
- "matches",
  "solana-program",
 ]
 
 [[package]]
 name = "solana-metrics"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "crossbeam-channel",
  "env_logger",
  "gethostname",
  "lazy_static",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "reqwest",
  "serial_test",
  "solana-sdk",
+ "thiserror",
 ]
 
 [[package]]
 name = "solana-net-shaper"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 3.2.23",
- "rand 0.7.3",
+ "rand 0.8.5",
  "serde",
  "serde_json",
  "solana-logger",
@@ -6117,27 +6399,27 @@ dependencies = [
 
 [[package]]
 name = "solana-net-utils"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "clap 3.2.23",
  "crossbeam-channel",
  "log",
- "nix",
- "rand 0.7.3",
+ "nix 0.26.4",
+ "rand 0.8.5",
  "serde",
  "serde_derive",
- "socket2",
+ "socket2 0.5.5",
  "solana-logger",
  "solana-sdk",
  "solana-version",
  "tokio",
- "url 2.3.1",
+ "url 2.4.1",
 ]
 
 [[package]]
 name = "solana-notifier"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "log",
  "reqwest",
@@ -6147,25 +6429,27 @@ dependencies = [
 
 [[package]]
 name = "solana-perf"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "ahash 0.8.3",
+ "ahash 0.8.5",
+ "assert_matches",
  "bincode",
  "bv",
  "caps",
  "curve25519-dalek",
- "dlopen",
- "dlopen_derive",
+ "dlopen2",
  "fnv",
  "lazy_static",
  "libc",
  "log",
- "matches",
- "nix",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "nix 0.26.4",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
  "rayon",
+ "rustc_version 0.4.0",
  "serde",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
  "solana-logger",
  "solana-metrics",
  "solana-rayon-threadlimit",
@@ -6176,14 +6460,14 @@ dependencies = [
 
 [[package]]
 name = "solana-poh"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "bincode",
  "core_affinity",
  "crossbeam-channel",
  "log",
- "matches",
- "rand 0.7.3",
+ "rand 0.8.5",
  "solana-entry",
  "solana-ledger",
  "solana-logger",
@@ -6197,11 +6481,10 @@ dependencies = [
 
 [[package]]
 name = "solana-poh-bench"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 3.2.23",
  "log",
- "rand 0.7.3",
  "rayon",
  "solana-entry",
  "solana-logger",
@@ -6213,7 +6496,7 @@ dependencies = [
 
 [[package]]
 name = "solana-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "anyhow",
  "ark-bn254",
@@ -6222,9 +6505,9 @@ dependencies = [
  "ark-serialize",
  "array-bytes",
  "assert_matches",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
- "bitflags",
+ "bitflags 2.3.3",
  "blake3",
  "borsh 0.10.3",
  "borsh 0.9.3",
@@ -6235,27 +6518,27 @@ dependencies = [
  "console_error_panic_hook",
  "console_log",
  "curve25519-dalek",
- "getrandom 0.2.8",
+ "getrandom 0.2.10",
  "itertools",
  "js-sys",
  "lazy_static",
  "libc",
  "libsecp256k1",
+ "light-poseidon",
  "log",
  "memoffset 0.9.0",
- "num-bigint 0.4.3",
+ "num-bigint 0.4.4",
  "num-derive 0.3.3",
  "num-traits",
  "parking_lot 0.12.1",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "rand 0.8.5",
  "rustc_version 0.4.0",
  "rustversion",
  "serde",
  "serde_bytes",
  "serde_derive",
  "serde_json",
- "sha2 0.10.6",
+ "sha2 0.10.8",
  "sha3 0.10.4",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
@@ -6270,19 +6553,21 @@ dependencies = [
 
 [[package]]
 name = "solana-program-runtime"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "base64 0.21.2",
+ "assert_matches",
+ "base64 0.21.4",
  "bincode",
  "eager",
  "enum-iterator",
  "itertools",
  "libc",
+ "libsecp256k1",
  "log",
  "num-derive 0.3.3",
  "num-traits",
  "percentage",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rustc_version 0.4.0",
  "serde",
  "solana-frozen-abi",
@@ -6297,16 +6582,17 @@ dependencies = [
 
 [[package]]
 name = "solana-program-test"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "async-trait",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "chrono-humanize",
  "crossbeam-channel",
  "log",
  "serde",
+ "solana-accounts-db",
  "solana-banks-client",
  "solana-banks-interface",
  "solana-banks-server",
@@ -6317,20 +6603,22 @@ dependencies = [
  "solana-sdk",
  "solana-stake-program",
  "solana-vote-program",
+ "solana_rbpf",
+ "test-case",
  "thiserror",
  "tokio",
 ]
 
 [[package]]
 name = "solana-pubsub-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "anyhow",
  "crossbeam-channel",
  "futures-util",
  "log",
  "reqwest",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_derive",
  "serde_json",
@@ -6342,12 +6630,12 @@ dependencies = [
  "tokio-stream",
  "tokio-tungstenite",
  "tungstenite",
- "url 2.3.1",
+ "url 2.4.1",
 ]
 
 [[package]]
 name = "solana-quic-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "async-mutex",
  "async-trait",
@@ -6358,9 +6646,8 @@ dependencies = [
  "log",
  "quinn",
  "quinn-proto",
- "quinn-udp",
  "rcgen",
- "rustls 0.20.8",
+ "rustls",
  "solana-connection-cache",
  "solana-logger",
  "solana-measure",
@@ -6376,7 +6663,7 @@ dependencies = [
 
 [[package]]
 name = "solana-rayon-threadlimit"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "lazy_static",
  "num_cpus",
@@ -6384,8 +6671,9 @@ dependencies = [
 
 [[package]]
 name = "solana-remote-wallet"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "console",
  "dialoguer",
  "hidapi",
@@ -6394,7 +6682,7 @@ dependencies = [
  "num-traits",
  "parking_lot 0.12.1",
  "qstring",
- "semver 1.0.17",
+ "semver 1.0.20",
  "solana-sdk",
  "thiserror",
  "uriparse",
@@ -6402,9 +6690,9 @@ dependencies = [
 
 [[package]]
 name = "solana-rpc"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "bs58",
  "crossbeam-channel",
@@ -6425,7 +6713,7 @@ dependencies = [
  "serial_test",
  "soketto",
  "solana-account-decoder",
- "solana-address-lookup-table-program",
+ "solana-accounts-db",
  "solana-client",
  "solana-entry",
  "solana-faucet",
@@ -6447,6 +6735,7 @@ dependencies = [
  "solana-tpu-client",
  "solana-transaction-status",
  "solana-version",
+ "solana-vote",
  "solana-vote-program",
  "spl-pod",
  "spl-token",
@@ -6460,11 +6749,11 @@ dependencies = [
 
 [[package]]
 name = "solana-rpc-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "async-trait",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "bs58",
  "crossbeam-channel",
@@ -6474,7 +6763,7 @@ dependencies = [
  "jsonrpc-http-server",
  "log",
  "reqwest",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_derive",
  "serde_json",
@@ -6489,13 +6778,13 @@ dependencies = [
 
 [[package]]
 name = "solana-rpc-client-api"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "base64 0.21.2",
+ "base64 0.21.4",
  "bs58",
  "jsonrpc-core",
  "reqwest",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_derive",
  "serde_json",
@@ -6509,7 +6798,7 @@ dependencies = [
 
 [[package]]
 name = "solana-rpc-client-nonce-utils"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "anyhow",
  "clap 2.33.3",
@@ -6526,7 +6815,7 @@ dependencies = [
 
 [[package]]
 name = "solana-rpc-test"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "bs58",
@@ -6553,11 +6842,11 @@ dependencies = [
 
 [[package]]
 name = "solana-runtime"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "arrayref",
  "assert_matches",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "blake3",
  "bv",
@@ -6570,6 +6859,7 @@ dependencies = [
  "ed25519-dalek",
  "flate2",
  "fnv",
+ "fs-err",
  "im",
  "index_list",
  "itertools",
@@ -6585,22 +6875,25 @@ dependencies = [
  "num-traits",
  "num_cpus",
  "num_enum 0.6.1",
- "once_cell",
  "ouroboros",
  "percentage",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "qualifier_attr",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
  "rayon",
  "regex",
  "rustc_version 0.4.0",
  "serde",
  "serde_derive",
  "serde_json",
+ "siphasher",
+ "solana-accounts-db",
  "solana-address-lookup-table-program",
  "solana-bpf-loader-program",
  "solana-bucket-map",
  "solana-compute-budget-program",
  "solana-config-program",
+ "solana-cost-model",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
  "solana-loader-v4-program",
@@ -6610,10 +6903,12 @@ dependencies = [
  "solana-perf",
  "solana-program-runtime",
  "solana-rayon-threadlimit",
+ "solana-runtime",
  "solana-sdk",
  "solana-stake-program",
  "solana-system-program",
  "solana-version",
+ "solana-vote",
  "solana-vote-program",
  "solana-zk-token-proof-program",
  "solana-zk-token-sdk",
@@ -6630,13 +6925,13 @@ dependencies = [
 
 [[package]]
 name = "solana-sdk"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "anyhow",
  "assert_matches",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
- "bitflags",
+ "bitflags 2.3.3",
  "borsh 0.10.3",
  "bs58",
  "bytemuck",
@@ -6661,8 +6956,9 @@ dependencies = [
  "num_enum 0.6.1",
  "pbkdf2 0.11.0",
  "qstring",
+ "qualifier_attr",
  "rand 0.7.3",
- "rand_chacha 0.2.2",
+ "rand 0.8.5",
  "rustc_version 0.4.0",
  "rustversion",
  "serde",
@@ -6670,12 +6966,13 @@ dependencies = [
  "serde_derive",
  "serde_json",
  "serde_with",
- "sha2 0.10.6",
+ "sha2 0.10.8",
  "sha3 0.10.4",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
  "solana-logger",
  "solana-program",
+ "solana-sdk",
  "solana-sdk-macro",
  "static_assertions",
  "thiserror",
@@ -6686,18 +6983,24 @@ dependencies = [
 
 [[package]]
 name = "solana-sdk-macro"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bs58",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "rustversion",
- "syn 2.0.18",
+ "syn 2.0.38",
 ]
 
 [[package]]
+name = "solana-security-txt"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183"
+
+[[package]]
 name = "solana-send-transaction-service"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "crossbeam-channel",
  "log",
@@ -6712,7 +7015,7 @@ dependencies = [
 
 [[package]]
 name = "solana-stake-accounts"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 2.33.3",
  "solana-clap-utils",
@@ -6728,7 +7031,7 @@ dependencies = [
 
 [[package]]
 name = "solana-stake-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "bincode",
@@ -6745,7 +7048,7 @@ dependencies = [
 
 [[package]]
 name = "solana-storage-bigtable"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "backoff",
  "bincode",
@@ -6760,8 +7063,8 @@ dependencies = [
  "hyper-proxy",
  "log",
  "openssl",
- "prost 0.11.9",
- "prost-types 0.11.9",
+ "prost",
+ "prost-types",
  "serde",
  "serde_derive",
  "smpl_jwt",
@@ -6771,61 +7074,61 @@ dependencies = [
  "solana-transaction-status",
  "thiserror",
  "tokio",
- "tonic 0.8.3",
+ "tonic",
  "zstd",
 ]
 
 [[package]]
 name = "solana-storage-proto"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "bs58",
  "enum-iterator",
- "prost 0.11.9",
+ "prost",
  "protobuf-src",
  "serde",
  "solana-account-decoder",
  "solana-sdk",
  "solana-transaction-status",
- "tonic-build 0.8.4",
+ "tonic-build",
 ]
 
 [[package]]
 name = "solana-store-tool"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 2.33.3",
  "log",
+ "solana-accounts-db",
  "solana-logger",
- "solana-runtime",
  "solana-sdk",
  "solana-version",
 ]
 
 [[package]]
 name = "solana-streamer"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "async-channel",
  "bytes",
  "crossbeam-channel",
  "futures-util",
  "histogram",
- "indexmap",
+ "indexmap 2.0.2",
  "itertools",
  "libc",
  "log",
- "nix",
+ "nix 0.26.4",
  "pem",
  "percentage",
  "pkcs8",
  "quinn",
  "quinn-proto",
- "quinn-udp",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rcgen",
- "rustls 0.20.8",
+ "rustls",
  "solana-logger",
  "solana-metrics",
  "solana-perf",
@@ -6837,7 +7140,7 @@ dependencies = [
 
 [[package]]
 name = "solana-system-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "assert_matches",
  "bincode",
@@ -6851,14 +7154,15 @@ dependencies = [
 
 [[package]]
 name = "solana-test-validator"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "crossbeam-channel",
  "log",
  "serde_derive",
  "serde_json",
+ "solana-accounts-db",
  "solana-cli-output",
  "solana-client",
  "solana-core",
@@ -6880,7 +7184,7 @@ dependencies = [
 
 [[package]]
 name = "solana-thin-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "log",
@@ -6894,15 +7198,16 @@ dependencies = [
 
 [[package]]
 name = "solana-tokens"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "bincode",
  "chrono",
  "clap 2.33.3",
  "console",
  "csv",
  "ctrlc",
- "indexmap",
+ "indexmap 2.0.2",
  "indicatif",
  "pickledb",
  "serde",
@@ -6926,16 +7231,14 @@ dependencies = [
 
 [[package]]
 name = "solana-tpu-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "async-trait",
  "bincode",
  "futures-util",
- "indexmap",
+ "indexmap 2.0.2",
  "indicatif",
  "log",
- "rand 0.7.3",
- "rand_chacha 0.2.2",
  "rayon",
  "solana-connection-cache",
  "solana-measure",
@@ -6950,12 +7253,12 @@ dependencies = [
 
 [[package]]
 name = "solana-transaction-dos"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bincode",
  "clap 2.33.3",
  "log",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "solana-clap-utils",
  "solana-cli",
@@ -6977,10 +7280,10 @@ dependencies = [
 
 [[package]]
 name = "solana-transaction-status"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "Inflector",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "borsh 0.10.3",
  "bs58",
@@ -6990,7 +7293,6 @@ dependencies = [
  "serde_derive",
  "serde_json",
  "solana-account-decoder",
- "solana-address-lookup-table-program",
  "solana-sdk",
  "spl-associated-token-account",
  "spl-memo",
@@ -7000,8 +7302,45 @@ dependencies = [
 ]
 
 [[package]]
+name = "solana-turbine"
+version = "1.17.28"
+dependencies = [
+ "assert_matches",
+ "bincode",
+ "bytes",
+ "crossbeam-channel",
+ "futures 0.3.28",
+ "itertools",
+ "log",
+ "lru",
+ "quinn",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
+ "rayon",
+ "rcgen",
+ "rustls",
+ "solana-entry",
+ "solana-gossip",
+ "solana-ledger",
+ "solana-logger",
+ "solana-measure",
+ "solana-metrics",
+ "solana-perf",
+ "solana-poh",
+ "solana-quic-client",
+ "solana-rayon-threadlimit",
+ "solana-rpc",
+ "solana-rpc-client-api",
+ "solana-runtime",
+ "solana-sdk",
+ "solana-streamer",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
 name = "solana-udp-client"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "async-trait",
  "solana-connection-cache",
@@ -7014,7 +7353,7 @@ dependencies = [
 
 [[package]]
 name = "solana-upload-perf"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "serde_json",
  "solana-metrics",
@@ -7022,7 +7361,7 @@ dependencies = [
 
 [[package]]
 name = "solana-validator"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "chrono",
  "clap 2.33.3",
@@ -7042,13 +7381,14 @@ dependencies = [
  "libloading",
  "log",
  "num_cpus",
- "rand 0.7.3",
+ "rand 0.8.5",
  "rayon",
  "serde",
  "serde_json",
- "serde_yaml 0.9.21",
+ "serde_yaml 0.9.25",
  "signal-hook",
  "solana-account-decoder",
+ "solana-accounts-db",
  "solana-clap-utils",
  "solana-cli-config",
  "solana-core",
@@ -7085,11 +7425,11 @@ dependencies = [
 
 [[package]]
 name = "solana-version"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "log",
  "rustc_version 0.4.0",
- "semver 1.0.17",
+ "semver 1.0.20",
  "serde",
  "serde_derive",
  "solana-frozen-abi",
@@ -7098,9 +7438,29 @@ dependencies = [
 ]
 
 [[package]]
+name = "solana-vote"
+version = "1.17.28"
+dependencies = [
+ "bincode",
+ "crossbeam-channel",
+ "itertools",
+ "log",
+ "rand 0.8.5",
+ "rustc_version 0.4.0",
+ "serde",
+ "serde_derive",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-sdk",
+ "solana-vote-program",
+ "thiserror",
+]
+
+[[package]]
 name = "solana-vote-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
+ "assert_matches",
  "bincode",
  "log",
  "num-derive 0.3.3",
@@ -7121,7 +7481,7 @@ dependencies = [
 
 [[package]]
 name = "solana-watchtower"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "clap 2.33.3",
  "humantime",
@@ -7140,7 +7500,7 @@ dependencies = [
 
 [[package]]
 name = "solana-zk-keygen"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bs58",
  "clap 3.2.23",
@@ -7159,10 +7519,11 @@ dependencies = [
 
 [[package]]
 name = "solana-zk-token-proof-program"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bytemuck",
- "getrandom 0.1.16",
+ "criterion",
+ "curve25519-dalek",
  "num-derive 0.3.3",
  "num-traits",
  "solana-program-runtime",
@@ -7172,7 +7533,7 @@ dependencies = [
 
 [[package]]
 name = "solana-zk-token-proof-program-tests"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "bytemuck",
  "curve25519-dalek",
@@ -7184,10 +7545,10 @@ dependencies = [
 
 [[package]]
 name = "solana-zk-token-sdk"
-version = "1.16.26"
+version = "1.17.28"
 dependencies = [
  "aes-gcm-siv",
- "base64 0.21.2",
+ "base64 0.21.4",
  "bincode",
  "bytemuck",
  "byteorder",
@@ -7212,9 +7573,9 @@ dependencies = [
 
 [[package]]
 name = "solana_rbpf"
-version = "0.6.1"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17d4ba1e58947346e360fabde0697029d36ba83c42f669199b16a8931313cf29"
+checksum = "3d457cc2ba742c120492a64b7fa60e22c575e891f6b55039f4d736568fb112a3"
 dependencies = [
  "byteorder",
  "combine",
@@ -7254,13 +7615,13 @@ dependencies = [
 
 [[package]]
 name = "spl-associated-token-account"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "385e31c29981488f2820b2022d8e731aae3b02e6e18e2fd854e4c9a94dc44fc3"
+checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f"
 dependencies = [
  "assert_matches",
  "borsh 0.10.3",
- "num-derive 0.4.0",
+ "num-derive 0.4.1",
  "num-traits",
  "solana-program",
  "spl-token",
@@ -7285,9 +7646,9 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fadbefec4f3c678215ca72bd71862697bb06b41fd77c0088902dd3203354387b"
 dependencies = [
- "quote 1.0.28",
+ "quote",
  "spl-discriminator-syn",
- "syn 2.0.18",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -7296,10 +7657,10 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0e5f2044ca42c8938d54d1255ce599c79a1ffd86b677dfab695caa20f9ffc3f2"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "sha2 0.10.6",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "sha2 0.10.8",
+ "syn 2.0.38",
  "thiserror",
 ]
 
@@ -7341,7 +7702,7 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c"
 dependencies = [
- "num-derive 0.4.0",
+ "num-derive 0.4.1",
  "num-traits",
  "solana-program",
  "spl-program-error-derive",
@@ -7354,17 +7715,17 @@ version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ab5269c8e868da17b6552ef35a51355a017bd8e0eae269c201fef830d35fa52c"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "sha2 0.10.6",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "sha2 0.10.8",
+ "syn 2.0.38",
 ]
 
 [[package]]
 name = "spl-tlv-account-resolution"
-version = "0.4.0"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "062e148d3eab7b165582757453632ffeef490c02c86a48bfdb4988f63eefb3b9"
+checksum = "3f7020347c07892c08560d230fbb8a980316c9e198e22b198b7b9d951ff96047"
 dependencies = [
  "bytemuck",
  "solana-program",
@@ -7391,20 +7752,22 @@ dependencies = [
 
 [[package]]
 name = "spl-token-2022"
-version = "0.9.0"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4abf34a65ba420584a0c35f3903f8d727d1f13ababbdc3f714c6b065a686e86"
+checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059"
 dependencies = [
  "arrayref",
  "bytemuck",
- "num-derive 0.4.0",
+ "num-derive 0.4.1",
  "num-traits",
- "num_enum 0.7.0",
+ "num_enum 0.7.1",
  "solana-program",
+ "solana-security-txt",
  "solana-zk-token-sdk",
  "spl-memo",
  "spl-pod",
  "spl-token",
+ "spl-token-group-interface",
  "spl-token-metadata-interface",
  "spl-transfer-hook-interface",
  "spl-type-length-value",
@@ -7412,6 +7775,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "spl-token-group-interface"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d"
+dependencies = [
+ "bytemuck",
+ "solana-program",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+]
+
+[[package]]
 name = "spl-token-metadata-interface"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -7427,9 +7803,9 @@ dependencies = [
 
 [[package]]
 name = "spl-transfer-hook-interface"
-version = "0.3.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "051d31803f873cabe71aec3c1b849f35248beae5d19a347d93a5c9cccc5d5a9b"
+checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259"
 dependencies = [
  "arrayref",
  "bytemuck",
@@ -7498,9 +7874,9 @@ version = "0.24.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
 dependencies = [
- "heck 0.4.0",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "heck",
+ "proc-macro2",
+ "quote",
  "rustversion",
  "syn 1.0.109",
 ]
@@ -7519,34 +7895,23 @@ checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a"
 
 [[package]]
 name = "syn"
-version = "0.15.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
-dependencies = [
- "proc-macro2 0.4.30",
- "quote 0.6.13",
- "unicode-xid 0.1.0",
-]
-
-[[package]]
-name = "syn"
 version = "1.0.109"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "unicode-ident",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.18"
+version = "2.0.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e"
+checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "unicode-ident",
 ]
 
@@ -7562,10 +7927,10 @@ version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
- "unicode-xid 0.2.2",
+ "unicode-xid",
 ]
 
 [[package]]
@@ -7584,7 +7949,7 @@ version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "225e483f02d0ad107168dc57381a8a40c3aeea6abe47f37506931f861643cfa8"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "byteorder",
  "libc",
  "thiserror",
@@ -7592,6 +7957,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
 name = "systemstat"
 version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -7601,15 +7987,15 @@ dependencies = [
  "lazy_static",
  "libc",
  "nom",
- "time 0.3.9",
+ "time",
  "winapi 0.3.9",
 ]
 
 [[package]]
 name = "tar"
-version = "0.4.38"
+version = "0.4.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6"
+checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
 dependencies = [
  "filetime",
  "libc",
@@ -7646,22 +8032,22 @@ version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
+ "proc-macro2",
+ "quote",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "tempfile"
-version = "3.5.0"
+version = "3.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
+checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
 dependencies = [
  "cfg-if 1.0.0",
  "fastrand",
  "redox_syscall 0.3.5",
  "rustix",
- "windows-sys 0.45.0",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -7681,24 +8067,37 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16"
 
 [[package]]
 name = "test-case"
-version = "2.2.2"
+version = "3.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21d6cf5a7dffb3f9dceec8e6b8ca528d9bd71d36c9f074defb548ce161f598c0"
+checksum = "c8f1e820b7f1d95a0cdbf97a5df9de10e1be731983ab943e56703ac1b8e9d425"
 dependencies = [
  "test-case-macros",
 ]
 
 [[package]]
-name = "test-case-macros"
-version = "2.2.2"
+name = "test-case-core"
+version = "3.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e45b7bf6e19353ddd832745c8fcf77a17a93171df7151187f26623f2b75b5b26"
+checksum = "54c25e2cb8f5fcd7318157634e8838aa6f7e4715c96637f969fabaccd1ef5462"
 dependencies = [
  "cfg-if 1.0.0",
  "proc-macro-error",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 1.0.109",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
+]
+
+[[package]]
+name = "test-case-macros"
+version = "3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37cfd7bbc88a0104e304229fba519bdc45501a30b760fb72240342f1289ad257"
+dependencies = [
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
+ "test-case-core",
 ]
 
 [[package]]
@@ -7718,22 +8117,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
 
 [[package]]
 name = "thiserror"
-version = "1.0.40"
+version = "1.0.50"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.40"
+version = "1.0.50"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -7774,16 +8173,6 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.1.43"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
-dependencies = [
- "libc",
- "winapi 0.3.9",
-]
-
-[[package]]
-name = "time"
 version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"
@@ -7820,6 +8209,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
 name = "tinyvec"
 version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -7836,22 +8235,21 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
 
 [[package]]
 name = "tokio"
-version = "1.14.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9d0183f6f6001549ab68f8c7585093bb732beefbcf6d23a10b9b95c73a1dd49"
+version = "1.29.1"
+source = "git+https://github.com/solana-labs/solana-tokio.git?rev=7cf47705faacf7bf0e43e4131a5377b3291fce21#7cf47705faacf7bf0e43e4131a5377b3291fce21"
 dependencies = [
  "autocfg",
+ "backtrace",
  "bytes",
  "libc",
- "memchr",
  "mio",
  "num_cpus",
- "once_cell",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.1",
  "pin-project-lite",
  "signal-hook-registry",
+ "socket2 0.4.9",
  "tokio-macros",
- "winapi 0.3.9",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -7866,13 +8264,12 @@ dependencies = [
 
 [[package]]
 name = "tokio-macros"
-version = "1.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"
+version = "2.1.0"
+source = "git+https://github.com/solana-labs/solana-tokio.git?rev=7cf47705faacf7bf0e43e4131a5377b3291fce21#7cf47705faacf7bf0e43e4131a5377b3291fce21"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 1.0.109",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -7887,24 +8284,12 @@ dependencies = [
 
 [[package]]
 name = "tokio-rustls"
-version = "0.22.0"
+version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
 dependencies = [
- "rustls 0.19.1",
+ "rustls",
  "tokio",
- "webpki 0.21.4",
-]
-
-[[package]]
-name = "tokio-rustls"
-version = "0.23.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4151fda0cf2798550ad0b34bcfc9b9dcc2a9d2471c895c68f3a8818e54f2389e"
-dependencies = [
- "rustls 0.20.8",
- "tokio",
- "webpki 0.22.0",
 ]
 
 [[package]]
@@ -7925,9 +8310,9 @@ dependencies = [
 
 [[package]]
 name = "tokio-stream"
-version = "0.1.12"
+version = "0.1.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313"
+checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
 dependencies = [
  "futures-core",
  "pin-project-lite",
@@ -7936,18 +8321,17 @@ dependencies = [
 
 [[package]]
 name = "tokio-tungstenite"
-version = "0.17.2"
+version = "0.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181"
+checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c"
 dependencies = [
  "futures-util",
  "log",
- "rustls 0.20.8",
+ "rustls",
  "tokio",
- "tokio-rustls 0.23.3",
+ "tokio-rustls",
  "tungstenite",
- "webpki 0.22.0",
- "webpki-roots",
+ "webpki-roots 0.25.2",
 ]
 
 [[package]]
@@ -7991,46 +8375,14 @@ dependencies = [
 
 [[package]]
 name = "tonic"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a"
-dependencies = [
- "async-stream",
- "async-trait",
- "base64 0.13.1",
- "bytes",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-timeout",
- "percent-encoding 2.2.0",
- "pin-project",
- "prost 0.9.0",
- "prost-derive 0.9.0",
- "tokio",
- "tokio-rustls 0.22.0",
- "tokio-stream",
- "tokio-util 0.6.9",
- "tower",
- "tower-layer",
- "tower-service",
- "tracing",
- "tracing-futures",
-]
-
-[[package]]
-name = "tonic"
-version = "0.8.3"
+version = "0.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb"
+checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a"
 dependencies = [
  "async-stream",
  "async-trait",
  "axum",
- "base64 0.13.1",
+ "base64 0.21.4",
  "bytes",
  "futures-core",
  "futures-util",
@@ -8039,44 +8391,29 @@ dependencies = [
  "http-body",
  "hyper",
  "hyper-timeout",
- "percent-encoding 2.2.0",
+ "percent-encoding 2.3.0",
  "pin-project",
- "prost 0.11.9",
- "prost-derive 0.11.9",
+ "prost",
  "rustls-pemfile 1.0.0",
  "tokio",
- "tokio-rustls 0.23.3",
+ "tokio-rustls",
  "tokio-stream",
- "tokio-util 0.7.1",
  "tower",
  "tower-layer",
  "tower-service",
  "tracing",
- "tracing-futures",
-]
-
-[[package]]
-name = "tonic-build"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757"
-dependencies = [
- "proc-macro2 1.0.60",
- "prost-build 0.9.0",
- "quote 1.0.28",
- "syn 1.0.109",
 ]
 
 [[package]]
 name = "tonic-build"
-version = "0.8.4"
+version = "0.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4"
+checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07"
 dependencies = [
  "prettyplease 0.1.9",
- "proc-macro2 1.0.60",
- "prost-build 0.11.4",
- "quote 1.0.28",
+ "proc-macro2",
+ "prost-build",
+ "quote",
  "syn 1.0.109",
 ]
 
@@ -8088,7 +8425,7 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
 dependencies = [
  "futures-core",
  "futures-util",
- "indexmap",
+ "indexmap 1.9.3",
  "pin-project",
  "pin-project-lite",
  "rand 0.8.5",
@@ -8101,25 +8438,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "tower-http"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
-dependencies = [
- "bitflags",
- "bytes",
- "futures-core",
- "futures-util",
- "http",
- "http-body",
- "http-range-header",
- "pin-project-lite",
- "tower",
- "tower-layer",
- "tower-service",
-]
-
-[[package]]
 name = "tower-layer"
 version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8127,17 +8445,16 @@ checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
 
 [[package]]
 name = "tower-service"
-version = "0.3.1"
+version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
 
 [[package]]
 name = "tracing"
-version = "0.1.29"
+version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
 dependencies = [
- "cfg-if 1.0.0",
  "log",
  "pin-project-lite",
  "tracing-attributes",
@@ -8146,32 +8463,23 @@ dependencies = [
 
 [[package]]
 name = "tracing-attributes"
-version = "0.1.18"
+version = "0.1.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 1.0.109",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
 name = "tracing-core"
-version = "0.1.21"
+version = "0.1.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
 dependencies = [
- "lazy_static",
-]
-
-[[package]]
-name = "tracing-futures"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
-dependencies = [
- "pin-project",
- "tracing",
+ "once_cell",
+ "valuable",
 ]
 
 [[package]]
@@ -8211,24 +8519,23 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
 
 [[package]]
 name = "tungstenite"
-version = "0.17.3"
+version = "0.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0"
+checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
 dependencies = [
- "base64 0.13.1",
  "byteorder",
  "bytes",
+ "data-encoding",
  "http",
  "httparse",
  "log",
  "rand 0.8.5",
- "rustls 0.20.8",
- "sha-1 0.10.0",
+ "rustls",
+ "sha1",
  "thiserror",
- "url 2.3.1",
+ "url 2.4.1",
  "utf-8",
- "webpki 0.22.0",
- "webpki-roots",
+ "webpki-roots 0.24.0",
 ]
 
 [[package]]
@@ -8260,9 +8567,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.7"
+version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f"
+checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
 
 [[package]]
 name = "unicode-ident"
@@ -8272,20 +8579,14 @@ checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.19"
+version = "0.1.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
 dependencies = [
  "tinyvec",
 ]
 
 [[package]]
-name = "unicode-segmentation"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
-
-[[package]]
 name = "unicode-width"
 version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8293,12 +8594,6 @@ checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
 
 [[package]]
 name = "unicode-xid"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
-
-[[package]]
-name = "unicode-xid"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
@@ -8357,13 +8652,13 @@ dependencies = [
 
 [[package]]
 name = "url"
-version = "2.3.1"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
 dependencies = [
  "form_urlencoded",
- "idna 0.3.0",
- "percent-encoding 2.2.0",
+ "idna 0.4.0",
+ "percent-encoding 2.3.0",
 ]
 
 [[package]]
@@ -8379,6 +8674,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7cf7d77f457ef8dfa11e4cd5933c5ddb5dc52a94664071951219a97710f0a32b"
 
 [[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
 name = "vcpkg"
 version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8446,9 +8747,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.86"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73"
+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
 dependencies = [
  "cfg-if 1.0.0",
  "wasm-bindgen-macro",
@@ -8456,16 +8757,16 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.86"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb"
+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
  "wasm-bindgen-shared",
 ]
 
@@ -8483,32 +8784,32 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.86"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258"
+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
 dependencies = [
- "quote 1.0.28",
+ "quote",
  "wasm-bindgen-macro-support",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.86"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8"
+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 2.0.18",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.86"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93"
+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
 
 [[package]]
 name = "web-sys"
@@ -8521,33 +8822,19 @@ dependencies = [
 ]
 
 [[package]]
-name = "webpki"
-version = "0.21.4"
+name = "webpki-roots"
+version = "0.24.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea"
+checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888"
 dependencies = [
- "ring",
- "untrusted",
-]
-
-[[package]]
-name = "webpki"
-version = "0.22.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"
-dependencies = [
- "ring",
- "untrusted",
+ "rustls-webpki",
 ]
 
 [[package]]
 name = "webpki-roots"
-version = "0.22.1"
+version = "0.25.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c475786c6f47219345717a043a37ec04cb4bc185e28853adcc4fa0a947eba630"
-dependencies = [
- "webpki 0.22.0",
-]
+checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc"
 
 [[package]]
 name = "which"
@@ -8605,34 +8892,6 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
 name = "windows-sys"
-version = "0.32.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6"
-dependencies = [
- "windows_aarch64_msvc 0.32.0",
- "windows_i686_gnu 0.32.0",
- "windows_i686_msvc 0.32.0",
- "windows_x86_64_gnu 0.32.0",
- "windows_x86_64_msvc 0.32.0",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.42.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
-]
-
-[[package]]
-name = "windows-sys"
 version = "0.45.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
@@ -8693,12 +8952,6 @@ checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.32.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5"
-
-[[package]]
-name = "windows_aarch64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
@@ -8711,12 +8964,6 @@ checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.32.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615"
-
-[[package]]
-name = "windows_i686_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
@@ -8729,12 +8976,6 @@ checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.32.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172"
-
-[[package]]
-name = "windows_i686_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
@@ -8747,12 +8988,6 @@ checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.32.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc"
-
-[[package]]
-name = "windows_x86_64_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
@@ -8777,12 +9012,6 @@ checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.32.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316"
-
-[[package]]
-name = "windows_x86_64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
@@ -8795,11 +9024,12 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
 
 [[package]]
 name = "winreg"
-version = "0.10.1"
+version = "0.50.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
 dependencies = [
- "winapi 0.3.9",
+ "cfg-if 1.0.0",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -8817,14 +9047,14 @@ dependencies = [
  "oid-registry",
  "rusticata-macros",
  "thiserror",
- "time 0.3.9",
+ "time",
 ]
 
 [[package]]
 name = "xattr"
-version = "0.2.2"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c"
+checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"
 dependencies = [
  "libc",
 ]
@@ -8844,7 +9074,27 @@ version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "346d34a236c9d3e5f3b9b74563f238f955bbd05fa0b8b4efa53c130c43982f4c"
 dependencies = [
- "time 0.3.9",
+ "time",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
@@ -8858,14 +9108,13 @@ dependencies = [
 
 [[package]]
 name = "zeroize_derive"
-version = "1.2.0"
+version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bdff2024a851a322b08f179173ae2ba620445aef1e838f0c196820eade4ae0c7"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
- "proc-macro2 1.0.60",
- "quote 1.0.28",
- "syn 1.0.109",
- "synstructure",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
 ]
 
 [[package]]
diff --git a/pkgs/applications/blockchains/solana-validator/default.nix b/pkgs/applications/blockchains/solana-validator/default.nix
index d2efa4633a646..56f38c49b12a3 100644
--- a/pkgs/applications/blockchains/solana-validator/default.nix
+++ b/pkgs/applications/blockchains/solana-validator/default.nix
@@ -60,20 +60,11 @@ rustPlatform.buildRustPackage rec {
     inherit hash;
   };
 
-  # fix build with rust 1.70+
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/solana-labs/solana/commit/9e703f85de4184f577f22a1c72a0d33612f2feb1.patch";
-      hash = "sha256-bAKTIQ6FhTk6bIddYULwLfdH5kzNPw1ltXJEfawtAXg=";
-      includes = [ "sdk/program/src/account_info.rs" ];
-    })
-  ];
-
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
       "crossbeam-epoch-0.9.5" = "sha256-Jf0RarsgJiXiZ+ddy0vp4jQ59J9m0k3sgXhWhCdhgws=";
-      "ntapi-0.3.7" = "sha256-G6ZCsa3GWiI/FeGKiK9TWkmTxen7nwpXvm5FtjNtjWU=";
+      "tokio-1.29.1" = "sha256-Z/kewMCqkPVTXdoBcSaFKG5GSQAdkdpj3mAzLLCjjGk=";
     };
   };
 
diff --git a/pkgs/applications/blockchains/solana-validator/pin.json b/pkgs/applications/blockchains/solana-validator/pin.json
index b61d08c1d7155..ba22a0f7baf90 100644
--- a/pkgs/applications/blockchains/solana-validator/pin.json
+++ b/pkgs/applications/blockchains/solana-validator/pin.json
@@ -1,4 +1,4 @@
 {
-  "version": "1.16.26",
-  "hash": "sha256-0OMZO2aKoaeRCkswXDXV9Y6HnYLzpkqqFPVIW2P5TwE="
+  "version": "1.17.28",
+  "hash": "sha256-y79zsUfYsX377ofsFSg9a2il99uJsA+qdCu3J+EU5nQ="
 }
diff --git a/pkgs/applications/display-managers/greetd/regreet.nix b/pkgs/applications/display-managers/greetd/regreet.nix
index 254589c7a43ec..ff0511a15c1c3 100644
--- a/pkgs/applications/display-managers/greetd/regreet.nix
+++ b/pkgs/applications/display-managers/greetd/regreet.nix
@@ -2,7 +2,7 @@
 , rustPlatform
 , fetchFromGitHub
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , glib
 , gtk4
 , pango
@@ -24,7 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   buildFeatures = [ "gtk4_8" ];
 
-  nativeBuildInputs = [ pkg-config wrapGAppsHook];
+  nativeBuildInputs = [ pkg-config wrapGAppsHook4 ];
   buildInputs = [ glib gtk4 pango librsvg ];
 
   meta = with lib; {
diff --git a/pkgs/applications/editors/aewan/default.nix b/pkgs/applications/editors/aewan/default.nix
index 6e817646d9e75..dcc59560a246d 100644
--- a/pkgs/applications/editors/aewan/default.nix
+++ b/pkgs/applications/editors/aewan/default.nix
@@ -1,5 +1,7 @@
-{ lib, stdenv, fetchurl, fetchpatch, zlib, ncurses }:
+{ lib, gccStdenv, fetchurl, fetchpatch, zlib, ncurses }:
 
+let stdenv = gccStdenv;
+in
 stdenv.mkDerivation rec {
   pname = "aewan";
   version = "1.0.01";
diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix
index 2cd1dff33c729..72814c5edda6f 100644
--- a/pkgs/applications/editors/android-studio/common.nix
+++ b/pkgs/applications/editors/android-studio/common.nix
@@ -21,11 +21,21 @@
 , gzip
 , fontconfig
 , freetype
+, libbsd
 , libpulseaudio
 , libGL
+, libdrm
+, libpng
 , libuuid
 , libX11
 , libxcb
+, libxkbcommon
+, xcbutilwm
+, xcbutilrenderutil
+, xcbutilkeysyms
+, xcbutilimage
+, xcbutilcursor
+, libxkbfile
 , libXcomposite
 , libXcursor
 , libXdamage
@@ -51,6 +61,7 @@
 , which
 , runCommand
 , xkeyboard_config
+, xorg
 , zlib
 , makeDesktopItem
 , tiling_wm # if we are using a tiling wm, need to set _JAVA_AWT_WM_NONREPARENTING in wrapper
@@ -136,15 +147,27 @@ let
           alsa-lib
           dbus
           expat
+          libbsd
           libpulseaudio
           libuuid
           libX11
           libxcb
+          libxkbcommon
+          xcbutilwm
+          xcbutilrenderutil
+          xcbutilkeysyms
+          xcbutilimage
+          xcbutilcursor
+          xorg.libICE
+          xorg.libSM
+          libxkbfile
           libXcomposite
           libXcursor
           libXdamage
           libXfixes
           libGL
+          libdrm
+          libpng
           nspr
           nss_latest
           systemd
diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix
index 209ed4003fc8b..2339503977afb 100644
--- a/pkgs/applications/editors/android-studio/default.nix
+++ b/pkgs/applications/editors/android-studio/default.nix
@@ -10,16 +10,16 @@ let
     inherit tiling_wm;
   };
   stableVersion = {
-    version = "2023.2.1.24"; # "Android Studio Iguana | 2023.2.1 Patch 1"
-    sha256Hash = "sha256-ACZCdXKEnJy7DJTW+XGOoIvDRdzP47NytUEAqV//mbU=";
+    version = "2023.2.1.25"; # "Android Studio Iguana | 2023.2.1 Patch 2"
+    sha256Hash = "sha256-zWPq1GfckqCP9rNpXAHVfoApdvxkrN3NMc1qJCf/obw=";
   };
   betaVersion = {
-    version = "2023.3.1.15"; # "Android Studio Jellyfish | 2023.3.1.1 Beta 2"
-    sha256Hash = "sha256-ImXHda8Xbayuk+OMZVtAFsGNnaqm2PvI3lko2gUpIeU=";
+    version = "2023.3.1.17"; # "Android Studio Jellyfish | 2023.3.1.1 RC 2"
+    sha256Hash = "sha256-zROBKzQiP4V2P67HgOIkHgn8q/M0zy5MkZozVSiQsWU=";
   };
   latestVersion = {
-    version = "2024.1.1.1"; # "Android Studio Koala | 2024.1.1 Canary 3"
-    sha256Hash = "sha256-QNAudFlM+1QAZg+EYgiIknllai4N1wj55ZnkUWho7ps=";
+    version = "2024.1.1.2"; # "Android Studio Koala | 2024.1.1 Canary 4"
+    sha256Hash = "sha256-d/bzgKimps0Tw7GQD9sc2LLDNaVpWlqNTKkuyxKrCWo=";
   };
 in {
   # Attributes are named by their corresponding release channels
diff --git a/pkgs/applications/editors/helix/default.nix b/pkgs/applications/editors/helix/default.nix
index 698b4f8a1b16d..382104a3d7f70 100644
--- a/pkgs/applications/editors/helix/default.nix
+++ b/pkgs/applications/editors/helix/default.nix
@@ -1,4 +1,4 @@
-{ fetchzip, lib, rustPlatform, git, installShellFiles, makeWrapper }:
+{ fetchzip, lib, rustPlatform, git, installShellFiles }:
 
 rustPlatform.buildRustPackage rec {
   pname = "helix";
@@ -14,7 +14,9 @@ rustPlatform.buildRustPackage rec {
 
   cargoHash = "sha256-THzPUVcmboVJHu3rJ6rev3GrkNilZRMlitCx7M1+HBE=";
 
-  nativeBuildInputs = [ git installShellFiles makeWrapper ];
+  nativeBuildInputs = [ git installShellFiles ];
+
+  env.HELIX_DEFAULT_RUNTIME = "${placeholder "out"}/lib/runtime";
 
   postInstall = ''
     # not needed at runtime
@@ -27,9 +29,6 @@ rustPlatform.buildRustPackage rec {
     cp contrib/Helix.desktop $out/share/applications
     cp contrib/helix.png $out/share/icons/hicolor/256x256/apps
   '';
-  postFixup = ''
-    wrapProgram $out/bin/hx --set HELIX_RUNTIME $out/lib/runtime
-  '';
 
   meta = with lib; {
     description = "A post-modern modal text editor";
diff --git a/pkgs/applications/editors/jetbrains/bin/versions.json b/pkgs/applications/editors/jetbrains/bin/versions.json
index 2169406eab8b6..af8d8453ad7c9 100644
--- a/pkgs/applications/editors/jetbrains/bin/versions.json
+++ b/pkgs/applications/editors/jetbrains/bin/versions.json
@@ -3,58 +3,58 @@
     "clion": {
       "update-channel": "CLion RELEASE",
       "url-template": "https://download.jetbrains.com/cpp/CLion-{version}.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "eae2e1646387ee36a2f24c10d924647fd3d00bb31dd42e9c17438ae7aecf79a8",
-      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.4.tar.gz",
-      "build_number": "233.14475.31"
+      "version": "2024.1",
+      "sha256": "a753369d74832d15fcf082587291921e8a90be04529c05b8e9d64a3afb24120c",
+      "url": "https://download.jetbrains.com/cpp/CLion-2024.1.tar.gz",
+      "build_number": "241.14494.288"
     },
     "datagrip": {
       "update-channel": "DataGrip RELEASE",
       "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "7b653e07c6d2008fbc85955041490b77551e277ef20f8518f6e6a8cbd326339c",
-      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.4.tar.gz",
-      "build_number": "233.14015.137"
+      "version": "2024.1.1",
+      "sha256": "05c1f910126b8499d26ab52d333307d3b6df6a3fa06b5e0b1a79ff15caf40e0a",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2024.1.1.tar.gz",
+      "build_number": "241.14494.283"
     },
     "dataspell": {
       "update-channel": "DataSpell RELEASE",
       "url-template": "https://download.jetbrains.com/python/dataspell-{version}.tar.gz",
-      "version": "2023.3.5",
-      "sha256": "ae964f1cc71072629baae84fb32e0d822c6cb9405fe4f724078b0decefe88e41",
-      "url": "https://download.jetbrains.com/python/dataspell-2023.3.5.tar.gz",
-      "build_number": "233.15026.16"
+      "version": "2024.1",
+      "sha256": "4f73d514dcbf5dce769e7ee4e0a81a1d8dc970f6553c246e3016963b9f077dca",
+      "url": "https://download.jetbrains.com/python/dataspell-2024.1.tar.gz",
+      "build_number": "241.14494.247"
     },
     "gateway": {
       "update-channel": "Gateway RELEASE",
       "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "a6235d4706d594c95c34fed6f32d5ded97eae6af5b8803c47ebd0ec6ccf77a06",
-      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3.4.tar.gz",
-      "build_number": "233.14475.30"
+      "version": "2024.1",
+      "sha256": "d777e88a3098790e19a93cb14fe4a21c740553958514e2b55fa2ba588f5c2c78",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2024.1.tar.gz",
+      "build_number": "241.14494.255"
     },
     "goland": {
       "update-channel": "GoLand RELEASE",
       "url-template": "https://download.jetbrains.com/go/goland-{version}.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "96fb4117d4aedd32ace976f48b6618fe30480b3fbfa81adfef963eb720a442e1",
-      "url": "https://download.jetbrains.com/go/goland-2023.3.6.tar.gz",
-      "build_number": "233.15026.17"
+      "version": "2024.1",
+      "sha256": "783539f254e4d62f4fae153a9e737f1d69db1e44676c4d1513775571a68950e4",
+      "url": "https://download.jetbrains.com/go/goland-2024.1.tar.gz",
+      "build_number": "241.14494.238"
     },
     "idea-community": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "5e376677d4b9810f4171700ce9d9d3ece58f245ce8d9f2011b05966df5dd7ddd",
-      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6.tar.gz",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "01d1b224c5e88592f954b17796a76fa8391cdcafef27264e703c7ffe47bb4065",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2024.1.tar.gz",
+      "build_number": "241.14494.240"
     },
     "idea-ultimate": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "2bf74ab0eeb8d8d998e7b59581b576786f72c6b70821eb50a2c96dcc0aa44954",
-      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6.tar.gz",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "b9083da939eacbcdf24b84cb9c45a1291bb33715f05fc7e10f2cff065d7c3fea",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2024.1.tar.gz",
+      "build_number": "241.14494.240"
     },
     "mps": {
       "update-channel": "MPS RELEASE",
@@ -67,117 +67,117 @@
     "phpstorm": {
       "update-channel": "PhpStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "abf03a945460a92cfed41cc1f5cbaab0eb80799cdfbadaac15594a8ddeec1b7e",
-      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6.tar.gz",
-      "build_number": "233.15026.12",
+      "version": "2024.1",
+      "sha256": "11c6862954f87b89d081cc0382e54b105d8b0c933dae78fd952cd2a3604889b2",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2024.1.tar.gz",
+      "build_number": "241.14494.237",
       "version-major-minor": "2022.3"
     },
     "pycharm-community": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.tar.gz",
-      "version": "2023.3.5",
-      "sha256": "d8ffc4a20b692d506b0e4c4439b77fabca7f3a0fdb7eaddeb6c9edd7cb3febaf",
-      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5.tar.gz",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "96048ea55ef45f1af0ebe12ad0e38e2763c9e5d654b9e174b33aaa12665d836b",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2024.1.tar.gz",
+      "build_number": "241.14494.241"
     },
     "pycharm-professional": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.tar.gz",
-      "version": "2023.3.5",
-      "sha256": "7e77390d7bba42843e950b1544da718913e6bae8543ce499c01484550df39004",
-      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5.tar.gz",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "2451d3ef7642151306354418c5237b326271e2653a09b869e5883a262a2916ad",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2024.1.tar.gz",
+      "build_number": "241.14494.241"
     },
     "rider": {
       "update-channel": "Rider RELEASE",
       "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "fb137ea346d957f151cb0d7755661293ae5e33e36f306b6dc90fb42895443309",
-      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.4.tar.gz",
-      "build_number": "233.14475.66"
+      "version": "2024.1",
+      "sha256": "194096b0b550e1e320fc72aaf0510faeebf8737d05f6e02eecd72efe6f7cd757",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2024.1.tar.gz",
+      "build_number": "241.14494.307"
     },
     "ruby-mine": {
       "update-channel": "RubyMine RELEASE",
       "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "d431626f1207d872e708e144056bebd001e25da198e785904b0cc08112daebe8",
-      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6.tar.gz",
-      "build_number": "233.15026.14"
+      "version": "2024.1",
+      "sha256": "4fd9dcf83a1d1f6b7513c18383938bd65b2479fdb39c0421e2237a1e340c3912",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2024.1.tar.gz",
+      "build_number": "241.14494.234"
     },
     "rust-rover": {
       "update-channel": "RustRover EAP",
       "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.tar.gz",
       "version": "2023.3 EAP",
-      "sha256": "489ea17a55e39ddb11e2ba5d98d69dd8353e228ff4ba618a969f0fd2ff55d730",
-      "url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74.tar.gz",
-      "build_number": "233.14475.74"
+      "sha256": "a7176fb06c18ce50f8f901ecde9fa75e968ddf27e3366e70bffd7ad1208fdde9",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.15026.24.tar.gz",
+      "build_number": "233.15026.24"
     },
     "webstorm": {
       "update-channel": "WebStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "deb38fe0f83a616cd07a2ec1243945ec15539c3d3a2e2f27294c5922737f0b5f",
-      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6.tar.gz",
-      "build_number": "233.15026.13"
+      "version": "2024.1",
+      "sha256": "d4c7cb7f1462c2b2bd9042b4714ab9de66c455ab9752c87698dc3902f0d49a2a",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2024.1.tar.gz",
+      "build_number": "241.14494.235"
     }
   },
   "aarch64-linux": {
     "clion": {
       "update-channel": "CLion RELEASE",
       "url-template": "https://download.jetbrains.com/cpp/CLion-{version}-aarch64.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "fa427be85ead8e2769aeadf19ce816cb7f02c3b08ec3b4cc7e0cddea44386dc8",
-      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.4-aarch64.tar.gz",
-      "build_number": "233.14475.31"
+      "version": "2024.1",
+      "sha256": "f937b263bd697595427e3e1d04513f9b6a786d56214ce34fe7a038efa2e949cf",
+      "url": "https://download.jetbrains.com/cpp/CLion-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.288"
     },
     "datagrip": {
       "update-channel": "DataGrip RELEASE",
       "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}-aarch64.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "aaa39f525d680dc8a8b874cd66bd071da86e85c5c903e6cc8fa3d9952fd7c209",
-      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.4-aarch64.tar.gz",
-      "build_number": "233.14015.137"
+      "version": "2024.1.1",
+      "sha256": "d269bfe10fb97572e785dce6e387d09f429396db002e12ecb9a44cced915c032",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2024.1.1-aarch64.tar.gz",
+      "build_number": "241.14494.283"
     },
     "dataspell": {
       "update-channel": "DataSpell RELEASE",
       "url-template": "https://download.jetbrains.com/python/dataspell-{version}-aarch64.tar.gz",
-      "version": "2023.3.5",
-      "sha256": "966b2a9f8b7fc69738388a44b8ebd59b1cd1a5cf8f76b516bfce830500723732",
-      "url": "https://download.jetbrains.com/python/dataspell-2023.3.5-aarch64.tar.gz",
-      "build_number": "233.15026.16"
+      "version": "2024.1",
+      "sha256": "f1adfe94bd6482a4f15db02611afc7487d59c47f8ee120e925feeb23c980cd9f",
+      "url": "https://download.jetbrains.com/python/dataspell-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.247"
     },
     "gateway": {
       "update-channel": "Gateway RELEASE",
       "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "e429fe93c87687555eeb618d0cc11bcbf6809a1cfaf3763a260543ea5b639235",
-      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3.4-aarch64.tar.gz",
-      "build_number": "233.14475.30"
+      "version": "2024.1",
+      "sha256": "3b6ffb21148d3327e9a5558c5657c22f7076c6208e8a10836f155d8f0200fb36",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.255"
     },
     "goland": {
       "update-channel": "GoLand RELEASE",
       "url-template": "https://download.jetbrains.com/go/goland-{version}-aarch64.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "b4d9159d61aafe431f83f42a7ab5d9e2748e3f3efa1ce915ff2bcf5674d02c80",
-      "url": "https://download.jetbrains.com/go/goland-2023.3.6-aarch64.tar.gz",
-      "build_number": "233.15026.17"
+      "version": "2024.1",
+      "sha256": "f3cae5c83ca99d3b0e0ef20282f2434879ef89a59ca2c770c31b855e45b8f6f3",
+      "url": "https://download.jetbrains.com/go/goland-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.238"
     },
     "idea-community": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "cfc98c4a09f6740ef47a3dbc8f2e71a66a8aab2eae3fb1b901c2db5dcce5f060",
-      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6-aarch64.tar.gz",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "a13e7a53b5c8a512fbcb72957f24e5515618a5533f17d72914da5445b736dac1",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.240"
     },
     "idea-ultimate": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "4427884e3c9f63bad3c8b71c73f268dfc0df5963f87de915b632d14a415a6b9c",
-      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6-aarch64.tar.gz",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "e73756a96a2e958441facb2b9be7ba30b463a63235f37a757866800162f293bd",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.240"
     },
     "mps": {
       "update-channel": "MPS RELEASE",
@@ -190,117 +190,117 @@
     "phpstorm": {
       "update-channel": "PhpStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "697ffef0d76788fa35d4911a7d96f76261feec42df3a537773d29c4714b32635",
-      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6-aarch64.tar.gz",
-      "build_number": "233.15026.12",
+      "version": "2024.1",
+      "sha256": "0c5debd888359b37c9c95176c09a16e94f2412fb88f98b928e64ed2466f88ec1",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.237",
       "version-major-minor": "2022.3"
     },
     "pycharm-community": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.tar.gz",
-      "version": "2023.3.5",
-      "sha256": "99522aa803eb6fc1570f99286e5d710d5000378e0c116d9a62caea5c7a5ff95e",
-      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5-aarch64.tar.gz",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "de8259a4cea264a2263bf771d74949ca25a2b9a8ffc5bbbc7c42d2faace6bd09",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.241"
     },
     "pycharm-professional": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.tar.gz",
-      "version": "2023.3.5",
-      "sha256": "4a5aef97f10d19b3b4f9e34f244a84592bde730171e0596abcfde1baffb65be4",
-      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5-aarch64.tar.gz",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "a1f43b2392b7fc6b0c062524593c19fb0721b4ec1a1a59a06e39a61da2dce258",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.241"
     },
     "rider": {
       "update-channel": "Rider RELEASE",
       "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}-aarch64.tar.gz",
-      "version": "2023.3.4",
-      "sha256": "99c80997bd0d2b8b918ef81fbbe7b422e165665c8fa3d108b1387ca0188c9558",
-      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.4-aarch64.tar.gz",
-      "build_number": "233.14475.66"
+      "version": "2024.1",
+      "sha256": "e196c8e70d7eb6f56a08df809f5de430bf5e61509abb13de8b301c036c4f446e",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.307"
     },
     "ruby-mine": {
       "update-channel": "RubyMine RELEASE",
       "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}-aarch64.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "038023de9fe12771043998cada293db8d1f869374cc48d276ac19c440cb25233",
-      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6-aarch64.tar.gz",
-      "build_number": "233.15026.14"
+      "version": "2024.1",
+      "sha256": "690f90bd8a974585414e499aa2cb46d68dbc8145906e98d7f3b4ad1f3bf49040",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.234"
     },
     "rust-rover": {
       "update-channel": "RustRover EAP",
       "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.tar.gz",
       "version": "2023.3 EAP",
-      "sha256": "e58fc90e714dd98483f10ed48588e2ce95bad049f4967193a8b0c294259ae2ab",
-      "url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74-aarch64.tar.gz",
-      "build_number": "233.14475.74"
+      "sha256": "4e03720aae12b32f91d4ddf4e01cfb454311b8a0b901dcee733d62579aa4cc0c",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.15026.24-aarch64.tar.gz",
+      "build_number": "233.15026.24"
     },
     "webstorm": {
       "update-channel": "WebStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.tar.gz",
-      "version": "2023.3.6",
-      "sha256": "826ff930268394c1ffc649586c115f35a1630246ea23b3df4ba446a10b791cec",
-      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6-aarch64.tar.gz",
-      "build_number": "233.15026.13"
+      "version": "2024.1",
+      "sha256": "6691e4855fd4ecf3da9b63b78a11afc3441fb2139cdc7e7aaa5d78aa92a88c12",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2024.1-aarch64.tar.gz",
+      "build_number": "241.14494.235"
     }
   },
   "x86_64-darwin": {
     "clion": {
       "update-channel": "CLion RELEASE",
       "url-template": "https://download.jetbrains.com/cpp/CLion-{version}.dmg",
-      "version": "2023.3.4",
-      "sha256": "2eb149d2bbf1c778f3386bc9cf7b11741b4372e69c680def31260b9aa213159e",
-      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.4.dmg",
-      "build_number": "233.14475.31"
+      "version": "2024.1",
+      "sha256": "373c78ff045a17fdcae44cc9b76b41862d4bee9c8476813e518c7cc1de88b6a1",
+      "url": "https://download.jetbrains.com/cpp/CLion-2024.1.dmg",
+      "build_number": "241.14494.288"
     },
     "datagrip": {
       "update-channel": "DataGrip RELEASE",
       "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}.dmg",
-      "version": "2023.3.4",
-      "sha256": "730a1f17882432ad01b936a6d621c4c3acbfce0bd693b3ca4ee488182ab04d99",
-      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.4.dmg",
-      "build_number": "233.14015.137"
+      "version": "2024.1.1",
+      "sha256": "232582204a6f810bcbd2387ba2cef824f0f81c3a7e022f7f2bebf643d32f866d",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2024.1.1.dmg",
+      "build_number": "241.14494.283"
     },
     "dataspell": {
       "update-channel": "DataSpell RELEASE",
       "url-template": "https://download.jetbrains.com/python/dataspell-{version}.dmg",
-      "version": "2023.3.5",
-      "sha256": "596ffeebc9620f5fe94ed104f601157810cc36fa20887a5a12fecb385402c304",
-      "url": "https://download.jetbrains.com/python/dataspell-2023.3.5.dmg",
-      "build_number": "233.15026.16"
+      "version": "2024.1",
+      "sha256": "a48036f55ef8301d6f77f726c68d7415c0056ddb4143ca3eed2698306f2c021f",
+      "url": "https://download.jetbrains.com/python/dataspell-2024.1.dmg",
+      "build_number": "241.14494.247"
     },
     "gateway": {
       "update-channel": "Gateway RELEASE",
       "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.dmg",
-      "version": "2023.3.4",
-      "sha256": "5cf8720e0259c2bfd2474a5fd1db329cb48c10a8823ba0c29b0f3bde3ddbdf8a",
-      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3.4.dmg",
-      "build_number": "233.14475.30"
+      "version": "2024.1",
+      "sha256": "fb37fe7ba94f151f9613134b232b79f44524c126152f70eeb31421cee89b514d",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2024.1.dmg",
+      "build_number": "241.14494.255"
     },
     "goland": {
       "update-channel": "GoLand RELEASE",
       "url-template": "https://download.jetbrains.com/go/goland-{version}.dmg",
-      "version": "2023.3.6",
-      "sha256": "f83484fc068791733d1411a1ec74a6cbaf5b2ecb4ca2cce462eff6b16b7718a4",
-      "url": "https://download.jetbrains.com/go/goland-2023.3.6.dmg",
-      "build_number": "233.15026.17"
+      "version": "2024.1",
+      "sha256": "4684665fa5d33e3b97a445ffdb29238b995408537be0f706ce05ef1505ffb632",
+      "url": "https://download.jetbrains.com/go/goland-2024.1.dmg",
+      "build_number": "241.14494.238"
     },
     "idea-community": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.dmg",
-      "version": "2023.3.6",
-      "sha256": "c26c884842e8a315430dcf1351255aac4385ab1abd16ccb8a8b1c407a1851355",
-      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6.dmg",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "a0ed1fbb4f7c69a046869b3e1cd61faee193518374ac5d4dde4256f846c3b4e2",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2024.1.dmg",
+      "build_number": "241.14494.240"
     },
     "idea-ultimate": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.dmg",
-      "version": "2023.3.6",
-      "sha256": "d54bf2088981678bf4026da4927d39ad686ee25e20dcf374785306076ec98f74",
-      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6.dmg",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "aaecd61f3258d555cb5b2993d04a56955f6dd4cb7a393b58928e4548817750e1",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2024.1.dmg",
+      "build_number": "241.14494.240"
     },
     "mps": {
       "update-channel": "MPS RELEASE",
@@ -313,117 +313,117 @@
     "phpstorm": {
       "update-channel": "PhpStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.dmg",
-      "version": "2023.3.6",
-      "sha256": "1972219f45224fd3769fd78ba313ef6379c75d8b4980e049b438a2b2ebb5a977",
-      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6.dmg",
-      "build_number": "233.15026.12",
+      "version": "2024.1",
+      "sha256": "75699ce909f07de35a6e89745c652f08afba5096b7930fdc51683989967fcc62",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2024.1.dmg",
+      "build_number": "241.14494.237",
       "version-major-minor": "2022.3"
     },
     "pycharm-community": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.dmg",
-      "version": "2023.3.5",
-      "sha256": "413b5d5975aef0cc4e8aef3a93719b2c2c3150082944841538c284f525d015e3",
-      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5.dmg",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "86162e01cba91d7fac7f06442ba4f2b969191cef3bba7c11fced30ac4aa87b34",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2024.1.dmg",
+      "build_number": "241.14494.241"
     },
     "pycharm-professional": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.dmg",
-      "version": "2023.3.5",
-      "sha256": "315081d461086495ab07483c5ac3858f6354b1f7bc684114c0d3c511e7ab6932",
-      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5.dmg",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "32882869eb3dbe44ed74ff5c916222cf7f60af23775c58430e2967b0cbe90846",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2024.1.dmg",
+      "build_number": "241.14494.241"
     },
     "rider": {
       "update-channel": "Rider RELEASE",
       "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}.dmg",
-      "version": "2023.3.4",
-      "sha256": "00435dc8d9dd43bbd73a55be7d5b304be8ee124032a7485750aef86cddc53ba2",
-      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.4.dmg",
-      "build_number": "233.14475.66"
+      "version": "2024.1",
+      "sha256": "12155c779c7f11dd71b3573af266c0221960eaea8a442fda4faaec8ca6eefa95",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2024.1.dmg",
+      "build_number": "241.14494.307"
     },
     "ruby-mine": {
       "update-channel": "RubyMine RELEASE",
       "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}.dmg",
-      "version": "2023.3.6",
-      "sha256": "50b9988942ead060eaf01b54aa8aebedf132df3a92b98018f1b78e922bff08f8",
-      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6.dmg",
-      "build_number": "233.15026.14"
+      "version": "2024.1",
+      "sha256": "47ff2d04362beb2acb3421780f9c5f3dd5ef02aa2cdd9cef2c64a10c6ce2c062",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2024.1.dmg",
+      "build_number": "241.14494.234"
     },
     "rust-rover": {
       "update-channel": "RustRover EAP",
       "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.dmg",
       "version": "2023.3 EAP",
-      "sha256": "7d32ac16748977a70830eafeae983138d2f18724ed8255aa6967ce7a329206ec",
-      "url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74.dmg",
-      "build_number": "233.14475.74"
+      "sha256": "b59ff55e4ba22df41acc9870f88b7f957f31af179e482ccaa4320b1f1ffff346",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.15026.24.dmg",
+      "build_number": "233.15026.24"
     },
     "webstorm": {
       "update-channel": "WebStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.dmg",
-      "version": "2023.3.6",
-      "sha256": "03220e45e5308664d2c413eb1b928daf6f5b3600305526d0dd230b084bdfbb9c",
-      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6.dmg",
-      "build_number": "233.15026.13"
+      "version": "2024.1",
+      "sha256": "b3b41e5e8559e36e0bd4121dee61d39a8ba5b5ce8193e7b026c5bc261e973df5",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2024.1.dmg",
+      "build_number": "241.14494.235"
     }
   },
   "aarch64-darwin": {
     "clion": {
       "update-channel": "CLion RELEASE",
       "url-template": "https://download.jetbrains.com/cpp/CLion-{version}-aarch64.dmg",
-      "version": "2023.3.4",
-      "sha256": "340d239008c38743a10e51ae609ec3bf3dd732cf2042ef997532c6b8ed272b1a",
-      "url": "https://download.jetbrains.com/cpp/CLion-2023.3.4-aarch64.dmg",
-      "build_number": "233.14475.31"
+      "version": "2024.1",
+      "sha256": "b1044fdbf9e3f93aaf8ca8ad2b7bc2eae165f86bc5cae6910f2ad0ee92c198a5",
+      "url": "https://download.jetbrains.com/cpp/CLion-2024.1-aarch64.dmg",
+      "build_number": "241.14494.288"
     },
     "datagrip": {
       "update-channel": "DataGrip RELEASE",
       "url-template": "https://download.jetbrains.com/datagrip/datagrip-{version}-aarch64.dmg",
-      "version": "2023.3.4",
-      "sha256": "2dc136c60d6c4c2cc13dc2d426c564dd34e56625dfbfb84d1900b175ea5d6273",
-      "url": "https://download.jetbrains.com/datagrip/datagrip-2023.3.4-aarch64.dmg",
-      "build_number": "233.14015.137"
+      "version": "2024.1.1",
+      "sha256": "c2545df9784fa1f8f9234dd93d1c513ed691c797f26471cb545188ce7f495864",
+      "url": "https://download.jetbrains.com/datagrip/datagrip-2024.1.1-aarch64.dmg",
+      "build_number": "241.14494.283"
     },
     "dataspell": {
       "update-channel": "DataSpell RELEASE",
       "url-template": "https://download.jetbrains.com/python/dataspell-{version}-aarch64.dmg",
-      "version": "2023.3.5",
-      "sha256": "b7a73513f9d463025ccd48c0c04a1621f1cda6f21eea4f9aa96a36d03032d957",
-      "url": "https://download.jetbrains.com/python/dataspell-2023.3.5-aarch64.dmg",
-      "build_number": "233.15026.16"
+      "version": "2024.1",
+      "sha256": "4a8abf8cf816f98502cf58cd3de07c28d496d4fe20d338cee0ac714196b8a612",
+      "url": "https://download.jetbrains.com/python/dataspell-2024.1-aarch64.dmg",
+      "build_number": "241.14494.247"
     },
     "gateway": {
       "update-channel": "Gateway RELEASE",
       "url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.dmg",
-      "version": "2023.3.4",
-      "sha256": "2e769fd9c28b33d34845d1b92cb12a13578f2d4c2f255c88a42fcb79a7cf848f",
-      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2023.3.4-aarch64.dmg",
-      "build_number": "233.14475.30"
+      "version": "2024.1",
+      "sha256": "c82392faec283b2a6ab25dd0cbd8c3733ea046799d9d95ba4b5d6086767f7715",
+      "url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2024.1-aarch64.dmg",
+      "build_number": "241.14494.255"
     },
     "goland": {
       "update-channel": "GoLand RELEASE",
       "url-template": "https://download.jetbrains.com/go/goland-{version}-aarch64.dmg",
-      "version": "2023.3.6",
-      "sha256": "dbf0131ac203ad5bf69a3fb50ded3a5088d207ba6b994d6c5b26b462708f980e",
-      "url": "https://download.jetbrains.com/go/goland-2023.3.6-aarch64.dmg",
-      "build_number": "233.15026.17"
+      "version": "2024.1",
+      "sha256": "92b8567751ceb8aaa95535cbe76d495035be9602fa84cccb18e6e25bbd2bcff5",
+      "url": "https://download.jetbrains.com/go/goland-2024.1-aarch64.dmg",
+      "build_number": "241.14494.238"
     },
     "idea-community": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.dmg",
-      "version": "2023.3.6",
-      "sha256": "501dc51bc9ac39722f3885bc6116cc426d17cd1ab9afc97e4f3f295049e2e0b3",
-      "url": "https://download.jetbrains.com/idea/ideaIC-2023.3.6-aarch64.dmg",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "e49f9a3dc01bd28aa4065642352f358d8b17680ff7207145c918d1f52b046447",
+      "url": "https://download.jetbrains.com/idea/ideaIC-2024.1-aarch64.dmg",
+      "build_number": "241.14494.240"
     },
     "idea-ultimate": {
       "update-channel": "IntelliJ IDEA RELEASE",
       "url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.dmg",
-      "version": "2023.3.6",
-      "sha256": "e3a606e04c86d7cfeacde69d00b974a8ad6b175a30d3ea6039afd226a740db25",
-      "url": "https://download.jetbrains.com/idea/ideaIU-2023.3.6-aarch64.dmg",
-      "build_number": "233.15026.9"
+      "version": "2024.1",
+      "sha256": "fd09f791834713e02c7cd28e4bf35b89e6f55e09970db3a720a4c59044874973",
+      "url": "https://download.jetbrains.com/idea/ideaIU-2024.1-aarch64.dmg",
+      "build_number": "241.14494.240"
     },
     "mps": {
       "update-channel": "MPS RELEASE",
@@ -436,59 +436,59 @@
     "phpstorm": {
       "update-channel": "PhpStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.dmg",
-      "version": "2023.3.6",
-      "sha256": "892404f4e835b3248094ebf64a7de2c1311b3446e0334ddf90033dc0f226d54b",
-      "url": "https://download.jetbrains.com/webide/PhpStorm-2023.3.6-aarch64.dmg",
-      "build_number": "233.15026.12",
+      "version": "2024.1",
+      "sha256": "02bcb551de99cf070e90b2131b41f0b3e93aa776615bcfba1508e4c4d1bb9378",
+      "url": "https://download.jetbrains.com/webide/PhpStorm-2024.1-aarch64.dmg",
+      "build_number": "241.14494.237",
       "version-major-minor": "2022.3"
     },
     "pycharm-community": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.dmg",
-      "version": "2023.3.5",
-      "sha256": "a70dfac39bcd9a049094e1f168d35bb24d37a2b44135178996c50e460ab996fe",
-      "url": "https://download.jetbrains.com/python/pycharm-community-2023.3.5-aarch64.dmg",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "0cd62c5640d455e576a502fb23d5e6f3b71a2507e838bdec1a1be6a3fd6804e8",
+      "url": "https://download.jetbrains.com/python/pycharm-community-2024.1-aarch64.dmg",
+      "build_number": "241.14494.241"
     },
     "pycharm-professional": {
       "update-channel": "PyCharm RELEASE",
       "url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.dmg",
-      "version": "2023.3.5",
-      "sha256": "6fe15528a5b0badead7f807384ffd138d648fe76f5c684c905a584e204a51138",
-      "url": "https://download.jetbrains.com/python/pycharm-professional-2023.3.5-aarch64.dmg",
-      "build_number": "233.15026.15"
+      "version": "2024.1",
+      "sha256": "9c1d71668eb5de90f1f498477630a5d474a10ec90ee6ca61a8039f42505f5ca7",
+      "url": "https://download.jetbrains.com/python/pycharm-professional-2024.1-aarch64.dmg",
+      "build_number": "241.14494.241"
     },
     "rider": {
       "update-channel": "Rider RELEASE",
       "url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}-aarch64.dmg",
-      "version": "2023.3.4",
-      "sha256": "8ffd13dcc2207d4a781dc92e89643767e0dd6ef53024c92669f4daaf9cf929c0",
-      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2023.3.4-aarch64.dmg",
-      "build_number": "233.14475.66"
+      "version": "2024.1",
+      "sha256": "c2e0dadc6c7f924e849e87d1c04aeaa02d6a14d5868294dd36481a70cbd508cb",
+      "url": "https://download.jetbrains.com/rider/JetBrains.Rider-2024.1-aarch64.dmg",
+      "build_number": "241.14494.307"
     },
     "ruby-mine": {
       "update-channel": "RubyMine RELEASE",
       "url-template": "https://download.jetbrains.com/ruby/RubyMine-{version}-aarch64.dmg",
-      "version": "2023.3.6",
-      "sha256": "3baa33194fe9f826c88f868d76ff0eea3b2fbb7d73a65a910e83daa18ccff78e",
-      "url": "https://download.jetbrains.com/ruby/RubyMine-2023.3.6-aarch64.dmg",
-      "build_number": "233.15026.14"
+      "version": "2024.1",
+      "sha256": "7e085580ebc8aadb9342e7362e3078b988e38fe8b5bfe8c4825a1744ad53c33f",
+      "url": "https://download.jetbrains.com/ruby/RubyMine-2024.1-aarch64.dmg",
+      "build_number": "241.14494.234"
     },
     "rust-rover": {
       "update-channel": "RustRover EAP",
       "url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.dmg",
       "version": "2023.3 EAP",
-      "sha256": "f1a11b0d241671b5afe811a76a7e43777d04a4819a3e83432508d53f319deb8f",
-      "url": "https://download.jetbrains.com/rustrover/RustRover-233.14475.74-aarch64.dmg",
-      "build_number": "233.14475.74"
+      "sha256": "03e7c1e3c029cd72ddc9422cc1dc54ed581356b278127dc8d2b2f9e53d357054",
+      "url": "https://download.jetbrains.com/rustrover/RustRover-233.15026.24-aarch64.dmg",
+      "build_number": "233.15026.24"
     },
     "webstorm": {
       "update-channel": "WebStorm RELEASE",
       "url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.dmg",
-      "version": "2023.3.6",
-      "sha256": "ea8262e07318b894f0019003b2df1038d647db0335904d8996827ddaf633c39a",
-      "url": "https://download.jetbrains.com/webstorm/WebStorm-2023.3.6-aarch64.dmg",
-      "build_number": "233.15026.13"
+      "version": "2024.1",
+      "sha256": "95dd3a397fe063583c5e3ba4fefafdfcad740c18447c1a70c0f03cb004436496",
+      "url": "https://download.jetbrains.com/webstorm/WebStorm-2024.1-aarch64.dmg",
+      "build_number": "241.14494.235"
     }
   }
 }
diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix
index c77f06d65c290..fa055bd830501 100644
--- a/pkgs/applications/editors/jetbrains/default.nix
+++ b/pkgs/applications/editors/jetbrains/default.nix
@@ -141,7 +141,10 @@ rec {
     extraBuildInputs = [ libgcc libr stdenv.cc.cc ];
   };
 
-  gateway = mkJetBrainsProduct { pname = "gateway"; };
+  gateway = mkJetBrainsProduct {
+    pname = "gateway";
+    extraBuildInputs = [ libgcc ];
+  };
 
   goland = (mkJetBrainsProduct {
     pname = "goland";
diff --git a/pkgs/applications/editors/jetbrains/plugins/plugins.json b/pkgs/applications/editors/jetbrains/plugins/plugins.json
index 1876001edcc49..02b902bfbcce9 100644
--- a/pkgs/applications/editors/jetbrains/plugins/plugins.json
+++ b/pkgs/applications/editors/jetbrains/plugins/plugins.json
@@ -17,17 +17,17 @@
         "webstorm"
       ],
       "builds": {
-        "233.13135.979": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip"
+        "233.13135.979": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "233.15026.24": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip"
       },
       "name": "ideavim"
     },
@@ -36,19 +36,38 @@
         "idea-ultimate"
       ],
       "builds": {
-        "233.15026.9": "https://plugins.jetbrains.com/files/631/509008/python-233.15026.9.zip"
+        "241.14494.240": "https://plugins.jetbrains.com/files/631/513581/python-241.14494.240.zip"
       },
       "name": "python"
     },
     "6954": {
       "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
         "idea-community",
         "idea-ultimate",
-        "mps"
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
       ],
       "builds": {
         "233.13135.979": null,
-        "233.15026.9": null
+        "233.15026.24": null,
+        "241.14494.234": null,
+        "241.14494.235": null,
+        "241.14494.237": null,
+        "241.14494.238": null,
+        "241.14494.240": null,
+        "241.14494.241": null,
+        "241.14494.283": null,
+        "241.14494.288": null,
+        "241.14494.307": null
       },
       "name": "kotlin"
     },
@@ -70,16 +89,16 @@
       ],
       "builds": {
         "233.13135.979": null,
-        "233.14015.137": null,
-        "233.14475.31": null,
-        "233.14475.66": null,
-        "233.14475.74": null,
-        "233.15026.12": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip"
       },
       "name": "ini"
     },
@@ -89,8 +108,8 @@
         "phpstorm"
       ],
       "builds": {
-        "233.15026.12": "https://plugins.jetbrains.com/files/7219/509039/Symfony_Plugin-2023.1.266.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/7219/509039/Symfony_Plugin-2023.1.266.zip"
+        "241.14494.237": "https://plugins.jetbrains.com/files/7219/518876/Symfony_Plugin-2023.1.268.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/7219/518876/Symfony_Plugin-2023.1.268.zip"
       },
       "name": "symfony-support"
     },
@@ -100,8 +119,8 @@
         "phpstorm"
       ],
       "builds": {
-        "233.15026.12": "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip"
+        "241.14494.237": "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip"
       },
       "name": "php-annotations"
     },
@@ -114,11 +133,11 @@
         "rust-rover"
       ],
       "builds": {
-        "233.14015.137": "https://plugins.jetbrains.com/files/7322/474341/python-ce-233.14015.106.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/7322/484110/python-ce-233.14475.9.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/7322/484110/python-ce-233.14475.9.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/7322/513587/python-ce-241.14494.240.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/7322/513587/python-ce-241.14494.240.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/7322/513587/python-ce-241.14494.240.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/7322/513587/python-ce-241.14494.240.zip"
       },
       "name": "python-community-edition"
     },
@@ -139,15 +158,15 @@
       ],
       "builds": {
         "233.13135.979": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip"
+        "241.14494.234": null,
+        "241.14494.235": null,
+        "241.14494.237": null,
+        "241.14494.238": null,
+        "241.14494.240": null,
+        "241.14494.241": null,
+        "241.14494.283": null,
+        "241.14494.288": null,
+        "241.14494.307": null
       },
       "name": "-deprecated-rust"
     },
@@ -168,15 +187,15 @@
       ],
       "builds": {
         "233.13135.979": null,
-        "233.14015.137": null,
-        "233.14475.31": null,
-        "233.14475.66": null,
-        "233.15026.12": null,
-        "233.15026.13": null,
-        "233.15026.14": null,
-        "233.15026.15": null,
-        "233.15026.17": null,
-        "233.15026.9": null
+        "241.14494.234": null,
+        "241.14494.235": null,
+        "241.14494.237": null,
+        "241.14494.238": null,
+        "241.14494.240": null,
+        "241.14494.241": null,
+        "241.14494.283": null,
+        "241.14494.288": null,
+        "241.14494.307": null
       },
       "name": "-deprecated-rust-beta"
     },
@@ -190,10 +209,10 @@
         "ruby-mine"
       ],
       "builds": {
-        "233.15026.14": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip"
+        "241.14494.234": "https://plugins.jetbrains.com/files/8554/508289/featuresTrainer-241.14494.150.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/8554/508289/featuresTrainer-241.14494.150.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/8554/508289/featuresTrainer-241.14494.150.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/8554/508289/featuresTrainer-241.14494.150.zip"
       },
       "name": "ide-features-trainer"
     },
@@ -214,17 +233,17 @@
         "webstorm"
       ],
       "builds": {
-        "233.13135.979": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip"
+        "233.13135.979": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "233.15026.24": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip"
       },
       "name": "nixidea"
     },
@@ -234,8 +253,8 @@
         "idea-ultimate"
       ],
       "builds": {
-        "233.15026.17": "https://plugins.jetbrains.com/files/9568/508998/go-plugin-233.15026.9.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/9568/508998/go-plugin-233.15026.9.zip"
+        "241.14494.238": "https://plugins.jetbrains.com/files/9568/513582/go-plugin-241.14494.240.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/9568/513582/go-plugin-241.14494.240.zip"
       },
       "name": "go"
     },
@@ -257,16 +276,16 @@
       ],
       "builds": {
         "233.13135.979": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip"
       },
       "name": "csv-editor"
     },
@@ -288,16 +307,16 @@
       ],
       "builds": {
         "233.13135.979": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip"
       },
       "name": "vscode-keymap"
     },
@@ -319,16 +338,16 @@
       ],
       "builds": {
         "233.13135.979": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip"
       },
       "name": "eclipse-keymap"
     },
@@ -350,16 +369,16 @@
       ],
       "builds": {
         "233.13135.979": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip"
       },
       "name": "visual-studio-keymap"
     },
@@ -381,16 +400,16 @@
       ],
       "builds": {
         "233.13135.979": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.14015.137": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.14475.31": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.14475.66": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.14475.74": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.15026.12": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.15026.13": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.15026.14": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.15026.15": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.15026.17": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
-        "233.15026.9": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar"
+        "233.15026.24": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.234": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.235": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.237": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.238": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.240": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.241": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.283": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.288": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar",
+        "241.14494.307": "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar"
       },
       "name": "darcula-pitch-black"
     },
@@ -411,17 +430,17 @@
         "webstorm"
       ],
       "builds": {
-        "233.13135.979": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip"
+        "233.13135.979": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "233.15026.24": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip"
       },
       "name": "github-copilot"
     },
@@ -443,16 +462,16 @@
       ],
       "builds": {
         "233.13135.979": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.14015.137": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.14475.31": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.14475.66": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.15026.12": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.15026.13": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.15026.14": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.15026.15": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.15026.17": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.234": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.235": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.237": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.238": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.241": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.283": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip",
+        "241.14494.307": "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip"
       },
       "name": "netbeans-6-5-keymap"
     },
@@ -463,33 +482,38 @@
         "rust-rover"
       ],
       "builds": {
-        "233.14475.31": "https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip",
-        "233.14475.74": "https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip",
-        "233.15026.9": "https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip"
+        "233.15026.24": "https://plugins.jetbrains.com/files/22407/515371/intellij-rust-233.25026.24.zip",
+        "241.14494.240": "https://plugins.jetbrains.com/files/22407/515370/intellij-rust-241.25026.24.zip",
+        "241.14494.288": "https://plugins.jetbrains.com/files/22407/515370/intellij-rust-241.25026.24.zip"
       },
       "name": "rust"
     }
   },
   "files": {
+    "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip": "sha256-P8AFMVp/rFi7zTh9f/i45q/QalvI37itnK57Dz/W/z4=",
     "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip": "sha256-C3l3Z9a7maCrMjc2Fk/wf3AoExRbvN+fn2mAtXigt0A=",
     "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip": "sha256-9keDJ73bSHkzAEq8nT96I5sp05BgMZ08/4BzarOjO5g=",
+    "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip": "sha256-LeQ5vi9PCJYmWNmT/sutWjSlwZaAYYuEljVJBYG2VpY=",
     "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip": "sha256-IsmoWuUroAp1LLuphp4F1dun4tQOOitZxoG+Nxs5pYk=",
+    "https://plugins.jetbrains.com/files/12559/508216/keymap-eclipse-241.14494.150.zip": "sha256-/hEx0gIFvUXD799tRmMHAt9Z5ziFgaQs1RX0zQwTJIA=",
     "https://plugins.jetbrains.com/files/13017/445774/keymap-visualStudio-233.11799.165.zip": "sha256-Nb2tSxL+mAY1qJ3waipgV8ep+0R/BaYnzz7zfwtLHmk=",
+    "https://plugins.jetbrains.com/files/13017/508253/keymap-visualStudio-241.14494.150.zip": "sha256-tNgt0vIkdCB/LcaSj58mT6cNlw4lytRo0cZSt7sIERU=",
     "https://plugins.jetbrains.com/files/14059/82616/darcula-pitch-black.jar": "sha256-eXInfAqY3yEZRXCAuv3KGldM1pNKEioNwPB0rIGgJFw=",
-    "https://plugins.jetbrains.com/files/164/507552/IdeaVim-2.10.1-signed.zip": "sha256-mztZWmQhGIuebUzj+FUOgYMMYMNRaiOi5TooNMInSdA=",
-    "https://plugins.jetbrains.com/files/17718/512366/github-copilot-intellij-1.5.1.5285.zip": "sha256-lep8ZUOjbV0tsfO/yEWJiHWtwm639zxpc/7L9rCKSsU=",
+    "https://plugins.jetbrains.com/files/164/515255/IdeaVim-2.10.2-signed.zip": "sha256-FP6th8J3ymfTrwvJ3Ms7fsNPh3f9ab5ZVg5yPpKV/rY=",
+    "https://plugins.jetbrains.com/files/17718/517133/github-copilot-intellij-1.5.2.5345.zip": "sha256-BaBYXN8eulaJtJSKrz9bZ2Yn8029goSAUvjYU+BaiIU=",
     "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip": "sha256-KrzZTKZMQqoEMw+vDUv2jjs0EX0leaPBkU8H/ecq/oI=",
-    "https://plugins.jetbrains.com/files/22407/507547/intellij-rust-233.24475.74.zip": "sha256-Ftyamb+ToQNrBxWrxC68e4nyCrX9cQ8ozcauJkmenmE=",
-    "https://plugins.jetbrains.com/files/631/509008/python-233.15026.9.zip": "sha256-Lb0TzM7vr8IZmahGMzdS9GXaxzrCKwG3NFspInRlOG0=",
+    "https://plugins.jetbrains.com/files/22407/515370/intellij-rust-241.25026.24.zip": "sha256-tBPoO2EkPaWFZ/Gu3UAkZPy4opssWJQEVlz9GZUkNtQ=",
+    "https://plugins.jetbrains.com/files/22407/515371/intellij-rust-233.25026.24.zip": "sha256-j4b4To8jY4orP87GpphHPtLKeAPDNXcLNSUlIXDDy2Q=",
+    "https://plugins.jetbrains.com/files/631/513581/python-241.14494.240.zip": "sha256-pQP1LF/6uImQpBOpxUGE8KmmFh26kiC4YaYLAHnEc3o=",
     "https://plugins.jetbrains.com/files/6981/509027/ini-233.15026.15.zip": "sha256-6sTD+OFO/yA7m5o0XqoJKLcQ4zAFro7Iy7WNPfA49xM=",
-    "https://plugins.jetbrains.com/files/7219/509039/Symfony_Plugin-2023.1.266.zip": "sha256-p0ixoyTuZ2N5LCkraLpG2JDRQsKc1JcJaj6CElkZvOY=",
+    "https://plugins.jetbrains.com/files/6981/513562/ini-241.14494.240.zip": "sha256-QC42nC7mEE3X1cmKj8jkwzpDJzX7ZoOPEd9y6i8IuvM=",
+    "https://plugins.jetbrains.com/files/7219/518876/Symfony_Plugin-2023.1.268.zip": "sha256-mYEuFdSaxw9Lc8yNgPB0ty6mfxjKaAa/jY6v4E2Qo0Q=",
     "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip": "sha256-JIZ6Iq3sOcAm8fBXnjRrG9dqCZuD/WajyVmn1JjYMBA=",
-    "https://plugins.jetbrains.com/files/7322/474341/python-ce-233.14015.106.zip": "sha256-yd70cSA/Icn5YlH4Q79cIWGFJ6huYUBDKk6vCIYa3DU=",
-    "https://plugins.jetbrains.com/files/7322/484110/python-ce-233.14475.9.zip": "sha256-YMB/ewCKE1F/JXI8iau9pKkv9D5D9a8OiTVukkzTocA=",
     "https://plugins.jetbrains.com/files/7322/502153/python-ce-233.14808.12.zip": "sha256-PUBR9krJ26QrL2jTus0b+uhzkEkT+lGnBKy1f4i/U+w=",
+    "https://plugins.jetbrains.com/files/7322/513587/python-ce-241.14494.240.zip": "sha256-6YC/aoiTRLAh87C2v3k24BLBH/tsdTWuDK/CBv8y1QI=",
     "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip": "sha256-+Lc/avYBLpyIV63DlbhAJtieHDv4HdggqdGFDw9iqN0=",
-    "https://plugins.jetbrains.com/files/8554/469535/featuresTrainer-233.14015.29.zip": "sha256-Hj/CsaQb1U3FN1x2+00Rq2NjC6AWrfuTJL1NiEssfJ4=",
-    "https://plugins.jetbrains.com/files/8607/422943/NixIDEA-0.4.0.11.zip": "sha256-Dwitpu5yLPWx+IUilpN5iqnN8FkKgaxUNjroBEx5lkM=",
-    "https://plugins.jetbrains.com/files/9568/508998/go-plugin-233.15026.9.zip": "sha256-K/qqFSrUIf0n4Wh2JGNRuT7SuGlPlQD/pjUI/EVTtxQ="
+    "https://plugins.jetbrains.com/files/8554/508289/featuresTrainer-241.14494.150.zip": "sha256-D2gF9bLAEFd1+6vZskiM2Eyl5e8hmyh/VHrmW2NociE=",
+    "https://plugins.jetbrains.com/files/8607/519418/NixIDEA-0.4.0.12.zip": "sha256-D2HFG2tQy719+baHjUyizoq67tv6lDZrX3s6HDlBRA0=",
+    "https://plugins.jetbrains.com/files/9568/513582/go-plugin-241.14494.240.zip": "sha256-66Gx4XFn5DEZ/wCkN7IFQKtp+P0R9PoEAXmwOB97Q3A="
   }
 }
diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix b/pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix
index 069e70b4253f2..943a7e49e9cdc 100644
--- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix
+++ b/pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix
@@ -3,7 +3,7 @@
 , cling
 , fetchurl
 , lib
-, llvmPackages_9
+, llvmPackages_13
 , makeWrapper
 , runCommand
 , stdenv
diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix b/pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix
index 326d5a32e4b8b..48873326bfcfb 100644
--- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix
+++ b/pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix
@@ -5,7 +5,7 @@
 , fetchFromGitHub
 , gcc
 , git
-, llvmPackages_9
+, llvmPackages_13
 # Libraries
 , argparse
 , cling
@@ -60,7 +60,7 @@ clangStdenv.mkDerivation rec {
     cling.unwrapped
     cppzmq
     libuuid
-    llvmPackages_9.llvm
+    llvmPackages_13.llvm
     ncurses
     openssl
     pugixml
@@ -75,6 +75,15 @@ clangStdenv.mkDerivation rec {
     "-DCMAKE_BUILD_TYPE=Debug"
   ];
 
+  postPatch = ''
+    substituteInPlace src/xmagics/executable.cpp \
+      --replace "getDataLayout" "getDataLayoutString"
+    substituteInPlace src/xmagics/execution.cpp \
+      --replace "simplisticCastAs" "castAs"
+    substituteInPlace src/xmime_internal.hpp \
+      --replace "code.str()" "code.str().str()"
+  '';
+
   dontStrip = debug;
 
   meta = {
diff --git a/pkgs/applications/editors/kakoune/plugins/deprecated.json b/pkgs/applications/editors/kakoune/plugins/deprecated.json
index 0967ef424bce6..3834a321e76d5 100644
--- a/pkgs/applications/editors/kakoune/plugins/deprecated.json
+++ b/pkgs/applications/editors/kakoune/plugins/deprecated.json
@@ -1 +1,3 @@
-{}
+{
+  "kak-lsp": { "new": "kakoune-lsp", "date": "2024-04-01" }
+}
diff --git a/pkgs/applications/editors/kakoune/plugins/overrides.nix b/pkgs/applications/editors/kakoune/plugins/overrides.nix
index fb1287ba490b7..ebdcac8e4dae9 100644
--- a/pkgs/applications/editors/kakoune/plugins/overrides.nix
+++ b/pkgs/applications/editors/kakoune/plugins/overrides.nix
@@ -1,11 +1,11 @@
 { lib, stdenv, fetchFromGitHub, fetchFromGitLab, fetchgit
 , buildKakounePluginFrom2Nix
-, kak-lsp, parinfer-rust, rep
+, kakoune-lsp, parinfer-rust, rep
 , fzf, git, guile, kakoune-unwrapped, lua5_3, plan9port
 }:
 
 self: super: {
-  inherit kak-lsp parinfer-rust rep;
+  inherit kakoune-lsp parinfer-rust rep;
 
   case-kak = buildKakounePluginFrom2Nix {
     pname = "case-kak";
diff --git a/pkgs/applications/editors/openvi/default.nix b/pkgs/applications/editors/openvi/default.nix
index 63ba5690df231..5a2e4da2f3ee3 100644
--- a/pkgs/applications/editors/openvi/default.nix
+++ b/pkgs/applications/editors/openvi/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "openvi";
-  version = "7.4.27";
+  version = "7.5.28";
 
   src = fetchFromGitHub {
     owner = "johnsonjh";
     repo = "OpenVi";
     rev = version;
-    hash = "sha256-3cqe6woJvJt0ckI3aOhF0gARKy8VMCfWxIiiglkHBTo=";
+    hash = "sha256-6FP56tlPQXbphyJBDct5hBK81XsU6TJjKDZM4eHqitQ=";
   };
 
   buildInputs = [ ncurses perl ];
diff --git a/pkgs/applications/editors/quartus-prime/default.nix b/pkgs/applications/editors/quartus-prime/default.nix
index 8275be235b431..51a1a2925e92d 100644
--- a/pkgs/applications/editors/quartus-prime/default.nix
+++ b/pkgs/applications/editors/quartus-prime/default.nix
@@ -1,7 +1,8 @@
 { lib, buildFHSEnv, callPackage, makeDesktopItem, writeScript, runtimeShell
-, runCommand, quartus-prime-lite
+, runCommand, unstick, quartus-prime-lite
+, withQuesta ? true
 , supportedDevices ? [ "Arria II" "Cyclone V" "Cyclone IV" "Cyclone 10 LP" "MAX II/V" "MAX 10 FPGA" ]
-, unwrapped ? callPackage ./quartus.nix { inherit supportedDevices; }
+, unwrapped ? callPackage ./quartus.nix { inherit unstick supportedDevices withQuesta; }
 }:
 
 let
@@ -18,11 +19,12 @@ in buildFHSEnv rec {
   name = "quartus-prime-lite"; # wrapped
 
   targetPkgs = pkgs: with pkgs; [
-    (runCommand "ld-lsb-compat" {} ''
+    (runCommand "ld-lsb-compat" {} (''
       mkdir -p "$out/lib"
       ln -sr "${glibc}/lib/ld-linux-x86-64.so.2" "$out/lib/ld-lsb-x86-64.so.3"
+    '' + lib.optionalString withQuesta ''
       ln -sr "${pkgsi686Linux.glibc}/lib/ld-linux.so.2" "$out/lib/ld-lsb.so.3"
-    '')
+    ''))
     # quartus requirements
     glib
     xorg.libICE
@@ -37,11 +39,14 @@ in buildFHSEnv rec {
     # qsys requirements
     xorg.libXtst
     xorg.libXi
+    dejavu_fonts
+    gnumake
   ];
 
-  # Also support 32-bit executables.
-  multiArch = true;
+  # Also support 32-bit executables used by simulator.
+  multiArch = withQuesta;
 
+  # these libs are installed as 64 bit, plus as 32 bit when multiArch is true
   multiPkgs = pkgs: with pkgs; let
     # This seems ugly - can we override `libpng = libpng12` for all `pkgs`?
     freetype = pkgs.freetype.override { libpng = libpng12; };
diff --git a/pkgs/applications/editors/quartus-prime/quartus.nix b/pkgs/applications/editors/quartus-prime/quartus.nix
index e20b86c089f13..12c7039563c1e 100644
--- a/pkgs/applications/editors/quartus-prime/quartus.nix
+++ b/pkgs/applications/editors/quartus-prime/quartus.nix
@@ -1,4 +1,5 @@
 { stdenv, lib, unstick, fetchurl
+, withQuesta ? true
 , supportedDevices ? [ "Arria II" "Cyclone V" "Cyclone IV" "Cyclone 10 LP" "MAX II/V" "MAX 10 FPGA" ]
 }:
 
@@ -41,26 +42,25 @@ let
     url = "https://downloads.intel.com/akdlm/software/acdsinst/${lib.versions.majorMinor version}std/${lib.elemAt (lib.splitVersion version) 4}/ib_installers/${name}";
   };
 
-in stdenv.mkDerivation rec {
-  inherit version;
-  pname = "quartus-prime-lite-unwrapped";
-
-  src = map download ([{
+  installers = map download ([{
     name = "QuartusLiteSetup-${version}-linux.run";
     sha256 = "1mg4db56rg407kdsvpzys96z59bls8djyddfzxi6bdikcklxz98h";
-  } {
+  }] ++ lib.optional withQuesta {
     name = "QuestaSetup-${version}-linux.run";
     sha256 = "0f9lyphk4vf4ijif3kb4iqf18jl357z9h8g16kwnzaqwfngh2ixk";
-  }] ++ (map (id: {
+  });
+  components = map (id: download {
     name = "${id}-${version}.qdz";
     sha256 = lib.getAttr id componentHashes;
-  }) (lib.attrValues supportedDeviceIds)));
+  }) (lib.attrValues supportedDeviceIds);
+
+in stdenv.mkDerivation rec {
+  inherit version;
+  pname = "quartus-prime-lite-unwrapped";
 
   nativeBuildInputs = [ unstick ];
 
   buildCommand = let
-    installers = lib.sublist 0 2 src;
-    components = lib.sublist 2 ((lib.length src) - 2) src;
     copyInstaller = installer: ''
         # `$(cat $NIX_CC/nix-support/dynamic-linker) $src[0]` often segfaults, so cp + patchelf
         cp ${installer} $TEMP/${installer.name}
@@ -68,22 +68,32 @@ in stdenv.mkDerivation rec {
         patchelf --interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $TEMP/${installer.name}
       '';
     copyComponent = component: "cp ${component} $TEMP/${component.name}";
-    # leaves enabled: quartus, questa_fse, devinfo
+    # leaves enabled: quartus, devinfo
     disabledComponents = [
       "quartus_help"
       "quartus_update"
-      # not questa_fse
       "questa_fe"
-    ] ++ (lib.attrValues unsupportedDeviceIds);
+    ] ++ (lib.optional (!withQuesta) "questa_fse")
+      ++ (lib.attrValues unsupportedDeviceIds);
   in ''
+      echo "setting up installer..."
       ${lib.concatMapStringsSep "\n" copyInstaller installers}
       ${lib.concatMapStringsSep "\n" copyComponent components}
 
+      echo "executing installer..."
+      # "Could not load seccomp program: Invalid argument" might occur if unstick
+      # itself is compiled for x86_64 instead of the non-x86 host. In that case,
+      # override the input.
       unstick $TEMP/${(builtins.head installers).name} \
         --disable-components ${lib.concatStringsSep "," disabledComponents} \
         --mode unattended --installdir $out --accept_eula 1
 
+      echo "cleaning up..."
       rm -r $out/uninstall $out/logs
+
+      # replace /proc pentium check with a true statement. this allows usage under emulation.
+      substituteInPlace $out/quartus/adm/qenv.sh \
+        --replace-fail 'grep sse /proc/cpuinfo > /dev/null 2>&1' ':'
     '';
 
   meta = with lib; {
diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix
index dce8a6d053006..0d7964e2e6559 100644
--- a/pkgs/applications/editors/vim/plugins/generated.nix
+++ b/pkgs/applications/editors/vim/plugins/generated.nix
@@ -4247,6 +4247,18 @@ final: prev:
     meta.homepage = "https://github.com/liuchengxu/graphviz.vim/";
   };
 
+  grapple-nvim = buildVimPlugin {
+    pname = "grapple.nvim";
+    version = "2024-04-11";
+    src = fetchFromGitHub {
+      owner = "cbochs";
+      repo = "grapple.nvim";
+      rev = "12172536620464f8cc124e07c6e3ccd306ea3c5c";
+      sha256 = "0rpiq47zb0ms6bbbd3c1ywmq5vc88132xcqwfnbfn3d2hrvbz8d1";
+    };
+    meta.homepage = "https://github.com/cbochs/grapple.nvim/";
+  };
+
   gruber-darker-nvim = buildVimPlugin {
     pname = "gruber-darker.nvim";
     version = "2024-01-08";
@@ -4271,6 +4283,18 @@ final: prev:
     meta.homepage = "https://github.com/morhetz/gruvbox/";
   };
 
+  gruvbox-baby = buildVimPlugin {
+    pname = "gruvbox-baby";
+    version = "2024-01-25";
+    src = fetchFromGitHub {
+      owner = "luisiacc";
+      repo = "gruvbox-baby";
+      rev = "bd52e62d8134647090108189e69c8b3cd18bdbbf";
+      sha256 = "17wnc3zpxki0fy8fbkinj0jvf6hnkz139x6yrg7hmj97aa8rh4sj";
+    };
+    meta.homepage = "https://github.com/luisiacc/gruvbox-baby/";
+  };
+
   gruvbox-flat-nvim = buildVimPlugin {
     pname = "gruvbox-flat.nvim";
     version = "2023-05-27";
@@ -4701,6 +4725,18 @@ final: prev:
     meta.homepage = "https://github.com/idris-hackers/idris-vim/";
   };
 
+  idris2-nvim = buildVimPlugin {
+    pname = "idris2-nvim";
+    version = "2023-09-05";
+    src = fetchFromGitHub {
+      owner = "ShinKage";
+      repo = "idris2-nvim";
+      rev = "8bff02984a33264437e70fd9fff4359679d910da";
+      sha256 = "sha256-guEmds98XEBKuJVdB+rQB01G+RmnQaG+RTjM6smccAI=";
+    };
+    meta.homepage = "https://github.com/ShinKage/idris2-nvim/";
+  };
+
   idris2-vim = buildVimPlugin {
     pname = "idris2-vim";
     version = "2020-11-26";
@@ -8798,6 +8834,18 @@ final: prev:
     meta.homepage = "https://github.com/steelsojka/pears.nvim/";
   };
 
+  persisted-nvim = buildVimPlugin {
+    pname = "persisted.nvim";
+    version = "2024-04-04";
+    src = fetchFromGitHub {
+      owner = "olimorris";
+      repo = "persisted.nvim";
+      rev = "ca9900c31ee6e254a0ba7011ba49f48ebf4c8db2";
+      sha256 = "0s9g1jmq1qzkxi1gcvmyf0nmwgqrh11r0swy9pl32916k37zvqzl";
+    };
+    meta.homepage = "https://github.com/olimorris/persisted.nvim/";
+  };
+
   persistence-nvim = buildVimPlugin {
     pname = "persistence.nvim";
     version = "2024-01-19";
diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix
index 17d0214df96af..381c9e4a80d82 100644
--- a/pkgs/applications/editors/vim/plugins/overrides.nix
+++ b/pkgs/applications/editors/vim/plugins/overrides.nix
@@ -723,6 +723,13 @@
     src = "${hurl.src}/contrib/vim";
   };
 
+  idris2-nvim = super.idris2-nvim.overrideAttrs {
+    dependencies = with self; [ nui-nvim nvim-lspconfig ];
+
+    doInstallCheck = true;
+    nvimRequireCheck = "idris2";
+  };
+
   image-nvim = super.image-nvim.overrideAttrs {
     dependencies = with self; [
       nvim-treesitter
diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names
index 735a74026e20a..ace647e29b522 100644
--- a/pkgs/applications/editors/vim/plugins/vim-plugin-names
+++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names
@@ -353,9 +353,11 @@ https://github.com/rmagatti/goto-preview/,,
 https://github.com/junegunn/goyo.vim/,,
 https://github.com/brymer-meneses/grammar-guard.nvim/,HEAD,
 https://github.com/liuchengxu/graphviz.vim/,,
+https://github.com/cbochs/grapple.nvim/,HEAD,
 https://github.com/blazkowolf/gruber-darker.nvim/,,
 https://github.com/gruvbox-community/gruvbox/,,gruvbox-community
 https://github.com/morhetz/gruvbox/,,
+https://github.com/luisiacc/gruvbox-baby/,HEAD,
 https://github.com/eddyekofo94/gruvbox-flat.nvim/,,
 https://github.com/sainnhe/gruvbox-material/,,
 https://github.com/ellisonleao/gruvbox.nvim/,,
@@ -393,6 +395,7 @@ https://github.com/anuvyklack/hydra.nvim/,HEAD,
 https://github.com/mboughaba/i3config.vim/,,
 https://github.com/cocopon/iceberg.vim/,,
 https://github.com/idris-hackers/idris-vim/,,
+https://github.com/ShinKage/idris2-nvim/,,
 https://github.com/edwinb/idris2-vim/,,
 https://github.com/3rd/image.nvim/,HEAD,
 https://github.com/samodostal/image.nvim/,HEAD,samodostal-image-nvim
@@ -739,6 +742,7 @@ https://github.com/roobert/palette.nvim/,HEAD,
 https://github.com/NLKNguyen/papercolor-theme/,,
 https://github.com/tmsvg/pear-tree/,,
 https://github.com/steelsojka/pears.nvim/,,
+https://github.com/olimorris/persisted.nvim/,HEAD,
 https://github.com/folke/persistence.nvim/,,
 https://github.com/andsild/peskcolor.vim/,,
 https://github.com/pest-parser/pest.vim/,HEAD,
diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix
index 64601378b4935..6171fd701b34b 100644
--- a/pkgs/applications/editors/vscode/extensions/default.nix
+++ b/pkgs/applications/editors/vscode/extensions/default.nix
@@ -428,8 +428,8 @@ let
         mktplcRef = {
           name = "vscode-neovim";
           publisher = "asvetliakov";
-          version = "1.7.1";
-          sha256 = "0ib4sjk7r370ckvaqb4yzgy7csy8pli9z2jhibhhwwcq2748ah4q";
+          version = "1.8.1";
+          sha256 = "0kqzry0cbvvy1pkbx5rhnk5ry7j91cbf11vz1s1jrqc7j0hq0yx8";
         };
         meta = {
           changelog = "https://marketplace.visualstudio.com/items/asvetliakov.vscode-neovim/changelog";
@@ -941,8 +941,8 @@ let
         mktplcRef = {
           name = "coder-remote";
           publisher = "coder";
-          version = "0.1.18";
-          sha256 = "soNGZuyvG5+haWRcwYmYB+0OcyDAm4UQ419UnEd8waA=";
+          version = "0.1.36";
+          hash = "sha256-N1X8wB2n6JYoFHCP5iHBXHnEaRa9S1zooQZsR5mUeh8=";
         };
         meta = {
           description = "An extension for Visual Studio Code to open any Coder workspace in VS Code with a single click.";
@@ -2803,8 +2803,8 @@ let
         mktplcRef = {
           name = "typst-preview";
           publisher = "mgt19937";
-          version = "0.11.1";
-          hash = "sha256-OsCgkq0OSBu7RZYHlxgy7W7zDNDUgJFSeSET20CX8zA=";
+          version = "0.11.4";
+          hash = "sha256-GwlzFphZmP87pLys01+PWTv13imcdGjunCMH6atz9xs=";
         };
 
         buildInputs = [
@@ -3275,8 +3275,8 @@ let
           publisher = "myriad-dreamin";
           # Please update the corresponding binary (tinymist) when updating
           # this extension.
-          version = "0.11.1";
-          hash = "sha256-jyZBnT8UW94TVnZKZna1cJa/UIj+DwYwlAbU4pnaf04=";
+          version = "0.11.3";
+          hash = "sha256-b5aD4gz4j+QAEPmYaNnaputbYTPoFxVFih76HmznUP8=";
         };
 
         nativeBuildInputs = [ jq moreutils ];
@@ -4099,6 +4099,27 @@ let
 
       sumneko.lua = callPackage ./sumneko.lua { };
 
+      supermaven.supermaven = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          hash = "sha256-O3AN8fy28ZSun+k6MJnJdFcmwDDE21ib+I9HtDE0JwU=";
+          name = "supermaven";
+          publisher = "supermaven";
+          version = "0.1.42";
+        };
+        meta = {
+          changelog = "https://marketplace.visualstudio.com/items/supermaven.supermaven/changelog";
+          description = "A Visual Studio Code extension for code completion suggestions";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=supermaven.supermaven";
+          homepage = "https://supermaven.com/";
+          license = lib.licenses.unfree;
+          longDescription = ''
+            Supermaven uses a 300,000 token context window to provide you the best code completion suggestions and the lowest latency.
+            With our extension you will get the fastest and best completions of any tool on the market.
+          '';
+          maintainers = [ lib.maintainers.msanft ];
+        };
+      };
+
       svelte.svelte-vscode = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "svelte-vscode";
@@ -4202,6 +4223,21 @@ let
         };
       };
 
+      teabyii.ayu = buildVscodeMarketplaceExtension {
+        mktplcRef = {
+          name = "ayu";
+          publisher = "teabyii";
+          version = "1.0.5";
+          sha256 = "sha256-+IFqgWliKr+qjBLmQlzF44XNbN7Br5a119v9WAnZOu4=";
+        };
+        meta = {
+          description = "A simple theme with bright colors and comes in three versions — dark, light and mirage for all day long comfortable work.";
+          downloadPage = "https://marketplace.visualstudio.com/items?itemName=teabyii.ayu";
+          homepage = "https://github.com/ayu-theme/vscode-ayu";
+          license = lib.licenses.mit;
+        };
+      };
+
       techtheawesome.rust-yew = buildVscodeMarketplaceExtension {
         mktplcRef = {
           name = "rust-yew";
diff --git a/pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix b/pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix
index d236662f47ac7..25091b95efc4b 100644
--- a/pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix
+++ b/pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix
@@ -72,7 +72,7 @@ vscode-utils.buildVscodeMarketplaceExtension rec {
       tmp=$(mktemp)
       curl -sLo $tmp $(echo ${(import ../mktplcExtRefToFetchArgs.nix mktplcRef).url} | sed "s|${mktplcRef.version}|$version|")
       hash=$(nix hash file --type sha256 --base32 --sri $tmp)
-      sed -i -e "s|${mktplcRef.hash}|$hash|" -e "s|${mktplcRef.version}|$version|" pkgs/applications/editors/vscode/extensions/python/default.nix
+      sed -i -e "s|${mktplcRef.hash}|$hash|" -e "s|${mktplcRef.version}|$version|" pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix
     fi
   '';
 
diff --git a/pkgs/applications/editors/vscode/extensions/vscode-utils.nix b/pkgs/applications/editors/vscode/extensions/vscode-utils.nix
index 5712fe6714238..4c7fae48fbe04 100644
--- a/pkgs/applications/editors/vscode/extensions/vscode-utils.nix
+++ b/pkgs/applications/editors/vscode/extensions/vscode-utils.nix
@@ -32,6 +32,10 @@ let
 
     inherit configurePhase buildPhase dontPatchELF dontStrip;
 
+    # Some .vsix files contain other directories (e.g., `package`) that we don't use.
+    # If other directories are present but `sourceRoot` is unset, the unpacker phase fails.
+    sourceRoot = "extension";
+
     installPrefix = "share/vscode/extensions/${vscodeExtUniqueId}";
 
     nativeBuildInputs = [ unzip ] ++ nativeBuildInputs;
diff --git a/pkgs/applications/editors/vscode/vscodium.nix b/pkgs/applications/editors/vscode/vscodium.nix
index f46c514acb764..6ad010fd72f5e 100644
--- a/pkgs/applications/editors/vscode/vscodium.nix
+++ b/pkgs/applications/editors/vscode/vscodium.nix
@@ -15,11 +15,11 @@ let
   archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
 
   sha256 = {
-    x86_64-linux = "1jy1lsbha951z2bcnfrkgin7nms3clpa97rx7c7pdm23mnyg9073";
-    x86_64-darwin = "0425cnzw1dz2k6a9p63w7vf25icf02m04ri82dp0k1kvhjfr8l37";
-    aarch64-linux = "123p1glr9rc1z2lfl8g5zw7rcipg1njybscqn9qyzkpqymcsqfdy";
-    aarch64-darwin = "1bl5wvbfr5k1vy6ah2i9548cn1l3nx3ng4c544zvclskmr8kf84s";
-    armv7l-linux = "0nyv3yjqcrg4r2m2d63qz34g07pp8n0ndmai9pqwcf7a1m0v0sj4";
+    x86_64-linux = "1a9k4w6ggmrd17i038gi40d3hp24z5vs8nidxr5kvl74fi61js6y";
+    x86_64-darwin = "1q9lwx96zcz517pvr97mjqhv86p41ff3cw5jisxbsg6f76aw8y1y";
+    aarch64-linux = "1fdg9xz1fq9k8fc9x0an2kb8hn2vvbsnc48nv6lbx1j5aaa3k42g";
+    aarch64-darwin = "0kqqn24cimbqb8s7rz64niyknpp36w5ycdw8xfms20zfm5ybm82k";
+    armv7l-linux = "14rkr7k0axlaiplf0hdcmyqfgffng25s0j2i903if3i3sqv7316i";
   }.${system} or throwSystem;
 
   sourceRoot = lib.optionalString (!stdenv.isDarwin) ".";
@@ -29,7 +29,7 @@ in
 
     # Please backport all compatible updates to the stable release.
     # This is important for the extension ecosystem.
-    version = "1.87.2.24072";
+    version = "1.88.0.24096";
     pname = "vscodium";
 
     executableName = "codium";
diff --git a/pkgs/applications/editors/wily/default.nix b/pkgs/applications/editors/wily/default.nix
index 74d0bc156758b..0e883a51210af 100644
--- a/pkgs/applications/editors/wily/default.nix
+++ b/pkgs/applications/editors/wily/default.nix
@@ -11,7 +11,11 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libX11 libXt ];
 
-  configureFlags = [ "--prefix=$(out)" ];
+  env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isClang [
+    "-Wno-error=implicit-int"
+    "-Wno-error=implicit-function-declaration"
+    "-Wno-error=incompatible-function-pointer-types"
+  ]);
 
   preInstall = ''
     mkdir -p $out/bin
diff --git a/pkgs/applications/emulators/86box/default.nix b/pkgs/applications/emulators/86box/default.nix
index 4e2cb85412056..1e9b887d2d6a5 100644
--- a/pkgs/applications/emulators/86box/default.nix
+++ b/pkgs/applications/emulators/86box/default.nix
@@ -1,23 +1,41 @@
-{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, makeWrapper, freetype, SDL2
-, glib, pcre2, openal, rtmidi, fluidsynth, jack2, alsa-lib, qt5, libvncserver
-, discord-gamesdk, libpcap, libslirp
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  cmake,
+  pkg-config,
+  makeWrapper,
+  freetype,
+  SDL2,
+  glib,
+  pcre2,
+  openal,
+  rtmidi,
+  fluidsynth,
+  jack2,
+  alsa-lib,
+  qt5,
+  libvncserver,
+  discord-gamesdk,
+  libpcap,
+  libslirp,
 
-, enableDynarec ? with stdenv.hostPlatform; isx86 || isAarch
-, enableNewDynarec ? enableDynarec && stdenv.hostPlatform.isAarch
-, enableVncRenderer ? false
-, unfreeEnableDiscord ? false
-, unfreeEnableRoms ? false
+  enableDynarec ? with stdenv.hostPlatform; isx86 || isAarch,
+  enableNewDynarec ? enableDynarec && stdenv.hostPlatform.isAarch,
+  enableVncRenderer ? false,
+  unfreeEnableDiscord ? false,
+  unfreeEnableRoms ? false,
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "86Box";
-  version = "4.1";
+  version = "4.1.1";
 
   src = fetchFromGitHub {
     owner = "86Box";
     repo = "86Box";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-JYOJFXiUTLRs6AEMYNx88PwcVw13ChQzV1ZE5OtX6Ds=";
+    hash = "sha256-ioE0EVIXv/biXXvLqwhmtZ/RJM0nLqcE+i+CU+WXBY4=";
   };
 
   nativeBuildInputs = [
@@ -40,54 +58,54 @@ stdenv.mkDerivation (finalAttrs: {
     libslirp
     qt5.qtbase
     qt5.qttools
-  ] ++ lib.optional stdenv.isLinux alsa-lib
-    ++ lib.optional enableVncRenderer libvncserver;
+  ] ++ lib.optional stdenv.isLinux alsa-lib ++ lib.optional enableVncRenderer libvncserver;
 
-  cmakeFlags = lib.optional stdenv.isDarwin "-DCMAKE_MACOSX_BUNDLE=OFF"
+  cmakeFlags =
+    lib.optional stdenv.isDarwin "-DCMAKE_MACOSX_BUNDLE=OFF"
     ++ lib.optional enableNewDynarec "-DNEW_DYNAREC=ON"
     ++ lib.optional enableVncRenderer "-DVNC=ON"
     ++ lib.optional (!enableDynarec) "-DDYNAREC=OFF"
     ++ lib.optional (!unfreeEnableDiscord) "-DDISCORD=OFF";
 
-  postInstall = lib.optionalString stdenv.isLinux ''
-    install -Dm644 -t $out/share/applications $src/src/unix/assets/net.86box.86Box.desktop
+  postInstall =
+    lib.optionalString stdenv.isLinux ''
+      install -Dm644 -t $out/share/applications $src/src/unix/assets/net.86box.86Box.desktop
 
-    for size in 48 64 72 96 128 192 256 512; do
-      install -Dm644 -t $out/share/icons/hicolor/"$size"x"$size"/apps \
-        $src/src/unix/assets/"$size"x"$size"/net.86box.86Box.png
-    done;
-  ''
-  + lib.optionalString unfreeEnableRoms ''
-    mkdir -p $out/share/86Box
-    ln -s ${finalAttrs.passthru.roms} $out/share/86Box/roms
-  '';
+      for size in 48 64 72 96 128 192 256 512; do
+        install -Dm644 -t $out/share/icons/hicolor/"$size"x"$size"/apps \
+          $src/src/unix/assets/"$size"x"$size"/net.86box.86Box.png
+      done;
+    ''
+    + lib.optionalString unfreeEnableRoms ''
+      mkdir -p $out/share/86Box
+      ln -s ${finalAttrs.passthru.roms} $out/share/86Box/roms
+    '';
 
   passthru = {
     roms = fetchFromGitHub {
       owner = "86Box";
       repo = "roms";
       rev = "v${finalAttrs.version}";
-      hash = "sha256-1HtoizO0QIGNjQTW0clzRp40h1ulw55+iTYz12UJSms=";
+      hash = "sha256-58nNTOLund/KeDlNwzwwihjFVigs/P0K8SN07zExE2c=";
     };
   };
 
   # Some libraries are loaded dynamically, but QLibrary doesn't seem to search
   # the runpath, so use a wrapper instead.
-  preFixup = let
-    libPath = lib.makeLibraryPath ([
-      libpcap
-    ] ++ lib.optional unfreeEnableDiscord discord-gamesdk);
-    libPathVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
-  in ''
-    makeWrapperArgs+=(--prefix ${libPathVar} : "${libPath}")
-  '';
+  preFixup =
+    let
+      libPath = lib.makeLibraryPath ([ libpcap ] ++ lib.optional unfreeEnableDiscord discord-gamesdk);
+      libPathVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
+    in
+    ''
+      makeWrapperArgs+=(--prefix ${libPathVar} : "${libPath}")
+    '';
 
   meta = with lib; {
     description = "Emulator of x86-based machines based on PCem.";
     mainProgram = "86Box";
     homepage = "https://86box.net/";
-    license = with licenses; [ gpl2Only ]
-      ++ optional (unfreeEnableDiscord || unfreeEnableRoms) unfree;
+    license = with licenses; [ gpl2Only ] ++ optional (unfreeEnableDiscord || unfreeEnableRoms) unfree;
     maintainers = [ maintainers.jchw ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/emulators/cemu/default.nix b/pkgs/applications/emulators/cemu/default.nix
index 51454ea7ab164..2b3f5e28a8cf8 100644
--- a/pkgs/applications/emulators/cemu/default.nix
+++ b/pkgs/applications/emulators/cemu/default.nix
@@ -46,13 +46,13 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "cemu";
-  version = "2.0-73";
+  version = "2.0-74";
 
   src = fetchFromGitHub {
     owner = "cemu-project";
     repo = "Cemu";
     rev = "v${version}";
-    hash = "sha256-uiAga19DTFMq4/7ndOafkY/QvSJhWDSMMg8RV+KxN+E=";
+    hash = "sha256-taV2HEKRUQ7k5BpgA3nwVzX8qkTN02O9kqswjdCHod0=";
   };
 
   patches = [
diff --git a/pkgs/applications/emulators/dosbox-x/default.nix b/pkgs/applications/emulators/dosbox-x/default.nix
index c499c69e54421..7ec2b8df3b715 100644
--- a/pkgs/applications/emulators/dosbox-x/default.nix
+++ b/pkgs/applications/emulators/dosbox-x/default.nix
@@ -10,6 +10,7 @@
 , fluidsynth
 , freetype
 , glib
+, libicns
 , libpcap
 , libpng
 , libslirp
@@ -18,6 +19,7 @@
 , makeWrapper
 , ncurses
 , pkg-config
+, python3
 , SDL2
 , SDL2_net
 , testers
@@ -36,12 +38,29 @@ stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-EcAp7KyqXdBACEbPgkM1INoKeGVo7hMDUx97y2RcX+k=";
   };
 
+  # sips is unavailable in sandbox, replacing with imagemagick breaks build due to wrong Foundation propagation(?) so don't generate resolution variants
+  # iconutil is unavailable, replace with png2icns from libicns
+  # Patch bad hardcoded compiler
+  # Don't mess with codesign, doesn't seem to work?
+  postPatch = ''
+    substituteInPlace Makefile.am \
+      --replace-fail 'sips' '## sips' \
+      --replace-fail 'iconutil -c icns -o contrib/macos/dosbox.icns src/dosbox.iconset' 'png2icns contrib/macos/dosbox.icns contrib/macos/dosbox-x.png' \
+      --replace-fail 'g++' "$CXX" \
+      --replace-fail 'codesign' '## codesign'
+  '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
+    patchShebangs appbundledeps.py
+  '';
+
   strictDeps = true;
 
   nativeBuildInputs = [
     autoreconfHook
     makeWrapper
     pkg-config
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+    libicns
+    python3
   ];
 
   buildInputs = [
@@ -75,9 +94,22 @@ stdenv.mkDerivation (finalAttrs: {
 
   hardeningDisable = [ "format" ]; # https://github.com/joncampbell123/dosbox-x/issues/4436
 
+  # Build optional App Bundle target, which needs at least one arch-suffixed binary
+  postBuild = lib.optionalString stdenv.hostPlatform.isDarwin ''
+    cp src/dosbox-x src/dosbox-x-$(uname -m)
+    make dosbox-x.app
+  '';
+
   postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
     wrapProgram $out/bin/dosbox-x \
       --prefix PATH : ${lib.makeBinPath [ yad ]}
+  ''
+  # Install App Bundle, wrap regular binary into bundle's binary to get the icon working
+  + lib.optionalString stdenv.hostPlatform.isDarwin ''
+    mkdir $out/Applications
+    mv dosbox-x.app $out/Applications/
+    mv $out/bin/dosbox-x $out/Applications/dosbox-x.app/Contents/MacOS/dosbox-x
+    makeWrapper $out/Applications/dosbox-x.app/Contents/MacOS/dosbox-x $out/bin/dosbox-x
   '';
 
   passthru.tests.version = testers.testVersion {
diff --git a/pkgs/applications/emulators/duckstation/default.nix b/pkgs/applications/emulators/duckstation/default.nix
index 7e7bfd494600a..91d2b23705ad7 100644
--- a/pkgs/applications/emulators/duckstation/default.nix
+++ b/pkgs/applications/emulators/duckstation/default.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , SDL2
 , cmake
-, copyDesktopItems
 , cubeb
 , curl
 , extra-cmake-modules
@@ -48,7 +47,6 @@ stdenv.mkDerivation (finalAttrs: {
 
   nativeBuildInputs = [
     cmake
-    copyDesktopItems
     extra-cmake-modules
     ninja
     pkg-config
diff --git a/pkgs/applications/emulators/retroarch/hashes.json b/pkgs/applications/emulators/retroarch/hashes.json
index a8443af73f44d..45feaa5a4d5f0 100644
--- a/pkgs/applications/emulators/retroarch/hashes.json
+++ b/pkgs/applications/emulators/retroarch/hashes.json
@@ -287,31 +287,31 @@
         "src": {
             "owner": "libretro",
             "repo": "fbneo",
-            "rev": "537b5b8dcc358370f2349109004233fbeab46cfe",
-            "hash": "sha256-zBOF1RV2dx5zraREZm/W//8DwrRMDc/j8sx+CwTyKz0="
+            "rev": "cb370363935458e723e0594fb03380c04e7f455b",
+            "hash": "sha256-u0kBdqfUu7QmZBbuLaDJRnsDUJLZiURF6BSkwOX8zpU="
         },
-        "version": "unstable-2024-04-02"
+        "version": "unstable-2024-04-08"
     },
     "fceumm": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "libretro",
             "repo": "libretro-fceumm",
-            "rev": "40969671ce9e4b1a49165d836476cd71bb960131",
-            "hash": "sha256-wdAigh3qUzB3wmh6q/dwCHHhuyqyAmqV+NSvrzjODVM="
+            "rev": "aebea8783652bc75b21b9d2dcb28cedf1fa78e8a",
+            "hash": "sha256-4ux8pI2d8djkwY0M+h5tlXrLGIDHnMFiFqAWKrZAsxA="
         },
-        "version": "unstable-2024-03-02"
+        "version": "unstable-2024-04-06"
     },
     "flycast": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "flyinghead",
             "repo": "flycast",
-            "rev": "a0c81d2f2a393bd34caf6f15c1231ba4e2175405",
-            "hash": "sha256-hajTfovkSH7l6AayQyiHI7E4I/82pBhQnDSxo0BcYu0=",
+            "rev": "9d6eab74e1eb182d627f63e1db79752852e9d230",
+            "hash": "sha256-Zi98lszi42XV6u0RhOnt6TVqAfdSaZRcpJIJDwI+ThU=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-04-03"
+        "version": "unstable-2024-04-05"
     },
     "fmsx": {
         "fetcher": "fetchFromGitHub",
@@ -358,10 +358,10 @@
         "src": {
             "owner": "libretro",
             "repo": "Genesis-Plus-GX",
-            "rev": "667158b034ce860e345b13e1ed927fea9d155b96",
-            "hash": "sha256-uerlejdqJO+vPDs1K7dAxImfJzWrEWlVhF/uTaQoo6E="
+            "rev": "b063aa81b90682ca89ae6fd1e958bc589b4ce34d",
+            "hash": "sha256-Tz6if6NfbwvZVDb5Ggr/tXuLNymOjcMkghKwZq6tl6I="
         },
-        "version": "unstable-2024-03-15"
+        "version": "unstable-2024-04-05"
     },
     "gpsp": {
         "fetcher": "fetchFromGitHub",
@@ -408,10 +408,10 @@
         "src": {
             "owner": "libretro",
             "repo": "mame",
-            "rev": "ac9d0347f5d331eb49017cd599a5e63a668b4f22",
-            "hash": "sha256-P5Hunw1o0C29/YsOu7tmR/oY2sbL2qTmY6RoJ56bTzI="
+            "rev": "3aa1ff0d6c087ac35530572d09bc42a2591ff78f",
+            "hash": "sha256-pSBaheo3R5Oxn3nAG8AqodaRtYDIcmT4QVIzLjefa3c="
         },
-        "version": "unstable-2024-04-01"
+        "version": "unstable-2024-04-05"
     },
     "mame2000": {
         "fetcher": "fetchFromGitHub",
@@ -438,10 +438,10 @@
         "src": {
             "owner": "libretro",
             "repo": "mame2003-plus-libretro",
-            "rev": "f03f865af9d496965ab15b9a213691319daad9d2",
-            "hash": "sha256-yHVkEJYSXHeUGNFJ/zbAwNi+I4gka8Id7z+LnDkCCSM="
+            "rev": "bf250331362db8fa08a5b3ef60decffba90bf564",
+            "hash": "sha256-7KxQtmmjJuDzoYzpQi/z6eYtThop3Qc1wY0JpUyv26A="
         },
-        "version": "unstable-2024-04-03"
+        "version": "unstable-2024-04-09"
     },
     "mame2010": {
         "fetcher": "fetchFromGitHub",
@@ -559,10 +559,10 @@
         "src": {
             "owner": "libretro",
             "repo": "nestopia",
-            "rev": "efe3a052c75ad47d6e98eeffd1f3d2d4893279c2",
-            "hash": "sha256-sSXU+rUBJcE2gQRTqnZV8NSuBz/zWNxlZHQqoAUoigU="
+            "rev": "b99ede358b2219602443e7f414eabf81e17da244",
+            "hash": "sha256-iciidNkOhie3qJO8D4yB081ywfQtGGMrKBWFmBpps9g="
         },
-        "version": "unstable-2024-03-29"
+        "version": "unstable-2024-04-07"
     },
     "np2kai": {
         "fetcher": "fetchFromGitHub",
@@ -630,10 +630,10 @@
         "src": {
             "owner": "libretro",
             "repo": "pcsx_rearmed",
-            "rev": "2fb8465594a7ffb7ccbac39fdedf7c70085d7f63",
-            "hash": "sha256-RQU2EDcBRa6aH40JrEJ3eppjflk5++AWlOH+iGJyjFY="
+            "rev": "4cc48a6b324ff1d025768bb5436279831e4bf319",
+            "hash": "sha256-bW/soI5/HgV71L7SdouAeR5ex54veJCTdCXCMwfxHIk="
         },
-        "version": "unstable-2024-03-29"
+        "version": "unstable-2024-04-06"
     },
     "picodrive": {
         "fetcher": "fetchFromGitHub",
@@ -651,22 +651,22 @@
         "src": {
             "owner": "jpd002",
             "repo": "Play-",
-            "rev": "8445595b734301f22c6fdd57536867fea3786b58",
-            "hash": "sha256-3e9+PkSGZbjZ2LVY0cWRIK+TbdJ4hn8FxBjWqhsQB4o=",
+            "rev": "8f9fab334eb4ae6faf9cfd88f802cad68674792b",
+            "hash": "sha256-KzRj7Xjfqoi/m+eEHk6Lfk/6FHk4YtrGkY++sjUvT/Y=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-04-02"
+        "version": "unstable-2024-04-09"
     },
     "ppsspp": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "hrydgard",
             "repo": "ppsspp",
-            "rev": "5bead8d999717ed13f7808d3e6b88a237806899e",
-            "hash": "sha256-bGNlzpC3xPX5xyFyMfXbeR4q3Q9bGN/oRwFTLcgzfJM=",
+            "rev": "1bcb15576252ac4b253c39f7c34ea372a3637d96",
+            "hash": "sha256-bc0gJi2C+ZBlF7qczSQ+L4bZD5zt7NNIESEwdpqOhTY=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-04-04"
+        "version": "unstable-2024-04-09"
     },
     "prboom": {
         "fetcher": "fetchFromGitHub",
diff --git a/pkgs/applications/emulators/wine/sources.nix b/pkgs/applications/emulators/wine/sources.nix
index dd59911c379df..8efe9c7ab8227 100644
--- a/pkgs/applications/emulators/wine/sources.nix
+++ b/pkgs/applications/emulators/wine/sources.nix
@@ -69,9 +69,9 @@ in rec {
 
   unstable = fetchurl rec {
     # NOTE: Don't forget to change the hash for staging as well.
-    version = "9.5";
+    version = "9.6";
     url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz";
-    hash = "sha256-Es8vtwmBNOI1HEnqO6j02ipnTx+HIr69TDpKbKbS6XU=";
+    hash = "sha256-Dglg7YK2AX6ILtozOLrRJwoRd7bPBfA6wfqxVavoIEg=";
     inherit (stable) patches;
 
     ## see http://wiki.winehq.org/Gecko
@@ -117,7 +117,7 @@ in rec {
   staging = fetchFromGitLab rec {
     # https://gitlab.winehq.org/wine/wine-staging
     inherit (unstable) version;
-    hash = "sha256-Jxhtd/rG5x8wENO1dVUby/DjRLKPpPTYviowPQu2qK4=";
+    hash = "sha256-6AKN/KpmsTw9qxErhTTzqWuglgFdOAhtaoBlVRcs71Q=";
     domain = "gitlab.winehq.org";
     owner = "wine";
     repo = "wine-staging";
diff --git a/pkgs/applications/graphics/conjure/default.nix b/pkgs/applications/graphics/conjure/default.nix
index 634cf7132b1d5..105b8577bd64e 100644
--- a/pkgs/applications/graphics/conjure/default.nix
+++ b/pkgs/applications/graphics/conjure/default.nix
@@ -3,7 +3,7 @@
 , lib
 , libadwaita
 , python3Packages
-, wrapGAppsHook
+, wrapGAppsHook4
 , meson
 , ninja
 , desktop-file-utils
@@ -26,7 +26,7 @@ python3Packages.buildPythonApplication rec {
 
   nativeBuildInputs = [
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook4
     desktop-file-utils
     appstream-glib
     meson
diff --git a/pkgs/applications/graphics/curtail/default.nix b/pkgs/applications/graphics/curtail/default.nix
index 2a881c153f682..d12c3e6f22614 100644
--- a/pkgs/applications/graphics/curtail/default.nix
+++ b/pkgs/applications/graphics/curtail/default.nix
@@ -1,7 +1,7 @@
 { lib
 , python3
 , fetchFromGitHub
-, wrapGAppsHook
+, wrapGAppsHook4
 , appstream-glib
 , desktop-file-utils
 , gettext
@@ -31,7 +31,7 @@ python3.pkgs.buildPythonApplication rec {
   };
 
   nativeBuildInputs = [
-    wrapGAppsHook
+    wrapGAppsHook4
     appstream-glib
     desktop-file-utils
     gettext
diff --git a/pkgs/applications/graphics/drawio/default.nix b/pkgs/applications/graphics/drawio/default.nix
index b9c56a01e0069..9464a0d7d1dc5 100644
--- a/pkgs/applications/graphics/drawio/default.nix
+++ b/pkgs/applications/graphics/drawio/default.nix
@@ -14,14 +14,14 @@
 
 stdenv.mkDerivation rec {
   pname = "drawio";
-  version = "24.0.4";
+  version = "24.1.0";
 
   src = fetchFromGitHub {
     owner = "jgraph";
     repo = "drawio-desktop";
     rev = "v${version}";
     fetchSubmodules = true;
-    hash = "sha256-+TCnVXcmAEpa7MiL0dyeoh2aUfIIO8eze9pEaHgKnME=";
+    hash = "sha256-vwytqlPv8LfOceuBs/MNPxzO1ZYv1hwjIRyBh/wuVEU=";
   };
 
   # `@electron/fuses` tries to run `codesign` and fails. Disable and use autoSignDarwinBinariesHook instead
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   offlineCache = fetchYarnDeps {
     yarnLock = src + "/yarn.lock";
-    hash = "sha256-QS0bkDDQq3sn79TQ+pTZsmbmXgMccyLmlPLTsko7eGg=";
+    hash = "sha256-mRnGsfxrdfzk6+z07174zZ7pcS68Zut6inuBPZkLtWQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/graphics/f3d/default.nix b/pkgs/applications/graphics/f3d/default.nix
index 84d8c62915736..3b45ca987f1a2 100644
--- a/pkgs/applications/graphics/f3d/default.nix
+++ b/pkgs/applications/graphics/f3d/default.nix
@@ -14,7 +14,7 @@
 
 stdenv.mkDerivation rec {
   pname = "f3d";
-  version = "2.3.1";
+  version = "2.4.0";
 
   outputs = [ "out" "man" ];
 
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     owner = "f3d-app";
     repo = "f3d";
     rev = "refs/tags/v${version}";
-    hash = "sha256-A6PD++wZZfVp/3hV7yefQPhxTpvpZHN0h0pRCxA6vkU=";
+    hash = "sha256-mqkPegbGos38S50CoV4Qse9Z4wZ327UmIwmSrrP35uI=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/graphics/geeqie/default.nix b/pkgs/applications/graphics/geeqie/default.nix
index a064e27a66577..9a6afd183756e 100644
--- a/pkgs/applications/graphics/geeqie/default.nix
+++ b/pkgs/applications/graphics/geeqie/default.nix
@@ -2,36 +2,32 @@
 , gtk3, lcms2, exiv2, libchamplain, clutter-gtk, ffmpegthumbnailer, fbida
 , libarchive, djvulibre, libheif, openjpeg, libjxl, libraw, lua5_3, poppler
 , gspell, libtiff, libwebp
+, gphoto2, imagemagick, yad, exiftool, gnome, libnotify
 , wrapGAppsHook, fetchpatch, doxygen
 , nix-update-script
 }:
 
 stdenv.mkDerivation rec {
   pname = "geeqie";
-  version = "2.1";
+  version = "2.2";
 
   src = fetchFromGitHub {
     owner = "BestImageViewer";
     repo = "geeqie";
     rev = "v${version}";
-    hash = "sha256-qkM/7auZ9TMF2r8KLnitxmvlyPmIjh7q9Ugh+QKh8hw=";
+    hash = "sha256-13Ayr6r4JhqexaUvwzdc6XHT+j2l2D5YBws6gSAhU3Y=";
   };
 
   patches = [
+    # Remove changelog from menu
     (fetchpatch {
-      name = "exiv2-0.28.0-support-1.patch";
-      url = "https://github.com/BestImageViewer/geeqie/commit/c45cca777aa3477eaf297db99f337e18d9683c61.patch";
-      hash = "sha256-YiFzAj3G3Z2w7p+8zZlDBjWqUqnfSqvaxMkESfPFdzc=";
+      url = "https://salsa.debian.org/debian/geeqie/-/raw/debian/master/debian/patches/Remove-changelog-from-menu-item.patch";
+      hash = "sha256-0awKKTLg/gUZhmwluVbHCOqssog9SneFOaUtG89q0go=";
     })
+    # Fix missing execute permissions for geocode-parametres.awk plugin
     (fetchpatch {
-      name = "exiv2-0.28.0-support-2.patch";
-      url = "https://github.com/BestImageViewer/geeqie/commit/b04f7cd0546976dc4f7ea440648ac0eedd8df3ce.patch";
-      hash = "sha256-V0ZOHbAZOrhLcNN+Al1/kvxvbw0vc/R7r99CegjuBQg=";
-    })
-    (fetchpatch {
-      name = "fix-compilation-with-lua.patch";
-      url = "https://github.com/BestImageViewer/geeqie/commit/a132645ee87e612217ac955b227cad04f21a5722.patch";
-      hash = "sha256-BozarBPoIKxZS3qpjuzHHAWZGIWZAwvJyqsNC8v+TMk=";
+      url = "https://github.com/BestImageViewer/geeqie/commit/4d3ddcf5b9c0668bfdaf1dfe24219ee57c2f0237.patch";
+      hash = "sha256-Na2qiwCTbOv1yt251oaSZiLaOwJCkjWew+us4lQju0I=";
     })
   ];
 
@@ -54,8 +50,29 @@ stdenv.mkDerivation rec {
   postInstall = ''
     # Allow geeqie to find exiv2 and exiftran, necessary to
     # losslessly rotate JPEG images.
+    # Requires exiftran (fbida package) and exiv2.
     sed -i $out/lib/geeqie/geeqie-rotate \
         -e '1 a export PATH=${lib.makeBinPath [ exiv2 fbida ]}:$PATH'
+    # Zenity and yad are used in some scripts for reporting errors.
+    # Allow change quality of image.
+    # Requires imagemagick and yad.
+    sed -i $out/lib/geeqie/geeqie-resize-image \
+        -e '1 a export PATH=${lib.makeBinPath [ imagemagick yad ]}:$PATH'
+    # Allow to crop image.
+    # Requires imagemagick, exiv2 and exiftool.
+    sed -i $out/lib/geeqie/geeqie-image-crop \
+        -e '1 a export PATH=${lib.makeBinPath [ imagemagick exiv2 exiftool gnome.zenity ]}:$PATH'
+    # Requires gphoto2 and libnotify
+    sed -i $out/lib/geeqie/geeqie-tethered-photography \
+        -e '1 a export PATH=${lib.makeBinPath [ gphoto2 gnome.zenity libnotify ]}:$PATH'
+    # Import images from camera.
+    # Requires gphoto2.
+    sed -i $out/lib/geeqie/geeqie-camera-import \
+        -e '1 a export PATH=${lib.makeBinPath [ gphoto2 gnome.zenity ]}:$PATH'
+    # Export jpeg from raw file.
+    # Requires exiv2, exiftool and lcms2.
+    sed -i $out/lib/geeqie/geeqie-export-jpeg \
+        -e '1 a export PATH=${lib.makeBinPath [ gnome.zenity exiv2 exiftool lcms2 ]}:$PATH'
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/applications/graphics/krita/generic.nix b/pkgs/applications/graphics/krita/generic.nix
index 9416a4708e4c0..8df637ffa1ce1 100644
--- a/pkgs/applications/graphics/krita/generic.nix
+++ b/pkgs/applications/graphics/krita/generic.nix
@@ -1,4 +1,4 @@
-{ mkDerivation, lib, stdenv, fetchpatch, makeWrapper, fetchurl, cmake, extra-cmake-modules
+{ mkDerivation, lib, stdenv, fetchpatch, fetchurl, cmake, extra-cmake-modules
 , karchive, kconfig, kwidgetsaddons, kcompletion, kcoreaddons
 , kguiaddons, ki18n, kitemmodels, kitemviews, kwindowsystem
 , kio, kcrash, breeze-icons
@@ -13,7 +13,7 @@
 }:
 
 mkDerivation rec {
-  pname = "krita";
+  pname = "krita-unwrapped";
   inherit version;
 
   src = fetchurl {
@@ -36,7 +36,7 @@ mkDerivation rec {
     })
   ];
 
-  nativeBuildInputs = [ cmake extra-cmake-modules pkg-config python3Packages.sip makeWrapper ];
+  nativeBuildInputs = [ cmake extra-cmake-modules pkg-config python3Packages.sip ];
 
   buildInputs = [
     karchive kconfig kwidgetsaddons kcompletion kcoreaddons kguiaddons
@@ -72,14 +72,11 @@ mkDerivation rec {
     "-DBUILD_KRITA_QT_DESIGNER_PLUGINS=ON"
   ];
 
-  preInstall = ''
-    qtWrapperArgs+=(--prefix PYTHONPATH : "$PYTHONPATH")
-  '';
-
   meta = with lib; {
     description = "A free and open source painting application";
     homepage = "https://krita.org/";
     maintainers = with maintainers; [ abbradar sifmelcara nek0 ];
+    mainProgram = "krita";
     platforms = platforms.linux;
     license = licenses.gpl3Only;
   };
diff --git a/pkgs/applications/graphics/krita/wrapper.nix b/pkgs/applications/graphics/krita/wrapper.nix
new file mode 100644
index 0000000000000..6d62412e5662c
--- /dev/null
+++ b/pkgs/applications/graphics/krita/wrapper.nix
@@ -0,0 +1,27 @@
+{ lib
+, libsForQt5
+, symlinkJoin
+, unwrapped ? libsForQt5.callPackage ./. { }
+, krita-plugin-gmic
+, binaryPlugins ? [
+    # Default plugins provided by upstream appimage
+    krita-plugin-gmic
+  ]
+}:
+
+symlinkJoin {
+  name = lib.replaceStrings [ "-unwrapped" ] [ "" ] unwrapped.name;
+  inherit (unwrapped) version buildInputs nativeBuildInputs meta;
+
+  paths = [ unwrapped ] ++ binaryPlugins;
+
+  postBuild = ''
+    wrapQtApp "$out/bin/krita" \
+      --prefix PYTHONPATH : "$PYTHONPATH" \
+      --set KRITA_PLUGIN_PATH "$out/lib/kritaplugins"
+  '';
+
+  passthru = {
+    inherit unwrapped binaryPlugins;
+  };
+}
diff --git a/pkgs/applications/graphics/oculante/default.nix b/pkgs/applications/graphics/oculante/default.nix
index fbbe037257bb8..d7e322f39588d 100644
--- a/pkgs/applications/graphics/oculante/default.nix
+++ b/pkgs/applications/graphics/oculante/default.nix
@@ -22,16 +22,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "oculante";
-  version = "0.8.17";
+  version = "0.8.18";
 
   src = fetchFromGitHub {
     owner = "woelper";
     repo = "oculante";
     rev = version;
-    hash = "sha256-kSCmBdTh4Z6b49fItv68w+hdIFH98g8lCfIVqj08wgg=";
+    hash = "sha256-TLY6ydYeRuT93jjUeE7EaFNNllwla4h563UhXAxSyko=";
   };
 
-  cargoHash = "sha256-vZwzIV0l9iHEf2Iz/n1jY9Ai+YU5UkeSJPSqDkKy+nI=";
+  cargoHash = "sha256-RKJE09Z4XxRLWQ95Om3tru4rI2TD7XmxoHhPHFirREo=";
 
   nativeBuildInputs = [
     cmake
diff --git a/pkgs/applications/graphics/pineapple-pictures/default.nix b/pkgs/applications/graphics/pineapple-pictures/default.nix
index cb7e1310a0663..86e85e0efad2f 100644
--- a/pkgs/applications/graphics/pineapple-pictures/default.nix
+++ b/pkgs/applications/graphics/pineapple-pictures/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "pineapple-pictures";
-  version = "0.7.3";
+  version = "0.7.4";
 
   src = fetchFromGitHub {
     owner = "BLumia";
     repo = "pineapple-pictures";
     rev = finalAttrs.version;
-    hash = "sha256-UZVpyrUFf/uJNs2GHLYXpb81e7yzC8EFuoD+0Bzj6xQ=";
+    hash = "sha256-aiQlcTID8mfrT4MEx4s5K+QmMHBlHOu2HfsValiH5qU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/graphics/potreeconverter/default.nix b/pkgs/applications/graphics/potreeconverter/default.nix
index cc63cbe289b60..ae7acec3522f4 100644
--- a/pkgs/applications/graphics/potreeconverter/default.nix
+++ b/pkgs/applications/graphics/potreeconverter/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     cmake
   ];
 
-  patchPhase = ''
+  postPatch = ''
     runHook prePatch
 
     substituteInPlace ./CMakeLists.txt \
@@ -37,12 +37,12 @@ stdenv.mkDerivation rec {
     # prevent inheriting permissions from /nix/store when copying
     substituteInPlace Converter/src/main.cpp --replace \
       'fs::copy(templateDir, pagedir, fs::copy_options::overwrite_existing | fs::copy_options::recursive)' 'string cmd = "cp --no-preserve=mode -r " + templateDir + " " + pagedir; system(cmd.c_str());'
-
-    runHook postPatch
   '';
 
+  # The upstream build system does not provide an install target.
   installPhase = ''
     runHook preInstall
+
     mkdir -p $out/{bin,lib}
     mv liblaszip.so $out/lib
     mv PotreeConverter $out/bin
@@ -56,10 +56,8 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  fixupPhase = ''
-    runHook preFixup
+  postFixup = ''
     ln -s $src/resources $out/bin/resources
-    runHook postFixup
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/graphics/rnote/Cargo.lock b/pkgs/applications/graphics/rnote/Cargo.lock
index 07c7748de2648..0cbd1de820423 100644
--- a/pkgs/applications/graphics/rnote/Cargo.lock
+++ b/pkgs/applications/graphics/rnote/Cargo.lock
@@ -31,9 +31,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -51,7 +51,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce"
 dependencies = [
  "alsa-sys",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "libc",
 ]
 
@@ -130,9 +130,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.80"
+version = "1.0.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
 
 [[package]]
 name = "approx"
@@ -178,17 +178,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
 dependencies = [
  "concurrent-queue",
- "event-listener 5.2.0",
- "event-listener-strategy 0.5.0",
+ "event-listener 5.3.0",
+ "event-listener-strategy 0.5.1",
  "futures-core",
  "pin-project-lite",
 ]
 
 [[package]]
 name = "async-executor"
-version = "1.8.0"
+version = "1.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c"
+checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316"
 dependencies = [
  "async-lock 3.3.0",
  "async-task",
@@ -211,9 +211,9 @@ dependencies = [
 
 [[package]]
 name = "async-io"
-version = "2.3.1"
+version = "2.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65"
+checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884"
 dependencies = [
  "async-lock 3.3.0",
  "cfg-if",
@@ -261,19 +261,21 @@ dependencies = [
 
 [[package]]
 name = "async-process"
-version = "2.1.0"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "451e3cf68011bd56771c79db04a9e333095ab6349f7e47592b788e9b98720cc8"
+checksum = "d999d925640d51b662b7b4e404224dd81de70f4aa4a199383c2c5e5b86885fa3"
 dependencies = [
  "async-channel",
  "async-io",
  "async-lock 3.3.0",
  "async-signal",
+ "async-task",
  "blocking",
  "cfg-if",
- "event-listener 5.2.0",
+ "event-listener 5.3.0",
  "futures-lite",
  "rustix",
+ "tracing",
  "windows-sys 0.52.0",
 ]
 
@@ -320,9 +322,9 @@ dependencies = [
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
 
 [[package]]
 name = "autocxx"
@@ -356,7 +358,7 @@ dependencies = [
  "regex",
  "rustc-hash",
  "shlex",
- "syn 2.0.52",
+ "syn 2.0.58",
  "which",
 ]
 
@@ -369,7 +371,7 @@ dependencies = [
  "autocxx-engine",
  "env_logger",
  "indexmap 1.9.3",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -396,7 +398,7 @@ dependencies = [
  "rustversion",
  "serde_json",
  "strum_macros",
- "syn 2.0.52",
+ "syn 2.0.58",
  "tempfile",
  "thiserror",
  "version_check",
@@ -412,7 +414,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -429,15 +431,15 @@ dependencies = [
  "quote",
  "serde",
  "serde_json",
- "syn 2.0.52",
+ "syn 2.0.58",
  "thiserror",
 ]
 
 [[package]]
 name = "backtrace"
-version = "0.3.69"
+version = "0.3.71"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
 dependencies = [
  "addr2line",
  "cc",
@@ -459,9 +461,9 @@ dependencies = [
 
 [[package]]
 name = "base64"
-version = "0.21.7"
+version = "0.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
 
 [[package]]
 name = "bindgen"
@@ -469,7 +471,7 @@ version = "0.69.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cexpr",
  "clang-sys",
  "itertools 0.12.1",
@@ -480,7 +482,7 @@ dependencies = [
  "regex",
  "rustc-hash",
  "shlex",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -497,9 +499,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.2"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
 
 [[package]]
 name = "block"
@@ -531,9 +533,9 @@ checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
 
 [[package]]
 name = "bytemuck"
-version = "1.14.3"
+version = "1.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
+checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15"
 
 [[package]]
 name = "byteorder"
@@ -543,9 +545,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
 
 [[package]]
 name = "cairo-rs"
@@ -553,7 +555,7 @@ version = "0.19.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2650f66005301bd33cc486dec076e1293c4cecf768bc7ba9bf5d2b1be339b99c"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cairo-sys-rs",
  "glib",
  "libc",
@@ -620,9 +622,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.35"
+version = "0.4.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
@@ -645,9 +647,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.2"
+version = "4.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651"
+checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -662,19 +664,19 @@ dependencies = [
  "anstream",
  "anstyle",
  "clap_lex",
- "strsim 0.11.0",
+ "strsim 0.11.1",
 ]
 
 [[package]]
 name = "clap_derive"
-version = "4.5.0"
+version = "4.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
+checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
 dependencies = [
- "heck",
+ "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -864,14 +866,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
 dependencies = [
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
 name = "cxx"
-version = "1.0.119"
+version = "1.0.120"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "635179be18797d7e10edb9cd06c859580237750c7351f39ed9b298bfc17544ad"
+checksum = "ff4dc7287237dd438b926a81a1a5605dad33d286870e5eee2db17bf2bcd9e92a"
 dependencies = [
  "cc",
  "cxxbridge-flags",
@@ -881,31 +883,31 @@ dependencies = [
 
 [[package]]
 name = "cxx-gen"
-version = "0.7.119"
+version = "0.7.120"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5797d553b95704a6a49394acfdb93e2332b8aaa146713a1e8ebe362e86d9fa68"
+checksum = "cf9e305d914e15a8eefd7972a3b658d876d91a22681d555219feda30a9f5ea2b"
 dependencies = [
  "codespan-reporting",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
 name = "cxxbridge-flags"
-version = "1.0.119"
+version = "1.0.120"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a87ff7342ffaa54b7c61618e0ce2bbcf827eba6d55b923b83d82551acbbecfe5"
+checksum = "701a1ac7a697e249cdd8dc026d7a7dafbfd0dbcd8bd24ec55889f2bc13dd6287"
 
 [[package]]
 name = "cxxbridge-macro"
-version = "1.0.119"
+version = "1.0.120"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70b5b86cf65fa0626d85720619d80b288013477a91a0389fa8bc716bf4903ad1"
+checksum = "b404f596046b0bb2d903a9c786b875a126261b52b7c3a64bbb66382c41c771df"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -1129,9 +1131,9 @@ dependencies = [
 
 [[package]]
 name = "event-listener"
-version = "5.2.0"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
+checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24"
 dependencies = [
  "concurrent-queue",
  "parking",
@@ -1150,11 +1152,11 @@ dependencies = [
 
 [[package]]
 name = "event-listener-strategy"
-version = "0.5.0"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3"
 dependencies = [
- "event-listener 5.2.0",
+ "event-listener 5.3.0",
  "pin-project-lite",
 ]
 
@@ -1188,9 +1190,9 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
 
 [[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
 
 [[package]]
 name = "fdeflate"
@@ -1379,9 +1381,9 @@ checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
 
 [[package]]
 name = "futures-lite"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
 dependencies = [
  "fastrand",
  "futures-core",
@@ -1398,7 +1400,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -1537,9 +1539,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.12"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "a06fddc2749e0528d2813f95e050e87e52c8cbbae56223b9babf73b3e53b0cc6"
 dependencies = [
  "cfg-if",
  "libc",
@@ -1584,9 +1586,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 
 [[package]]
 name = "gio"
-version = "0.19.2"
+version = "0.19.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2eae10b27b6dd27e22ed0d812c6387deba295e6fc004a8b379e459b663b05a02"
+checksum = "c64947d08d7fbb03bf8ad1f25a8ac6cf4329bc772c9b7e5abe7bf9493c81194f"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -1615,11 +1617,11 @@ dependencies = [
 
 [[package]]
 name = "glib"
-version = "0.19.2"
+version = "0.19.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab9e86540b5d8402e905ad4ce7d6aa544092131ab564f3102175af176b90a053"
+checksum = "01e191cc1af1f35b9699213107068cd3fe05d9816275ac118dc785a0dd8faebf"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "futures-channel",
  "futures-core",
  "futures-executor",
@@ -1646,15 +1648,15 @@ dependencies = [
 
 [[package]]
 name = "glib-macros"
-version = "0.19.2"
+version = "0.19.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f5897ca27a83e4cdc7b4666850bade0a2e73e17689aabafcc9acddad9d823b8"
+checksum = "9972bb91643d589c889654693a4f1d07697fdcb5d104b5c44fb68649ba1bf68d"
 dependencies = [
- "heck",
+ "heck 0.5.0",
  "proc-macro-crate",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -1844,6 +1846,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
 name = "hermit-abi"
 version = "0.1.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1961,9 +1969,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.2.5"
+version = "2.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
  "hashbrown 0.14.3",
@@ -2105,9 +2113,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jni"
@@ -2180,18 +2188,19 @@ dependencies = [
 
 [[package]]
 name = "kurbo"
-version = "0.9.5"
+version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b"
+checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440"
 dependencies = [
  "arrayvec",
+ "smallvec",
 ]
 
 [[package]]
 name = "kurbo"
-version = "0.10.4"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440"
+checksum = "6e5aa9f0f96a938266bdb12928a67169e8d22c6a786fda8ed984b85e6ba93c3c"
 dependencies = [
  "arrayvec",
  "smallvec",
@@ -2277,9 +2286,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
 
 [[package]]
 name = "librsvg"
-version = "2.58.0-beta.1"
+version = "2.58.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59d441368ddd551d54ef8ebcf515cf8a22604856a66da21828fa1d57651a9f71"
+checksum = "de005d9589235493d0e2b62d055c0d8e368db4fb33e746dafc9400fb67b9c817"
 dependencies = [
  "cairo-rs",
  "cast",
@@ -2420,9 +2429,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.1"
+version = "2.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
 
 [[package]]
 name = "memmap2"
@@ -2435,9 +2444,9 @@ dependencies = [
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
  "autocfg",
 ]
@@ -2471,7 +2480,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -2513,9 +2522,9 @@ dependencies = [
 
 [[package]]
 name = "nalgebra"
-version = "0.32.4"
+version = "0.32.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4541eb06dce09c0241ebbaab7102f0a01a0c8994afed2e5d0d66775016e25ac2"
+checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef"
 dependencies = [
  "approx",
  "matrixmultiply",
@@ -2545,7 +2554,7 @@ version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "jni-sys",
  "log",
  "ndk-sys",
@@ -2570,15 +2579,9 @@ dependencies = [
 
 [[package]]
 name = "new_debug_unreachable"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
-
-[[package]]
-name = "no-std-compat"
-version = "0.4.1"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
 
 [[package]]
 name = "nom"
@@ -2596,7 +2599,7 @@ version = "6.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "crossbeam-channel",
  "filetime",
  "fsevent-sys",
@@ -2651,7 +2654,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -2712,7 +2715,7 @@ dependencies = [
  "proc-macro-crate",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -2723,12 +2726,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
 
 [[package]]
 name = "numeric-sort"
-version = "0.1.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5f2c4adf593c928171160e2632096353bb0306d3c8447143861374d5e678e37"
-dependencies = [
- "no-std-compat",
-]
+checksum = "5180ed575d2ae6100dc63813e3810aba273c291608cf019aa58f76784ecc331b"
 
 [[package]]
 name = "objc"
@@ -2840,14 +2840,14 @@ checksum = "e8890702dbec0bad9116041ae586f84805b13eecd1d8b1df27c29998a9969d6d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
 name = "pango"
-version = "0.19.2"
+version = "0.19.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7809e8af4df8d024a066106b72ca6bc7253a484ae3867041a96103ef8a13188d"
+checksum = "b1264d13deb823cc652f26cfe59afb1ec4b9db2a5bd27c41b738c879cc1bfaa1"
 dependencies = [
  "gio",
  "glib",
@@ -2924,9 +2924,9 @@ dependencies = [
 
 [[package]]
 name = "parry2d-f64"
-version = "0.13.6"
+version = "0.13.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "542444b3ef557470c352ca13ba34a3d5e558b34265339320b8fb560bc82c427e"
+checksum = "5565e2f28bad470868b5e5c146fd0e2716345b67d8b9f27e0fc147a1dd4790b5"
 dependencies = [
  "approx",
  "arrayvec",
@@ -3051,7 +3051,7 @@ dependencies = [
  "phf_shared 0.11.2",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -3060,7 +3060,7 @@ version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
 dependencies = [
- "siphasher",
+ "siphasher 0.3.11",
 ]
 
 [[package]]
@@ -3069,7 +3069,7 @@ version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
 dependencies = [
- "siphasher",
+ "siphasher 0.3.11",
 ]
 
 [[package]]
@@ -3102,9 +3102,9 @@ dependencies = [
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
 
 [[package]]
 name = "pin-utils"
@@ -3154,12 +3154,13 @@ dependencies = [
 
 [[package]]
 name = "polling"
-version = "3.5.0"
+version = "3.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
+checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
 dependencies = [
  "cfg-if",
  "concurrent-queue",
+ "hermit-abi 0.3.9",
  "pin-project-lite",
  "rustix",
  "tracing",
@@ -3213,12 +3214,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
 
 [[package]]
 name = "prettyplease"
-version = "0.2.16"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
+checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7"
 dependencies = [
  "proc-macro2",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -3256,9 +3257,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.78"
+version = "1.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
 dependencies = [
  "unicode-ident",
 ]
@@ -3338,9 +3339,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
 
 [[package]]
 name = "rayon"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -3373,14 +3374,14 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.3"
+version = "1.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
 dependencies = [
  "aho-corasick",
  "memchr",
  "regex-automata 0.4.6",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.3",
 ]
 
 [[package]]
@@ -3400,7 +3401,7 @@ checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.3",
 ]
 
 [[package]]
@@ -3411,9 +3412,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
 
 [[package]]
 name = "rgb"
@@ -3426,7 +3427,7 @@ dependencies = [
 
 [[package]]
 name = "rnote"
-version = "0.10.1"
+version = "0.10.2"
 dependencies = [
  "anyhow",
  "async-fs",
@@ -3476,7 +3477,7 @@ dependencies = [
 
 [[package]]
 name = "rnote-cli"
-version = "0.10.1"
+version = "0.10.2"
 dependencies = [
  "anyhow",
  "atty",
@@ -3495,7 +3496,7 @@ dependencies = [
 
 [[package]]
 name = "rnote-compose"
-version = "0.10.1"
+version = "0.10.2"
 dependencies = [
  "anyhow",
  "approx",
@@ -3524,7 +3525,7 @@ dependencies = [
 
 [[package]]
 name = "rnote-engine"
-version = "0.10.1"
+version = "0.10.2"
 dependencies = [
  "anyhow",
  "approx",
@@ -3659,11 +3660,11 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.31"
+version = "0.38.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -3678,11 +3679,11 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "rustybuzz"
-version = "0.12.1"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0ae5692c5beaad6a9e22830deeed7874eae8a4e3ba4076fb48e12c56856222c"
+checksum = "88117946aa1bfb53c2ae0643ceac6506337f44887f8c9fbfb43587b1cc52ba49"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "bytemuck",
  "smallvec",
  "ttf-parser",
@@ -3728,7 +3729,7 @@ version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cssparser",
  "derive_more",
  "fxhash",
@@ -3767,14 +3768,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.114"
+version = "1.0.115"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
 dependencies = [
  "itoa",
  "ryu",
@@ -3864,6 +3865,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
 
 [[package]]
+name = "siphasher"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
+
+[[package]]
 name = "slab"
 version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3884,9 +3891,9 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "smawk"
@@ -3981,9 +3988,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 
 [[package]]
 name = "strsim"
-version = "0.11.0"
+version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 
 [[package]]
 name = "strum_macros"
@@ -3991,7 +3998,7 @@ version = "0.24.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "rustversion",
@@ -4047,17 +4054,17 @@ version = "0.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "22975e8a2bac6a76bb54f898a6b18764633b00e780330f0b689f65afb3975564"
 dependencies = [
- "siphasher",
+ "siphasher 0.3.11",
 ]
 
 [[package]]
 name = "svgtypes"
-version = "0.14.0"
+version = "0.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59d7618f12b51be8171a7cfdda1e7a93f79cbc57c4e7adf89a749cf671125241"
+checksum = "d97ca9a891c9c70da8139ac9d8e8ea36a210fa21bb50eccd75d4a9561c83e87f"
 dependencies = [
- "kurbo 0.10.4",
- "siphasher",
+ "kurbo 0.11.0",
+ "siphasher 1.0.1",
 ]
 
 [[package]]
@@ -4144,9 +4151,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.52"
+version = "2.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
+checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -4155,14 +4162,14 @@ dependencies = [
 
 [[package]]
 name = "system-deps"
-version = "6.2.0"
+version = "6.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
 dependencies = [
  "cfg-expr",
- "heck",
+ "heck 0.5.0",
  "pkg-config",
- "toml 0.8.10",
+ "toml 0.8.12",
  "version-compare",
 ]
 
@@ -4174,9 +4181,9 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
 
 [[package]]
 name = "temp-dir"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd16aa9ffe15fe021c6ee3766772132c6e98dfa395a167e16864f61a9cfb71d6"
+checksum = "1f227968ec00f0e5322f9b8173c7a0cbcff6181a0a5b28e9892491c286277231"
 
 [[package]]
 name = "tempfile"
@@ -4233,22 +4240,22 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.57"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.57"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -4312,14 +4319,14 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "0.8.10"
+version = "0.8.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit 0.22.6",
+ "toml_edit 0.22.9",
 ]
 
 [[package]]
@@ -4337,7 +4344,7 @@ version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "serde",
  "serde_spanned",
  "toml_datetime",
@@ -4350,18 +4357,18 @@ version = "0.21.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
 dependencies = [
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "toml_datetime",
  "winnow 0.5.40",
 ]
 
 [[package]]
 name = "toml_edit"
-version = "0.22.6"
+version = "0.22.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
 dependencies = [
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "serde",
  "serde_spanned",
  "toml_datetime",
@@ -4387,7 +4394,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
@@ -4500,15 +4507,15 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
 
 [[package]]
 name = "unicode-bidi-mirroring"
-version = "0.1.0"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694"
+checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86"
 
 [[package]]
 name = "unicode-ccc"
-version = "0.1.2"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1"
+checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656"
 
 [[package]]
 name = "unicode-ident"
@@ -4574,24 +4581,24 @@ dependencies = [
 
 [[package]]
 name = "usvg"
-version = "0.40.0"
+version = "0.41.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c04150a94f0bfc3b2c15d4e151524d14cd06765fc6641d8b1c59a248360d4474"
+checksum = "5c704361d822337cfc00387672c7b59eaa72a1f0744f62b2a68aa228a0c6927d"
 dependencies = [
  "base64",
  "data-url",
  "flate2",
  "fontdb",
  "imagesize",
- "kurbo 0.9.5",
+ "kurbo 0.11.0",
  "log",
  "pico-args",
  "roxmltree",
  "rustybuzz",
  "simplecss",
- "siphasher",
+ "siphasher 1.0.1",
  "strict-num",
- "svgtypes 0.14.0",
+ "svgtypes 0.15.0",
  "tiny-skia-path",
  "unicode-bidi",
  "unicode-script",
@@ -4619,9 +4626,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
 
 [[package]]
 name = "version-compare"
-version = "0.1.1"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
+checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
 
 [[package]]
 name = "version_check"
@@ -4666,7 +4673,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
  "wasm-bindgen-shared",
 ]
 
@@ -4700,7 +4707,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -5084,7 +5091,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.58",
 ]
 
 [[package]]
diff --git a/pkgs/applications/graphics/rnote/default.nix b/pkgs/applications/graphics/rnote/default.nix
index cf4c2a54af071..2d60d46d612a1 100644
--- a/pkgs/applications/graphics/rnote/default.nix
+++ b/pkgs/applications/graphics/rnote/default.nix
@@ -27,13 +27,13 @@
 
 stdenv.mkDerivation rec {
   pname = "rnote";
-  version = "0.10.1";
+  version = "0.10.2";
 
   src = fetchFromGitHub {
     owner = "flxzt";
     repo = "rnote";
     rev = "v${version}";
-    hash = "sha256-J9M1d6C40EpqcSU5vYVfsCruhECkPJOdhzG2IX1tTQ0=";
+    hash = "sha256-SqT8bJfJM+d5fewso3C22M4Qo7wY2g2QmEot/gCpwT4=";
   };
 
   cargoDeps = rustPlatform.importCargoLock {
diff --git a/pkgs/applications/misc/ArchiSteamFarm/default.nix b/pkgs/applications/misc/ArchiSteamFarm/default.nix
index 13620b254a58b..7c334fb804558 100644
--- a/pkgs/applications/misc/ArchiSteamFarm/default.nix
+++ b/pkgs/applications/misc/ArchiSteamFarm/default.nix
@@ -11,13 +11,13 @@
 buildDotnetModule rec {
   pname = "ArchiSteamFarm";
   # nixpkgs-update: no auto update
-  version = "5.5.3.4";
+  version = "6.0.1.24";
 
   src = fetchFromGitHub {
     owner = "JustArchiNET";
     repo = "ArchiSteamFarm";
     rev = version;
-    hash = "sha256-9ISEIKrAK6UTDM3TPizBRMU+wfiinhnaWmS5CkXpkYo=";
+    hash = "sha256-IgsiL5YUeOWQ/WIaTfs0Kmv2XFori8ntGZhrx7xeMkg=";
   };
 
   dotnet-runtime = dotnetCorePackages.aspnetcore_8_0;
diff --git a/pkgs/applications/misc/ArchiSteamFarm/deps.nix b/pkgs/applications/misc/ArchiSteamFarm/deps.nix
index c5e4557d81e50..cc47f6d75949f 100644
--- a/pkgs/applications/misc/ArchiSteamFarm/deps.nix
+++ b/pkgs/applications/misc/ArchiSteamFarm/deps.nix
@@ -2,8 +2,8 @@
 # Please dont edit it manually, your changes might get overwritten!
 
 { fetchNuGet }: [
-  (fetchNuGet { pname = "AngleSharp"; version = "1.0.2"; sha256 = "0808lnbggp3dl116amxj1hz8cfh1a3hi8q10qwgdiwhqx919jslb"; })
-  (fetchNuGet { pname = "AngleSharp.XPath"; version = "2.0.3"; sha256 = "1z6j171ffw2w5c44j2d7kqki6c8j229i3xbi6pgpk9pas41mdrxx"; })
+  (fetchNuGet { pname = "AngleSharp"; version = "1.1.2"; sha256 = "0rfild46lmqhxkfh6nhy7a9m8zzv25lj29riav5j6dmzw07l7wif"; })
+  (fetchNuGet { pname = "AngleSharp.XPath"; version = "2.0.4"; sha256 = "0cqgabpjc7pwhlix5j43x6ppj21qnsc7nswn3zm6z004vcggfwf3"; })
   (fetchNuGet { pname = "ConfigureAwaitChecker.Analyzer"; version = "5.0.0.1"; sha256 = "01llfwhra5m3jj1qpa4rj1hbh01drirakzjc2963vkl9iwrzscyl"; })
   (fetchNuGet { pname = "CryptSharpStandard"; version = "1.0.0"; sha256 = "0nikzb92z4a2n969sz747ginwxsbrap5741bcwwxr4r6m2na9jz7"; })
   (fetchNuGet { pname = "Humanizer"; version = "2.14.1"; sha256 = "18cycx9gvbc3735chdi2r583x73m2fkz1ws03yi3g640j9zv00fp"; })
@@ -57,42 +57,46 @@
   (fetchNuGet { pname = "Humanizer.Core.zh-Hans"; version = "2.14.1"; sha256 = "0zn99311zfn602phxyskfjq9vly0w5712z6fly8r4q0h94qa8c85"; })
   (fetchNuGet { pname = "Humanizer.Core.zh-Hant"; version = "2.14.1"; sha256 = "0qxjnbdj645l5sd6y3100yyrq1jy5misswg6xcch06x8jv7zaw1p"; })
   (fetchNuGet { pname = "JetBrains.Annotations"; version = "2023.3.0"; sha256 = "0vp4mpn6gfckn8grzjm1jxlbqiq2fglm2rk9wq787adw7rxs8k7w"; })
-  (fetchNuGet { pname = "Markdig.Signed"; version = "0.34.0"; sha256 = "1jrs5fc8k99mh1kipvvlgwm0qlacrsh82bbpdclb84xz0h6nwwrh"; })
+  (fetchNuGet { pname = "Markdig.Signed"; version = "0.36.2"; sha256 = "02d658sjxd853lmqhhh13yhycm9nlmghl3p3fdn6iwmwhkly9qvy"; })
   (fetchNuGet { pname = "Microsoft.ApplicationInsights"; version = "2.21.0"; sha256 = "1q034jbqkxb8lddkd0ijp0wp0ymnnf3bg2mjpay027zv7jswnc4x"; })
-  (fetchNuGet { pname = "Microsoft.AspNetCore.JsonPatch"; version = "7.0.0"; sha256 = "1f13vsfs1rp9bmdp3khk4mk2fif932d72yxm2wszpsr239x4s2bf"; })
-  (fetchNuGet { pname = "Microsoft.AspNetCore.Mvc.NewtonsoftJson"; version = "7.0.0"; sha256 = "1w49rg0n5wb1m5wnays2mmym7qy7bsi2b1zxz97af2rkbw3s3hbd"; })
   (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; })
-  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.9.0"; sha256 = "1gljgi69k0fz8vy8bn6xlyxabj6q4vls2zza9wz7ng6ix3irm89r"; })
-  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; })
+  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.8.0"; sha256 = "173wjadp3gan4x2jfjchngnc4ca4mb95h1sbb28jydfkfw0z1zvj"; })
   (fetchNuGet { pname = "Microsoft.Extensions.ApiDescription.Server"; version = "6.0.5"; sha256 = "1pi2bm3cm0a7jzqzmfc2r7bpcdkmk3hhjfvb2c81j7wl7xdw3624"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "8.0.0"; sha256 = "080kab87qgq2kh0ijry5kfdiq9afyzb8s0k3jqi5zbbi540yq4zl"; })
   (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "8.0.0"; sha256 = "1jlpa4ggl1gr5fs7fdcw04li3y3iy05w3klr9lrrlc7v8w76kq71"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "8.0.0"; sha256 = "1m0gawiz8f5hc3li9vd5psddlygwgkiw13d7div87kmkf4idza8r"; })
   (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "8.0.0"; sha256 = "0i7qziz0iqmbk8zzln7kx9vd0lbx1x3va0yi3j1bgkjir13h78ps"; })
   (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "8.0.0"; sha256 = "1zw0bpp5742jzx03wvqc8csnvsbgdqi0ls9jfc5i2vd3cl8b74pg"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Diagnostics.Abstractions"; version = "8.0.0"; sha256 = "15m4j6w9n8h0mj7hlfzb83hd3wn7aq1s7fxbicm16slsjfwzj82i"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "8.0.0"; sha256 = "1idq65fxwcn882c06yci7nscy9i0rgw6mqjrl7362prvvsd9f15r"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Hosting.Abstractions"; version = "8.0.0"; sha256 = "00d5dwmzw76iy8z40ly01hy9gly49a7rpf7k7m99vrid1kxp346h"; })
   (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "8.0.0"; sha256 = "0nppj34nmq25gnrg0wh1q22y4wdqbih4ax493f226azv8mkp9s1i"; })
   (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "8.0.0"; sha256 = "1klcqhg3hk55hb6vmjiq2wgqidsl81aldw0li2z98lrwx26msrr6"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Configuration"; version = "8.0.0"; sha256 = "1d9b734vnll935661wqkgl7ry60rlh5p876l2bsa930mvfsaqfcv"; })
   (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "8.0.0"; sha256 = "0p50qn6zhinzyhq9sy5svnmqqwhw2jajs2pbjh9sah504wjvhscz"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "8.0.0"; sha256 = "04nm8v5a3zp0ill7hjnwnja3s2676b4wffdri8hdk2341p7mp403"; })
   (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "8.0.0"; sha256 = "0aldaz5aapngchgdr7dax9jw5wy7k7hmjgjpfgfv1wfif27jlkqm"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "7.3.1"; sha256 = "0dvknvmnzi3jn2kz0fbcb3ilryd75dwyiwqn6cwc6nd5gdz4mdlm"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.JsonWebTokens"; version = "7.3.1"; sha256 = "03pd6b35a5j1qxmcf9552rp43fwddn1z3czyb6wlf1w1f95b5fqb"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.Logging"; version = "7.3.1"; sha256 = "0368p59kf6r9dyk511phl65wvk76n8885d2m9812fpj0ifqcdqg8"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.Tokens"; version = "7.3.1"; sha256 = "0i8mqrvzx9xi9pg1c92iy6cr756nnc3lr5cdawj0yh1x919wvx59"; })
-  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.9.0"; sha256 = "1lls1fly2gr1n9n1xyl9k33l2v4pwfmylyzkq8v4v5ldnwkl1zdb"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "7.5.0"; sha256 = "0nigij1vz1biw1sl64mflx68fgm34lmnvq47z2n5p0qs534kvkhb"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.JsonWebTokens"; version = "7.5.0"; sha256 = "025ixbv7jq294n8yw4y1bbd92iz08q4jqnnzqp0s8lgi49sk9dad"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Logging"; version = "7.5.0"; sha256 = "1qyyfxww980s7xzw048kc8iqzarzbaj11cb5lrsisv777ccipma5"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Tokens"; version = "7.5.0"; sha256 = "0ns56pws3zlwjk8mjyfr02zl3nnhzka76wabfabplfci62bgi3h0"; })
+  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.8.0"; sha256 = "1syvl3g0hbrcgfi9rq6pld8s8hqqww4dflf1lxn59ccddyyx0gmv"; })
   (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc"; })
   (fetchNuGet { pname = "Microsoft.OpenApi"; version = "1.2.3"; sha256 = "07b19k89whj69j87afkz86gp9b3iybw8jqwvlgcn43m7fb2y99rr"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Extensions.Telemetry"; version = "1.0.0"; sha256 = "1b52s7z01wkg83dpkpyg7girjflm84zr65pacsfwm2hvhb9xa2w6"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Extensions.TrxReport.Abstractions"; version = "1.0.0"; sha256 = "0pvr4yga99fqr4z8s8js9hxki5c92qy7scvpqwslws5mri625m38"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Extensions.VSTestBridge"; version = "1.0.0"; sha256 = "0zzrwp5in56fhc2cdmn4i44v2jf13frbjwpb9v8s7fkr9ky4wh5w"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Platform"; version = "1.0.0"; sha256 = "1qbf922frk4c0cam57d98f3d5q5226pgrgjm7pfcamwy5whvx5sh"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Platform.MSBuild"; version = "1.0.0"; sha256 = "0my1fihyh86rckfzbrvl5kdcq34yp0ywl8azs2gx3c27sg4pjrp2"; })
+  (fetchNuGet { pname = "Microsoft.Testing.Extensions.Telemetry"; version = "1.0.2"; sha256 = "00psv2mvynd2bz8xnzvqvb32qr33glqxg4ni5j91b93k84yjy5ma"; })
+  (fetchNuGet { pname = "Microsoft.Testing.Extensions.TrxReport.Abstractions"; version = "1.0.2"; sha256 = "09yn3hi9npgi8rs2vyfyzcl8vbfa1lqcl6lgpymw5d7lg0hc511w"; })
+  (fetchNuGet { pname = "Microsoft.Testing.Extensions.VSTestBridge"; version = "1.0.2"; sha256 = "0c65fsc23xxw648xh83sjcmrn9hvs9q58l5lb36wflvaajbsjf2r"; })
+  (fetchNuGet { pname = "Microsoft.Testing.Platform"; version = "1.0.2"; sha256 = "0bq46f4v2r4nzwly7g0dsakyc1lcql9nh85sp59d1fwzaknf1n94"; })
+  (fetchNuGet { pname = "Microsoft.Testing.Platform.MSBuild"; version = "1.0.2"; sha256 = "1vjqrpqjx3z1irqgy0ckmkgyvrzqqqcikxs36q6gadyj643ra1c5"; })
   (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.5.0"; sha256 = "0qkjyf3ky6xpjg5is2sdsawm99ka7fzgid2bvpglwmmawqgm8gls"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.9.0"; sha256 = "1kgsl9w9fganbm9wvlkqgk0ag9hfi58z88rkfybc6kvg78bx89ca"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.9.0"; sha256 = "19ffh31a1jxzn8j69m1vnk5hyfz3dbxmflq77b8x82zybiilh5nl"; })
+  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.8.0"; sha256 = "0b0i7lmkrcfvim8i3l93gwqvkhhhfzd53fqfnygdqvkg6np0cg7m"; })
+  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.8.0"; sha256 = "0f5jah93kjkvxwmhwb78lw11m9pkkq9fvf135hpymmmpxqbdh97q"; })
   (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n"; })
-  (fetchNuGet { pname = "MSTest.TestAdapter"; version = "3.2.0"; sha256 = "0n7iw8ppjyps4sg0rfh5pags4wq58yg1g9vnxfwa73z38jws2c10"; })
-  (fetchNuGet { pname = "MSTest.TestFramework"; version = "3.2.0"; sha256 = "0n9aab1cxf8w23dl4yw7rqpi47v7gd02csq3zisc5whsrb9i0xbq"; })
+  (fetchNuGet { pname = "MSTest"; version = "3.2.2"; sha256 = "19pkywdlmgccv2ri52gbpb3pgci1ymb2ba5qhyp9j19vks6gf6cj"; })
+  (fetchNuGet { pname = "MSTest.Analyzers"; version = "3.2.2"; sha256 = "1ap7imbqxmz2namgli796pxj91gyn01k6xxnllldpwwbxpd0ijgd"; })
+  (fetchNuGet { pname = "MSTest.TestAdapter"; version = "3.2.2"; sha256 = "14nrxg1cd3lzaxw7zz8z91168sgnsf1xxnrpdy7wkd6ggk22hi19"; })
+  (fetchNuGet { pname = "MSTest.TestFramework"; version = "3.2.2"; sha256 = "0igdrjr300bqz5lnibf9vl8pkaky1l27f889gza3a9xs83mpd06p"; })
   (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; })
-  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
-  (fetchNuGet { pname = "Newtonsoft.Json.Bson"; version = "1.0.2"; sha256 = "0c27bhy9x3c2n26inq32kmp6drpm71n6mqnmcr19wrlcaihglj35"; })
   (fetchNuGet { pname = "Nito.AsyncEx.Coordination"; version = "5.1.2"; sha256 = "0sxvmqnv8a94k3pq1w3lh1vgjb8l62h1qamxcjl3pkq634h2fwrl"; })
   (fetchNuGet { pname = "Nito.AsyncEx.Tasks"; version = "5.1.2"; sha256 = "11wp47kc69sjdxrbg5pgx0wlffqlp0x5kr54ggnz2v19kmjz362v"; })
   (fetchNuGet { pname = "Nito.Collections.Deque"; version = "1.1.1"; sha256 = "152564q3s0n5swfv5p5rx0ghn2sm0g2xsnbd7gv8vb9yfklv7yg8"; })
@@ -101,12 +105,22 @@
   (fetchNuGet { pname = "NLog.Extensions.Logging"; version = "5.3.8"; sha256 = "1qnz91099f51vk7f5g2ig0041maw5hcbyqllxvj5zj7zkp0qw9b8"; })
   (fetchNuGet { pname = "NLog.Web.AspNetCore"; version = "5.3.8"; sha256 = "05a6bzvdf63lbnn6sj3yfggxcgv96j91kdbcw0ac5hxl58df58r6"; })
   (fetchNuGet { pname = "NuGet.Frameworks"; version = "5.11.0"; sha256 = "0wv26gq39hfqw9md32amr5771s73f5zn1z9vs4y77cgynxr73s4z"; })
-  (fetchNuGet { pname = "protobuf-net"; version = "3.2.26"; sha256 = "1mcg46xnhgqwjacy6j8kvp3rylpi26wjnmhwv8mh5cwjya9nynqb"; })
-  (fetchNuGet { pname = "protobuf-net.Core"; version = "3.2.26"; sha256 = "1wrr38ygdanf121bkl8b1d4kz1pawm064z69bqf3qbr46h4j575w"; })
-  (fetchNuGet { pname = "SteamKit2"; version = "2.5.0"; sha256 = "06rdagrxqws5yq1nrsd8chv3n9kgrb8rg894vcc40a8w6v27222w"; })
+  (fetchNuGet { pname = "NuGet.Frameworks"; version = "6.5.0"; sha256 = "0s37d1p4md0k6d4cy6sq36f2dgkd9qfbzapxhkvi8awwh0vrynhj"; })
+  (fetchNuGet { pname = "OpenTelemetry"; version = "1.8.0-rc.1"; sha256 = "0scpylqwqmp7lpmixci88v6zf7jzf3zrcbrhl30bd4p7r4alw2lp"; })
+  (fetchNuGet { pname = "OpenTelemetry.Api"; version = "1.7.0"; sha256 = "099yivazj5078076xydssf38r71c5nk3n7hy0lr51p80gln1vdha"; })
+  (fetchNuGet { pname = "OpenTelemetry.Api"; version = "1.8.0-rc.1"; sha256 = "0rnl9pkwbz2srkss3ay05jjrfkyzibxa6vx0hg7rzfpyjinhaycs"; })
+  (fetchNuGet { pname = "OpenTelemetry.Api.ProviderBuilderExtensions"; version = "1.7.0"; sha256 = "1j7bxhpwpcrjr4am7s4mavjjpasikv4kp8glmxiw5x9zvc0x0ix7"; })
+  (fetchNuGet { pname = "OpenTelemetry.Api.ProviderBuilderExtensions"; version = "1.8.0-rc.1"; sha256 = "18r7m4zjimkkwjqw8hd9xa85lnj1fy45xyd338fbpp9nm73j9r2g"; })
+  (fetchNuGet { pname = "OpenTelemetry.Exporter.Prometheus.AspNetCore"; version = "1.8.0-rc.1"; sha256 = "0fiz7qpzn64by4dlc5r9ha2qrp1j9w9lm6c7bzpvshzwz8ifamv7"; })
+  (fetchNuGet { pname = "OpenTelemetry.Extensions.Hosting"; version = "1.8.0-rc.1"; sha256 = "0p5sybp1b8fkccibhlmjlvdnhryscqh9f435c34bwp6vvllxf17z"; })
+  (fetchNuGet { pname = "OpenTelemetry.Instrumentation.AspNetCore"; version = "1.7.1"; sha256 = "19r12csxwdrvl5yx88mv68rzj2cy43004pwldy6q89v42sr01kyi"; })
+  (fetchNuGet { pname = "OpenTelemetry.Instrumentation.Http"; version = "1.7.1"; sha256 = "0mvrcz2mg3caf4lcwi1ai7i7ldb27p4y2qx9vckfjal203bps352"; })
+  (fetchNuGet { pname = "OpenTelemetry.Instrumentation.Runtime"; version = "1.7.0"; sha256 = "0klyd24akymj2hpjlnzmz7x9kggj4amhaqx1zh9nxjvlmmy64gxy"; })
+  (fetchNuGet { pname = "protobuf-net"; version = "3.2.30"; sha256 = "08bjdn8dbqpzn5c9fw89y5766irwplgyzhyxcrjzpywkwpj75r4i"; })
+  (fetchNuGet { pname = "protobuf-net.Core"; version = "3.2.30"; sha256 = "01mgw4s0b2vxf55v6fa3n5l9jwk6bkl60aaqv7azl198wwslkjhq"; })
+  (fetchNuGet { pname = "SteamKit2"; version = "3.0.0-alpha.1"; sha256 = "01lrbkbpfqdkhba9hsfg9fqyh1sa9r2cp54r2wlb83zfr3f5q8l8"; })
   (fetchNuGet { pname = "Swashbuckle.AspNetCore"; version = "6.5.0"; sha256 = "0k61chpz5j59s1yax28vx0mppx20ff8vg8grwja112hfrzj1f45n"; })
   (fetchNuGet { pname = "Swashbuckle.AspNetCore.Annotations"; version = "6.5.0"; sha256 = "00n8s45xwbayj3p6x3awvs87vqvmzypny21nqc61m7a38d1asijv"; })
-  (fetchNuGet { pname = "Swashbuckle.AspNetCore.Newtonsoft"; version = "6.5.0"; sha256 = "1160r9splvmxrgk3b8yzgls0pxxwak3iqfr8v13ah5mwy8zkpx71"; })
   (fetchNuGet { pname = "Swashbuckle.AspNetCore.Swagger"; version = "6.5.0"; sha256 = "1s6axf6fin8sss3bvzp0s039rxrx71vx4rl559miw12bz3lld8kc"; })
   (fetchNuGet { pname = "Swashbuckle.AspNetCore.SwaggerGen"; version = "6.5.0"; sha256 = "0hq93gy5vyrigpdk9lhqwxglxwkbxa8ydllwcqs4bwfcsspzrs83"; })
   (fetchNuGet { pname = "Swashbuckle.AspNetCore.SwaggerUI"; version = "6.5.0"; sha256 = "17hx7kc187higm0gk67dndng3n7932sn3fwyj48l45cvyr3025h7"; })
@@ -119,11 +133,13 @@
   (fetchNuGet { pname = "System.Composition.Runtime"; version = "8.0.0"; sha256 = "0snljpgfmg0wlkwilkvn9qjjghq1pjdfgdpnwhvl2qw6vzdij703"; })
   (fetchNuGet { pname = "System.Composition.TypedParts"; version = "8.0.0"; sha256 = "0skwla26d8clfz3alr8m42qbzsrbi7dhg74z6ha832b6730mm4pr"; })
   (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "5.0.0"; sha256 = "0phd2qizshjvglhzws1jd0cq4m54gscz4ychzr3x6wbgl4vvfrga"; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "8.0.0"; sha256 = "0nzra1i0mljvmnj1qqqg37xs7bl71fnpl68nwmdajchh65l878zr"; })
+  (fetchNuGet { pname = "System.IO.Hashing"; version = "8.0.0"; sha256 = "1hg5i9hiihj9x4d0mlvhfddmivzrhzz83dyh26fqw1nd8jvqccxk"; })
   (fetchNuGet { pname = "System.Linq.Async"; version = "6.0.1"; sha256 = "10ira8hmv0i54yp9ggrrdm1c06j538sijfjpn1kmnh9j2xk5yzmq"; })
   (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; })
   (fetchNuGet { pname = "System.Security.AccessControl"; version = "5.0.0"; sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r"; })
   (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "8.0.0"; sha256 = "1ysjx3b5ips41s32zacf4vs7ig41906mxrsbmykdzi0hvdmjkgbx"; })
   (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "7.0.0"; sha256 = "0sn6hxdjm7bw3xgsmg041ccchsa4sp02aa27cislw3x61dbr68kq"; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "8.0.0"; sha256 = "1lgdd78cik4qyvp2fggaa0kzxasw6kc9a6cjqw46siagrm0qnc3y"; })
   (fetchNuGet { pname = "zxcvbn-core"; version = "7.0.92"; sha256 = "1pbi0n3za8zsnkbvq19njy4h4hy12a6rv4rknf4a2m1kdhxb3cgx"; })
 ]
diff --git a/pkgs/applications/misc/ArchiSteamFarm/web-ui/default.nix b/pkgs/applications/misc/ArchiSteamFarm/web-ui/default.nix
index d7f70bb8c62d0..535f161e24723 100644
--- a/pkgs/applications/misc/ArchiSteamFarm/web-ui/default.nix
+++ b/pkgs/applications/misc/ArchiSteamFarm/web-ui/default.nix
@@ -2,7 +2,7 @@
 
 buildNpmPackage rec {
   pname = "asf-ui";
-  version = "7406f7126a8351db67aad9f3a0f90c9dc123d80d";
+  version = "f70253c96e76fff5c5537c7be57a57de4e273eb8";
 
   src = fetchFromGitHub {
     owner = "JustArchiNET";
@@ -10,10 +10,10 @@ buildNpmPackage rec {
     # updated by the update script
     # this is always the commit that should be used with asf-ui from the latest asf version
     rev = version;
-    hash = "sha256-yTBJoihDc4z4+a03S56MQORvz/l6aqBDzLEi0UrM1N4=";
+    hash = "sha256-hw6M8O486vnWqdO4DqljOoGEevykpxhez3QL745VfIk=";
   };
 
-  npmDepsHash = "sha256-S/OwjmfAyEVZfWQ7vqKFctbJRqED0HVJlWEGXrqB1Ys=";
+  npmDepsHash = "sha256-GpGVM9c5yaLHi77qpShm30/uObg1TdLFCIhmFvLEhaU=";
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/applications/misc/ausweisapp/default.nix b/pkgs/applications/misc/ausweisapp/default.nix
index f00271bf72339..a3dc7b737d4b4 100644
--- a/pkgs/applications/misc/ausweisapp/default.nix
+++ b/pkgs/applications/misc/ausweisapp/default.nix
@@ -15,13 +15,13 @@
 }:
 stdenv.mkDerivation (finalAttrs: {
   pname = "ausweisapp";
-  version = "2.1.0";
+  version = "2.1.1";
 
   src = fetchFromGitHub {
     owner = "Governikus";
     repo = "AusweisApp2";
     rev = finalAttrs.version;
-    hash = "sha256-wgVu5Yr65Gu1z5SEWy5l4B6UiI5bIobBfZLhL7s+SRE=";
+    hash = "sha256-YRRm8/yDwQIUjzqYzlqij8h2ri39Q7L8jVh5fgrZbGs=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/bashSnippets/default.nix b/pkgs/applications/misc/bashSnippets/default.nix
index cec4e8dd8c913..f4e25200835b7 100644
--- a/pkgs/applications/misc/bashSnippets/default.nix
+++ b/pkgs/applications/misc/bashSnippets/default.nix
@@ -45,7 +45,7 @@ stdenv.mkDerivation {
     description = "A collection of small bash scripts for heavy terminal users";
     homepage = "https://github.com/alexanderepstein/Bash-Snippets";
     license = licenses.mit;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/misc/buku/default.nix b/pkgs/applications/misc/buku/default.nix
index 4e2a5e29999c7..36d4000214adc 100644
--- a/pkgs/applications/misc/buku/default.nix
+++ b/pkgs/applications/misc/buku/default.nix
@@ -82,6 +82,6 @@ with python3.pkgs; buildPythonApplication rec {
     homepage = "https://github.com/jarun/Buku";
     license = licenses.gpl3;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ matthiasbeyer infinisil ];
+    maintainers = with maintainers; [ matthiasbeyer ];
   };
 }
diff --git a/pkgs/applications/misc/camunda-modeler/default.nix b/pkgs/applications/misc/camunda-modeler/default.nix
index 89a16a7c97b75..d0065910e9065 100644
--- a/pkgs/applications/misc/camunda-modeler/default.nix
+++ b/pkgs/applications/misc/camunda-modeler/default.nix
@@ -9,11 +9,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "camunda-modeler";
-  version = "5.21.0";
+  version = "5.22.0";
 
   src = fetchurl {
     url = "https://github.com/camunda/camunda-modeler/releases/download/v${version}/camunda-modeler-${version}-linux-x64.tar.gz";
-    hash = "sha256-brZRYvRrOHj/HUb+w5tPkxHnJzVyFBKshk2ZO7YMzsU=";
+    hash = "sha256-WLJMF+G7pP7OZh6xDrO/JpNV9iX/9XBmi5kRPp3TJBI=";
   };
   sourceRoot = "camunda-modeler-${version}-linux-x64";
 
diff --git a/pkgs/applications/misc/cherrytree/default.nix b/pkgs/applications/misc/cherrytree/default.nix
index f6b7e955176e6..ffa44c63f96c4 100644
--- a/pkgs/applications/misc/cherrytree/default.nix
+++ b/pkgs/applications/misc/cherrytree/default.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation rec {
   pname = "cherrytree";
-  version = "1.1.0";
+  version = "1.1.2";
 
   src = fetchFromGitHub {
     owner = "giuspen";
     repo = "cherrytree";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YoHaWc/olJrbV1A4hqDgYOLVlpHBrgI0x2TFr9oeqh4=";
+    hash = "sha256-gDDFrF1yK6mWwkb3KJVRj6P5aiH1pQ/xL17XwVb4rfk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/confy/default.nix b/pkgs/applications/misc/confy/default.nix
index 5d9a97d95425f..89110aead938b 100644
--- a/pkgs/applications/misc/confy/default.nix
+++ b/pkgs/applications/misc/confy/default.nix
@@ -11,7 +11,7 @@
 , pkg-config
 , python3
 , stdenv
-, wrapGAppsHook
+, wrapGAppsHook4
 }:
 
 stdenv.mkDerivation (finalAttrs: {
@@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
     meson
     ninja
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
@@ -46,6 +46,8 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   postPatch = ''
+    substituteInPlace build-aux/meson/postinstall.py \
+      --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
     patchShebangs build-aux/meson/postinstall.py
   '';
 
diff --git a/pkgs/applications/misc/fluidd/default.nix b/pkgs/applications/misc/fluidd/default.nix
index e4bccc6b6a11b..150bbd5700371 100644
--- a/pkgs/applications/misc/fluidd/default.nix
+++ b/pkgs/applications/misc/fluidd/default.nix
@@ -2,12 +2,12 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "fluidd";
-  version = "1.29.0";
+  version = "1.29.1";
 
   src = fetchurl {
     name = "fluidd-v${version}.zip";
     url = "https://github.com/cadriel/fluidd/releases/download/v${version}/fluidd.zip";
-    sha256 = "sha256-MVrvuVt7HDutxb6c4BpRWH+cEeszc7wenuFtGThcU0Y=";
+    sha256 = "sha256-Zh/H1XAUcFl20yPLt9uIqBLDvUH8ATL9g6oFwvyhkzw=";
   };
 
   nativeBuildInputs = [ unzip ];
diff --git a/pkgs/applications/misc/gnome-solanum/default.nix b/pkgs/applications/misc/gnome-solanum/default.nix
index 4c507edfb06f1..b58d5e67d6084 100644
--- a/pkgs/applications/misc/gnome-solanum/default.nix
+++ b/pkgs/applications/misc/gnome-solanum/default.nix
@@ -10,7 +10,7 @@
 , ninja
 , pkg-config
 , rustc
-, wrapGAppsHook
+, wrapGAppsHook4
 , python3
 , git
 , glib
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
     python3
     git
     desktop-file-utils
diff --git a/pkgs/applications/misc/googleearth-pro/default.nix b/pkgs/applications/misc/googleearth-pro/default.nix
index 59912ef6b1ac8..2e139b0d71cad 100644
--- a/pkgs/applications/misc/googleearth-pro/default.nix
+++ b/pkgs/applications/misc/googleearth-pro/default.nix
@@ -120,6 +120,6 @@ mkDerivation rec {
     license = licenses.unfree;
     maintainers = with maintainers; [ friedelino shamilton ];
     platforms = platforms.linux;
-    knownVulnerabilities = [ "Includes vulnerable bundled libraries." ];
+    knownVulnerabilities = [ "Includes vulnerable versions of bundled libraries: openssl, ffmpeg, gdal, and proj." ];
   };
 }
diff --git a/pkgs/applications/misc/gpu-viewer/default.nix b/pkgs/applications/misc/gpu-viewer/default.nix
index 5d703f7d6e374..18a8f53966897 100644
--- a/pkgs/applications/misc/gpu-viewer/default.nix
+++ b/pkgs/applications/misc/gpu-viewer/default.nix
@@ -9,7 +9,7 @@
 , gobject-introspection
 , vulkan-tools
 , python3
-, wrapGAppsHook
+, wrapGAppsHook4
 , gdk-pixbuf
 , lsb-release
 , glxinfo
@@ -35,7 +35,7 @@ python3.pkgs.buildPythonApplication rec {
     meson
     ninja
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/applications/misc/gramps/default.nix b/pkgs/applications/misc/gramps/default.nix
index e4bf463ac4a30..fdfcfe4ce3160 100644
--- a/pkgs/applications/misc/gramps/default.nix
+++ b/pkgs/applications/misc/gramps/default.nix
@@ -23,7 +23,7 @@ let
   inherit (pythonPackages) buildPythonApplication pythonOlder;
 in
 buildPythonApplication rec {
-  version = "5.2.1";
+  version = "5.2.2";
   pname = "gramps";
   pyproject = true;
 
@@ -32,8 +32,8 @@ buildPythonApplication rec {
   src = fetchFromGitHub {
     owner = "gramps-project";
     repo = "gramps";
-    rev = "v${version}";
-    hash = "sha256-KgUc6AFLVFf3SYpjY/le0g4jNhGe4gpYcnkDEIZ/gxQ=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-umyc5G4p0GSEQEtq6sPUgtq1waNL1OW7iLxnf5dGcLc=";
   };
 
   patches = [
diff --git a/pkgs/applications/misc/heimer/default.nix b/pkgs/applications/misc/heimer/default.nix
index b044c7fedbed2..8672169d02abc 100644
--- a/pkgs/applications/misc/heimer/default.nix
+++ b/pkgs/applications/misc/heimer/default.nix
@@ -8,13 +8,13 @@
 
 mkDerivation rec {
   pname = "heimer";
-  version = "4.3.0";
+  version = "4.4.0";
 
   src = fetchFromGitHub {
     owner = "juzzlin";
     repo = pname;
     rev = version;
-    hash = "sha256-VIlNahpSRQNpfOKXnI/GQANuhZ+vnoXsudwHmRbHIjs=";
+    hash = "sha256-47bQmT2bHcbWpeosuF/vpSJcws4SqTmalY/XFEf7cxQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/inlyne/default.nix b/pkgs/applications/misc/inlyne/default.nix
index f20f70c3b0286..bd765c864d220 100644
--- a/pkgs/applications/misc/inlyne/default.nix
+++ b/pkgs/applications/misc/inlyne/default.nix
@@ -15,16 +15,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "inlyne";
-  version = "0.4.1";
+  version = "0.4.2";
 
   src = fetchFromGitHub {
     owner = "trimental";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-kZQREYnauR8xusyX6enBPUKHSe39aBLlrZjKEjJlfx0=";
+    hash = "sha256-Kae8WnahA/6k6QT5htYU2+diAFkmxVsbVaxRUlhf39o=";
   };
 
-  cargoHash = "sha256-2mQFr2nLJ/iBLpdOUmerY6F2C8Kt+/vMEjS6THpmJic=";
+  cargoHash = "sha256-M6daK2y9HBRDV2wQjw87g1QYOqiJBfRf9uW1Eg6z6C8=";
 
   nativeBuildInputs = [
     installShellFiles
diff --git a/pkgs/applications/misc/johnny-reborn/default.nix b/pkgs/applications/misc/johnny-reborn/default.nix
index c2329e2c26f21..db8eec95f2b1d 100644
--- a/pkgs/applications/misc/johnny-reborn/default.nix
+++ b/pkgs/applications/misc/johnny-reborn/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "johnny-reborn-engine";
-  version = "0.34";
+  version = "0.45";
 
   src = fetchFromGitHub {
     owner = "xesf";
     repo = "jc_reborn";
     rev = "v${version}";
-    hash = "sha256-JXaYSHpow7Pzy+ATEinET9ffvPIkOmlylnerZJnMUjY=";
+    hash = "sha256-PDh2RKdvm4LkDKi963CB5RiraWcS3FED6ug8T1J65GM=";
   };
 
   buildInputs = [ SDL2 ];
diff --git a/pkgs/applications/misc/josm/default.nix b/pkgs/applications/misc/josm/default.nix
index 6b5ce0b3c44db..4283d9d92abe1 100644
--- a/pkgs/applications/misc/josm/default.nix
+++ b/pkgs/applications/misc/josm/default.nix
@@ -3,20 +3,20 @@
 }:
 let
   pname = "josm";
-  version = "19017";
+  version = "19039";
   srcs = {
     jar = fetchurl {
       url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
-      hash = "sha256-+PSsvauVe+e+qB7sz9AFmC/dZhWHFHe0zWYPEhgvRIQ=";
+      hash = "sha256-iH6g18lJrvfAvtkAaVPSK7vhgdU6oI7X10GkFcwpsBs=";
     };
     macosx = fetchurl {
-      url = "https://josm.openstreetmap.de/download/macosx/josm-macos-${version}-java17.zip";
-      hash = "sha256-QYvAC+W7gHC5unwfcbQ0sz5U1VkMwIIUkDWQK9vDe2A=";
+      url = "https://josm.openstreetmap.de/download/macosx/josm-macos-${version}-java21.zip";
+      hash = "sha256-yA+Qf76MbouiLdH9o1Ri8ptbG70YZoI13pBA9Ki61/0=";
     };
     pkg = fetchsvn {
       url = "https://josm.openstreetmap.de/svn/trunk/native/linux/tested";
       rev = version;
-      sha256 = "sha256-Pb4EAyvERz6kP3EmkgmUy/58KQHhBJmZJvpAj72GCIk=";
+      sha256 = "sha256-L7P6FtqKLB4e+ezPzXePM33qj5esNoRlTFXi0/GhdsA=";
     };
   };
 
diff --git a/pkgs/applications/misc/jrnl/default.nix b/pkgs/applications/misc/jrnl/default.nix
index 43d320a4c0435..1e8113765f12b 100644
--- a/pkgs/applications/misc/jrnl/default.nix
+++ b/pkgs/applications/misc/jrnl/default.nix
@@ -1,27 +1,32 @@
-{ lib
-, fetchFromGitHub
-, python3
-, testers
-, jrnl
+{
+  lib,
+  fetchFromGitHub,
+  python3,
+  testers,
+  jrnl,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "jrnl";
   version = "4.1";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jrnl-org";
-    repo = pname;
+    repo = "jrnl";
     rev = "refs/tags/v${version}";
     hash = "sha256-DtujXSDJWnOrHjVgJEJNKJMhSrNBHlR2hvHeHLSIF2o=";
   };
 
-  nativeBuildInputs = with python3.pkgs; [
-    poetry-core
-  ];
+  postPatch = ''
+    # Support pytest_bdd 7.1.2 and later, https://github.com/jrnl-org/jrnl/pull/1878
+    substituteInPlace tests/lib/when_steps.py \
+      --replace-fail "from pytest_bdd.steps import inject_fixture" "from pytest_bdd.compat import inject_fixture"
+  '';
 
-  propagatedBuildInputs = with python3.pkgs; [
+  build-system = with python3.pkgs; [ poetry-core ];
+
+  dependencies = with python3.pkgs; [
     asteval
     colorama
     cryptography
@@ -43,14 +48,11 @@ python3.pkgs.buildPythonApplication rec {
     toml
   ];
 
-
   preCheck = ''
     export HOME=$(mktemp -d);
   '';
 
-  pythonImportsCheck = [
-    "jrnl"
-  ];
+  pythonImportsCheck = [ "jrnl" ];
 
   passthru.tests.version = testers.testVersion {
     package = jrnl;
@@ -58,11 +60,14 @@ python3.pkgs.buildPythonApplication rec {
   };
 
   meta = with lib; {
-    changelog = "https://github.com/jrnl-org/jrnl/releases/tag/v${version}";
-    description = "Simple command line journal application that stores your journal in a plain text file";
+    description = "Command line journal application that stores your journal in a plain text file";
     homepage = "https://jrnl.sh/";
+    changelog = "https://github.com/jrnl-org/jrnl/releases/tag/v${version}";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ bryanasdev000 zalakain ];
+    maintainers = with maintainers; [
+      bryanasdev000
+      zalakain
+    ];
     mainProgram = "jrnl";
   };
 }
diff --git a/pkgs/applications/misc/kord/default.nix b/pkgs/applications/misc/kord/default.nix
index 8283cebb38ab9..43be74e134418 100644
--- a/pkgs/applications/misc/kord/default.nix
+++ b/pkgs/applications/misc/kord/default.nix
@@ -2,6 +2,7 @@
 , stdenv
 , darwin
 , fetchFromGitHub
+, fetchpatch
 , rustPlatform
 , pkg-config
 , alsa-lib
@@ -28,6 +29,17 @@ rustPlatform.buildRustPackage rec {
     };
   };
 
+  patches = [
+    # Fixes build issues due to refactored Rust compiler feature annotations.
+    # Should be removable with the next release after v. 0.6.1.
+    (fetchpatch {
+      name = "fix-rust-features.patch";
+      url = "https://github.com/twitchax/kord/commit/fa9bb979b17d77f54812a915657c3121f76c5d82.patch";
+      hash = "sha256-XQu9P7372J2dHWzvpvbPtALS0Bh8EC+J1EyG3qlak2M=";
+      excludes = [ "Cargo.*" ];
+    })
+  ];
+
   nativeBuildInputs = lib.optionals stdenv.isLinux [ pkg-config ]
     ++ lib.optionals stdenv.isDarwin [ rustPlatform.bindgenHook ];
 
diff --git a/pkgs/applications/misc/megasync/default.nix b/pkgs/applications/misc/megasync/default.nix
index 79800a6c46eec..cb97ca6723089 100644
--- a/pkgs/applications/misc/megasync/default.nix
+++ b/pkgs/applications/misc/megasync/default.nix
@@ -8,7 +8,6 @@
 , doxygen
 , fetchFromGitHub
 , ffmpeg
-, freeimage
 , libmediainfo
 , libraw
 , libsodium
@@ -28,13 +27,13 @@
 }:
 mkDerivation rec {
   pname = "megasync";
-  version = "4.9.0.0";
+  version = "4.9.1.0";
 
   src = fetchFromGitHub {
     owner = "meganz";
     repo = "MEGAsync";
     rev = "v${version}_Linux";
-    sha256 = "sha256-s0E8kJ4PJmhaxVcWPCyCk/KbcX4V3IESdZhSosPlZuM=";
+    sha256 = "sha256-Y1nfY5iP64iSCYwzqxbjZAQNHyj4yVbSudSInm+yJzY=";
     fetchSubmodules = true;
   };
 
@@ -54,7 +53,6 @@ mkDerivation rec {
     cryptopp
     curl
     ffmpeg
-    freeimage
     libmediainfo
     libraw
     libsodium
@@ -72,7 +70,6 @@ mkDerivation rec {
     ./noinstall-distro-version.patch
     # megasync target is not part of the install rule thanks to a commented block
     ./install-megasync.patch
-    ./ffmpeg_44.patch
   ];
 
   postPatch = ''
@@ -98,7 +95,7 @@ mkDerivation rec {
     "--with-cryptopp"
     "--with-curl"
     "--with-ffmpeg"
-    "--with-freeimage"
+    "--without-freeimage"
     "--without-readline"
     "--without-termcap"
     "--with-sodium"
@@ -111,10 +108,10 @@ mkDerivation rec {
   '';
 
   preBuild = ''
-    qmake CONFIG+="release" MEGA.pro
+    qmake CONFIG+="nofreeimage release" MEGA.pro
     pushd MEGASync
       lrelease MEGASync.pro
-      DESKTOP_DESTDIR="$out" qmake PREFIX="$out" -o Makefile MEGASync.pro CONFIG+=release
+      DESKTOP_DESTDIR="$out" qmake PREFIX="$out" -o Makefile MEGASync.pro CONFIG+="nofreeimage release"
     popd
   '';
 
@@ -124,6 +121,6 @@ mkDerivation rec {
     homepage = "https://mega.nz/";
     license = licenses.unfree;
     platforms = [ "i686-linux" "x86_64-linux" ];
-    maintainers = [ maintainers.michojel ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/misc/megasync/ffmpeg_44.patch b/pkgs/applications/misc/megasync/ffmpeg_44.patch
deleted file mode 100644
index 901635e43f3e6..0000000000000
--- a/pkgs/applications/misc/megasync/ffmpeg_44.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: megasync-4.6.1.0/src/MEGASync/mega/src/gfx/freeimage.cpp
-===================================================================
---- megasync-4.6.1.0.orig/src/MEGASync/mega/src/gfx/freeimage.cpp
-+++ megasync-4.6.1.0/src/MEGASync/mega/src/gfx/freeimage.cpp
-@@ -253,7 +253,8 @@ bool GfxProcFreeImage::readbitmapFfmpeg(
- 
-     // Force seeking to key frames
-     formatContext->seek2any = false;
--    videoStream->skip_to_keyframe = true;
-+    // no longer exposed in ffmpeg 4.4; the line above should be sufficient
-+    //videoStream->skip_to_keyframe = true;
-     if (decoder->capabilities & CAP_TRUNCATED)
-     {
-         codecContext->flags |= CAP_TRUNCATED;
diff --git a/pkgs/applications/misc/merkaartor/default.nix b/pkgs/applications/misc/merkaartor/default.nix
index 52b4d78bb5a9e..ce6cbc2a3b76d 100644
--- a/pkgs/applications/misc/merkaartor/default.nix
+++ b/pkgs/applications/misc/merkaartor/default.nix
@@ -56,9 +56,15 @@ stdenv.mkDerivation rec {
     (lib.cmakeBool "ZBAR" withZbar)
   ];
 
-  postInstall = lib.optionalString stdenv.isDarwin ''
+  postInstall = ''
+    # Binary is looking for .qm files in share/merkaartor
+    mv $out/share/merkaartor/{translations/*.qm,}
+    rm -r $out/share/merkaartor/translations
+  '' + lib.optionalString stdenv.isDarwin ''
     mkdir -p $out/{Applications,bin}
     mv $out/merkaartor.app $out/Applications
+    # Prevent wrapping, otherwise plugins will not be loaded
+    chmod -x $out/Applications/merkaartor.app/Contents/plugins/background/*.dylib
     makeWrapper $out/{Applications/merkaartor.app/Contents/MacOS,bin}/merkaartor
   '';
 
diff --git a/pkgs/applications/misc/minder/default.nix b/pkgs/applications/misc/minder/default.nix
index a6f3130f9f1e1..a02647f4a9fbc 100644
--- a/pkgs/applications/misc/minder/default.nix
+++ b/pkgs/applications/misc/minder/default.nix
@@ -25,13 +25,13 @@
 
 stdenv.mkDerivation rec {
   pname = "minder";
-  version = "1.16.3";
+  version = "1.16.4";
 
   src = fetchFromGitHub {
     owner = "phase1geo";
     repo = pname;
     rev = version;
-    sha256 = "sha256-YDsWWC4exh+9V87WyjdMdCH1arjBct3oEXbvaFyAaMY=";
+    sha256 = "sha256-1r2PbBYw4mmiScKbX9BGqe4i+emSvismJfPm3opLlOg=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/mkgmap/default.nix b/pkgs/applications/misc/mkgmap/default.nix
index 7f97818c7452f..40530d16391ff 100644
--- a/pkgs/applications/misc/mkgmap/default.nix
+++ b/pkgs/applications/misc/mkgmap/default.nix
@@ -16,12 +16,12 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mkgmap";
-  version = "4918";
+  version = "4919";
 
   src = fetchsvn {
     url = "https://svn.mkgmap.org.uk/mkgmap/mkgmap/trunk";
     rev = version;
-    sha256 = "sha256-oQ/2KY6xA/kwAroHiPqcIJlcPsTTeStUu8WN/95ZUTw=";
+    sha256 = "sha256-WMFZEGTXVAaBlEKUqclmkw3pKnWSdbvulDvSi7TQn8k=";
   };
 
   patches = [
diff --git a/pkgs/applications/misc/mkgmap/splitter/default.nix b/pkgs/applications/misc/mkgmap/splitter/default.nix
index 801af789d47d8..c16b97f4a7e9d 100644
--- a/pkgs/applications/misc/mkgmap/splitter/default.nix
+++ b/pkgs/applications/misc/mkgmap/splitter/default.nix
@@ -15,12 +15,12 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "splitter";
-  version = "653";
+  version = "654";
 
   src = fetchsvn {
     url = "https://svn.mkgmap.org.uk/mkgmap/splitter/trunk";
     rev = version;
-    sha256 = "sha256-iw414ecnOfeG3FdlIaoVOPv9BXZ95uUHuPzCQGH4G+A=";
+    sha256 = "sha256-y/pl8kIQ6fiF541ho72LMgJFWJdkUBqPToQGCGmmcfg=";
   };
 
   patches = [
diff --git a/pkgs/applications/misc/nwg-displays/default.nix b/pkgs/applications/misc/nwg-displays/default.nix
index 66bc1d838de12..22d4e20d5eef7 100644
--- a/pkgs/applications/misc/nwg-displays/default.nix
+++ b/pkgs/applications/misc/nwg-displays/default.nix
@@ -8,7 +8,7 @@
 , pango
 , python310Packages
 , wrapGAppsHook
-, hyprlandSupport ? false
+, hyprlandSupport ? true
 , wlr-randr
 }:
 
diff --git a/pkgs/applications/misc/organicmaps/default.nix b/pkgs/applications/misc/organicmaps/default.nix
index a53c6444df048..f369508edd7ef 100644
--- a/pkgs/applications/misc/organicmaps/default.nix
+++ b/pkgs/applications/misc/organicmaps/default.nix
@@ -29,13 +29,13 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "organicmaps";
-  version = "2024.03.18-5";
+  version = "2024.03.31-8";
 
   src = fetchFromGitHub {
     owner = "organicmaps";
     repo = "organicmaps";
     rev = "${version}-android";
-    hash = "sha256-KoQlS2dW0tTZSDnGKF2F0+JeqMb0Fm0brz1gVCC8xY4=";
+    hash = "sha256-U8tKrL5tnhT/RMvxROk8Q4lO22ylqiMM1QonZ1Rn+CY=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/misc/parsec/bin.nix b/pkgs/applications/misc/parsec/bin.nix
index 602c366c12a4f..e6c250afc321b 100644
--- a/pkgs/applications/misc/parsec/bin.nix
+++ b/pkgs/applications/misc/parsec/bin.nix
@@ -27,11 +27,11 @@
 
 stdenvNoCC.mkDerivation {
   pname = "parsec-bin";
-  version = "150_91a";
+  version = "150_93b";
 
   src = fetchurl {
-    url = "https://web.archive.org/web/20231209190803if_/https://builds.parsec.app/package/parsec-linux.deb";
-    sha256 = "sha256-/qugI7k0NYpq7p9l9auD2Pp+SFoFZ9jAZswpreVfgO4=";
+    url = "https://web.archive.org/web/20240329180120/https://builds.parsec.app/package/parsec-linux.deb";
+    sha256 = "sha256-wfsauQMubnGKGfL9c0Zee5g3nn0eEnOFalQNL3d4weE=";
   };
 
   unpackPhase = ''
diff --git a/pkgs/applications/misc/passky-desktop/default.nix b/pkgs/applications/misc/passky-desktop/default.nix
index ec45bc3efaea6..26f5debecacdf 100644
--- a/pkgs/applications/misc/passky-desktop/default.nix
+++ b/pkgs/applications/misc/passky-desktop/default.nix
@@ -12,13 +12,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "passky-desktop";
-  version = "8.1.1";
+  version = "8.1.2";
 
   src = fetchFromGitHub {
     owner = "Rabbit-Company";
     repo = "Passky-Desktop";
     rev = "refs/tags/v${version}";
-    sha256 = "1ma8s1bngjdzclcc4m5pcmavk38sidaskmz7dgfnv84y35si18dr";
+    sha256 = "sha256-QQ0+qIkDPNCHeWmcF6FkbDrrt/r3fIkNi0dv6XlV1rc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/pgmodeler/default.nix b/pkgs/applications/misc/pgmodeler/default.nix
index fcc139bfa041a..05c641731c136 100644
--- a/pkgs/applications/misc/pgmodeler/default.nix
+++ b/pkgs/applications/misc/pgmodeler/default.nix
@@ -7,30 +7,50 @@
 , qtwayland
 , qtsvg
 , postgresql
+, cups
+, libxml2
 }:
 
 stdenv.mkDerivation rec {
   pname = "pgmodeler";
-  version = "1.1.1";
+  version = "1.1.2";
 
   src = fetchFromGitHub {
     owner = "pgmodeler";
     repo = "pgmodeler";
     rev = "v${version}";
-    sha256 = "sha256-9/D5C3l3N15q+xP9lLAcdT+1+dEMcowBeR+DjE67fYQ=";
+    sha256 = "sha256-urKAsuYmK8dsXhP+I7p27PXXYRapPtkI8FqARfLwnEw=";
   };
 
   nativeBuildInputs = [ pkg-config qmake wrapQtAppsHook ];
-  qmakeFlags = [ "pgmodeler.pro" "CONFIG+=release" ];
+  qmakeFlags = [ "pgmodeler.pro" "CONFIG+=release" ] ++ lib.optionals stdenv.isDarwin [
+    "PGSQL_INC=${postgresql}/include"
+    "PGSQL_LIB=${postgresql.lib}/lib/libpq.dylib"
+    "XML_INC=${libxml2.dev}/include/libxml2"
+    "XML_LIB=${libxml2.out}/lib/libxml2.dylib"
+    "PREFIX=${placeholder "out"}/Applications/pgModeler.app/Contents"
+  ];
 
   # todo: libpq would suffice here. Unfortunately this won't work, if one uses only postgresql.lib here.
-  buildInputs = [ postgresql qtsvg qtwayland ];
+  buildInputs = [ postgresql qtsvg ]
+    ++ lib.optionals stdenv.isLinux [ qtwayland ]
+    ++ lib.optionals stdenv.isDarwin [ cups libxml2 ];
+
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    mkdir -p $out/bin
+    for item in pgmodeler pgmodeler-{cli,se,ch}
+    do
+      ln -s $out/Applications/pgModeler.app/Contents/MacOS/$item $out/bin
+    done
+  '';
+
+  dontWrapQtApps = stdenv.isDarwin;
 
   meta = with lib; {
     description = "A database modeling tool for PostgreSQL";
     homepage = "https://pgmodeler.io/";
     license = licenses.gpl3;
     maintainers = [ maintainers.esclear ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/misc/plots/default.nix b/pkgs/applications/misc/plots/default.nix
index 1e7db2651a106..c53a0a57beb3b 100644
--- a/pkgs/applications/misc/plots/default.nix
+++ b/pkgs/applications/misc/plots/default.nix
@@ -3,7 +3,7 @@
 , python3Packages
 , gobject-introspection
 , libadwaita
-, wrapGAppsHook
+, wrapGAppsHook4
 , lmmath
 }:
 
@@ -18,7 +18,7 @@ python3Packages.buildPythonApplication rec {
     hash = "sha256-GjNpaorxkkhZsqrKq4kO5nqF5+4I4tmSc023AZpY8Sw=";
   };
 
-  nativeBuildInputs = [ gobject-introspection wrapGAppsHook ];
+  nativeBuildInputs = [ gobject-introspection wrapGAppsHook4 ];
   buildInputs = [ libadwaita ];
 
   propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/applications/misc/process-compose/default.nix b/pkgs/applications/misc/process-compose/default.nix
index ba881cc778ff4..86258fa9805dc 100644
--- a/pkgs/applications/misc/process-compose/default.nix
+++ b/pkgs/applications/misc/process-compose/default.nix
@@ -8,13 +8,13 @@ let config-module = "github.com/f1bonacc1/process-compose/src/config";
 in
 buildGoModule rec {
   pname = "process-compose";
-  version = "1.0.1";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "F1bonacc1";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-wr0cIp+TRDiz8CmFA4lEGyOLNaiKUYysbAmLtvl4pb4=";
+    hash = "sha256-juFcVtHhqT6tw9YaKCDTUvX6NqqxEjqVK3Zom673IkQ=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
diff --git a/pkgs/applications/misc/prusa-slicer/default.nix b/pkgs/applications/misc/prusa-slicer/default.nix
index 8b86af91934e5..7952eadea68fa 100644
--- a/pkgs/applications/misc/prusa-slicer/default.nix
+++ b/pkgs/applications/misc/prusa-slicer/default.nix
@@ -66,12 +66,12 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "prusa-slicer";
-  version = "2.7.3";
+  version = "2.7.4";
 
   src = fetchFromGitHub {
     owner = "prusa3d";
     repo = "PrusaSlicer";
-    hash = "sha256-pV9KQlZoCQZWi12VUKntKzFUuZgGpDoh1aNMoAHTbZI=";
+    hash = "sha256-g2I2l6i/8p8werDs4mDI/lGeDQsma4WSB9vT6OB2LGg=";
     rev = "version_${finalAttrs.version}";
   };
 
diff --git a/pkgs/applications/misc/sweethome3d/default.nix b/pkgs/applications/misc/sweethome3d/default.nix
index c78e1246c5c82..bc429817d55ae 100644
--- a/pkgs/applications/misc/sweethome3d/default.nix
+++ b/pkgs/applications/misc/sweethome3d/default.nix
@@ -108,13 +108,13 @@ in {
 
   application = mkSweetHome3D rec {
     pname = lib.toLower module + "-application";
-    version = "7.2";
+    version = "7.3";
     module = "SweetHome3D";
     description = "Design and visualize your future home";
     license = lib.licenses.gpl2Plus;
     src = fetchzip {
       url = "mirror://sourceforge/sweethome3d/${module}-${version}-src.zip";
-      hash = "sha256-RVuwxL/YATqHoQuc25ZaYgZ+o2rMOqnzU8/LLxb5Ra4=";
+      hash = "sha256-adMQzQE+xAZpMJyQFm01A+AfvcB5YHsJvk+533BUf1Q=";
     };
     desktopName = "Sweet Home 3D";
     icons = {
diff --git a/pkgs/applications/misc/syncthingtray/default.nix b/pkgs/applications/misc/syncthingtray/default.nix
index 3024cbc6aaf9b..414606fa2084c 100644
--- a/pkgs/applications/misc/syncthingtray/default.nix
+++ b/pkgs/applications/misc/syncthingtray/default.nix
@@ -34,14 +34,14 @@ https://github.com/NixOS/nixpkgs/issues/199596#issuecomment-1310136382 */
 }:
 
 stdenv.mkDerivation (finalAttrs: {
-  version = "1.5.1";
+  version = "1.5.2";
   pname = "syncthingtray";
 
   src = fetchFromGitHub {
     owner = "Martchus";
     repo = "syncthingtray";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-6Q3nf6WjFgpBK7VR+ykmtIM68vwsmrYqmJPXsPpWjs4=";
+    hash = "sha256-OjrkmpH9sVrO3M25PKj6jhmI2DmbP+/r4mOZ4BqE/1Y=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/misc/tandoor-recipes/common.nix b/pkgs/applications/misc/tandoor-recipes/common.nix
index 8461ed816eb9a..7b0c1f3897d4a 100644
--- a/pkgs/applications/misc/tandoor-recipes/common.nix
+++ b/pkgs/applications/misc/tandoor-recipes/common.nix
@@ -1,15 +1,15 @@
 { lib, fetchFromGitHub }:
 rec {
-  version = "1.5.12";
+  version = "1.5.16";
 
   src = fetchFromGitHub {
     owner = "TandoorRecipes";
     repo = "recipes";
     rev = version;
-    hash = "sha256-5UslXRoiq9cipGCOiqpf+rv7OPTsW4qpVTjakNeg4ug=";
+    hash = "sha256-A5cPO3uybTmAV8zWY90S9vtU/tLgbh1Iqhi+ty0RLhM=";
   };
 
-  yarnHash = "sha256-CresovsRh+dLHGnv49fCi/i66QXOS3SnzfFNvkVUfd8=";
+  yarnHash = "sha256-OAgVaXWTVlKqIgDgKNT1MWN3dYzTqrAGgNAnXLDHE+I=";
 
   meta = with lib; {
     homepage = "https://tandoor.dev/";
diff --git a/pkgs/applications/misc/tandoor-recipes/default.nix b/pkgs/applications/misc/tandoor-recipes/default.nix
index dc36156ff4a1b..dbf5500494c45 100644
--- a/pkgs/applications/misc/tandoor-recipes/default.nix
+++ b/pkgs/applications/misc/tandoor-recipes/default.nix
@@ -32,15 +32,15 @@ python.pkgs.pythonPackages.buildPythonPackage rec {
   format = "other";
 
   patches = [
-    # Allow setting MEDIA_ROOT through environment variable
-    # https://github.com/TandoorRecipes/recipes/pull/2931
-    (fetchpatch {
-      url = "https://github.com/TandoorRecipes/recipes/commit/abf981792057481f1d5b7473eb1090b3901ef8fa.patch";
-      hash = "sha256-3AFf0K/BpVwPQ2NGLUsefj6HvW7ej3szd3WaxFoqMiQ=";
-    })
+    ./pytest-xdist.patch # adapt pytest.ini the use $NIX_BUILD_CORES
   ];
 
+  postPatch = ''
+    substituteInPlace pytest.ini --subst-var NIX_BUILD_CORES
+  '';
+
   propagatedBuildInputs = with python.pkgs; [
+    aiohttp
     beautifulsoup4
     bleach
     bleach-allowlist
@@ -50,7 +50,6 @@ python.pkgs.pythonPackages.buildPythonPackage rec {
     django-allauth
     django-annoying
     django-auth-ldap
-    django-autocomplete-light
     django-cleanup
     django-cors-headers
     django-crispy-forms
@@ -132,15 +131,21 @@ python.pkgs.pythonPackages.buildPythonPackage rec {
   '';
 
   nativeCheckInputs = with python.pkgs; [
+    mock
     pytestCheckHook
+    pytest-asyncio
+    pytest-cov
     pytest-django
     pytest-factoryboy
+    pytest-html
+    pytest-xdist
   ];
 
   # flaky
   disabledTests = [
     "test_search_count"
     "test_url_import_regex_replace"
+    "test_delete"
   ];
 
   passthru = {
diff --git a/pkgs/applications/misc/tandoor-recipes/pytest-xdist.patch b/pkgs/applications/misc/tandoor-recipes/pytest-xdist.patch
new file mode 100644
index 0000000000000..39b5acf00dea4
--- /dev/null
+++ b/pkgs/applications/misc/tandoor-recipes/pytest-xdist.patch
@@ -0,0 +1,12 @@
+diff --git a/pytest.ini b/pytest.ini
+index a3d26ec4..8bdf12fb 100644
+--- a/pytest.ini
++++ b/pytest.ini
+@@ -3,5 +3,5 @@ DJANGO_SETTINGS_MODULE = recipes.test_settings
+ testpaths = cookbook/tests
+ python_files = tests.py test_*.py *_tests.py
+ # uncomment to run coverage reports
+-addopts = -n auto --cov=. --cov-report=html:docs/reports/coverage --cov-report=xml:docs/reports/coverage/coverage.xml --junitxml=docs/reports/tests/pytest.xml --html=docs/reports/tests/tests.html
++addopts = -n @NIX_BUILD_CORES@ --cov=. --cov-report=html:docs/reports/coverage --cov-report=xml:docs/reports/coverage/coverage.xml --junitxml=docs/reports/tests/pytest.xml --html=docs/reports/tests/tests.html
+ # addopts = -n auto --junitxml=docs/reports/tests/pytest.xml --html=docs/reports/tests/tests.html
+\ No newline at end of file
diff --git a/pkgs/applications/misc/tasknc/default.nix b/pkgs/applications/misc/tasknc/default.nix
index 236c81da562c0..5d8b453b0f4ea 100644
--- a/pkgs/applications/misc/tasknc/default.nix
+++ b/pkgs/applications/misc/tasknc/default.nix
@@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/lharding/tasknc";
     description = "A ncurses wrapper around taskwarrior";
     mainProgram = "tasknc";
-    maintainers = with maintainers; [ matthiasbeyer infinisil ];
+    maintainers = with maintainers; [ matthiasbeyer ];
     platforms = platforms.linux; # Cannot test others
     license = licenses.mit;
   };
diff --git a/pkgs/applications/misc/tmatrix/default.nix b/pkgs/applications/misc/tmatrix/default.nix
index 50af143808889..802b20c555769 100644
--- a/pkgs/applications/misc/tmatrix/default.nix
+++ b/pkgs/applications/misc/tmatrix/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/M4444/TMatrix";
     license = licenses.gpl2;
     platforms = platforms.all;
-    maintainers = with maintainers; [ infinisil Br1ght0ne ];
+    maintainers = with maintainers; [ Br1ght0ne ];
     mainProgram = "tmatrix";
   };
 }
diff --git a/pkgs/applications/misc/translate-shell/default.nix b/pkgs/applications/misc/translate-shell/default.nix
index ff20f89574be4..4a92a9d0e79b4 100644
--- a/pkgs/applications/misc/translate-shell/default.nix
+++ b/pkgs/applications/misc/translate-shell/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     homepage = "https://www.soimort.org/translate-shell";
     description = "Command-line translator using Google Translate, Bing Translator, Yandex.Translate, and Apertium";
     license = licenses.unlicense;
-    maintainers = with maintainers; [ ebzzry infinisil ];
+    maintainers = with maintainers; [ ebzzry ];
     mainProgram = "trans";
     platforms = platforms.unix;
   };
diff --git a/pkgs/applications/misc/ulauncher/default.nix b/pkgs/applications/misc/ulauncher/default.nix
index 232a4456e60ee..080e96359e5ad 100644
--- a/pkgs/applications/misc/ulauncher/default.nix
+++ b/pkgs/applications/misc/ulauncher/default.nix
@@ -21,11 +21,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "ulauncher";
-  version = "5.15.6";
+  version = "5.15.7";
 
   src = fetchurl {
     url = "https://github.com/Ulauncher/Ulauncher/releases/download/${version}/ulauncher_${version}.tar.gz";
-    sha256 = "sha256-WOWDekh9rcXeiN/ejiYC4BELhJwd98GkmyDOLN26ayU=";
+    sha256 = "sha256-YgOw3Gyy/o8qorWAnAlQrAZ2ZTnyP3PagLs2Qkdg788=";
   };
 
   nativeBuildInputs = with python3Packages; [
diff --git a/pkgs/applications/misc/waybar/default.nix b/pkgs/applications/misc/waybar/default.nix
index fd24f6605e4e0..d4122e6571d98 100644
--- a/pkgs/applications/misc/waybar/default.nix
+++ b/pkgs/applications/misc/waybar/default.nix
@@ -63,6 +63,7 @@
 , upowerSupport ? true
 , wireplumberSupport ? true
 , withMediaPlayer ? mprisSupport && false
+, nix-update-script
 }:
 
 let
@@ -189,6 +190,8 @@ stdenv.mkDerivation (finalAttrs: {
       --prefix PYTHONPATH : "$PYTHONPATH:$out/${python3.sitePackages}"
   '';
 
+  passthru.updateScript = nix-update-script { };
+
   meta = {
     homepage = "https://github.com/alexays/waybar";
     description = "Highly customizable Wayland bar for Sway and Wlroots based compositors";
diff --git a/pkgs/applications/misc/wmenu/default.nix b/pkgs/applications/misc/wmenu/default.nix
index de88c3fd1a40d..748c2d3b84c92 100644
--- a/pkgs/applications/misc/wmenu/default.nix
+++ b/pkgs/applications/misc/wmenu/default.nix
@@ -26,6 +26,14 @@ stdenv.mkDerivation rec {
     hash = "sha256-9do7zL7yaZuqVjastySwjsByo5ja+KUP3590VjIyVnI=";
   };
 
+  # Upstream patch needed to fix NULL deref
+  patches = [
+    (fetchpatch {
+      url = "https://git.sr.ht/~adnano/wmenu/commit/2856dddcac861ddf248143e66ba164d7aa05a0bb.patch";
+      hash = "sha256-P7SEjMssA8unNAlrgrTHm0uW5pefjpupPb4s/u2fTAM=";
+    })
+  ];
+
   nativeBuildInputs = [ pkg-config meson ninja ];
   buildInputs = [ cairo pango wayland libxkbcommon wayland-protocols scdoc ];
 
diff --git a/pkgs/applications/misc/wttrbar/default.nix b/pkgs/applications/misc/wttrbar/default.nix
index 3d74cdf35c22a..6cba42d0c1582 100644
--- a/pkgs/applications/misc/wttrbar/default.nix
+++ b/pkgs/applications/misc/wttrbar/default.nix
@@ -3,6 +3,7 @@
 , fetchFromGitHub
 , rustPlatform
 , darwin
+, nix-update-script
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -20,6 +21,8 @@ rustPlatform.buildRustPackage rec {
 
   cargoHash = "sha256-HxSyGME95FWR5VwodmrMUX0jPlfE9SJV0WBbICuuTok=";
 
+  passthru.updateScript = nix-update-script { };
+
   meta = {
     description = "A simple but detailed weather indicator for Waybar using wttr.in";
     homepage = "https://github.com/bjesus/wttrbar";
diff --git a/pkgs/applications/misc/xmrig/default.nix b/pkgs/applications/misc/xmrig/default.nix
index b0f8562c17285..db7bdd4fc727b 100644
--- a/pkgs/applications/misc/xmrig/default.nix
+++ b/pkgs/applications/misc/xmrig/default.nix
@@ -15,13 +15,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "xmrig";
-  version = "6.21.1";
+  version = "6.21.2";
 
   src = fetchFromGitHub {
     owner = "xmrig";
     repo = "xmrig";
     rev = "v${version}";
-    hash = "sha256-xMfNWqr43Gxu+ET8oP9l97+tBsL/b6DNuFU4j9wy0UA=";
+    hash = "sha256-0ej2+g+B9K50JIs0wi1SfLBsaYTsk+0/cImLLZLNtmc=";
   };
 
   patches = [
diff --git a/pkgs/applications/networking/avalanchego/default.nix b/pkgs/applications/networking/avalanchego/default.nix
index d06ced1189eed..a6e0f5d588606 100644
--- a/pkgs/applications/networking/avalanchego/default.nix
+++ b/pkgs/applications/networking/avalanchego/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "avalanchego";
-  version = "1.11.3";
+  version = "1.11.4";
 
   src = fetchFromGitHub {
     owner = "ava-labs";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-VeszkBExveXmajnVLHDp9Fc9xngnUKBbVY55L260rds=";
+    hash = "sha256-0YS+q1gy7YmTx/DwxaElBG1tzosXReXqPu6RpR3hTjw=";
   };
 
-  vendorHash = "sha256-8K8loSdeISkA06LBkZgro+mEbQEZY1sdzplq7IKZ4kI=";
+  vendorHash = "sha256-et1PVLJQ/vBsg5438s6d9MA2oV40zahp9YKQOE0RX58=";
   # go mod vendor has a bug, see: https://github.com/golang/go/issues/57529
   proxyVendor = true;
 
diff --git a/pkgs/applications/networking/browsers/brave/default.nix b/pkgs/applications/networking/browsers/brave/default.nix
index dbee3360d20c5..daed65d0c21d7 100644
--- a/pkgs/applications/networking/browsers/brave/default.nix
+++ b/pkgs/applications/networking/browsers/brave/default.nix
@@ -1,214 +1,24 @@
-{ lib, stdenv, fetchurl, wrapGAppsHook, makeWrapper
-, alsa-lib
-, at-spi2-atk
-, at-spi2-core
-, atk
-, cairo
-, cups
-, dbus
-, dpkg
-, expat
-, fontconfig
-, freetype
-, gdk-pixbuf
-, glib
-, gnome
-, gsettings-desktop-schemas
-, gtk3
-, gtk4
-, libX11
-, libXScrnSaver
-, libXcomposite
-, libXcursor
-, libXdamage
-, libXext
-, libXfixes
-, libXi
-, libXrandr
-, libXrender
-, libXtst
-, libdrm
-, libkrb5
-, libuuid
-, libxkbcommon
-, libxshmfence
-, mesa
-, nspr
-, nss
-, pango
-, pipewire
-, snappy
-, udev
-, wayland
-, xdg-utils
-, coreutils
-, xorg
-, zlib
-
-# command line arguments which are always set e.g "--disable-gpu"
-, commandLineArgs ? ""
-
-# Necessary for USB audio devices.
-, pulseSupport ? stdenv.isLinux
-, libpulseaudio
-
-# For GPU acceleration support on Wayland (without the lib it doesn't seem to work)
-, libGL
-
-# For video acceleration via VA-API (--enable-features=VaapiVideoDecoder,VaapiVideoEncoder)
-, libvaSupport ? stdenv.isLinux
-, libva
-, enableVideoAcceleration ? libvaSupport
-
-# For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API
-, vulkanSupport ? false
-, addOpenGLRunpath
-, enableVulkan ? vulkanSupport
-}:
-
-let
-  inherit (lib) optional optionals makeLibraryPath makeSearchPathOutput makeBinPath
-    optionalString strings escapeShellArg;
-
-  deps = [
-    alsa-lib at-spi2-atk at-spi2-core atk cairo cups dbus expat
-    fontconfig freetype gdk-pixbuf glib gtk3 gtk4 libdrm libX11 libGL
-    libxkbcommon libXScrnSaver libXcomposite libXcursor libXdamage
-    libXext libXfixes libXi libXrandr libXrender libxshmfence
-    libXtst libuuid mesa nspr nss pango pipewire udev wayland
-    xorg.libxcb zlib snappy libkrb5
-  ]
-    ++ optional pulseSupport libpulseaudio
-    ++ optional libvaSupport libva;
-
-  rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
-  binpath = makeBinPath deps;
-
-  enableFeatures = optionals enableVideoAcceleration [ "VaapiVideoDecoder" "VaapiVideoEncoder" ]
-    ++ optional enableVulkan "Vulkan";
-
-  disableFeatures = [ "OutdatedBuildDetector" ] # disable automatic updates
-    # The feature disable is needed for VAAPI to work correctly: https://github.com/brave/brave-browser/issues/20935
-    ++ optionals enableVideoAcceleration  [ "UseChromeOSDirectVideoDecoder" ];
-in
-
-stdenv.mkDerivation rec {
-  pname = "brave";
-  version = "1.64.113";
-
-  src = fetchurl {
-    url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
-    hash = "sha256-T0uVq1yxDXNi6x9ot5bs3NRaOQ+RwBThvULS6EZ+Bdg=";
-  };
-
-  dontConfigure = true;
-  dontBuild = true;
-  dontPatchELF = true;
-  doInstallCheck = true;
-
-  nativeBuildInputs = [
-    dpkg
-    (wrapGAppsHook.override { inherit makeWrapper; })
-  ];
-
-  buildInputs = [
-    # needed for GSETTINGS_SCHEMAS_PATH
-    glib gsettings-desktop-schemas gtk3 gtk4
-
-    # needed for XDG_ICON_DIRS
-    gnome.adwaita-icon-theme
-  ];
-
-  unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";
-
-  installPhase = ''
-      runHook preInstall
-
-      mkdir -p $out $out/bin
-
-      cp -R usr/share $out
-      cp -R opt/ $out/opt
-
-      export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser
-
-      # Fix path to bash in $BINARYWRAPPER
-      substituteInPlace $BINARYWRAPPER \
-          --replace /bin/bash ${stdenv.shell}
-
-      ln -sf $BINARYWRAPPER $out/bin/brave
-
-      for exe in $out/opt/brave.com/brave/{brave,chrome_crashpad_handler}; do
-          patchelf \
-              --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-              --set-rpath "${rpath}" $exe
-      done
-
-      # Fix paths
-      substituteInPlace $out/share/applications/brave-browser.desktop \
-          --replace /usr/bin/brave-browser-stable $out/bin/brave
-      substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser.xml \
-          --replace /opt/brave.com $out/opt/brave.com
-      substituteInPlace $out/share/menu/brave-browser.menu \
-          --replace /opt/brave.com $out/opt/brave.com
-      substituteInPlace $out/opt/brave.com/brave/default-app-block \
-          --replace /opt/brave.com $out/opt/brave.com
-
-      # Correct icons location
-      icon_sizes=("16" "24" "32" "48" "64" "128" "256")
-
-      for icon in ''${icon_sizes[*]}
-      do
-          mkdir -p $out/share/icons/hicolor/$icon\x$icon/apps
-          ln -s $out/opt/brave.com/brave/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser.png
-      done
-
-      # Replace xdg-settings and xdg-mime
-      ln -sf ${xdg-utils}/bin/xdg-settings $out/opt/brave.com/brave/xdg-settings
-      ln -sf ${xdg-utils}/bin/xdg-mime $out/opt/brave.com/brave/xdg-mime
-
-      runHook postInstall
-  '';
-
-  preFixup = ''
-    # Add command line args to wrapGApp.
-    gappsWrapperArgs+=(
-      --prefix LD_LIBRARY_PATH : ${rpath}
-      --prefix PATH : ${binpath}
-      --suffix PATH : ${lib.makeBinPath [ xdg-utils coreutils ]}
-      ${optionalString (enableFeatures != []) ''
-      --add-flags "--enable-features=${strings.concatStringsSep "," enableFeatures}"
-      ''}
-      ${optionalString (disableFeatures != []) ''
-      --add-flags "--disable-features=${strings.concatStringsSep "," disableFeatures}"
-      ''}
-      --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
-      ${optionalString vulkanSupport ''
-      --prefix XDG_DATA_DIRS  : "${addOpenGLRunpath.driverLink}/share"
-      ''}
-      --add-flags ${escapeShellArg commandLineArgs}
-    )
-  '';
-
-  installCheckPhase = ''
-    # Bypass upstream wrapper which suppresses errors
-    $out/opt/brave.com/brave/brave --version
-  '';
-
-  passthru.updateScript = ./update.sh;
-
-  meta = with lib; {
-    homepage = "https://brave.com/";
-    description = "Privacy-oriented browser for Desktop and Laptop computers";
-    changelog = "https://github.com/brave/brave-browser/blob/master/CHANGELOG_DESKTOP.md#" + replaceStrings [ "." ] [ "" ] version;
-    longDescription = ''
-      Brave browser blocks the ads and trackers that slow you down,
-      chew up your bandwidth, and invade your privacy. Brave lets you
-      contribute to your favorite creators automatically.
-    '';
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    license = licenses.mpl20;
-    maintainers = with maintainers; [ uskudnik rht jefflabonte nasirhm buckley310 ];
-    platforms = [ "x86_64-linux" ];
-    mainProgram = "brave";
-  };
-}
+# Expression generated by update.sh; do not edit it by hand!
+{ stdenv, callPackage, ... }@args:
+
+callPackage ./make-brave.nix (removeAttrs args [ "callPackage" ])
+  (
+    if stdenv.isAarch64 then
+      {
+        pname = "brave";
+        version = "1.64.122";
+        url = "https://github.com/brave/brave-browser/releases/download/v1.64.122/brave-browser_1.64.122_arm64.deb";
+        hash = "sha256-PBYiCTy/QaPfxvWAzUnXLEzBELISNSKX0kG/mYTDDEA=";
+        platform = "aarch64-linux";
+      }
+    else if stdenv.isx86_64 then
+      {
+        pname = "brave";
+        version = "1.64.122";
+        url = "https://github.com/brave/brave-browser/releases/download/v1.64.122/brave-browser_1.64.122_amd64.deb";
+        hash = "sha256-9tSoOn9XGbX/b8n9vD9Hmpi26jzmUVJomoCFdSJoaoU=";
+        platform = "x86_64-linux";
+      }
+    else
+      throw "Unsupported platform."
+  )
diff --git a/pkgs/applications/networking/browsers/brave/make-brave.nix b/pkgs/applications/networking/browsers/brave/make-brave.nix
new file mode 100644
index 0000000000000..8fde41e60a16b
--- /dev/null
+++ b/pkgs/applications/networking/browsers/brave/make-brave.nix
@@ -0,0 +1,218 @@
+{ lib, stdenv, fetchurl, wrapGAppsHook, makeWrapper
+, alsa-lib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, cairo
+, cups
+, dbus
+, dpkg
+, expat
+, fontconfig
+, freetype
+, gdk-pixbuf
+, glib
+, gnome
+, gsettings-desktop-schemas
+, gtk3
+, gtk4
+, libX11
+, libXScrnSaver
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXtst
+, libdrm
+, libkrb5
+, libuuid
+, libxkbcommon
+, libxshmfence
+, mesa
+, nspr
+, nss
+, pango
+, pipewire
+, snappy
+, udev
+, wayland
+, xdg-utils
+, coreutils
+, xorg
+, zlib
+
+# command line arguments which are always set e.g "--disable-gpu"
+, commandLineArgs ? ""
+
+# Necessary for USB audio devices.
+, pulseSupport ? stdenv.isLinux
+, libpulseaudio
+
+# For GPU acceleration support on Wayland (without the lib it doesn't seem to work)
+, libGL
+
+# For video acceleration via VA-API (--enable-features=VaapiVideoDecoder,VaapiVideoEncoder)
+, libvaSupport ? stdenv.isLinux
+, libva
+, enableVideoAcceleration ? libvaSupport
+
+# For Vulkan support (--enable-features=Vulkan); disabled by default as it seems to break VA-API
+, vulkanSupport ? false
+, addOpenGLRunpath
+, enableVulkan ? vulkanSupport
+}:
+
+{ pname
+, version
+, hash
+, url
+, platform
+}:
+
+let
+  inherit (lib) optional optionals makeLibraryPath makeSearchPathOutput makeBinPath
+    optionalString strings escapeShellArg;
+
+  deps = [
+    alsa-lib at-spi2-atk at-spi2-core atk cairo cups dbus expat
+    fontconfig freetype gdk-pixbuf glib gtk3 gtk4 libdrm libX11 libGL
+    libxkbcommon libXScrnSaver libXcomposite libXcursor libXdamage
+    libXext libXfixes libXi libXrandr libXrender libxshmfence
+    libXtst libuuid mesa nspr nss pango pipewire udev wayland
+    xorg.libxcb zlib snappy libkrb5
+  ]
+    ++ optional pulseSupport libpulseaudio
+    ++ optional libvaSupport libva;
+
+  rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
+  binpath = makeBinPath deps;
+
+  enableFeatures = optionals enableVideoAcceleration [ "VaapiVideoDecoder" "VaapiVideoEncoder" ]
+    ++ optional enableVulkan "Vulkan";
+
+  disableFeatures = [ "OutdatedBuildDetector" ] # disable automatic updates
+    # The feature disable is needed for VAAPI to work correctly: https://github.com/brave/brave-browser/issues/20935
+    ++ optionals enableVideoAcceleration  [ "UseChromeOSDirectVideoDecoder" ];
+in
+stdenv.mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    inherit url hash;
+  };
+
+  dontConfigure = true;
+  dontBuild = true;
+  dontPatchELF = true;
+  doInstallCheck = true;
+
+  nativeBuildInputs = [
+    dpkg
+    (wrapGAppsHook.override { inherit makeWrapper; })
+  ];
+
+  buildInputs = [
+    # needed for GSETTINGS_SCHEMAS_PATH
+    glib gsettings-desktop-schemas gtk3 gtk4
+
+    # needed for XDG_ICON_DIRS
+    gnome.adwaita-icon-theme
+  ];
+
+  unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";
+
+  installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out $out/bin
+
+      cp -R usr/share $out
+      cp -R opt/ $out/opt
+
+      export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser
+
+      # Fix path to bash in $BINARYWRAPPER
+      substituteInPlace $BINARYWRAPPER \
+          --replace /bin/bash ${stdenv.shell}
+
+      ln -sf $BINARYWRAPPER $out/bin/brave
+
+      for exe in $out/opt/brave.com/brave/{brave,chrome_crashpad_handler}; do
+          patchelf \
+              --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+              --set-rpath "${rpath}" $exe
+      done
+
+      # Fix paths
+      substituteInPlace $out/share/applications/brave-browser.desktop \
+          --replace /usr/bin/brave-browser-stable $out/bin/brave
+      substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser.xml \
+          --replace /opt/brave.com $out/opt/brave.com
+      substituteInPlace $out/share/menu/brave-browser.menu \
+          --replace /opt/brave.com $out/opt/brave.com
+      substituteInPlace $out/opt/brave.com/brave/default-app-block \
+          --replace /opt/brave.com $out/opt/brave.com
+
+      # Correct icons location
+      icon_sizes=("16" "24" "32" "48" "64" "128" "256")
+
+      for icon in ''${icon_sizes[*]}
+      do
+          mkdir -p $out/share/icons/hicolor/$icon\x$icon/apps
+          ln -s $out/opt/brave.com/brave/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser.png
+      done
+
+      # Replace xdg-settings and xdg-mime
+      ln -sf ${xdg-utils}/bin/xdg-settings $out/opt/brave.com/brave/xdg-settings
+      ln -sf ${xdg-utils}/bin/xdg-mime $out/opt/brave.com/brave/xdg-mime
+
+      runHook postInstall
+  '';
+
+  preFixup = ''
+    # Add command line args to wrapGApp.
+    gappsWrapperArgs+=(
+      --prefix LD_LIBRARY_PATH : ${rpath}
+      --prefix PATH : ${binpath}
+      --suffix PATH : ${lib.makeBinPath [ xdg-utils coreutils ]}
+      ${optionalString (enableFeatures != []) ''
+      --add-flags "--enable-features=${strings.concatStringsSep "," enableFeatures}\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+,WaylandWindowDecorations}}"
+      ''}
+      ${optionalString (disableFeatures != []) ''
+      --add-flags "--disable-features=${strings.concatStringsSep "," disableFeatures}"
+      ''}
+      --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto}}"
+      ${optionalString vulkanSupport ''
+      --prefix XDG_DATA_DIRS  : "${addOpenGLRunpath.driverLink}/share"
+      ''}
+      --add-flags ${escapeShellArg commandLineArgs}
+    )
+  '';
+
+  installCheckPhase = ''
+    # Bypass upstream wrapper which suppresses errors
+    $out/opt/brave.com/brave/brave --version
+  '';
+
+  passthru.updateScript = ./update.sh;
+
+  meta = {
+    homepage = "https://brave.com/";
+    description = "Privacy-oriented browser for Desktop and Laptop computers";
+    changelog = "https://github.com/brave/brave-browser/blob/master/CHANGELOG_DESKTOP.md#" + lib.replaceStrings [ "." ] [ "" ] version;
+    longDescription = ''
+      Brave browser blocks the ads and trackers that slow you down,
+      chew up your bandwidth, and invade your privacy. Brave lets you
+      contribute to your favorite creators automatically.
+    '';
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    license = lib.licenses.mpl20;
+    maintainers = with lib.maintainers; [ uskudnik rht jefflabonte nasirhm buckley310 ];
+    platforms = [ "aarch64-linux" "x86_64-linux" ];
+    mainProgram = "brave";
+  };
+}
diff --git a/pkgs/applications/networking/browsers/brave/update.sh b/pkgs/applications/networking/browsers/brave/update.sh
index b7d974ad259da..c0b8d7cff415b 100755
--- a/pkgs/applications/networking/browsers/brave/update.sh
+++ b/pkgs/applications/networking/browsers/brave/update.sh
@@ -1,5 +1,45 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl gnused common-updater-scripts
+#!nix-shell -i bash -p curl gnused nix
 
-version="$(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages | sed -r -n 's/^Version: (.*)/\1/p' | head -n1)"
-update-source-version brave "$version"
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
+
+latestVersionAarch64="$(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-arm64/Packages \
+    | sed -r -n 's/^Version: (.*)/\1/p' | head -n1)"
+hashAarch64="$(nix hash to-sri --type sha256 \
+    $(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-arm64/Packages \
+    | sed -r -n 's/^SHA256: (.*)/\1/p' | head -n1)
+)"
+
+latestVersionAmd64="$(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages \
+    | sed -r -n 's/^Version: (.*)/\1/p' | head -n1)"
+hashAmd64="$(nix hash to-sri --type sha256 \
+    $(curl -sL https://brave-browser-apt-release.s3.brave.com/dists/stable/main/binary-amd64/Packages \
+    | sed -r -n 's/^SHA256: (.*)/\1/p' | head -n1)
+)"
+
+cat > $SCRIPT_DIR/default.nix << EOF
+# Expression generated by update.sh; do not edit it by hand!
+{ stdenv, callPackage, ... }@args:
+
+callPackage ./make-brave.nix (removeAttrs args [ "callPackage" ])
+  (
+    if stdenv.isAarch64 then
+      {
+        pname = "brave";
+        version = "${latestVersionAarch64}";
+        url = "https://github.com/brave/brave-browser/releases/download/v${latestVersionAarch64}/brave-browser_${latestVersionAmd64}_arm64.deb";
+        hash = "${hashAarch64}";
+        platform = "aarch64-linux";
+      }
+    else if stdenv.isx86_64 then
+      {
+        pname = "brave";
+        version = "${latestVersionAmd64}";
+        url = "https://github.com/brave/brave-browser/releases/download/v${latestVersionAmd64}/brave-browser_${latestVersionAmd64}_amd64.deb";
+        hash = "${hashAmd64}";
+        platform = "x86_64-linux";
+      }
+    else
+      throw "Unsupported platform."
+  )
+EOF
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
index d6f71c277692c..2597d293ac63a 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -1,11 +1,11 @@
 {
   stable = {
     chromedriver = {
-      hash_darwin = "sha256-sB6gH5k5zK1IIctBTXQpxlgmLEoIatcLDYO+WIFaYxA=";
+      hash_darwin = "sha256-PmLV++FK6aCvdhNNhb2ZAmRLumr+VRFvN+7IByieEZk=";
       hash_darwin_aarch64 =
-        "sha256-sikyGQG0Y14eNjT3f/Z50cPmm38T58X7zQIGopXOHOs=";
-      hash_linux = "sha256-2WZmRXyvxN3hXeOoPQXL6lU6Xki9iUmTdETRxOkIYD0=";
-      version = "123.0.6312.86";
+        "sha256-6Ys1EMSLmJNNaWdPeQiCT+bC0H7ABInVNzwXorGavn4=";
+      hash_linux = "sha256-iimq37dcEcY2suW73a6lhgHuNaoqtzbAZCHkQP9ro/Y=";
+      version = "123.0.6312.122";
     };
     deps = {
       gn = {
@@ -15,9 +15,9 @@
         version = "2024-02-19";
       };
     };
-    hash = "sha256-C17TPDVFW3+cHO1tcEghjI6H59TVPm9hdCrF2s5NI68=";
-    hash_deb_amd64 = "sha256-zmnBi4UBx52fQKHHJuUaCMuDJl7ntQzhG6h/yH7YPNU=";
-    version = "123.0.6312.105";
+    hash = "sha256-7H7h621AHPyhFYbaVFO892TtS+SP3Qu7cYUVk3ICL14=";
+    hash_deb_amd64 = "sha256-tNkO1mPZg1xltBfoWeNhLekITtZV/WNgu//i2DJb17c=";
+    version = "123.0.6312.122";
   };
   ungoogled-chromium = {
     deps = {
@@ -28,12 +28,12 @@
         version = "2024-02-19";
       };
       ungoogled-patches = {
-        hash = "sha256-81SoZBOAAV0cAVzz3yOzBstRW3vWjmkFoFNjYdPnme4=";
-        rev = "123.0.6312.105-1";
+        hash = "sha256-ojKIAkJB/gfg6scCxUYNAGx4lsquAaCySBDcUCFLqSU=";
+        rev = "d5773b0fb696ef107cc6df6a94cbe732c9e905f9";
       };
     };
-    hash = "sha256-C17TPDVFW3+cHO1tcEghjI6H59TVPm9hdCrF2s5NI68=";
-    hash_deb_amd64 = "sha256-zmnBi4UBx52fQKHHJuUaCMuDJl7ntQzhG6h/yH7YPNU=";
-    version = "123.0.6312.105";
+    hash = "sha256-7H7h621AHPyhFYbaVFO892TtS+SP3Qu7cYUVk3ICL14=";
+    hash_deb_amd64 = "sha256-tNkO1mPZg1xltBfoWeNhLekITtZV/WNgu//i2DJb17c=";
+    version = "123.0.6312.122";
   };
 }
diff --git a/pkgs/applications/networking/browsers/librewolf/src.json b/pkgs/applications/networking/browsers/librewolf/src.json
index 06a95382210e9..81beb044083ac 100644
--- a/pkgs/applications/networking/browsers/librewolf/src.json
+++ b/pkgs/applications/networking/browsers/librewolf/src.json
@@ -1,15 +1,15 @@
 {
-  "packageVersion": "124.0.1-1",
+  "packageVersion": "124.0.2-1",
   "source": {
-    "rev": "124.0.1-1",
-    "sha256": "1qyhwxc16qsmq3bvsmdwqib47v27fly1szq7jh78dylpib8xgb6f"
+    "rev": "124.0.2-1",
+    "sha256": "0qh40l1pif0b6n1amiw18pr13gvmi7rjd89q6n1qz8y14yf9w5xp"
   },
   "settings": {
     "rev": "8a499ecdab8a5136faee50aae1fdd48997711de6",
     "sha256": "1c12y7b09rrz8zlpar8nnd9k2nvldjqq3cicbc57g6s1npnf8rz6"
   },
   "firefox": {
-    "version": "124.0.1",
-    "sha512": "282c45e5c468419536dd8b81c8ea687b10d8002d7521403330e6eeef49207143bee88a44c3785748d461ed9a72687606f5da14f4dfb98eb40a5cd08a4a12722b"
+    "version": "124.0.2",
+    "sha512": "8cf340de6e34812f8ae3363265859a263330af770d981c3dd1ca1e7e0cfe513604d3e68184d4aa1446569aefbdf359d561fbc200faf19a5ed020a1709d9ef10e"
   }
 }
diff --git a/pkgs/applications/networking/browsers/microsoft-edge/default.nix b/pkgs/applications/networking/browsers/microsoft-edge/default.nix
index 13eafe35d655c..263169fff80ac 100644
--- a/pkgs/applications/networking/browsers/microsoft-edge/default.nix
+++ b/pkgs/applications/networking/browsers/microsoft-edge/default.nix
@@ -1,20 +1,20 @@
 {
   beta = import ./browser.nix {
     channel = "beta";
-    version = "123.0.2420.53";
+    version = "124.0.2478.19";
     revision = "1";
-    hash = "sha256-6mE/zxVvGYrI7Emk5RBW+GC5W1FbVPFUeKMjev1yeFQ=";
+    hash = "sha256-+CanF7AadFQJj3t8OnZyoxPG2f2KO2e+EVBofKG3slg=";
   };
   dev = import ./browser.nix {
     channel = "dev";
-    version = "124.0.2464.2";
+    version = "125.0.2492.1";
     revision = "1";
-    hash = "sha256-vNvSzoVSVewTbKrnE6f+0Hx/1N5gOvRcdRGsmunBJHA=";
+    hash = "sha256-S6DfXJfxR8FsHyRtCcvUialaVYP/1rPivjRVSm9XAtg=";
   };
   stable = import ./browser.nix {
     channel = "stable";
-    version = "123.0.2420.53";
+    version = "123.0.2420.81";
     revision = "1";
-    hash = "sha256-7C6wZCIRodqWKimbnUl32TOhizsiE3U/be3tlpSNtt0=";
+    hash = "sha256-3c4DHs0p2YDW17nzCXB+O6PR9wTMb9h98EvN11imvsM=";
   };
 }
diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix
index 3387f66920aa1..94f2a466295f4 100644
--- a/pkgs/applications/networking/browsers/opera/default.nix
+++ b/pkgs/applications/networking/browsers/opera/default.nix
@@ -51,11 +51,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "opera";
-  version = "108.0.5067.29";
+  version = "109.0.5097.38";
 
   src = fetchurl {
     url = "${mirror}/${version}/linux/${pname}-stable_${version}_amd64.deb";
-    hash = "sha256-lPazFtTWb/AbK/5H5MQK+dn0imJqUHiL6/KRq1CNxfo=";
+    hash = "sha256-eljVXaHN7gPqpoL3z+Fz/BH6b+1qxSHtFln6NCxl9tc=";
   };
 
   unpackPhase = "dpkg-deb -x $src .";
diff --git a/pkgs/applications/networking/browsers/vivaldi/default.nix b/pkgs/applications/networking/browsers/vivaldi/default.nix
index 4dd1251c09115..7abf83219becf 100644
--- a/pkgs/applications/networking/browsers/vivaldi/default.nix
+++ b/pkgs/applications/networking/browsers/vivaldi/default.nix
@@ -24,7 +24,7 @@ let
   vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
 in stdenv.mkDerivation rec {
   pname = "vivaldi";
-  version = "6.6.3271.55";
+  version = "6.6.3271.57";
 
   suffix = {
     aarch64-linux = "arm64";
@@ -34,8 +34,8 @@ in stdenv.mkDerivation rec {
   src = fetchurl {
     url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}-1_${suffix}.deb";
     hash = {
-      aarch64-linux = "sha256-IqCmDqcZDLT1abx67gAsGHR8DVVIAGZ/sifZi8bxUNc=";
-      x86_64-linux = "sha256-n0CHm1Dtd2QhGNhI/9WzQ6CeCyMAHkBpOMC2w3ylk2g=";
+      aarch64-linux = "sha256-v/UG4eL/66i/0sSqN8JmJJIEjHzJjTTDZLRzLMJpJMA=";
+      x86_64-linux = "sha256-uVrEVf9mePqalU2OJRMj0Zy9d7jDXwsdMwEQhn9uUh8=";
     }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
   };
 
diff --git a/pkgs/applications/networking/cluster/argocd/default.nix b/pkgs/applications/networking/cluster/argocd/default.nix
index 32005b5ae8c64..a273d008e6622 100644
--- a/pkgs/applications/networking/cluster/argocd/default.nix
+++ b/pkgs/applications/networking/cluster/argocd/default.nix
@@ -2,17 +2,17 @@
 
 buildGoModule rec {
   pname = "argocd";
-  version = "2.10.5";
+  version = "2.10.6";
 
   src = fetchFromGitHub {
     owner = "argoproj";
     repo = "argo-cd";
     rev = "v${version}";
-    hash = "sha256-koTNC6ClKgmrgrELxtGz4rKe/VV/9kPK99Cmm50aB94=";
+    hash = "sha256-tKZQVI2WiqsPIMHCBGJHcZYk4gOoshiGA0WPyeoxvok=";
   };
 
   proxyVendor = true; # darwin/linux hash mismatch
-  vendorHash = "sha256-BqXTjmeKfCCwdwJ3gSOyvKfuqkjN+0S/1xe5vM406Ig=";
+  vendorHash = "sha256-dgj8IXrLNZ6ZEIFAY/gXAklVKfLXosRuR1SyZWkwrwA=";
 
   # Set target as ./cmd per cli-local
   # https://github.com/argoproj/argo-cd/blob/master/Makefile#L227
diff --git a/pkgs/applications/networking/cluster/arkade/default.nix b/pkgs/applications/networking/cluster/arkade/default.nix
index b921d080a478a..39c14e95c60d4 100644
--- a/pkgs/applications/networking/cluster/arkade/default.nix
+++ b/pkgs/applications/networking/cluster/arkade/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "arkade";
-  version = "0.11.6";
+  version = "0.11.9";
 
   src = fetchFromGitHub {
     owner = "alexellis";
     repo = "arkade";
     rev = version;
-    hash = "sha256-PCyPdUgvW2wCo1MZ/5jbPLfermbYKZKDbAFsc2goqlY=";
+    hash = "sha256-TJja4FL440ZG5VsCfJsKUYeM2YPlMSl2+ejjlgyP5IY=";
   };
 
   CGO_ENABLED = 0;
diff --git a/pkgs/applications/networking/cluster/atmos/default.nix b/pkgs/applications/networking/cluster/atmos/default.nix
index b76c7c36cbff7..b08f1b524e40f 100644
--- a/pkgs/applications/networking/cluster/atmos/default.nix
+++ b/pkgs/applications/networking/cluster/atmos/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "atmos";
-  version = "1.67.0";
+  version = "1.68.0";
 
   src = fetchFromGitHub {
     owner = "cloudposse";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-bnecb0SucLcNrrQ0PAN31Z4nNV+0wrrzMLn7OyMOS5w=";
+    sha256 = "sha256-tyK45RWLZFC2yLqEvEE/U0QjNaQ0Kwx37BL/5d9Bmdc=";
   };
 
-  vendorHash = "sha256-oNAEe7g9kYZ4kolmVQat6l/tag0Bus7nJEfnzCrUtjA=";
+  vendorHash = "sha256-dJJPq2HcGZ+MqtJ848gsrvzD1rMVrwJQKwq+UpZsFB0=";
 
   ldflags = [ "-s" "-w" "-X github.com/cloudposse/atmos/cmd.Version=v${version}" ];
 
@@ -38,6 +38,6 @@ buildGoModule rec {
     description = "Universal Tool for DevOps and Cloud Automation (works with terraform, helm, helmfile, etc)";
     mainProgram = "atmos";
     license = licenses.asl20;
-    maintainers = with maintainers; [ rb ];
+    maintainers = with maintainers; [ ] ++ teams.cloudposse.members;
   };
 }
diff --git a/pkgs/applications/networking/cluster/helm/default.nix b/pkgs/applications/networking/cluster/helm/default.nix
index b46ed8f329b1c..15599846c7197 100644
--- a/pkgs/applications/networking/cluster/helm/default.nix
+++ b/pkgs/applications/networking/cluster/helm/default.nix
@@ -2,15 +2,15 @@
 
 buildGoModule rec {
   pname = "kubernetes-helm";
-  version = "3.14.3";
+  version = "3.14.4";
 
   src = fetchFromGitHub {
     owner = "helm";
     repo = "helm";
     rev = "v${version}";
-    sha256 = "sha256-GC9rkB35m+a/9pEvD7aNjE4z3qrv33NES842crrzD3I=";
+    sha256 = "sha256-Wt5ovKa2CHrD0VSxvReYAwoC4SsuZHAhi/P6Kn1H7So=";
   };
-  vendorHash = "sha256-f5tLyq9tP5tdE73Mlee9vAUSHqkUAtAJkwjZP/K6wPM=";
+  vendorHash = "sha256-b25LUyr4B4fF/WF4Q+zzrDo78kuSTEPBklKkA4o+DBo=";
 
   subPackages = [ "cmd/helm" ];
   ldflags = [
diff --git a/pkgs/applications/networking/cluster/krane/Gemfile.lock b/pkgs/applications/networking/cluster/krane/Gemfile.lock
index c462e4d1d6022..a4266094c4e92 100644
--- a/pkgs/applications/networking/cluster/krane/Gemfile.lock
+++ b/pkgs/applications/networking/cluster/krane/Gemfile.lock
@@ -1,7 +1,7 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (7.1.3)
+    activesupport (7.1.3.2)
       base64
       bigdecimal
       concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -14,21 +14,20 @@ GEM
     addressable (2.8.6)
       public_suffix (>= 2.0.2, < 6.0)
     base64 (0.2.0)
-    bigdecimal (3.1.6)
+    bigdecimal (3.1.7)
     colorize (0.8.1)
     concurrent-ruby (1.2.3)
     connection_pool (2.4.1)
     domain_name (0.6.20240107)
-    drb (2.2.0)
-      ruby2_keywords
+    drb (2.2.1)
     ejson (1.4.1)
     faraday (2.9.0)
       faraday-net_http (>= 2.0, < 3.2)
     faraday-net_http (3.1.0)
       net-http
     ffi (1.16.3)
-    ffi-compiler (1.0.1)
-      ffi (>= 1.0.0)
+    ffi-compiler (1.3.2)
+      ffi (>= 1.15.5)
       rake
     google-cloud-env (2.1.1)
       faraday (>= 1.0, < 3.a)
@@ -49,12 +48,13 @@ GEM
     http-cookie (1.0.5)
       domain_name (~> 0.5)
     http-form_data (2.3.0)
-    i18n (1.14.1)
+    i18n (1.14.4)
       concurrent-ruby (~> 1.0)
     jsonpath (1.1.5)
       multi_json
-    jwt (2.7.1)
-    krane (3.5.0)
+    jwt (2.8.1)
+      base64
+    krane (3.5.1)
       activesupport (>= 5.0)
       colorize (~> 0.8)
       concurrent-ruby (~> 1.1)
@@ -75,30 +75,29 @@ GEM
       rake (~> 13.0)
     mime-types (3.5.2)
       mime-types-data (~> 3.2015)
-    mime-types-data (3.2024.0206)
-    minitest (5.22.2)
+    mime-types-data (3.2024.0305)
+    minitest (5.22.3)
     multi_json (1.15.0)
     mutex_m (0.2.0)
     net-http (0.4.1)
       uri
     netrc (0.11.0)
     os (1.1.4)
-    public_suffix (5.0.4)
-    rake (13.1.0)
+    public_suffix (5.0.5)
+    rake (13.2.0)
     recursive-open-struct (1.1.3)
     rest-client (2.1.0)
       http-accept (>= 1.7.0, < 2.0)
       http-cookie (>= 1.0.2, < 2.0)
       mime-types (>= 1.16, < 4.0)
       netrc (~> 0.8)
-    ruby2_keywords (0.0.5)
     signet (0.19.0)
       addressable (~> 2.8)
       faraday (>= 0.17.5, < 3.a)
       jwt (>= 1.5, < 3.0)
       multi_json (~> 1.10)
-    statsd-instrument (3.6.1)
-    thor (1.3.0)
+    statsd-instrument (3.7.0)
+    thor (1.3.1)
     tzinfo (2.0.6)
       concurrent-ruby (~> 1.0)
     uri (0.13.0)
@@ -110,4 +109,4 @@ DEPENDENCIES
   krane
 
 BUNDLED WITH
-   2.5.5
+   2.5.6
diff --git a/pkgs/applications/networking/cluster/krane/gemset.nix b/pkgs/applications/networking/cluster/krane/gemset.nix
index 9f0aad62cc5d5..501c449dd5eff 100644
--- a/pkgs/applications/networking/cluster/krane/gemset.nix
+++ b/pkgs/applications/networking/cluster/krane/gemset.nix
@@ -5,10 +5,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "09zrw3sydkk6lwzjhzia38wg1as5aab2lgnysfdr1qxh39zi7z7v";
+      sha256 = "0blbbf2x7dn7ar4g9aij403582zb6zscbj48bz63lvaamsvlb15d";
       type = "gem";
     };
-    version = "7.1.3";
+    version = "7.1.3.2";
   };
   addressable = {
     dependencies = ["public_suffix"];
@@ -36,10 +36,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "00db5v09k1z3539g1zrk7vkjrln9967k08adh6qx33ng97a2gg5w";
+      sha256 = "0cq1c29zbkcxgdihqisirhcw76xc768z2zpd5vbccpq0l1lv76g7";
       type = "gem";
     };
-    version = "3.1.6";
+    version = "3.1.7";
   };
   colorize = {
     groups = ["default"];
@@ -82,15 +82,14 @@
     version = "0.6.20240107";
   };
   drb = {
-    dependencies = ["ruby2_keywords"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
+      sha256 = "0h5kbj9hvg5hb3c7l425zpds0vb42phvln2knab8nmazg2zp5m79";
       type = "gem";
     };
-    version = "2.2.0";
+    version = "2.2.1";
   };
   ejson = {
     groups = ["default"];
@@ -140,10 +139,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1";
+      sha256 = "1844j58cdg2q6g0rqfwg4rrambnhf059h4yg9rfmrbrcs60kskx9";
       type = "gem";
     };
-    version = "1.0.1";
+    version = "1.3.2";
   };
   google-cloud-env = {
     dependencies = ["faraday"];
@@ -215,10 +214,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
+      sha256 = "0lbm33fpb3w06wd2231sg58dwlwgjsvym93m548ajvl6s3mfvpn7";
       type = "gem";
     };
-    version = "1.14.1";
+    version = "1.14.4";
   };
   jsonpath = {
     dependencies = ["multi_json"];
@@ -232,14 +231,15 @@
     version = "1.1.5";
   };
   jwt = {
+    dependencies = ["base64"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "16z11alz13vfc4zs5l3fk6n51n2jw9lskvc4h4prnww0y797qd87";
+      sha256 = "02m3vza49pb9dirwpn8vmzbcypi3fc6l3a9dh253jwm1121g7ajb";
       type = "gem";
     };
-    version = "2.7.1";
+    version = "2.8.1";
   };
   krane = {
     dependencies = ["activesupport" "colorize" "concurrent-ruby" "ejson" "googleauth" "jsonpath" "kubeclient" "multi_json" "statsd-instrument" "thor"];
@@ -247,10 +247,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1j4vrb55akvpg08vfwvfawf9qbjv9dyiw32g57va89yq371qjasp";
+      sha256 = "1wnx86ars7csb2sxn69rb654p5xpz6xlygkx4mbyw1abgzyr2ap0";
       type = "gem";
     };
-    version = "3.5.0";
+    version = "3.5.1";
   };
   kubeclient = {
     dependencies = ["http" "jsonpath" "recursive-open-struct" "rest-client"];
@@ -290,20 +290,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0zpn5brxdf5akh7ij511bkrd30fxd7697shmxxszahqj9m62zvn5";
+      sha256 = "00x7w5xqsj9m33v3vkmy23wipkkysafksib53ypzn27p5g81w455";
       type = "gem";
     };
-    version = "3.2024.0206";
+    version = "3.2024.0305";
   };
   minitest = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0667vf0zglacry87nkcl3ns8421aydvz71vfa3g3yjhiq8zh19f5";
+      sha256 = "07lq26b86giy3ha3fhrywk9r1ajhc2pm2mzj657jnpnbj1i6g17a";
       type = "gem";
     };
-    version = "5.22.2";
+    version = "5.22.3";
   };
   multi_json = {
     groups = ["default"];
@@ -361,20 +361,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1bni4qjrsh2q49pnmmd6if4iv3ak36bd2cckrs6npl111n769k9m";
+      sha256 = "14y4vzjwf5gp0mqgs880kis0k7n2biq8i6ci6q2n315kichl1hvj";
       type = "gem";
     };
-    version = "5.0.4";
+    version = "5.0.5";
   };
   rake = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1ilr853hawi09626axx0mps4rkkmxcs54mapz9jnqvpnlwd3wsmy";
+      sha256 = "0lwv4rniry7k9dvz1n462d7j0dq9mrl6a95y6cvs6139h0ksxhgn";
       type = "gem";
     };
-    version = "13.1.0";
+    version = "13.2.0";
   };
   recursive-open-struct = {
     groups = ["default"];
@@ -397,16 +397,6 @@
     };
     version = "2.1.0";
   };
-  ruby2_keywords = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
-      type = "gem";
-    };
-    version = "0.0.5";
-  };
   signet = {
     dependencies = ["addressable" "faraday" "jwt" "multi_json"];
     groups = ["default"];
@@ -423,20 +413,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1psmiygzad3j4l0vzh2x48cmk4v6q87yg8ndvnp9jkcsbik77bzx";
+      sha256 = "14blk2vvcmr0xycd3bzlr36nz5wn7m7ana2mljfm4zxgwx5vj7h7";
       type = "gem";
     };
-    version = "3.6.1";
+    version = "3.7.0";
   };
   thor = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1hx77jxkrwi66yvs10wfxqa8s25ds25ywgrrf66acm9nbfg7zp0s";
+      sha256 = "1vq1fjp45az9hfp6fxljhdrkv75cvbab1jfrwcw738pnsiqk8zps";
       type = "gem";
     };
-    version = "1.3.0";
+    version = "1.3.1";
   };
   tzinfo = {
     dependencies = ["concurrent-ruby"];
diff --git a/pkgs/applications/networking/cluster/krelay/default.nix b/pkgs/applications/networking/cluster/krelay/default.nix
index 554c2717f31dc..5515d10dfd99b 100644
--- a/pkgs/applications/networking/cluster/krelay/default.nix
+++ b/pkgs/applications/networking/cluster/krelay/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "krelay";
-  version = "0.0.9";
+  version = "0.0.10";
 
   src = fetchFromGitHub {
     owner = "knight42";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-8UMbSsZzk9GPQR+d8ybqRQa1ouL6h8nzk/O7j0jJyk4=";
+    hash = "sha256-1sAkNueP8qGwPwdX0oSJfB/oGvna6+G8Cay+3vGJ2IE=";
   };
 
-  vendorHash = "sha256-vaWdJyPOLsrLrhipBvUCOHo/TjnJz4Qpvj3lvUPHomU=";
+  vendorHash = "sha256-iv0OJLhIZpdem2/JFirJnvmU44ylTomgB8UqCGqHbwA=";
 
   subPackages = [ "cmd/client" ];
 
diff --git a/pkgs/applications/networking/cluster/kubectl-view-allocations/Cargo.lock b/pkgs/applications/networking/cluster/kubectl-view-allocations/Cargo.lock
index f7acb320b36b5..452130670decf 100644
--- a/pkgs/applications/networking/cluster/kubectl-view-allocations/Cargo.lock
+++ b/pkgs/applications/networking/cluster/kubectl-view-allocations/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "addr2line"
-version = "0.19.0"
+version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
 dependencies = [
  "gimli",
 ]
@@ -19,17 +19,33 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
 name = "ahash"
-version = "0.8.3"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
 dependencies = [
  "cfg-if",
  "getrandom",
  "once_cell",
  "version_check",
+ "zerocopy",
 ]
 
 [[package]]
+name = "aho-corasick"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
 name = "android_system_properties"
 version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -40,55 +56,63 @@ dependencies = [
 
 [[package]]
 name = "anstream"
-version = "0.2.6"
+version = "0.6.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
 dependencies = [
  "anstyle",
  "anstyle-parse",
+ "anstyle-query",
  "anstyle-wincon",
- "concolor-override",
- "concolor-query",
- "is-terminal",
+ "colorchoice",
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle"
-version = "0.3.5"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
 
 [[package]]
 name = "anstyle-parse"
-version = "0.1.1"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
 dependencies = [
  "utf8parse",
 ]
 
 [[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
 name = "anstyle-wincon"
-version = "0.2.0"
+version = "3.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
 dependencies = [
  "anstyle",
- "windows-sys",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "anyhow"
-version = "1.0.70"
+version = "1.0.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
 
 [[package]]
 name = "async-compression"
-version = "0.3.15"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a"
+checksum = "a116f46a969224200a0a97f29cfd4c50e7534e4b4826bd23ea2c3c533039c82c"
 dependencies = [
  "flate2",
  "futures-core",
@@ -105,9 +129,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
 name = "backtrace"
-version = "0.3.67"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
+checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
 dependencies = [
  "addr2line",
  "cc",
@@ -120,39 +144,48 @@ dependencies = [
 
 [[package]]
 name = "base64"
-version = "0.13.1"
+version = "0.21.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
-name = "base64"
-version = "0.20.0"
+name = "bitflags"
+version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "1.3.2"
+version = "2.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
 
 [[package]]
 name = "bumpalo"
-version = "3.12.0"
+version = "3.15.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
 
 [[package]]
 name = "bytes"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
 
 [[package]]
 name = "cc"
-version = "1.0.79"
+version = "1.0.90"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
 
 [[package]]
 name = "cfg-if"
@@ -162,77 +195,64 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.24"
+version = "0.4.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
+checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
 dependencies = [
+ "android-tzdata",
  "iana-time-zone",
  "js-sys",
- "num-integer",
  "num-traits",
  "serde",
- "time 0.1.45",
  "wasm-bindgen",
- "winapi",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
 name = "clap"
-version = "4.2.1"
+version = "4.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "046ae530c528f252094e4a77886ee1374437744b2bff1497aa898bbddbbb29b3"
+checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813"
 dependencies = [
  "clap_builder",
  "clap_derive",
- "once_cell",
 ]
 
 [[package]]
 name = "clap_builder"
-version = "4.2.1"
+version = "4.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "223163f58c9a40c3b0a43e1c4b50a9ce09f007ea2cb1ec258a687945b4b7929f"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
 dependencies = [
  "anstream",
  "anstyle",
- "bitflags",
  "clap_lex",
  "strsim",
 ]
 
 [[package]]
 name = "clap_derive"
-version = "4.2.0"
+version = "4.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4"
+checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
 dependencies = [
  "heck",
  "proc-macro2",
  "quote",
- "syn 2.0.13",
+ "syn",
 ]
 
 [[package]]
 name = "clap_lex"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1"
-
-[[package]]
-name = "codespan-reporting"
-version = "0.11.1"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
-dependencies = [
- "termcolor",
- "unicode-width",
-]
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
 
 [[package]]
 name = "color-eyre"
-version = "0.6.2"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204"
+checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5"
 dependencies = [
  "backtrace",
  "color-spantrace",
@@ -245,9 +265,9 @@ dependencies = [
 
 [[package]]
 name = "color-spantrace"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ba75b3d9449ecdccb27ecbc479fdc0b87fa2dd43d2f8298f9bf0e59aacc8dce"
+checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2"
 dependencies = [
  "once_cell",
  "owo-colors",
@@ -256,77 +276,84 @@ dependencies = [
 ]
 
 [[package]]
-name = "concolor-override"
+name = "colorchoice"
 version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a855d4a1978dc52fb0536a04d384c2c0c1aa273597f08b77c8c4d3b2eec6037f"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
 
 [[package]]
-name = "concolor-query"
-version = "0.3.3"
+name = "core-foundation"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
 dependencies = [
- "windows-sys",
+ "core-foundation-sys",
+ "libc",
 ]
 
 [[package]]
 name = "core-foundation-sys"
-version = "0.8.3"
+version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
 
 [[package]]
 name = "crc32fast"
-version = "1.3.2"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
 dependencies = [
  "cfg-if",
 ]
 
 [[package]]
-name = "cxx"
-version = "1.0.94"
+name = "crypto-common"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
 dependencies = [
- "cc",
- "cxxbridge-flags",
- "cxxbridge-macro",
- "link-cplusplus",
+ "generic-array",
+ "typenum",
 ]
 
 [[package]]
-name = "cxx-build"
-version = "1.0.94"
+name = "data-encoding"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
 dependencies = [
- "cc",
- "codespan-reporting",
- "once_cell",
- "proc-macro2",
- "quote",
- "scratch",
- "syn 2.0.13",
+ "powerfmt",
 ]
 
 [[package]]
-name = "cxxbridge-flags"
-version = "1.0.94"
+name = "diff"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb"
+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
 
 [[package]]
-name = "cxxbridge-macro"
-version = "1.0.94"
+name = "digest"
+version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.13",
+ "block-buffer",
+ "crypto-common",
 ]
 
 [[package]]
@@ -352,9 +379,9 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.8.1"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
 
 [[package]]
 name = "encode_unicode"
@@ -363,31 +390,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
 
 [[package]]
-name = "errno"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0"
-dependencies = [
- "errno-dragonfly",
- "libc",
- "windows-sys",
-]
-
-[[package]]
-name = "errno-dragonfly"
-version = "0.1.2"
+name = "equivalent"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
-dependencies = [
- "cc",
- "libc",
-]
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "eyre"
-version = "0.6.8"
+version = "0.6.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb"
+checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"
 dependencies = [
  "indenter",
  "once_cell",
@@ -395,9 +407,9 @@ dependencies = [
 
 [[package]]
 name = "flate2"
-version = "1.0.25"
+version = "1.0.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
 dependencies = [
  "crc32fast",
  "miniz_oxide",
@@ -410,40 +422,19 @@ 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.1.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 dependencies = [
  "percent-encoding",
 ]
 
 [[package]]
-name = "fuchsia-cprng"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
-
-[[package]]
 name = "futures"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -456,9 +447,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -466,15 +457,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -483,38 +474,38 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.13",
+ "syn",
 ]
 
 [[package]]
 name = "futures-sink"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
 
 [[package]]
 name = "futures-task"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
 
 [[package]]
 name = "futures-util"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -529,6 +520,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
 name = "gethostname"
 version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -540,53 +541,53 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.8"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
 dependencies = [
  "cfg-if",
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
 ]
 
 [[package]]
 name = "gimli"
-version = "0.27.2"
+version = "0.28.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 
 [[package]]
 name = "hashbrown"
-version = "0.12.3"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
 
 [[package]]
 name = "heck"
-version = "0.4.1"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
 
 [[package]]
 name = "hermit-abi"
-version = "0.2.6"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
-name = "hermit-abi"
-version = "0.3.1"
+name = "home"
+version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
 
 [[package]]
 name = "http"
-version = "0.2.9"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
 dependencies = [
  "bytes",
  "fnv",
@@ -595,9 +596,9 @@ dependencies = [
 
 [[package]]
 name = "http-body"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
 dependencies = [
  "bytes",
  "http",
@@ -606,9 +607,9 @@ dependencies = [
 
 [[package]]
 name = "http-range-header"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
+checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
 
 [[package]]
 name = "httparse"
@@ -618,15 +619,15 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
 
 [[package]]
 name = "httpdate"
-version = "1.0.2"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
 
 [[package]]
 name = "hyper"
-version = "0.14.25"
+version = "0.14.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899"
+checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -646,21 +647,19 @@ dependencies = [
 ]
 
 [[package]]
-name = "hyper-openssl"
-version = "0.9.2"
+name = "hyper-rustls"
+version = "0.24.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6ee5d7a8f718585d1c3c61dfde28ef5b0bb14734b4db13f5ada856cdc6c612b"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
 dependencies = [
+ "futures-util",
  "http",
  "hyper",
- "linked_hash_set",
- "once_cell",
- "openssl",
- "openssl-sys",
- "parking_lot",
+ "log",
+ "rustls",
+ "rustls-native-certs",
  "tokio",
- "tokio-openssl",
- "tower-layer",
+ "tokio-rustls",
 ]
 
 [[package]]
@@ -677,33 +676,32 @@ dependencies = [
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.54"
+version = "0.1.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
  "iana-time-zone-haiku",
  "js-sys",
  "wasm-bindgen",
- "windows",
+ "windows-core",
 ]
 
 [[package]]
 name = "iana-time-zone-haiku"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
 dependencies = [
- "cxx",
- "cxx-build",
+ "cc",
 ]
 
 [[package]]
 name = "idna"
-version = "0.3.0"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
 dependencies = [
  "unicode-bidi",
  "unicode-normalization",
@@ -717,79 +715,69 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
 
 [[package]]
 name = "indexmap"
-version = "1.9.3"
+version = "2.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
 dependencies = [
- "autocfg",
+ "equivalent",
  "hashbrown",
 ]
 
 [[package]]
-name = "io-lifetimes"
-version = "1.0.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb"
-dependencies = [
- "hermit-abi 0.3.1",
- "libc",
- "windows-sys",
-]
-
-[[package]]
 name = "is-terminal"
-version = "0.4.6"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "256017f749ab3117e93acb91063009e1f1bb56d03965b14c2c8df4eb02c524d8"
+checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
 dependencies = [
- "hermit-abi 0.3.1",
- "io-lifetimes",
- "rustix",
- "windows-sys",
+ "hermit-abi",
+ "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "itertools"
-version = "0.10.5"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
 dependencies = [
  "either",
 ]
 
 [[package]]
 name = "itoa"
-version = "1.0.6"
+version = "1.0.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
 
 [[package]]
 name = "js-sys"
-version = "0.3.61"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
 dependencies = [
  "wasm-bindgen",
 ]
 
 [[package]]
-name = "jsonpath_lib"
-version = "0.3.0"
+name = "jsonpath-rust"
+version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f"
+checksum = "06cc127b7c3d270be504572364f9569761a180b981919dd0d87693a7f5fb7829"
 dependencies = [
- "log",
- "serde",
+ "pest",
+ "pest_derive",
+ "regex",
  "serde_json",
+ "thiserror",
 ]
 
 [[package]]
 name = "k8s-openapi"
-version = "0.17.0"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1985030683a2bac402cbda61222195de80d3f66b4c87ab56e5fea379bd98c3"
+checksum = "edc3606fd16aca7989db2f84bb25684d0270c6d6fa1dbcd0025af7b4130523a6"
 dependencies = [
- "base64 0.20.0",
+ "base64",
  "bytes",
  "chrono",
  "serde",
@@ -799,9 +787,9 @@ dependencies = [
 
 [[package]]
 name = "kube"
-version = "0.80.0"
+version = "0.87.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "414d80c69906a91e8ecf4ae16d0fb504e19aa6b099135d35d85298b4e4be3ed3"
+checksum = "3499c8d60c763246c7a213f51caac1e9033f46026904cb89bc8951ae8601f26e"
 dependencies = [
  "k8s-openapi",
  "kube-client",
@@ -810,27 +798,28 @@ dependencies = [
 
 [[package]]
 name = "kube-client"
-version = "0.80.0"
+version = "0.87.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dc5ae0b9148b4e2ebb0dabda06a0cd65b1eed2f41d792d49787841a68050283"
+checksum = "033450dfa0762130565890dadf2f8835faedf749376ca13345bcd8ecd6b5f29f"
 dependencies = [
- "base64 0.20.0",
+ "base64",
  "bytes",
  "chrono",
- "dirs-next",
  "either",
  "futures",
+ "home",
  "http",
  "http-body",
  "hyper",
- "hyper-openssl",
+ "hyper-rustls",
  "hyper-timeout",
- "jsonpath_lib",
+ "jsonpath-rust",
  "k8s-openapi",
  "kube-core",
- "openssl",
  "pem",
  "pin-project",
+ "rustls",
+ "rustls-pemfile",
  "secrecy",
  "serde",
  "serde_json",
@@ -846,9 +835,9 @@ dependencies = [
 
 [[package]]
 name = "kube-core"
-version = "0.80.0"
+version = "0.87.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98331c6f1354893f7c50da069e43a3fd1c84e55bbedc7765d9db22ec3291d07d"
+checksum = "b5bba93d054786eba7994d03ce522f368ef7d48c88a1826faa28478d85fb63ae"
 dependencies = [
  "chrono",
  "form_urlencoded",
@@ -862,7 +851,7 @@ dependencies = [
 
 [[package]]
 name = "kubectl-view-allocations"
-version = "0.16.3"
+version = "0.18.1"
 dependencies = [
  "anyhow",
  "chrono",
@@ -871,11 +860,10 @@ dependencies = [
  "itertools",
  "k8s-openapi",
  "kube",
- "openssl",
+ "pretty_assertions",
  "prettytable-rs",
  "serde",
  "serde_json",
- "spectral",
  "thiserror",
  "tokio",
  "tracing",
@@ -892,45 +880,26 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libc"
-version = "0.2.140"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
-
-[[package]]
-name = "link-cplusplus"
-version = "1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "linked-hash-map"
-version = "0.5.6"
+version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
-name = "linked_hash_set"
-version = "0.1.4"
+name = "libredox"
+version = "0.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588"
+checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
 dependencies = [
- "linked-hash-map",
+ "bitflags 2.4.2",
+ "libc",
+ "redox_syscall",
 ]
 
 [[package]]
-name = "linux-raw-sys"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f"
-
-[[package]]
 name = "lock_api"
-version = "0.4.9"
+version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -938,12 +907,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.17"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if",
-]
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
 
 [[package]]
 name = "matchers"
@@ -951,192 +917,92 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
 dependencies = [
- "regex-automata",
+ "regex-automata 0.1.10",
 ]
 
 [[package]]
 name = "memchr"
-version = "2.5.0"
+version = "2.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+
+[[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.6.2"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
 dependencies = [
  "adler",
 ]
 
 [[package]]
 name = "mio"
-version = "0.8.6"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
- "log",
- "wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys",
-]
-
-[[package]]
-name = "num"
-version = "0.1.42"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
-dependencies = [
- "num-bigint",
- "num-complex",
- "num-integer",
- "num-iter",
- "num-rational",
- "num-traits",
-]
-
-[[package]]
-name = "num-bigint"
-version = "0.1.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1"
-dependencies = [
- "num-integer",
- "num-traits",
- "rand",
- "rustc-serialize",
-]
-
-[[package]]
-name = "num-complex"
-version = "0.1.43"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b288631d7878aaf59442cffd36910ea604ecd7745c36054328595114001c9656"
-dependencies = [
- "num-traits",
- "rustc-serialize",
+ "wasi",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "num-integer"
-version = "0.1.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-dependencies = [
- "autocfg",
- "num-traits",
-]
-
-[[package]]
-name = "num-iter"
-version = "0.1.43"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
-dependencies = [
- "autocfg",
- "num-integer",
- "num-traits",
-]
-
-[[package]]
-name = "num-rational"
-version = "0.1.42"
+name = "num-conv"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee314c74bd753fc86b4780aa9475da469155f3848473a261d2d18e35245a784e"
-dependencies = [
- "num-bigint",
- "num-integer",
- "num-traits",
- "rustc-serialize",
-]
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
 
 [[package]]
 name = "num-traits"
-version = "0.2.15"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
 name = "num_cpus"
-version = "1.15.0"
+version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi 0.2.6",
+ "hermit-abi",
  "libc",
 ]
 
 [[package]]
 name = "object"
-version = "0.30.3"
+version = "0.32.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
-
-[[package]]
-name = "openssl"
-version = "0.10.49"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d2f106ab837a24e03672c59b1239669a0596406ff657c3c0835b6b7f0f35a33"
-dependencies = [
- "bitflags",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[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 2.0.13",
-]
-
-[[package]]
-name = "openssl-src"
-version = "111.25.2+1.1.1t"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "320708a054ad9b3bf314688b5db87cf4d6683d64cfc835e2337924ae62bf4431"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.84"
+name = "openssl-probe"
+version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a20eace9dc2d82904039cb76dcf50fb1a0bba071cfd1629720b5d6f1ddba0fa"
-dependencies = [
- "cc",
- "libc",
- "openssl-src",
- "pkg-config",
- "vcpkg",
-]
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "ordered-float"
-version = "2.10.0"
+version = "2.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
+checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
 dependencies = [
  "num-traits",
 ]
@@ -1159,57 +1025,103 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.7"
+version = "0.9.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
 dependencies = [
  "cfg-if",
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-sys",
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
 name = "pem"
-version = "1.1.1"
+version = "3.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"
+checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310"
 dependencies = [
- "base64 0.13.1",
+ "base64",
+ "serde",
 ]
 
 [[package]]
 name = "percent-encoding"
-version = "2.2.0"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "pest"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8"
+dependencies = [
+ "memchr",
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0d24f72393fd16ab6ac5738bc33cdb6a9aa73f8b902e8fe29cf4e67d7dd1026"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc17e2a6c7d0a492f0158d7a4bd66cc17280308bbaff78d5bef566dca35ab80"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "934cd7631c050f4674352a6e835d5f6711ffbfb9345c2fc0107155ac495ae293"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
 
 [[package]]
 name = "pin-project"
-version = "1.0.12"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
 dependencies = [
  "pin-project-internal",
 ]
 
 [[package]]
 name = "pin-project-internal"
-version = "1.0.12"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn",
 ]
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.9"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
 
 [[package]]
 name = "pin-utils"
@@ -1218,10 +1130,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
-name = "pkg-config"
-version = "0.3.26"
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "pretty_assertions"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
+dependencies = [
+ "diff",
+ "yansi",
+]
 
 [[package]]
 name = "prettytable-rs"
@@ -1238,86 +1160,52 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.55"
+version = "1.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d0dd4be24fcdcfeaa12a432d588dc59bbad6cad3510c67e74a2b6b2fc950564"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.26"
+version = "1.0.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
-name = "rand"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
-dependencies = [
- "fuchsia-cprng",
- "libc",
- "rand_core 0.3.1",
- "rdrand",
- "winapi",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
-dependencies = [
- "rand_core 0.4.2",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
-
-[[package]]
-name = "rdrand"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
-dependencies = [
- "rand_core 0.3.1",
-]
-
-[[package]]
 name = "redox_syscall"
-version = "0.2.16"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
 name = "redox_users"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
 dependencies = [
  "getrandom",
- "redox_syscall",
+ "libredox",
  "thiserror",
 ]
 
 [[package]]
 name = "regex"
-version = "1.7.3"
+version = "1.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
 dependencies = [
- "regex-syntax",
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.6",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
@@ -1326,7 +1214,18 @@ version = "0.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
 dependencies = [
- "regex-syntax",
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
@@ -1336,69 +1235,111 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
+name = "regex-syntax"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
 name = "ring"
-version = "0.16.20"
+version = "0.17.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
 dependencies = [
  "cc",
+ "cfg-if",
+ "getrandom",
  "libc",
- "once_cell",
  "spin",
  "untrusted",
- "web-sys",
- "winapi",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
 
 [[package]]
-name = "rustc-serialize"
-version = "0.3.24"
+name = "rustls"
+version = "0.21.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
+checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-webpki",
+ "sct",
+]
 
 [[package]]
-name = "rustix"
-version = "0.37.6"
+name = "rustls-native-certs"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d097081ed288dfe45699b72f5b5d648e5f15d64d900c7080273baa20c16a6849"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
 dependencies = [
- "bitflags",
- "errno",
- "io-lifetimes",
- "libc",
- "linux-raw-sys",
- "windows-sys",
+ "openssl-probe",
+ "rustls-pemfile",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring",
+ "untrusted",
 ]
 
 [[package]]
 name = "rustversion"
-version = "1.0.12"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "ryu"
-version = "1.0.13"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+
+[[package]]
+name = "schannel"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
+dependencies = [
+ "windows-sys 0.52.0",
+]
 
 [[package]]
 name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
-name = "scratch"
-version = "1.0.5"
+name = "sct"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring",
+ "untrusted",
+]
 
 [[package]]
 name = "secrecy"
@@ -1411,10 +1352,33 @@ dependencies = [
 ]
 
 [[package]]
+name = "security-framework"
+version = "2.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
 name = "serde"
-version = "1.0.159"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 dependencies = [
  "serde_derive",
 ]
@@ -1431,22 +1395,21 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.159"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.13",
+ "syn",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.95"
+version = "1.0.114"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
 dependencies = [
- "indexmap",
  "itoa",
  "ryu",
  "serde",
@@ -1454,21 +1417,33 @@ dependencies = [
 
 [[package]]
 name = "serde_yaml"
-version = "0.8.26"
+version = "0.9.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
+checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f"
 dependencies = [
  "indexmap",
+ "itoa",
  "ryu",
  "serde",
- "yaml-rust",
+ "unsafe-libyaml",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
 ]
 
 [[package]]
 name = "sharded-slab"
-version = "0.1.4"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
 dependencies = [
  "lazy_static",
 ]
@@ -1484,43 +1459,34 @@ dependencies = [
 
 [[package]]
 name = "slab"
-version = "0.4.8"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
 name = "smallvec"
-version = "1.10.0"
+version = "1.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
 
 [[package]]
 name = "socket2"
-version = "0.4.9"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
 dependencies = [
  "libc",
- "winapi",
-]
-
-[[package]]
-name = "spectral"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae3c15181f4b14e52eeaac3efaeec4d2764716ce9c86da0c934c3e318649c5ba"
-dependencies = [
- "num",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "spin"
-version = "0.5.2"
+version = "0.9.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
 
 [[package]]
 name = "static_assertions"
@@ -1530,26 +1496,15 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
 [[package]]
 name = "strsim"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
-
-[[package]]
-name = "syn"
-version = "1.0.109"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
+checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
 
 [[package]]
 name = "syn"
-version = "2.0.13"
+version = "2.0.52"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec"
+checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1558,11 +1513,11 @@ dependencies = [
 
 [[package]]
 name = "tame-oauth"
-version = "0.8.1"
+version = "0.9.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7aa56576cb543707e19361a4c69431c37a712e85e4472aff0834a6c31f8df833"
+checksum = "fd95ca1e8f5d9d3e83a626370af9ff1356ed1605ad128d99f9bea57432c112be"
 dependencies = [
- "base64 0.13.1",
+ "data-encoding",
  "http",
  "ring",
  "serde",
@@ -1583,39 +1538,30 @@ dependencies = [
 ]
 
 [[package]]
-name = "termcolor"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
 name = "thiserror"
-version = "1.0.40"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.40"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.13",
+ "syn",
 ]
 
 [[package]]
 name = "thread_local"
-version = "1.1.7"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
 dependencies = [
  "cfg-if",
  "once_cell",
@@ -1623,22 +1569,14 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.1.45"
+version = "0.3.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
-dependencies = [
- "libc",
- "wasi 0.10.0+wasi-snapshot-preview1",
- "winapi",
-]
-
-[[package]]
-name = "time"
-version = "0.3.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
 dependencies = [
+ "deranged",
  "itoa",
+ "num-conv",
+ "powerfmt",
  "serde",
  "time-core",
  "time-macros",
@@ -1646,16 +1584,17 @@ dependencies = [
 
 [[package]]
 name = "time-core"
-version = "0.1.0"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.8"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
+checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
 dependencies = [
+ "num-conv",
  "time-core",
 ]
 
@@ -1676,11 +1615,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.27.0"
+version = "1.36.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001"
+checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
 dependencies = [
- "autocfg",
+ "backtrace",
  "bytes",
  "libc",
  "mio",
@@ -1690,7 +1629,7 @@ dependencies = [
  "signal-hook-registry",
  "socket2",
  "tokio-macros",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -1705,32 +1644,30 @@ dependencies = [
 
 [[package]]
 name = "tokio-macros"
-version = "2.0.0"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.13",
+ "syn",
 ]
 
 [[package]]
-name = "tokio-openssl"
-version = "0.6.3"
+name = "tokio-rustls"
+version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08f9ffb7809f1b20c1b398d92acf4cc719874b3b2b2d9ea2f09b4a80350878a"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
 dependencies = [
- "futures-util",
- "openssl",
- "openssl-sys",
+ "rustls",
  "tokio",
 ]
 
 [[package]]
 name = "tokio-util"
-version = "0.7.7"
+version = "0.7.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2"
+checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
 dependencies = [
  "bytes",
  "futures-core",
@@ -1759,19 +1696,20 @@ dependencies = [
 
 [[package]]
 name = "tower-http"
-version = "0.3.5"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
+checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
 dependencies = [
  "async-compression",
- "base64 0.13.1",
- "bitflags",
+ "base64",
+ "bitflags 2.4.2",
  "bytes",
  "futures-core",
  "futures-util",
  "http",
  "http-body",
  "http-range-header",
+ "mime",
  "pin-project-lite",
  "tokio",
  "tokio-util",
@@ -1794,11 +1732,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
 
 [[package]]
 name = "tracing"
-version = "0.1.37"
+version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
 dependencies = [
- "cfg-if",
  "log",
  "pin-project-lite",
  "tracing-attributes",
@@ -1807,27 +1744,27 @@ dependencies = [
 
 [[package]]
 name = "tracing-attributes"
-version = "0.1.23"
+version = "0.1.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn",
 ]
 
 [[package]]
 name = "tracing-bunyan-formatter"
-version = "0.3.7"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25a348912d4e90923cb93343691d3be97e3409607363706c400fc935bb032fb0"
+checksum = "b5c266b9ac83dedf0e0385ad78514949e6d89491269e7065bee51d2bb8ec7373"
 dependencies = [
  "ahash",
  "gethostname",
  "log",
  "serde",
  "serde_json",
- "time 0.3.20",
+ "time",
  "tracing",
  "tracing-core",
  "tracing-log",
@@ -1836,9 +1773,9 @@ dependencies = [
 
 [[package]]
 name = "tracing-core"
-version = "0.1.30"
+version = "0.1.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
 dependencies = [
  "once_cell",
  "valuable",
@@ -1856,20 +1793,20 @@ dependencies = [
 
 [[package]]
 name = "tracing-log"
-version = "0.1.3"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2"
 dependencies = [
- "lazy_static",
  "log",
+ "once_cell",
  "tracing-core",
 ]
 
 [[package]]
 name = "tracing-subscriber"
-version = "0.3.16"
+version = "0.3.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
 dependencies = [
  "matchers",
  "once_cell",
@@ -1882,9 +1819,9 @@ dependencies = [
 
 [[package]]
 name = "try-lock"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
 [[package]]
 name = "twox-hash"
@@ -1897,43 +1834,61 @@ dependencies = [
 ]
 
 [[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+
+[[package]]
 name = "unicode-bidi"
-version = "0.3.13"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.8"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
 dependencies = [
  "tinyvec",
 ]
 
 [[package]]
 name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "unsafe-libyaml"
+version = "0.2.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b"
 
 [[package]]
 name = "untrusted"
-version = "0.7.1"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
 name = "url"
-version = "2.3.1"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
 dependencies = [
  "form_urlencoded",
  "idna",
@@ -1953,12 +1908,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
 
 [[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.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1966,31 +1915,24 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
 name = "want"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
 dependencies = [
- "log",
  "try-lock",
 ]
 
 [[package]]
 name = "wasi"
-version = "0.10.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
-
-[[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.84"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -1998,24 +1940,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.84"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.84"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -2023,32 +1965,22 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.84"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.84"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
-
-[[package]]
-name = "web-sys"
-version = "0.3.61"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
 
 [[package]]
 name = "winapi"
@@ -2067,106 +1999,180 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
-name = "winapi-util"
-version = "0.1.5"
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "winapi",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
+name = "windows-sys"
+version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
 
 [[package]]
-name = "windows"
-version = "0.46.0"
+name = "windows-sys"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
-name = "windows-sys"
-version = "0.45.0"
+name = "windows-targets"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
 dependencies = [
- "windows-targets",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
 ]
 
 [[package]]
 name = "windows-targets"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
 ]
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.42.2"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.42.2"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.42.2"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.42.2"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
-name = "yaml-rust"
-version = "0.4.5"
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "yansi"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
+checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
 dependencies = [
- "linked-hash-map",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
 ]
 
 [[package]]
 name = "zeroize"
-version = "1.6.0"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
diff --git a/pkgs/applications/networking/cluster/kubectl-view-allocations/default.nix b/pkgs/applications/networking/cluster/kubectl-view-allocations/default.nix
index 046165f8f33ad..4d67c3786bdd5 100644
--- a/pkgs/applications/networking/cluster/kubectl-view-allocations/default.nix
+++ b/pkgs/applications/networking/cluster/kubectl-view-allocations/default.nix
@@ -8,13 +8,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "kubectl-view-allocations";
-  version = "0.16.3";
+  version = "0.18.1";
 
   src = fetchFromGitHub {
     owner = "davidB";
     repo = pname;
     rev = version;
-    sha256 = "sha256-udi39j/K4Wsxva171i7mMUQ6Jb8Ny2IEHfldt3B8IoY=";
+    sha256 = "sha256-BM0TLzoXQg3m5fdQEnO/tErW8xmuljo74GprwEgJN8o=";
   };
 
   postPatch = ''
diff --git a/pkgs/applications/networking/cluster/kubeseal/default.nix b/pkgs/applications/networking/cluster/kubeseal/default.nix
index ed5db3c9485da..d6a3f9826dff5 100644
--- a/pkgs/applications/networking/cluster/kubeseal/default.nix
+++ b/pkgs/applications/networking/cluster/kubeseal/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "kubeseal";
-  version = "0.26.0";
+  version = "0.26.2";
 
   src = fetchFromGitHub {
     owner = "bitnami-labs";
     repo = "sealed-secrets";
     rev = "v${version}";
-    sha256 = "sha256-rOaczDGjocGpYEPJpMiveWE7sHU9L0Csx2nX0Z3IrBs=";
+    sha256 = "sha256-96yaWHRfEHjXYZ9Hsh9bXk5O5viSOYhmwJ18JCbtv2U=";
   };
 
-  vendorHash = "sha256-UicMiSSSQzquNAHFpnWKbybimz3jjbBgWykhyRSU7ZI=";
+  vendorHash = "sha256-91GKy7tNKSOiJmpArgp56RXegYP7sdGpaRAxS9xwTXA=";
 
   subPackages = [ "cmd/kubeseal" ];
 
diff --git a/pkgs/applications/networking/cluster/kubespy/default.nix b/pkgs/applications/networking/cluster/kubespy/default.nix
index bfbfa1fa7ccf3..81a9145327b35 100644
--- a/pkgs/applications/networking/cluster/kubespy/default.nix
+++ b/pkgs/applications/networking/cluster/kubespy/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "kubespy";
-  version = "0.6.2";
+  version = "0.6.3";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "pulumi";
     repo = "kubespy";
-    sha256 = "sha256-eSQl8K+a9YcKXE80bl25+alHoBG8T+LCYOd4Bd9QSdY=";
+    sha256 = "sha256-l/vOIFvCQHq+gOr38SpVZ8ShZdI1bP4G5PY4hKhkCU0=";
   };
 
-  vendorHash = "sha256-brs4QIo4QoLHU95llBHN51zYcgQgN7kbMJDMy2OYOsk=";
+  vendorHash = "sha256-4q+eFMrcZsEdk1W7aorIrfS3oVAuD4V0KQ7oJ/5d8nk=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/applications/networking/cluster/kuma/default.nix b/pkgs/applications/networking/cluster/kuma/default.nix
index d8da50b9f524f..2ae43e1efd360 100644
--- a/pkgs/applications/networking/cluster/kuma/default.nix
+++ b/pkgs/applications/networking/cluster/kuma/default.nix
@@ -15,17 +15,17 @@
 
 buildGoModule rec {
   inherit pname;
-  version = "2.6.3";
+  version = "2.6.5";
   tags = lib.optionals enableGateway [ "gateway" ];
 
   src = fetchFromGitHub {
     owner = "kumahq";
     repo = "kuma";
     rev = version;
-    hash = "sha256-m/mCnX/VFUPd3+DY+7znes55myIiJ8+T51NPcgWOiZc=";
+    hash = "sha256-gZxlbapEYrp02YSvEYBtlbRT/F0ijoF76CfZFzBbsAI=";
   };
 
-  vendorHash = "sha256-otrm8avM35/8WqjSO8V8hMAzsh51unyrMVDv4321xoY=";
+  vendorHash = "sha256-kqC6CUezPt3Uj9zuHnQYbbEP564Ki4UYmqfZedUBO38=";
 
   # no test files
   doCheck = false;
diff --git a/pkgs/applications/networking/cluster/linkerd/edge.nix b/pkgs/applications/networking/cluster/linkerd/edge.nix
index 251baa6ec3724..405980c22d9ef 100644
--- a/pkgs/applications/networking/cluster/linkerd/edge.nix
+++ b/pkgs/applications/networking/cluster/linkerd/edge.nix
@@ -2,7 +2,7 @@
 
 (callPackage ./generic.nix { }) {
   channel = "edge";
-  version = "24.3.4";
-  sha256 = "0v9yjcy5wlkg3z9gl25s75j2irvn9jkgc542cz5w1gbc88i4b69v";
-  vendorHash = "sha256-TmH3OhiSmUaKv2QPzMuzTq6wRTMu8LejE1y4Vy/tVRg=";
+  version = "24.3.5";
+  sha256 = "0sl4xxdsabma6q15fh0cqhgi5gmq3q2kzlw2wvcxhy78mm8qn8b0";
+  vendorHash = "sha256-Oe8NMpcLGHmmlt3ceQQHHt1aV0zrWUI/TmCpyOVElCg=";
 }
diff --git a/pkgs/applications/networking/cluster/nixops/plugins/nixops-digitalocean.nix b/pkgs/applications/networking/cluster/nixops/plugins/nixops-digitalocean.nix
index e35b4cd07f380..f3f62e9407293 100644
--- a/pkgs/applications/networking/cluster/nixops/plugins/nixops-digitalocean.nix
+++ b/pkgs/applications/networking/cluster/nixops/plugins/nixops-digitalocean.nix
@@ -4,7 +4,8 @@
 , unstableGitUpdater
 , poetry-core
 , nixops
-, digital-ocean
+, python-digitalocean
+, pythonOlder
 }:
 
 buildPythonPackage {
@@ -12,6 +13,8 @@ buildPythonPackage {
   version = "unstable-2022-08-14";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchFromGitHub {
     owner = "nix-community";
     repo = "nixops-digitalocean";
@@ -34,7 +37,7 @@ buildPythonPackage {
   ];
 
   propagatedBuildInputs = [
-    digital-ocean
+    python-digitalocean
   ];
 
   pythonImportsCheck = [ "nixops_digitalocean" ];
diff --git a/pkgs/applications/networking/cluster/ocm/default.nix b/pkgs/applications/networking/cluster/ocm/default.nix
index 99195f8889d2a..f83347d0538e6 100644
--- a/pkgs/applications/networking/cluster/ocm/default.nix
+++ b/pkgs/applications/networking/cluster/ocm/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "ocm";
-  version = "0.1.70";
+  version = "0.1.73";
 
   src = fetchFromGitHub {
     owner = "openshift-online";
     repo = "ocm-cli";
     rev = "v${version}";
-    sha256 = "sha256-J/CN1cxEcKiEt8WMg79nA4y0gp18vSDEsBqvYuQVaIk=";
+    sha256 = "sha256-hcbCUzC+E7VHmqATw/1LQxdMLiFibgYiWrQHpm3jZLA=";
   };
 
-  vendorHash = "sha256-3HLTuWf4mK3r92s2mPE2yl/rrPxgcsB9EmrxkiJsMaE=";
+  vendorHash = "sha256-NP5LLP27hn8p2gUVO/qpdu1Yp3t8iarUUKR/FjU0Qlc=";
 
   # Strip the final binary.
   ldflags = [ "-s" "-w" ];
diff --git a/pkgs/applications/networking/cluster/pachyderm/default.nix b/pkgs/applications/networking/cluster/pachyderm/default.nix
index 1c123a9374512..4d5736724aad0 100644
--- a/pkgs/applications/networking/cluster/pachyderm/default.nix
+++ b/pkgs/applications/networking/cluster/pachyderm/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "pachyderm";
-  version = "2.9.2";
+  version = "2.9.3";
 
   src = fetchFromGitHub {
     owner = "pachyderm";
     repo = "pachyderm";
     rev = "v${version}";
-    hash = "sha256-/9j7umcIffG5jAaUW/jmIX5CUD9dUq5/ZKhzbKx0Kw4=";
+    hash = "sha256-4ER0kjp3H5B2TrR4pI3XMvmtGrUv5ZuSM8dbDeufm2s=";
   };
 
-  vendorHash = "sha256-6iwiepmzxZ4cGsPeHQDNFd2VuhmjTAX9kBdjaQPBMKU=";
+  vendorHash = "sha256-+0Df3pelty9mE1E8V+4L99/SrGK5msWn68LeB0nmAIA=";
 
   subPackages = [ "src/server/cmd/pachctl" ];
 
diff --git a/pkgs/applications/networking/cluster/terraform-compliance/default.nix b/pkgs/applications/networking/cluster/terraform-compliance/default.nix
index 69bb5d9919725..f87cdff374f71 100644
--- a/pkgs/applications/networking/cluster/terraform-compliance/default.nix
+++ b/pkgs/applications/networking/cluster/terraform-compliance/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "terraform-compliance";
-  version = "1.3.47";
+  version = "1.3.48";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "terraform-compliance";
     repo = "cli";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-QJDKBM5CTOdF7oT42vL+Yp1UsQXWvkSZzo+WSsDxAZw=";
+    sha256 = "sha256-2nf/EJcC4KYTBItByX47UqTSs2EOgsUAgRbLEdB4Iyg=";
   };
 
   postPatch = ''
diff --git a/pkgs/applications/networking/cluster/terraform/default.nix b/pkgs/applications/networking/cluster/terraform/default.nix
index 94b7fe50c5a94..73d1a85251319 100644
--- a/pkgs/applications/networking/cluster/terraform/default.nix
+++ b/pkgs/applications/networking/cluster/terraform/default.nix
@@ -31,7 +31,7 @@ let
       postConfigure = ''
         # speakeasy hardcodes /bin/stty https://github.com/bgentry/speakeasy/issues/22
         substituteInPlace vendor/github.com/bgentry/speakeasy/speakeasy_unix.go \
-          --replace "/bin/stty" "${coreutils}/bin/stty"
+          --replace-fail "/bin/stty" "${coreutils}/bin/stty"
       '';
 
       nativeBuildInputs = [ installShellFiles ];
@@ -167,9 +167,9 @@ rec {
   mkTerraform = attrs: pluggable (generic attrs);
 
   terraform_1 = mkTerraform {
-    version = "1.7.5";
-    hash = "sha256-k/ugXlHK7lEKfOpSBXQNUdcq26rVVdjo53U+7ChJLIc=";
-    vendorHash = "sha256-5sCf65gFpI3y+qwDYvD08OZHNsDMg2IuDL65NMsLQ4Y=";
+    version = "1.8.0";
+    hash = "sha256-An/ElR1tXQSb9x26R5o9gcb4XKTeVxlv+72Whcrdeoc=";
+    vendorHash = "sha256-xpgGceAA+kvwUp4T0m9rnbPoZ3uJHU2KIRsrcGr8dRo=";
     patches = [ ./provider-path-0_15.patch ];
     passthru = {
       inherit plugins;
diff --git a/pkgs/applications/networking/cluster/terragrunt/default.nix b/pkgs/applications/networking/cluster/terragrunt/default.nix
index b8a4be10f0f08..a2f8fd2fbaa1b 100644
--- a/pkgs/applications/networking/cluster/terragrunt/default.nix
+++ b/pkgs/applications/networking/cluster/terragrunt/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "terragrunt";
-  version = "0.55.20";
+  version = "0.56.5";
 
   src = fetchFromGitHub {
     owner = "gruntwork-io";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-F1+V99MxwPmtF4QHQ6/T1d8ss33R5qZOOP0B+xnGgzI=";
+    hash = "sha256-aKgcXLxFZBoomrKJFmUr/XfxHmNrkvK2IlfTR2dJNY0=";
   };
 
-  vendorHash = "sha256-ijAg0Y/dfNxDS/Jov7QYjlTZ4N4/jDMH/zCV0jdVXRc=";
+  vendorHash = "sha256-joEmkFtoVxqlVrgl2mtJN9Cyr3YdnT6tBjaSXj9z2WU=";
 
   doCheck = false;
 
diff --git a/pkgs/applications/networking/cluster/tfswitch/default.nix b/pkgs/applications/networking/cluster/tfswitch/default.nix
index 63c4ba3c2de4c..1350ff921a2c5 100644
--- a/pkgs/applications/networking/cluster/tfswitch/default.nix
+++ b/pkgs/applications/networking/cluster/tfswitch/default.nix
@@ -1,13 +1,13 @@
 { buildGoModule, lib, fetchFromGitHub }:
 buildGoModule rec {
   pname = "tfswitch";
-  version = "1.0.0";
+  version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "warrensbox";
     repo = "terraform-switcher";
     rev = version;
-    sha256 = "sha256-zUFnJCYh6XM0HiET45ZRa/ESS/n3XdYKkUJuLiDDRAg=";
+    sha256 = "sha256-Gp7+TEE7rmlabZhley/crpYZiqiKcc6uqSr6leZsmgU=";
   };
 
   vendorHash = "sha256-DsC9djgt7Er2m2TacUldpJP43jC0IBklPnu41Saf4DY=";
diff --git a/pkgs/applications/networking/cluster/tftui/default.nix b/pkgs/applications/networking/cluster/tftui/default.nix
index 5ef3142ee69d3..e36e12a3b4ff0 100644
--- a/pkgs/applications/networking/cluster/tftui/default.nix
+++ b/pkgs/applications/networking/cluster/tftui/default.nix
@@ -7,14 +7,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "tftui";
-  version = "0.12.6";
+  version = "0.13.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "idoavrah";
     repo = "terraform-tui";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vK1qKf8+RxwHUpuEQ97PcwGvObNVpd88kAb3DFRoRG0=";
+    hash = "sha256-2Kya0MRa1kc3B5nqs2MNprtnjOGyMLQh2OSErdT5W8M=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/applications/networking/cluster/werf/default.nix b/pkgs/applications/networking/cluster/werf/default.nix
index 0af40d0c10378..0a33c8f689a57 100644
--- a/pkgs/applications/networking/cluster/werf/default.nix
+++ b/pkgs/applications/networking/cluster/werf/default.nix
@@ -10,16 +10,16 @@
 
 buildGoModule rec {
   pname = "werf";
-  version = "1.2.301";
+  version = "1.2.307";
 
   src = fetchFromGitHub {
     owner = "werf";
     repo = "werf";
     rev = "v${version}";
-    hash = "sha256-w7gHcHXvCWGzIiq4NvKjha/gs7W8fmNnZPe99lHstIg=";
+    hash = "sha256-jT0QZIMHFhhMIhBj2kliRP0/B8BLYGZdojZ7THXnUmg=";
   };
 
-  vendorHash = "sha256-pPWX9KtWDgJrQKt9PX1gb0v/DCop8lOxJyAjFZr3RpI=";
+  vendorHash = "sha256-2ZRyRgW42W/z6G5DfSMqbdXnW5TNcMdz385Dt7PWj6k=";
 
   proxyVendor = true;
 
diff --git a/pkgs/applications/networking/cluster/zarf/default.nix b/pkgs/applications/networking/cluster/zarf/default.nix
index abf93f4956957..b8436f611c355 100644
--- a/pkgs/applications/networking/cluster/zarf/default.nix
+++ b/pkgs/applications/networking/cluster/zarf/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "zarf";
-  version = "0.32.6";
+  version = "0.33.0";
 
   src = fetchFromGitHub {
     owner = "defenseunicorns";
     repo = "zarf";
     rev = "v${version}";
-    hash = "sha256-YytP6JC3efREoVzKKYLz6e8YzuSZas89Sw43mQn+aBI=";
+    hash = "sha256-r/PRLOqzXANYWAq3hdLKWxw1WXJzgVjIenHky2+WXj4=";
   };
 
-  vendorHash = "sha256-nV+Beciv81brFWPVl4131Mtcj/oUwRhVTGK+M4Yedus=";
+  vendorHash = "sha256-6DGkDHBoUj5Zk0KI3HVb+trkzWzB4+8nOh1ijE9PrEk=";
   proxyVendor = true;
 
   preBuild = ''
diff --git a/pkgs/applications/networking/deck/default.nix b/pkgs/applications/networking/deck/default.nix
index e6cccf088e464..9c0187d0609be 100644
--- a/pkgs/applications/networking/deck/default.nix
+++ b/pkgs/applications/networking/deck/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "deck";
-  version = "1.36.0";
+  version = "1.36.2";
 
   src = fetchFromGitHub {
     owner = "Kong";
     repo = "deck";
     rev = "v${version}";
-    hash = "sha256-bbHJilMh7qnGvYuid8/PmIg5m42jddqOOuMd7mzQmCo=";
+    hash = "sha256-8iRWV+zm/qiSJUgx8OnCf0sZqycXnAv4dUtbTIzIT5k=";
   };
 
   nativeBuildInputs = [ installShellFiles ];
@@ -21,7 +21,7 @@ buildGoModule rec {
   ];
 
   proxyVendor = true; # darwin/linux hash mismatch
-  vendorHash = "sha256-Er9m8G020SKEN8jMIhEYiKvF27YY4dZvG0noYaH3bPU=";
+  vendorHash = "sha256-c5kq5vql3KSv8gkm4Wrp1llUhUOWZuuhkzNXDYrgUhw=";
 
   postInstall = ''
     installShellCompletion --cmd deck \
diff --git a/pkgs/applications/networking/gnome-network-displays/default.nix b/pkgs/applications/networking/gnome-network-displays/default.nix
index d61eff36081b2..413b1f3b3dafa 100644
--- a/pkgs/applications/networking/gnome-network-displays/default.nix
+++ b/pkgs/applications/networking/gnome-network-displays/default.nix
@@ -8,7 +8,7 @@
 , gettext
 , desktop-file-utils
 , appstream-glib
-, wrapGAppsHook
+, wrapGAppsHook4
 , python3
 # Not native
 , gst_all_1
@@ -42,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
     gettext
     desktop-file-utils
     appstream-glib
-    wrapGAppsHook
+    wrapGAppsHook4
     python3
   ];
 
diff --git a/pkgs/applications/networking/instant-messengers/abaddon/default.nix b/pkgs/applications/networking/instant-messengers/abaddon/default.nix
index 0ced2c892cf60..f28334ffa3c0a 100644
--- a/pkgs/applications/networking/instant-messengers/abaddon/default.nix
+++ b/pkgs/applications/networking/instant-messengers/abaddon/default.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation rec {
   pname = "abaddon";
-  version = "0.2.0";
+  version = "0.2.1";
 
   src = fetchFromGitHub {
     owner = "uowuo";
     repo = "abaddon";
     rev = "v${version}";
-    hash = "sha256-Gl4BI+bkYuc5RtClfTth+WQ4EVYCWn0xnFOaQpS7yq0=";
+    hash = "sha256-FPhHy+4BmaoGrHGsc5o79Au9JcH5C+iWTYQYwnTLaUY=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/networking/instant-messengers/beeper/default.nix b/pkgs/applications/networking/instant-messengers/beeper/default.nix
index f97a81462bf2b..c14f2e8a43854 100644
--- a/pkgs/applications/networking/instant-messengers/beeper/default.nix
+++ b/pkgs/applications/networking/instant-messengers/beeper/default.nix
@@ -11,11 +11,11 @@
 }:
 let
   pname = "beeper";
-  version = "3.102.10";
+  version = "3.102.14";
   name = "${pname}-${version}";
   src = fetchurl {
-    url = "https://download.todesktop.com/2003241lzgn20jd/beeper-3.102.10-build-2403272qaonqz6e-x86_64.AppImage";
-    hash = "sha256-rI9gUfFX5nffSawTKPII/gXE+FkzGDE18/ByGiJu8CU=";
+    url = "https://download.todesktop.com/2003241lzgn20jd/beeper-3.102.14-build-24040616ytycz8q-x86_64.AppImage";
+    hash = "sha256-A+0dXAddZq7GWMyi9v1g0B9f7b6COMkFlm8bX4XXvzU=";
   };
   appimage = appimageTools.wrapType2 {
     inherit version pname src;
diff --git a/pkgs/applications/networking/instant-messengers/chatterino2/default.nix b/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
index 19c91baf9a43e..5e61fc78091e6 100644
--- a/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
+++ b/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, cmake, pkg-config, fetchFromGitHub, qtbase, qtsvg, qtmultimedia, qtimageformats, qttools, boost, openssl, wrapQtAppsHook, libsecret }:
+{ stdenv, lib, cmake, pkg-config, fetchFromGitHub, qt6, boost, openssl, libsecret }:
 
 stdenv.mkDerivation rec {
   pname = "chatterino2";
@@ -10,8 +10,20 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-CQviw5Fw6v5EwjCldAQoJfAIZMWKBfBzUIQZEgW34k0=";
     fetchSubmodules = true;
   };
-  nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
-  buildInputs = [ qtbase qtsvg qtmultimedia qtimageformats qttools boost openssl libsecret ];
+  nativeBuildInputs = [ cmake pkg-config qt6.wrapQtAppsHook ];
+  buildInputs = [
+    qt6.qtbase
+    qt6.qtsvg
+    qt6.qtimageformats
+    qt6.qttools
+    qt6.qt5compat
+    boost
+    openssl
+    libsecret
+  ] ++ lib.optionals stdenv.isLinux [
+    qt6.qtwayland
+  ];
+  cmakeFlags = [ "-DBUILD_WITH_QT6=ON" ];
   postInstall = lib.optionalString stdenv.isDarwin ''
     mkdir -p "$out/Applications"
     mv bin/chatterino.app "$out/Applications/"
@@ -32,6 +44,6 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/Chatterino/chatterino2/blob/master/CHANGELOG.md";
     license = licenses.mit;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ rexim ];
+    maintainers = with maintainers; [ rexim supa ];
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/dino/default.nix b/pkgs/applications/networking/instant-messengers/dino/default.nix
index 258f75df4d108..19e84a5f30794 100644
--- a/pkgs/applications/networking/instant-messengers/dino/default.nix
+++ b/pkgs/applications/networking/instant-messengers/dino/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub
 , buildPackages
-, vala, cmake, ninja, wrapGAppsHook, pkg-config, gettext
+, vala, cmake, ninja, wrapGAppsHook4, pkg-config, gettext
 , gobject-introspection, glib, gdk-pixbuf, gtk4, glib-networking
 , libadwaita
 , libnotify, libsoup, libgee
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
     cmake
     ninja # https://github.com/dino/dino/issues/230
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
     gettext
     gobject-introspection
   ];
diff --git a/pkgs/applications/networking/instant-messengers/discord/default.nix b/pkgs/applications/networking/instant-messengers/discord/default.nix
index f9604c2ce1664..f2d0e55e18716 100644
--- a/pkgs/applications/networking/instant-messengers/discord/default.nix
+++ b/pkgs/applications/networking/instant-messengers/discord/default.nix
@@ -2,14 +2,14 @@
 let
   versions =
     if stdenv.isLinux then {
-      stable = "0.0.47";
-      ptb = "0.0.76";
-      canary = "0.0.326";
-      development = "0.0.16";
+      stable = "0.0.49";
+      ptb = "0.0.78";
+      canary = "0.0.346";
+      development = "0.0.17";
     } else {
-      stable = "0.0.298";
-      ptb = "0.0.105";
-      canary = "0.0.451";
+      stable = "0.0.300";
+      ptb = "0.0.107";
+      canary = "0.0.468";
       development = "0.0.39";
     };
   version = versions.${branch};
@@ -17,33 +17,33 @@ let
     x86_64-linux = {
       stable = fetchurl {
         url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
-        hash = "sha256-4cELs7K7DAfzbA0/BwAkKraTD7z58jzOf1J3Our3CwM=";
+        hash = "sha256-rVSYAkTZTlurnbUeYJFCgsPcsCqjJ1bJneQQiyhmvwQ=";
       };
       ptb = fetchurl {
         url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
-        hash = "sha256-Gj6OLzkHrEQ2CeEQpICaAh1m13DpM2cpNVsebBJ0MVc=";
+        hash = "sha256-Fp94BsR6Fzy4tV+c5ToP9GKg6GC/TryGvHWLupew4Z8=";
       };
       canary = fetchurl {
         url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
-        hash = "sha256-MxiFhd7tLvL1tBRc451qjCFZlmGM8IolckExp0sR3y8=";
+        hash = "sha256-/FBVo3ptZk2YQPoq+VpyxMlSWYlVb8ChpKW5YH/BM7U=";
       };
       development = fetchurl {
         url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
-        hash = "sha256-6QImWsNmL2JveB2QJ1MyBxkVEQfdPvKEdenRPjURptI=";
+        hash = "sha256-AmbaMVi/or+9QLuQO5u5btgKeKdrfo7bzZgGLILwgqo=";
       };
     };
     x86_64-darwin = {
       stable = fetchurl {
         url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg";
-        hash = "sha256-GlTebQ16sRgHdpB9+Jw7dn+KVZ6qIrAmWBSypTcoFmE=";
+        hash = "sha256-f9YIlzRESzzxtD9/us1DY5acu2HYo+UrwS7GWk9RwCk=";
       };
       ptb = fetchurl {
         url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
-        hash = "sha256-X5bYO1D5eWTYh22v4R274OhjTsVv70XCyrMqeRlt0Bo=";
+        hash = "sha256-etxXrO9Ksacbdes3DT1Tm4kKD/t40jGUeSAegdexRqc=";
       };
       canary = fetchurl {
         url = "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
-        hash = "sha256-psVm0eXDHVBGNb/R0kHbvz/4ilyIg4xlOj/CwkwlvgM=";
+        hash = "sha256-UOoXDwAa5pFukqTCmUfM89QVK5jB13id8ek/gwWajMM=";
       };
       development = fetchurl {
         url = "https://dl-development.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
diff --git a/pkgs/applications/networking/instant-messengers/element/pin.nix b/pkgs/applications/networking/instant-messengers/element/pin.nix
index b769f73f948f2..b7c9de0cc7323 100644
--- a/pkgs/applications/networking/instant-messengers/element/pin.nix
+++ b/pkgs/applications/networking/instant-messengers/element/pin.nix
@@ -1,9 +1,9 @@
 {
-  "version" = "1.11.63";
+  "version" = "1.11.64";
   "hashes" = {
-    "desktopSrcHash" = "sha256-wQSFnF3HzERW4iS5leHP2LZKrJkTPW+LUgmj5b0/KZk=";
-    "desktopYarnHash" = "003d44psrw09dldvp9lfhsnipmcy1fwbicsvmd48mg7n3vnrg0zw";
-    "webSrcHash" = "sha256-FjYDwXa+7Lx/K0AERn64mPbjp0QFIoVoYMPx/mG4Zrs=";
-    "webYarnHash" = "0n7z9y3141rx0c5476zw3ccfck0f4b2jwsaxmq2ff7spwyw81zd2";
+    "desktopSrcHash" = "sha256-U6vVuc7claPZI4idZmTXpm1GHm+VrmoaJNVgJU0GHMU=";
+    "desktopYarnHash" = "079jg178cq2m91fhzrdab8x33wrm5a97ga19g0268q118vbnv98l";
+    "webSrcHash" = "sha256-jphxYlSxHjck6XA3JXofC6AbVb+aVOjsbxLUqo1hRhY=";
+    "webYarnHash" = "0q91llgx8cy6zxinfqbnrcfkmclqx7czlp08f1ls43x0w2vd8447";
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/ferdium/default.nix b/pkgs/applications/networking/instant-messengers/ferdium/default.nix
index a2fe31c1099de..294564dc952f9 100644
--- a/pkgs/applications/networking/instant-messengers/ferdium/default.nix
+++ b/pkgs/applications/networking/instant-messengers/ferdium/default.nix
@@ -1,4 +1,4 @@
-{ lib, mkFranzDerivation, fetchurl, xorg, nix-update-script, stdenv }:
+{ lib, mkFranzDerivation, fetchurl, xorg, stdenv }:
 
 let
   arch = {
@@ -6,13 +6,14 @@ let
     aarch64-linux = "arm64";
   }."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
   hash = {
-    amd64-linux_hash = "sha256-ERAMFb69Y2kWiHIBn4ITEZJlx+YIpzqDye80vchOXl0=";
-    arm64-linux_hash = "sha256-B3zlhxJQaDoZ69nu/dXUbY2qxJ6FAp4CqU8+TLoNwsg=";
+    amd64-linux_hash = "sha256-RH8iHqJ0Nd3wkXmv/ZGX5JeWtxyJtVLVb0tz6tnkjrw=";
+    arm64-linux_hash = "sha256-0gvkabuxRqkMeyZiOSyT6C7v767+uCrsXE8qk0y0mYM=";
   }."${arch}-linux_hash";
-in mkFranzDerivation rec {
+in
+mkFranzDerivation rec {
   pname = "ferdium";
   name = "Ferdium";
-  version = "6.7.1";
+  version = "6.7.2";
   src = fetchurl {
     url = "https://github.com/ferdium/ferdium-app/releases/download/v${version}/Ferdium-linux-${version}-${arch}.deb";
     inherit hash;
diff --git a/pkgs/applications/networking/instant-messengers/gurk-rs/Cargo.lock b/pkgs/applications/networking/instant-messengers/gurk-rs/Cargo.lock
index 71697cfc7df28..3c5de8c878377 100644
--- a/pkgs/applications/networking/instant-messengers/gurk-rs/Cargo.lock
+++ b/pkgs/applications/networking/instant-messengers/gurk-rs/Cargo.lock
@@ -19,15 +19,6 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
 name = "aead"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "aead"
 version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
@@ -38,40 +29,27 @@ dependencies = [
 
 [[package]]
 name = "aes"
-version = "0.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
-dependencies = [
- "cfg-if",
- "cipher 0.3.0",
- "cpufeatures",
- "ctr 0.8.0",
- "opaque-debug",
-]
-
-[[package]]
-name = "aes"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
 dependencies = [
  "cfg-if",
- "cipher 0.4.4",
+ "cipher",
  "cpufeatures",
  "zeroize",
 ]
 
 [[package]]
 name = "aes-gcm"
-version = "0.9.2"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc3be92e19a7ef47457b8e6f90707e12b6ac5d20c6f3866584fa3be0787d839f"
+checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1"
 dependencies = [
- "aead 0.4.3",
- "aes 0.7.5",
- "cipher 0.3.0",
- "ctr 0.7.0",
- "ghash 0.4.4",
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "ghash",
  "subtle",
 ]
 
@@ -81,20 +59,20 @@ version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d"
 dependencies = [
- "aead 0.5.2",
- "aes 0.8.3",
- "cipher 0.4.4",
- "ctr 0.9.2",
- "polyval 0.6.1",
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "polyval",
  "subtle",
  "zeroize",
 ]
 
 [[package]]
 name = "ahash"
-version = "0.8.6"
+version = "0.8.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
+checksum = "8b79b82693f705137f8fb9b37871d99e4f9a7df12b917eed79c3d3954830a60b"
 dependencies = [
  "cfg-if",
  "getrandom",
@@ -150,9 +128,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
 
 [[package]]
 name = "anstream"
-version = "0.6.5"
+version = "0.6.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -164,9 +142,9 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.4"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
 
 [[package]]
 name = "anstyle-parse"
@@ -198,15 +176,15 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.75"
+version = "1.0.80"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
 
 [[package]]
 name = "arboard"
-version = "3.3.0"
+version = "3.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aafb29b107435aa276664c1db8954ac27a6e105cdad3c88287a199eb0e313c08"
+checksum = "1faa3c733d9a3dd6fbaf85da5d162a2e03b2e0033a90dceb0e2a90fdd1e5380a"
 dependencies = [
  "clipboard-win",
  "core-graphics",
@@ -217,7 +195,7 @@ dependencies = [
  "objc_id",
  "parking_lot 0.12.1",
  "thiserror",
- "winapi",
+ "windows-sys 0.48.0",
  "wl-clipboard-rs",
  "x11rb",
 ]
@@ -246,13 +224,13 @@ dependencies = [
 
 [[package]]
 name = "async-channel"
-version = "2.1.1"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
 dependencies = [
  "concurrent-queue",
- "event-listener 4.0.0",
- "event-listener-strategy",
+ "event-listener 5.2.0",
+ "event-listener-strategy 0.5.0",
  "futures-core",
  "pin-project-lite",
 ]
@@ -263,11 +241,11 @@ version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c"
 dependencies = [
- "async-lock 3.2.0",
+ "async-lock 3.3.0",
  "async-task",
  "concurrent-queue",
  "fastrand 2.0.1",
- "futures-lite 2.1.0",
+ "futures-lite 2.2.0",
  "slab",
 ]
 
@@ -305,18 +283,18 @@ dependencies = [
 
 [[package]]
 name = "async-io"
-version = "2.2.2"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6afaa937395a620e33dc6a742c593c01aced20aa376ffb0f628121198578ccc7"
+checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65"
 dependencies = [
- "async-lock 3.2.0",
+ "async-lock 3.3.0",
  "cfg-if",
  "concurrent-queue",
  "futures-io",
- "futures-lite 2.1.0",
+ "futures-lite 2.2.0",
  "parking",
- "polling 3.3.1",
- "rustix 0.38.28",
+ "polling 3.5.0",
+ "rustix 0.38.31",
  "slab",
  "tracing",
  "windows-sys 0.52.0",
@@ -333,12 +311,12 @@ dependencies = [
 
 [[package]]
 name = "async-lock"
-version = "3.2.0"
+version = "3.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c"
+checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
 dependencies = [
- "event-listener 4.0.0",
- "event-listener-strategy",
+ "event-listener 4.0.3",
+ "event-listener-strategy 0.4.0",
  "pin-project-lite",
 ]
 
@@ -355,7 +333,7 @@ dependencies = [
  "cfg-if",
  "event-listener 3.1.0",
  "futures-lite 1.13.0",
- "rustix 0.38.28",
+ "rustix 0.38.31",
  "windows-sys 0.48.0",
 ]
 
@@ -367,7 +345,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -376,13 +354,13 @@ version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
 dependencies = [
- "async-io 2.2.2",
+ "async-io 2.3.1",
  "async-lock 2.8.0",
  "atomic-waker",
  "cfg-if",
  "futures-core",
  "futures-io",
- "rustix 0.38.28",
+ "rustix 0.38.31",
  "signal-hook-registry",
  "slab",
  "windows-sys 0.48.0",
@@ -390,32 +368,33 @@ dependencies = [
 
 [[package]]
 name = "async-task"
-version = "4.6.0"
+version = "4.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46"
+checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
 
 [[package]]
 name = "async-trait"
-version = "0.1.74"
+version = "0.1.77"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "async-tungstenite"
-version = "0.23.0"
+version = "0.24.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1e9efbe14612da0a19fb983059a0b621e9cf6225d7018ecab4f9988215540dc"
+checksum = "3609af4bbf701ddaf1f6bb4e6257dff4ff8932327d0e685d3f653724c258b1ac"
 dependencies = [
  "futures-io",
  "futures-util",
  "log",
  "pin-project-lite",
  "rustls-native-certs",
+ "rustls-pki-types",
  "tokio",
  "tokio-rustls",
  "tungstenite",
@@ -478,21 +457,15 @@ dependencies = [
 
 [[package]]
 name = "base64"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
-
-[[package]]
-name = "base64"
 version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 
 [[package]]
 name = "base64"
-version = "0.21.5"
+version = "0.21.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
 name = "base64ct"
@@ -517,9 +490,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.1"
+version = "2.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
 dependencies = [
  "serde",
 ]
@@ -553,22 +526,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "block-modes"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e"
-dependencies = [
- "block-padding 0.2.1",
- "cipher 0.3.0",
-]
-
-[[package]]
-name = "block-padding"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
-
-[[package]]
 name = "block-padding"
 version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -584,31 +541,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
 dependencies = [
  "async-channel",
- "async-lock 3.2.0",
+ "async-lock 3.3.0",
  "async-task",
  "fastrand 2.0.1",
  "futures-io",
- "futures-lite 2.1.0",
+ "futures-lite 2.2.0",
  "piper",
  "tracing",
 ]
 
 [[package]]
 name = "bstr"
-version = "1.8.0"
+version = "1.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c"
+checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
 dependencies = [
  "memchr",
- "regex-automata 0.4.3",
+ "regex-automata 0.4.5",
  "serde",
 ]
 
 [[package]]
 name = "bumpalo"
-version = "3.14.0"
+version = "3.15.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b"
 
 [[package]]
 name = "bytecount"
@@ -618,9 +575,9 @@ checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205"
 
 [[package]]
 name = "bytemuck"
-version = "1.14.0"
+version = "1.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
 
 [[package]]
 name = "byteorder"
@@ -652,16 +609,15 @@ version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
 dependencies = [
- "cipher 0.4.4",
+ "cipher",
 ]
 
 [[package]]
 name = "cc"
-version = "1.0.83"
+version = "1.0.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc"
 dependencies = [
- "jobserver",
  "libc",
 ]
 
@@ -678,7 +634,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"
 dependencies = [
  "cfg-if",
- "cipher 0.4.4",
+ "cipher",
  "cpufeatures",
 ]
 
@@ -688,9 +644,9 @@ version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35"
 dependencies = [
- "aead 0.5.2",
+ "aead",
  "chacha20",
- "cipher 0.4.4",
+ "cipher",
  "poly1305",
  "zeroize",
 ]
@@ -703,22 +659,22 @@ checksum = "17cc5e6b5ab06331c33589842070416baa137e8b0eb912b008cfd4a78ada7919"
 
 [[package]]
 name = "chrono"
-version = "0.4.31"
+version = "0.4.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
  "num-traits",
  "serde",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
 name = "ciborium"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
 dependencies = [
  "ciborium-io",
  "ciborium-ll",
@@ -727,15 +683,15 @@ dependencies = [
 
 [[package]]
 name = "ciborium-io"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
 
 [[package]]
 name = "ciborium-ll"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
 dependencies = [
  "ciborium-io",
  "half",
@@ -743,15 +699,6 @@ dependencies = [
 
 [[package]]
 name = "cipher"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "cipher"
 version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
@@ -763,9 +710,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.4.11"
+version = "4.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2"
+checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -773,9 +720,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.4.11"
+version = "4.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb"
+checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb"
 dependencies = [
  "anstream",
  "anstyle",
@@ -785,40 +732,29 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.4.7"
+version = "4.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
+checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
 dependencies = [
- "heck 0.4.1",
+ "heck",
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "clap_lex"
-version = "0.6.0"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
 
 [[package]]
 name = "clipboard-win"
-version = "4.5.0"
+version = "5.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362"
+checksum = "12f9a0700e0127ba15d1d52dd742097f821cd9c65939303a44d970465040a297"
 dependencies = [
  "error-code",
- "str-buf",
- "winapi",
-]
-
-[[package]]
-name = "cmake"
-version = "0.1.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
-dependencies = [
- "cc",
 ]
 
 [[package]]
@@ -850,14 +786,14 @@ dependencies = [
 
 [[package]]
 name = "console"
-version = "0.15.7"
+version = "0.15.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
 dependencies = [
  "encode_unicode",
  "lazy_static",
  "libc",
- "windows-sys 0.45.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -890,9 +826,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
 
 [[package]]
 name = "core-graphics"
-version = "0.22.3"
+version = "0.23.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
+checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212"
 dependencies = [
  "bitflags 1.3.2",
  "core-foundation",
@@ -914,9 +850,9 @@ dependencies = [
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.11"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
 dependencies = [
  "libc",
 ]
@@ -938,9 +874,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
 
 [[package]]
 name = "crc32fast"
-version = "1.3.2"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
 dependencies = [
  "cfg-if",
 ]
@@ -991,55 +927,46 @@ checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216"
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.9"
+version = "0.5.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c3242926edf34aec4ac3a77108ad4854bffaa2e4ddc1824124ce59231302d5"
+checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
 dependencies = [
- "cfg-if",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-deque"
-version = "0.8.4"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
 dependencies = [
- "cfg-if",
  "crossbeam-epoch",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-epoch"
-version = "0.9.16"
+version = "0.9.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
 dependencies = [
- "autocfg",
- "cfg-if",
  "crossbeam-utils",
- "memoffset 0.9.0",
 ]
 
 [[package]]
 name = "crossbeam-queue"
-version = "0.3.9"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9bcf5bdbfdd6030fb4a1c497b5d5fc5921aa2f60d359a17e249c0e6df3de153"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
 dependencies = [
- "cfg-if",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.17"
+version = "0.8.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f"
-dependencies = [
- "cfg-if",
-]
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
 
 [[package]]
 name = "crossterm"
@@ -1047,7 +974,7 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.2",
  "crossterm_winapi",
  "futures-core",
  "libc",
@@ -1068,6 +995,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
 name = "crypto-common"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1080,35 +1013,17 @@ dependencies = [
 
 [[package]]
 name = "ctr"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a232f92a03f37dd7d7dd2adc67166c77e9cd88de5b019b9a9eecfaeaf7bfd481"
-dependencies = [
- "cipher 0.3.0",
-]
-
-[[package]]
-name = "ctr"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
-dependencies = [
- "cipher 0.3.0",
-]
-
-[[package]]
-name = "ctr"
 version = "0.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
 dependencies = [
- "cipher 0.4.4",
+ "cipher",
 ]
 
 [[package]]
 name = "curve25519-dalek"
-version = "4.0.0"
-source = "git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve25519-4.0.0#463e5c7cba32561ffee8a281c4455ff3c25660d4"
+version = "4.1.1"
+source = "git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve25519-4.1.1#a12ab4e58455bb3dc7cd73a0f9f3443507b2854b"
 dependencies = [
  "cfg-if",
  "cpufeatures",
@@ -1125,11 +1040,11 @@ dependencies = [
 [[package]]
 name = "curve25519-dalek-derive"
 version = "0.1.0"
-source = "git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve25519-4.0.0#463e5c7cba32561ffee8a281c4455ff3c25660d4"
+source = "git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve25519-4.1.1#a12ab4e58455bb3dc7cd73a0f9f3443507b2854b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -1151,9 +1066,9 @@ dependencies = [
 
 [[package]]
 name = "deranged"
-version = "0.3.10"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
 dependencies = [
  "powerfmt",
 ]
@@ -1181,6 +1096,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "derive-where"
+version = "1.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
 name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1241,7 +1167,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -1273,9 +1199,9 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
 
 [[package]]
 name = "either"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
 dependencies = [
  "serde",
 ]
@@ -1303,9 +1229,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
 
 [[package]]
 name = "enumflags2"
-version = "0.7.8"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939"
+checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d"
 dependencies = [
  "enumflags2_derive",
  "serde",
@@ -1313,13 +1239,13 @@ dependencies = [
 
 [[package]]
 name = "enumflags2_derive"
-version = "0.7.8"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246"
+checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -1350,13 +1276,9 @@ dependencies = [
 
 [[package]]
 name = "error-code"
-version = "2.3.1"
+version = "3.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
-dependencies = [
- "libc",
- "str-buf",
-]
+checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b"
 
 [[package]]
 name = "etcetera"
@@ -1388,9 +1310,20 @@ dependencies = [
 
 [[package]]
 name = "event-listener"
-version = "4.0.0"
+version = "4.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
 dependencies = [
  "concurrent-queue",
  "parking",
@@ -1403,7 +1336,17 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
 dependencies = [
- "event-listener 4.0.0",
+ "event-listener 4.0.3",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+dependencies = [
+ "event-listener 5.2.0",
  "pin-project-lite",
 ]
 
@@ -1424,18 +1367,18 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
 
 [[package]]
 name = "fdeflate"
-version = "0.3.1"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868"
+checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
 dependencies = [
  "simd-adler32",
 ]
 
 [[package]]
 name = "fiat-crypto"
-version = "0.1.20"
+version = "0.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77"
+checksum = "1676f435fc1dadde4d03e43f5d62b259e1ce5f40bd4ffb21db2b42ebe59c1382"
 
 [[package]]
 name = "filetime"
@@ -1490,18 +1433,30 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 
 [[package]]
 name = "foreign-types"
-version = "0.3.2"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
 dependencies = [
+ "foreign-types-macros",
  "foreign-types-shared",
 ]
 
 [[package]]
+name = "foreign-types-macros"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
 name = "foreign-types-shared"
-version = "0.1.1"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
 
 [[package]]
 name = "form_urlencoded"
@@ -1530,9 +1485,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
 
 [[package]]
 name = "futures"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -1545,9 +1500,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -1555,15 +1510,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -1583,9 +1538,9 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
 
 [[package]]
 name = "futures-lite"
@@ -1604,9 +1559,9 @@ dependencies = [
 
 [[package]]
 name = "futures-lite"
-version = "2.1.0"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143"
+checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba"
 dependencies = [
  "fastrand 2.0.1",
  "futures-core",
@@ -1617,32 +1572,32 @@ dependencies = [
 
 [[package]]
 name = "futures-macro"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "futures-sink"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
 
 [[package]]
 name = "futures-task"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
 
 [[package]]
 name = "futures-util"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -1677,12 +1632,12 @@ dependencies = [
 
 [[package]]
 name = "gethostname"
-version = "0.3.0"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177"
+checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
 dependencies = [
  "libc",
- "winapi",
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
@@ -1696,9 +1651,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.11"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
 dependencies = [
  "cfg-if",
  "libc",
@@ -1707,22 +1662,12 @@ dependencies = [
 
 [[package]]
 name = "ghash"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99"
-dependencies = [
- "opaque-debug",
- "polyval 0.5.3",
-]
-
-[[package]]
-name = "ghash"
 version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40"
 dependencies = [
  "opaque-debug",
- "polyval 0.6.1",
+ "polyval",
  "zeroize",
 ]
 
@@ -1740,7 +1685,7 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
 [[package]]
 name = "gurk"
-version = "0.4.0"
+version = "0.4.3"
 dependencies = [
  "aho-corasick 0.7.20",
  "anyhow",
@@ -1799,10 +1744,33 @@ dependencies = [
 ]
 
 [[package]]
+name = "h2"
+version = "0.3.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 0.2.11",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util 0.7.10",
+ "tracing",
+]
+
+[[package]]
 name = "half"
-version = "1.8.2"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
 
 [[package]]
 name = "hash32"
@@ -1838,10 +1806,10 @@ version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
  "bytes",
  "headers-core",
- "http",
+ "http 0.2.11",
  "httpdate",
  "mime",
  "sha1",
@@ -1853,7 +1821,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
 dependencies = [
- "http",
+ "http 0.2.11",
 ]
 
 [[package]]
@@ -1872,15 +1840,6 @@ dependencies = [
 
 [[package]]
 name = "heck"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
-dependencies = [
- "unicode-segmentation",
-]
-
-[[package]]
-name = "heck"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
@@ -1890,9 +1849,9 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.3"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
 name = "hex"
@@ -1956,13 +1915,24 @@ dependencies = [
 ]
 
 [[package]]
+name = "http"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
 name = "http-body"
 version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
 dependencies = [
  "bytes",
- "http",
+ "http 0.2.11",
  "pin-project-lite",
 ]
 
@@ -1988,13 +1958,14 @@ dependencies = [
  "futures-channel",
  "futures-core",
  "futures-util",
- "http",
+ "h2",
+ "http 0.2.11",
  "http-body",
  "httparse",
  "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2 0.5.5",
+ "socket2 0.5.6",
  "tokio",
  "tower-service",
  "tracing",
@@ -2003,16 +1974,17 @@ dependencies = [
 
 [[package]]
 name = "hyper-rustls"
-version = "0.24.2"
+version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+checksum = "399c78f9338483cb7e630c8474b07268983c6bd5acee012e4211f9f7bb21b070"
 dependencies = [
  "futures-util",
- "http",
+ "http 0.2.11",
  "hyper",
  "log",
- "rustls",
+ "rustls 0.22.2",
  "rustls-native-certs",
+ "rustls-pki-types",
  "tokio",
  "tokio-rustls",
 ]
@@ -2031,16 +2003,16 @@ dependencies = [
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.58"
+version = "0.1.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
  "iana-time-zone-haiku",
  "js-sys",
  "wasm-bindgen",
- "windows-core",
+ "windows-core 0.52.0",
 ]
 
 [[package]]
@@ -2064,14 +2036,13 @@ dependencies = [
 
 [[package]]
 name = "image"
-version = "0.24.7"
+version = "0.24.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711"
+checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
 dependencies = [
  "bytemuck",
  "byteorder",
  "color_quant",
- "num-rational",
  "num-traits",
  "png",
  "tiff",
@@ -2079,9 +2050,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.1.0"
+version = "2.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
 dependencies = [
  "equivalent",
  "hashbrown",
@@ -2099,15 +2070,15 @@ version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
 dependencies = [
- "block-padding 0.3.3",
+ "block-padding",
  "generic-array",
 ]
 
 [[package]]
 name = "insta"
-version = "1.34.0"
+version = "1.35.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc"
+checksum = "7c985c1bef99cf13c58fade470483d81a2bfe846ebde60ed28cc2dddec2df9e2"
 dependencies = [
  "console",
  "lazy_static",
@@ -2139,13 +2110,13 @@ dependencies = [
 
 [[package]]
 name = "is-terminal"
-version = "0.4.9"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
 dependencies = [
  "hermit-abi",
- "rustix 0.38.28",
- "windows-sys 0.48.0",
+ "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2168,9 +2139,9 @@ dependencies = [
 
 [[package]]
 name = "itertools"
-version = "0.12.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
 dependencies = [
  "either",
 ]
@@ -2182,25 +2153,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
 
 [[package]]
-name = "jobserver"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
-dependencies = [
- "libc",
-]
-
-[[package]]
 name = "jpeg-decoder"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e"
+checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
 
 [[package]]
 name = "js-sys"
-version = "0.3.66"
+version = "0.3.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
+checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -2216,9 +2178,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.151"
+version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
 name = "libloading"
@@ -2242,34 +2204,47 @@ version = "0.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.2",
  "libc",
  "redox_syscall 0.4.1",
 ]
 
 [[package]]
+name = "libsignal-core"
+version = "0.1.0"
+source = "git+https://github.com/signalapp/libsignal?tag=v0.40.1#f980fccd8ae72fe21dc202d644b358667d60e2b0"
+dependencies = [
+ "num_enum",
+ "uuid",
+]
+
+[[package]]
 name = "libsignal-protocol"
 version = "0.1.0"
-source = "git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364"
+source = "git+https://github.com/signalapp/libsignal?tag=v0.40.1#f980fccd8ae72fe21dc202d644b358667d60e2b0"
 dependencies = [
- "aes 0.8.3",
+ "aes",
  "aes-gcm-siv",
  "arrayref",
  "async-trait",
- "ctr 0.9.2",
+ "ctr",
  "curve25519-dalek",
+ "derive-where",
  "displaydoc",
  "hex",
  "hkdf",
  "hmac",
- "itertools 0.10.5",
+ "indexmap",
+ "itertools 0.12.1",
+ "libsignal-core",
  "log",
  "num_enum",
  "pqcrypto-kyber",
  "pqcrypto-traits",
- "prost 0.9.0",
- "prost-build 0.9.0",
+ "prost 0.12.3",
+ "prost-build",
  "rand",
+ "rayon",
  "sha2",
  "signal-crypto",
  "static_assertions",
@@ -2282,31 +2257,33 @@ dependencies = [
 [[package]]
 name = "libsignal-service"
 version = "0.1.0"
-source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=0a7987e#0a7987e59bbb9fb110e899ac09e8efb6e28bc46d"
+source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=689a4c2#689a4c23292026f0d7067535988eb4a9e4bdb37a"
 dependencies = [
- "aes 0.7.5",
+ "aes",
  "aes-gcm",
  "async-trait",
- "base64 0.13.1",
+ "base64 0.21.7",
  "bincode",
- "block-modes",
  "bytes",
+ "cbc",
  "chrono",
+ "ctr",
  "derivative",
  "futures",
  "hex",
  "hkdf",
  "hmac",
  "libsignal-protocol",
- "log",
  "phonenumber",
- "prost 0.10.4",
- "prost-build 0.10.4",
+ "prost 0.12.3",
+ "prost-build",
  "rand",
  "serde",
  "serde_json",
  "sha2",
  "thiserror",
+ "tracing",
+ "tracing-futures",
  "url",
  "uuid",
  "zkgroup",
@@ -2315,7 +2292,7 @@ dependencies = [
 [[package]]
 name = "libsignal-service-hyper"
 version = "0.1.0"
-source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=0a7987e#0a7987e59bbb9fb110e899ac09e8efb6e28bc46d"
+source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=689a4c2#689a4c23292026f0d7067535988eb4a9e4bdb37a"
 dependencies = [
  "async-trait",
  "async-tungstenite",
@@ -2326,14 +2303,15 @@ dependencies = [
  "hyper-rustls",
  "hyper-timeout",
  "libsignal-service",
- "log",
  "mpart-async",
- "rustls-pemfile 0.3.0",
+ "rustls-pemfile 2.1.1",
  "serde",
  "serde_json",
  "thiserror",
  "tokio",
  "tokio-rustls",
+ "tracing",
+ "tracing-futures",
  "url",
 ]
 
@@ -2362,9 +2340,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.12"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
 
 [[package]]
 name = "lock_api"
@@ -2378,9 +2356,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.20"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
 
 [[package]]
 name = "log-panics"
@@ -2440,9 +2418,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.6.4"
+version = "2.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
 
 [[package]]
 name = "memoffset"
@@ -2486,9 +2464,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
 dependencies = [
  "adler",
  "simd-adler32",
@@ -2515,7 +2493,7 @@ dependencies = [
  "bytes",
  "futures-core",
  "futures-util",
- "http",
+ "http 0.2.11",
  "httparse",
  "log",
  "memchr",
@@ -2525,7 +2503,7 @@ dependencies = [
  "rand",
  "thiserror",
  "tokio",
- "tokio-util",
+ "tokio-util 0.6.10",
 ]
 
 [[package]]
@@ -2553,7 +2531,7 @@ version = "0.27.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.2",
  "cfg-if",
  "libc",
 ]
@@ -2609,31 +2587,25 @@ dependencies = [
 ]
 
 [[package]]
-name = "num-integer"
-version = "0.1.45"
+name = "num-conv"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-dependencies = [
- "autocfg",
- "num-traits",
-]
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
 
 [[package]]
-name = "num-iter"
-version = "0.1.43"
+name = "num-integer"
+version = "0.1.46"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
 dependencies = [
- "autocfg",
- "num-integer",
  "num-traits",
 ]
 
 [[package]]
-name = "num-rational"
-version = "0.4.1"
+name = "num-iter"
+version = "0.1.44"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
 dependencies = [
  "autocfg",
  "num-integer",
@@ -2642,9 +2614,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 dependencies = [
  "autocfg",
  "libm",
@@ -2678,7 +2650,7 @@ dependencies = [
  "proc-macro-crate",
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -2712,9 +2684,9 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.32.1"
+version = "0.32.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
 dependencies = [
  "memchr",
 ]
@@ -2739,9 +2711,9 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
 
 [[package]]
 name = "opaque-debug"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
 
 [[package]]
 name = "opener"
@@ -2771,12 +2743,12 @@ dependencies = [
 
 [[package]]
 name = "os_pipe"
-version = "1.1.4"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177"
+checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2840,6 +2812,26 @@ dependencies = [
 ]
 
 [[package]]
+name = "partial-default"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "124dc3c21ffb6fb3a0562d129929a8a54998766ef7adc1ba09ddc467d092c14b"
+dependencies = [
+ "partial-default-derive",
+]
+
+[[package]]
+name = "partial-default-derive"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7459127d7a18cb202d418e4b7df1103ffd6d82a106e9b2091c250624c2ace70d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
 name = "paste"
 version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2920,6 +2912,26 @@ dependencies = [
 ]
 
 [[package]]
+name = "pin-project"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
 name = "pin-project-lite"
 version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2965,15 +2977,15 @@ dependencies = [
 
 [[package]]
 name = "pkg-config"
-version = "0.3.27"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 
 [[package]]
 name = "platforms"
-version = "3.2.0"
+version = "3.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0"
+checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c"
 
 [[package]]
 name = "plotters"
@@ -3005,9 +3017,9 @@ dependencies = [
 
 [[package]]
 name = "png"
-version = "0.17.10"
+version = "0.17.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64"
+checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
 dependencies = [
  "bitflags 1.3.2",
  "crc32fast",
@@ -3019,7 +3031,7 @@ dependencies = [
 [[package]]
 name = "poksho"
 version = "0.7.0"
-source = "git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364"
+source = "git+https://github.com/signalapp/libsignal?tag=v0.40.1#f980fccd8ae72fe21dc202d644b358667d60e2b0"
 dependencies = [
  "curve25519-dalek",
  "hmac",
@@ -3045,14 +3057,14 @@ dependencies = [
 
 [[package]]
 name = "polling"
-version = "3.3.1"
+version = "3.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e"
+checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
 dependencies = [
  "cfg-if",
  "concurrent-queue",
  "pin-project-lite",
- "rustix 0.38.28",
+ "rustix 0.38.31",
  "tracing",
  "windows-sys 0.52.0",
 ]
@@ -3065,19 +3077,7 @@ checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"
 dependencies = [
  "cpufeatures",
  "opaque-debug",
- "universal-hash 0.5.1",
-]
-
-[[package]]
-name = "polyval"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1"
-dependencies = [
- "cfg-if",
- "cpufeatures",
- "opaque-debug",
- "universal-hash 0.4.0",
+ "universal-hash",
 ]
 
 [[package]]
@@ -3089,7 +3089,7 @@ dependencies = [
  "cfg-if",
  "cpufeatures",
  "opaque-debug",
- "universal-hash 0.5.1",
+ "universal-hash",
 ]
 
 [[package]]
@@ -3130,9 +3130,9 @@ dependencies = [
 
 [[package]]
 name = "pqcrypto-kyber"
-version = "0.7.6"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe9d9695c19e525d5366c913562a331fbeef9a2ad801d9a9ded61a0e4c2fe0fb"
+checksum = "c32fe9d5c9913b1aed1ba92b3449eb2d7cf7ca29741b11455dfa34c711b95776"
 dependencies = [
  "cc",
  "glob",
@@ -3149,15 +3149,15 @@ checksum = "94e851c7654eed9e68d7d27164c454961a616cf8c203d500607ef22c737b51bb"
 
 [[package]]
 name = "presage"
-version = "0.6.0-dev"
-source = "git+https://github.com/whisperfish/presage?rev=6d7003f#6d7003fed1fa0397d42ac257ed49573d01ca6e93"
+version = "0.6.1"
+source = "git+https://github.com/whisperfish/presage?rev=97e2357#97e235721efbc47da0872ab432e401f434b0ee99"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
  "futures",
+ "hex",
  "libsignal-service",
  "libsignal-service-hyper",
  "log",
- "parking_lot 0.11.2",
  "rand",
  "serde",
  "serde_json",
@@ -3170,7 +3170,7 @@ dependencies = [
 [[package]]
 name = "presage-store-cipher"
 version = "0.1.0"
-source = "git+https://github.com/whisperfish/presage?rev=6d7003f#6d7003fed1fa0397d42ac257ed49573d01ca6e93"
+source = "git+https://github.com/whisperfish/presage?rev=97e2357#97e235721efbc47da0872ab432e401f434b0ee99"
 dependencies = [
  "blake3",
  "chacha20poly1305",
@@ -3187,16 +3187,16 @@ dependencies = [
 [[package]]
 name = "presage-store-sled"
 version = "0.6.0-dev"
-source = "git+https://github.com/whisperfish/presage?rev=6d7003f#6d7003fed1fa0397d42ac257ed49573d01ca6e93"
+source = "git+https://github.com/whisperfish/presage?rev=97e2357#97e235721efbc47da0872ab432e401f434b0ee99"
 dependencies = [
  "async-trait",
- "base64 0.12.3",
+ "base64 0.21.7",
  "fs_extra",
  "log",
  "presage",
  "presage-store-cipher",
- "prost 0.10.4",
- "prost-build 0.10.4",
+ "prost 0.12.3",
+ "prost-build",
  "quickcheck_macros",
  "serde",
  "serde_json",
@@ -3206,6 +3206,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "prettyplease"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.52",
+]
+
+[[package]]
 name = "proc-macro-crate"
 version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3217,25 +3227,15 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.70"
+version = "1.0.78"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
+checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "prost"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001"
-dependencies = [
- "bytes",
- "prost-derive 0.9.0",
-]
-
-[[package]]
-name = "prost"
 version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083e"
@@ -3245,52 +3245,42 @@ dependencies = [
 ]
 
 [[package]]
-name = "prost-build"
-version = "0.9.0"
+name = "prost"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
+checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
 dependencies = [
  "bytes",
- "heck 0.3.3",
- "itertools 0.10.5",
- "lazy_static",
- "log",
- "multimap",
- "petgraph",
- "prost 0.9.0",
- "prost-types 0.9.0",
- "regex",
- "tempfile",
- "which",
+ "prost-derive 0.12.3",
 ]
 
 [[package]]
 name = "prost-build"
-version = "0.10.4"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cab"
+checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2"
 dependencies = [
  "bytes",
- "cfg-if",
- "cmake",
- "heck 0.4.1",
- "itertools 0.10.5",
- "lazy_static",
+ "heck",
+ "itertools 0.11.0",
  "log",
  "multimap",
+ "once_cell",
  "petgraph",
- "prost 0.10.4",
- "prost-types 0.10.1",
+ "prettyplease",
+ "prost 0.12.3",
+ "prost-types",
  "regex",
+ "syn 2.0.52",
  "tempfile",
  "which",
 ]
 
 [[package]]
 name = "prost-derive"
-version = "0.9.0"
+version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
+checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc"
 dependencies = [
  "anyhow",
  "itertools 0.10.5",
@@ -3301,44 +3291,33 @@ dependencies = [
 
 [[package]]
 name = "prost-derive"
-version = "0.10.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc"
+checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
 dependencies = [
  "anyhow",
- "itertools 0.10.5",
+ "itertools 0.11.0",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "prost-types"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a"
-dependencies = [
- "bytes",
- "prost 0.9.0",
-]
-
-[[package]]
-name = "prost-types"
-version = "0.10.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68"
+checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
 dependencies = [
- "bytes",
- "prost 0.10.4",
+ "prost 0.12.3",
 ]
 
 [[package]]
 name = "pulldown-cmark"
-version = "0.9.3"
+version = "0.9.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998"
+checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.4.2",
  "getopts",
  "memchr",
  "unicase",
@@ -3381,6 +3360,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "quick-xml"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
 name = "quickcheck"
 version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3404,9 +3392,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.33"
+version = "1.0.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 dependencies = [
  "proc-macro2",
 ]
@@ -3447,7 +3435,7 @@ version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2e2e4cd95294a85c3b4446e63ef054eea43e0205b1fd60120c16b74ff7ff96ad"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.2",
  "cassowary",
  "crossterm",
  "indoc",
@@ -3460,9 +3448,9 @@ dependencies = [
 
 [[package]]
 name = "rayon"
-version = "1.8.0"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
+checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
 dependencies = [
  "either",
  "rayon-core",
@@ -3470,9 +3458,9 @@ dependencies = [
 
 [[package]]
 name = "rayon-core"
-version = "1.12.0"
+version = "1.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
 dependencies = [
  "crossbeam-deque",
  "crossbeam-utils",
@@ -3509,13 +3497,13 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.2"
+version = "1.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
 dependencies = [
  "aho-corasick 1.1.2",
  "memchr",
- "regex-automata 0.4.3",
+ "regex-automata 0.4.5",
  "regex-syntax 0.8.2",
 ]
 
@@ -3530,9 +3518,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.3"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
 dependencies = [
  "aho-corasick 1.1.2",
  "memchr",
@@ -3565,16 +3553,17 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
 name = "ring"
-version = "0.17.7"
+version = "0.17.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
 dependencies = [
  "cc",
+ "cfg-if",
  "getrandom",
  "libc",
  "spin 0.9.8",
  "untrusted",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3628,14 +3617,14 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.28"
+version = "0.38.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
+checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.2",
  "errno",
  "libc",
- "linux-raw-sys 0.4.12",
+ "linux-raw-sys 0.4.13",
  "windows-sys 0.52.0",
 ]
 
@@ -3645,43 +3634,64 @@ version = "0.21.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
 dependencies = [
- "log",
  "ring",
- "rustls-webpki",
+ "rustls-webpki 0.101.7",
  "sct",
 ]
 
 [[package]]
+name = "rustls"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.2",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
 name = "rustls-native-certs"
-version = "0.6.3"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
 dependencies = [
  "openssl-probe",
- "rustls-pemfile 1.0.4",
+ "rustls-pemfile 2.1.1",
+ "rustls-pki-types",
  "schannel",
  "security-framework",
 ]
 
 [[package]]
 name = "rustls-pemfile"
-version = "0.3.0"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ee86d63972a7c661d1536fefe8c3c8407321c3df668891286de28abcd087360"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
 dependencies = [
- "base64 0.13.1",
+ "base64 0.21.7",
 ]
 
 [[package]]
 name = "rustls-pemfile"
-version = "1.0.4"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
+ "rustls-pki-types",
 ]
 
 [[package]]
+name = "rustls-pki-types"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8"
+
+[[package]]
 name = "rustls-webpki"
 version = "0.101.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3692,6 +3702,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustls-webpki"
+version = "0.102.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
 name = "rustversion"
 version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3699,9 +3720,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "ryu"
-version = "1.0.16"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 
 [[package]]
 name = "same-file"
@@ -3714,11 +3735,11 @@ dependencies = [
 
 [[package]]
 name = "schannel"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
 dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3768,35 +3789,35 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.20"
+version = "1.0.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
 
 [[package]]
 name = "serde"
-version = "1.0.193"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.193"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.108"
+version = "1.0.114"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
 dependencies = [
  "itoa",
  "ryu",
@@ -3805,13 +3826,13 @@ dependencies = [
 
 [[package]]
 name = "serde_repr"
-version = "0.1.17"
+version = "0.1.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -3848,13 +3869,13 @@ dependencies = [
 [[package]]
 name = "signal-crypto"
 version = "0.1.0"
-source = "git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364"
+source = "git+https://github.com/signalapp/libsignal?tag=v0.40.1#f980fccd8ae72fe21dc202d644b358667d60e2b0"
 dependencies = [
- "aes 0.8.3",
+ "aes",
  "cbc",
- "ctr 0.9.2",
+ "ctr",
  "displaydoc",
- "ghash 0.5.0",
+ "ghash",
  "hmac",
  "sha1",
  "sha2",
@@ -3910,9 +3931,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
 
 [[package]]
 name = "similar"
-version = "2.3.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597"
+checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21"
 
 [[package]]
 name = "siphasher"
@@ -3947,9 +3968,9 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.11.2"
+version = "1.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
+checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
 
 [[package]]
 name = "smawk"
@@ -3969,12 +3990,12 @@ dependencies = [
 
 [[package]]
 name = "socket2"
-version = "0.5.5"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -4008,7 +4029,7 @@ version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c"
 dependencies = [
- "itertools 0.12.0",
+ "itertools 0.12.1",
  "nom",
  "unicode_categories",
 ]
@@ -4055,7 +4076,7 @@ dependencies = [
  "once_cell",
  "paste",
  "percent-encoding",
- "rustls",
+ "rustls 0.21.10",
  "rustls-pemfile 1.0.4",
  "serde",
  "serde_json",
@@ -4093,7 +4114,7 @@ dependencies = [
  "atomic-write-file",
  "dotenvy",
  "either",
- "heck 0.4.1",
+ "heck",
  "hex",
  "once_cell",
  "proc-macro2",
@@ -4118,8 +4139,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4"
 dependencies = [
  "atoi",
- "base64 0.21.5",
- "bitflags 2.4.1",
+ "base64 0.21.7",
+ "bitflags 2.4.2",
  "byteorder",
  "bytes",
  "chrono",
@@ -4162,8 +4183,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24"
 dependencies = [
  "atoi",
- "base64 0.21.5",
- "bitflags 2.4.1",
+ "base64 0.21.7",
+ "bitflags 2.4.2",
  "byteorder",
  "chrono",
  "crc",
@@ -4234,12 +4255,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
 [[package]]
-name = "str-buf"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
-
-[[package]]
 name = "stringprep"
 version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4252,9 +4267,9 @@ dependencies = [
 
 [[package]]
 name = "strsim"
-version = "0.10.0"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
 
 [[package]]
 name = "strum"
@@ -4280,7 +4295,7 @@ version = "0.24.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
 dependencies = [
- "heck 0.4.1",
+ "heck",
  "proc-macro2",
  "quote",
  "rustversion",
@@ -4293,11 +4308,11 @@ version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
 dependencies = [
- "heck 0.4.1",
+ "heck",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -4319,9 +4334,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.41"
+version = "2.0.52"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269"
+checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -4351,22 +4366,21 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.8.1"
+version = "3.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
 dependencies = [
  "cfg-if",
  "fastrand 2.0.1",
- "redox_syscall 0.4.1",
- "rustix 0.38.28",
- "windows-sys 0.48.0",
+ "rustix 0.38.31",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "textwrap"
-version = "0.16.0"
+version = "0.16.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
 dependencies = [
  "smawk",
  "unicode-linebreak",
@@ -4375,29 +4389,29 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.51"
+version = "1.0.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7"
+checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.51"
+version = "1.0.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df"
+checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "thread_local"
-version = "1.1.7"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
 dependencies = [
  "cfg-if",
  "once_cell",
@@ -4405,9 +4419,9 @@ dependencies = [
 
 [[package]]
 name = "tiff"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211"
+checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
 dependencies = [
  "flate2",
  "jpeg-decoder",
@@ -4416,12 +4430,13 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.3.31"
+version = "0.3.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
 dependencies = [
  "deranged",
  "itoa",
+ "num-conv",
  "powerfmt",
  "serde",
  "time-core",
@@ -4436,10 +4451,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.16"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f"
+checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
 dependencies = [
+ "num-conv",
  "time-core",
 ]
 
@@ -4470,9 +4486,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.35.0"
+version = "1.36.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c"
+checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
 dependencies = [
  "backtrace",
  "bytes",
@@ -4480,7 +4496,7 @@ dependencies = [
  "mio",
  "num_cpus",
  "pin-project-lite",
- "socket2 0.5.5",
+ "socket2 0.5.6",
  "tokio-macros",
  "windows-sys 0.48.0",
 ]
@@ -4503,16 +4519,17 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "tokio-rustls"
-version = "0.24.1"
+version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
 dependencies = [
- "rustls",
+ "rustls 0.22.2",
+ "rustls-pki-types",
  "tokio",
 ]
 
@@ -4542,6 +4559,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "tokio-util"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
 name = "toml"
 version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4605,7 +4636,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -4619,6 +4650,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "tracing-futures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
+dependencies = [
+ "pin-project",
+ "tracing",
+]
+
+[[package]]
 name = "tracing-log"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4665,18 +4706,19 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
 [[package]]
 name = "tungstenite"
-version = "0.20.1"
+version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
+checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1"
 dependencies = [
  "byteorder",
  "bytes",
  "data-encoding",
- "http",
+ "http 1.0.0",
  "httparse",
  "log",
  "rand",
- "rustls",
+ "rustls 0.22.2",
+ "rustls-pki-types",
  "sha1",
  "thiserror",
  "url",
@@ -4711,9 +4753,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.14"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
 
 [[package]]
 name = "unicode-ident"
@@ -4729,18 +4771,18 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
 dependencies = [
  "tinyvec",
 ]
 
 [[package]]
 name = "unicode-segmentation"
-version = "1.10.1"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-width"
@@ -4756,16 +4798,6 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
 
 [[package]]
 name = "universal-hash"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402"
-dependencies = [
- "generic-array",
- "subtle",
-]
-
-[[package]]
-name = "universal-hash"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
@@ -4812,9 +4844,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
 [[package]]
 name = "uuid"
-version = "1.6.1"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
 dependencies = [
  "getrandom",
  "serde",
@@ -4871,9 +4903,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
+checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -4881,24 +4913,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
+checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
+checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -4906,32 +4938,32 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
+checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
+checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
 
 [[package]]
 name = "wayland-backend"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4"
+checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40"
 dependencies = [
  "cc",
  "downcast-rs",
- "nix 0.26.4",
+ "rustix 0.38.31",
  "scoped-tls",
  "smallvec",
  "wayland-sys",
@@ -4939,23 +4971,23 @@ dependencies = [
 
 [[package]]
 name = "wayland-client"
-version = "0.31.1"
+version = "0.31.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3"
+checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
 dependencies = [
- "bitflags 2.4.1",
- "nix 0.26.4",
+ "bitflags 2.4.2",
+ "rustix 0.38.31",
  "wayland-backend",
  "wayland-scanner",
 ]
 
 [[package]]
 name = "wayland-protocols"
-version = "0.31.0"
+version = "0.31.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c"
+checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.2",
  "wayland-backend",
  "wayland-client",
  "wayland-scanner",
@@ -4967,7 +4999,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.2",
  "wayland-backend",
  "wayland-client",
  "wayland-protocols",
@@ -4976,12 +5008,12 @@ dependencies = [
 
 [[package]]
 name = "wayland-scanner"
-version = "0.31.0"
+version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c"
+checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283"
 dependencies = [
  "proc-macro2",
- "quick-xml 0.30.0",
+ "quick-xml 0.31.0",
  "quote",
 ]
 
@@ -4998,9 +5030,9 @@ dependencies = [
 
 [[package]]
 name = "web-sys"
-version = "0.3.66"
+version = "0.3.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
+checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -5008,15 +5040,15 @@ dependencies = [
 
 [[package]]
 name = "webpki-roots"
-version = "0.25.3"
+version = "0.25.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
+checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
 
 [[package]]
 name = "weezl"
-version = "0.1.7"
+version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
+checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
 
 [[package]]
 name = "which"
@@ -5027,7 +5059,7 @@ dependencies = [
  "either",
  "home",
  "once_cell",
- "rustix 0.38.28",
+ "rustix 0.38.31",
 ]
 
 [[package]]
@@ -5066,15 +5098,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "winapi-wsapoll"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e"
-dependencies = [
- "winapi",
-]
-
-[[package]]
 name = "winapi-x86_64-pc-windows-gnu"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5086,7 +5109,7 @@ version = "0.51.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
 dependencies = [
- "windows-core",
+ "windows-core 0.51.1",
  "windows-targets 0.48.5",
 ]
 
@@ -5100,12 +5123,12 @@ dependencies = [
 ]
 
 [[package]]
-name = "windows-sys"
-version = "0.45.0"
+name = "windows-core"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.42.2",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
@@ -5123,22 +5146,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.0",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
@@ -5158,42 +5166,30 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.0"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.0",
- "windows_aarch64_msvc 0.52.0",
- "windows_i686_gnu 0.52.0",
- "windows_i686_msvc 0.52.0",
- "windows_x86_64_gnu 0.52.0",
- "windows_x86_64_gnullvm 0.52.0",
- "windows_x86_64_msvc 0.52.0",
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
 ]
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.0"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -5203,15 +5199,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.0"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -5221,15 +5211,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -5239,15 +5223,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -5257,15 +5235,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.0"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -5275,15 +5247,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -5293,15 +5259,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.0"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
 
 [[package]]
 name = "winnow"
-version = "0.5.30"
+version = "0.5.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
 dependencies = [
  "memchr",
 ]
@@ -5328,31 +5294,26 @@ dependencies = [
 
 [[package]]
 name = "x11rb"
-version = "0.12.0"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a"
+checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
 dependencies = [
  "gethostname",
- "nix 0.26.4",
- "winapi",
- "winapi-wsapoll",
+ "rustix 0.38.31",
  "x11rb-protocol",
 ]
 
 [[package]]
 name = "x11rb-protocol"
-version = "0.12.0"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc"
-dependencies = [
- "nix 0.26.4",
-]
+checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
 
 [[package]]
 name = "x25519-dalek"
-version = "2.0.0"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96"
+checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"
 dependencies = [
  "curve25519-dalek",
  "rand_core",
@@ -5362,22 +5323,22 @@ dependencies = [
 
 [[package]]
 name = "xattr"
-version = "1.1.3"
+version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7dae5072fe1f8db8f8d29059189ac175196e410e40ba42d5d4684ae2f750995"
+checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
 dependencies = [
  "libc",
- "linux-raw-sys 0.4.12",
- "rustix 0.38.28",
+ "linux-raw-sys 0.4.13",
+ "rustix 0.38.31",
 ]
 
 [[package]]
 name = "xdg-home"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd"
+checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e"
 dependencies = [
- "nix 0.26.4",
+ "libc",
  "winapi",
 ]
 
@@ -5435,9 +5396,9 @@ dependencies = [
 
 [[package]]
 name = "zbus"
-version = "3.14.1"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948"
+checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6"
 dependencies = [
  "async-broadcast",
  "async-executor",
@@ -5476,9 +5437,9 @@ dependencies = [
 
 [[package]]
 name = "zbus_macros"
-version = "3.14.1"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d"
+checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2",
@@ -5490,9 +5451,9 @@ dependencies = [
 
 [[package]]
 name = "zbus_names"
-version = "2.6.0"
+version = "2.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9"
+checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d"
 dependencies = [
  "serde",
  "static_assertions",
@@ -5501,22 +5462,22 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.7.31"
+version = "0.7.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.7.31"
+version = "0.7.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
@@ -5536,33 +5497,40 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.41",
+ "syn 2.0.52",
 ]
 
 [[package]]
 name = "zkcredential"
 version = "0.1.0"
-source = "git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364"
+source = "git+https://github.com/signalapp/libsignal?tag=v0.40.1#f980fccd8ae72fe21dc202d644b358667d60e2b0"
 dependencies = [
  "curve25519-dalek",
+ "derive-where",
  "displaydoc",
  "lazy_static",
+ "partial-default",
  "poksho",
  "serde",
+ "subtle",
 ]
 
 [[package]]
 name = "zkgroup"
 version = "0.9.0"
-source = "git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364"
+source = "git+https://github.com/signalapp/libsignal?tag=v0.40.1#f980fccd8ae72fe21dc202d644b358667d60e2b0"
 dependencies = [
  "aes-gcm-siv",
  "bincode",
  "curve25519-dalek",
+ "derive-where",
  "displaydoc",
  "hex",
+ "hex-literal",
+ "hkdf",
  "lazy_static",
- "libsignal-protocol",
+ "libsignal-core",
+ "partial-default",
  "poksho",
  "serde",
  "sha2",
@@ -5574,9 +5542,9 @@ dependencies = [
 
 [[package]]
 name = "zvariant"
-version = "3.15.0"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c"
+checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db"
 dependencies = [
  "byteorder",
  "enumflags2",
@@ -5588,9 +5556,9 @@ dependencies = [
 
 [[package]]
 name = "zvariant_derive"
-version = "3.15.0"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd"
+checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2",
diff --git a/pkgs/applications/networking/instant-messengers/gurk-rs/default.nix b/pkgs/applications/networking/instant-messengers/gurk-rs/default.nix
index 63d8581aa7664..7bcc99d98063d 100644
--- a/pkgs/applications/networking/instant-messengers/gurk-rs/default.nix
+++ b/pkgs/applications/networking/instant-messengers/gurk-rs/default.nix
@@ -9,13 +9,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "gurk-rs";
-  version = "0.4.2";
+  version = "0.4.3";
 
   src = fetchFromGitHub {
     owner = "boxdot";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-UTjTXUc0W+vlO77ilveAy0HWF5KSKbDnrg5ewTyuTdA=";
+    hash = "sha256-MPYqWgwh5PKH3GsCDx6aa4ryorWZ96YK8KOYZ5PILkk=";
   };
 
   postPatch = ''
@@ -25,10 +25,10 @@ rustPlatform.buildRustPackage rec {
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "libsignal-protocol-0.1.0" = "sha256-FCrJO7porlY5FrwZ2c67UPd4tgN7cH2/3DTwfPjihwM=";
-      "libsignal-service-0.1.0" = "sha256-OWLtaxldKgYPP/aJuWezNkNN0990l3RtDWK38R1fL90=";
-      "curve25519-dalek-4.0.0" = "sha256-KUXvYXeVvJEQ/+dydKzXWCZmA2bFa2IosDzaBL6/Si0=";
-      "presage-0.6.0-dev" = "sha256-65YhxMAAFsnOprBWiB0uH/R9iITt+EYn+kMVjAwTgOQ=";
+      "libsignal-protocol-0.1.0" = "sha256-p4YzrtJaQhuMBTtquvS1m9llszfyTeDfl7+IXzRUFSE=";
+      "libsignal-service-0.1.0" = "sha256-p0umCPtBg9s4G6RHcwK/tU+RtQE2fFLRHOYt2GmBCtQ=";
+      "curve25519-dalek-4.1.1" = "sha256-p9Vx0lAaYILypsI4/RVsHZLOqZKaa4Wvf7DanLA38pc=";
+      "presage-0.6.1" = "sha256-MsVSUI4ht+ftO2UC1IIeCtomkzg4ug95kKsc41PDVNg=";
       "qr2term-0.3.1" = "sha256-U8YLouVZTtDwsvzZiO6YB4Pe75RXGkZXOxHCQcCOyT8=";
     };
   };
diff --git a/pkgs/applications/networking/instant-messengers/qq/default.nix b/pkgs/applications/networking/instant-messengers/qq/default.nix
index 7f940312a991c..31db4b979e8af 100644
--- a/pkgs/applications/networking/instant-messengers/qq/default.nix
+++ b/pkgs/applications/networking/instant-messengers/qq/default.nix
@@ -19,7 +19,8 @@
 , vips
 , at-spi2-core
 , autoPatchelfHook
-, makeWrapper
+, makeShellWrapper
+, wrapGAppsHook
 }:
 
 let
@@ -43,7 +44,8 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [
     autoPatchelfHook
-    makeWrapper
+    makeShellWrapper
+    wrapGAppsHook
     dpkg
   ];
 
@@ -62,6 +64,8 @@ stdenv.mkDerivation {
     xorg.libXdamage
   ];
 
+  dontWrapGApps = true;
+
   runtimeDependencies = map lib.getLib [
     systemd
   ];
@@ -75,9 +79,11 @@ stdenv.mkDerivation {
     substituteInPlace $out/share/applications/qq.desktop \
       --replace "/opt/QQ/qq" "$out/bin/qq" \
       --replace "/usr/share" "$out/share"
-    makeWrapper $out/opt/QQ/qq $out/bin/qq \
+    makeShellWrapper $out/opt/QQ/qq $out/bin/qq \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
       --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}" \
-      --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
+      --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
+      "''${gappsWrapperArgs[@]}"
 
     # Remove bundled libraries
     rm -r $out/opt/QQ/resources/app/sharp-lib
diff --git a/pkgs/applications/networking/instant-messengers/ripcord/default.nix b/pkgs/applications/networking/instant-messengers/ripcord/default.nix
index 7fd0bd9bb1d34..82d1fdff2e808 100644
--- a/pkgs/applications/networking/instant-messengers/ripcord/default.nix
+++ b/pkgs/applications/networking/instant-messengers/ripcord/default.nix
@@ -63,7 +63,7 @@ mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     # See: https://cancel.fm/ripcord/shareware-redistribution/
     license = licenses.unfreeRedistributable;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
index 7af592f0a8a11..184c699b6252b 100644
--- a/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "signalbackup-tools";
-  version = "20240328-1";
+  version = "20240412-2";
 
   src = fetchFromGitHub {
     owner = "bepaald";
     repo = pname;
     rev = version;
-    hash = "sha256-oEwWbTs8Orpo+qRCKVvkeJYEob8O/qkKmv/iA5JUpfQ=";
+    hash = "sha256-e+QA8pqMz/XH+JpKErGYWKwsxHoFPTsFrSremfOaVbg=";
   };
 
   postPatch = ''
diff --git a/pkgs/applications/networking/instant-messengers/tangram/default.nix b/pkgs/applications/networking/instant-messengers/tangram/default.nix
index c32e55ffde4ef..c68af388f323c 100644
--- a/pkgs/applications/networking/instant-messengers/tangram/default.nix
+++ b/pkgs/applications/networking/instant-messengers/tangram/default.nix
@@ -20,7 +20,7 @@
 , python3
 , webkitgtk_6_0
 , blueprint-compiler
-, wrapGAppsHook
+, wrapGAppsHook4
 }:
 
 stdenv.mkDerivation rec {
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
     pkg-config
     python3
     blueprint-compiler
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/applications/networking/instant-messengers/teams-for-linux/default.nix b/pkgs/applications/networking/instant-messengers/teams-for-linux/default.nix
index 0d430af0894c7..18c7713589f0d 100644
--- a/pkgs/applications/networking/instant-messengers/teams-for-linux/default.nix
+++ b/pkgs/applications/networking/instant-messengers/teams-for-linux/default.nix
@@ -20,18 +20,18 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "teams-for-linux";
-  version = "1.4.14";
+  version = "1.4.22";
 
   src = fetchFromGitHub {
     owner = "IsmaelMartinez";
     repo = "teams-for-linux";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-qdox6C6ztWECwSqHZoZHMbqPFrokPK0u44NUG+SHmPk=";
+    hash = "sha256-eNd12p9QvuYpiy9FaGaMSfQ3qVYzmYyO2/v/rdV3nN8=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${finalAttrs.src}/yarn.lock";
-    hash = "sha256-++ZPsBH0qHCykexpY2aZukAc+Ak1wEzAUker8ZLxA9Q=";
+    hash = "sha256-jBwyIyiWeqNmOnxmVOr7c4oMWwHElEjM25sShhTMi78=";
   };
 
   nativeBuildInputs = [ yarn prefetch-yarn-deps nodejs copyDesktopItems makeWrapper ];
diff --git a/pkgs/applications/networking/instant-messengers/telegram/telegram-desktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/telegram-desktop/default.nix
index 685efc60a965d..1784472f8b501 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/telegram-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/telegram-desktop/default.nix
@@ -63,14 +63,14 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "telegram-desktop";
-  version = "4.16.1";
+  version = "4.16.6";
 
   src = fetchFromGitHub {
     owner = "telegramdesktop";
     repo = "tdesktop";
     rev = "v${version}";
     fetchSubmodules = true;
-    hash = "sha256-sb7BpEIjSJS4ntv8s0RSJAj4BhTgHF7fEei5QXl60mA=";
+    hash = "sha256-1NRA8guTbDEraW1uXSo7q54d1e8/QnXwxkfb6k3e6b0=";
   };
 
   patches = [
diff --git a/pkgs/applications/networking/irc/weechat/default.nix b/pkgs/applications/networking/irc/weechat/default.nix
index 6eecadf97d321..9c34197fdbf55 100644
--- a/pkgs/applications/networking/irc/weechat/default.nix
+++ b/pkgs/applications/networking/irc/weechat/default.nix
@@ -36,14 +36,14 @@ let
   in
     assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
     stdenv.mkDerivation rec {
-      version = "4.2.1";
+      version = "4.2.2";
       pname = "weechat";
 
       hardeningEnable = [ "pie" ];
 
       src = fetchurl {
         url = "https://weechat.org/files/src/weechat-${version}.tar.xz";
-        hash = "sha256-JT3fCG9shFAxot0pSxVShR1rBMwIovnaSu37Pi+Rvc0=";
+        hash = "sha256-IJaLIsfw9Q35z2/4WY3RvQF8V1myyUWT9dnteyTruUE=";
       };
 
       # Why is this needed? https://github.com/weechat/weechat/issues/2031
diff --git a/pkgs/applications/networking/ktailctl/default.nix b/pkgs/applications/networking/ktailctl/default.nix
index 2b0e870ed4850..8e5e9abb0fb46 100644
--- a/pkgs/applications/networking/ktailctl/default.nix
+++ b/pkgs/applications/networking/ktailctl/default.nix
@@ -8,31 +8,33 @@
 , go
 , wrapQtAppsHook
 , qtbase
-, qtquickcontrols2
+, qtdeclarative
+, qtsvg
 , kconfig
 , kcoreaddons
 , kguiaddons
 , ki18n
-, kirigami2
+, kirigami
 , kirigami-addons
 , knotifications
+, nlohmann_json
 }:
 
 let
-  version = "0.9.0";
+  version = "0.16.0";
 
   src = fetchFromGitHub {
     owner = "f-koehler";
     repo = "KTailctl";
     rev = "v${version}";
-    hash = "sha256-nY6DEHkDVWIlvc64smXb9KshrhNgNLKiilYydbMKCqc=";
+    hash = "sha256-fIx6XfNGK+jDpeaoCzTKwv3J01yWoHOgWxjbwTGVK1U=";
   };
 
   goDeps = (buildGoModule {
     pname = "tailwrap";
     inherit src version;
     modRoot = "tailwrap";
-    vendorHash = "sha256-Y9xhoTf3vCtiNi5qOPg020EQmASo58BZI3rAoUEC8qE=";
+    vendorHash = "sha256-egTzSdOKrhdEBKarIfROxZUsxbnR9F1JDbdoKzGf9UM=";
   }).goModules;
 in
 stdenv.mkDerivation {
@@ -63,14 +65,15 @@ stdenv.mkDerivation {
 
   buildInputs = [
     qtbase
-    qtquickcontrols2
+    qtdeclarative
+    qtsvg
     kconfig
     kcoreaddons
     kguiaddons
     ki18n
-    kirigami2
-    kirigami-addons
+    kirigami
     knotifications
+    nlohmann_json
   ];
 
   meta = with lib; {
diff --git a/pkgs/applications/networking/mailreaders/tutanota-desktop/default.nix b/pkgs/applications/networking/mailreaders/tutanota-desktop/default.nix
index 00949521a7c66..7e0430c1cd82c 100644
--- a/pkgs/applications/networking/mailreaders/tutanota-desktop/default.nix
+++ b/pkgs/applications/networking/mailreaders/tutanota-desktop/default.nix
@@ -5,11 +5,11 @@
 
 appimageTools.wrapType2 rec {
   pname = "tutanota-desktop";
-  version = "220.240319.1";
+  version = "220.240321.0";
 
   src = fetchurl {
     url = "https://github.com/tutao/tutanota/releases/download/tutanota-desktop-release-${version}/tutanota-desktop-linux.AppImage";
-    hash = "sha256-eKxCgc8i2arjtFRaSMHxnTaTnbN8a0e8ORmIf/bUFwU=";
+    hash = "sha256-LbvldnhvKHvBEaOwkxA2acuUKMcYi16ceYPuMW73qLs=";
   };
 
   extraPkgs = pkgs: (appimageTools.defaultFhsEnvArgs.multiPkgs pkgs) ++ [ pkgs.libsecret ];
diff --git a/pkgs/applications/networking/mullvad/Cargo.lock b/pkgs/applications/networking/mullvad/Cargo.lock
index 391a7179b7a9e..9cbf256ce7f66 100644
--- a/pkgs/applications/networking/mullvad/Cargo.lock
+++ b/pkgs/applications/networking/mullvad/Cargo.lock
@@ -96,9 +96,9 @@ dependencies = [
 
 [[package]]
 name = "anstream"
-version = "0.5.0"
+version = "0.6.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c"
+checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -134,12 +134,12 @@ dependencies = [
 
 [[package]]
 name = "anstyle-wincon"
-version = "2.1.0"
+version = "3.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
 dependencies = [
  "anstyle",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -167,6 +167,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
 
 [[package]]
+name = "async-recursion"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.31",
+]
+
+[[package]]
 name = "async-stream"
 version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -437,9 +448,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.4.2"
+version = "4.4.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6"
+checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -447,9 +458,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.4.2"
+version = "4.4.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08"
+checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
 dependencies = [
  "anstream",
  "anstyle",
@@ -459,18 +470,18 @@ dependencies = [
 
 [[package]]
 name = "clap_complete"
-version = "4.4.1"
+version = "4.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4110a1e6af615a9e6d0a36f805d5c99099f8bab9b8042f5bc1fa220a4a89e36f"
+checksum = "eaf7dcb7c21d8ca1a2482ee0f1d341f437c9a7af6ca6da359dc5e1b164e98215"
 dependencies = [
  "clap",
 ]
 
 [[package]]
 name = "clap_derive"
-version = "4.4.2"
+version = "4.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
+checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -480,9 +491,9 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "0.5.1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
 
 [[package]]
 name = "classic-mceliece-rust"
@@ -1166,9 +1177,9 @@ checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
 
 [[package]]
 name = "h2"
-version = "0.3.21"
+version = "0.3.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"
+checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
 dependencies = [
  "bytes",
  "fnv",
@@ -1176,7 +1187,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http",
- "indexmap 1.9.3",
+ "indexmap 2.0.0",
  "slab",
  "tokio",
  "tokio-util",
@@ -1214,6 +1225,74 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 
 [[package]]
+name = "hickory-proto"
+version = "0.24.0"
+source = "git+https://github.com/hickory-dns/hickory-dns?rev=9e8f8c67fbcb6d2985503027362a3fb022529802#9e8f8c67fbcb6d2985503027362a3fb022529802"
+dependencies = [
+ "async-recursion",
+ "async-trait",
+ "cfg-if",
+ "data-encoding",
+ "enum-as-inner",
+ "futures-channel",
+ "futures-io",
+ "futures-util",
+ "idna 0.5.0",
+ "ipnet",
+ "once_cell",
+ "rand 0.8.5",
+ "serde",
+ "thiserror",
+ "tinyvec",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "hickory-resolver"
+version = "0.24.0"
+source = "git+https://github.com/hickory-dns/hickory-dns?rev=9e8f8c67fbcb6d2985503027362a3fb022529802#9e8f8c67fbcb6d2985503027362a3fb022529802"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "hickory-proto",
+ "ipconfig",
+ "lru-cache",
+ "once_cell",
+ "parking_lot",
+ "rand 0.8.5",
+ "resolv-conf",
+ "serde",
+ "smallvec",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "hickory-server"
+version = "0.24.0"
+source = "git+https://github.com/hickory-dns/hickory-dns?rev=9e8f8c67fbcb6d2985503027362a3fb022529802#9e8f8c67fbcb6d2985503027362a3fb022529802"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "cfg-if",
+ "enum-as-inner",
+ "futures-util",
+ "hickory-proto",
+ "hickory-resolver",
+ "ipnet",
+ "prefix-trie",
+ "serde",
+ "thiserror",
+ "time",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
 name = "hkdf"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1380,6 +1459,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
 name = "indexmap"
 version = "1.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1470,6 +1559,9 @@ name = "ipnet"
 version = "2.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "ipnetwork"
@@ -1817,7 +1909,7 @@ dependencies = [
  "chrono",
  "clap",
  "clap_complete",
- "env_logger 0.10.0",
+ "err-derive",
  "futures",
  "itertools",
  "mullvad-management-interface",
@@ -2574,6 +2666,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "prefix-trie"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85fe48f29e6e6fcf123d0d03d63028dbe4c4a738023d35d525df4882f4929418"
+dependencies = [
+ "ipnet",
+ "num-traits",
+]
+
+[[package]]
 name = "prettyplease"
 version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3197,7 +3299,7 @@ dependencies = [
  "cfg-if",
  "futures",
  "hyper",
- "idna",
+ "idna 0.4.0",
  "ipnet",
  "iprange",
  "json5",
@@ -3433,6 +3535,8 @@ dependencies = [
  "duct",
  "err-derive",
  "futures",
+ "hickory-proto",
+ "hickory-server",
  "inotify 0.10.2",
  "ipnetwork",
  "jnix",
@@ -3618,6 +3722,7 @@ dependencies = [
  "err-derive",
  "ipnetwork",
  "jnix",
+ "log",
  "serde",
  "x25519-dalek",
  "zeroize",
@@ -3839,9 +3944,9 @@ dependencies = [
 
 [[package]]
 name = "tokio-util"
-version = "0.7.8"
+version = "0.7.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
+checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
 dependencies = [
  "bytes",
  "futures-core",
@@ -4030,7 +4135,7 @@ dependencies = [
  "futures-channel",
  "futures-io",
  "futures-util",
- "idna",
+ "idna 0.4.0",
  "ipnet",
  "once_cell",
  "rand 0.8.5",
@@ -4201,7 +4306,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
 dependencies = [
  "form_urlencoded",
- "idna",
+ "idna 0.4.0",
  "percent-encoding",
  "serde",
 ]
@@ -4411,6 +4516,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
 name = "windows-targets"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4441,6 +4555,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
+]
+
+[[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4453,6 +4582,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4465,6 +4600,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4477,6 +4618,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4489,6 +4636,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4501,6 +4654,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4513,6 +4672,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4525,6 +4690,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
 name = "winnow"
 version = "0.5.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/pkgs/applications/networking/mullvad/libwg.nix b/pkgs/applications/networking/mullvad/libwg.nix
index ab8565b5811ce..c14675013cbf4 100644
--- a/pkgs/applications/networking/mullvad/libwg.nix
+++ b/pkgs/applications/networking/mullvad/libwg.nix
@@ -13,7 +13,7 @@ buildGoModule {
 
   sourceRoot = "${mullvad.src.name}/wireguard/libwg";
 
-  vendorHash = "sha256-MQ5tVbcwMee6lmPyKSsNBh9jrz4zwx7INf1Cb0GxjHo=";
+  vendorHash = "sha256-2hb6+OHifm/oAgXCiYf+nwtNDDZNWR6lAbLSGT3AG0I=";
 
   # XXX: hack to make the ar archive go to the correct place
   # This is necessary because passing `-o ...` to `ldflags` does not work
@@ -23,13 +23,6 @@ buildGoModule {
   ldflags = [ "-s" "-w" "-buildmode=c-archive" ];
 
   patches = [
-   # build broken without wintun reference
-   # https://github.com/mullvad/mullvadvpn-app/pull/5621
-   (fetchpatch {
-     url = "https://github.com/mullvad/mullvadvpn-app/commit/5dff68ac9c8ec26f1a39a7f44e3b684bb0833bf1.patch";
-     hash = "sha256-bUcDVmrrDblK7OJvHqf627vzVwmmvO2EL+sioAnZGbk=";
-     relative = "wireguard/libwg";
-   })
  ];
 
   postInstall = ''
diff --git a/pkgs/applications/networking/mullvad/mullvad.nix b/pkgs/applications/networking/mullvad/mullvad.nix
index c36952c9c178b..22ff976829295 100644
--- a/pkgs/applications/networking/mullvad/mullvad.nix
+++ b/pkgs/applications/networking/mullvad/mullvad.nix
@@ -17,13 +17,13 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "mullvad";
-  version = "2023.6";
+  version = "2024.1";
 
   src = fetchFromGitHub {
     owner = "mullvad";
     repo = "mullvadvpn-app";
     rev = version;
-    hash = "sha256-O4YnHwG5GUDR7MzGsuLnElcczEct+P+4/Vn/eAoo6/s=";
+    hash = "sha256-syIBYZe+e6i5A6Te51eNKcwwycnRhO1o2tP+z81NYXQ=";
   };
 
   cargoLock = {
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
     outputHashes = {
       "nix-0.26.1" = "sha256-b5bLeZVNbJE7aBnyzl0qvo0mXFeXa4hAZiuT1VJiFLk=";
       "udp-over-tcp-0.3.0" = "sha256-5PeaM7/zhux1UdlaKpnQ2yIdmFy1n2weV/ux9lSRha4=";
+      "hickory-proto-0.24.0" = "sha256-IqGVoQ1vRruCcaDr82ARkvSo42Pe9Q6iJIWnSd6GqEg=";
     };
   };
 
diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix
index 0e7bc18c99c98..ab10d4add74d0 100644
--- a/pkgs/applications/networking/mumble/default.nix
+++ b/pkgs/applications/networking/mumble/default.nix
@@ -51,7 +51,7 @@ let
       mainProgram = "mumble-server";
       homepage = "https://mumble.info";
       license = licenses.bsd3;
-      maintainers = with maintainers; [ infinisil felixsinger lilacious ];
+      maintainers = with maintainers; [ felixsinger lilacious ];
       platforms = platforms.linux;
     };
   });
diff --git a/pkgs/applications/networking/newsreaders/pan/default.nix b/pkgs/applications/networking/newsreaders/pan/default.nix
index 24e2585a24dbd..eb9b5ad3af95e 100644
--- a/pkgs/applications/networking/newsreaders/pan/default.nix
+++ b/pkgs/applications/networking/newsreaders/pan/default.nix
@@ -22,14 +22,14 @@
 
 stdenv.mkDerivation rec {
   pname = "pan";
-  version = "0.155";
+  version = "0.157";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "GNOME";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-DsoTqZLcZOc3HlpCC8rmu/rcFeHkb9IWd4PSLwxKqJI=";
+    hash = "sha256-+zzAnppP6ICIhhlqXGVF4h/yIDa6oE1lxenmzcr2BQo=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config gettext intltool itstool libxml2 makeWrapper ];
diff --git a/pkgs/applications/networking/remote/vmware-horizon-client/default.nix b/pkgs/applications/networking/remote/vmware-horizon-client/default.nix
index ced76131e45b9..da92226507eeb 100644
--- a/pkgs/applications/networking/remote/vmware-horizon-client/default.nix
+++ b/pkgs/applications/networking/remote/vmware-horizon-client/default.nix
@@ -11,7 +11,7 @@
 , configText ? ""
 }:
 let
-  version = "2312";
+  version = "2312.1";
 
   sysArch =
     if stdenv.hostPlatform.system == "x86_64-linux" then "x64"
@@ -36,8 +36,8 @@ let
     pname = "vmware-horizon-files";
     inherit version;
     src = fetchurl {
-      url = "https://download3.vmware.com/software/CART24FQ4_LIN_2312_TARBALL/VMware-Horizon-Client-Linux-2312-8.12.0-23149323.tar.gz";
-      sha256 = "15ca1d6028b9ca88e23fa363a2942fd76456c19e95ced4734595c3dc44db38d8";
+      url = "https://download3.vmware.com/software/CART25FQ1_LIN_2312.1_TARBALL/VMware-Horizon-Client-Linux-2312.1-8.12.1-23543969.tar.gz";
+      sha256 = "23d18be2955ba60ab3cca941a529fa3b804af97ebf1602d246ca6147cced8135";
     };
     nativeBuildInputs = [ makeWrapper ];
     installPhase = ''
diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix
index 89c7147310dca..70c395066107d 100644
--- a/pkgs/applications/networking/syncthing/default.nix
+++ b/pkgs/applications/networking/syncthing/default.nix
@@ -13,16 +13,16 @@ let
   common = { stname, target, postInstall ? "" }:
     buildGoModule rec {
       pname = stname;
-      version = "1.27.4";
+      version = "1.27.6";
 
       src = fetchFromGitHub {
         owner = "syncthing";
         repo = "syncthing";
         rev = "v${version}";
-        hash = "sha256-TXkZJAN72Qa3Mo2TYvCHNOl3BWfRxu78XXHW48Jjj0M=";
+        hash = "sha256-BZAje6dA3wmJ6feHWIYPPYTA3sp1WGwl4MjUJS7iZCo=";
       };
 
-      vendorHash = "sha256-ALdmETpEmvA3bTfBRK6LaO7bnlH03fljX1P7rqzskG4=";
+      vendorHash = "sha256-xVSSFFTqU7jww8YTeXKfa3096c2FmEgkcXvuqFHb12E=";
 
       nativeBuildInputs = lib.optionals stdenv.isDarwin [
         # Recent versions of macOS seem to require binaries to be signed when
diff --git a/pkgs/applications/networking/trayscale/default.nix b/pkgs/applications/networking/trayscale/default.nix
index b9fa0fb9c0f10..33c7666fcf4e4 100644
--- a/pkgs/applications/networking/trayscale/default.nix
+++ b/pkgs/applications/networking/trayscale/default.nix
@@ -11,13 +11,13 @@
 
 buildGoModule rec {
   pname = "trayscale";
-  version = "0.11.1";
+  version = "0.11.2";
 
   src = fetchFromGitHub {
     owner = "DeedleFake";
     repo = "trayscale";
     rev = "v${version}";
-    hash = "sha256-SepVgSxM4+csX7S0LPl6HmGDcgS991sgWJrOAA2YjIc=";
+    hash = "sha256-Og/ilxWNB5TNqnViZ5TeE0P+RxG1JOP2q9jo91SBNZQ=";
   };
 
   vendorHash = "sha256-eIakjEYfVp2wfXu0oqBmd5hJZTp0xgYKNNbtpRBnT2w=";
diff --git a/pkgs/applications/networking/znc/modules.nix b/pkgs/applications/networking/znc/modules.nix
index 2438673359553..1712c6f4fe5cd 100644
--- a/pkgs/applications/networking/znc/modules.nix
+++ b/pkgs/applications/networking/znc/modules.nix
@@ -37,7 +37,7 @@ in
       description = "Request backlog for IRC channels.";
       homepage = "https://github.com/fruitiex/znc-backlog/";
       license = licenses.asl20;
-      maintainers = with maintainers; [ infinisil ];
+      maintainers = [ ];
     };
   };
 
@@ -57,7 +57,7 @@ in
       description = "ZNC module for client specific buffers";
       homepage = "https://github.com/CyberShadow/znc-clientbuffer";
       license = licenses.asl20;
-      maintainers = with maintainers; [ hrdinka szlend ];
+      maintainers = with maintainers; [ hrdinka szlend cybershadow ];
     };
   };
 
diff --git a/pkgs/applications/office/appflowy/default.nix b/pkgs/applications/office/appflowy/default.nix
index 0ad06836f9057..ec0cd9534b149 100644
--- a/pkgs/applications/office/appflowy/default.nix
+++ b/pkgs/applications/office/appflowy/default.nix
@@ -13,11 +13,11 @@
 
 stdenv.mkDerivation rec {
   pname = "appflowy";
-  version = "0.5.3";
+  version = "0.5.4";
 
   src = fetchzip {
     url = "https://github.com/AppFlowy-IO/appflowy/releases/download/${version}/AppFlowy-${version}-linux-x86_64.tar.gz";
-    hash = "sha256-BFPtT8/DvSsZY1ckrXRZn6F0+pSRRZLoqc638JKUpjQ=";
+    hash = "sha256-gIM4CQvPkQIWvHXYPwr4yiDY1mUuOmubdqkOmHNssVo=";
     stripRoot = false;
   };
 
diff --git a/pkgs/applications/office/foliate/default.nix b/pkgs/applications/office/foliate/default.nix
index 7a7aa8c1c9a15..e1f915075b970 100644
--- a/pkgs/applications/office/foliate/default.nix
+++ b/pkgs/applications/office/foliate/default.nix
@@ -19,13 +19,13 @@
 
 stdenv.mkDerivation rec {
   pname = "foliate";
-  version = "3.1.0";
+  version = "3.1.1";
 
   src = fetchFromGitHub {
     owner = "johnfactotum";
-    repo = pname;
+    repo = "foliate";
     rev = "refs/tags/${version}";
-    hash = "sha256-6cymAqQxHHoTgzEyUKXC7zV/lUEJfIG+54+tLsc9iHo=";
+    hash = "sha256-uKxybt8ZZuk2tWSJLKC7Tgw78EfMMgI99VExfgOdHwA=";
     fetchSubmodules = true;
   };
 
@@ -51,9 +51,10 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A simple and modern GTK eBook reader";
-    mainProgram = "foliate";
     homepage = "https://johnfactotum.github.io/foliate";
+    changelog = "https://github.com/johnfactotum/foliate/releases/tag/${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ onny ];
+    mainProgram = "foliate";
   };
 }
diff --git a/pkgs/applications/office/morgen/default.nix b/pkgs/applications/office/morgen/default.nix
index 41cae1da04e3b..a77655588464b 100644
--- a/pkgs/applications/office/morgen/default.nix
+++ b/pkgs/applications/office/morgen/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
       --replace '/opt/Morgen' $out/bin
 
     makeWrapper ${electron}/bin/electron $out/bin/morgen \
-      --add-flags $out/opt/Morgen/resources/app.asar
+      --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations,WebRTCPipeWireCapturer}} $out/opt/Morgen/resources/app.asar"
 
     runHook postInstall
   '';
diff --git a/pkgs/applications/office/paperless-ngx/default.nix b/pkgs/applications/office/paperless-ngx/default.nix
index 257ee3250e505..68dd3ec0f6dac 100644
--- a/pkgs/applications/office/paperless-ngx/default.nix
+++ b/pkgs/applications/office/paperless-ngx/default.nix
@@ -5,6 +5,8 @@
 , nixosTests
 , gettext
 , python3
+, giflib
+, darwin
 , ghostscript
 , imagemagickBig
 , jbig2enc
@@ -22,16 +24,32 @@
 }:
 
 let
-  version = "2.6.3";
+  version = "2.7.2";
 
   src = fetchFromGitHub {
     owner = "paperless-ngx";
     repo = "paperless-ngx";
     rev = "refs/tags/v${version}";
-    hash = "sha256-M1CnB1adk02lJuFsm0zzjSx/l9hKHJMt1Wh2a5Xtdyg=";
+    hash = "sha256-vXW2d45Mth3Y95xPPH8bFjVLWVdUl+WuvSXJyPD3FyU=";
+  };
+
+  # subpath installation is broken with uvicorn >= 0.26
+  # https://github.com/NixOS/nixpkgs/issues/298719
+  # https://github.com/paperless-ngx/paperless-ngx/issues/5494
+  python = python3.override {
+    packageOverrides = self: super: {
+      uvicorn = super.uvicorn.overridePythonAttrs (oldAttrs: {
+        version = "0.25.0";
+        src = fetchFromGitHub {
+          owner = "encode";
+          repo = "uvicorn";
+          rev = "0.25.0";
+          hash = "sha256-ng98DTw49zyFjrPnEwfnPfONyjKKZYuLl0qduxSppYk=";
+        };
+      });
+    };
   };
 
-  python = python3;
 
   path = lib.makeBinPath [
     ghostscript
@@ -53,7 +71,7 @@ let
       cd src-ui
     '';
 
-    npmDepsHash = "sha256-qgCUfGVk698Ink23U7LxkGdFoNpOhCp240tbk+hU0dk=";
+    npmDepsHash = "sha256-MJ5pnQChghZBfVN6Lbz6VcMtbe8QadiFLTsMF5TlebQ=";
 
     nativeBuildInputs = [
       pkg-config
@@ -64,6 +82,9 @@ let
 
     buildInputs = [
       pango
+    ] ++ lib.optionals stdenv.isDarwin [
+      giflib
+      darwin.apple_sdk.frameworks.CoreText
     ];
 
     CYPRESS_INSTALL_BINARY = "0";
diff --git a/pkgs/applications/office/qownnotes/default.nix b/pkgs/applications/office/qownnotes/default.nix
index eb5fde0a3e0d6..2009c6f9a0bcb 100644
--- a/pkgs/applications/office/qownnotes/default.nix
+++ b/pkgs/applications/office/qownnotes/default.nix
@@ -14,19 +14,21 @@
 , botan2
 , pkg-config
 , nixosTests
+, installShellFiles
+, xvfb-run
 }:
 
 let
   pname = "qownnotes";
   appname = "QOwnNotes";
-  version = "24.4.0";
+  version = "24.4.2";
 in
 stdenv.mkDerivation {
   inherit pname version;
 
   src = fetchurl {
     url = "https://github.com/pbek/QOwnNotes/releases/download/v${version}/qownnotes-${version}.tar.xz";
-    hash = "sha256-SxoZD5DYuPAJZwBiw38jZYI+e9FExj+TiUlczvbXkWA=";
+    hash = "sha256-HnWxIcOy7Te6Q5YfZYhvITpfsgeQw8Tt/Nr++wcpxEU=";
   };
 
   nativeBuildInputs = [
@@ -34,6 +36,8 @@ stdenv.mkDerivation {
     qttools
     wrapQtAppsHook
     pkg-config
+    installShellFiles
+    xvfb-run
   ] ++ lib.optionals stdenv.isDarwin [ makeWrapper ];
 
   buildInputs = [
@@ -49,9 +53,16 @@ stdenv.mkDerivation {
     "USE_SYSTEM_BOTAN=1"
   ];
 
-  postInstall =
+  postInstall = ''
+    installShellCompletion --cmd ${appname} \
+      --bash <(xvfb-run $out/bin/${appname} --completion bash) \
+      --fish <(xvfb-run $out/bin/${appname} --completion fish)
+    installShellCompletion --cmd ${pname} \
+      --bash <(xvfb-run $out/bin/${appname} --completion bash) \
+      --fish <(xvfb-run $out/bin/${appname} --completion fish)
+  ''
   # Create a lowercase symlink for Linux
-  lib.optionalString stdenv.isLinux ''
+  + lib.optionalString stdenv.isLinux ''
     ln -s $out/bin/${appname} $out/bin/${pname}
   ''
   # Wrap application for macOS as lowercase binary
diff --git a/pkgs/applications/office/treesheets/default.nix b/pkgs/applications/office/treesheets/default.nix
index a0f0e0113d3d6..c67f53949ce72 100644
--- a/pkgs/applications/office/treesheets/default.nix
+++ b/pkgs/applications/office/treesheets/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "treesheets";
-  version = "unstable-2024-03-30";
+  version = "unstable-2024-04-11";
 
   src = fetchFromGitHub {
     owner = "aardappel";
     repo = "treesheets";
-    rev = "f5b13ed93eacdd62851081d0730ec5f8b306c1e6";
-    sha256 = "CoIvJzfVmblMPH0J45ykpRF7CDLj/Dx+8MpkjiQkMkM=";
+    rev = "5e9e95a34221d4bda584d2130586177e29ee8fe7";
+    sha256 = "X0aB0rJZd9G8S+QWviSAdB/YQMT4lVV3yiELzZs+P3g=";
   };
 
   nativeBuildInputs = [
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
     '';
 
     homepage = "https://strlen.com/treesheets/";
-    maintainers = with maintainers; [ obadz avery ];
+    maintainers = with maintainers; [ obadz ];
     platforms = platforms.unix;
     license = licenses.zlib;
   };
diff --git a/pkgs/applications/office/trilium/desktop.nix b/pkgs/applications/office/trilium/desktop.nix
index a99fb6070c5e5..55b99bf71b794 100644
--- a/pkgs/applications/office/trilium/desktop.nix
+++ b/pkgs/applications/office/trilium/desktop.nix
@@ -7,13 +7,13 @@
 
 let
   pname = "trilium-desktop";
-  version = "0.63.3";
+  version = "0.63.5";
 
   linuxSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
-  linuxSource.sha256 = "1dcq7s4lcp9bc0p4ylzxyfc020xvj7scrlsddzwcnp8mqz5ckik9";
+  linuxSource.sha256 = "1a2h96gd04mqn6cskjhj657dx9wqvlqsvgydjbaqpwc8593swpb3";
 
   darwinSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-mac-x64-${version}.zip";
-  darwinSource.sha256 = "0m9m68f9jg10nfn719q6wahwvi13lpc2hmandw7ddxfslylwq29s";
+  darwinSource.sha256 = "155y85vsawrqd0wcdpl87sv9s2nkamc73aiklsw8nbw1x96hqvap";
 
   meta = metaCommon // {
     mainProgram = "trilium";
diff --git a/pkgs/applications/office/trilium/server.nix b/pkgs/applications/office/trilium/server.nix
index 8416a6f30bacd..09983d4d0091e 100644
--- a/pkgs/applications/office/trilium/server.nix
+++ b/pkgs/applications/office/trilium/server.nix
@@ -3,8 +3,8 @@
 
 let
   serverSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
-  serverSource.sha256 = "1pnxss85lz313r5l1qpgm9msyfr87h54nbfc7d89dbj0wgsjwk0n";
-  version = "0.63.3";
+  serverSource.sha256 = "02kd7gm93nmxsxy1bx5kac7jizslik9nlfcnq8kn6mprfcv8anfn";
+  version = "0.63.5";
 in stdenv.mkDerivation {
   pname = "trilium-server";
   inherit version;
diff --git a/pkgs/applications/office/tryton/default.nix b/pkgs/applications/office/tryton/default.nix
index 3de19b4d605f5..e1a236e5db8bc 100644
--- a/pkgs/applications/office/tryton/default.nix
+++ b/pkgs/applications/office/tryton/default.nix
@@ -21,13 +21,13 @@ with lib;
 
 python3Packages.buildPythonApplication rec {
   pname = "tryton";
-  version = "7.0.7";
+  version = "7.0.8";
 
   disabled = !python3Packages.isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-NODeDEgmf/nSKrM+RxAUsUwsbVQT7OSDrTOGVBwOzpw=";
+    sha256 = "sha256-e3WNDB6P7kapAfzlvbJ1/6LcyH7Fl6GKCK/hri460pQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/radio/cloudlog/default.nix b/pkgs/applications/radio/cloudlog/default.nix
index 862bbcdb5e5b2..c7154e8fd3d6f 100644
--- a/pkgs/applications/radio/cloudlog/default.nix
+++ b/pkgs/applications/radio/cloudlog/default.nix
@@ -8,13 +8,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "cloudlog";
-  version = "2.6.7";
+  version = "2.6.8";
 
   src = fetchFromGitHub {
     owner = "magicbug";
     repo = "Cloudlog";
     rev = version;
-    hash = "sha256-blWMfe/eqeccGE5dWVJWV7L1akWnhO3t5n8HbjlJIcA=";
+    hash = "sha256-8D8owjONUMpRpFqKvmxKERCprvHQ1DCavNfqW9VTKAE=";
   };
 
   postPatch = ''
diff --git a/pkgs/applications/radio/limesuite/default.nix b/pkgs/applications/radio/limesuite/default.nix
index f92b63a9ba983..d8d7bcd22d0a8 100644
--- a/pkgs/applications/radio/limesuite/default.nix
+++ b/pkgs/applications/radio/limesuite/default.nix
@@ -2,7 +2,7 @@
 , sqlite, wxGTK32, libusb1, soapysdr
 , mesa_glu, libX11, gnuplot, fltk
 , GLUT
-, withGui ? !stdenv.isDarwin # withGui transitively depends on mesa, which is broken on darwin
+, withGui ? false
 }:
 
 stdenv.mkDerivation rec {
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ markuskowa ];
     platforms = platforms.unix;
+    badPlatforms = lib.optionals withGui platforms.darwin; # withGui transitively depends on mesa, which is broken on darwin
   };
 }
 
diff --git a/pkgs/applications/radio/quisk/default.nix b/pkgs/applications/radio/quisk/default.nix
index 313f20bd0a6be..c5034bd33efcd 100644
--- a/pkgs/applications/radio/quisk/default.nix
+++ b/pkgs/applications/radio/quisk/default.nix
@@ -8,11 +8,11 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "quisk";
-  version = "4.2.30";
+  version = "4.2.31";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-1CpIb8Hj9hpsOkxhY3HNKaYYbWa5cZY5//WAzeuvY/o=";
+    sha256 = "sha256-WzB/KAkjJ6zPPfOe35kbT3HbbCNQjm44GL0hInk3TH8=";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/radio/tqsl/default.nix b/pkgs/applications/radio/tqsl/default.nix
index a67ddcbee6ab5..321536f71ab52 100644
--- a/pkgs/applications/radio/tqsl/default.nix
+++ b/pkgs/applications/radio/tqsl/default.nix
@@ -1,12 +1,12 @@
-{ lib, stdenv, fetchurl, cmake, expat, openssl, zlib, lmdb, curl, wxGTK32, wrapGAppsHook }:
+{ lib, stdenv, fetchurl, cmake, expat, openssl, zlib, lmdb, curl, sqlite, wxGTK32, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "tqsl";
-  version = "2.6.5";
+  version = "2.7.2";
 
   src = fetchurl {
     url = "https://www.arrl.org/files/file/LoTW%20Instructions/${pname}-${version}.tar.gz";
-    sha256 = "sha256-UGPMp1mAarHWuLbZu2wWpjgCdf8ZKj0Mwkqp32U5/8w=";
+    sha256 = "sha256-T4NBCUTYHT6ugSg1gSfjQBOBndqwSwyWLr/qlDPQGKI=";
   };
 
   nativeBuildInputs = [ cmake wrapGAppsHook ];
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
     zlib
     lmdb
     curl
+    sqlite
     wxGTK32
   ];
 
diff --git a/pkgs/applications/science/biology/minimap2/default.nix b/pkgs/applications/science/biology/minimap2/default.nix
index eeb31dee0538a..923d72f7fb387 100644
--- a/pkgs/applications/science/biology/minimap2/default.nix
+++ b/pkgs/applications/science/biology/minimap2/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "minimap2";
-  version = "2.27";
+  version = "2.28";
 
   src = fetchFromGitHub {
     repo = pname;
     owner = "lh3";
     rev = "v${version}";
-    sha256 = "sha256-F6IJrYD2dk+5bKKVIahLiNnD/Hd/CjNQQd9zz0Gkans=";
+    sha256 = "sha256-cBl2BKgPCP/xHZW6fTH51cY9/lV/1HVLsN7a1R1Blv4=";
   };
 
   buildInputs = [ zlib ];
diff --git a/pkgs/applications/science/biology/seqkit/default.nix b/pkgs/applications/science/biology/seqkit/default.nix
index 1c572ba563541..5c46e25f5d6de 100644
--- a/pkgs/applications/science/biology/seqkit/default.nix
+++ b/pkgs/applications/science/biology/seqkit/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "seqkit";
-  version = "2.8.0";
+  version = "2.8.1";
 
   src = fetchFromGitHub {
     owner = "shenwei356";
     repo = "seqkit";
     rev = "v${version}";
-    sha256 = "sha256-JsrmRUbSNCFJ58tIblKq+VRXCD1mBeCAcosDGiVb5Gs=";
+    sha256 = "sha256-LtPf99spy2ByTnSMJ5k1mWkh+Nct3Fg4Y9mXARxuXlA=";
   };
 
   vendorHash = "sha256-0//kySYhNmfiwiys/Ku0/8RzKpnxO0+byD8pcIkvDY0=";
diff --git a/pkgs/applications/science/electronics/nvc/default.nix b/pkgs/applications/science/electronics/nvc/default.nix
index 48c9b17816e99..d14aa3b6fab39 100644
--- a/pkgs/applications/science/electronics/nvc/default.nix
+++ b/pkgs/applications/science/electronics/nvc/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "nvc";
-  version = "1.11.3";
+  version = "1.12.0";
 
   src = fetchFromGitHub {
     owner = "nickg";
     repo = "nvc";
     rev = "r${version}";
-    hash = "sha256-Z4YxXPf8uKlASSK9v6fbtHtkUibc9EeA4i+3kD/vBmY=";
+    hash = "sha256-7g4Ki5lhmX/13XCv0on1PgvEthCTfe9wh8EFjMcP1+c=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/science/logic/klee/default.nix b/pkgs/applications/science/logic/klee/default.nix
index 68f68355f8160..4f17558b340e4 100644
--- a/pkgs/applications/science/logic/klee/default.nix
+++ b/pkgs/applications/science/logic/klee/default.nix
@@ -6,7 +6,6 @@
 , clang
 , llvm
 , python3
-, zlib
 , z3
 , stp
 , cryptominisat
@@ -45,13 +44,13 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "klee";
-  version = "3.0";
+  version = "3.1";
 
   src = fetchFromGitHub {
     owner = "klee";
     repo = "klee";
     rev = "v${version}";
-    hash = "sha256-y5lWmtIcLAthQ0oHYQNd+ir75YaxHZR9Jgiz+ZUFQjY=";
+    hash = "sha256-5js1N8qVF0lCkahSU3ojT7+p/a9IaUpPWhIyFHEzqto=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -98,6 +97,9 @@ in stdenv.mkDerivation rec {
     patchShebangs .
   '';
 
+  # https://github.com/klee/klee/issues/1690
+  hardeningDisable = [ "fortify" ];
+
   doCheck = true;
 
   passthru = {
diff --git a/pkgs/applications/science/logic/klee/klee-uclibc.nix b/pkgs/applications/science/logic/klee/klee-uclibc.nix
index 91086ae84627d..a8e459a6bdaee 100644
--- a/pkgs/applications/science/logic/klee/klee-uclibc.nix
+++ b/pkgs/applications/science/logic/klee/klee-uclibc.nix
@@ -26,12 +26,12 @@ let
   });
 in stdenv.mkDerivation rec {
   pname = "klee-uclibc";
-  version = "1.3";
+  version = "1.4";
   src = fetchFromGitHub {
     owner = "klee";
     repo = "klee-uclibc";
     rev = "klee_uclibc_v${version}";
-    sha256 = "sha256-xQ8GWa0Gmd3lbwKodJhrsZeuR4j7NT4zIUh+kNhVY/w=";
+    sha256 = "sha256-sogQK5Ed0k5tf4rrYwCKT4YRKyEovgT25p0BhGvJ1ok=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/science/math/almonds/default.nix b/pkgs/applications/science/math/almonds/default.nix
index 2b05b552253dd..7717458d0dac2 100644
--- a/pkgs/applications/science/math/almonds/default.nix
+++ b/pkgs/applications/science/math/almonds/default.nix
@@ -22,6 +22,6 @@ with python3.pkgs; buildPythonApplication rec {
     mainProgram = "almonds";
     homepage = "https://github.com/Tenchi2xh/Almonds";
     license = licenses.mit;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/science/math/eigenmath/default.nix b/pkgs/applications/science/math/eigenmath/default.nix
index 358e491b2f4a2..b39d7ae26079d 100644
--- a/pkgs/applications/science/math/eigenmath/default.nix
+++ b/pkgs/applications/science/math/eigenmath/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "eigenmath";
-  version = "unstable-2024-03-20";
+  version = "unstable-2024-04-08";
 
   src = fetchFromGitHub {
     owner = "georgeweigt";
     repo = pname;
-    rev = "262a6525225be7bcef52c3072b1061db3c238055";
-    hash = "sha256-QH8mLlcCOuq77vLer8RsSnD9VeJu9kAVv2qWAH3ky6I=";
+    rev = "c0be6c47309aa40d44784a3a4c4c07bc4e8fb6fa";
+    hash = "sha256-UVCazX0P03+e1exnpXrGNc/1vHxLH04Xtvgsy00UAoI=";
   };
 
   checkPhase = let emulator = stdenv.hostPlatform.emulator buildPackages; in ''
diff --git a/pkgs/applications/science/math/polymake/default.nix b/pkgs/applications/science/math/polymake/default.nix
index fe9210641d2e7..9c2623651517d 100644
--- a/pkgs/applications/science/math/polymake/default.nix
+++ b/pkgs/applications/science/math/polymake/default.nix
@@ -14,14 +14,11 @@
 , ninja
 , ant
 , openjdk
-, perl536Packages
+, perl
+, perlPackages
 , makeWrapper
 }:
-let
-  # log says: polymake does not work with perl 5.37 or newer;
-  perlPackages = perl536Packages;
-  inherit (perlPackages) perl;
-in
+
 # polymake compiles its own version of sympol and atint because we
 # don't have those packages. other missing optional dependencies:
 # javaview, libnormaliz, scip, soplex, jreality.
diff --git a/pkgs/applications/science/misc/boinc/default.nix b/pkgs/applications/science/misc/boinc/default.nix
index b2a76f5fb2526..6a0aafad3e914 100644
--- a/pkgs/applications/science/misc/boinc/default.nix
+++ b/pkgs/applications/science/misc/boinc/default.nix
@@ -27,14 +27,14 @@
 
 stdenv.mkDerivation rec {
   pname = "boinc";
-  version = "7.24.3";
+  version = "8.0.1";
 
   src = fetchFromGitHub {
     name = "${pname}-${version}-src";
     owner = "BOINC";
     repo = "boinc";
     rev = "client_release/${lib.versions.majorMinor version}/${version}";
-    hash = "sha256-0gyCO5t8t0SbOCBClVVu+C2VpBlxsnoRHBRYgI8nNO4=";
+    hash = "sha256-pjk9+VRWrFIoHolIEEWlRx89hifLNeFtIi34F1OBD38=";
   };
 
   nativeBuildInputs = [ libtool automake autoconf m4 pkg-config ];
diff --git a/pkgs/applications/science/misc/snakemake/default.nix b/pkgs/applications/science/misc/snakemake/default.nix
index 1027590d0de84..d355412e54f0a 100644
--- a/pkgs/applications/science/misc/snakemake/default.nix
+++ b/pkgs/applications/science/misc/snakemake/default.nix
@@ -6,14 +6,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "snakemake";
-  version = "8.10.4";
+  version = "8.10.6";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-SZf//Z1rLHyvW/f0U6kEBzV1NjDEDG1OcFl9/JR+i/g=";
+    hash = "sha256-THp8sqAFZVA5V2k0ruv9qwmPNjSVi2uVx8tla0Y3awE=";
     # https://github.com/python-versioneer/python-versioneer/issues/217
     postFetch = ''
       sed -i "$out"/snakemake/_version.py -e 's#git_refnames = ".*"#git_refnames = " (tag: v${version})"#'
diff --git a/pkgs/applications/science/robotics/mujoco/default.nix b/pkgs/applications/science/robotics/mujoco/default.nix
index 15d2e156a5899..3013ce74a334b 100644
--- a/pkgs/applications/science/robotics/mujoco/default.nix
+++ b/pkgs/applications/science/robotics/mujoco/default.nix
@@ -129,7 +129,7 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "mujoco";
-  version = "3.1.3";
+  version = "3.1.4";
 
   # Bumping version? Make sure to look though the MuJoCo's commit
   # history for bumped dependency pins!
@@ -137,7 +137,7 @@ in stdenv.mkDerivation rec {
     owner = "google-deepmind";
     repo = "mujoco";
     rev = "refs/tags/${version}";
-    hash = "sha256-22yH3zAD479TRNS3XSqy6PuuLqyWmjvwScUTVfKumzY=";
+    hash = "sha256-VgD6ditMDpHki7l23Gjip2roA8Oi4MGpxl+4gSLTEFs=";
   };
 
   patches = [ ./mujoco-system-deps-dont-fetch.patch ];
diff --git a/pkgs/applications/terminal-emulators/blackbox-terminal/default.nix b/pkgs/applications/terminal-emulators/blackbox-terminal/default.nix
index 0872a75254fea..5b8e0078d75cf 100644
--- a/pkgs/applications/terminal-emulators/blackbox-terminal/default.nix
+++ b/pkgs/applications/terminal-emulators/blackbox-terminal/default.nix
@@ -18,9 +18,8 @@
 , libgee
 , callPackage
 , python3
-, gtk3
 , desktop-file-utils
-, wrapGAppsHook
+, wrapGAppsHook4
 , sixelSupport ? false
 }:
 
@@ -48,6 +47,8 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
+    substituteInPlace build-aux/meson/postinstall.py \
+      --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
     patchShebangs build-aux/meson/postinstall.py
   '';
 
@@ -57,9 +58,8 @@ stdenv.mkDerivation rec {
     pkg-config
     vala
     sassc
-    wrapGAppsHook
+    wrapGAppsHook4
     python3
-    gtk3 # For gtk-update-icon-cache
     desktop-file-utils # For update-desktop-database
   ];
   buildInputs = [
diff --git a/pkgs/applications/terminal-emulators/foot/default.nix b/pkgs/applications/terminal-emulators/foot/default.nix
index 4c264b751e02a..58f38ec1d5340 100644
--- a/pkgs/applications/terminal-emulators/foot/default.nix
+++ b/pkgs/applications/terminal-emulators/foot/default.nix
@@ -27,7 +27,7 @@
 }:
 
 let
-  version = "1.17.0";
+  version = "1.17.1";
 
   # build stimuli file for PGO build and the script to generate it
   # independently of the foot's build, so we can cache the result
@@ -99,7 +99,7 @@ stdenv.mkDerivation {
     owner = "dnkl";
     repo = "foot";
     rev = version;
-    hash = "sha256-H4a9WQox7vD5HsY9PP0nrNDZtyaRFpsphsv8/qstNH8=";
+    hash = "sha256-B6RhzsOPwczPLJRx3gBFZZvklwx9IwqplRG2vsAPIlg=";
   };
 
   separateDebugInfo = true;
diff --git a/pkgs/applications/terminal-emulators/st/default.nix b/pkgs/applications/terminal-emulators/st/default.nix
index 6300a76d1c81b..72a6835ff4aaa 100644
--- a/pkgs/applications/terminal-emulators/st/default.nix
+++ b/pkgs/applications/terminal-emulators/st/default.nix
@@ -18,11 +18,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "st";
-  version = "0.9.1";
+  version = "0.9.2";
 
   src = fetchurl {
     url = "https://dl.suckless.org/st/st-${finalAttrs.version}.tar.gz";
-    hash = "sha256-FvQ7lDOt6dcNYIXDH5/Znyg16q3jEiECDyIUMDXfwNI=";
+    hash = "sha256-ayFdT0crIdYjLzDyIRF6d34kvP7miVXd77dCZGf5SUs=";
   };
 
   outputs = [ "out" "terminfo" ];
diff --git a/pkgs/applications/version-management/cgit/common.nix b/pkgs/applications/version-management/cgit/common.nix
index 0cbc04b7bcc23..b0ed32eb02227 100644
--- a/pkgs/applications/version-management/cgit/common.nix
+++ b/pkgs/applications/version-management/cgit/common.nix
@@ -12,6 +12,8 @@
 stdenv.mkDerivation {
   inherit pname version src gitSrc;
 
+  separateDebugInfo = true;
+
   nativeBuildInputs = [
     pkg-config asciidoc
   ] ++ (with python3Packages; [ python wrapPython ]);
diff --git a/pkgs/applications/version-management/commitizen/default.nix b/pkgs/applications/version-management/commitizen/default.nix
index 714ff6b6c2c7a..454de78abc42a 100644
--- a/pkgs/applications/version-management/commitizen/default.nix
+++ b/pkgs/applications/version-management/commitizen/default.nix
@@ -11,7 +11,7 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "commitizen";
-  version = "3.21.3";
+  version = "3.22.0";
   format = "pyproject";
 
   disabled = python3.pythonOlder "3.8";
@@ -20,7 +20,7 @@ python3.pkgs.buildPythonApplication rec {
     owner = "commitizen-tools";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-4Wz7PRAdsBZ0nX0hxu1XB5Uc13oP1wl86j5V0iHPBoA=";
+    hash = "sha256-wDxhhPYElNPimVa+wX6AnTZrZOhWjuMzNJ6urn0wruk=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/applications/version-management/ghq/default.nix b/pkgs/applications/version-management/ghq/default.nix
index f154e2aae8cd3..da0fe83bf8248 100644
--- a/pkgs/applications/version-management/ghq/default.nix
+++ b/pkgs/applications/version-management/ghq/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "ghq";
-  version = "1.6.0";
+  version = "1.6.1";
 
   src = fetchFromGitHub {
     owner = "x-motemen";
     repo = "ghq";
     rev = "v${version}";
-    sha256 = "sha256-gSMSn7YuhV/m5po+nu9Z/bxSRKg7/fXbF1stm7JQqZI=";
+    sha256 = "sha256-fp/pqLpuEqvLoB3ioDd1Kx+i1NUI+bUDJzdaT7dQGSg=";
   };
 
   vendorHash = "sha256-M9B19rSEMnmT4wfOVnSAK06UPR/xrs0252lX3B9ebF8=";
diff --git a/pkgs/applications/version-management/git-cliff/default.nix b/pkgs/applications/version-management/git-cliff/default.nix
index fd840580cade3..817394cdc5708 100644
--- a/pkgs/applications/version-management/git-cliff/default.nix
+++ b/pkgs/applications/version-management/git-cliff/default.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "git-cliff";
-  version = "2.2.0";
+  version = "2.2.1";
 
   src = fetchFromGitHub {
     owner = "orhun";
     repo = "git-cliff";
     rev = "v${version}";
-    hash = "sha256-pOmSVySn8QUpFLTXFXBVm1KTX9ny221t1xSxBRHkljQ=";
+    hash = "sha256-FRcreSnSO65m9h9+SUg4qdFELvpVX1+HkWH3dI2RR/M=";
   };
 
-  cargoHash = "sha256-y0XTvSV8JE6nmSJfJKLw2Gt/D/yX12kbx2+RHqVCVWI=";
+  cargoHash = "sha256-RlcZvyFi7fc8eJYB5X64axAnNp8Z1h0WOV4hM1SLoRk=";
 
   # attempts to run the program on .git in src which is not deterministic
   doCheck = false;
diff --git a/pkgs/applications/version-management/git-credential-oauth/default.nix b/pkgs/applications/version-management/git-credential-oauth/default.nix
index 66d2439a00edd..c818874392af4 100644
--- a/pkgs/applications/version-management/git-credential-oauth/default.nix
+++ b/pkgs/applications/version-management/git-credential-oauth/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
 
 buildGoModule rec {
   pname = "git-credential-oauth";
@@ -11,6 +11,8 @@ buildGoModule rec {
     hash = "sha256-bqyoAAqli0L6Kf+W1sTh2vmmfaIj2OdpQyvQZnYOWWA=";
   };
 
+  nativeBuildInputs = [ installShellFiles ];
+
   ldflags = [
     "-s"
     "-w"
@@ -19,6 +21,10 @@ buildGoModule rec {
 
   vendorHash = "sha256-cCqbEv4kBnF6FWvfaXCOxadPVXR/AxXS3nXHf6WmsSs=";
 
+  postInstall = ''
+    installManPage $src/git-credential-oauth.1
+  '';
+
   meta = {
     description = "Git credential helper that securely authenticates to GitHub, GitLab and BitBucket using OAuth";
     homepage = "https://github.com/hickford/git-credential-oauth";
diff --git a/pkgs/applications/version-management/git-mit/default.nix b/pkgs/applications/version-management/git-mit/default.nix
index bc59aa6ffda16..f3dbcc6273d66 100644
--- a/pkgs/applications/version-management/git-mit/default.nix
+++ b/pkgs/applications/version-management/git-mit/default.nix
@@ -10,7 +10,7 @@
 }:
 
 let
-  version = "5.12.191";
+  version = "5.12.194";
 in
 rustPlatform.buildRustPackage {
   pname = "git-mit";
@@ -20,10 +20,10 @@ rustPlatform.buildRustPackage {
     owner = "PurpleBooth";
     repo = "git-mit";
     rev = "v${version}";
-    hash = "sha256-aSEoAs0s7zyALf3s77eVlrjkCrn7ihW/4OW5hN8YL8k=";
+    hash = "sha256-9ITy2VPLIunSLSNx4EXbvxZ7V/Kr+DwmjzDVj/QVGHs=";
   };
 
-  cargoHash = "sha256-pm+XreLGxZJKRcrmU1ooMjN7MTRJqgKOy2J1OqdodxE=";
+  cargoHash = "sha256-6R+T0BSgT6IivugkXXsX5xJ2c3/J3FnLY3ZvcfYW53E=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/applications/version-management/git-repo/default.nix b/pkgs/applications/version-management/git-repo/default.nix
index e989e03ca1cfb..a7d0f49344a04 100644
--- a/pkgs/applications/version-management/git-repo/default.nix
+++ b/pkgs/applications/version-management/git-repo/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "git-repo";
-  version = "2.39";
+  version = "2.45";
 
   src = fetchFromGitHub {
     owner = "android";
     repo = "tools_repo";
     rev = "v${version}";
-    hash = "sha256-Qw0x/YiXMDrlTy6boembfqVRvEYiMWOALJtaMrr7/WI=";
+    hash = "sha256-f765TcOHL8wdPa9qSmGegofjCXx1tF/K5bRQnYQcYVc=";
   };
 
   # Fix 'NameError: name 'ssl' is not defined'
diff --git a/pkgs/applications/version-management/git-repo/import-ssl-module.patch b/pkgs/applications/version-management/git-repo/import-ssl-module.patch
index efc3d2b1f8a5e..43e879a8ba174 100644
--- a/pkgs/applications/version-management/git-repo/import-ssl-module.patch
+++ b/pkgs/applications/version-management/git-repo/import-ssl-module.patch
@@ -18,11 +18,13 @@ diff --git a/repo b/repo
 index 8b05def..f394b3e 100755
 --- a/repo
 +++ b/repo
-@@ -236,6 +236,7 @@ import optparse
+@@ -236,8 +236,9 @@ import optparse
  import re
  import shutil
  import stat
 +import ssl
+ import urllib.error
+ import urllib.request
  
  if sys.version_info[0] == 3:
    import urllib.request
diff --git a/pkgs/applications/version-management/git-town/default.nix b/pkgs/applications/version-management/git-town/default.nix
index c043ff74b0d8f..1c99b7a0e2a98 100644
--- a/pkgs/applications/version-management/git-town/default.nix
+++ b/pkgs/applications/version-management/git-town/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "git-town";
-  version = "13.0.1";
+  version = "13.0.2";
 
   src = fetchFromGitHub {
     owner = "git-town";
     repo = "git-town";
     rev = "v${version}";
-    hash = "sha256-Ds3N5KUpB0HLRrKH/kpcBqtOtBD1fizYPsfKedBorTo=";
+    hash = "sha256-NT/d6JRecM2g7e+mREYEi1LbUcRkwxmMEuy+IrpCjFA=";
   };
 
   vendorHash = null;
@@ -32,8 +32,6 @@ buildGoModule rec {
     let
       skippedTests = [
         "TestGodog"
-        "TestRunner_CreateChildFeatureBranch"
-        "TestShellRunner_RunStringWith_Dir"
         "TestMockingShell_MockCommand"
         "TestShellRunner_RunStringWith_Input"
       ];
@@ -63,7 +61,7 @@ buildGoModule rec {
     description = "Generic, high-level git support for git-flow workflows";
     homepage = "https://www.git-town.com/";
     license = licenses.mit;
-    maintainers = with maintainers; [ allonsy blaggacao ];
+    maintainers = with maintainers; [ allonsy blaggacao gabyx ];
     mainProgram = "git-town";
   };
 }
diff --git a/pkgs/applications/version-management/glitter/default.nix b/pkgs/applications/version-management/glitter/default.nix
index ddd56fdfb11c7..a6a81fb08782a 100644
--- a/pkgs/applications/version-management/glitter/default.nix
+++ b/pkgs/applications/version-management/glitter/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "glitter";
-  version = "1.6.5";
+  version = "1.6.6";
 
   src = fetchFromGitHub {
     owner = "milo123459";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-sMAHVXpgAhZYUpl75JRtKhTqt/sQkSkoEzk7aGV1vcQ=";
+    hash = "sha256-dImQLC7owPf2EB5COO5vjN3a6k7gJ88D2hMSUW2/wn4=";
   };
 
-  cargoSha256 = "sha256-CaWpGNP7Jsv/3dks0LVbZXoD/9HqJmOzaD0ejT5xSqA=";
+  cargoHash = "sha256-7JQcY3HCG3UQ0Mfz/+ZZ0axGEpQoH410FT72tjHW7EE=";
 
   nativeCheckInputs = [
     git
diff --git a/pkgs/applications/version-management/pijul/default.nix b/pkgs/applications/version-management/pijul/default.nix
index d8be3e9023cc8..bb6e7aeb91147 100644
--- a/pkgs/applications/version-management/pijul/default.nix
+++ b/pkgs/applications/version-management/pijul/default.nix
@@ -13,14 +13,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "pijul";
-  version = "1.0.0-beta.8";
+  version = "1.0.0-beta.9";
 
   src = fetchCrate {
     inherit version pname;
-    hash = "sha256-BQic+E+SOfZYHJcYMaUmfjlIfop0YcVcASSjtnRtwD4=";
+    hash = "sha256-jy0mzgLw9iWuoWe2ictMTL3cHnjJ5kzs6TAK+pdm28g=";
   };
 
-  cargoHash = "sha256-D5P9pizerJiZK4UhCKEY1DXvaBMiWBXGu6Azlv6AjQA=";
+  cargoHash = "sha256-iXGvb4qmZK7Sjbf/Jkyzj+nhpZFV3ngjtJfz6x/8z2s=";
 
   doCheck = false;
   nativeBuildInputs = [ installShellFiles pkg-config ];
diff --git a/pkgs/applications/version-management/sourcehut/builds.nix b/pkgs/applications/version-management/sourcehut/builds.nix
index d44193ea4c96b..72d69678fb75c 100644
--- a/pkgs/applications/version-management/sourcehut/builds.nix
+++ b/pkgs/applications/version-management/sourcehut/builds.nix
@@ -16,28 +16,28 @@
 , setuptools
 }:
 let
-  version = "0.89.13";
+  version = "0.89.15";
   gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.39"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "builds.sr.ht";
     rev = version;
-    hash = "sha256-JpRVRzuHB6cgk/qW1j4zF8/K1xwz3J4nZhijmz5kVWU=";
+    hash = "sha256-rmNaBnTPDDQO/ImkGkMwW8fyjQyBUBchTEnbtAK24pw=";
   };
 
   buildsrht-api = buildGoModule ({
     inherit src version;
     pname = "buildsrht-api";
     modRoot = "api";
-    vendorHash = "sha256-kTqoUfFEoNdDDzVNJ7XIbH7tbsl5MdBL+/UDHFv7D+A=";
+    vendorHash = "sha256-dwpuB+aYqzhGSdGVq/F9FTdHWMBkGMtVuZ7I3hB3b+Q=";
   } // gqlgen);
 
   buildsrht-worker = buildGoModule ({
     inherit src version;
     pname = "buildsrht-worker";
     modRoot = "worker";
-    vendorHash = "sha256-kTqoUfFEoNdDDzVNJ7XIbH7tbsl5MdBL+/UDHFv7D+A=";
+    vendorHash = "sha256-dwpuB+aYqzhGSdGVq/F9FTdHWMBkGMtVuZ7I3hB3b+Q=";
   } // gqlgen);
 in
 buildPythonPackage rec {
diff --git a/pkgs/applications/version-management/sourcehut/core.nix b/pkgs/applications/version-management/sourcehut/core.nix
index 33c5d4eab0c59..c0180cf805fac 100644
--- a/pkgs/applications/version-management/sourcehut/core.nix
+++ b/pkgs/applications/version-management/sourcehut/core.nix
@@ -28,7 +28,7 @@
 
 buildPythonPackage rec {
   pname = "srht";
-  version = "0.71.5";
+  version = "0.71.8";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -37,7 +37,7 @@ buildPythonPackage rec {
     owner = "~sircmpwn";
     repo = "core.sr.ht";
     rev = version;
-    hash = "sha256-YIoKOiTi/9X4bSiG+GvnwzvKYhbfywrv/dTjxaJOOTQ=";
+    hash = "sha256-rDpm2HJOWScvIxOmHcat6y4CWdBE9T2gE/jZskYAFB0=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/version-management/sourcehut/fix-gqlgen-trimpath.nix b/pkgs/applications/version-management/sourcehut/fix-gqlgen-trimpath.nix
index ee598c5ed9144..42ec1589a643c 100644
--- a/pkgs/applications/version-management/sourcehut/fix-gqlgen-trimpath.nix
+++ b/pkgs/applications/version-management/sourcehut/fix-gqlgen-trimpath.nix
@@ -1,13 +1,13 @@
 { unzip
-, gqlgenVersion ? "0.17.42"
+, gqlgenVersion
 }:
 {
   overrideModAttrs = (_: {
     # No need to workaround -trimpath: it's not used in goModules,
     # but do download `go generate`'s dependencies nonetheless.
     preBuild = ''
-      go generate ./loaders
-      go generate ./graph
+      if [ -d ./loaders ]; then go generate ./loaders; fi
+      if [ -d ./graph ]; then go generate ./graph; fi
     '';
   });
 
@@ -25,8 +25,8 @@
   # If it fails, the gqlgenVersion may have to be updated.
   preBuild = ''
     unzip ''${GOPROXY#"file://"}/github.com/99designs/gqlgen/@v/v${gqlgenVersion}.zip
-    go generate ./loaders
-    go generate ./graph
+    if [ -d ./loaders ]; then go generate ./loaders; fi
+    if [ -d ./graph ]; then go generate ./graph; fi
     rm -rf github.com
   '';
 }
diff --git a/pkgs/applications/version-management/sourcehut/git.nix b/pkgs/applications/version-management/sourcehut/git.nix
index aeda66fc51e97..d7ffc0e2cf83d 100644
--- a/pkgs/applications/version-management/sourcehut/git.nix
+++ b/pkgs/applications/version-management/sourcehut/git.nix
@@ -13,28 +13,28 @@
 , setuptools
 }:
 let
-  version = "0.85.7";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; };
+  version = "0.85.9";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.42"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "git.sr.ht";
     rev = version;
-    hash = "sha256-jkESrrVE+0O2g64zzPOpqhl8DpvmosQvuF0s6Xd+lbM=";
+    hash = "sha256-tmbBw6x3nqN9nRIR3xOXQ+L5EACXLQYLXQYK3lsOsAI=";
   };
 
   gitApi = buildGoModule ({
     inherit src version;
     pname = "gitsrht-api";
     modRoot = "api";
-    vendorHash = "sha256-yWVpldqwpEZmeI18tvdIgof8GgSFEP70c8T5XDkryn0=";
+    vendorHash = "sha256-4KwnUi6ILUagMDXzuBG9CRT2N8uyjvRM74TwJqIzicc=";
   } // gqlgen);
 
   gitDispatch = buildGoModule ({
     inherit src version;
     pname = "gitsrht-dispatch";
     modRoot = "gitsrht-dispatch";
-    vendorHash = "sha256-yWVpldqwpEZmeI18tvdIgof8GgSFEP70c8T5XDkryn0=";
+    vendorHash = "sha256-4KwnUi6ILUagMDXzuBG9CRT2N8uyjvRM74TwJqIzicc=";
 
     postPatch = ''
       substituteInPlace gitsrht-dispatch/main.go \
@@ -46,7 +46,7 @@ let
     inherit src version;
     pname = "gitsrht-keys";
     modRoot = "gitsrht-keys";
-    vendorHash = "sha256-yWVpldqwpEZmeI18tvdIgof8GgSFEP70c8T5XDkryn0=";
+    vendorHash = "sha256-4KwnUi6ILUagMDXzuBG9CRT2N8uyjvRM74TwJqIzicc=";
 
     postPatch = ''
       substituteInPlace gitsrht-keys/main.go \
@@ -58,7 +58,7 @@ let
     inherit src version;
     pname = "gitsrht-shell";
     modRoot = "gitsrht-shell";
-    vendorHash = "sha256-yWVpldqwpEZmeI18tvdIgof8GgSFEP70c8T5XDkryn0=";
+    vendorHash = "sha256-4KwnUi6ILUagMDXzuBG9CRT2N8uyjvRM74TwJqIzicc=";
 
     postPatch = ''
       substituteInPlace gitsrht-shell/main.go \
@@ -70,7 +70,7 @@ let
     inherit src version;
     pname = "gitsrht-update-hook";
     modRoot = "gitsrht-update-hook";
-    vendorHash = "sha256-yWVpldqwpEZmeI18tvdIgof8GgSFEP70c8T5XDkryn0=";
+    vendorHash = "sha256-4KwnUi6ILUagMDXzuBG9CRT2N8uyjvRM74TwJqIzicc=";
 
     postPatch = ''
       substituteInPlace gitsrht-update-hook/main.go \
diff --git a/pkgs/applications/version-management/sourcehut/hg.nix b/pkgs/applications/version-management/sourcehut/hg.nix
index b4219b0a8396d..3e7e1f55c65a9 100644
--- a/pkgs/applications/version-management/sourcehut/hg.nix
+++ b/pkgs/applications/version-management/sourcehut/hg.nix
@@ -14,8 +14,8 @@
 }:
 
 let
-  version = "0.32.4";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.20"; };
+  version = "0.33.0";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.45"; };
 
   pyproject = true;
 
@@ -25,7 +25,7 @@ let
     owner = "~sircmpwn";
     repo = "hg.sr.ht";
     rev = version;
-    hash = "sha256-mYkA44c9wy/Iy1h1lXkVpc9gN7rQXFm4T3YBlQ1Dj60=";
+    hash = "sha256-+BYeE+8dXY/MLLYyBBLD+eKqmrPiKyyCGIZLkCPzNYM=";
     vc = "hg";
   };
 
@@ -33,7 +33,7 @@ let
     inherit src version;
     pname = "hgsrht-api";
     modRoot = "api";
-    vendorHash = "sha256-vuOYpnF3WjA6kOe9MVSuVMhJBQqCmIex+QUBJrP+VDs=";
+    vendorHash = "sha256-K+KMhcvkG/qeQTnlHS4xhLCcvBQNNp2DcScJPm8Dbic=";
   } // gqlgen);
 
   hgsrht-keys = buildGoModule {
diff --git a/pkgs/applications/version-management/sourcehut/hub.nix b/pkgs/applications/version-management/sourcehut/hub.nix
index b46e1c3508d7a..4a0d2cda89312 100644
--- a/pkgs/applications/version-management/sourcehut/hub.nix
+++ b/pkgs/applications/version-management/sourcehut/hub.nix
@@ -12,21 +12,21 @@
 }:
 
 let
-  version = "0.17.5";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.41"; };
+  version = "0.17.7";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.43"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "hub.sr.ht";
     rev = version;
-    hash = "sha256-GbBxK3XE+Y6Jiap0Nxa8vk4Kv6IbcdSi4NN59AeKwjA=";
+    hash = "sha256-IyY7Niy/vZSAXjYZMlxY6uuQ8nH/4yT4+MaRjHtl6G4=";
   };
 
   hubsrht-api = buildGoModule ({
     inherit src version;
     pname = "hubsrht-api";
     modRoot = "api";
-    vendorHash = "sha256-wmuM0SxQbohTDaU8zmkw1TQTmqhOy1yAl1jRWk6TKL8=";
+    vendorHash = "sha256-GVN11nEJqIHh8MtKvIXe4zcUwJph9eTSkJ2R+ufD+ic=";
   } // gqlgen);
 in
 buildPythonPackage rec {
diff --git a/pkgs/applications/version-management/sourcehut/lists.nix b/pkgs/applications/version-management/sourcehut/lists.nix
index 09431389ccc18..77d499f695e46 100644
--- a/pkgs/applications/version-management/sourcehut/lists.nix
+++ b/pkgs/applications/version-management/sourcehut/lists.nix
@@ -15,21 +15,21 @@
 }:
 
 let
-  version = "0.57.14";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.36"; };
+  version = "0.57.18";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.45"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "lists.sr.ht";
     rev = version;
-    hash = "sha256-rzOxlat7Lbgt0Wl6vvnAC+fS3MynFVKFvVdIdxgA5e0=";
+    hash = "sha256-l+QPocnwHTjrU+M0wnm4tBrbz8KmSb6DovC+skuAnLc=";
   };
 
   listssrht-api = buildGoModule ({
     inherit src version;
     pname = "listssrht-api";
     modRoot = "api";
-    vendorHash = "sha256-OWgrPvXVlvJPcoABP0ZxKzoYFhU44j/I44sBBRbd6KY=";
+    vendorHash = "sha256-UeVs/+uZNtv296bzXIBio2wcg3Uzu3fBM4APzF9O0hY=";
   } // gqlgen);
 in
 buildPythonPackage rec {
diff --git a/pkgs/applications/version-management/sourcehut/man.nix b/pkgs/applications/version-management/sourcehut/man.nix
index e6d208ab04676..f5cd6be139acd 100644
--- a/pkgs/applications/version-management/sourcehut/man.nix
+++ b/pkgs/applications/version-management/sourcehut/man.nix
@@ -12,21 +12,21 @@
 }:
 
 let
-  version = "0.16.3";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.36"; };
+  version = "0.16.5";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.43"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "man.sr.ht";
     rev = version;
-    hash = "sha256-o1A3LmwH6WgpFqjKyL3UTru9q7TgKdOdbKZfJHR6fCA=";
+    hash = "sha256-JFMtif2kIE/fs5PNcQtkJikAFNszgZTU7BG/8fTncTI=";
   };
 
   mansrht-api = buildGoModule ({
     inherit src version;
     pname = "mansrht-api";
     modRoot = "api";
-    vendorHash = "sha256-6AzKWytdyuofCFaDEdeO24mv1mtpnQEJydrjVWGY2eU=";
+    vendorHash = "sha256-GVN11nEJqIHh8MtKvIXe4zcUwJph9eTSkJ2R+ufD+ic=";
   } // gqlgen);
 in
 buildPythonPackage rec {
diff --git a/pkgs/applications/version-management/sourcehut/meta.nix b/pkgs/applications/version-management/sourcehut/meta.nix
index c2b835c2d53d5..8ae078bea5f1e 100644
--- a/pkgs/applications/version-management/sourcehut/meta.nix
+++ b/pkgs/applications/version-management/sourcehut/meta.nix
@@ -18,21 +18,21 @@
 , setuptools
 }:
 let
-  version = "0.68.5";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.36"; };
+  version = "0.69.8";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.43"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "meta.sr.ht";
     rev = version;
-    hash = "sha256-mwUqBzi7nMTZL7uwv7hBjGkO8U3krXXpvfUCaYHgHBU=";
+    hash = "sha256-K7p6cytkPYgUuYr7BVfU/+sVbSr2YEmreIDnTatUMyk=";
   };
 
   metasrht-api = buildGoModule ({
     inherit src version;
     pname = "metasrht-api";
     modRoot = "api";
-    vendorHash = "sha256-4T1xnHDjxsIyddA51exNwwz6ZWeuT7N8LBsCJ7c8sRI=";
+    vendorHash = "sha256-vIkUK1pigVU8vZL5xpHLeinOga5eXXHTuDkHxwUz6uM=";
   } // gqlgen);
 in
 buildPythonPackage rec {
diff --git a/pkgs/applications/version-management/sourcehut/pages.nix b/pkgs/applications/version-management/sourcehut/pages.nix
index 54b2027563092..5fc140548dc7a 100644
--- a/pkgs/applications/version-management/sourcehut/pages.nix
+++ b/pkgs/applications/version-management/sourcehut/pages.nix
@@ -6,21 +6,25 @@
 
 buildGoModule (rec {
   pname = "pagessrht";
-  version = "0.15.4";
+  version = "0.15.7";
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "pages.sr.ht";
     rev = version;
-    hash = "sha256-3kdQVIL7xaIPu2elxj1k+4/y75bd+OKP5+VPSniF7w8=";
+    hash = "sha256-Lobuf12ybSO7Y4ztOLMFW0dmPFaBSEPCy4Nmh89tylI=";
   };
 
   postPatch = ''
     substituteInPlace Makefile \
       --replace "all: server" ""
+
+    # fix build failure due to unused import
+    substituteInPlace server.go \
+      --replace-warn '	"fmt"' ""
   '';
 
-  vendorHash = "sha256-DP+6rxjiXzs0RbSuMD20XwO/+v7QXCNgXj2LxZ96lWE=";
+  vendorHash = "sha256-9hpOkP6AYSZe7MW1mrwFEKq7TvVt6OcF6eHWY4jARuU=";
 
   postInstall = ''
     mkdir -p $out/share/sql/
@@ -36,4 +40,4 @@ buildGoModule (rec {
   };
   # There is no ./loaders but this does not cause troubles
   # to go generate
-} // import ./fix-gqlgen-trimpath.nix { inherit unzip; })
+} // import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.42"; })
diff --git a/pkgs/applications/version-management/sourcehut/paste.nix b/pkgs/applications/version-management/sourcehut/paste.nix
index f8d4f27a7ddcc..b7e6624928966 100644
--- a/pkgs/applications/version-management/sourcehut/paste.nix
+++ b/pkgs/applications/version-management/sourcehut/paste.nix
@@ -12,21 +12,21 @@
 }:
 
 let
-  version = "0.15.2";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.20"; };
+  version = "0.15.4";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.45"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "paste.sr.ht";
     rev = version;
-    hash = "sha256-ZZzcd14Jbo1MfET7B56X/fl9xWXpCJ8TuKrGVgJwZfQ=";
+    hash = "sha256-M38hAMRdMzcqxJv7j7foOIYEImr/ZYz/lbYOF9R9g2M=";
   };
 
   pastesrht-api = buildGoModule ({
     inherit src version;
     pname = "pastesrht-api";
     modRoot = "api";
-    vendorHash = "sha256-jiE73PUPSHxtWp7XBdH4mJw95pXmZjCl4tk2wQUf2M4=";
+    vendorHash = "sha256-vt5nSPcx+Y/SaWcqjV38DTL3ZtzmdjbkJYMv5Fhhnq4=";
   } // gqlgen);
 in
 buildPythonPackage rec {
diff --git a/pkgs/applications/version-management/sourcehut/scm.nix b/pkgs/applications/version-management/sourcehut/scm.nix
index a5bbc43b3f45c..a60eb4b747885 100644
--- a/pkgs/applications/version-management/sourcehut/scm.nix
+++ b/pkgs/applications/version-management/sourcehut/scm.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "scmsrht";
-  version = "0.22.23";
+  version = "0.22.24";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "~sircmpwn";
     repo = "scm.sr.ht";
     rev = version;
-    hash = "sha256-058dOEYJDY3jtxH1VkV1CFq5CZTkauSnTWg57DCnNtw=";
+    hash = "sha256-9IgMmYzInfrten7z8bznlSFJlUjHf3k3z76lkP6tP50=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/version-management/sourcehut/todo.nix b/pkgs/applications/version-management/sourcehut/todo.nix
index 11c762592bb77..1f81727283911 100644
--- a/pkgs/applications/version-management/sourcehut/todo.nix
+++ b/pkgs/applications/version-management/sourcehut/todo.nix
@@ -13,21 +13,21 @@
 }:
 
 let
-  version = "0.75.6";
-  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.36"; };
+  version = "0.75.10";
+  gqlgen = import ./fix-gqlgen-trimpath.nix { inherit unzip; gqlgenVersion = "0.17.45"; };
 
   src = fetchFromSourcehut {
     owner = "~sircmpwn";
     repo = "todo.sr.ht";
     rev = version;
-    hash = "sha256-BPJ1M9dX+xNIw++VZ0Si/rjnfI9BY95TE2o+u7JRVAU=";
+    hash = "sha256-3dVZdupsygM7/6T1Mn7yRc776aa9pKgwF0hgZX6uVQ0=";
   };
 
   todosrht-api = buildGoModule ({
     inherit src version;
     pname = "todosrht-api";
     modRoot = "api";
-    vendorHash = "sha256-vTKIJFE8AFR2eZFwG9ba6FWPW02og3ZVcrsqUnOkJIQ=";
+    vendorHash = "sha256-fImOQLnQLHTrg5ikuYRZ+u+78exAiYA19DGQoUjQBOM=";
   } // gqlgen);
 in
 buildPythonPackage rec {
diff --git a/pkgs/applications/version-management/sourcehut/update.sh b/pkgs/applications/version-management/sourcehut/update.sh
index e9efc0816eb13..e5dd0b5baed04 100755
--- a/pkgs/applications/version-management/sourcehut/update.sh
+++ b/pkgs/applications/version-management/sourcehut/update.sh
@@ -1,5 +1,5 @@
 #! /usr/bin/env nix-shell
-#! nix-shell -i bash -p git mercurial common-updater-scripts
+#! nix-shell -i bash -p gnused git mercurial common-updater-scripts
 set -eux -o pipefail
 
 cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1
@@ -34,21 +34,29 @@ get_latest_version() {
   rm -rf "$tmp"
   if [ "$1" = "hgsrht" ]; then
     hg clone "$src" "$tmp" >/dev/null
-    printf "%s" "$(cd "$tmp" && hg log --limit 1 --template '{latesttag}')"
+    printf "%s %s\n" \
+        "$(cd "$tmp" && hg log --limit 1 --template '{latesttag}')" \
+        "$(cd "$tmp" && sed -ne 's/^\s*github\.com\/99designs\/gqlgen v\(.*\)$/\1/p' go.mod)"
   else
     git clone "$src" "$tmp" >/dev/null
-    printf "%s" "$(cd "$tmp" && git describe "$(git rev-list --tags --max-count=1)")"
+    printf "%s %s\n" \
+        "$(cd "$tmp" && git describe "$(git rev-list --tags --max-count=1)")" \
+        "$(cd "$tmp" && sed -ne 's/^\s*github\.com\/99designs\/gqlgen v\(.*\)$/\1/p' go.mod)"
   fi
 }
 
 update_version() {
   default_nix="$(default "$1")"
   oldVersion="$(version "$1")"
-  version="$(get_latest_version "$1")"
+  read -r version gqlgen_ver < <(get_latest_version "$1")
   local p="$(attr_path "$1")"
 
   (cd "$root" && update-source-version "$p" "$version")
 
+  # update `gqlgenVersion` if necessary
+  old_gqlgen_ver="$(sed -ne 's/^.*gqlgenVersion = "\(.*\)".*$/\1/p' "$default_nix")"
+  sed -ri "s|gqlgenVersion = \"$old_gqlgen_ver\";|gqlgenVersion = \"$gqlgen_ver\";|w /dev/stdout" "$default_nix"
+
   # Update vendorHash of Go modules
   retry=true
   while "$retry"; do
@@ -63,7 +71,7 @@ update_version() {
     done
   done
 
-  if [ "$oldVersion" != "$version" ]; then
+  if [ "$oldVersion" != "$version" ] || [ "$old_gqlgen_ver" != "$gqlgen_ver" ]; then
     git add "$default_nix"
     git commit -m "sourcehut.$1: $oldVersion -> $version"
   fi
diff --git a/pkgs/applications/version-management/ungit/default.nix b/pkgs/applications/version-management/ungit/default.nix
index e9bc311c7ab21..5d5c8336987b8 100644
--- a/pkgs/applications/version-management/ungit/default.nix
+++ b/pkgs/applications/version-management/ungit/default.nix
@@ -5,16 +5,16 @@
 
 buildNpmPackage rec {
   pname = "ungit";
-  version = "1.5.25";
+  version = "1.5.26";
 
   src = fetchFromGitHub {
     owner = "FredrikNoren";
     repo = "ungit";
     rev = "v${version}";
-    hash = "sha256-mVBE8HW5dhi00BbVX00rgvc4JtyrTsbina18EzSUcuM=";
+    hash = "sha256-HTo0z/y7thUrDm6ofHiUtv1UDuqGN+kpMFLuIvxyxZQ=";
   };
 
-  npmDepsHash = "sha256-DftAovQPKi4hLeqAGCVN8u/9eC4mkTxTJ2WxxOHbkgM=";
+  npmDepsHash = "sha256-f/CtNYoy5ZOgdVTG2ZdBpXOSNUKSG5wCy0eIl4ov80U=";
 
   env = {
     ELECTRON_SKIP_BINARY_DOWNLOAD = true;
diff --git a/pkgs/applications/video/anilibria-winmaclinux/0003-build-with-vlc.patch b/pkgs/applications/video/anilibria-winmaclinux/0003-build-with-vlc.patch
deleted file mode 100644
index 6bdfcf2c2d2a4..0000000000000
--- a/pkgs/applications/video/anilibria-winmaclinux/0003-build-with-vlc.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff --git a/AniLibria.pro b/AniLibria.pro
-index 407dbde..ae69502 100644
---- a/AniLibria.pro
-+++ b/AniLibria.pro
-@@ -21,17 +21,17 @@ windows {
-     DEFINES += NO_NEED_STANDART_PLAYER
- }
- 
--#unix {
--#    LIBS += -lvlc
-+unix {
-+    LIBS += -lvlc
- 
- #    INCLUDEPATH += /usr/include/
- #    DEPENDPATH += /usr/include/
- 
--#    INCLUDEPATH += /usr/include/vlc/plugins
--#    DEPENDPATH += /usr/include/vlc/plugins
-+    INCLUDEPATH += @VLC_PATH@/vlc/plugins
-+    DEPENDPATH += @VLC_PATH@/vlc/plugins
- 
--#    CONFIG += buildwithvlc
--#}
-+    CONFIG += buildwithvlc
-+}
- 
- buildwithvlc {
-     DEFINES += USE_VLC_PLAYER
diff --git a/pkgs/applications/video/anilibria-winmaclinux/default.nix b/pkgs/applications/video/anilibria-winmaclinux/default.nix
index d35947be850b1..522c37f3a625f 100644
--- a/pkgs/applications/video/anilibria-winmaclinux/default.nix
+++ b/pkgs/applications/video/anilibria-winmaclinux/default.nix
@@ -11,23 +11,27 @@
 , wrapQtAppsHook
 , makeDesktopItem
 , copyDesktopItems
-, libvlc
+
+, withVLC ? true , libvlc
+, withMPV ? true , mpv-unwrapped
 }:
 
 mkDerivation rec {
   pname = "anilibria-winmaclinux";
-  version = "1.2.15";
+  version = "1.2.16.1";
 
   src = fetchFromGitHub {
     owner = "anilibria";
     repo = "anilibria-winmaclinux";
     rev = version;
-    sha256 = "sha256-pfM3o4H3XJ4ZE0FXVR1k8pc7lr7SOQjKEMWuG9YkvvI=";
+    hash = "sha256-QQliz/tLeYsWgh/ZAO7FfbApAEqWhWoaQe9030QZxA8=";
   };
 
   sourceRoot = "${src.name}/src";
 
-  qmakeFlags = [ "PREFIX=${placeholder "out"}" "CONFIG+=unixvlc" ];
+  qmakeFlags = [ "PREFIX=${placeholder "out"}" ]
+    ++ lib.optionals withVLC [ "CONFIG+=unixvlc" ]
+    ++ lib.optionals withMPV [ "CONFIG+=unixmpv" ];
 
   patches = [
     ./0001-fix-installation-paths.patch
@@ -61,14 +65,15 @@ mkDerivation rec {
     qtquickcontrols2
     qtwebsockets
     qtmultimedia
-    libvlc
   ] ++ (with gst_all_1; [
     gst-plugins-bad
     gst-plugins-good
     gst-plugins-base
     gst-libav
     gstreamer
-  ]);
+  ])
+  ++ lib.optionals withVLC [ libvlc ]
+  ++ lib.optionals withMPV [ mpv-unwrapped.dev ];
 
   desktopItems = [
     (makeDesktopItem (rec {
diff --git a/pkgs/applications/video/flowblade/default.nix b/pkgs/applications/video/flowblade/default.nix
index 004601163190f..4e558d335e03f 100644
--- a/pkgs/applications/video/flowblade/default.nix
+++ b/pkgs/applications/video/flowblade/default.nix
@@ -5,18 +5,18 @@
 
 stdenv.mkDerivation rec {
   pname = "flowblade";
-  version = "2.12.0.2";
+  version = "2.14.0.1";
 
   src = fetchFromGitHub {
     owner = "jliljebl";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-SZ/J03PYeAbqQlNQXdqLSduo/5VjQ7VH4eErJqO3Ua0=";
+    sha256 = "sha256-kyW/vYKGy/tgHmev8LgJbGugfKkzKFwLZStQQfWYPuQ=";
   };
 
   buildInputs = [
     ffmpeg frei0r sox gtk3 ladspaPlugins
-    (python3.withPackages (ps: with ps; [ mlt pygobject3 dbus-python numpy pillow ]))
+    (python3.withPackages (ps: with ps; [ mlt pygobject3 dbus-python numpy pillow libusb1 ]))
   ];
 
   nativeBuildInputs = [ gobject-introspection makeWrapper wrapGAppsHook ];
diff --git a/pkgs/applications/video/manim/default.nix b/pkgs/applications/video/manim/default.nix
index 423f8cf8eb9cb..57186eec19f8c 100644
--- a/pkgs/applications/video/manim/default.nix
+++ b/pkgs/applications/video/manim/default.nix
@@ -47,14 +47,14 @@ let
 in python.pkgs.buildPythonApplication rec {
   pname = "manim";
   pyproject = true;
-  version = "0.18.0";
+  version = "0.18.0.post0";
   disabled = python3.pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner  = "ManimCommunity";
     repo = "manim";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TI7O0b1JvUZAxTj6XfpAJKhbGqrGnhcrE9eRJUVx4GM=";
+    hash = "sha256-4HwQ74oHloK+1KOD6SzXCzGIDD+Dc0jDabw6/+cqmos=";
   };
 
   nativeBuildInputs = with python.pkgs; [
diff --git a/pkgs/applications/video/mpv/scripts/default.nix b/pkgs/applications/video/mpv/scripts/default.nix
index 80f0a17a9cb7a..fac7c910d57ad 100644
--- a/pkgs/applications/video/mpv/scripts/default.nix
+++ b/pkgs/applications/video/mpv/scripts/default.nix
@@ -67,6 +67,7 @@ let
     chapterskip = callPackage ./chapterskip.nix { };
     convert = callPackage ./convert.nix { };
     cutter = callPackage ./cutter.nix { };
+    dynamic-crop = callPackage ./dynamic-crop.nix { };
     inhibit-gnome = callPackage ./inhibit-gnome.nix { };
     modernx = callPackage ./modernx.nix { };
     modernx-zydezu = callPackage ./modernx-zydezu.nix { };
diff --git a/pkgs/applications/video/mpv/scripts/dynamic-crop.nix b/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
new file mode 100644
index 0000000000000..f2cd7dc070166
--- /dev/null
+++ b/pkgs/applications/video/mpv/scripts/dynamic-crop.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchFromGitHub
+, unstableGitUpdater
+, buildLua
+}:
+buildLua {
+  pname = "dynamic-crop";
+
+  version = "0-unstable-2023-12-22";
+  src = fetchFromGitHub {
+    owner = "Ashyni";
+    repo = "mpv-scripts";
+    rev = "c79a46ba03631eb2a9b4f598aab0b723f03fc531";
+    hash = "sha256-W4Dj2tyJHeHLqAndrzllKs4iwMe3Tu8rfzEGBHuke6s=";
+  };
+  passthru.scriptName = "dynamic-crop.lua";
+
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
+    description = ''Script to "cropping" dynamically, hard-coded black bars detected with lavfi-cropdetect filter for Ultra Wide Screen or any screen (Smartphone/Tablet).'';
+    homepage = "https://github.com/Ashyni/mpv-scripts";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.iynaix ];
+  };
+}
diff --git a/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix b/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix
index 3bf923e3902b3..36b20fe11205c 100644
--- a/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix
+++ b/pkgs/applications/video/mpv/scripts/modernx-zydezu.nix
@@ -6,14 +6,14 @@
 }:
 buildLua (finalAttrs: {
   pname = "modernx-zydezu";
-  version = "0.2.8";
+  version = "0.2.9";
 
   scriptPath = "modernx.lua";
   src = fetchFromGitHub {
     owner = "zydezu";
     repo = "ModernX";
     rev = finalAttrs.version;
-    hash = "sha256-rruscDutFyQCl5sTtQfmtYPcXKWU51/QFbghSOyMC9o=";
+    hash = "sha256-Tq/v8EbojvOSSwbu8kdbLVxZWZNi1UH6zAPTcsUcgog";
   };
 
   postInstall = ''
diff --git a/pkgs/applications/video/mpv/scripts/sponsorblock-minimal.nix b/pkgs/applications/video/mpv/scripts/sponsorblock-minimal.nix
index 841fc8eb9b4fb..7ea503ddd62c5 100644
--- a/pkgs/applications/video/mpv/scripts/sponsorblock-minimal.nix
+++ b/pkgs/applications/video/mpv/scripts/sponsorblock-minimal.nix
@@ -1,9 +1,4 @@
-{ lib
-, buildLua
-, fetchFromGitea
-, unstableGitUpdater
-, curl
-}:
+{ lib, buildLua, fetchFromGitea, unstableGitUpdater, curl, coreutils }:
 
 buildLua {
   pname = "mpv_sponsorblock_minimal";
@@ -17,15 +12,17 @@ buildLua {
     rev = "ca2844b8cf7674bfccd282d389a50427742251d3";
     hash = "sha256-28HWZ6nOhKiE+5Ya1N3Vscd8aeH9OKS0t72e/xPfFQQ=";
   };
-  passthru.updateScript = unstableGitUpdater {};
+  passthru.updateScript = unstableGitUpdater { };
 
   preInstall = ''
     substituteInPlace sponsorblock_minimal.lua \
-      --replace "curl" "${lib.getExe curl}"
+      --replace-fail "curl" "${lib.getExe curl}" \
+      --replace-fail "sha256sum" "${lib.getExe' coreutils "sha256sum"}"
   '';
 
   meta = with lib; {
-    description = "A minimal script to skip sponsored segments of YouTube videos";
+    description =
+      "A minimal script to skip sponsored segments of YouTube videos";
     homepage = "https://codeberg.org/jouni/mpv_sponsorblock_minimal";
     license = licenses.gpl3Only;
     platforms = platforms.all;
diff --git a/pkgs/applications/video/mpv/scripts/uosc.nix b/pkgs/applications/video/mpv/scripts/uosc.nix
index e5bb972a24181..61eb65f9bf9f3 100644
--- a/pkgs/applications/video/mpv/scripts/uosc.nix
+++ b/pkgs/applications/video/mpv/scripts/uosc.nix
@@ -9,14 +9,14 @@
 
 buildLua (finalAttrs: {
   pname = "uosc";
-  version = "5.1.1";
+  version = "5.2.0";
   scriptPath = "src/uosc";
 
   src = fetchFromGitHub {
     owner = "tomasklaen";
     repo = "uosc";
     rev = finalAttrs.version;
-    hash = "sha256-+4k8T1yX3IRXK3XkUShsuJSH9w1Zla7CaRENcIqX4iM=";
+    hash = "sha256-0GPDna9uOuhFDhA9A1fbkoKkgSB76qiDzJVQ9gjGcWo=";
   };
   passthru.updateScript = gitUpdater {};
 
@@ -26,15 +26,6 @@ buildLua (finalAttrs: {
     vendorHash = "sha256-nkY0z2GiDxfNs98dpe+wZNI3dAXcuHaD/nHiZ2XnZ1Y=";
   };
 
-  # Patch lua script to get the path to its `ziggy` binary form the environment
-  patches = [
-    # uosc#814: Support overriding `ziggy_path` via environment variable
-    (fetchpatch {
-      url = "https://github.com/tomasklaen/uosc/commit/4fdf68a1bcb510824d66f35ecc7672a6452a44b2.patch";
-      hash = "sha256-igUqFf8e7LVIIjGxACdIWAeZxjF/yqaCL4QRXrzNQXk=";
-    })
-  ];
-
   # the script uses custom "texture" fonts as the background for ui elements.
   # In order for mpv to find them, we need to adjust the fontconfig search path.
   postInstall = "cp -r src/fonts $out/share";
diff --git a/pkgs/applications/video/obs-studio/default.nix b/pkgs/applications/video/obs-studio/default.nix
index e3c344457f708..3df52d08684d5 100644
--- a/pkgs/applications/video/obs-studio/default.nix
+++ b/pkgs/applications/video/obs-studio/default.nix
@@ -62,13 +62,13 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "obs-studio";
-  version = "30.1.1";
+  version = "30.1.2";
 
   src = fetchFromGitHub {
     owner = "obsproject";
     repo = finalAttrs.pname;
     rev = finalAttrs.version;
-    sha256 = "sha256-1/8SsDAEBT8jEXKKQgA9JjUHM4/8UtcELUGFiHBB31g=";
+    sha256 = "sha256-M4IINBoYrgkM37ykb4boHyWP8AxwMX0b7IAeeNIw9Qo=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/video/qmplay2/default.nix b/pkgs/applications/video/qmplay2/default.nix
index bc92499e75ea3..167b5e8601e25 100644
--- a/pkgs/applications/video/qmplay2/default.nix
+++ b/pkgs/applications/video/qmplay2/default.nix
@@ -26,14 +26,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "qmplay2";
-  version = "24.04.02";
+  version = "24.04.07";
 
   src = fetchFromGitHub {
     owner = "zaps166";
     repo = "QMPlay2";
     rev = finalAttrs.version;
     fetchSubmodules = true;
-    hash = "sha256-eJWXTcJU24QzPChFTKbvNcuL9UpIQD8rFzd5h591tjg=";
+    hash = "sha256-WIDGApvl+aaB3Vdv0sHY+FHWqzreWWd3/xOLV11YfxM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/streamlink-twitch-gui/bin.nix b/pkgs/applications/video/streamlink-twitch-gui/bin.nix
index ac74ed748f41c..543b2b524708f 100644
--- a/pkgs/applications/video/streamlink-twitch-gui/bin.nix
+++ b/pkgs/applications/video/streamlink-twitch-gui/bin.nix
@@ -1,6 +1,7 @@
 { autoPatchelfHook
 , fetchurl
 , lib
+, copyDesktopItems
 , makeDesktopItem
 , makeWrapper
 , stdenv
@@ -52,6 +53,7 @@ stdenv.mkDerivation rec {
     alsa-lib
     autoPatchelfHook
     cairo
+    copyDesktopItems
     cups.lib
     dbus.lib
     expat
@@ -92,8 +94,12 @@ stdenv.mkDerivation rec {
     # Install all files, remove unnecessary ones
     cp -a . $out/opt/${basename}/
     rm -r $out/opt/${basename}/{{add,remove}-menuitem.sh,credits.html,icons/}
-    ln -s "$out/opt/${basename}/${basename}" $out/bin/
-    cp -r "${desktopItem}/share/applications" $out/share/
+    ln -s $out/opt/${basename}/${basename} $out/bin/
+    for res in 16 32 48 64 128 256; do
+      install -Dm644 \
+        icons/icon-"$res".png \
+        $out/share/icons/hicolor/"$res"x"$res"/apps/${basename}.png
+    done
     runHook postInstall
   '';
 
@@ -105,14 +111,14 @@ stdenv.mkDerivation rec {
     )
   '';
 
-  desktopItem = makeDesktopItem {
+  desktopItems = [(makeDesktopItem {
     name = basename;
     exec = basename;
     icon = basename;
     desktopName = "Streamlink Twitch GUI";
     genericName = meta.description;
     categories = [ "AudioVideo" "Network" ];
-  };
+  })];
 
   meta = with lib; {
     description = "Twitch.tv browser for Streamlink";
diff --git a/pkgs/applications/virtualization/conmon-rs/default.nix b/pkgs/applications/virtualization/conmon-rs/default.nix
index 7599c5eb6652b..3a8c5a5593237 100644
--- a/pkgs/applications/virtualization/conmon-rs/default.nix
+++ b/pkgs/applications/virtualization/conmon-rs/default.nix
@@ -7,19 +7,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "conmon-rs";
-  version = "0.6.1";
+  version = "0.6.2";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-B8uloch+ucOLIIR64GE5Z8ahe2NLqPmDGcugQVSqpl4=";
+    hash = "sha256-+htd9RJGSFzzyEQSBJGIzurQDQgpJ+sJHLPe3aPH0cg=";
   };
 
   nativeBuildInputs = [ capnproto protobuf ];
   doCheck = false;
 
-  cargoHash = "sha256-hEhAnNppiyY6EcdHfri534ih8VUfpT7lO9L4mFJ6Caw=";
+  cargoHash = "sha256-CcWji/qMd7eX0O3cR9/FLID17WpSfz4kEAhDgKb3jds=";
 
   meta = with lib; {
     description = "An OCI container runtime monitor written in Rust";
diff --git a/pkgs/applications/virtualization/containerd/default.nix b/pkgs/applications/virtualization/containerd/default.nix
index acac16093affb..c89c0596536ec 100644
--- a/pkgs/applications/virtualization/containerd/default.nix
+++ b/pkgs/applications/virtualization/containerd/default.nix
@@ -11,13 +11,13 @@
 
 buildGoModule rec {
   pname = "containerd";
-  version = "1.7.14";
+  version = "1.7.15";
 
   src = fetchFromGitHub {
     owner = "containerd";
     repo = "containerd";
     rev = "v${version}";
-    hash = "sha256-okTz2UCF5LxOdtLDBy1pN2to6WHi+I0jtR67sn7Qrbk=";
+    hash = "sha256-qLrPLGxsUmgEscrhyl+1rJ0k7c9ibKnpMpsJPD4xDZU=";
   };
 
   vendorHash = null;
diff --git a/pkgs/applications/virtualization/crosvm/default.nix b/pkgs/applications/virtualization/crosvm/default.nix
index ed9aa2116b518..1dbfaa298e345 100644
--- a/pkgs/applications/virtualization/crosvm/default.nix
+++ b/pkgs/applications/virtualization/crosvm/default.nix
@@ -5,18 +5,20 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "crosvm";
-  version = "122.1";
+  version = "123.0";
 
   src = fetchgit {
     url = "https://chromium.googlesource.com/chromiumos/platform/crosvm";
-    rev = "562d81eb28a49ed6e0d771a430c21a458cdd33f9";
-    sha256 = "l5sIUInOhhkn3ernQLIEwEpRCyICDH/1k4C/aidy1/I=";
+    # This is actually one commit before release 123, because the final
+    # commit breaks the build and gets reverted in future releases.
+    rev = "7c75ad6185893b4cc26676b6a0eb9fbdf9ed5b72";
+    hash = "sha256-1Jj8TAgYxIGLJeTtiZBcXw0n/mTbh/uC8EFM0IYD5VY=";
     fetchSubmodules = true;
   };
 
   separateDebugInfo = true;
 
-  cargoHash = "sha256-2MaRfQCAjW560sdAPqdWymClwY1U5QjIMzknHry+9zs=";
+  cargoHash = "sha256-f3w+msG7m6valf/I1puMrpiVgk0J1bdyp+rw3KQ/7ys=";
 
   nativeBuildInputs = [
     pkg-config protobuf python3 rustPlatform.bindgenHook wayland-scanner
diff --git a/pkgs/applications/virtualization/docker/compose.nix b/pkgs/applications/virtualization/docker/compose.nix
index f1aecbf50adc0..3e344a653614b 100644
--- a/pkgs/applications/virtualization/docker/compose.nix
+++ b/pkgs/applications/virtualization/docker/compose.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "docker-compose";
-  version = "2.26.0";
+  version = "2.26.1";
 
   src = fetchFromGitHub {
     owner = "docker";
     repo = "compose";
     rev = "v${version}";
-    hash = "sha256-hOBWtvls4rRYPMTvkTRkEAftzQB6SG1bv9vasK54d/4=";
+    hash = "sha256-R/AFjJM4rcu2JbdfTNhxIIVhaP7LzFrDAU93hbuXSXs=";
   };
 
   postPatch = ''
@@ -16,7 +16,7 @@ buildGoModule rec {
     rm -rf e2e/
   '';
 
-  vendorHash = "sha256-uyGGzfsfjk0mUoJ/0Sm89Mus2fQS3HZGBAQ48xMecwU=";
+  vendorHash = "sha256-SzySXS0s0p1EXcO5RQyATBG9gtoJ4wPxZKGU62fAOHw=";
 
   ldflags = [ "-X github.com/docker/compose/v2/internal.Version=${version}" "-s" "-w" ];
 
diff --git a/pkgs/applications/virtualization/docker/default.nix b/pkgs/applications/virtualization/docker/default.nix
index f91f7d6df3dff..e30ad02f5bc81 100644
--- a/pkgs/applications/virtualization/docker/default.nix
+++ b/pkgs/applications/virtualization/docker/default.nix
@@ -294,9 +294,23 @@ rec {
   };
 
   docker_25 = callPackage dockerGen rec {
-    version = "25.0.3";
+    version = "25.0.5";
     cliRev = "v${version}";
-    cliHash = "sha256-Jvb0plV1O/UzrcpzN4zH5OulmTVF+p9UQQQ9xqkiObQ=";
+    cliHash = "sha256-CACMi3bXUN6oGc2f/Z+lNQqMgQ4llRWPRKgijdpiPGg=";
+    mobyRev = "v${version}";
+    mobyHash = "sha256-4QGz22fXxyAD77pyUWb2lF3VKqxmPIrGqcJGoyrEHew=";
+    runcRev = "v1.1.12";
+    runcHash = "sha256-N77CU5XiGYIdwQNPFyluXjseTeaYuNJ//OsEUS0g/v0=";
+    containerdRev = "v1.7.13";
+    containerdHash = "sha256-y3CYDZbA2QjIn1vyq/p1F1pAVxQHi/0a6hGWZCRWzyk=";
+    tiniRev = "v0.19.0";
+    tiniHash = "sha256-ZDKu/8yE5G0RYFJdhgmCdN3obJNyRWv6K/Gd17zc1sI=";
+  };
+
+  docker_26 = callPackage dockerGen rec {
+    version = "26.0.0";
+    cliRev = "v${version}";
+    cliHash = "sha256-jGg/AVnIzI8e+DdF0uKlSZApRxcwuOjCQpfnBaCY4fI=";
     mobyRev = "v${version}";
     mobyHash = "sha256-cDlRVdQNzH/X2SJUYHK1QLUHlKQtSyRYCVbz3wPx1ZM=";
     runcRev = "v1.1.12";
@@ -306,4 +320,5 @@ rec {
     tiniRev = "v0.19.0";
     tiniHash = "sha256-ZDKu/8yE5G0RYFJdhgmCdN3obJNyRWv6K/Gd17zc1sI=";
   };
+
 }
diff --git a/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix b/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix
index f2ab0d8f4e78a..c44f101ba9464 100644
--- a/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix
+++ b/pkgs/applications/virtualization/driver/win-pvdrivers/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl }:
+{ lib, stdenvNoCC, fetchurl }:
 
 let
   # Upstream versioned download links are broken
@@ -40,7 +40,7 @@ let
   ];
 
 in
-stdenv.mkDerivation {
+stdenvNoCC.mkDerivation {
   pname = "win-pvdrivers";
   version = "unstable-2023-08-17";
 
diff --git a/pkgs/applications/virtualization/ecs-agent/default.nix b/pkgs/applications/virtualization/ecs-agent/default.nix
index 4d3784b2ac803..c3a28e4be4fe7 100644
--- a/pkgs/applications/virtualization/ecs-agent/default.nix
+++ b/pkgs/applications/virtualization/ecs-agent/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "amazon-ecs-agent";
-  version = "1.82.1";
+  version = "1.82.2";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "aws";
     repo = pname;
-    hash = "sha256-WXxuFJnqWUm+XgFNdtf0WBBGa7fP8Qv7hRd4xfGeVeg=";
+    hash = "sha256-2a8QBdL28iHVTE+Xo1I+89pFBeWndPqT072SHB498SQ=";
   };
 
   vendorHash = null;
diff --git a/pkgs/applications/virtualization/kraft/default.nix b/pkgs/applications/virtualization/kraft/default.nix
index c2e3425227b06..d77a228b7528b 100644
--- a/pkgs/applications/virtualization/kraft/default.nix
+++ b/pkgs/applications/virtualization/kraft/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "kraftkit";
-  version = "0.8.1";
+  version = "0.8.2";
 
   src = fetchFromGitHub {
     owner = "unikraft";
     repo = "kraftkit";
     rev = "v${version}";
-    hash = "sha256-XbA1nyiHG8aTXXcJ4puAMutLXrjgus1fdI0Rv+YHh7k=";
+    hash = "sha256-IGOD4AItfiGrVRwoPV4rAzhTUbyHvm3LMpMDjWgXh6g=";
   };
 
-  vendorHash = "sha256-PnFBBRF5RH908wPAKQjyY4DiKYUq31uxNb9qYMwiybs=";
+  vendorHash = "sha256-0i2HUQ/+Ql1ma7bX7DVC0Pw78CR7gUvnGYFWGB1wt7s=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/applications/virtualization/looking-glass-client/0001-client-cmake-move-X11-config-directives-to-displayse.patch b/pkgs/applications/virtualization/looking-glass-client/0001-client-cmake-move-X11-config-directives-to-displayse.patch
new file mode 100644
index 0000000000000..b044fb47c2e1f
--- /dev/null
+++ b/pkgs/applications/virtualization/looking-glass-client/0001-client-cmake-move-X11-config-directives-to-displayse.patch
@@ -0,0 +1,57 @@
+From: Geoffrey McRae <geoff@hostfission.com>
+Date: Wed, 13 Mar 2024 11:17:25 +1100
+Subject: [PATCH] [client] cmake: move X11 config directives to
+ `displayservers`
+
+---
+ client/CMakeLists.txt                | 7 -------
+ client/displayservers/CMakeLists.txt | 7 +++++++
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git client/CMakeLists.txt client/CMakeLists.txt
+index 3755adcf..eeeb3eb0 100644
+--- client/CMakeLists.txt
++++ client/CMakeLists.txt
+@@ -42,19 +42,12 @@ add_feature_info(ENABLE_ASAN ENABLE_ASAN "AddressSanitizer support.")
+ option(ENABLE_UBSAN "Build with UndefinedBehaviorSanitizer" OFF)
+ add_feature_info(ENABLE_UBSAN ENABLE_UBSAN "UndefinedBehaviorSanitizer support.")
+
+-option(ENABLE_X11 "Build with X11 support" ON)
+-add_feature_info(ENABLE_X11 ENABLE_X11 "X11 support.")
+-
+ option(ENABLE_PIPEWIRE "Build with PipeWire audio output support" ON)
+ add_feature_info(ENABLE_PIPEWIRE ENABLE_PIPEWIRE "PipeWire audio support.")
+
+ option(ENABLE_PULSEAUDIO "Build with PulseAudio audio output support" ON)
+ add_feature_info(ENABLE_PULSEAUDIO ENABLE_PULSEAUDIO "PulseAudio audio support.")
+
+-if (NOT ENABLE_X11 AND NOT ENABLE_WAYLAND)
+-  message(FATAL_ERROR "Either ENABLE_X11 or ENABLE_WAYLAND must be on")
+-endif()
+-
+ add_compile_options(
+   "-Wall"
+   "-Wextra"
+diff --git client/displayservers/CMakeLists.txt client/displayservers/CMakeLists.txt
+index 5b5f827a..e7c4b25a 100644
+--- client/displayservers/CMakeLists.txt
++++ client/displayservers/CMakeLists.txt
+@@ -18,9 +18,16 @@ function(add_displayserver name)
+   add_subdirectory(${name})
+ endfunction()
+
++option(ENABLE_X11 "Build with X11 support" ON)
++add_feature_info(ENABLE_X11 ENABLE_X11 "X11 support.")
++
+ option(ENABLE_WAYLAND "Build with Wayland support" ON)
+ add_feature_info(ENABLE_WAYLAND ENABLE_WAYLAND "Wayland support.")
+
++if (NOT ENABLE_X11 AND NOT ENABLE_WAYLAND)
++  message(FATAL_ERROR "Either ENABLE_X11 or ENABLE_WAYLAND must be on")
++endif()
++
+ # Add/remove displayservers here!
+ if (ENABLE_WAYLAND)
+   add_displayserver(Wayland)
+--
+2.43.1
diff --git a/pkgs/applications/virtualization/looking-glass-client/default.nix b/pkgs/applications/virtualization/looking-glass-client/default.nix
index 67baa3ab91bd2..4b224c745c9fc 100644
--- a/pkgs/applications/virtualization/looking-glass-client/default.nix
+++ b/pkgs/applications/virtualization/looking-glass-client/default.nix
@@ -22,6 +22,7 @@
 , libXinerama
 , libXcursor
 , libXpresent
+, libXdmcp
 
 , wayland
 , wayland-protocols
@@ -30,6 +31,7 @@
 , pulseaudio
 , libsamplerate
 
+, openGLSupport ? true
 , xorgSupport ? true
 , waylandSupport ? true
 , pipewireSupport ? true
@@ -43,35 +45,39 @@ let
     type = "Application";
     exec = "looking-glass-client";
     icon = "lg-logo";
-    terminal = true;
   };
 in
 stdenv.mkDerivation rec {
   pname = "looking-glass-client";
-  version = "B6";
+  version = "B7-rc1";
 
   src = fetchFromGitHub {
     owner = "gnif";
     repo = "LookingGlass";
     rev = version;
-    sha256 = "sha256-6vYbNmNJBCoU23nVculac24tHqH7F4AZVftIjL93WJU=";
+    sha256 = "sha256-ne1Q+67+P8RHcTsqdiSSwkFf0g3pSNT91WN/lsSzssU=";
     fetchSubmodules = true;
   };
 
+  patches = [
+    # Fix failing cmake assertion when disabling X11 whithout explicitly enabling Wayland.
+    ./0001-client-cmake-move-X11-config-directives-to-displayse.patch
+  ];
+
   nativeBuildInputs = [ cmake pkg-config ];
 
-  buildInputs = [ libGL libX11 freefont_ttf spice-protocol expat libbfd nettle fontconfig libffi ]
-    ++ lib.optionals xorgSupport [ libxkbcommon libXi libXScrnSaver libXinerama libXcursor libXpresent libXext libXrandr ]
+  buildInputs = [ libX11 libGL freefont_ttf spice-protocol expat libbfd nettle fontconfig libffi ]
+    ++ lib.optionals xorgSupport [ libxkbcommon libXi libXScrnSaver libXinerama libXcursor libXpresent libXext libXrandr libXdmcp ]
     ++ lib.optionals waylandSupport [ libxkbcommon wayland wayland-protocols ]
     ++ lib.optionals pipewireSupport [ pipewire libsamplerate ]
     ++ lib.optionals pulseSupport [ pulseaudio libsamplerate ];
 
   cmakeFlags = [ "-DOPTIMIZE_FOR_NATIVE=OFF" ]
-    ++ lib.optional (!xorgSupport) "-DENABLE_X11=no"
-    ++ lib.optional (!waylandSupport) "-DENABLE_WAYLAND=no"
-    ++ lib.optional (!pulseSupport) "-DENABLE_PULSEAUDIO=no"
-    ++ lib.optional (!pipewireSupport) "-DENABLE_PIPEWIRE=no";
-
+    ++ lib.optionals (!openGLSupport) [ "-DENABLE_OPENGL=no" ]
+    ++ lib.optionals (!xorgSupport) [ "-DENABLE_X11=no" ]
+    ++ lib.optionals (!waylandSupport) [ "-DENABLE_WAYLAND=no" ]
+    ++ lib.optionals (!pulseSupport) [ "-DENABLE_PULSEAUDIO=no" ]
+    ++ lib.optionals (!pipewireSupport) [ "-DENABLE_PIPEWIRE=no" ];
 
   postUnpack = ''
     echo ${src.rev} > source/VERSION
diff --git a/pkgs/applications/virtualization/virter/default.nix b/pkgs/applications/virtualization/virter/default.nix
index 6d403feffa29a..a36f6b1cc91df 100644
--- a/pkgs/applications/virtualization/virter/default.nix
+++ b/pkgs/applications/virtualization/virter/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "virter";
-  version = "0.26.0";
+  version = "0.27.0";
 
   src = fetchFromGitHub {
     owner = "LINBIT";
     repo = "virter";
     rev = "v${version}";
-    hash = "sha256-Ae7lQveslZ4XqMmnC5mkZOk/8WSLXpmeRjkYUkIaasg=";
+    hash = "sha256-sfO704nZnsSpSokJUwc3ucPBlKIi3cbZUG1dwbKDnFw=";
   };
 
-  vendorHash = "sha256-7aWrY9EMTaJrNd0MTFIMfyUJ67I0LtndqNH0INo/OfA=";
+  vendorHash = "sha256-NmA1rLWSX03zurGZWvXv61TSB9hecEfi7Hx9yi7QL/c=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/default.nix b/pkgs/applications/window-managers/hyprwm/hyprland/default.nix
index a9d1764eaf1f3..e8da21dba912b 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland/default.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland/default.nix
@@ -49,13 +49,13 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "hyprland" + lib.optionalString debug "-debug";
-  version = "0.37.1";
+  version = "0.38.1";
 
   src = fetchFromGitHub {
     owner = "hyprwm";
     repo = finalAttrs.pname;
     rev = "v${finalAttrs.version}";
-    hash = "sha256-W+34KhCnqscRXN/IkvuJMiVx0Fa64RcYn8H4sZjzceI=";
+    hash = "sha256-6y422rx8ScSkjR1dNYGYUxBmFewRYlCz9XZZ+XrVZng=";
   };
 
   patches = [
@@ -73,7 +73,7 @@ stdenv.mkDerivation (finalAttrs: {
       --replace "@HASH@" '${finalAttrs.src.rev}' \
       --replace "@BRANCH@" "" \
       --replace "@MESSAGE@" "" \
-      --replace "@DATE@" "2024-03-16" \
+      --replace "@DATE@" "2024-04-06" \
       --replace "@TAG@" "" \
       --replace "@DIRTY@" ""
   '';
diff --git a/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix b/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
index ddbd6d9fb4db0..53113b3e8bffd 100644
--- a/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
+++ b/pkgs/applications/window-managers/hyprwm/hyprland/plugins.nix
@@ -24,13 +24,13 @@ let
     hy3 = { fetchFromGitHub, cmake, hyprland }:
       mkHyprlandPlugin hyprland {
         pluginName = "hy3";
-        version = "0.36.0-unstable-2024-03-06";
+        version = "0.38.0";
 
         src = fetchFromGitHub {
           owner = "outfoxxed";
           repo = "hy3";
-          rev = "a392bfd13caf865ccf6b9df6917b67cc3a054b82";
-          hash = "sha256-QuapQR9DJI9+vt7xqULYIXx2QCCX1I/YB50c+7ReexU=";
+          rev = "hl0.38.0";
+          hash = "sha256-ZVwX5yM97R6MLk64dQG5KqYOR4L4HxEEV+xzQi+NGrk=";
         };
 
         nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/window-managers/i3/status-rust.nix b/pkgs/applications/window-managers/i3/status-rust.nix
index 74635d1588298..b9ced38b5fe4c 100644
--- a/pkgs/applications/window-managers/i3/status-rust.nix
+++ b/pkgs/applications/window-managers/i3/status-rust.nix
@@ -16,16 +16,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "i3status-rust";
-  version = "0.33.0";
+  version = "0.33.1";
 
   src = fetchFromGitHub {
     owner = "greshake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-DIEWmXqs4yNIJsBBhH7khOY6RJQ9qRoSTIHN/aeBuA4=";
+    hash = "sha256-9lzzjb6tDfgqjAT9mS/cWfC6ucNXoJ8JJwtZ0FZqlDA=";
   };
 
-  cargoHash = "sha256-5946aMSndBkXCY0jjnhPc5x9wFOC1zjJNkFkMFFOuxo=";
+  cargoHash = "sha256-yeijJl94v+yKMVnU/Fjzapab/nExlvoznrx8Ydz/RvM=";
 
   nativeBuildInputs = [ pkg-config makeWrapper ];
 
diff --git a/pkgs/applications/window-managers/miriway/default.nix b/pkgs/applications/window-managers/miriway/default.nix
index 1d97a8a9a068e..cd43a1be4765f 100644
--- a/pkgs/applications/window-managers/miriway/default.nix
+++ b/pkgs/applications/window-managers/miriway/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "miriway";
-  version = "unstable-2024-04-02";
+  version = "unstable-2024-04-04";
 
   src = fetchFromGitHub {
     owner = "Miriway";
     repo = "Miriway";
-    rev = "ff58ed8f9f646ce11b5a43f39a03f7a916d8d695";
-    hash = "sha256-oqBGAAQxYoapCn2uvXFrc8L7P3lCXUCRbWE4q6Mp+oc=";
+    rev = "add1e0cd695985020328b0d76c91f85cc88207ff";
+    hash = "sha256-Vp9ZbN5lY26t3LhkflapsG84XEy0YQE4Kvxia0VlQyg=";
   };
 
   strictDeps = true;
diff --git a/pkgs/applications/window-managers/phosh/default.nix b/pkgs/applications/window-managers/phosh/default.nix
index 3cdc2ee41db8a..853ceb8a083b9 100644
--- a/pkgs/applications/window-managers/phosh/default.nix
+++ b/pkgs/applications/window-managers/phosh/default.nix
@@ -36,12 +36,12 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "phosh";
-  version = "0.37.0";
+  version = "0.37.1";
 
   src = fetchurl {
     # Release tarball which includes subprojects gvc and libcall-ui
     url = with finalAttrs; "https://sources.phosh.mobi/releases/${pname}/${pname}-${version}.tar.xz";
-    hash = "sha256-kmZX2pPOYSh2hiMrRLH6744Q8rHHhE9jmG+SksepUYk=";
+    hash = "sha256-74H4GLFIIs97iVE8IWPxS9hALkBGkcKmrMe6/uxtPuM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix b/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix
index 8e85597cc7d39..64ccff89f6e33 100644
--- a/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix
+++ b/pkgs/applications/window-managers/phosh/phosh-mobile-settings.nix
@@ -5,7 +5,7 @@
 , meson
 , ninja
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , desktop-file-utils
 , feedbackd
 , gtk4
@@ -20,12 +20,12 @@
 
 stdenv.mkDerivation rec {
   pname = "phosh-mobile-settings";
-  version = "0.37.0";
+  version = "0.38.0";
 
   src = fetchurl {
     # This tarball includes the meson wrapped subproject 'gmobile'.
     url = "https://sources.phosh.mobi/releases/${pname}/${pname}-${version}.tar.xz";
-    hash = "sha256-HW3wM/lb8pvr+eDoeqa0iHXiKhBQ8ybBIy0wwHPsrOg=";
+    hash = "sha256-WDqgVsJx5y6IlWII9fRBsAeWn/tB8BaXRtlPvA0wmMk=";
   };
 
   nativeBuildInputs = [
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     ninja
     phosh
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/applications/window-managers/sommelier/default.nix b/pkgs/applications/window-managers/sommelier/default.nix
index 12c2e5da1b984..f0b9407761283 100644
--- a/pkgs/applications/window-managers/sommelier/default.nix
+++ b/pkgs/applications/window-managers/sommelier/default.nix
@@ -1,21 +1,28 @@
-{ lib, stdenv, fetchzip, meson, ninja, pkg-config, wayland-scanner
+{ lib, stdenv, fetchzip
+, meson, ninja, pkg-config, python3, python3Packages, wayland-scanner
 , libxkbcommon, mesa, pixman, xorg, wayland, gtest
 }:
 
 stdenv.mkDerivation {
   pname = "sommelier";
-  version = "104.0";
+  version = "123.0";
 
   src = fetchzip rec {
     url = "https://chromium.googlesource.com/chromiumos/platform2/+archive/${passthru.rev}/vm_tools/sommelier.tar.gz";
-    passthru.rev = "af5434fd9903936a534e1316cbd22361e67949ec";
+    passthru.rev = "1abc91204f35cde76db37853ff3643c5cdb607e6";
     stripRoot = false;
-    sha256 = "LungQqHQorHIKpye2SDBLuMHPt45C1cPYcs9o5Hc3cw=";
+    sha256 = "Wa30MU7iK1Y7pKNeC+FPFXDwDxFLWOZPG4jkm8cnWeg=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config wayland-scanner ];
+  nativeBuildInputs = [
+    meson ninja pkg-config python3 python3Packages.jinja2 wayland-scanner
+  ];
   buildInputs = [ libxkbcommon mesa pixman wayland xorg.libxcb ];
 
+  preConfigure = ''
+    patchShebangs gen-shim.py
+  '';
+
   doCheck = true;
   nativeCheckInputs = [ gtest ];
 
diff --git a/pkgs/build-support/build-fhsenv-bubblewrap/buildFHSEnv.nix b/pkgs/build-support/build-fhsenv-bubblewrap/buildFHSEnv.nix
index 81813473a8dbf..2ab7847926e29 100644
--- a/pkgs/build-support/build-fhsenv-bubblewrap/buildFHSEnv.nix
+++ b/pkgs/build-support/build-fhsenv-bubblewrap/buildFHSEnv.nix
@@ -40,12 +40,11 @@ let
   isMultiBuild = multiArch && stdenv.system == "x86_64-linux";
   isTargetBuild = !isMultiBuild;
 
-  # list of packages (usually programs) which are only be installed for the
-  # host's architecture
+  # list of packages (usually programs) which match the host's architecture
+  # (which includes stuff from multiPkgs)
   targetPaths = targetPkgs pkgs ++ (if multiPkgs == null then [] else multiPkgs pkgs);
 
-  # list of packages which are installed for both x86 and x86_64 on x86_64
-  # systems
+  # list of packages which are for x86 (only multiPkgs, only for x86_64 hosts)
   multiPaths = multiPkgs pkgsi686Linux;
 
   # base packages of the chroot
@@ -76,8 +75,8 @@ let
   ];
 
   ldconfig = writeShellScriptBin "ldconfig" ''
-    # due to a glibc bug, 64-bit ldconfig complains about patchelf'd 32-bit libraries, so we're using 32-bit ldconfig
-    exec ${if stdenv.system == "x86_64-linux" then pkgsi686Linux.glibc.bin else pkgs.glibc.bin}/bin/ldconfig -f /etc/ld.so.conf -C /etc/ld.so.cache "$@"
+    # due to a glibc bug, 64-bit ldconfig complains about patchelf'd 32-bit libraries, so we use 32-bit ldconfig when we have them
+    exec ${if isMultiBuild then pkgsi686Linux.glibc.bin else pkgs.glibc.bin}/bin/ldconfig -f /etc/ld.so.conf -C /etc/ld.so.cache "$@"
   '';
 
   etcProfile = writeText "profile" ''
@@ -251,7 +250,7 @@ let
 
 in runCommandLocal "${name}-fhs" {
   passthru = {
-    inherit args baseTargetPaths targetPaths baseMultiPaths ldconfig;
+    inherit args baseTargetPaths targetPaths baseMultiPaths ldconfig isMultiBuild;
   };
 } ''
   mkdir -p $out
diff --git a/pkgs/build-support/build-fhsenv-bubblewrap/default.nix b/pkgs/build-support/build-fhsenv-bubblewrap/default.nix
index e06fb51dd4b67..c30a4dfb7ea37 100644
--- a/pkgs/build-support/build-fhsenv-bubblewrap/default.nix
+++ b/pkgs/build-support/build-fhsenv-bubblewrap/default.nix
@@ -252,7 +252,7 @@ let
       --symlink /etc/ld.so.cache ${glibc}/etc/ld.so.cache \
       --ro-bind ${glibc}/etc/rpc ${glibc}/etc/rpc \
       --remount-ro ${glibc}/etc \
-  '' + optionalString (stdenv.isx86_64 && stdenv.isLinux) (indentLines ''
+  '' + optionalString fhsenv.isMultiBuild (indentLines ''
       --tmpfs ${pkgsi686Linux.glibc}/etc \
       --symlink /etc/ld.so.conf ${pkgsi686Linux.glibc}/etc/ld.so.conf \
       --symlink /etc/ld.so.cache ${pkgsi686Linux.glibc}/etc/ld.so.cache \
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 23b3ce522ae38..ba2f1c3d516df 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -562,11 +562,6 @@ stdenv.mkDerivation {
       echo "-isystem ${getDev libcxx}/include/c++/v1" >> $out/nix-support/libcxx-cxxflags
       echo "-stdlib=libc++" >> $out/nix-support/libcxx-ldflags
     ''
-    # can remove once LLVM9 and LLVM11 are dropped from nixpkgs
-    + optionalString (libcxx.isLLVM or false && lib.versionOlder (lib.getVersion libcxx) "12" && libcxx ? cxxabi.libName) ''
-      echo "-isystem ${lib.getDev libcxx.cxxabi}/include/c++/v1" >> $out/nix-support/libcxx-cxxflags
-      echo "-l${libcxx.cxxabi.libName}" >> $out/nix-support/libcxx-ldflags
-    ''
 
     ##
     ## Initial CFLAGS
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index 86bd7e312cbd3..1d1989d27fbb2 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -517,7 +517,7 @@ rec {
 
   buildLayeredImage = lib.makeOverridable ({ name, compressor ? "gz", ... }@args:
     let
-      stream = streamLayeredImage args;
+      stream = streamLayeredImage (builtins.removeAttrs args ["compressor"]);
       compress = compressorForImage compressor name;
     in
     runCommand "${baseNameOf name}.tar${compress.ext}"
@@ -1287,7 +1287,7 @@ rec {
   # Wrapper around streamNixShellImage to build an image from the result
   buildNixShellImage = { drv, compressor ? "gz", ... }@args:
     let
-      stream = streamNixShellImage args;
+      stream = streamNixShellImage (builtins.removeAttrs args ["compressor"]);
       compress = compressorForImage compressor drv.name;
     in
     runCommand "${drv.name}-env.tar${compress.ext}"
diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix
index 72c1cbe0d4106..52706ef6b21ff 100644
--- a/pkgs/build-support/docker/examples.nix
+++ b/pkgs/build-support/docker/examples.nix
@@ -509,7 +509,23 @@ rec {
     contents = pkgs.bashInteractive;
   };
 
-  # buildImage without explicit tag
+  # buildLayeredImage without compression
+  bashLayeredUncompressed = pkgs.dockerTools.buildLayeredImage {
+    name = "bash-layered-uncompressed";
+    tag = "latest";
+    compressor = "none";
+    contents = pkgs.bashInteractive;
+  };
+
+  # buildLayeredImage with zstd compression
+  bashLayeredZstdCompressed = pkgs.dockerTools.buildLayeredImage {
+    name = "bash-layered-zstd";
+    tag = "latest";
+    compressor = "zstd";
+    contents = pkgs.bashInteractive;
+  };
+
+  # streamLayeredImage without explicit tag
   bashNoTagStreamLayered = pkgs.dockerTools.streamLayeredImage {
     name = "bash-no-tag-stream-layered";
     contents = pkgs.bashInteractive;
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/basic-dynamic/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/basic-dynamic/default.nix
index eea2c37605998..105303201617e 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/basic-dynamic/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/basic-dynamic/default.nix
@@ -1,10 +1,19 @@
-{ rustPlatform }:
-
+{ lib, rustPlatform }:
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "basic-dynamic";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   cargoLock.lockFileContents = builtins.readFile ./Cargo.lock;
 
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/basic/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/basic/default.nix
index d595b58109ad0..325380977b88a 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/basic/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/basic/default.nix
@@ -1,10 +1,19 @@
-{ rustPlatform }:
-
+{ lib, rustPlatform }:
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "basic";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-branch/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-branch/default.nix
index f274d86c52b84..3111c747d3720 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-branch/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-branch/default.nix
@@ -1,10 +1,19 @@
-{ rustPlatform }:
-
+{ lib, rustPlatform }:
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "git-dependency-branch";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev-non-workspace-nested-crate/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev-non-workspace-nested-crate/default.nix
index dcf1e601c31c1..63e3bea3ca1fe 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev-non-workspace-nested-crate/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev-non-workspace-nested-crate/default.nix
@@ -1,10 +1,19 @@
 { rustPlatform, pkg-config, openssl, lib, darwin, stdenv }:
-
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "git-dependency-rev-non-workspace-nested-crate";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev/default.nix
index 40487d6829a25..d3cb0fa7df818 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-rev/default.nix
@@ -1,10 +1,19 @@
-{ rustPlatform }:
-
+{ lib, rustPlatform }:
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "git-dependency-rev";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-tag/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-tag/default.nix
index 2a2f860ac8a16..dfaa1e3028daf 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-tag/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency-tag/default.nix
@@ -1,10 +1,19 @@
-{ rustPlatform }:
-
+{ lib, rustPlatform }:
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "git-dependency-tag";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency/default.nix
index 944de9b45cb52..98aa35bf8e1d7 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/git-dependency/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/git-dependency/default.nix
@@ -1,10 +1,19 @@
-{ rustPlatform }:
-
+{ lib, rustPlatform }:
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "git-dependency";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
diff --git a/pkgs/build-support/rust/test/import-cargo-lock/v1/default.nix b/pkgs/build-support/rust/test/import-cargo-lock/v1/default.nix
index d13d468ae7f94..b53b7113590c5 100644
--- a/pkgs/build-support/rust/test/import-cargo-lock/v1/default.nix
+++ b/pkgs/build-support/rust/test/import-cargo-lock/v1/default.nix
@@ -1,10 +1,19 @@
-{ rustPlatform }:
-
+{ lib, rustPlatform }:
+let
+  fs = lib.fileset;
+in
 rustPlatform.buildRustPackage {
   pname = "v1";
   version = "0.1.0";
 
-  src = ./.;
+  src = fs.toSource {
+    root = ./.;
+    fileset = fs.unions [
+      ./Cargo.toml
+      ./Cargo.lock
+      ./src
+    ];
+  };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
diff --git a/pkgs/build-support/trivial-builders/test/default.nix b/pkgs/build-support/trivial-builders/test/default.nix
index f41372d922bb1..e1ed0be72bf35 100644
--- a/pkgs/build-support/trivial-builders/test/default.nix
+++ b/pkgs/build-support/trivial-builders/test/default.nix
@@ -20,11 +20,7 @@ recurseIntoAttrs {
   concat = callPackage ./concat-test.nix {};
   linkFarm = callPackage ./link-farm.nix {};
   overriding = callPackage ../test-overriding.nix {};
-  # VM test not supported beyond linux yet
-  references =
-    if stdenv.hostPlatform.isLinux
-    then references
-    else {};
+  inherit references;
   writeCBin = callPackage ./writeCBin.nix {};
   writeClosure-union = callPackage ./writeClosure-union.nix {
     inherit (references) samples;
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index 1184d43ccb2cc..56375851783fb 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -72,8 +72,8 @@ rec {
 
     for o in $(cat /proc/cmdline); do
       case $o in
-        mountDisk=1)
-          mountDisk=1
+        mountDisk=*)
+          mountDisk=''${mountDisk#mountDisk=}
           ;;
         command=*)
           set -- $(IFS==; echo $o)
@@ -103,6 +103,8 @@ rec {
 
     if test -z "$mountDisk"; then
       mount -t tmpfs none /fs
+    elif [[ -e "$mountDisk" ]]; then
+      mount "$mountDisk" /fs
     else
       mount /dev/${hd} /fs
     fi
@@ -388,7 +390,7 @@ rec {
      filesystem containing a non-NixOS Linux distribution. */
 
   runInLinuxImage = drv: runInLinuxVM (lib.overrideDerivation drv (attrs: {
-    mountDisk = true;
+    mountDisk = attrs.mountDisk or true;
 
     /* Mount `image' as the root FS, but use a temporary copy-on-write
        image since we don't want to (and can't) write to `image'. */
@@ -576,9 +578,9 @@ rec {
 
   fillDiskWithDebs =
     { size ? 4096, debs, name, fullName, postInstall ? null, createRootFS ? defaultCreateRootFS
-    , QEMU_OPTS ? "", memSize ? 512 }:
+    , QEMU_OPTS ? "", memSize ? 512, ... }@args:
 
-    runInLinuxVM (stdenv.mkDerivation {
+    runInLinuxVM (stdenv.mkDerivation ({
       inherit name postInstall QEMU_OPTS memSize;
 
       debs = (lib.intersperse "|" debs);
@@ -647,7 +649,6 @@ rec {
 
         echo "running post-install script..."
         eval "$postInstall"
-        ln -sf dash /mnt/bin/sh
 
         rm /mnt/.debug
 
@@ -658,7 +659,7 @@ rec {
       '';
 
       passthru = { inherit fullName; };
-    });
+    } // args));
 
 
   /* Generate a Nix expression containing fetchurl calls for the
@@ -727,9 +728,6 @@ rec {
         esac
       done
 
-      # Work around this bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=452279
-      sed -i ./Packages -e s/x86_64-linux-gnu/x86-64-linux-gnu/g
-
       perl -w ${deb/deb-closure.pl} \
         ./Packages ${urlPrefix} ${toString packages} > $out
     '';
@@ -744,7 +742,7 @@ rec {
     , packagesList ? "", packagesLists ? [packagesList]
     , packages, extraPackages ? [], postInstall ? ""
     , extraDebs ? [], createRootFS ? defaultCreateRootFS
-    , QEMU_OPTS ? "", memSize ? 512 }:
+    , QEMU_OPTS ? "", memSize ? 512, ... }@args:
 
     let
       expr = debClosureGenerator {
@@ -752,10 +750,10 @@ rec {
         packages = packages ++ extraPackages;
       };
     in
-      (fillDiskWithDebs {
+      (fillDiskWithDebs ({
         inherit name fullName size postInstall createRootFS QEMU_OPTS memSize;
         debs = import expr {inherit fetchurl;} ++ extraDebs;
-      }) // {inherit expr;};
+      } // args)) // {inherit expr;};
 
 
   /* The set of supported RPM-based distributions. */
diff --git a/pkgs/by-name/_0/_0xpropo/package.nix b/pkgs/by-name/_0/_0xpropo/package.nix
new file mode 100644
index 0000000000000..74bf73cf935fb
--- /dev/null
+++ b/pkgs/by-name/_0/_0xpropo/package.nix
@@ -0,0 +1,33 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchzip,
+}:
+stdenvNoCC.mkDerivation rec {
+  pname = "0xpropo";
+  version = "1.000";
+
+  src = let
+    underscoreVersion = builtins.replaceStrings ["."] ["_"] version;
+  in
+    fetchzip {
+      url = "https://github.com/0xType/0xPropo/releases/download/${version}/0xPropo_${underscoreVersion}.zip";
+      hash = "sha256-yIhabwHjBipkcmsSRaokBXCbawQkUNOU8v+fbn2iiY4=";
+    };
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm644 -t $out/share/fonts/opentype/ *.otf
+    install -Dm644 -t $out/share/fonts/truetype/ *.ttf
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Proportional version of the 0xProto font";
+    homepage = "https://github.com/0xType/0xPropo";
+    changelog = "https://github.com/0xType/0xPropo/releases/tag/${version}";
+    license = licenses.ofl;
+    maintainers = with maintainers; [vinnymeller];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/by-name/_6/_64gram/package.nix b/pkgs/by-name/_6/_64gram/package.nix
index 58f6816bc0272..959a2ad5d17e1 100644
--- a/pkgs/by-name/_6/_64gram/package.nix
+++ b/pkgs/by-name/_6/_64gram/package.nix
@@ -2,11 +2,12 @@
 , stdenv
 , fetchFromGitHub
 , telegram-desktop
+, nix-update-script
 }:
 
 telegram-desktop.overrideAttrs (old: rec {
   pname = "64gram";
-  version = "1.1.16";
+  version = "1.1.17";
 
   src = fetchFromGitHub {
     owner = "TDesktop-x64";
@@ -14,9 +15,11 @@ telegram-desktop.overrideAttrs (old: rec {
     rev = "v${version}";
 
     fetchSubmodules = true;
-    hash = "sha256-2IuNJleHtlkELcTHDwRT4pcDcDXSqM5YlLPGYiGT2TE=";
+    hash = "sha256-QWHC1NAAKpH9zU7cplCW2rNYckY87bpU7MEZ1ytSi58=";
   };
 
+  passthru.updateScript = nix-update-script {};
+
   meta = with lib; {
     description = "An unofficial Telegram Desktop providing Windows 64bit build and extra features";
     license = licenses.gpl3Only;
diff --git a/pkgs/by-name/aa/aaaaxy/package.nix b/pkgs/by-name/aa/aaaaxy/package.nix
index 3145758f50d68..386b8d62388a8 100644
--- a/pkgs/by-name/aa/aaaaxy/package.nix
+++ b/pkgs/by-name/aa/aaaaxy/package.nix
@@ -20,17 +20,17 @@
 
 buildGoModule rec {
   pname = "aaaaxy";
-  version = "1.5.42";
+  version = "1.5.54";
 
   src = fetchFromGitHub {
     owner = "divVerent";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-RfjEr0oOtLcrHKQj1dYbykRbHoGoi0o7D3hjVG3siIQ=";
+    hash = "sha256-FBla+KvUoUdCG0nM4falMJBq8NI75zqo/YSZy0bPFrE=";
     fetchSubmodules = true;
   };
 
-  vendorHash = "sha256-q/nDfh+A2eJDAaSWN4Xsgxp76AKsYIX7PNn/psBPmg0=";
+  vendorHash = "sha256-rE1YXDpiGnAUdmAaOHehyM38SPBqNvSRHhtXIUwRYVs=";
 
   buildInputs = [
     alsa-lib
diff --git a/pkgs/by-name/am/amphetype/package.nix b/pkgs/by-name/am/amphetype/package.nix
index 1db7bb9a9e66f..15363c2a0e377 100644
--- a/pkgs/by-name/am/amphetype/package.nix
+++ b/pkgs/by-name/am/amphetype/package.nix
@@ -15,15 +15,26 @@ in python3Packages.buildPythonApplication {
     hash = "sha256-pve2f+XMfFokMCtW3KdeOJ9Ey330Gwv/dk1+WBtrBEQ=";
   };
 
+  nativeBuildInputs = [ copyDesktopItems qt5.wrapQtAppsHook ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qtwayland
+  ];
+
   propagatedBuildInputs = with python3Packages; [
     editdistance
     pyqt5
     translitcodec
   ];
 
-  doCheck = false;
+  dontWrapQtApps = true;
 
-  nativeBuildInputs = [ copyDesktopItems qt5.wrapQtAppsHook ];
+  preFixup = ''
+    makeWrapperArgs+=("''${qtWrapperArgs[@]}")
+  '';
+
+  doCheck = false;
 
   desktopItems = [
     (makeDesktopItem {
diff --git a/pkgs/development/tools/rust/cargo-lambda/Cargo.lock b/pkgs/by-name/an/anchor/Cargo.lock
index 163cc12df3afb..6d574e5d5d150 100644
--- a/pkgs/development/tools/rust/cargo-lambda/Cargo.lock
+++ b/pkgs/by-name/an/anchor/Cargo.lock
@@ -3,6 +3,16 @@
 version = 3
 
 [[package]]
+name = "Inflector"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
+dependencies = [
+ "lazy_static",
+ "regex",
+]
+
+[[package]]
 name = "addr2line"
 version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -18,645 +28,632 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
+name = "aead"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
 name = "aes"
-version = "0.8.3"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
 dependencies = [
  "cfg-if",
  "cipher",
  "cpufeatures",
+ "opaque-debug",
 ]
 
 [[package]]
-name = "aho-corasick"
-version = "1.1.2"
+name = "aes-gcm-siv"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc"
 dependencies = [
- "memchr",
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "polyval",
+ "subtle",
+ "zeroize",
 ]
 
 [[package]]
-name = "android-tzdata"
-version = "0.1.1"
+name = "ahash"
+version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
+dependencies = [
+ "getrandom 0.2.10",
+ "once_cell",
+ "version_check",
+]
 
 [[package]]
-name = "android_system_properties"
-version = "0.1.5"
+name = "ahash"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
 dependencies = [
- "libc",
+ "cfg-if",
+ "getrandom 0.2.10",
+ "once_cell",
+ "version_check",
 ]
 
 [[package]]
-name = "anstream"
-version = "0.6.4"
+name = "aho-corasick"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
 dependencies = [
- "anstyle",
- "anstyle-parse",
- "anstyle-query",
- "anstyle-wincon",
- "colorchoice",
- "utf8parse",
+ "memchr",
 ]
 
 [[package]]
-name = "anstyle"
-version = "1.0.4"
+name = "alloc-no-stdlib"
+version = "2.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
 
 [[package]]
-name = "anstyle-parse"
+name = "alloc-stdlib"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
 dependencies = [
- "utf8parse",
+ "alloc-no-stdlib",
 ]
 
 [[package]]
-name = "anstyle-query"
-version = "1.0.0"
+name = "alloc-traits"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+checksum = "6b2d54853319fd101b8dd81de382bcbf3e03410a64d8928bbee85a3e7dcde483"
+
+[[package]]
+name = "anchor-attribute-access-control"
+version = "0.29.0"
 dependencies = [
- "windows-sys 0.48.0",
+ "anchor-syn",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "anstyle-wincon"
-version = "3.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
+name = "anchor-attribute-account"
+version = "0.29.0"
 dependencies = [
- "anstyle",
- "windows-sys 0.48.0",
+ "anchor-syn",
+ "bs58 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "anyhow"
-version = "1.0.75"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+name = "anchor-attribute-constant"
+version = "0.29.0"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
 
 [[package]]
-name = "anymap2"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"
+name = "anchor-attribute-error"
+version = "0.29.0"
+dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
 
 [[package]]
-name = "ascii-canvas"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6"
+name = "anchor-attribute-event"
+version = "0.29.0"
 dependencies = [
- "term",
+ "anchor-syn",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "async-priority-channel"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c21678992e1b21bebfe2bc53ab5f5f68c106eddab31b24e0bb06e9b715a86640"
+name = "anchor-attribute-program"
+version = "0.29.0"
 dependencies = [
- "event-listener",
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "async-recursion"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
+name = "anchor-cli"
+version = "0.29.0"
+dependencies = [
+ "anchor-client",
+ "anchor-lang",
+ "anchor-syn",
+ "anyhow",
+ "base64 0.13.1",
+ "bincode",
+ "cargo_toml",
+ "chrono",
+ "clap 4.4.6",
+ "dirs",
+ "flate2",
+ "heck 0.4.1",
+ "pathdiff",
+ "portpicker",
+ "regex",
+ "reqwest",
+ "semver",
+ "serde",
+ "serde_json",
+ "shellexpand",
+ "solana-cli-config",
+ "solana-client",
+ "solana-faucet",
+ "solana-program",
+ "solana-sdk",
+ "solang-parser",
+ "syn 1.0.109",
+ "tar",
+ "toml 0.7.8",
+ "walkdir",
+]
+
+[[package]]
+name = "anchor-client"
+version = "0.29.0"
+dependencies = [
+ "anchor-lang",
+ "anyhow",
+ "futures",
+ "regex",
+ "serde",
+ "solana-account-decoder",
+ "solana-client",
+ "solana-sdk",
+ "thiserror",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "anchor-derive-accounts"
+version = "0.29.0"
 dependencies = [
+ "anchor-syn",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "anchor-derive-serde"
+version = "0.29.0"
+dependencies = [
+ "anchor-syn",
+ "borsh-derive-internal 0.10.3",
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "async-trait"
-version = "0.1.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+name = "anchor-derive-space"
+version = "0.29.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "atomic"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994"
+name = "anchor-lang"
+version = "0.29.0"
 dependencies = [
+ "anchor-attribute-access-control",
+ "anchor-attribute-account",
+ "anchor-attribute-constant",
+ "anchor-attribute-error",
+ "anchor-attribute-event",
+ "anchor-attribute-program",
+ "anchor-derive-accounts",
+ "anchor-derive-serde",
+ "anchor-derive-space",
+ "anchor-syn",
+ "arrayref",
+ "base64 0.13.1",
+ "bincode",
+ "borsh 0.10.3",
  "bytemuck",
+ "getrandom 0.2.10",
+ "solana-program",
+ "thiserror",
 ]
 
 [[package]]
-name = "atomic-take"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8ab6b55fe97976e46f91ddbed8d147d966475dc29b2032757ba47e02376fbc3"
+name = "anchor-spl"
+version = "0.29.0"
+dependencies = [
+ "anchor-lang",
+ "borsh 0.10.3",
+ "mpl-token-metadata",
+ "serum_dex",
+ "solana-program",
+ "spl-associated-token-account",
+ "spl-memo",
+ "spl-token 4.0.0",
+ "spl-token-2022",
+]
 
 [[package]]
-name = "autocfg"
-version = "1.1.0"
+name = "anchor-syn"
+version = "0.29.0"
+dependencies = [
+ "anyhow",
+ "bs58 0.5.0",
+ "heck 0.3.3",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_json",
+ "sha2 0.10.8",
+ "syn 1.0.109",
+ "thiserror",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
 
 [[package]]
-name = "aws-config"
-version = "0.57.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7489a72550db3712fe3a0a92068f832d6270ff82f518b84a800af131f99570d7"
-dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-runtime",
- "aws-sdk-sso",
- "aws-sdk-ssooidc",
- "aws-sdk-sts",
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-json",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-types",
- "bytes",
- "fastrand",
- "hex",
- "http",
- "hyper",
- "ring",
- "time",
- "tokio",
- "tracing",
- "zeroize",
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
 ]
 
 [[package]]
-name = "aws-credential-types"
-version = "0.57.1"
+name = "ansi_term"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80009846d61a0a4f9070d789cf0e64db284cba6984fae3871050d044e6569cd2"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
 dependencies = [
- "aws-smithy-async",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "zeroize",
+ "winapi",
 ]
 
 [[package]]
-name = "aws-http"
-version = "0.57.1"
+name = "anstream"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e65730b741a5f6422fd338bf6f76b7956b090affeaa045e78fca8c4186e0fd5"
+checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"
 dependencies = [
- "aws-smithy-http",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-types",
- "bytes",
- "http",
- "http-body",
- "pin-project-lite",
- "tracing",
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
 ]
 
 [[package]]
-name = "aws-runtime"
-version = "0.57.1"
+name = "anstyle"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2414b96071ae840b97c0cc1d44b248d5607d648593cdf474f3fb5465572898"
+checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140"
 dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-sigv4",
- "aws-smithy-async",
- "aws-smithy-eventstream",
- "aws-smithy-http",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-types",
- "fastrand",
- "http",
- "percent-encoding",
- "tracing",
- "uuid",
+ "utf8parse",
 ]
 
 [[package]]
-name = "aws-sdk-iam"
-version = "0.35.0"
+name = "anstyle-query"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a299158323ebc6029b250e7ffd567810c1bd9777dbd5f7a65969a67e03786722"
+checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
 dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-runtime",
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-json",
- "aws-smithy-query",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-smithy-xml",
- "aws-types",
- "http",
- "regex",
- "tracing",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "aws-sdk-lambda"
-version = "0.35.0"
+name = "anstyle-wincon"
+version = "3.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6acf16c06e9a488fe6788b69ffc836327f031a5fabf109b5ac3960080ffda0fe"
+checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
 dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-runtime",
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-json",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-types",
- "bytes",
- "http",
- "regex",
- "tracing",
+ "anstyle",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "aws-sdk-s3"
-version = "0.35.0"
+name = "anyhow"
+version = "1.0.75"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84022763485483ea17d417f9832d5da198bc36829b59f086c0d35ecd2ce59991"
+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+
+[[package]]
+name = "ark-bn254"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f"
 dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-runtime",
- "aws-sigv4",
- "aws-smithy-async",
- "aws-smithy-checksums",
- "aws-smithy-eventstream",
- "aws-smithy-http",
- "aws-smithy-json",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-smithy-xml",
- "aws-types",
- "bytes",
- "http",
- "http-body",
- "once_cell",
- "percent-encoding",
- "regex",
- "tracing",
- "url",
+ "ark-ec",
+ "ark-ff",
+ "ark-std",
 ]
 
 [[package]]
-name = "aws-sdk-sso"
-version = "0.35.0"
+name = "ark-ec"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "341a5b00567d0f350025501c8fd36e1ca8055744a2d17e351f0b254f84eba48a"
+checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba"
 dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-runtime",
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-json",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-types",
- "bytes",
- "http",
- "regex",
- "tracing",
+ "ark-ff",
+ "ark-poly",
+ "ark-serialize",
+ "ark-std",
+ "derivative",
+ "hashbrown 0.13.2",
+ "itertools 0.10.5",
+ "num-traits",
+ "zeroize",
 ]
 
 [[package]]
-name = "aws-sdk-ssooidc"
-version = "0.35.0"
+name = "ark-ff"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbd4bffbd26f66269933bcd26123f2d6860769c0f769b6d3fc10eda025d287d8"
+checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba"
 dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-runtime",
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-json",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-types",
- "bytes",
- "http",
- "regex",
- "tracing",
+ "ark-ff-asm",
+ "ark-ff-macros",
+ "ark-serialize",
+ "ark-std",
+ "derivative",
+ "digest 0.10.7",
+ "itertools 0.10.5",
+ "num-bigint 0.4.4",
+ "num-traits",
+ "paste",
+ "rustc_version",
+ "zeroize",
 ]
 
 [[package]]
-name = "aws-sdk-sts"
-version = "0.35.0"
+name = "ark-ff-asm"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b1a8ae5c7098502a3e6d4130dbee1e1d3fcb8dc5d65cecab39e01d595f90f6"
+checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348"
 dependencies = [
- "aws-credential-types",
- "aws-http",
- "aws-runtime",
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-json",
- "aws-smithy-query",
- "aws-smithy-runtime",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "aws-smithy-xml",
- "aws-types",
- "http",
- "regex",
- "tracing",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "aws-sigv4"
-version = "0.57.1"
+name = "ark-ff-macros"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3347c738e0a8449020877d319cda56da74d6e8aba9fff210720fac66cae3c7f4"
+checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565"
 dependencies = [
- "aws-credential-types",
- "aws-smithy-eventstream",
- "aws-smithy-http",
- "aws-smithy-runtime-api",
- "bytes",
- "form_urlencoded",
- "hex",
- "hmac",
- "http",
- "num-bigint",
- "once_cell",
- "p256",
- "percent-encoding",
- "regex",
- "ring",
- "sha2",
- "time",
- "tracing",
- "zeroize",
+ "num-bigint 0.4.4",
+ "num-traits",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "aws-smithy-async"
-version = "0.57.1"
+name = "ark-poly"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4b65a284265d3eec6cc9f1daef2d0cc3b78684b712cb6c7f1d0f665456b7604"
+checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf"
 dependencies = [
- "futures-util",
- "pin-project-lite",
- "tokio",
+ "ark-ff",
+ "ark-serialize",
+ "ark-std",
+ "derivative",
+ "hashbrown 0.13.2",
 ]
 
 [[package]]
-name = "aws-smithy-checksums"
-version = "0.57.1"
+name = "ark-serialize"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d40f1d5a222ba11ac7d6b20f3668ae282970e50615fa5ee1dd8ac8180c0c1803"
+checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5"
 dependencies = [
- "aws-smithy-http",
- "aws-smithy-types",
- "bytes",
- "crc32c",
- "crc32fast",
- "hex",
- "http",
- "http-body",
- "md-5",
- "pin-project-lite",
- "sha1",
- "sha2",
- "tracing",
+ "ark-serialize-derive",
+ "ark-std",
+ "digest 0.10.7",
+ "num-bigint 0.4.4",
 ]
 
 [[package]]
-name = "aws-smithy-eventstream"
-version = "0.57.1"
+name = "ark-serialize-derive"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b16e7ecebc2b083a1b138868a46a343204a6097f343c4830a8b22b3a0d30013e"
+checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea"
 dependencies = [
- "aws-smithy-types",
- "bytes",
- "crc32fast",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "aws-smithy-http"
-version = "0.57.1"
+name = "ark-std"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "715aeb61fb743848d5d398ce6fb1259f5eba5e13dceec5d5064cada1a181d38d"
+checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185"
 dependencies = [
- "aws-smithy-eventstream",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "bytes",
- "bytes-utils",
- "futures-core",
- "http",
- "http-body",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "pin-utils",
- "tracing",
+ "num-traits",
+ "rand 0.8.5",
 ]
 
 [[package]]
-name = "aws-smithy-json"
-version = "0.57.1"
+name = "arrayref"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+
+[[package]]
+name = "ascii"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e"
+
+[[package]]
+name = "ascii-canvas"
+version = "3.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de21d368dcd5cab17033406ea6e7351b091164b208381de837510bd7558c0f30"
+checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6"
 dependencies = [
- "aws-smithy-types",
+ "term",
 ]
 
 [[package]]
-name = "aws-smithy-query"
-version = "0.57.1"
+name = "asn1-rs"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e5ace389c7e4def130bff7275647481c8d49b867909ca61d5dc9a809b3632f3"
+checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0"
 dependencies = [
- "aws-smithy-types",
- "urlencoding",
+ "asn1-rs-derive",
+ "asn1-rs-impl",
+ "displaydoc",
+ "nom",
+ "num-traits",
+ "rusticata-macros",
+ "thiserror",
+ "time",
 ]
 
 [[package]]
-name = "aws-smithy-runtime"
-version = "0.57.1"
+name = "asn1-rs-derive"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb4395310662d10f1847324af5fe43e621922cba03b1aa6d26c21096e18a4e79"
+checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
 dependencies = [
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "bytes",
- "fastrand",
- "http",
- "http-body",
- "hyper",
- "hyper-rustls",
- "once_cell",
- "pin-project-lite",
- "pin-utils",
- "rustls",
- "tokio",
- "tracing",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "synstructure",
 ]
 
 [[package]]
-name = "aws-smithy-runtime-api"
-version = "0.57.1"
+name = "asn1-rs-impl"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30e27594c06f5b36e97d18ef26ed693f1d4c7167b9bbb544b3a9bb653f9f7035"
+checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
 dependencies = [
- "aws-smithy-async",
- "aws-smithy-types",
- "bytes",
- "http",
- "pin-project-lite",
- "tokio",
- "tracing",
- "zeroize",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "aws-smithy-types"
-version = "0.57.1"
+name = "assert_matches"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d36f1723ed61e82094498e7283510fe21484b73c215c33874c81a84411b5bdc"
+checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
+
+[[package]]
+name = "async-channel"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
 dependencies = [
- "base64-simd",
- "bytes",
- "bytes-utils",
+ "concurrent-queue",
+ "event-listener",
  "futures-core",
- "http",
- "http-body",
- "itoa",
- "num-integer",
- "pin-project-lite",
- "pin-utils",
- "ryu",
- "serde",
- "time",
- "tokio",
- "tokio-util",
 ]
 
 [[package]]
-name = "aws-smithy-xml"
-version = "0.57.1"
+name = "async-compression"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68225c8d3e3e6c565a3cf764aa82440837ef15c33d1dd7205e15715444e4b4ad"
+checksum = "bb42b2197bf15ccb092b62c74515dbd8b86d0effd934795f6687c93b6e679a2c"
 dependencies = [
- "xmlparser",
+ "brotli",
+ "flate2",
+ "futures-core",
+ "memchr",
+ "pin-project-lite",
+ "tokio",
 ]
 
 [[package]]
-name = "aws-types"
-version = "0.57.1"
+name = "async-mutex"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acdc27aac60f715bab25f5d758ba5651b80aae791c48e9871ffe298683f00a2b"
+checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e"
 dependencies = [
- "aws-credential-types",
- "aws-smithy-async",
- "aws-smithy-runtime-api",
- "aws-smithy-types",
- "http",
- "rustc_version",
- "tracing",
+ "event-listener",
 ]
 
 [[package]]
-name = "aws_lambda_events"
-version = "0.6.3"
+name = "async-trait"
+version = "0.1.73"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55d7e5deac5e49330042b4e174dafe84ebf71685bfcd94f285bac7aa31e0aeb1"
+checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
 dependencies = [
- "base64 0.13.1",
- "bytes",
- "chrono",
- "http",
- "http-body",
- "http-serde",
- "query_map",
- "serde",
- "serde_derive",
- "serde_json",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "axum"
-version = "0.5.17"
+name = "atty"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acee9fd5073ab6b045a275b3e709c163dd36c90685219cb21804a147b58dba43"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
 dependencies = [
- "async-trait",
- "axum-core",
- "bitflags 1.3.2",
- "bytes",
- "futures-util",
- "http",
- "http-body",
- "hyper",
- "itoa",
- "matchit",
- "memchr",
- "mime",
- "percent-encoding",
- "pin-project-lite",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper",
- "tokio",
- "tower",
- "tower-http",
- "tower-layer",
- "tower-service",
+ "hermit-abi 0.1.19",
+ "libc",
+ "winapi",
 ]
 
 [[package]]
-name = "axum-core"
-version = "0.2.9"
+name = "autocfg"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37e5939e02c56fecd5c017c37df4238c0a839fa76b7f97acdd7efb804fd181cc"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "avm"
+version = "0.29.0"
 dependencies = [
- "async-trait",
- "bytes",
- "futures-util",
- "http",
- "http-body",
- "mime",
- "tower-layer",
- "tower-service",
+ "anyhow",
+ "cargo_toml",
+ "cfg-if",
+ "clap 4.4.6",
+ "dirs",
+ "once_cell",
+ "reqwest",
+ "semver",
+ "serde",
+ "tempfile",
 ]
 
 [[package]]
@@ -670,30 +667,15 @@ dependencies = [
  "cfg-if",
  "libc",
  "miniz_oxide",
- "object 0.32.1",
+ "object",
  "rustc-demangle",
 ]
 
 [[package]]
-name = "backtrace-ext"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50"
-dependencies = [
- "backtrace",
-]
-
-[[package]]
-name = "base16ct"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
-
-[[package]]
-name = "base16ct"
-version = "0.2.0"
+name = "base64"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
 
 [[package]]
 name = "base64"
@@ -703,19 +685,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 
 [[package]]
 name = "base64"
-version = "0.21.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
-
-[[package]]
-name = "base64-simd"
-version = "0.8.0"
+version = "0.21.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195"
-dependencies = [
- "outref",
- "vsimd",
-]
+checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
 
 [[package]]
 name = "base64ct"
@@ -724,10 +696,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
 
 [[package]]
-name = "beef"
-version = "0.5.2"
+name = "bincode"
+version = "1.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "bit-set"
@@ -752,446 +727,253 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
-
-[[package]]
-name = "block-buffer"
-version = "0.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "bstr"
-version = "1.7.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019"
+checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
 dependencies = [
- "memchr",
- "regex-automata 0.4.3",
  "serde",
 ]
 
 [[package]]
-name = "btoi"
-version = "0.4.3"
+name = "bitmaps"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad"
+checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
 dependencies = [
- "num-traits",
+ "typenum",
 ]
 
 [[package]]
-name = "build-data"
-version = "0.1.5"
+name = "blake3"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aed3884e2cab7c973c8fd2d150314b6a932df7fdc830edcaf1e8e7c4ae9db3c0"
+checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87"
 dependencies = [
- "chrono",
- "safe-lock",
- "safe-regex",
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
+ "digest 0.10.7",
 ]
 
 [[package]]
-name = "bumpalo"
-version = "3.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
-
-[[package]]
-name = "bytemuck"
-version = "1.14.0"
+name = "block-buffer"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
 dependencies = [
- "bytemuck_derive",
+ "block-padding",
+ "generic-array",
 ]
 
 [[package]]
-name = "bytemuck_derive"
-version = "1.5.0"
+name = "block-buffer"
+version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
 dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
+ "generic-array",
 ]
 
 [[package]]
-name = "byteorder"
-version = "1.5.0"
+name = "block-padding"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
 
 [[package]]
-name = "bytes"
-version = "1.5.0"
+name = "borsh"
+version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa"
 dependencies = [
- "serde",
+ "borsh-derive 0.9.3",
+ "hashbrown 0.11.2",
 ]
 
 [[package]]
-name = "bytes-utils"
-version = "0.1.3"
+name = "borsh"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9"
+checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b"
 dependencies = [
- "bytes",
- "either",
+ "borsh-derive 0.10.3",
+ "hashbrown 0.13.2",
 ]
 
 [[package]]
-name = "bzip2"
-version = "0.4.4"
+name = "borsh-derive"
+version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
+checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775"
 dependencies = [
- "bzip2-sys",
- "libc",
+ "borsh-derive-internal 0.9.3",
+ "borsh-schema-derive-internal 0.9.3",
+ "proc-macro-crate 0.1.5",
+ "proc-macro2",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "bzip2-sys"
-version = "0.1.11+1.0.8"
+name = "borsh-derive"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7"
 dependencies = [
- "cc",
- "libc",
- "pkg-config",
+ "borsh-derive-internal 0.10.3",
+ "borsh-schema-derive-internal 0.10.3",
+ "proc-macro-crate 0.1.5",
+ "proc-macro2",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "camino"
-version = "1.1.6"
+name = "borsh-derive-internal"
+version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
+checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065"
 dependencies = [
- "serde",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "cargo-lambda"
-version = "1.0.1"
+name = "borsh-derive-internal"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb"
 dependencies = [
- "build-data",
- "cargo-lambda-build",
- "cargo-lambda-deploy",
- "cargo-lambda-invoke",
- "cargo-lambda-new",
- "cargo-lambda-watch",
- "cargo-test-macro",
- "cargo-test-support",
- "clap",
- "clap-cargo",
- "dunce",
- "miette 5.10.0",
- "snapbox",
- "strum",
- "strum_macros",
- "tokio",
- "tracing",
- "tracing-subscriber",
- "uuid",
- "zip",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "cargo-lambda-build"
-version = "1.0.1"
+name = "borsh-schema-derive-internal"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0"
 dependencies = [
- "cargo-lambda-interactive",
- "cargo-lambda-metadata",
- "cargo-options",
- "cargo-zigbuild",
- "clap",
- "home",
- "miette 5.10.0",
- "object 0.28.4",
- "rustc_version",
- "serde",
- "serde_json",
- "sha2",
- "strum",
- "strum_macros",
- "thiserror",
- "tokio",
- "toml 0.7.8",
- "tracing",
- "walkdir",
- "which",
- "zip",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "cargo-lambda-deploy"
-version = "1.0.1"
+name = "borsh-schema-derive-internal"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd"
 dependencies = [
- "aws-sdk-iam",
- "aws-sdk-s3",
- "aws-sdk-sts",
- "aws-smithy-types",
- "cargo-lambda-build",
- "cargo-lambda-interactive",
- "cargo-lambda-metadata",
- "cargo-lambda-remote",
- "clap",
- "miette 5.10.0",
- "serde",
- "serde_json",
- "strum",
- "strum_macros",
- "tokio",
- "tracing",
- "uuid",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "cargo-lambda-interactive"
-version = "1.0.1"
+name = "brotli"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f"
 dependencies = [
- "indicatif",
- "inquire",
- "is-terminal",
- "miette 5.10.0",
- "tokio",
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
 ]
 
 [[package]]
-name = "cargo-lambda-invoke"
-version = "1.0.1"
+name = "brotli-decompressor"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448"
 dependencies = [
- "base64 0.21.5",
- "cargo-lambda-remote",
- "clap",
- "dirs 4.0.0",
- "miette 5.10.0",
- "reqwest",
- "serde",
- "serde_json",
- "strum",
- "strum_macros",
- "thiserror",
- "tokio",
- "tracing",
+ "alloc-no-stdlib",
+ "alloc-stdlib",
 ]
 
 [[package]]
-name = "cargo-lambda-metadata"
-version = "1.0.1"
-dependencies = [
- "aws-sdk-lambda",
- "cargo_metadata 0.15.4",
- "clap",
- "env-file-reader",
- "miette 4.7.1",
- "remove_dir_all",
- "serde",
- "serde_json",
- "strum",
- "strum_macros",
- "thiserror",
- "toml 0.8.8",
- "tracing",
- "urlencoding",
-]
+name = "bs58"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
 
 [[package]]
-name = "cargo-lambda-new"
-version = "1.0.1"
+name = "bs58"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896"
 dependencies = [
- "cargo-lambda-interactive",
- "cargo-lambda-metadata",
- "clap",
- "dunce",
- "liquid",
- "miette 5.10.0",
- "regex",
- "reqwest",
- "strum",
- "strum_macros",
- "tempfile",
- "thiserror",
- "tracing",
- "walkdir",
- "zip",
+ "tinyvec",
 ]
 
 [[package]]
-name = "cargo-lambda-remote"
-version = "1.0.1"
-dependencies = [
- "aws-config",
- "aws-credential-types",
- "aws-sdk-lambda",
- "aws-types",
- "clap",
- "tokio",
-]
+name = "bumpalo"
+version = "3.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
 
 [[package]]
-name = "cargo-lambda-watch"
-version = "1.0.1"
+name = "bv"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340"
 dependencies = [
- "aws_lambda_events",
- "axum",
- "base64 0.21.5",
- "cargo-lambda-invoke",
- "cargo-lambda-metadata",
- "chrono",
- "clap",
- "dunce",
- "http-api-problem",
- "http-serde",
- "hyper",
- "ignore-files",
- "miette 5.10.0",
- "opentelemetry",
- "opentelemetry-aws",
- "query_map",
- "reqwest",
+ "feature-probe",
  "serde",
- "serde_json",
- "tempfile",
- "thiserror",
- "tokio",
- "tokio-graceful-shutdown",
- "tower-http",
- "tracing",
- "tracing-opentelemetry",
- "tracing-subscriber",
- "uuid",
- "watchexec",
- "watchexec-filterer-ignore",
 ]
 
 [[package]]
-name = "cargo-options"
-version = "0.6.0"
+name = "bytemuck"
+version = "1.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b8e8daa6b2b84aa7cccd57317d9a9b36d969d75bb95923471f4eabbd36f2955"
+checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
 dependencies = [
- "clap",
+ "bytemuck_derive",
 ]
 
 [[package]]
-name = "cargo-platform"
-version = "0.1.4"
+name = "bytemuck_derive"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "cargo-test-macro"
-version = "0.1.0"
-source = "git+https://github.com/rust-lang/cargo#6354bb3d813335731838fd7dce2010d040cc2545"
-
-[[package]]
-name = "cargo-test-support"
-version = "0.1.0"
-source = "git+https://github.com/rust-lang/cargo#6354bb3d813335731838fd7dce2010d040cc2545"
+checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
 dependencies = [
- "anstream",
- "anstyle",
- "anyhow",
- "cargo-test-macro",
- "cargo-util",
- "crates-io",
- "filetime",
- "flate2",
- "git2",
- "glob",
- "itertools 0.11.0",
- "pasetors",
- "serde",
- "serde_json",
- "snapbox",
- "tar",
- "time",
- "toml 0.8.8",
- "url",
- "windows-sys 0.48.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "cargo-util"
-version = "0.2.8"
-source = "git+https://github.com/rust-lang/cargo#6354bb3d813335731838fd7dce2010d040cc2545"
-dependencies = [
- "anyhow",
- "core-foundation",
- "filetime",
- "hex",
- "jobserver",
- "libc",
- "miow",
- "same-file",
- "sha2",
- "shell-escape",
- "tempfile",
- "tracing",
- "walkdir",
- "windows-sys 0.48.0",
-]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
 
 [[package]]
-name = "cargo-zigbuild"
-version = "0.17.5"
+name = "bytes"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5166694ea85c72f887293af72a665d7ac5a537649e607773bf834cb6303b1da"
-dependencies = [
- "anyhow",
- "cargo-options",
- "cargo_metadata 0.18.1",
- "clap",
- "dirs 5.0.1",
- "fat-macho",
- "fs-err",
- "path-slash",
- "rustc_version",
- "semver",
- "serde",
- "serde_json",
- "shlex",
- "target-lexicon",
- "which",
-]
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
 
 [[package]]
-name = "cargo_metadata"
-version = "0.15.4"
+name = "caps"
+version = "0.5.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a"
+checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b"
 dependencies = [
- "camino",
- "cargo-platform",
- "semver",
- "serde",
- "serde_json",
+ "libc",
  "thiserror",
 ]
 
 [[package]]
-name = "cargo_metadata"
-version = "0.18.1"
+name = "cargo_toml"
+version = "0.15.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
+checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838"
 dependencies = [
- "camino",
- "cargo-platform",
- "semver",
  "serde",
- "serde_json",
- "thiserror",
+ "toml 0.7.8",
 ]
 
 [[package]]
@@ -1227,77 +1009,92 @@ dependencies = [
 
 [[package]]
 name = "cipher"
-version = "0.4.4"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
 dependencies = [
- "crypto-common",
- "inout",
+ "generic-array",
 ]
 
 [[package]]
 name = "clap"
-version = "4.4.7"
+version = "2.34.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
 dependencies = [
- "clap_builder",
- "clap_derive",
+ "ansi_term",
+ "atty",
+ "bitflags 1.3.2",
+ "strsim 0.8.0",
+ "textwrap 0.11.0",
+ "unicode-width",
+ "vec_map",
 ]
 
 [[package]]
-name = "clap-cargo"
-version = "0.12.0"
+name = "clap"
+version = "3.2.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "383f21342a464d4af96e9a4cad22a0b4f2880d4a5b3bbf5c9654dd1d9a224ee4"
+checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
 dependencies = [
- "anstyle",
- "clap",
+ "atty",
+ "bitflags 1.3.2",
+ "clap_lex 0.2.4",
+ "indexmap 1.9.3",
+ "once_cell",
+ "strsim 0.10.0",
+ "termcolor",
+ "textwrap 0.16.0",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
 ]
 
 [[package]]
 name = "clap_builder"
-version = "4.4.7"
+version = "4.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663"
+checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45"
 dependencies = [
  "anstream",
  "anstyle",
- "clap_lex",
- "strsim",
- "terminal_size 0.3.0",
+ "clap_lex 0.5.1",
+ "strsim 0.10.0",
 ]
 
 [[package]]
 name = "clap_derive"
-version = "4.4.7"
+version = "4.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
+checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "clap_lex"
-version = "0.6.0"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
+dependencies = [
+ "os_str_bytes",
+]
 
 [[package]]
-name = "clearscreen"
-version = "2.0.1"
+name = "clap_lex"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72f3f22f1a586604e62efd23f78218f3ccdecf7a33c4500db2d37d85a24fe994"
-dependencies = [
- "nix",
- "terminfo",
- "thiserror",
- "which",
- "winapi",
-]
+checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
 
 [[package]]
 name = "colorchoice"
@@ -1306,15 +1103,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
 
 [[package]]
-name = "command-group"
-version = "2.1.0"
+name = "combine"
+version = "3.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5080df6b0f0ecb76cab30808f00d937ba725cebe266a3da8cd89dff92f2a9916"
+checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680"
 dependencies = [
- "async-trait",
- "nix",
- "tokio",
- "winapi",
+ "ascii",
+ "byteorder",
+ "either",
+ "memchr",
+ "unreachable",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400"
+dependencies = [
+ "crossbeam-utils",
 ]
 
 [[package]]
@@ -1331,25 +1138,36 @@ dependencies = [
 ]
 
 [[package]]
-name = "const-oid"
-version = "0.9.5"
+name = "console_error_panic_hook"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
 
 [[package]]
-name = "constant_time_eq"
-version = "0.1.5"
+name = "console_log"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
+checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f"
+dependencies = [
+ "log",
+ "web-sys",
+]
 
 [[package]]
-name = "content_inspector"
-version = "0.2.4"
+name = "const-oid"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
-dependencies = [
- "memchr",
-]
+checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3"
+
+[[package]]
+name = "constant_time_eq"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
 
 [[package]]
 name = "core-foundation"
@@ -1369,36 +1187,14 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.11"
+version = "0.2.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
+checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
 dependencies = [
  "libc",
 ]
 
 [[package]]
-name = "crates-io"
-version = "0.39.1"
-source = "git+https://github.com/rust-lang/cargo#6354bb3d813335731838fd7dce2010d040cc2545"
-dependencies = [
- "curl",
- "percent-encoding",
- "serde",
- "serde_json",
- "thiserror",
- "url",
-]
-
-[[package]]
-name = "crc32c"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74"
-dependencies = [
- "rustc_version",
-]
-
-[[package]]
 name = "crc32fast"
 version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1451,135 +1247,161 @@ dependencies = [
 ]
 
 [[package]]
-name = "crossterm"
-version = "0.25.0"
+name = "crunchy"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
-dependencies = [
- "bitflags 1.3.2",
- "crossterm_winapi",
- "libc",
- "mio",
- "parking_lot",
- "signal-hook",
- "signal-hook-mio",
- "winapi",
-]
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
 
 [[package]]
-name = "crossterm_winapi"
-version = "0.9.1"
+name = "crypto-common"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
 dependencies = [
- "winapi",
+ "generic-array",
+ "typenum",
 ]
 
 [[package]]
-name = "crunchy"
-version = "0.2.2"
+name = "crypto-mac"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
+dependencies = [
+ "generic-array",
+ "subtle",
+]
 
 [[package]]
-name = "crypto-bigint"
-version = "0.4.9"
+name = "ctr"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
+checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
 dependencies = [
- "generic-array",
- "rand_core",
- "subtle",
- "zeroize",
+ "cipher",
 ]
 
 [[package]]
-name = "crypto-bigint"
-version = "0.5.3"
+name = "curve25519-dalek"
+version = "3.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124"
+checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0"
 dependencies = [
- "generic-array",
- "rand_core",
+ "byteorder",
+ "digest 0.9.0",
+ "rand_core 0.5.1",
+ "serde",
  "subtle",
  "zeroize",
 ]
 
 [[package]]
-name = "crypto-common"
-version = "0.1.6"
+name = "darling"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
 dependencies = [
- "generic-array",
- "typenum",
+ "darling_core",
+ "darling_macro",
 ]
 
 [[package]]
-name = "ct-codecs"
-version = "1.1.1"
+name = "darling_core"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3b7eb4404b8195a9abb6356f4ac07d8ba267045c8d6d220ac4dc992e6cc75df"
+checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim 0.10.0",
+ "syn 2.0.37",
+]
 
 [[package]]
-name = "curl"
-version = "0.4.44"
+name = "darling_macro"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
+checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
 dependencies = [
- "curl-sys",
- "libc",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "socket2 0.4.10",
- "winapi",
+ "darling_core",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "curl-sys"
-version = "0.4.68+curl-8.4.0"
+name = "dashmap"
+version = "4.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4a0d18d88360e374b16b2273c832b5e57258ffc1d4aa4f96b108e0738d5752f"
+checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c"
 dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
- "vcpkg",
- "windows-sys 0.48.0",
+ "cfg-if",
+ "num_cpus",
 ]
 
 [[package]]
+name = "data-encoding"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
+
+[[package]]
 name = "der"
-version = "0.6.1"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
+checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
 dependencies = [
  "const-oid",
- "zeroize",
 ]
 
 [[package]]
-name = "der"
-version = "0.7.8"
+name = "der-parser"
+version = "8.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
+checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e"
 dependencies = [
- "const-oid",
- "pem-rfc7468",
- "zeroize",
+ "asn1-rs",
+ "displaydoc",
+ "nom",
+ "num-bigint 0.4.4",
+ "num-traits",
+ "rusticata-macros",
 ]
 
 [[package]]
 name = "deranged"
-version = "0.3.9"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
+checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
+
+[[package]]
+name = "derivation-path"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0"
+
+[[package]]
+name = "derivative"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
 dependencies = [
- "powerfmt",
- "serde",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "dialoguer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87"
+dependencies = [
+ "console",
+ "shell-words",
+ "tempfile",
+ "zeroize",
 ]
 
 [[package]]
@@ -1590,12 +1412,20 @@ checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
 
 [[package]]
 name = "digest"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
- "block-buffer",
- "const-oid",
+ "block-buffer 0.10.4",
  "crypto-common",
  "subtle",
 ]
@@ -1606,16 +1436,7 @@ version = "4.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
 dependencies = [
- "dirs-sys 0.3.7",
-]
-
-[[package]]
-name = "dirs"
-version = "5.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
-dependencies = [
- "dirs-sys 0.4.1",
+ "dirs-sys",
 ]
 
 [[package]]
@@ -1640,79 +1461,89 @@ dependencies = [
 ]
 
 [[package]]
-name = "dirs-sys"
-version = "0.4.1"
+name = "dirs-sys-next"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
 dependencies = [
  "libc",
- "option-ext",
  "redox_users",
- "windows-sys 0.48.0",
+ "winapi",
 ]
 
 [[package]]
-name = "dirs-sys-next"
-version = "0.1.2"
+name = "displaydoc"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
 dependencies = [
- "libc",
- "redox_users",
- "winapi",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "doc-comment"
-version = "0.3.3"
+name = "dlopen2"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa"
+dependencies = [
+ "dlopen2_derive",
+ "libc",
+ "once_cell",
+ "winapi",
+]
 
 [[package]]
-name = "dunce"
-version = "1.0.4"
+name = "dlopen2_derive"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
 
 [[package]]
-name = "dyn-clone"
-version = "1.0.14"
+name = "eager"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd"
+checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3"
 
 [[package]]
-name = "ecdsa"
-version = "0.14.8"
+name = "ed25519"
+version = "1.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c"
+checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"
 dependencies = [
- "der 0.6.1",
- "elliptic-curve 0.12.3",
- "rfc6979 0.3.1",
- "signature 1.6.4",
+ "signature",
 ]
 
 [[package]]
-name = "ecdsa"
-version = "0.16.8"
+name = "ed25519-dalek"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
 dependencies = [
- "der 0.7.8",
- "digest",
- "elliptic-curve 0.13.6",
- "rfc6979 0.4.0",
- "signature 2.1.0",
- "spki 0.7.2",
+ "curve25519-dalek",
+ "ed25519",
+ "rand 0.7.3",
+ "serde",
+ "sha2 0.9.9",
+ "zeroize",
 ]
 
 [[package]]
-name = "ed25519-compact"
-version = "2.0.4"
+name = "ed25519-dalek-bip32"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a3d382e8464107391c8706b4c14b087808ecb909f6c15c34114bc42e53a9e4c"
+checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908"
 dependencies = [
- "getrandom",
+ "derivation-path",
+ "ed25519-dalek",
+ "hmac 0.12.1",
+ "sha2 0.10.8",
 ]
 
 [[package]]
@@ -1722,47 +1553,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
 
 [[package]]
-name = "elliptic-curve"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
-dependencies = [
- "base16ct 0.1.1",
- "crypto-bigint 0.4.9",
- "der 0.6.1",
- "digest",
- "ff 0.12.1",
- "generic-array",
- "group 0.12.1",
- "pkcs8 0.9.0",
- "rand_core",
- "sec1 0.3.0",
- "subtle",
- "zeroize",
-]
-
-[[package]]
-name = "elliptic-curve"
-version = "0.13.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914"
-dependencies = [
- "base16ct 0.2.0",
- "crypto-bigint 0.5.3",
- "digest",
- "ff 0.13.0",
- "generic-array",
- "group 0.13.0",
- "hkdf",
- "pem-rfc7468",
- "pkcs8 0.10.2",
- "rand_core",
- "sec1 0.7.3",
- "subtle",
- "zeroize",
-]
-
-[[package]]
 name = "ena"
 version = "0.14.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1787,14 +1577,56 @@ dependencies = [
 ]
 
 [[package]]
-name = "env-file-reader"
-version = "0.3.0"
+name = "enum-iterator"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0a86dcbc0fd1a07f5c318a2215338f0c870336851e8b566ebef1576eddb3728"
+checksum = "7add3873b5dd076766ee79c8e406ad1a472c385476b9e38849f8eec24f1be689"
 dependencies = [
- "lalrpop",
- "lalrpop-util",
- "logos",
+ "enum-iterator-derive",
+]
+
+[[package]]
+name = "enum-iterator-derive"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
+
+[[package]]
+name = "enumflags2"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83c8d82922337cd23a15f88b70d8e4ef5f11da38dd7cdb55e84dd5de99695da0"
+dependencies = [
+ "enumflags2_derive",
+]
+
+[[package]]
+name = "enumflags2_derive"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7"
+dependencies = [
+ "atty",
+ "humantime",
+ "log",
+ "regex",
+ "termcolor",
 ]
 
 [[package]]
@@ -1805,15 +1637,26 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "errno"
-version = "0.3.5"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
+checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480"
 dependencies = [
+ "errno-dragonfly",
  "libc",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
 name = "event-listener"
 version = "2.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1826,41 +1669,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
 
 [[package]]
-name = "fat-macho"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63fa117c7dcabeb8c83d5c229764cfa46518545d2dba5a9a08912014711f997b"
-dependencies = [
- "goblin",
-]
-
-[[package]]
-name = "ff"
-version = "0.12.1"
+name = "feature-probe"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
-dependencies = [
- "rand_core",
- "subtle",
-]
+checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da"
 
 [[package]]
-name = "ff"
-version = "0.13.0"
+name = "field-offset"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
 dependencies = [
- "rand_core",
- "subtle",
+ "memoffset 0.9.0",
+ "rustc_version",
 ]
 
 [[package]]
-name = "fiat-crypto"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a481586acf778f1b1455424c343f71124b048ffa5f4fc3f8f6ae9dc432dcb3c7"
-
-[[package]]
 name = "filetime"
 version = "0.2.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1880,12 +1704,11 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 
 [[package]]
 name = "flate2"
-version = "1.0.28"
+version = "1.0.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
 dependencies = [
  "crc32fast",
- "libz-sys",
  "miniz_oxide",
 ]
 
@@ -1905,25 +1728,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "fs-err"
-version = "2.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541"
-
-[[package]]
-name = "fsevent-sys"
-version = "4.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
-dependencies = [
- "libc",
-]
-
-[[package]]
 name = "futures"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335"
+checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -1936,9 +1744,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -1946,15 +1754,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
+checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc"
+checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -1963,38 +1771,38 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
+checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "futures-sink"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
 
 [[package]]
 name = "futures-task"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
+checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
 
 [[package]]
 name = "futures-util"
-version = "0.3.29"
+version = "0.3.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
+checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -2014,294 +1822,58 @@ version = "0.14.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
 dependencies = [
+ "serde",
  "typenum",
  "version_check",
- "zeroize",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
-dependencies = [
- "cfg-if",
- "js-sys",
- "libc",
- "wasi",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "gimli"
-version = "0.28.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
-
-[[package]]
-name = "git2"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd"
-dependencies = [
- "bitflags 2.4.1",
- "libc",
- "libgit2-sys",
- "log",
- "openssl-probe",
- "openssl-sys",
- "url",
-]
-
-[[package]]
-name = "gix-actor"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc22b0cdc52237667c301dd7cdc6ead8f8f73c9f824e9942c8ebd6b764f6c0bf"
-dependencies = [
- "bstr",
- "btoi",
- "gix-date",
- "itoa",
- "nom",
- "thiserror",
-]
-
-[[package]]
-name = "gix-config"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6aa7d7dd60256b7a0c0506a1d708ec92767c2662ee57b3301b538eaa3e064f8a"
-dependencies = [
- "bstr",
- "gix-config-value",
- "gix-features 0.28.1",
- "gix-glob",
- "gix-path",
- "gix-ref",
- "gix-sec",
- "memchr",
- "nom",
- "once_cell",
- "smallvec",
- "thiserror",
- "unicode-bom",
 ]
 
 [[package]]
-name = "gix-config-value"
-version = "0.10.2"
+name = "gethostname"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d09154c0c8677e4da0ec35e896f56ee3e338e741b9599fae06075edd83a4081c"
+checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e"
 dependencies = [
- "bitflags 1.3.2",
- "bstr",
- "gix-path",
  "libc",
- "thiserror",
-]
-
-[[package]]
-name = "gix-date"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b96271912ce39822501616f177dea7218784e6c63be90d5f36322ff3a722aae2"
-dependencies = [
- "bstr",
- "itoa",
- "thiserror",
- "time",
+ "winapi",
 ]
 
 [[package]]
-name = "gix-features"
-version = "0.28.1"
+name = "getrandom"
+version = "0.1.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b76f9a80f6dd7be66442ae86e1f534effad9546676a392acc95e269d0c21c22"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
 dependencies = [
- "gix-hash 0.10.4",
+ "cfg-if",
+ "js-sys",
  "libc",
- "sha1_smol",
- "walkdir",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
 ]
 
 [[package]]
-name = "gix-features"
-version = "0.29.0"
+name = "getrandom"
+version = "0.2.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf69b0f5c701cc3ae22d3204b671907668f6437ca88862d355eaf9bc47a4f897"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
 dependencies = [
- "gix-hash 0.11.4",
+ "cfg-if",
+ "js-sys",
  "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
 ]
 
 [[package]]
-name = "gix-fs"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b37a1832f691fdc09910bd267f9a2e413737c1f9ec68c6e31f9e802616278a9"
-dependencies = [
- "gix-features 0.29.0",
-]
-
-[[package]]
-name = "gix-glob"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93e43efd776bc543f46f0fd0ca3d920c37af71a764a16f2aebd89765e9ff2993"
-dependencies = [
- "bitflags 1.3.2",
- "bstr",
-]
-
-[[package]]
-name = "gix-hash"
-version = "0.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a258595457bc192d1f1c59d0d168a1e34e2be9b97a614e14995416185de41a7"
-dependencies = [
- "hex",
- "thiserror",
-]
-
-[[package]]
-name = "gix-hash"
-version = "0.11.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b422ff2ad9a0628baaad6da468cf05385bf3f5ab495ad5a33cce99b9f41092f"
-dependencies = [
- "hex",
- "thiserror",
-]
-
-[[package]]
-name = "gix-lock"
-version = "5.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c693d7f05730fa74a7c467150adc7cea393518410c65f0672f80226b8111555"
-dependencies = [
- "gix-tempfile",
- "gix-utils",
- "thiserror",
-]
-
-[[package]]
-name = "gix-object"
+name = "gimli"
 version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8df068db9180ee935fbb70504848369e270bdcb576b05c0faa8b9fd3b86fc017"
-dependencies = [
- "bstr",
- "btoi",
- "gix-actor",
- "gix-features 0.28.1",
- "gix-hash 0.10.4",
- "gix-validate",
- "hex",
- "itoa",
- "nom",
- "smallvec",
- "thiserror",
-]
-
-[[package]]
-name = "gix-path"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32370dce200bb951df013e03dff35b4233fc7a89458642b047629b91734a7e19"
-dependencies = [
- "bstr",
- "thiserror",
-]
-
-[[package]]
-name = "gix-ref"
-version = "0.27.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4e909396ed3b176823991ccc391c276ae2a015e54edaafa3566d35123cfac9d"
-dependencies = [
- "gix-actor",
- "gix-features 0.28.1",
- "gix-hash 0.10.4",
- "gix-lock",
- "gix-object",
- "gix-path",
- "gix-tempfile",
- "gix-validate",
- "memmap2",
- "nom",
- "thiserror",
-]
-
-[[package]]
-name = "gix-sec"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8ffa5bf0772f9b01de501c035b6b084cf9b8bb07dec41e3afc6a17336a65f47"
-dependencies = [
- "bitflags 1.3.2",
- "dirs 4.0.0",
- "gix-path",
- "libc",
- "windows",
-]
-
-[[package]]
-name = "gix-tempfile"
-version = "5.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71a0d32f34e71e86586124225caefd78dabc605d0486de580d717653addf182"
-dependencies = [
- "gix-fs",
- "libc",
- "once_cell",
- "parking_lot",
- "tempfile",
-]
-
-[[package]]
-name = "gix-utils"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b85d89dc728613e26e0ed952a19583744e7f5240fcd4aa30d6c824ffd8b52f0f"
-dependencies = [
- "fastrand",
-]
-
-[[package]]
-name = "gix-validate"
-version = "0.7.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba9b3737b2cef3dcd014633485f0034b0f1a931ee54aeb7d8f87f177f3c89040"
-dependencies = [
- "bstr",
- "thiserror",
-]
-
-[[package]]
-name = "glob"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-
-[[package]]
-name = "globset"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
-dependencies = [
- "aho-corasick",
- "bstr",
- "fnv",
- "log",
- "regex",
-]
+checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
 
 [[package]]
 name = "goblin"
-version = "0.7.1"
+version = "0.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134"
+checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143"
 dependencies = [
  "log",
  "plain",
@@ -2309,28 +1881,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "group"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
-dependencies = [
- "ff 0.12.1",
- "rand_core",
- "subtle",
-]
-
-[[package]]
-name = "group"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
-dependencies = [
- "ff 0.13.0",
- "rand_core",
- "subtle",
-]
-
-[[package]]
 name = "h2"
 version = "0.3.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2350,6 +1900,24 @@ dependencies = [
 ]
 
 [[package]]
+name = "hash32"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+dependencies = [
+ "ahash 0.7.6",
+]
+
+[[package]]
 name = "hashbrown"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2357,9 +1925,27 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 
 [[package]]
 name = "hashbrown"
-version = "0.14.2"
+version = "0.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
+checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
+dependencies = [
+ "ahash 0.8.3",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
 
 [[package]]
 name = "heck"
@@ -2369,23 +1955,33 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
 name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
 version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
 
 [[package]]
-name = "hex"
-version = "0.4.3"
+name = "histogram"
+version = "0.6.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669"
 
 [[package]]
-name = "hkdf"
-version = "0.12.3"
+name = "hmac"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
+checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
 dependencies = [
- "hmac",
+ "crypto-mac",
+ "digest 0.9.0",
 ]
 
 [[package]]
@@ -2394,16 +1990,18 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest",
+ "digest 0.10.7",
 ]
 
 [[package]]
-name = "home"
-version = "0.5.5"
+name = "hmac-drbg"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1"
 dependencies = [
- "windows-sys 0.48.0",
+ "digest 0.9.0",
+ "generic-array",
+ "hmac 0.8.1",
 ]
 
 [[package]]
@@ -2418,18 +2016,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "http-api-problem"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d43e8970113f6e4a9138e6cd57b20de3ed99585cab427eb99d27a440827dbe2"
-dependencies = [
- "http",
- "hyper",
- "serde",
- "serde_json",
-]
-
-[[package]]
 name = "http-body"
 version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2441,22 +2027,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "http-range-header"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
-
-[[package]]
-name = "http-serde"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f560b665ad9f1572cfcaf034f7fb84338a7ce945216d64a90fd81f046a3caee"
-dependencies = [
- "http",
- "serde",
-]
-
-[[package]]
 name = "httparse"
 version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2469,6 +2039,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
 
 [[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
 name = "hyper"
 version = "0.14.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2485,7 +2061,7 @@ dependencies = [
  "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2 0.4.10",
+ "socket2 0.4.9",
  "tokio",
  "tower-service",
  "tracing",
@@ -2494,32 +2070,30 @@ dependencies = [
 
 [[package]]
 name = "hyper-rustls"
-version = "0.24.2"
+version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97"
 dependencies = [
  "futures-util",
  "http",
  "hyper",
- "log",
  "rustls",
- "rustls-native-certs",
  "tokio",
  "tokio-rustls",
 ]
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.58"
+version = "0.1.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
  "iana-time-zone-haiku",
  "js-sys",
  "wasm-bindgen",
- "windows-core",
+ "windows",
 ]
 
 [[package]]
@@ -2532,6 +2106,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
 name = "idna"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2542,36 +2122,19 @@ dependencies = [
 ]
 
 [[package]]
-name = "ignore"
-version = "0.4.20"
+name = "im"
+version = "15.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
+checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9"
 dependencies = [
- "globset",
- "lazy_static",
- "log",
- "memchr",
- "regex",
- "same-file",
- "thread_local",
- "walkdir",
- "winapi-util",
-]
-
-[[package]]
-name = "ignore-files"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd03122ad769f36d57fdedd1e60bded885a8d277a38b0d1b5ea0e11ef642f593"
-dependencies = [
- "futures",
- "gix-config",
- "ignore",
- "miette 5.10.0",
- "project-origins",
- "thiserror",
- "tokio",
- "tracing",
+ "bitmaps",
+ "rand_core 0.6.4",
+ "rand_xoshiro",
+ "rayon",
+ "serde",
+ "sized-chunks",
+ "typenum",
+ "version_check",
 ]
 
 [[package]]
@@ -2586,12 +2149,12 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.1.0"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.1",
 ]
 
 [[package]]
@@ -2608,51 +2171,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "inotify"
-version = "0.9.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
-dependencies = [
- "bitflags 1.3.2",
- "inotify-sys",
- "libc",
-]
-
-[[package]]
-name = "inotify-sys"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "inout"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "inquire"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3a94f0659efe59329832ba0452d3ec753145fc1fb12a8e1d60de4ccf99f5364"
-dependencies = [
- "bitflags 1.3.2",
- "crossterm",
- "dyn-clone",
- "lazy_static",
- "newline-converter",
- "thiserror",
- "unicode-segmentation",
- "unicode-width",
-]
-
-[[package]]
 name = "instant"
 version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2663,9 +2181,9 @@ dependencies = [
 
 [[package]]
 name = "ipnet"
-version = "2.9.0"
+version = "2.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
 
 [[package]]
 name = "is-terminal"
@@ -2673,16 +2191,19 @@ version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.3",
  "rustix",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "is_ci"
-version = "1.1.1"
+name = "itertools"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb"
+checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
+dependencies = [
+ "either",
+]
 
 [[package]]
 name = "itertools"
@@ -2710,57 +2231,51 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
 name = "jobserver"
-version = "0.1.27"
+version = "0.1.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
+checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.65"
+version = "0.3.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
 dependencies = [
  "wasm-bindgen",
 ]
 
 [[package]]
-name = "kqueue"
-version = "1.0.8"
+name = "jsonrpc-core"
+version = "18.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
+checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb"
 dependencies = [
- "kqueue-sys",
- "libc",
-]
-
-[[package]]
-name = "kqueue-sys"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
-dependencies = [
- "bitflags 1.3.2",
- "libc",
+ "futures",
+ "futures-executor",
+ "futures-util",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
 ]
 
 [[package]]
-name = "kstring"
-version = "2.0.0"
+name = "keccak"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
+checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940"
 dependencies = [
- "serde",
- "static_assertions",
+ "cpufeatures",
 ]
 
 [[package]]
 name = "lalrpop"
-version = "0.19.12"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b"
+checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8"
 dependencies = [
  "ascii-canvas",
  "bit-set",
@@ -2771,7 +2286,7 @@ dependencies = [
  "lalrpop-util",
  "petgraph",
  "regex",
- "regex-syntax 0.6.29",
+ "regex-syntax",
  "string_cache",
  "term",
  "tiny-keccak",
@@ -2780,12 +2295,9 @@ dependencies = [
 
 [[package]]
 name = "lalrpop-util"
-version = "0.19.12"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed"
-dependencies = [
- "regex",
-]
+checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d"
 
 [[package]]
 name = "lazy_static"
@@ -2795,118 +2307,80 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libc"
-version = "0.2.149"
+version = "0.2.148"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
 
 [[package]]
-name = "libgit2-sys"
-version = "0.16.1+1.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2a2bb3680b094add03bb3732ec520ece34da31a8cd2d633d1389d0f0fb60d0c"
-dependencies = [
- "cc",
- "libc",
- "libssh2-sys",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
-]
-
-[[package]]
-name = "libssh2-sys"
-version = "0.3.0"
+name = "libsecp256k1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
+checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73"
 dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
- "vcpkg",
+ "arrayref",
+ "base64 0.12.3",
+ "digest 0.9.0",
+ "hmac-drbg",
+ "libsecp256k1-core",
+ "libsecp256k1-gen-ecmult",
+ "libsecp256k1-gen-genmult",
+ "rand 0.7.3",
+ "serde",
+ "sha2 0.9.9",
+ "typenum",
 ]
 
 [[package]]
-name = "libz-sys"
-version = "1.1.12"
+name = "libsecp256k1-core"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b"
+checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80"
 dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
+ "crunchy",
+ "digest 0.9.0",
+ "subtle",
 ]
 
 [[package]]
-name = "linux-raw-sys"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
-
-[[package]]
-name = "liquid"
-version = "0.26.4"
+name = "libsecp256k1-gen-ecmult"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69f68ae1011499ae2ef879f631891f21c78e309755f4a5e483c4a8f12e10b609"
+checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3"
 dependencies = [
- "doc-comment",
- "liquid-core",
- "liquid-derive",
- "liquid-lib",
- "serde",
+ "libsecp256k1-core",
 ]
 
 [[package]]
-name = "liquid-core"
-version = "0.26.4"
+name = "libsecp256k1-gen-genmult"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79e0724dfcaad5cfb7965ea0f178ca0870b8d7315178f4a7179f5696f7f04d5f"
+checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d"
 dependencies = [
- "anymap2",
- "itertools 0.10.5",
- "kstring",
- "liquid-derive",
- "num-traits",
- "pest",
- "pest_derive",
- "regex",
- "serde",
- "time",
+ "libsecp256k1-core",
 ]
 
 [[package]]
-name = "liquid-derive"
-version = "0.26.4"
+name = "light-poseidon"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc2fb41a9bb4257a3803154bdf7e2df7d45197d1941c9b1a90ad815231630721"
+checksum = "949bdd22e4ed93481d45e9a6badb34b99132bcad0c8a8d4f05c42f7dcc7b90bc"
 dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
+ "ark-bn254",
+ "ark-ff",
+ "thiserror",
 ]
 
 [[package]]
-name = "liquid-lib"
-version = "0.26.4"
+name = "linux-raw-sys"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2a17e273a6fb1fb6268f7a5867ddfd0bd4683c7e19b51084f3d567fad4348c0"
-dependencies = [
- "itertools 0.10.5",
- "liquid-core",
- "once_cell",
- "percent-encoding",
- "regex",
- "time",
- "unicode-segmentation",
-]
+checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db"
 
 [[package]]
 name = "lock_api"
-version = "0.4.11"
+version = "0.4.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -2919,54 +2393,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
 
 [[package]]
-name = "logos"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf8b031682c67a8e3d5446840f9573eb7fe26efe7ec8d195c9ac4c0647c502f1"
-dependencies = [
- "logos-derive",
-]
-
-[[package]]
-name = "logos-derive"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1d849148dbaf9661a6151d1ca82b13bb4c4c128146a88d05253b38d4e2f496c"
-dependencies = [
- "beef",
- "fnv",
- "proc-macro2",
- "quote",
- "regex-syntax 0.6.29",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "matchers"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
-dependencies = [
- "regex-automata 0.1.10",
-]
-
-[[package]]
-name = "matchit"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb"
-
-[[package]]
-name = "md-5"
-version = "0.10.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
-dependencies = [
- "cfg-if",
- "digest",
-]
-
-[[package]]
 name = "memchr"
 version = "2.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3000,67 +2426,34 @@ dependencies = [
 ]
 
 [[package]]
-name = "miette"
-version = "4.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c90329e44f9208b55f45711f9558cec15d7ef8295cc65ecd6d4188ae8edc58c"
-dependencies = [
- "miette-derive 4.7.1",
- "once_cell",
- "thiserror",
- "unicode-width",
-]
-
-[[package]]
-name = "miette"
-version = "5.10.0"
+name = "merlin"
+version = "3.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e"
+checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d"
 dependencies = [
- "backtrace",
- "backtrace-ext",
- "is-terminal",
- "miette-derive 5.10.0",
- "once_cell",
- "owo-colors",
- "supports-color",
- "supports-hyperlinks",
- "supports-unicode",
- "terminal_size 0.1.17",
- "textwrap",
- "thiserror",
- "unicode-width",
+ "byteorder",
+ "keccak",
+ "rand_core 0.6.4",
+ "zeroize",
 ]
 
 [[package]]
-name = "miette-derive"
-version = "4.7.1"
+name = "mime"
+version = "0.3.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b5bc45b761bcf1b5e6e6c4128cd93b84c218721a8d9b894aa0aff4ed180174c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
 
 [[package]]
-name = "miette-derive"
-version = "5.10.0"
+name = "mime_guess"
+version = "2.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"
+checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
 dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
+ "mime",
+ "unicase",
 ]
 
 [[package]]
-name = "mime"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-
-[[package]]
 name = "minimal-lexical"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3077,23 +2470,26 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.8.9"
+version = "0.8.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
+checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
 dependencies = [
  "libc",
- "log",
- "wasi",
+ "wasi 0.11.0+wasi-snapshot-preview1",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "miow"
-version = "0.6.0"
+name = "mpl-token-metadata"
+version = "3.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044"
+checksum = "177204bbe7486b22ac35af2c91a82630f830a6ddd3392651aefde1ef346aba3d"
 dependencies = [
- "windows-sys 0.48.0",
+ "borsh 0.10.3",
+ "num-derive 0.3.3",
+ "num-traits",
+ "solana-program",
+ "thiserror",
 ]
 
 [[package]]
@@ -3103,15 +2499,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
 
 [[package]]
-name = "newline-converter"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f71d09d5c87634207f894c6b31b6a2b2c64ea3bdcf71bd5599fdbbe1600c00f"
-dependencies = [
- "unicode-segmentation",
-]
-
-[[package]]
 name = "nix"
 version = "0.26.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3135,43 +2522,28 @@ dependencies = [
 ]
 
 [[package]]
-name = "normalize-line-endings"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
-
-[[package]]
-name = "normalize-path"
+name = "num"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d"
-
-[[package]]
-name = "notify"
-version = "5.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "729f63e1ca555a43fe3efa4f3efdf4801c479da85b432242a7b726f353c88486"
+checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36"
 dependencies = [
- "bitflags 1.3.2",
- "crossbeam-channel",
- "filetime",
- "fsevent-sys",
- "inotify",
- "kqueue",
- "libc",
- "mio",
- "walkdir",
- "windows-sys 0.45.0",
+ "num-bigint 0.2.6",
+ "num-complex",
+ "num-integer",
+ "num-iter",
+ "num-rational",
+ "num-traits",
 ]
 
 [[package]]
-name = "nu-ansi-term"
-version = "0.46.0"
+name = "num-bigint"
+version = "0.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
 dependencies = [
- "overload",
- "winapi",
+ "autocfg",
+ "num-integer",
+ "num-traits",
 ]
 
 [[package]]
@@ -3186,188 +2558,199 @@ dependencies = [
 ]
 
 [[package]]
-name = "num-integer"
-version = "0.1.45"
+name = "num-complex"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95"
 dependencies = [
  "autocfg",
  "num-traits",
 ]
 
 [[package]]
-name = "num-traits"
-version = "0.2.17"
+name = "num-derive"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
 dependencies = [
- "autocfg",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "num_cpus"
-version = "1.16.0"
+name = "num-derive"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+checksum = "9e6a0fd4f737c707bd9086cc16c925f294943eb62eb71499e9fd4cf71f8b9f4e"
 dependencies = [
- "hermit-abi",
- "libc",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "num_threads"
-version = "0.1.6"
+name = "num-integer"
+version = "0.1.45"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
 dependencies = [
- "libc",
+ "autocfg",
+ "num-traits",
 ]
 
 [[package]]
-name = "number_prefix"
-version = "0.4.0"
+name = "num-iter"
+version = "0.1.43"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
 
 [[package]]
-name = "object"
-version = "0.28.4"
+name = "num-rational"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424"
+checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef"
 dependencies = [
- "flate2",
- "memchr",
+ "autocfg",
+ "num-bigint 0.2.6",
+ "num-integer",
+ "num-traits",
 ]
 
 [[package]]
-name = "object"
-version = "0.32.1"
+name = "num-traits"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
 dependencies = [
- "memchr",
+ "autocfg",
 ]
 
 [[package]]
-name = "once_cell"
-version = "1.18.0"
+name = "num_cpus"
+version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi 0.3.3",
+ "libc",
+]
 
 [[package]]
-name = "openssl-probe"
-version = "0.1.5"
+name = "num_enum"
+version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
+dependencies = [
+ "num_enum_derive 0.5.11",
+]
 
 [[package]]
-name = "openssl-sys"
-version = "0.9.94"
+name = "num_enum"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f55da20b29f956fb01f0add8683eb26ee13ebe3ebd935e49898717c6b4b2830"
+checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1"
 dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
+ "num_enum_derive 0.6.1",
 ]
 
 [[package]]
-name = "opentelemetry"
-version = "0.17.0"
+name = "num_enum"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8"
+checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb"
 dependencies = [
- "async-trait",
- "crossbeam-channel",
- "futures-channel",
- "futures-executor",
- "futures-util",
- "js-sys",
- "lazy_static",
- "percent-encoding",
- "pin-project",
- "rand",
- "thiserror",
+ "num_enum_derive 0.7.0",
 ]
 
 [[package]]
-name = "opentelemetry-aws"
-version = "0.5.0"
+name = "num_enum_derive"
+version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72f80ed72cb487ccee5de9e6342e7240ce233a506071e0d07fd535981688342e"
+checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
 dependencies = [
- "lazy_static",
- "opentelemetry",
+ "proc-macro-crate 1.3.1",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
 ]
 
 [[package]]
-name = "option-ext"
-version = "0.2.0"
+name = "num_enum_derive"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
+dependencies = [
+ "proc-macro-crate 1.3.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
 
 [[package]]
-name = "orion"
-version = "0.17.6"
+name = "num_enum_derive"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7abdb10181903c8c4b016ba45d6d6d5af1a1e2a461aa4763a83b87f5df4695e5"
+checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597"
 dependencies = [
- "fiat-crypto",
- "subtle",
- "zeroize",
+ "proc-macro-crate 1.3.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "os_pipe"
-version = "1.1.4"
+name = "number_prefix"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
+[[package]]
+name = "object"
+version = "0.32.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177"
+checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
 dependencies = [
- "libc",
- "windows-sys 0.48.0",
+ "memchr",
 ]
 
 [[package]]
-name = "outref"
-version = "0.5.1"
+name = "oid-registry"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a"
+checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff"
+dependencies = [
+ "asn1-rs",
+]
 
 [[package]]
-name = "overload"
-version = "0.1.1"
+name = "once_cell"
+version = "1.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
 
 [[package]]
-name = "owo-colors"
-version = "3.5.0"
+name = "opaque-debug"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
+checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
 
 [[package]]
-name = "p256"
-version = "0.11.1"
+name = "openssl-probe"
+version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594"
-dependencies = [
- "ecdsa 0.14.8",
- "elliptic-curve 0.12.3",
- "sha2",
-]
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
-name = "p384"
-version = "0.13.0"
+name = "os_str_bytes"
+version = "6.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209"
-dependencies = [
- "ecdsa 0.16.8",
- "elliptic-curve 0.13.6",
- "primeorder",
- "sha2",
-]
+checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
 
 [[package]]
 name = "parking_lot"
@@ -3381,54 +2764,37 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.4.1",
+ "redox_syscall 0.3.5",
  "smallvec",
  "windows-targets 0.48.5",
 ]
 
 [[package]]
-name = "pasetors"
-version = "0.6.7"
+name = "paste"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba765699a309908d55950919a3445e9491453e89b2587b1b2abe4143a48894c0"
-dependencies = [
- "ct-codecs",
- "ed25519-compact",
- "getrandom",
- "orion",
- "p384",
- "rand_core",
- "regex",
- "serde",
- "serde_json",
- "sha2",
- "subtle",
- "time",
- "zeroize",
-]
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
 
 [[package]]
-name = "password-hash"
-version = "0.4.2"
+name = "pathdiff"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700"
-dependencies = [
- "base64ct",
- "rand_core",
- "subtle",
-]
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
 
 [[package]]
-name = "path-slash"
-version = "0.2.1"
+name = "pbkdf2"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
+checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd"
+dependencies = [
+ "crypto-mac",
+]
 
 [[package]]
 name = "pbkdf2"
@@ -3436,19 +2802,16 @@ version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
 dependencies = [
- "digest",
- "hmac",
- "password-hash",
- "sha2",
+ "digest 0.10.7",
 ]
 
 [[package]]
-name = "pem-rfc7468"
-version = "0.7.0"
+name = "pem"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
+checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"
 dependencies = [
- "base64ct",
+ "base64 0.13.1",
 ]
 
 [[package]]
@@ -3458,48 +2821,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
 
 [[package]]
-name = "pest"
-version = "2.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5"
-dependencies = [
- "memchr",
- "thiserror",
- "ucd-trie",
-]
-
-[[package]]
-name = "pest_derive"
-version = "2.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2"
-dependencies = [
- "pest",
- "pest_generator",
-]
-
-[[package]]
-name = "pest_generator"
-version = "2.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227"
-dependencies = [
- "pest",
- "pest_meta",
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "pest_meta"
-version = "2.7.5"
+name = "percentage"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6"
+checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937"
 dependencies = [
- "once_cell",
- "pest",
- "sha2",
+ "num",
 ]
 
 [[package]]
@@ -3509,7 +2836,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
 dependencies = [
  "fixedbitset",
- "indexmap 2.1.0",
+ "indexmap 2.0.2",
 ]
 
 [[package]]
@@ -3518,27 +2845,31 @@ version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
 dependencies = [
+ "phf_macros",
  "phf_shared 0.11.2",
 ]
 
 [[package]]
-name = "phf_codegen"
+name = "phf_generator"
 version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a"
+checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
 dependencies = [
- "phf_generator",
  "phf_shared 0.11.2",
+ "rand 0.8.5",
 ]
 
 [[package]]
-name = "phf_generator"
+name = "phf_macros"
 version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
+checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
 dependencies = [
+ "phf_generator",
  "phf_shared 0.11.2",
- "rand",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -3560,26 +2891,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "pin-project"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
 name = "pin-project-lite"
 version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3593,22 +2904,13 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
 name = "pkcs8"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
-dependencies = [
- "der 0.6.1",
- "spki 0.6.0",
-]
-
-[[package]]
-name = "pkcs8"
-version = "0.10.2"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
 dependencies = [
- "der 0.7.8",
- "spki 0.7.2",
+ "der",
+ "spki",
+ "zeroize",
 ]
 
 [[package]]
@@ -3624,16 +2926,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
 
 [[package]]
+name = "polyval"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
+[[package]]
 name = "portable-atomic"
-version = "1.5.1"
+version = "1.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b"
+checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b"
 
 [[package]]
-name = "powerfmt"
-version = "0.2.0"
+name = "portpicker"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9"
+dependencies = [
+ "rand 0.8.5",
+]
 
 [[package]]
 name = "ppv-lite86"
@@ -3648,43 +2965,99 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
 
 [[package]]
-name = "primeorder"
-version = "0.13.3"
+name = "proc-macro-crate"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+dependencies = [
+ "toml 0.5.11",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7dbe9ed3b56368bd99483eb32fe9c17fdd3730aebadc906918ce78d54c7eeb4"
+checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
 dependencies = [
- "elliptic-curve 0.13.6",
+ "once_cell",
+ "toml_edit",
 ]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.69"
+version = "1.0.67"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
-name = "project-origins"
-version = "1.2.0"
+name = "qstring"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "629e0d57f265ca8238345cb616eea8847b8ecb86b5d97d155be2c8963a314379"
+checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e"
 dependencies = [
- "futures",
+ "percent-encoding",
+]
+
+[[package]]
+name = "qualifier_attr"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
+
+[[package]]
+name = "quinn"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75"
+dependencies = [
+ "bytes",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash",
+ "rustls",
+ "thiserror",
  "tokio",
- "tokio-stream",
+ "tracing",
 ]
 
 [[package]]
-name = "query_map"
-version = "0.5.0"
+name = "quinn-proto"
+version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe3212d819cbdcce67f786cdaf3fe0c2e9d09a6dcd9c9367a1bd344135b8c809"
+checksum = "2c78e758510582acc40acb90458401172d41f1016f8c9dde89e49677afb7eec1"
 dependencies = [
- "form_urlencoded",
- "serde",
- "serde_derive",
+ "bytes",
+ "rand 0.8.5",
+ "ring",
+ "rustc-hash",
+ "rustls",
+ "rustls-native-certs",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7"
+dependencies = [
+ "bytes",
+ "libc",
+ "socket2 0.5.4",
+ "tracing",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -3698,13 +3071,36 @@ dependencies = [
 
 [[package]]
 name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand"
 version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
 dependencies = [
  "libc",
- "rand_chacha",
- "rand_core",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
 ]
 
 [[package]]
@@ -3714,7 +3110,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
 dependencies = [
  "ppv-lite86",
- "rand_core",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
 ]
 
 [[package]]
@@ -3723,7 +3128,25 @@ version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 dependencies = [
- "getrandom",
+ "getrandom 0.2.10",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_xoshiro"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
+dependencies = [
+ "rand_core 0.6.4",
 ]
 
 [[package]]
@@ -3747,28 +3170,31 @@ dependencies = [
 ]
 
 [[package]]
-name = "redox_syscall"
-version = "0.2.16"
+name = "rcgen"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b"
 dependencies = [
- "bitflags 1.3.2",
+ "pem",
+ "ring",
+ "time",
+ "yasna",
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.3.5"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
 dependencies = [
  "bitflags 1.3.2",
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.4.1"
+version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
 dependencies = [
  "bitflags 1.3.2",
 ]
@@ -3779,75 +3205,48 @@ version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
 dependencies = [
- "getrandom",
+ "getrandom 0.2.10",
  "redox_syscall 0.2.16",
  "thiserror",
 ]
 
 [[package]]
 name = "regex"
-version = "1.10.2"
+version = "1.9.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-automata 0.4.3",
- "regex-syntax 0.8.2",
+ "regex-automata",
+ "regex-syntax",
 ]
 
 [[package]]
 name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-dependencies = [
- "regex-syntax 0.6.29",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.3"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.8.2",
+ "regex-syntax",
 ]
 
 [[package]]
 name = "regex-syntax"
-version = "0.6.29"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
-
-[[package]]
-name = "remove_dir_all"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "882f368737489ea543bc5c340e6f3d34a28c39980bd9a979e47322b26f60ac40"
-dependencies = [
- "libc",
- "log",
- "num_cpus",
- "rayon",
- "winapi",
-]
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
 
 [[package]]
 name = "reqwest"
-version = "0.11.22"
+version = "0.11.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
+checksum = "78fdbab6a7e1d7b13cc8ff10197f47986b41c639300cc3c8158cac7847c9bbef"
 dependencies = [
- "base64 0.21.5",
+ "async-compression",
+ "base64 0.21.4",
  "bytes",
  "encoding_rs",
  "futures-core",
@@ -3861,6 +3260,7 @@ dependencies = [
  "js-sys",
  "log",
  "mime",
+ "mime_guess",
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
@@ -3872,48 +3272,50 @@ dependencies = [
  "system-configuration",
  "tokio",
  "tokio-rustls",
+ "tokio-util",
  "tower-service",
  "url",
  "wasm-bindgen",
  "wasm-bindgen-futures",
  "web-sys",
- "webpki-roots",
+ "webpki-roots 0.25.2",
  "winreg",
 ]
 
 [[package]]
-name = "rfc6979"
-version = "0.3.1"
+name = "ring"
+version = "0.16.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb"
+checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
 dependencies = [
- "crypto-bigint 0.4.9",
- "hmac",
- "zeroize",
+ "cc",
+ "libc",
+ "once_cell",
+ "spin",
+ "untrusted",
+ "web-sys",
+ "winapi",
 ]
 
 [[package]]
-name = "rfc6979"
-version = "0.4.0"
+name = "rpassword"
+version = "7.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322"
 dependencies = [
- "hmac",
- "subtle",
+ "libc",
+ "rtoolbox",
+ "winapi",
 ]
 
 [[package]]
-name = "ring"
-version = "0.17.5"
+name = "rtoolbox"
+version = "0.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b"
+checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a"
 dependencies = [
- "cc",
- "getrandom",
  "libc",
- "spin",
- "untrusted",
- "windows-sys 0.48.0",
+ "winapi",
 ]
 
 [[package]]
@@ -3923,6 +3325,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
 
 [[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
 name = "rustc_version"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3932,12 +3340,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "rusticata-macros"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
+dependencies = [
+ "nom",
+]
+
+[[package]]
 name = "rustix"
-version = "0.38.21"
+version = "0.38.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
+checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.4.0",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -3946,9 +3363,9 @@ dependencies = [
 
 [[package]]
 name = "rustls"
-version = "0.21.8"
+version = "0.21.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c"
+checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8"
 dependencies = [
  "log",
  "ring",
@@ -3974,14 +3391,14 @@ version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.4",
 ]
 
 [[package]]
 name = "rustls-webpki"
-version = "0.101.7"
+version = "0.101.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe"
 dependencies = [
  "ring",
  "untrusted",
@@ -4000,57 +3417,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
 
 [[package]]
-name = "safe-lock"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "077d73db7973cccf63eb4aff1e5a34dc2459baa867512088269ea5f2f4253c90"
-
-[[package]]
-name = "safe-proc-macro2"
-version = "1.0.67"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fd85be67db87168aa3c13fd0da99f48f2ab005dccad5af5626138dc1df20eb6"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "safe-quote"
-version = "1.0.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77e530f7831f3feafcd5f1aae406ac205dd998436b4007c8e80f03eca78a88f7"
-dependencies = [
- "safe-proc-macro2",
-]
-
-[[package]]
-name = "safe-regex"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a15289bf322e0673d52756a18194167f2378ec1a15fe884af6e2d2cb934822b0"
-dependencies = [
- "safe-regex-macro",
-]
-
-[[package]]
-name = "safe-regex-compiler"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fba76fae590a2aa665279deb1f57b5098cbace01a0c5e60e262fcf55f7c51542"
-dependencies = [
- "safe-proc-macro2",
- "safe-quote",
-]
-
-[[package]]
-name = "safe-regex-macro"
-version = "0.2.5"
+name = "safe-transmute"
+version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96c2e96b5c03f158d1b16ba79af515137795f4ad4e8de3f790518aae91f1d127"
-dependencies = [
- "safe-proc-macro2",
- "safe-regex-compiler",
-]
+checksum = "98a01dab6acf992653be49205bdd549f32f17cb2803e8eacf1560bf97259aae8"
 
 [[package]]
 name = "same-file"
@@ -4093,48 +3463,20 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "sct"
-version = "0.7.1"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
 dependencies = [
  "ring",
  "untrusted",
 ]
 
 [[package]]
-name = "sec1"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
-dependencies = [
- "base16ct 0.1.1",
- "der 0.6.1",
- "generic-array",
- "pkcs8 0.9.0",
- "subtle",
- "zeroize",
-]
-
-[[package]]
-name = "sec1"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
-dependencies = [
- "base16ct 0.2.0",
- "der 0.7.8",
- "generic-array",
- "pkcs8 0.10.2",
- "subtle",
- "zeroize",
-]
-
-[[package]]
 name = "security-framework"
 version = "2.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4159,38 +3501,44 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.20"
+version = "1.0.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
-dependencies = [
- "serde",
-]
+checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
 
 [[package]]
 name = "serde"
-version = "1.0.190"
+version = "1.0.188"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
+name = "serde_bytes"
+version = "0.11.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff"
+dependencies = [
+ "serde",
+]
+
+[[package]]
 name = "serde_derive"
-version = "1.0.190"
+version = "1.0.188"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.108"
+version = "1.0.107"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
 dependencies = [
  "itoa",
  "ryu",
@@ -4199,9 +3547,9 @@ dependencies = [
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
+checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
 dependencies = [
  "serde",
 ]
@@ -4219,6 +3567,64 @@ dependencies = [
 ]
 
 [[package]]
+name = "serde_with"
+version = "2.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe"
+dependencies = [
+ "serde",
+ "serde_with_macros",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "2.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.9.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574"
+dependencies = [
+ "indexmap 2.0.2",
+ "itoa",
+ "ryu",
+ "serde",
+ "unsafe-libyaml",
+]
+
+[[package]]
+name = "serum_dex"
+version = "0.4.0"
+source = "git+https://github.com/openbook-dex/program/?rev=1be91f2#1be91f2863d8ecede32daaae7e768034e24bbc79"
+dependencies = [
+ "arrayref",
+ "bincode",
+ "bytemuck",
+ "byteorder",
+ "enumflags2",
+ "field-offset",
+ "itertools 0.9.0",
+ "num-traits",
+ "num_enum 0.5.11",
+ "safe-transmute",
+ "serde",
+ "solana-program",
+ "spl-token 3.5.0",
+ "static_assertions",
+ "thiserror",
+ "without-alloc",
+]
+
+[[package]]
 name = "sha1"
 version = "0.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4226,14 +3632,21 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
 dependencies = [
  "cfg-if",
  "cpufeatures",
- "digest",
+ "digest 0.10.7",
 ]
 
 [[package]]
-name = "sha1_smol"
-version = "1.0.0"
+name = "sha2"
+version = "0.9.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
+dependencies = [
+ "block-buffer 0.9.0",
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.9.0",
+ "opaque-debug",
+]
 
 [[package]]
 name = "sha2"
@@ -4243,49 +3656,44 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
 dependencies = [
  "cfg-if",
  "cpufeatures",
- "digest",
+ "digest 0.10.7",
 ]
 
 [[package]]
-name = "sharded-slab"
-version = "0.1.7"
+name = "sha3"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809"
 dependencies = [
- "lazy_static",
+ "block-buffer 0.9.0",
+ "digest 0.9.0",
+ "keccak",
+ "opaque-debug",
 ]
 
 [[package]]
-name = "shell-escape"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f"
-
-[[package]]
-name = "shlex"
-version = "1.2.0"
+name = "sha3"
+version = "0.10.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380"
+checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
+dependencies = [
+ "digest 0.10.7",
+ "keccak",
+]
 
 [[package]]
-name = "signal-hook"
-version = "0.3.17"
+name = "shell-words"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
-dependencies = [
- "libc",
- "signal-hook-registry",
-]
+checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
 
 [[package]]
-name = "signal-hook-mio"
-version = "0.2.3"
+name = "shellexpand"
+version = "2.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4"
 dependencies = [
- "libc",
- "mio",
- "signal-hook",
+ "dirs",
 ]
 
 [[package]]
@@ -4302,26 +3710,6 @@ name = "signature"
 version = "1.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
-dependencies = [
- "digest",
- "rand_core",
-]
-
-[[package]]
-name = "signature"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
-dependencies = [
- "digest",
- "rand_core",
-]
-
-[[package]]
-name = "similar"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597"
 
 [[package]]
 name = "siphasher"
@@ -4330,6 +3718,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
 
 [[package]]
+name = "sized-chunks"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e"
+dependencies = [
+ "bitmaps",
+ "typenum",
+]
+
+[[package]]
 name = "slab"
 version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4345,168 +3743,1064 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
 
 [[package]]
-name = "smawk"
-version = "0.3.2"
+name = "socket2"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
+checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+dependencies = [
+ "libc",
+ "winapi",
+]
 
 [[package]]
-name = "snapbox"
-version = "0.4.14"
+name = "socket2"
+version = "0.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b377c0b6e4715c116473d8e40d51e3fa5b0a2297ca9b2a931ba800667b259ed"
+checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
 dependencies = [
- "anstream",
- "anstyle",
- "backtrace",
- "content_inspector",
- "dunce",
- "filetime",
  "libc",
- "normalize-line-endings",
- "os_pipe",
- "similar",
- "snapbox-macros",
- "tempfile",
- "wait-timeout",
- "walkdir",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "snapbox-macros"
-version = "0.3.6"
+name = "solana-account-decoder"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed1559baff8a696add3322b9be3e940d433e7bb4e38d79017205fd37ff28b28e"
+checksum = "6d67ecc499b9cc79c9f34c1bbae2ba3f102d9bfaa78f48ad49d11f433bc4c7b4"
 dependencies = [
- "anstream",
+ "Inflector",
+ "base64 0.21.4",
+ "bincode",
+ "bs58 0.4.0",
+ "bv",
+ "lazy_static",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "solana-config-program",
+ "solana-sdk",
+ "spl-token 4.0.0",
+ "spl-token-2022",
+ "spl-token-metadata-interface",
+ "thiserror",
+ "zstd",
 ]
 
 [[package]]
-name = "socket2"
-version = "0.4.10"
+name = "solana-clap-utils"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26cf9322dc6cad9902a6a5ef77ad9cd9149b64c757c1ffa536c4243bd7136159"
+dependencies = [
+ "chrono",
+ "clap 2.34.0",
+ "rpassword",
+ "solana-remote-wallet",
+ "solana-sdk",
+ "thiserror",
+ "tiny-bip39",
+ "uriparse",
+ "url",
+]
+
+[[package]]
+name = "solana-cli-config"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7e3476dc3b63bb2e0da304f10df299b20942ae57054eaed2cc411a5449876bd"
+dependencies = [
+ "dirs-next",
+ "lazy_static",
+ "serde",
+ "serde_derive",
+ "serde_yaml",
+ "solana-clap-utils",
+ "solana-sdk",
+ "url",
+]
+
+[[package]]
+name = "solana-client"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df5d23b030f09ea0a3e0d89d22b453849e33f45a89ef0eeae152a21c58752985"
+dependencies = [
+ "async-trait",
+ "bincode",
+ "dashmap",
+ "futures",
+ "futures-util",
+ "indexmap 2.0.2",
+ "indicatif",
+ "log",
+ "quinn",
+ "rayon",
+ "solana-connection-cache",
+ "solana-measure",
+ "solana-metrics",
+ "solana-pubsub-client",
+ "solana-quic-client",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
+ "solana-rpc-client-nonce-utils",
+ "solana-sdk",
+ "solana-streamer",
+ "solana-thin-client",
+ "solana-tpu-client",
+ "solana-udp-client",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "solana-config-program"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "117a5204fb9e7982f2058373d3f21b7997846aed4ca562cf6e84aef4c729c75b"
+dependencies = [
+ "bincode",
+ "chrono",
+ "serde",
+ "serde_derive",
+ "solana-program-runtime",
+ "solana-sdk",
+]
+
+[[package]]
+name = "solana-connection-cache"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08c2f6c76632ec5d6e59aae8fe13095d27c3ae2af143f6973684856babdcd2da"
+dependencies = [
+ "async-trait",
+ "bincode",
+ "crossbeam-channel",
+ "futures-util",
+ "indexmap 2.0.2",
+ "log",
+ "rand 0.8.5",
+ "rayon",
+ "rcgen",
+ "solana-measure",
+ "solana-metrics",
+ "solana-sdk",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "solana-faucet"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2cd45403c75e5104c79f6875b2326196af76572534c80cfadaed3145ed087aa"
+dependencies = [
+ "bincode",
+ "byteorder",
+ "clap 2.34.0",
+ "crossbeam-channel",
+ "log",
+ "serde",
+ "serde_derive",
+ "solana-clap-utils",
+ "solana-cli-config",
+ "solana-logger",
+ "solana-metrics",
+ "solana-sdk",
+ "solana-version",
+ "spl-memo",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "solana-frozen-abi"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fdc9268b1abba206e1a8a234473eb5f7f7af660a86e4d468e7e79b3e5667aa9"
+dependencies = [
+ "ahash 0.8.3",
+ "blake3",
+ "block-buffer 0.10.4",
+ "bs58 0.4.0",
+ "bv",
+ "byteorder",
+ "cc",
+ "either",
+ "generic-array",
+ "im",
+ "lazy_static",
+ "log",
+ "memmap2",
+ "rustc_version",
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "serde_json",
+ "sha2 0.10.8",
+ "solana-frozen-abi-macro",
+ "subtle",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-frozen-abi-macro"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86118cc8437c60d1a474501f6095df880aaac422ab04523a984015c5b7334428"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 2.0.37",
+]
+
+[[package]]
+name = "solana-logger"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "060dcc6a1ee83aa2df01126e0319b17a84d13251b7660fa1e69241e110252779"
+dependencies = [
+ "env_logger",
+ "lazy_static",
+ "log",
+]
+
+[[package]]
+name = "solana-measure"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88a23bcca30fdb20efb5f2d81d61ad9cf1ec0f0141b3bbc095835140db72930f"
+dependencies = [
+ "log",
+ "solana-sdk",
+]
+
+[[package]]
+name = "solana-metrics"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+checksum = "aa2d29f683e800cbfb836ceec63fdbf5f42388c21fdacb2e16160b10be3b08cd"
 dependencies = [
+ "crossbeam-channel",
+ "gethostname",
+ "lazy_static",
+ "log",
+ "reqwest",
+ "solana-sdk",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-net-utils"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "687c740f5b45166666e016ac43cc1001fa5bf9e8f7b9e24cb0a554c6ce35bfd6"
+dependencies = [
+ "bincode",
+ "clap 3.2.25",
+ "crossbeam-channel",
+ "log",
+ "nix",
+ "rand 0.8.5",
+ "serde",
+ "serde_derive",
+ "socket2 0.5.4",
+ "solana-logger",
+ "solana-sdk",
+ "solana-version",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "solana-perf"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03d0b706a083218777c52adbb6138b96c143e06031d41ec9c32cf1da9c352c7c"
+dependencies = [
+ "ahash 0.8.3",
+ "bincode",
+ "bv",
+ "caps",
+ "curve25519-dalek",
+ "dlopen2",
+ "fnv",
+ "lazy_static",
  "libc",
- "winapi",
+ "log",
+ "nix",
+ "rand 0.8.5",
+ "rayon",
+ "serde",
+ "solana-metrics",
+ "solana-rayon-threadlimit",
+ "solana-sdk",
+ "solana-vote-program",
 ]
 
 [[package]]
-name = "socket2"
-version = "0.5.5"
+name = "solana-program"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05c940ad70659c2366331fd136d67cc968acadbc1f6ad13cff9ffe7e392aa831"
+dependencies = [
+ "ark-bn254",
+ "ark-ec",
+ "ark-ff",
+ "ark-serialize",
+ "base64 0.21.4",
+ "bincode",
+ "bitflags 2.4.0",
+ "blake3",
+ "borsh 0.10.3",
+ "borsh 0.9.3",
+ "bs58 0.4.0",
+ "bv",
+ "bytemuck",
+ "cc",
+ "console_error_panic_hook",
+ "console_log",
+ "curve25519-dalek",
+ "getrandom 0.2.10",
+ "itertools 0.10.5",
+ "js-sys",
+ "lazy_static",
+ "libc",
+ "libsecp256k1",
+ "light-poseidon",
+ "log",
+ "memoffset 0.9.0",
+ "num-bigint 0.4.4",
+ "num-derive 0.3.3",
+ "num-traits",
+ "parking_lot",
+ "rand 0.8.5",
+ "rustc_version",
+ "rustversion",
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "serde_json",
+ "sha2 0.10.8",
+ "sha3 0.10.8",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-sdk-macro",
+ "thiserror",
+ "tiny-bip39",
+ "wasm-bindgen",
+ "zeroize",
+]
+
+[[package]]
+name = "solana-program-runtime"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+checksum = "3ffcc34819f5b9da3c5ba4045d572e97a60544b8ed49d604ab0a9cc990f875e2"
 dependencies = [
+ "base64 0.21.4",
+ "bincode",
+ "eager",
+ "enum-iterator",
+ "itertools 0.10.5",
  "libc",
- "windows-sys 0.48.0",
+ "log",
+ "num-derive 0.3.3",
+ "num-traits",
+ "percentage",
+ "rand 0.8.5",
+ "rustc_version",
+ "serde",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-measure",
+ "solana-metrics",
+ "solana-sdk",
+ "solana_rbpf",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-pubsub-client"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "076dbe759e2c86aa5c8b57575d2bd593980bde82b59cb6192261b5d6111dfcd1"
+dependencies = [
+ "crossbeam-channel",
+ "futures-util",
+ "log",
+ "reqwest",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "solana-account-decoder",
+ "solana-rpc-client-api",
+ "solana-sdk",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tokio-tungstenite",
+ "tungstenite",
+ "url",
+]
+
+[[package]]
+name = "solana-quic-client"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5bbf483ec8e440a80b02ef4aa37d0cb6dc77403dc8dfd1a72bdba90429539a"
+dependencies = [
+ "async-mutex",
+ "async-trait",
+ "futures",
+ "itertools 0.10.5",
+ "lazy_static",
+ "log",
+ "quinn",
+ "quinn-proto",
+ "rcgen",
+ "rustls",
+ "solana-connection-cache",
+ "solana-measure",
+ "solana-metrics",
+ "solana-net-utils",
+ "solana-rpc-client-api",
+ "solana-sdk",
+ "solana-streamer",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "solana-rayon-threadlimit"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f23c92c4fb6a1036b7910fb86fbfbf213fabcb3f0d143e6472511d312e0091e"
+dependencies = [
+ "lazy_static",
+ "num_cpus",
+]
+
+[[package]]
+name = "solana-remote-wallet"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b7545aa3e2201494e3a1379bb487caa1081786ddf17959ffb819eef9c9202db"
+dependencies = [
+ "console",
+ "dialoguer",
+ "log",
+ "num-derive 0.3.3",
+ "num-traits",
+ "parking_lot",
+ "qstring",
+ "semver",
+ "solana-sdk",
+ "thiserror",
+ "uriparse",
+]
+
+[[package]]
+name = "solana-rpc-client"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13e24f3f022731f854f97fa88190a4bdf4a6a2e11704999ef4882320d7edc4eb"
+dependencies = [
+ "async-trait",
+ "base64 0.21.4",
+ "bincode",
+ "bs58 0.4.0",
+ "indicatif",
+ "log",
+ "reqwest",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "solana-account-decoder",
+ "solana-rpc-client-api",
+ "solana-sdk",
+ "solana-transaction-status",
+ "solana-version",
+ "solana-vote-program",
+ "tokio",
+]
+
+[[package]]
+name = "solana-rpc-client-api"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ae82221d8d5d447cdc27355caa54f96f52af195a984f70c7e8fa0d8e4a4b0f3"
+dependencies = [
+ "base64 0.21.4",
+ "bs58 0.4.0",
+ "jsonrpc-core",
+ "reqwest",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "solana-account-decoder",
+ "solana-sdk",
+ "solana-transaction-status",
+ "solana-version",
+ "spl-token-2022",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-rpc-client-nonce-utils"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0795902effc5404f43a0a54a489f9d84a5c7eb62164234288690a608582ee4a"
+dependencies = [
+ "clap 2.34.0",
+ "solana-clap-utils",
+ "solana-rpc-client",
+ "solana-sdk",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-sdk"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3db7ae7c80ba537e4b8c1b4655fda680aa1452c8c955113f985b74b235fc3102"
+dependencies = [
+ "assert_matches",
+ "base64 0.21.4",
+ "bincode",
+ "bitflags 2.4.0",
+ "borsh 0.10.3",
+ "bs58 0.4.0",
+ "bytemuck",
+ "byteorder",
+ "chrono",
+ "derivation-path",
+ "digest 0.10.7",
+ "ed25519-dalek",
+ "ed25519-dalek-bip32",
+ "generic-array",
+ "hmac 0.12.1",
+ "itertools 0.10.5",
+ "js-sys",
+ "lazy_static",
+ "libsecp256k1",
+ "log",
+ "memmap2",
+ "num-derive 0.3.3",
+ "num-traits",
+ "num_enum 0.6.1",
+ "pbkdf2 0.11.0",
+ "qstring",
+ "qualifier_attr",
+ "rand 0.7.3",
+ "rand 0.8.5",
+ "rustc_version",
+ "rustversion",
+ "serde",
+ "serde_bytes",
+ "serde_derive",
+ "serde_json",
+ "serde_with",
+ "sha2 0.10.8",
+ "sha3 0.10.8",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-logger",
+ "solana-program",
+ "solana-sdk-macro",
+ "thiserror",
+ "uriparse",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "solana-sdk-macro"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1da4a7421c09ee4dbf81df06407933d4f68f8990ae87a2feaee6e1b03c97d1d"
+dependencies = [
+ "bs58 0.4.0",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.37",
+]
+
+[[package]]
+name = "solana-streamer"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28b4f623d32af2793e7ebdd24bd04f704a77f6a7975cf8204275ebc918d4685"
+dependencies = [
+ "async-channel",
+ "bytes",
+ "crossbeam-channel",
+ "futures-util",
+ "histogram",
+ "indexmap 2.0.2",
+ "itertools 0.10.5",
+ "libc",
+ "log",
+ "nix",
+ "pem",
+ "percentage",
+ "pkcs8",
+ "quinn",
+ "quinn-proto",
+ "rand 0.8.5",
+ "rcgen",
+ "rustls",
+ "solana-metrics",
+ "solana-perf",
+ "solana-sdk",
+ "thiserror",
+ "tokio",
+ "x509-parser",
+]
+
+[[package]]
+name = "solana-thin-client"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ec81c9b19cc3a02e423782758305c63460b664912217e61e273e0105f7dc0b"
+dependencies = [
+ "bincode",
+ "log",
+ "rayon",
+ "solana-connection-cache",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
+ "solana-sdk",
+]
+
+[[package]]
+name = "solana-tpu-client"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf9e6a85761ebc7be477e95b5787f206e6f64d09d297006881edbe30c99106d0"
+dependencies = [
+ "async-trait",
+ "bincode",
+ "futures-util",
+ "indexmap 2.0.2",
+ "indicatif",
+ "log",
+ "rayon",
+ "solana-connection-cache",
+ "solana-measure",
+ "solana-metrics",
+ "solana-pubsub-client",
+ "solana-rpc-client",
+ "solana-rpc-client-api",
+ "solana-sdk",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "solana-transaction-status"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2eaba311b1be47ae8a1ed8d082d2c35cd89a39c5daf73514668c735574d4ecd"
+dependencies = [
+ "Inflector",
+ "base64 0.21.4",
+ "bincode",
+ "borsh 0.10.3",
+ "bs58 0.4.0",
+ "lazy_static",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "solana-account-decoder",
+ "solana-sdk",
+ "spl-associated-token-account",
+ "spl-memo",
+ "spl-token 4.0.0",
+ "spl-token-2022",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-udp-client"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6f3750d7c9218e2a0e5ad73b62e293a71489c6425e64e98d5315dc64939eee6"
+dependencies = [
+ "async-trait",
+ "solana-connection-cache",
+ "solana-net-utils",
+ "solana-sdk",
+ "solana-streamer",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "solana-version"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19dc9876647351f50ac415afcd9bc8ea3892883a077cd240f84490a0670ab021"
+dependencies = [
+ "log",
+ "rustc_version",
+ "semver",
+ "serde",
+ "serde_derive",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-sdk",
+]
+
+[[package]]
+name = "solana-vote-program"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "480b27798516d7065b358f3ec056b2ede79e0dc8406a9697c6028f289a09398d"
+dependencies = [
+ "bincode",
+ "log",
+ "num-derive 0.3.3",
+ "num-traits",
+ "rustc_version",
+ "serde",
+ "serde_derive",
+ "solana-frozen-abi",
+ "solana-frozen-abi-macro",
+ "solana-metrics",
+ "solana-program",
+ "solana-program-runtime",
+ "solana-sdk",
+ "thiserror",
+]
+
+[[package]]
+name = "solana-zk-token-sdk"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8690fff97c3cb2acfdb49d126f8b958736884f58bd1c7fd2230984f132095f05"
+dependencies = [
+ "aes-gcm-siv",
+ "base64 0.21.4",
+ "bincode",
+ "bytemuck",
+ "byteorder",
+ "curve25519-dalek",
+ "getrandom 0.1.16",
+ "itertools 0.10.5",
+ "lazy_static",
+ "merlin",
+ "num-derive 0.3.3",
+ "num-traits",
+ "rand 0.7.3",
+ "serde",
+ "serde_json",
+ "sha3 0.9.1",
+ "solana-program",
+ "solana-sdk",
+ "subtle",
+ "thiserror",
+ "zeroize",
+]
+
+[[package]]
+name = "solana_rbpf"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "103318aa365ff7caa8cf534f2246b5eb7e5b34668736d52b1266b143f7a21196"
+dependencies = [
+ "byteorder",
+ "combine",
+ "goblin",
+ "hash32",
+ "libc",
+ "log",
+ "rand 0.8.5",
+ "rustc-demangle",
+ "scroll",
+ "thiserror",
+ "winapi",
+]
+
+[[package]]
+name = "solang-parser"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cb9fa2fa2fa6837be8a2495486ff92e3ffe68a99b6eeba288e139efdd842457"
+dependencies = [
+ "itertools 0.11.0",
+ "lalrpop",
+ "lalrpop-util",
+ "phf",
+ "thiserror",
+ "unicode-xid",
 ]
 
 [[package]]
 name = "spin"
-version = "0.9.8"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
 
 [[package]]
 name = "spki"
-version = "0.6.0"
+version = "0.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
+checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
 dependencies = [
  "base64ct",
- "der 0.6.1",
+ "der",
 ]
 
 [[package]]
-name = "spki"
-version = "0.7.2"
+name = "spl-associated-token-account"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "385e31c29981488f2820b2022d8e731aae3b02e6e18e2fd854e4c9a94dc44fc3"
 dependencies = [
- "base64ct",
- "der 0.7.8",
+ "assert_matches",
+ "borsh 0.10.3",
+ "num-derive 0.4.0",
+ "num-traits",
+ "solana-program",
+ "spl-token 4.0.0",
+ "spl-token-2022",
+ "thiserror",
 ]
 
 [[package]]
-name = "static_assertions"
-version = "1.1.0"
+name = "spl-discriminator"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f"
+dependencies = [
+ "bytemuck",
+ "solana-program",
+ "spl-discriminator-derive",
+]
 
 [[package]]
-name = "string_cache"
-version = "0.8.7"
+name = "spl-discriminator-derive"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
+checksum = "fadbefec4f3c678215ca72bd71862697bb06b41fd77c0088902dd3203354387b"
 dependencies = [
- "new_debug_unreachable",
- "once_cell",
- "parking_lot",
- "phf_shared 0.10.0",
- "precomputed-hash",
+ "quote",
+ "spl-discriminator-syn",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "strsim"
-version = "0.10.0"
+name = "spl-discriminator-syn"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+checksum = "0e5f2044ca42c8938d54d1255ce599c79a1ffd86b677dfab695caa20f9ffc3f2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "sha2 0.10.8",
+ "syn 2.0.37",
+ "thiserror",
+]
 
 [[package]]
-name = "strum"
-version = "0.24.1"
+name = "spl-memo"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a"
+dependencies = [
+ "solana-program",
+]
+
+[[package]]
+name = "spl-pod"
+version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
+checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079"
+dependencies = [
+ "borsh 0.10.3",
+ "bytemuck",
+ "solana-program",
+ "solana-zk-token-sdk",
+ "spl-program-error",
+]
+
+[[package]]
+name = "spl-program-error"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c"
+dependencies = [
+ "num-derive 0.4.0",
+ "num-traits",
+ "solana-program",
+ "spl-program-error-derive",
+ "thiserror",
+]
 
 [[package]]
-name = "strum_macros"
-version = "0.24.3"
+name = "spl-program-error-derive"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
+checksum = "ab5269c8e868da17b6552ef35a51355a017bd8e0eae269c201fef830d35fa52c"
 dependencies = [
- "heck",
  "proc-macro2",
  "quote",
- "rustversion",
- "syn 1.0.109",
+ "sha2 0.10.8",
+ "syn 2.0.37",
 ]
 
 [[package]]
-name = "subtle"
-version = "2.5.0"
+name = "spl-tlv-account-resolution"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+checksum = "062e148d3eab7b165582757453632ffeef490c02c86a48bfdb4988f63eefb3b9"
+dependencies = [
+ "bytemuck",
+ "solana-program",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+ "spl-type-length-value",
+]
 
 [[package]]
-name = "supports-color"
-version = "2.1.0"
+name = "spl-token"
+version = "3.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89"
+checksum = "8e85e168a785e82564160dcb87b2a8e04cee9bfd1f4d488c729d53d6a4bd300d"
 dependencies = [
- "is-terminal",
- "is_ci",
+ "arrayref",
+ "bytemuck",
+ "num-derive 0.3.3",
+ "num-traits",
+ "num_enum 0.5.11",
+ "solana-program",
+ "thiserror",
 ]
 
 [[package]]
-name = "supports-hyperlinks"
-version = "2.1.0"
+name = "spl-token"
+version = "4.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f84231692eb0d4d41e4cdd0cabfdd2e6cd9e255e65f80c9aa7c98dd502b4233d"
+checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060"
 dependencies = [
- "is-terminal",
+ "arrayref",
+ "bytemuck",
+ "num-derive 0.3.3",
+ "num-traits",
+ "num_enum 0.6.1",
+ "solana-program",
+ "thiserror",
 ]
 
 [[package]]
-name = "supports-unicode"
-version = "2.0.0"
+name = "spl-token-2022"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b6c2cb240ab5dd21ed4906895ee23fe5a48acdbd15a3ce388e7b62a9b66baf7"
+checksum = "e4abf34a65ba420584a0c35f3903f8d727d1f13ababbdc3f714c6b065a686e86"
 dependencies = [
- "is-terminal",
+ "arrayref",
+ "bytemuck",
+ "num-derive 0.4.0",
+ "num-traits",
+ "num_enum 0.7.0",
+ "solana-program",
+ "solana-zk-token-sdk",
+ "spl-memo",
+ "spl-pod",
+ "spl-token 4.0.0",
+ "spl-token-metadata-interface",
+ "spl-transfer-hook-interface",
+ "spl-type-length-value",
+ "thiserror",
+]
+
+[[package]]
+name = "spl-token-metadata-interface"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f"
+dependencies = [
+ "borsh 0.10.3",
+ "solana-program",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+ "spl-type-length-value",
+]
+
+[[package]]
+name = "spl-transfer-hook-interface"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "051d31803f873cabe71aec3c1b849f35248beae5d19a347d93a5c9cccc5d5a9b"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "solana-program",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
+ "spl-tlv-account-resolution",
+ "spl-type-length-value",
+]
+
+[[package]]
+name = "spl-type-length-value"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac"
+dependencies = [
+ "bytemuck",
+ "solana-program",
+ "spl-discriminator",
+ "spl-pod",
+ "spl-program-error",
 ]
 
 [[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "string_cache"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
+dependencies = [
+ "new_debug_unreachable",
+ "once_cell",
+ "parking_lot",
+ "phf_shared 0.10.0",
+ "precomputed-hash",
+]
+
+[[package]]
+name = "strsim"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "subtle"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+
+[[package]]
 name = "syn"
 version = "1.0.109"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4519,9 +4813,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.38"
+version = "2.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -4529,10 +4823,16 @@ dependencies = [
 ]
 
 [[package]]
-name = "sync_wrapper"
-version = "0.1.2"
+name = "synstructure"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "unicode-xid",
+]
 
 [[package]]
 name = "system-configuration"
@@ -4563,23 +4863,18 @@ checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
 dependencies = [
  "filetime",
  "libc",
+ "xattr",
 ]
 
 [[package]]
-name = "target-lexicon"
-version = "0.12.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a"
-
-[[package]]
 name = "tempfile"
-version = "3.8.1"
+version = "3.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
 dependencies = [
  "cfg-if",
  "fastrand",
- "redox_syscall 0.4.1",
+ "redox_syscall 0.3.5",
  "rustix",
  "windows-sys 0.48.0",
 ]
@@ -4596,90 +4891,57 @@ dependencies = [
 ]
 
 [[package]]
-name = "terminal_size"
-version = "0.1.17"
+name = "termcolor"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
+checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
 dependencies = [
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "terminal_size"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
-dependencies = [
- "rustix",
- "windows-sys 0.48.0",
+ "winapi-util",
 ]
 
 [[package]]
-name = "terminfo"
-version = "0.8.0"
+name = "textwrap"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "666cd3a6681775d22b200409aad3b089c5b99fb11ecdd8a204d9d62f8148498f"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
 dependencies = [
- "dirs 4.0.0",
- "fnv",
- "nom",
- "phf",
- "phf_codegen",
+ "unicode-width",
 ]
 
 [[package]]
 name = "textwrap"
-version = "0.15.2"
+version = "0.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d"
-dependencies = [
- "smawk",
- "unicode-linebreak",
- "unicode-width",
-]
+checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
 
 [[package]]
 name = "thiserror"
-version = "1.0.50"
+version = "1.0.49"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
+checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.50"
+version = "1.0.49"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "thread_local"
-version = "1.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
-dependencies = [
- "cfg-if",
- "once_cell",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "time"
-version = "0.3.30"
+version = "0.3.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
+checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe"
 dependencies = [
  "deranged",
  "itoa",
- "libc",
- "num_threads",
- "powerfmt",
  "serde",
  "time-core",
  "time-macros",
@@ -4701,6 +4963,25 @@ dependencies = [
 ]
 
 [[package]]
+name = "tiny-bip39"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d"
+dependencies = [
+ "anyhow",
+ "hmac 0.8.1",
+ "once_cell",
+ "pbkdf2 0.4.0",
+ "rand 0.7.3",
+ "rustc-hash",
+ "sha2 0.9.9",
+ "thiserror",
+ "unicode-normalization",
+ "wasm-bindgen",
+ "zeroize",
+]
+
+[[package]]
 name = "tiny-keccak"
 version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4726,40 +5007,24 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.33.0"
+version = "1.32.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653"
+checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
 dependencies = [
  "backtrace",
  "bytes",
  "libc",
  "mio",
  "num_cpus",
+ "parking_lot",
  "pin-project-lite",
  "signal-hook-registry",
- "socket2 0.5.5",
+ "socket2 0.5.4",
  "tokio-macros",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
-name = "tokio-graceful-shutdown"
-version = "0.14.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "351221b8de5317abac3a0cb5d79287ed8cca598959f596e2eb4d25637fe03bd3"
-dependencies = [
- "async-trait",
- "atomic",
- "bytemuck",
- "miette 5.10.0",
- "pin-project-lite",
- "thiserror",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
-[[package]]
 name = "tokio-macros"
 version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4767,7 +5032,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -4792,10 +5057,25 @@ dependencies = [
 ]
 
 [[package]]
+name = "tokio-tungstenite"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c"
+dependencies = [
+ "futures-util",
+ "log",
+ "rustls",
+ "tokio",
+ "tokio-rustls",
+ "tungstenite",
+ "webpki-roots 0.25.2",
+]
+
+[[package]]
 name = "tokio-util"
-version = "0.7.10"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d"
 dependencies = [
  "bytes",
  "futures-core",
@@ -4807,33 +5087,30 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "0.7.8"
+version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
 dependencies = [
  "serde",
- "serde_spanned",
- "toml_datetime",
- "toml_edit 0.19.15",
 ]
 
 [[package]]
 name = "toml"
-version = "0.8.8"
+version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
+checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit 0.21.0",
+ "toml_edit",
 ]
 
 [[package]]
 name = "toml_datetime"
-version = "0.6.5"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
 dependencies = [
  "serde",
 ]
@@ -4844,20 +5121,7 @@ version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
- "indexmap 2.1.0",
- "serde",
- "serde_spanned",
- "toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
-dependencies = [
- "indexmap 2.1.0",
+ "indexmap 2.0.2",
  "serde",
  "serde_spanned",
  "toml_datetime",
@@ -4865,49 +5129,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project",
- "pin-project-lite",
- "tokio",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "tower-http"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
-dependencies = [
- "bitflags 1.3.2",
- "bytes",
- "futures-core",
- "futures-util",
- "http",
- "http-body",
- "http-range-header",
- "pin-project-lite",
- "tower",
- "tower-layer",
- "tower-service",
- "tracing",
- "uuid",
-]
-
-[[package]]
-name = "tower-layer"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
-
-[[package]]
 name = "tower-service"
 version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4915,10 +5136,11 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
 
 [[package]]
 name = "tracing"
-version = "0.1.40"
+version = "0.1.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
 dependencies = [
+ "cfg-if",
  "log",
  "pin-project-lite",
  "tracing-attributes",
@@ -4927,96 +5149,65 @@ dependencies = [
 
 [[package]]
 name = "tracing-attributes"
-version = "0.1.27"
+version = "0.1.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "tracing-core"
-version = "0.1.32"
+version = "0.1.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
 dependencies = [
  "once_cell",
- "valuable",
 ]
 
 [[package]]
-name = "tracing-log"
-version = "0.1.4"
+name = "try-lock"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2"
-dependencies = [
- "log",
- "once_cell",
- "tracing-core",
-]
+checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
 
 [[package]]
-name = "tracing-log"
-version = "0.2.0"
+name = "tungstenite"
+version = "0.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
 dependencies = [
+ "byteorder",
+ "bytes",
+ "data-encoding",
+ "http",
+ "httparse",
  "log",
- "once_cell",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-opentelemetry"
-version = "0.17.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f"
-dependencies = [
- "once_cell",
- "opentelemetry",
- "tracing",
- "tracing-core",
- "tracing-log 0.1.4",
- "tracing-subscriber",
-]
-
-[[package]]
-name = "tracing-subscriber"
-version = "0.3.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
-dependencies = [
- "matchers",
- "nu-ansi-term",
- "once_cell",
- "regex",
- "sharded-slab",
- "smallvec",
- "thread_local",
- "tracing",
- "tracing-core",
- "tracing-log 0.2.0",
+ "rand 0.8.5",
+ "rustls",
+ "sha1",
+ "thiserror",
+ "url",
+ "utf-8",
+ "webpki-roots 0.24.0",
 ]
 
 [[package]]
-name = "try-lock"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
-
-[[package]]
 name = "typenum"
 version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
 
 [[package]]
-name = "ucd-trie"
-version = "0.1.6"
+name = "unicase"
+version = "2.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
 
 [[package]]
 name = "unicode-bidi"
@@ -5025,24 +5216,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
 
 [[package]]
-name = "unicode-bom"
-version = "1.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63ec69f541d875b783ca40184d655f2927c95f0bffd486faa83cd3ac3529ec32"
-
-[[package]]
 name = "unicode-ident"
 version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
-name = "unicode-linebreak"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
-
-[[package]]
 name = "unicode-normalization"
 version = "0.1.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5070,10 +5249,54 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
 
 [[package]]
+name = "universal-hash"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05"
+dependencies = [
+ "generic-array",
+ "subtle",
+]
+
+[[package]]
+name = "unreachable"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
+dependencies = [
+ "void",
+]
+
+[[package]]
+name = "unsafe-libyaml"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa"
+
+[[package]]
+name = "unsize"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fa7a7a734c1a5664a662ddcea0b6c9472a21da8888c957c7f1eaa09dba7a939"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
 name = "untrusted"
-version = "0.9.0"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+
+[[package]]
+name = "uriparse"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff"
+dependencies = [
+ "fnv",
+ "lazy_static",
+]
 
 [[package]]
 name = "url"
@@ -5087,10 +5310,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "urlencoding"
-version = "2.1.3"
+name = "utf-8"
+version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
 
 [[package]]
 name = "utf8parse"
@@ -5099,25 +5322,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
 [[package]]
-name = "uuid"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
-dependencies = [
- "getrandom",
-]
-
-[[package]]
-name = "valuable"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
+name = "vec_map"
+version = "0.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
 
 [[package]]
 name = "version_check"
@@ -5126,19 +5334,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
-name = "vsimd"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
-
-[[package]]
-name = "wait-timeout"
-version = "0.2.0"
+name = "void"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
-dependencies = [
- "libc",
-]
+checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
 
 [[package]]
 name = "walkdir"
@@ -5161,15 +5360,21 @@ dependencies = [
 
 [[package]]
 name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[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.88"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -5177,24 +5382,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.88"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.38"
+version = "0.4.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02"
+checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -5204,9 +5409,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.88"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -5214,92 +5419,40 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.88"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.37",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.88"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
-
-[[package]]
-name = "watchexec"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8b97d05a9305a9aa6a7bedef64cd012ebc9b6f1f5ed0368fb48f0fe58f96988"
-dependencies = [
- "async-priority-channel",
- "async-recursion",
- "atomic-take",
- "clearscreen",
- "command-group",
- "futures",
- "ignore-files",
- "miette 5.10.0",
- "nix",
- "normalize-path",
- "notify",
- "once_cell",
- "project-origins",
- "thiserror",
- "tokio",
- "tracing",
- "watchexec-events",
- "watchexec-signals",
-]
-
-[[package]]
-name = "watchexec-events"
-version = "1.0.0"
+version = "0.2.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01603bbe02fd75918f010dadad456d47eda14fb8fdcab276b0b4b8362f142ae3"
-dependencies = [
- "nix",
- "notify",
- "watchexec-signals",
-]
+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
 
 [[package]]
-name = "watchexec-filterer-ignore"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b77dba02357d16307c4c53d252a59d08cece5e274314956e0aa0160ff721b08"
-dependencies = [
- "ignore",
- "ignore-files",
- "tracing",
- "watchexec",
- "watchexec-signals",
-]
-
-[[package]]
-name = "watchexec-signals"
-version = "1.0.0"
+name = "web-sys"
+version = "0.3.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2a5df96c388901c94ca04055fcd51d4196ca3e971c5e805bd4a4b61dd6a7e5"
+checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
 dependencies = [
- "miette 5.10.0",
- "nix",
- "thiserror",
+ "js-sys",
+ "wasm-bindgen",
 ]
 
 [[package]]
-name = "web-sys"
-version = "0.3.65"
+name = "webpki-roots"
+version = "0.24.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85"
+checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888"
 dependencies = [
- "js-sys",
- "wasm-bindgen",
+ "rustls-webpki",
 ]
 
 [[package]]
@@ -5309,18 +5462,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc"
 
 [[package]]
-name = "which"
-version = "4.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
-dependencies = [
- "either",
- "home",
- "once_cell",
- "rustix",
-]
-
-[[package]]
 name = "winapi"
 version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5353,24 +5494,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
 name = "windows"
-version = "0.43.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04662ed0e3e5630dfa9b26e4cb823b817f1a9addda855d973a9458c236556244"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
-]
-
-[[package]]
-name = "windows-core"
-version = "0.51.1"
+version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
 dependencies = [
  "windows-targets 0.48.5",
 ]
@@ -5509,9 +5635,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "winnow"
-version = "0.5.18"
+version = "0.5.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32"
+checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc"
 dependencies = [
  "memchr",
 ]
@@ -5527,35 +5653,69 @@ dependencies = [
 ]
 
 [[package]]
-name = "xmlparser"
-version = "0.13.6"
+name = "without-alloc"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4"
+checksum = "375db0478b203b950ef10d1cce23cdbe5f30c2454fd9e7673ff56656df23adbb"
+dependencies = [
+ "alloc-traits",
+ "unsize",
+]
 
 [[package]]
-name = "zeroize"
-version = "1.6.0"
+name = "x509-parser"
+version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8"
+dependencies = [
+ "asn1-rs",
+ "base64 0.13.1",
+ "data-encoding",
+ "der-parser",
+ "lazy_static",
+ "nom",
+ "oid-registry",
+ "rusticata-macros",
+ "thiserror",
+ "time",
+]
 
 [[package]]
-name = "zip"
-version = "0.6.6"
+name = "xattr"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
+checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "yasna"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd"
 dependencies = [
- "aes",
- "byteorder",
- "bzip2",
- "constant_time_eq",
- "crc32fast",
- "crossbeam-utils",
- "flate2",
- "hmac",
- "pbkdf2",
- "sha1",
  "time",
- "zstd",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -5579,10 +5739,11 @@ dependencies = [
 
 [[package]]
 name = "zstd-sys"
-version = "2.0.9+zstd.1.5.5"
+version = "2.0.8+zstd.1.5.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656"
+checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c"
 dependencies = [
  "cc",
+ "libc",
  "pkg-config",
 ]
diff --git a/pkgs/by-name/an/anchor/package.nix b/pkgs/by-name/an/anchor/package.nix
new file mode 100644
index 0000000000000..6d577075af165
--- /dev/null
+++ b/pkgs/by-name/an/anchor/package.nix
@@ -0,0 +1,48 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, stdenv
+, darwin
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "anchor";
+  version = "0.29.0";
+
+  src = fetchFromGitHub {
+    owner = "coral-xyz";
+    repo = "anchor";
+    rev = "v${version}";
+    hash = "sha256-hOpdCVO3fXMqnAihjXXD9SjqK4AMhQQhZmISqJnDVCI=";
+    fetchSubmodules = true;
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "serum_dex-0.4.0" = "sha256-Nzhh3OcAFE2LcbUgrA4zE2TnUMfV0dD4iH6fTi48GcI=";
+    };
+  };
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+    darwin.apple_sdk.frameworks.SystemConfiguration
+  ];
+
+  checkFlags = [
+    # the following test cases try to access network, skip them
+    "--skip=tests::test_check_and_get_full_commit_when_full_commit"
+    "--skip=tests::test_check_and_get_full_commit_when_partial_commit"
+    "--skip=tests::test_get_anchor_version_from_commit"
+  ];
+
+
+  meta = with lib; {
+    description = "Solana Sealevel Framework";
+    homepage = "https://github.com/coral-xyz/anchor";
+    changelog = "https://github.com/coral-xyz/anchor/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ xrelkd ];
+    mainProgram = "anchor";
+  };
+}
diff --git a/pkgs/by-name/an/annextimelog/package.nix b/pkgs/by-name/an/annextimelog/package.nix
new file mode 100644
index 0000000000000..799525ea88245
--- /dev/null
+++ b/pkgs/by-name/an/annextimelog/package.nix
@@ -0,0 +1,35 @@
+{ lib
+, python3
+, fetchFromGitLab
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "annextimelog";
+  version = "0.13.1";
+  format = "pyproject";
+
+  src = fetchFromGitLab {
+    owner = "nobodyinperson";
+    repo = "annextimelog";
+    rev = "v${version}";
+    hash = "sha256-VgeILw8WfqVrmsU/kBw+jHTOt2a6sVT7YgP2pKRp2AY=";
+  };
+
+  nativeBuildInputs = with python3.pkgs; [
+    setuptools
+    wheel
+    poetry-core
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    rich
+  ];
+
+  meta = with lib; {
+    description = "️Git Annex-backed Time Tracking";
+    homepage = "https://gitlab.com/nobodyinperson/annextimelog";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ matthiasbeyer ];
+  };
+}
+
diff --git a/pkgs/by-name/ar/ark-pixel-font/package.nix b/pkgs/by-name/ar/ark-pixel-font/package.nix
index 1339015a8c65b..15d3b4dd43f69 100644
--- a/pkgs/by-name/ar/ark-pixel-font/package.nix
+++ b/pkgs/by-name/ar/ark-pixel-font/package.nix
@@ -1,24 +1,23 @@
 { lib
-, python3Packages
+, python312Packages
 , fetchFromGitHub
 , nix-update-script
-, ...
 }:
 
-python3Packages.buildPythonPackage rec {
+python312Packages.buildPythonPackage rec {
   pname = "ark-pixel-font";
-  version = "2023.11.26";
+  version = "2024.04.05";
 
   src = fetchFromGitHub {
     owner = "TakWolf";
     repo = pname;
     rev = version;
-    hash = "sha256-6a9wNmcXlEesPthpMt+GrWyO3x6WVtemVTXP8rbWmLk=";
+    hash = "sha256-G34cu/mSt/p8UPJt+Q1T2qy6d9LGgT1Jslt9syRz5eo=";
   };
 
   format = "other";
 
-  nativeBuildInputs = with python3Packages; [
+  nativeBuildInputs = with python312Packages; [
     pixel-font-builder
     unidata-blocks
     character-encoding-utils
diff --git a/pkgs/by-name/as/asahi-bless/package.nix b/pkgs/by-name/as/asahi-bless/package.nix
new file mode 100644
index 0000000000000..96943722a3c52
--- /dev/null
+++ b/pkgs/by-name/as/asahi-bless/package.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchCrate
+, rustPlatform
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "asahi-bless";
+  version = "0.3.0";
+
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-pgl424SqeHODsjGwNRJtVHT6sKRlYxlXl3esEKK02jc=";
+  };
+
+  cargoHash = "sha256-ilblP8nqb/eY0+9Iua298M7NQKv+IwtdliGd9ZYAVaM=";
+  cargoDepsName = pname;
+
+  meta = with lib; {
+    description = "A tool to select active boot partition on ARM Macs";
+    homepage = "https://crates.io/crates/asahi-bless";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lukaslihotzki ];
+    mainProgram = "asahi-bless";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/as/asahi-btsync/package.nix b/pkgs/by-name/as/asahi-btsync/package.nix
new file mode 100644
index 0000000000000..2b01e757086b8
--- /dev/null
+++ b/pkgs/by-name/as/asahi-btsync/package.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchCrate
+, rustPlatform
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "asahi-btsync";
+  version = "0.2.0";
+
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-jp05WcwY1cWh4mBQj+3jRCZoG32OhDvTB84hOAGemX8=";
+  };
+
+  cargoHash = "sha256-XsgWqdwb0DDsK6HkaoVGQB/mm1U1TVzJM5q/gt9GryA=";
+  cargoDepsName = pname;
+
+  meta = with lib; {
+    description = "A tool to sync Bluetooth pairing keys with macos on ARM Macs";
+    homepage = "https://crates.io/crates/asahi-btsync";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lukaslihotzki ];
+    mainProgram = "asahi-btsync";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/as/asahi-nvram/package.nix b/pkgs/by-name/as/asahi-nvram/package.nix
new file mode 100644
index 0000000000000..05f37e9c5cce7
--- /dev/null
+++ b/pkgs/by-name/as/asahi-nvram/package.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchCrate
+, rustPlatform
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "asahi-nvram";
+  version = "0.2.1";
+
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-bFUFjHVTYj0eUmhijraOdeCvAt2UGX8+yyvooYN1Uo0=";
+  };
+
+  cargoHash = "sha256-WhySIQew8xxdwXLWkpvTYQZFiqCEPjEAjr7NVxfjDkU=";
+  cargoDepsName = pname;
+
+  meta = with lib; {
+    description = "A tool to read and write nvram variables on ARM Macs";
+    homepage = "https://crates.io/crates/asahi-nvram";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lukaslihotzki ];
+    mainProgram = "asahi-nvram";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/as/asahi-wifisync/package.nix b/pkgs/by-name/as/asahi-wifisync/package.nix
new file mode 100644
index 0000000000000..deeac6d4b17eb
--- /dev/null
+++ b/pkgs/by-name/as/asahi-wifisync/package.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchCrate
+, rustPlatform
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "asahi-wifisync";
+  version = "0.2.0";
+
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-wKd6rUUnegvl6cHODVQlllaOXuAGlmwx9gr73I/2l/c=";
+  };
+
+  cargoHash = "sha256-UF1T0uAFO/ydTWigYXOP9Ju1qgV1oBmJuXSq4faSzJM=";
+  cargoDepsName = pname;
+
+  meta = with lib; {
+    description = "A tool to sync Wifi passwords with macos on ARM Macs";
+    homepage = "https://crates.io/crates/asahi-wifisync";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lukaslihotzki ];
+    mainProgram = "asahi-wifisync";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/as/ast-grep/package.nix b/pkgs/by-name/as/ast-grep/package.nix
index b3489e540f9d0..8a57b15fe1b25 100644
--- a/pkgs/by-name/as/ast-grep/package.nix
+++ b/pkgs/by-name/as/ast-grep/package.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ast-grep";
-  version = "0.20.2";
+  version = "0.20.3";
 
   src = fetchFromGitHub {
     owner = "ast-grep";
     repo = "ast-grep";
     rev = version;
-    hash = "sha256-hq5C6VMnkJ/Y75y7i5ipTUE7s5HsLnmomyFZJlQp/5Y=";
+    hash = "sha256-R8xzj6QcLXdttk7fxqLmJht3vSGryWKf2/Swod4R23w=";
   };
 
-  cargoHash = "sha256-klQa8LB473tB3slDfA7p3SSzXBnzhCRZWeIeHskm71c=";
+  cargoHash = "sha256-490NoWXvGv8vvW0oHYlal/dIPq9y99At9mepDTcEWko=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/by-name/au/audiness/package.nix b/pkgs/by-name/au/audiness/package.nix
index 1909d5411e624..06d3e4c49a947 100644
--- a/pkgs/by-name/au/audiness/package.nix
+++ b/pkgs/by-name/au/audiness/package.nix
@@ -1,33 +1,37 @@
-{ lib
-, fetchFromGitHub
-, python3
+{
+  lib,
+  fetchFromGitHub,
+  python3,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "audiness";
-  version = "0.3.1";
+  version = "0.3.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "audiusGmbH";
     repo = "audiness";
     rev = "refs/tags/${version}";
-    hash = "sha256-r+xWwXRKuTp5ifUUlF1K6BIVWh67hNLMBKBB7wnLLAM=";
+    hash = "sha256-vc2k3oEMTgzm/C6z6BieRrT3cSP0IkY+D3RXkNGaZTE=";
   };
 
-  nativeBuildInputs = with python3.pkgs; [
-    poetry-core
-  ];
+  pythonRelaxDeps = [ "validators" ];
 
-  propagatedBuildInputs = with python3.pkgs; [
-    pytenable
-    typer
-    validators
-  ] ++ typer.optional-dependencies.all;
+  build-system = with python3.pkgs; [ poetry-core ];
 
-  pythonImportsCheck = [
-    "audiness"
-  ];
+  nativeBuildInputs = with python3.pkgs; [ pythonRelaxDepsHook ];
+
+  dependencies =
+    with python3.pkgs;
+    [
+      pytenable
+      typer
+      validators
+    ]
+    ++ typer.optional-dependencies.all;
+
+  pythonImportsCheck = [ "audiness" ];
 
   meta = with lib; {
     description = "CLI tool to interact with Nessus";
diff --git a/pkgs/by-name/au/audio-sharing/package.nix b/pkgs/by-name/au/audio-sharing/package.nix
index 4fbf8a54036f5..d773720efd400 100644
--- a/pkgs/by-name/au/audio-sharing/package.nix
+++ b/pkgs/by-name/au/audio-sharing/package.nix
@@ -1,5 +1,6 @@
 { appstream-glib
 , cargo
+, dbus
 , desktop-file-utils
 , fetchFromGitLab
 , git
@@ -16,7 +17,7 @@
 , rustPlatform
 , rustc
 , stdenv
-, wrapGAppsHook
+, wrapGAppsHook4
 }:
 stdenv.mkDerivation (finalAttrs: {
   pname = "audio-sharing";
@@ -46,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: {
     pkg-config
     python3
     rustc
-    wrapGAppsHook
+    wrapGAppsHook4
   ] ++ (with rustPlatform; [
     cargoSetupHook
   ]);
@@ -59,6 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
     gst_all_1.gstreamer
     gtk4
     libadwaita
+    dbus
   ];
 
   passthru = {
diff --git a/pkgs/by-name/ba/bashly/Gemfile.lock b/pkgs/by-name/ba/bashly/Gemfile.lock
index 0021014b37284..b7d336769261e 100644
--- a/pkgs/by-name/ba/bashly/Gemfile.lock
+++ b/pkgs/by-name/ba/bashly/Gemfile.lock
@@ -1,7 +1,7 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    bashly (1.1.1)
+    bashly (1.1.10)
       colsole (>= 0.8.1, < 2)
       completely (~> 0.6.1)
       filewatcher (~> 2.0)
@@ -11,7 +11,7 @@ GEM
       psych (>= 3.3.2, < 7)
       tty-markdown (~> 0.7)
     colsole (1.0.0)
-    completely (0.6.1)
+    completely (0.6.2)
       colsole (>= 0.8.1, < 2)
       mister_bin (~> 0.7)
     docopt_ng (0.7.1)
@@ -27,11 +27,11 @@ GEM
     module_methods (0.1.0)
     pastel (0.8.0)
       tty-color (~> 0.5)
-    psych (5.1.1.1)
+    psych (5.1.2)
       stringio
     rexml (3.2.6)
-    rouge (4.1.3)
-    stringio (3.0.8)
+    rouge (4.2.1)
+    stringio (3.1.0)
     strings (0.2.1)
       strings-ansi (~> 0.2)
       unicode-display_width (>= 1.5, < 3.0)
@@ -45,7 +45,7 @@ GEM
       strings (~> 0.2.0)
       tty-color (~> 0.5)
       tty-screen (~> 0.8)
-    tty-screen (0.8.1)
+    tty-screen (0.8.2)
     unicode-display_width (2.5.0)
     unicode_utils (1.4.0)
 
diff --git a/pkgs/by-name/ba/bashly/gemset.nix b/pkgs/by-name/ba/bashly/gemset.nix
index e24c0b3483d76..234cd93b159d0 100644
--- a/pkgs/by-name/ba/bashly/gemset.nix
+++ b/pkgs/by-name/ba/bashly/gemset.nix
@@ -5,10 +5,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1rhzbpv8j5qcm5a84m4vzrryb0j8z90q6djbpid4ay2fr492kvkq";
+      sha256 = "1kdqpnkwgmb6kbrq9fyazj0jh0dh8srh86xjk92xrvgfps1kh5sy";
       type = "gem";
     };
-    version = "1.1.1";
+    version = "1.1.10";
   };
   colsole = {
     groups = ["default"];
@@ -26,10 +26,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "01nk1cigb09z6rjy41qrhqf58cgpqm43xwjdkz33mfmwrnz04cw1";
+      sha256 = "12vf279w44d520vw28drxyi05wi1hyrg262ifjlhk9chjrnzcc7k";
       type = "gem";
     };
-    version = "0.6.1";
+    version = "0.6.2";
   };
   docopt_ng = {
     groups = ["default"];
@@ -121,10 +121,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0wjzrkssjfjpynij5dpycyflhqbjvi1gc2j73xgq3b196s1d3c24";
+      sha256 = "0s5383m6004q76xm3lb732bp4sjzb6mxb6rbgn129gy2izsj4wrk";
       type = "gem";
     };
-    version = "5.1.1.1";
+    version = "5.1.2";
   };
   rexml = {
     groups = ["default"];
@@ -141,20 +141,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "19drl3x8fw65v3mpy7fk3cf3dfrywz5alv98n2rm4pp04vdn71lw";
+      sha256 = "1zd1pdldi6h8x27dqim7cy8m69xr01aw5c8k1zhkz497n4np6wgk";
       type = "gem";
     };
-    version = "4.1.3";
+    version = "4.2.1";
   };
   stringio = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0ix96dxbjqlpymdigb4diwrifr0bq7qhsrng95fkkp18av326nqk";
+      sha256 = "063psvsn1aq6digpznxfranhcpmi0sdv2jhra5g0459sw0x2dxn1";
       type = "gem";
     };
-    version = "3.0.8";
+    version = "3.1.0";
   };
   strings = {
     dependencies = ["strings-ansi" "unicode-display_width" "unicode_utils"];
@@ -203,10 +203,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "18jr6s1cg8yb26wzkqa6874q0z93rq0y5aw092kdqazk71y6a235";
+      sha256 = "0l4vh6g333jxm9lakilkva2gn17j6gb052626r1pdbmy2lhnb460";
       type = "gem";
     };
-    version = "0.8.1";
+    version = "0.8.2";
   };
   unicode-display_width = {
     groups = ["default"];
diff --git a/pkgs/by-name/bi/bitbake-language-server/package.nix b/pkgs/by-name/bi/bitbake-language-server/package.nix
index e73c78124ac27..3789d3bd9ba22 100644
--- a/pkgs/by-name/bi/bitbake-language-server/package.nix
+++ b/pkgs/by-name/bi/bitbake-language-server/package.nix
@@ -1,19 +1,20 @@
 { lib
 , nix-update-script
 , python3
+, oelint-adv
 , fetchFromGitHub
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "bitbake-language-server";
-  version = "0.0.8";
+  version = "0.0.14";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Freed-Wu";
     repo = pname;
     rev = version;
-    hash = "sha256-WJpa2LP95vrJG/OjiLSx8zEPO5ZOw66M5s3r2dufQJA=";
+    hash = "sha256-aGj9lW420A+iTQWSCdIITAJj3p89VUkPvdhQ/0M6uXo=";
   };
 
   nativeBuildInputs = with python3.pkgs; [
@@ -22,18 +23,17 @@ python3.pkgs.buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with python3.pkgs; [
-    oelint-parser
     pygls
-  ];
+  ] ++ [ oelint-adv ];
 
   passthru.updateScript = nix-update-script { };
 
-  meta = with lib; {
+  meta = {
     description = "Language server for bitbake";
     mainProgram = "bitbake-language-server";
     homepage = "https://github.com/Freed-Wu/bitbake-language-server";
-    changelog = "https://github.com/Freed-Wu/bitbake-language-server/releases/tag/v${version}";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ otavio ];
+    changelog = "https://github.com/Freed-Wu/bitbake-language-server/releases/tag/${version}";
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.otavio ];
   };
 }
diff --git a/pkgs/by-name/bl/bluetuith/package.nix b/pkgs/by-name/bl/bluetuith/package.nix
index 548c103bbbf42..42d32dc7893e5 100644
--- a/pkgs/by-name/bl/bluetuith/package.nix
+++ b/pkgs/by-name/bl/bluetuith/package.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "bluetuith";
-  version = "0.2.1";
+  version = "0.2.2";
 
   src = fetchFromGitHub {
     owner = "darkhz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-KeIhul6xeak2UR+MadKC2j1uHiPwdsh5bjGr1uvOL/4=";
+    sha256 = "sha256-JwPTFMimGDZnESx6l72cK545rzyDWWTBU66t9bU49w0=";
   };
 
-  vendorHash = "sha256-XthLmfHmkTsI4l5Sz5P1qeuxamVTLX7i+Wf73n7iv1M=";
+  vendorHash = "sha256-A0hUenuji3bfJghLRM2mvFbusrHm+tQ+LeRGzIETpbs=";
 
   CGO_ENABLED = 0;
 
diff --git a/pkgs/by-name/bo/boogie/package.nix b/pkgs/by-name/bo/boogie/package.nix
index c1ffcb79b0f1b..784a21cbd82cf 100644
--- a/pkgs/by-name/bo/boogie/package.nix
+++ b/pkgs/by-name/bo/boogie/package.nix
@@ -2,13 +2,13 @@
 
 buildDotnetModule rec {
   pname = "Boogie";
-  version = "3.1.3";
+  version = "3.1.4";
 
   src = fetchFromGitHub {
     owner = "boogie-org";
     repo = "boogie";
     rev = "v${version}";
-    sha256 = "sha256-vGlRexnYdL14iMOJvGcavI/ZQjAlGu08VeeE2SXujOw=";
+    sha256 = "sha256-XKggNmyhY3ZwbmMvi78MPz36iulW1QPJRENW/LGgdts=";
   };
 
   projectFile = [ "Source/Boogie.sln" ];
diff --git a/pkgs/by-name/bp/bpftop/package.nix b/pkgs/by-name/bp/bpftop/package.nix
index cb965fd67a74e..fed58a24f649e 100644
--- a/pkgs/by-name/bp/bpftop/package.nix
+++ b/pkgs/by-name/bp/bpftop/package.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "bpftop";
-  version = "0.4.0";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
     owner = "Netflix";
     repo = "bpftop";
     rev = "v${version}";
-    hash = "sha256-N5sszFVU1nMS6QQENa9JcgFKSSWs07bWn6usvV/QmX4=";
+    hash = "sha256-OLPebPzb2FKiV1Gc8HTK3sXU2UDMyhFA/XLix/lWxgU=";
   };
 
-  cargoHash = "sha256-yVNql4fSU1HhLKy8HYUbNnMnxgr/gPuqKol5O0ZDQlY=";
+  cargoHash = "sha256-UYCbNECsos71cwwE5avtaijPaPGhLEU7J9i84wPkObI=";
 
   buildInputs = [
     elfutils
diff --git a/pkgs/by-name/br/brainstem/package.nix b/pkgs/by-name/br/brainstem/package.nix
new file mode 100644
index 0000000000000..dcfe3d523dc8e
--- /dev/null
+++ b/pkgs/by-name/br/brainstem/package.nix
@@ -0,0 +1,90 @@
+{ stdenv
+, lib
+, autoPatchelfHook
+, fetchzip
+, curl
+, systemd
+, zlib
+, writeText
+, withUpdater ? true
+, ...
+}:
+
+let
+  version = "2.10.5";
+  # Upstream has a udev.sh script asking for mode and group, but with uaccess we
+  # don't need any of that and can make it entirely static.
+  # For any rule adding the uaccess tag to be effective, the name of the file it
+  # is defined in has to lexically precede 73-seat-late.rules.
+  udevRule = writeText "60-brainstem.rules" ''
+    # Acroname Brainstem control devices
+    SUBSYSTEM=="usb", ATTRS{idVendor}=="24ff", TAG+="uaccess"
+
+    # Acroname recovery devices (pb82, pb242, pb167)
+    SUBSYSTEM=="tty", ATTRS{idVendor}=="0424", ATTRS{idProduct}=="274e", TAG+="uaccess"
+    SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", TAG+="uaccess"
+    KERNEL=="hidraw*", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0130", TAG+="uaccess"
+  '';
+
+  src = fetchzip {
+    url = "https://acroname.com/sites/default/files/software/brainstem_sdk/${version}/brainstem_sdk_${version}_Ubuntu_LTS_22.04_x86_64.tgz";
+    hash = "sha256-S6u9goxTMCI12sffP/WKUF7bv0pLeNmNog7Hle+vpR4=";
+    # There's no "brainstem" parent directory in the archive.
+    stripRoot = false;
+  };
+in
+
+stdenv.mkDerivation {
+  pname = "brainstem";
+  inherit version src;
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+  buildInputs = [
+    # libudev
+    (lib.getLib systemd)
+    # libstdc++.so libgcc_s.so
+    stdenv.cc.cc.lib
+  ] ++ lib.optionals withUpdater [
+    # libcurl.so.4
+    curl
+    # libz.so.1
+    zlib
+  ];
+
+  # Unpack the CLI tools, documentation, library and C headers.
+  # There's also a python .whl, containing more libraries, which might be used
+  # to support more architectures, too, but let's only do that if we need it.
+  installPhase = ''
+    mkdir -p $out/bin
+    install -m744 cli/AcronameHubCLI $out/bin
+    install -m744 cli/Updater $out/bin/AcronameHubUpdater
+
+    mkdir -p $out/lib/udev/rules.d
+    cp ${udevRule} $out/lib/udev/rules.d/60-brainstem.rules
+
+    mkdir -p $doc
+    cp docs/* $doc/
+    cp {license,version}.txt $doc/
+
+    mkdir -p $lib/lib
+    cp api/lib/libBrainStem2.* $lib/lib
+
+    mkdir -p $dev/include
+    cp -R api/lib/BrainStem2 $dev/include/
+  '';
+
+  outputs = [ "out" "lib" "dev" "doc" ];
+
+  meta = with lib; {
+    description = "BrainStem Software Development Kit";
+    longDescription = ''
+      The BrainStem SDK provides a library to access and control Acroname smart
+      USB switches, as well as a CLI interface, and a firmware updater.
+    '';
+    homepage = "https://acroname.com/software/brainstem-development-kit";
+    platforms = [ "x86_64-linux" ];
+    license = licenses.unfree;
+    maintainers = with maintainers; [ flokli ];
+    mainProgram = "AcronameHubCLI";
+  };
+}
diff --git a/pkgs/by-name/br/bruno/package.nix b/pkgs/by-name/br/bruno/package.nix
index 6cfc191f895f2..921cf82165642 100644
--- a/pkgs/by-name/br/bruno/package.nix
+++ b/pkgs/by-name/br/bruno/package.nix
@@ -16,7 +16,6 @@
 , npm-lockfile-fix
 , overrideSDK
 , darwin
-, fetchpatch
 }:
 
 let
@@ -25,26 +24,18 @@ let
     buildNpmPackage.override {
       stdenv = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv;
     };
-  # update package-lock to fix build errors. this will be resolved in the
-  # next patch version of Bruno at which point the patch can be removed entirely.
-  # upstream PR: https://github.com/usebruno/bruno/pull/1894
-  brunoLockfilePatch_1_12_2 = fetchpatch {
-    url = "https://github.com/usebruno/bruno/pull/1894/commits/e3bab23446623315ee674283285a86e210778fe7.patch";
-    hash = "sha256-8rYBvgu9ZLXjb9AFyk4yMBVjcyFPmlNi66YEaQGQaKw=";
-  };
 in
 buildNpmPackage' rec {
   pname = "bruno";
-  version = "1.12.2";
+  version = "1.12.3";
 
   src = fetchFromGitHub {
     owner = "usebruno";
     repo = "bruno";
     rev = "v${version}";
-    hash = "sha256-C/WeEloUGF0PEfeanm6lHe/MgpcF+g/ZY2tnqXFl9LA=";
+    hash = "sha256-ubvsTJ/MSEguVeJg91LvgARWte+p5MHdqhXIVqbyPhQ=";
 
     postFetch = ''
-      patch -d $out <${brunoLockfilePatch_1_12_2}
       ${lib.getExe npm-lockfile-fix} $out/package-lock.json
     '';
   };
diff --git a/pkgs/by-name/bu/buckle/package.nix b/pkgs/by-name/bu/buckle/package.nix
new file mode 100644
index 0000000000000..bc34858d52914
--- /dev/null
+++ b/pkgs/by-name/bu/buckle/package.nix
@@ -0,0 +1,35 @@
+{ lib, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "buckle";
+  version = "1.1.0";
+  cargoHash = "sha256-O90/Xo9WjLVGFEkh6S6IyvanceRBJHneEret6W8e5Yc=";
+
+  src = fetchFromGitHub {
+    owner = "benbrittain";
+    repo = "buckle";
+    rev = "v${version}";
+    sha256 = "sha256-eWhcDzw+6I5N0dse5avwhcQ/y6YZ6b3QKyBwWBrA/xo=";
+  };
+
+  checkFlags = [
+    # Both tests access the network.
+    "--skip=test_buck2_latest"
+    "--skip=test_buck2_specific_version"
+  ];
+
+  meta = with lib; {
+    description = "A buck2 launcher";
+    longDescription = ''
+      Buckle is a launcher for [Buck2](https://buck2.build). It manages
+      Buck2 on a per-project basis. This enables a project or team to do
+      seamless upgrades of their build system tooling. It is designed to
+      be minimally intrusive. Buckle only manages fetching Buck2 and
+      enforcing the prelude is upgraded in sync.
+    '';
+    homepage = "https://github.com/benbrittain/buckle";
+    license = licenses.mit;
+    maintainers = with maintainers; [ cbarrete ];
+    mainProgram = "buckle";
+  };
+}
diff --git a/pkgs/by-name/c2/c2patool/package.nix b/pkgs/by-name/c2/c2patool/package.nix
new file mode 100644
index 0000000000000..d715a062568af
--- /dev/null
+++ b/pkgs/by-name/c2/c2patool/package.nix
@@ -0,0 +1,66 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, libiconv
+, darwin
+, openssl
+, pkg-config
+, git
+}:
+rustPlatform.buildRustPackage rec {
+  pname = "c2patool";
+  version = "0.8.2";
+
+  src = fetchFromGitHub {
+    owner = "contentauth";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-fVH7itpVPg0vkgKSWa9x61yttLx73gTeLT5+R4aSOFE=";
+  };
+
+  cargoHash = "sha256-oNNfQIwl7QprrlpIZrTYVGp/UMWANVr3b3ALFKupyy8=";
+
+  # use the non-vendored openssl
+  OPENSSL_NO_VENDOR = 1;
+
+  nativeBuildInputs = [
+    git
+    pkg-config
+  ];
+  buildInputs = [
+    openssl
+  ] ++ lib.optional stdenv.isDarwin [
+    libiconv
+    darwin.apple_sdk.frameworks.CoreServices
+    darwin.apple_sdk.frameworks.Carbon
+  ];
+
+  checkFlags = [
+    # These tests rely on additional executables to be compiled to "target/debug/".
+    "--skip=test_fails_for_external_signer_failure"
+    "--skip=test_fails_for_external_signer_success_without_stdout"
+    "--skip=test_succeed_using_example_signer"
+
+    # These tests require network access to "http://timestamp.digicert.com", which is disabled in a sandboxed build.
+    "--skip=test_manifest_config"
+    "--skip=test_fails_for_not_found_external_signer"
+    "--skip=tool_embed_jpeg_report"
+    "--skip=tool_embed_jpeg_with_ingredients_report"
+    "--skip=tool_similar_extensions_match"
+    "--skip=tool_test_manifest_ingredient_json"
+  ];
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/c2patool --version | grep "${version}"
+  '';
+
+  meta = with lib; {
+    description = "Command line tool for displaying and adding C2PA manifests";
+    homepage = "https://github.com/contentauth/c2patool";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ ok-nick ];
+    mainProgram = "c2patool";
+  };
+}
diff --git a/pkgs/by-name/ca/cargo-autoinherit/package.nix b/pkgs/by-name/ca/cargo-autoinherit/package.nix
new file mode 100644
index 0000000000000..71beb30ee32fc
--- /dev/null
+++ b/pkgs/by-name/ca/cargo-autoinherit/package.nix
@@ -0,0 +1,25 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-autoinherit";
+  version = "0.1.4";
+
+  src = fetchFromGitHub {
+    owner = "mainmatter";
+    repo = "cargo-autoinherit";
+    rev = "v${version}";
+    hash = "sha256-BuZDCd4SwSYg5eKV61L3RpPVmq5NZDAOc9zOz5QiSNI=";
+  };
+
+  cargoHash = "sha256-9hhrVkC1xB2E/vatkiM4PIJyXq+0GDoqlgXZXc8WehU=";
+
+  meta = with lib; {
+    description = "Automatically DRY up your Rust dependencies";
+    homepage = "https://github.com/mainmatter/cargo-autoinherit";
+    license = with licenses; [ asl20 /* OR */ mit ];
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ matthiasbeyer ];
+    mainProgram = "cargo-autoinherit";
+  };
+}
+
diff --git a/pkgs/by-name/ca/cargo-expand/package.nix b/pkgs/by-name/ca/cargo-expand/package.nix
index 62b88be9618c8..88d5964330096 100644
--- a/pkgs/by-name/ca/cargo-expand/package.nix
+++ b/pkgs/by-name/ca/cargo-expand/package.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-expand";
-  version = "1.0.81";
+  version = "1.0.82";
 
   src = fetchFromGitHub {
     owner = "dtolnay";
     repo = pname;
     rev = version;
-    hash = "sha256-ZOoMWvtuLDhbJu+qzVPHGTCqh2b3PHUggfxNtUW1DoU=";
+    hash = "sha256-3NukL5DyyBMR1yiSP7SWhREP/vFl+Zd2gsGxC//7edI=";
   };
 
-  cargoHash = "sha256-cTz9ZR+79yPqTaDqXjSlqXd7NxHDl6Q75N26z+vi7ck=";
+  cargoHash = "sha256-niKg9IxNranrm52bXbp231cx/47kY+fd2ycdkudAWVo=";
 
   meta = with lib; {
     description = "Cargo subcommand to show result of macro expansion";
diff --git a/pkgs/by-name/ca/cargo-make/package.nix b/pkgs/by-name/ca/cargo-make/package.nix
index 0c8aaec637f36..a0c64e2c4f940 100644
--- a/pkgs/by-name/ca/cargo-make/package.nix
+++ b/pkgs/by-name/ca/cargo-make/package.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-make";
-  version = "0.37.10";
+  version = "0.37.11";
 
   src = fetchFromGitHub {
     owner = "sagiegurari";
     repo = "cargo-make";
     rev = version;
-    hash = "sha256-qahmRwRjwefkp21f4nsIR4THGibkQ8+20qVmQmJ7+Vk=";
+    hash = "sha256-a8iNMvMB52PEFVQq4Hv3bnIrA8k5p1a5M7JBp67SUDk=";
   };
 
-  cargoHash = "sha256-NTi+1ULK+k1JIP7z3/3v7gPUxXgliq3i8gtJQVLDGEY=";
+  cargoHash = "sha256-UrVSGxDRhD3Tm25cUYOkkf/A2mgLZAyBImu1AeNOdX4=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/by-name/ca/cargo-shear/package.nix b/pkgs/by-name/ca/cargo-shear/package.nix
new file mode 100644
index 0000000000000..badd2318ff03b
--- /dev/null
+++ b/pkgs/by-name/ca/cargo-shear/package.nix
@@ -0,0 +1,24 @@
+{ fetchFromGitHub, lib, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-shear";
+  version = "0.0.24";
+
+  src = fetchFromGitHub {
+    owner = "Boshen";
+    repo = "cargo-shear";
+    rev = "v${version}";
+    sha256 = "sha256-7eBFDmeFOXqZhNE4RDlIq991xEoCGL6XLMmUQuLJvrE=";
+  };
+
+  cargoSha256 = "sha256-DQjLW6NtUPERT82zIlrGRk3FffU/EfLBMgAeFfFdDxE=";
+
+  meta = with lib; {
+    description = "Detect and remove unused dependencies from Cargo.toml";
+    mainProgram = "cargo-shear";
+    homepage = "https://github.com/Boshen/cargo-shear";
+    changelog = "https://github.com/Boshen/cargo-shear/blob/${src.rev}/CHANGELOG.md";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ uncenter ];
+  };
+}
diff --git a/pkgs/by-name/ca/cargo-unfmt/package.nix b/pkgs/by-name/ca/cargo-unfmt/package.nix
new file mode 100644
index 0000000000000..3a2a16dfaaf6f
--- /dev/null
+++ b/pkgs/by-name/ca/cargo-unfmt/package.nix
@@ -0,0 +1,34 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, darwin
+, libiconv
+}:
+
+rustPlatform.buildRustPackage {
+  pname = "cargo-unfmt";
+  version = "0.3.3";
+
+  src = fetchFromGitHub {
+    owner = "fprasx";
+    repo = "cargo-unfmt";
+    rev = "0f4882f65d248e32812e0e854fa11d7db60921e7";
+    hash = "sha256-nvn4nZkkNQQvzShwoxtFqHeyhXQPm2GJoTKBI+MkFgM=";
+  };
+
+  cargoHash = "sha256-mMeHTYCUIZR3jVvTxfyH4I9wGfUdCWcyn9djnksAY8k=";
+
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv darwin.apple_sdk.frameworks.Security ];
+
+  # Doc tests are broken on 0.3.3
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Unformat code into perfect rectangles";
+    homepage = "https://github.com/fprasx/cargo-unfmt";
+    license = licenses.gpl3Plus;
+    mainProgram = "cargo-unfmt";
+    maintainers = with maintainers; [ cafkafk ];
+  };
+}
diff --git a/pkgs/by-name/cc/cc1541/package.nix b/pkgs/by-name/cc/cc1541/package.nix
new file mode 100644
index 0000000000000..f0f5fd7a02ca9
--- /dev/null
+++ b/pkgs/by-name/cc/cc1541/package.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, fetchFromBitbucket
+, asciidoc
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "cc1541";
+  version = "4.1";
+
+  src = fetchFromBitbucket {
+    owner = "ptv_claus";
+    repo = "cc1541";
+    rev = finalAttrs.version;
+    hash = "sha256-b8cEGC3WxrjebQjed/VD9SIWkiQpNaE2yW+bQRCtmSs=";
+  };
+
+  env.ENABLE_MAN = 1;
+
+  makeFlags = [ "prefix=$(out)" ];
+
+  nativeBuildInputs = [ asciidoc ];
+
+  doInstallCheck = true;
+
+  installCheckPhase = ''
+    runHook preCheck
+    make test
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "Tool for creating Commodore 1541 Floppy disk images in D64, D71 or D81 format";
+    homepage = "https://bitbucket.org/ptv_claus/cc1541/src/master/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ matthewcroughan ];
+    mainProgram = "cc1541";
+    platforms = platforms.all;
+  };
+})
diff --git a/pkgs/by-name/ce/centrifugo/package.nix b/pkgs/by-name/ce/centrifugo/package.nix
index 1ad075da67d76..6069eeb4b79d4 100644
--- a/pkgs/by-name/ce/centrifugo/package.nix
+++ b/pkgs/by-name/ce/centrifugo/package.nix
@@ -14,16 +14,16 @@ let
 in
 buildGoModule rec {
   pname = "centrifugo";
-  version = "5.3.0";
+  version = "5.3.1";
 
   src = fetchFromGitHub {
     owner = "centrifugal";
     repo = "centrifugo";
     rev = "v${version}";
-    hash = "sha256-QA10JOy/EDzmLgQKnnPOYL5GpxfYjYmtA394JZjdrAo=";
+    hash = "sha256-QKHRIH61xNpQaelrupO9fzmN6XESPU1d/aXCbqYgJXs=";
   };
 
-  vendorHash = "sha256-fomEiAWIr9Mp0E1kdZlVVSrs2yw3ydMXSmjN/31RzCA=";
+  vendorHash = "sha256-fceoOYrDk5puImSckTkEo3hPCpbQE5t8b81sXnLid/Q=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/by-name/ce/cert-viewer/package.nix b/pkgs/by-name/ce/cert-viewer/package.nix
index 6fcead475a360..df9032dfbec74 100644
--- a/pkgs/by-name/ce/cert-viewer/package.nix
+++ b/pkgs/by-name/ce/cert-viewer/package.nix
@@ -5,21 +5,21 @@
 
 buildGoModule rec {
   pname = "cert-viewer";
-  version = "0.9.0";
+  version = "0.9.1";
 
   src = fetchFromGitHub {
     owner = "mgit-at";
     repo = "cert-viewer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-q4FLKH0ZA/79zLo7dt+CSOjfKyygTiQKSuungQTtue0=";
+    hash = "sha256-6IPr2BG3y/7cmc2WkeeFDpQ59GNU1eOhhm49HE2w0cA=";
   };
 
-  vendorHash = "sha256-55zDUAe5s+03/OnDcK1DqmMUpFO2sBaVjEk6vbrHgzY=";
+  vendorHash = "sha256-jNT04bYH5L/Zcfvel673zr2UJLayCO443tvBGZjrBZk=";
 
   meta = {
     description = "Admin tool to view and inspect multiple x509 Certificates";
     homepage = "https://github.com/mgit-at/cert-viewer";
-    license = lib.licenses.apsl20;
+    license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.mkg20001 ];
     mainProgram = "cert-viewer";
   };
diff --git a/pkgs/by-name/ch/changelog-d/package.nix b/pkgs/by-name/ch/changelog-d/package.nix
index 10d4ad1ae3558..380f4a801afae 100644
--- a/pkgs/by-name/ch/changelog-d/package.nix
+++ b/pkgs/by-name/ch/changelog-d/package.nix
@@ -13,6 +13,7 @@ let
   haskellModifications =
     lib.flip lib.pipe [
       addCompletions
+      haskell.lib.doJailbreak
       haskell.lib.justStaticExecutables
     ];
 
diff --git a/pkgs/by-name/ch/charm-freeze/package.nix b/pkgs/by-name/ch/charm-freeze/package.nix
new file mode 100644
index 0000000000000..f3efac03eb98b
--- /dev/null
+++ b/pkgs/by-name/ch/charm-freeze/package.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "charm-freeze";
+  version = "0.1.6";
+
+  src = fetchFromGitHub {
+    owner = "charmbracelet";
+    repo = "freeze";
+    rev = "v${version}";
+    hash = "sha256-HLlMUOLDvNLVl4dvtyRwuLhp3pOlpm/naUXK2NiIAg8=";
+  };
+
+  vendorHash = "sha256-AUFzxmQOb/h0UgcprY09IVI7Auitn3JTDU/ptKicIAU=";
+
+  ldflags = [ "-s" "-w" "-X=main.Version=${version}" ];
+
+  meta = with lib; {
+    description = "A tool to generate images of code and terminal output";
+    mainProgram = "freeze";
+    homepage = "https://github.com/charmbracelet/freeze";
+    changelog = "https://github.com/charmbracelet/freeze/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ caarlos0 maaslalani ];
+  };
+}
diff --git a/pkgs/by-name/ch/chess-tui/package.nix b/pkgs/by-name/ch/chess-tui/package.nix
new file mode 100644
index 0000000000000..d37e1956bc8f1
--- /dev/null
+++ b/pkgs/by-name/ch/chess-tui/package.nix
@@ -0,0 +1,26 @@
+{ lib
+, fetchFromGitHub
+, rustPlatform
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "chess-tui";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "thomas-mauran";
+    repo = "chess-tui";
+    rev = "${version}";
+    hash = "sha256-If2xShHuqdCeasP12ZzwvGJSIKFmqJs0Hv1fBhJKoU4=";
+  };
+
+  cargoHash = "sha256-TT4lVAttlT3knufMslSVxInn9QM0QJ9jyklzwhRikWA=";
+
+  meta = with lib;{
+    description = "A chess TUI implementation in rust";
+    homepage = "https://github.com/thomas-mauran/chess-tui";
+    maintainers = with maintainers; [ ByteSudoer ];
+    license = licenses.mit;
+    mainProgram = "chess-tui";
+  };
+}
diff --git a/pkgs/by-name/cl/clipcat/package.nix b/pkgs/by-name/cl/clipcat/package.nix
index 1345482f0a38c..0ffb17d272736 100644
--- a/pkgs/by-name/cl/clipcat/package.nix
+++ b/pkgs/by-name/cl/clipcat/package.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "clipcat";
-  version = "0.16.4";
+  version = "0.16.5";
 
   src = fetchFromGitHub {
     owner = "xrelkd";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-gYg1czSwUm1zJUkw5SMk6C4yDfHcwjWnnHJftDLNvfs=";
+    hash = "sha256-/YoEUZ6/aFqlIPAWi95yZHVwLXHf/vsx8L3NdmZfiVk=";
   };
 
-  cargoHash = "sha256-e32DGV7/ueT25Lx318aGZEHRnUGxCn0J5/K3dgT02Ug=";
+  cargoHash = "sha256-O1jL2ett8aI8lEwnhAELAP5zphjqf9CFrdCn00V5ImQ=";
 
   nativeBuildInputs = [
     protobuf
diff --git a/pkgs/by-name/co/cockpit/package.nix b/pkgs/by-name/co/cockpit/package.nix
index 9ad68d2bf1e2e..f9a18b8a36fc5 100644
--- a/pkgs/by-name/co/cockpit/package.nix
+++ b/pkgs/by-name/co/cockpit/package.nix
@@ -44,13 +44,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "cockpit";
-  version = "314";
+  version = "315";
 
   src = fetchFromGitHub {
     owner = "cockpit-project";
     repo = "cockpit";
     rev = "refs/tags/${version}";
-    hash = "sha256-6iLfUqzBG/pvGNnzMJzMQqnNjPvKJtTHHCSBWtSwwFM=";
+    hash = "sha256-N6MDqhYQky80r9wSiDIPusg6iOpDh4S52pf337nojyY=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/by-name/co/codeium/package.nix b/pkgs/by-name/co/codeium/package.nix
index 923d4fce8f218..437df8439ed3a 100644
--- a/pkgs/by-name/co/codeium/package.nix
+++ b/pkgs/by-name/co/codeium/package.nix
@@ -13,10 +13,10 @@ let
   }.${system} or throwSystem;
 
   hash = {
-    x86_64-linux = "sha256-9r3v5xCYYoxfs3zY7/v8K3B5CxJPcNcEtkDU6kuvzGE=";
-    aarch64-linux = "sha256-Q/PktmEfTBX1ycK/7ebsJSE25FQ8dO+ejv+fAOKlNy8=";
-    x86_64-darwin = "sha256-vyv5oyMl9Itu434okNmgRX0A1UTX3ZxJ3Q56akpIbrU=";
-    aarch64-darwin = "sha256-H2ghAfRzDhbCyxrKmJ2ritkUuDeWZzINr8DROzbOyUQ=";
+    x86_64-linux = "sha256-AHjR6lHszYqZ2yC/uY2DmB67xMUFZliqI29Ptes2SoY=";
+    aarch64-linux = "sha256-2NYlec6gpVMJwZctEqwn5rQiTrb5PmaxEz3lQxF1qmk=";
+    x86_64-darwin = "sha256-OeMbO2lDK6XUF3ht+09ZWOL7UsEEVTrKyXOfhny8DhM=";
+    aarch64-darwin = "sha256-4CQvJkd3kI7XJz46QsSUBtWLmxDu7AcAJwRS3amv0SM=";
   }.${system} or throwSystem;
 
   bin = "$out/bin/codeium_language_server";
@@ -24,7 +24,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "codeium";
-  version = "1.8.16";
+  version = "1.8.22";
   src = fetchurl {
     name = "${finalAttrs.pname}-${finalAttrs.version}.gz";
     url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${finalAttrs.version}/language_server_${plat}.gz";
diff --git a/pkgs/by-name/co/colstr/package.nix b/pkgs/by-name/co/colstr/package.nix
new file mode 100644
index 0000000000000..a1ea23668277a
--- /dev/null
+++ b/pkgs/by-name/co/colstr/package.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, fetchFromGitea
+, nix-update-script
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "colstr";
+  version = "1.0.0";
+
+  src = fetchFromGitea {
+    domain = "git.sleeping.town";
+    owner = "wonder";
+    repo = "colstr";
+    rev = finalAttrs.version;
+    hash = "sha256-0V2S/yYu5L7qxkT4Zf18x9+cHoPMztFmgSywpxF8QqA=";
+  };
+
+  buildPhase = ''
+    runHook preBuild
+
+    eval ${stdenv.cc.targetPrefix}c++ main.cpp
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 a.out $out/bin/colstr
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = with lib; {
+    description = "Deterministically output each input argument in a color assigned to it";
+    homepage = "https://git.sleeping.town/wonder/colstr";
+    license = with licenses; [ cc0 ];
+    maintainers = with maintainers; [ annaaurora ];
+    mainProgram = "colstr";
+    platforms = platforms.all;
+  };
+})
diff --git a/pkgs/applications/video/corrscope/default.nix b/pkgs/by-name/co/corrscope/package.nix
index 8bd17d2f785e6..a9d83f1a22241 100644
--- a/pkgs/applications/video/corrscope/default.nix
+++ b/pkgs/by-name/co/corrscope/package.nix
@@ -1,49 +1,41 @@
-{ lib
-, mkDerivationWith
+{ stdenv
+, lib
 , python3Packages
 , fetchFromGitHub
-, fetchpatch
-, wrapQtAppsHook
 , ffmpeg
-, qtbase
+, libsForQt5
 , testers
 , corrscope
 }:
 
-mkDerivationWith python3Packages.buildPythonApplication rec {
+python3Packages.buildPythonApplication rec {
   pname = "corrscope";
-  version = "0.8.1";
-  format = "pyproject";
+  version = "0.9.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "corrscope";
     repo = "corrscope";
     rev = version;
-    hash = "sha256-pS7upOYZAjgR3lWxny8TNZEj3Rrbg+L90ANZWFO9UPQ=";
+    hash = "sha256-kOPhVm4epIhBSsgQVKNCoQ7DZcMG/b3sapxwwKo/V+U=";
   };
 
-  patches = [
-    # https://github.com/corrscope/corrscope/pull/446
-    (fetchpatch {
-      name = "remove-setuptools-dependency.patch";
-      url = "https://github.com/corrscope/corrscope/commit/70b123173a7a012d9f29d6d3a8960b85caf6cc79.patch";
-      hash = "sha256-YCtb7v8cGP0pdceAKeoempnRzw+LRKQqDb3AfN0z/9s=";
-    })
-  ];
-
   pythonRelaxDeps = [ "attrs" "ruamel.yaml" ];
 
-  nativeBuildInputs = [
+  nativeBuildInputs = (with libsForQt5; [
     wrapQtAppsHook
-  ] ++ (with python3Packages; [
+  ]) ++ (with python3Packages; [
     poetry-core
     pythonRelaxDepsHook
   ]);
 
   buildInputs = [
     ffmpeg
+  ] ++ (with libsForQt5; [
     qtbase
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isLinux [
+    qtwayland
+  ]);
 
   propagatedBuildInputs = with python3Packages; [
     appdirs
diff --git a/pkgs/by-name/cr/crc/package.nix b/pkgs/by-name/cr/crc/package.nix
index 48364a9d73ba4..ef9d7a173b263 100644
--- a/pkgs/by-name/cr/crc/package.nix
+++ b/pkgs/by-name/cr/crc/package.nix
@@ -7,16 +7,16 @@
 }:
 
 let
-  openShiftVersion = "4.14.12";
-  okdVersion = "4.14.0-0.okd-scos-2024-01-10-151818";
-  microshiftVersion = "4.14.12";
+  openShiftVersion = "4.15.3";
+  okdVersion = "4.15.0-0.okd-2024-02-23-163410";
+  microshiftVersion = "4.15.3";
   podmanVersion = "4.4.4";
   writeKey = "$(MODULEPATH)/pkg/crc/segment.WriteKey=cvpHsNcmGCJqVzf6YxrSnVlwFSAZaYtp";
-  gitCommit = "c43b172866bc039a2a23d6c88aeb398635dc16ef";
-  gitHash = "sha256-DVsXxgywPrrdxfmXh3JR8YpFkv1/Y2LvDZ9/2nVbclc=";
+  gitCommit = "b470b5f68269c93abee8d7139cbd3e3fe3419f93";
+  gitHash = "sha256-80B6eGPnAAeUdKzk9/8VDHjv9tUh85rZSki9PSzqVvg=";
 in
 buildGoModule rec {
-  version = "2.33.0";
+  version = "2.34.1";
   pname = "crc";
 
   src = fetchFromGitHub {
diff --git a/pkgs/by-name/cr/crossplane-cli/package.nix b/pkgs/by-name/cr/crossplane-cli/package.nix
index db921e806f293..c97d2080a28b0 100644
--- a/pkgs/by-name/cr/crossplane-cli/package.nix
+++ b/pkgs/by-name/cr/crossplane-cli/package.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "crossplane-cli";
-  version = "1.15.1";
+  version = "1.15.2";
 
   src = fetchFromGitHub {
     owner = "crossplane";
     repo = "crossplane";
     rev = "v${version}";
-    hash = "sha256-MuPJjVM8Nxm9PLTE3+7KGwmvXJTLfNj5RCh+/kHR0GM=";
+    hash = "sha256-jNaWedK9h4pP+0u1UDHoZ/7l6kVXA2g9Vs0036itk9Q=";
   };
 
-  vendorHash = "sha256-+e3NuSCvUgZANDB9LsvlQn3h9+L1NeQeURKDZd21reo=";
+  vendorHash = "sha256-vYbTkdX3L/AZN9vWUw8NzkPk16BwUzP8zJb22fnsoRo=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/by-name/cs/csvkit/package.nix b/pkgs/by-name/cs/csvkit/package.nix
index 2c30a921c0b10..6c4da10bfd523 100644
--- a/pkgs/by-name/cs/csvkit/package.nix
+++ b/pkgs/by-name/cs/csvkit/package.nix
@@ -5,7 +5,7 @@
 
 let
   pname = "csvkit";
-  version = "1.4.0";
+  version = "1.5.0";
   pythonEnv = python3;
 in
 pythonEnv.pkgs.buildPythonApplication {
@@ -14,7 +14,7 @@ pythonEnv.pkgs.buildPythonApplication {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-LP7EM2egXMXl35nJCZC5WmNtjPmEukbOePzuj/ynr/g=";
+    hash = "sha256-lnqL6PxY7fViEiW1pqaXsOhzC5YupoCFkWqRhgsiIRw=";
   };
 
   propagatedBuildInputs = with pythonEnv.pkgs; [
diff --git a/pkgs/by-name/cu/cue/package.nix b/pkgs/by-name/cu/cue/package.nix
index 6f86bd745a242..f8185f7c347f8 100644
--- a/pkgs/by-name/cu/cue/package.nix
+++ b/pkgs/by-name/cu/cue/package.nix
@@ -9,13 +9,13 @@
 
 buildGoModule rec {
   pname = "cue";
-  version = "0.8.0";
+  version = "0.8.1";
 
   src = fetchFromGitHub {
     owner = "cue-lang";
     repo = "cue";
     rev = "v${version}";
-    hash = "sha256-7gn8/35rpbyzSP4ZM21ig6Wsq5Tp18x1Ex/IVb2iE7k=";
+    hash = "sha256-0HNE7NzTdq1bXj9tBZvBQ3m6Q5iuyAMKMOz0kyOJi7w=";
   };
 
   vendorHash = "sha256-0OZtKIDdEnQLnSj109EpGvaZvMIy7gPAZ+weHzYKGSg=";
diff --git a/pkgs/by-name/de/deltatouch/package.nix b/pkgs/by-name/de/deltatouch/package.nix
new file mode 100644
index 0000000000000..db6ba129e219d
--- /dev/null
+++ b/pkgs/by-name/de/deltatouch/package.nix
@@ -0,0 +1,91 @@
+{ lib
+, stdenv
+, fetchFromGitea
+, fetchpatch
+, cmake
+, intltool
+, libdeltachat
+, lomiri
+, qt5
+, quirc
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "deltatouch";
+  version = "1.4.0";
+
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "lk108";
+    repo = "deltatouch";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-tqcQmFmF8Z9smVMfaXOmXQ3Uw41bUcU4iUi8fxBlg8U=";
+    fetchSubmodules = true;
+  };
+
+
+  patches = [
+    (fetchpatch {
+      name = "0001-deltatouch-Fix-localisation.patch";
+      url = "https://codeberg.org/lk108/deltatouch/commit/dcfdd8a0fca5fff10d0383f77f4c0cbea302de00.patch";
+      hash = "sha256-RRjHG/xKtj757ZP2SY0GtWwh66kkTWoICV1vDkFAw3k=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    qt5.wrapQtAppsHook
+    intltool
+    cmake
+  ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qtwebengine
+    qt5.qtquickcontrols2
+    lomiri.lomiri-ui-toolkit
+    lomiri.lomiri-ui-extras
+    lomiri.lomiri-api
+    lomiri.lomiri-indicator-network # Lomiri.Connectivity module
+    lomiri.qqc2-suru-style
+  ];
+
+  postPatch = ''
+    # Fix all sorts of install locations
+    substituteInPlace CMakeLists.txt \
+      --replace-fail 'set(DATA_DIR /)' 'set(DATA_DIR ''${CMAKE_INSTALL_DATAROOTDIR})' \
+      --replace-fail 'RUNTIME DESTINATION ''${CMAKE_INSTALL_PREFIX}' 'RUNTIME DESTINATION ''${CMAKE_INSTALL_BINDIR}' \
+      --replace-fail 'assets/logo.svg DESTINATION assets' 'assets/logo.svg DESTINATION ''${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps RENAME deltatouch.svg' \
+      --replace-fail "\''${DESKTOP_FILE_NAME} DESTINATION \''${DATA_DIR}" "\''${DESKTOP_FILE_NAME} DESTINATION \''${CMAKE_INSTALL_DATAROOTDIR}/applications"
+
+    substituteInPlace plugins/DeltaHandler/CMakeLists.txt plugins/DTWebEngineProfile/CMakeLists.txt \
+      --replace-fail 'set(QT_IMPORTS_DIR "/lib/''${ARCH_TRIPLET}")' 'set(QT_IMPORTS_DIR "${placeholder "out"}/${qt5.qtbase.qtQmlPrefix}")'
+
+    # Fix import of library dependencies
+    substituteInPlace plugins/DeltaHandler/CMakeLists.txt \
+      --replace-fail 'IMPORTED_LOCATION "''${CMAKE_CURRENT_BINARY_DIR}/libdeltachat.so"' 'IMPORTED_LOCATION "${lib.getLib libdeltachat}/lib/libdeltachat.so"' \
+      --replace-fail 'IMPORTED_LOCATION "''${CMAKE_CURRENT_BINARY_DIR}/libquirc.so.1.2"' 'IMPORTED_LOCATION "${lib.getLib quirc}/lib/libquirc.so"'
+
+    # Fix icon reference in desktop file
+    substituteInPlace deltatouch.desktop.in \
+      --replace-fail 'Icon=assets/logo.svg' 'Icon=deltatouch'
+  '';
+
+  postInstall = ''
+    # Remove clickable metadata & helpers from out
+    rm $out/{manifest.json,share/push*}
+  '';
+
+  meta = with lib; {
+    changelog = "https://codeberg.org/lk108/deltatouch/src/commit/${finalAttrs.src.rev}/CHANGELOG";
+    description = "Messaging app for Ubuntu Touch, powered by Delta Chat core";
+    longDescription = ''
+      DeltaTouch is a messenger for Ubuntu Touch based on Delta Chat core.
+      Delta Chat works over email.
+    '';
+    homepage = "https://codeberg.org/lk108/deltatouch";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ link2xt ];
+    mainProgram = "deltatouch";
+    platforms = platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/de/dep-scan/package.nix b/pkgs/by-name/de/dep-scan/package.nix
index 74aa2530fbd09..fe4ccf72df62e 100644
--- a/pkgs/by-name/de/dep-scan/package.nix
+++ b/pkgs/by-name/de/dep-scan/package.nix
@@ -1,31 +1,27 @@
-{ lib
-, python3
-, fetchFromGitHub
+{
+  lib,
+  fetchFromGitHub,
+  python3,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "dep-scan";
-  version = "5.2.14";
+  version = "5.3.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "owasp-dep-scan";
     repo = "dep-scan";
     rev = "refs/tags/v${version}";
-    hash = "sha256-G8i/tGEDgjPnIP04nrbx4HseiaU6N1GJGSg78yhaqII=";
+    hash = "sha256-2WV4f9vHdfnzoQWvwK/+lT9IS0v0sGBqnwDFHWG48G4=";
   };
 
   postPatch = ''
     substituteInPlace pytest.ini \
       --replace-fail " --cov-append --cov-report term --cov depscan" ""
-    # Already fixed by upstream
-    substituteInPlace pyproject.toml \
-      --replace-fail "==5.6.4" ">=5.6.4"
   '';
 
-  build-system = with python3.pkgs; [
-    setuptools
-  ];
+  build-system = with python3.pkgs; [ setuptools ];
 
   dependencies = with python3.pkgs; [
     appthreat-vulnerability-db
@@ -47,9 +43,7 @@ python3.pkgs.buildPythonApplication rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "depscan"
-  ];
+  pythonImportsCheck = [ "depscan" ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
diff --git a/pkgs/by-name/de/devcontainer/package.nix b/pkgs/by-name/de/devcontainer/package.nix
new file mode 100644
index 0000000000000..aaf4f562e06ff
--- /dev/null
+++ b/pkgs/by-name/de/devcontainer/package.nix
@@ -0,0 +1,70 @@
+{ lib
+, stdenv
+, fetchYarnDeps
+, fetchFromGitHub
+, prefetch-yarn-deps
+, nodejs
+, python3
+, makeWrapper
+, git
+, docker
+, yarn
+, docker-compose
+}:
+stdenv.mkDerivation (finalAttrs: {
+  pname = "devcontainer";
+  version = "0.58.0";
+
+  src = fetchFromGitHub {
+    owner = "devcontainers";
+    repo = "cli";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-pnhyyTJMSlTdMsSFzbmZ6SkGdbfr9qCIkrBxxSM42UE=";
+  };
+
+  yarnOfflineCache = fetchYarnDeps {
+    yarnLock = finalAttrs.src + "/yarn.lock";
+    hash = "sha256-Wy0UP8QaQzZ1par7W5UhnRLc5DF2PAif0JIZJtRokBk=";
+  };
+
+  nativeBuildInputs = [ yarn prefetch-yarn-deps python3 makeWrapper ];
+
+  buildPhase = ''
+    runHook preBuild
+
+    export HOME=$(mktemp -d)
+    yarn config --offline set yarn-offline-mirror ${finalAttrs.yarnOfflineCache}
+
+    # Without this, yarn will try to download the dependencies
+    fixup-yarn-lock yarn.lock
+
+    # set nodedir to prevent node-gyp from downloading headers
+    export npm_config_nodedir=${nodejs}
+
+    yarn --offline --frozen-lockfile
+    yarn --offline --frozen-lockfile compile-prod
+
+    mkdir -p $out/bin
+    mkdir -p $out/libexec
+    cp -r dist $out/libexec
+    cp devcontainer.js $out/libexec/devcontainer.js
+    cp -r node_modules $out/libexec/node_modules
+    cp -r $src/scripts $out/libexec/scripts
+    runHook postBuild
+  '';
+
+  postInstall = ''
+    makeWrapper "${nodejs}/bin/node" "$out/bin/devcontainer" \
+      --add-flags "$out/libexec/devcontainer.js" \
+      --prefix PATH : ${lib.makeBinPath [ git docker docker-compose ]}
+  '';
+
+  meta = with lib; {
+    description = "Dev container CLI, run and manage your dev environments via a devcontainer.json";
+    homepage = "https://containers.dev/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ rucadi ];
+    platforms = platforms.unix;
+    mainProgram = "devcontainer";
+  };
+})
diff --git a/pkgs/by-name/de/devenv/package.nix b/pkgs/by-name/de/devenv/package.nix
index ea3560af70397..ee864183f55ba 100644
--- a/pkgs/by-name/de/devenv/package.nix
+++ b/pkgs/by-name/de/devenv/package.nix
@@ -21,15 +21,15 @@ let
     src = fetchFromGitHub {
       owner = "domenkozar";
       repo = "nix";
-      rev = "c5bbf14ecbd692eeabf4184cc8d50f79c2446549";
-      hash = "sha256-zvCqeUO2GLOm7jnU23G4EzTZR7eylcJN+HJ5svjmubI=";
+      rev = "ecd0af0c1f56de32cbad14daa1d82a132bf298f8";
+      hash = "sha256-92xq7eXlxIT5zFNccLpjiP7sdQqQI30Gyui2p/PfKZM=";
     };
     buildInputs = old.buildInputs ++ [ libgit2 ];
     doCheck = false;
     doInstallCheck = false;
   });
 
-  version = "1.0.3";
+  version = "1.0.4";
 in rustPlatform.buildRustPackage {
   pname = "devenv";
   inherit version;
@@ -38,10 +38,10 @@ in rustPlatform.buildRustPackage {
     owner = "cachix";
     repo = "devenv";
     rev = "v${version}";
-    hash = "sha256-fnJPqMFoWTYsPNEwbxTxO0h771vZKu+b5Ig4LJQcoRg=";
+    hash = "sha256-JODoFPcYKOr39dErx8JFSjeWKmO5PUsHJrF2VU6MFEg=";
   };
 
-  cargoHash = "sha256-Qckh7knX3sARMHgn+39ozQj8CnfyEQV4yjJPP2+v2SM=";
+  cargoHash = "sha256-//THEzW0OYEDSLrOELBaWnwjDbUc4jpwRDQfWJO/saA=";
 
   nativeBuildInputs = [ makeWrapper pkg-config ];
 
diff --git a/pkgs/by-name/dh/dhcpig/package.nix b/pkgs/by-name/dh/dhcpig/package.nix
new file mode 100644
index 0000000000000..679a91e4b0c95
--- /dev/null
+++ b/pkgs/by-name/dh/dhcpig/package.nix
@@ -0,0 +1,37 @@
+{ lib
+, python3
+, fetchFromGitHub
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "dhcpig";
+  version = "1.6";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "kamorin";
+    repo = "DHCPig";
+    rev = "refs/tags/${version}";
+    hash = "sha256-MquLChDuJe3DdkxxKV4W0o49IIt7Am+yuhdOqUqexS8=";
+  };
+
+  build-system = with python3.pkgs; [
+    setuptools
+  ];
+
+  dependencies = with python3.pkgs; [
+    scapy
+  ];
+
+  installPhase = ''
+    install -Dm755 pig.py $out/bin/dhcpig
+  '';
+
+  meta = with lib; {
+    description = "Tool to perform advanced DHCP exhaustion attack";
+    homepage = "https://github.com/kamorin/DHCPig";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ tochiaha ];
+    mainProgram = "dhcpig";
+  };
+}
diff --git a/pkgs/development/compilers/dmd/binary.nix b/pkgs/by-name/dm/dmd/binary.nix
index 3a5d6b76cec87..3a5d6b76cec87 100644
--- a/pkgs/development/compilers/dmd/binary.nix
+++ b/pkgs/by-name/dm/dmd/binary.nix
diff --git a/pkgs/development/compilers/dmd/bootstrap.nix b/pkgs/by-name/dm/dmd/bootstrap.nix
index 16aa5ed4d4049..16aa5ed4d4049 100644
--- a/pkgs/development/compilers/dmd/bootstrap.nix
+++ b/pkgs/by-name/dm/dmd/bootstrap.nix
diff --git a/pkgs/development/compilers/dmd/generic.nix b/pkgs/by-name/dm/dmd/generic.nix
index 88fabd9c83fb1..9bfd2c5ffc9f6 100644
--- a/pkgs/development/compilers/dmd/generic.nix
+++ b/pkgs/by-name/dm/dmd/generic.nix
@@ -1,6 +1,6 @@
 { version
-, dmdSha256
-, phobosSha256
+, dmdHash
+, phobosHash
 }:
 
 { stdenv
@@ -22,7 +22,7 @@
 , git
 , unzip
 , dmdBootstrap ? callPackage ./bootstrap.nix { }
-, dmd_bin ? "${dmdBootstrap}/bin"
+, dmdBin ? "${dmdBootstrap}/bin"
 }:
 
 let
@@ -45,7 +45,7 @@ let
   pathToDmd = "\${NIX_BUILD_TOP}/dmd/generated/${osname}/release/${bits}/dmd";
 in
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "dmd";
   inherit version;
 
@@ -55,15 +55,15 @@ stdenv.mkDerivation rec {
     (fetchFromGitHub {
       owner = "dlang";
       repo = "dmd";
-      rev = "v${version}";
-      sha256 = dmdSha256;
+      rev = "v${finalAttrs.version}";
+      hash = dmdHash;
       name = "dmd";
     })
     (fetchFromGitHub {
       owner = "dlang";
       repo = "phobos";
-      rev = "v${version}";
-      sha256 = phobosSha256;
+      rev = "v${finalAttrs.version}";
+      hash = phobosHash;
       name = "phobos";
     })
   ];
@@ -80,7 +80,7 @@ stdenv.mkDerivation rec {
       url = "https://github.com/dlang/dmd/commit/c4d33e5eb46c123761ac501e8c52f33850483a8a.patch";
       stripLen = 1;
       extraPrefix = "dmd/";
-      sha256 = "sha256-N21mAPfaTo+zGCip4njejasraV5IsWVqlGR5eOdFZZE=";
+      hash = "sha256-N21mAPfaTo+zGCip4njejasraV5IsWVqlGR5eOdFZZE=";
     })
   ];
 
@@ -102,18 +102,14 @@ stdenv.mkDerivation rec {
     #   https://issues.dlang.org/show_bug.cgi?id=23317
     rm dmd/compiler/test/runnable/cdvecfill.sh
     rm dmd/compiler/test/compilable/cdcmp.d
-  ''
-
-  + lib.optionalString (lib.versionAtLeast version "2.089.0" && lib.versionOlder version "2.092.2") ''
+  '' + lib.optionalString (lib.versionAtLeast version "2.089.0" && lib.versionOlder version "2.092.2") ''
     rm dmd/compiler/test/dshell/test6952.d
   '' + lib.optionalString (lib.versionAtLeast version "2.092.2") ''
-    substituteInPlace dmd/compiler/test/dshell/test6952.d --replace "/usr/bin/env bash" "${bash}/bin/bash"
-  ''
-
-  + lib.optionalString stdenv.isLinux ''
-    substituteInPlace phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
+    substituteInPlace dmd/compiler/test/dshell/test6952.d --replace-fail "/usr/bin/env bash" "${bash}/bin/bash"
+  '' + lib.optionalString stdenv.isLinux ''
+    substituteInPlace phobos/std/socket.d --replace-fail "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
   '' + lib.optionalString stdenv.isDarwin ''
-    substituteInPlace phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)"
+    substituteInPlace phobos/std/socket.d --replace-fail "foreach (name; names)" "names = []; foreach (name; names)"
   '';
 
   nativeBuildInputs = [
@@ -148,24 +144,23 @@ stdenv.mkDerivation rec {
     runHook preBuild
 
     export buildJobs=$NIX_BUILD_CORES
-    if [ -z $enableParallelBuilding ]; then
-      buildJobs=1
-    fi
+    [ -z "$enableParallelBuilding" ] && buildJobs=1
 
-    ${dmd_bin}/rdmd dmd/compiler/src/build.d -j$buildJobs HOST_DMD=${dmd_bin}/dmd $buildFlags
-    make -C dmd/druntime -f posix.mak DMD=${pathToDmd} $buildFlags -j$buildJobs
+    ${dmdBin}/rdmd dmd/compiler/src/build.d -j$buildJobs $buildFlags \
+      HOST_DMD=${dmdBin}/dmd
+    make -C dmd/druntime -j$buildJobs DMD=${pathToDmd} $buildFlags
     echo ${tzdata}/share/zoneinfo/ > TZDatabaseDirFile
-    echo ${lib.getLib curl}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > LibcurlPathFile
-    make -C phobos -f posix.mak $buildFlags -j$buildJobs DMD=${pathToDmd} DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$PWD"
+    echo ${lib.getLib curl}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} \
+      > LibcurlPathFile
+    make -C phobos -j$buildJobs $buildFlags \
+      DMD=${pathToDmd} DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$PWD"
 
     runHook postBuild
   '';
 
   doCheck = true;
 
-  checkFlags = buildFlags;
-
-  # many tests are disbled because they are failing
+  # many tests are disabled because they are failing
 
   # NOTE: Purity check is disabled for checkPhase because it doesn't fare well
   # with the DMD linker. See https://github.com/NixOS/nixpkgs/issues/97420
@@ -173,15 +168,14 @@ stdenv.mkDerivation rec {
     runHook preCheck
 
     export checkJobs=$NIX_BUILD_CORES
-    if [ -z $enableParallelChecking ]; then
-      checkJobs=1
-    fi
+    [ -z "$enableParallelChecking" ] && checkJobs=1
 
-    NIX_ENFORCE_PURITY= \
-      make -C dmd/compiler/test $checkFlags CC=$CXX SHELL=$SHELL -j$checkJobs N=$checkJobs
+    CC=$CXX HOST_DMD=${pathToDmd} NIX_ENFORCE_PURITY= \
+      ${dmdBin}/rdmd dmd/compiler/test/run.d -j$checkJobs
 
     NIX_ENFORCE_PURITY= \
-      make -C phobos -f posix.mak unittest $checkFlags -j$checkJobs DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$PWD"
+      make -C phobos unittest -j$checkJobs $checkFlags \
+        DFLAGS="-version=TZDatabaseDir -version=LibcurlPath -J$PWD"
 
     runHook postCheck
   '';
@@ -200,7 +194,7 @@ stdenv.mkDerivation rec {
     cp phobos/generated/${osname}/release/${bits}/libphobos2.* $out/lib/
 
     wrapProgram $out/bin/dmd \
-      --prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \
+      --prefix PATH : "${targetPackages.stdenv.cc}/bin" \
       --set-default CC "${targetPackages.stdenv.cc}/bin/cc"
 
     substitute ${dmdConfFile} "$out/bin/dmd.conf" --subst-var out
@@ -209,19 +203,19 @@ stdenv.mkDerivation rec {
   '';
 
   preFixup = ''
-    find $out/bin -type f -exec ${removeReferencesTo}/bin/remove-references-to -t ${dmd_bin}/dmd '{}' +
+    find $out/bin -type f -exec ${removeReferencesTo}/bin/remove-references-to -t ${dmdBin}/dmd '{}' +
   '';
 
   disallowedReferences = [ dmdBootstrap ];
 
   meta = with lib; {
     description = "Official reference compiler for the D language";
-    mainProgram = "dmd";
     homepage = "https://dlang.org/";
     # Everything is now Boost licensed, even the backend.
     # https://github.com/dlang/dmd/pull/6680
     license = licenses.boost;
+    mainProgram = "dmd";
     maintainers = with maintainers; [ lionello dukc jtbx ];
     platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
   };
-}
+})
diff --git a/pkgs/by-name/dm/dmd/package.nix b/pkgs/by-name/dm/dmd/package.nix
new file mode 100644
index 0000000000000..9f3f5a26e7e5b
--- /dev/null
+++ b/pkgs/by-name/dm/dmd/package.nix
@@ -0,0 +1,5 @@
+import ./generic.nix {
+  version = "2.108.0";
+  dmdHash = "sha256-tlWcFgKtXzfqMMkOq4ezhZHdYCXFckjN5+m6jO4VH0U=";
+  phobosHash = "sha256-uU8S4rABOfhpKh+MvSbclkbdf0hrsuKF8SIpWMnPpfU=";
+}
diff --git a/pkgs/by-name/do/docfd/package.nix b/pkgs/by-name/do/docfd/package.nix
index 8baa36826a70e..ebefb6f1cd700 100644
--- a/pkgs/by-name/do/docfd/package.nix
+++ b/pkgs/by-name/do/docfd/package.nix
@@ -1,13 +1,26 @@
 { lib
 , ocamlPackages
+, stdenv
+, overrideSDK
 , fetchFromGitHub
 , python3
 , dune_3
+, makeWrapper
+, pandoc
+, poppler_utils
+, testers
+, docfd
 }:
 
-ocamlPackages.buildDunePackage rec {
+let
+  # Needed for x86_64-darwin
+  buildDunePackage' = ocamlPackages.buildDunePackage.override {
+    stdenv = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv;
+  };
+in
+buildDunePackage' rec {
   pname = "docfd";
-  version = "3.0.0";
+  version = "4.0.0";
 
   minimalOCamlVersion = "5.1";
 
@@ -15,10 +28,10 @@ ocamlPackages.buildDunePackage rec {
     owner = "darrenldl";
     repo = "docfd";
     rev = version;
-    hash = "sha256-pJ5LlOfC+9NRfY7ng9LAxEnjr+mtJmhRNTo9Im6Lkbo=";
+    hash = "sha256-fgwUXRZ6k5i3XLxXpjbrl0TJZMT+NkGXf7KNwRgi+q8=";
   };
 
-  nativeBuildInputs = [ python3 dune_3 ];
+  nativeBuildInputs = [ python3 dune_3 makeWrapper ];
   buildInputs = with ocamlPackages; [
     cmdliner
     containers-data
@@ -35,17 +48,21 @@ ocamlPackages.buildDunePackage rec {
     yojson
   ];
 
+  postInstall = ''
+    wrapProgram $out/bin/docfd --prefix PATH : "${lib.makeBinPath [ pandoc poppler_utils ]}"
+  '';
+
+  passthru.tests.version = testers.testVersion {
+    package = docfd;
+  };
+
   meta = with lib; {
     description = "TUI multiline fuzzy document finder";
     longDescription = ''
-      Think interactive grep for both text and other document files, but
-      word/token based instead of regex and line based, so you can search
-      across lines easily. Aims to provide good UX via integration with
-      common text editors and other file viewers.
-      Optional dependencies:
-        fzf - for fuzzy file picker with "docfd ?".
-        poppler_utils - for pdf search.
-        pandoc - for .epub, .odt, .docx, .fb2, .ipynb, .html, & .htm files.
+      Think interactive grep for text and other document files.
+      Word/token based instead of regex and line based, so you
+      can search across lines easily. Aims to provide good UX via
+      integration with common text editors and other file viewers.
     '';
     homepage = "https://github.com/darrenldl/docfd";
     license = licenses.mit;
diff --git a/pkgs/by-name/do/dotnet-outdated/package.nix b/pkgs/by-name/do/dotnet-outdated/package.nix
index 71e86de281aeb..2a46d692c67f3 100644
--- a/pkgs/by-name/do/dotnet-outdated/package.nix
+++ b/pkgs/by-name/do/dotnet-outdated/package.nix
@@ -8,13 +8,13 @@ let
 
 in buildDotnetModule rec {
   pname = "dotnet-outdated";
-  version = "4.6.0";
+  version = "4.6.1";
 
   src = fetchFromGitHub {
     owner = "dotnet-outdated";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-U5qCM+Um8bRafrDpbI5TnSN1nQ8mQpZ5W8Jao2hdAPw=";
+    hash = "sha256-cYEW++XKCBhB4fyGj4bDKOBuQ1CJwm9CfZfiZUiy7Sw=";
   };
 
   inherit dotnet-sdk;
diff --git a/pkgs/by-name/do/dotslash/package.nix b/pkgs/by-name/do/dotslash/package.nix
index 788d6ea17aa0b..240cfe4717b41 100644
--- a/pkgs/by-name/do/dotslash/package.nix
+++ b/pkgs/by-name/do/dotslash/package.nix
@@ -2,14 +2,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "dotslash";
-  version = "0.2.0";
+  version = "0.3.0";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-4y4GH+YR6QpZj7gYycJcm7K5tE7dCvYm3UQuCKF3cfQ=";
+    hash = "sha256-rgcvpr6/Xss4zDR7IRXL2THAtUQL6WE8Mv9XuM9unBI=";
   };
 
-  cargoHash = "sha256-L/ahRDLVOWsg7mHWlLYqP/+6zS9JwXGQXn66UsIIARk=";
+  cargoHash = "sha256-WkC+8epqCJWIU1f5kCLsqgGiSvWZH1mbZabQUnGVwB4=";
   doCheck = false; # http tests
 
   meta = with lib; {
diff --git a/pkgs/by-name/do/doublecmd/package.nix b/pkgs/by-name/do/doublecmd/package.nix
index 2b8c27fc84701..35746a409c77c 100644
--- a/pkgs/by-name/do/doublecmd/package.nix
+++ b/pkgs/by-name/do/doublecmd/package.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "doublecmd";
-  version = "1.1.11";
+  version = "1.1.12";
 
   src = fetchFromGitHub {
     owner = "doublecmd";
     repo = "doublecmd";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-8kxaJp9mSJ6fHOgVD5iFjecUU0Kt10KCAVSYMQt+bSw=";
+    hash = "sha256-8wwYyZ9Uq65jEmgA1yO001YSZuDLnXLrFjK6WIsppwU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ds/dstep/dub-lock.json b/pkgs/by-name/ds/dstep/dub-lock.json
new file mode 100644
index 0000000000000..18a1e415e5622
--- /dev/null
+++ b/pkgs/by-name/ds/dstep/dub-lock.json
@@ -0,0 +1,3 @@
+{
+  "dependencies": {}
+}
diff --git a/pkgs/by-name/ds/dstep/package.nix b/pkgs/by-name/ds/dstep/package.nix
new file mode 100644
index 0000000000000..ef1d8b8f11a2b
--- /dev/null
+++ b/pkgs/by-name/ds/dstep/package.nix
@@ -0,0 +1,34 @@
+{ lib, buildDubPackage, fetchFromGitHub, clang, ldc, which }:
+buildDubPackage rec {
+  pname = "dstep";
+  version = "1.0.4";
+
+  src = fetchFromGitHub {
+    owner = "jacob-carlborg";
+    repo = "dstep";
+    rev = "v${version}";
+    hash = "sha256-ZFz2+GtBk3StqXo/9x47xrDFdz5XujHR62hj0p3AjcY=";
+  };
+
+  dubLock = ./dub-lock.json;
+
+  nativeBuildInputs = [ ldc which clang ];
+
+  preConfigure = ''
+    ./configure --llvm-path ${lib.getLib clang.cc}
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 bin/dstep -t $out/bin
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A tool for converting C and Objective-C headers to D modules";
+    homepage = "https://github.com/jacob-carlborg/dstep";
+    license = licenses.boost;
+    mainProgram = "dstep";
+    maintainers = with maintainers; [ imrying ];
+  };
+}
diff --git a/pkgs/by-name/dt/dtools/disabled-tests.diff b/pkgs/by-name/dt/dtools/disabled-tests.diff
new file mode 100644
index 0000000000000..a22825a214f76
--- /dev/null
+++ b/pkgs/by-name/dt/dtools/disabled-tests.diff
@@ -0,0 +1,11 @@
+--- a/rdmd_test.d
++++ b/rdmd_test.d
+@@ -616,7 +616,7 @@ void runTests(string rdmdApp, string compiler, string model)
+         enforce(res.status == 1, res.output);
+     }
+ 
+-    version (Posix)
++    version (none)
+     {
+         import std.conv : to;
+         auto makeVersion = execute(["make", "--version"]).output.splitLines()[0];
diff --git a/pkgs/by-name/dt/dtools/fix-ldc-arm64.diff b/pkgs/by-name/dt/dtools/fix-ldc-arm64.diff
new file mode 100644
index 0000000000000..66eaa22c0a252
--- /dev/null
+++ b/pkgs/by-name/dt/dtools/fix-ldc-arm64.diff
@@ -0,0 +1,102 @@
+Adapted from https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch
+--- /dev/null
++++ b/osmodel.mak
+@@ -0,0 +1,75 @@
++#   osmodel.mak
++#
++# Detects and sets the macros:
++#
++#   OS         = one of {osx,linux,freebsd,openbsd,netbsd,dragonflybsd,solaris}
++#   MODEL      = one of { 32, 64 }
++#   MODEL_FLAG = one of { -m32, -m64 }
++#   ARCH       = one of { x86, x86_64, aarch64 }
++#
++# Note:
++#   Keep this file in sync between druntime, phobos, and dmd repositories!
++# Source: https://github.com/dlang/dmd/blob/master/src/osmodel.mak
++
++
++ifeq (,$(OS))
++  uname_S:=$(shell uname -s)
++  ifeq (Darwin,$(uname_S))
++    OS:=osx
++  endif
++  ifeq (Linux,$(uname_S))
++    OS:=linux
++  endif
++  ifeq (FreeBSD,$(uname_S))
++    OS:=freebsd
++  endif
++  ifeq (OpenBSD,$(uname_S))
++    OS:=openbsd
++  endif
++  ifeq (NetBSD,$(uname_S))
++    OS:=netbsd
++  endif
++  ifeq (DragonFly,$(uname_S))
++    OS:=dragonflybsd
++  endif
++  ifeq (Solaris,$(uname_S))
++    OS:=solaris
++  endif
++  ifeq (SunOS,$(uname_S))
++    OS:=solaris
++  endif
++  ifeq (,$(OS))
++    $(error Unrecognized or unsupported OS for uname: $(uname_S))
++  endif
++endif
++
++# When running make from XCode it may set environment var OS=MACOS.
++# Adjust it here:
++ifeq (MACOS,$(OS))
++  OS:=osx
++endif
++
++ifeq (,$(MODEL))
++  ifeq ($(OS), solaris)
++    uname_M:=$(shell isainfo -n)
++  else
++    uname_M:=$(shell uname -m)
++  endif
++  ifneq (,$(findstring $(uname_M),x86_64 amd64))
++    MODEL:=64
++    ARCH:=x86_64
++  endif
++  ifneq (,$(findstring $(uname_M),aarch64 arm64))
++    MODEL:=64
++    ARCH:=aarch64
++  endif
++  ifneq (,$(findstring $(uname_M),i386 i586 i686))
++    MODEL:=32
++    ARCH:=x86
++  endif
++  ifeq (,$(MODEL))
++    $(error Cannot figure 32/64 model and arch from uname -m: $(uname_M))
++  endif
++endif
++
++MODEL_FLAG:=-m$(MODEL)
+--- a/Makefile
++++ b/Makefile
+@@ -9,9 +9,8 @@ DUB=dub
+ WITH_DOC = no
+ DOC = ../dlang.org
+ 
+-# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd
+-$(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR))
+-include $(DMD_DIR)/compiler/src/osmodel.mak
++# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile
++include osmodel.mak
+ 
+ ifeq (windows,$(OS))
+     DOTEXE:=.exe
+@@ -30,7 +29,7 @@ DFLAGS = $(MODEL_FLAG) $(if $(findstring windows,$(OS)),,-fPIC) -preview=dip1000
+ DFLAGS += $(WARNINGS)
+ 
+ # Default DUB flags (DUB uses a different architecture format)
+-DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL)))
++DUBFLAGS = --arch=$(ARCH)
+ 
+ TOOLS = \
+     $(ROOT)/catdoc$(DOTEXE) \
diff --git a/pkgs/by-name/dt/dtools/package.nix b/pkgs/by-name/dt/dtools/package.nix
new file mode 100644
index 0000000000000..9de7ed6b125b2
--- /dev/null
+++ b/pkgs/by-name/dt/dtools/package.nix
@@ -0,0 +1,49 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, ldc
+, curl
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "dtools";
+  version = "2.108.0";
+
+  src = fetchFromGitHub {
+    owner = "dlang";
+    repo = "tools";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-YEBUgJPG/+WN4MnQUNAVftZM0ULxZZzpHoOozXua46U=";
+    name = "dtools";
+  };
+
+  patches = [
+    # Disable failing tests
+    ./disabled-tests.diff
+    # Fix LDC arm64 build
+    ./fix-ldc-arm64.diff
+  ];
+
+  nativeBuildInputs = [ ldc ];
+  buildInputs = [ curl ];
+
+  makeFlags = [
+    "CC=${stdenv.cc}/bin/cc"
+    "DMD=${ldc.out}/bin/ldmd2"
+    "INSTALL_DIR=$(out)"
+  ];
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+  checkTarget = "test_rdmd";
+
+  meta = with lib; {
+    description = "Ancillary tools for the D programming language";
+    homepage = "https://github.com/dlang/tools";
+    license = licenses.boost;
+    maintainers = with maintainers; [ jtbx ];
+    platforms = platforms.unix;
+  };
+})
diff --git a/pkgs/by-name/dy/dyalog/dyalogscript.patch b/pkgs/by-name/dy/dyalog/dyalogscript.patch
index a65878b7adec5..3b15aa5141121 100644
--- a/pkgs/by-name/dy/dyalog/dyalogscript.patch
+++ b/pkgs/by-name/dy/dyalog/dyalogscript.patch
@@ -1,8 +1,22 @@
+diff --git a/scriptbin/dyalogscript b/scriptbin/dyalogscript
+index c99912738ec2..adeda1fe964e 100755
 --- a/scriptbin/dyalogscript
 +++ b/scriptbin/dyalogscript
-@@ -5,1 +5,1 @@
--INSTALLDIR="/opt/mdyalog/18.2/64/unicode"
+@@ -2,7 +2,7 @@
+ #set -x
+ ## DO NOT CHANGE THIS FILE
+ 
+-INSTALLDIR="/opt/mdyalog/19.0/64/unicode"
 +INSTALLDIR="@installdir@"
-@@ -40,1 +40,1 @@
+ EXE="dyalog"
+ 
+ ARGS=""
+@@ -46,7 +46,7 @@ fi
+ #	OPTS="$OPTS RIDE_INIT=$RIDE_INIT"
+ #fi
+ 
 -: ${SCRIPTDIR:=$INSTALLDIR}
 +SCRIPTDIR="@scriptdir@"
+ export LD_LIBRARY_PATH=${SCRIPTDIR}:${LD_LIBRARY_PATH}					
+ 
+ eval "${SCRIPTDIR}/${EXE}" APLKEYS=\"$INSTALLDIR/aplkeys\" APLTRANS=\"$INSTALLDIR/apltrans\" ${APLT} ${APLK} $OPTS -script \"$SCRIPT\" "$ARGS"
diff --git a/pkgs/by-name/dy/dyalog/mapl.patch b/pkgs/by-name/dy/dyalog/mapl.patch
deleted file mode 100644
index 32424bea124ef..0000000000000
--- a/pkgs/by-name/dy/dyalog/mapl.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff --git a/mapl b/mapl
-index c9d3727..de24c77 100755
---- a/mapl
-+++ b/mapl
-@@ -20,26 +20,8 @@ SHORTVERSION=182U64
- LONGVERSION="18.2 64-bit Unicode"
- REL="`echo "${LONGVERSION}" | sed 's/ .*$//'`"
- 
--# Find the Dyalog installation directory
--if [ "$(uname)" = Linux ]; then
--	# this script location, canonical.
--	THIS="$(readlink -f $0)"
--else
--	# this script location.
--	THIS="$0"
--fi
--export DYALOG=$(cd $(dirname $THIS) && pwd)
--
- export APL_LANGUAGE_BAR_FILE=${DYALOG}/languagebar.json
- 
--if [ "$(uname)" = Linux ]; then
--	if [ "x" = "x${LD_LIBRARY_PATH}" ]; then
--		export LD_LIBRARY_PATH="${DYALOG}"
--	else
--		export LD_LIBRARY_PATH="${DYALOG}:${LD_LIBRARY_PATH}"
--	fi
--fi
--
- # Setup the configuration directory
- MYCONFIGDIR=${HOME}/.dyalog
- if [ ! -d "${MYCONFIGDIR}" ] ; then
diff --git a/pkgs/by-name/dy/dyalog/package.nix b/pkgs/by-name/dy/dyalog/package.nix
index c8786d5d6baae..fc4b6696c26ba 100644
--- a/pkgs/by-name/dy/dyalog/package.nix
+++ b/pkgs/by-name/dy/dyalog/package.nix
@@ -1,6 +1,5 @@
 { lib
 , stdenv
-, fetchFromGitHub
 , fetchurl
 
 , config
@@ -9,28 +8,19 @@
 , autoPatchelfHook
 , dpkg
 , makeWrapper
-
-, copyDesktopItems
-, makeDesktopItem
-
-, glib
 , ncurses5
 
-, dotnet-sdk_6
+, dotnet-sdk_8
 , dotnetSupport ? false
 
 , alsa-lib
-, gtk2
-, libXdamage
-, libXtst
-, libXScrnSaver
+, gtk3
+, libdrm
+, libGL
+, mesa
 , nss
 , htmlRendererSupport ? false
 
-, R
-, rPackages
-, rSupport ? false
-
 , unixODBC
 , sqaplSupport ? false
 
@@ -42,37 +32,7 @@
 let
   dyalogHome = "$out/lib/dyalog";
 
-  rscproxy = rPackages.buildRPackage {
-    name = "rscproxy";
-    src = fetchFromGitHub {
-      owner = "Dyalog";
-      repo = "rscproxy";
-      rev = "31de3323fb8596ff5ecbf4bacd030e542cfd8133";
-      hash = "sha256-SVoBoAWUmQ+jWaTG7hdmyRq6By4RnmmgWZXoua19/Kg=";
-    };
-  };
-
-  makeWrapperArgs = [
-    "--set DYALOG ${dyalogHome}"
-    # also needs to be set when the `-script` flag is used
-    "--add-flags DYALOG=${dyalogHome}"
-    # needed for default user commands to work
-    "--add-flags SESSION_FILE=${dyalogHome}/default.dse"
-  ]
-  ++ lib.optionals dotnetSupport [
-    # needs to be set to run .NET Bridge
-    "--set DOTNET_ROOT ${dotnet-sdk_6}"
-    # .NET Bridge files are runtime dependencies, but cannot be patchelf'd
-    "--prefix LD_LIBRARY_PATH : ${dyalogHome}"
-  ]
-  ++ lib.optionals rSupport [
-    # RConnect resolves R from PATH
-    "--prefix PATH : ${R}/bin"
-    # RConnect uses `ldd` to find `libR.so`
-    "--prefix LD_LIBRARY_PATH : ${R}/lib/R/lib"
-    # RConnect uses `rscproxy` to communicate with R
-    "--prefix R_LIBS_SITE : ${rscproxy}/library"
-  ];
+  makeWrapperArgs = lib.optional dotnetSupport "--set DOTNET_ROOT ${dotnet-sdk_8}";
 
   licenseUrl = "https://www.dyalog.com/uploads/documents/Developer_Software_Licence.pdf";
 
@@ -91,14 +51,14 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "dyalog";
-  version = "18.2.45405";
+  version = "19.0.48958";
   shortVersion = lib.versions.majorMinor finalAttrs.version;
 
   src =
     assert !acceptLicense -> throw licenseDisclaimer;
     fetchurl {
       url = "https://download.dyalog.com/download.php?file=${finalAttrs.shortVersion}/linux_64_${finalAttrs.version}_unicode.x86_64.deb";
-      sha256 = "sha256-pA/WGTA6YvwG4MgqbiPBLKSKPtLGQM7BzK6Bmyz5pmM=";
+      hash = "sha256-+L9XI7Knt91sG/0E3GFSeqjD9Zs+1n72MDfvsXnr77M=";
     };
 
   outputs = [ "out" ] ++ lib.optional enableDocs "doc";
@@ -107,64 +67,54 @@ stdenv.mkDerivation (finalAttrs: {
     sourceRoot=$sourceRoot/opt/mdyalog/${finalAttrs.shortVersion}/64/unicode
   '';
 
-  patches = [ ./dyalogscript.patch ./mapl.patch ];
-
-  postPatch = lib.optionalString dotnetSupport ''
-    # Patch to use .NET 6.0 instead of .NET Core 3.1 (can be removed when Dyalog 19.0 releases)
-    substituteInPlace Dyalog.Net.Bridge.*.json --replace "3.1" "6.0"
-  '';
+  patches = [ ./dyalogscript.patch ];
 
   nativeBuildInputs = [
     autoPatchelfHook
-    copyDesktopItems
     dpkg
     makeWrapper
   ];
 
   buildInputs = [
-    glib # Used by Conga and .NET Bridge
-    ncurses5 # Used by the dyalog binary
+    stdenv.cc.cc.lib # Used by Conga and .NET Bridge
+    ncurses5 # Used by the dyalog binary to correctly display in the terminal
   ]
   ++ lib.optionals htmlRendererSupport [
     alsa-lib
-    gtk2
-    libXdamage
-    libXtst
-    libXScrnSaver
+    gtk3
+    libdrm
+    libGL
+    mesa
     nss
   ]
-  ++ lib.optionals sqaplSupport [
-    unixODBC
-  ];
+  ++ lib.optional sqaplSupport unixODBC;
 
   # See which files are not really important: `https://github.com/Dyalog/DyalogDocker/blob/master/rmfiles.sh`
   installPhase = ''
     runHook preInstall
 
     mkdir -p ${dyalogHome}
-    cp -r aplfmt aplkeys apltrans fonts Library PublicCACerts SALT StartupSession ${dyalogHome}
-    cp aplkeys.sh default.dse dyalog dyalog.rt dyalog.dcfg.template dyalog.ver.dcfg.template languagebar.json mapl startup.dyalog ${dyalogHome}
+    cp -r aplfmt aplkeys apltrans Experimental fonts Library PublicCACerts SALT StartupSession ${dyalogHome}
+    cp aplkeys.sh default.dse dyalog dyalogc dyalog.rt dyalog.dcfg.template dyalog.ver.dcfg.template languagebar.json mapl StartupSession.aplf ${dyalogHome}
 
     mkdir ${dyalogHome}/lib
-    cp lib/{conga34_64.so,dyalog64.so,libconga34ssl64.so} ${dyalogHome}/lib
+    cp lib/{conga35_64.so,dyalog64.so,libconga35ssl64.so} ${dyalogHome}/lib
 
     # Only keep the most useful workspaces
     mkdir ${dyalogHome}/ws
     cp ws/{conga,dfns,isolate,loaddata,salt,sharpplot,util}.dws ${dyalogHome}/ws
   ''
   + lib.optionalString dotnetSupport ''
-    cp libnethost.so Dyalog.Net.Bridge.* ${dyalogHome}
+    cp libnethost.so Dyalog.Net.Bridge.* Lokad.ILPack.dll ${dyalogHome}
   ''
   + lib.optionalString htmlRendererSupport ''
-    cp -r locales swiftshader ${dyalogHome}
-    cp libcef.so libEGL.so libGLESv2.so chrome-sandbox natives_blob.bin snapshot_blob.bin icudtl.dat v8_context_snapshot.bin *.pak ${dyalogHome}
+    cp -r locales ${dyalogHome}
+    cp libcef.so libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 ${dyalogHome}
+    cp chrome-sandbox icudtl.dat snapshot_blob.bin v8_context_snapshot.bin vk_swiftshader_icd.json *.pak ${dyalogHome}
     cp lib/htmlrenderer.so ${dyalogHome}/lib
   ''
-  + lib.optionalString rSupport ''
-    cp ws/rconnect.dws ${dyalogHome}/ws
-  ''
   + lib.optionalString sqaplSupport ''
-    cp lib/cxdya64u64u.so ${dyalogHome}/lib
+    cp lib/cxdya65u64u.so ${dyalogHome}/lib
     cp ws/sqapl.dws ${dyalogHome}/ws
     cp odbc.ini.sample sqapl.err sqapl.ini ${dyalogHome}
   ''
@@ -177,10 +127,12 @@ stdenv.mkDerivation (finalAttrs: {
     ln -s $doc/share/doc/dyalog ${dyalogHome}/help
   ''
   + ''
-    install -Dm644 dyalog.svg $out/share/icons/hicolor/scalable/apps/dyalog.svg
+    install -Dm644 dyalog.svg -t $out/share/icons/hicolor/scalable/apps
+    install -Dm644 dyalog.desktop -t $out/share/applications
 
-    makeWrapper ${dyalogHome}/dyalog $out/bin/dyalog ${lib.concatStringsSep " " makeWrapperArgs}
-    makeWrapper ${dyalogHome}/mapl $out/bin/mapl ${lib.concatStringsSep " " makeWrapperArgs}
+    for exec in "dyalog" "mapl"; do
+        makeWrapper ${dyalogHome}/$exec $out/bin/$exec ${toString makeWrapperArgs}
+    done
 
     install -Dm755 scriptbin/dyalogscript $out/bin/dyalogscript
     substituteInPlace $out/bin/dyalogscript \
@@ -190,24 +142,14 @@ stdenv.mkDerivation (finalAttrs: {
     runHook postInstall
   '';
 
-  preFixup = lib.optionalString htmlRendererSupport ''
-    # `libudev.so` is a runtime dependency of CEF
-    patchelf ${dyalogHome}/libcef.so --add-needed libudev.so
+  # Register some undeclared runtime dependencies to be patched in by autoPatchelfHook
+  preFixup = ''
+    patchelf ${dyalogHome}/dyalog --add-needed libncurses.so
+  ''
+  + lib.optionalString htmlRendererSupport ''
+    patchelf ${dyalogHome}/libcef.so --add-needed libudev.so --add-needed libGL.so
   '';
 
-  desktopItems = [
-    (makeDesktopItem {
-      name = "dyalog";
-      desktopName = "Dyalog";
-      exec = finalAttrs.meta.mainProgram;
-      comment = finalAttrs.meta.description;
-      icon = "dyalog";
-      categories = [ "Development" ];
-      genericName = "APL interpreter";
-      terminal = true;
-    })
-  ];
-
   meta = {
     changelog = "https://dyalog.com/dyalog/dyalog-versions/${lib.replaceStrings [ "." ] [ "" ] finalAttrs.shortVersion}.htm";
     description = "The Dyalog APL interpreter";
diff --git a/pkgs/by-name/ei/eigenlayer/package.nix b/pkgs/by-name/ei/eigenlayer/package.nix
index 2438d4896912d..f3d9d8cfee8af 100644
--- a/pkgs/by-name/ei/eigenlayer/package.nix
+++ b/pkgs/by-name/ei/eigenlayer/package.nix
@@ -6,16 +6,16 @@
 }:
 buildGoModule rec {
   pname = "eigenlayer";
-  version = "0.6.3";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "Layr-Labs";
     repo = "eigenlayer-cli";
     rev = "v${version}";
-    hash = "sha256-v2d6+jxEYXgJjZOFRc+teQWq161v4FLO+KjYq96XwTs=";
+    hash = "sha256-4KN5AletaQ/Xpr/mCLgB/ceVbqMzWoi7bKoWRDePnuc=";
   };
 
-  vendorHash = "sha256-pJYs9jD3EmmXlkPO6gkuB2FYsgX9Yn6S6QYb2dQ1fY4=";
+  vendorHash = "sha256-6RF32eWU7HS9C3T7hDVHjWxX/3Ch/ixOGHml30Q9PaU=";
 
   ldflags = ["-s" "-w"];
   subPackages = ["cmd/eigenlayer"];
diff --git a/pkgs/by-name/el/elasticsearch-curator/package.nix b/pkgs/by-name/el/elasticsearch-curator/package.nix
index 3e12c03cbece8..6a142aeb1ac5b 100644
--- a/pkgs/by-name/el/elasticsearch-curator/package.nix
+++ b/pkgs/by-name/el/elasticsearch-curator/package.nix
@@ -1,26 +1,25 @@
-{ lib
-, elasticsearch-curator
-, fetchFromGitHub
-, nix-update-script
-, python3
-, testers
+{
+  lib,
+  elasticsearch-curator,
+  fetchFromGitHub,
+  nix-update-script,
+  python3,
+  testers,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "elasticsearch-curator";
-  version = "8.0.12";
+  version = "8.0.15";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "elastic";
     repo = "curator";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CU/8l5607eKodcdpMKu0Wdlg+K6YnFX6uoDju12NDR0=";
+    hash = "sha256-pW928jT9oL76RJuJgH7nhCvgWPzXixzqBKVYsaJy9xw=";
   };
 
-  build-system = with python3.pkgs; [
-    hatchling
-  ];
+  build-system = with python3.pkgs; [ hatchling ];
 
   dependencies = with python3.pkgs; [
     certifi
diff --git a/pkgs/by-name/er/errands/package.nix b/pkgs/by-name/er/errands/package.nix
index 36a988472a912..afb41ae98e56b 100644
--- a/pkgs/by-name/er/errands/package.nix
+++ b/pkgs/by-name/er/errands/package.nix
@@ -3,7 +3,7 @@
 , python3Packages
 , gobject-introspection
 , libadwaita
-, wrapGAppsHook
+, wrapGAppsHook4
 , meson
 , ninja
 , desktop-file-utils
@@ -29,7 +29,7 @@ python3Packages.buildPythonApplication rec {
 
   nativeBuildInputs = [
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook4
     desktop-file-utils
     meson
     ninja
diff --git a/pkgs/by-name/et/etlegacy-unwrapped/package.nix b/pkgs/by-name/et/etlegacy-unwrapped/package.nix
index 8bacd93e1a2b0..84526ae11ada5 100644
--- a/pkgs/by-name/et/etlegacy-unwrapped/package.nix
+++ b/pkgs/by-name/et/etlegacy-unwrapped/package.nix
@@ -92,11 +92,6 @@ stdenv.mkDerivation {
     "-DINSTALL_DEFAULT_BINDIR=${placeholder "out"}/bin"
   ];
 
-  postInstall = ''
-    makeWrapper $out/bin/etl.* $out/bin/etl
-    makeWrapper $out/bin/etlded.* $out/bin/etlded
-  '';
-
   hardeningDisable = [ "fortify" ];
 
   meta = {
diff --git a/pkgs/by-name/et/etlegacy/package.nix b/pkgs/by-name/et/etlegacy/package.nix
index 6e3837a4a9b1d..446659c0148fb 100644
--- a/pkgs/by-name/et/etlegacy/package.nix
+++ b/pkgs/by-name/et/etlegacy/package.nix
@@ -18,11 +18,12 @@ symlinkJoin {
   ];
 
   postBuild = ''
-    rm -rf $out/bin/*
-    makeWrapper ${etlegacy-unwrapped}/bin/etl.* $out/bin/etl \
+    wrapProgram $out/bin/etl.* \
       --add-flags "+set fs_basepath ${placeholder "out"}/lib/etlegacy"
-    makeWrapper ${etlegacy-unwrapped}/bin/etlded.* $out/bin/etlded \
+    wrapProgram $out/bin/etlded.* \
       --add-flags "+set fs_basepath ${placeholder "out"}/lib/etlegacy"
+    makeWrapper $out/bin/etl.* $out/bin/etl
+    makeWrapper $out/bin/etlded.* $out/bin/etlded
   '';
 
   meta = {
diff --git a/pkgs/by-name/fe/fernglas/package.nix b/pkgs/by-name/fe/fernglas/package.nix
new file mode 100644
index 0000000000000..3de9736128572
--- /dev/null
+++ b/pkgs/by-name/fe/fernglas/package.nix
@@ -0,0 +1,72 @@
+{ lib
+, stdenv
+, rustPlatform
+, fetchFromGitHub
+, fetchYarnDeps
+, prefetch-yarn-deps
+, python3
+, jq
+, yarn
+, nodejs-slim
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "fernglas";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "wobcom";
+    repo = "fernglas";
+    rev = "fernglas-${version}";
+    hash = "sha256-0wj5AS8RLVr+S/QWWxCsMvmVjmXUWGfR9kPaZimJEss=";
+  };
+
+  nativeBuildInputs = [ yarn nodejs-slim prefetch-yarn-deps python3 jq ];
+
+  nlnog_communities = fetchFromGitHub {
+    owner = "NLNOG";
+    repo = "lg.ring.nlnog.net";
+    rev = "20f9a9f3da8b1bc9d7046e88c62df4b41b4efb99";
+    hash = "sha256-FlbOBX/+/LLmoqMJLvu59XuHYmiohIhDc1VjkZu4Wzo=";
+  };
+
+  cargoHash = "sha256-ls9HvwtbpOwzQbi/+9IbgXurZp0LjQKGZcDuLZlX+Vk=";
+
+  offlineCache = fetchYarnDeps {
+    yarnLock = src + "/frontend/yarn.lock";
+    hash = "sha256-/ubCAs4C5nG8xNC77jTH+cJVNgddSxqGGPEVLDH/Cdo=";
+  };
+
+  cargoBuildFlags = lib.optionals (stdenv.hostPlatform.isMusl && stdenv.hostPlatform.isStatic) [
+    "--features" "mimalloc"
+  ] ++ [
+    "--features" "embed-static"
+  ];
+
+  preBuild = ''
+    python3 contrib/print_communities.py $nlnog_communities/communities | jq . > src/communities.json
+
+    pushd frontend
+
+    export HOME=$TMPDIR
+    yarn config --offline set yarn-offline-mirror $offlineCache
+    fixup-yarn-lock yarn.lock
+    yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
+    patchShebangs node_modules/
+
+    FERNGLAS_VERSION=${version} FERNGLAS_COMMIT=${src.rev} node_modules/.bin/webpack
+    cp -r dist/ ../static
+
+    popd
+  '';
+
+  meta = with lib; {
+    description = "Looking glass for your network using BGP and BMP as data source";
+    homepage = "https://wobcom.github.io/fernglas/";
+    changelog = "https://github.com/wobcom/fernglas/releases/tag/fernglas-${version}";
+    license = licenses.eupl12;
+    platforms = platforms.linux;
+    maintainers = teams.wdz.members;
+    mainProgram = "fernglas";
+  };
+}
diff --git a/pkgs/by-name/fi/files-cli/package.nix b/pkgs/by-name/fi/files-cli/package.nix
index 182b0292c8f4e..641e85d916630 100644
--- a/pkgs/by-name/fi/files-cli/package.nix
+++ b/pkgs/by-name/fi/files-cli/package.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "files-cli";
-  version = "2.12.54";
+  version = "2.12.56";
 
   src = fetchFromGitHub {
     repo = "files-cli";
     owner = "files-com";
     rev = "v${version}";
-    hash = "sha256-NA71J7sfbUW1c/FxVrmkTw/hwbZqFbxqdPjeMoYA9nc=";
+    hash = "sha256-0cvGdYy84gfxDIPcz4GqUNwwADSDaSdTlpkD6eYh2CU=";
   };
 
-  vendorHash = "sha256-/Zd5U/a/9mw/9llSRvmjLT+L7gcE0OZjkiRAOYHoQCU=";
+  vendorHash = "sha256-igFqxTkSJpWHfquvRnBDLXcW8VNsJJK4fNIDob5oCuE=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/by-name/fl/flarectl/package.nix b/pkgs/by-name/fl/flarectl/package.nix
index e6497b05f91bd..98f5f4641262e 100644
--- a/pkgs/by-name/fl/flarectl/package.nix
+++ b/pkgs/by-name/fl/flarectl/package.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "flarectl";
-  version = "0.92.0";
+  version = "0.93.0";
 
   src = fetchFromGitHub {
     owner = "cloudflare";
     repo = "cloudflare-go";
     rev = "v${version}";
-    hash = "sha256-nmDW8ALhyp5McnX86JN51kJSo0bUvwTsHnQkfKSxJMM=";
+    hash = "sha256-XN/GRay5fJ2EjGHguG9i4ENCRBPZQcwQJg/2ka0HyaE=";
   };
 
-  vendorHash = "sha256-F1fwzzBg60E7B9iPV0gziGB3WE1tcZ/6nMpnEyTjV1g=";
+  vendorHash = "sha256-/81Onrs+qyKEt79DtfX4EDDVxhzB0uqaHa3X+GbupWQ=";
 
   subPackages = [ "cmd/flarectl" ];
 
diff --git a/pkgs/by-name/fm/fm-go/package.nix b/pkgs/by-name/fm/fm-go/package.nix
index 204250e7c9076..d0d891bd78b46 100644
--- a/pkgs/by-name/fm/fm-go/package.nix
+++ b/pkgs/by-name/fm/fm-go/package.nix
@@ -7,16 +7,16 @@
 let
   finalAttrs = {
     pname = "fm";
-    version = "0.16.0";
+    version = "1.0.0";
 
     src = fetchFromGitHub {
       owner = "mistakenelf";
       repo = "fm";
       rev = "v${finalAttrs.version}";
-      hash = "sha256-wiACaszbkO9jBYmIfeQpcx984RY41Emyu911nkJxUFY=";
+      hash = "sha256-j92xf75JTLBaVr8GjAwlqgrieZCifVaIBy9ZMoDIaEY=";
     };
 
-    vendorHash = "sha256-AfRGoKiVZGVIbsDj5pV1zCkp2FpcfWKS0t+cTU51RRc=";
+    vendorHash = "sha256-iDKDUpxaV/ZGKvTeNu4m5X/tqQA311Nb+2gvrehpdpw=";
 
     meta = {
       homepage = "https://github.com/mistakenelf/fm";
diff --git a/pkgs/development/tools/continuous-integration/forgejo-actions-runner/default.nix b/pkgs/by-name/fo/forgejo-runner/package.nix
index dc5ad3708a0ef..10914f4d637f7 100644
--- a/pkgs/development/tools/continuous-integration/forgejo-actions-runner/default.nix
+++ b/pkgs/by-name/fo/forgejo-runner/package.nix
@@ -2,22 +2,22 @@
 , buildGoModule
 , fetchFromGitea
 , testers
-, forgejo-actions-runner
+, forgejo-runner
 }:
 
 buildGoModule rec {
-  pname = "forgejo-actions-runner";
-  version = "3.3.0";
+  pname = "forgejo-runner";
+  version = "3.4.1";
 
   src = fetchFromGitea {
     domain = "code.forgejo.org";
     owner = "forgejo";
     repo = "runner";
     rev = "v${version}";
-    hash = "sha256-ZpsHytsIp+ZW4DI7X9MmI7nZRnXVHvx905YdZGS6WMY=";
+    hash = "sha256-c8heIHt+EJ6LnZT4/6TTWd7v85VRHjH72bdje12un4M=";
   };
 
-  vendorHash = "sha256-5GnGXpMy1D7KpVAVroX07Vw5QKYYtwdIhQsk23WCLgc=";
+  vendorHash = "sha256-FCCQZdAYRtJR3DGQIEvUzv+1kqvxVTGkwJwZSohq28s=";
 
   ldflags = [
     "-s"
@@ -28,16 +28,16 @@ buildGoModule rec {
   doCheck = false; # Test try to lookup code.forgejo.org.
 
   passthru.tests.version = testers.testVersion {
-    package = forgejo-actions-runner;
+    package = forgejo-runner;
     version = src.rev;
   };
 
   meta = with lib; {
     description = "A runner for Forgejo based on act";
     homepage = "https://code.forgejo.org/forgejo/runner";
-    changelog = "https://gitea.com/gitea/act_runner/releases/tag/${src.rev}";
+    changelog = "https://code.forgejo.org/forgejo/runner/src/tag/${src.rev}/RELEASE-NOTES.md";
     license = licenses.mit;
-    maintainers = with maintainers; [ kranzes ];
+    maintainers = with maintainers; [ kranzes emilylange ];
     mainProgram = "act_runner";
   };
 }
diff --git a/pkgs/by-name/fr/francis/package.nix b/pkgs/by-name/fr/francis/package.nix
new file mode 100644
index 0000000000000..95a25ea95a293
--- /dev/null
+++ b/pkgs/by-name/fr/francis/package.nix
@@ -0,0 +1,52 @@
+{ cmake
+, fetchFromGitLab
+, kdePackages
+, lib
+, pkg-config
+, stdenv
+}:
+
+stdenv.mkDerivation rec {
+  pname = "francis";
+  version = "1.1.0";
+
+  src = fetchFromGitLab {
+    domain = "invent.kde.org";
+    repo = "francis";
+    owner = "utilities";
+    rev = "v${version}";
+    hash = "sha256-TvLFzGWb3RROGywhNzCvnFG00PpKC2k+/w1bgwTCESg=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    kdePackages.kirigami
+    kdePackages.kirigami-addons
+    kdePackages.plasma5support
+    kdePackages.qqc2-desktop-style
+    kdePackages.qtsvg
+    kdePackages.qtwayland
+    kdePackages.wrapQtAppsHook
+    pkg-config
+  ];
+
+  buildInputs = [
+    kdePackages.kiconthemes
+    # otherwise buttons are blank on non-kde
+    kdePackages.breeze-icons
+  ];
+
+  cmakeFlags = [
+    # fix can't find Qt6QmlCompilerPlusPrivate
+    "-DQT_NO_FIND_QMLSC=TRUE"
+  ];
+
+  meta = with lib; {
+    description = "Using the well-known pomodoro technique to help you get more productive";
+    homepage = "https://apps.kde.org/francis/";
+    license = with licenses; [ bsd2 bsd3 cc0 lgpl2Plus lgpl21Plus gpl3Plus ];
+    mainProgram = "francis";
+    maintainers = with maintainers; [ cimm ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/fw/fwupd/package.nix b/pkgs/by-name/fw/fwupd/package.nix
index 6de468ab47b59..e8726689e859c 100644
--- a/pkgs/by-name/fw/fwupd/package.nix
+++ b/pkgs/by-name/fw/fwupd/package.nix
@@ -120,7 +120,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "fwupd";
-  version = "1.9.15";
+  version = "1.9.16";
 
   # libfwupd goes to lib
   # daemon, plug-ins and libfwupdplugin go to out
@@ -131,7 +131,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "fwupd";
     repo = "fwupd";
     rev = finalAttrs.version;
-    hash = "sha256-w0egw5FKNAOnIYjp2RUx74taivnClQmRfhaFHdKOGZc=";
+    hash = "sha256-mM8HSSQD5znjpl9q/f+u0RzZEkFA1tnh+BPB2qdcWvI=";
   };
 
   patches = [
diff --git a/pkgs/applications/window-managers/gamescope/default.nix b/pkgs/by-name/ga/gamescope/package.nix
index a0dd62ab94941..a0dd62ab94941 100644
--- a/pkgs/applications/window-managers/gamescope/default.nix
+++ b/pkgs/by-name/ga/gamescope/package.nix
diff --git a/pkgs/applications/window-managers/gamescope/shaders-path.patch b/pkgs/by-name/ga/gamescope/shaders-path.patch
index bbdaf21a2e6fb..bbdaf21a2e6fb 100644
--- a/pkgs/applications/window-managers/gamescope/shaders-path.patch
+++ b/pkgs/by-name/ga/gamescope/shaders-path.patch
diff --git a/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch b/pkgs/by-name/ga/gamescope/use-pkgconfig.patch
index 2b4de54ae54df..2b4de54ae54df 100644
--- a/pkgs/applications/window-managers/gamescope/use-pkgconfig.patch
+++ b/pkgs/by-name/ga/gamescope/use-pkgconfig.patch
diff --git a/pkgs/by-name/ga/garnet/deps.nix b/pkgs/by-name/ga/garnet/deps.nix
new file mode 100644
index 0000000000000..daad19f764456
--- /dev/null
+++ b/pkgs/by-name/ga/garnet/deps.nix
@@ -0,0 +1,88 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+  (fetchNuGet { pname = "Azure.Core"; version = "1.25.0"; sha256 = "0wyrv74kqrr0scfz84sxniab88412fi91dw2h7sv315x2qkvindz"; })
+  (fetchNuGet { pname = "Azure.Storage.Blobs"; version = "12.14.1"; sha256 = "1k7jsin7p7zzqbfxvfz5xrzb46vqbbn569m3hd498mvf2f664yz4"; })
+  (fetchNuGet { pname = "Azure.Storage.Common"; version = "12.13.0"; sha256 = "06ngbyrqabnmbwac7p0yhayjvva7nj6cb3n9agmhd5mvrwhanbvf"; })
+  (fetchNuGet { pname = "CommandLineParser"; version = "2.9.1"; sha256 = "1sldkj8lakggn4hnyabjj1fppqh50fkdrr1k99d4gswpbk5kv582"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "6.0.27"; sha256 = "11sfm0vb8grybwdfzl9y3y1v9jg94rn3fpsf0995xm1qgk57piiv"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "7.0.16"; sha256 = "1nrk00w3jkb1r3m8zn7c05snan02b6s7n5s93aq2dl9kz0bm530c"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "6.0.27"; sha256 = "078vz7l3sw25jxkhxf646hwc1csasna4n04rjq6vcv30c9kx3lp9"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "7.0.16"; sha256 = "0g4zxka97q3bdc72yql296hx2laim5b4rfb8vxmknzdpzj0ydiks"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "6.0.27"; sha256 = "0cdvdbvvbky0y60732j2n2jjycgpm2ngx38hl6zq198xm1d4g43x"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "7.0.16"; sha256 = "0zy1zarikg4d1g06ax3zdjvfysw2393b9fgg7xnracqi17hr38ah"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "6.0.27"; sha256 = "11l2a80xxinf08m9i6jdy0nkjpdjs9llqb8gs7x0762cnyhds7la"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "7.0.16"; sha256 = "1wgmbbn81rbqlx44hg9zqrrcmiinss1qhgfsq37vzy2i8ycyn59w"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "6.0.27"; sha256 = "0r7qqwkqm9lraqwc25aadbg856v006h17yj8cxmp800iz7288k07"; })
+  (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "7.0.16"; sha256 = "1ggcy57k31bxqk6k1hsbmzxkyly9bzch7dw7fgl2yx4a439nkh54"; })
+  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "1.1.1"; sha256 = "0a1ahssqds2ympr7s4xcxv5y8jgxs7ahd6ah6fbgglj4rki1f1vw"; })
+  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; })
+  (fetchNuGet { pname = "Microsoft.Build.Tasks.Git"; version = "1.1.1"; sha256 = "1bb5p4zlnfn88skkvymxfsn0jybqncl4356hwnic9jxdq2d4fz1w"; })
+  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.5.0"; sha256 = "01i28nvzccxbqmiz217fxs6hnjwmd5fafs37rd49a6qp53y6623l"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "7.0.0"; sha256 = "0n1grglxql9llmrsbbnlz5chx8mxrb5cpvjngm0hfyrkgzcwz90d"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "7.0.0"; sha256 = "1as8cygz0pagg17w22nsf6mb49lr2mcl1x8i3ad1wi8lyzygy1a3"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "7.0.0"; sha256 = "1qifb1pv7s76lih8wnjk418wdk4qwn87q2n6dx54knfvxai410bl"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "7.0.0"; sha256 = "121zs4jp8iimgbpzm3wsglhjwkc06irg1pxy8c1zcdlsg34cfq1p"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "7.0.0"; sha256 = "181d7mp9307fs17lyy42f8cxnjwysddmpsalky4m0pqxcimnr6g7"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "7.0.0"; sha256 = "1bqd3pqn5dacgnkq0grc17cgb2i0w8z1raw12nwm3p3zhrfcvgxf"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "7.0.0"; sha256 = "1gn7d18i1wfy13vrwhmdv1rmsb4vrk26kqdld4cgvh77yigj90xs"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Configuration"; version = "7.0.0"; sha256 = "1f5fhpvzwyrwxh3g1ry027s4skmklf6mbm2w0p13h0x6fbmxcb24"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Console"; version = "7.0.0"; sha256 = "1m8ri2m3vlv9vzk0068jkrx0vkk4sqmk1kxmn8pc3wys38d38qaf"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "7.0.0"; sha256 = "0b90zkrsk5dw3wr749rbynhpxlg4bgqdnd7d5vdlw2g9c7zlhgx6"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "7.0.0"; sha256 = "1liyprh0zha2vgmqh92n8kkjz61zwhr7g16f0gmr297z2rg1j5pj"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "7.0.0"; sha256 = "1b4km9fszid9vp2zb3gya5ni9fn8bq62bzaas2ck2r7gs0sdys80"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "6.28.1"; sha256 = "0g5a5w34263psh90mp1403m9bh3pcfw6z29vlzdpllzbifk0licr"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "6.34.0"; sha256 = "0dgn51k142f73l6fk4bsqrpwqhcw6s8y98548kczbzy7qxcnyp82"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.JsonWebTokens"; version = "6.34.0"; sha256 = "0c01dqya958z9ypf0155aqdkvkz9j4j5mgnygxzkisri2cs2w7gs"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Logging"; version = "6.28.1"; sha256 = "15bq83wi4h8f1lqinijdqd7vg6n2v77hyza20mjqcp1h3hl2vj43"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Logging"; version = "6.34.0"; sha256 = "0fm4nrihhqn4wrcj2q06rzfrfzgzilb7ch3izkv89c4q74x0yhkb"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Protocols"; version = "6.28.1"; sha256 = "03zmp6bsxg4chm89pl5sh506jc19aljxbfsvbqazcci5wqyacnr8"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Protocols.OpenIdConnect"; version = "6.28.1"; sha256 = "0p1ib8559h2i290v7qyz8rq2aybdknplx1p36ylik695l7b3rqvm"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Tokens"; version = "6.28.1"; sha256 = "0ckpjjdy2rv1z7ivqrkc7z16rcqygxzs0la80g8df68p4xxfa0c5"; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Tokens"; version = "6.34.0"; sha256 = "1vkjwryz4wdsaawfq3r80qrmfiyv2zp9y6fzkf2014sqw4nf1vwl"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "6.0.27"; sha256 = "0p0apwm7xpwwvjl453livb8ngvc0izjp5yfpgv116vhig2mxszsa"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "7.0.16"; sha256 = "0wxa2mm34l32324rywns3bphxrkxm265wxck93z030klwvxdalri"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "6.0.27"; sha256 = "1vglh2l7brp6qbdngiiwsjwsp3cyzbzjcjw7dwqhfk0whc7n96kg"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "7.0.16"; sha256 = "1xiq43br5lk1xa4d4wzhdpn9lz3mixmyxggzbsf4i4q5692rv35f"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "6.0.27"; sha256 = "14zd7mgl866bhqqrcb6q3xbwrllks1nmfzhnbm8rf7h5cqqrqwbn"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "7.0.16"; sha256 = "0ln013191h2rkhm8xss4aqbb52ywp44rjfnn7pip99wdx66bkazs"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "6.0.27"; sha256 = "1kf3sm7hkqz5a4y5rb49yna10041f1h3lcqx885xlbhyb4q67gi9"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "7.0.16"; sha256 = "1b8w278n8hcxysjs56ghx4pdbfall66nnmk1kx5a0my7lp7yp6xf"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "6.0.27"; sha256 = "15fwbjq2r406fq175j2lsh4f91iiipmvaq96nsba3q2fh0c433zm"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "7.0.16"; sha256 = "19lnkab2p8nkfc4jag0whkv51v3qabwdyzjk6xgj61i6s8lnnz1f"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "6.0.27"; sha256 = "1dxvssf7rx05bipj03g8jm36j2mmdm13sg8rdwn6aa6whbwpip0r"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "7.0.16"; sha256 = "1qb3pk1kgvwjc2n4kqfx4bqjmaihjf8cd9cfkqkkwmnnw9jd7f83"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "6.0.27"; sha256 = "1j913pm78h35kvcm70276cnfvjn1r7r6jsc3jm1y0vb395qy6nfd"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "7.0.16"; sha256 = "1w41xwdikkyplxr1kqfn1fwjvbglgsaripgdglhdx9qdxgr3nfi3"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "6.0.27"; sha256 = "1mbjbj9c7sxw0hfq25ypv56hi9kik3vrrvr8ika3wcwv1ilpvczj"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "7.0.16"; sha256 = "0xgd5nj5nx3w3m9cbh3b6r0c2w5svxjkslwqq35w445vjhq435fz"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "6.0.27"; sha256 = "0dr1y76wgkqnkjxk5m8ps2g086sn4kp3a04v0ynarw5j0cipg994"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "7.0.16"; sha256 = "0mghc3ihk2j60yyrb57k200ddmhj5impl81lldpxxx9821pb0qha"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
+  (fetchNuGet { pname = "Microsoft.SourceLink.Common"; version = "1.1.1"; sha256 = "0xkdqs7az2cprar7jzjlgjpd64l6f8ixcmwmpkdm03fyb4s5m0bg"; })
+  (fetchNuGet { pname = "Microsoft.SourceLink.GitHub"; version = "1.1.1"; sha256 = "099y35f2npvva3jk1zp8hn0vb9pwm2l0ivjasdly6y2idv53s5yy"; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
+  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
+  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "4.6.0"; sha256 = "07pff0y96hj0k0izgmqlxydnx8cpsvfymicwi4m3dix979sdly09"; })
+  (fetchNuGet { pname = "System.IdentityModel.Tokens.Jwt"; version = "6.34.0"; sha256 = "150ybq4ba9sm3c37d758ngja6wz72f0840d8vfs6bhy6pw0svzwy"; })
+  (fetchNuGet { pname = "System.Interactive.Async"; version = "6.0.1"; sha256 = "17zzdxx7ibfwnxspxxi197a0gfgcqdzgrcza8dlwj13yi9vf8b73"; })
+  (fetchNuGet { pname = "System.IO.Hashing"; version = "6.0.0"; sha256 = "0lga30s3cllg2jkwldgabwrb0jg3dzj859bwj95xhnm3zcklnb41"; })
+  (fetchNuGet { pname = "System.Linq.Async"; version = "6.0.1"; sha256 = "10ira8hmv0i54yp9ggrrdm1c06j538sijfjpn1kmnh9j2xk5yzmq"; })
+  (fetchNuGet { pname = "System.Memory.Data"; version = "1.0.2"; sha256 = "1p8qdg0gzxhjvabryc3xws2629pj8w5zz2iqh86kw8sh0rann9ay"; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
+  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Cng"; version = "4.5.0"; sha256 = "1pm4ykbcz48f1hdmwpia432ha6qbb9kbrxrrp7cg3m8q8xn52ngn"; })
+  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "4.7.2"; sha256 = "0ap286ykazrl42if59bxhzv81safdfrrmfqr3112siwyajx4wih9"; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "7.0.0"; sha256 = "1151hbyrcf8kyg1jz8k9awpbic98lwz9x129rg7zk1wrs6vjlpxl"; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "4.7.2"; sha256 = "10xj1pw2dgd42anikvj9qm23ccssrcp7dpznpj4j7xjp1ikhy3y4"; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "7.0.0"; sha256 = "0scb0lp7wbgcinaa4kqiqs7b8i5nx4ppfad81138jiwd1sl37pyp"; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
+]
diff --git a/pkgs/by-name/ga/garnet/package.nix b/pkgs/by-name/ga/garnet/package.nix
new file mode 100644
index 0000000000000..4684f924750b2
--- /dev/null
+++ b/pkgs/by-name/ga/garnet/package.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  buildDotnetModule,
+  fetchFromGitHub,
+  garnet,
+  dotnetCorePackages,
+}:
+buildDotnetModule {
+  pname = "garnet";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "microsoft";
+    repo = "garnet";
+    rev = "v${garnet.version}";
+    hash = "sha256-elUmM9Yw1/gazIV194P+noIm7ajQpRTccEhD5gN9D2Q=";
+  };
+
+  projectFile = "main/GarnetServer/GarnetServer.csproj";
+  nugetDeps = ./deps.nix;
+
+  dotnet-sdk = dotnetCorePackages.sdk_8_0;
+  dotnet-runtime = dotnetCorePackages.runtime_8_0;
+
+  dotnetInstallFlags = ["-f" "net8.0"];
+
+  meta = with lib; {
+    mainProgram = "GarnetServer";
+    description = "A remote cache-store from Microsoft Research";
+    longDescription = ''
+      A remote cache-store that offers strong performance, scalability,
+      storage, recovery, cluster sharding, key migration, replication features,
+      and compatibility with existing Redis clients
+    '';
+    homepage = "https://microsoft.github.io/garnet/";
+    changelog = "https://github.com/microsoft/garnet/releases/tag/v${garnet.version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [getchoo];
+  };
+}
diff --git a/pkgs/by-name/gi/git-gr/package.nix b/pkgs/by-name/gi/git-gr/package.nix
index ca07589a0a30d..99877a1af2002 100644
--- a/pkgs/by-name/gi/git-gr/package.nix
+++ b/pkgs/by-name/gi/git-gr/package.nix
@@ -15,7 +15,7 @@ let
   canRunGitGr = stdenv.hostPlatform.emulatorAvailable buildPackages;
   gitGr = "${stdenv.hostPlatform.emulator buildPackages} $out/bin/git-gr";
   pname = "git-gr";
-  version = "1.2.1";
+  version = "1.4.1";
 in
 rustPlatform.buildRustPackage {
   inherit pname version;
@@ -24,12 +24,12 @@ rustPlatform.buildRustPackage {
     owner = "9999years";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-5Pr1z+RmY92cfT7KtFnUKpzhniUN6RjDKBekWiYCCuU=";
+    hash = "sha256-8Z4ZLejNS6KQ/MXmQuZ0Tq9VmuJ5Nhxo4TS0tOlg/R4=";
   };
 
   buildFeatures = [ "clap_mangen" ];
 
-  cargoHash = "sha256-5JLTSBBTPGUbuqUql/cMJKBLlO2uzuU1EDhfScaeCUg=";
+  cargoHash = "sha256-REtY+UgtJCoTDgpI/+O341WsC4WJ4PS7/yFwWSVKKRo=";
 
   OPENSSL_NO_VENDOR = true;
 
diff --git a/pkgs/by-name/gi/gitu/package.nix b/pkgs/by-name/gi/gitu/package.nix
index fbe9d06906fe7..7948fdd829660 100644
--- a/pkgs/by-name/gi/gitu/package.nix
+++ b/pkgs/by-name/gi/gitu/package.nix
@@ -12,16 +12,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "gitu";
-  version = "0.11.0";
+  version = "0.15.0";
 
   src = fetchFromGitHub {
     owner = "altsem";
     repo = "gitu";
     rev = "v${version}";
-    hash = "sha256-SAGihNV6lTFq0adNh7QDm7Mcg7kVCKq2IstFe965Lcc=";
+    hash = "sha256-/yPP8GzeaVMauhcYLDAgXzOafUpOhJF2tyHOyD6KWS8=";
   };
 
-  cargoHash = "sha256-RfjefPr/NuZaT56JkP1pDpH7I7K0vhIelwASEBQFJFc=";
+  cargoHash = "sha256-eKRFPnH9MvSykrnPo4dc5DtEfb79s0hBtmYfERGQbWg=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/servers/gemini/gmid/default.nix b/pkgs/by-name/gm/gmid/package.nix
index 95e76aafd9fe5..b7682b2b6221b 100644
--- a/pkgs/servers/gemini/gmid/default.nix
+++ b/pkgs/by-name/gm/gmid/package.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gmid";
-  version = "1.8.6";
+  version = "2.0.2";
 
   src = fetchFromGitHub {
     owner = "omar-polo";
     repo = pname;
     rev = version;
-    hash = "sha256-ds5k5VHwc7/sq4PUe/WvxAx7gJkU4phKZk0KunPLNE0=";
+    hash = "sha256-5K6+CVX0/m6SBcTvwy4GD0x9R/yQjd+2tTJiA4OagcI=";
   };
 
   nativeBuildInputs = [ bison ];
diff --git a/pkgs/by-name/go/go-critic/package.nix b/pkgs/by-name/go/go-critic/package.nix
index ea59125410635..aee7e0da791f8 100644
--- a/pkgs/by-name/go/go-critic/package.nix
+++ b/pkgs/by-name/go/go-critic/package.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "go-critic";
-  version = "0.11.2";
+  version = "0.11.3";
 
   src = fetchFromGitHub {
     owner = "go-critic";
     repo = "go-critic";
     rev = "v${version}";
-    hash = "sha256-xej9ROsJYrjvlitxnAjUKPsp0kb8INvFnkdNfYiycz8=";
+    hash = "sha256-GEwUz6iH9y+d2UoKY68VHOKomn4EUkzoUgNHTqluW8I=";
   };
 
-  vendorHash = "sha256-pYdnZjCGx+skF/kqA1QO3NuVqOfsMJNVhFBpwtdZhIA=";
+  vendorHash = "sha256-rfqX76SQnLQFwheHlS3GZD+jeaVd38qfSnQCH7OH6+I=";
 
   subPackages = [
     "cmd/gocritic"
diff --git a/pkgs/by-name/go/goldwarden/package.nix b/pkgs/by-name/go/goldwarden/package.nix
index ad80debb3ee61..f9f862fe7cfb0 100644
--- a/pkgs/by-name/go/goldwarden/package.nix
+++ b/pkgs/by-name/go/goldwarden/package.nix
@@ -8,7 +8,7 @@
 , libfido2
 , libnotify
 , python3
-, wrapGAppsHook
+, wrapGAppsHook4
 }:
 
 buildGoModule rec {
@@ -55,7 +55,7 @@ buildGoModule rec {
   nativeBuildInputs = [
     gobject-introspection
     python3.pkgs.wrapPython
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/by-name/go/gordonflashtool/package.nix b/pkgs/by-name/go/gordonflashtool/package.nix
new file mode 100644
index 0000000000000..63fecf970c716
--- /dev/null
+++ b/pkgs/by-name/go/gordonflashtool/package.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchFromGitHub, nasm, unixtools }:
+
+let
+  version = "10";
+in
+
+stdenv.mkDerivation {
+  pname = "gordonflashtool";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "marmolak";
+    repo = "GordonFlashTool";
+    rev = "release-${version}";
+    hash = "sha256-/zpw7kVdQeR7QcRsP1+qcu8+hlEQTGwOKClJkwVcBPg=";
+  };
+
+  nativeBuildInputs = [ nasm unixtools.xxd ];
+
+  buildPhase = ''
+    runHook preBuild
+    # build the gordon binary
+    make all-boot-code
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 gordon $out/bin/gordon
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://github.com/marmolak/GordonFlashTool";
+    description = "Toolset for Gotek SFR1M44-U100 formatted usb flash drives.";
+    maintainers = with lib.maintainers; [ marmolak ];
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.all;
+    mainProgram = "gordon";
+  };
+}
diff --git a/pkgs/by-name/gp/gpustat/package.nix b/pkgs/by-name/gp/gpustat/package.nix
new file mode 100644
index 0000000000000..3492775b3be0b
--- /dev/null
+++ b/pkgs/by-name/gp/gpustat/package.nix
@@ -0,0 +1,71 @@
+{ lib
+, fetchFromGitHub
+, rustPlatform
+, pkg-config
+, fontconfig
+, libGL
+, libX11
+, libXcursor
+, libXi
+, libXrandr
+, cmake
+, libxkbcommon
+, wayland
+, makeWrapper
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "gpustat";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "arduano";
+    repo = "gpustat";
+    rev = "v${version}";
+    sha256 = "sha256-M9P/qfw/tp9ogkNOE3b2fD2rGFnii1/VwmqJHqXb7Mg=";
+  };
+
+  cargoSha256 = "sha256-po/pEMZEtySZnz7l2FI7Wqbmp2CiWBijchKGkqlIMPU=";
+
+  nativeBuildInputs = [
+    cmake
+    makeWrapper
+    pkg-config
+  ];
+
+  buildInputs = [
+    fontconfig
+    libGL
+    libX11
+    libXcursor
+    libXi
+    libXrandr
+    libxkbcommon
+    wayland
+  ];
+
+  postInstall = ''
+    mkdir -p $out/share/applications $out/share/pixmaps
+
+    cp assets/gpustat.desktop $out/share/applications
+    cp assets/gpustat_icon_* $out/share/pixmaps
+  '';
+
+  # Wrap the program in a script that sets the LD_LIBRARY_PATH environment variable
+  # so that it can find the shared libraries it depends on. This is currently a
+  # requirement for running Rust programs that depend on `egui` within a Nix environment.
+  # https://github.com/emilk/egui/issues/2486
+  postFixup = ''
+    wrapProgram $out/bin/gpustat \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}:/run/opengl-driver/lib"
+  '';
+
+  meta = with lib; {
+    description = "A simple utility for viewing GPU utilization";
+    homepage = "https://github.com/arduano/gpustat";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ arduano ];
+    mainProgram = "gpustat";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/gu/guix/package.nix b/pkgs/by-name/gu/guix/package.nix
index 6549a9b8e2763..8f9e4e4836b95 100644
--- a/pkgs/by-name/gu/guix/package.nix
+++ b/pkgs/by-name/gu/guix/package.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchurl
+, fetchpatch
 , autoreconfHook
 , disarchive
 , git
@@ -43,6 +44,19 @@ stdenv.mkDerivation rec {
     hash = "sha256-Q8dpy/Yy7wVEmsH6SMG6FSwzSUxqvH5HE3u6eyFJ+KQ=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "CVE-2024-27297_1.patch";
+      url = "https://git.savannah.gnu.org/cgit/guix.git/patch/?id=8f4ffb3fae133bb21d7991e97c2f19a7108b1143";
+      hash = "sha256-xKo1h2uckC2pYHt+memekagfL6dWcF8gOnTOOW/wJUU=";
+    })
+    (fetchpatch {
+      name = "CVE-2024-27297_2.patch";
+      url = "https://git.savannah.gnu.org/cgit/guix.git/patch/?id=ff1251de0bc327ec478fc66a562430fbf35aef42";
+      hash = "sha256-f4KWDVrvO/oI+4SCUHU5GandkGtHrlaM1BWygM/Qlao=";
+    })
+  ];
+
   postPatch = ''
     sed nix/local.mk -i -E \
       -e "s|^sysvinitservicedir = .*$|sysvinitservicedir = $out/etc/init.d|" \
diff --git a/pkgs/applications/virtualization/gvisor/default.nix b/pkgs/by-name/gv/gvisor/package.nix
index 0a1d737b2eed8..ceb122a2c08db 100644
--- a/pkgs/applications/virtualization/gvisor/default.nix
+++ b/pkgs/by-name/gv/gvisor/package.nix
@@ -10,7 +10,7 @@
 
 buildGoModule {
   pname = "gvisor";
-  version = "20240311.0-unstable-2024-03-25";
+  version = "20240401.0";
 
   # gvisor provides a synthetic go branch (https://github.com/google/gvisor/tree/go)
   # that can be used to build gvisor without bazel.
@@ -19,8 +19,8 @@ buildGoModule {
   src = fetchFromGitHub {
     owner = "google";
     repo = "gvisor";
-    rev = "b1e227737fd6e3bb3b11a403a1a5013bc89b3b60";
-    hash = "sha256-EfXzXkoEgtEerNMacRhbITCRig+t23WlIRya0BlJZcE=";
+    rev = "9d995324d058812a5476f8c06b20167012511e9c";
+    hash = "sha256-idgUEbYAfnm/HphVs12Sj1FwG+jmL2BBr0PJnG9BC3A=";
   };
 
   vendorHash = "sha256-jbMXeNXzvjfJcIfHjvf8I3ePjm6KFTXJ94ia4T2hUs4=";
diff --git a/pkgs/by-name/ha/halloy/Cargo.lock b/pkgs/by-name/ha/halloy/Cargo.lock
index 55f2600e614aa..774723b056a05 100644
--- a/pkgs/by-name/ha/halloy/Cargo.lock
+++ b/pkgs/by-name/ha/halloy/Cargo.lock
@@ -35,6 +35,17 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
 name = "ahash"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
+dependencies = [
+ "getrandom",
+ "once_cell",
+ "version_check",
+]
+
+[[package]]
+name = "ahash"
 version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
@@ -48,9 +59,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -74,7 +85,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289"
 dependencies = [
  "android-properties",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cc",
  "cesu8",
  "jni",
@@ -146,6 +157,23 @@ dependencies = [
 ]
 
 [[package]]
+name = "ashpd"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093"
+dependencies = [
+ "enumflags2",
+ "futures-channel",
+ "futures-util",
+ "rand",
+ "serde",
+ "serde_repr",
+ "tokio",
+ "url",
+ "zbus 4.1.2",
+]
+
+[[package]]
 name = "async-broadcast"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -156,6 +184,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "async-broadcast"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb"
+dependencies = [
+ "event-listener 5.2.0",
+ "event-listener-strategy 0.5.0",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "async-channel"
 version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -177,8 +217,8 @@ dependencies = [
  "async-lock 3.3.0",
  "async-task",
  "concurrent-queue",
- "fastrand 2.0.1",
- "futures-lite 2.2.0",
+ "fastrand 2.0.2",
+ "futures-lite 2.3.0",
  "slab",
 ]
 
@@ -195,6 +235,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "async-fs"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1"
+dependencies = [
+ "async-lock 3.3.0",
+ "blocking",
+ "futures-lite 2.3.0",
+]
+
+[[package]]
 name = "async-io"
 version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -224,10 +275,10 @@ dependencies = [
  "cfg-if",
  "concurrent-queue",
  "futures-io",
- "futures-lite 2.2.0",
+ "futures-lite 2.3.0",
  "parking",
- "polling 3.5.0",
- "rustix 0.38.31",
+ "polling 3.6.0",
+ "rustix 0.38.32",
  "slab",
  "tracing",
  "windows-sys 0.52.0",
@@ -266,19 +317,37 @@ dependencies = [
  "cfg-if",
  "event-listener 3.1.0",
  "futures-lite 1.13.0",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
+name = "async-process"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "451e3cf68011bd56771c79db04a9e333095ab6349f7e47592b788e9b98720cc8"
+dependencies = [
+ "async-channel",
+ "async-io 2.3.2",
+ "async-lock 3.3.0",
+ "async-signal",
+ "blocking",
+ "cfg-if",
+ "event-listener 5.2.0",
+ "futures-lite 2.3.0",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
 name = "async-recursion"
-version = "1.0.5"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
+checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -293,7 +362,7 @@ dependencies = [
  "cfg-if",
  "futures-core",
  "futures-io",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "signal-hook-registry",
  "slab",
  "windows-sys 0.48.0",
@@ -307,13 +376,13 @@ checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
 
 [[package]]
 name = "async-trait"
-version = "0.1.77"
+version = "0.1.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -330,9 +399,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
 name = "backtrace"
-version = "0.3.69"
+version = "0.3.71"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
 dependencies = [
  "addr2line",
  "cc",
@@ -378,9 +447,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.2"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
 
 [[package]]
 name = "block"
@@ -425,9 +494,9 @@ dependencies = [
  "async-channel",
  "async-lock 3.3.0",
  "async-task",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
  "futures-io",
- "futures-lite 2.2.0",
+ "futures-lite 2.3.0",
  "piper",
  "tracing",
 ]
@@ -455,7 +524,7 @@ checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -466,9 +535,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+
+[[package]]
+name = "bytesize"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc"
 
 [[package]]
 name = "calloop"
@@ -476,10 +551,10 @@ version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "log",
- "polling 3.5.0",
- "rustix 0.38.31",
+ "polling 3.6.0",
+ "rustix 0.38.32",
  "slab",
  "thiserror",
 ]
@@ -491,7 +566,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
 dependencies = [
  "calloop",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "wayland-backend",
  "wayland-client",
 ]
@@ -547,9 +622,9 @@ dependencies = [
 
 [[package]]
 name = "clipboard-win"
-version = "5.2.0"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12f9a0700e0127ba15d1d52dd742097f821cd9c65939303a44d970465040a297"
+checksum = "d517d4b86184dbb111d3556a10f1c8a04da7428d2987bf1081602bf11c3aa9ee"
 dependencies = [
  "error-code",
 ]
@@ -807,7 +882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c"
 dependencies = [
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -822,20 +897,39 @@ version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "libloading 0.8.3",
  "winapi",
 ]
 
 [[package]]
+name = "dark-light"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb02ff40e6d65b7fcda0089104559e5a32f67c04d00ba4c392ce2d77ec9752c7"
+dependencies = [
+ "dconf_rs",
+ "detect-desktop-environment",
+ "dirs",
+ "objc",
+ "rust-ini",
+ "web-sys",
+ "winreg 0.10.1",
+ "zbus 4.1.2",
+ "zvariant 3.15.1",
+]
+
+[[package]]
 name = "data"
 version = "0.1.0"
 dependencies = [
  "base64",
+ "bytes",
  "chrono",
  "dirs-next",
  "flate2",
  "futures",
+ "hex",
  "iced_core",
  "irc",
  "itertools",
@@ -843,9 +937,11 @@ dependencies = [
  "palette",
  "rand",
  "rand_chacha",
+ "reqwest",
  "seahash",
  "serde",
  "serde_json",
+ "sha2",
  "thiserror",
  "timeago",
  "tokio",
@@ -854,6 +950,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "dconf_rs"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b"
+
+[[package]]
 name = "deranged"
 version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -874,6 +976,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "detect-desktop-environment"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21d8ad60dd5b13a4ee6bd8fa2d5d88965c597c67bce32b5fc49c94f55cb50810"
+
+[[package]]
 name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -884,6 +992,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "dirs"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
 name = "dirs-next"
 version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -894,6 +1011,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "dirs-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
 name = "dirs-sys-next"
 version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -920,6 +1048,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "dlv-list"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257"
+
+[[package]]
 name = "downcast-rs"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -931,11 +1065,11 @@ version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "bytemuck",
  "drm-ffi",
  "drm-fourcc",
- "rustix 0.38.31",
+ "rustix 0.38.32",
 ]
 
 [[package]]
@@ -945,7 +1079,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6"
 dependencies = [
  "drm-sys",
- "rustix 0.38.31",
+ "rustix 0.38.32",
 ]
 
 [[package]]
@@ -981,10 +1115,25 @@ dependencies = [
  "rustc_version",
  "toml",
  "vswhom",
- "winreg",
+ "winreg 0.52.0",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
 ]
 
 [[package]]
+name = "endi"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
+
+[[package]]
 name = "enumflags2"
 version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1002,7 +1151,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -1138,9 +1287,9 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
 
 [[package]]
 name = "fdeflate"
@@ -1180,6 +1329,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
 name = "font-types"
 version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1235,7 +1390,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -1251,6 +1406,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
 
 [[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"
 version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1316,11 +1480,11 @@ dependencies = [
 
 [[package]]
 name = "futures-lite"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
 dependencies = [
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
  "futures-core",
  "futures-io",
  "parking",
@@ -1335,7 +1499,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -1456,12 +1620,12 @@ dependencies = [
 [[package]]
 name = "glyphon"
 version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a62d0338e4056db6a73221c2fb2e30619452f6ea9651bac4110f51b0f7a7581"
+source = "git+https://github.com/hecrj/glyphon.git?rev=ceed55403ce53e120ce9d1fae17dcfe388726118#ceed55403ce53e120ce9d1fae17dcfe388726118"
 dependencies = [
  "cosmic-text",
  "etagere",
  "lru",
+ "rustc-hash",
  "wgpu",
 ]
 
@@ -1471,7 +1635,7 @@ version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "gpu-alloc-types",
 ]
 
@@ -1481,7 +1645,7 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
 ]
 
 [[package]]
@@ -1503,9 +1667,9 @@ version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "gpu-descriptor-types",
- "hashbrown",
+ "hashbrown 0.14.3",
 ]
 
 [[package]]
@@ -1514,7 +1678,7 @@ version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
 ]
 
 [[package]]
@@ -1528,6 +1692,25 @@ dependencies = [
 ]
 
 [[package]]
+name = "h2"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51ee2dd2e4f378392eeff5d51618cd9a63166a2513846bbc55f21cfacd9199d4"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
 name = "half"
 version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1541,6 +1724,7 @@ dependencies = [
 name = "halloy"
 version = "0.1.0"
 dependencies = [
+ "bytesize",
  "chrono",
  "data",
  "embed-resource",
@@ -1552,7 +1736,9 @@ dependencies = [
  "once_cell",
  "open",
  "palette",
+ "rfd",
  "thiserror",
+ "timeago",
  "tokio",
  "unicode-segmentation",
  "uuid",
@@ -1560,11 +1746,20 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+dependencies = [
+ "ahash 0.7.8",
+]
+
+[[package]]
+name = "hashbrown"
 version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
 dependencies = [
- "ahash",
+ "ahash 0.8.11",
  "allocator-api2",
 ]
 
@@ -1574,7 +1769,7 @@ version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "com",
  "libc",
  "libloading 0.8.3",
@@ -1608,6 +1803,102 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
 
 [[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.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
+dependencies = [
+ "bytes",
+ "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "hyper"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[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.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "pin-project-lite",
+ "socket2 0.5.6",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
 name = "iana-time-zone"
 version = "0.1.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1633,8 +1924,9 @@ dependencies = [
 [[package]]
 name = "iced"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
+ "iced_core",
  "iced_futures",
  "iced_renderer",
  "iced_widget",
@@ -1646,29 +1938,31 @@ dependencies = [
 [[package]]
 name = "iced_core"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
+ "dark-light",
  "glam",
  "log",
  "num-traits",
  "once_cell",
  "palette",
  "raw-window-handle",
+ "rustc-hash",
  "smol_str",
  "thiserror",
  "web-time",
- "xxhash-rust",
 ]
 
 [[package]]
 name = "iced_futures"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
  "futures",
  "iced_core",
  "log",
+ "rustc-hash",
  "tokio",
  "wasm-bindgen-futures",
  "wasm-timer",
@@ -1677,9 +1971,9 @@ dependencies = [
 [[package]]
 name = "iced_graphics"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "bytemuck",
  "cosmic-text",
  "half",
@@ -1693,13 +1987,12 @@ dependencies = [
  "rustc-hash",
  "thiserror",
  "unicode-segmentation",
- "xxhash-rust",
 ]
 
 [[package]]
 name = "iced_renderer"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
  "iced_graphics",
  "iced_tiny_skia",
@@ -1711,7 +2004,7 @@ dependencies = [
 [[package]]
 name = "iced_runtime"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
  "iced_core",
  "iced_futures",
@@ -1722,7 +2015,7 @@ dependencies = [
 [[package]]
 name = "iced_tiny_skia"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
  "bytemuck",
  "cosmic-text",
@@ -1732,15 +2025,14 @@ dependencies = [
  "rustc-hash",
  "softbuffer",
  "tiny-skia",
- "xxhash-rust",
 ]
 
 [[package]]
 name = "iced_wgpu"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "bytemuck",
  "futures",
  "glam",
@@ -1749,18 +2041,21 @@ dependencies = [
  "iced_graphics",
  "log",
  "once_cell",
+ "rustc-hash",
+ "thiserror",
  "wgpu",
 ]
 
 [[package]]
 name = "iced_widget"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
  "iced_renderer",
  "iced_runtime",
  "num-traits",
  "ouroboros",
+ "rustc-hash",
  "thiserror",
  "unicode-segmentation",
 ]
@@ -1768,11 +2063,12 @@ dependencies = [
 [[package]]
 name = "iced_winit"
 version = "0.13.0-dev"
-source = "git+https://github.com/iced-rs/iced?rev=3d915d3cb30e5d08829aa2928676a53c505a601e#3d915d3cb30e5d08829aa2928676a53c505a601e"
+source = "git+https://github.com/iced-rs/iced?rev=31d1d5fecbef50fa319cabd5d4194f1e4aaefa21#31d1d5fecbef50fa319cabd5d4194f1e4aaefa21"
 dependencies = [
  "iced_graphics",
  "iced_runtime",
  "log",
+ "rustc-hash",
  "thiserror",
  "tracing",
  "web-sys",
@@ -1793,6 +2089,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
 name = "image"
 version = "0.24.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1812,12 +2118,12 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.2.5"
+version = "2.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
- "hashbrown",
+ "hashbrown 0.14.3",
 ]
 
 [[package]]
@@ -1841,15 +2147,23 @@ dependencies = [
 ]
 
 [[package]]
+name = "ipnet"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+
+[[package]]
 name = "irc"
 version = "0.1.0"
 dependencies = [
  "bytes",
  "futures",
  "irc_proto",
+ "rustls-native-certs",
+ "rustls-pemfile 2.1.1",
  "thiserror",
  "tokio",
- "tokio-native-tls",
+ "tokio-rustls",
  "tokio-util",
 ]
 
@@ -2040,7 +2354,7 @@ version = "0.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "libc",
  "redox_syscall 0.4.1",
 ]
@@ -2051,7 +2365,7 @@ version = "0.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "libc",
  "redox_syscall 0.4.1",
 ]
@@ -2095,9 +2409,6 @@ name = "lru"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
-dependencies = [
- "hashbrown",
-]
 
 [[package]]
 name = "mac-notification-sys"
@@ -2169,7 +2480,7 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "block",
  "core-graphics-types",
  "foreign-types 0.5.0",
@@ -2179,6 +2490,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
 name = "minimal-lexical"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2218,7 +2535,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843"
 dependencies = [
  "bit-set",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "codespan-reporting",
  "hexf-parse",
  "indexmap",
@@ -2255,7 +2572,7 @@ version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "jni-sys",
  "log",
  "ndk-sys",
@@ -2292,6 +2609,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "nix"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+dependencies = [
+ "bitflags 2.5.0",
+ "cfg-if",
+ "cfg_aliases 0.1.1",
+ "libc",
+ "memoffset 0.9.0",
+]
+
+[[package]]
 name = "nom"
 version = "7.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2311,7 +2641,7 @@ dependencies = [
  "mac-notification-sys",
  "serde",
  "tauri-winrt-notification",
- "zbus",
+ "zbus 3.15.1",
 ]
 
 [[package]]
@@ -2357,7 +2687,7 @@ dependencies = [
  "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2453,7 +2783,7 @@ version = "0.10.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cfg-if",
  "foreign-types 0.3.2",
  "libc",
@@ -2470,7 +2800,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2501,6 +2831,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "ordered-multimap"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a"
+dependencies = [
+ "dlv-list",
+ "hashbrown 0.12.3",
+]
+
+[[package]]
 name = "ordered-stream"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2532,7 +2872,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2-diagnostics",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2564,7 +2904,7 @@ checksum = "e8890702dbec0bad9116041ae586f84805b13eecd1d8b1df27c29998a9969d6d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2669,7 +3009,7 @@ dependencies = [
  "phf_shared",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2682,6 +3022,26 @@ dependencies = [
 ]
 
 [[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.55",
+]
+
+[[package]]
 name = "pin-project-lite"
 version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2700,7 +3060,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
 dependencies = [
  "atomic-waker",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
  "futures-io",
 ]
 
@@ -2741,19 +3101,26 @@ dependencies = [
 
 [[package]]
 name = "polling"
-version = "3.5.0"
+version = "3.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
+checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
 dependencies = [
  "cfg-if",
  "concurrent-queue",
+ "hermit-abi",
  "pin-project-lite",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "tracing",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
+name = "pollster"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
+
+[[package]]
 name = "powerfmt"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2807,7 +3174,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
  "version_check",
  "yansi",
 ]
@@ -2904,9 +3271,9 @@ checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
 
 [[package]]
 name = "rayon"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -2924,9 +3291,9 @@ dependencies = [
 
 [[package]]
 name = "read-fonts"
-version = "0.15.6"
+version = "0.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17ea23eedb4d938031b6d4343222444608727a6aa68ec355e13588d9947ffe92"
+checksum = "81c524658d3b77930a391f559756d91dbe829ab6cf4687083f615d395df99722"
 dependencies = [
  "font-types",
 ]
@@ -2971,9 +3338,9 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.3"
+version = "1.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -3005,12 +3372,102 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
 
 [[package]]
+name = "reqwest"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338"
+dependencies = [
+ "base64",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "http-body-util",
+ "hyper",
+ "hyper-tls",
+ "hyper-util",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls-pemfile 1.0.4",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "system-configuration",
+ "tokio",
+ "tokio-native-tls",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg 0.50.0",
+]
+
+[[package]]
+name = "rfd"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251"
+dependencies = [
+ "ashpd",
+ "block",
+ "dispatch",
+ "js-sys",
+ "log",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "pollster",
+ "raw-window-handle",
+ "urlencoding",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows-sys 0.48.0",
+]
+
+[[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 = "roxmltree"
 version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f"
 
 [[package]]
+name = "rust-ini"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df"
+dependencies = [
+ "cfg-if",
+ "ordered-multimap",
+]
+
+[[package]]
 name = "rustc-demangle"
 version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3047,11 +3504,11 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.31"
+version = "0.38.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "errno",
  "libc",
  "linux-raw-sys 0.4.13",
@@ -3059,6 +3516,69 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustls"
+version = "0.23.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c4d6d8ad9f2492485e13453acbb291dd08f64441b6609c491f1c2cd2c6b4fe1"
+dependencies = [
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.1",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab"
+dependencies = [
+ "base64",
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247"
+
+[[package]]
+name = "rustls-webpki"
+version = "0.102.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
 name = "rustybuzz"
 version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3182,7 +3702,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3204,7 +3724,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3217,6 +3737,18 @@ dependencies = [
 ]
 
 [[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",
+]
+
+[[package]]
 name = "sha1"
 version = "0.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3228,6 +3760,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
 name = "signal-hook-registry"
 version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3268,9 +3811,9 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "smithay-client-toolkit"
@@ -3278,14 +3821,14 @@ version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "calloop",
  "calloop-wayland-source",
  "cursor-icon",
  "libc",
  "log",
  "memmap2 0.9.4",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "thiserror",
  "wayland-backend",
  "wayland-client",
@@ -3349,7 +3892,7 @@ dependencies = [
  "cocoa",
  "core-graphics",
  "drm",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
  "foreign-types 0.5.0",
  "js-sys",
  "log",
@@ -3357,7 +3900,7 @@ dependencies = [
  "objc",
  "raw-window-handle",
  "redox_syscall 0.4.1",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "tiny-xlib",
  "wasm-bindgen",
  "wayland-backend",
@@ -3383,7 +3926,7 @@ version = "0.3.0+sdk-1.3.268.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
 ]
 
 [[package]]
@@ -3399,6 +3942,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
 
 [[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
 name = "svg_fmt"
 version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3406,9 +3955,9 @@ checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499"
 
 [[package]]
 name = "swash"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d06ff4664af8923625604261c645f5c4cc610cc83c84bec74b50d76237089de7"
+checksum = "9af636fb90d39858650cae1088a37e2862dab4e874a0bb49d6dfb5b2dacf0e24"
 dependencies = [
  "read-fonts",
  "yazi",
@@ -3428,9 +3977,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.52"
+version = "2.0.55"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
+checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3438,6 +3987,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
 name = "sys-locale"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3447,6 +4002,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
 name = "tauri-winrt-notification"
 version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3463,8 +4039,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
 dependencies = [
  "cfg-if",
- "fastrand 2.0.1",
- "rustix 0.38.31",
+ "fastrand 2.0.2",
+ "rustix 0.38.32",
  "windows-sys 0.52.0",
 ]
 
@@ -3494,7 +4070,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3606,6 +4182,7 @@ dependencies = [
  "signal-hook-registry",
  "socket2 0.5.6",
  "tokio-macros",
+ "tracing",
  "windows-sys 0.48.0",
 ]
 
@@ -3617,7 +4194,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3631,10 +4208,21 @@ dependencies = [
 ]
 
 [[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-stream"
-version = "0.1.14"
+version = "0.1.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
 dependencies = [
  "futures-core",
  "pin-project-lite",
@@ -3657,14 +4245,14 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "0.8.11"
+version = "0.8.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit 0.22.7",
+ "toml_edit 0.22.9",
 ]
 
 [[package]]
@@ -3700,9 +4288,9 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.22.7"
+version = "0.22.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
 dependencies = [
  "indexmap",
  "serde",
@@ -3712,11 +4300,40 @@ dependencies = [
 ]
 
 [[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
 name = "tracing"
 version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
 dependencies = [
+ "log",
  "pin-project-lite",
  "tracing-attributes",
  "tracing-core",
@@ -3730,7 +4347,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3743,6 +4360,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
 name = "ttf-parser"
 version = "0.19.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3802,6 +4425,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
 
 [[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
 name = "unicode-properties"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3832,10 +4464,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
 
 [[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.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
 name = "uuid"
-version = "1.7.0"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
+checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
 dependencies = [
  "getrandom",
 ]
@@ -3889,6 +4545,15 @@ dependencies = [
 ]
 
 [[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"
@@ -3915,7 +4580,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
  "wasm-bindgen-shared",
 ]
 
@@ -3949,7 +4614,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -3983,7 +4648,7 @@ checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40"
 dependencies = [
  "cc",
  "downcast-rs",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "scoped-tls",
  "smallvec",
  "wayland-sys",
@@ -3995,8 +4660,8 @@ version = "0.31.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
 dependencies = [
- "bitflags 2.4.2",
- "rustix 0.38.31",
+ "bitflags 2.5.0",
+ "rustix 0.38.32",
  "wayland-backend",
  "wayland-scanner",
 ]
@@ -4007,7 +4672,7 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cursor-icon",
  "wayland-backend",
 ]
@@ -4018,7 +4683,7 @@ version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba"
 dependencies = [
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "wayland-client",
  "xcursor",
 ]
@@ -4029,7 +4694,7 @@ version = "0.31.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "wayland-backend",
  "wayland-client",
  "wayland-scanner",
@@ -4041,7 +4706,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "wayland-backend",
  "wayland-client",
  "wayland-protocols",
@@ -4054,7 +4719,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "wayland-backend",
  "wayland-client",
  "wayland-protocols",
@@ -4143,7 +4808,7 @@ checksum = "f9f6b033c2f00ae0bc8ea872c5989777c60bc241aac4e58b24774faa8b391f78"
 dependencies = [
  "arrayvec",
  "bit-vec",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cfg_aliases 0.1.1",
  "codespan-reporting",
  "indexmap",
@@ -4171,7 +4836,7 @@ dependencies = [
  "arrayvec",
  "ash",
  "bit-set",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "block",
  "cfg_aliases 0.1.1",
  "core-graphics-types",
@@ -4212,7 +4877,7 @@ version = "0.19.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "js-sys",
  "web-sys",
 ]
@@ -4506,13 +5171,13 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
 
 [[package]]
 name = "winit"
-version = "0.29.10"
-source = "git+https://github.com/iced-rs/winit.git?rev=b91e39ece2c0d378c3b80da7f3ab50e17bb798a5#b91e39ece2c0d378c3b80da7f3ab50e17bb798a5"
+version = "0.29.15"
+source = "git+https://github.com/iced-rs/winit.git?rev=592bd152f6d5786fae7d918532d7db752c0d164f#592bd152f6d5786fae7d918532d7db752c0d164f"
 dependencies = [
- "ahash",
+ "ahash 0.8.11",
  "android-activity",
  "atomic-waker",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "bytemuck",
  "calloop",
  "cfg_aliases 0.1.1",
@@ -4532,7 +5197,7 @@ dependencies = [
  "percent-encoding",
  "raw-window-handle",
  "redox_syscall 0.3.5",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "sctk-adwaita",
  "smithay-client-toolkit",
  "smol_str",
@@ -4571,6 +5236,25 @@ dependencies = [
 
 [[package]]
 name = "winreg"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "winreg"
 version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
@@ -4601,7 +5285,7 @@ dependencies = [
  "libc",
  "libloading 0.8.3",
  "once_cell",
- "rustix 0.38.31",
+ "rustix 0.38.32",
  "x11rb-protocol",
 ]
 
@@ -4633,7 +5317,7 @@ version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "dlib",
  "log",
  "once_cell",
@@ -4653,12 +5337,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
 
 [[package]]
-name = "xxhash-rust"
-version = "0.8.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03"
-
-[[package]]
 name = "yansi"
 version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4672,16 +5350,16 @@ checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1"
 
 [[package]]
 name = "zbus"
-version = "3.15.2"
+version = "3.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6"
+checksum = "5acecd3f8422f198b1a2f954bcc812fe89f3fa4281646f3da1da7925db80085d"
 dependencies = [
- "async-broadcast",
+ "async-broadcast 0.5.1",
  "async-executor",
- "async-fs",
+ "async-fs 1.6.0",
  "async-io 1.13.0",
  "async-lock 2.8.0",
- "async-process",
+ "async-process 1.8.1",
  "async-recursion",
  "async-task",
  "async-trait",
@@ -4694,7 +5372,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "hex",
- "nix",
+ "nix 0.26.4",
  "once_cell",
  "ordered-stream",
  "rand",
@@ -4706,16 +5384,56 @@ dependencies = [
  "uds_windows",
  "winapi",
  "xdg-home",
- "zbus_macros",
- "zbus_names",
- "zvariant",
+ "zbus_macros 3.15.1",
+ "zbus_names 2.6.1",
+ "zvariant 3.15.1",
+]
+
+[[package]]
+name = "zbus"
+version = "4.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9"
+dependencies = [
+ "async-broadcast 0.7.0",
+ "async-executor",
+ "async-fs 2.1.1",
+ "async-io 2.3.2",
+ "async-lock 3.3.0",
+ "async-process 2.1.0",
+ "async-recursion",
+ "async-task",
+ "async-trait",
+ "blocking",
+ "derivative",
+ "enumflags2",
+ "event-listener 5.2.0",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "hex",
+ "nix 0.28.0",
+ "ordered-stream",
+ "rand",
+ "serde",
+ "serde_repr",
+ "sha1",
+ "static_assertions",
+ "tokio",
+ "tracing",
+ "uds_windows",
+ "windows-sys 0.52.0",
+ "xdg-home",
+ "zbus_macros 4.1.2",
+ "zbus_names 3.0.0",
+ "zvariant 4.0.2",
 ]
 
 [[package]]
 name = "zbus_macros"
-version = "3.15.2"
+version = "3.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5"
+checksum = "2207eb71efebda17221a579ca78b45c4c5f116f074eb745c3a172e688ccf89f5"
 dependencies = [
  "proc-macro-crate 1.3.1",
  "proc-macro2",
@@ -4726,6 +5444,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "zbus_macros"
+version = "4.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0"
+dependencies = [
+ "proc-macro-crate 3.1.0",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "syn 1.0.109",
+ "zvariant_utils",
+]
+
+[[package]]
 name = "zbus_names"
 version = "2.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4733,7 +5465,18 @@ checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d"
 dependencies = [
  "serde",
  "static_assertions",
- "zvariant",
+ "zvariant 3.15.1",
+]
+
+[[package]]
+name = "zbus_names"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
+dependencies = [
+ "serde",
+ "static_assertions",
+ "zvariant 4.0.2",
 ]
 
 [[package]]
@@ -4759,10 +5502,16 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
+name = "zeroize"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+
+[[package]]
 name = "zune-inflate"
 version = "0.2.54"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4773,23 +5522,37 @@ dependencies = [
 
 [[package]]
 name = "zvariant"
-version = "3.15.2"
+version = "3.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db"
+checksum = "c5b4fcf3660d30fc33ae5cd97e2017b23a96e85afd7a1dd014534cd0bf34ba67"
 dependencies = [
  "byteorder",
  "enumflags2",
  "libc",
  "serde",
  "static_assertions",
- "zvariant_derive",
+ "zvariant_derive 3.15.1",
+]
+
+[[package]]
+name = "zvariant"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a"
+dependencies = [
+ "endi",
+ "enumflags2",
+ "serde",
+ "static_assertions",
+ "url",
+ "zvariant_derive 4.0.2",
 ]
 
 [[package]]
 name = "zvariant_derive"
-version = "3.15.2"
+version = "3.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9"
+checksum = "0277758a8a0afc0e573e80ed5bfd9d9c2b48bd3108ffe09384f9f738c83f4a55"
 dependencies = [
  "proc-macro-crate 1.3.1",
  "proc-macro2",
@@ -4799,10 +5562,23 @@ dependencies = [
 ]
 
 [[package]]
+name = "zvariant_derive"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc"
+dependencies = [
+ "proc-macro-crate 3.1.0",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "zvariant_utils",
+]
+
+[[package]]
 name = "zvariant_utils"
-version = "1.0.1"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200"
+checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/pkgs/by-name/ha/halloy/package.nix b/pkgs/by-name/ha/halloy/package.nix
index dc8124e294807..b38708b97423f 100644
--- a/pkgs/by-name/ha/halloy/package.nix
+++ b/pkgs/by-name/ha/halloy/package.nix
@@ -15,20 +15,21 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "halloy";
-  version = "2024.5";
+  version = "2024.6";
 
   src = fetchFromGitHub {
     owner = "squidowl";
     repo = "halloy";
     rev = "refs/tags/${version}";
-    hash = "sha256-F/yQYLYrq3MZFV6igQe4sQi84ChIKCCPdS5151nD6hs=";
+    hash = "sha256-UfeGRLZ0k2hHiA6o5kTysszU1WS4JUF5AXhKmE86bDM=";
   };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "iced-0.13.0-dev" = "sha256-8L0AoHPwRUeCiJK/N0NTs1Nl4BX0wbM7SLgundhvra0=";
-      "winit-0.29.10" = "sha256-YoXJEvEhMvk3pK5EbXceVFeJEJLL6KTjiw0kBJxgHIE=";
+      "iced-0.13.0-dev" = "sha256-acGN7yxf33fDoh8J8uKvwiID+Xz1oVJ7KiiWgNWDXfo=";
+      "glyphon-0.5.0" = "sha256-e1jTuaWh9eFdk2pDE4Ov/l3b/Q7GA3hqx6dPoOde1hM=";
+      "winit-0.29.15" = "sha256-9i2i4KcEv7vIImJtcw2NALQ3uDb4EAZXjShG6tfmhkc=";
     };
   };
 
diff --git a/pkgs/by-name/ha/hap-py/boost-library-flags.patch b/pkgs/by-name/ha/hap-py/boost-library-flags.patch
new file mode 100644
index 0000000000000..e31000cebf130
--- /dev/null
+++ b/pkgs/by-name/ha/hap-py/boost-library-flags.patch
@@ -0,0 +1,50 @@
+--- a/CMakeLists.txt	2023-02-01 23:55:18.171758209 +0100
++++ b/CMakeLists.txt	2023-02-02 19:32:16.574426531 +0100
+@@ -23,25 +23,11 @@
+     set (VCFEVAL_AVAILABLE 0)
+ endif()
+ 
+-execute_process(
+-    COMMAND ${CMAKE_SOURCE_DIR}/external/make_dependencies.sh
+-    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+-    RESULT_VARIABLE EXTERNAL_SUCCESS)
+ 
+-if(NOT "${EXTERNAL_SUCCESS}" STREQUAL "0")
+-    message(FATAL_ERROR "Building external dependencies has failed")
+-endif()
+-
+-set(Boost_USE_STATIC_LIBS        ON)  # only find static libs
+ set(Boost_USE_MULTITHREADED      ON)
+-set(Boost_USE_STATIC_RUNTIME     ON)
+ 
+ # un-break library finding
+-set(Boost_NO_BOOST_CMAKE         ON)
+-set(Boost_NO_SYSTEM_PATHS        ON)
+ 
+-set(BOOST_ROOT ${CMAKE_BINARY_DIR})
+-message("Using our own Boost, which was built at ${HAPLOTYPES_SOURCE_DIR}/external/boost_install")
+ 
+ find_package(Boost 1.55.0 COMPONENTS thread iostreams regex unit_test_framework filesystem system program_options REQUIRED)
+ include_directories(${Boost_INCLUDE_DIRS})
+@@ -51,7 +51,8 @@
+ link_directories (${CMAKE_BINARY_DIR}/lib)
+ 
+ # make sure we use the bundled zlib version
+-set(ZLIB_LIBRARIES ${CMAKE_BINARY_DIR}/lib/libz.a)
++# Additional flags for nix, found by trial and error
++set(ZLIB_LIBRARIES -lz -lbz2 -lcurl -lcrypto -llzma)
+ 
+ include_directories (${HAPLOTYPES_SOURCE_DIR}/external/klib)
+ include_directories (${HAPLOTYPES_SOURCE_DIR}/external/intervaltree)
+@@ -84,11 +86,6 @@
+                         ${CMAKE_THREAD_LIBS_INIT})
+ 
+ 
+-execute_process(COMMAND git describe --tags --always
+-    OUTPUT_VARIABLE HAPLOTYPES_VERSION
+-    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+-    OUTPUT_STRIP_TRAILING_WHITESPACE
+-)
+ 
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/c++/include/Version.hh.in"
+                "${CMAKE_BINARY_DIR}/include/Version.hh")
diff --git a/pkgs/by-name/ha/hap-py/package.nix b/pkgs/by-name/ha/hap-py/package.nix
new file mode 100644
index 0000000000000..7082dc6e8ae5c
--- /dev/null
+++ b/pkgs/by-name/ha/hap-py/package.nix
@@ -0,0 +1,92 @@
+{
+  autoconf,
+  bcftools,
+  boost,
+  bzip2,
+  cmake,
+  curl,
+  fetchFromGitHub,
+  htslib,
+  lib,
+  makeWrapper,
+  perl,
+  python3,
+  rtg-tools,
+  samtools,
+  stdenv,
+  xz,
+  zlib,
+}:
+
+let
+  # Bcftools needs perl
+  runtime =  [
+    bcftools
+    htslib
+    my-python
+    perl
+    samtools
+  ];
+  my-python-packages =
+    p: with p; [
+      bx-python
+      pysam
+      pandas
+      psutil
+      scipy
+    ];
+  my-python = python3.withPackages my-python-packages;
+in
+stdenv.mkDerivation rec {
+  pname = "hap.py";
+  version = "0.3.15";
+
+  src = fetchFromGitHub {
+    owner = "Illumina";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-K8XXhioMGMHw56MKvp0Eo8S6R36JczBzGRaBz035zRQ=";
+  };
+  # For illumina script
+  BOOST_ROOT = "${boost.out}";
+  ZLIBSTATIC = "${zlib.static}";
+  # For cmake : boost lib and includedir are in differernt location
+  BOOST_LIBRARYDIR = "${boost.out}/lib";
+  BOOST_INCLUDEDIR = "${boost.dev}/include";
+
+  patches = [
+    # Compatibility with nix for boost and library flags : zlib, bzip2, curl, crypto, lzma
+    ./boost-library-flags.patch
+    # Update to python3
+    ./python3.patch
+  ];
+  nativeBuildInputs = [
+    autoconf
+    cmake
+    makeWrapper
+  ];
+  buildInputs = [
+    boost
+    bzip2
+    curl
+    htslib
+    my-python
+    rtg-tools
+    xz
+    zlib
+  ];
+
+  postFixup = ''
+    wrapProgram $out/bin/hap.py \
+       --set PATH ${lib.makeBinPath runtime} \
+       --add-flags "--engine-vcfeval-path=${rtg-tools}/bin/rtg"
+  '';
+
+  meta = with lib; {
+    description = "Compare genetics variants against a gold dataset";
+    homepage = "https://github.com/Illumina/hap.py";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ apraga ];
+    mainProgram = "hap.py";
+  };
+}
diff --git a/pkgs/by-name/ha/hap-py/python3.patch b/pkgs/by-name/ha/hap-py/python3.patch
new file mode 100644
index 0000000000000..0fee6d084cd41
--- /dev/null
+++ b/pkgs/by-name/ha/hap-py/python3.patch
@@ -0,0 +1,342 @@
+diff --git a/src/c++/lib/tools/Roc.cpp b/src/c++/lib/tools/Roc.cpp
+index fabe2be..2c6bb49 100644
+--- a/src/c++/lib/tools/Roc.cpp
++++ b/src/c++/lib/tools/Roc.cpp
+@@ -34,6 +34,9 @@
+  */
+ 
+ #include "helpers/Roc.hh"
++#include <stdexcept>
++#include <limits>
++
+ 
+ #include <algorithm>
+ #include <cmath>
+diff --git a/src/cmake/cxx.cmake b/src/cmake/cxx.cmake
+old mode 100755
+new mode 100644
+diff --git a/src/python/Haplo/happyroc.py b/src/python/Haplo/happyroc.py
+index 152bd18..e439957 100644
+--- a/src/python/Haplo/happyroc.py
++++ b/src/python/Haplo/happyroc.py
+@@ -97,7 +97,7 @@ def roc(roc_table, output_path,
+                 header = l.split("\t")
+             else:
+                 rec = {}
+-                for k, v in itertools.izip(header, l.split("\t")):
++                for k, v in zip(header, l.split("\t")):
+                     rec[k] = v
+ 
+                 if filter_handling:
+@@ -160,11 +160,11 @@ def roc(roc_table, output_path,
+ 
+     if "all" not in result:
+         # minimal empty DF
+-        minidata = [{"Type": "SNP", "Subtype": "*", "Filter": "ALL", "Genotype": "*", "Subset": "*", "QQ": "*"} for _ in xrange(2)]
++        minidata = [{"Type": "SNP", "Subtype": "*", "Filter": "ALL", "Genotype": "*", "Subset": "*", "QQ": "*"} for _ in range(2)]
+         minidata[1]["Type"] = "INDEL"
+         result["all"] = pandas.DataFrame(minidata, columns=RESULT_ALLCOLUMNS)
+         for i, c in enumerate(RESULT_ALLCOLUMNS):
+-            result["all"][c] = result["all"][c].astype(RESULT_ALLDTYPES[i], raise_on_error=False)
++            result["all"][c] = result["all"][c].astype(RESULT_ALLDTYPES[i], errors="ignore")
+ 
+     for k, v in result.items():
+         result[k] = _postprocessRocData(pandas.DataFrame(v, columns=RESULT_ALLCOLUMNS))
+diff --git a/src/python/Haplo/partialcredit.py b/src/python/Haplo/partialcredit.py
+index d9e22bb..0f2b2cf 100644
+--- a/src/python/Haplo/partialcredit.py
++++ b/src/python/Haplo/partialcredit.py
+@@ -202,7 +202,7 @@ def partialCredit(vcfname,
+     try:
+         res = runParallel(pool,
+                           preprocessWrapper,
+-                          itertools.izip(itertools.repeat(vcfname), locations),
++                          zip(itertools.repeat(vcfname), locations),
+                           {"reference": reference,
+                            "decompose": decompose,
+                            "leftshift": leftshift,
+diff --git a/src/python/Haplo/quantify.py b/src/python/Haplo/quantify.py
+index 042d13e..b1d362e 100755
+--- a/src/python/Haplo/quantify.py
++++ b/src/python/Haplo/quantify.py
+@@ -152,7 +152,7 @@ def run_quantify(filename,
+         run_str += " -v %s" % pipes.quote(write_vcf)
+ 
+     if regions:
+-        for k, v in regions.iteritems():
++        for k, v in regions.items():
+             run_str += " -R '%s:%s'" % (k, v)
+ 
+     if roc_regions:
+diff --git a/src/python/Somatic/Mutect.py b/src/python/Somatic/Mutect.py
+index 7ac923c..81f08b5 100755
+--- a/src/python/Somatic/Mutect.py
++++ b/src/python/Somatic/Mutect.py
+@@ -148,7 +148,7 @@ def extractMutectSNVFeatures(vcfname, tag, avg_depth=None):
+                 n_allele_alt_count = 0
+             else:
+                 n_allele_alt_count = 0
+-                for a in xrange(0, len(alleles_alt)):
++                for a in range(0, len(alleles_alt)):
+                     n_allele_alt_count += float(rec[n_sample + "AD"][a + 1])
+ 
+             if n_allele_alt_count + n_allele_ref_count == 0:
+@@ -163,7 +163,7 @@ def extractMutectSNVFeatures(vcfname, tag, avg_depth=None):
+                 t_allele_alt_count = 0
+             else:
+                 t_allele_alt_count = 0
+-                for a in xrange(0, len(alleles_alt)):
++                for a in range(0, len(alleles_alt)):
+                     t_allele_alt_count += float(rec[t_sample + "AD"][a + 1])
+ 
+             if t_allele_alt_count + t_allele_ref_count == 0:
+@@ -344,7 +344,7 @@ def extractMutectIndelFeatures(vcfname, tag, avg_depth=None):
+                 n_allele_alt_count = 0
+             else:
+                 n_allele_alt_count = 0
+-                for a in xrange(0, len(alleles_alt)):
++                for a in range(0, len(alleles_alt)):
+                     n_allele_alt_count += float(rec[n_sample + "AD"][a + 1])
+ 
+             if n_allele_alt_count + n_allele_ref_count == 0:
+@@ -359,7 +359,7 @@ def extractMutectIndelFeatures(vcfname, tag, avg_depth=None):
+                 t_allele_alt_count = 0
+             else:
+                 t_allele_alt_count = 0
+-                for a in xrange(0, len(alleles_alt)):
++                for a in range(0, len(alleles_alt)):
+                     t_allele_alt_count += float(rec[t_sample + "AD"][a + 1])
+ 
+             if t_allele_alt_count + t_allele_ref_count == 0:
+diff --git a/src/python/Tools/bcftools.py b/src/python/Tools/bcftools.py
+index 6146b7a..6d80d14 100755
+--- a/src/python/Tools/bcftools.py
++++ b/src/python/Tools/bcftools.py
+@@ -128,8 +128,8 @@ def concatenateParts(output, *args):
+             to_delete.append(tf2.name)
+             to_delete.append(tf1.name + ".csi")
+             to_delete.append(tf2.name + ".csi")
+-            half1 = [tf1.name] + list(args[:len(args)/2])
+-            half2 = [tf2.name] + list(args[len(args)/2:])
++            half1 = [tf1.name] + list(args[:len(args)//2])
++            half2 = [tf2.name] + list(args[len(args)//2:])
+             concatenateParts(*half1)
+             runBcftools("index", tf1.name)
+             concatenateParts(*half2)
+diff --git a/src/python/Tools/metric.py b/src/python/Tools/metric.py
+index 71ccc99..372626d 100755
+--- a/src/python/Tools/metric.py
++++ b/src/python/Tools/metric.py
+@@ -115,7 +115,7 @@ def replaceNaNs(xobject):
+             if type(xobject[k]) is dict or type(xobject[k]) is list or type(xobject[k]) is float:
+                 xobject[k] = replaceNaNs(xobject[k])
+     elif type(xobject) is list:
+-        for k in xrange(0, len(xobject)):
++        for k in range(0, len(xobject)):
+             if type(xobject[k]) is dict or type(xobject[k]) is list or type(xobject[k]) is float:
+                 xobject[k] = replaceNaNs(xobject[k])
+     elif type(xobject) is float:
+diff --git a/src/python/Tools/parallel.py b/src/python/Tools/parallel.py
+index 9d49760..5fcb37e 100755
+--- a/src/python/Tools/parallel.py
++++ b/src/python/Tools/parallel.py
+@@ -17,9 +17,9 @@ import logging
+ import traceback
+ import subprocess
+ import multiprocessing
+-import cPickle
++import pickle
+ import tempfile
+-from itertools import islice, izip, repeat
++from itertools import islice, repeat
+ 
+ from . import LoggingWriter
+ 
+@@ -93,7 +93,7 @@ def runParallel(pool, fun, par, *args, **kwargs):
+ 
+     """
+     if pool:
+-        result = pool.map(parMapper, izip(par, repeat( { "fun": fun, "args": args, "kwargs": kwargs } )))
++        result = pool.map(parMapper, zip(par, repeat( { "fun": fun, "args": args, "kwargs": kwargs } )))
+     else:
+         result = []
+         for c in par:
+diff --git a/src/python/Tools/sessioninfo.py b/src/python/Tools/sessioninfo.py
+index 75650ec..b49bf59 100644
+--- a/src/python/Tools/sessioninfo.py
++++ b/src/python/Tools/sessioninfo.py
+@@ -34,7 +34,6 @@ def sessionInfo():
+               'version': version,
+               'runInfo': [{"key": "commandline", "value": " ".join(sys.argv)}],
+               'uname': " / ".join(platform.uname()),
+-              'dist': " / ".join(platform.dist()),
+               'mac_ver': " / ".join([platform.mac_ver()[0], platform.mac_ver()[2]]),
+               'python_implementation': platform.python_implementation(),
+               'python_version': platform.python_version(),
+diff --git a/src/python/Tools/vcfcallerinfo.py b/src/python/Tools/vcfcallerinfo.py
+index eb7e86e..947f2c4 100755
+--- a/src/python/Tools/vcfcallerinfo.py
++++ b/src/python/Tools/vcfcallerinfo.py
+@@ -33,8 +33,8 @@ class CallerInfo(object):
+ 
+     def asDict(self):
+         kvd = ["name", "version", "parameters"]
+-        return {"aligners": [dict(y for y in itertools.izip(kvd, x)) for x in self.aligners],
+-                "callers": [dict(y for y in itertools.izip(kvd, x)) for x in self.callers]}
++        return {"aligners": [dict(y for y in zip(kvd, x)) for x in self.aligners],
++                "callers": [dict(y for y in zip(kvd, x)) for x in self.callers]}
+ 
+     def addVCF(self, vcfname):
+         """ Add caller versions from a VCF
+diff --git a/src/python/hap.py b/src/python/hap.py
+index 8045936..93279a4 100755
+--- a/src/python/hap.py
++++ b/src/python/hap.py
+@@ -188,7 +188,7 @@ def main():
+         parser.print_help()
+         exit(1)
+ 
+-    print "Hap.py %s" % Tools.version        
++    print("Hap.py %s" % Tools.version)
+     if args.version:
+         exit(0)
+ 
+diff --git a/src/python/ovc.py b/src/python/ovc.py
+index 2837255..20b4442 100755
+--- a/src/python/ovc.py
++++ b/src/python/ovc.py
+@@ -34,7 +34,7 @@ lines = 1
+ for line in f:
+ 	l = line.split("\t")
+ 	if len(l) > 3 and (last-1) > int(l[1]):
+-		print "Overlap at %s:%i (line %i)" % (l[0], int(l[1]), lines)
++		print(Overlap at %s:%i (line %i)) % (l[0], int(l[1]), lines)
+ 		exit(1)
+ 	elif len(l) > 3:
+ 		last = int(l[2])
+diff --git a/src/python/pre.py b/src/python/pre.py
+index 5ca1644..a37a4b2 100755
+--- a/src/python/pre.py
++++ b/src/python/pre.py
+@@ -47,8 +47,8 @@ import Haplo.partialcredit
+ def hasChrPrefix(chrlist):
+     """ returns if list of chr names has a chr prefix or not """
+ 
+-    noprefix = map(str, range(23)) + ["X", "Y", "MT"]
+-    withprefix = ["chr" + x for x in map(str, range(23)) + ["X", "Y", "M"]]
++    noprefix = [str(x) for x in range(23)] + ["X", "Y", "MT"]
++    withprefix = ["chr" + str(x) for x in range(23)] + ["X", "Y", "M"]
+ 
+     count_noprefix = len(list(set(noprefix) & set(chrlist)))
+     count_prefix = len(list(set(withprefix) & set(chrlist)))
+@@ -126,7 +126,7 @@ def preprocess(vcf_input,
+ 
+         if gender == "auto":
+             logging.info(mf)
+-            if "female" in mf:
++            if b"female" in mf:
+                 gender = "female"
+             else:
+                 gender = "male"
+@@ -392,7 +392,7 @@ def main():
+         exit(0)
+ 
+     if args.version:
+-        print "pre.py %s" % Tools.version  # noqa:E999
++        print(pre.py %s) % Tools.version  # noqa:E999
+         exit(0)
+ 
+     args.input = args.input[0]
+diff --git a/src/python/qfy.py b/src/python/qfy.py
+index 4f247ee..59ed68a 100755
+--- a/src/python/qfy.py
++++ b/src/python/qfy.py
+@@ -203,8 +203,8 @@ def quantify(args):
+ 
+     # in default mode, print result summary to stdout
+     if not args.quiet and not args.verbose:
+-        print "Benchmarking Summary:"
+-        print essential_numbers.to_string(index=False)
++        print("Benchmarking Summary:")
++        print(essential_numbers.to_string(index=False))
+ 
+     # keep this for verbose output
+     if not args.verbose:
+@@ -213,12 +213,12 @@ def quantify(args):
+         except:
+             pass
+ 
+-    for t in res.iterkeys():
++    for t in res.keys():
+         metrics_output["metrics"].append(dataframeToMetricsTable("roc." + t, res[t]))
+ 
+     # gzip JSON output
+     if args.write_json:
+         with gzip.open(args.reports_prefix + ".metrics.json.gz", "w") as fp:
+-            json.dump(metrics_output, fp)
++            fp.write(json.dumps(metrics_output, default=np_encoder).encode('ascii'))
+ 
+ 
+@@ -362,7 +363,7 @@ def main():
+         exit(0)
+ 
+     if args.version:
+-        print "qfy.py %s" % Tools.version
++        print(qfy.py %s) % Tools.version
+         exit(0)
+ 
+     if args.fp_bedfile and args.preprocessing_truth_confregions:
+diff --git a/src/python/som.py b/src/python/som.py
+index e942351..c01d522 100755
+--- a/src/python/som.py
++++ b/src/python/som.py
+@@ -640,7 +640,7 @@ def main():
+                              "overlap):\n" + ambie.to_string(index=False))
+                 # in default mode, print result summary to stdout
+                 if not args.quiet and not args.verbose:
+-                    print "FP/ambiguity classes with info (multiple classes can " \
++                    print(FP/ambiguity classes with info (multiple classes can ) \
+                           "overlap):\n" + ambie.to_string(index=False)
+                 ambie.to_csv(args.output + ".ambiclasses.csv")
+                 metrics_output["metrics"].append(dataframeToMetricsTable("ambiclasses", ambie))
+@@ -659,7 +659,7 @@ def main():
+                     formatters={'reason': '{{:<{}s}}'.format(ambie['reason'].str.len().max()).format}, index=False))
+                 # in default mode, print result summary to stdout
+                 if not args.quiet and not args.verbose:
+-                    print "Reasons for defining as ambiguous (multiple reasons can overlap):\n" + ambie.to_string(
++                    print(Reasons for defining as ambiguous (multiple reasons can overlap):\n) + ambie.to_string(
+                         formatters={'reason': '{{:<{}s}}'.format(ambie['reason'].str.len().max()).format}, index=False)
+                 ambie.to_csv(args.output + ".ambireasons.csv")
+                 metrics_output["metrics"].append(dataframeToMetricsTable("ambireasons", ambie))
+@@ -936,7 +936,7 @@ def main():
+         logging.info("\n" + res.to_string())
+         # in default mode, print result summary to stdout
+         if not args.quiet and not args.verbose:
+-            print "\n" + res.to_string()
++            print(\n) + res.to_string()
+ 
+         res["sompyversion"] = vstring
+ 
+diff --git a/src/python/qfy.py b/src/python/qfy.py
+index 59ed68a..be8d7e1 100755
+--- a/src/python/qfy.py
++++ b/src/python/qfy.py
+@@ -33,6 +33,7 @@ import pandas
+ import json
+ import tempfile
+ import gzip
++import numpy as np
+ 
+ scriptDir = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
+ sys.path.append(os.path.abspath(os.path.join(scriptDir, '..', 'lib', 'python27')))
+@@ -45,6 +46,10 @@ import Haplo.happyroc
+ import Haplo.gvcf2bed
+ from Tools import fastasize
+ 
++# Cannot convert data to json without a custom enconder
++def np_encoder(object):
++    if isinstance(object, np.generic):
++        return object.item()
+ 
+ def quantify(args):
+     """ Run quantify and write tables """
diff --git a/pkgs/by-name/he/helix-gpt/package.nix b/pkgs/by-name/he/helix-gpt/package.nix
index d95c9689f1f79..291cca1bb67b8 100644
--- a/pkgs/by-name/he/helix-gpt/package.nix
+++ b/pkgs/by-name/he/helix-gpt/package.nix
@@ -59,6 +59,6 @@ stdenv.mkDerivation {
     mainProgram = "helix-gpt";
     maintainers = with maintainers; [ happysalada ];
     license = with licenses; [ mit ];
-    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
   };
 }
diff --git a/pkgs/by-name/he/helix-gpt/pin.json b/pkgs/by-name/he/helix-gpt/pin.json
index 2b116278fe23f..dd6dfb5d0a658 100644
--- a/pkgs/by-name/he/helix-gpt/pin.json
+++ b/pkgs/by-name/he/helix-gpt/pin.json
@@ -3,5 +3,6 @@
   "srcHash": "sha256-wDVeX1tHw9pTxYLRkr8BJlF5XIee0/e0f5hzes4ui/o=",
   "x86_64-linux": "sha256-h6wGkOfSbB8Rwm7eFvcowDdH1RdS6eFaxgf+SdYvYt8=",
   "x86_64-darwin": "sha256-Sjt/JkyPRCzRpAqJOmBKCBAGWSeV7RYOOokCLYCqg+8=",
-  "aarch64-darwin": "sha256-Sjt/JkyPRCzRpAqJOmBKCBAGWSeV7RYOOokCLYCqg+8="
+  "aarch64-darwin": "sha256-Sjt/JkyPRCzRpAqJOmBKCBAGWSeV7RYOOokCLYCqg+8=",
+  "aarch64-linux": "sha256-h6wGkOfSbB8Rwm7eFvcowDdH1RdS6eFaxgf+SdYvYt8="
 }
diff --git a/pkgs/by-name/he/hermitcli/package.nix b/pkgs/by-name/he/hermitcli/package.nix
index ff2ffffd77da3..fd0c79cb99bde 100644
--- a/pkgs/by-name/he/hermitcli/package.nix
+++ b/pkgs/by-name/he/hermitcli/package.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "hermit";
-  version = "0.39.0";
+  version = "0.39.1";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "cashapp";
     repo = "hermit";
-    hash = "sha256-BXh9HWCFeAs/S5z1ru+31mndsvt1DVh1Q7SeGzB4Rzk=";
+    hash = "sha256-ukg/KQTLG2F7mDNgoUr8GEKnkFHEJtVpwDs+DiLXvlM=";
   };
 
   vendorHash = "sha256-1QMZvxy6cCJVoIP8mG7s4V0nBAGhrHoPbiKKyYDDL2g=";
diff --git a/pkgs/by-name/hi/hidden-bar/package.nix b/pkgs/by-name/hi/hidden-bar/package.nix
new file mode 100644
index 0000000000000..162b5a923f3c3
--- /dev/null
+++ b/pkgs/by-name/hi/hidden-bar/package.nix
@@ -0,0 +1,37 @@
+{ lib
+, stdenvNoCC
+, fetchurl
+, undmg
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "hidden-bar";
+  version = "1.9";
+
+  src = fetchurl {
+    url = "https://github.com/dwarvesf/hidden/releases/download/v${version}/Hidden.Bar.${version}.dmg";
+    hash = "sha256-P1SwJPXBxAvBiuvjkBRxAom0fhR+cVYfriKmYcqybQI=";
+  };
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/Applications
+    mv "Hidden Bar.app" $out/Applications
+
+    runHook postInstall
+  '';
+
+  nativeBuildInputs = [ undmg ];
+
+  meta = {
+    description = "An ultra-light MacOS utility that helps hide menu bar icons";
+    homepage = "https://github.com/dwarvesf/hidden";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ donteatoreo ];
+    platforms = lib.platforms.darwin;
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+  };
+}
diff --git a/pkgs/by-name/ho/home-manager/package.nix b/pkgs/by-name/ho/home-manager/package.nix
index aa6868ae97b43..8a5b9d847a040 100644
--- a/pkgs/by-name/ho/home-manager/package.nix
+++ b/pkgs/by-name/ho/home-manager/package.nix
@@ -16,14 +16,14 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "home-manager";
-  version = "unstable-2024-03-31";
+  version = "unstable-2024-04-06";
 
   src = fetchFromGitHub {
     name = "home-manager-source";
     owner = "nix-community";
     repo = "home-manager";
-    rev = "30f2ec39519f4f5a8a96af808c439e730c15aeab";
-    hash = "sha256-QpZanlbVu6Gb2K96u3vgu0F2BvZD74+fOsIFWcYEXoY=";
+    rev = "b787726a8413e11b074cde42704b4af32d95545c";
+    hash = "sha256-ebq+fJZfobqpsAdGDGpxNWSySbQejRwW9cdiil6krCo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/hu/hujsonfmt/package.nix b/pkgs/by-name/hu/hujsonfmt/package.nix
new file mode 100644
index 0000000000000..9c1884feb60e0
--- /dev/null
+++ b/pkgs/by-name/hu/hujsonfmt/package.nix
@@ -0,0 +1,29 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+let
+  inherit (lib) licenses maintainers;
+in
+buildGoModule {
+  pname = "hujsonfmt";
+  version = "0-unstable-2022-12-23";
+
+  src = fetchFromGitHub {
+    owner = "tailscale";
+    repo = "hujson";
+    rev = "20486734a56a3455c47994bf4942974d6f9969a0";
+    hash = "sha256-j2HRs5zZ0jTIqWIRhHheO9eaGzMMkNuKXuhboq9KpB4=";
+  };
+
+  proxyVendor = true;
+  vendorHash = "sha256-cvoj85BNnm/ZX1UnXKU2HjvjQkRZ9uN3U0BnD3DmiTE=";
+
+  subPackages = [ "cmd/hujsonfmt" ];
+
+  meta = {
+    homepage = "https://tailscale.com";
+    description = "Automatic formatter for HuJSON / JSON With Comments and trailing Commas (JWCC)";
+    license = licenses.bsd3;
+    mainProgram = "hujsonfmt";
+    maintainers = with maintainers; [ dan-theriault ];
+  };
+}
diff --git a/pkgs/by-name/hy/hyprcursor/package.nix b/pkgs/by-name/hy/hyprcursor/package.nix
index fa86f0f0f2f20..144c2d71df140 100644
--- a/pkgs/by-name/hy/hyprcursor/package.nix
+++ b/pkgs/by-name/hy/hyprcursor/package.nix
@@ -7,19 +7,25 @@
 , hyprlang
 , librsvg
 , libzip
+, tomlplusplus
 , nix-update-script
 }:
 stdenv.mkDerivation (finalAttrs: {
   pname = "hyprcursor";
-  version = "0.1.5";
+  version = "0.1.7";
 
   src = fetchFromGitHub {
     owner = "hyprwm";
     repo = "hyprcursor";
     rev = "refs/tags/v${finalAttrs.version}";
-    hash = "sha256-e6+fu30inlTIdflotS6l7qYusslKMNkhZVNLn9ZSogg=";
+    hash = "sha256-T0lV+xA07RzroRLwZsGbF9bWZNHInXS+oB0RJ6YdvWg=";
   };
 
+  patches = [
+    # fix icon directories system search path
+    "${finalAttrs.src}/nix/dirs.patch"
+  ];
+
   nativeBuildInputs = [
     cmake
     pkg-config
@@ -30,6 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
     hyprlang
     librsvg
     libzip
+    tomlplusplus
   ];
 
   outputs = [
diff --git a/pkgs/by-name/hy/hyprdim/Cargo.lock b/pkgs/by-name/hy/hyprdim/Cargo.lock
new file mode 100644
index 0000000000000..8c22c7838dfaf
--- /dev/null
+++ b/pkgs/by-name/hy/hyprdim/Cargo.lock
@@ -0,0 +1,1213 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "assert_cmd"
+version = "2.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8"
+dependencies = [
+ "anstyle",
+ "bstr",
+ "doc-comment",
+ "predicates",
+ "predicates-core",
+ "predicates-tree",
+ "wait-timeout",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
+
+[[package]]
+name = "backtrace"
+version = "0.3.71"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+
+[[package]]
+name = "bstr"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
+dependencies = [
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "bytes"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+
+[[package]]
+name = "cc"
+version = "1.0.91"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd97381a8cc6493395a5afc4c691c1084b3768db713b73aa215217aa245d153"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "cfg_aliases"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+
+[[package]]
+name = "clap"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_complete"
+version = "4.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c"
+dependencies = [
+ "clap",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+
+[[package]]
+name = "clap_mangen"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1dd95b5ebb5c1c54581dd6346f3ed6a79a3eef95dd372fc2ac13d535535300e"
+dependencies = [
+ "clap",
+ "roff",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "ctrlc"
+version = "3.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345"
+dependencies = [
+ "nix 0.28.0",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "difflib"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
+
+[[package]]
+name = "doc-comment"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gimli"
+version = "0.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hyprdim"
+version = "2.2.4"
+dependencies = [
+ "assert_cmd",
+ "clap",
+ "clap_complete",
+ "clap_mangen",
+ "ctrlc",
+ "hyprland",
+ "rustympkglib",
+ "serde",
+ "single-instance",
+ "toml",
+]
+
+[[package]]
+name = "hyprland"
+version = "0.3.13"
+source = "git+https://github.com/hyprland-community/hyprland-rs.git#7a60845c9bfaf264e4dd9f5d7977f4a1f15599c8"
+dependencies = [
+ "async-trait",
+ "derive_more",
+ "doc-comment",
+ "futures",
+ "hex",
+ "hyprland-macros",
+ "lazy_static",
+ "num-traits",
+ "paste",
+ "regex",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "strum",
+ "tokio",
+]
+
+[[package]]
+name = "hyprland-macros"
+version = "0.3.13"
+source = "git+https://github.com/hyprland-community/hyprland-rs.git#7a60845c9bfaf264e4dd9f5d7977f4a1f15599c8"
+dependencies = [
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "lock_api"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "nix"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c"
+dependencies = [
+ "bitflags 1.3.2",
+ "cc",
+ "cfg-if",
+ "libc",
+ "memoffset",
+]
+
+[[package]]
+name = "nix"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+dependencies = [
+ "bitflags 2.5.0",
+ "cfg-if",
+ "cfg_aliases",
+ "libc",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "object"
+version = "0.32.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "predicates"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8"
+dependencies = [
+ "anstyle",
+ "difflib",
+ "predicates-core",
+]
+
+[[package]]
+name = "predicates-core"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174"
+
+[[package]]
+name = "predicates-tree"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf"
+dependencies = [
+ "predicates-core",
+ "termtree",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
+
+[[package]]
+name = "roff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47"
+
+[[package]]
+name = "rustympkglib"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39a6a04e9c4cc5d0fd4291f8ce8e1aa9d438d3e7b5ea09699cc81acd83272a16"
+dependencies = [
+ "serde",
+ "tree-sitter",
+ "tree-sitter-bash",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "semver"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+
+[[package]]
+name = "serde"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.115"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "single-instance"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4637485391f8545c9d3dbf60f9d9aab27a90c789a700999677583bcb17c8795d"
+dependencies = [
+ "libc",
+ "nix 0.23.2",
+ "thiserror",
+ "widestring",
+ "winapi",
+]
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "strum"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "termtree"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
+
+[[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "tokio"
+version = "1.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "num_cpus",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "tree-sitter"
+version = "0.19.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad726ec26496bf4c083fff0f43d4eb3a2ad1bba305323af5ff91383c0b6ecac0"
+dependencies = [
+ "cc",
+ "regex",
+]
+
+[[package]]
+name = "tree-sitter-bash"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c629e2d29ebb85b34cd195a1c511a161ed775451456cde110470e7af693424db"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "wait-timeout"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "widestring"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "winnow"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
+dependencies = [
+ "memchr",
+]
diff --git a/pkgs/by-name/hy/hyprdim/package.nix b/pkgs/by-name/hy/hyprdim/package.nix
index ee0df4f9fc03a..2ce84331f40e8 100644
--- a/pkgs/by-name/hy/hyprdim/package.nix
+++ b/pkgs/by-name/hy/hyprdim/package.nix
@@ -8,16 +8,21 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "hyprdim";
-  version = "2.2.3";
+  version = "2.2.4";
 
   src = fetchFromGitHub {
     owner = "donovanglover";
     repo = "hyprdim";
     rev = version;
-    hash = "sha256-Eeh0D3DkC4ureDUE+BXTGcMFNmZ0hLSidlKlL4ZDgsQ=";
+    hash = "sha256-XRaBrn8gnXyMiCf3UQvdZGnZ//YMUivfVg0IoZF5F88=";
   };
 
-  cargoHash = "sha256-hgcGzRLB1L3yxJjw1ECDJPmbl1W+2OS4KDojclyVYrc=";
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "hyprland-0.3.13" = "sha256-gjShmFcECdX0/t7mL035l9e9OzZuJqX0Ueozv38l03g=";
+    };
+  };
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/by-name/hy/hyprland-monitor-attached/package.nix b/pkgs/by-name/hy/hyprland-monitor-attached/package.nix
new file mode 100644
index 0000000000000..6f505aa7981ef
--- /dev/null
+++ b/pkgs/by-name/hy/hyprland-monitor-attached/package.nix
@@ -0,0 +1,24 @@
+{ rustPlatform, fetchFromGitHub, lib }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "hyprland-monitor-attached";
+  version = "0.1.5";
+
+  src = fetchFromGitHub {
+    owner = "coffebar";
+    repo = "hyprland-monitor-attached";
+    rev = version;
+    hash = "sha256-McenpaoEjQIB709VlLkyVGoUwVoMe7TJPb8Lrh1efw8=";
+  };
+
+  cargoHash = "sha256-QH32NYZJcSxTMgHZKqksy2+DLw62G+knJgoj6OGRfQE=";
+
+  meta = with lib; {
+    description = "Automatically run a script when a monitor connects (or disconnects) in Hyprland";
+    homepage = "https://github.com/coffebar/hyprland-monitor-attached";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bddvlpr ];
+    mainProgram = "hyprland-monitor-attached";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/i2/i2p/package.nix b/pkgs/by-name/i2/i2p/package.nix
new file mode 100644
index 0000000000000..88d3041ffd65c
--- /dev/null
+++ b/pkgs/by-name/i2/i2p/package.nix
@@ -0,0 +1,122 @@
+{ lib
+, stdenv
+, fetchzip
+, jdk
+, ant
+, gettext
+, which
+, dbip-country-lite
+, java-service-wrapper
+, makeWrapper
+, gmp
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "i2p";
+  version = "2.4.0";
+
+  src = fetchzip {
+    urls = map (mirror: "${mirror}${finalAttrs.version}/i2psource_${finalAttrs.version}.tar.bz2") [
+      "https://github.com/i2p/i2p.i2p/releases/download/i2p-"
+      "https://download.i2p2.de/releases/"
+      "https://files.i2p-projekt.de/"
+      "https://download.i2p2.no/releases/"
+    ];
+    hash = "sha256-RESN1qA/SD9MajUSJyXssNZnph2XZge7xr2kTgOp5V4=";
+  };
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    makeWrapper
+    ant
+    gettext
+    jdk
+    which
+  ];
+
+  buildInputs = [ gmp ];
+
+  postConfigure = ''
+    rm -r installer/lib
+    mkdir -p installer/lib/wrapper/all/
+    # The java-service-wrapper is needed for build but not really used in runtime
+    ln -s ${java-service-wrapper}/lib/wrapper.jar installer/lib/wrapper/all/wrapper.jar
+    # Don't use the bundled geoip data
+    echo "with-geoip-database=true" >> override.properties
+  '';
+
+  buildPhase = ''
+    # When this variable exists we can build the .so files only.
+    export DEBIANVERSION=1
+    pushd core/c/jcpuid
+    ./build.sh
+    popd
+    pushd core/c/jbigi
+    ./build_jbigi.sh dynamic
+    popd
+    export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
+    SOURCE_DATE_EPOCH=0 ant preppkg-unix
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,share,geoip}
+    mv pkg-temp/* $out
+    mv core/c/jbigi/*.so $out/lib
+    mv $out/man $out/share/
+    rm $out/{osid,postinstall.sh,INSTALL-headless.txt}
+
+    for jar in $out/lib/*.jar; do
+      if [ ! -z $CP ]; then
+        CP=$CP:$jar;
+      else
+        CP=$jar
+      fi
+    done
+
+    makeWrapper ${jdk}/bin/java $out/bin/i2prouter \
+      --add-flags "-cp $CP -Djava.library.path=$out/lib/ -Di2p.dir.base=$out -DloggerFilenameOverride=logs/log-router-@.txt" \
+      --add-flags "net.i2p.router.RouterLaunch"
+
+    ln -s ${dbip-country-lite.mmdb} $out/geoip/GeoLite2-Country.mmdb
+  '';
+
+  doInstallCheck = true;
+
+  installCheckPhase = ''
+    runHook preInstallCheck
+
+    # Check if jbigi is used
+    java -cp $out/lib/i2p.jar -Djava.library.path=$out/lib/ net.i2p.util.NativeBigInteger \
+      | tee /dev/stderr | grep -Fw "Found native library" || exit 1
+
+    runHook postInstallCheck
+  '';
+
+  meta = with lib; {
+    description = "Applications and router for I2P, anonymity over the Internet";
+    homepage = "https://geti2p.net";
+    sourceProvenance = with sourceTypes; [
+      fromSource
+      binaryBytecode # source bundles dependencies as jars
+    ];
+    license = with licenses; [
+      asl20
+      boost
+      bsd2
+      bsd3
+      cc-by-30
+      cc0
+      epl10
+      gpl2
+      gpl3
+      lgpl21Only
+      lgpl3Only
+      mit
+      publicDomain
+    ];
+    platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
+    maintainers = with maintainers; [ linsui ];
+    mainProgram = "i2prouter-plain";
+  };
+})
diff --git a/pkgs/by-name/ig/igir/package.nix b/pkgs/by-name/ig/igir/package.nix
index 49c2b854f623b..488febb21a590 100644
--- a/pkgs/by-name/ig/igir/package.nix
+++ b/pkgs/by-name/ig/igir/package.nix
@@ -10,16 +10,16 @@
 
 buildNpmPackage rec {
   pname = "igir";
-  version = "2.6.1";
+  version = "2.6.2";
 
   src = fetchFromGitHub {
     owner = "emmercm";
     repo = "igir";
     rev = "v${version}";
-    hash = "sha256-0z+0/kRlHkUU3UijTru1sO+8u69cqsQbf06xjXJSb+A=";
+    hash = "sha256-bJPUGB9fyeOb5W9EzQldh4rRJQBat58MgjjfS1qh66w=";
   };
 
-  npmDepsHash = "sha256-r1LCSEijj9kc+MdV9r8XWxG9dEm7Tot34mitrq3ykrM=";
+  npmDepsHash = "sha256-q8gpx5zwiO/7ZBB/YruhCUgukp71sfJju8nmF6SwTrc=";
 
   # I have no clue why I have to do this
   postPatch = ''
diff --git a/pkgs/by-name/im/imhex/package.nix b/pkgs/by-name/im/imhex/package.nix
index 7ee075ae18884..d10ffb8a56e92 100644
--- a/pkgs/by-name/im/imhex/package.nix
+++ b/pkgs/by-name/im/imhex/package.nix
@@ -23,14 +23,14 @@
 }:
 
 let
-  version = "1.32.2";
-  patterns_version = "1.32.2";
+  version = "1.33.2";
+  patterns_version = "1.33.2";
 
   patterns_src = fetchFromGitHub {
     owner = "WerWolv";
     repo = "ImHex-Patterns";
     rev = "ImHex-v${patterns_version}";
-    hash = "sha256-K+LiQvykCrOwhEVy37lh7VSf5YJyBQtLz8AGFsuRznQ=";
+    hash = "sha256-5a6aFT8R8vMzPS+Y+fcDV5+olhioEpLjdMqa7qOyGsw=";
   };
 
 in
@@ -43,19 +43,9 @@ stdenv.mkDerivation rec {
     owner = "WerWolv";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-MYOZHQMYbbP01z0FyoCgTzwY1/71eUCmJYYfYvN9+so=";
+    hash = "sha256-8Ehpk0TjE4itQ7D9Nx74plYwABVufuYmxfxyuSqak1c=";
   };
 
-  patches = [
-    # Backport fixes (and fix to fix) for default plugin not being loaded.
-    (fetchpatch {
-      url = "https://github.com/WerWolv/PatternLanguage/compare/ImHex-v1.32.2..1adcdd358d3772681242267ddd3459c9d0913796.patch";
-      stripLen = 1;
-      extraPrefix = "lib/external/pattern_language/";
-      hash = "sha256-aGvt7vQ6PtFE3sw4rAXUP7Pq8cL29LEKyC0rJKkxOZI=";
-    })
-  ];
-
   nativeBuildInputs = [ cmake llvm python3 perl pkg-config rsync ];
 
   buildInputs = [
@@ -93,7 +83,7 @@ stdenv.mkDerivation rec {
     description = "Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM";
     homepage = "https://github.com/WerWolv/ImHex";
     license = with licenses; [ gpl2Only ];
-    maintainers = with maintainers; [ luis kashw2 cafkafk ];
+    maintainers = with maintainers; [ kashw2 cafkafk ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/by-name/in/incus/lts.nix b/pkgs/by-name/in/incus/lts.nix
index 1537d4d99bc6f..b39b6b8fdbf17 100644
--- a/pkgs/by-name/in/incus/lts.nix
+++ b/pkgs/by-name/in/incus/lts.nix
@@ -1,3 +1,8 @@
-# this release doesn't exist yet, but satisfay the by-name checks
-# will be added as incus-lts in all-packages.nix once ready
-import ./generic.nix { }
+import ./generic.nix {
+  hash = "sha256-+q5qP7w2RdtuwvxPThCryYYEJ7s5WDnWHRvjo4TuajA=";
+  version = "6.0.0";
+  vendorHash = "sha256-wcauzIbBcYpSWttZCVVE9m49AEQGolGYSsv9eEkhb7Y=";
+  patches = [ ];
+  lts = true;
+  updateScriptArgs = "--lts=true --regex '6.0.*'";
+}
diff --git a/pkgs/by-name/in/incus/package.nix b/pkgs/by-name/in/incus/package.nix
index de85b0310bc91..50fccf3e77ee4 100644
--- a/pkgs/by-name/in/incus/package.nix
+++ b/pkgs/by-name/in/incus/package.nix
@@ -1,6 +1,6 @@
 import ./generic.nix {
-  hash = "sha256-6TLoua3rooDRyPc5BPYgzU/oeVy6F8h+p3UtKGPZkAE=";
-  version = "0.7.0";
-  vendorHash = "sha256-Slw58pszT6sbpxK6/f+ojA+uStt0zSWxztFTm5ovZr8=";
+  hash = "sha256-+q5qP7w2RdtuwvxPThCryYYEJ7s5WDnWHRvjo4TuajA=";
+  version = "6.0.0";
+  vendorHash = "sha256-wcauzIbBcYpSWttZCVVE9m49AEQGolGYSsv9eEkhb7Y=";
   patches = [ ];
 }
diff --git a/pkgs/by-name/in/inshellisense/package.nix b/pkgs/by-name/in/inshellisense/package.nix
index 2361c0e69ad2e..20fa220039111 100644
--- a/pkgs/by-name/in/inshellisense/package.nix
+++ b/pkgs/by-name/in/inshellisense/package.nix
@@ -1,17 +1,27 @@
-{ lib, buildNpmPackage, fetchFromGitHub }:
+{ lib, stdenv, buildNpmPackage, fetchFromGitHub, cacert }:
 
 buildNpmPackage rec {
   pname = "inshellisense";
-  version = "0.0.1-rc.4";
+  version = "0.0.1-rc.12";
 
   src = fetchFromGitHub {
     owner = "microsoft";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-PYSonVyclGSH3ArbqJuKrBNGbJaQEp6XemwnHboVwPk=";
+    hash = "sha256-dDjIKVV1dSCIa2Y2d1AQQAw9Rcflh0AnKlwsQSblIhs=";
   };
 
-  npmDepsHash = "sha256-sjr4Hy1/zWPAlVGsMkyQIQcBT86KLaN2/UAaAd7Mn6Q=";
+  npmDepsHash = "sha256-uBsPaUvEiR5oCl8rZvpyNPXSB/Vlcx937lT4WqgekHI=";
+
+  # Needed for dependency `@homebridge/node-pty-prebuilt-multiarch`
+  # On Darwin systems the build fails with,
+  #
+  # npm ERR! ../src/unix/pty.cc:413:13: error: use of undeclared identifier 'openpty'
+  # npm ERR!   int ret = openpty(&master, &slave, nullptr, NULL, static_cast<winsi ze*>(&winp));
+  #
+  # when `node-gyp` tries to build the dep. The below allows `npm` to download the prebuilt binary.
+  makeCacheWritable = stdenv.isDarwin;
+  nativeBuildInputs = lib.optional stdenv.isDarwin cacert;
 
   meta = with lib; {
     description = "IDE style command line auto complete";
diff --git a/pkgs/by-name/in/insync-nautilus/package.nix b/pkgs/by-name/in/insync-nautilus/package.nix
new file mode 100644
index 0000000000000..98079f1a2e88b
--- /dev/null
+++ b/pkgs/by-name/in/insync-nautilus/package.nix
@@ -0,0 +1,48 @@
+{ stdenv,
+  fetchurl,
+  lib,
+  dpkg,
+  gnome,
+  insync
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "insync-nautilus";
+  version = lib.getVersion insync;
+  pyproject = true;
+
+  # Download latest from: https://www.insynchq.com/downloads/linux#nautilus
+
+  src = fetchurl {
+    urls = [
+      "https://cdn.insynchq.com/builds/linux/insync-nautilus_${finalAttrs.version}_all.deb"
+      "https://web.archive.org/web/20240409080611/https://cdn.insynchq.com/builds/linux/insync-nautilus_${finalAttrs.version}_all.deb"
+    ];
+    hash = "sha256-aB1/ZzcQH3T1lviMZO8jXbtdbe4TW20f0TAcv4HDOGI=";
+  };
+
+  nativeBuildInputs = [
+    dpkg
+  ];
+
+  buildInputs = [
+    gnome.nautilus-python
+    insync
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out
+    cp -R usr/share $out/
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    platforms = [ "x86_64-linux" ];
+    sourceProvenance = with lib.sourceTypes; [ fromSource ];
+    license = licenses.unfree;
+    maintainers = with maintainers; [ hellwolf ];
+    homepage = "https://www.insynchq.com";
+    description = "This package contains the Python extension and icons for integrating Insync with Nautilus";
+  };
+})
diff --git a/pkgs/by-name/in/insync/package.nix b/pkgs/by-name/in/insync/package.nix
index b8206c38ce907..7ec64182f9477 100644
--- a/pkgs/by-name/in/insync/package.nix
+++ b/pkgs/by-name/in/insync/package.nix
@@ -6,7 +6,6 @@
 , autoPatchelfHook
 , dpkg
 , nss
-, cacert
 , alsa-lib
 , libvorbis
 , libdrm
@@ -22,36 +21,24 @@ let
   # Find a binary from https://www.insynchq.com/downloads/linux#ubuntu.
   version = "3.8.7.50516";
   ubuntu-dist = "mantic_amd64";
-  meta = with lib; {
-    platforms = ["x86_64-linux"];
-    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
-    license = licenses.unfree;
-    maintainers = with maintainers; [ hellwolf ];
-    homepage = "https://www.insynchq.com";
-    description = "Google Drive sync and backup with multiple account support";
-    longDescription = ''
-     Insync is a commercial application that syncs your Drive files to your
-     computer.  It has more advanced features than Google's official client
-     such as multiple account support, Google Doc conversion, symlink support,
-     and built in sharing.
-
-     There is a 15-day free trial, and it is a paid application after that.
-
-     Known bug(s):
-
-     1) Currently the system try icon does not render correctly.
-    '';
-    mainProgram = "insync";
-  };
-
+  insyncDeb = (fetchurl {
+    urls = [
+      "https://cdn.insynchq.com/builds/linux/insync_${version}-${ubuntu-dist}.deb"
+      "https://web.archive.org/web/20240409080945/https://cdn.insynchq.com/builds/linux/insync_${version}-${ubuntu-dist}.deb"
+    ];
+    hash = "sha256-U7BcgghbdR7r9WiZpEOka+BzXwnxrzL6p4imGESuB/k=";
+  });
+  insyncEmblemIconsDeb = (fetchurl {
+    urls = [
+      "https://cdn.insynchq.com/builds/linux/insync-emblem-icons_${version}_all.deb"
+      "https://web.archive.org/web/20240409081214/https://cdn.insynchq.com/builds/linux/insync-emblem-icons_${version}_all.deb"
+    ];
+    hash = "sha256-uALaIxETEEkjDTx331uIsb4VswWk2K0dGuDMYH8v5U8=";
+  });
   insync-pkg = stdenvNoCC.mkDerivation {
     name = "${pname}-pkg-${version}";
-    inherit version meta;
 
-    src = fetchurl {
-      url = "https://cdn.insynchq.com/builds/linux/insync_${version}-${ubuntu-dist}.deb";
-      sha256 = "sha256-U7BcgghbdR7r9WiZpEOka+BzXwnxrzL6p4imGESuB/k=";
-    };
+    srcs = [ insyncDeb insyncEmblemIconsDeb ];
 
     nativeBuildInputs = [
       dpkg
@@ -71,7 +58,8 @@ let
     ];
 
     unpackPhase = ''
-      dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner
+      dpkg-deb --fsys-tarfile ${insyncDeb} | tar -x --no-same-permissions --no-same-owner
+      dpkg-deb --fsys-tarfile ${insyncEmblemIconsDeb} | tar -x --no-same-permissions --no-same-owner
     '';
 
     installPhase = ''
@@ -88,8 +76,7 @@ let
   };
 
 in buildFHSEnv {
-  name = pname;
-  inherit meta;
+  inherit pname version;
 
   targetPkgs = pkgs: with pkgs; [
     libudev0-shim
@@ -97,7 +84,7 @@ in buildFHSEnv {
   ];
 
   extraInstallCommands = ''
-    cp -rsHf "${insync-pkg}"/share $out
+    cp -rsHf "${insync-pkg}"/share $out/
   '';
 
   runScript = writeShellScript "insync-wrapper.sh" ''
@@ -119,4 +106,26 @@ in buildFHSEnv {
   unshareCgroup = false;
 
   dieWithParent = true;
+
+  meta = with lib; {
+    platforms = [ "x86_64-linux" ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    license = licenses.unfree;
+    maintainers = with maintainers; [ hellwolf ];
+    homepage = "https://www.insynchq.com";
+    description = "Google Drive sync and backup with multiple account support";
+    longDescription = ''
+     Insync is a commercial application that syncs your Drive files to your
+     computer.  It has more advanced features than Google's official client
+     such as multiple account support, Google Doc conversion, symlink support,
+     and built in sharing.
+
+     There is a 15-day free trial, and it is a paid application after that.
+
+     Known bug(s):
+
+     1) Currently the system try icon does not render correctly.
+    '';
+    mainProgram = "insync";
+  };
 }
diff --git a/pkgs/by-name/in/intiface-central/package.nix b/pkgs/by-name/in/intiface-central/package.nix
index 180d4feefc669..1c974a385b356 100644
--- a/pkgs/by-name/in/intiface-central/package.nix
+++ b/pkgs/by-name/in/intiface-central/package.nix
@@ -11,12 +11,12 @@
 }:
 flutter.buildFlutterApplication rec {
   pname = "intiface-central";
-  version = "2.5.3";
+  version = "2.5.6";
   src = fetchFromGitHub {
     owner = "intiface";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-i0G3wCfJ9Q7DEmVMrQv2K6fy4YRWsEMNns9zMZkJxvY=";
+    hash = "sha256-EcOFiaWqljNZIvsCkhuCEChEC51ERxM74EYE6u7Q4U8=";
   };
   patches = [
     ./corrosion.patch
@@ -28,7 +28,7 @@ flutter.buildFlutterApplication rec {
     name = "${pname}-${version}-cargo-deps";
     inherit src;
     sourceRoot = "${src.name}/intiface-engine-flutter-bridge";
-    hash = "sha256-0sCHa3rMaLYaUG3E3fmsLi0dSdb9vGyv7qNR3JQkXuU=";
+    hash = "sha256-tkJcwT2lt8+FT9GZ0ROrm1jkOxoq875O3wZkgZl22r4=";
   };
   cargoRoot = "intiface-engine-flutter-bridge";
 
diff --git a/pkgs/by-name/in/intiface-central/pubspec.lock.json b/pkgs/by-name/in/intiface-central/pubspec.lock.json
index a13501537abed..e27fd28e9fe08 100644
--- a/pkgs/by-name/in/intiface-central/pubspec.lock.json
+++ b/pkgs/by-name/in/intiface-central/pubspec.lock.json
@@ -24,11 +24,11 @@
       "dependency": "transitive",
       "description": {
         "name": "archive",
-        "sha256": "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03",
+        "sha256": "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.4.6"
+      "version": "3.4.9"
     },
     "args": {
       "dependency": "transitive",
@@ -54,11 +54,11 @@
       "dependency": "direct main",
       "description": {
         "name": "bloc",
-        "sha256": "3820f15f502372d979121de1f6b97bfcf1630ebff8fe1d52fb2b0bfa49be5b49",
+        "sha256": "f53a110e3b48dcd78136c10daa5d51512443cea5e1348c9d80a320095fa2db9e",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "8.1.2"
+      "version": "8.1.3"
     },
     "boolean_selector": {
       "dependency": "transitive",
@@ -104,11 +104,11 @@
       "dependency": "transitive",
       "description": {
         "name": "build_daemon",
-        "sha256": "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65",
+        "sha256": "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "4.0.0"
+      "version": "4.0.1"
     },
     "build_resolvers": {
       "dependency": "transitive",
@@ -154,11 +154,11 @@
       "dependency": "transitive",
       "description": {
         "name": "built_value",
-        "sha256": "a8de5955205b4d1dbbbc267daddf2178bd737e4bab8987c04a500478c9651e74",
+        "sha256": "723b4021e903217dfc445ec4cf5b42e27975aece1fc4ebbc1ca6329c2d9fb54e",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "8.6.3"
+      "version": "8.7.0"
     },
     "buttplug": {
       "dependency": "direct main",
@@ -274,11 +274,11 @@
       "dependency": "transitive",
       "description": {
         "name": "dbus",
-        "sha256": "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263",
+        "sha256": "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.7.8"
+      "version": "0.7.10"
     },
     "device_info_plus": {
       "dependency": "direct main",
@@ -410,11 +410,11 @@
       "dependency": "direct dev",
       "description": {
         "name": "flutter_lints",
-        "sha256": "ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5",
+        "sha256": "e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.0.0"
+      "version": "3.0.1"
     },
     "flutter_local_notifications": {
       "dependency": "direct main",
@@ -460,21 +460,31 @@
       "dependency": "direct main",
       "description": {
         "name": "flutter_markdown",
-        "sha256": "8afc9a6aa6d8e8063523192ba837149dbf3d377a37c0b0fc579149a1fbd4a619",
+        "sha256": "35108526a233cc0755664d445f8a6b4b61e6f8fe993b3658b80b4a26827fc196",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.6.18"
+      "version": "0.6.18+2"
     },
     "flutter_rust_bridge": {
       "dependency": "direct main",
       "description": {
         "name": "flutter_rust_bridge",
-        "sha256": "e12415c3bce49bcbc3fed383f0ea41ad7d828f6cf0eccba0588ffa5a812fe522",
+        "sha256": "02720226035257ad0b571c1256f43df3e1556a499f6bcb004849a0faaa0e87f0",
+        "url": "https://pub.dev"
+      },
+      "source": "hosted",
+      "version": "1.82.6"
+    },
+    "flutter_spinkit": {
+      "dependency": "direct main",
+      "description": {
+        "name": "flutter_spinkit",
+        "sha256": "b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.82.1"
+      "version": "5.2.0"
     },
     "flutter_test": {
       "dependency": "direct dev",
@@ -502,11 +512,11 @@
       "dependency": "direct main",
       "description": {
         "name": "github",
-        "sha256": "e20582edb07b859cc226ab2fd64fd246f7cdcbfc7098f46e241c03deb81b5682",
+        "sha256": "45d7ffc34f4958b8f9910175e10fc00f976ad0b44ca5ee06fcfd7269a2dbb77f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "9.19.0"
+      "version": "9.20.0"
     },
     "glob": {
       "dependency": "transitive",
@@ -618,6 +628,36 @@
       "source": "hosted",
       "version": "6.7.1"
     },
+    "leak_tracker": {
+      "dependency": "transitive",
+      "description": {
+        "name": "leak_tracker",
+        "sha256": "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa",
+        "url": "https://pub.dev"
+      },
+      "source": "hosted",
+      "version": "10.0.0"
+    },
+    "leak_tracker_flutter_testing": {
+      "dependency": "transitive",
+      "description": {
+        "name": "leak_tracker_flutter_testing",
+        "sha256": "b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0",
+        "url": "https://pub.dev"
+      },
+      "source": "hosted",
+      "version": "2.0.1"
+    },
+    "leak_tracker_testing": {
+      "dependency": "transitive",
+      "description": {
+        "name": "leak_tracker_testing",
+        "sha256": "a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47",
+        "url": "https://pub.dev"
+      },
+      "source": "hosted",
+      "version": "2.0.1"
+    },
     "lints": {
       "dependency": "transitive",
       "description": {
@@ -662,31 +702,31 @@
       "dependency": "transitive",
       "description": {
         "name": "matcher",
-        "sha256": "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e",
+        "sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.12.16"
+      "version": "0.12.16+1"
     },
     "material_color_utilities": {
       "dependency": "transitive",
       "description": {
         "name": "material_color_utilities",
-        "sha256": "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41",
+        "sha256": "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.5.0"
+      "version": "0.8.0"
     },
     "meta": {
       "dependency": "transitive",
       "description": {
         "name": "meta",
-        "sha256": "a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e",
+        "sha256": "d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.10.0"
+      "version": "1.11.0"
     },
     "mime": {
       "dependency": "transitive",
@@ -698,6 +738,16 @@
       "source": "hosted",
       "version": "1.0.4"
     },
+    "multicast_dns": {
+      "dependency": "direct main",
+      "description": {
+        "name": "multicast_dns",
+        "sha256": "316cc47a958d4bd3c67bd238fe8b44fdfb6133bad89cb191c0c3bd3edb14e296",
+        "url": "https://pub.dev"
+      },
+      "source": "hosted",
+      "version": "0.3.2+6"
+    },
     "nested": {
       "dependency": "transitive",
       "description": {
@@ -752,11 +802,11 @@
       "dependency": "direct main",
       "description": {
         "name": "package_info_plus",
-        "sha256": "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017",
+        "sha256": "88bc797f44a94814f2213db1c9bd5badebafdfb8290ca9f78d4b9ee2a3db4d79",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "4.2.0"
+      "version": "5.0.1"
     },
     "package_info_plus_platform_interface": {
       "dependency": "transitive",
@@ -772,11 +822,11 @@
       "dependency": "direct main",
       "description": {
         "name": "path",
-        "sha256": "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917",
+        "sha256": "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.8.3"
+      "version": "1.9.0"
     },
     "path_provider": {
       "dependency": "direct main",
@@ -792,11 +842,11 @@
       "dependency": "transitive",
       "description": {
         "name": "path_provider_android",
-        "sha256": "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1",
+        "sha256": "e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.2.0"
+      "version": "2.2.1"
     },
     "path_provider_foundation": {
       "dependency": "transitive",
@@ -902,11 +952,11 @@
       "dependency": "transitive",
       "description": {
         "name": "petitparser",
-        "sha256": "cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750",
+        "sha256": "eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "5.4.0"
+      "version": "6.0.1"
     },
     "platform": {
       "dependency": "transitive",
@@ -922,11 +972,11 @@
       "dependency": "direct main",
       "description": {
         "name": "plugin_platform_interface",
-        "sha256": "da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d",
+        "sha256": "f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.6"
+      "version": "2.1.7"
     },
     "pointycastle": {
       "dependency": "transitive",
@@ -952,11 +1002,11 @@
       "dependency": "transitive",
       "description": {
         "name": "provider",
-        "sha256": "cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f",
+        "sha256": "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.0.5"
+      "version": "6.1.1"
     },
     "pub_semver": {
       "dependency": "transitive",
@@ -982,11 +1032,11 @@
       "dependency": "transitive",
       "description": {
         "name": "puppeteer",
-        "sha256": "59e723cc5b69537159a7c34efd645dc08a6a1ac4647d7d7823606802c0f93cdb",
+        "sha256": "eedeaae6ec5d2e54f9ae22ab4d6b3dda2e8791c356cc783046d06c287ffe11d8",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.2.0"
+      "version": "3.6.0"
     },
     "quiver": {
       "dependency": "transitive",
@@ -1022,21 +1072,21 @@
       "dependency": "direct main",
       "description": {
         "name": "sentry",
-        "sha256": "830667eadc0398fea3a3424ed1b74568e2db603a42758d0922e2f2974ce55a60",
+        "sha256": "a460aa48568d47140dd0557410b624d344ffb8c05555107ac65035c1097cf1ad",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "7.10.1"
+      "version": "7.18.0"
     },
     "sentry_flutter": {
       "dependency": "direct main",
       "description": {
         "name": "sentry_flutter",
-        "sha256": "6730f41b304c6fb0fa590dacccaf73ba11082fc64b274cfe8a79776f2b95309c",
+        "sha256": "3d0d1d4e0e407d276ae8128d123263ccbc37e988bae906765efd6f37d544f4c6",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "7.10.1"
+      "version": "7.18.0"
     },
     "settings_ui": {
       "dependency": "direct main",
@@ -1102,11 +1152,11 @@
       "dependency": "transitive",
       "description": {
         "name": "shared_preferences_web",
-        "sha256": "d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf",
+        "sha256": "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.2.1"
+      "version": "2.2.2"
     },
     "shared_preferences_windows": {
       "dependency": "transitive",
@@ -1184,6 +1234,16 @@
       "source": "hosted",
       "version": "1.10.0"
     },
+    "sprintf": {
+      "dependency": "transitive",
+      "description": {
+        "name": "sprintf",
+        "sha256": "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23",
+        "url": "https://pub.dev"
+      },
+      "source": "hosted",
+      "version": "7.0.0"
+    },
     "stack_trace": {
       "dependency": "transitive",
       "description": {
@@ -1288,91 +1348,91 @@
       "dependency": "direct main",
       "description": {
         "name": "url_launcher",
-        "sha256": "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27",
+        "sha256": "b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.1.14"
+      "version": "6.2.1"
     },
     "url_launcher_android": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_android",
-        "sha256": "b04af59516ab45762b2ca6da40fa830d72d0f6045cd97744450b73493fa76330",
+        "sha256": "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.1.0"
+      "version": "6.2.0"
     },
     "url_launcher_ios": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_ios",
-        "sha256": "7c65021d5dee51813d652357bc65b8dd4a6177082a9966bc8ba6ee477baa795f",
+        "sha256": "bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.1.5"
+      "version": "6.2.1"
     },
     "url_launcher_linux": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_linux",
-        "sha256": "b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e",
+        "sha256": "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.0.6"
+      "version": "3.1.0"
     },
     "url_launcher_macos": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_macos",
-        "sha256": "b55486791f666e62e0e8ff825e58a023fd6b1f71c49926483f1128d3bbd8fe88",
+        "sha256": "b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.0.7"
+      "version": "3.1.0"
     },
     "url_launcher_platform_interface": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_platform_interface",
-        "sha256": "95465b39f83bfe95fcb9d174829d6476216f2d548b79c38ab2506e0458787618",
+        "sha256": "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.5"
+      "version": "2.2.0"
     },
     "url_launcher_web": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_web",
-        "sha256": "2942294a500b4fa0b918685aff406773ba0a4cd34b7f42198742a94083020ce5",
+        "sha256": "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.0.20"
+      "version": "2.2.0"
     },
     "url_launcher_windows": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_windows",
-        "sha256": "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069",
+        "sha256": "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.0.8"
+      "version": "3.1.0"
     },
     "uuid": {
       "dependency": "transitive",
       "description": {
         "name": "uuid",
-        "sha256": "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313",
+        "sha256": "cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.0.7"
+      "version": "4.3.3"
     },
     "vector_math": {
       "dependency": "transitive",
@@ -1394,6 +1454,16 @@
       "source": "hosted",
       "version": "3.0.2"
     },
+    "vm_service": {
+      "dependency": "transitive",
+      "description": {
+        "name": "vm_service",
+        "sha256": "b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957",
+        "url": "https://pub.dev"
+      },
+      "source": "hosted",
+      "version": "13.0.0"
+    },
     "watcher": {
       "dependency": "transitive",
       "description": {
@@ -1428,11 +1498,11 @@
       "dependency": "transitive",
       "description": {
         "name": "win32",
-        "sha256": "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3",
+        "sha256": "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "5.0.9"
+      "version": "5.1.0"
     },
     "win32_registry": {
       "dependency": "transitive",
@@ -1468,11 +1538,11 @@
       "dependency": "transitive",
       "description": {
         "name": "xml",
-        "sha256": "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84",
+        "sha256": "af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.3.0"
+      "version": "6.4.2"
     },
     "yaml": {
       "dependency": "transitive",
@@ -1496,7 +1566,7 @@
     }
   },
   "sdks": {
-    "dart": ">=3.2.0-194.0.dev <4.0.0",
-    "flutter": ">=3.13.0"
+    "dart": ">=3.2.0 <4.0.0",
+    "flutter": ">=3.16.0"
   }
 }
diff --git a/pkgs/by-name/ja/jankyborders/package.nix b/pkgs/by-name/ja/jankyborders/package.nix
index 51ce3ded630ef..1f1e06697aa6b 100644
--- a/pkgs/by-name/ja/jankyborders/package.nix
+++ b/pkgs/by-name/ja/jankyborders/package.nix
@@ -5,6 +5,7 @@
 , overrideSDK
 , darwin
 , testers
+, nix-update-script
 }:
 let
   stdenv = overrideSDK pkgs.stdenv "11.0";
@@ -41,9 +42,13 @@ stdenv.mkDerivation (finalAttrs: {
     runHook postInstall
   '';
 
-  passthru.tests.version = testers.testVersion {
-    package = finalAttrs.finalPackage;
-    version = "borders-v${finalAttrs.version}";
+  passthru = {
+    tests.version = testers.testVersion {
+      package = finalAttrs.finalPackage;
+      version = "borders-v${finalAttrs.version}";
+    };
+
+    updateScript = nix-update-script { };
   };
 
   meta = {
diff --git a/pkgs/by-name/ju/justbuild/package.nix b/pkgs/by-name/ju/justbuild/package.nix
index 42510b0ade0b3..550aa33497357 100644
--- a/pkgs/by-name/ju/justbuild/package.nix
+++ b/pkgs/by-name/ju/justbuild/package.nix
@@ -11,7 +11,7 @@
   openssl,
 
   pkg-config,
-  protobuf_23,
+  protobuf_24,
   grpc,
   pandoc,
   python3,
@@ -75,19 +75,21 @@ stdenv.mkDerivation rec {
     grpc
     libgit2
     openssl
-    # Using protobuf 23 because this is the same version upstream currently
-    # uses for bundled builds
+    # Using protobuf 24 because the current version of grpc is build using
+    # protobuf 24 and therefore the older protobuf version causes errors
+    # during build.
+    # Upstream currently uses protobuf 23 for bundled builds
     # For future updates: The currently used version can be found in the file
     # etc/repos.json: https://github.com/just-buildsystem/justbuild/blob/master/etc/repos.json
     # under the key .repositories.protobuf
-    protobuf_23
+    protobuf_24
     python3
   ];
 
   postPatch = ''
     sed -ie 's|\./bin/just-mr.py|${python3}/bin/python3 ./bin/just-mr.py|' bin/bootstrap.py
     sed -ie 's|#!/usr/bin/env python3|#!${python3}/bin/python3|' bin/parallel-bootstrap-traverser.py
-    jq '.repositories.protobuf.pkg_bootstrap.local_path = "${protobuf_23}"' etc/repos.json > etc/repos.json.patched
+    jq '.repositories.protobuf.pkg_bootstrap.local_path = "${protobuf_24}"' etc/repos.json > etc/repos.json.patched
     mv etc/repos.json.patched etc/repos.json
     jq '.repositories.com_github_grpc_grpc.pkg_bootstrap.local_path = "${grpc}"' etc/repos.json > etc/repos.json.patched
     mv etc/repos.json.patched etc/repos.json
@@ -170,7 +172,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    broken = true; # last successful build 2024-01-26
+    broken = stdenv.isDarwin;
     description = "a generic build tool";
     homepage = "https://github.com/just-buildsystem/justbuild";
     license = licenses.asl20;
diff --git a/pkgs/tools/misc/kak-lsp/0001-Use-full-Perl-path.patch b/pkgs/by-name/ka/kakoune-lsp/Use-full-Perl-path.patch
index 38f0d38cb2156..38f0d38cb2156 100644
--- a/pkgs/tools/misc/kak-lsp/0001-Use-full-Perl-path.patch
+++ b/pkgs/by-name/ka/kakoune-lsp/Use-full-Perl-path.patch
diff --git a/pkgs/tools/misc/kak-lsp/default.nix b/pkgs/by-name/ka/kakoune-lsp/package.nix
index a49847f8e11f5..68b2fce02554f 100644
--- a/pkgs/tools/misc/kak-lsp/default.nix
+++ b/pkgs/by-name/ka/kakoune-lsp/package.nix
@@ -1,21 +1,23 @@
 { stdenv, lib, fetchFromGitHub, rustPlatform, perl, CoreServices, Security, SystemConfiguration }:
 
 rustPlatform.buildRustPackage rec {
-  pname = "kak-lsp";
-  version = "15.0.1";
+  pname = "kakoune-lsp";
+  version = "16.0.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-W4z2YtOEBCTM+NsL1HBHSYCXJXN459chE4RW0CPMjD4=";
+    sha256 = "sha256-d4Tc6iYp20uOKMd+T2LhWgXWZzvzq1E+VWqjhhiIiHE=";
   };
 
-  cargoHash = "sha256-tAA9eu4y1h6huNmEgY3L6v29itP5I4a8UZgoA+ANoq0=";
+  cargoHash = "sha256-kV8d0PwIWS6gyfCtv70iv8MrL91ZOZbwYznhc3lUw0U=";
 
   buildInputs = [ perl ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ];
 
-  patches = [ ./0001-Use-full-Perl-path.patch ];
+  patches = [
+    ./Use-full-Perl-path.patch
+  ];
 
   postPatch = ''
     substituteInPlace rc/lsp.kak \
@@ -24,7 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Kakoune Language Server Protocol Client";
-    homepage = "https://github.com/kak-lsp/kak-lsp";
+    homepage = "https://github.com/kakoune-lsp/kakoune-lsp";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = with maintainers; [ spacekookie poweredbypie ];
     mainProgram = "kak-lsp";
diff --git a/pkgs/by-name/kc/kcl-cli/package.nix b/pkgs/by-name/kc/kcl-cli/package.nix
new file mode 100644
index 0000000000000..1065bde95de2e
--- /dev/null
+++ b/pkgs/by-name/kc/kcl-cli/package.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "kcl-cli";
+  version = "0.8.5";
+  src = fetchFromGitHub {
+    owner = "kcl-lang";
+    repo = "cli";
+    rev = "v${version}";
+    hash = "sha256-ZjEMgQukhBGY3LWqsGmLj3lKfLtNNaQugQs0cSLMb80=";
+  };
+  vendorHash = "sha256-jmqKMB85HxAlwH7FVjHrLCZQYuAJrguRfzIz1yMypjw=";
+  ldflags = [
+    "-X=kcl-lang.io/cli/pkg/version.version=${version}"
+  ];
+  subPackages = [ "cmd/kcl" ];
+  meta = with lib; {
+    description = "A command line interface for KCL programming language";
+    homepage = "https://github.com/kcl-lang/cli";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ peefy ];
+    mainProgram = "kcl";
+  };
+}
diff --git a/pkgs/by-name/ke/keydb/package.nix b/pkgs/by-name/ke/keydb/package.nix
new file mode 100644
index 0000000000000..3fc085b40ad9f
--- /dev/null
+++ b/pkgs/by-name/ke/keydb/package.nix
@@ -0,0 +1,106 @@
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  libuuid,
+  curl,
+  pkg-config,
+  withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
+  systemd,
+  tlsSupport ? !stdenv.hostPlatform.isStatic,
+  openssl,
+  jemalloc,
+  which,
+  tcl,
+  tcltls,
+  ps,
+  getconf,
+  nixosTests,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "keydb";
+  version = "6.3.4";
+
+  src = fetchFromGitHub {
+    owner = "snapchat";
+    repo = "keydb";
+    rev = "v${version}";
+    hash = "sha256-j6qgK6P3Fv+b6k9jwKQ5zW7XLkKbXXcmHKBCQYvwEIU=";
+  };
+
+  postPatch = ''
+    substituteInPlace deps/lua/src/Makefile \
+      --replace-fail "ar rcu" "${stdenv.cc.targetPrefix}ar rcu"
+    substituteInPlace src/Makefile \
+      --replace-fail "as --64 -g" "${stdenv.cc.targetPrefix}as --64 -g"
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [
+    jemalloc
+    curl
+    libuuid
+  ] ++ lib.optionals tlsSupport [ openssl ] ++ lib.optionals withSystemd [ systemd ];
+
+  makeFlags =
+    [
+      "PREFIX=${placeholder "out"}"
+      "AR=${stdenv.cc.targetPrefix}ar"
+      "RANLIB=${stdenv.cc.targetPrefix}ranlib"
+      "USEASM=${if stdenv.isx86_64 then "true" else "false"}"
+    ]
+    ++ lib.optionals (!tlsSupport) [ "BUILD_TLS=no" ]
+    ++ lib.optionals withSystemd [ "USE_SYSTEMD=yes" ]
+    ++ lib.optionals (!stdenv.isx86_64) [ "MALLOC=libc" ];
+
+  enableParallelBuilding = true;
+
+  hardeningEnable = lib.optionals (!stdenv.isDarwin) [ "pie" ];
+
+  # darwin currently lacks a pure `pgrep` which is extensively used here
+  doCheck = !stdenv.isDarwin;
+  nativeCheckInputs = [
+    which
+    tcl
+    ps
+  ] ++ lib.optionals stdenv.hostPlatform.isStatic [ getconf ] ++ lib.optionals tlsSupport [ tcltls ];
+  checkPhase = ''
+    runHook preCheck
+
+    # disable test "Connect multiple replicas at the same time": even
+    # upstream find this test too timing-sensitive
+    substituteInPlace tests/integration/replication.tcl \
+      --replace-fail 'foreach mdl {no yes}' 'foreach mdl {}'
+
+    substituteInPlace tests/support/server.tcl \
+      --replace-fail 'exec /usr/bin/env' 'exec env'
+
+    sed -i '/^proc wait_load_handlers_disconnected/{n ; s/wait_for_condition 50 100/wait_for_condition 50 500/; }' \
+      tests/support/util.tcl
+
+    patchShebangs ./utils/gen-test-certs.sh
+    ${if tlsSupport then "./utils/gen-test-certs.sh" else ""}
+
+    ./runtest \
+      --no-latency \
+      --timeout 2000 \
+      --clients $NIX_BUILD_CORES \
+      --tags -leaks ${if tlsSupport then "--tls" else ""}
+
+    runHook postCheck
+  '';
+
+  passthru.tests.redis = nixosTests.redis;
+  passthru.serverBin = "keydb-server";
+
+  meta = with lib; {
+    homepage = "https://keydb.dev";
+    description = "A Multithreaded Fork of Redis";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    changelog = "https://github.com/Snapchat/KeyDB/raw/v${version}/00-RELEASENOTES";
+    maintainers = teams.helsinki-systems.members;
+    mainProgram = "keydb-cli";
+  };
+}
diff --git a/pkgs/by-name/ko/koji/package.nix b/pkgs/by-name/ko/koji/package.nix
new file mode 100644
index 0000000000000..b42362245e2dc
--- /dev/null
+++ b/pkgs/by-name/ko/koji/package.nix
@@ -0,0 +1,43 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, perl
+, udev
+, openssl
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "koji";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    owner = "its-danny";
+    repo = "koji";
+    rev = version;
+    hash = "sha256-2kBjHX7izo4loJ8oyPjE9FtCvUODC3Sm4T8ETIdeGZM=";
+  };
+
+  cargoHash = "sha256-owppYDt0YdWoDvfmzVfiIPjLgTAT9eTI1LpRr4Y3XQA=";
+
+  OPENSSL_NO_VENDOR = 1;
+
+  nativeBuildInputs = [
+    pkg-config
+    perl
+    udev
+  ];
+
+  buildInputs = [
+    openssl.dev
+  ];
+
+  meta = with lib; {
+    description = "An interactive CLI for creating conventional commits";
+    homepage = "https://github.com/its-danny/koji";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ ByteSudoer ];
+    mainProgram = "koji";
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/ko/kokkos/package.nix b/pkgs/by-name/ko/kokkos/package.nix
index 09dc6fc4edd02..33634ddfaca9e 100644
--- a/pkgs/by-name/ko/kokkos/package.nix
+++ b/pkgs/by-name/ko/kokkos/package.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "kokkos";
-  version = "4.2.01";
+  version = "4.3.00";
 
   src = fetchFromGitHub {
     owner = "kokkos";
     repo = "kokkos";
     rev = finalAttrs.version;
-    hash = "sha256-d8GB7+hHqpD5KPeYmiXmT5+6W64j3bbTs2hoFYJnfa8=";
+    hash = "sha256-0MMztgw+okZM/xr2vQucwkkT04iueQSlSQJ6MN/756I=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/kr/krita-plugin-gmic/package.nix b/pkgs/by-name/kr/krita-plugin-gmic/package.nix
new file mode 100644
index 0000000000000..4cd46efd083a3
--- /dev/null
+++ b/pkgs/by-name/kr/krita-plugin-gmic/package.nix
@@ -0,0 +1,51 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, extra-cmake-modules
+, fftw
+, krita
+, libsForQt5
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "krita-plugin-gmic";
+  version = "3.2.4.1";
+
+  src = fetchFromGitHub {
+    owner = "amyspark";
+    repo = "gmic";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-SYE8kGvN7iD5OqiEEZpB/eRle67PrB5DojMC79qAQtg=";
+  };
+  sourceRoot = "${finalAttrs.src.name}/gmic-qt";
+  dontWrapQtApps = true;
+
+  postPatch = ''
+    patchShebangs \
+      translations/filters/csv2ts.sh \
+      translations/lrelease.sh
+  '';
+
+  nativeBuildInputs = [ cmake extra-cmake-modules ];
+
+  buildInputs = [
+    fftw
+    krita.unwrapped
+    libsForQt5.kcoreaddons
+    libsForQt5.qttools
+  ];
+
+  cmakeFlags = [
+    (lib.cmakeFeature "GMIC_QT_HOST" "krita-plugin")
+    # build krita's gmic instead of using the one from nixpkgs
+    (lib.cmakeBool "ENABLE_SYSTEM_GMIC" false)
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/amyspark/gmic";
+    description = "GMic plugin for Krita";
+    license = lib.licenses.cecill21;
+    maintainers = with maintainers; [ lelgenio ];
+  };
+})
diff --git a/pkgs/by-name/ld/ldproxy/package.nix b/pkgs/by-name/ld/ldproxy/package.nix
new file mode 100644
index 0000000000000..4736207cdc170
--- /dev/null
+++ b/pkgs/by-name/ld/ldproxy/package.nix
@@ -0,0 +1,29 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "ldproxy";
+  version = "0.31.4";
+
+  # The source of this tools actually comes from the set of tools located in the `esp-rs:embuild` repository
+  # cf: https://github.com/esp-rs/embuild
+  src = fetchFromGitHub {
+    owner = "esp-rs";
+    repo = "embuild";
+    rev = "v${version}";
+    hash = "sha256-YH2CPb3uBlPncd+KkP25xhCVvDB7HDxJuSqWOJ1LT3k=";
+  };
+
+  cargoHash = "sha256-HobX/aBn10KPpUKRSLt2IvfFVW7YpOu5tX4zNSCz6tw=";
+
+  # However we are only interested in building the specific crate located at `/ldproxy`
+  # cf: https://github.com/esp-rs/embuild/tree/v0.31.4/ldproxy
+  buildAndTestSubdir = "ldproxy";
+
+  meta = with lib; {
+    description = "Linker Proxy: a simple tool to forward linker arguments to the actual linker executable";
+    homepage = "https://github.com/esp-rs/embuild";
+    changelog = "https://github.com/esp-rs/embuild/blob/v${version}/CHANGELOG.md";
+    license = with licenses; [ mit /* or */ asl20 ];
+    maintainers = with maintainers; [ vpochapuis ];
+  };
+}
diff --git a/pkgs/by-name/le/lefthook/package.nix b/pkgs/by-name/le/lefthook/package.nix
index 8f396aed7486e..b2dd2d8061302 100644
--- a/pkgs/by-name/le/lefthook/package.nix
+++ b/pkgs/by-name/le/lefthook/package.nix
@@ -6,7 +6,7 @@
 
 let
   pname = "lefthook";
-  version = "1.6.7";
+  version = "1.6.8";
 in
 buildGoModule {
   inherit pname version;
@@ -15,10 +15,10 @@ buildGoModule {
     owner = "evilmartians";
     repo = "lefthook";
     rev = "v${version}";
-    hash = "sha256-4nbAT4g5tnq0bL7i9PsUKbSGoeaWHdApARYE4oWuwNk=";
+    hash = "sha256-GeI2vhTRiz8krYuolUxsWvFy4TIflOvFCAaa1b7Fex0=";
   };
 
-  vendorHash = "sha256-b+1Y75CG4ayDmnhYfPwpzMFrHCPmZ0FMbMsLiToac5c=";
+  vendorHash = "sha256-/eNhVD/9MZm1nVNmfqmLEfoySa8Krdzle2SLKpf1XlM=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/by-name/li/liana/Cargo.lock b/pkgs/by-name/li/liana/Cargo.lock
index 0aaadec617379..9222292ed7c7d 100644
--- a/pkgs/by-name/li/liana/Cargo.lock
+++ b/pkgs/by-name/li/liana/Cargo.lock
@@ -107,6 +107,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "ahash"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
 name = "aho-corasick"
 version = "0.7.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -122,6 +134,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
 
 [[package]]
+name = "allocator-api2"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+
+[[package]]
 name = "android_system_properties"
 version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -174,14 +192,14 @@ dependencies = [
 
 [[package]]
 name = "async-hwi"
-version = "0.0.13"
+version = "0.0.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a1d739fac959bf5e332425995a1892f99d94f39acd8acf36fe6c212f9583e0c"
+checksum = "912663643d018301fb5534949e8430515c7cdc9bf453bfefba2dc70dc854dd31"
 dependencies = [
  "async-trait",
- "base64 0.13.1",
  "bitbox-api",
  "bitcoin",
+ "coldcard",
  "futures",
  "hidapi",
  "ledger-apdu",
@@ -201,7 +219,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -226,12 +244,24 @@ dependencies = [
 ]
 
 [[package]]
+name = "base16ct"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+
+[[package]]
 name = "base32"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa"
 
 [[package]]
+name = "base58"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581"
+
+[[package]]
 name = "base64"
 version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -239,9 +269,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 
 [[package]]
 name = "base64"
-version = "0.21.0"
+version = "0.21.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
+checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9"
 
 [[package]]
 name = "base64-compat"
@@ -253,6 +283,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
+[[package]]
 name = "bdk_coin_select"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -260,9 +296,9 @@ checksum = "c0320167c3655e83f0415d52f39618902e449186ffc7dfb090f922f79675c316"
 
 [[package]]
 name = "bech32"
-version = "0.9.1"
+version = "0.10.0-beta"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445"
+checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea"
 
 [[package]]
 name = "bip39"
@@ -298,9 +334,9 @@ checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
 
 [[package]]
 name = "bitbox-api"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb3e44c693da4b4db46e2e3f2beb28479cb6a0bd4ebda12f1f22b39a48188f88"
+checksum = "d1c0e1d593628bd289304902364f69c24686734d1825c54e03d89e003aa87b4f"
 dependencies = [
  "async-trait",
  "base32",
@@ -324,21 +360,31 @@ dependencies = [
 
 [[package]]
 name = "bitcoin"
-version = "0.30.0"
+version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b36f4c848f6bd9ff208128f08751135846cc23ae57d66ab10a22efff1c675f3c"
+checksum = "fd00f3c09b5f21fb357abe32d29946eb8bb7a0862bae62c0b5e4a692acbbe73c"
 dependencies = [
- "base64 0.13.1",
+ "base64 0.21.6",
  "bech32",
- "bitcoin-private",
- "bitcoin_hashes 0.12.0",
+ "bitcoin-internals",
+ "bitcoin_hashes 0.13.0",
  "core2",
+ "hex-conservative",
  "hex_lit",
  "secp256k1",
  "serde",
 ]
 
 [[package]]
+name = "bitcoin-internals"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb"
+dependencies = [
+ "serde",
+]
+
+[[package]]
 name = "bitcoin-private"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -357,7 +403,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501"
 dependencies = [
  "bitcoin-private",
+]
+
+[[package]]
+name = "bitcoin_hashes"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b"
+dependencies = [
+ "bitcoin-internals",
  "core2",
+ "hex-conservative",
  "serde",
 ]
 
@@ -368,6 +424,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
+name = "bitflags"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+
+[[package]]
 name = "blake2"
 version = "0.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -414,7 +476,7 @@ checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -596,7 +658,7 @@ version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "block",
  "cocoa-foundation",
  "core-foundation",
@@ -612,7 +674,7 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "block",
  "core-foundation",
  "core-graphics-types",
@@ -632,6 +694,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "coldcard"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53b201b4f71707e6330445ed5b6af1024904c6d2c05aca2f74e5fa51d2e56a0f"
+dependencies = [
+ "aes",
+ "base58",
+ "bitcoin_hashes 0.13.0",
+ "ctr",
+ "hidapi",
+ "k256",
+ "rand",
+]
+
+[[package]]
 name = "color_quant"
 version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -644,6 +721,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642"
 
 [[package]]
+name = "const-oid"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
+
+[[package]]
 name = "const-random"
 version = "0.1.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -693,7 +776,7 @@ version = "0.22.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "core-foundation",
  "core-graphics-types",
  "foreign-types 0.3.2",
@@ -706,7 +789,7 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "core-foundation",
  "foreign-types 0.3.2",
  "libc",
@@ -824,6 +907,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
 
 [[package]]
+name = "crypto-bigint"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
+dependencies = [
+ "generic-array",
+ "rand_core",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
 name = "crypto-common"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -850,9 +945,9 @@ checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35"
 
 [[package]]
 name = "curve25519-dalek"
-version = "4.1.1"
+version = "4.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c"
+checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348"
 dependencies = [
  "cfg-if",
  "cpufeatures",
@@ -872,7 +967,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -899,7 +994,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "scratch",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -916,7 +1011,7 @@ checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -925,7 +1020,7 @@ version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "libloading",
  "winapi",
 ]
@@ -972,12 +1067,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8d7439c3735f405729d52c3fbbe4de140eaf938a1fe47d227c27f8254d4302a5"
 
 [[package]]
+name = "der"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
+dependencies = [
+ "const-oid",
+ "zeroize",
+]
+
+[[package]]
 name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
  "block-buffer",
+ "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -1073,12 +1179,45 @@ dependencies = [
 ]
 
 [[package]]
+name = "ecdsa"
+version = "0.16.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
+dependencies = [
+ "der",
+ "digest",
+ "elliptic-curve",
+ "rfc6979",
+ "signature",
+ "spki",
+]
+
+[[package]]
 name = "either"
 version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
 
 [[package]]
+name = "elliptic-curve"
+version = "0.13.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
+dependencies = [
+ "base16ct",
+ "crypto-bigint",
+ "digest",
+ "ff",
+ "generic-array",
+ "group",
+ "pkcs8",
+ "rand_core",
+ "sec1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
 name = "encase"
 version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1193,9 +1332,9 @@ dependencies = [
 
 [[package]]
 name = "fallible-iterator"
-version = "0.2.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
 
 [[package]]
 name = "fallible-streaming-iterator"
@@ -1222,6 +1361,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "ff"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+dependencies = [
+ "rand_core",
+ "subtle",
+]
+
+[[package]]
 name = "fiat-crypto"
 version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1346,7 +1495,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -1376,7 +1525,7 @@ version = "0.26.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "74eadec9d0a5c28c54bb9882e54787275152a4e36ce206b45d7451384e5bf5fb"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "freetype-sys",
  "libc",
 ]
@@ -1449,7 +1598,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -1499,6 +1648,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
 dependencies = [
  "typenum",
  "version_check",
+ "zeroize",
 ]
 
 [[package]]
@@ -1712,7 +1862,7 @@ version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "gpu-alloc-types",
 ]
 
@@ -1722,7 +1872,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
@@ -1744,7 +1894,7 @@ version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "gpu-descriptor-types",
  "hashbrown 0.12.3",
 ]
@@ -1755,7 +1905,18 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "group"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+dependencies = [
+ "ff",
+ "rand_core",
+ "subtle",
 ]
 
 [[package]]
@@ -1798,20 +1959,11 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
-dependencies = [
- "ahash",
-]
-
-[[package]]
-name = "hashbrown"
 version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 dependencies = [
- "ahash",
+ "ahash 0.7.6",
 ]
 
 [[package]]
@@ -1825,14 +1977,18 @@ name = "hashbrown"
 version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+dependencies = [
+ "ahash 0.8.7",
+ "allocator-api2",
+]
 
 [[package]]
 name = "hashlink"
-version = "0.7.0"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf"
+checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
 dependencies = [
- "hashbrown 0.11.2",
+ "hashbrown 0.14.0",
 ]
 
 [[package]]
@@ -1841,7 +1997,7 @@ version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "90601c6189668c7345fc53842cb3f3a3d872203d523be1b3cb44a36a3e62fb85"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "com-rs",
  "libc",
  "libloading",
@@ -1878,6 +2034,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 
 [[package]]
+name = "hex-conservative"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2"
+dependencies = [
+ "core2",
+]
+
+[[package]]
 name = "hex_lit"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1891,14 +2056,24 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
 
 [[package]]
 name = "hidapi"
-version = "2.4.1"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "723777263b0dcc5730aec947496bd8c3940ba63c15f5633b288cc615f4f6af79"
+checksum = "9a722fb137d008dbf264f54612457f8eb6a299efbcb0138178964a0809035d74"
 dependencies = [
  "cc",
+ "cfg-if",
  "libc",
  "pkg-config",
- "winapi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest",
 ]
 
 [[package]]
@@ -2021,7 +2196,7 @@ version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "11e1942e28dedee756cc27e67e7a838cdc1e59fb6bf9627ec9f709ab3b135782"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "instant",
  "palette",
 ]
@@ -2073,7 +2248,7 @@ version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "338a6aff7db906537074ad0fe8b720cfdb9512cdfea43c628c76bd1cf50fdcc0"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "bytemuck",
  "glam",
  "iced_native",
@@ -2130,7 +2305,7 @@ version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "478803c56061f567ce5ddf223b20d11d3c118cc46bb0d0552370dc65cdc4cb9c"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "bytemuck",
  "encase",
  "futures",
@@ -2314,9 +2489,9 @@ dependencies = [
 
 [[package]]
 name = "jsonrpc"
-version = "0.16.0"
+version = "0.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34efde8d2422fb79ed56db1d3aea8fa5b583351d15a26770cdee2f88813dd702"
+checksum = "a26d9104d516092f092d97448787505881fdb6518293b2d6500bf9c180c839dd"
 dependencies = [
  "base64 0.13.1",
  "minreq",
@@ -2325,6 +2500,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "k256"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b"
+dependencies = [
+ "cfg-if",
+ "ecdsa",
+ "elliptic-curve",
+ "once_cell",
+ "sha2",
+ "signature",
+]
+
+[[package]]
 name = "kamadak-exif"
 version = "0.5.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2419,9 +2608,9 @@ dependencies = [
 
 [[package]]
 name = "ledger_bitcoin_client"
-version = "0.3.2"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53b3850bd03537874d58c09dcdd15cfab272b3e9d3381e57843b4f9e1c9ceae7"
+checksum = "8606a9c7375fb139e68fc1ca7cf9c6709566eeca448ff33e37632d8a4302eefe"
 dependencies = [
  "async-trait",
  "bitcoin",
@@ -2430,8 +2619,8 @@ dependencies = [
 
 [[package]]
 name = "liana"
-version = "4.0.0"
-source = "git+https://github.com/wizardsardine/liana?branch=4.x#1e2fba15caac5bcbafac9248ec4bf01b3123ccd6"
+version = "5.0.0"
+source = "git+https://github.com/wizardsardine/liana?branch=5.x#9772c9e5d3035696785b296b41fda9bc8be20518"
 dependencies = [
  "backtrace",
  "bdk_coin_select",
@@ -2439,7 +2628,7 @@ dependencies = [
  "dirs 5.0.0",
  "fern",
  "getrandom",
- "jsonrpc 0.16.0",
+ "jsonrpc 0.17.0",
  "log",
  "miniscript",
  "rdrand",
@@ -2451,11 +2640,11 @@ dependencies = [
 
 [[package]]
 name = "liana_gui"
-version = "4.0.0"
+version = "5.0.0"
 dependencies = [
  "async-hwi",
  "backtrace",
- "base64 0.13.1",
+ "base64 0.21.6",
  "bitcoin_hashes 0.12.0",
  "chrono",
  "dirs 3.0.2",
@@ -2515,9 +2704,9 @@ checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
 
 [[package]]
 name = "libsqlite3-sys"
-version = "0.24.2"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14"
+checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
 dependencies = [
  "cc",
  "pkg-config",
@@ -2711,7 +2900,7 @@ version = "0.24.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "block",
  "core-graphics-types",
  "foreign-types 0.3.2",
@@ -2733,13 +2922,13 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniscript"
-version = "10.0.0"
+version = "11.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1eb102b66b2127a872dbcc73095b7b47aeb9d92f7b03c2b2298253ffc82c7594"
+checksum = "86a23dd3ad145a980e231185d114399f25a0a307d2cd918010ddda6334323df9"
 dependencies = [
+ "bech32",
  "bitcoin",
- "bitcoin-private",
- "hashbrown 0.11.2",
+ "bitcoin-internals",
  "serde",
 ]
 
@@ -2807,7 +2996,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5eafe22a23b797c9bc227c6c896419b26b5bb88fa903417a3adaed08778850d5"
 dependencies = [
  "bit-set",
- "bitflags",
+ "bitflags 1.3.2",
  "codespan-reporting",
  "hexf-parse",
  "indexmap 1.9.3",
@@ -2835,7 +3024,7 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "jni-sys",
  "ndk-sys",
  "num_enum",
@@ -2893,7 +3082,7 @@ version = "0.22.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cc",
  "cfg-if",
  "libc",
@@ -2906,7 +3095,7 @@ version = "0.24.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "libc",
  "memoffset 0.6.5",
@@ -2919,7 +3108,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
 dependencies = [
  "autocfg",
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "libc",
  "memoffset 0.6.5",
@@ -2931,7 +3120,7 @@ version = "0.26.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "libc",
  "memoffset 0.7.1",
@@ -3112,9 +3301,9 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.17.1"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "opaque-debug"
@@ -3358,6 +3547,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
+name = "pkcs8"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+dependencies = [
+ "der",
+ "spki",
+]
+
+[[package]]
 name = "pkg-config"
 version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3375,7 +3574,7 @@ version = "0.17.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "crc32fast",
  "flate2",
  "miniz_oxide",
@@ -3540,7 +3739,7 @@ dependencies = [
  "itertools",
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -3683,7 +3882,7 @@ version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
@@ -3692,7 +3891,7 @@ version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
@@ -3735,7 +3934,7 @@ version = "0.11.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1"
 dependencies = [
- "base64 0.21.0",
+ "base64 0.21.6",
  "bytes",
  "encoding_rs",
  "futures-core",
@@ -3788,6 +3987,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "rfc6979"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+dependencies = [
+ "hmac",
+ "subtle",
+]
+
+[[package]]
 name = "rgb"
 version = "0.8.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3835,16 +4044,15 @@ dependencies = [
 
 [[package]]
 name = "rusqlite"
-version = "0.27.0"
+version = "0.30.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85127183a999f7db96d1a976a309eebbfb6ea3b0b400ddd8340190129de6eb7a"
+checksum = "a78046161564f5e7cd9008aff3b2990b3850dc8e0349119b98e8f251e099f24d"
 dependencies = [
- "bitflags",
+ "bitflags 2.4.2",
  "fallible-iterator",
  "fallible-streaming-iterator",
  "hashlink",
  "libsqlite3-sys",
- "memchr",
  "smallvec",
 ]
 
@@ -3885,7 +4093,7 @@ version = "0.37.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f79bef90eb6d984c72722595b5b1348ab39275a5e5123faca6863bf07d75a4e0"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "errno",
  "io-lifetimes",
  "libc",
@@ -3911,7 +4119,7 @@ version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
 dependencies = [
- "base64 0.21.0",
+ "base64 0.21.6",
 ]
 
 [[package]]
@@ -3930,7 +4138,7 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "162bdf42e261bee271b3957691018634488084ef577dddeb6420a9684cab2a6a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "bytemuck",
  "smallvec",
  "ttf-parser",
@@ -3996,21 +4204,35 @@ dependencies = [
 ]
 
 [[package]]
+name = "sec1"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+dependencies = [
+ "base16ct",
+ "der",
+ "generic-array",
+ "pkcs8",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
 name = "secp256k1"
-version = "0.27.0"
+version = "0.28.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f"
+checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27"
 dependencies = [
- "bitcoin_hashes 0.12.0",
+ "bitcoin_hashes 0.13.0",
  "secp256k1-sys",
  "serde",
 ]
 
 [[package]]
 name = "secp256k1-sys"
-version = "0.8.1"
+version = "0.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e"
+checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb"
 dependencies = [
  "cc",
 ]
@@ -4038,7 +4260,7 @@ checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -4072,7 +4294,7 @@ checksum = "aab92efb5cf60ad310548bc3f16fa6b0d950019cb7ed8ff41968c3d03721cf12"
 dependencies = [
  "CoreFoundation-sys",
  "IOKit-sys",
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "libudev",
  "mach 0.3.2",
@@ -4142,6 +4364,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "signature"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
+dependencies = [
+ "digest",
+ "rand_core",
+]
+
+[[package]]
 name = "simd-adler32"
 version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4192,7 +4424,7 @@ version = "0.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "calloop",
  "dlib",
  "lazy_static",
@@ -4268,11 +4500,21 @@ version = "0.2.0+1.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "num-traits",
 ]
 
 [[package]]
+name = "spki"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
+dependencies = [
+ "base64ct",
+ "der",
+]
+
+[[package]]
 name = "stable_deref_trait"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4360,9 +4602,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.29"
+version = "2.0.43"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
+checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -4419,7 +4661,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -4554,7 +4796,7 @@ checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
@@ -4815,7 +5057,7 @@ version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "63b6bb4e62619d9f68aa2d8a823fea2bff302340a1f2d45c264d5b0be170832e"
 dependencies = [
- "base64 0.21.0",
+ "base64 0.21.6",
  "data-url",
  "flate2",
  "imagesize",
@@ -4908,7 +5150,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
  "wasm-bindgen-shared",
 ]
 
@@ -4942,7 +5184,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -4974,7 +5216,7 @@ version = "0.29.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "downcast-rs",
  "libc",
  "nix 0.24.3",
@@ -5023,7 +5265,7 @@ version = "0.29.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "wayland-client",
  "wayland-commons",
  "wayland-scanner",
@@ -5105,7 +5347,7 @@ checksum = "7131408d940e335792645a98f03639573b0480e9e2e7cddbbab74f7c6d9f3fff"
 dependencies = [
  "arrayvec 0.7.4",
  "bit-vec",
- "bitflags",
+ "bitflags 1.3.2",
  "codespan-reporting",
  "fxhash",
  "log",
@@ -5130,7 +5372,7 @@ dependencies = [
  "arrayvec 0.7.4",
  "ash",
  "bit-set",
- "bitflags",
+ "bitflags 1.3.2",
  "block",
  "core-graphics-types",
  "d3d12",
@@ -5168,7 +5410,7 @@ version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32444e121b0bd00cb02c0de32fde457a9491bd44e03e7a5db6df9b1da2f6f110"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "js-sys",
  "web-sys",
 ]
@@ -5455,7 +5697,7 @@ version = "0.27.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cocoa",
  "core-foundation",
  "core-graphics",
@@ -5535,9 +5777,9 @@ dependencies = [
 
 [[package]]
 name = "x25519-dalek"
-version = "2.0.0"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96"
+checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"
 dependencies = [
  "curve25519-dalek",
  "rand_core",
@@ -5572,6 +5814,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd"
 
 [[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.43",
+]
+
+[[package]]
 name = "zeroize"
 version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5588,7 +5850,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.29",
+ "syn 2.0.43",
 ]
 
 [[package]]
diff --git a/pkgs/by-name/li/liana/package.nix b/pkgs/by-name/li/liana/package.nix
index 8082161ce930b..f51e29c0eb897 100644
--- a/pkgs/by-name/li/liana/package.nix
+++ b/pkgs/by-name/li/liana/package.nix
@@ -32,19 +32,19 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "liana";
-  version = "4.0";
+  version = "5.0";
 
   src = fetchFromGitHub {
     owner = "wizardsardine";
-    repo = pname;
+    repo = "liana";
     rev = "v${version}";
-    hash = "sha256-aeNbPtzS8QhZ+d/HC9/Nx1GvIWsCrjUrMqghIspt2+o=";
+    hash = "sha256-RkZ2HSN7IjwN3tD0UhpMeQeqkb+Y79kSWnjJZ5KPbQk=";
   };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "liana-4.0.0" = "sha256-GT5/HlFU+Cf/Q5aQoT6ldZ+f+7I+S3wpUbq3JAhJjz8=";
+      "liana-5.0.0" = "sha256-wePqsVpMBRP2eJZd8W05CaeesqY5g/rnr4OonmRzeeM=";
       "iced_futures-0.6.0" = "sha256-ejkAxU6DwiX1/119eA0GRapSmz7dqwx9M0uMwyDHATQ=";
     };
   };
diff --git a/pkgs/by-name/li/lightningcss/0001-napi-fix-build-error-in-cargo-auditable.patch b/pkgs/by-name/li/lightningcss/0001-napi-fix-build-error-in-cargo-auditable.patch
new file mode 100644
index 0000000000000..b097e506b4775
--- /dev/null
+++ b/pkgs/by-name/li/lightningcss/0001-napi-fix-build-error-in-cargo-auditable.patch
@@ -0,0 +1,16 @@
+diff --git a/napi/Cargo.toml b/napi/Cargo.toml
+index 3360a9c..86d6ba5 100644
+--- a/napi/Cargo.toml
++++ b/napi/Cargo.toml
+@@ -10,7 +10,7 @@ edition = "2021"
+ [features]
+ default = []
+ visitor = ["lightningcss/visitor"]
+-bundler = ["dep:crossbeam-channel", "dep:rayon"]
++bundler = ["dep:crossbeam-channel", "rayon"]
+ 
+ [dependencies]
+ serde = { version = "1.0.123", features = ["derive"] }
+-- 
+2.44.0
+
diff --git a/pkgs/by-name/li/lightningcss/package.nix b/pkgs/by-name/li/lightningcss/package.nix
index 6388413bd43bc..598a6033c37fa 100644
--- a/pkgs/by-name/li/lightningcss/package.nix
+++ b/pkgs/by-name/li/lightningcss/package.nix
@@ -6,16 +6,23 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "lightningcss";
-  version = "1.24.0";
+  version = "1.24.1";
 
   src = fetchFromGitHub {
     owner = "parcel-bundler";
     repo = "lightningcss";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ai6zvLR5w2AarjZIWMPoDsU1Dr5kvREgL6oyg6TF+TU=";
+    hash = "sha256-HRuL7zwpN2e51+/Ltvif+eh+WBss/FtHCOlJfa/eVdE=";
   };
 
-  cargoHash = "sha256-HHuj7uAqipPtbjkOsxxMq+JWXww2vUDTNGgnHd3UY3o=";
+  cargoHash = "sha256-HavdTNaLTGctePa890dy/jGlXZXXZu1QFeFJOpjOiME=";
+
+  patches = [
+    # Backport fix for build error for lightningcss-napi
+    # see https://github.com/parcel-bundler/lightningcss/pull/713
+    # FIXME: remove when merged upstream
+    ./0001-napi-fix-build-error-in-cargo-auditable.patch
+  ];
 
   buildFeatures = [
     "cli"
@@ -35,7 +42,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://lightningcss.dev/";
     changelog = "https://github.com/parcel-bundler/lightningcss/releases/tag/v${version}";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ toastal ];
+    maintainers = with maintainers; [ johnrtitor toastal ];
     mainProgram = "lightningcss";
     # never built on aarch64-linux since first introduction in nixpkgs
     broken = stdenv.isLinux && stdenv.isAarch64;
diff --git a/pkgs/by-name/li/limine/package.nix b/pkgs/by-name/li/limine/package.nix
index cb1beb378a7bf..52a6ba51c2f49 100644
--- a/pkgs/by-name/li/limine/package.nix
+++ b/pkgs/by-name/li/limine/package.nix
@@ -12,7 +12,7 @@
 }:
 
 let
-  version = "7.3.0";
+  version = "7.3.1";
 in
 # The output of the derivation is a tool to create bootable images using Limine
 # as bootloader for various platforms and corresponding binary and helper files.
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
   # Packaging that in Nix is very cumbersome.
   src = fetchurl {
     url = "https://github.com/limine-bootloader/limine/releases/download/v${version}/limine-${version}.tar.gz";
-    sha256 = "sha256-iPi6u3iZOJfVRERrJVgH6q16aANnSGgBL5AtNuANrao=";
+    sha256 = "sha256-xlOBBb281W9QT5Fv2Hgw/eyh7K3oyaNY1yU6WktbFro=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ll/llama-cpp/package.nix b/pkgs/by-name/ll/llama-cpp/package.nix
index 4851a5e680988..f5214b8c4ecb8 100644
--- a/pkgs/by-name/ll/llama-cpp/package.nix
+++ b/pkgs/by-name/ll/llama-cpp/package.nix
@@ -72,13 +72,13 @@ let
 in
 effectiveStdenv.mkDerivation (finalAttrs: {
   pname = "llama-cpp";
-  version = "2568";
+  version = "2636";
 
   src = fetchFromGitHub {
     owner = "ggerganov";
     repo = "llama.cpp";
     rev = "refs/tags/b${finalAttrs.version}";
-    hash = "sha256-yBlLChtzfAi2TAGUO1zdnpHCvi5YDCzjdflQgTWh98Y=";
+    hash = "sha256-FAU9Kv8cfFmx2gCx5oFgPmBQnwVuhkqlxIsB1yWDHUY=";
   };
 
   postPatch = ''
diff --git a/pkgs/by-name/lo/local-ai/package.nix b/pkgs/by-name/lo/local-ai/package.nix
index 5e282d6380899..7142a529b4865 100644
--- a/pkgs/by-name/lo/local-ai/package.nix
+++ b/pkgs/by-name/lo/local-ai/package.nix
@@ -1,5 +1,8 @@
-{ stdenv
+{ config
+, callPackages
+, stdenv
 , lib
+, addDriverRunpath
 , fetchpatch
 , fetchFromGitHub
 , protobuf
@@ -12,8 +15,6 @@
 , pkg-config
 , buildGoModule
 , makeWrapper
-, runCommand
-, testers
 
   # apply feature parameter names according to
   # https://github.com/NixOS/rfcs/pull/169
@@ -21,17 +22,14 @@
   # CPU extensions
 , enable_avx ? true
 , enable_avx2 ? true
-, enable_avx512 ? false
+, enable_avx512 ? stdenv.hostPlatform.avx512Support
 , enable_f16c ? true
 , enable_fma ? true
 
-, with_tinydream ? false
-, ncnn
-
 , with_openblas ? false
 , openblas
 
-, with_cublas ? false
+, with_cublas ? config.cudaSupport
 , cudaPackages
 
 , with_clblas ? false
@@ -39,25 +37,19 @@
 , ocl-icd
 , opencl-headers
 
-, with_stablediffusion ? false
+, with_tinydream ? false # do not compile with cublas
+, ncnn
+
+, with_stablediffusion ? true
 , opencv
 
-, with_tts ? false
+, with_tts ? true
 , onnxruntime
 , sonic
 , spdlog
 , fmt
 , espeak-ng
 , piper-tts
-
-  # tests
-, fetchzip
-, fetchurl
-, writeText
-, writeTextFile
-, symlinkJoin
-, linkFarmFromDrvs
-, jq
 }:
 let
   BUILD_TYPE =
@@ -67,13 +59,7 @@ let
     else if with_clblas then "clblas"
     else "";
 
-  typedBuiltInputs =
-    lib.optionals with_cublas
-      [ cudaPackages.cudatoolkit cudaPackages.cuda_cudart ]
-    ++ lib.optionals with_clblas
-      [ clblast ocl-icd opencl-headers ]
-    ++ lib.optionals with_openblas
-      [ openblas.dev ];
+  inherit (cudaPackages) libcublas cuda_nvcc cuda_cccl cuda_cudart cudatoolkit;
 
   go-llama-ggml = effectiveStdenv.mkDerivation {
     name = "go-llama-ggml";
@@ -88,9 +74,18 @@ let
       "libbinding.a"
       "BUILD_TYPE=${BUILD_TYPE}"
     ];
-    buildInputs = typedBuiltInputs;
+
+    buildInputs = [ ]
+      ++ lib.optionals with_clblas [ clblast ocl-icd opencl-headers ]
+      ++ lib.optionals with_openblas [ openblas.dev ];
+
+    nativeBuildInputs = [ cmake ]
+      # backward compatiblity with nixos-23.11
+      # use cuda_nvcc after release of nixos-24.05
+      ++ lib.optionals with_cublas [ cudatoolkit ];
+
     dontUseCmakeConfigure = true;
-    nativeBuildInputs = [ cmake ];
+
     installPhase = ''
       mkdir $out
       tar cf - --exclude=build --exclude=CMakeFiles --exclude="*.o" . \
@@ -103,8 +98,8 @@ let
     src = fetchFromGitHub {
       owner = "ggerganov";
       repo = "llama.cpp";
-      rev = "b06c16ef9f81d84da520232c125d4d8a1d273736";
-      hash = "sha256-t1AIx/Ir5RhasjblH4BSpGOXVvO84SJPSqa7rXWj6b4=";
+      rev = "1b67731e184e27a465b8c5476061294a4af668ea";
+      hash = "sha256-0WWbsklpW6HhFRkvWpYh8Lhi8VIansS/zmyIKNQRkIs=";
       fetchSubmodules = true;
     };
     postPatch = prev.postPatch + ''
@@ -166,7 +161,6 @@ let
     patches = [ ];
     nativeBuildInputs = [ cmake ];
     cmakeFlags = (self.cmakeFlags or [ ]) ++ [
-      # -DCMAKE_C_FLAGS="-D_FILE_OFFSET_BITS=64"
       (lib.cmakeBool "BUILD_SHARED_LIBS" true)
       (lib.cmakeBool "USE_ASYNC" false)
       (lib.cmakeBool "USE_MBROLA" false)
@@ -258,13 +252,20 @@ let
     src = fetchFromGitHub {
       owner = "ggerganov";
       repo = "whisper.cpp";
-      rev = "1558ec5a16cb2b2a0bf54815df1d41f83dc3815b";
-      hash = "sha256-UAqWU3kvkHM+fV+T6gFVsAKuOG6N4FoFgTKGUptwjmE=";
+      rev = "8f253ef3af1c62c04316ba4afa7145fc4d701a8c";
+      hash = "sha256-yHHjhpQIn99A/hqFwAb7TfTf4Q9KnKat93zyXS70bT8=";
     };
-    nativeBuildInputs = [ cmake pkg-config ];
-    buildInputs = typedBuiltInputs;
+
+    nativeBuildInputs = [ cmake pkg-config ]
+      ++ lib.optionals with_cublas [ cuda_nvcc ];
+
+    buildInputs = [ ]
+      ++ lib.optionals with_cublas [ cuda_cccl cuda_cudart libcublas ]
+      ++ lib.optionals with_clblas [ clblast ocl-icd opencl-headers ]
+      ++ lib.optionals with_openblas [ openblas.dev ];
+
     cmakeFlags = [
-      (lib.cmakeBool "WHISPER_CUBLAS" with_cublas)
+      (lib.cmakeBool "WHISPER_CUDA" with_cublas)
       (lib.cmakeBool "WHISPER_CLBLAST" with_clblas)
       (lib.cmakeBool "WHISPER_OPENBLAS" with_openblas)
       (lib.cmakeBool "WHISPER_NO_AVX" (!enable_avx))
@@ -334,19 +335,19 @@ let
     ];
   });
 
-  go-tiny-dream = stdenv.mkDerivation {
+  go-tiny-dream = effectiveStdenv.mkDerivation {
     name = "go-tiny-dream";
     src = fetchFromGitHub {
       owner = "M0Rf30";
       repo = "go-tiny-dream";
-      rev = "772a9c0d9aaf768290e63cca3c904fe69faf677a";
-      hash = "sha256-r+wzFIjaI6cxAm/eXN3q8LRZZz+lE5EA4lCTk5+ZnIY=";
+      rev = "22a12a4bc0ac5455856f28f3b771331a551a4293";
+      hash = "sha256-DAVHD6E0OKHf4C2ldoI0Mm7813DIrmWFONUhSCQPCfc=";
       fetchSubmodules = true;
     };
     postUnpack = ''
       rm -rf source/ncnn
-      mkdir -p source/ncnn/build
-      cp -r --no-preserve=mode ${go-tiny-dream-ncnn} source/ncnn/build/install
+      mkdir -p source/ncnn/build/src
+      cp -r --no-preserve=mode ${go-tiny-dream-ncnn}/lib/. ${go-tiny-dream-ncnn}/include/. source/ncnn/build/src
     '';
     buildFlags = [ "libtinydream.a" ];
     installPhase = ''
@@ -370,18 +371,18 @@ let
       stdenv;
 
   pname = "local-ai";
-  version = "2.11.0";
+  version = "2.12.3";
   src = fetchFromGitHub {
     owner = "go-skynet";
     repo = "LocalAI";
     rev = "v${version}";
-    hash = "sha256-Sqo4NOggUNb1ZemT9TRknBmz8dThe/X43R+4JFfQJ4M=";
+    hash = "sha256-/Q0t5OozpgqmjUOYHvVAj1k7VnIixfOS8gNAguuu6p0=";
   };
 
   self = buildGoModule.override { stdenv = effectiveStdenv; } {
     inherit pname version src;
 
-    vendorHash = "sha256-3bOr8DnAjTzOpVDB5wmlPxECNteWw3tI0yc1f2Wt4y0=";
+    vendorHash = "sha256-8Hu1y/PK21twnB7D22ltslFFzRrsB8d1R2hkgIFB/XY=";
 
     env.NIX_CFLAGS_COMPILE = lib.optionalString with_stablediffusion " -isystem ${opencv}/include/opencv4";
 
@@ -407,11 +408,15 @@ let
       ''
     ;
 
-    buildInputs = typedBuiltInputs
-      ++ lib.optional with_stablediffusion go-stable-diffusion.buildInputs
-      ++ lib.optional with_tts go-piper.buildInputs;
+    buildInputs = [ ]
+      ++ lib.optionals with_cublas [ libcublas ]
+      ++ lib.optionals with_clblas [ clblast ocl-icd opencl-headers ]
+      ++ lib.optionals with_openblas [ openblas.dev ]
+      ++ lib.optionals with_stablediffusion go-stable-diffusion.buildInputs
+      ++ lib.optionals with_tts go-piper.buildInputs;
 
-    nativeBuildInputs = [ makeWrapper ];
+    nativeBuildInputs = [ makeWrapper ]
+      ++ lib.optionals with_cublas [ cuda_nvcc ];
 
     enableParallelBuilding = false;
 
@@ -431,7 +436,7 @@ let
       "VERSION=v${version}"
       "BUILD_TYPE=${BUILD_TYPE}"
     ]
-    ++ lib.optional with_cublas "CUDA_LIBPATH=${cudaPackages.cuda_cudart}/lib"
+    ++ lib.optional with_cublas "CUDA_LIBPATH=${cuda_cudart}/lib"
     ++ lib.optional with_tts "PIPER_CGO_CXXFLAGS=-DSPDLOG_FMT_EXTERNAL=1";
 
     buildPhase = ''
@@ -465,19 +470,19 @@ let
 
     # patching rpath with patchelf doens't work. The execuable
     # raises an segmentation fault
-    postFixup = ''
-      wrapProgram $out/bin/${pname} \
-    '' + lib.optionalString with_cublas ''
-      --prefix LD_LIBRARY_PATH : "${cudaPackages.libcublas}/lib:${cudaPackages.cuda_cudart}/lib:/run/opengl-driver/lib" \
-    '' + lib.optionalString with_clblas ''
-      --prefix LD_LIBRARY_PATH : "${clblast}/lib:${ocl-icd}/lib" \
-    '' + lib.optionalString with_openblas ''
-      --prefix LD_LIBRARY_PATH : "${openblas}/lib" \
-    '' + lib.optionalString with_tts ''
-      --prefix LD_LIBRARY_PATH : "${piper-phonemize}/lib" \
-    '' + ''
-      --prefix PATH : "${ffmpeg}/bin"
-    '';
+    postFixup =
+      let
+        LD_LIBRARY_PATH = [ ]
+          ++ lib.optionals with_cublas [ (lib.getLib libcublas) cuda_cudart addDriverRunpath.driverLink ]
+          ++ lib.optionals with_clblas [ clblast ocl-icd ]
+          ++ lib.optionals with_openblas [ openblas ]
+          ++ lib.optionals with_tts [ piper-phonemize ];
+      in
+      ''
+        wrapProgram $out/bin/${pname} \
+        --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath LD_LIBRARY_PATH}" \
+        --prefix PATH : "${ffmpeg}/bin"
+      '';
 
     passthru.local-packages = {
       inherit
@@ -492,84 +497,7 @@ let
         with_tinydream with_clblas;
     };
 
-    passthru.tests = {
-      version = testers.testVersion {
-        package = self;
-        version = "v" + version;
-      };
-      health =
-        let
-          port = "8080";
-        in
-        testers.runNixOSTest {
-          name = pname + "-health";
-          nodes.machine = {
-            systemd.services.local-ai = {
-              wantedBy = [ "multi-user.target" ];
-              serviceConfig.ExecStart = "${self}/bin/local-ai --debug --localai-config-dir . --address :${port}";
-            };
-          };
-          testScript = ''
-            machine.wait_for_open_port(${port})
-            machine.succeed("curl -f http://localhost:${port}/readyz")
-          '';
-        };
-    }
-    // lib.optionalAttrs with_tts {
-      # https://localai.io/features/text-to-audio/#piper
-      tts =
-        let
-          port = "8080";
-          voice-en-us = fetchzip {
-            url = "https://github.com/rhasspy/piper/releases/download/v0.0.2/voice-en-us-danny-low.tar.gz";
-            hash = "sha256-5wf+6H5HeQY0qgdqnAG1vSqtjIFM9lXH53OgouuPm0M=";
-            stripRoot = false;
-          };
-          ggml-tiny-en = fetchurl {
-            url = "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.en-q5_1.bin";
-            hash = "sha256-x3xXZvHO8JtrfUfyG1Rsvd1BV4hrO11tT3CekeZsfCs=";
-          };
-          whisper-en = {
-            name = "whisper-en";
-            backend = "whisper";
-            parameters.model = ggml-tiny-en.name;
-          };
-          models = symlinkJoin {
-            name = "models";
-            paths = [
-              voice-en-us
-              (linkFarmFromDrvs "whisper-en" [
-                (writeText "whisper-en.yaml" (builtins.toJSON whisper-en))
-                ggml-tiny-en
-              ])
-            ];
-          };
-        in
-        testers.runNixOSTest {
-          name = pname + "-tts";
-          nodes.machine = {
-            systemd.services.local-ai = {
-              wantedBy = [ "multi-user.target" ];
-              serviceConfig.ExecStart = "${self}/bin/local-ai --debug --models-path ${models} --localai-config-dir . --address :${port}";
-            };
-          };
-          testScript =
-            let
-              request = {
-                model = "en-us-danny-low.onnx";
-                backend = "piper";
-                input = "Hello, how are you?";
-              };
-            in
-            ''
-              machine.wait_for_open_port(${port})
-              machine.succeed("curl -f http://localhost:${port}/readyz")
-              machine.succeed("curl -f http://localhost:${port}/tts --json @${writeText "request.json" (builtins.toJSON request)} --output out.wav")
-              machine.succeed("curl -f http://localhost:${port}/v1/audio/transcriptions --header 'Content-Type: multipart/form-data' --form file=@out.wav --form model=${whisper-en.name} --output transcription.json")
-              machine.succeed("${jq}/bin/jq --exit-status 'debug | .segments | first.text == \"${request.input}\"' transcription.json")
-            '';
-        };
-    };
+    passthru.tests = callPackages ./tests.nix { inherit self; };
 
     meta = with lib; {
       description = "OpenAI alternative to run local LLMs, image and audio generation";
diff --git a/pkgs/by-name/lo/local-ai/tests.nix b/pkgs/by-name/lo/local-ai/tests.nix
new file mode 100644
index 0000000000000..82d1b775dab82
--- /dev/null
+++ b/pkgs/by-name/lo/local-ai/tests.nix
@@ -0,0 +1,160 @@
+{ self
+, lib
+, testers
+, fetchzip
+, fetchurl
+, writers
+, symlinkJoin
+, linkFarmFromDrvs
+, jq
+}:
+{
+  version = testers.testVersion {
+    package = self;
+    version = "v" + self.version;
+  };
+
+  health =
+    let
+      port = "8080";
+    in
+    testers.runNixOSTest {
+      name = self.name + "-health";
+      nodes.machine = {
+        systemd.services.local-ai = {
+          wantedBy = [ "multi-user.target" ];
+          serviceConfig.ExecStart = "${self}/bin/local-ai --debug --localai-config-dir . --address :${port}";
+        };
+      };
+      testScript = ''
+        machine.wait_for_open_port(${port})
+        machine.succeed("curl -f http://localhost:${port}/readyz")
+      '';
+    };
+
+  # https://localai.io/docs/getting-started/manual/
+  llama =
+    let
+      port = "8080";
+      gguf = fetchurl {
+        url = "https://huggingface.co/TheBloke/Luna-AI-Llama2-Uncensored-GGUF/resolve/main/luna-ai-llama2-uncensored.Q4_K_M.gguf";
+        sha256 = "6a9dc401c84f0d48996eaa405174999c3a33bf12c2bfd8ea4a1e98f376de1f15";
+      };
+      models = linkFarmFromDrvs "models" [
+        gguf
+      ];
+    in
+    testers.runNixOSTest {
+      name = self.name + "-llama";
+      nodes.machine =
+        let
+          cores = 4;
+        in
+        {
+          virtualisation = {
+            inherit cores;
+            memorySize = 8192;
+          };
+          systemd.services.local-ai = {
+            wantedBy = [ "multi-user.target" ];
+            serviceConfig.ExecStart = "${self}/bin/local-ai --debug --threads ${toString cores} --models-path ${models} --localai-config-dir . --address :${port}";
+          };
+        };
+      testScript =
+        let
+          # https://localai.io/features/text-generation/#chat-completions
+          request-chat-completions = {
+            model = gguf.name;
+            messages = [{ role = "user"; content = "Say this is a test!"; }];
+            temperature = 0.7;
+          };
+          # https://localai.io/features/text-generation/#edit-completions
+          request-edit-completions = {
+            model = gguf.name;
+            instruction = "rephrase";
+            input = "Black cat jumped out of the window";
+            temperature = 0.7;
+          };
+          # https://localai.io/features/text-generation/#completions
+          request-completions = {
+            model = gguf.name;
+            prompt = "A long time ago in a galaxy far, far away";
+            temperature = 0.7;
+          };
+        in
+        ''
+          machine.wait_for_open_port(${port})
+          machine.succeed("curl -f http://localhost:${port}/readyz")
+          machine.succeed("curl -f http://localhost:${port}/v1/models --output models.json")
+          machine.succeed("${jq}/bin/jq --exit-status 'debug | .data[].id == \"${gguf.name}\"' models.json")
+          machine.succeed("curl -f http://localhost:${port}/v1/chat/completions --json @${writers.writeJSON "request-chat-completions.json" request-chat-completions} --output chat-completions.json")
+          machine.succeed("${jq}/bin/jq --exit-status 'debug | .object == \"chat.completion\"' chat-completions.json")
+          machine.succeed("curl -f http://localhost:${port}/v1/edits --json @${writers.writeJSON "request-edit-completions.json" request-edit-completions} --output edit-completions.json")
+          machine.succeed("${jq}/bin/jq --exit-status 'debug | .object == \"edit\"' edit-completions.json")
+          machine.succeed("curl -f http://localhost:${port}/v1/completions --json @${writers.writeJSON "request-completions.json" request-completions} --output completions.json")
+          machine.succeed("${jq}/bin/jq --exit-status 'debug | .object ==\"text_completion\"' completions.json")
+        '';
+    };
+
+} // lib.optionalAttrs self.features.with_tts {
+  # https://localai.io/features/text-to-audio/#piper
+  tts =
+    let
+      port = "8080";
+      voice-en-us = fetchzip {
+        url = "https://github.com/rhasspy/piper/releases/download/v0.0.2/voice-en-us-danny-low.tar.gz";
+        hash = "sha256-5wf+6H5HeQY0qgdqnAG1vSqtjIFM9lXH53OgouuPm0M=";
+        stripRoot = false;
+      };
+      ggml-tiny-en = fetchurl {
+        url = "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.en-q5_1.bin";
+        hash = "sha256-x3xXZvHO8JtrfUfyG1Rsvd1BV4hrO11tT3CekeZsfCs=";
+      };
+      whisper-en = {
+        name = "whisper-en";
+        backend = "whisper";
+        parameters.model = ggml-tiny-en.name;
+      };
+      models = symlinkJoin {
+        name = "models";
+        paths = [
+          voice-en-us
+          (linkFarmFromDrvs "whisper-en" [
+            (writers.writeYAML "whisper-en.yaml" whisper-en)
+            ggml-tiny-en
+          ])
+        ];
+      };
+    in
+    testers.runNixOSTest {
+      name = self.name + "-tts";
+      nodes.machine =
+        let
+          cores = 2;
+        in
+        {
+          virtualisation = {
+            inherit cores;
+          };
+          systemd.services.local-ai = {
+            wantedBy = [ "multi-user.target" ];
+            serviceConfig.ExecStart = "${self}/bin/local-ai --debug --threads ${toString cores} --models-path ${models} --localai-config-dir . --address :${port}";
+          };
+        };
+      testScript =
+        let
+          request = {
+            model = "en-us-danny-low.onnx";
+            backend = "piper";
+            input = "Hello, how are you?";
+          };
+        in
+        ''
+          machine.wait_for_open_port(${port})
+          machine.succeed("curl -f http://localhost:${port}/readyz")
+          machine.succeed("curl -f http://localhost:${port}/tts --json @${writers.writeJSON "request.json" request} --output out.wav")
+          machine.succeed("curl -f http://localhost:${port}/v1/audio/transcriptions --header 'Content-Type: multipart/form-data' --form file=@out.wav --form model=${whisper-en.name} --output transcription.json")
+          machine.succeed("${jq}/bin/jq --exit-status 'debug | .segments | first.text == \"${request.input}\"' transcription.json")
+        '';
+    };
+}
diff --git a/pkgs/by-name/lo/loco-cli/Cargo.lock b/pkgs/by-name/lo/loco-cli/Cargo.lock
new file mode 100644
index 0000000000000..4412103734fb1
--- /dev/null
+++ b/pkgs/by-name/lo/loco-cli/Cargo.lock
@@ -0,0 +1,1606 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bstr"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+dependencies = [
+ "jobserver",
+ "libc",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "clap"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "console"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "content_inspector"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+
+[[package]]
+name = "crossterm"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
+dependencies = [
+ "bitflags 1.3.2",
+ "crossterm_winapi",
+ "libc",
+ "mio",
+ "parking_lot",
+ "signal-hook",
+ "signal-hook-mio",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dunce"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+
+[[package]]
+name = "either"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[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.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "eyre"
+version = "0.6.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"
+dependencies = [
+ "indenter",
+ "once_cell",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
+
+[[package]]
+name = "filetime"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "windows-sys 0.52.0",
+]
+
+[[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 = "fs_extra"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "git2"
+version = "0.18.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70"
+dependencies = [
+ "bitflags 2.5.0",
+ "libc",
+ "libgit2-sys",
+ "log",
+ "openssl-probe",
+ "openssl-sys",
+ "url",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "globset"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "log",
+ "regex-automata 0.4.6",
+ "regex-syntax 0.8.3",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "humantime-serde"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c"
+dependencies = [
+ "humantime",
+ "serde",
+]
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "ignore"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
+dependencies = [
+ "crossbeam-deque",
+ "globset",
+ "log",
+ "memchr",
+ "regex-automata 0.4.6",
+ "same-file",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "indenter"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "insta"
+version = "1.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3eab73f58e59ca6526037208f0e98851159ec1633cf17b6cd2e1f2c3fd5d53cc"
+dependencies = [
+ "console",
+ "lazy_static",
+ "linked-hash-map",
+ "pest",
+ "pest_derive",
+ "regex",
+ "serde",
+ "similar",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "jobserver"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "libgit2-sys"
+version = "0.16.2+1.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8"
+dependencies = [
+ "cc",
+ "libc",
+ "libssh2-sys",
+ "libz-sys",
+ "openssl-sys",
+ "pkg-config",
+]
+
+[[package]]
+name = "libssh2-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
+dependencies = [
+ "cc",
+ "libc",
+ "libz-sys",
+ "openssl-sys",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "libz-sys"
+version = "1.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+
+[[package]]
+name = "lock_api"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "loco-cli"
+version = "0.2.6"
+dependencies = [
+ "cfg-if",
+ "clap",
+ "eyre",
+ "fs_extra",
+ "git2",
+ "ignore",
+ "insta",
+ "lazy_static",
+ "rand",
+ "regex",
+ "requestty",
+ "serde",
+ "serde_regex",
+ "serde_yaml",
+ "tracing",
+ "tracing-subscriber",
+ "tree-fs",
+ "trycmd",
+]
+
+[[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "log",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "normalize-line-endings"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[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.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "os_pipe"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "pest"
+version = "2.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95"
+dependencies = [
+ "memchr",
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.6",
+ "regex-syntax 0.8.3",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.3",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
+
+[[package]]
+name = "requestty"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa883a1f3e288e65187f653e6ba2e84fdf810fe02f4c8074f9c723d1aa26e2ae"
+dependencies = [
+ "requestty-ui",
+ "shell-words",
+ "smallvec",
+ "tempfile",
+ "winsplit",
+]
+
+[[package]]
+name = "requestty-ui"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7549bab39cf982b629b68e7ec191a5574e85086e95c0ebe514c02d3b42ffe225"
+dependencies = [
+ "bitflags 1.3.2",
+ "crossterm",
+ "once_cell",
+ "textwrap",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
+dependencies = [
+ "bitflags 2.5.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "serde"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_regex"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf"
+dependencies = [
+ "regex",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.9.34+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
+dependencies = [
+ "indexmap",
+ "itoa",
+ "ryu",
+ "serde",
+ "unsafe-libyaml",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shell-words"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-mio"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+dependencies = [
+ "libc",
+ "mio",
+ "signal-hook",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "similar"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640"
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "smawk"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
+
+[[package]]
+name = "snapbox"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b831b6e80fbcd2889efa75b185d24005f85981431495f995292b25836519d84"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "content_inspector",
+ "dunce",
+ "filetime",
+ "libc",
+ "normalize-line-endings",
+ "os_pipe",
+ "similar",
+ "snapbox-macros",
+ "tempfile",
+ "wait-timeout",
+ "walkdir",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "snapbox-macros"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1c4b838b05d15ab22754068cb73500b2f3b07bf09d310e15b27f88160f1de40"
+dependencies = [
+ "anstream",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "syn"
+version = "2.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d"
+dependencies = [
+ "smawk",
+ "unicode-linebreak",
+ "unicode-width",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "tree-fs"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7bcfe8bf2a763a3dcdf343c6ec09e69aeb46b6b8feea2415204f59ccbb42362"
+dependencies = [
+ "rand",
+ "serde",
+ "serde_yaml",
+ "thiserror",
+]
+
+[[package]]
+name = "trycmd"
+version = "0.14.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d41014f614932fff67cd3b780e0eb0ecb14e698a831a0e555ef2a5137be968d5"
+dependencies = [
+ "glob",
+ "humantime",
+ "humantime-serde",
+ "rayon",
+ "serde",
+ "shlex",
+ "snapbox",
+ "toml_edit",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-linebreak"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "unsafe-libyaml"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
+
+[[package]]
+name = "url"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wait-timeout"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "winnow"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winsplit"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ab703352da6a72f35c39a533526393725640575bb211f61987a2748323ad956"
diff --git a/pkgs/by-name/lo/loco-cli/package.nix b/pkgs/by-name/lo/loco-cli/package.nix
new file mode 100644
index 0000000000000..f5a6958b276bf
--- /dev/null
+++ b/pkgs/by-name/lo/loco-cli/package.nix
@@ -0,0 +1,29 @@
+{ lib, rustPlatform, fetchFromGitHub, stdenv }:
+rustPlatform.buildRustPackage {
+  pname = "loco-cli";
+  version = "0.2.6";
+
+  src = fetchFromGitHub {
+    owner = "loco-rs";
+    repo = "loco";
+    rev = "51e0362";
+    hash = "sha256-ZiAl+Ru2ggLy7RRqQySwKRbWtGesR7ZgREIpHKrJ00Q=";
+    sparseCheckout = [ "loco-cli" ];
+  };
+
+  cargoLock.lockFile = ./Cargo.lock;
+
+  postPatch = ''
+    ln -s ${./Cargo.lock} Cargo.lock
+  '';
+
+  sourceRoot = "source/loco-cli";
+
+  meta = with lib; {
+    mainProgram = "loco";
+    description = "Loco CLI is a powerful command-line tool designed to streamline the process of generating Loco websites.";
+    homepage = "https://loco.rs";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ sebrut ];
+  };
+}
diff --git a/pkgs/by-name/lo/loksh/package.nix b/pkgs/by-name/lo/loksh/package.nix
index 01143fae7b525..f397ac95a8507 100644
--- a/pkgs/by-name/lo/loksh/package.nix
+++ b/pkgs/by-name/lo/loksh/package.nix
@@ -9,14 +9,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "loksh";
-  version = "7.4";
+  version = "7.5";
 
   src = fetchFromGitHub {
     owner = "dimkr";
     repo = "loksh";
     rev = finalAttrs.version;
     fetchSubmodules = true;
-    hash = "sha256-gQK9gq6MsKVyOikOW0sW/SbIM1K/3I8pn58P/SqzKys=";
+    hash = "sha256-4cBO1FXUnN/swwEeM2lq5RJJGmLKInMLZkz942EKy6k=";
   };
 
   outputs = [ "out" "doc" "man" ];
diff --git a/pkgs/by-name/lu/lubelogger/package.nix b/pkgs/by-name/lu/lubelogger/package.nix
index 72bef4a340af8..e7526a74b6714 100644
--- a/pkgs/by-name/lu/lubelogger/package.nix
+++ b/pkgs/by-name/lu/lubelogger/package.nix
@@ -6,13 +6,13 @@
 
 buildDotnetModule rec {
   pname = "lubelogger";
-  version = "1.2.9";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "hargata";
     repo = "lubelog";
     rev = "v${version}";
-    hash = "sha256-bzCPoWgI7JA5dEYKl2m1ZzNPXxNRAzZz1lFa7fVCkNw=";
+    hash = "sha256-L2iimh1weZ2f1mh42ahJVZLnemY3kFGK19jLyhcktjI=";
   };
 
   projectFile = "CarCareTracker.sln";
diff --git a/pkgs/by-name/lx/lxd-ui/package.nix b/pkgs/by-name/lx/lxd-ui/package.nix
index 8176366662759..e5bc293e873b3 100644
--- a/pkgs/by-name/lx/lxd-ui/package.nix
+++ b/pkgs/by-name/lx/lxd-ui/package.nix
@@ -7,22 +7,23 @@
   prefetch-yarn-deps,
   yarn,
   nixosTests,
+  nix-update-script,
 }:
 
 stdenv.mkDerivation rec {
   pname = "lxd-ui";
-  version = "0.7";
+  version = "0.8";
 
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "lxd-ui";
     rev = "refs/tags/${version}";
-    hash = "sha256-DJLkXZpParmEYHbTpl6KFC9l9y5DqzUTrC0pb2dJXI4=";
+    hash = "sha256-oD/GPm84oFXHcZ8vTUzNgQinrHwNuvpeVjsrp8ibIZY=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    hash = "sha256-ckTWE/czzvxbGOF8fsJ3W1sal7+NaHquoSjZSPjkGj4=";
+    hash = "sha256-hRZ0vbksxnUv4XMrbhP2PI94UYYzwrydJHSx+uf+MbI=";
   };
 
   nativeBuildInputs = [
@@ -60,10 +61,12 @@ stdenv.mkDerivation rec {
   '';
 
   passthru.tests.default = nixosTests.lxd.ui;
+  passthru.updateScript = nix-update-script { };
 
   meta = {
     description = "Web user interface for LXD";
     homepage = "https://github.com/canonical/lxd-ui";
+    changelog = "https://github.com/canonical/lxd-ui/releases/tag/${version}";
     license = lib.licenses.gpl3;
     maintainers = lib.teams.lxc.members;
     platforms = lib.platforms.linux;
diff --git a/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix b/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix
index c4ccfc7566b92..a8a4b2f53160b 100644
--- a/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix
+++ b/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix
@@ -68,7 +68,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
     description = "MaaAssistantArknights stripped-down version of FastDeploy";
     homepage = "https://github.com/MaaAssistantArknights/FastDeploy";
     platforms = platforms.linux;
-    license = licenses.apsl20;
+    license = licenses.asl20;
     broken = cudaSupport && stdenv.hostPlatform.system != "x86_64-linux";
   };
 })
diff --git a/pkgs/by-name/ma/makima/package.nix b/pkgs/by-name/ma/makima/package.nix
new file mode 100644
index 0000000000000..e249cc31890f3
--- /dev/null
+++ b/pkgs/by-name/ma/makima/package.nix
@@ -0,0 +1,32 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, udev
+}:
+
+rustPlatform.buildRustPackage rec{
+  pname = "makima";
+  version = "0.4.4";
+
+  src = fetchFromGitHub {
+    owner = "cyber-sushi";
+    repo = "makima";
+    rev = "v${version}";
+    hash = "sha256-3S4J4fdCn/eqgT9g0WmS5kQHr7LysBn03RzHvagm5jg=";
+  };
+
+  cargoHash = "sha256-YCs37IYiYxjh2uBZvHliDZRu68J4mXCCYpWlPHtw+0Q=";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ udev ];
+
+  meta = with lib; {
+    description = "Linux daemon to remap and create macros for keyboards, mice and controllers";
+    homepage = "https://github.com/cyber-sushi/makima";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ ByteSudoer ];
+    platforms = platforms.linux;
+    mainProgram = "makima";
+  };
+}
diff --git a/pkgs/by-name/ma/markdown-oxide/Cargo.lock b/pkgs/by-name/ma/markdown-oxide/Cargo.lock
index 151173969722d..74fc34f93894f 100644
--- a/pkgs/by-name/ma/markdown-oxide/Cargo.lock
+++ b/pkgs/by-name/ma/markdown-oxide/Cargo.lock
@@ -27,6 +27,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
 name = "anyhow"
 version = "1.0.80"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -77,12 +92,42 @@ dependencies = [
 ]
 
 [[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
 name = "bitflags"
 version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
+name = "bitflags"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+
+[[package]]
 name = "bytes"
 version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -101,6 +146,84 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
+name = "chrono"
+version = "0.4.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "wasm-bindgen",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "config"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be"
+dependencies = [
+ "async-trait",
+ "convert_case",
+ "json5",
+ "lazy_static",
+ "nom",
+ "pathdiff",
+ "ron",
+ "rust-ini",
+ "serde",
+ "serde_json",
+ "toml",
+ "yaml-rust",
+]
+
+[[package]]
+name = "const-random"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
+dependencies = [
+ "const-random-macro",
+]
+
+[[package]]
+name = "const-random-macro"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
+dependencies = [
+ "getrandom",
+ "once_cell",
+ "tiny-keccak",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
+
+[[package]]
 name = "crossbeam-channel"
 version = "0.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -144,25 +267,87 @@ dependencies = [
 ]
 
 [[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
 name = "dashmap"
 version = "5.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
 dependencies = [
  "cfg-if",
- "hashbrown",
+ "hashbrown 0.14.2",
  "lock_api",
  "once_cell",
  "parking_lot_core",
 ]
 
 [[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys",
+]
+
+[[package]]
+name = "dlv-list"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
+dependencies = [
+ "const-random",
+]
+
+[[package]]
 name = "either"
 version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
 
 [[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
 name = "form_urlencoded"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -249,6 +434,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
 name = "getrandom"
 version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -267,6 +462,12 @@ checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
 
 [[package]]
 name = "hashbrown"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
+
+[[package]]
+name = "hashbrown"
 version = "0.14.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
@@ -287,6 +488,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
 
 [[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
 name = "idna"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -297,6 +521,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.2",
+]
+
+[[package]]
 name = "itertools"
 version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -312,12 +546,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
+name = "js-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "json5"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1"
+dependencies = [
+ "pest",
+ "pest_derive",
+ "serde",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
 name = "libc"
 version = "0.2.150"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
 
 [[package]]
+name = "libredox"
+version = "0.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+dependencies = [
+ "bitflags 2.5.0",
+ "libc",
+ "redox_syscall",
+]
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
 name = "lock_api"
 version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -328,12 +605,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
 name = "lsp-types"
 version = "0.94.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c66bfd44a06ae10647fe3f8214762e9369fd4248df1350924b4ef9e770a85ea1"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "serde",
  "serde_json",
  "serde_repr",
@@ -345,6 +628,9 @@ name = "markdown-oxide"
 version = "0.1.0"
 dependencies = [
  "anyhow",
+ "chrono",
+ "config",
+ "indexmap",
  "itertools",
  "nanoid",
  "nucleo-matcher",
@@ -355,6 +641,8 @@ dependencies = [
  "ropey",
  "serde",
  "serde_json",
+ "serde_yaml",
+ "shellexpand",
  "tokio",
  "tower-lsp",
  "walkdir",
@@ -376,6 +664,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
 name = "miniz_oxide"
 version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -405,6 +699,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
 name = "nucleo-matcher"
 version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -415,6 +719,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "num-traits"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
 name = "num_cpus"
 version = "1.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -440,6 +753,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
 
 [[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "ordered-multimap"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ed8acf08e98e744e5384c8bc63ceb0364e68a6854187221c18df61c4797690e"
+dependencies = [
+ "dlv-list",
+ "hashbrown 0.13.2",
+]
+
+[[package]]
 name = "parking_lot"
 version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -459,7 +788,7 @@ dependencies = [
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets",
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
@@ -475,6 +804,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
 
 [[package]]
+name = "pest"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8"
+dependencies = [
+ "memchr",
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0d24f72393fd16ab6ac5738bc33cdb6a9aa73f8b902e8fe29cf4e67d7dd1026"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc17e2a6c7d0a492f0158d7a4bd66cc17280308bbaff78d5bef566dca35ab80"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "934cd7631c050f4674352a6e835d5f6711ffbfb9345c2fc0107155ac495ae293"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
+
+[[package]]
 name = "pin-project"
 version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -612,7 +986,18 @@ version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
 ]
 
 [[package]]
@@ -645,6 +1030,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
+name = "ron"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
+dependencies = [
+ "base64",
+ "bitflags 2.5.0",
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
 name = "ropey"
 version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -655,6 +1052,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "rust-ini"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e2a3bcec1f113553ef1c88aae6c020a369d03d55b58de9869a0908930385091"
+dependencies = [
+ "cfg-if",
+ "ordered-multimap",
+]
+
+[[package]]
 name = "rustc-demangle"
 version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -724,6 +1131,48 @@ dependencies = [
 ]
 
 [[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.9.34+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
+dependencies = [
+ "indexmap",
+ "itoa",
+ "ryu",
+ "serde",
+ "unsafe-libyaml",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "shellexpand"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b"
+dependencies = [
+ "dirs",
+]
+
+[[package]]
 name = "signal-hook-registry"
 version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -786,6 +1235,35 @@ dependencies = [
 ]
 
 [[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "tiny-keccak"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
 name = "tinyvec"
 version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -845,6 +1323,40 @@ dependencies = [
 ]
 
 [[package]]
+name = "toml"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
 name = "tower"
 version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -934,6 +1446,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+
+[[package]]
 name = "unicode-bidi"
 version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -961,6 +1485,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
+name = "unsafe-libyaml"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
+
+[[package]]
 name = "url"
 version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -995,6 +1525,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
+name = "wasm-bindgen"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
 name = "winapi"
 version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1026,12 +1610,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
 name = "windows-sys"
 version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
@@ -1040,13 +1633,28 @@ version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
 ]
 
 [[package]]
@@ -1056,37 +1664,97 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "winnow"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "yaml-rust"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
+dependencies = [
+ "linked-hash-map",
+]
diff --git a/pkgs/by-name/ma/markdown-oxide/package.nix b/pkgs/by-name/ma/markdown-oxide/package.nix
index 75da72840a069..a2739744c3a80 100644
--- a/pkgs/by-name/ma/markdown-oxide/package.nix
+++ b/pkgs/by-name/ma/markdown-oxide/package.nix
@@ -5,13 +5,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "markdown-oxide";
-  version = "0.0.6";
+  version = "0.0.16";
 
   src = fetchFromGitHub {
     owner = "Feel-ix-343";
     repo = "markdown-oxide";
     rev = "v${version}";
-    hash = "sha256-RGT8Th4hXmfOyGPYQYqwUtcwz3zVU8ph3l57P5rZHr4=";
+    hash = "sha256-RCoyiEkaTDbLtkMWSCM9nOHURHw5D7vsnr/yl91CuVQ=";
   };
 
   cargoLock = {
diff --git a/pkgs/by-name/mc/mcumgr-client/Cargo.lock b/pkgs/by-name/mc/mcumgr-client/Cargo.lock
new file mode 100644
index 0000000000000..2f9a6fd2a7bb3
--- /dev/null
+++ b/pkgs/by-name/mc/mcumgr-client/Cargo.lock
@@ -0,0 +1,965 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+
+[[package]]
+name = "autocfg"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "clap"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "console"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "unicode-width",
+ "windows-sys",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc16"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "half"
+version = "1.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "indicatif"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3"
+dependencies = [
+ "console",
+ "instant",
+ "number_prefix",
+ "portable-atomic",
+ "unicode-width",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "io-kit-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b"
+dependencies = [
+ "core-foundation-sys",
+ "mach2",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "libudev"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b324152da65df7bb95acfcaab55e3097ceaab02fb19b228a9eb74d55f135e0"
+dependencies = [
+ "libc",
+ "libudev-sys",
+]
+
+[[package]]
+name = "libudev-sys"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "mach2"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "mcumgr-client"
+version = "0.0.4"
+dependencies = [
+ "anyhow",
+ "base64",
+ "bincode",
+ "byteorder",
+ "clap",
+ "crc16",
+ "hex",
+ "humantime",
+ "indicatif",
+ "lazy_static",
+ "log",
+ "num",
+ "num-derive",
+ "num-traits",
+ "rand",
+ "serde",
+ "serde_bytes",
+ "serde_cbor",
+ "serde_json",
+ "serde_repr",
+ "serialport",
+ "sha2",
+ "simplelog",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+
+[[package]]
+name = "nix"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
+dependencies = [
+ "bitflags 1.3.2",
+ "cfg-if",
+ "libc",
+]
+
+[[package]]
+name = "num"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
+dependencies = [
+ "num-bigint",
+ "num-complex",
+ "num-integer",
+ "num-iter",
+ "num-rational",
+ "num-traits",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-derive"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_threads"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "number_prefix"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
+
+[[package]]
+name = "ryu"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "serde"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_bytes"
+version = "0.11.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_cbor"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
+dependencies = [
+ "half",
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.115"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "serialport"
+version = "4.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f5a15d0be940df84846264b09b51b10b931fb2f275becb80934e3568a016828"
+dependencies = [
+ "bitflags 2.5.0",
+ "cfg-if",
+ "core-foundation-sys",
+ "io-kit-sys",
+ "libudev",
+ "mach2",
+ "nix",
+ "regex",
+ "scopeguard",
+ "unescaper",
+ "winapi",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "simplelog"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0"
+dependencies = [
+ "log",
+ "termcolor",
+ "time",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.58",
+]
+
+[[package]]
+name = "time"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+dependencies = [
+ "deranged",
+ "itoa",
+ "libc",
+ "num-conv",
+ "num_threads",
+ "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.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "unescaper"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0adf6ad32eb5b3cadff915f7b770faaac8f7ff0476633aa29eb0d9584d889d34"
+dependencies = [
+ "thiserror",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[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-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
diff --git a/pkgs/by-name/mc/mcumgr-client/package.nix b/pkgs/by-name/mc/mcumgr-client/package.nix
new file mode 100644
index 0000000000000..d80bb6231ec14
--- /dev/null
+++ b/pkgs/by-name/mc/mcumgr-client/package.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  nix-update-script,
+  pkg-config,
+  udev,
+  stdenv,
+  darwin,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "mcumgr-client";
+  version = "0.0.4";
+
+  src = fetchFromGitHub {
+    owner = "vouch-opensource";
+    repo = "mcumgr-client";
+    rev = "v${version}";
+    hash = "sha256-MTNMnA5/CzwVrhNhDrfaXOatT4BFmc4nOPhIxTyc248=";
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+  };
+
+  passthru.updateScript = nix-update-script { };
+
+  postPatch = ''
+    ln -s ${./Cargo.lock} Cargo.lock
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs =
+    lib.optionals stdenv.isLinux [ udev ]
+    ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.IOKit ];
+
+  meta = with lib; {
+    description = "Client for mcumgr commands";
+    homepage = "https://github.com/vouch-opensource/mcumgr-client";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ otavio ];
+    mainProgram = "mcumgr-client";
+  };
+}
diff --git a/pkgs/by-name/me/mermaid-cli/package.nix b/pkgs/by-name/me/mermaid-cli/package.nix
index a45930287a506..a299e69bc69e7 100644
--- a/pkgs/by-name/me/mermaid-cli/package.nix
+++ b/pkgs/by-name/me/mermaid-cli/package.nix
@@ -11,18 +11,18 @@
 
 stdenv.mkDerivation rec {
   pname = "mermaid-cli";
-  version = "10.4.0";
+  version = "10.8.0";
 
   src = fetchFromGitHub {
     owner = "mermaid-js";
     repo = "mermaid-cli";
     rev = version;
-    hash = "sha256-mzBN/Hg/03+jYyoAHvjx33HC46ZA6dtHmiSnaExCRR0=";
+    hash = "sha256-nCLLv8QXx9N4WiUFw3WB+Rpfd4H4oCFa1ac01al+ovY=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    hash = "sha256-RQsRGzkuPgGVuEpF5lzv26XKMPLX2NrsjVkGMMkCbO4=";
+    hash = "sha256-thZxaa7S3vlS1Ws+G5dklun+ISCV908p1Ov7qb8fP3c=";
   };
 
   nativeBuildInputs  = [
diff --git a/pkgs/by-name/mi/mihomo/package.nix b/pkgs/by-name/mi/mihomo/package.nix
index 7328983797761..6e880a4a0c33a 100644
--- a/pkgs/by-name/mi/mihomo/package.nix
+++ b/pkgs/by-name/mi/mihomo/package.nix
@@ -39,7 +39,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A rule-based tunnel in Go";
-    homepage = "https://github.com/MetaCubeX/mihomo";
+    homepage = "https://github.com/MetaCubeX/mihomo/tree/Alpha";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ oluceps ];
     mainProgram = "mihomo";
diff --git a/pkgs/by-name/mi/min/lock.json b/pkgs/by-name/mi/min/lock.json
new file mode 100644
index 0000000000000..262bfee0d538b
--- /dev/null
+++ b/pkgs/by-name/mi/min/lock.json
@@ -0,0 +1,52 @@
+{
+  "depends": [
+    {
+      "method": "fetchzip",
+      "packages": [
+        "checksums"
+      ],
+      "path": "/nix/store/z6799507gzbw46lzbi1i8mwm0nbvrvnx-source",
+      "ref": "v0.1.0",
+      "rev": "7ff0b762332d2591bbeb65df9bb86d52ea44ec01",
+      "sha256": "11612prr2wwbx414ip0zjh1fv638dgfvzxfd6v2f432n0wfwhjhj",
+      "srcDir": "src",
+      "url": "https://github.com/nim-lang/checksums/archive/7ff0b762332d2591bbeb65df9bb86d52ea44ec01.tar.gz"
+    },
+    {
+      "method": "fetchzip",
+      "packages": [
+        "minline"
+      ],
+      "path": "/nix/store/rirdlc80sn6pp5vmbw32xaaj56n1zxl8-source",
+      "ref": "v0.1.1",
+      "rev": "a1f11470316500dceb88d7d6c30979c35aab14ff",
+      "sha256": "0wy8svpw0cldh1j6g5af4pxh6d6lac79sngg0i24dplh9pli7wb3",
+      "srcDir": ".",
+      "url": "https://github.com/h3rald/minline/archive/a1f11470316500dceb88d7d6c30979c35aab14ff.tar.gz"
+    },
+    {
+      "method": "fetchzip",
+      "packages": [
+        "nimquery"
+      ],
+      "path": "/nix/store/mys0888vyyd12h0qhzg709jk9jb6rmxa-source",
+      "ref": "v2.0.1",
+      "rev": "83e2866422788a1db1906734de056b410a49d047",
+      "sha256": "0g1mcpfx42wnv2sg551gbgfralp7bf9fv83l2inbv2bhb063fx0z",
+      "srcDir": "",
+      "url": "https://github.com/GULPF/nimquery/archive/83e2866422788a1db1906734de056b410a49d047.tar.gz"
+    },
+    {
+      "method": "fetchzip",
+      "packages": [
+        "zippy"
+      ],
+      "path": "/nix/store/9iz31kiizzg76vpcc5jq53rf0wzjvbh8-source",
+      "ref": "0.5.14",
+      "rev": "21c8e279e257b0bc2a063b34e2304ea3aade21ec",
+      "sha256": "05g7w61ql9kgrmnpm64y94lkiwj36i551c387gc71lz3dpllcn6q",
+      "srcDir": "src",
+      "url": "https://github.com/guzba/zippy/archive/21c8e279e257b0bc2a063b34e2304ea3aade21ec.tar.gz"
+    }
+  ]
+}
diff --git a/pkgs/by-name/mi/min/package.nix b/pkgs/by-name/mi/min/package.nix
new file mode 100644
index 0000000000000..f334e27f457b1
--- /dev/null
+++ b/pkgs/by-name/mi/min/package.nix
@@ -0,0 +1,45 @@
+{ lib, buildNimPackage, fetchFromGitHub, openssl, pcre }:
+
+buildNimPackage (finalAttrs: {
+  pname = "min";
+  version = "0.43.0";
+
+  src = fetchFromGitHub {
+    owner = "h3rald";
+    repo = "min";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-4coeasFZrbwYQ6FM0ENkh/pPcvN3rCuheUpmHr1f3wM=";
+  };
+
+  lockFile = ./lock.json;
+
+  buildInputs = [ openssl pcre ];
+
+  prePatch = ''
+    # substitude our code for their code for data
+    substituteInPlace min.nimble \
+      --replace-fail 'import' "" \
+      --replace-warn 'minpkg/core/meta' "" \
+      --replace-warn 'pkgVersion' '"${finalAttrs.version}"' \
+      --replace-warn 'pkgAuthor' '""' \
+      --replace-warn 'pkgDescription' '""' \
+      --replace-warn 'pkgName' '"${finalAttrs.pname}"' \
+
+    # remove vendorabilities
+    find . -name '*.a' -delete
+    find minpkg/lib -name '*.nim' \
+      -exec sed 's|{\.passL:.*\.}|discard|g' -i {} \;
+  '';
+
+  NIX_LDFLAGS = [ "-lpcre" ];
+
+  meta = {
+    description =
+      "A functional, concatenative programming language with a minimalist syntax";
+    homepage = "https://min-lang.org/";
+    license = lib.licenses.mit;
+    mainProgram = "min";
+    maintainers = with lib.maintainers; [ ehmry ];
+  };
+
+})
diff --git a/pkgs/by-name/mi/mini-calc/package.nix b/pkgs/by-name/mi/mini-calc/package.nix
new file mode 100644
index 0000000000000..a69525835918a
--- /dev/null
+++ b/pkgs/by-name/mi/mini-calc/package.nix
@@ -0,0 +1,30 @@
+{ lib, rustPlatform, fetchpatch, fetchFromGitHub }:
+rustPlatform.buildRustPackage rec {
+  pname = "mini-calc";
+  version = "2.12.2";
+
+  src = fetchFromGitHub {
+    owner = "coco33920";
+    repo = "calc";
+    rev = version;
+    hash = "sha256-MKMZVRjqwNQUNkuduvgVvsp53E48JPI68Lq/6ooLcFc=";
+  };
+
+  cargoHash = "sha256-A9t7i9mw4dzCWUAObZ81BSorCrzx6wEjYXiRWIBzM9M=";
+  cargoPatches = [
+    (fetchpatch {
+      url = "https://github.com/coco33920/calc/commit/0bd12cbf3e13e447725e22cc70df72e559d21c94.patch";
+      sha256 = "sha256-1QN18LQFh8orh9DvgLBGAHimW/b/8HxbwtVD9s7mQaI=";
+    })
+  ];
+
+  meta = {
+    description = "A fully-featured minimalistic configurable calculator written in Rust";
+    changelog = "https://github.com/coco33920/calc/blob/${version}/CHANGELOG.md";
+    homepage = "https://calc.nwa2coco.fr";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ sigmanificient ];
+    mainProgram = "mini-calc";
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/mi/minijinja/package.nix b/pkgs/by-name/mi/minijinja/package.nix
index 4c08223458b87..6e4a404f4f875 100644
--- a/pkgs/by-name/mi/minijinja/package.nix
+++ b/pkgs/by-name/mi/minijinja/package.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "minijinja";
-  version = "1.0.16";
+  version = "1.0.17";
 
   src = fetchFromGitHub {
     owner = "mitsuhiko";
     repo = "minijinja";
     rev = version;
-    hash = "sha256-/mWXtAu+4B0VTZsID7FOQkSnuTxOLUUrl+vubqPClCw=";
+    hash = "sha256-NMDPOvSTBEw0469BKEAjL5T/OfVw807KESOpflNe3GI=";
   };
 
-  cargoHash = "sha256-iMRcQL7/Q/9UmwPwaQslMruyUQ2QSU+5y7VNeAFMzk8=";
+  cargoHash = "sha256-50fJ7Pb4MLICv3JkeeqiXEcu5cYYU0653YYWEd8HlJU=";
 
   # The tests relies on the presence of network connection
   doCheck = false;
diff --git a/pkgs/by-name/mo/mountpoint-s3/package.nix b/pkgs/by-name/mo/mountpoint-s3/package.nix
index 3bd0527c29839..5aff3e5528423 100644
--- a/pkgs/by-name/mo/mountpoint-s3/package.nix
+++ b/pkgs/by-name/mo/mountpoint-s3/package.nix
@@ -8,17 +8,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mountpoint-s3";
-  version = "1.5.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "mountpoint-s3";
     rev = "v${version}";
-    hash = "sha256-DsxcQ/FEVcrzPyv9LgssNut4XnbU3mPKbuBwQKLiRLA=";
+    hash = "sha256-1d2PPbTheUcHw2xS5LEcdchnfwu7szBApv+FnPaxt+I=";
     fetchSubmodules = true;
   };
 
-  cargoHash = "sha256-UOQRdSQ/whlOTZL2vaNiIcKB+Zgpk8tbinWBRWPyllc=";
+  cargoHash = "sha256-tBi41kdaa4mVHh0MkXJ8kaG1e3CQURIKVk9Lboy1N8Y=";
 
   # thread 'main' panicked at cargo-auditable/src/collect_audit_data.rs:77:9:
   # cargo metadata failure: error: none of the selected packages contains these features: libfuse3
diff --git a/pkgs/by-name/mo/movim/package.nix b/pkgs/by-name/mo/movim/package.nix
index 600af837b1071..6380baf3d46fd 100644
--- a/pkgs/by-name/mo/movim/package.nix
+++ b/pkgs/by-name/mo/movim/package.nix
@@ -1,20 +1,51 @@
 { lib
+, fetchpatch
 , fetchFromGitHub
+, dash
 , php
 , phpCfg ? null
 , withPgsql ? true # “strongly recommended” according to docs
 , withMysql ? false
+, minifyStaticFiles ? false # default files are often not minified
+, parallel
+, esbuild
+, lightningcss
+, scour
+, nixosTests
 }:
 
+let
+  defaultMinifyOpts = {
+    script = {
+      enable = false;
+      target = "es2021";
+    };
+    style = {
+      enable = false;
+      browserslist = "defaults, Firefox ESR, last 20 Firefox major versions, last 20 Chrome major versions, last 3 Safari major versions, last 1 KaiOS version, and supports css-variables";
+    };
+    svg = {
+      enable = false;
+    };
+  };
+
+  minify = lib.recursiveUpdate defaultMinifyOpts
+    (if lib.isBool minifyStaticFiles && minifyStaticFiles then
+      { script.enable = true; style.enable = true; svg.enable = true; }
+    else if lib.isAttrs minifyStaticFiles then
+      lib.filterAttrsRecursive (_: v: v != null) minifyStaticFiles
+    else
+      { });
+in
 php.buildComposerProject (finalAttrs: {
   pname = "movim";
-  version = "0.23";
+  version = "0.23.0.20240328";
 
   src = fetchFromGitHub {
     owner = "movim";
     repo = "movim";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-9MBe2IRYxvUuCc5m7ajvIlBU7YVm4A3RABlOOIjpKoM=";
+    rev = "c3a43cd7e3a1a3a6efd595470e6a85b2ec578cba";
+    hash = "sha256-x0C4w3SRP3NMOhGSZOQALk6PNWUre4MvFW5cESr8Wvk=";
   };
 
   php = php.buildEnv ({
@@ -28,16 +59,98 @@ php.buildComposerProject (finalAttrs: {
     extraConfig = phpCfg;
   });
 
+  nativeBuildInputs =
+    lib.optional (lib.any (x: x.enable) (lib.attrValues minify)) parallel
+    ++ lib.optional minify.script.enable esbuild
+    ++ lib.optional minify.style.enable lightningcss
+    ++ lib.optional minify.svg.enable scour;
+
   # no listed license
   # pinned commonmark
   composerStrictValidation = false;
 
-  vendorHash = "sha256-PBoJbVuF0Qy7nNlL4yx446ivlZpPYNIai78yC0wWkCM=";
+  vendorHash = "sha256-RFIi1I+gcagRgkDpgQeR1oGJeBGA7z9q3DCfW+ZDr2Y=";
+
+  postPatch = ''
+    # Our modules are already wrapped, removes missing *.so warnings;
+    # replacing `$configuration` with actually-used flags.
+    substituteInPlace src/Movim/Daemon/Session.php \
+      --replace-fail "exec php ' . \$configuration " "exec php -dopcache.enable=1 -dopcache.enable_cli=1 ' "
+
+    # Point to PHP + PHP INI in the Nix store
+    substituteInPlace src/Movim/{Console/DaemonCommand.php,Daemon/Session.php} \
+      --replace-fail "exec php " "exec ${lib.getExe finalAttrs.php} "
+    substituteInPlace src/Movim/Console/DaemonCommand.php \
+      --replace-fail "<info>php vendor/bin/phinx migrate</info>" \
+        "<info>${lib.getBin finalAttrs.php} vendor/bin/phinx migrate</info>" \
+      --replace-fail "<info>php daemon.php setAdmin {jid}</info>" \
+        "<info>${finalAttrs.meta.mainProgram} setAdmin {jid}</info>"
+
+    # BUGFIX: Imagick API Changes for 7.x+
+    # See additionally: https://github.com/movim/movim/pull/1122
+    substituteInPlace src/Movim/Image.php \
+      --replace-fail "Imagick::ALPHACHANNEL_REMOVE" "Imagick::ALPHACHANNEL_OFF" \
+      --replace-fail "Imagick::ALPHACHANNEL_ACTIVATE" "Imagick::ALPHACHANNEL_ON"
+  '';
+
+  preBuild = lib.optionalString minify.script.enable ''
+    find ./public -type f -iname "*.js" \
+      | parallel ${lib.escapeShellArgs [
+          "--will-cite"
+          "-j $NIX_BUILD_CORES"
+          ''
+            tmp="$(mktemp)"
+            esbuild {} --minify --target=${lib.escapeShellArg minify.script.target} --outfile=$tmp
+            [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s {})" ]] && mv $tmp {}
+          ''
+        ]}
+  '' + lib.optionalString minify.style.enable ''
+    export BROWSERLIST=${lib.escapeShellArg minify.style.browserslist}
+    find ./public -type f -iname "*.css" \
+      | parallel ${lib.escapeShellArgs [
+          "--will-cite"
+          "-j $NIX_BUILD_CORES"
+          ''
+            tmp="$(mktemp)"
+            lightningcss {} --minify --browserslist --output-file=$tmp
+            [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s {})" ]] && mv $tmp {}
+          ''
+        ]}
+  '' + lib.optionalString minify.svg.enable ''
+    find ./public -type f -iname "*.svg" -a -not -path "*/emojis/*" \
+      | parallel ${lib.escapeShellArgs [
+          "--will-cite"
+          "-j $NIX_BUILD_CORES"
+          ''
+            tmp="$(mktemp)"
+            scour -i {} -o $tmp --disable-style-to-xml --enable-comment-stripping --enable-viewboxing --indent=tab
+            [[ "$(stat -c %s $tmp)" -lt "$(stat -c %s {})" ]] && mv $tmp {}
+          ''
+        ]}
+  '';
+
+  postInstall = ''
+    mkdir -p $out/bin
+    echo "#!${lib.getExe dash}" > $out/bin/movim
+    echo "${lib.getExe finalAttrs.php} $out/share/php/${finalAttrs.pname}/daemon.php \"\$@\"" >> $out/bin/movim
+    chmod +x $out/bin/movim
+
+    mkdir -p $out/share/{bash-completion/completion,fish/vendor_completions.d,zsh/site-functions}
+    $out/bin/movim completion bash | sed "s/daemon.php/movim/g" > $out/share/bash-completion/completion/movim.bash
+    $out/bin/movim completion fish | sed "s/daemon.php/movim/g" > $out/share/fish/vendor_completions.d/movim.fish
+    $out/bin/movim completion zsh | sed "s/daemon.php/movim/g" > $out/share/zsh/site-functions/_movim
+    chmod +x $out/share/{bash-completion/completion/movim.bash,fish/vendor_completions.d/movim.fish,zsh/site-functions/_movim}
+  '';
+
+  passthru = {
+    tests = { inherit (nixosTests) movim; };
+  };
 
   meta = {
     description = "a federated blogging & chat platform that acts as a web front end for the XMPP protocol";
     homepage = "https://movim.eu";
     license = lib.licenses.agpl3Plus;
     maintainers = with lib.maintainers; [ toastal ];
+    mainProgram = "movim";
   };
 })
diff --git a/pkgs/by-name/my/mystmd/package.nix b/pkgs/by-name/my/mystmd/package.nix
index 64997d83dfc8a..e00a9ec2dda48 100644
--- a/pkgs/by-name/my/mystmd/package.nix
+++ b/pkgs/by-name/my/mystmd/package.nix
@@ -2,16 +2,16 @@
 
 buildNpmPackage rec {
   pname = "mystmd";
-  version = "1.1.50";
+  version = "1.1.52";
 
   src = fetchFromGitHub {
     owner = "executablebooks";
     repo = "mystmd";
     rev = "mystmd@${version}";
-    hash = "sha256-2KzvjKtI3TK0y1zNX33MAz/I7x+09XVcwKBWhBTD0+M=";
+    hash = "sha256-m3SjY5mmq+hzxVwpHgXNvE4PyLwMqPtZY5cOYlOPa6M=";
   };
 
-  npmDepsHash = "sha256-mJXLmq6KZiKjctvGCf7YG6ivF1ut6qynzyM147pzGwM=";
+  npmDepsHash = "sha256-pFAf3ZIvJPM6AftwTtzAUBzlbwzT+jiEZm9w3xhQlMI=";
 
   dontNpmInstall = true;
 
diff --git a/pkgs/by-name/na/namespace-cli/package.nix b/pkgs/by-name/na/namespace-cli/package.nix
index b98d249ad71fd..0f9325f842e46 100644
--- a/pkgs/by-name/na/namespace-cli/package.nix
+++ b/pkgs/by-name/na/namespace-cli/package.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "namespace-cli";
-  version = "0.0.354";
+  version = "0.0.355";
 
   src = fetchFromGitHub {
     owner = "namespacelabs";
     repo = "foundation";
     rev = "v${version}";
-    hash = "sha256-wO1ygoaqgCkvtVJ+ATxNGSiJpAZAqe2LXyPg8r4osQk=";
+    hash = "sha256-St/zZqfoate9TwYo7q9Za+T6q4kRw9vSzcBfMW7AXkw=";
   };
 
   vendorHash = "sha256-a/e+xPOD9BDSlKknmfcX2tTMyIUrzKxqtUpFXcFIDSE=";
diff --git a/pkgs/by-name/na/naps2/deps.nix b/pkgs/by-name/na/naps2/deps.nix
index fe39240ada2e8..0991989edc61a 100644
--- a/pkgs/by-name/na/naps2/deps.nix
+++ b/pkgs/by-name/na/naps2/deps.nix
@@ -54,8 +54,11 @@
   (fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; })
   (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n"; })
   (fetchNuGet { pname = "MimeKit"; version = "1.22.0"; sha256 = "0zs9a4gjcs3q402dvvgfv58304sx533nrrhiafgqc04aazpqypr4"; })
-  (fetchNuGet { pname = "NAPS2.Pdfium.Binaries"; version = "1.0.1"; sha256 = "0zn0y05l3975akm2kxifg90d5mqsjphviqdvi6hhpm8llxiip01g"; })
-  (fetchNuGet { pname = "NAPS2.Tesseract.Binaries"; version = "1.1.0"; sha256 = "02hlmv9yyx1nca2ccbcac7swjqf7g9708qbjdzcmmwkvyrbwbgrc"; })
+  (fetchNuGet { pname = "NAPS2.Mdns"; version = "1.0.1"; sha256 = "0xi46brppcjm8mrabnffahkmkcakhw94cnq1w2yk8y2hyq9qb4ms"; })
+  (fetchNuGet { pname = "NAPS2.NTwain"; version = "1.0.0"; sha256 = "088dw31h7rlgr0s05snm382wz65wi46yaizjnjpd0wzw2mb58yld"; })
+  (fetchNuGet { pname = "NAPS2.Pdfium.Binaries"; version = "1.1.0"; sha256 = "0rnqkk6y047p6a6li2dr2cygkhjn3d2a13yn3rck5gf854k3q3ws"; })
+  (fetchNuGet { pname = "NAPS2.PdfSharp"; version = "1.0.1"; sha256 = "0x51whjhlqd5r0f1s5hjx41zzwwcwcdl19q6iz6k7fwx81746w0w"; })
+  (fetchNuGet { pname = "NAPS2.Tesseract.Binaries"; version = "1.2.0"; sha256 = "0m1aksfjg4vfl2llvhd2in0a5i4wa72nmfw2h78y4wwxmjplbfz2"; })
   (fetchNuGet { pname = "NAPS2.Wia"; version = "2.0.3"; sha256 = "0xszkccb8fy2x60nkblpda78wx2d86fn8y49j94qmvz4rp2nw98i"; })
   (fetchNuGet { pname = "NETStandard.Library"; version = "1.6.1"; sha256 = "1z70wvsx2d847a2cjfii7b83pjfs34q05gb037fdjikv5kbagml8"; })
   (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; })
diff --git a/pkgs/by-name/na/naps2/package.nix b/pkgs/by-name/na/naps2/package.nix
index e1d99e8070f9e..7df33d1a425d3 100644
--- a/pkgs/by-name/na/naps2/package.nix
+++ b/pkgs/by-name/na/naps2/package.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildDotnetModule
 , dotnetCorePackages
 , fetchFromGitHub
@@ -11,13 +12,13 @@
 
 buildDotnetModule rec {
   pname = "naps2";
-  version = "7.3.0";
+  version = "7.4.0";
 
   src = fetchFromGitHub {
     owner = "cyanfish";
     repo = "naps2";
     rev = "v${version}";
-    hash = "sha256-aR4IDPfcbWWyM+1MhSWIsNUNLi43MvbWBykoEkVbe+4=";
+    hash = "sha256-zU6VjHNtuX8JHC03CmaDnTAAei+mEhA/oMs9p42EgtA=";
   };
 
   projectFile = "NAPS2.App.Gtk/NAPS2.App.Gtk.csproj";
@@ -48,11 +49,13 @@ buildDotnetModule rec {
 
   meta = {
     description = "Scan documents to PDF and more, as simply as possible.";
-    homepage = "www.naps2.com";
+    homepage = "https://www.naps2.com";
+    changelog = "https://github.com/cyanfish/naps2/blob/master/CHANGELOG.md";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ eliandoran ];
     platforms = lib.platforms.linux;
     mainProgram = "naps2";
+    broken = stdenv.isAarch64;  # Google.Protobuf.Tools dependency fails to build.
   };
 
 }
diff --git a/pkgs/by-name/ne/nekoray/nekobox-core.nix b/pkgs/by-name/ne/nekoray/nekobox-core.nix
new file mode 100644
index 0000000000000..43663ac9797ec
--- /dev/null
+++ b/pkgs/by-name/ne/nekoray/nekobox-core.nix
@@ -0,0 +1,36 @@
+{
+  buildGoModule,
+  version,
+  src,
+  extraSources,
+}:
+
+buildGoModule rec {
+  pname = "nekobox-core";
+  inherit version src;
+  sourceRoot = "${src.name}/go/cmd/nekobox_core";
+
+  postPatch = ''
+    cp -r --no-preserve=all ${extraSources.libneko} ../../../../libneko
+    cp -r --no-preserve=all ${extraSources.sing-box-extra} ../../../../sing-box-extra
+    cp -r --no-preserve=all ${extraSources.sing-box} ../../../../sing-box
+    cp -r --no-preserve=all ${extraSources.sing-quic} ../../../../sing-quic
+  '';
+
+  vendorHash = "sha256-q/Co67AwJVElJnEY2O0SLLUzwlGiqazKu+fD/nnbrTk=";
+
+  ldflags = [
+    "-w"
+    "-s"
+    "-X github.com/matsuridayo/libneko/neko_common.Version_neko=${version}"
+  ];
+
+  tags = [
+    "with_clash_api"
+    "with_gvisor"
+    "with_quic"
+    "with_wireguard"
+    "with_utls"
+    "with_ech"
+  ];
+}
diff --git a/pkgs/by-name/ne/nekoray/nekoray-core.nix b/pkgs/by-name/ne/nekoray/nekoray-core.nix
new file mode 100644
index 0000000000000..0488bc713e574
--- /dev/null
+++ b/pkgs/by-name/ne/nekoray/nekoray-core.nix
@@ -0,0 +1,26 @@
+{
+  buildGoModule,
+  version,
+  src,
+  extraSources,
+}:
+
+buildGoModule rec {
+  pname = "nekoray-core";
+  inherit version src;
+  sourceRoot = "${src.name}/go/cmd/nekoray_core";
+
+  postPatch = ''
+    cp -r --no-preserve=all ${extraSources.libneko} ../../../../libneko
+    cp -r --no-preserve=all ${extraSources.Xray-core} ../../../../Xray-core
+  '';
+
+  vendorHash = "sha256-gxp5oI7qO+bdSe8Yrb9I4Wkl5TqqZeIhzcQDg1OpRkc=";
+
+  ldflags = [
+    "-w"
+    "-s"
+    "-X github.com/matsuridayo/libneko/neko_common.Version_neko=${version}"
+    "-X github.com/matsuridayo/libneko/neko_common.Version_v2ray=${extraSources.Xray-core.rev}"
+  ];
+}
diff --git a/pkgs/by-name/ne/nekoray/package.nix b/pkgs/by-name/ne/nekoray/package.nix
new file mode 100644
index 0000000000000..4a1ce8f046620
--- /dev/null
+++ b/pkgs/by-name/ne/nekoray/package.nix
@@ -0,0 +1,159 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  libsForQt5,
+  cmake,
+  ninja,
+  protobuf,
+  yaml-cpp,
+  zxing-cpp,
+  callPackage,
+  makeDesktopItem,
+  copyDesktopItems,
+
+  v2ray-geoip,
+  v2ray-domain-list-community,
+  sing-geoip,
+  sing-geosite,
+}:
+
+let
+  fetchSource =
+    args:
+    fetchFromGitHub (
+      args
+      // {
+        owner = "MatsuriDayo";
+        repo = args.name;
+      }
+    );
+
+  extraSources = {
+    # revs found in https://github.com/MatsuriDayo/nekoray/blob/<version>/libs/get_source_env.sh
+    Xray-core = fetchSource {
+      name = "Xray-core";
+      rev = "01208225ee7e508044cca8eb6776a117bcecd997";
+      hash = "sha256-R66i9MITdE9JlhD4wV0EitKPxyahQqDNpunUxVTmupA=";
+    };
+    sing-box-extra = fetchSource {
+      name = "sing-box-extra";
+      rev = "d31d6da26a51a929349e0d75fd89dccbe20d1268";
+      hash = "sha256-YlzMAff8VOZGyCP7ksjcmoBDHT5llTYwwXIrs+qO5P4=";
+    };
+
+    # revs found in https://github.com/MatsuriDayo/sing-box-extra/blob/<sing-box-extra.rev>/libs/get_source_env.sh
+    sing-box = fetchSource {
+      name = "sing-box";
+      rev = "64f4eed2c667d9ff1e52a84233dee0e2ca32c17e";
+      hash = "sha256-jIg/+fvTn46h6tE6YXtov+ZaBD/ywApTZbzHlT5v4lM=";
+    };
+    sing-quic = fetchSource {
+      name = "sing-quic";
+      rev = "e396733db4de15266f0cfdb43c392aca0759324a";
+      hash = "sha256-un5NtZPRx1QAjwNhXkR9OVGldtfM1jQoNRUzt9oilUE=";
+    };
+    libneko = fetchSource {
+      name = "libneko";
+      rev = "5277a5bfc889ee7a89462695b0e678c1bd4909b1";
+      hash = "sha256-6dlWDzI9ox4PQzEtJNgwA0pXmPC7fGrGId88Zl+1gpw=";
+    };
+  };
+
+  geodata = {
+    "geoip.dat" = "${v2ray-geoip}/share/v2ray/geoip.dat";
+    "geosite.dat" = "${v2ray-domain-list-community}/share/v2ray/geosite.dat";
+    "geoip.db" = "${sing-geoip}/share/sing-box/geoip.db";
+    "geosite.db" = "${sing-geosite}/share/sing-box/geosite.db";
+  };
+
+  installGeodata = lib.concatStringsSep "\n" (
+    lib.mapAttrsToList (filename: file: ''
+      install -Dm644 ${file} "$out/share/nekoray/${filename}"
+    '') geodata
+  );
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "nekoray";
+  version = "3.26";
+
+  src = fetchSource {
+    name = "nekoray";
+    rev = finalAttrs.version;
+    hash = "sha256-fDm6fCI6XA4DHKCN3zm9B7Qbdh3LTHYGK8fPmeEnhjI=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    libsForQt5.wrapQtAppsHook
+    cmake
+    ninja
+    protobuf
+    copyDesktopItems
+  ];
+
+  buildInputs = [
+    libsForQt5.qtbase
+    libsForQt5.qttools
+    libsForQt5.qtx11extras
+    zxing-cpp
+    yaml-cpp
+  ];
+
+  # NKR_PACKAGE makes sure the app uses the user's config directory to store it's non-static content
+  # it's essentially the same as always setting the -appdata flag when running the program
+  cmakeFlags = [ (lib.cmakeBool "NKR_PACKAGE" true) ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 nekoray "$out/share/nekoray/nekoray"
+    mkdir -p "$out/bin"
+    ln -s "$out/share/nekoray/nekoray" "$out/bin"
+
+    # nekoray looks for other files and cores in the same directory it's located at
+    ln -s ${finalAttrs.passthru.nekoray-core}/bin/nekoray_core "$out/share/nekoray/nekoray_core"
+    ln -s ${finalAttrs.passthru.nekobox-core}/bin/nekobox_core "$out/share/nekoray/nekobox_core"
+
+    ${installGeodata}
+
+    install -Dm644 "$src/res/public/nekoray.png" "$out/share/icons/hicolor/256x256/apps/nekoray.png"
+
+    runHook postInstall
+  '';
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "nekoray";
+      desktopName = "nekoray";
+      exec = "nekoray";
+      icon = "nekoray";
+      comment = finalAttrs.meta.description;
+      terminal = false;
+      categories = [
+        "Network"
+        "Application"
+      ];
+    })
+  ];
+
+  passthru = {
+    nekobox-core = callPackage ./nekobox-core.nix {
+      inherit (finalAttrs) src version;
+      inherit extraSources;
+    };
+    nekoray-core = callPackage ./nekoray-core.nix {
+      inherit (finalAttrs) src version;
+      inherit extraSources;
+    };
+  };
+
+  meta = {
+    description = "Qt based cross-platform GUI proxy configuration manager";
+    homepage = "https://github.com/MatsuriDayo/nekoray";
+    license = lib.licenses.gpl3Plus;
+    mainProgram = "nekoray";
+    maintainers = with lib.maintainers; [ tomasajt ];
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/ne/nezha-agent/package.nix b/pkgs/by-name/ne/nezha-agent/package.nix
new file mode 100644
index 0000000000000..c10feadd32a5f
--- /dev/null
+++ b/pkgs/by-name/ne/nezha-agent/package.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  nezha-agent,
+  testers,
+}:
+buildGoModule rec {
+  pname = "nezha-agent";
+  version = "0.16.4";
+
+  src = fetchFromGitHub {
+    owner = "nezhahq";
+    repo = "agent";
+    rev = "v${version}";
+    hash = "sha256-xXv2FVPsl8BR51VMrFreaS3UQLEJwfObY4OeMMb8pms=";
+  };
+
+  vendorHash = "sha256-ZlheRFgl3vsUXVx8PKZQ59kme2NC31OQAL6EaNhbf70=";
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X main.version=${version}"
+  ];
+
+  # The test failed due to a geoip request in the sandbox. Remove it to avoid network requirement
+  preCheck = ''
+    rm ./pkg/monitor/myip_test.go
+  '';
+
+  passthru.tests = {
+    version = testers.testVersion {
+      package = nezha-agent;
+      command = "${nezha-agent}/bin/agent -v";
+    };
+  };
+
+  meta = with lib; {
+    description = "Agent of Nezha Monitoring";
+    homepage = "https://github.com/nezhahq/agent";
+    license = licenses.asl20;
+    maintainers = with maintainers; [moraxyc];
+  };
+}
diff --git a/pkgs/by-name/ng/ngrid/package.nix b/pkgs/by-name/ng/ngrid/package.nix
new file mode 100644
index 0000000000000..b609689663ec2
--- /dev/null
+++ b/pkgs/by-name/ng/ngrid/package.nix
@@ -0,0 +1,69 @@
+{ lib
+, fetchFromGitHub
+, python3
+, expect
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "ngrid";
+  version = "0.1.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "twosigma";
+    repo = "ngrid";
+    rev = version;
+    hash = "sha256-69icp0m+bAHBsQFIDGd8NjfMsMYsB1sUfzuP/OBl5jc=";
+  };
+
+  nativeBuildInputs = [
+    python3.pkgs.setuptools
+    python3.pkgs.wheel
+  ];
+
+  propagatedBuildInputs = [
+    python3.pkgs.six
+    python3.pkgs.numpy
+    python3.pkgs.pytz
+    python3.pkgs.pandas
+  ];
+
+  pythonImportsCheck = [ "ngrid.main" ];
+
+  nativeCheckInputs = [ python3.pkgs.pytest expect ];
+  checkPhase = ''
+    runHook preCheck
+
+    pytest test/formatters.py
+
+    echo -e "a,b,c\n1.98423,some string,5824.2" > test.csv
+
+    expect <<EOD
+      exp_internal 1
+      set timeout 3
+      spawn $out/bin/ngrid test.csv
+
+      expect {
+        "Traceback" { exit 1 }
+        timeout { }
+      }
+
+      send "q"
+
+      expect {
+        "Traceback" { exit 1 }
+        eof { exit 0 }
+      }
+    EOD
+
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "It's \"less\" for data";
+    homepage = "https://github.com/twosigma/ngrid";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ twitchy0 ];
+    mainProgram = "ngrid";
+  };
+}
diff --git a/pkgs/by-name/nh/nh/package.nix b/pkgs/by-name/nh/nh/package.nix
index 83cc94ae2ff4d..780e3b2a0693e 100644
--- a/pkgs/by-name/nh/nh/package.nix
+++ b/pkgs/by-name/nh/nh/package.nix
@@ -10,7 +10,7 @@
 , nix-output-monitor
 }:
 let
-  version = "3.5.7";
+  version = "3.5.10";
   runtimeDeps = [ nvd nix-output-monitor ];
 in
 rustPlatform.buildRustPackage {
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage {
     owner = "viperML";
     repo = "nh";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gpvOzL+7PP22juK6yI01EiGUEVVo4lHGXCs5OmCAX+s=";
+    hash = "sha256-uEVd15WsX+Wti9PXW724puFcsFO72VTiJyBwW2WXT9M=";
   };
 
   strictDeps = true;
@@ -47,7 +47,7 @@ rustPlatform.buildRustPackage {
       --prefix PATH : ${lib.makeBinPath runtimeDeps}
   '';
 
-  cargoHash = "sha256-DcYvovD2Qx4ybpV7YckwYvy8hsoq50YGZI8fl2BXFLI=";
+  cargoHash = "sha256-/aqs/l+Qi2b8zxHXqxdHLBpSr5+vVsd6pY/QnHbkmb0=";
 
   passthru.updateScript = nix-update-script { };
 
diff --git a/pkgs/by-name/ni/nilaway/package.nix b/pkgs/by-name/ni/nilaway/package.nix
index b0420867ead59..824ae17554e2e 100644
--- a/pkgs/by-name/ni/nilaway/package.nix
+++ b/pkgs/by-name/ni/nilaway/package.nix
@@ -5,16 +5,18 @@
 
 buildGoModule rec {
   pname = "nilaway";
-  version = "unstable-2023-11-17";
+  version = "0-unstable-2024-04-04";
 
   src = fetchFromGitHub {
     owner = "uber-go";
     repo = "nilaway";
-    rev = "a267567c6ffff900df0c3394d031ee70079ec8df";
-    hash = "sha256-Ro1nSTEZcE9u4Ol6CSLBTiPrh72Ly9UcrXyvffzPfow=";
+    rev = "755a685ab68b85d9b36833b38972a559f217d396";
+    hash = "sha256-sDDBITrGD79pcbsrcrs6D8njBp4kuK1NkuBPwzIkaUE=";
   };
 
-  vendorHash = "sha256-kbVjkWW5D8jp5QFYGiyRuGFArRsQukJIR8xwaUUIUBs=";
+  vendorHash = "sha256-1j7NwfqrinEQL6XBO0PvwzxFytujoCtynMEXL2oTLkM=";
+
+  excludedPackages = [ "tools" ];
 
   ldflags = [ "-s" "-w" ];
 
diff --git a/pkgs/by-name/ni/nix-inspect/package.nix b/pkgs/by-name/ni/nix-inspect/package.nix
new file mode 100644
index 0000000000000..8d7d39a40b6a8
--- /dev/null
+++ b/pkgs/by-name/ni/nix-inspect/package.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  boost,
+  nlohmann_json,
+  nixVersions,
+  pkg-config,
+  meson,
+  ninja,
+  stdenv,
+}: let
+  src = fetchFromGitHub {
+    owner = "bluskript";
+    repo = "nix-inspect";
+    rev = "3d0fea2bb246130825548fce331093ee9cc9c20b";
+    hash = "sha256-JichXRSfTLfy+7fhbTvA89rQLkqsY2eHgEAeAHWbA9s=";
+  };
+
+  workerPackage = stdenv.mkDerivation {
+    inherit src;
+
+    pname = "nix-inspect-worker";
+    version = "0.1.0";
+    sourceRoot = "source/worker";
+
+    nativeBuildInputs = [meson ninja pkg-config];
+
+    buildInputs = [
+      boost
+      nlohmann_json
+      nixVersions.nix_2_19.dev
+    ];
+
+    mesonBuildType = "release";
+  };
+in
+  rustPlatform.buildRustPackage {
+    inherit src;
+    pname = "nix-inspect";
+    version = "0.1.0";
+
+    cargoHash = "sha256-FdpHdw7bg/nEG4GjYhrdIDB4MJ4n5LoWnW4mTG2Lh5I=";
+
+    buildInputs = [workerPackage];
+
+    postPatch = ''
+      substituteInPlace src/workers.rs \
+        --replace-fail 'env!("WORKER_BINARY_PATH")' '"${workerPackage}/bin/nix-inspect"'
+    '';
+
+    meta = with lib; {
+      description = "A Rust package for inspecting Nix expressions";
+      homepage = "https://github.com/bluskript/nix-inspect";
+      license = licenses.mit;
+      maintainers = with maintainers; [blusk];
+      platforms = platforms.unix;
+      mainProgram = "nix-inspect";
+    };
+  }
diff --git a/pkgs/by-name/nu/nuclei-templates/package.nix b/pkgs/by-name/nu/nuclei-templates/package.nix
index 1d0c1c6c90bbf..989a97f0c5f89 100644
--- a/pkgs/by-name/nu/nuclei-templates/package.nix
+++ b/pkgs/by-name/nu/nuclei-templates/package.nix
@@ -1,24 +1,25 @@
-{ lib
-, stdenvNoCC
-, fetchFromGitHub
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
 }:
 
 stdenvNoCC.mkDerivation rec {
   pname = "nuclei-templates";
-  version = "9.8.0";
+  version = "9.8.1";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = "nuclei-templates";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1aLy8wNWMFouZRjhCSiwSq1uo20C9wN7LPxyBqK6K0k=";
+    hash = "sha256-g1MwzJK9a8bpbbP9EoUi0UBR54nfnyg3RDi9qwIKlH0=";
   };
 
   installPhase = ''
     runHook preInstall
 
     mkdir -p $out/share/nuclei-templates
-    cp -R cloud code config dns file headless helpers http javascript network ssl \
+    cp -R cloud code dast dns file headless helpers http javascript network profiles ssl \
       $out/share/nuclei-templates/
 
     runHook postInstall
diff --git a/pkgs/by-name/nw/nwg-hello/package.nix b/pkgs/by-name/nw/nwg-hello/package.nix
index 15749786de540..eb6126d1300ec 100644
--- a/pkgs/by-name/nw/nwg-hello/package.nix
+++ b/pkgs/by-name/nw/nwg-hello/package.nix
@@ -9,13 +9,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "nwg-hello";
-  version = "0.1.8";
+  version = "0.1.9";
 
   src = fetchFromGitHub {
     owner = "nwg-piotr";
     repo = "nwg-hello";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WNich+DsRvYS4GiLWZLWRvvWxCAlzrK9Q7aRX7dKjeQ=";
+    hash = "sha256-Z5Pwn/uJERWfHELXK+1SJ2vh//ZV9gqblD/GqnznJII=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ob/obs-cmd/package.nix b/pkgs/by-name/ob/obs-cmd/package.nix
index 6d9f2763591a7..f3db656267934 100644
--- a/pkgs/by-name/ob/obs-cmd/package.nix
+++ b/pkgs/by-name/ob/obs-cmd/package.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "obs-cmd";
-  version = "0.17.5";
+  version = "0.17.6";
 
   src = fetchFromGitHub {
     owner = "grigio";
     repo = "obs-cmd";
     rev = "v${version}";
-    hash = "sha256-AphpIehFHZwcZ7vO5FV6PBZSO3y6oLhH/kQhJjr34VY=";
+    hash = "sha256-bZ3N0wCTXyCv6iBQDlieMDFa80yNu1XrI4W5EaN5y/I=";
   };
 
-  cargoHash = "sha256-s/nWJ/8JnZwmROFSd2y6btopk2Cxp0zkMdy7mxVxr6k=";
+  cargoHash = "sha256-gIJOkWlBD1rv6bKf++v/pyI8/awdnZBo/U/5PFnEcvg=";
 
   meta = with lib; {
     description = "Minimal CLI to control OBS Studio via obs-websocket";
diff --git a/pkgs/by-name/oc/ocis-bin/package.nix b/pkgs/by-name/oc/ocis-bin/package.nix
index 3b6988f078ea9..6e7abc30ac05c 100644
--- a/pkgs/by-name/oc/ocis-bin/package.nix
+++ b/pkgs/by-name/oc/ocis-bin/package.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "ocis-bin";
-  version = "5.0.0";
+  version = "5.0.1";
   system =
     if stdenv.isLinux && stdenv.isx86_64 then
       "linux-amd64"
@@ -21,9 +21,9 @@ stdenv.mkDerivation (finalAttrs: {
 
     hash =
       if stdenv.isLinux && stdenv.isAarch64 then
-        "sha256-xRgDNwmRovXbyGQ5sTUw5srsXMBDYyBFMpB9MoXoo+w="
+        "sha256-8AEXuwTodhqF0LF1duYItntgp9mxoIdHChbtAnnnaQg="
       else if stdenv.isLinux && stdenv.isx86_64 then
-        "sha256-0lgDIHldW67OwinfYPATXkWUZVnR3PoXC4XLM1KkKmY="
+        "sha256-Fz0ee0Lu0CL3xJbsp1CCl0rsN/p48BdOj8oVOf0QSh4="
       else
         builtins.throw "Unsupported platform, please contact Nixpkgs maintainers for ocis package";
   };
@@ -42,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://owncloud.dev/ocis/";
     changelog = "https://github.com/owncloud/ocis/releases/tag/v${version}";
     # oCIS is licensed under non-free EULA which can be found here :
-    # https://github.com/owncloud/ocis/releases/download/v5.0.0/End-User-License-Agreement-for-ownCloud-Infinite-Scale.pdf
+    # https://github.com/owncloud/ocis/releases/download/v5.0.1/End-User-License-Agreement-for-ownCloud-Infinite-Scale.pdf
     license = licenses.unfree;
     maintainers = with maintainers; [
       ramblurr
diff --git a/pkgs/by-name/oe/oelint-adv/package.nix b/pkgs/by-name/oe/oelint-adv/package.nix
index 69686695b05e8..06894e166efec 100644
--- a/pkgs/by-name/oe/oelint-adv/package.nix
+++ b/pkgs/by-name/oe/oelint-adv/package.nix
@@ -6,17 +6,18 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "oelint-adv";
-  version = "4.4.5";
+  version = "5.1.2";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "oelint_adv";
-    hash = "sha256-NRTfWHtItwjZi3O26MzH8GtetCkj7egZa3OArs+Q2SY=";
+    hash = "sha256-7lrjytvcOnZZ8ezhWKng7OahqwsW95VkDt8B6NMriR0=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
     anytree
+    argcomplete
     colorama
     oelint-parser
     urllib3
diff --git a/pkgs/by-name/of/offat/package.nix b/pkgs/by-name/of/offat/package.nix
index e9942dbeb0c4e..145ab32a1bbfa 100644
--- a/pkgs/by-name/of/offat/package.nix
+++ b/pkgs/by-name/of/offat/package.nix
@@ -1,25 +1,24 @@
-{ lib
-, fetchFromGitHub
-, python3
+{
+  lib,
+  fetchFromGitHub,
+  python3,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "offat";
-  version = "0.16.0";
+  version = "0.17.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "OWASP";
     repo = "OFFAT";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ald+hanICvY0jTgL7GtIMiArLWazykaJAJSfzPKE4/I=";
+    hash = "sha256-tSLlMgvKIDlzHL71gH1OznKI5jEyUoJUy9d9Z8tNXjk=";
   };
 
   sourceRoot = "${src.name}/src";
 
-  build-system = with python3.pkgs; [
-    poetry-core
-  ];
+  build-system = with python3.pkgs; [ poetry-core ];
 
   dependencies = with python3.pkgs; [
     aiohttp
@@ -45,9 +44,7 @@ python3.pkgs.buildPythonApplication rec {
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "offat"
-  ];
+  pythonImportsCheck = [ "offat" ];
 
   meta = with lib; {
     description = "Tool to test APIs for prevalent vulnerabilities";
diff --git a/pkgs/by-name/op/openapi-changes/package.nix b/pkgs/by-name/op/openapi-changes/package.nix
new file mode 100644
index 0000000000000..efeee6ce34131
--- /dev/null
+++ b/pkgs/by-name/op/openapi-changes/package.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, git
+, makeWrapper
+}:
+
+buildGoModule rec {
+  pname = "openapi-changes";
+  version = "0.0.61";
+
+  src = fetchFromGitHub {
+    owner = "pb33f";
+    repo = pname;
+    # github reports `the given path has multiple possibilities` for the tagged release
+    # rev = "v${version}";
+    rev = "f0bccc1fcf42ea6a97a81acc3283dbe14a3ebb51";
+    hash = "sha256-D0jUXCxlf1aF0uc/P9Lgu9Va4Es3CQcko9BzGg1pCq8=";
+  };
+
+  # this test requires the `.git` of the project to be present
+  patchPhase = ''
+    rm git/read_local_test.go
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram $out/bin/openapi-changes --prefix PATH : ${lib.makeBinPath [ git ]}
+  '';
+
+  vendorHash = "sha256-gaBVwrSaIwe1eh8voq928cxM/d0urVUF0OUwWZb2fR8=";
+
+  meta = with lib; {
+    description = "The world's sexiest OpenAPI breaking changes detector";
+    homepage = "https://pb33f.io/openapi-changes/";
+    changelog = "https://github.com/pb33f/openapi-changes/releases/tag/v${version}";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ mguentner ];
+  };
+}
diff --git a/pkgs/by-name/op/opencflite/package.nix b/pkgs/by-name/op/opencflite/package.nix
index 0da9e52e81d6b..06e3a921fb9f0 100644
--- a/pkgs/by-name/op/opencflite/package.nix
+++ b/pkgs/by-name/op/opencflite/package.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Cross platform port of the macOS CoreFoundation";
     homepage = "https://github.com/gerickson/opencflite";
-    license = lib.licenses.apsl20;
+    license = lib.licenses.apple-psl20;
     maintainers = with lib.maintainers; [ wegank ];
     platforms = [ "x86_64-linux" ];
   };
diff --git a/pkgs/by-name/or/orchard/package.nix b/pkgs/by-name/or/orchard/package.nix
index 86f24f7ba72f3..0ce5a2d83dec5 100644
--- a/pkgs/by-name/or/orchard/package.nix
+++ b/pkgs/by-name/or/orchard/package.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "orchard";
-  version = "0.16.0";
+  version = "0.16.1";
 
   src = fetchFromGitHub {
     owner = "cirruslabs";
     repo = pname;
     rev = version;
-    hash = "sha256-XLml3/PoDS4BN+iApoEsjt1VPjsPEKTGTZcM7V5ZQaY=";
+    hash = "sha256-wuLlxyCyMgtKBW5MD7HJM3q+tsXOBTjGyNYuV9jDbEg=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
diff --git a/pkgs/by-name/pa/pablodraw/deps.nix b/pkgs/by-name/pa/pablodraw/deps.nix
new file mode 100644
index 0000000000000..16de8a8c63fd1
--- /dev/null
+++ b/pkgs/by-name/pa/pablodraw/deps.nix
@@ -0,0 +1,28 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+  (fetchNuGet { pname = "AtkSharp"; version = "3.24.24.38"; sha256 = "12dv3j8nzhjb5c0093djajdnv8n7m0q7vq2d5ry2v4xk9wqzxpr7"; })
+  (fetchNuGet { pname = "CairoSharp"; version = "3.24.24.38"; sha256 = "0n3y5w088k81apxik9amfvjdwcic4k2ixxvnrk9cw6d2wh1d5r8d"; })
+  (fetchNuGet { pname = "dotnet-outdated-tool"; version = "4.1.0"; sha256 = "1i3i2hnf4qszlp3yzwggnvz4qpp3lgrzf19ygsmbvqzw1g7w150c"; })
+  (fetchNuGet { pname = "Eto.Forms"; version = "2.7.4"; sha256 = "0q50fw646h25an5j8c4p1gck8ja20vy344w1gb7rdp167d573mb3"; })
+  (fetchNuGet { pname = "Eto.Platform.Gtk"; version = "2.7.4"; sha256 = "0zy35zw1s4al305y4b496f5nf9vmmm7i0jf8j0dlq6df8bfjifcn"; })
+  (fetchNuGet { pname = "GdkSharp"; version = "3.24.24.38"; sha256 = "0c5gzg106bnnc4wwwhch6lja68623a9hk8r2sjcv35hl5dh21616"; })
+  (fetchNuGet { pname = "GioSharp"; version = "3.24.24.38"; sha256 = "1b3irarxjbbpf24fw2avdglcslb5653gn6m829yhlcm5ay37pds4"; })
+  (fetchNuGet { pname = "GLibSharp"; version = "3.24.24.38"; sha256 = "1a0ixdq1gdb46gkb2nnlydsi10bjrbd3risfyaphsy8fbsyzrzvm"; })
+  (fetchNuGet { pname = "GtkSharp"; version = "3.24.24.38"; sha256 = "0cn8aggci6n088y5giiaxmyzv01rcz37r8pm738q2bsb57zppz2j"; })
+  (fetchNuGet { pname = "Lidgren.Network"; version = "1.0.2"; sha256 = "0ka0vwyy060wd1dn1551m56fv957mmc7dxlj71g7n6qmsi1mdhif"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
+  (fetchNuGet { pname = "Mono.Nat"; version = "3.0.3"; sha256 = "1b3alh1wz28y62cflwl1jppigv499cndm8sds32xsmvwpdwiq4yl"; })
+  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.2"; sha256 = "1p9splg1min274dpz7xdfgzrwkyfd3xlkygwpr1xgjvvyjvs6b0i"; })
+  (fetchNuGet { pname = "PangoSharp"; version = "3.24.24.38"; sha256 = "0cma8j4cy4j3fw0nvsxlqi0azjkvfjsw0wb6k6b2k21rdpy5rbbn"; })
+  (fetchNuGet { pname = "SharpCompress"; version = "0.32.2"; sha256 = "1p198bl08ia89rf4n6yjpacj3yrz6s574snsfl40l8vlqcdrc1pm"; })
+  (fetchNuGet { pname = "System.Buffers"; version = "4.5.1"; sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3"; })
+  (fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "5.0.0"; sha256 = "021h7x98lblq9avm1bgpa4i31c2kgsa7zn4sqhxf39g087ar756j"; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.4.0"; sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.3"; sha256 = "1afi6s2r1mh1kygbjmfba6l4f87pi5sg13p4a48idqafli94qxln"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "6.0.0"; sha256 = "0gm2kiz2ndm9xyzxgi0jhazgwslcs427waxgfa30m7yqll1kcrww"; })
+]
diff --git a/pkgs/by-name/pa/pablodraw/package.nix b/pkgs/by-name/pa/pablodraw/package.nix
new file mode 100644
index 0000000000000..418b9a9c01513
--- /dev/null
+++ b/pkgs/by-name/pa/pablodraw/package.nix
@@ -0,0 +1,69 @@
+{ lib
+, buildDotnetModule
+, fetchFromGitHub
+, dotnetCorePackages
+, wrapGAppsHook
+, copyDesktopItems
+, gtk3
+, libnotify
+, makeDesktopItem
+, stdenv
+}:
+
+buildDotnetModule rec {
+  pname = "pablodraw";
+  version = "3.3.13-beta";
+
+  src = fetchFromGitHub {
+    owner = "cwensley";
+    repo = "pablodraw";
+    rev = version;
+    hash = "sha256-PsCFiNcWYh6Bsf5Ihi3IoYyv66xUT1cRBKkx+K5gB/M=";
+  };
+
+  postPatch = ''
+    substituteInPlace ${projectFile} \
+      --replace-warn '<EnableCompressionInSingleFile>True</EnableCompressionInSingleFile>' ""
+  '';
+
+  projectFile = "Source/PabloDraw/PabloDraw.csproj";
+
+  executables = [ "PabloDraw" ];
+
+  dotnet-sdk = dotnetCorePackages.sdk_7_0;
+  dotnet-runtime = dotnetCorePackages.runtime_7_0;
+
+  nugetDeps = ./deps.nix;
+
+  nativeBuildInputs = [ wrapGAppsHook copyDesktopItems ];
+
+  runtimeDeps = [ gtk3 libnotify ];
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "PabloDraw";
+      exec = "PabloDraw";
+      comment = "An Ansi/Ascii text and RIPscrip vector graphic art editor/viewer";
+      type = "Application";
+      icon = "pablodraw";
+      desktopName = "PabloDraw";
+      terminal = false;
+      categories = [ "Graphics" ];
+    })
+  ];
+
+  postInstall = ''
+    install -Dm644 Assets/PabloDraw-512.png $out/share/icons/hicolor/512x512/apps/pablodraw.png
+    install -Dm644 Assets/PabloDraw-64.png $out/share/icons/hicolor/64x64/apps/pablodraw.png
+  '';
+
+  meta = with lib; {
+    description = "An Ansi/Ascii text and RIPscrip vector graphic art editor/viewer with multi-user capabilities";
+    homepage = "https://picoe.ca/products/pablodraw";
+    license = licenses.mit;
+    mainProgram = "PabloDraw";
+    maintainers = with maintainers; [ aleksana kip93 ];
+    platforms = platforms.all;
+    broken = stdenv.isDarwin; # Eto.Platform.Mac64 not found in nugetSource
+  };
+}
diff --git a/pkgs/by-name/pa/pacu/package.nix b/pkgs/by-name/pa/pacu/package.nix
index 91122b15a79d6..78491c24c6973 100644
--- a/pkgs/by-name/pa/pacu/package.nix
+++ b/pkgs/by-name/pa/pacu/package.nix
@@ -1,17 +1,16 @@
-{ lib
-, awscli
-, fetchFromGitHub
-, python3
+{
+  lib,
+  awscli,
+  fetchFromGitHub,
+  python3,
 }:
 
-
 let
   python = python3.override {
-    packageOverrides = self: super: {
-      sqlalchemy = super.sqlalchemy_1_4;
-    };
+    packageOverrides = self: super: { sqlalchemy = super.sqlalchemy_1_4; };
   };
-in python.pkgs.buildPythonApplication rec {
+in
+python.pkgs.buildPythonApplication rec {
   pname = "pacu";
   version = "1.5.2";
   pyproject = true;
@@ -27,34 +26,34 @@ in python.pkgs.buildPythonApplication rec {
     "dsnap"
     "sqlalchemy-utils"
     "sqlalchemy"
+    "pycognito"
     "urllib3"
   ];
 
-  nativeBuildInputs = with python.pkgs; [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = with python.pkgs; [ poetry-core ];
 
-  propagatedBuildInputs = [
-    awscli
-  ] ++ (with python.pkgs; [
-    awscli
-    boto3
-    botocore
-    chalice
-    dsnap
-    jq
-    policyuniverse
-    pycognito
-    pyyaml
-    qrcode
-    requests
-    sqlalchemy
-    sqlalchemy-utils
-    toml
-    typing-extensions
-    urllib3
-  ]);
+  nativeBuildInputs = with python.pkgs; [ pythonRelaxDepsHook ];
+
+  dependencies =
+    [ awscli ]
+    ++ (with python.pkgs; [
+      awscli
+      boto3
+      botocore
+      chalice
+      dsnap
+      jq
+      policyuniverse
+      pycognito
+      pyyaml
+      qrcode
+      requests
+      sqlalchemy
+      sqlalchemy-utils
+      toml
+      typing-extensions
+      urllib3
+    ]);
 
   nativeCheckInputs = with python.pkgs; [
     moto
@@ -65,13 +64,12 @@ in python.pkgs.buildPythonApplication rec {
     export HOME=$(mktemp -d)
   '';
 
-  pythonImportsCheck = [
-    "pacu"
-  ];
+  pythonImportsCheck = [ "pacu" ];
 
   disabledTests = [
-    # sqlalchemy.exc.ArgumentError: Textual SQL expression
-    #"test_migrations"
+    # sAttributeError: module 'moto' has no attribute 'mock_s3'
+    "test_update"
+    "test_update_second_time"
   ];
 
   meta = with lib; {
diff --git a/pkgs/by-name/pa/passt/package.nix b/pkgs/by-name/pa/passt/package.nix
new file mode 100644
index 0000000000000..3ce1715d2a361
--- /dev/null
+++ b/pkgs/by-name/pa/passt/package.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenv
+, fetchurl
+, gitUpdater
+, testers
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "passt";
+  version = "2024_04_05.954589b";
+
+  src = fetchurl {
+    url = "https://passt.top/passt/snapshot/passt-${finalAttrs.version}.tar.gz";
+    hash = "sha256-lwiHjr7rv1xBwXktKAsYIjDzNDkHGjZsW/FsQyFbLng=";
+  };
+
+  makeFlags = [
+    "prefix=${placeholder "out"}"
+    "VERSION=${finalAttrs.version}"
+  ];
+
+  passthru = {
+    tests.version = testers.testVersion {
+      package = finalAttrs.finalPackage;
+    };
+
+    updateScript = gitUpdater {
+      url = "https://passt.top/passt";
+    };
+  };
+
+  meta = with lib; {
+    homepage = "https://passt.top/passt/about/";
+    description = "Plug A Simple Socket Transport";
+    longDescription = ''
+      passt implements a translation layer between a Layer-2 network interface
+      and native Layer-4 sockets (TCP, UDP, ICMP/ICMPv6 echo) on a host.
+      It doesn't require any capabilities or privileges, and it can be used as
+      a simple replacement for Slirp.
+
+      pasta (same binary as passt, different command) offers equivalent
+      functionality, for network namespaces: traffic is forwarded using a tap
+      interface inside the namespace, without the need to create further
+      interfaces on the host, hence not requiring any capabilities or
+      privileges.
+    '';
+    license = [ licenses.bsd3 /* and */ licenses.gpl2Plus ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ _8aed ];
+    mainProgram = "passt";
+  };
+})
diff --git a/pkgs/by-name/ph/phpunit/package.nix b/pkgs/by-name/ph/phpunit/package.nix
index 944c20a751185..e11c6812c4bff 100644
--- a/pkgs/by-name/ph/phpunit/package.nix
+++ b/pkgs/by-name/ph/phpunit/package.nix
@@ -5,13 +5,13 @@
 
 php.buildComposerProject (finalAttrs: {
   pname = "phpunit";
-  version = "11.1.0";
+  version = "11.1.1";
 
   src = fetchFromGitHub {
     owner = "sebastianbergmann";
     repo = "phpunit";
     rev = finalAttrs.version;
-    hash = "sha256-shmKMsfAm64EJr882lP5P4Uy1I97W/Anawj+dSaxnDo=";
+    hash = "sha256-aS2mQeE8WnEaTexl8qhhfGyi1MP48s6fjrTXkVLq1LU=";
   };
 
   vendorHash = "sha256-kjMJCrMG08AXX662GAR5+V6w1+WOv8F9r6ONIOowP8Q=";
diff --git a/pkgs/by-name/pi/piv-agent/package.nix b/pkgs/by-name/pi/piv-agent/package.nix
new file mode 100644
index 0000000000000..283edba536780
--- /dev/null
+++ b/pkgs/by-name/pi/piv-agent/package.nix
@@ -0,0 +1,41 @@
+{ lib
+, stdenv
+, buildGoModule
+, darwin
+, fetchFromGitHub
+, pcsclite
+, pkg-config
+}:
+
+buildGoModule rec {
+  pname = "piv-agent";
+  version = "0.21.0";
+
+  src = fetchFromGitHub {
+    owner = "smlx";
+    repo = "piv-agent";
+    rev = "v${version}";
+    hash = "sha256-aukcnubhB8kbAl22eeFKzLPvVcYdgcEQ1gy3n6KWG00=";
+  };
+
+  vendorHash = "sha256-1d6EKEvo4XNDXRtbdnKkqyF9y0LPPHWKu9X/wYnbmas=";
+
+  subPackages = [ "cmd/piv-agent" ];
+
+  ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.shortCommit=${src.rev}" ];
+
+  nativeBuildInputs = lib.optionals stdenv.isLinux [ pkg-config ];
+
+  buildInputs =
+    if stdenv.isDarwin
+    then [ darwin.apple_sdk.frameworks.PCSC ]
+    else [ pcsclite ];
+
+  meta = with lib; {
+    description = "An SSH and GPG agent which you can use with your PIV hardware security device (e.g. a Yubikey)";
+    homepage = "https://github.com/smlx/piv-agent";
+    license = licenses.asl20;
+    maintainers = [ maintainers.marsam ];
+    mainProgram = "piv-agent";
+  };
+}
diff --git a/pkgs/by-name/pi/pixel-code/package.nix b/pkgs/by-name/pi/pixel-code/package.nix
new file mode 100644
index 0000000000000..7c1640f8a954e
--- /dev/null
+++ b/pkgs/by-name/pi/pixel-code/package.nix
@@ -0,0 +1,27 @@
+{ lib, stdenvNoCC, fetchzip }:
+
+stdenvNoCC.mkDerivation rec {
+  name = "pixel-code";
+  version = "2.1";
+
+  src = fetchzip {
+    url = "https://github.com/qwerasd205/PixelCode/releases/download/v${version}/otf.zip";
+    hash = "sha256-qu55qXcDL6YIyiFavysI9O2foccvu2Hyw7/JyIMXYv4=";
+    stripRoot=false;
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D -m444 -t $out/share/fonts/opentype $src/otf/*.otf
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/qwerasd205/PixelCode";
+    description = "A pixel font designed to actually be good for programming";
+    license = licenses.ofl;
+    maintainers = with maintainers; [ mattpolzin ];
+  };
+}
diff --git a/pkgs/by-name/pk/pkcs11-provider/package.nix b/pkgs/by-name/pk/pkcs11-provider/package.nix
new file mode 100644
index 0000000000000..37f622bc94803
--- /dev/null
+++ b/pkgs/by-name/pk/pkcs11-provider/package.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchFromGitHub
+, openssl, nss, p11-kit
+, opensc, gnutls, expect
+, autoreconfHook, autoconf-archive, pkg-config
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pkcs11-provider";
+  version = "0.3";
+
+  src = fetchFromGitHub {
+    owner = "latchset";
+    repo = "pkcs11-provider";
+    rev = "v${version}";
+    hash = "sha256-jEQYsINRZ7bi2UqOXUUmGpm+1h+1qBNe18KvfAw2JzU=";
+  };
+
+  buildInputs = [ openssl nss p11-kit ];
+  nativeBuildInputs = [ autoreconfHook pkg-config autoconf-archive ];
+
+  # don't add SoftHSM to here: https://github.com/openssl/openssl/issues/22508
+  nativeCheckInputs = [ p11-kit.bin opensc nss.tools gnutls openssl.bin expect ];
+
+  postPatch = ''
+    patchShebangs --build .
+
+    # Makefile redirects to logfiles; make sure we can catch them.
+    for name in softokn softhsm; do
+      ln -s /dev/stderr tests/setup-$name.log
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  # Frequently fails due to a race condition.
+  enableParallelInstalling = false;
+
+  doCheck = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/latchset/pkcs11-provider";
+    description = "An OpenSSL 3.x provider to access hardware or software tokens using the PKCS#11 Cryptographic Token Interface";
+    maintainers = with maintainers; [ numinit ];
+    license = licenses.asl20;
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/po/pomodoro-gtk/package.nix b/pkgs/by-name/po/pomodoro-gtk/package.nix
new file mode 100644
index 0000000000000..ef667552a8117
--- /dev/null
+++ b/pkgs/by-name/po/pomodoro-gtk/package.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, meson
+, ninja
+, pkg-config
+, gjs
+, gobject-introspection
+, blueprint-compiler
+, wrapGAppsHook4
+, desktop-file-utils
+, libadwaita
+, libgda6
+, gsound
+, gst_all_1
+, libportal-gtk4
+}:
+
+stdenv.mkDerivation {
+  pname = "pomodoro-gtk";
+  version = "1.4.1";
+
+  src = fetchFromGitLab {
+    owner = "idevecore";
+    repo = "pomodoro";
+    rev = "44b724557539084991f3eb55b9593053a2c73eba"; # author didn't make a tag
+    fetchSubmodules = true;
+    hash = "sha256-krVRVMrrzuqPY/3P9dCz7rVCCW7/j5cpT95XniGpBEs=";
+  };
+
+  postPatch = ''
+    patchShebangs --build troll/gjspack/bin/gjspack
+  '';
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gjs # runtime for gjspack
+    gobject-introspection
+    blueprint-compiler
+    wrapGAppsHook4
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    gjs
+    libadwaita
+    libgda6
+    gsound
+    gst_all_1.gst-plugins-base
+    libportal-gtk4
+  ];
+
+  meta = {
+    description = "A simple and intuitive timer application (also named Planytimer)";
+    homepage = "https://gitlab.com/idevecore/pomodoro";
+    license = lib.licenses.gpl3Plus;
+    mainProgram = "pomodoro";
+    maintainers = with lib.maintainers; [ aleksana ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/pr/pretalx/package.nix b/pkgs/by-name/pr/pretalx/package.nix
index bea6f3cc41c47..9f733eeb8fe4b 100644
--- a/pkgs/by-name/pr/pretalx/package.nix
+++ b/pkgs/by-name/pr/pretalx/package.nix
@@ -85,7 +85,9 @@ python.pkgs.buildPythonApplication rec {
   ]);
 
   pythonRelaxDeps = [
+    "cssutils"
     "django-csp"
+    "django-filter"
     "python-dateutil"
   ];
 
diff --git a/pkgs/by-name/pr/pretix/language-build.patch b/pkgs/by-name/pr/pretix/language-build.patch
deleted file mode 100644
index b4043b95446d6..0000000000000
--- a/pkgs/by-name/pr/pretix/language-build.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/pretix/_build_settings.py b/src/pretix/_build_settings.py
-index d1ea73b84..9e13cdc87 100644
---- a/src/pretix/_build_settings.py
-+++ b/src/pretix/_build_settings.py
-@@ -49,6 +49,7 @@ HAS_MEMCACHED = False
- HAS_CELERY = False
- HAS_GEOIP = False
- SENTRY_ENABLED = False
-+LANGUAGES = ALL_LANGUAGES
- 
- for entry_point in entry_points(group='pretix.plugin'):
-     INSTALLED_APPS.append(entry_point.module) # noqa: F405
diff --git a/pkgs/by-name/pr/pretix/package.nix b/pkgs/by-name/pr/pretix/package.nix
index 7b238ff6f8e4d..c8f31b88a7d60 100644
--- a/pkgs/by-name/pr/pretix/package.nix
+++ b/pkgs/by-name/pr/pretix/package.nix
@@ -2,7 +2,6 @@
 , buildNpmPackage
 , fetchFromGitHub
 , fetchPypi
-, fetchpatch2
 , nodejs
 , python3
 , gettext
@@ -30,13 +29,13 @@ let
   };
 
   pname = "pretix";
-  version = "2024.2.0";
+  version = "2024.3.0";
 
   src = fetchFromGitHub {
     owner = "pretix";
     repo = "pretix";
     rev = "refs/tags/v${version}";
-    hash = "sha256-emtF5dDXEXN8GIucHbjF+m9Vkg1Jj6nmQdHhBOkXMAs=";
+    hash = "sha256-Wz1vZcqgwyS0xJgTtRxqfaJpJ1fAMhIyxvTvBT/ABSo=";
   };
 
   npmDeps = buildNpmPackage {
@@ -44,7 +43,7 @@ let
     inherit version src;
 
     sourceRoot = "${src.name}/src/pretix/static/npm_dir";
-    npmDepsHash = "sha256-kE13dcTdWZZNHPMcHEiK0a2dEcu3Z3/q815YhaVkLbQ=";
+    npmDepsHash = "sha256-2fHlEEmYzpF3SyvF7+FbwCt+zQVGF0/kslDFnJ+DQGE=";
 
     dontBuild = true;
 
@@ -66,18 +65,6 @@ python.pkgs.buildPythonApplication rec {
     # Discover pretix.plugin entrypoints during build and add them into
     # INSTALLED_APPS, so that their static files are collected.
     ./plugin-build.patch
-
-    # Configure django-statici18n to compile all available languages at
-    # build time.
-    ./language-build.patch
-
-    (fetchpatch2 {
-      # Allow customization of cache and log directory
-      # https://github.com/pretix/pretix/pull/3997
-      name = "pretix-directory-customization.patch";
-      url = "https://github.com/pretix/pretix/commit/e151d1d1f08917e547df49da0779b36bb73b7294.patch";
-      hash = "sha256-lO5eCKSqUaCwSm7rouMTFMwauWl9Tz/Yf0JE/IO+bnI=";
-    })
   ];
 
   postPatch = ''
@@ -94,13 +81,16 @@ python.pkgs.buildPythonApplication rec {
       --replace-fail psycopg2-binary psycopg2 \
       --replace-fail vat_moss_forked==2020.3.20.0.11.0 vat-moss \
       --replace-fail "bleach==5.0.*" bleach \
-      --replace-fail "dnspython==2.5.*" dnspython \
+      --replace-fail "dnspython==2.6.*" dnspython \
+      --replace-fail "django-countries==7.5.*" django-countries \
+      --replace-fail "django-filter==24.1" django-filter \
       --replace-fail "importlib_metadata==7.*" importlib_metadata \
-      --replace-fail "protobuf==4.25.*" protobuf \
+      --replace-fail "markdown==3.6" markdown \
+      --replace-fail "protobuf==5.26.*" protobuf \
       --replace-fail "pycryptodome==3.20.*" pycryptodome \
       --replace-fail "pypdf==3.9.*" pypdf \
-      --replace-fail "python-dateutil==2.8.*" python-dateutil \
-      --replace-fail "sentry-sdk==1.40.*" sentry-sdk \
+      --replace-fail "python-dateutil==2.9.*" python-dateutil \
+      --replace-fail "sentry-sdk==1.42.*" sentry-sdk \
       --replace-fail "stripe==7.9.*" stripe
   '';
 
@@ -222,11 +212,6 @@ python.pkgs.buildPythonApplication rec {
 
   pytestFlagsArray = [
     "--reruns" "3"
-
-    # tests fail when run before 4:30am
-    # https://github.com/pretix/pretix/pull/3987
-    "--deselect=src/tests/base/test_orders.py::PaymentReminderTests::test_sent_days"
-    "--deselect=src/tests/plugins/sendmail/test_rules.py::test_sendmail_rule_specified_subevent"
   ];
 
   preCheck = ''
diff --git a/pkgs/by-name/pr/proto/package.nix b/pkgs/by-name/pr/proto/package.nix
new file mode 100644
index 0000000000000..62ca8f2b025de
--- /dev/null
+++ b/pkgs/by-name/pr/proto/package.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, darwin
+, libiconv
+, makeBinaryWrapper
+, pkg-config
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "proto";
+  version = "0.32.2";
+
+  src = fetchFromGitHub {
+    owner = "moonrepo";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-QxaVXggVfr3O26RwSuUx4qpabhWE9+ZFLKRin/ya2e4=";
+  };
+
+  cargoHash = "sha256-j5wXmlauhrUnUVTj/KyqDrf1y9bq3ZInREZXIUQImVE=";
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.SystemConfiguration
+    libiconv
+  ];
+  nativeBuildInputs = [ makeBinaryWrapper pkg-config ];
+
+  # Tests requires network access
+  doCheck = false;
+  cargoBuildFlags = [ "--bin proto" "--bin proto-shim" ];
+
+  postInstall = ''
+    # proto looks up a proto-shim executable file in $PROTO_LOOKUP_DIR
+    wrapProgram $out/bin/${pname} \
+      --set PROTO_LOOKUP_DIR $out/bin
+  '';
+
+  meta = {
+    description = "A pluggable multi-language version manager";
+    longDescription = ''
+      proto is a pluggable next-generation version manager for multiple programming languages. A unified toolchain.
+    '';
+    homepage = "https://moonrepo.dev/proto";
+    changelog = "https://github.com/moonrepo/proto/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ nokazn ];
+    mainProgram = "proto";
+    platforms = lib.platforms.linux ++ lib.platforms.darwin;
+  };
+}
diff --git a/pkgs/by-name/pr/protoc-go-inject-tag/package.nix b/pkgs/by-name/pr/protoc-go-inject-tag/package.nix
new file mode 100644
index 0000000000000..4bb673449ea6f
--- /dev/null
+++ b/pkgs/by-name/pr/protoc-go-inject-tag/package.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+buildGoModule rec {
+  pname = "protoc-go-inject-tag";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "favadi";
+    repo = "protoc-go-inject-tag";
+    rev = "v${version}";
+    sha256 = "01jsrx83pygvjx3nzfnwvb2vn5gagl79m9i67v7cfg1lzz168spj";
+  };
+
+  vendorHash = "sha256-tMpcJ37yGr7i91Kwz57FmJ+u2x0CAus0+yWOR10fJLo=";
+
+  meta = with lib; {
+    description = "Inject custom tags to protobuf golang struct";
+    homepage = "https://github.com/favadi/protoc-go-inject-tag/tree/v1.4.0";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [elrohirgt];
+    mainProgram = "protoc-go-inject-tag";
+  };
+}
diff --git a/pkgs/by-name/pr/prowler/package.nix b/pkgs/by-name/pr/prowler/package.nix
index 54cdf94882e5b..01dc71bf2fefb 100644
--- a/pkgs/by-name/pr/prowler/package.nix
+++ b/pkgs/by-name/pr/prowler/package.nix
@@ -6,17 +6,18 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "prowler";
-  version = "3.14.0";
+  version = "3.15.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "prowler-cloud";
     repo = "prowler";
     rev = "refs/tags/${version}";
-    hash = "sha256-hQVrKhBgucuZQ2CZKG6VJMsHUGkWNch9em2dRCbEA+A=";
+    hash = "sha256-7aWWaGdHTveFwXsFNj4+tjX5g83/nD77jLAOrDOw8JE=";
   };
 
   pythonRelaxDeps = [
+    "azure-keyvault-keys"
     "azure-mgmt-compute"
     "azure-mgmt-network"
     "azure-mgmt-security"
@@ -42,16 +43,22 @@ python3.pkgs.buildPythonApplication rec {
     alive-progress
     awsipranges
     azure-identity
+    azure-keyvault-keys
     azure-mgmt-applicationinsights
     azure-mgmt-authorization
     azure-mgmt-compute
+    azure-mgmt-containerservice
     azure-mgmt-cosmosdb
+    azure-mgmt-keyvault
+    azure-mgmt-monitor
     azure-mgmt-network
     azure-mgmt-rdbms
+    azure-mgmt-resource
     azure-mgmt-security
     azure-mgmt-sql
     azure-mgmt-storage
     azure-mgmt-subscription
+    azure-mgmt-web
     azure-storage-blob
     boto3
     botocore
diff --git a/pkgs/by-name/pu/pupdate/deps.nix b/pkgs/by-name/pu/pupdate/deps.nix
index ddbc8888d1b58..655f853c6aad9 100644
--- a/pkgs/by-name/pu/pupdate/deps.nix
+++ b/pkgs/by-name/pu/pupdate/deps.nix
@@ -6,6 +6,59 @@
   (fetchNuGet { pname = "ConsoleMenu-simple"; version = "2.6.1"; sha256 = "1vbi77schslq3nsardm4v8mrk0zi0phczwm2np1bl9z7c84h5cym"; })
   (fetchNuGet { pname = "Crc32.NET"; version = "1.2.0"; sha256 = "0qaj3192k1vfji87zf50rhydn5mrzyzybrs2k4v7ap29k8i0vi5h"; })
   (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
   (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.0"; sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy"; })
   (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
+  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
+  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn"; })
+  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
+  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
+  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8"; })
+  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
+  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
+  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
+  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
+  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
+  (fetchNuGet { pname = "runtime.native.System.IO.Compression"; version = "4.3.0"; sha256 = "1vvivbqsk6y4hzcid27pqpm5bsi6sc50hvqwbcx8aap5ifrxfs8d"; })
+  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
+  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
+  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
+  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
+  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
+  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
+  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
+  (fetchNuGet { pname = "runtime.unix.System.IO.FileSystem"; version = "4.3.0"; sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix"; })
+  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
+  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
+  (fetchNuGet { pname = "System.Buffers"; version = "4.3.0"; sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; })
+  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
+  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
+  (fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; })
+  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
+  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
+  (fetchNuGet { pname = "System.IO.Compression"; version = "4.3.0"; sha256 = "084zc82yi6yllgda0zkgl2ys48sypiswbiwrv7irb3r0ai1fp4vz"; })
+  (fetchNuGet { pname = "System.IO.Compression.ZipFile"; version = "4.3.0"; sha256 = "1yxy5pq4dnsm9hlkg9ysh5f6bf3fahqqb6p8668ndy5c0lk7w2ar"; })
+  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.3.0"; sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; })
+  (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; })
+  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
+  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
+  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
+  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
+  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
+  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
+  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
+  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
+  (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; })
+  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
+  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
 ]
diff --git a/pkgs/by-name/pu/pupdate/package.nix b/pkgs/by-name/pu/pupdate/package.nix
index 0e8ae1565418a..a0740f4869303 100644
--- a/pkgs/by-name/pu/pupdate/package.nix
+++ b/pkgs/by-name/pu/pupdate/package.nix
@@ -12,13 +12,13 @@
 
 buildDotnetModule rec {
   pname = "pupdate";
-  version = "3.9.1";
+  version = "3.10.1";
 
   src = fetchFromGitHub {
     owner = "mattpannella";
     repo = "${pname}";
     rev = "${version}";
-    hash = "sha256-3Bts/jTyivZ+ch7UjFo3oGVRmVK2QhCYh8NkeQhDYDY=";
+    hash = "sha256-xr5XD0V3kt4fDm8GNotGuttAeWwwlAr2iFA/RezvC4w=";
   };
 
   buildInputs = [
diff --git a/pkgs/by-name/pw/pwndbg/package.nix b/pkgs/by-name/pw/pwndbg/package.nix
new file mode 100644
index 0000000000000..2967130b7fd10
--- /dev/null
+++ b/pkgs/by-name/pw/pwndbg/package.nix
@@ -0,0 +1,58 @@
+{ lib
+, stdenv
+, python3
+, fetchFromGitHub
+, makeWrapper
+, gdb
+}:
+
+let
+  pwndbg-py = python3.pkgs.pwndbg;
+
+  pythonPath = python3.pkgs.makePythonPath [ pwndbg-py ];
+
+  binPath = lib.makeBinPath ([
+    python3.pkgs.pwntools # ref: https://github.com/pwndbg/pwndbg/blob/2022.12.19/pwndbg/wrappers/checksec.py#L8
+  ] ++ lib.optionals stdenv.isLinux [
+    python3.pkgs.ropper # ref: https://github.com/pwndbg/pwndbg/blob/2022.12.19/pwndbg/commands/ropper.py#L30
+    python3.pkgs.ropgadget # ref: https://github.com/pwndbg/pwndbg/blob/2022.12.19/pwndbg/commands/rop.py#L32
+  ]);
+in
+stdenv.mkDerivation rec {
+  pname = "pwndbg";
+  version = lib.getVersion pwndbg-py;
+  format = "other";
+
+  inherit (pwndbg-py) src;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/pwndbg
+    cp gdbinit.py $out/share/pwndbg
+    chmod +x $out/share/pwndbg/gdbinit.py
+
+    # Don't require an in-package venv
+    touch $out/share/pwndbg/.skip-venv
+
+    makeWrapper ${gdb}/bin/gdb $out/bin/pwndbg \
+      --add-flags "-q -x $out/share/pwndbg/gdbinit.py" \
+      --prefix PATH : ${binPath} \
+      --set PYTHONPATH ${pythonPath} \
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Exploit Development and Reverse Engineering with GDB Made Easy";
+    mainProgram = "pwndbg";
+    homepage = "https://github.com/pwndbg/pwndbg";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mic92 patryk4815 msanft ];
+    # not supported on aarch64-darwin see: https://inbox.sourceware.org/gdb/3185c3b8-8a91-4beb-a5d5-9db6afb93713@Spark/
+    broken = stdenv.isDarwin && stdenv.isAarch64;
+  };
+}
diff --git a/pkgs/by-name/py/pyprland/package.nix b/pkgs/by-name/py/pyprland/package.nix
index 7c5cc114f7678..c5681e11db548 100644
--- a/pkgs/by-name/py/pyprland/package.nix
+++ b/pkgs/by-name/py/pyprland/package.nix
@@ -2,7 +2,7 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "pyprland";
-  version = "2.1.4";
+  version = "2.2.3";
   format = "pyproject";
 
   disabled = python3Packages.pythonOlder "3.10";
@@ -11,7 +11,7 @@ python3Packages.buildPythonApplication rec {
     owner = "hyprland-community";
     repo = "pyprland";
     rev = "refs/tags/${version}";
-    hash = "sha256-vko8SY5d537bKnpVeJWM3D4WeYCXAvF6tCzlFjKIZRU=";
+    hash = "sha256-WGLcrmKHti5Hu2Ed4/G1UgYGXPyGYHmkPK/yo4gdMNM=";
   };
 
   nativeBuildInputs = with python3Packages; [ poetry-core ];
diff --git a/pkgs/by-name/qr/qrtool/package.nix b/pkgs/by-name/qr/qrtool/package.nix
index 2748048299624..74d0ba6cf9e8b 100644
--- a/pkgs/by-name/qr/qrtool/package.nix
+++ b/pkgs/by-name/qr/qrtool/package.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "qrtool";
-  version = "0.10.6";
+  version = "0.10.7";
 
   src = fetchFromGitHub {
     owner = "sorairolake";
     repo = "qrtool";
     rev = "v${version}";
-    sha256 = "sha256-uniYvYFrwlYfTPpg4lKa2GLURdLHDRFfym8FjrKfSL4=";
+    sha256 = "sha256-IK+ltZIiJDzD5vPbAQrQlXjAT5+hPb9layzBjXC7yl4=";
   };
 
-  cargoHash = "sha256-f0ufdFGrOIHFrDLz3rwNSl3AlM6um0r9bQzfn0Syd1M=";
+  cargoHash = "sha256-ARKlbf2C6KYain9ET3kyzElXWk8SHM5M/RPUbYqLJ6o=";
 
   nativeBuildInputs = [ asciidoctor installShellFiles ];
 
diff --git a/pkgs/by-name/qu/quarkus/package.nix b/pkgs/by-name/qu/quarkus/package.nix
index 29fd9f2af5393..066de07364560 100644
--- a/pkgs/by-name/qu/quarkus/package.nix
+++ b/pkgs/by-name/qu/quarkus/package.nix
@@ -7,11 +7,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "quarkus-cli";
-  version = "3.9.1";
+  version = "3.9.2";
 
   src = fetchurl {
     url = "https://github.com/quarkusio/quarkus/releases/download/${finalAttrs.version}/quarkus-cli-${finalAttrs.version}.tar.gz";
-    hash = "sha256-qWlg6ZferLAy3TOyFe7Dhy102GzISGpB08Dwy8JFxSk=";
+    hash = "sha256-olMkkvyEfMSktypmLBjJo/wL2zKOLvqms7TRucuAt78=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/by-name/ra/rabbit/package.nix b/pkgs/by-name/ra/rabbit/package.nix
index 1ae11cb48371a..60923f6bbc018 100644
--- a/pkgs/by-name/ra/rabbit/package.nix
+++ b/pkgs/by-name/ra/rabbit/package.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "rabbit";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "natarajan-chidambaram";
     repo = "RABBIT";
     rev = "refs/tags/${version}";
-    hash = "sha256-E4eUnkKn73MqBFHACdRVFjyUbee+ZJvhP+UYnvHTGdc=";
+    hash = "sha256-5ItoWjPpAbQFM6+B+1CvZe5r5rZXQ8pWj7gRIKGX8ZA=";
   };
 
   pythonRelaxDeps = true;
diff --git a/pkgs/by-name/re/realmd/package.nix b/pkgs/by-name/re/realmd/package.nix
new file mode 100644
index 0000000000000..4757931926a3f
--- /dev/null
+++ b/pkgs/by-name/re/realmd/package.nix
@@ -0,0 +1,80 @@
+{
+  autoreconfHook,
+  fetchFromGitLab,
+  glib,
+  lib,
+  libkrb5,
+  nix-update-script,
+  openldap,
+  pkg-config,
+  polkit,
+  samba,
+  stdenv,
+  systemdLibs,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "realmd";
+  version = "0.17.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "realmd";
+    repo = "realmd";
+    rev = "refs/tags/${finalAttrs.version}";
+    hash = "sha256-lmNlrXOOUSDk/8H/ge0IRA64bnau9nYUIkW6OyVxbBg=";
+  };
+
+  patches = [
+    # Remove unused tap driver/valgrind checks to make tests work
+    ./remove-tap-driver.patch
+  ];
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+  ];
+
+  buildInputs = [
+    glib
+    libkrb5
+    openldap
+    polkit
+    samba
+    systemdLibs
+  ];
+
+  configureFlags = [
+    "--sysconfdir=${placeholder "out"}/etc"
+    "--with-private-dir=${placeholder "out"}/lib/realmd"
+    "--with-systemd-unit-dir=${placeholder "out"}/lib/systemd/system"
+
+    # realmd doesn't fails without proper defaults and distro configuration files
+    # These settings will be overriden by the NixOS module
+    "--with-distro=redhat"
+
+    # Documentation is disabled
+    # We need to run gdbus-codegen & xmlto in **offline mode** to make it work
+    # See https://github.com/NixOS/nixpkgs/pull/301631
+    "--disable-doc"
+  ];
+
+  hardeningDisable = [
+    # causes redefinition of _FORTIFY_SOURCE
+    "fortify3"
+  ];
+
+  doCheck = true;
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    changelog = "https://gitlab.freedesktop.org/realmd/realmd/-/blob/${finalAttrs.version}/NEWS";
+    description = "DBus service for configuring Kerberos and other online identities";
+    homepage = "https://gitlab.freedesktop.org/realmd/realmd";
+    license = lib.licenses.lgpl21Only;
+    mainProgram = "realm";
+    maintainers = [ lib.maintainers.anthonyroussel ];
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/re/realmd/remove-tap-driver.patch b/pkgs/by-name/re/realmd/remove-tap-driver.patch
new file mode 100644
index 0000000000000..162703d9b9663
--- /dev/null
+++ b/pkgs/by-name/re/realmd/remove-tap-driver.patch
@@ -0,0 +1,40 @@
+diff --git a/Makefile.am b/Makefile.am
+index 1df20d1..b355d59 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -152,35 +152,6 @@ uninstall-doc:
+ 	@true
+ endif
+
+-# ------------------------------------------------------------
+-# Testing
+-#
+-
+-LOG_DRIVER = $(top_srcdir)/build/tap-driver
+-LOG_COMPILER = sh -c '"$$0" "$$@" --tap'
+-
+-VALGRIND_ARGS = --trace-children=no --quiet --error-exitcode=33 \
+-	--suppressions=valgrind-suppressions --gen-suppressions=all \
+-	--num-callers=16
+-
+-VALGRIND_SUPPRESSIONS = \
+-	build/glib.supp \
+-	$(NULL)
+-
+-valgrind-suppressions: $(VALGRIND_SUPPRESSIONS)
+-	$(AM_V_GEN) cat $^ > $@
+-
+-check-memory: valgrind-suppressions
+-	$(MAKE) LOG_FLAGS="-- libtool --mode=execute valgrind $(VALGRIND_ARGS)" \
+-		$(AM_MAKEFLAGS) check
+-recheck-memory: valgrind-suppressions
+-	$(MAKE) LOG_FLAGS="-- libtool --mode=execute valgrind $(VALGRIND_ARGS)" \
+-		$(AM_MAKEFLAGS) recheck
+-
+-EXTRA_DIST += \
+-	$(LOG_DRIVER) \
+-	$(VALGRIND_SUPPRESSIONS) \
+-	$(NULL)
+
+ if WITH_COVERAGE
+ coverage:
diff --git a/pkgs/by-name/re/redict/package.nix b/pkgs/by-name/re/redict/package.nix
new file mode 100644
index 0000000000000..39133faa9b1ba
--- /dev/null
+++ b/pkgs/by-name/re/redict/package.nix
@@ -0,0 +1,94 @@
+{ lib, stdenv, fetchFromGitea, fetchurl, fetchpatch, lua, jemalloc, pkg-config, nixosTests
+, tcl, which, ps, getconf
+, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, systemd
+# dependency ordering is broken at the moment when building with openssl
+, tlsSupport ? !stdenv.hostPlatform.isStatic, openssl
+
+# Using system jemalloc fixes cross-compilation and various setups.
+# However the experimental 'active defragmentation' feature of redict requires
+# their custom patched version of jemalloc.
+, useSystemJemalloc ? true
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "redict";
+  version = "7.3.0";
+
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "redict";
+    repo = "redict";
+    rev = finalAttrs.version;
+    hash = "sha256-vtDb+VqDAtrce6dpDRnPO6N9Z6dFfy8fUUqNeiZ+r5c=";
+  };
+
+  patches = lib.optionals useSystemJemalloc [
+    # use system jemalloc
+    (fetchurl {
+      url = "https://gitlab.archlinux.org/archlinux/packaging/packages/redis/-/raw/102cc861713c796756abd541bf341a4512eb06e6/redis-5.0-use-system-jemalloc.patch";
+      hash = "sha256-VPRfoSnctkkkzLrXEWQX3Lh5HmZaCXoJafyOG007KzM=";
+    })
+  ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ lua ]
+    ++ lib.optional useSystemJemalloc jemalloc
+    ++ lib.optional withSystemd systemd
+    ++ lib.optionals tlsSupport [ openssl ];
+
+  preBuild = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace src/Makefile --replace "-flto" ""
+  '';
+
+  # More cross-compiling fixes.
+  makeFlags = [ "PREFIX=${placeholder "out"}" ]
+    ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "AR=${stdenv.cc.targetPrefix}ar" "RANLIB=${stdenv.cc.targetPrefix}ranlib" ]
+    ++ lib.optionals withSystemd [ "USE_SYSTEMD=yes" ]
+    ++ lib.optionals tlsSupport [ "BUILD_TLS=yes" ];
+
+  enableParallelBuilding = true;
+
+  hardeningEnable = lib.optionals (!stdenv.isDarwin) [ "pie" ];
+
+  env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isClang [ "-std=c11" ]);
+
+  # darwin currently lacks a pure `pgrep` which is extensively used here
+  doCheck = !stdenv.isDarwin;
+  nativeCheckInputs = [ which tcl ps ] ++ lib.optionals stdenv.hostPlatform.isStatic [ getconf ];
+  checkPhase = ''
+    runHook preCheck
+
+    # disable test "Connect multiple replicas at the same time": even
+    # upstream find this test too timing-sensitive
+    substituteInPlace tests/integration/replication.tcl \
+      --replace 'foreach mdl {no yes}' 'foreach mdl {}'
+
+    substituteInPlace tests/support/server.tcl \
+      --replace 'exec /usr/bin/env' 'exec env'
+
+    sed -i '/^proc wait_load_handlers_disconnected/{n ; s/wait_for_condition 50 100/wait_for_condition 50 500/; }' \
+      tests/support/util.tcl
+
+    ./runtest \
+      --no-latency \
+      --timeout 2000 \
+      --clients $NIX_BUILD_CORES \
+      --tags -leaks \
+      --skipunit integration/failover # flaky and slow
+
+    runHook postCheck
+  '';
+
+  passthru.tests.redict = nixosTests.redict;
+
+  meta = with lib; {
+    homepage = "https://redict.io";
+    description = "A distributed key/value store";
+    license = licenses.lgpl3Only;
+    platforms = platforms.all;
+    changelog = "https://codeberg.org/redict/redict/releases/tag/${finalAttrs.version}";
+    maintainers = with maintainers; [ yuka gmemstr ];
+    mainProgram = "redict-cli";
+  };
+})
diff --git a/pkgs/by-name/re/renode/package.nix b/pkgs/by-name/re/renode/package.nix
index ab0df9f5c3e10..0a514587f8384 100644
--- a/pkgs/by-name/re/renode/package.nix
+++ b/pkgs/by-name/re/renode/package.nix
@@ -1,5 +1,6 @@
 { stdenv
 , lib
+, fetchFromGitHub
 , fetchurl
 , autoPatchelfHook
 , makeWrapper
@@ -17,7 +18,15 @@ let
     psutil
     pyyaml
     requests
-    robotframework
+
+    (robotframework.overrideDerivation (oldAttrs: {
+      src = fetchFromGitHub {
+        owner = "robotframework";
+        repo = "robotframework";
+        rev = "v6.0.2";
+        hash = "sha256-c7pPcDgqyqWQtiMbLQbQd0nAgx4TIFUFHrlBVDNdr8M=";
+      };
+    }))
   ];
 in
 stdenv.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/re/rerun/package.nix b/pkgs/by-name/re/rerun/package.nix
index 9c96b86f64c9f..844f97700c226 100644
--- a/pkgs/by-name/re/rerun/package.nix
+++ b/pkgs/by-name/re/rerun/package.nix
@@ -1,6 +1,7 @@
 {
   lib,
   rustPlatform,
+  fetchpatch,
   fetchFromGitHub,
   pkg-config,
   stdenv,
@@ -32,6 +33,14 @@ rustPlatform.buildRustPackage rec {
   patches = [
     # Disables a doctest that depends on a nightly feature
     ./0001-re_space_view_time_series-utils-patch-out-doctests-w.patch
+
+
+    # "Fix cell size test now that the overhead has shrunk"
+    # https://github.com/rerun-io/rerun/pull/5917
+    (fetchpatch {
+      url = "https://github.com/rerun-io/rerun/commit/933fc5cc1f3ee262a78bd4647257295747671152.patch";
+      hash = "sha256-jCeGfzKt0oYqIea+7bA2V/U9VIjhVvfQzLRrYG4jaHY=";
+    })
   ];
 
   cargoHash = "sha256-qvnkOlcjADV4b+JfFAy9yNaZGaf0ZO7hh9HBg5XmPi0=";
@@ -96,7 +105,7 @@ rustPlatform.buildRustPackage rec {
     )
   '';
 
-  postPhases = lib.optionals stdenv.hostPlatform.isLinux  [ "addDlopenRunpathsPhase" ];
+  postPhases = lib.optionals stdenv.hostPlatform.isLinux [ "addDlopenRunpathsPhase" ];
 
   cargoTestFlags = [
     "-p"
diff --git a/pkgs/by-name/ro/rockcraft/package.nix b/pkgs/by-name/ro/rockcraft/package.nix
index cd2ded12564fa..e1b29f50061b0 100644
--- a/pkgs/by-name/ro/rockcraft/package.nix
+++ b/pkgs/by-name/ro/rockcraft/package.nix
@@ -8,13 +8,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "rockcraft";
-  version = "1.2.2";
+  version = "1.2.3";
 
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "rockcraft";
     rev = "refs/tags/${version}";
-    hash = "sha256-f6qLvk5cebHjZx51nJYYAwILGCTyj6FKlb3HGt6iz4M=";
+    hash = "sha256-Qk7Fi4I/5TCf9llGTsTBQsAxUkeVmAlH6tFNYMsyZ1c=";
   };
 
   postPatch = ''
diff --git a/pkgs/by-name/rp/rpcs3/package.nix b/pkgs/by-name/rp/rpcs3/package.nix
index 058d95bb44143..ebd4fedee2ad1 100644
--- a/pkgs/by-name/rp/rpcs3/package.nix
+++ b/pkgs/by-name/rp/rpcs3/package.nix
@@ -32,10 +32,10 @@
 
 let
   # Keep these separate so the update script can regex them
-  rpcs3GitVersion = "15726-ebf48800e";
-  rpcs3Version = "0.0.29-15726-ebf48800e";
-  rpcs3Revision = "ebf48800e6bf2569fa0a59974ab2daaeb3a92f23";
-  rpcs3Hash = "sha256-HJQ+DCZy8lwMCfq0N9StKD8bP1hCBxGMAucbQ9esy/I=";
+  rpcs3GitVersion = "16271-4ecf8ecd0";
+  rpcs3Version = "0.0.31-16271-4ecf8ecd0";
+  rpcs3Revision = "4ecf8ecd06c15f0557e1d9243f31e4c2d7baebe2";
+  rpcs3Hash = "sha256-y7XLYo1qYYiNE4TXVxfUTCmyGkthpj3IU1gdKTgb8KY=";
 
   inherit (qt6Packages) qtbase qtmultimedia wrapQtAppsHook qtwayland;
 in
diff --git a/pkgs/by-name/rp/rpcs3/update.sh b/pkgs/by-name/rp/rpcs3/update.sh
index 8eb3752a460de..b53d23f88fceb 100755
--- a/pkgs/by-name/rp/rpcs3/update.sh
+++ b/pkgs/by-name/rp/rpcs3/update.sh
@@ -4,7 +4,7 @@
 set -eou pipefail
 
 ROOT="$(dirname "$(readlink -f "$0")")"
-if [[ ! "$(basename $ROOT)" == "rpcs3" || ! -f "$ROOT/default.nix" ]]; then
+if [[ ! "$(basename $ROOT)" == "rpcs3" || ! -f "$ROOT/package.nix" ]]; then
     echo "ERROR: Not in the rpcs3 folder"
     exit 1
 fi
diff --git a/pkgs/by-name/rq/rqbit/Cargo.lock b/pkgs/by-name/rq/rqbit/Cargo.lock
index 73a64e8e8f985..a24314e30eb91 100644
--- a/pkgs/by-name/rq/rqbit/Cargo.lock
+++ b/pkgs/by-name/rq/rqbit/Cargo.lock
@@ -130,9 +130,9 @@ dependencies = [
 
 [[package]]
 name = "async-trait"
-version = "0.1.78"
+version = "0.1.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -141,9 +141,9 @@ dependencies = [
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
 
 [[package]]
 name = "axum"
@@ -167,7 +167,7 @@ dependencies = [
  "pin-project-lite",
  "rustversion",
  "serde",
- "sync_wrapper",
+ "sync_wrapper 0.1.2",
  "tower",
  "tower-layer",
  "tower-service",
@@ -175,9 +175,9 @@ dependencies = [
 
 [[package]]
 name = "axum"
-version = "0.7.4"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e"
+checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
 dependencies = [
  "async-trait",
  "axum-core 0.4.3",
@@ -199,7 +199,7 @@ dependencies = [
  "serde_json",
  "serde_path_to_error",
  "serde_urlencoded",
- "sync_wrapper",
+ "sync_wrapper 1.0.0",
  "tokio",
  "tower",
  "tower-layer",
@@ -239,7 +239,7 @@ dependencies = [
  "mime",
  "pin-project-lite",
  "rustversion",
- "sync_wrapper",
+ "sync_wrapper 0.1.2",
  "tower-layer",
  "tower-service",
  "tracing",
@@ -258,9 +258,9 @@ dependencies = [
 
 [[package]]
 name = "backtrace"
-version = "0.3.70"
+version = "0.3.71"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95d8e92cac0961e91dbd517496b00f7e9b92363dbe6d42c3198268323798860c"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
 dependencies = [
  "addr2line",
  "cc",
@@ -278,6 +278,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
+name = "base64"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
+
+[[package]]
 name = "bincode"
 version = "1.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -333,9 +339,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
 
 [[package]]
 name = "cc"
@@ -351,9 +357,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.35"
+version = "0.4.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
@@ -668,9 +674,9 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
 
 [[package]]
 name = "fixedbitset"
@@ -834,9 +840,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.12"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "a06fddc2749e0528d2813f95e050e87e52c8cbbae56223b9babf73b3e53b0cc6"
 dependencies = [
  "cfg-if",
  "libc",
@@ -851,9 +857,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 
 [[package]]
 name = "h2"
-version = "0.3.25"
+version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
 dependencies = [
  "bytes",
  "fnv",
@@ -861,7 +867,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http 0.2.12",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "slab",
  "tokio",
  "tokio-util",
@@ -870,9 +876,9 @@ dependencies = [
 
 [[package]]
 name = "h2"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51ee2dd2e4f378392eeff5d51618cd9a63166a2513846bbc55f21cfacd9199d4"
+checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069"
 dependencies = [
  "bytes",
  "fnv",
@@ -880,7 +886,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http 1.1.0",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "slab",
  "tokio",
  "tokio-util",
@@ -905,7 +911,7 @@ version = "7.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d"
 dependencies = [
- "base64",
+ "base64 0.21.7",
  "byteorder",
  "flate2",
  "nom",
@@ -1020,7 +1026,7 @@ dependencies = [
  "futures-channel",
  "futures-core",
  "futures-util",
- "h2 0.3.25",
+ "h2 0.3.26",
  "http 0.2.12",
  "http-body 0.4.6",
  "httparse",
@@ -1043,7 +1049,7 @@ dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
- "h2 0.4.3",
+ "h2 0.4.4",
  "http 1.1.0",
  "http-body 1.0.0",
  "httparse",
@@ -1172,9 +1178,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.2.5"
+version = "2.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
  "hashbrown 0.14.3",
@@ -1198,15 +1204,6 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
 
 [[package]]
 name = "itertools"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itertools"
 version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
@@ -1216,9 +1213,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "js-sys"
@@ -1254,24 +1251,23 @@ checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
 name = "libredox"
-version = "0.0.1"
+version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
 dependencies = [
  "bitflags 2.5.0",
  "libc",
- "redox_syscall",
 ]
 
 [[package]]
 name = "librqbit"
-version = "5.5.4"
+version = "5.6.0"
 dependencies = [
  "anyhow",
  "async-stream",
- "axum 0.7.4",
+ "axum 0.7.5",
  "backoff",
- "base64",
+ "base64 0.21.7",
  "bincode",
  "bitvec",
  "byteorder",
@@ -1281,7 +1277,7 @@ dependencies = [
  "futures",
  "hex 0.4.3",
  "http 1.1.0",
- "itertools 0.12.1",
+ "itertools",
  "librqbit-bencode",
  "librqbit-buffers",
  "librqbit-clone-to-owned",
@@ -1341,12 +1337,12 @@ version = "2.2.1"
 
 [[package]]
 name = "librqbit-core"
-version = "3.6.2"
+version = "3.7.0"
 dependencies = [
  "anyhow",
  "directories",
  "hex 0.4.3",
- "itertools 0.12.1",
+ "itertools",
  "librqbit-bencode",
  "librqbit-buffers",
  "librqbit-clone-to-owned",
@@ -1362,7 +1358,7 @@ dependencies = [
 
 [[package]]
 name = "librqbit-dht"
-version = "5.0.2"
+version = "5.0.3"
 dependencies = [
  "anyhow",
  "backoff",
@@ -1370,7 +1366,7 @@ dependencies = [
  "dashmap",
  "futures",
  "hex 0.4.3",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "leaky-bucket",
  "librqbit-bencode",
  "librqbit-clone-to-owned",
@@ -1388,7 +1384,7 @@ dependencies = [
 
 [[package]]
 name = "librqbit-peer-protocol"
-version = "3.5.1"
+version = "3.5.2"
 dependencies = [
  "anyhow",
  "bincode",
@@ -1410,7 +1406,7 @@ dependencies = [
 
 [[package]]
 name = "librqbit-tracker-comms"
-version = "1.0.1"
+version = "1.0.2"
 dependencies = [
  "anyhow",
  "async-stream",
@@ -1484,9 +1480,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
 
 [[package]]
 name = "memchr"
-version = "2.7.1"
+version = "2.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
 
 [[package]]
 name = "mime"
@@ -1719,9 +1715,9 @@ dependencies = [
 
 [[package]]
 name = "openssl-sys"
-version = "0.9.101"
+version = "0.9.102"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff"
+checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
 dependencies = [
  "cc",
  "libc",
@@ -1792,7 +1788,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
 dependencies = [
  "fixedbitset",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
 ]
 
 [[package]]
@@ -1817,9 +1813,9 @@ dependencies = [
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
 
 [[package]]
 name = "pin-utils"
@@ -1856,9 +1852,9 @@ dependencies = [
 
 [[package]]
 name = "prost"
-version = "0.12.3"
+version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
+checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922"
 dependencies = [
  "bytes",
  "prost-derive",
@@ -1866,12 +1862,12 @@ dependencies = [
 
 [[package]]
 name = "prost-derive"
-version = "0.12.3"
+version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
+checksum = "19de2de2a00075bf566bee3bd4db014b11587e84184d3f7a791bc17f1a8e9e48"
 dependencies = [
  "anyhow",
- "itertools 0.11.0",
+ "itertools",
  "proc-macro2",
  "quote",
  "syn",
@@ -1879,9 +1875,9 @@ dependencies = [
 
 [[package]]
 name = "prost-types"
-version = "0.12.3"
+version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
+checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe"
 dependencies = [
  "prost",
 ]
@@ -1942,9 +1938,9 @@ dependencies = [
 
 [[package]]
 name = "redox_users"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
 dependencies = [
  "getrandom",
  "libredox",
@@ -1953,14 +1949,14 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.3"
+version = "1.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
 dependencies = [
  "aho-corasick",
  "memchr",
  "regex-automata 0.4.6",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.3",
 ]
 
 [[package]]
@@ -1980,7 +1976,7 @@ checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.8.2",
+ "regex-syntax 0.8.3",
 ]
 
 [[package]]
@@ -1991,22 +1987,22 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
 
 [[package]]
 name = "reqwest"
-version = "0.12.0"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58b48d98d932f4ee75e541614d32a7f44c889b72bd9c2e04d95edd135989df88"
+checksum = "3e6cc1e89e689536eb5aeede61520e874df5a4707df811cd5da4aa5fbb2aae19"
 dependencies = [
- "base64",
+ "base64 0.22.0",
  "bytes",
  "encoding_rs",
  "futures-core",
  "futures-util",
- "h2 0.4.3",
+ "h2 0.4.4",
  "http 1.1.0",
  "http-body 1.0.0",
  "http-body-util",
@@ -2028,7 +2024,7 @@ dependencies = [
  "serde",
  "serde_json",
  "serde_urlencoded",
- "sync_wrapper",
+ "sync_wrapper 0.1.2",
  "system-configuration",
  "tokio",
  "tokio-native-tls",
@@ -2068,7 +2064,7 @@ dependencies = [
 
 [[package]]
 name = "rqbit"
-version = "5.5.4"
+version = "5.6.0"
 dependencies = [
  "anyhow",
  "bytes",
@@ -2110,9 +2106,9 @@ dependencies = [
 
 [[package]]
 name = "rustls"
-version = "0.22.2"
+version = "0.22.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41"
+checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c"
 dependencies = [
  "log",
  "ring",
@@ -2124,18 +2120,19 @@ dependencies = [
 
 [[package]]
 name = "rustls-pemfile"
-version = "1.0.4"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab"
 dependencies = [
- "base64",
+ "base64 0.21.7",
+ "rustls-pki-types",
 ]
 
 [[package]]
 name = "rustls-pki-types"
-version = "1.3.1"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8"
+checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247"
 
 [[package]]
 name = "rustls-webpki"
@@ -2177,9 +2174,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "security-framework"
-version = "2.9.2"
+version = "2.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6"
 dependencies = [
  "bitflags 1.3.2",
  "core-foundation",
@@ -2190,9 +2187,9 @@ dependencies = [
 
 [[package]]
 name = "security-framework-sys"
-version = "2.9.1"
+version = "2.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef"
 dependencies = [
  "core-foundation-sys",
  "libc",
@@ -2232,9 +2229,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.114"
+version = "1.0.115"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
 dependencies = [
  "itoa",
  "ryu",
@@ -2269,11 +2266,11 @@ version = "3.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a"
 dependencies = [
- "base64",
+ "base64 0.21.7",
  "chrono",
  "hex 0.4.3",
  "indexmap 1.9.3",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "serde",
  "serde_derive",
  "serde_json",
@@ -2368,9 +2365,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
 
 [[package]]
 name = "syn"
-version = "2.0.53"
+version = "2.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
+checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2384,6 +2381,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
 
 [[package]]
+name = "sync_wrapper"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c"
+
+[[package]]
 name = "system-configuration"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2510,9 +2513,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.36.0"
+version = "1.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
 dependencies = [
  "backtrace",
  "bytes",
@@ -2616,9 +2619,9 @@ dependencies = [
  "async-stream",
  "async-trait",
  "axum 0.6.20",
- "base64",
+ "base64 0.21.7",
  "bytes",
- "h2 0.3.25",
+ "h2 0.3.26",
  "http 0.2.12",
  "http-body 0.4.6",
  "hyper 0.14.28",
@@ -3112,9 +3115,9 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
 
 [[package]]
 name = "winreg"
-version = "0.50.0"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
 dependencies = [
  "cfg-if",
  "windows-sys 0.48.0",
@@ -3131,9 +3134,9 @@ dependencies = [
 
 [[package]]
 name = "xml-rs"
-version = "0.8.19"
+version = "0.8.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
+checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
 
 [[package]]
 name = "zeroize"
diff --git a/pkgs/by-name/rq/rqbit/package.nix b/pkgs/by-name/rq/rqbit/package.nix
index 06ff09e5cc37d..6ce43d31dbdbf 100644
--- a/pkgs/by-name/rq/rqbit/package.nix
+++ b/pkgs/by-name/rq/rqbit/package.nix
@@ -2,13 +2,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rqbit";
-  version = "5.5.4";
+  version = "5.6.0";
 
   src = fetchFromGitHub {
     owner = "ikatson";
     repo = "rqbit";
     rev = "v${version}";
-    hash = "sha256-o+v/h51F9xXzMLSkRJfmXddKskMXTF2p5LEIcoXvh74=";
+    hash = "sha256-KpwKSbj9B/O/RBO1PLkcYguZiuxrGcYyX3Wt4sQhe2o=";
   };
 
   cargoLock = {
diff --git a/pkgs/by-name/ru/rustdesk-flutter/Cargo.lock b/pkgs/by-name/ru/rustdesk-flutter/Cargo.lock
index ffc56162b8091..71a84c474751d 100644
--- a/pkgs/by-name/ru/rustdesk-flutter/Cargo.lock
+++ b/pkgs/by-name/ru/rustdesk-flutter/Cargo.lock
@@ -19,9 +19,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
 name = "aes"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
 dependencies = [
  "cfg-if 1.0.0",
  "cipher",
@@ -30,9 +30,9 @@ dependencies = [
 
 [[package]]
 name = "ahash"
-version = "0.7.7"
+version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd"
+checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
 dependencies = [
  "getrandom",
  "once_cell",
@@ -41,9 +41,9 @@ dependencies = [
 
 [[package]]
 name = "ahash"
-version = "0.8.7"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
 dependencies = [
  "cfg-if 1.0.0",
  "once_cell",
@@ -53,9 +53,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -118,9 +118,9 @@ dependencies = [
 [[package]]
 name = "amf"
 version = "0.1.0"
-source = "git+https://github.com/21pages/gpucodec#4650b5f1376f92c59a9cdbbbe05a744248325eec"
+source = "git+https://github.com/21pages/gpucodec#6321fdeb6246ceee07b2b63060f8fe48a540f353"
 dependencies = [
- "bindgen 0.59.2",
+ "bindgen 0.65.1",
  "cc",
  "gpu_common",
  "log",
@@ -155,7 +155,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c494134f746c14dc653a35a4ea5aca24ac368529da5370ecf41fe0341c35772f"
 dependencies = [
  "android_log-sys",
- "env_logger 0.10.0",
+ "env_logger 0.10.2",
  "log",
  "once_cell",
 ]
@@ -180,9 +180,9 @@ dependencies = [
 
 [[package]]
 name = "anstream"
-version = "0.6.5"
+version = "0.6.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -194,9 +194,9 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.4"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
 
 [[package]]
 name = "anstyle-parse"
@@ -228,55 +228,17 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.79"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
-
-[[package]]
-name = "apple-bindgen"
-version = "0.2.0"
+version = "1.0.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38f109ee76f68b4767848cb5dc93bfcc7c425deca849c4c81fa11cdce525e3d2"
-dependencies = [
- "apple-sdk",
- "bindgen 0.63.0",
- "derive_more",
- "regex",
- "serde 1.0.195",
- "thiserror",
- "toml 0.6.0",
-]
-
-[[package]]
-name = "apple-sdk"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a04f192a700686ee70008ff4e4eb76fe7d11814ab93b7ee9d48c36b9a9f0bd2a"
-dependencies = [
- "plist",
- "serde 1.0.195",
- "serde_json 1.0.111",
-]
-
-[[package]]
-name = "apple-sys"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12b3a1c3342678cd72676d0c1644fde496c1f65ea41f51465f54a89cad3bdf34"
-dependencies = [
- "apple-bindgen",
- "apple-sdk",
- "objc",
-]
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
 
 [[package]]
 name = "arboard"
-version = "3.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aafb29b107435aa276664c1db8954ac27a6e105cdad3c88287a199eb0e313c08"
+version = "3.3.1"
+source = "git+https://github.com/fufesou/arboard?branch=feat/x11_set_conn_timeout#9e6f5357485afc4a4fd817f815c773beca57e1f3"
 dependencies = [
  "clipboard-win",
- "core-graphics 0.22.3",
+ "core-graphics 0.23.2",
  "image",
  "log",
  "objc",
@@ -284,9 +246,9 @@ dependencies = [
  "objc_id",
  "parking_lot",
  "thiserror",
- "winapi 0.3.9",
+ "windows-sys 0.48.0",
  "wl-clipboard-rs",
- "x11rb",
+ "x11rb 0.13.0",
 ]
 
 [[package]]
@@ -301,13 +263,15 @@ dependencies = [
 
 [[package]]
 name = "async-channel"
-version = "1.9.0"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
 dependencies = [
  "concurrent-queue",
- "event-listener 2.5.3",
+ "event-listener 5.2.0",
+ "event-listener-strategy 0.5.0",
  "futures-core",
+ "pin-project-lite",
 ]
 
 [[package]]
@@ -325,15 +289,15 @@ dependencies = [
 
 [[package]]
 name = "async-executor"
-version = "1.6.0"
+version = "1.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0"
+checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316"
 dependencies = [
- "async-lock",
+ "async-lock 3.3.0",
  "async-task",
  "concurrent-queue",
- "fastrand 2.0.1",
- "futures-lite",
+ "fastrand 2.0.2",
+ "futures-lite 2.3.0",
  "slab",
 ]
 
@@ -343,10 +307,10 @@ version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06"
 dependencies = [
- "async-lock",
- "autocfg 1.1.0",
+ "async-lock 2.8.0",
+ "autocfg 1.2.0",
  "blocking",
- "futures-lite",
+ "futures-lite 1.13.0",
 ]
 
 [[package]]
@@ -355,14 +319,14 @@ version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
 dependencies = [
- "async-lock",
- "autocfg 1.1.0",
+ "async-lock 2.8.0",
+ "autocfg 1.2.0",
  "cfg-if 1.0.0",
  "concurrent-queue",
- "futures-lite",
+ "futures-lite 1.13.0",
  "log",
  "parking",
- "polling",
+ "polling 2.8.0",
  "rustix 0.37.27",
  "slab",
  "socket2 0.4.10",
@@ -370,6 +334,25 @@ dependencies = [
 ]
 
 [[package]]
+name = "async-io"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884"
+dependencies = [
+ "async-lock 3.3.0",
+ "cfg-if 1.0.0",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite 2.3.0",
+ "parking",
+ "polling 3.5.0",
+ "rustix 0.38.32",
+ "slab",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
 name = "async-lock"
 version = "2.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -379,46 +362,57 @@ dependencies = [
 ]
 
 [[package]]
+name = "async-lock"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
+dependencies = [
+ "event-listener 4.0.3",
+ "event-listener-strategy 0.4.0",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "async-process"
 version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88"
 dependencies = [
- "async-io",
- "async-lock",
+ "async-io 1.13.0",
+ "async-lock 2.8.0",
  "async-signal",
  "blocking",
  "cfg-if 1.0.0",
- "event-listener 3.0.0",
- "futures-lite",
- "rustix 0.38.28",
+ "event-listener 3.1.0",
+ "futures-lite 1.13.0",
+ "rustix 0.38.32",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "async-recursion"
-version = "1.0.5"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
+checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
 name = "async-signal"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2a5415b7abcdc9cd7d63d6badba5288b2ca017e3fbd4173b8f405449f1a2399"
+checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
 dependencies = [
- "async-io",
- "async-lock",
+ "async-io 2.3.2",
+ "async-lock 2.8.0",
  "atomic-waker",
  "cfg-if 1.0.0",
  "futures-core",
  "futures-io",
- "rustix 0.38.28",
+ "rustix 0.38.32",
  "signal-hook-registry",
  "slab",
  "windows-sys 0.48.0",
@@ -426,41 +420,40 @@ dependencies = [
 
 [[package]]
 name = "async-task"
-version = "4.5.0"
+version = "4.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1"
+checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
 
 [[package]]
 name = "async-trait"
-version = "0.1.77"
+version = "0.1.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
 name = "atk"
-version = "0.16.0"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39991bc421ddf72f70159011b323ff49b0f783cc676a7287c59453da2e2531cf"
+checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4"
 dependencies = [
  "atk-sys",
- "bitflags 1.3.2",
- "glib 0.16.9",
+ "glib 0.18.5",
  "libc",
 ]
 
 [[package]]
 name = "atk-sys"
-version = "0.16.0"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11ad703eb64dc058024f0e57ccfa069e15a413b98dbd50a1a950e743b7f11148"
+checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009"
 dependencies = [
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
  "system-deps 6.1.2",
 ]
@@ -494,14 +487,14 @@ version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
 ]
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
 
 [[package]]
 name = "backtrace"
@@ -526,9 +519,9 @@ checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa"
 
 [[package]]
 name = "base64"
-version = "0.21.6"
+version = "0.21.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
 name = "base64ct"
@@ -551,7 +544,7 @@ dependencies = [
  "lazycell",
  "log",
  "peeking_take_while",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "regex",
  "rustc-hash",
@@ -561,28 +554,6 @@ dependencies = [
 
 [[package]]
 name = "bindgen"
-version = "0.63.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885"
-dependencies = [
- "bitflags 1.3.2",
- "cexpr",
- "clang-sys",
- "lazy_static",
- "lazycell",
- "log",
- "peeking_take_while",
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "regex",
- "rustc-hash",
- "shlex",
- "syn 1.0.109",
- "which",
-]
-
-[[package]]
-name = "bindgen"
 version = "0.65.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
@@ -595,33 +566,33 @@ dependencies = [
  "log",
  "peeking_take_while",
  "prettyplease",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "regex",
  "rustc-hash",
  "shlex",
- "syn 2.0.48",
+ "syn 2.0.57",
  "which",
 ]
 
 [[package]]
 name = "bindgen"
-version = "0.69.1"
+version = "0.69.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2"
+checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "cexpr",
  "clang-sys",
+ "itertools 0.12.1",
  "lazy_static",
  "lazycell",
- "peeking_take_while",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "regex",
  "rustc-hash",
  "shlex",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -638,9 +609,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.1"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+dependencies = [
+ "serde 1.0.197",
+]
 
 [[package]]
 name = "bitmask-enum"
@@ -649,7 +623,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9990737a6d5740ff51cdbbc0f0503015cb30c390f6623968281eb214a520cfc0"
 dependencies = [
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -700,25 +674,25 @@ dependencies = [
 
 [[package]]
 name = "blocking"
-version = "1.4.1"
+version = "1.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a"
+checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
 dependencies = [
  "async-channel",
- "async-lock",
+ "async-lock 3.3.0",
  "async-task",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
  "futures-io",
- "futures-lite",
+ "futures-lite 2.3.0",
  "piper",
  "tracing",
 ]
 
 [[package]]
 name = "brotli"
-version = "3.4.0"
+version = "3.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f"
+checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391"
 dependencies = [
  "alloc-no-stdlib",
  "alloc-stdlib",
@@ -755,9 +729,9 @@ checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205"
 
 [[package]]
 name = "bytemuck"
-version = "1.14.0"
+version = "1.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15"
 
 [[package]]
 name = "byteorder"
@@ -767,11 +741,11 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
 dependencies = [
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
@@ -815,13 +789,13 @@ dependencies = [
 
 [[package]]
 name = "cairo-rs"
-version = "0.16.7"
+version = "0.18.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3125b15ec28b84c238f6f476c6034016a5f6cc0221cb514ca46c532139fc97d"
+checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.5.0",
  "cairo-sys-rs",
- "glib 0.16.9",
+ "glib 0.18.5",
  "libc",
  "once_cell",
  "thiserror",
@@ -829,20 +803,20 @@ dependencies = [
 
 [[package]]
 name = "cairo-sys-rs"
-version = "0.16.3"
+version = "0.18.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421"
+checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
 dependencies = [
- "glib-sys 0.16.3",
+ "glib-sys 0.18.1",
  "libc",
  "system-deps 6.1.2",
 ]
 
 [[package]]
 name = "cc"
-version = "1.0.83"
+version = "1.0.90"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
 dependencies = [
  "jobserver",
  "libc",
@@ -887,16 +861,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.31"
+version = "0.4.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
  "js-sys",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "wasm-bindgen",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.0",
 ]
 
 [[package]]
@@ -907,7 +881,7 @@ checksum = "2315f7119b7146d6a883de6acd63ddf96071b5f79d9d98d2adaa84d749f6abf1"
 dependencies = [
  "debug-helper",
  "num-bigint",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "once_cell",
  "regex",
 ]
@@ -930,7 +904,7 @@ checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1"
 dependencies = [
  "glob",
  "libc",
- "libloading 0.8.1",
+ "libloading 0.8.3",
 ]
 
 [[package]]
@@ -950,30 +924,30 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.4.14"
+version = "4.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33e92c5c1a78c62968ec57dbc2440366a2d6e5a23faf829970ff1585dc6b18e2"
+checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f"
 dependencies = [
  "clap_builder",
 ]
 
 [[package]]
 name = "clap_builder"
-version = "4.4.14"
+version = "4.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4323769dc8a61e2c39ad7dc26f6f2800524691a44d74fe3d1071a5c24db6370"
+checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99"
 dependencies = [
  "anstream",
  "anstyle",
  "clap_lex",
- "strsim 0.10.0",
+ "strsim 0.11.0",
 ]
 
 [[package]]
 name = "clap_lex"
-version = "0.6.0"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
 
 [[package]]
 name = "clipboard"
@@ -990,23 +964,21 @@ dependencies = [
  "parking_lot",
  "percent-encoding",
  "rand 0.8.5",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
  "thiserror",
  "utf16string",
  "x11-clipboard",
- "x11rb",
+ "x11rb 0.12.0",
 ]
 
 [[package]]
 name = "clipboard-win"
-version = "4.5.0"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362"
+checksum = "d517d4b86184dbb111d3556a10f1c8a04da7428d2987bf1081602bf11c3aa9ee"
 dependencies = [
  "error-code",
- "str-buf",
- "winapi 0.3.9",
 ]
 
 [[package]]
@@ -1044,6 +1016,22 @@ dependencies = [
 ]
 
 [[package]]
+name = "cocoa"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "cocoa-foundation",
+ "core-foundation 0.9.4",
+ "core-graphics 0.23.2",
+ "foreign-types 0.5.0",
+ "libc",
+ "objc",
+]
+
+[[package]]
 name = "cocoa-foundation"
 version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1081,9 +1069,9 @@ dependencies = [
 
 [[package]]
 name = "concurrent-queue"
-version = "2.3.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400"
+checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
 dependencies = [
  "crossbeam-utils",
 ]
@@ -1094,7 +1082,7 @@ version = "0.4.0-2"
 source = "git+https://github.com/open-trade/confy#7855cd3c32b1a60b44e5076ee8f6b4131da10350"
 dependencies = [
  "directories-next",
- "serde 1.0.195",
+ "serde 1.0.197",
  "thiserror",
  "toml 0.5.11",
 ]
@@ -1130,7 +1118,7 @@ version = "0.2.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "unicode-xid 0.2.4",
 ]
@@ -1148,12 +1136,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6"
 
 [[package]]
-name = "convert_case"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-
-[[package]]
 name = "core-foundation"
 version = "0.9.3"
 source = "git+https://github.com/madsmtm/core-foundation-rs.git?rev=7d593d016175755e492a92ef89edca68ac3bd5cd#7d593d016175755e492a92ef89edca68ac3bd5cd"
@@ -1205,6 +1187,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "core-graphics"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation 0.9.4",
+ "core-graphics-types 0.1.3",
+ "foreign-types 0.5.0",
+ "libc",
+]
+
+[[package]]
 name = "core-graphics-types"
 version = "0.1.2"
 source = "git+https://github.com/madsmtm/core-foundation-rs.git?rev=7d593d016175755e492a92ef89edca68ac3bd5cd#7d593d016175755e492a92ef89edca68ac3bd5cd"
@@ -1243,7 +1238,7 @@ version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9"
 dependencies = [
- "bindgen 0.69.1",
+ "bindgen 0.69.4",
 ]
 
 [[package]]
@@ -1282,18 +1277,18 @@ dependencies = [
 
 [[package]]
 name = "crc32fast"
-version = "1.3.2"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
 dependencies = [
  "cfg-if 1.0.0",
 ]
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.11"
+version = "0.5.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b"
+checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
 dependencies = [
  "crossbeam-utils",
 ]
@@ -1359,27 +1354,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "dark-light"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62007a65515b3cd88c733dd3464431f05d2ad066999a824259d8edc3cf6f645"
-dependencies = [
- "dconf_rs",
- "detect-desktop-environment",
- "dirs 4.0.0",
- "objc",
- "rust-ini",
- "web-sys",
- "winreg 0.10.1",
- "zbus",
- "zvariant",
-]
-
-[[package]]
 name = "dart-sys"
-version = "4.0.2"
+version = "4.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d8b5680b5c2cc52f50acb2457d9b3a3b58adcca785db13a0e3655626f601de6"
+checksum = "57967e4b200d767d091b961d6ab42cc7d0cc14fe9e052e75d0d3cf9eb732d895"
 dependencies = [
  "cc",
 ]
@@ -1537,12 +1515,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "dconf_rs"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b"
-
-[[package]]
 name = "debug-helper"
 version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1580,7 +1552,7 @@ version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
@@ -1591,31 +1563,12 @@ version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
 
 [[package]]
-name = "derive_more"
-version = "0.99.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
-dependencies = [
- "convert_case",
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "rustc_version",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "detect-desktop-environment"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21d8ad60dd5b13a4ee6bd8fa2d5d88965c597c67bce32b5fc49c94f55cb50810"
-
-[[package]]
 name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1648,15 +1601,6 @@ dependencies = [
 
 [[package]]
 name = "dirs"
-version = "4.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
-dependencies = [
- "dirs-sys 0.3.7",
-]
-
-[[package]]
-name = "dirs"
 version = "5.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
@@ -1720,7 +1664,7 @@ version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
 dependencies = [
- "libloading 0.8.1",
+ "libloading 0.8.3",
 ]
 
 [[package]]
@@ -1753,7 +1697,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3a09ac8bb8c16a282264c379dffba707b9c998afc7506009137f3c6136888078"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
@@ -1783,7 +1727,7 @@ checksum = "7f3f119846c823f9eafcf953a8f6ffb6ed69bf6240883261a7f13b634579a51f"
 dependencies = [
  "lazy_static",
  "regex",
- "serde 1.0.195",
+ "serde 1.0.197",
  "strsim 0.10.0",
 ]
 
@@ -1794,6 +1738,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
 
 [[package]]
+name = "dpi"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
+
+[[package]]
 name = "dtoa"
 version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1806,7 +1756,7 @@ dependencies = [
  "cc",
  "hbb_common",
  "lazy_static",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
  "thiserror",
 ]
@@ -1822,22 +1772,9 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
-
-[[package]]
-name = "embed-resource"
-version = "2.4.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f54cc3e827ee1c3812239a9a41dede7b4d7d5d5464faa32d71bd7cba28ce2cb2"
-dependencies = [
- "cc",
- "rustc_version",
- "toml 0.8.8",
- "vswhom",
- "winreg 0.51.0",
-]
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
 
 [[package]]
 name = "encoding_rs"
@@ -1858,7 +1795,7 @@ dependencies = [
  "objc",
  "pkg-config",
  "rdev",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
  "tfc",
  "unicode-segmentation",
@@ -1889,30 +1826,30 @@ version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "04d0b288e3bb1d861c4403c1774a6f7a798781dfc519b3647df2a3dd4ae95f25"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
 name = "enumflags2"
-version = "0.7.8"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939"
+checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d"
 dependencies = [
  "enumflags2_derive",
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
 name = "enumflags2_derive"
-version = "0.7.8"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246"
+checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -1930,9 +1867,9 @@ dependencies = [
 
 [[package]]
 name = "env_logger"
-version = "0.10.0"
+version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
 dependencies = [
  "humantime",
  "is-terminal",
@@ -1947,7 +1884,7 @@ version = "4.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "74351c3392ea1ff6cd2628e0042d268ac2371cb613252ff383b6dfa50d22fa79"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "libc",
 ]
 
@@ -1969,13 +1906,9 @@ dependencies = [
 
 [[package]]
 name = "error-code"
-version = "2.3.1"
+version = "3.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21"
-dependencies = [
- "libc",
- "str-buf",
-]
+checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b"
 
 [[package]]
 name = "evdev"
@@ -1995,9 +1928,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
 
 [[package]]
 name = "event-listener"
-version = "3.0.0"
+version = "3.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29e56284f00d94c1bc7fd3c77027b4623c88c1f53d8d2394c6199f2921dea325"
+checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
 dependencies = [
  "concurrent-queue",
  "parking",
@@ -2005,6 +1938,48 @@ dependencies = [
 ]
 
 [[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
+dependencies = [
+ "event-listener 4.0.3",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+dependencies = [
+ "event-listener 5.2.0",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "exr"
 version = "1.71.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2031,15 +2006,15 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
 
 [[package]]
 name = "fdeflate"
-version = "0.3.3"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "209098dd6dfc4445aa6111f0e98653ac323eaa4dfd212c9ca3931bf9955c31bd"
+checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
 dependencies = [
  "simd-adler32",
 ]
@@ -2050,7 +2025,7 @@ version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
 dependencies = [
- "memoffset 0.9.0",
+ "memoffset 0.9.1",
  "rustc_version",
 ]
 
@@ -2181,9 +2156,9 @@ version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -2311,14 +2286,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "fastrand 2.0.2",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "futures-macro"
 version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -2353,57 +2341,56 @@ dependencies = [
 
 [[package]]
 name = "gdk"
-version = "0.16.2"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa9cb33da481c6c040404a11f8212d193889e9b435db2c14fd86987f630d3ce1"
+checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646"
 dependencies = [
- "bitflags 1.3.2",
  "cairo-rs",
  "gdk-pixbuf",
  "gdk-sys",
  "gio",
- "glib 0.16.9",
+ "glib 0.18.5",
  "libc",
  "pango",
 ]
 
 [[package]]
 name = "gdk-pixbuf"
-version = "0.16.7"
+version = "0.18.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3578c60dee9d029ad86593ed88cb40f35c1b83360e12498d055022385dd9a05"
+checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec"
 dependencies = [
- "bitflags 1.3.2",
  "gdk-pixbuf-sys",
  "gio",
- "glib 0.16.9",
+ "glib 0.18.5",
  "libc",
+ "once_cell",
 ]
 
 [[package]]
 name = "gdk-pixbuf-sys"
-version = "0.16.3"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3092cf797a5f1210479ea38070d9ae8a5b8e9f8f1be9f32f4643c529c7d70016"
+checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
 dependencies = [
  "gio-sys",
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
  "system-deps 6.1.2",
 ]
 
 [[package]]
 name = "gdk-sys"
-version = "0.16.0"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d76354f97a913e55b984759a997b693aa7dc71068c9e98bcce51aa167a0a5c5a"
+checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2"
 dependencies = [
  "cairo-sys-rs",
  "gdk-pixbuf-sys",
  "gio-sys",
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
  "pango-sys",
  "pkg-config",
@@ -2412,13 +2399,13 @@ dependencies = [
 
 [[package]]
 name = "gdkwayland-sys"
-version = "0.16.0"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4511710212ed3020b61a8622a37aa6f0dd2a84516575da92e9b96928dcbe83ba"
+checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a"
 dependencies = [
  "gdk-sys",
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
  "pkg-config",
  "system-deps 6.1.2",
@@ -2426,12 +2413,12 @@ dependencies = [
 
 [[package]]
 name = "gdkx11-sys"
-version = "0.16.0"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fa2bf8b5b8c414bc5d05e48b271896d0fd3ddb57464a3108438082da61de6af"
+checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043"
 dependencies = [
  "gdk-sys",
- "glib-sys 0.16.3",
+ "glib-sys 0.18.1",
  "libc",
  "system-deps 6.1.2",
  "x11 2.21.0",
@@ -2458,6 +2445,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "gethostname"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
+dependencies = [
+ "libc",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
 name = "getrandom"
 version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2480,23 +2477,22 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.28.0"
+version = "0.28.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 
 [[package]]
 name = "gio"
-version = "0.16.7"
+version = "0.18.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a1c84b4534a290a29160ef5c6eff2a9c95833111472e824fc5cb78b513dd092"
+checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
 dependencies = [
- "bitflags 1.3.2",
  "futures-channel",
  "futures-core",
  "futures-io",
  "futures-util",
  "gio-sys",
- "glib 0.16.9",
+ "glib 0.18.5",
  "libc",
  "once_cell",
  "pin-project-lite",
@@ -2506,12 +2502,12 @@ dependencies = [
 
 [[package]]
 name = "gio-sys"
-version = "0.16.3"
+version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229"
+checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
 dependencies = [
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
  "system-deps 6.1.2",
  "winapi 0.3.9",
@@ -2551,21 +2547,22 @@ dependencies = [
 
 [[package]]
 name = "glib"
-version = "0.16.9"
+version = "0.18.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16aa2475c9debed5a32832cb5ff2af5a3f9e1ab9e69df58eaadc1ab2004d6eba"
+checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.5.0",
  "futures-channel",
  "futures-core",
  "futures-executor",
  "futures-task",
  "futures-util",
  "gio-sys",
- "glib-macros 0.16.8",
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-macros 0.18.5",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
+ "memchr",
  "once_cell",
  "smallvec",
  "thiserror",
@@ -2579,27 +2576,26 @@ checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039"
 dependencies = [
  "anyhow",
  "heck 0.3.3",
- "itertools",
+ "itertools 0.9.0",
  "proc-macro-crate 0.1.5",
  "proc-macro-error",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "glib-macros"
-version = "0.16.8"
+version = "0.18.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb1a9325847aa46f1e96ffea37611b9d51fc4827e67f79e7de502a297560a67b"
+checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
 dependencies = [
- "anyhow",
  "heck 0.4.1",
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate 2.0.0",
  "proc-macro-error",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 1.0.109",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -2614,9 +2610,9 @@ dependencies = [
 
 [[package]]
 name = "glib-sys"
-version = "0.16.3"
+version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65"
+checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
 dependencies = [
  "libc",
  "system-deps 6.1.2",
@@ -2641,11 +2637,11 @@ dependencies = [
 
 [[package]]
 name = "gobject-sys"
-version = "0.16.3"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1"
+checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
 dependencies = [
- "glib-sys 0.16.3",
+ "glib-sys 0.18.1",
  "libc",
  "system-deps 6.1.2",
 ]
@@ -2653,30 +2649,30 @@ dependencies = [
 [[package]]
 name = "gpu_common"
 version = "0.1.0"
-source = "git+https://github.com/21pages/gpucodec#4650b5f1376f92c59a9cdbbbe05a744248325eec"
+source = "git+https://github.com/21pages/gpucodec#6321fdeb6246ceee07b2b63060f8fe48a540f353"
 dependencies = [
- "bindgen 0.59.2",
+ "bindgen 0.65.1",
  "cc",
  "log",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
- "serde_json 1.0.111",
+ "serde_json 1.0.115",
 ]
 
 [[package]]
 name = "gpucodec"
 version = "0.1.0"
-source = "git+https://github.com/21pages/gpucodec#4650b5f1376f92c59a9cdbbbe05a744248325eec"
+source = "git+https://github.com/21pages/gpucodec#6321fdeb6246ceee07b2b63060f8fe48a540f353"
 dependencies = [
  "amf",
- "bindgen 0.59.2",
+ "bindgen 0.65.1",
  "cc",
  "gpu_common",
  "log",
  "nv",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
- "serde_json 1.0.111",
+ "serde_json 1.0.115",
  "vpl",
 ]
 
@@ -2815,40 +2811,38 @@ dependencies = [
 
 [[package]]
 name = "gtk"
-version = "0.16.2"
+version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4d3507d43908c866c805f74c9dd593c0ce7ba5c38e576e41846639cdcd4bee6"
+checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c"
 dependencies = [
  "atk",
- "bitflags 1.3.2",
  "cairo-rs",
  "field-offset",
  "futures-channel",
  "gdk",
  "gdk-pixbuf",
  "gio",
- "glib 0.16.9",
+ "glib 0.18.5",
  "gtk-sys",
  "gtk3-macros",
  "libc",
- "once_cell",
  "pango",
  "pkg-config",
 ]
 
 [[package]]
 name = "gtk-sys"
-version = "0.16.0"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b5f8946685d5fe44497007786600c2f368ff6b1e61a16251c89f72a97520a3"
+checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722"
 dependencies = [
  "atk-sys",
  "cairo-sys-rs",
  "gdk-pixbuf-sys",
  "gdk-sys",
  "gio-sys",
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
  "pango-sys",
  "system-deps 6.1.2",
@@ -2856,23 +2850,22 @@ dependencies = [
 
 [[package]]
 name = "gtk3-macros"
-version = "0.16.3"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "096eb63c6fedf03bafe65e5924595785eaf1bcb7200dac0f2cbe9c9738f05ad8"
+checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e"
 dependencies = [
- "anyhow",
  "proc-macro-crate 1.3.1",
  "proc-macro-error",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 1.0.109",
+ "syn 2.0.57",
 ]
 
 [[package]]
 name = "h2"
-version = "0.3.22"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
+checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb"
 dependencies = [
  "bytes",
  "fnv",
@@ -2880,7 +2873,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http",
- "indexmap 2.1.0",
+ "indexmap 2.2.6",
  "slab",
  "tokio",
  "tokio-util",
@@ -2902,7 +2895,7 @@ version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 dependencies = [
- "ahash 0.7.7",
+ "ahash 0.7.8",
 ]
 
 [[package]]
@@ -2911,7 +2904,7 @@ version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
 dependencies = [
- "ahash 0.8.7",
+ "ahash 0.8.11",
  "allocator-api2",
 ]
 
@@ -2927,7 +2920,7 @@ dependencies = [
  "directories-next",
  "dirs-next",
  "dlopen",
- "env_logger 0.10.0",
+ "env_logger 0.10.2",
  "filetime",
  "flexi_logger",
  "futures",
@@ -2943,9 +2936,9 @@ dependencies = [
  "quinn",
  "rand 0.8.5",
  "regex",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
- "serde_json 1.0.111",
+ "serde_json 1.0.115",
  "socket2 0.3.19",
  "sodiumoxide",
  "sysinfo",
@@ -2955,7 +2948,7 @@ dependencies = [
  "toml 0.7.8",
  "uuid",
  "winapi 0.3.9",
- "zstd 0.13.0",
+ "zstd 0.13.1",
 ]
 
 [[package]]
@@ -2984,9 +2977,9 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3"
+checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd"
 
 [[package]]
 name = "hex"
@@ -3005,11 +2998,11 @@ dependencies = [
 
 [[package]]
 name = "home"
-version = "0.5.5"
+version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
 dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3029,13 +3022,13 @@ dependencies = [
 
 [[package]]
 name = "http"
-version = "0.2.11"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
 dependencies = [
  "bytes",
  "fnv",
- "itoa 1.0.10",
+ "itoa 1.0.11",
 ]
 
 [[package]]
@@ -3070,14 +3063,14 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
 [[package]]
 name = "hwcodec"
 version = "0.2.0"
-source = "git+https://github.com/21pages/hwcodec?branch=stable#42cfa3f9e5138d3dbdea83ea87d4c4bf798fef51"
+source = "git+https://github.com/21pages/hwcodec?branch=stable#52e1da2aae86acec5f374bc065f5921945b55e7b"
 dependencies = [
  "bindgen 0.59.2",
  "cc",
  "log",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
- "serde_json 1.0.111",
+ "serde_json 1.0.115",
 ]
 
 [[package]]
@@ -3095,9 +3088,9 @@ dependencies = [
  "http-body",
  "httparse",
  "httpdate",
- "itoa 1.0.10",
+ "itoa 1.0.11",
  "pin-project-lite",
- "socket2 0.5.5",
+ "socket2 0.5.6",
  "tokio",
  "tower-service",
  "tracing",
@@ -3133,16 +3126,16 @@ dependencies = [
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.58"
+version = "0.1.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "iana-time-zone-haiku",
  "js-sys",
  "wasm-bindgen",
- "windows-core",
+ "windows-core 0.52.0",
 ]
 
 [[package]]
@@ -3177,7 +3170,7 @@ dependencies = [
  "gif",
  "jpeg-decoder",
  "num-rational 0.4.1",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "png",
  "qoi",
  "tiff",
@@ -3206,7 +3199,7 @@ version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
 ]
 
@@ -3216,15 +3209,15 @@ version = "1.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
  "hashbrown 0.12.3",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.1.0"
+version = "2.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
  "hashbrown 0.14.3",
@@ -3274,7 +3267,7 @@ version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
 dependencies = [
- "hermit-abi 0.3.5",
+ "hermit-abi 0.3.6",
  "libc",
  "windows-sys 0.48.0",
 ]
@@ -3287,13 +3280,13 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
 
 [[package]]
 name = "is-terminal"
-version = "0.4.9"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
 dependencies = [
- "hermit-abi 0.3.5",
- "rustix 0.38.28",
- "windows-sys 0.48.0",
+ "hermit-abi 0.3.6",
+ "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3312,6 +3305,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
 name = "itoa"
 version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3319,9 +3321,9 @@ checksum = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jni"
@@ -3375,9 +3377,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
 
 [[package]]
 name = "jobserver"
-version = "0.1.27"
+version = "0.1.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
+checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
 dependencies = [
  "libc",
 ]
@@ -3393,9 +3395,9 @@ dependencies = [
 
 [[package]]
 name = "js-sys"
-version = "0.3.66"
+version = "0.3.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
+checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -3403,10 +3405,9 @@ dependencies = [
 [[package]]
 name = "keepawake"
 version = "0.4.3"
-source = "git+https://github.com/rustdesk-org/keepawake-rs#ad94454a75cf1ff9e95e217dee9dd6a378bf625e"
+source = "git+https://github.com/rustdesk-org/keepawake-rs#64d568586dd16551d02120e19668d2b0fec8e3c9"
 dependencies = [
  "anyhow",
- "apple-sys",
  "cfg-if 1.0.0",
  "core-foundation 0.9.4",
  "shadow-rs",
@@ -3427,12 +3428,12 @@ dependencies = [
 
 [[package]]
 name = "keyboard-types"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7668b7cff6a51fe61cdde64cd27c8a220786f399501b57ebe36f7d8112fd68"
+checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
 dependencies = [
- "bitflags 1.3.2",
- "serde 1.0.195",
+ "bitflags 2.5.0",
+ "serde 1.0.197",
  "unicode-segmentation",
 ]
 
@@ -3456,11 +3457,11 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
 
 [[package]]
 name = "libappindicator"
-version = "0.8.0"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89e1edfdc9b0853358306c6dfb4b77c79c779174256fe93d80c0b5ebca451a2f"
+checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a"
 dependencies = [
- "glib 0.16.9",
+ "glib 0.18.5",
  "gtk",
  "gtk-sys",
  "libappindicator-sys",
@@ -3469,9 +3470,9 @@ dependencies = [
 
 [[package]]
 name = "libappindicator-sys"
-version = "0.8.0"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08fcb2bea89cee9613982501ec83eaa2d09256b24540ae463c52a28906163918"
+checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf"
 dependencies = [
  "gtk-sys",
  "libloading 0.7.4",
@@ -3480,9 +3481,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.152"
+version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
 name = "libdbus-sys"
@@ -3517,12 +3518,12 @@ dependencies = [
 
 [[package]]
 name = "libloading"
-version = "0.8.1"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
 dependencies = [
  "cfg-if 1.0.0",
- "windows-sys 0.48.0",
+ "windows-targets 0.52.0",
 ]
 
 [[package]]
@@ -3541,7 +3542,7 @@ dependencies = [
  "libc",
  "libpulse-sys",
  "num-derive",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "winapi 0.3.9",
 ]
 
@@ -3574,20 +3575,19 @@ checksum = "bc19e110fbf42c17260d30f6d3dc545f58491c7830d38ecb9aaca96e26067a9b"
 dependencies = [
  "libc",
  "num-derive",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "pkg-config",
  "winapi 0.3.9",
 ]
 
 [[package]]
 name = "libredox"
-version = "0.0.1"
+version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "libc",
- "redox_syscall",
 ]
 
 [[package]]
@@ -3632,9 +3632,9 @@ dependencies = [
 
 [[package]]
 name = "libz-sys"
-version = "1.1.14"
+version = "1.1.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "295c17e837573c8c821dbaeb3cceb3d745ad082f7572191409e69cbc1b3fd050"
+checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9"
 dependencies = [
  "cc",
  "libc",
@@ -3644,12 +3644,9 @@ dependencies = [
 
 [[package]]
 name = "line-wrap"
-version = "0.1.1"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
-dependencies = [
- "safemem",
-]
+checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e"
 
 [[package]]
 name = "linux-raw-sys"
@@ -3659,9 +3656,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.12"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
 
 [[package]]
 name = "lock_api"
@@ -3669,15 +3666,15 @@ version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
  "scopeguard",
 ]
 
 [[package]]
 name = "log"
-version = "0.4.20"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
 
 [[package]]
 name = "mac_address"
@@ -3711,7 +3708,7 @@ dependencies = [
 [[package]]
 name = "magnum-opus"
 version = "0.4.0"
-source = "git+https://github.com/rustdesk/magnum-opus#5cd2bf989c148662fa3a2d9d539a71d71fd1d256"
+source = "git+https://github.com/rustdesk-org/magnum-opus#5cd2bf989c148662fa3a2d9d539a71d71fd1d256"
 dependencies = [
  "bindgen 0.59.2",
  "pkg-config",
@@ -3741,9 +3738,9 @@ checksum = "df39d232f5c40b0891c10216992c2f250c054105cb1e56f0fc9032db6203ecc1"
 
 [[package]]
 name = "memchr"
-version = "2.7.1"
+version = "2.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
 
 [[package]]
 name = "memoffset"
@@ -3751,7 +3748,7 @@ version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
 ]
 
 [[package]]
@@ -3760,16 +3757,16 @@ version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
 ]
 
 [[package]]
 name = "memoffset"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
 ]
 
 [[package]]
@@ -3786,9 +3783,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
 dependencies = [
  "adler",
  "simd-adler32",
@@ -3796,9 +3793,9 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.8.10"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
  "log",
@@ -3808,11 +3805,11 @@ dependencies = [
 
 [[package]]
 name = "miow"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52ffbca2f655e33c08be35d87278e5b18b89550a37dbd598c20db92f6a471123"
+checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044"
 dependencies = [
- "windows-sys 0.42.0",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -3825,14 +3822,13 @@ dependencies = [
 
 [[package]]
 name = "muda"
-version = "0.5.0"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3c820db003e601413e835a33b10cf51452b6415ef34ff1d862401826431c675"
+checksum = "f428b4e9db3d17e2f809dfb1ff9ddfbbf16c71790d1656d10aee320877e1392f"
 dependencies = [
- "cocoa",
+ "cocoa 0.25.0",
  "crossbeam-channel",
- "gdk",
- "gdk-pixbuf",
+ "dpi",
  "gtk",
  "keyboard-types",
  "libxdo",
@@ -3840,7 +3836,7 @@ dependencies = [
  "once_cell",
  "png",
  "thiserror",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3877,7 +3873,7 @@ dependencies = [
  "jni-sys",
  "ndk-sys",
  "num_enum",
- "raw-window-handle",
+ "raw-window-handle 0.5.2",
  "thiserror",
 ]
 
@@ -3936,9 +3932,9 @@ dependencies = [
 
 [[package]]
 name = "netlink-sys"
-version = "0.8.5"
+version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411"
+checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307"
 dependencies = [
  "bytes",
  "libc",
@@ -3988,7 +3984,7 @@ version = "0.27.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "cfg-if 1.0.0",
  "libc",
 ]
@@ -4004,15 +4000,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "nom8"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8"
-dependencies = [
- "memchr",
-]
-
-[[package]]
 name = "ntapi"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4036,9 +4023,9 @@ version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
  "num-integer",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
 ]
 
 [[package]]
@@ -4047,28 +4034,33 @@ version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
 dependencies = [
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
 ]
 
 [[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
 name = "num-derive"
 version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "num-integer"
-version = "0.1.45"
+version = "0.1.46"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
 dependencies = [
- "autocfg 1.1.0",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
 ]
 
 [[package]]
@@ -4077,9 +4069,9 @@ version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
  "num-integer",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
 ]
 
 [[package]]
@@ -4088,9 +4080,9 @@ version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
  "num-integer",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
 ]
 
 [[package]]
@@ -4099,16 +4091,16 @@ version = "0.1.43"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
 dependencies = [
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
 ]
 
 [[package]]
 name = "num-traits"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
 ]
 
 [[package]]
@@ -4117,7 +4109,7 @@ version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi 0.3.5",
+ "hermit-abi 0.3.6",
  "libc",
 ]
 
@@ -4137,16 +4129,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
 dependencies = [
  "proc-macro-crate 1.3.1",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
 
 [[package]]
 name = "num_threads"
-version = "0.1.6"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
 dependencies = [
  "libc",
 ]
@@ -4154,9 +4146,9 @@ dependencies = [
 [[package]]
 name = "nv"
 version = "0.1.0"
-source = "git+https://github.com/21pages/gpucodec#4650b5f1376f92c59a9cdbbbe05a744248325eec"
+source = "git+https://github.com/21pages/gpucodec#6321fdeb6246ceee07b2b63060f8fe48a540f353"
 dependencies = [
- "bindgen 0.59.2",
+ "bindgen 0.65.1",
  "cc",
  "gpu_common",
  "log",
@@ -4229,9 +4221,9 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.32.1"
+version = "0.32.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
 dependencies = [
  "memchr",
 ]
@@ -4246,7 +4238,7 @@ dependencies = [
  "ndk",
  "ndk-context",
  "num-derive",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "oboe-sys",
 ]
 
@@ -4267,11 +4259,11 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "openssl"
-version = "0.10.62"
+version = "0.10.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671"
+checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "cfg-if 1.0.0",
  "foreign-types 0.3.2",
  "libc",
@@ -4286,9 +4278,9 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -4299,9 +4291,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "openssl-sys"
-version = "0.9.98"
+version = "0.9.102"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7"
+checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
 dependencies = [
  "cc",
  "libc",
@@ -4349,23 +4341,23 @@ dependencies = [
 
 [[package]]
 name = "os_info"
-version = "3.7.0"
+version = "3.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e"
+checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092"
 dependencies = [
  "log",
- "serde 1.0.195",
- "winapi 0.3.9",
+ "serde 1.0.197",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "os_pipe"
-version = "1.1.4"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177"
+checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -4374,9 +4366,9 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "38731fa859ef679f1aec66ca9562165926b442f298467f76f5990f431efe87dc"
 dependencies = [
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
- "serde_json 1.0.111",
+ "serde_json 1.0.115",
 ]
 
 [[package]]
@@ -4406,7 +4398,7 @@ version = "0.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c94f3b9b97df3c6d4e51a14916639b24e02c7d15d1dba686ce9b1118277cb811"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
@@ -4417,19 +4409,18 @@ version = "1.0.0-alpha5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ce9484729b3e52c0bacdc5191cb6a6a5f31ef4c09c5e4ab1209d3340ad9e997b"
 dependencies = [
- "bindgen 0.69.1",
+ "bindgen 0.69.4",
  "libc",
 ]
 
 [[package]]
 name = "pango"
-version = "0.16.5"
+version = "0.18.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94"
+checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
 dependencies = [
- "bitflags 1.3.2",
  "gio",
- "glib 0.16.9",
+ "glib 0.18.5",
  "libc",
  "once_cell",
  "pango-sys",
@@ -4437,20 +4428,20 @@ dependencies = [
 
 [[package]]
 name = "pango-sys"
-version = "0.16.3"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f"
+checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
 dependencies = [
- "glib-sys 0.16.3",
- "gobject-sys 0.16.3",
+ "glib-sys 0.18.1",
+ "gobject-sys 0.18.0",
  "libc",
  "system-deps 6.1.2",
 ]
 
 [[package]]
 name = "parity-tokio-ipc"
-version = "0.7.3-2"
-source = "git+https://github.com/open-trade/parity-tokio-ipc#a5b7861249107cbacc856cd43507cb95f40aef6e"
+version = "0.7.3-3"
+source = "git+https://github.com/rustdesk-org/parity-tokio-ipc#f2d1fcf8fb002335d9a62bec308559d40698694d"
 dependencies = [
  "futures",
  "libc",
@@ -4538,7 +4529,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
 dependencies = [
  "fixedbitset",
- "indexmap 2.1.0",
+ "indexmap 2.2.6",
 ]
 
 [[package]]
@@ -4581,29 +4572,29 @@ dependencies = [
 
 [[package]]
 name = "pin-project"
-version = "1.1.3"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
 dependencies = [
  "pin-project-internal",
 ]
 
 [[package]]
 name = "pin-project-internal"
-version = "1.1.3"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
 
 [[package]]
 name = "pin-utils"
@@ -4618,35 +4609,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
 dependencies = [
  "atomic-waker",
- "fastrand 2.0.1",
+ "fastrand 2.0.2",
  "futures-io",
 ]
 
 [[package]]
 name = "pkg-config"
-version = "0.3.28"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 
 [[package]]
 name = "plist"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef"
+checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9"
 dependencies = [
  "base64",
- "indexmap 2.1.0",
+ "indexmap 2.2.6",
  "line-wrap",
  "quick-xml 0.31.0",
- "serde 1.0.195",
- "time 0.3.31",
+ "serde 1.0.197",
+ "time 0.3.34",
 ]
 
 [[package]]
 name = "png"
-version = "0.17.10"
+version = "0.17.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64"
+checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
 dependencies = [
  "bitflags 1.3.2",
  "crc32fast",
@@ -4661,7 +4652,7 @@ version = "2.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
  "bitflags 1.3.2",
  "cfg-if 1.0.0",
  "concurrent-queue",
@@ -4672,6 +4663,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "polling"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
+dependencies = [
+ "cfg-if 1.0.0",
+ "concurrent-queue",
+ "pin-project-lite",
+ "rustix 0.38.32",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
 name = "powerfmt"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4695,8 +4700,8 @@ version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
 dependencies = [
- "proc-macro2 1.0.76",
- "syn 2.0.48",
+ "proc-macro2 1.0.79",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -4728,13 +4733,22 @@ dependencies = [
 ]
 
 [[package]]
+name = "proc-macro-crate"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
+dependencies = [
+ "toml_edit 0.20.7",
+]
+
+[[package]]
 name = "proc-macro-error"
 version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
 dependencies = [
  "proc-macro-error-attr",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
  "version_check",
@@ -4746,7 +4760,7 @@ version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "version_check",
 ]
@@ -4762,9 +4776,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.76"
+version = "1.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
 dependencies = [
  "unicode-ident",
 ]
@@ -4889,7 +4903,7 @@ dependencies = [
  "quinn-proto",
  "quinn-udp",
  "rustc-hash",
- "rustls 0.20.9",
+ "rustls 0.20.8",
  "thiserror",
  "tokio",
  "tracing",
@@ -4906,7 +4920,7 @@ dependencies = [
  "rand 0.8.5",
  "ring 0.16.20",
  "rustc-hash",
- "rustls 0.20.9",
+ "rustls 0.20.8",
  "rustls-native-certs",
  "slab",
  "thiserror",
@@ -4943,7 +4957,7 @@ version = "1.0.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
 ]
 
 [[package]]
@@ -5095,6 +5109,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
 
 [[package]]
+name = "raw-window-handle"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
+
+[[package]]
 name = "rayon"
 version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5119,7 +5139,7 @@ name = "rdev"
 version = "0.5.0-2"
 source = "git+https://github.com/fufesou/rdev#b3434caee84c92412b45a2f655a15ac5dad33488"
 dependencies = [
- "cocoa",
+ "cocoa 0.24.1",
  "core-foundation 0.9.4",
  "core-foundation-sys 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-graphics 0.22.3",
@@ -5167,9 +5187,9 @@ dependencies = [
 
 [[package]]
 name = "redox_users"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
+checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
 dependencies = [
  "getrandom",
  "libredox",
@@ -5178,9 +5198,9 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.2"
+version = "1.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -5190,9 +5210,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.3"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -5201,9 +5221,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
 
 [[package]]
 name = "repng"
@@ -5243,8 +5263,8 @@ dependencies = [
  "rustls 0.21.10",
  "rustls-native-certs",
  "rustls-pemfile",
- "serde 1.0.195",
- "serde_json 1.0.111",
+ "serde 1.0.197",
+ "serde_json 1.0.115",
  "serde_urlencoded",
  "sync_wrapper",
  "system-configuration",
@@ -5278,16 +5298,17 @@ dependencies = [
 
 [[package]]
 name = "ring"
-version = "0.17.5"
+version = "0.17.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
 dependencies = [
  "cc",
+ "cfg-if 1.0.0",
  "getrandom",
  "libc",
  "spin 0.9.8",
  "untrusted 0.9.0",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -5312,23 +5333,23 @@ dependencies = [
 
 [[package]]
 name = "rpassword"
-version = "7.2.0"
+version = "7.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322"
+checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f"
 dependencies = [
  "libc",
  "rtoolbox",
- "winapi 0.3.9",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "rtoolbox"
-version = "0.0.1"
+version = "0.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a"
+checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e"
 dependencies = [
  "libc",
- "winapi 0.3.9",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -5339,18 +5360,20 @@ checksum = "cd70209c27d5b08f5528bdc779ea3ffb418954e28987f9f9775c6eac41003f9c"
 dependencies = [
  "num-complex",
  "num-integer",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "realfft",
 ]
 
 [[package]]
 name = "runas"
-version = "1.0.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed87390fefd18965ff20baae5aeb9913bcf82d2b59dc04c0f6d8f17f7be56ff2"
+checksum = "b96d6b6c505282b007a9b009f2aa38b2fd0359b81a0430ceacc60f69ade4c6a0"
 dependencies = [
- "cc",
+ "libc",
+ "security-framework-sys",
  "which",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -5400,21 +5423,21 @@ dependencies = [
  "android_logger",
  "arboard",
  "async-process",
+ "async-trait",
  "base64",
  "bytes",
  "cc",
  "cfg-if 1.0.0",
  "chrono",
  "cidr-utils",
- "clap 4.4.14",
+ "clap 4.5.0",
  "clipboard",
- "cocoa",
+ "cocoa 0.24.1",
  "core-foundation 0.9.4",
  "core-graphics 0.22.3",
  "cpal",
  "crossbeam-queue",
  "ctrlc",
- "dark-light",
  "dasp",
  "dbus",
  "dbus-crossroads",
@@ -5435,7 +5458,7 @@ dependencies = [
  "jni 0.21.1",
  "keepawake",
  "lazy_static",
- "libloading 0.8.1",
+ "libloading 0.8.3",
  "libpulse-binding",
  "libpulse-simple-binding",
  "mac_address",
@@ -5454,16 +5477,16 @@ dependencies = [
  "repng",
  "reqwest",
  "ringbuf",
- "rpassword 7.2.0",
+ "rpassword 7.3.1",
  "rubato",
  "runas",
  "rust-pulsectl",
  "samplerate",
  "sciter-rs",
  "scrap",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_derive",
- "serde_json 1.0.111",
+ "serde_json 1.0.115",
  "serde_repr",
  "sha2",
  "shared_memory",
@@ -5486,19 +5509,19 @@ dependencies = [
  "winres",
  "wol-rs",
  "x11-clipboard",
- "x11rb",
+ "x11rb 0.12.0",
  "zip",
 ]
 
 [[package]]
 name = "rustdesk-portable-packer"
-version = "0.1.0"
+version = "1.2.4"
 dependencies = [
  "brotli",
  "dirs 5.0.1",
- "embed-resource",
  "md5",
  "winapi 0.3.9",
+ "winres",
 ]
 
 [[package]]
@@ -5509,7 +5532,7 @@ checksum = "43806561bc506d0c5d160643ad742e3161049ac01027b5e6d7524091fd401d86"
 dependencies = [
  "num-complex",
  "num-integer",
- "num-traits 0.2.17",
+ "num-traits 0.2.18",
  "primal-check",
  "strength_reduce",
  "transpose",
@@ -5532,22 +5555,22 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.28"
+version = "0.38.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "errno",
  "libc",
- "linux-raw-sys 0.4.12",
+ "linux-raw-sys 0.4.13",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "rustls"
-version = "0.20.9"
+version = "0.20.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99"
+checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
 dependencies = [
  "ring 0.16.20",
  "sct",
@@ -5561,7 +5584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
 dependencies = [
  "log",
- "ring 0.17.5",
+ "ring 0.17.8",
  "rustls-webpki",
  "sct",
 ]
@@ -5580,9 +5603,9 @@ dependencies = [
 
 [[package]]
 name = "rustls-pemfile"
-version = "1.0.3"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
 dependencies = [
  "base64",
 ]
@@ -5593,7 +5616,7 @@ version = "0.101.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
 dependencies = [
- "ring 0.17.5",
+ "ring 0.17.8",
  "untrusted 0.9.0",
 ]
 
@@ -5605,15 +5628,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "ryu"
-version = "1.0.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
-
-[[package]]
-name = "safemem"
-version = "0.3.3"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 
 [[package]]
 name = "same-file"
@@ -5690,8 +5707,8 @@ dependencies = [
  "pkg-config",
  "quest",
  "repng",
- "serde 1.0.195",
- "serde_json 1.0.111",
+ "serde 1.0.197",
+ "serde_json 1.0.115",
  "target_build_utils",
  "tracing",
  "webm",
@@ -5704,7 +5721,7 @@ version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
 dependencies = [
- "ring 0.17.5",
+ "ring 0.17.8",
  "untrusted 0.9.0",
 ]
 
@@ -5733,9 +5750,9 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.21"
+version = "1.0.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
 
 [[package]]
 name = "serde"
@@ -5745,22 +5762,22 @@ checksum = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af"
 
 [[package]]
 name = "serde"
-version = "1.0.195"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.195"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -5777,24 +5794,24 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.111"
+version = "1.0.115"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
 dependencies = [
- "itoa 1.0.10",
+ "itoa 1.0.11",
  "ryu",
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
 name = "serde_repr"
-version = "0.1.16"
+version = "0.1.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -5803,7 +5820,7 @@ version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
 dependencies = [
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
@@ -5813,9 +5830,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
 dependencies = [
  "form_urlencoded",
- "itoa 1.0.10",
+ "itoa 1.0.11",
  "ryu",
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
@@ -5849,7 +5866,7 @@ dependencies = [
  "const_format",
  "git2",
  "is_debug",
- "time 0.3.31",
+ "time 0.3.34",
  "tzdb",
 ]
 
@@ -5868,9 +5885,9 @@ dependencies = [
 
 [[package]]
 name = "shlex"
-version = "1.2.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 
 [[package]]
 name = "shutdown_hooks"
@@ -5911,14 +5928,14 @@ version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
 dependencies = [
- "autocfg 1.1.0",
+ "autocfg 1.2.0",
 ]
 
 [[package]]
 name = "smallvec"
-version = "1.11.2"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "socket2"
@@ -5943,12 +5960,12 @@ dependencies = [
 
 [[package]]
 name = "socket2"
-version = "0.5.5"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -5960,7 +5977,7 @@ dependencies = [
  "ed25519",
  "libc",
  "libsodium-sys",
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
@@ -5985,12 +6002,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
 [[package]]
-name = "str-buf"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
-
-[[package]]
 name = "strength_reduce"
 version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6009,6 +6020,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 
 [[package]]
+name = "strsim"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
+
+[[package]]
 name = "strum"
 version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6027,7 +6044,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
 dependencies = [
  "heck 0.3.3",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
@@ -6039,7 +6056,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
 dependencies = [
  "heck 0.4.1",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "rustversion",
  "syn 1.0.109",
@@ -6068,18 +6085,18 @@ version = "1.0.109"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "unicode-ident",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.48"
+version = "2.0.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "unicode-ident",
 ]
@@ -6158,7 +6175,7 @@ dependencies = [
  "cfg-expr",
  "heck 0.4.1",
  "pkg-config",
- "toml 0.8.8",
+ "toml 0.8.10",
  "version-compare 0.1.1",
 ]
 
@@ -6174,25 +6191,18 @@ dependencies = [
 
 [[package]]
 name = "tao"
-version = "0.22.2"
-source = "git+https://github.com/rustdesk-org/tao?branch=dev#1e5b97258cf42a30f80f85a6aa0b1a4aece1977e"
+version = "0.25.0"
+source = "git+https://github.com/rustdesk-org/tao?branch=dev#1cad16b200485bbccc67dcee2d339eac6e1c16ad"
 dependencies = [
  "bitflags 1.3.2",
- "cairo-rs",
  "cc",
- "cocoa",
+ "cocoa 0.25.0",
  "core-foundation 0.9.4",
- "core-graphics 0.22.3",
+ "core-graphics 0.23.2",
  "crossbeam-channel",
  "dispatch",
- "gdk",
- "gdk-pixbuf",
- "gdk-sys",
  "gdkwayland-sys",
  "gdkx11-sys",
- "gio",
- "glib 0.16.9",
- "glib-sys 0.16.3",
  "gtk",
  "image",
  "instant",
@@ -6207,14 +6217,14 @@ dependencies = [
  "once_cell",
  "parking_lot",
  "png",
- "raw-window-handle",
+ "raw-window-handle 0.6.0",
  "scopeguard",
  "tao-macros",
  "unicode-segmentation",
  "url",
- "uuid",
- "windows 0.48.0",
+ "windows 0.52.0",
  "windows-implement",
+ "windows-version",
  "x11-dl",
  "zbus",
 ]
@@ -6222,9 +6232,9 @@ dependencies = [
 [[package]]
 name = "tao-macros"
 version = "0.1.2"
-source = "git+https://github.com/rustdesk-org/tao?branch=dev#1e5b97258cf42a30f80f85a6aa0b1a4aece1977e"
+source = "git+https://github.com/rustdesk-org/tao?branch=dev#1cad16b200485bbccc67dcee2d339eac6e1c16ad"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
@@ -6264,22 +6274,21 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.9.0"
+version = "3.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
 dependencies = [
  "cfg-if 1.0.0",
- "fastrand 2.0.1",
- "redox_syscall",
- "rustix 0.38.28",
+ "fastrand 2.0.2",
+ "rustix 0.38.32",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "termcolor"
-version = "1.4.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
 dependencies = [
  "winapi-util",
 ]
@@ -6316,22 +6325,22 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.56"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.56"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -6367,16 +6376,17 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.3.31"
+version = "0.3.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
 dependencies = [
  "deranged",
- "itoa 1.0.10",
+ "itoa 1.0.11",
  "libc",
+ "num-conv",
  "num_threads",
  "powerfmt",
- "serde 1.0.195",
+ "serde 1.0.197",
  "time-core",
  "time-macros",
 ]
@@ -6389,10 +6399,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.16"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f"
+checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
 dependencies = [
+ "num-conv",
  "time-core",
 ]
 
@@ -6413,11 +6424,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.28.1"
+version = "1.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105"
+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
 dependencies = [
- "autocfg 1.1.0",
+ "backtrace",
  "bytes",
  "libc",
  "mio",
@@ -6425,20 +6436,20 @@ dependencies = [
  "parking_lot",
  "pin-project-lite",
  "signal-hook-registry",
- "socket2 0.4.10",
+ "socket2 0.5.6",
  "tokio-macros",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "tokio-macros"
-version = "2.1.0"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -6501,19 +6512,7 @@ version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
 dependencies = [
- "serde 1.0.195",
-]
-
-[[package]]
-name = "toml"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb9d890e4dc9298b70f740f615f2e05b9db37dce531f6b24fb77ac993f9f217"
-dependencies = [
- "serde 1.0.195",
- "serde_spanned",
- "toml_datetime 0.5.1",
- "toml_edit 0.18.1",
+ "serde 1.0.197",
 ]
 
 [[package]]
@@ -6522,31 +6521,22 @@ version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
 dependencies = [
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_spanned",
- "toml_datetime 0.6.5",
+ "toml_datetime",
  "toml_edit 0.19.15",
 ]
 
 [[package]]
 name = "toml"
-version = "0.8.8"
+version = "0.8.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
+checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290"
 dependencies = [
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_spanned",
- "toml_datetime 0.6.5",
- "toml_edit 0.21.0",
-]
-
-[[package]]
-name = "toml_datetime"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"
-dependencies = [
- "serde 1.0.195",
+ "toml_datetime",
+ "toml_edit 0.22.6",
 ]
 
 [[package]]
@@ -6555,53 +6545,51 @@ version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
 dependencies = [
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
 name = "toml_edit"
-version = "0.18.1"
+version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
- "indexmap 1.9.3",
- "nom8",
- "serde 1.0.195",
+ "indexmap 2.2.6",
+ "serde 1.0.197",
  "serde_spanned",
- "toml_datetime 0.5.1",
+ "toml_datetime",
+ "winnow 0.5.40",
 ]
 
 [[package]]
 name = "toml_edit"
-version = "0.19.15"
+version = "0.20.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
 dependencies = [
- "indexmap 2.1.0",
- "serde 1.0.195",
- "serde_spanned",
- "toml_datetime 0.6.5",
- "winnow",
+ "indexmap 2.2.6",
+ "toml_datetime",
+ "winnow 0.5.40",
 ]
 
 [[package]]
 name = "toml_edit"
-version = "0.21.0"
+version = "0.22.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
+checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6"
 dependencies = [
- "indexmap 2.1.0",
- "serde 1.0.195",
+ "indexmap 2.2.6",
+ "serde 1.0.197",
  "serde_spanned",
- "toml_datetime 0.6.5",
- "winnow",
+ "toml_datetime",
+ "winnow 0.6.1",
 ]
 
 [[package]]
 name = "totp-rs"
-version = "5.4.0"
+version = "5.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df3504f96adf86d28e7eb16fa236a7951ec72c15ee100d1b5318e225944bc8cb"
+checksum = "6c4ae9724c5888c0417d2396037ed3b60665925624766416e3e342b6ba5dbd3f"
 dependencies = [
  "base32",
  "constant_time_eq 0.2.6",
@@ -6636,9 +6624,9 @@ version = "0.1.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -6652,9 +6640,9 @@ dependencies = [
 
 [[package]]
 name = "transpose"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6522d49d03727ffb138ae4cbc1283d3774f0d10aa7f9bf52e6784c45daf9b23"
+checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e"
 dependencies = [
  "num-integer",
  "strength_reduce",
@@ -6662,11 +6650,11 @@ dependencies = [
 
 [[package]]
 name = "tray-icon"
-version = "0.5.1"
-source = "git+https://github.com/rustdesk-org/tray-icon#ef98e7b98abed2e3da614277eced12a85bfb717c"
+version = "0.13.1"
+source = "git+https://github.com/tauri-apps/tray-icon#3c75d9031a915c108cc1886121b9b84cb9c8c312"
 dependencies = [
- "cocoa",
- "core-graphics 0.22.3",
+ "cocoa 0.25.0",
+ "core-graphics 0.23.2",
  "crossbeam-channel",
  "dirs-next",
  "libappindicator",
@@ -6675,7 +6663,7 @@ dependencies = [
  "once_cell",
  "png",
  "thiserror",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -6729,7 +6717,7 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
 dependencies = [
- "memoffset 0.9.0",
+ "memoffset 0.9.1",
  "tempfile",
  "winapi 0.3.9",
 ]
@@ -6745,9 +6733,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.14"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
 
 [[package]]
 name = "unicode-ident"
@@ -6757,9 +6745,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
 dependencies = [
  "tinyvec",
 ]
@@ -6809,7 +6797,7 @@ dependencies = [
  "form_urlencoded",
  "idna",
  "percent-encoding",
- "serde 1.0.195",
+ "serde 1.0.197",
 ]
 
 [[package]]
@@ -6861,9 +6849,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
 [[package]]
 name = "uuid"
-version = "1.6.1"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
 dependencies = [
  "getrandom",
 ]
@@ -6909,35 +6897,15 @@ dependencies = [
 [[package]]
 name = "vpl"
 version = "0.1.0"
-source = "git+https://github.com/21pages/gpucodec#4650b5f1376f92c59a9cdbbbe05a744248325eec"
+source = "git+https://github.com/21pages/gpucodec#6321fdeb6246ceee07b2b63060f8fe48a540f353"
 dependencies = [
- "bindgen 0.59.2",
+ "bindgen 0.65.1",
  "cc",
  "gpu_common",
  "log",
 ]
 
 [[package]]
-name = "vswhom"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
-dependencies = [
- "libc",
- "vswhom-sys",
-]
-
-[[package]]
-name = "vswhom-sys"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18"
-dependencies = [
- "cc",
- "libc",
-]
-
-[[package]]
 name = "waker-fn"
 version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6945,9 +6913,9 @@ checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690"
 
 [[package]]
 name = "walkdir"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
 dependencies = [
  "same-file",
  "winapi-util",
@@ -6988,10 +6956,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
+name = "wasite"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
+
+[[package]]
 name = "wasm-bindgen"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
+checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
 dependencies = [
  "cfg-if 1.0.0",
  "wasm-bindgen-macro",
@@ -6999,24 +6973,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
+checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.39"
+version = "0.4.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12"
+checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97"
 dependencies = [
  "cfg-if 1.0.0",
  "js-sys",
@@ -7026,9 +7000,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
+checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
 dependencies = [
  "quote 1.0.35",
  "wasm-bindgen-macro-support",
@@ -7036,22 +7010,22 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
+checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.89"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
+checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
 
 [[package]]
 name = "wayland-backend"
@@ -7073,7 +7047,7 @@ version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "nix 0.26.4",
  "wayland-backend",
  "wayland-scanner",
@@ -7085,7 +7059,7 @@ version = "0.31.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "wayland-backend",
  "wayland-client",
  "wayland-scanner",
@@ -7097,7 +7071,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "wayland-backend",
  "wayland-client",
  "wayland-protocols",
@@ -7110,7 +7084,7 @@ version = "0.31.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quick-xml 0.30.0",
  "quote 1.0.35",
 ]
@@ -7128,9 +7102,9 @@ dependencies = [
 
 [[package]]
 name = "web-sys"
-version = "0.3.66"
+version = "0.3.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
+checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -7154,19 +7128,19 @@ dependencies = [
 
 [[package]]
 name = "webpki"
-version = "0.22.4"
+version = "0.22.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"
+checksum = "07ecc0cd7cac091bf682ec5efa18b1cff79d617b84181f38b3951dbe135f607f"
 dependencies = [
- "ring 0.17.5",
- "untrusted 0.9.0",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
 ]
 
 [[package]]
 name = "webpki-roots"
-version = "0.25.3"
+version = "0.25.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
+checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
 
 [[package]]
 name = "weezl"
@@ -7183,16 +7157,17 @@ dependencies = [
  "either",
  "home",
  "once_cell",
- "rustix 0.38.28",
+ "rustix 0.38.32",
 ]
 
 [[package]]
 name = "whoami"
-version = "1.4.1"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50"
+checksum = "0fec781d48b41f8163426ed18e8fc2864c12937df9ce54c88ede7bd47270893e"
 dependencies = [
- "wasm-bindgen",
+ "redox_syscall",
+ "wasite",
  "web-sys",
 ]
 
@@ -7250,9 +7225,9 @@ dependencies = [
 
 [[package]]
 name = "winapi-wsapoll"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e"
+checksum = "1eafc5f679c576995526e81635d0cf9695841736712b4e892f87abbe6fed3f28"
 dependencies = [
  "winapi 0.3.9",
 ]
@@ -7313,8 +7288,6 @@ version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
 dependencies = [
- "windows-implement",
- "windows-interface",
  "windows-targets 0.48.5",
 ]
 
@@ -7324,11 +7297,23 @@ version = "0.51.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
 dependencies = [
- "windows-core",
+ "windows-core 0.51.1",
  "windows-targets 0.48.5",
 ]
 
 [[package]]
+name = "windows"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+dependencies = [
+ "windows-core 0.52.0",
+ "windows-implement",
+ "windows-interface",
+ "windows-targets 0.52.0",
+]
+
+[[package]]
 name = "windows-core"
 version = "0.51.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -7338,25 +7323,34 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
 name = "windows-implement"
-version = "0.48.0"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c"
+checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 1.0.109",
+ "syn 2.0.57",
 ]
 
 [[package]]
 name = "windows-interface"
-version = "0.48.0"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7"
+checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 1.0.109",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -7458,6 +7452,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-version"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75aa004c988e080ad34aff5739c39d0312f4684699d6d71fc8a198d057b8b9b4"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -7645,20 +7648,20 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
 
 [[package]]
 name = "winnow"
-version = "0.5.34"
+version = "0.5.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
-name = "winreg"
-version = "0.10.1"
+name = "winnow"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+checksum = "d90f4e0f530c4c69f62b80d839e9ef3855edc9cba471a160c4d692deed62b401"
 dependencies = [
- "winapi 0.3.9",
+ "memchr",
 ]
 
 [[package]]
@@ -7682,16 +7685,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "winreg"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc"
-dependencies = [
- "cfg-if 1.0.0",
- "windows-sys 0.48.0",
-]
-
-[[package]]
 name = "winres"
 version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -7759,7 +7752,7 @@ name = "x11-clipboard"
 version = "0.8.1"
 source = "git+https://github.com/clslaid/x11-clipboard?branch=feat/store-batch#5fc2e73bc01ada3681159b34cf3ea8f0d14cd904"
 dependencies = [
- "x11rb",
+ "x11rb 0.12.0",
 ]
 
 [[package]]
@@ -7779,11 +7772,22 @@ version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a"
 dependencies = [
- "gethostname",
+ "gethostname 0.3.0",
  "nix 0.26.4",
  "winapi 0.3.9",
  "winapi-wsapoll",
- "x11rb-protocol",
+ "x11rb-protocol 0.12.0",
+]
+
+[[package]]
+name = "x11rb"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
+dependencies = [
+ "gethostname 0.4.3",
+ "rustix 0.38.32",
+ "x11rb-protocol 0.13.0",
 ]
 
 [[package]]
@@ -7796,26 +7800,32 @@ dependencies = [
 ]
 
 [[package]]
+name = "x11rb-protocol"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
+
+[[package]]
 name = "xdg-home"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd"
+checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e"
 dependencies = [
- "nix 0.26.4",
+ "libc",
  "winapi 0.3.9",
 ]
 
 [[package]]
 name = "zbus"
-version = "3.14.1"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948"
+checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6"
 dependencies = [
  "async-broadcast",
  "async-executor",
  "async-fs",
- "async-io",
- "async-lock",
+ "async-io 1.13.0",
+ "async-lock 2.8.0",
  "async-process",
  "async-recursion",
  "async-task",
@@ -7833,7 +7843,7 @@ dependencies = [
  "once_cell",
  "ordered-stream",
  "rand 0.8.5",
- "serde 1.0.195",
+ "serde 1.0.197",
  "serde_repr",
  "sha1",
  "static_assertions",
@@ -7848,12 +7858,12 @@ dependencies = [
 
 [[package]]
 name = "zbus_macros"
-version = "3.14.1"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d"
+checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5"
 dependencies = [
  "proc-macro-crate 1.3.1",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "regex",
  "syn 1.0.109",
@@ -7862,11 +7872,11 @@ dependencies = [
 
 [[package]]
 name = "zbus_names"
-version = "2.6.0"
+version = "2.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9"
+checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d"
 dependencies = [
- "serde 1.0.195",
+ "serde 1.0.197",
  "static_assertions",
  "zvariant",
 ]
@@ -7896,9 +7906,9 @@ version = "0.6.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -7907,9 +7917,9 @@ version = "0.7.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
- "syn 2.0.48",
+ "syn 2.0.57",
 ]
 
 [[package]]
@@ -7928,7 +7938,7 @@ dependencies = [
  "hmac",
  "pbkdf2",
  "sha1",
- "time 0.3.31",
+ "time 0.3.34",
  "zstd 0.11.2+zstd.1.5.2",
 ]
 
@@ -7943,11 +7953,11 @@ dependencies = [
 
 [[package]]
 name = "zstd"
-version = "0.13.0"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110"
+checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a"
 dependencies = [
- "zstd-safe 7.0.0",
+ "zstd-safe 7.1.0",
 ]
 
 [[package]]
@@ -7962,18 +7972,18 @@ dependencies = [
 
 [[package]]
 name = "zstd-safe"
-version = "7.0.0"
+version = "7.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e"
+checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a"
 dependencies = [
  "zstd-sys",
 ]
 
 [[package]]
 name = "zstd-sys"
-version = "2.0.9+zstd.1.5.5"
+version = "2.0.10+zstd.1.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656"
+checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa"
 dependencies = [
  "cc",
  "pkg-config",
@@ -7990,26 +8000,26 @@ dependencies = [
 
 [[package]]
 name = "zvariant"
-version = "3.15.0"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c"
+checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db"
 dependencies = [
  "byteorder",
  "enumflags2",
  "libc",
- "serde 1.0.195",
+ "serde 1.0.197",
  "static_assertions",
  "zvariant_derive",
 ]
 
 [[package]]
 name = "zvariant_derive"
-version = "3.15.0"
+version = "3.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd"
+checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9"
 dependencies = [
  "proc-macro-crate 1.3.1",
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
  "zvariant_utils",
@@ -8021,7 +8031,7 @@ version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200"
 dependencies = [
- "proc-macro2 1.0.76",
+ "proc-macro2 1.0.79",
  "quote 1.0.35",
  "syn 1.0.109",
 ]
diff --git a/pkgs/by-name/ru/rustdesk-flutter/package.nix b/pkgs/by-name/ru/rustdesk-flutter/package.nix
index 2c82eade26da5..a78290e66004a 100644
--- a/pkgs/by-name/ru/rustdesk-flutter/package.nix
+++ b/pkgs/by-name/ru/rustdesk-flutter/package.nix
@@ -23,7 +23,7 @@
 
   flutterRustBridge = rustPlatform.buildRustPackage rec {
     pname = "flutter_rust_bridge_codegen";
-    version = "1.80.1"; # https://github.com/rustdesk/rustdesk/blob/16db977fd81e14af62ec5ac7760a7661a5c24be8/.github/workflows/bridge.yml#L10
+    version = "1.80.1"; # https://github.com/rustdesk/rustdesk/blob/1.2.3-2/.github/workflows/bridge.yml#L10
 
     src = fetchFromGitHub {
       owner = "fzyzcjy";
@@ -41,30 +41,29 @@
 
 in flutter316.buildFlutterApplication rec {
   pname = "rustdesk";
-  version = "1.2.3-unstable-2024-02-11";
+  version = "1.2.3-2";
   src = fetchFromGitHub {
     owner = "rustdesk";
     repo = "rustdesk";
-    rev = "16db977fd81e14af62ec5ac7760a7661a5c24be8";
-    hash = "sha256-k4gNuA/gZ58S0selOn9+K7+s5AQLkpz+DPI84Fuw414=";
+    rev = version;
+    hash = "sha256-aIGaj338eb8/l1NTgBwrLmx5VCpgGoYpx+p/ViCJgjQ=";
   };
 
   strictDeps = true;
 
   # Configure the Flutter/Dart build
   sourceRoot = "${src.name}/flutter";
-  # curl https://raw.githubusercontent.com/rustdesk/rustdesk/16db977fd81e14af62ec5ac7760a7661a5c24be8/flutter/pubspec.lock | yq
+  # curl https://raw.githubusercontent.com/rustdesk/rustdesk/1.2.3-2/flutter/pubspec.lock | yq
   pubspecLock = lib.importJSON ./pubspec.lock.json;
   gitHashes = {
     dash_chat_2 = "sha256-J5Bc6CeCoRGN870aNEVJ2dkQNb+LOIZetfG2Dsfz5Ow=";
-    desktop_drop = "sha256-rt9N6TNAq7YRPzHSDVukGCXMvIIIj48HZaEJikbh6Pk=";
     desktop_multi_window = "sha256-jhhqV4srWd3oJwlKMHPpGvvdzyoH/kJtTg6AB4e9Udk=";
     dynamic_layouts = "sha256-eFp1YVI6vI2HRgtE5nTqGZIylB226H0O8kuxy9ypuf8=";
+    flutter_gpu_texture_renderer = "sha256-0znIHlZ0ashRTev2kAXU179eq/V1RJC9Hp4jAfiPh5Q=";
     flutter_improved_scrolling = "sha256-fKs1+JmhDVVfjyhr6Fl17pc6n++mCTjBo1PT3l/DUnc=";
     uni_links_desktop = "sha256-h3wlo31XnHELCCPlk7OSLglm9Xn/969yTllp5UkGY98=";
     window_manager = "sha256-CUTcSl+W7Wz/Og5k9ujOdAlhKWv/gIYe58wurf9CJH4=";
     window_size = "sha256-+lqY46ZURT0qcqPvHFXUnd83Uvfq79Xr+rw1AHqrpak=";
-    flutter_gpu_texture_renderer = "sha256-w1iMp4wUDkG1UZCHFjUUL11GIHyUDUxM+ZM8l423MLk=";
   };
 
   # Configure the Rust build
@@ -74,33 +73,34 @@ in flutter316.buildFlutterApplication rec {
     # removing the git variant of core-foundation-sys
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "amf-0.1.0" = "sha256-j9w3bB1Nd8GuHyMHxjcTGBy3JJ26g/GiBg2OQgrdqLw=";
-      "android-wakelock-0.1.0" = "sha256-09EH/U1BBs3l4galQOrTKmPUYBgryUjfc/rqPZhdYc4=";
-      "cacao-0.4.0-beta2" = "sha256-U5tCLeVxjmZCm7ti1u71+i116xmozPaR69pCsA4pxrM=";
-      "confy-0.4.0-2" = "sha256-r5VeggXrIq5Cwxc2WSrxQDI5Gvbw979qIUQfMKHgBUI=";
-      "core-foundation-0.9.3" = "sha256-iB4OVmWZhuWbs9RFWvNc+RNut6rip2/50o5ZM6c0c3g=";
-      "evdev-0.11.5" = "sha256-aoPmjGi/PftnH6ClEWXHvIj0X3oh15ZC1q7wPC1XPr0=";
-      "hwcodec-0.2.0" = "sha256-yw3cmC74u6oLfJD6ouqACUZynHRujT/KJMtLOtzg7f4=";
-      "impersonate_system-0.1.0" = "sha256-pIV7s2qGoCIUrhaRovBDCJaGQ/pMdJacDXJmeBpkcyI=";
-      "keepawake-0.4.3" = "sha256-wDLjjhKWbCeaWbA896a5E5UMB0B/xI/84QRCUYNKX7I=";
-      "machine-uid-0.3.0" = "sha256-rEOyNThg6p5oqE9URnxSkPtzyW8D4zKzLi9pAnzTElE=";
-      "magnum-opus-0.4.0" = "sha256-T4qaYOl8lCK1h9jWa9KqGvnVfDViT9Ob5R+YgnSw2tg=";
-      "mouce-0.2.1" = "sha256-3PtNEmVMXgqKV4r3KiKTkk4oyCt4BKynniJREE+RyFk=";
-      "pam-0.7.0" = "sha256-qe2GH6sfGEUnqLiQucYLB5rD/GyAaVtm9pAxWRb1H3Q=";
-      "parity-tokio-ipc-0.7.3-2" = "sha256-WXDKcDBaJuq4K9gjzOKMozePOFiVX0EqYAFamAz/Yvw=";
-      "rdev-0.5.0-2" = "sha256-KrzNa4sKyuVw3EV/Ec9VBNRyJy7QFR2Gu4c2WkltwUw=";
-      "reqwest-0.11.23" = "sha256-kEUT+gs4ziknDiGdPMLnj5pmxC5SBpLopZ8jZ34GDWc=";
-      "rust-pulsectl-0.2.12" = "sha256-8jXTspWvjONFcvw9/Z8C43g4BuGZ3rsG32tvLMQbtbM=";
-      "sciter-rs-0.5.57" = "sha256-NQPDlMQ0sGY8c9lBMlplT82sNjbgJy2m/+REnF3fz8M=";
-      "sysinfo-0.29.10" = "sha256-O2zJGQdtXNiIwatmyIB6bu5eVyv1JS/IHkv//BDCpcY=";
-      "tao-0.22.2" = "sha256-vZx7WM6vK9UarbFQ/FMnTNEEDS+tglhWcPXt/h7YMFA=";
-      "tfc-0.6.1" = "sha256-ukxJl7Z+pUXCjvTsG5Q0RiXocPERWGsnAyh3SIWm0HU=";
-      "tokio-socks-0.5.1-2" = "sha256-x3aFJKo0XLaCGkZLtG9GYA+A/cGGedVZ8gOztWiYVUY=";
-      "tray-icon-0.5.1" = "sha256-1VyUg8V4omgdRIYyXhfn8kUvhV5ef6D2cr2Djz2uQyc=";
-      "wallpaper-3.2.0" = "sha256-p9NRmusdA0wvF6onp1UTL0/4t7XnEAc19sqyGDnfg/Q=";
-      "webm-1.1.0" = "sha256-p4BMej7yvb8c/dJynRWZmwo2hxAAY96Qx6Qx2DbT8hE=";
-      "x11-2.19.0" = "sha256-GDCeKzUtvaLeBDmPQdyr499EjEfT6y4diBMzZVEptzc=";
-      "x11-clipboard-0.8.1" = "sha256-PtqmSD2MwkbLVWbfTSXZW3WEvEnUlo04qieUTjN2whE=";
+    "amf-0.1.0" = "sha256-4YVHndc6sCuuHhM2dc1zoOFMZt2J5nUg/UuKYsyiC+A=";
+    "android-wakelock-0.1.0" = "sha256-09EH/U1BBs3l4galQOrTKmPUYBgryUjfc/rqPZhdYc4=";
+    "arboard-3.3.1" = "sha256-siFkyWK8VmDIhefCaRjNwVtHxRmAp95JvaTp37M6nCA=";
+    "cacao-0.4.0-beta2" = "sha256-U5tCLeVxjmZCm7ti1u71+i116xmozPaR69pCsA4pxrM=";
+    "confy-0.4.0-2" = "sha256-r5VeggXrIq5Cwxc2WSrxQDI5Gvbw979qIUQfMKHgBUI=";
+    "core-foundation-0.9.3" = "sha256-iB4OVmWZhuWbs9RFWvNc+RNut6rip2/50o5ZM6c0c3g=";
+    "evdev-0.11.5" = "sha256-aoPmjGi/PftnH6ClEWXHvIj0X3oh15ZC1q7wPC1XPr0=";
+    "hwcodec-0.2.0" = "sha256-bbAOQui7UY7FFKnwsxFUJYBG/zi9rpmOtcai3faeoeU=";
+    "impersonate_system-0.1.0" = "sha256-pIV7s2qGoCIUrhaRovBDCJaGQ/pMdJacDXJmeBpkcyI=";
+    "keepawake-0.4.3" = "sha256-cqSpkq/PCz+5+ZUyPy5hF6rP3fBzuZDywyxMUQ50Rk4=";
+    "machine-uid-0.3.0" = "sha256-rEOyNThg6p5oqE9URnxSkPtzyW8D4zKzLi9pAnzTElE=";
+    "magnum-opus-0.4.0" = "sha256-T4qaYOl8lCK1h9jWa9KqGvnVfDViT9Ob5R+YgnSw2tg=";
+    "mouce-0.2.1" = "sha256-3PtNEmVMXgqKV4r3KiKTkk4oyCt4BKynniJREE+RyFk=";
+    "pam-0.7.0" = "sha256-qe2GH6sfGEUnqLiQucYLB5rD/GyAaVtm9pAxWRb1H3Q=";
+    "parity-tokio-ipc-0.7.3-3" = "sha256-oHygC811v1fXt4KWhIZU04cs4rD340I8/bczfbxpiok=";
+    "rdev-0.5.0-2" = "sha256-KrzNa4sKyuVw3EV/Ec9VBNRyJy7QFR2Gu4c2WkltwUw=";
+    "reqwest-0.11.23" = "sha256-kEUT+gs4ziknDiGdPMLnj5pmxC5SBpLopZ8jZ34GDWc=";
+    "rust-pulsectl-0.2.12" = "sha256-8jXTspWvjONFcvw9/Z8C43g4BuGZ3rsG32tvLMQbtbM=";
+    "sciter-rs-0.5.57" = "sha256-NQPDlMQ0sGY8c9lBMlplT82sNjbgJy2m/+REnF3fz8M=";
+    "sysinfo-0.29.10" = "sha256-O2zJGQdtXNiIwatmyIB6bu5eVyv1JS/IHkv//BDCpcY=";
+    "tao-0.25.0" = "sha256-kLmx1z9Ybn/hDt2OcszEjtZytQIE+NKTIn9zNr9oEQk=";
+    "tfc-0.6.1" = "sha256-ukxJl7Z+pUXCjvTsG5Q0RiXocPERWGsnAyh3SIWm0HU=";
+    "tokio-socks-0.5.1-2" = "sha256-x3aFJKo0XLaCGkZLtG9GYA+A/cGGedVZ8gOztWiYVUY=";
+    "tray-icon-0.13.1" = "sha256-mgWgd9rafDpRFO/6YpsNDE5ZbRqCE2Y1F8PiNznLMyk=";
+    "wallpaper-3.2.0" = "sha256-p9NRmusdA0wvF6onp1UTL0/4t7XnEAc19sqyGDnfg/Q=";
+    "webm-1.1.0" = "sha256-p4BMej7yvb8c/dJynRWZmwo2hxAAY96Qx6Qx2DbT8hE=";
+    "x11-2.19.0" = "sha256-GDCeKzUtvaLeBDmPQdyr499EjEfT6y4diBMzZVEptzc=";
+    "x11-clipboard-0.8.1" = "sha256-PtqmSD2MwkbLVWbfTSXZW3WEvEnUlo04qieUTjN2whE=";
     };
   };
   dontCargoBuild = true;
diff --git a/pkgs/by-name/ru/rustdesk-flutter/pubspec.lock.json b/pkgs/by-name/ru/rustdesk-flutter/pubspec.lock.json
index a14998a79d0a9..d8d6379584cc4 100644
--- a/pkgs/by-name/ru/rustdesk-flutter/pubspec.lock.json
+++ b/pkgs/by-name/ru/rustdesk-flutter/pubspec.lock.json
@@ -34,21 +34,21 @@
       "dependency": "transitive",
       "description": {
         "name": "animations",
-        "sha256": "ef57563eed3620bd5d75ad96189846aca1e033c0c45fc9a7d26e80ab02b88a70",
+        "sha256": "d3d6dcfb218225bbe68e87ccf6378bbb2e32a94900722c5f81611dad089911cb",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.0.8"
+      "version": "2.0.11"
     },
     "archive": {
       "dependency": "transitive",
       "description": {
         "name": "archive",
-        "sha256": "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03",
+        "sha256": "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.4.6"
+      "version": "3.4.10"
     },
     "args": {
       "dependency": "transitive",
@@ -154,41 +154,41 @@
       "dependency": "transitive",
       "description": {
         "name": "build_daemon",
-        "sha256": "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65",
+        "sha256": "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "4.0.0"
+      "version": "4.0.1"
     },
     "build_resolvers": {
       "dependency": "transitive",
       "description": {
         "name": "build_resolvers",
-        "sha256": "64e12b0521812d1684b1917bc80945625391cb9bdd4312536b1d69dcb6133ed8",
+        "sha256": "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.4.1"
+      "version": "2.4.2"
     },
     "build_runner": {
       "dependency": "direct dev",
       "description": {
         "name": "build_runner",
-        "sha256": "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b",
+        "sha256": "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.4.6"
+      "version": "2.4.8"
     },
     "build_runner_core": {
       "dependency": "transitive",
       "description": {
         "name": "build_runner_core",
-        "sha256": "c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185",
+        "sha256": "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "7.2.11"
+      "version": "7.3.0"
     },
     "built_collection": {
       "dependency": "transitive",
@@ -204,41 +204,41 @@
       "dependency": "transitive",
       "description": {
         "name": "built_value",
-        "sha256": "723b4021e903217dfc445ec4cf5b42e27975aece1fc4ebbc1ca6329c2d9fb54e",
+        "sha256": "a3ec2e0f967bc47f69f95009bb93db936288d61d5343b9436e378b28a2f830c6",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "8.7.0"
+      "version": "8.9.0"
     },
     "cached_network_image": {
       "dependency": "transitive",
       "description": {
         "name": "cached_network_image",
-        "sha256": "f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f",
+        "sha256": "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.3.0"
+      "version": "3.3.1"
     },
     "cached_network_image_platform_interface": {
       "dependency": "transitive",
       "description": {
         "name": "cached_network_image_platform_interface",
-        "sha256": "56aa42a7a01e3c9db8456d9f3f999931f1e05535b5a424271e9a38cabf066613",
+        "sha256": "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.0.0"
+      "version": "4.0.0"
     },
     "cached_network_image_web": {
       "dependency": "transitive",
       "description": {
         "name": "cached_network_image_web",
-        "sha256": "759b9a9f8f6ccbb66c185df805fac107f05730b1dab9c64626d1008cca532257",
+        "sha256": "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.1.0"
+      "version": "1.1.1"
     },
     "characters": {
       "dependency": "transitive",
@@ -274,11 +274,11 @@
       "dependency": "transitive",
       "description": {
         "name": "cli_util",
-        "sha256": "b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7",
+        "sha256": "c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.4.0"
+      "version": "0.4.1"
     },
     "clock": {
       "dependency": "transitive",
@@ -294,21 +294,21 @@
       "dependency": "transitive",
       "description": {
         "name": "code_builder",
-        "sha256": "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677",
+        "sha256": "f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "4.7.0"
+      "version": "4.10.0"
     },
     "collection": {
       "dependency": "transitive",
       "description": {
         "name": "collection",
-        "sha256": "f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687",
+        "sha256": "ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.17.2"
+      "version": "1.18.0"
     },
     "contextmenu": {
       "dependency": "direct main",
@@ -334,11 +334,11 @@
       "dependency": "transitive",
       "description": {
         "name": "cross_file",
-        "sha256": "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c",
+        "sha256": "fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.3.3+6"
+      "version": "0.3.3+8"
     },
     "crypto": {
       "dependency": "transitive",
@@ -364,11 +364,11 @@
       "dependency": "transitive",
       "description": {
         "name": "dart_style",
-        "sha256": "abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334",
+        "sha256": "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.3.3"
+      "version": "2.3.4"
     },
     "dash_chat_2": {
       "dependency": "direct main",
@@ -385,11 +385,11 @@
       "dependency": "transitive",
       "description": {
         "name": "dbus",
-        "sha256": "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263",
+        "sha256": "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.7.8"
+      "version": "0.7.10"
     },
     "debounce_throttle": {
       "dependency": "direct main",
@@ -426,11 +426,11 @@
       "dependency": "direct main",
       "description": {
         "name": "device_info_plus",
-        "sha256": "7035152271ff67b072a211152846e9f1259cf1be41e34cd3e0b5463d2d6b8419",
+        "sha256": "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "9.1.0"
+      "version": "9.1.2"
     },
     "device_info_plus_platform_interface": {
       "dependency": "transitive",
@@ -547,11 +547,11 @@
       "dependency": "transitive",
       "description": {
         "name": "file_selector_platform_interface",
-        "sha256": "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262",
+        "sha256": "a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.6.1"
+      "version": "2.6.2"
     },
     "file_selector_windows": {
       "dependency": "transitive",
@@ -577,11 +577,11 @@
       "dependency": "direct main",
       "description": {
         "name": "flex_color_picker",
-        "sha256": "f37476ab3e80dcaca94e428e159944d465dd16312fda9ff41e07e86f04bfa51c",
+        "sha256": "0871edc170153cfc3de316d30625f40a85daecfa76ce541641f3cc0ec7757cbf",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.3.0"
+      "version": "3.3.1"
     },
     "flex_seed_scheme": {
       "dependency": "transitive",
@@ -771,11 +771,11 @@
       "dependency": "direct main",
       "description": {
         "name": "flutter_svg",
-        "sha256": "bfc7cc3c75fe1282e8ce2e056d8fd1533f1a6848b65c379b4a5e7a9b623d3371",
+        "sha256": "d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.0.8"
+      "version": "2.0.9"
     },
     "flutter_web_plugins": {
       "dependency": "transitive",
@@ -787,11 +787,11 @@
       "dependency": "direct dev",
       "description": {
         "name": "freezed",
-        "sha256": "21bf2825311de65501d22e563e3d7605dff57fb5e6da982db785ae5372ff018a",
+        "sha256": "57247f692f35f068cae297549a46a9a097100685c6780fe67177503eea5ed4e5",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.4.5"
+      "version": "2.4.7"
     },
     "freezed_annotation": {
       "dependency": "direct main",
@@ -857,11 +857,11 @@
       "dependency": "direct main",
       "description": {
         "name": "http",
-        "sha256": "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525",
+        "sha256": "a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.1.0"
+      "version": "1.2.0"
     },
     "http_multi_server": {
       "dependency": "transitive",
@@ -887,21 +887,21 @@
       "dependency": "direct dev",
       "description": {
         "name": "icons_launcher",
-        "sha256": "69de6373013966ea033f4cefbbbae258ccbfe790a6cfc69796cb33fda996298a",
+        "sha256": "9b514ffed6ed69b232fd2bf34c44878c8526be71fc74129a658f35c04c9d4a9d",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.4"
+      "version": "2.1.7"
     },
     "image": {
       "dependency": "direct main",
       "description": {
         "name": "image",
-        "sha256": "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271",
+        "sha256": "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "4.1.3"
+      "version": "4.1.7"
     },
     "image_picker": {
       "dependency": "direct main",
@@ -917,11 +917,11 @@
       "dependency": "transitive",
       "description": {
         "name": "image_picker_android",
-        "sha256": "d6a6e78821086b0b737009b09363018309bbc6de3fd88cc5c26bc2bb44a4957f",
+        "sha256": "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.8.8+2"
+      "version": "0.8.9+3"
     },
     "image_picker_for_web": {
       "dependency": "transitive",
@@ -937,11 +937,11 @@
       "dependency": "transitive",
       "description": {
         "name": "image_picker_ios",
-        "sha256": "c5538cacefacac733c724be7484377923b476216ad1ead35a0d2eadcdc0fc497",
+        "sha256": "fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.8.8+2"
+      "version": "0.8.9+1"
     },
     "image_picker_linux": {
       "dependency": "transitive",
@@ -967,11 +967,11 @@
       "dependency": "transitive",
       "description": {
         "name": "image_picker_platform_interface",
-        "sha256": "ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514",
+        "sha256": "fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.9.1"
+      "version": "2.9.3"
     },
     "image_picker_windows": {
       "dependency": "transitive",
@@ -1047,11 +1047,11 @@
       "dependency": "transitive",
       "description": {
         "name": "matcher",
-        "sha256": "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e",
+        "sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.12.16"
+      "version": "0.12.16+1"
     },
     "material_color_utilities": {
       "dependency": "transitive",
@@ -1067,21 +1067,21 @@
       "dependency": "transitive",
       "description": {
         "name": "meta",
-        "sha256": "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3",
+        "sha256": "a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.9.1"
+      "version": "1.10.0"
     },
     "mime": {
       "dependency": "transitive",
       "description": {
         "name": "mime",
-        "sha256": "e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e",
+        "sha256": "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.0.4"
+      "version": "1.0.5"
     },
     "nested": {
       "dependency": "transitive",
@@ -1167,31 +1167,31 @@
       "dependency": "direct main",
       "description": {
         "name": "path_provider",
-        "sha256": "a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa",
+        "sha256": "b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.1"
+      "version": "2.1.2"
     },
     "path_provider_android": {
       "dependency": "transitive",
       "description": {
         "name": "path_provider_android",
-        "sha256": "e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72",
+        "sha256": "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.2.1"
+      "version": "2.2.2"
     },
     "path_provider_foundation": {
       "dependency": "transitive",
       "description": {
         "name": "path_provider_foundation",
-        "sha256": "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d",
+        "sha256": "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.3.1"
+      "version": "2.3.2"
     },
     "path_provider_linux": {
       "dependency": "transitive",
@@ -1207,11 +1207,11 @@
       "dependency": "transitive",
       "description": {
         "name": "path_provider_platform_interface",
-        "sha256": "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c",
+        "sha256": "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.1"
+      "version": "2.1.2"
     },
     "path_provider_windows": {
       "dependency": "transitive",
@@ -1247,41 +1247,41 @@
       "dependency": "transitive",
       "description": {
         "name": "petitparser",
-        "sha256": "cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750",
+        "sha256": "c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "5.4.0"
+      "version": "6.0.2"
     },
     "platform": {
       "dependency": "transitive",
       "description": {
         "name": "platform",
-        "sha256": "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59",
+        "sha256": "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.1.3"
+      "version": "3.1.4"
     },
     "plugin_platform_interface": {
       "dependency": "transitive",
       "description": {
         "name": "plugin_platform_interface",
-        "sha256": "da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d",
+        "sha256": "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.6"
+      "version": "2.1.8"
     },
     "pointycastle": {
       "dependency": "transitive",
       "description": {
         "name": "pointycastle",
-        "sha256": "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c",
+        "sha256": "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.7.3"
+      "version": "3.7.4"
     },
     "pool": {
       "dependency": "transitive",
@@ -1297,11 +1297,11 @@
       "dependency": "direct main",
       "description": {
         "name": "provider",
-        "sha256": "cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f",
+        "sha256": "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.0.5"
+      "version": "6.1.1"
     },
     "pub_semver": {
       "dependency": "transitive",
@@ -1337,11 +1337,11 @@
       "dependency": "transitive",
       "description": {
         "name": "puppeteer",
-        "sha256": "59e723cc5b69537159a7c34efd645dc08a6a1ac4647d7d7823606802c0f93cdb",
+        "sha256": "eedeaae6ec5d2e54f9ae22ab4d6b3dda2e8791c356cc783046d06c287ffe11d8",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.2.0"
+      "version": "3.6.0"
     },
     "qr": {
       "dependency": "transitive",
@@ -1473,11 +1473,11 @@
       "dependency": "transitive",
       "description": {
         "name": "source_gen",
-        "sha256": "fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16",
+        "sha256": "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.4.0"
+      "version": "1.5.0"
     },
     "source_span": {
       "dependency": "transitive",
@@ -1493,21 +1493,21 @@
       "dependency": "transitive",
       "description": {
         "name": "sqflite",
-        "sha256": "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a",
+        "sha256": "a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.3.0"
+      "version": "2.3.2"
     },
     "sqflite_common": {
       "dependency": "transitive",
       "description": {
         "name": "sqflite_common",
-        "sha256": "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a",
+        "sha256": "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.5.0"
+      "version": "2.5.3"
     },
     "stack_trace": {
       "dependency": "transitive",
@@ -1553,11 +1553,11 @@
       "dependency": "transitive",
       "description": {
         "name": "synchronized",
-        "sha256": "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60",
+        "sha256": "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.1.0"
+      "version": "3.1.0+1"
     },
     "term_glyph": {
       "dependency": "transitive",
@@ -1573,11 +1573,11 @@
       "dependency": "transitive",
       "description": {
         "name": "test_api",
-        "sha256": "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b",
+        "sha256": "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.6.1"
+      "version": "0.7.0"
     },
     "texture_rgba_renderer": {
       "dependency": "direct main",
@@ -1642,13 +1642,12 @@
     "uni_links_desktop": {
       "dependency": "direct main",
       "description": {
-        "path": ".",
-        "ref": "HEAD",
-        "resolved-ref": "e1d25263ae7c214ff52a66a9cf28aea8f408742e",
-        "url": "https://github.com/rustdesk-org/uni_links_desktop"
+        "name": "uni_links_desktop",
+        "sha256": "692de81efc32ef72df56d428902afb5216d5f9e43d71c7b315d360acd7a1e115",
+        "url": "https://pub.dev"
       },
-      "source": "git",
-      "version": "0.1.6"
+      "source": "hosted",
+      "version": "0.1.7"
     },
     "uni_links_platform_interface": {
       "dependency": "transitive",
@@ -1684,41 +1683,41 @@
       "dependency": "direct main",
       "description": {
         "name": "url_launcher",
-        "sha256": "b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba",
+        "sha256": "c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.2.1"
+      "version": "6.2.4"
     },
     "url_launcher_android": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_android",
-        "sha256": "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def",
+        "sha256": "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.2.0"
+      "version": "6.2.2"
     },
     "url_launcher_ios": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_ios",
-        "sha256": "4ac97281cf60e2e8c5cc703b2b28528f9b50c8f7cebc71df6bdf0845f647268a",
+        "sha256": "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.2.0"
+      "version": "6.2.4"
     },
     "url_launcher_linux": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_linux",
-        "sha256": "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd",
+        "sha256": "ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.1.0"
+      "version": "3.1.1"
     },
     "url_launcher_macos": {
       "dependency": "transitive",
@@ -1734,31 +1733,31 @@
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_platform_interface",
-        "sha256": "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50",
+        "sha256": "a932c3a8082e118f80a475ce692fde89dc20fddb24c57360b96bc56f7035de1f",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.2.0"
+      "version": "2.3.1"
     },
     "url_launcher_web": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_web",
-        "sha256": "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2",
+        "sha256": "fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.2.0"
+      "version": "2.2.3"
     },
     "url_launcher_windows": {
       "dependency": "transitive",
       "description": {
         "name": "url_launcher_windows",
-        "sha256": "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc",
+        "sha256": "ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.1.0"
+      "version": "3.1.1"
     },
     "uuid": {
       "dependency": "direct main",
@@ -1774,31 +1773,31 @@
       "dependency": "transitive",
       "description": {
         "name": "vector_graphics",
-        "sha256": "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43",
+        "sha256": "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.1.9+1"
+      "version": "1.1.10+1"
     },
     "vector_graphics_codec": {
       "dependency": "transitive",
       "description": {
         "name": "vector_graphics_codec",
-        "sha256": "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7",
+        "sha256": "f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.1.9+1"
+      "version": "1.1.10+1"
     },
     "vector_graphics_compiler": {
       "dependency": "transitive",
       "description": {
         "name": "vector_graphics_compiler",
-        "sha256": "d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26",
+        "sha256": "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.1.9+1"
+      "version": "1.1.10+1"
     },
     "vector_math": {
       "dependency": "transitive",
@@ -1814,51 +1813,51 @@
       "dependency": "transitive",
       "description": {
         "name": "video_player",
-        "sha256": "74b86e63529cf5885130c639d74cd2f9232e7c8a66cbecbddd1dcb9dbd060d1e",
+        "sha256": "fbf28ce8bcfe709ad91b5789166c832cb7a684d14f571a81891858fefb5bb1c2",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.7.2"
+      "version": "2.8.2"
     },
     "video_player_android": {
       "dependency": "transitive",
       "description": {
         "name": "video_player_android",
-        "sha256": "3fe89ab07fdbce786e7eb25b58532d6eaf189ceddc091cb66cba712f8d9e8e55",
+        "sha256": "7f8f25d7ad56819a82b2948357f3c3af071f6a678db33833b26ec36bbc221316",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.4.10"
+      "version": "2.4.11"
     },
     "video_player_avfoundation": {
       "dependency": "transitive",
       "description": {
         "name": "video_player_avfoundation",
-        "sha256": "6387c2de77763b45104256b3b00b660089be4f909ded8631457dc11bf635e38f",
+        "sha256": "309e3962795e761be010869bae65c0b0e45b5230c5cee1bec72197ca7db040ed",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.5.0"
+      "version": "2.5.6"
     },
     "video_player_platform_interface": {
       "dependency": "transitive",
       "description": {
         "name": "video_player_platform_interface",
-        "sha256": "be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a",
+        "sha256": "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.2.1"
+      "version": "6.2.2"
     },
     "video_player_web": {
       "dependency": "transitive",
       "description": {
         "name": "video_player_web",
-        "sha256": "2dd24f7ba46bfb5d070e9c795001db95e0ca5f2a3d025e98f287c10c9f0fd62f",
+        "sha256": "34beb3a07d4331a24f7e7b2f75b8e2b103289038e07e65529699a671b6a6e2cb",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.1"
+      "version": "2.1.3"
     },
     "visibility_detector": {
       "dependency": "direct main",
@@ -1874,11 +1873,11 @@
       "dependency": "direct main",
       "description": {
         "name": "wakelock_plus",
-        "sha256": "f45a6c03aa3f8322e0a9d7f4a0482721c8789cb41d555407367650b8f9c26018",
+        "sha256": "f268ca2116db22e57577fb99d52515a24bdc1d570f12ac18bb762361d43b043d",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.1.3"
+      "version": "1.1.4"
     },
     "wakelock_plus_platform_interface": {
       "dependency": "transitive",
@@ -1904,11 +1903,11 @@
       "dependency": "transitive",
       "description": {
         "name": "web",
-        "sha256": "dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10",
+        "sha256": "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.1.4-beta"
+      "version": "0.5.1"
     },
     "web_socket_channel": {
       "dependency": "transitive",
@@ -1924,11 +1923,11 @@
       "dependency": "direct main",
       "description": {
         "name": "win32",
-        "sha256": "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3",
+        "sha256": "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "5.0.9"
+      "version": "5.2.0"
     },
     "win32_registry": {
       "dependency": "transitive",
@@ -1966,21 +1965,21 @@
       "dependency": "transitive",
       "description": {
         "name": "xdg_directories",
-        "sha256": "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2",
+        "sha256": "faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.0.3"
+      "version": "1.0.4"
     },
     "xml": {
       "dependency": "transitive",
       "description": {
         "name": "xml",
-        "sha256": "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84",
+        "sha256": "b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "6.3.0"
+      "version": "6.5.0"
     },
     "yaml": {
       "dependency": "transitive",
@@ -2006,15 +2005,15 @@
       "dependency": "direct main",
       "description": {
         "name": "zxing2",
-        "sha256": "1e141568c9646bc262fa75aacf739bc151ef6ad0226997c0016cc3da358a1bbc",
+        "sha256": "a042961441bd400f59595f9125ef5fca4c888daf0ea59c17f41e0e151f8a12b5",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "0.2.0"
+      "version": "0.2.1"
     }
   },
   "sdks": {
-    "dart": ">=3.1.0 <4.0.0",
-    "flutter": ">=3.13.0"
+    "dart": ">=3.2.0 <4.0.0",
+    "flutter": ">=3.16.0"
   }
 }
diff --git a/pkgs/by-name/ry/ryzen-monitor-ng/package.nix b/pkgs/by-name/ry/ryzen-monitor-ng/package.nix
new file mode 100644
index 0000000000000..9a9996ecf61a8
--- /dev/null
+++ b/pkgs/by-name/ry/ryzen-monitor-ng/package.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  pname = "ryzen-monitor-ng";
+  version = "2.0.5-unstable-2023-11-05";
+
+  # Upstream has not updated ryzen_smu header version
+  # This fork corrects ryzen_smu header version and
+  # adds support for Matisse AMD CPUs.
+  src = fetchFromGitHub {
+    owner = "plasmin";
+    repo = "ryzen_monitor_ng";
+    rev = "8b7854791d78de731a45ce7d30dd17983228b7b1";
+    hash = "sha256-fcW2fEsCFliRnMFnboR0jchzVIlCYbr2AE6AS06cb6o=";
+  };
+
+  ## Remove binaries committed into upstream repo
+  preBuild = ''
+    rm src/ryzen_monitor
+  '';
+
+  makeTargets = [ "clean" "install" ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    mv ./src/ryzen_monitor $out/bin
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Access Ryzen SMU information exposed by the ryzen_smu driver";
+    homepage = "https://github.com/mann1x/ryzen_monitor_ng";
+    license = licenses.agpl3Only;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ phdyellow ];
+    mainProgram = "ryzen_monitor";
+  };
+}
diff --git a/pkgs/by-name/sc/scope-tui/Cargo.lock b/pkgs/by-name/sc/scope-tui/Cargo.lock
new file mode 100644
index 0000000000000..1af1397638dfe
--- /dev/null
+++ b/pkgs/by-name/sc/scope-tui/Cargo.lock
@@ -0,0 +1,962 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+
+[[package]]
+name = "anstream"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+
+[[package]]
+name = "cassowary"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
+
+[[package]]
+name = "castaway"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc"
+dependencies = [
+ "rustversion",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "clap"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "compact_str"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "ryu",
+ "static_assertions",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "crossterm"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
+dependencies = [
+ "bitflags 2.4.2",
+ "crossterm_winapi",
+ "libc",
+ "mio",
+ "parking_lot",
+ "signal-hook",
+ "signal-hook-mio",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "either"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "indoc"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "libpulse-binding"
+version = "2.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3557a2dfc380c8f061189a01c6ae7348354e0c9886038dc6c171219c08eaff"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+ "libpulse-sys",
+ "num-derive",
+ "num-traits",
+ "winapi",
+]
+
+[[package]]
+name = "libpulse-simple-binding"
+version = "2.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05fd6b68f33f6a251265e6ed1212dc3107caad7c5c6fdcd847b2e65ef58c308d"
+dependencies = [
+ "libpulse-binding",
+ "libpulse-simple-sys",
+ "libpulse-sys",
+]
+
+[[package]]
+name = "libpulse-simple-sys"
+version = "1.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea6613b4199d8b9f0edcfb623e020cb17bbd0bee8dd21f3c7cc938de561c4152"
+dependencies = [
+ "libpulse-sys",
+ "pkg-config",
+]
+
+[[package]]
+name = "libpulse-sys"
+version = "1.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc19e110fbf42c17260d30f6d3dc545f58491c7830d38ecb9aaca96e26067a9b"
+dependencies = [
+ "libc",
+ "num-derive",
+ "num-traits",
+ "pkg-config",
+ "winapi",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "lru"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
+dependencies = [
+ "hashbrown",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "log",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
+name = "num-derive"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_threads"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "primal-check"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9df7f93fd637f083201473dab4fee2db4c429d32e55e3299980ab3957ab916a0"
+dependencies = [
+ "num-integer",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "ratatui"
+version = "0.26.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcb12f8fbf6c62614b0d56eb352af54f6a22410c3b079eb53ee93c7b97dd31d8"
+dependencies = [
+ "bitflags 2.4.2",
+ "cassowary",
+ "compact_str",
+ "crossterm",
+ "indoc",
+ "itertools",
+ "lru",
+ "paste",
+ "stability",
+ "strum",
+ "time",
+ "unicode-segmentation",
+ "unicode-width",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustfft"
+version = "6.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43806561bc506d0c5d160643ad742e3161049ac01027b5e6d7524091fd401d86"
+dependencies = [
+ "num-complex",
+ "num-integer",
+ "num-traits",
+ "primal-check",
+ "strength_reduce",
+ "transpose",
+ "version_check",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+
+[[package]]
+name = "ryu"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+
+[[package]]
+name = "scope-tui"
+version = "0.3.0"
+dependencies = [
+ "clap",
+ "crossterm",
+ "derive_more",
+ "libpulse-binding",
+ "libpulse-simple-binding",
+ "ratatui",
+ "rustfft",
+ "thiserror",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "semver"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+
+[[package]]
+name = "serde"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "signal-hook"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-mio"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+dependencies = [
+ "libc",
+ "mio",
+ "signal-hook",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+
+[[package]]
+name = "stability"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebd1b177894da2a2d9120208c3386066af06a488255caabc5de8ddca22dbc3ce"
+dependencies = [
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "strength_reduce"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82"
+
+[[package]]
+name = "strsim"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
+
+[[package]]
+name = "strum"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.52"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "time"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+dependencies = [
+ "deranged",
+ "libc",
+ "num-conv",
+ "num_threads",
+ "powerfmt",
+ "serde",
+ "time-core",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "transpose"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e"
+dependencies = [
+ "num-integer",
+ "strength_reduce",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
diff --git a/pkgs/by-name/sc/scope-tui/package.nix b/pkgs/by-name/sc/scope-tui/package.nix
new file mode 100644
index 0000000000000..850036fd89adc
--- /dev/null
+++ b/pkgs/by-name/sc/scope-tui/package.nix
@@ -0,0 +1,38 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, libpulseaudio
+}:
+rustPlatform.buildRustPackage {
+  pname = "scope-tui";
+  version = "0-unstable-2024-03-16";
+
+  src = fetchFromGitHub {
+    owner = "alemidev";
+    repo = "scope-tui";
+    rev = "299efd70129eb945f8ce63ff853decb41ef5e7ef";
+    hash = "sha256-ELcNSjie/AGrPFT06VXR5mNxiBPwYGVzeC8I9ybN8Bc=";
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+  };
+
+  postPatch = ''
+    cp ${./Cargo.lock} Cargo.lock
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ libpulseaudio ];
+
+  meta = with lib; {
+    description = "A simple oscilloscope/vectorscope/spectroscope for your terminal";
+    homepage = "https://github.com/alemidev/scope-tui";
+    license = licenses.mit;
+    maintainers = with maintainers; [ iynaix ];
+    mainProgram = "scope-tui";
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/sc/scrutiny-collector/package.nix b/pkgs/by-name/sc/scrutiny-collector/package.nix
index 984a52b21405c..f7e7a00267c81 100644
--- a/pkgs/by-name/sc/scrutiny-collector/package.nix
+++ b/pkgs/by-name/sc/scrutiny-collector/package.nix
@@ -7,7 +7,7 @@
 , nix-update-script
 }:
 let
-  version = "0.8.0";
+  version = "0.8.1";
 in
 buildGoModule rec {
   inherit version;
@@ -17,7 +17,7 @@ buildGoModule rec {
     owner = "AnalogJ";
     repo = "scrutiny";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ysjE2nn1WwhEiFIvJ5cRCJQf9mECTgiGUyenwf3mKTA=";
+    hash = "sha256-WoU5rdsIEhZQ+kPoXcestrGXC76rFPvhxa0msXjFsNg=";
   };
 
   subPackages = "collector/cmd/collector-metrics";
diff --git a/pkgs/by-name/sc/scrutiny/package.nix b/pkgs/by-name/sc/scrutiny/package.nix
index 34712b96e431d..179365c49dfed 100644
--- a/pkgs/by-name/sc/scrutiny/package.nix
+++ b/pkgs/by-name/sc/scrutiny/package.nix
@@ -7,13 +7,13 @@
 }:
 let
   pname = "scrutiny";
-  version = "0.8.0";
+  version = "0.8.1";
 
   src = fetchFromGitHub {
     owner = "AnalogJ";
     repo = "scrutiny";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ysjE2nn1WwhEiFIvJ5cRCJQf9mECTgiGUyenwf3mKTA=";
+    hash = "sha256-WoU5rdsIEhZQ+kPoXcestrGXC76rFPvhxa0msXjFsNg=";
   };
 
   frontend = buildNpmPackage {
@@ -64,6 +64,7 @@ buildGoModule rec {
   meta = {
     description = "Hard Drive S.M.A.R.T Monitoring, Historical Trends & Real World Failure Thresholds.";
     homepage = "https://github.com/AnalogJ/scrutiny";
+    changelog = "https://github.com/AnalogJ/scrutiny/releases/tag/v${version}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ jnsgruk ];
     mainProgram = "scrutiny";
diff --git a/pkgs/by-name/se/sesh/package.nix b/pkgs/by-name/se/sesh/package.nix
index 919bc5e6a047e..88bb8c54f8ddd 100644
--- a/pkgs/by-name/se/sesh/package.nix
+++ b/pkgs/by-name/se/sesh/package.nix
@@ -5,13 +5,13 @@
 }:
 buildGoModule rec {
   pname = "sesh";
-  version = "1.0.1";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "joshmedeski";
     repo = "sesh";
     rev = "v${version}";
-    hash = "sha256-eFqqiGIbS9HW7czAtSIPmvbynvg2gsu4luKsL25vxn4=";
+    hash = "sha256-4p3Pqts6GSyUGX9hCQS/vTZiHbi5UQkrzzIA1Fheamc=";
   };
 
   vendorHash = "sha256-zt1/gE4bVj+3yr9n0kT2FMYMEmiooy3k1lQ77rN6sTk=";
diff --git a/pkgs/by-name/sh/shanggu-fonts/package.nix b/pkgs/by-name/sh/shanggu-fonts/package.nix
new file mode 100644
index 0000000000000..f769087d4055a
--- /dev/null
+++ b/pkgs/by-name/sh/shanggu-fonts/package.nix
@@ -0,0 +1,70 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchurl,
+  p7zip,
+}:
+let
+  version = "1.020";
+
+  source =
+    with lib.attrsets;
+    mapAttrs'
+      (
+        name: hash:
+        nameValuePair (lib.strings.toLower name) (fetchurl {
+          url = "https://github.com/GuiWonder/Shanggu/releases/download/${version}/Shanggu${name}TTCs.7z";
+          inherit hash;
+        })
+      )
+      {
+        Mono = "sha256-PcP4zJk8pptuX9tchr4qOorqAvj8YMRBcVrtCbp/1Zo=";
+        Round = "sha256-3wqMdnpdn4xpw7wO+QmIpl5/vZjQGgcfTMdtewK28B8=";
+        Sans = "sha256-isRqIVcH24knPqPI+a+9CpxEKd+PG642giUS9+VbC60=";
+        Serif = "sha256-k0I0NXStE1hcdOaOykuESy6sYqBHHaMaDxxr3tJUSYU=";
+      };
+in
+stdenvNoCC.mkDerivation {
+  pname = "shanggu-fonts";
+  inherit version;
+
+  outputs = [ "out" ] ++ builtins.attrNames source;
+
+  nativeBuildInputs = [ p7zip ];
+
+  unpackPhase = ''
+    runHook preUnpack
+  '' + lib.strings.concatLines (
+    lib.attrsets.mapAttrsToList (name: value: ''
+      7z x ${value} -o${name}
+    '') source
+  ) + ''
+    runHook postUnpack
+  '';
+
+  installPhase =
+    ''
+      runHook preInstall
+
+      mkdir -p $out/share/fonts/truetype
+    ''
+    + lib.strings.concatLines (
+      lib.lists.forEach (builtins.attrNames source) (
+        name: (''
+          install -Dm444 ${name}/*.ttc -t $'' + name + ''/share/fonts/truetype
+          ln -s $'' + name + ''/share/fonts/truetype/*.ttc $out/share/fonts/truetype
+          ''
+        )
+      )
+    ) + ''
+      runHook postInstall
+    '';
+
+  meta = with lib; {
+    homepage = "https://github.com/GuiWonder/Shanggu";
+    description = "Heritage glyph (old glyph) font based on Siyuan";
+    license = licenses.ofl;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ Cryolitia ];
+  };
+}
diff --git a/pkgs/by-name/sh/shopware-cli/package.nix b/pkgs/by-name/sh/shopware-cli/package.nix
index 3f6f75758452b..7c527dbefeb71 100644
--- a/pkgs/by-name/sh/shopware-cli/package.nix
+++ b/pkgs/by-name/sh/shopware-cli/package.nix
@@ -9,18 +9,18 @@
 
 buildGoModule rec {
   pname = "shopware-cli";
-  version = "0.4.33";
+  version = "0.4.34";
   src = fetchFromGitHub {
     repo = "shopware-cli";
     owner = "FriendsOfShopware";
     rev = version;
-    hash = "sha256-BwoCp92tE/fsYIgez/BcU4f23IU5lMQ6jQKOCZ/oTEk=";
+    hash = "sha256-hPEaTfOxijyf0pzgMBKmljB41A0G2aena50pBZerV0s=";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
   nativeCheckInputs = [ git dart-sass ];
 
-  vendorHash = "sha256-dhOw/38FRQCA90z0DdyIPLrYiQ/tutGsdCb108ZLliU=";
+  vendorHash = "sha256-BODiybzXw4gJk99SzzDVvYsV555rW5ehhn+m/pre/pA=";
 
   postInstall = ''
     export HOME="$(mktemp -d)"
diff --git a/pkgs/by-name/si/simdutf/package.nix b/pkgs/by-name/si/simdutf/package.nix
index 70e3d29a48ca2..2656688392dff 100644
--- a/pkgs/by-name/si/simdutf/package.nix
+++ b/pkgs/by-name/si/simdutf/package.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "simdutf";
-  version = "5.2.0";
+  version = "5.2.4";
 
   src = fetchFromGitHub {
     owner = "simdutf";
     repo = "simdutf";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-4yo962iiwSPW1JeQq5mLse5DJUub7AWqMDA+AdpsRBo=";
+    hash = "sha256-ty4LqRJzwDRMCqPUcvgCAuvNExb0iRIzCOSMCfDzGEU=";
   };
 
   # Fix build on darwin
diff --git a/pkgs/by-name/si/simplotask/package.nix b/pkgs/by-name/si/simplotask/package.nix
index 8144e7d99e906..a3ec04ca5da49 100644
--- a/pkgs/by-name/si/simplotask/package.nix
+++ b/pkgs/by-name/si/simplotask/package.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "simplotask";
-  version = "1.14.1";
+  version = "1.15.0";
 
   src = fetchFromGitHub {
     owner = "umputun";
     repo = "spot";
     rev = "v${version}";
-    hash = "sha256-xflMbumhHBH2K7NP+K89jLwM3Ftr/53h0ZuGqzLAmVo=";
+    hash = "sha256-pd6bue/uo6+ZBaN7ZKf/byuPOKOLZdCQau7I7F+iZb0=";
   };
 
   vendorHash = null;
diff --git a/pkgs/by-name/sn/snippetexpander/package.nix b/pkgs/by-name/sn/snippetexpander/package.nix
index 1f5f3a954ec03..2d50515c5026b 100644
--- a/pkgs/by-name/sn/snippetexpander/package.nix
+++ b/pkgs/by-name/sn/snippetexpander/package.nix
@@ -1,9 +1,11 @@
 { lib
 , buildGoModule
 , fetchFromSourcehut
+, makeWrapper
 , scdoc
 , installShellFiles
 , snippetexpanderd
+, snippetexpanderx
 }:
 
 buildGoModule rec {
@@ -11,24 +13,27 @@ buildGoModule rec {
 
   pname = "snippetexpander";
 
-  vendorHash = "sha256-wSAho59yxcXTu1zQ5x783HT4gtfSM4GdsOEeC1wfHhE=";
+  vendorHash = "sha256-W9NkENdZRzqSAONI9QS2EI5aERK+AaPqwYwITKLwXQE=";
 
   proxyVendor = true;
 
   modRoot = "cmd/snippetexpander";
 
   nativeBuildInputs = [
+    makeWrapper
     scdoc
     installShellFiles
   ];
 
   buildInputs = [
     snippetexpanderd
+    snippetexpanderx
   ];
 
   ldflags = [
     "-s"
     "-w"
+    "-X 'main.version=${src.rev}'"
   ];
 
   postInstall = ''
@@ -36,12 +41,18 @@ buildGoModule rec {
     installManPage snippetexpander.1
   '';
 
-  meta = with lib; {
+  postFixup = ''
+    # Ensure snippetexpanderd and snippetexpanderx are available to start/stop.
+    wrapProgram $out/bin/snippetexpander \
+      --prefix PATH : ${lib.makeBinPath [ snippetexpanderd snippetexpanderx ]}
+  '';
+
+  meta = {
     description = "Your little expandable text snippet helper CLI";
     homepage = "https://snippetexpander.org";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ianmjones ];
-    platforms = platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ ianmjones ];
+    platforms = lib.platforms.linux;
     mainProgram = "snippetexpander";
   };
 }
diff --git a/pkgs/by-name/sn/snippetexpanderd/package.nix b/pkgs/by-name/sn/snippetexpanderd/package.nix
index 308803ad9eec4..7cde3eaf527a5 100644
--- a/pkgs/by-name/sn/snippetexpanderd/package.nix
+++ b/pkgs/by-name/sn/snippetexpanderd/package.nix
@@ -2,44 +2,49 @@
 , stdenv
 , buildGoModule
 , fetchFromSourcehut
-, pkg-config
 , makeWrapper
 , scdoc
 , installShellFiles
-, xorg
-, gtk3
+, xclip
+, wl-clipboard
+, xdotool
+, wtype
 }:
 
 buildGoModule rec {
   pname = "snippetexpanderd";
-  version = "1.0.1";
+  version = "1.0.2";
 
   src = fetchFromSourcehut {
     owner = "~ianmjones";
     repo = "snippetexpander";
     rev = "v${version}";
-    hash = "sha256-y3TJ+L3kXYfZFzAD1vmhvP6Yarctu5LHq/74005h8sI=";
+    hash = "sha256-iEoBri+NuFfLkARUBA+D/Fe9xk6PPV62N/YRqPv9C/A=";
   };
 
-  vendorHash = "sha256-QX8HI8I1ZJI6HJ1sl86OiJ4nxwFAjHH8h1zB9ASJaQs=";
+  vendorHash = "sha256-W9NkENdZRzqSAONI9QS2EI5aERK+AaPqwYwITKLwXQE=";
+
+  proxyVendor = true;
 
   modRoot = "cmd/snippetexpanderd";
 
   nativeBuildInputs = [
-    pkg-config
     makeWrapper
     scdoc
     installShellFiles
   ];
 
   buildInputs = [
-    xorg.libX11
-    gtk3
+    xclip
+    wl-clipboard
+    xdotool
+    wtype
   ];
 
   ldflags = [
     "-s"
     "-w"
+    "-X 'main.version=${src.rev}'"
   ];
 
   postInstall = ''
@@ -48,16 +53,17 @@ buildGoModule rec {
   '';
 
   postFixup = ''
+    # Ensure xclip/wcopy and xdotool/wtype are available for copy and paste duties.
     wrapProgram $out/bin/snippetexpanderd \
-      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ xorg.libX11 ]}
+      --prefix PATH : ${lib.makeBinPath [ xclip wl-clipboard xdotool wtype ]}
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Your little expandable text snippet helper daemon";
     homepage = "https://snippetexpander.org";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ianmjones ];
-    platforms = platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ ianmjones ];
+    platforms = lib.platforms.linux;
     mainProgram = "snippetexpanderd";
   };
 }
diff --git a/pkgs/by-name/sn/snippetexpandergui/package.nix b/pkgs/by-name/sn/snippetexpandergui/package.nix
index 1ce5f5d9cbe5e..c43ce82c5ea77 100644
--- a/pkgs/by-name/sn/snippetexpandergui/package.nix
+++ b/pkgs/by-name/sn/snippetexpandergui/package.nix
@@ -1,7 +1,7 @@
 { lib
 , buildGoModule
 , fetchFromSourcehut
-, makeWrapper
+, wrapGAppsHook
 , wails
 , scdoc
 , installShellFiles
@@ -10,6 +10,7 @@
 , webkitgtk
 , gsettings-desktop-schemas
 , snippetexpanderd
+, snippetexpanderx
 }:
 
 buildGoModule rec {
@@ -17,30 +18,31 @@ buildGoModule rec {
 
   pname = "snippetexpandergui";
 
-  vendorHash = "sha256-iZfZdT8KlfZMVLQcYmo6EooIdsSGrpO/ojwT9Ft1GQI=";
+  vendorHash = "sha256-W9NkENdZRzqSAONI9QS2EI5aERK+AaPqwYwITKLwXQE=";
 
   proxyVendor = true;
 
   modRoot = "cmd/snippetexpandergui";
 
   nativeBuildInputs = [
-    makeWrapper
     wails
     scdoc
     installShellFiles
+    wrapGAppsHook
   ];
 
   buildInputs = [
     xorg.libX11
     gtk3
     webkitgtk
-    gsettings-desktop-schemas
     snippetexpanderd
+    snippetexpanderx
   ];
 
   ldflags = [
     "-s"
     "-w"
+    "-X 'main.version=${src.rev}'"
   ];
 
   tags = [
@@ -54,17 +56,19 @@ buildGoModule rec {
     installManPage snippetexpandergui.1
   '';
 
-  postFixup = ''
-    wrapProgram $out/bin/snippetexpandergui \
-      --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}
+  preFixup = ''
+    gappsWrapperArgs+=(
+      # Ensure snippetexpanderd and snippetexpanderx are available to start/stop.
+      --prefix PATH : ${lib.makeBinPath [ snippetexpanderd snippetexpanderx ]}
+    )
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Your little expandable text snippet helper GUI";
     homepage = "https://snippetexpander.org";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ianmjones ];
-    platforms = platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ ianmjones ];
+    platforms = lib.platforms.linux;
     mainProgram = "snippetexpandergui";
   };
 }
diff --git a/pkgs/by-name/sn/snippetexpanderx/package.nix b/pkgs/by-name/sn/snippetexpanderx/package.nix
index bb7ad94f51c9f..50da8f05503fe 100644
--- a/pkgs/by-name/sn/snippetexpanderx/package.nix
+++ b/pkgs/by-name/sn/snippetexpanderx/package.nix
@@ -42,6 +42,8 @@ stdenv.mkDerivation rec {
     snippetexpanderd
   ];
 
+  makeFlags = [ "VERSION=${src.rev}" ];
+
   installPhase = ''
     runHook preInstall
     mkdir -p $out/bin
@@ -53,12 +55,12 @@ stdenv.mkDerivation rec {
   # There are no tests.
   doCheck = false;
 
-  meta = with lib; {
+  meta = {
     description = "Your little expandable text snippet helper auto expander daemon";
     homepage = "https://snippetexpander.org";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ianmjones ];
-    platforms = platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ ianmjones ];
+    platforms = lib.platforms.linux;
     mainProgram = "snippetexpanderx";
   };
 }
diff --git a/pkgs/applications/blockchains/solana/Cargo.lock b/pkgs/by-name/so/solana-cli/Cargo.lock
index 984d2e3828bfb..984d2e3828bfb 100644
--- a/pkgs/applications/blockchains/solana/Cargo.lock
+++ b/pkgs/by-name/so/solana-cli/Cargo.lock
diff --git a/pkgs/applications/blockchains/solana/default.nix b/pkgs/by-name/so/solana-cli/package.nix
index 41585b3e06f96..a681710565072 100644
--- a/pkgs/applications/blockchains/solana/default.nix
+++ b/pkgs/by-name/so/solana-cli/package.nix
@@ -7,10 +7,11 @@
 , protobuf
 , libcxx
 , rocksdb
+, installShellFiles
 , pkg-config
 , openssl
 , nix-update-script
-# Taken from https://github.com/solana-labs/solana/blob/master/scripts/cargo-install-all.sh#L84
+  # Taken from https://github.com/solana-labs/solana/blob/master/scripts/cargo-install-all.sh#L84
 , solanaPkgs ? [
     "solana"
     "solana-bench-tps"
@@ -23,7 +24,7 @@
     "solana-net-shaper"
     "solana-validator"
     "solana-test-validator"
-] ++ [
+  ] ++ [
     # XXX: Ensure `solana-genesis` is built LAST!
     # See https://github.com/solana-labs/solana/issues/5826
     "solana-genesis"
@@ -66,36 +67,42 @@ rustPlatform.buildRustPackage rec {
   # I'm not in the mood ((ΦωΦ))
   doCheck = false;
 
-  nativeBuildInputs = [ protobuf pkg-config ];
+  nativeBuildInputs = [ installShellFiles protobuf pkg-config ];
   buildInputs = [ openssl rustPlatform.bindgenHook ]
-                ++ lib.optionals stdenv.isLinux [ udev ]
-                ++ lib.optionals stdenv.isDarwin [
-                  libcxx
-                  IOKit
-                  Security
-                  AppKit
-                  System
-                  Libsystem ];
+    ++ lib.optionals stdenv.isLinux [ udev ]
+    ++ lib.optionals stdenv.isDarwin [
+    libcxx
+    IOKit
+    Security
+    AppKit
+    System
+    Libsystem
+  ];
 
   postInstall = ''
+    installShellCompletion --cmd solana \
+      --bash <($out/bin/solana completion --shell bash) \
+      --fish <($out/bin/solana completion --shell fish) \
+      --zsh  <($out/bin/solana completion --shell zsh)
+
     mkdir -p $out/bin/sdk/bpf
     cp -a ./sdk/bpf/* $out/bin/sdk/bpf/
   '';
 
   # Used by build.rs in the rocksdb-sys crate. If we don't set these, it would
   # try to build RocksDB from source.
-  ROCKSDB_LIB_DIR="${rocksdb}/lib";
+  ROCKSDB_LIB_DIR = "${rocksdb}/lib";
 
   # Require this on darwin otherwise the compiler starts rambling about missing
   # cmath functions
-  CPPFLAGS=lib.optionals stdenv.isDarwin "-isystem ${lib.getDev libcxx}/include/c++/v1";
-  LDFLAGS=lib.optionals stdenv.isDarwin "-L${lib.getLib libcxx}/lib";
+  CPPFLAGS = lib.optionals stdenv.isDarwin "-isystem ${lib.getDev libcxx}/include/c++/v1";
+  LDFLAGS = lib.optionals stdenv.isDarwin "-L${lib.getLib libcxx}/lib";
 
   # If set, always finds OpenSSL in the system, even if the vendored feature is enabled.
   OPENSSL_NO_VENDOR = 1;
 
   meta = with lib; {
-    description = "Web-Scale Blockchain for fast, secure, scalable, decentralized apps and marketplaces. ";
+    description = "Web-Scale Blockchain for fast, secure, scalable, decentralized apps and marketplaces";
     homepage = "https://solana.com";
     license = licenses.asl20;
     maintainers = with maintainers; [ netfox happysalada aikooo7 ];
diff --git a/pkgs/os-specific/solo5/default.nix b/pkgs/by-name/so/solo5/package.nix
index f235902a91cd6..240c69a40a0f8 100644
--- a/pkgs/os-specific/solo5/default.nix
+++ b/pkgs/by-name/so/solo5/package.nix
@@ -2,7 +2,7 @@
 , pkg-config, qemu, syslinux, util-linux }:
 
 let
-  version = "0.8.0";
+  version = "0.8.1";
   # list of all theoretically available targets
   targets = [
     "genode"
@@ -21,7 +21,7 @@ in stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://github.com/Solo5/solo5/releases/download/v${version}/solo5-v${version}.tar.gz";
-    sha256 = "sha256-t80VOZ8Tr1Dq+mJfRPVLGqYprCaqegcQtDqdoHaSXW0=";
+    sha256 = "sha256-J1xcL/AdcLQ7Ph3TFwEaS9l4cWjDQsTaXTdBDcT7p6E=";
   };
 
   hardeningEnable = [ "pie" ];
@@ -63,13 +63,13 @@ in stdenv.mkDerivation {
     runHook postCheck
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Sandboxed execution environment";
     homepage = "https://github.com/solo5/solo5";
-    license = licenses.isc;
-    maintainers = [ maintainers.ehmry ];
+    license = lib.licenses.isc;
+    maintainers = with lib.maintainers; [ ehmry ];
     platforms = builtins.map ({arch, os}: "${arch}-${os}")
-      (cartesianProductOfSets {
+      (lib.cartesianProductOfSets {
         arch = [ "aarch64" "x86_64" ];
         os = [ "freebsd" "genode" "linux" "openbsd" ];
       });
diff --git a/pkgs/by-name/sp/spicetify-cli/package.nix b/pkgs/by-name/sp/spicetify-cli/package.nix
index 9361c5fd809d3..e9cc446b4f348 100644
--- a/pkgs/by-name/sp/spicetify-cli/package.nix
+++ b/pkgs/by-name/sp/spicetify-cli/package.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "spicetify-cli";
-  version = "2.36.2";
+  version = "2.36.4";
 
   src = fetchFromGitHub {
     owner = "spicetify";
     repo = "spicetify-cli";
     rev = "v${version}";
-    hash = "sha256-M+jx7FGq73eTFdBuCC/HxZq03bRIwlx1Nuz9fYQ0xfI=";
+    hash = "sha256-KvVFu0nCp6J5C8XHgd1U3CKmLPuVnWjlx5nocQGO1es=";
   };
 
-  vendorHash = "sha256-axE1SY+UW5oddyhOiktq+vNfhw2/SFX4ut4Hivg6TYQ=";
+  vendorHash = "sha256-UPrLXzAdvCOmLm1tekzKyulQ4+2BSyPUF1k66GwKS88=";
 
   ldflags = [
     "-s -w"
diff --git a/pkgs/games/srb2/cmake.patch b/pkgs/by-name/sr/srb2/cmake.patch
index 91af532e86fb3..91af532e86fb3 100644
--- a/pkgs/games/srb2/cmake.patch
+++ b/pkgs/by-name/sr/srb2/cmake.patch
diff --git a/pkgs/games/srb2/default.nix b/pkgs/by-name/sr/srb2/package.nix
index fdb374a917511..023f04c7f8242 100644
--- a/pkgs/games/srb2/default.nix
+++ b/pkgs/by-name/sr/srb2/package.nix
@@ -1,18 +1,16 @@
 { lib
 , stdenv
-, fetchurl
+, fetchgit
 , fetchFromGitHub
 , cmake
 , curl
 , nasm
 , libopenmpt
-, p7zip
 , game-music-emu
 , libpng
 , SDL2
 , SDL2_mixer
 , zlib
-, unzip
 , makeWrapper
 , makeDesktopItem
 , copyDesktopItems
@@ -32,7 +30,6 @@ stdenv.mkDerivation (finalAttrs: {
   nativeBuildInputs = [
     cmake
     nasm
-    p7zip
     makeWrapper
     copyDesktopItems
   ];
@@ -51,20 +48,20 @@ stdenv.mkDerivation (finalAttrs: {
     pname = "srb2-data";
     version = finalAttrs.version;
 
-    nativeBuildInputs = [
-      unzip
-    ];
-
-    src = fetchurl {
-      url = "https://github.com/STJr/SRB2/releases/download/SRB2_release_${finalAttrs.version}/SRB2-v${lib.replaceStrings ["."] [""] finalAttrs.version}-Full.zip";
-      hash = "sha256-g7kaNRE1tjcF5J2v+kTnrDzz4zs5f1b/NH67ce2ifUo=";
+    src = fetchgit {
+      url = "https://git.do.srb2.org/STJr/srb2assets-public";
+      rev = "SRB2_release_${finalAttrs.version}";
+      hash = "sha256-OXvO5ZlujIYmYevc62Dtx192dxoujQMNFUCrH5quBBg=";
+      fetchLFS = true;
     };
 
-    sourceRoot = ".";
-
     installPhase = ''
+      runHook preInstall
+
       mkdir -p $out/share/srb2
-      cp -r *pk3 *dta *dat models/ $out/share/srb2/
+      cp -r * $out/share/srb2
+
+      runHook postInstall
     '';
   };
 
@@ -92,10 +89,13 @@ stdenv.mkDerivation (finalAttrs: {
       desktopName = name;
       genericName = name;
       categories = [ "Game" ];
+      startupWMClass = ".srb2-wrapped";
     })
   ];
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/bin $out/share/applications $out/share/pixmaps $out/share/icons
 
     copyDesktopItems
@@ -105,6 +105,8 @@ stdenv.mkDerivation (finalAttrs: {
 
     cp bin/lsdlsrb2 $out/bin/srb2
     wrapProgram $out/bin/srb2 --set SRB2WADDIR "${finalAttrs.assets}/share/srb2"
+
+    runHook postInstall
   '';
 
   meta = with lib; {
diff --git a/pkgs/games/srb2/thirdparty.patch b/pkgs/by-name/sr/srb2/thirdparty.patch
index bb550290d85d5..bb550290d85d5 100644
--- a/pkgs/games/srb2/thirdparty.patch
+++ b/pkgs/by-name/sr/srb2/thirdparty.patch
diff --git a/pkgs/by-name/st/stackit-cli/package.nix b/pkgs/by-name/st/stackit-cli/package.nix
index cb6f2be4502d7..badf0e86b7e8f 100644
--- a/pkgs/by-name/st/stackit-cli/package.nix
+++ b/pkgs/by-name/st/stackit-cli/package.nix
@@ -12,16 +12,16 @@
 
 buildGoModule rec {
   pname = "stackit-cli";
-  version = "0.1.0-prerelease.2";
+  version = "0.2.1";
 
   src = fetchFromGitHub {
     owner = "stackitcloud";
     repo = "stackit-cli";
     rev = "v${version}";
-    hash = "sha256-GS3ZXarhXs1xuVmiLPMrrzXnO79R1+2va0x7N7CKNjQ=";
+    hash = "sha256-eAJe/AlYxp0v2LifXdlSxeZL+qwKf2wj+tnNJ2Y8LcQ=";
   };
 
-  vendorHash = "sha256-Cill5hq8KVeKGRX2u9oIudi/s8XHIW5C8sgbTshrLY4=";
+  vendorHash = "sha256-gir3RtIdQ/xDVL050kH8OxFuHoBOD2weeyRjguhubV0=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/by-name/st/stats/package.nix b/pkgs/by-name/st/stats/package.nix
index 5cc91cde455da..e52e1d0ca2287 100644
--- a/pkgs/by-name/st/stats/package.nix
+++ b/pkgs/by-name/st/stats/package.nix
@@ -6,11 +6,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "stats";
-  version = "2.10.6";
+  version = "2.10.7";
 
   src = fetchurl {
     url = "https://github.com/exelban/stats/releases/download/v${finalAttrs.version}/Stats.dmg";
-    hash = "sha256-5FjxEBZ+HbiWVR/8DBfVPeWACRwrw+Kcn1jld/CR+Ck=";
+    hash = "sha256-B44KFrKy76IZB7QeivE4a/e8JARp4VwJs0mTffa622w=";
   };
   sourceRoot = ".";
 
diff --git a/pkgs/by-name/st/steampipe/package.nix b/pkgs/by-name/st/steampipe/package.nix
index beb2b0ddf654f..1988b593afae6 100644
--- a/pkgs/by-name/st/steampipe/package.nix
+++ b/pkgs/by-name/st/steampipe/package.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "steampipe";
-  version = "0.22.1";
+  version = "0.22.2";
 
   src = fetchFromGitHub {
     owner = "turbot";
     repo = "steampipe";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Oz1T9koeXnmHc5oru1apUtmhhvKi/gAtg/Hb7HKkkP0=";
+    hash = "sha256-wHTuXSjHILlTgWSoaYKjEjQMWEih1EOJX8SIHdfVpU8=";
   };
 
-  vendorHash = "sha256-U0BeGCRLjL56ZmVKcKqrrPTCXpShJzJq5/wnXDKax6g=";
+  vendorHash = "sha256-sN4EbcxZ+XKL0MRqfKwBmv1+WtPj0uKw2HpSGcHI8AE=";
   proxyVendor = true;
 
   postPatch = ''
diff --git a/pkgs/by-name/st/stirling-pdf/package.nix b/pkgs/by-name/st/stirling-pdf/package.nix
index 9b6ac34559c76..0b2e17aee8511 100644
--- a/pkgs/by-name/st/stirling-pdf/package.nix
+++ b/pkgs/by-name/st/stirling-pdf/package.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "stirling-pdf";
-  version = "0.22.7";
+  version = "0.22.8";
 
   src = fetchFromGitHub {
     owner = "Stirling-Tools";
     repo = "Stirling-PDF";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-BB9O5nf47IrBbrnjU1sWw6xKT4XR1c+fWrno4liH5Xs=";
+    hash = "sha256-wFxIMubZ6327iBRyHxeo/hsPyq572gk6K8waJ3KyMEw=";
   };
 
   patches = [
diff --git a/pkgs/by-name/st/stylance-cli/package.nix b/pkgs/by-name/st/stylance-cli/package.nix
new file mode 100644
index 0000000000000..767d7370b7664
--- /dev/null
+++ b/pkgs/by-name/st/stylance-cli/package.nix
@@ -0,0 +1,24 @@
+{ lib
+, rustPlatform
+, fetchCrate
+}:
+rustPlatform.buildRustPackage rec {
+  pname = "stylance-cli";
+  version = "0.3.0";
+
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-YQYYZxLypD5Nz8kllIaBFDoV8L2c9wzJwmszqPpjpmg=";
+  };
+
+  cargoHash = "sha256-ZzdLbsHRBgprdzmPVzywJx+wMMqRBsLeT84UIDMJbQM=";
+
+  meta = with lib; {
+    description = "A library and cli tool for working with scoped CSS in rust";
+    mainProgram = "stylance";
+    homepage = "https://github.com/basro/stylance-rs";
+    changelog = "https://github.com/basro/stylance-rs/blob/v${version}/CHANGELOG.md";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ dav-wolff ];
+  };
+}
diff --git a/pkgs/by-name/sw/swayimg/package.nix b/pkgs/by-name/sw/swayimg/package.nix
index c6c838559ed36..ac077868e674b 100644
--- a/pkgs/by-name/sw/swayimg/package.nix
+++ b/pkgs/by-name/sw/swayimg/package.nix
@@ -26,13 +26,13 @@
 }:
 stdenv.mkDerivation (finalAttrs: {
   pname = "swayimg";
-  version = "2.1";
+  version = "2.2";
 
   src = fetchFromGitHub {
     owner = "artemsen";
     repo = "swayimg";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-+ntunT1FbgGcxpKGTcs7G7FYmoAobu/p/8ATIoBzfKE=";
+    hash = "sha256-CTl1hlRE4MnA6WdQaR4VG5G/wop/9xK7thRiCY7teYU=";
   };
 
   strictDeps = true;
diff --git a/pkgs/by-name/sy/syn2mas/package.nix b/pkgs/by-name/sy/syn2mas/package.nix
index 75fefef936896..38e78d4bf92b2 100644
--- a/pkgs/by-name/sy/syn2mas/package.nix
+++ b/pkgs/by-name/sy/syn2mas/package.nix
@@ -5,18 +5,18 @@
 
 buildNpmPackage rec {
   pname = "syn2mas";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "matrix-org";
     repo = "matrix-authentication-service";
     rev = "v${version}";
-    hash = "sha256-DPGigs6DifTRa7VQVHgizZ3BUy3FPX3YhZi++yoBFBA=";
+    hash = "sha256-e5JlkcSJ44iE+pVnGQpGiSNahxUcIFeaPyOjp9E3eD0=";
   };
 
   sourceRoot = "${src.name}/tools/syn2mas";
 
-  npmDepsHash = "sha256-HvBFuRyP1APg5V+yhvlODAJ02MEkdpuLfNjWB/UT2vg=";
+  npmDepsHash = "sha256-47tFcKgzH/2WEX99rs7F79TXBXjqVwEumg5aLkx86Fw=";
 
   dontBuild = true;
 
diff --git a/pkgs/by-name/sy/syslogng/package.nix b/pkgs/by-name/sy/syslogng/package.nix
index 7e95f78b18889..afbf3b257eedb 100644
--- a/pkgs/by-name/sy/syslogng/package.nix
+++ b/pkgs/by-name/sy/syslogng/package.nix
@@ -20,6 +20,7 @@
 , protobufc
 , pcre
 , paho-mqtt-c
+, python3Packages
 , libnet
 , json_c
 , libuuid
@@ -69,7 +70,7 @@ stdenv.mkDerivation rec {
     hash = "sha256-B9s7mprPpS4xc7mfJbsDaq2hB1rjYmuOnOnpu+NnMRs=";
     fetchSubmodules = true;
   };
-  nativeBuildInputs = [ autoreconfHook autoconf-archive pkg-config which bison flex libxslt perl gperf ];
+  nativeBuildInputs = [ autoreconfHook autoconf-archive pkg-config which bison flex libxslt perl gperf python3Packages.setuptools ];
 
   buildInputs = [
     libcap
diff --git a/pkgs/by-name/ta/tangerine/package.nix b/pkgs/by-name/ta/tangerine/package.nix
new file mode 100644
index 0000000000000..1521536c4c375
--- /dev/null
+++ b/pkgs/by-name/ta/tangerine/package.nix
@@ -0,0 +1,40 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, ncurses
+, SDL2
+}:
+
+stdenv.mkDerivation {
+  pname = "tangerine";
+  version = "unstable-2024-04-05";
+
+  src = fetchFromGitHub {
+    owner = "Aeva";
+    repo = "tangerine";
+    rev = "a628e95d181d396246214df5194ac6b18698d811";
+    hash = "sha256-vn4/eH5o0UhTNfN2UB4r0eKNn90PbH3UPfarHsnQPIk=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "no-install-during-build.patch";
+      url = "https://github.com/Aeva/tangerine/pull/12/commits/2d7d1ae1e21e8fe52df2c4a33e947b2ff6b07812.patch";
+      hash = "sha256-zLAx5FOvtUsUZM/nUCFW8Z1Xe3+oV95Nv1s3GaNcV/c=";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ ncurses SDL2 ];
+
+  meta = with lib; {
+    description = "A system for creating 3D models procedurally from a set of Signed Distance Function (SDF) primitive shapes and combining operators";
+    homepage = "https://github.com/Aeva/tangerine";
+    license = licenses.asl20;
+    maintainers = [ maintainers.viraptor ];
+    broken = stdenv.isDarwin; # third_party/naive-surface-nets doesn't find std::execution
+  };
+}
+
diff --git a/pkgs/by-name/te/technitium-dns-server/library-nuget-deps.nix b/pkgs/by-name/te/technitium-dns-server/library-nuget-deps.nix
new file mode 100644
index 0000000000000..f3a17967e25c8
--- /dev/null
+++ b/pkgs/by-name/te/technitium-dns-server/library-nuget-deps.nix
@@ -0,0 +1,5 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+]
diff --git a/pkgs/by-name/te/technitium-dns-server/nuget-deps.nix b/pkgs/by-name/te/technitium-dns-server/nuget-deps.nix
new file mode 100644
index 0000000000000..f3a17967e25c8
--- /dev/null
+++ b/pkgs/by-name/te/technitium-dns-server/nuget-deps.nix
@@ -0,0 +1,5 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+]
diff --git a/pkgs/by-name/te/technitium-dns-server/package.nix b/pkgs/by-name/te/technitium-dns-server/package.nix
index 47ff83663d99b..b369a45869514 100644
--- a/pkgs/by-name/te/technitium-dns-server/package.nix
+++ b/pkgs/by-name/te/technitium-dns-server/package.nix
@@ -1,39 +1,60 @@
 {
   lib,
-  stdenvNoCC,
-  fetchurl,
-  makeWrapper,
-  dotnet-sdk_8,
+  buildDotnetModule,
+  fetchFromGitHub,
+  dotnetCorePackages,
   nixosTests,
 }:
-stdenvNoCC.mkDerivation rec {
+let
+  technitium-library = buildDotnetModule rec {
+    pname = "TechnitiumLibrary";
+    version = "40a7bc7a52cf5d2c371215ea7f5f6fdf71dc1d9c";
+
+    src = fetchFromGitHub {
+      owner = "TechnitiumSoftware";
+      repo = "TechnitiumLibrary";
+      rev = version;
+      hash = "sha256-FNCZH8LZXYyrz5SRIV8P7MruN+t6Qvl96Aa73q3InMI=";
+      name = "${pname}-${version}";
+    };
+
+    dotnet-sdk = dotnetCorePackages.sdk_8_0;
+
+    nugetDeps = ./library-nuget-deps.nix;
+
+    projectFile = [
+      "TechnitiumLibrary.ByteTree/TechnitiumLibrary.ByteTree.csproj"
+      "TechnitiumLibrary.Net/TechnitiumLibrary.Net.csproj"
+    ];
+  };
+in
+buildDotnetModule rec {
   pname = "technitium-dns-server";
   version = "12.1";
 
-  src = fetchurl {
-    url = "https://download.technitium.com/dns/archive/${version}/DnsServerPortable.tar.gz";
-    hash = "sha256-G0M2xuYBZA3XXXaPs4pLrJmzAMbVJhiqISAvuCw3iZo=";
+  src = fetchFromGitHub {
+    owner = "TechnitiumSoftware";
+    repo = "DnsServer";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-TfVWGomvKV7QeJUyFMNDAnHKY3YTEwWPxTlW6RhmsR4=";
+    name = "${pname}-${version}";
   };
 
-  sourceRoot = ".";
-
-  nativeBuildInputs = [ makeWrapper ];
+  dotnet-sdk = dotnetCorePackages.sdk_8_0;
+  dotnet-runtime = dotnetCorePackages.aspnetcore_8_0;
 
-  installPhase = ''
-    runHook preInstall
+  nugetDeps = ./nuget-deps.nix;
 
-    mkdir -p $out/{bin,share/${pname}-${version}}
-    cp -r * $out/share/${pname}-${version}/.
-    rm $out/share/${pname}-${version}/start.{sh,bat}
-    rm $out/share/${pname}-${version}/DnsServerApp.exe
-    rm $out/share/${pname}-${version}/env-vars
-    # Remove systemd.service in favor of a separate module (including firewall configuration).
-    rm $out/share/${pname}-${version}/systemd.service
+  projectFile = [ "DnsServerApp/DnsServerApp.csproj" ];
 
-    makeWrapper "${dotnet-sdk_8}/bin/dotnet" $out/bin/technitium-dns-server \
-      --add-flags "$out/share/${pname}-${version}/DnsServerApp.dll"
+  # move dependencies from TechnitiumLibrary to the expected directory
+  preBuild = ''
+    mkdir -p ../TechnitiumLibrary/bin
+    cp -r ${technitium-library}/lib/TechnitiumLibrary/* ../TechnitiumLibrary/bin/
+  '';
 
-    runHook postInstall
+  postFixup = ''
+    mv $out/bin/DnsServerApp $out/bin/technitium-dns-server
   '';
 
   passthru.tests = {
@@ -47,6 +68,6 @@ stdenvNoCC.mkDerivation rec {
     license = lib.licenses.gpl3Only;
     mainProgram = "technitium-dns-server";
     maintainers = with lib.maintainers; [ fabianrig ];
-    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/by-name/te/tenki/package.nix b/pkgs/by-name/te/tenki/package.nix
index 35ee53a413761..cf276d6a43d2c 100644
--- a/pkgs/by-name/te/tenki/package.nix
+++ b/pkgs/by-name/te/tenki/package.nix
@@ -4,16 +4,16 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "tenki";
-  version = "1.5.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "ckaznable";
     repo = "tenki";
     rev = "v${version}";
-    hash = "sha256-X/GnOgxwBhkrdhUmEhyxdgk5ElayMOAmtDxR2cqRJc8=";
+    hash = "sha256-l2MDO0LIL+uSPiXA3+WVpan43lWJbaY9XSdQbwacRqQ=";
   };
 
-  cargoHash = "sha256-rmMUVZwNouUvFFPgZfbR4sgtig5zx1WC3bxnfPPT3yQ=";
+  cargoHash = "sha256-8tabXFijgq+E6YVY1J2nAhDHFahWx7QC8S401KNy2Jc=";
 
   meta = with lib; {
     description = "tty-clock with weather effect";
diff --git a/pkgs/by-name/te/tenv/package.nix b/pkgs/by-name/te/tenv/package.nix
index 4b94d3dedb223..9916cbced3717 100644
--- a/pkgs/by-name/te/tenv/package.nix
+++ b/pkgs/by-name/te/tenv/package.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "tenv";
-  version = "1.4.0";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "tofuutils";
     repo = "tenv";
     rev = "v${version}";
-    hash = "sha256-QWIwy995Y1QC2GbWxkRVZ3oaRv6+WhHNPeU9CUNCpA8=";
+    hash = "sha256-yAwjNh4Qc09VNpVZ6/e6nnPrz61K/tkSa1df+sMXBj8=";
   };
 
-  vendorHash = "sha256-62bMFzVI6mQLC8TNvwQMEMdkPVjDa6/ElwT/41t4Cqw=";
+  vendorHash = "sha256-NMkR90+kJ3VsuhF45l5K68uOqenPfINZDEE0GfjULro=";
 
   # Tests disabled for requiring network access to release.hashicorp.com
   doCheck = false;
diff --git a/pkgs/by-name/th/thcrap-steam-proton-wrapper/package.nix b/pkgs/by-name/th/thcrap-steam-proton-wrapper/package.nix
new file mode 100644
index 0000000000000..56a6029847d45
--- /dev/null
+++ b/pkgs/by-name/th/thcrap-steam-proton-wrapper/package.nix
@@ -0,0 +1,56 @@
+{
+  lib
+  , stdenv
+  , fetchFromGitHub
+  , makeWrapper
+  , bash
+  , subversion
+  , gnome
+}:
+stdenv.mkDerivation {
+  pname = "thcrap-proton";
+  version = "0-unstable-2024-04-03";
+
+  src = fetchFromGitHub {
+    owner = "tactikauan";
+    repo = "thcrap-steam-proton-wrapper";
+    rev = "2b636c3f5f1ce1b9b41f731aa9397aa68d2ce66b";
+    sha256 = "sha256-J2O8F75NMdsxSaNVr8zLf+vLEJE6CHqWQIIscuuJZ3o=";
+  };
+
+  buildInputs = [ subversion ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp thcrap_proton $out/bin/thcrap_proton
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/thcrap_proton \
+      --prefix PATH : ${
+        lib.makeBinPath [
+          bash
+          subversion
+          gnome.zenity
+        ]
+      }
+  '';
+
+  meta = {
+    description = "A wrapper script for launching the official Touhou games on Steam with patches through Proton on GNU/Linux";
+    homepage = "https://github.com/tactikauan/thcrap-steam-proton-wrapper";
+    license = lib.licenses.unlicense;
+    maintainers = with lib.maintainers; [ ashuramaruzxc ];
+    platforms = [
+      "x86_64-linux"
+      "aarch64-linux"
+    ];
+    mainProgram = "thcrap_proton";
+  };
+}
diff --git a/pkgs/by-name/ti/tinymist/Cargo.lock b/pkgs/by-name/ti/tinymist/Cargo.lock
index 1bb06263d87ed..1dddf43169b09 100644
--- a/pkgs/by-name/ti/tinymist/Cargo.lock
+++ b/pkgs/by-name/ti/tinymist/Cargo.lock
@@ -30,9 +30,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -129,26 +129,32 @@ checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
 
 [[package]]
 name = "arrayvec"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+
+[[package]]
+name = "arrayvec"
 version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
 
 [[package]]
 name = "async-trait"
-version = "0.1.77"
+version = "0.1.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
 
 [[package]]
 name = "await-tree"
@@ -176,9 +182,9 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973"
 
 [[package]]
 name = "backtrace"
-version = "0.3.69"
+version = "0.3.71"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
 dependencies = [
  "addr2line",
  "cc",
@@ -256,9 +262,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.2"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
 dependencies = [
  "serde",
 ]
@@ -336,9 +342,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.5.0"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
 
 [[package]]
 name = "camino"
@@ -351,9 +357,9 @@ dependencies = [
 
 [[package]]
 name = "cargo-platform"
-version = "0.1.7"
+version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f"
+checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
 dependencies = [
  "serde",
 ]
@@ -408,9 +414,9 @@ checksum = "7588475145507237ded760e52bf2f1085495245502033756d28ea72ade0e498b"
 
 [[package]]
 name = "chrono"
-version = "0.4.35"
+version = "0.4.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
@@ -460,9 +466,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.3"
+version = "4.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813"
+checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -504,14 +510,14 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.3"
+version = "4.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
+checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
 dependencies = [
  "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -571,14 +577,35 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
 
 [[package]]
 name = "comemo"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf5705468fa80602ee6a5f9318306e6c428bffd53e43209a78bc05e6e667c6f4"
+dependencies = [
+ "comemo-macros 0.3.1",
+ "siphasher 1.0.1",
+]
+
+[[package]]
+name = "comemo"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "df6916408a724339aa77b18214233355f3eb04c42eb895e5f8909215bd8a7a91"
 dependencies = [
- "comemo-macros",
+ "comemo-macros 0.4.0",
  "once_cell",
  "parking_lot",
- "siphasher 1.0.0",
+ "siphasher 1.0.1",
+]
+
+[[package]]
+name = "comemo-macros"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54af6ac68ada2d161fa9cc1ab52676228e340866d094d6542107e74b82acc095"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -589,7 +616,7 @@ checksum = "c8936e42f9b4f5bdfaf23700609ac1f11cb03ad4c1ec128a4ee4fd0903e228db"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -772,7 +799,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "strsim 0.10.0",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -794,7 +821,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f"
 dependencies = [
  "darling_core 0.20.8",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -918,7 +945,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -935,9 +962,18 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
 
 [[package]]
 name = "ecow"
-version = "0.2.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dba31a30727c42ff5e60468d695c7f21e43a6db2808b7195adcab908fbd9f794"
+checksum = "1d1990d053cf6edf3f030682dba3b0eb65ef01fabb2686072765d8a17d6728e8"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "ecow"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54bfbb1708988623190a6c4dbedaeaf0f53c20c6395abd6a01feb327b3146f4b"
 dependencies = [
  "serde",
 ]
@@ -1004,7 +1040,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -1064,9 +1100,9 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
 
 [[package]]
 name = "fastrand"
-version = "2.0.1"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
 
 [[package]]
 name = "fdeflate"
@@ -1244,7 +1280,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -1335,11 +1371,11 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 
 [[package]]
 name = "git2"
-version = "0.18.2"
+version = "0.18.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b3ba52851e73b46a4c3df1d89343741112003f0f6f13beb0dfac9e457c3fdcd"
+checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "libc",
  "libgit2-sys",
  "log",
@@ -1347,6 +1383,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "globmatch"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3755076379cc2b2bbf53855fe718e1eed3093cfb769ebf5d290f617fa9cc09a0"
+dependencies = [
+ "globset",
+ "log",
+ "walkdir",
+]
+
+[[package]]
 name = "globset"
 version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1371,7 +1418,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http 0.2.12",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "slab",
  "tokio",
  "tokio-util",
@@ -1412,7 +1459,7 @@ dependencies = [
  "biblatex",
  "ciborium",
  "citationberg",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "numerals",
  "paste",
  "serde",
@@ -1701,7 +1748,7 @@ checksum = "d2abdd3a62551e8337af119c5899e600ca0c88ec8f23a46c60ba216c803dcf1a"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -1783,9 +1830,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.2.5"
+version = "2.2.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
  "hashbrown 0.14.3",
@@ -1826,9 +1873,9 @@ dependencies = [
 
 [[package]]
 name = "insta"
-version = "1.36.1"
+version = "1.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a7c22c4d34ef4788c351e971c52bfdfe7ea2766f8c5466bc175dd46e52ac22e"
+checksum = "1718b3f2b85bb5054baf8ce406e36401f27c3169205f4175504c4b1d98252d3f"
 dependencies = [
  "console",
  "globset",
@@ -1836,7 +1883,6 @@ dependencies = [
  "linked-hash-map",
  "similar",
  "walkdir",
- "yaml-rust",
 ]
 
 [[package]]
@@ -1875,6 +1921,15 @@ dependencies = [
 
 [[package]]
 name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
 version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
@@ -1893,9 +1948,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jobserver"
@@ -1956,7 +2011,7 @@ version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b"
 dependencies = [
- "arrayvec",
+ "arrayvec 0.7.4",
 ]
 
 [[package]]
@@ -1995,16 +2050,16 @@ version = "0.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "libc",
  "redox_syscall",
 ]
 
 [[package]]
 name = "libz-sys"
-version = "1.1.15"
+version = "1.1.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6"
+checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9"
 dependencies = [
  "cc",
  "libc",
@@ -2014,12 +2069,9 @@ dependencies = [
 
 [[package]]
 name = "line-wrap"
-version = "0.1.1"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
-dependencies = [
- "safemem",
-]
+checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e"
 
 [[package]]
 name = "linked-hash-map"
@@ -2188,7 +2240,7 @@ version = "6.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "crossbeam-channel",
  "filetime",
  "fsevent-sys",
@@ -2293,7 +2345,7 @@ version = "0.10.64"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "cfg-if",
  "foreign-types",
  "libc",
@@ -2310,7 +2362,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2357,7 +2409,7 @@ checksum = "e8890702dbec0bad9116041ae586f84805b13eecd1d8b1df27c29998a9969d6d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2449,7 +2501,7 @@ dependencies = [
  "phf_shared",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2484,7 +2536,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -2516,12 +2568,12 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 
 [[package]]
 name = "plist"
-version = "1.6.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef"
+checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9"
 dependencies = [
  "base64 0.21.7",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "line-wrap",
  "quick-xml",
  "serde",
@@ -2571,6 +2623,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
 
 [[package]]
+name = "pretty"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b55c4d17d994b637e2f4daf6e5dc5d660d209d5642377d675d7a1c3ab69fa579"
+dependencies = [
+ "arrayvec 0.5.2",
+ "typed-arena",
+ "unicode-width",
+]
+
+[[package]]
 name = "proc-macro2"
 version = "1.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2671,9 +2734,9 @@ dependencies = [
 
 [[package]]
 name = "rayon"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -2711,15 +2774,15 @@ dependencies = [
 
 [[package]]
 name = "reflexo"
-version = "0.5.0-rc2"
+version = "0.5.0-rc3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "247ea8050cb5c88b41a68b3269f5a2eb7ebff55851a564d96b035643418346e6"
+checksum = "22b4f1e922d63bb11a86512f3cd05c04573076f670ef03340058c4d3c9f1d45b"
 dependencies = [
  "base64 0.22.0",
  "bitvec",
- "comemo",
+ "comemo 0.4.0",
  "dashmap",
- "ecow",
+ "ecow 0.2.2",
  "fxhash",
  "once_cell",
  "parking_lot",
@@ -2729,15 +2792,15 @@ dependencies = [
  "serde_json",
  "serde_repr",
  "serde_with",
- "siphasher 1.0.0",
+ "siphasher 1.0.1",
  "tiny-skia-path",
 ]
 
 [[package]]
 name = "regex"
-version = "1.10.3"
+version = "1.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2758,9 +2821,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
 
 [[package]]
 name = "rend"
@@ -2773,9 +2836,9 @@ dependencies = [
 
 [[package]]
 name = "reqwest"
-version = "0.11.26"
+version = "0.11.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2"
+checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
 dependencies = [
  "base64 0.21.7",
  "bytes",
@@ -2921,11 +2984,11 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.31"
+version = "0.38.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -2975,7 +3038,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f0ae5692c5beaad6a9e22830deeed7874eae8a4e3ba4076fb48e12c56856222c"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "bytemuck",
  "smallvec",
  "ttf-parser",
@@ -2992,12 +3055,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 
 [[package]]
-name = "safemem"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
-
-[[package]]
 name = "same-file"
 version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3086,14 +3143,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.114"
+version = "1.0.115"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
 dependencies = [
  "itoa",
  "ryu",
@@ -3108,7 +3165,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3142,7 +3199,7 @@ dependencies = [
  "chrono",
  "hex",
  "indexmap 1.9.3",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "serde",
  "serde_derive",
  "serde_json",
@@ -3159,16 +3216,16 @@ dependencies = [
  "darling 0.20.8",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
 name = "serde_yaml"
-version = "0.9.32"
+version = "0.9.34+deprecated"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f"
+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
 dependencies = [
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "itoa",
  "ryu",
  "serde",
@@ -3241,9 +3298,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
 
 [[package]]
 name = "siphasher"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54ac45299ccbd390721be55b412d41931911f654fa99e2cb8bfb57184b2061fe"
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
 
 [[package]]
 name = "slab"
@@ -3265,9 +3322,9 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.13.1"
+version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "socket2"
@@ -3359,7 +3416,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3372,7 +3429,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3419,9 +3476,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.52"
+version = "2.0.55"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
+checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3442,7 +3499,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3537,6 +3594,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "tests"
+version = "0.11.3"
+dependencies = [
+ "insta",
+ "lsp-server",
+ "lsp-types",
+ "reflexo",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
 name = "thiserror"
 version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3553,7 +3622,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3602,7 +3671,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"
 dependencies = [
  "arrayref",
- "arrayvec",
+ "arrayvec 0.7.4",
  "bytemuck",
  "cfg-if",
  "log",
@@ -3623,10 +3692,11 @@ dependencies = [
 
 [[package]]
 name = "tinymist"
-version = "0.11.1"
+version = "0.11.3"
 dependencies = [
  "anyhow",
  "async-trait",
+ "base64 0.22.0",
  "cargo_metadata",
  "chrono",
  "clap",
@@ -3635,7 +3705,7 @@ dependencies = [
  "clap_complete_fig",
  "clap_mangen",
  "codespan-reporting",
- "comemo",
+ "comemo 0.4.0",
  "crossbeam-channel",
  "dhat",
  "env_logger",
@@ -3650,33 +3720,39 @@ dependencies = [
  "serde",
  "serde_json",
  "tinymist-query",
+ "tinymist-render",
  "tokio",
  "tokio-util",
- "toml",
+ "toml 0.8.12",
  "typst",
  "typst-assets",
  "typst-pdf",
  "typst-preview",
  "typst-render",
  "typst-svg",
+ "typst-timing",
  "typst-ts-compiler",
  "typst-ts-core",
+ "typst-ts-svg-exporter",
+ "typstfmt_lib",
+ "typstyle",
+ "unicode-script",
  "vergen",
  "walkdir",
 ]
 
 [[package]]
 name = "tinymist-query"
-version = "0.11.1"
+version = "0.11.3"
 dependencies = [
  "anyhow",
- "comemo",
- "ecow",
+ "comemo 0.4.0",
+ "ecow 0.2.2",
  "ena",
  "fxhash",
  "hex",
  "if_chain",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "insta",
  "itertools 0.12.1",
  "lazy_static",
@@ -3684,21 +3760,35 @@ dependencies = [
  "lsp-types",
  "once_cell",
  "parking_lot",
+ "pathdiff",
+ "percent-encoding",
  "reflexo",
  "regex",
  "serde",
  "serde_json",
  "sha2",
  "strum 0.26.2",
- "toml",
+ "toml 0.8.12",
+ "ttf-parser",
  "typst",
- "typst-ide",
  "typst-ts-compiler",
  "typst-ts-core",
+ "unscanny",
  "walkdir",
 ]
 
 [[package]]
+name = "tinymist-render"
+version = "0.11.3"
+dependencies = [
+ "base64 0.22.0",
+ "log",
+ "serde",
+ "tinymist-query",
+ "typst-ts-svg-exporter",
+]
+
+[[package]]
 name = "tinystr"
 version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3751,7 +3841,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3802,14 +3892,26 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "0.8.11"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit",
+ "toml_edit 0.22.9",
 ]
 
 [[package]]
@@ -3823,15 +3925,28 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.22.7"
+version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "serde",
  "serde_spanned",
  "toml_datetime",
- "winnow",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
+dependencies = [
+ "indexmap 2.2.6",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.6.5",
 ]
 
 [[package]]
@@ -3859,7 +3974,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -3931,12 +4046,12 @@ version = "0.11.0"
 source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.0#88608109579929b0c1fbab12d7a2afaea0baaf74"
 dependencies = [
  "az",
- "bitflags 2.4.2",
+ "bitflags 2.5.0",
  "chinese-number",
  "ciborium",
- "comemo",
+ "comemo 0.4.0",
  "csv",
- "ecow",
+ "ecow 0.2.2",
  "fontdb",
  "hayagriva",
  "hypher",
@@ -3947,7 +4062,7 @@ dependencies = [
  "icu_segmenter",
  "if_chain",
  "image",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "kamadak-exif",
  "kurbo",
  "lipsum",
@@ -3965,18 +4080,18 @@ dependencies = [
  "serde",
  "serde_json",
  "serde_yaml",
- "siphasher 1.0.0",
+ "siphasher 1.0.1",
  "smallvec",
  "stacker",
  "syntect",
  "time",
- "toml",
+ "toml 0.8.12",
  "ttf-parser",
  "two-face",
  "typed-arena",
  "typst-assets",
  "typst-macros",
- "typst-syntax",
+ "typst-syntax 0.11.0",
  "typst-timing",
  "unicode-bidi",
  "unicode-math-class",
@@ -3993,20 +4108,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f13f85360328da54847dd7fefaf272dfa5b6d1fdeb53f32938924c39bf5b2c6c"
 
 [[package]]
-name = "typst-ide"
-version = "0.11.0"
-source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.0#88608109579929b0c1fbab12d7a2afaea0baaf74"
-dependencies = [
- "comemo",
- "ecow",
- "if_chain",
- "log",
- "serde",
- "typst",
- "unscanny",
-]
-
-[[package]]
 name = "typst-macros"
 version = "0.11.0"
 source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.0#88608109579929b0c1fbab12d7a2afaea0baaf74"
@@ -4014,7 +4115,7 @@ dependencies = [
  "heck 0.4.1",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
 
 [[package]]
@@ -4024,8 +4125,8 @@ source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.
 dependencies = [
  "base64 0.22.0",
  "bytemuck",
- "comemo",
- "ecow",
+ "comemo 0.4.0",
+ "ecow 0.2.2",
  "image",
  "miniz_oxide",
  "once_cell",
@@ -4053,12 +4154,12 @@ dependencies = [
  "clap",
  "clap_complete",
  "clap_mangen",
- "comemo",
+ "comemo 0.4.0",
  "elsa",
  "env_logger",
  "futures",
  "hyper",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "log",
  "memmap2",
  "notify",
@@ -4083,7 +4184,7 @@ version = "0.11.0"
 source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.0#88608109579929b0c1fbab12d7a2afaea0baaf74"
 dependencies = [
  "bytemuck",
- "comemo",
+ "comemo 0.4.0",
  "flate2",
  "image",
  "pixglyph",
@@ -4103,8 +4204,8 @@ version = "0.11.0"
 source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.0#88608109579929b0c1fbab12d7a2afaea0baaf74"
 dependencies = [
  "base64 0.22.0",
- "comemo",
- "ecow",
+ "comemo 0.4.0",
+ "ecow 0.2.2",
  "flate2",
  "ttf-parser",
  "typst",
@@ -4116,11 +4217,27 @@ dependencies = [
 
 [[package]]
 name = "typst-syntax"
+version = "0.7.0"
+source = "git+https://github.com/typst/typst.git?tag=v0.7.0#da8367e189b02918a8fe1a98fd3059fd11a82cd9"
+dependencies = [
+ "comemo 0.3.1",
+ "ecow 0.1.2",
+ "once_cell",
+ "serde",
+ "tracing",
+ "unicode-ident",
+ "unicode-math-class",
+ "unicode-segmentation",
+ "unscanny",
+]
+
+[[package]]
+name = "typst-syntax"
 version = "0.11.0"
 source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.0#88608109579929b0c1fbab12d7a2afaea0baaf74"
 dependencies = [
- "comemo",
- "ecow",
+ "comemo 0.4.0",
+ "ecow 0.2.2",
  "once_cell",
  "serde",
  "unicode-ident",
@@ -4138,27 +4255,27 @@ dependencies = [
  "parking_lot",
  "serde",
  "serde_json",
- "typst-syntax",
+ "typst-syntax 0.11.0",
 ]
 
 [[package]]
 name = "typst-ts-compiler"
-version = "0.5.0-rc2"
+version = "0.5.0-rc3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c18cf7d96c0c558901b3f7e3f5200ecb7e3d7d3dcc5a1222e94bc875237ff352"
+checksum = "10e68e9eb24ee181713bcc0a9a08c5b9c2c77c2015d8497f077f79617ae731e3"
 dependencies = [
  "append-only-vec",
  "base64 0.22.0",
  "chrono",
  "codespan-reporting",
- "comemo",
+ "comemo 0.4.0",
  "dirs",
  "dissimilar",
  "flate2",
  "fontdb",
  "fst",
  "hex",
- "indexmap 2.2.5",
+ "indexmap 2.2.6",
  "instant",
  "log",
  "nohash-hasher",
@@ -4182,18 +4299,18 @@ dependencies = [
 
 [[package]]
 name = "typst-ts-core"
-version = "0.5.0-rc2"
+version = "0.5.0-rc3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a69135c380eb60efa4aeabd986d27d82ecd1b4c843fd3393992b449409317847"
+checksum = "3097a2ceef78a2a764b9ec3f9b813c012b97b6c79c3a0835d5314ab895bc0557"
 dependencies = [
  "base64 0.22.0",
  "base64-serde",
  "bitvec",
  "byteorder",
- "comemo",
+ "comemo 0.4.0",
  "crossbeam-queue",
  "dashmap",
- "ecow",
+ "ecow 0.2.2",
  "elsa",
  "flate2",
  "fxhash",
@@ -4210,7 +4327,7 @@ dependencies = [
  "serde_repr",
  "serde_with",
  "sha2",
- "siphasher 1.0.0",
+ "siphasher 1.0.1",
  "tiny-skia",
  "tiny-skia-path",
  "ttf-parser",
@@ -4220,23 +4337,54 @@ dependencies = [
 
 [[package]]
 name = "typst-ts-svg-exporter"
-version = "0.5.0-rc2"
+version = "0.5.0-rc3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6063f63c8e3ba3d4d7f4cb1a8fd96b096e8e713f24783278fea98dac0746966"
+checksum = "0afefc1f581cdc28d230a36a17f0fa195f4ad4792206ca7f6e389146e6b13802"
 dependencies = [
  "base64 0.22.0",
- "comemo",
+ "comemo 0.4.0",
  "log",
  "once_cell",
  "rayon",
  "reflexo",
- "siphasher 1.0.0",
+ "siphasher 1.0.1",
  "tiny-skia",
  "typst",
  "typst-ts-core",
 ]
 
 [[package]]
+name = "typstfmt_lib"
+version = "0.2.7"
+source = "git+https://github.com/astrale-sharp/typstfmt?tag=0.2.7#46b4ec34b4726c3c6541012f433c68c22d9e509c"
+dependencies = [
+ "globmatch",
+ "itertools 0.10.5",
+ "regex",
+ "serde",
+ "toml 0.7.8",
+ "tracing",
+ "typst-syntax 0.7.0",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "typstyle"
+version = "0.11.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8556b6c8261a6d205674be583443714a9887911a392df630ea95c2900caf2710"
+dependencies = [
+ "anyhow",
+ "clap",
+ "itertools 0.12.1",
+ "once_cell",
+ "pretty",
+ "typst-syntax 0.11.0",
+ "vergen",
+ "wasm-bindgen",
+]
+
+[[package]]
 name = "unic-langid"
 version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4335,9 +4483,9 @@ checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 
 [[package]]
 name = "unsafe-libyaml"
-version = "0.2.10"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b"
+checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
 
 [[package]]
 name = "unscanny"
@@ -4443,9 +4591,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
 [[package]]
 name = "uuid"
-version = "1.7.0"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
+checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
 
 [[package]]
 name = "vcpkg"
@@ -4530,7 +4678,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
  "wasm-bindgen-shared",
 ]
 
@@ -4564,7 +4712,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -4817,6 +4965,15 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
 
 [[package]]
 name = "winnow"
+version = "0.5.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
 version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
@@ -4907,7 +5064,7 @@ checksum = "9e6936f0cce458098a201c245a11bef556c6a0181129c7034d10d76d1ec3a2b8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
  "synstructure",
 ]
 
@@ -4928,7 +5085,7 @@ checksum = "e6a647510471d372f2e6c2e6b7219e44d8c574d24fdc11c610a61455782f18c3"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
  "synstructure",
 ]
 
@@ -4964,5 +5121,5 @@ checksum = "7b4e5997cbf58990550ef1f0e5124a05e47e1ebd33a84af25739be6031a62c20"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.52",
+ "syn 2.0.55",
 ]
diff --git a/pkgs/by-name/ti/tinymist/package.nix b/pkgs/by-name/ti/tinymist/package.nix
index 9cd26ccf8fcc8..d0a84f0216f10 100644
--- a/pkgs/by-name/ti/tinymist/package.nix
+++ b/pkgs/by-name/ti/tinymist/package.nix
@@ -13,19 +13,21 @@ rustPlatform.buildRustPackage rec {
   pname = "tinymist";
   # Please update the corresponding vscode extension when updating
   # this derivation.
-  version = "0.11.1";
+  version = "0.11.3";
 
   src = fetchFromGitHub {
     owner = "Myriad-Dreamin";
     repo = "tinymist";
     rev = "v${version}";
-    hash = "sha256-fkUL6+lNPtNONf01vxeRSj8b6bz0pW+mNFIQrV0twKM=";
+    hash = "sha256-0wVCOFWA6PX1UHe3rGWbCW4zSJHvGrW9OiFcH2wvayA=";
   };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
       "typst-0.11.0" = "sha256-UzZ0tbC6Dhn178GQDyLl70WTp3h5WdaBCsEKgLisZ2M=";
+      "typst-syntax-0.7.0" = "sha256-yrtOmlFAKOqAmhCP7n0HQCOQpU3DWyms5foCdUb9QTg=";
+      "typstfmt_lib-0.2.7" = "sha256-LBYsTCjZ+U+lgd7Z3H1sBcWwseoHsuepPd66bWgfvhI=";
     };
   };
 
@@ -44,11 +46,16 @@ rustPlatform.buildRustPackage rec {
     darwin.apple_sdk_11_0.frameworks.SystemConfiguration
   ];
 
+  checkFlags = [
+    "--skip=e2e"
+  ];
+
   meta = with lib; {
+    changelog = "https://github.com/Myriad-Dreamin/tinymist/blob/${src.rev}/CHANGELOG.md";
     description = "Tinymist is an integrated language service for Typst";
     homepage = "https://github.com/Myriad-Dreamin/tinymist";
     license = licenses.asl20;
-    maintainers = with maintainers; [ lampros ];
     mainProgram = "tinymist";
+    maintainers = with maintainers; [ lampros ];
   };
 }
diff --git a/pkgs/by-name/to/tootik/package.nix b/pkgs/by-name/to/tootik/package.nix
new file mode 100644
index 0000000000000..4917f781528c2
--- /dev/null
+++ b/pkgs/by-name/to/tootik/package.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, buildGoModule, fetchFromGitHub, openssl }:
+
+buildGoModule rec {
+  pname = "tootik";
+  version = "0.9.6";
+
+  src = fetchFromGitHub {
+    owner = "dimkr";
+    repo = "tootik";
+    rev = version;
+    hash = "sha256-RcuioFb0+mvZupwgaCN6qbcOy7gHp9KjJxRwaPI55yo=";
+  };
+
+  vendorHash = "sha256-/52VjfoecXaML1cDRIEe1EQPYU8xeP9lu4lY3cMV3VE=";
+
+  nativeBuildInputs = [ openssl ];
+
+  preBuild = ''
+    go generate ./migrations
+  '';
+
+  ldflags = [ "-X github.com/dimkr/tootik/buildinfo.Version=${version}" ];
+
+  tags = [ "fts5" ];
+
+  doCheck = !(stdenv.isDarwin && stdenv.isAarch64);
+
+  meta = {
+    description = "A federated nanoblogging service with a Gemini frontend";
+    homepage = "https://github.com/dimkr/tootik";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ sikmir ];
+    mainProgram = "tootik";
+  };
+}
diff --git a/pkgs/by-name/tp/tpm2-openssl/package.nix b/pkgs/by-name/tp/tpm2-openssl/package.nix
new file mode 100644
index 0000000000000..ee94b18c8068e
--- /dev/null
+++ b/pkgs/by-name/tp/tpm2-openssl/package.nix
@@ -0,0 +1,46 @@
+{
+  stdenv,
+  lib,
+  autoreconfHook,
+  fetchFromGitHub,
+  autoconf-archive,
+  pkg-config,
+  openssl,
+  tpm2-tss,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "tpm2-openssl";
+  version = "1.2.0";
+  src = fetchFromGitHub {
+    owner = "tpm2-software";
+    repo = "tpm2-openssl";
+    rev = finalAttrs.version;
+    hash = "sha256-mZ4Z/GxJFwwfyFd1SAiVlQqOjkFSzsZePeuEZtq8Mcg=";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    autoconf-archive
+    pkg-config
+  ];
+
+  buildInputs = [
+    openssl
+    tpm2-tss
+  ];
+
+  configureFlags = [ "--with-modulesdir=$$out/lib/ossl-modules" ];
+
+  postPatch = ''
+    echo ${finalAttrs.version} > VERSION
+  '';
+
+  meta = with lib; {
+    description = "OpenSSL Provider for TPM2 integration";
+    homepage = "https://github.com/tpm2-software/tpm2-openssl";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ stv0g ];
+    platforms = platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/tp/tpnote/package.nix b/pkgs/by-name/tp/tpnote/package.nix
index b1b61f0c8f5dc..eec1f68f5f442 100644
--- a/pkgs/by-name/tp/tpnote/package.nix
+++ b/pkgs/by-name/tp/tpnote/package.nix
@@ -15,22 +15,23 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "tpnote";
-  version = "1.23.10";
+  version = "1.24.2";
 
   src = fetchFromGitHub {
     owner = "getreu";
     repo = "tp-note";
     rev = "v${version}";
-    hash = "sha256-HOCd5N8oS8N+9alR3cG7IEghvhvcc8A+O24L6FD1F38=";
+    hash = "sha256-uNW1gb4zmLjOZFtxaBBEQGRGc9C2M8cSARZBa3+FC2k=";
   };
 
-  cargoHash = "sha256-hI9vzPLcMaFSQpPgIf39UsWDpdHAmQ56D8pSWZ/R1aI=";
+  cargoHash = "sha256-pOiIQU/5z/g4NbdwoYaDdxTfTkxEdddVsmuH54pCOBM=";
 
   nativeBuildInputs = [
     cmake
     pkg-config
     installShellFiles
   ];
+
   buildInputs = [
     oniguruma
   ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
diff --git a/pkgs/by-name/tu/tup/package.nix b/pkgs/by-name/tu/tup/package.nix
index 269ee96f1a732..f4a13551e4453 100644
--- a/pkgs/by-name/tu/tup/package.nix
+++ b/pkgs/by-name/tu/tup/package.nix
@@ -1,33 +1,27 @@
-{ lib, stdenv, fetchFromGitHub, fuse3, macfuse-stubs, pkg-config, sqlite, pcre }:
+{ lib, stdenv, fetchFromGitHub, fuse3, macfuse-stubs, pkg-config, sqlite, pcre2 }:
 
 let
   fuse = if stdenv.isDarwin then macfuse-stubs else fuse3;
 in stdenv.mkDerivation rec {
   pname = "tup";
-  version = "0.7.11";
+  version = "0.8";
   outputs = [ "bin" "man" "out" ];
 
   src = fetchFromGitHub {
     owner = "gittup";
     repo = "tup";
     rev = "v${version}";
-    hash = "sha256-Q2Y5ErcfhLChi9Wezn8+7eNXYX2UXW1fBOqEclmgzOo=";
+    hash = "sha256-biVR932wHiUG56mvXoKWFzrzpkclbW9RWM4vY1+OMZ0=";
   };
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ fuse pcre sqlite ];
+  buildInputs = [ fuse pcre2 sqlite ];
 
   patches = [ ./fusermount-setuid.patch ];
 
   configurePhase = ''
     substituteInPlace  src/tup/link.sh --replace '`git describe' '`echo ${version}'
 
-    for f in Tupfile Tuprules.tup src/tup/server/Tupfile build.sh; do
-      substituteInPlace "$f" \
-        --replace "pkg-config"  "${stdenv.cc.targetPrefix}pkg-config" \
-        --replace "pcre-config" "${stdenv.cc.targetPrefix}pkg-config libpcre"
-    done
-
     cat << EOF > tup.config
     CONFIG_CC=${stdenv.cc.targetPrefix}cc
     CONFIG_AR=${stdenv.cc.targetPrefix}ar
diff --git a/pkgs/by-name/ty/typos-lsp/package.nix b/pkgs/by-name/ty/typos-lsp/package.nix
index f8944452b4f45..821c169cad7de 100644
--- a/pkgs/by-name/ty/typos-lsp/package.nix
+++ b/pkgs/by-name/ty/typos-lsp/package.nix
@@ -4,16 +4,16 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "typos-lsp";
-  version = "0.1.16";
+  version = "0.1.17";
 
   src = fetchFromGitHub {
     owner = "tekumara";
     repo = "typos-lsp";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wXwdAPaj2dY6R6rUl/3WGeUwV+/waQdHv1dmzTqFNow=";
+    hash = "sha256-Q/V9WabxtsUQ69r7qHzslko8anWyuB3VqVRQJ6gl9O8=";
   };
 
-  cargoHash = "sha256-qXQPxMlBwLb2NVae+vKZPzufNrQeuz0cAdMflpsjDf4=";
+  cargoHash = "sha256-Rus79FpYBgz1CPK4n805Au0ncom8rhD3zD82a2DyR3k=";
 
   # fix for compilation on aarch64
   # see https://github.com/NixOS/nixpkgs/issues/145726
diff --git a/pkgs/by-name/ty/typst-preview/Cargo.lock b/pkgs/by-name/ty/typst-preview/Cargo.lock
index be0ad75dc45a3..c3f083ff39565 100644
--- a/pkgs/by-name/ty/typst-preview/Cargo.lock
+++ b/pkgs/by-name/ty/typst-preview/Cargo.lock
@@ -437,9 +437,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.5.2"
+version = "4.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651"
+checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -468,11 +468,11 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.0"
+version = "4.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
+checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
 dependencies = [
- "heck",
+ "heck 0.5.0",
  "proc-macro2",
  "quote",
  "syn 2.0.52",
@@ -1329,6 +1329,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
 name = "hermit-abi"
 version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2527,8 +2533,9 @@ dependencies = [
 
 [[package]]
 name = "reflexo"
-version = "0.4.2-rc8"
-source = "git+https://github.com/Myriad-Dreamin/typst.ts?rev=c8ff53382c2afa67582465c6e7e0fd78603e4341#c8ff53382c2afa67582465c6e7e0fd78603e4341"
+version = "0.5.0-rc2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "247ea8050cb5c88b41a68b3269f5a2eb7ebff55851a564d96b035643418346e6"
 dependencies = [
  "base64 0.22.0",
  "bitvec",
@@ -3138,7 +3145,7 @@ version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "rustversion",
@@ -3151,7 +3158,7 @@ version = "0.26.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "rustversion",
@@ -3596,8 +3603,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
 
 [[package]]
 name = "typst"
-version = "0.10.0"
-source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=typst.ts-v0.11.0-2#48820fe69b8061bd949847afc343bf160d05c924"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82ce6533a33d2cc4b5eba6b009b862e75c8f9146a584f84ca154c94463e43993"
 dependencies = [
  "az",
  "bitflags 2.4.2",
@@ -3643,7 +3651,7 @@ dependencies = [
  "ttf-parser",
  "two-face",
  "typed-arena",
- "typst-assets 0.10.0",
+ "typst-assets",
  "typst-macros",
  "typst-syntax",
  "typst-timing",
@@ -3657,20 +3665,17 @@ dependencies = [
 
 [[package]]
 name = "typst-assets"
-version = "0.10.0"
-source = "git+https://github.com/typst/typst-assets?rev=4d1211a#4d1211ab5ba8a02992a7362000e6dd422d44dd68"
-
-[[package]]
-name = "typst-assets"
-version = "0.11.0-rc1"
-source = "git+https://github.com/typst/typst-assets?tag=v0.11.0-rc1#0ef66188759fc7035be57d9608ccb1ecfd3ef796"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f13f85360328da54847dd7fefaf272dfa5b6d1fdeb53f32938924c39bf5b2c6c"
 
 [[package]]
 name = "typst-macros"
-version = "0.10.0"
-source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=typst.ts-v0.11.0-2#48820fe69b8061bd949847afc343bf160d05c924"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54e48fdd6dabf48a0e595960aaef6ae43dac7d243e8c1c6926a0787d5b8a9ba7"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "syn 2.0.52",
@@ -3678,7 +3683,7 @@ dependencies = [
 
 [[package]]
 name = "typst-preview"
-version = "0.10.10"
+version = "0.11.4"
 dependencies = [
  "anyhow",
  "await-tree",
@@ -3702,7 +3707,7 @@ dependencies = [
  "tokio",
  "tokio-tungstenite",
  "typst",
- "typst-assets 0.11.0-rc1",
+ "typst-assets",
  "typst-ts-compiler",
  "typst-ts-core",
  "typst-ts-svg-exporter",
@@ -3711,8 +3716,9 @@ dependencies = [
 
 [[package]]
 name = "typst-syntax"
-version = "0.10.0"
-source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=typst.ts-v0.11.0-2#48820fe69b8061bd949847afc343bf160d05c924"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "367d86bf18f0363146bea1ea76fad19b54458695fdfad5e74ead3ede574b75fe"
 dependencies = [
  "comemo",
  "ecow",
@@ -3727,8 +3733,9 @@ dependencies = [
 
 [[package]]
 name = "typst-timing"
-version = "0.10.0"
-source = "git+https://github.com/Myriad-Dreamin/typst.git?branch=typst.ts-v0.11.0-2#48820fe69b8061bd949847afc343bf160d05c924"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b2629933cde6f299c43627b90c83bb006cb906c56cc5dec7324f0a5017d5fd8"
 dependencies = [
  "parking_lot",
  "serde",
@@ -3738,8 +3745,9 @@ dependencies = [
 
 [[package]]
 name = "typst-ts-compiler"
-version = "0.4.2-rc8"
-source = "git+https://github.com/Myriad-Dreamin/typst.ts?rev=c8ff53382c2afa67582465c6e7e0fd78603e4341#c8ff53382c2afa67582465c6e7e0fd78603e4341"
+version = "0.5.0-rc2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c18cf7d96c0c558901b3f7e3f5200ecb7e3d7d3dcc5a1222e94bc875237ff352"
 dependencies = [
  "append-only-vec",
  "base64 0.22.0",
@@ -3776,8 +3784,9 @@ dependencies = [
 
 [[package]]
 name = "typst-ts-core"
-version = "0.4.2-rc8"
-source = "git+https://github.com/Myriad-Dreamin/typst.ts?rev=c8ff53382c2afa67582465c6e7e0fd78603e4341#c8ff53382c2afa67582465c6e7e0fd78603e4341"
+version = "0.5.0-rc2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a69135c380eb60efa4aeabd986d27d82ecd1b4c843fd3393992b449409317847"
 dependencies = [
  "base64 0.22.0",
  "base64-serde",
@@ -3813,14 +3822,16 @@ dependencies = [
 
 [[package]]
 name = "typst-ts-svg-exporter"
-version = "0.4.2-rc8"
-source = "git+https://github.com/Myriad-Dreamin/typst.ts?rev=c8ff53382c2afa67582465c6e7e0fd78603e4341#c8ff53382c2afa67582465c6e7e0fd78603e4341"
+version = "0.5.0-rc2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6063f63c8e3ba3d4d7f4cb1a8fd96b096e8e713f24783278fea98dac0746966"
 dependencies = [
  "base64 0.22.0",
  "comemo",
  "log",
  "once_cell",
  "rayon",
+ "reflexo",
  "siphasher 1.0.0",
  "tiny-skia",
  "typst",
diff --git a/pkgs/by-name/ty/typst-preview/dom.json b/pkgs/by-name/ty/typst-preview/dom.json
index a0ee5f8092904..b607a990d9784 100644
--- a/pkgs/by-name/ty/typst-preview/dom.json
+++ b/pkgs/by-name/ty/typst-preview/dom.json
@@ -13,12 +13,12 @@
     "unlink:local": "yarn unlink @myriaddreamin/typst.ts @myriaddreamin/typst-ts-renderer"
   },
   "peerDependencies": {
-    "@myriaddreamin/typst-ts-renderer": "0.4.2-rc9",
-    "@myriaddreamin/typst.ts": "0.4.2-rc9"
+    "@myriaddreamin/typst-ts-renderer": "0.4.2-rc10",
+    "@myriaddreamin/typst.ts": "0.4.2-rc10"
   },
   "devDependencies": {
-    "@myriaddreamin/typst-ts-renderer": "0.4.2-rc9",
-    "@myriaddreamin/typst.ts": "0.4.2-rc9",
+    "@myriaddreamin/typst-ts-renderer": "0.4.2-rc10",
+    "@myriaddreamin/typst.ts": "0.4.2-rc10",
     "typescript": "^5.0.2",
     "vite": "^4.3.9",
     "vite-plugin-singlefile": "^0.13.5",
diff --git a/pkgs/by-name/ty/typst-preview/frontend.json b/pkgs/by-name/ty/typst-preview/frontend.json
index 66163cb7920f4..2a0439383a2b2 100644
--- a/pkgs/by-name/ty/typst-preview/frontend.json
+++ b/pkgs/by-name/ty/typst-preview/frontend.json
@@ -13,8 +13,8 @@
     "unlink:local": "yarn unlink @myriaddreamin/typst.ts @myriaddreamin/typst-ts-renderer"
   },
   "dependencies": {
-    "@myriaddreamin/typst-ts-renderer": "0.4.2-rc9",
-    "@myriaddreamin/typst.ts": "0.4.2-rc9",
+    "@myriaddreamin/typst-ts-renderer": "0.4.2-rc10",
+    "@myriaddreamin/typst.ts": "0.4.2-rc10",
     "typst-dom": "file:../typst-dom",
     "rxjs": "^7.8.1"
   },
diff --git a/pkgs/by-name/ty/typst-preview/package.nix b/pkgs/by-name/ty/typst-preview/package.nix
index 35a9d501fbabe..8bfd4e03991ba 100644
--- a/pkgs/by-name/ty/typst-preview/package.nix
+++ b/pkgs/by-name/ty/typst-preview/package.nix
@@ -14,13 +14,13 @@
 let
   # Keep the vscode "mgt19937.typst-preview" extension in sync when updating
   # this package at pkgs/applications/editors/vscode/extensions/default.nix
-  version = "0.11.2";
+  version = "0.11.4";
 
   src = fetchFromGitHub {
     owner = "Enter-tainer";
     repo = "typst-preview";
     rev = "v${version}";
-    hash = "sha256-etFP1CuRSE6Sy19+dlF6FUQhuqJrJ53v7LZFrTyA+q0=";
+    hash = "sha256-5MbKp6j4+61Do8YH0xPIQPHEjU/kCKsMUUQDJDXzSMw=";
     fetchSubmodules = true;
 
     postFetch = ''
@@ -41,7 +41,7 @@ let
 
     offlineCache = fetchYarnDeps {
       yarnLock = "${domSrc}/yarn.lock";
-      hash = "sha256-aDs+2n6sL4MTizRuYqkwfYrx/lK3ll9u4NoN0zPyWco=";
+      hash = "sha256-QIGwHG0n6vYfAPA/+CdvK1c+QxM3XyoQdS/T4+TdsKs=";
     };
 
     buildPhase = ''
@@ -67,7 +67,7 @@ let
 
     offlineCache = fetchYarnDeps {
       yarnLock = "${frontendSrc}/yarn.lock";
-      hash = "sha256-gkjtDi7ZR3aKn1ZRJEkFc3IdhbmF1GyYoGiIniOsPBo=";
+      hash = "sha256-QFiyUky/0BdB5vS9KX5xBOvBCEtJ+zZG4f7ai5j6V4U=";
     };
 
     packageResolutions = { inherit typst-dom; };
@@ -92,7 +92,7 @@ rustPlatform.buildRustPackage {
   pname = "typst-preview";
   inherit version src;
 
-  cargoHash = "sha256-f9oTeUMbXjkCHLsiMng9gME9QGRWgBi1WAwoeBCeT6I=";
+  cargoHash = "sha256-xj8Xvbz0NUy0BFoVS8ONiYZZQWIJu1FZxJkBEuABDOw=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/by-name/ty/typstyle/Cargo.lock b/pkgs/by-name/ty/typstyle/Cargo.lock
index 9d8cabdebf586..47ae5437f5b90 100644
--- a/pkgs/by-name/ty/typstyle/Cargo.lock
+++ b/pkgs/by-name/ty/typstyle/Cargo.lock
@@ -3649,7 +3649,7 @@ dependencies = [
 
 [[package]]
 name = "typstyle"
-version = "0.11.11"
+version = "0.11.13"
 dependencies = [
  "anyhow",
  "clap",
diff --git a/pkgs/by-name/ty/typstyle/package.nix b/pkgs/by-name/ty/typstyle/package.nix
index 7f4b60fd6364e..aa44d1de31c83 100644
--- a/pkgs/by-name/ty/typstyle/package.nix
+++ b/pkgs/by-name/ty/typstyle/package.nix
@@ -10,13 +10,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "typstyle";
-  version = "0.11.11";
+  version = "0.11.13";
 
   src = fetchFromGitHub {
     owner = "Enter-tainer";
     repo = "typstyle";
     rev = "v${version}";
-    hash = "sha256-Ov+kgKTOSD3KjHV6Rcn65+7wvh3FKRs4mqVFTmJYEp0=";
+    hash = "sha256-xJoL/YgdkORQf+U/1E2OVk6pD/IuXxJJTw+Xufonjd0=";
   };
 
   cargoLock = {
diff --git a/pkgs/by-name/ug/ugm/package.nix b/pkgs/by-name/ug/ugm/package.nix
new file mode 100644
index 0000000000000..a8c1726327c8b
--- /dev/null
+++ b/pkgs/by-name/ug/ugm/package.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, makeWrapper
+}:
+
+buildGoModule rec {
+  pname = "ugm";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "ariasmn";
+    repo = "ugm";
+    rev = "v${version}";
+    hash = "sha256-Co8JN0WEc1I08My9m7iyAshtEO4aszN8/sCvoGFJv2A=";
+  };
+
+  vendorHash = "sha256-34D9fQnmKnOyUqshduLmFiVgcVKi7mDKBs3X5ZQxsuw=";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  # Fix unaligned table when running this program under a CJK environment
+  postFixup = ''
+    wrapProgram $out/bin/ugm \
+        --set RUNEWIDTH_EASTASIAN 0
+  '';
+
+  meta = with lib; {
+    description = "A terminal based UNIX user and group browser";
+    homepage = "https://github.com/ariasmn/ugm";
+    changelog = "https://github.com/ariasmn/ugm/releases/tag/${src.rev}";
+    license = licenses.mit;
+    mainProgram = "ugm";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ oo-infty ];
+  };
+}
diff --git a/pkgs/by-name/ui/uiua/package.nix b/pkgs/by-name/ui/uiua/package.nix
index 753c3914df17d..ab39f1d53f662 100644
--- a/pkgs/by-name/ui/uiua/package.nix
+++ b/pkgs/by-name/ui/uiua/package.nix
@@ -14,16 +14,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "uiua";
-  version = "0.10.0";
+  version = "0.10.2";
 
   src = fetchFromGitHub {
     owner = "uiua-lang";
     repo = "uiua";
     rev = version;
-    hash = "sha256-fiMTLdJqyZEC9LEbVYCnN5WncLxjpXmxCXSd0ZMvHNY=";
+    hash = "sha256-vfWSMsduaJOh3ueJsjXW4MzYKZYI959lmah8glwex4A=";
   };
 
-  cargoHash = "sha256-L8hA6s+/IJeH+6d6ZvHhgne5NsN6QBqZJSAfaVnwBYQ=";
+  cargoHash = "sha256-LkW3/C67CuUpfGX3KQw3BjnmZpL1Vv+i7kqlXdhpP2I=";
 
   nativeBuildInputs = lib.optionals stdenv.isDarwin [
     rustPlatform.bindgenHook
diff --git a/pkgs/by-name/un/unciv/package.nix b/pkgs/by-name/un/unciv/package.nix
index 69d1bb8ec7df9..5a256c31bf6a6 100644
--- a/pkgs/by-name/un/unciv/package.nix
+++ b/pkgs/by-name/un/unciv/package.nix
@@ -27,11 +27,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "unciv";
-  version = "4.10.21";
+  version = "4.11.2";
 
   src = fetchurl {
     url = "https://github.com/yairm210/Unciv/releases/download/${version}/Unciv.jar";
-    hash = "sha256-JnuJbmKGqtEdFiMnA5RvCfdox2WTABwxNI3Zdk6wNU8=";
+    hash = "sha256-ZUDfJf+FgIX8gRoZYlYAJhpLwNWp3MCKEQOSQGQ88T8=";
   };
 
   dontUnpack = true;
diff --git a/pkgs/by-name/up/updatecli/package.nix b/pkgs/by-name/up/updatecli/package.nix
index 0b8ccb5728fea..6f0022f127dc0 100644
--- a/pkgs/by-name/up/updatecli/package.nix
+++ b/pkgs/by-name/up/updatecli/package.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "updatecli";
-  version = "0.74.0";
+  version = "0.75.0";
 
   src = fetchFromGitHub {
     owner = "updatecli";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-8yYuyUexidHiLG+Kbs3TiIDBHdvhxGP3wLm0SwxYWVU=";
+    hash = "sha256-8jQCwnc/kj3m/02nrA/na422rrvxxF7D3LzUen3O6ms=";
   };
 
-  vendorHash = "sha256-6xvL8Cu8VsXnk8WuXpAdld25ZIYhP6RxofTIo0c/CZY=";
+  vendorHash = "sha256-7LC5gzK54u8zEtDOyeU1kgIycGLxOeMWYrrDTvC3gVQ=";
 
   # tests require network access
   doCheck = false;
diff --git a/pkgs/by-name/uu/uuu/package.nix b/pkgs/by-name/uu/uuu/package.nix
index 235acc1c632f6..4166d99d34fb5 100755
--- a/pkgs/by-name/uu/uuu/package.nix
+++ b/pkgs/by-name/uu/uuu/package.nix
@@ -10,19 +10,20 @@
 , bzip2
 , libusb1
 , openssl
+, tinyxml-2
 , zlib
 , zstd
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "uuu";
-  version = "1.5.141";
+  version = "1.5.179";
 
   src = fetchFromGitHub {
     owner = "nxp-imx";
     repo = "mfgtools";
     rev = "uuu_${finalAttrs.version}";
-    hash = "sha256-N5L6k2oVXfnER7JRoX0JtzgEhb/vFMexu7hUKQhmcoE=";
+    hash = "sha256-W0jFwivjD19SQmXz2G7cIvWh1zkyN4AXh3bfqF302MA=";
   };
 
   passthru.updateScript = nix-update-script {
@@ -39,6 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
     bzip2
     libusb1
     openssl
+    tinyxml-2
     zlib
     zstd
   ];
diff --git a/pkgs/by-name/ux/uxn/package.nix b/pkgs/by-name/ux/uxn/package.nix
index 36986fd17272d..b006de83b3974 100644
--- a/pkgs/by-name/ux/uxn/package.nix
+++ b/pkgs/by-name/ux/uxn/package.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "uxn";
-  version = "unstable-2024-03-30";
+  version = "unstable-2024-04-05";
 
   src = fetchFromSourcehut {
     owner = "~rabbits";
     repo = "uxn";
-    rev = "fc6ec0b387723940868133fade8854ad37648881";
-    hash = "sha256-Ver8oI3IzxwF6KeZ85d3mmiCwARVoH+RZoFNCxhGFDc=";
+    rev = "41567558bc1ec4721fee1cc316c3a3cdc627b102";
+    hash = "sha256-Qvq9/kNZAKRHH3NIxiX5+67ibeX5QzK97EhuoplTBDQ=";
   };
 
   outputs = [ "out" "projects" ];
diff --git a/pkgs/by-name/vi/victoriametrics/package.nix b/pkgs/by-name/vi/victoriametrics/package.nix
index ad76b67df1bd7..ce98a2624b058 100644
--- a/pkgs/by-name/vi/victoriametrics/package.nix
+++ b/pkgs/by-name/vi/victoriametrics/package.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "VictoriaMetrics";
-  version = "1.99.0";
+  version = "1.100.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-IHUmxdCOzvA2JL06k/ei6/OTVWHTL1TiKKYZB1hgqyA=";
+    hash = "sha256-jrKTic80y8r/1wOR8Prqe9PG57yo8qQIGsobu0I4kTY=";
   };
 
   vendorHash = null;
diff --git a/pkgs/by-name/vu/vunnel/package.nix b/pkgs/by-name/vu/vunnel/package.nix
index 6575d5a8d5c46..c6a5256fdf57e 100644
--- a/pkgs/by-name/vu/vunnel/package.nix
+++ b/pkgs/by-name/vu/vunnel/package.nix
@@ -1,19 +1,20 @@
-{ lib
-, fetchFromGitHub
-, git
-, python3
+{
+  lib,
+  fetchFromGitHub,
+  git,
+  python3,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "vunnel";
-  version = "0.21.1";
+  version = "0.22.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "anchore";
     repo = "vunnel";
     rev = "refs/tags/v${version}";
-    hash = "sha256-m+khfAEN+fO3UuCYBqshlvjIXSzebeWBQtoQtPalIio=";
+    hash = "sha256-+L1MUD9IKPnbh/yjRuF3aOszeMvkILuqHHWj949SrMo=";
   };
 
   pythonRelaxDeps = [
@@ -21,9 +22,7 @@ python3.pkgs.buildPythonApplication rec {
     "sqlalchemy"
   ];
 
-  nativeBuildInputs = with python3.pkgs; [
-    pythonRelaxDepsHook
-  ];
+  nativeBuildInputs = with python3.pkgs; [ pythonRelaxDepsHook ];
 
   build-system = with python3.pkgs; [
     poetry-core
@@ -52,18 +51,16 @@ python3.pkgs.buildPythonApplication rec {
     zstandard
   ];
 
-  nativeCheckInputs = [
-    git
-  ] ++ (with python3.pkgs; [
-    jsonschema
-    pytest-mock
-    pytest-unordered
-    pytestCheckHook
-  ]);
+  nativeCheckInputs =
+    [ git ]
+    ++ (with python3.pkgs; [
+      jsonschema
+      pytest-mock
+      pytest-unordered
+      pytestCheckHook
+    ]);
 
-  pythonImportsCheck = [
-    "vunnel"
-  ];
+  pythonImportsCheck = [ "vunnel" ];
 
   disabledTests = [
     # Compare output
diff --git a/pkgs/games/vvvvvv/default.nix b/pkgs/by-name/vv/vvvvvv/package.nix
index 07f98d94f3e14..a03f3617d2ff7 100644
--- a/pkgs/games/vvvvvv/default.nix
+++ b/pkgs/by-name/vv/vvvvvv/package.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "vvvvvv";
-  version = "2.4";
+  version = "2.4.1";
 
   src = fetchFromGitHub {
     owner = "TerryCavanagh";
     repo = "VVVVVV";
     rev = version;
-    sha256 = "sha256-AecaEWjWELRnCzTdMz+rDXVKnpPF+LNmxiKqMwQMm4k=";
+    sha256 = "sha256-HosrYBzx1Kh7rQIH7IAoOTPgpm4lgYOVR3MWtWX3usQ=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/by-name/wa/walker/package.nix b/pkgs/by-name/wa/walker/package.nix
new file mode 100644
index 0000000000000..9bc5ef79236d0
--- /dev/null
+++ b/pkgs/by-name/wa/walker/package.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  pkg-config,
+  gobject-introspection,
+  wrapGAppsHook4,
+  gtk4,
+  gtk4-layer-shell,
+}:
+
+buildGoModule rec {
+  pname = "walker";
+  version = "0.0.68";
+
+  src = fetchFromGitHub {
+    owner = "abenz1267";
+    repo = "walker";
+    rev = "v${version}";
+    hash = "sha256-nLCFGrauMKm9NzOlzrprA8KL9CKs3nTjerEaC5992qQ=";
+  };
+
+  vendorHash = "sha256-zDntJ695k8dbwyFXbg9PapWD335MHrWbep1xxzXNIL4=";
+
+  nativeBuildInputs = [
+    pkg-config
+    gobject-introspection
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    gtk4
+    gtk4-layer-shell
+  ];
+
+  meta = with lib; {
+    description = "Wayland-native application runner";
+    homepage = "https://github.com/abenz1267/walker";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ donovanglover ];
+    mainProgram = "walker";
+  };
+}
diff --git a/pkgs/by-name/wa/warp-terminal/versions.json b/pkgs/by-name/wa/warp-terminal/versions.json
index 79bf56085f7b9..d5c6c8d064750 100644
--- a/pkgs/by-name/wa/warp-terminal/versions.json
+++ b/pkgs/by-name/wa/warp-terminal/versions.json
@@ -1,10 +1,10 @@
 {
   "darwin": {
-    "hash": "sha256-4eeu1JlChD9QvFSpuq5Wh8y+cUqpHYKgi3+SBTJqIwA=",
-    "version": "0.2024.03.26.08.02.stable_02"
+    "hash": "sha256-tNNT8FqMvrjGFuyhizbyd2gAimbd5SLyCMVt6bFcbyQ=",
+    "version": "0.2024.04.02.08.02.stable_01"
   },
   "linux": {
-    "hash": "sha256-hBwLfxhdy4cru2xH3hY+mGbJpR47Qf3SqEIijIRDstU=",
-    "version": "0.2024.03.26.08.02.stable_02"
+    "hash": "sha256-xnXRg23AdfCk2TKBr+PZ3wDYqTN4+8wLSodWpmh3D/Y=",
+    "version": "0.2024.04.02.08.02.stable_01"
   }
 }
diff --git a/pkgs/by-name/wa/waybar-mpris/package.nix b/pkgs/by-name/wa/waybar-mpris/package.nix
index e6eeb27ea0087..56cee21271607 100644
--- a/pkgs/by-name/wa/waybar-mpris/package.nix
+++ b/pkgs/by-name/wa/waybar-mpris/package.nix
@@ -1,6 +1,7 @@
 { lib
 , fetchgit
 , buildGoModule
+, unstableGitUpdater
 }:
 
 buildGoModule {
@@ -20,6 +21,8 @@ buildGoModule {
     "-w"
   ];
 
+  passthru.updateScript = unstableGitUpdater { };
+
   meta = with lib; {
     description = "A waybar component/utility for displaying and controlling MPRIS2 compliant media players individually";
     homepage = "https://git.hrfee.pw/hrfee/waybar-mpris";
diff --git a/pkgs/by-name/wa/wayfarer/package.nix b/pkgs/by-name/wa/wayfarer/package.nix
new file mode 100644
index 0000000000000..cbfb7c149744e
--- /dev/null
+++ b/pkgs/by-name/wa/wayfarer/package.nix
@@ -0,0 +1,64 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, blueprint-compiler
+, desktop-file-utils
+, gst_all_1
+, gtk4
+, libpulseaudio
+, meson
+, ninja
+, pipewire
+, pkg-config
+, vala
+, wrapGAppsHook4
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "wayfarer";
+  version = "1.2.4";
+
+  src = fetchFromGitHub {
+    owner = "stronnag";
+    repo = "wayfarer";
+    rev = finalAttrs.version;
+    hash = "sha256-Vuiy2SjpK2T1ekbwa/KyIFa1V4BJsnJRIj4b+Yx0VEw=";
+  };
+
+  postPatch = ''
+    patchShebangs src/getinfo.sh
+
+    # OS release information is not available in the sandbox
+    substituteInPlace meson/baseinfo.py \
+      --replace-warn 'platform.freedesktop_os_release()["NAME"]' '"NixOS"'
+  '';
+
+  nativeBuildInputs = [
+    blueprint-compiler
+    desktop-file-utils
+    meson
+    ninja
+    pkg-config
+    vala
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-ugly
+    gtk4
+    libpulseaudio
+    pipewire
+  ];
+
+  meta = with lib; {
+    description = "Screen recorder for GNOME / Wayland / pipewire";
+    homepage = "https://github.com/stronnag/wayfarer";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ fgaz ];
+    mainProgram = "wayfarer";
+    platforms = subtractLists platforms.darwin platforms.unix;
+  };
+})
diff --git a/pkgs/by-name/wh/where-is-my-sddm-theme/package.nix b/pkgs/by-name/wh/where-is-my-sddm-theme/package.nix
new file mode 100644
index 0000000000000..6026a107f70b1
--- /dev/null
+++ b/pkgs/by-name/wh/where-is-my-sddm-theme/package.nix
@@ -0,0 +1,81 @@
+{
+  lib,
+  formats,
+  stdenvNoCC,
+  fetchFromGitHub,
+  qt6,
+  libsForQt5,
+  variants ? [ "qt6" ],
+  /*
+    An example of how you can override the background on the NixOS logo
+
+      environment.systemPackages = [
+        (pkgs.where-is-my-sddm-theme.override {
+          themeConfig.General = {
+            background = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+            backgroundMode = "none";
+          };
+        })
+      ];
+  */
+  themeConfig ? null,
+}:
+
+let
+  user-cfg = (formats.ini { }).generate "theme.conf.user" themeConfig;
+  validVariants = [
+    "qt5"
+    "qt6"
+  ];
+in
+
+lib.checkListOfEnum "where-is-my-sddm-theme: variant" validVariants variants
+
+stdenvNoCC.mkDerivation rec {
+  pname = "where-is-my-sddm-theme";
+  version = "1.8.0";
+
+  src = fetchFromGitHub {
+    owner = "stepanzubkov";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-/D3i4QcE5+GbiAw32bFYJ7UxW/5NAl9FqQfiQc4akzI=";
+  };
+
+  propagatedUserEnvPkgs =
+    [ ]
+    ++ lib.optional (lib.elem "qt5" variants) [ libsForQt5.qtgraphicaleffects ]
+    ++ lib.optional (lib.elem "qt6" variants) [
+      qt6.qt5compat
+      qt6.qtsvg
+    ];
+
+  installPhase =
+    ''
+      mkdir -p $out/share/sddm/themes/
+    ''
+    + lib.optionalString (lib.elem "qt6" variants) (
+      ''
+        cp -r where_is_my_sddm_theme/ $out/share/sddm/themes/
+      ''
+      + lib.optionalString (lib.isAttrs themeConfig) ''
+        ln -sf ${user-cfg} $out/share/sddm/themes/where_is_my_sddm_theme/theme.conf.user
+      ''
+    )
+    + lib.optionalString (lib.elem "qt5" variants) (
+      ''
+        cp -r where_is_my_sddm_theme_qt5/ $out/share/sddm/themes/
+      ''
+      + lib.optionalString (lib.isAttrs themeConfig) ''
+        ln -sf ${user-cfg} $out/share/sddm/themes/where_is_my_sddm_theme_qt5/theme.conf.user
+      ''
+    );
+
+  meta = with lib; {
+    description = "The most minimalistic SDDM theme among all themes";
+    homepage = "https://github.com/stepanzubkov/where-is-my-sddm-theme";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ name-snrl ];
+  };
+}
diff --git a/pkgs/by-name/wo/workout-tracker/package.nix b/pkgs/by-name/wo/workout-tracker/package.nix
index 43738d4358b2a..e0b4dc91f520b 100644
--- a/pkgs/by-name/wo/workout-tracker/package.nix
+++ b/pkgs/by-name/wo/workout-tracker/package.nix
@@ -8,13 +8,13 @@
 
 buildGoModule rec {
   pname = "workout-tracker";
-  version = "0.10.5";
+  version = "0.12.0";
 
   src = fetchFromGitHub {
     owner = "jovandeginste";
     repo = "workout-tracker";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ekGaNHysY0lXbB5w6AycnLR9/4dqUp0busCcPPvzSVI=";
+    hash = "sha256-INEo8jRJP0Jdsl28pLyrJEWAFwq5HpiOJIpwxOJ1vhU=";
   };
 
   vendorHash = null;
diff --git a/pkgs/by-name/ws/wslu/package.nix b/pkgs/by-name/ws/wslu/package.nix
index b45d566b0f851..015d0350af925 100644
--- a/pkgs/by-name/ws/wslu/package.nix
+++ b/pkgs/by-name/ws/wslu/package.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "wslu";
-  version = "4.1.2";
+  version = "4.1.3";
 
   src = fetchFromGitHub {
     owner = "wslutilities";
     repo = "wslu";
     rev = "v${version}";
-    hash = "sha256-rmNGKayg8Y872yICilveMpDFBLkDZ6Ox8rqtWrK2om8=";
+    hash = "sha256-lyJk8nOADq+s7GkZXsd1T4ilrDzMRsoALOesG8NxYK8=";
   };
 
   nativeBuildInputs = [ copyDesktopItems ];
diff --git a/pkgs/by-name/xe/xevd/package.nix b/pkgs/by-name/xe/xevd/package.nix
new file mode 100644
index 0000000000000..8cf6d20fbfe8d
--- /dev/null
+++ b/pkgs/by-name/xe/xevd/package.nix
@@ -0,0 +1,63 @@
+{
+  lib,
+  fetchFromGitHub,
+  fetchpatch2,
+  stdenv,
+  gitUpdater,
+  cmake,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "xevd";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "mpeg5";
+    repo = "xevd";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-+qC/BnP8o/kfl5ax+g1PohvXIJBL2gin/QZ9Gkvi0WU=";
+  };
+
+  patches = [
+    (fetchpatch2 {
+      name = "fix dangling pointer error";
+      url = "https://github.com/mpeg5/xevd/commit/13b86a74e26df979dd1cc3a1cb19bf1ac828e197.patch";
+      sha256 = "sha256-CeSfhN78ldooyZ9H4F2ex9wTBFXuNZdBcnLdk7GqDXI=";
+    })
+    (fetchpatch2 {
+      name = "fix invalid comparison of c_buf in write_y4m_header ";
+      url = "https://github.com/mpeg5/xevd/commit/e4ae0c567a6ec5e10c9f5ed44c61e4e3b6816c16.patch";
+      sha256 = "sha256-9bG6hyIV/AZ0mRbd3Fc/c137Xm1i6NJ1IfuGadG0vUU=";
+    })
+  ];
+
+  postPatch = ''
+    echo v$version > version.txt
+  '';
+
+  nativeBuildInputs = [ cmake ];
+
+  postInstall = ''
+    ln $dev/include/xevd/* $dev/include/
+  '';
+
+  env.NIX_CFLAGS_COMPILE = toString [ "-lm" ];
+
+  outputs = [
+    "out"
+    "lib"
+    "dev"
+  ];
+
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
+
+  meta = {
+    homepage = "https://github.com/mpeg5/xevd";
+    description = "eXtra-fast Essential Video Decoder, MPEG-5 EVC";
+    license = lib.licenses.bsd3;
+    mainProgram = "xevd_app";
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+    platforms = lib.platforms.all;
+    broken = !stdenv.hostPlatform.isx86;
+  };
+})
diff --git a/pkgs/by-name/xe/xeve/package.nix b/pkgs/by-name/xe/xeve/package.nix
new file mode 100644
index 0000000000000..5132656e58c25
--- /dev/null
+++ b/pkgs/by-name/xe/xeve/package.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  fetchFromGitHub,
+  gitUpdater,
+  stdenv,
+  cmake,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "xeve";
+  version = "0.4.3";
+
+  src = fetchFromGitHub {
+    owner = "mpeg5";
+    repo = "xeve";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-8YueEx2oIh24jV38bzpDlCVHNZB7HDOXeP5MANM8zBc=";
+  };
+
+  postPatch = ''
+    echo v$version > version.txt
+  '';
+
+  nativeBuildInputs = [ cmake ];
+
+  postInstall = ''
+    ln $dev/include/xeve/* $dev/include/
+  '';
+
+  env.NIX_CFLAGS_COMPILE = toString [ "-lm" ];
+
+  outputs = [
+    "out"
+    "lib"
+    "dev"
+  ];
+
+  passthru.updateScript = gitUpdater { rev-prefix = "v"; };
+
+  meta = {
+    homepage = "https://github.com/mpeg5/xeve";
+    description = "eXtra-fast Essential Video Encoder, MPEG-5 EVC";
+    license = lib.licenses.bsd3;
+    mainProgram = "xeve_app";
+    maintainers = with lib.maintainers; [ jopejoe1 ];
+    platforms = lib.platforms.all;
+    broken = !stdenv.hostPlatform.isx86;
+  };
+})
diff --git a/pkgs/by-name/ya/yamlscript/package.nix b/pkgs/by-name/ya/yamlscript/package.nix
index b91ba98953ef1..ca47662808901 100644
--- a/pkgs/by-name/ya/yamlscript/package.nix
+++ b/pkgs/by-name/ya/yamlscript/package.nix
@@ -2,11 +2,11 @@
 
 buildGraalvmNativeImage rec {
   pname = "yamlscript";
-  version = "0.1.46";
+  version = "0.1.52";
 
   src = fetchurl {
     url = "https://github.com/yaml/yamlscript/releases/download/${version}/yamlscript.cli-${version}-standalone.jar";
-    hash = "sha256-eHmHliWud2ONK3lHYpLlJ1+KhvH5vuD+x5kC54ZMfWk=";
+    hash = "sha256-VBb+mZXTzcP0oVjm3TWM38J3fSacQZwQ4WVVDgldHV4=";
   };
 
   executable = "ys";
diff --git a/pkgs/by-name/yu/yutto/package.nix b/pkgs/by-name/yu/yutto/package.nix
index 838471e087bc9..2d1e7a7d3a705 100644
--- a/pkgs/by-name/yu/yutto/package.nix
+++ b/pkgs/by-name/yu/yutto/package.nix
@@ -5,9 +5,9 @@
 , nix-update-script
 }:
 
-python3Packages.buildPythonApplication {
+python3Packages.buildPythonApplication rec {
   pname = "yutto";
-  version = "2.0.0b36-unstable-2024-03-04";
+  version = "2.0.0-beta.37";
   format = "pyproject";
 
   disabled = python3Packages.pythonOlder "3.9";
@@ -15,8 +15,8 @@ python3Packages.buildPythonApplication {
   src = fetchFromGitHub {
     owner = "yutto-dev";
     repo = "yutto";
-    rev = "f2d34f9e2a2d45ed8ed6ae4c2bf91af248da27f0";
-    hash = "sha256-/zTQt+/sCjnQPt8YyKvRXpWVpN/yi2LrhpFH4FPbeOc=";
+    rev = "v${version}";
+    hash = "sha256-daRuFYfR3FjvhVsQM1FXI19iOH+bukh6WxfH5O+CFk4=";
   };
 
   nativeBuildInputs = with python3Packages; [
@@ -38,7 +38,9 @@ python3Packages.buildPythonApplication {
 
   pythonImportsCheck = [ "yutto" ];
 
-  passthru.updateScript = nix-update-script { };
+  passthru.updateScript = nix-update-script {
+    extraArgs = [ "--version" "unstable" ];
+  };
 
   meta = with lib; {
     description = "A Bilibili downloader";
diff --git a/pkgs/by-name/ze/zed-editor/Cargo.lock b/pkgs/by-name/ze/zed-editor/Cargo.lock
new file mode 100644
index 0000000000000..6d3debbf73291
--- /dev/null
+++ b/pkgs/by-name/ze/zed-editor/Cargo.lock
@@ -0,0 +1,12702 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "activity_indicator"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "auto_update",
+ "editor",
+ "extension",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "project",
+ "smallvec",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "addr2line"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "adler32"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
+
+[[package]]
+name = "aes"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
+dependencies = [
+ "cfg-if",
+ "cipher 0.4.4",
+ "cpufeatures",
+ "zeroize",
+]
+
+[[package]]
+name = "ahash"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
+dependencies = [
+ "getrandom 0.2.10",
+ "once_cell",
+ "version_check",
+]
+
+[[package]]
+name = "ahash"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42cd52102d3df161c77a887b608d7a4897d7cc112886a9537b738a887a03aaff"
+dependencies = [
+ "cfg-if",
+ "getrandom 0.2.10",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alacritty_terminal"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6d1ea4484c8676f295307a4892d478c70ac8da1dbd8c7c10830a504b7f1022f"
+dependencies = [
+ "base64 0.22.0",
+ "bitflags 2.4.2",
+ "home",
+ "libc",
+ "log",
+ "miow",
+ "parking_lot",
+ "piper",
+ "polling 3.3.2",
+ "regex-automata 0.4.5",
+ "rustix-openpty",
+ "serde",
+ "signal-hook",
+ "unicode-width",
+ "vte",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "aliasable"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+
+[[package]]
+name = "alsa"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2562ad8dcf0f789f65c6fdaad8a8a9708ed6b488e649da28c01656ad66b8b47"
+dependencies = [
+ "alsa-sys",
+ "bitflags 1.3.2",
+ "libc",
+ "nix 0.24.3",
+]
+
+[[package]]
+name = "alsa-sys"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "ambient-authority"
+version = "0.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9d4ee0d472d1cd2e28c97dfa124b3d8d992e10eb0a035f33f5d12e3a177ba3b"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anstream"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "anthropic"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "futures 0.3.28",
+ "serde",
+ "serde_json",
+ "tokio",
+ "util",
+]
+
+[[package]]
+name = "any_vec"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e78f17bacc1bc7b91fef7b1885c10772eb2b9e4e989356f6f0f6a972240f97cd"
+
+[[package]]
+name = "anyhow"
+version = "1.0.75"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+
+[[package]]
+name = "approx"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
+
+[[package]]
+name = "arrayref"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
+
+[[package]]
+name = "arrayvec"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+
+[[package]]
+name = "as-raw-xcb-connection"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b"
+
+[[package]]
+name = "ascii"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16"
+
+[[package]]
+name = "ash"
+version = "0.37.3+1.3.251"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a"
+dependencies = [
+ "libloading 0.7.4",
+]
+
+[[package]]
+name = "ash-window"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b912285a7c29f3a8f87ca6f55afc48768624e5e33ec17dbd2f2075903f5e35ab"
+dependencies = [
+ "ash",
+ "raw-window-handle 0.5.2",
+ "raw-window-metal",
+]
+
+[[package]]
+name = "ashpd"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093"
+dependencies = [
+ "async-fs 2.1.1",
+ "async-net 2.0.0",
+ "enumflags2",
+ "futures-channel",
+ "futures-util",
+ "rand 0.8.5",
+ "serde",
+ "serde_repr",
+ "url",
+ "zbus",
+]
+
+[[package]]
+name = "assets"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "gpui",
+ "rust-embed",
+]
+
+[[package]]
+name = "assistant"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "chrono",
+ "client",
+ "collections",
+ "command_palette_hooks",
+ "ctor",
+ "editor",
+ "env_logger",
+ "file_icons",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "indoc",
+ "language",
+ "log",
+ "menu",
+ "multi_buffer",
+ "open_ai",
+ "ordered-float 2.10.0",
+ "parking_lot",
+ "project",
+ "rand 0.8.5",
+ "regex",
+ "schemars",
+ "search",
+ "serde",
+ "serde_json",
+ "settings",
+ "smol",
+ "telemetry_events",
+ "theme",
+ "tiktoken-rs",
+ "ui",
+ "util",
+ "uuid",
+ "workspace",
+]
+
+[[package]]
+name = "async-broadcast"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb"
+dependencies = [
+ "event-listener 5.1.0",
+ "event-listener-strategy 0.5.0",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-channel"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 2.5.3",
+ "futures-core",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 5.1.0",
+ "event-listener-strategy 0.5.0",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-compat"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b48b4ff0c2026db683dea961cd8ea874737f56cffca86fa84415eaddc51c00d"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "once_cell",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "async-compression"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a116f46a969224200a0a97f29cfd4c50e7534e4b4826bd23ea2c3c533039c82c"
+dependencies = [
+ "flate2",
+ "futures-core",
+ "futures-io",
+ "memchr",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb"
+dependencies = [
+ "async-lock 2.8.0",
+ "async-task",
+ "concurrent-queue",
+ "fastrand 1.9.0",
+ "futures-lite 1.13.0",
+ "slab",
+]
+
+[[package]]
+name = "async-fs"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06"
+dependencies = [
+ "async-lock 2.8.0",
+ "autocfg",
+ "blocking",
+ "futures-lite 1.13.0",
+]
+
+[[package]]
+name = "async-fs"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1"
+dependencies = [
+ "async-lock 3.3.0",
+ "blocking",
+ "futures-lite 2.2.0",
+]
+
+[[package]]
+name = "async-global-executor"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776"
+dependencies = [
+ "async-channel 1.9.0",
+ "async-executor",
+ "async-io 1.13.0",
+ "async-lock 2.8.0",
+ "blocking",
+ "futures-lite 1.13.0",
+ "once_cell",
+]
+
+[[package]]
+name = "async-io"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
+dependencies = [
+ "async-lock 2.8.0",
+ "autocfg",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-lite 1.13.0",
+ "log",
+ "parking",
+ "polling 2.8.0",
+ "rustix 0.37.23",
+ "slab",
+ "socket2 0.4.9",
+ "waker-fn",
+]
+
+[[package]]
+name = "async-io"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65"
+dependencies = [
+ "async-lock 3.3.0",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite 2.2.0",
+ "parking",
+ "polling 3.3.2",
+ "rustix 0.38.32",
+ "slab",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "async-lock"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
+dependencies = [
+ "event-listener 2.5.3",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
+dependencies = [
+ "event-listener 4.0.3",
+ "event-listener-strategy 0.4.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-native-tls"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e9e7a929bd34c68a82d58a4de7f86fffdaf97fb2af850162a7bb19dd7269b33"
+dependencies = [
+ "async-std",
+ "native-tls",
+ "thiserror",
+ "url",
+]
+
+[[package]]
+name = "async-net"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4051e67316bc7eff608fe723df5d32ed639946adcd69e07df41fd42a7b411f1f"
+dependencies = [
+ "async-io 1.13.0",
+ "autocfg",
+ "blocking",
+ "futures-lite 1.13.0",
+]
+
+[[package]]
+name = "async-net"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7"
+dependencies = [
+ "async-io 2.3.1",
+ "blocking",
+ "futures-lite 2.2.0",
+]
+
+[[package]]
+name = "async-pipe"
+version = "0.1.3"
+source = "git+https://github.com/zed-industries/async-pipe-rs?rev=82d00a04211cf4e1236029aa03e6b6ce2a74c553#82d00a04211cf4e1236029aa03e6b6ce2a74c553"
+dependencies = [
+ "futures 0.3.28",
+ "log",
+]
+
+[[package]]
+name = "async-process"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9"
+dependencies = [
+ "async-io 1.13.0",
+ "async-lock 2.8.0",
+ "autocfg",
+ "blocking",
+ "cfg-if",
+ "event-listener 2.5.3",
+ "futures-lite 1.13.0",
+ "rustix 0.37.23",
+ "signal-hook",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "async-process"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "451e3cf68011bd56771c79db04a9e333095ab6349f7e47592b788e9b98720cc8"
+dependencies = [
+ "async-channel 2.2.0",
+ "async-io 2.3.1",
+ "async-lock 3.3.0",
+ "async-signal",
+ "blocking",
+ "cfg-if",
+ "event-listener 5.1.0",
+ "futures-lite 2.2.0",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "async-recursion"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "async-recursion"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "async-signal"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
+dependencies = [
+ "async-io 2.3.1",
+ "async-lock 2.8.0",
+ "atomic-waker",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "rustix 0.38.32",
+ "signal-hook-registry",
+ "slab",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "async-std"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
+dependencies = [
+ "async-channel 1.9.0",
+ "async-global-executor",
+ "async-io 1.13.0",
+ "async-lock 2.8.0",
+ "async-process 1.7.0",
+ "crossbeam-utils",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-lite 1.13.0",
+ "gloo-timers",
+ "kv-log-macro",
+ "log",
+ "memchr",
+ "once_cell",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+ "wasm-bindgen-futures",
+]
+
+[[package]]
+name = "async-stream"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
+dependencies = [
+ "async-stream-impl",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-stream-impl"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "async-tar"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c49359998a76e32ef6e870dbc079ebad8f1e53e8441c5dd39d27b44493fe331"
+dependencies = [
+ "async-std",
+ "filetime",
+ "libc",
+ "pin-project",
+ "redox_syscall 0.2.16",
+ "xattr",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
+
+[[package]]
+name = "async-trait"
+version = "0.1.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "async-tungstenite"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5682ea0913e5c20780fe5785abacb85a411e7437bf52a1bedb93ddb3972cb8dd"
+dependencies = [
+ "async-native-tls",
+ "async-std",
+ "futures-io",
+ "futures-util",
+ "log",
+ "pin-project-lite",
+ "tungstenite 0.16.0",
+]
+
+[[package]]
+name = "atoi"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "atomic"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba"
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3"
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi 0.1.19",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "audio"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "derive_more",
+ "gpui",
+ "parking_lot",
+ "rodio",
+ "util",
+]
+
+[[package]]
+name = "auto_update"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "db",
+ "editor",
+ "gpui",
+ "isahc",
+ "log",
+ "markdown_preview",
+ "menu",
+ "release_channel",
+ "schemars",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "settings",
+ "smol",
+ "tempfile",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "aws-config"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7af266887e24cd5f6d2ea7433cacd25dcd4773b7f70e488701968a7cdf51df57"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-sdk-sso",
+ "aws-sdk-ssooidc",
+ "aws-sdk-sts",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes 1.5.0",
+ "fastrand 2.0.0",
+ "hex",
+ "http 0.2.9",
+ "hyper",
+ "ring 0.17.7",
+ "time",
+ "tokio",
+ "tracing",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-credential-types"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d56f287a9e65e4914bfedb5b22c056b65e4c232fca512d5509a9df36386759f"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-runtime"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d6a29eca8ea8982028a4df81883e7001e250a21d323b86418884b5345950a4b"
+dependencies = [
+ "aws-credential-types",
+ "aws-sigv4",
+ "aws-smithy-async",
+ "aws-smithy-eventstream",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes 1.5.0",
+ "fastrand 2.0.0",
+ "http 0.2.9",
+ "http-body",
+ "percent-encoding",
+ "pin-project-lite",
+ "tracing",
+ "uuid",
+]
+
+[[package]]
+name = "aws-sdk-s3"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c977e92277652aefb9a76a0fca652b26757d6845dce0d7bf4426da80f13d85b0"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-sigv4",
+ "aws-smithy-async",
+ "aws-smithy-checksums",
+ "aws-smithy-eventstream",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-smithy-xml",
+ "aws-types",
+ "bytes 1.5.0",
+ "http 0.2.9",
+ "http-body",
+ "once_cell",
+ "percent-encoding",
+ "regex-lite",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "aws-sdk-sso"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d7f527c7b28af1a641f7d89f9e6a4863e8ec00f39d2b731b056fc5ec5ce829"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes 1.5.0",
+ "http 0.2.9",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-ssooidc"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d0be3224cd574ee8ab5fd7c32087876f25c134c27ac603fcb38669ed8d346b0"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-types",
+ "bytes 1.5.0",
+ "http 0.2.9",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sdk-sts"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b3167c60d82a13bbaef569da06041644ff41e85c6377e5dad53fa2526ccfe9d"
+dependencies = [
+ "aws-credential-types",
+ "aws-runtime",
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-query",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-smithy-xml",
+ "aws-types",
+ "http 0.2.9",
+ "once_cell",
+ "regex-lite",
+ "tracing",
+]
+
+[[package]]
+name = "aws-sigv4"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54b1cbe0eee57a213039088dbdeca7be9352f24e0d72332d961e8a1cb388f82d"
+dependencies = [
+ "aws-credential-types",
+ "aws-smithy-eventstream",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes 1.5.0",
+ "crypto-bigint 0.5.5",
+ "form_urlencoded",
+ "hex",
+ "hmac 0.12.1",
+ "http 0.2.9",
+ "http 1.0.0",
+ "once_cell",
+ "p256",
+ "percent-encoding",
+ "ring 0.17.7",
+ "sha2 0.10.7",
+ "subtle",
+ "time",
+ "tracing",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-smithy-async"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "426a5bc369ca7c8d3686439e46edc727f397a47ab3696b13f3ae8c81b3b36132"
+dependencies = [
+ "futures-util",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "aws-smithy-checksums"
+version = "0.60.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ee554133eca2611b66d23548e48f9b44713befdb025ab76bc00185b878397a1"
+dependencies = [
+ "aws-smithy-http",
+ "aws-smithy-types",
+ "bytes 1.5.0",
+ "crc32c",
+ "crc32fast",
+ "hex",
+ "http 0.2.9",
+ "http-body",
+ "md-5",
+ "pin-project-lite",
+ "sha1",
+ "sha2 0.10.7",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-eventstream"
+version = "0.60.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6363078f927f612b970edf9d1903ef5cef9a64d1e8423525ebb1f0a1633c858"
+dependencies = [
+ "aws-smithy-types",
+ "bytes 1.5.0",
+ "crc32fast",
+]
+
+[[package]]
+name = "aws-smithy-http"
+version = "0.60.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85d6a0619f7b67183067fa3b558f94f90753da2df8c04aeb7336d673f804b0b8"
+dependencies = [
+ "aws-smithy-eventstream",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes 1.5.0",
+ "bytes-utils",
+ "futures-core",
+ "http 0.2.9",
+ "http-body",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "pin-utils",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-json"
+version = "0.60.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1c1b5186b6f5c579bf0de1bcca9dd3d946d6d51361ea1d18131f6a0b64e13ae"
+dependencies = [
+ "aws-smithy-types",
+]
+
+[[package]]
+name = "aws-smithy-query"
+version = "0.60.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c0a2ce65882e788d2cf83ff28b9b16918de0460c47bf66c5da4f6c17b4c9694"
+dependencies = [
+ "aws-smithy-types",
+ "urlencoding",
+]
+
+[[package]]
+name = "aws-smithy-runtime"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4cb6b3afa5fc9825a75675975dcc3e21764b5476bc91dbc63df4ea3d30a576e"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes 1.5.0",
+ "fastrand 2.0.0",
+ "h2",
+ "http 0.2.9",
+ "http-body",
+ "hyper",
+ "hyper-rustls",
+ "once_cell",
+ "pin-project-lite",
+ "pin-utils",
+ "rustls",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-runtime-api"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23165433e80c04e8c09cee66d171292ae7234bae05fa9d5636e33095eae416b2"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-types",
+ "bytes 1.5.0",
+ "http 0.2.9",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+ "zeroize",
+]
+
+[[package]]
+name = "aws-smithy-types"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c94a5bec34850b92c9a054dad57b95c1d47f25125f55973e19f6ad788f0381ff"
+dependencies = [
+ "base64-simd",
+ "bytes 1.5.0",
+ "bytes-utils",
+ "futures-core",
+ "http 0.2.9",
+ "http-body",
+ "itoa",
+ "num-integer",
+ "pin-project-lite",
+ "pin-utils",
+ "ryu",
+ "serde",
+ "time",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
+name = "aws-smithy-xml"
+version = "0.60.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d16f94c9673412b7a72e3c3efec8de89081c320bf59ea12eed34c417a62ad600"
+dependencies = [
+ "xmlparser",
+]
+
+[[package]]
+name = "aws-types"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ff7e122ee50ca962e9de91f5850cc37e2184b1219611eef6d44aa85929b54f6"
+dependencies = [
+ "aws-credential-types",
+ "aws-smithy-async",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "http 0.2.9",
+ "rustc_version",
+ "tracing",
+]
+
+[[package]]
+name = "axum"
+version = "0.6.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+dependencies = [
+ "async-trait",
+ "axum-core",
+ "base64 0.21.4",
+ "bitflags 1.3.2",
+ "bytes 1.5.0",
+ "futures-util",
+ "headers",
+ "http 0.2.9",
+ "http-body",
+ "hyper",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde",
+ "serde_json",
+ "serde_path_to_error",
+ "serde_urlencoded",
+ "sha1",
+ "sync_wrapper",
+ "tokio",
+ "tokio-tungstenite",
+ "tower",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+dependencies = [
+ "async-trait",
+ "bytes 1.5.0",
+ "futures-util",
+ "http 0.2.9",
+ "http-body",
+ "mime",
+ "rustversion",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "axum-extra"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9a320103719de37b7b4da4c8eb629d4573f6bcfd3dfe80d3208806895ccf81d"
+dependencies = [
+ "axum",
+ "bytes 1.5.0",
+ "futures-util",
+ "http 0.2.9",
+ "mime",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "tokio",
+ "tower",
+ "tower-http 0.3.5",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide 0.7.1",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base16ct"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "base64"
+version = "0.21.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
+
+[[package]]
+name = "base64"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
+
+[[package]]
+name = "base64-simd"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195"
+dependencies = [
+ "outref",
+ "vsimd",
+]
+
+[[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
+[[package]]
+name = "bigdecimal"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa"
+dependencies = [
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bindgen"
+version = "0.64.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4"
+dependencies = [
+ "bitflags 1.3.2",
+ "cexpr",
+ "clang-sys",
+ "lazy_static",
+ "lazycell",
+ "peeking_take_while",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "bindgen"
+version = "0.65.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
+dependencies = [
+ "bitflags 1.3.2",
+ "cexpr",
+ "clang-sys",
+ "lazy_static",
+ "lazycell",
+ "log",
+ "peeking_take_while",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn 2.0.48",
+ "which 4.4.2",
+]
+
+[[package]]
+name = "bit-set"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitvec"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
+name = "blade-graphics"
+version = "0.3.0"
+source = "git+https://github.com/kvark/blade?rev=61cbd6b2c224791d52b150fe535cee665cc91bb2#61cbd6b2c224791d52b150fe535cee665cc91bb2"
+dependencies = [
+ "ash",
+ "ash-window",
+ "bitflags 2.4.2",
+ "block",
+ "bytemuck",
+ "codespan-reporting",
+ "core-graphics-types",
+ "glow",
+ "gpu-alloc",
+ "gpu-alloc-ash",
+ "hidden-trait",
+ "js-sys",
+ "khronos-egl",
+ "libloading 0.8.0",
+ "log",
+ "metal",
+ "mint",
+ "naga",
+ "objc",
+ "raw-window-handle 0.5.2",
+ "slab",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "blade-macros"
+version = "0.2.1"
+source = "git+https://github.com/kvark/blade?rev=61cbd6b2c224791d52b150fe535cee665cc91bb2#61cbd6b2c224791d52b150fe535cee665cc91bb2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "block-buffer"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-padding"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "blocking"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
+dependencies = [
+ "async-channel 2.2.0",
+ "async-lock 3.3.0",
+ "async-task",
+ "fastrand 2.0.0",
+ "futures-io",
+ "futures-lite 2.2.0",
+ "piper",
+ "tracing",
+]
+
+[[package]]
+name = "borsh"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b"
+dependencies = [
+ "borsh-derive",
+ "hashbrown 0.13.2",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7"
+dependencies = [
+ "borsh-derive-internal",
+ "borsh-schema-derive-internal",
+ "proc-macro-crate 0.1.5",
+ "proc-macro2",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "borsh-derive-internal"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "borsh-schema-derive-internal"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "breadcrumbs"
+version = "0.1.0"
+dependencies = [
+ "editor",
+ "gpui",
+ "itertools 0.11.0",
+ "outline",
+ "theme",
+ "ui",
+ "workspace",
+]
+
+[[package]]
+name = "bromberg_sl2"
+version = "0.6.0"
+source = "git+https://github.com/zed-industries/bromberg_sl2?rev=950bc5482c216c395049ae33ae4501e08975f17f#950bc5482c216c395049ae33ae4501e08975f17f"
+dependencies = [
+ "digest 0.9.0",
+ "lazy_static",
+ "rayon",
+ "seq-macro",
+]
+
+[[package]]
+name = "bstr"
+version = "1.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a"
+dependencies = [
+ "memchr",
+ "regex-automata 0.3.8",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+
+[[package]]
+name = "bytecheck"
+version = "0.6.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627"
+dependencies = [
+ "bytecheck_derive",
+ "ptr_meta",
+ "simdutf8",
+]
+
+[[package]]
+name = "bytecheck_derive"
+version = "0.6.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "bytemuck"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "bytes"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
+dependencies = [
+ "byteorder",
+ "iovec",
+]
+
+[[package]]
+name = "bytes"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+
+[[package]]
+name = "bytes-utils"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35"
+dependencies = [
+ "bytes 1.5.0",
+ "either",
+]
+
+[[package]]
+name = "call"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "audio",
+ "client",
+ "collections",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "live_kit_client",
+ "log",
+ "postage",
+ "project",
+ "schemars",
+ "serde",
+ "serde_derive",
+ "settings",
+ "util",
+]
+
+[[package]]
+name = "calloop"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
+dependencies = [
+ "bitflags 2.4.2",
+ "log",
+ "polling 3.3.2",
+ "rustix 0.38.32",
+ "slab",
+ "thiserror",
+]
+
+[[package]]
+name = "calloop-wayland-source"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
+dependencies = [
+ "calloop",
+ "rustix 0.38.32",
+ "wayland-backend",
+ "wayland-client",
+]
+
+[[package]]
+name = "cap-fs-ext"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "769f8cd02eb04d57f14e2e371ebb533f96817f9b2525d73a5c72b61ca7973747"
+dependencies = [
+ "cap-primitives",
+ "cap-std",
+ "io-lifetimes 2.0.3",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "cap-net-ext"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ff6d3fb274292a9af283417e383afe6ded1fe66f6472d2c781216d3d80c218"
+dependencies = [
+ "cap-primitives",
+ "cap-std",
+ "rustix 0.38.32",
+ "smallvec",
+]
+
+[[package]]
+name = "cap-primitives"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90a0b44fc796b1a84535a63753d50ba3972c4db55c7255c186f79140e63d56d0"
+dependencies = [
+ "ambient-authority",
+ "fs-set-times",
+ "io-extras",
+ "io-lifetimes 2.0.3",
+ "ipnet",
+ "maybe-owned",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+ "winx",
+]
+
+[[package]]
+name = "cap-rand"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4327f08daac33a99bb03c54ae18c8f32c3ba31c728a33ddf683c6c6a5043de68"
+dependencies = [
+ "ambient-authority",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "cap-std"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "266626ce180cf9709f317d0bf9754e3a5006359d87f4bf792f06c9c5f1b63c0f"
+dependencies = [
+ "cap-primitives",
+ "io-extras",
+ "io-lifetimes 2.0.3",
+ "rustix 0.38.32",
+]
+
+[[package]]
+name = "cap-time-ext"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1353421ba83c19da60726e35db0a89abef984b3be183ff6f58c5b8084fcd0c5"
+dependencies = [
+ "ambient-authority",
+ "cap-primitives",
+ "iana-time-zone",
+ "once_cell",
+ "rustix 0.38.32",
+ "winx",
+]
+
+[[package]]
+name = "castaway"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
+
+[[package]]
+name = "cbc"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
+dependencies = [
+ "cipher 0.4.4",
+]
+
+[[package]]
+name = "cbindgen"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49"
+dependencies = [
+ "clap 3.2.25",
+ "heck 0.4.1",
+ "indexmap 1.9.3",
+ "log",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_json",
+ "syn 1.0.109",
+ "tempfile",
+ "toml 0.5.11",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+dependencies = [
+ "jobserver",
+ "libc",
+]
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cexpr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "channel"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "clock",
+ "collections",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "log",
+ "rand 0.8.5",
+ "release_channel",
+ "rpc",
+ "settings",
+ "sum_tree",
+ "text",
+ "time",
+ "util",
+]
+
+[[package]]
+name = "chrono"
+version = "0.4.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "chunked_transfer"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cca491388666e04d7248af3f60f0c40cfb0991c72205595d7c396e3510207d1a"
+
+[[package]]
+name = "cipher"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+ "zeroize",
+]
+
+[[package]]
+name = "clang-sys"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
+dependencies = [
+ "glob",
+ "libc",
+ "libloading 0.7.4",
+]
+
+[[package]]
+name = "clap"
+version = "3.2.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
+dependencies = [
+ "atty",
+ "bitflags 1.3.2",
+ "clap_lex 0.2.4",
+ "indexmap 1.9.3",
+ "strsim",
+ "termcolor",
+ "textwrap",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1d7b8d5ec32af0fadc644bf1fd509a688c2103b185644bb1e29d164e0703136"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5179bb514e4d7c2051749d8fcefa2ed6d06a9f4e6d69faf3805f5d80b8cf8d56"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex 0.5.1",
+ "strsim",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
+
+[[package]]
+name = "cli"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clap 4.4.4",
+ "core-foundation",
+ "core-services",
+ "ipc-channel",
+ "plist",
+ "serde",
+ "util",
+]
+
+[[package]]
+name = "clickhouse"
+version = "0.11.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0875e527e299fc5f4faba42870bf199a39ab0bb2dbba1b8aef0a2151451130f"
+dependencies = [
+ "bstr",
+ "bytes 1.5.0",
+ "clickhouse-derive",
+ "clickhouse-rs-cityhash-sys",
+ "futures 0.3.28",
+ "hyper",
+ "hyper-tls",
+ "lz4",
+ "sealed",
+ "serde",
+ "static_assertions",
+ "thiserror",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "clickhouse-derive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18af5425854858c507eec70f7deb4d5d8cec4216fcb086283a78872387281ea5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_derive_internals",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "clickhouse-rs-cityhash-sys"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4baf9d4700a28d6cb600e17ed6ae2b43298a5245f1f76b4eab63027ebfd592b9"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "client"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-recursion 0.3.2",
+ "async-tungstenite",
+ "chrono",
+ "clock",
+ "collections",
+ "feature_flags",
+ "futures 0.3.28",
+ "gpui",
+ "lazy_static",
+ "log",
+ "once_cell",
+ "parking_lot",
+ "postage",
+ "rand 0.8.5",
+ "release_channel",
+ "rpc",
+ "schemars",
+ "serde",
+ "serde_json",
+ "settings",
+ "sha2 0.10.7",
+ "smol",
+ "sysinfo",
+ "telemetry_events",
+ "tempfile",
+ "text",
+ "thiserror",
+ "time",
+ "tiny_http",
+ "url",
+ "util",
+]
+
+[[package]]
+name = "clipboard-win"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fdf5e01086b6be750428ba4a40619f847eb2e95756eee84b18e06e5f0b50342"
+dependencies = [
+ "lazy-bytes-cast",
+ "winapi",
+]
+
+[[package]]
+name = "clock"
+version = "0.1.0"
+dependencies = [
+ "chrono",
+ "parking_lot",
+ "smallvec",
+]
+
+[[package]]
+name = "cmake"
+version = "0.1.50"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "cocoa"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "cocoa-foundation",
+ "core-foundation",
+ "core-graphics",
+ "foreign-types 0.5.0",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "cocoa-foundation"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "core-foundation",
+ "core-graphics-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "codespan-reporting"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+dependencies = [
+ "termcolor",
+ "unicode-width",
+]
+
+[[package]]
+name = "collab"
+version = "0.44.0"
+dependencies = [
+ "anthropic",
+ "anyhow",
+ "async-trait",
+ "async-tungstenite",
+ "audio",
+ "aws-config",
+ "aws-sdk-s3",
+ "axum",
+ "axum-extra",
+ "base64 0.13.1",
+ "call",
+ "channel",
+ "chrono",
+ "clickhouse",
+ "client",
+ "clock",
+ "collab_ui",
+ "collections",
+ "ctor",
+ "dashmap",
+ "editor",
+ "env_logger",
+ "envy",
+ "file_finder",
+ "fs",
+ "futures 0.3.28",
+ "git",
+ "google_ai",
+ "gpui",
+ "hex",
+ "indoc",
+ "language",
+ "live_kit_client",
+ "live_kit_server",
+ "log",
+ "lsp",
+ "menu",
+ "nanoid",
+ "node_runtime",
+ "notifications",
+ "open_ai",
+ "parking_lot",
+ "pretty_assertions",
+ "project",
+ "prometheus",
+ "prost",
+ "rand 0.8.5",
+ "release_channel",
+ "reqwest",
+ "rpc",
+ "rustc-demangle",
+ "scrypt",
+ "sea-orm",
+ "semantic_version",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "settings",
+ "sha2 0.10.7",
+ "sqlx",
+ "subtle",
+ "telemetry_events",
+ "text",
+ "theme",
+ "time",
+ "tokio",
+ "toml 0.8.10",
+ "tower",
+ "tower-http 0.4.4",
+ "tracing",
+ "tracing-subscriber",
+ "unindent",
+ "util",
+ "uuid",
+ "workspace",
+]
+
+[[package]]
+name = "collab_ui"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "auto_update",
+ "call",
+ "channel",
+ "client",
+ "clock",
+ "collections",
+ "db",
+ "editor",
+ "emojis",
+ "extensions_ui",
+ "futures 0.3.28",
+ "fuzzy",
+ "gpui",
+ "language",
+ "lazy_static",
+ "menu",
+ "notifications",
+ "parking_lot",
+ "picker",
+ "pretty_assertions",
+ "project",
+ "recent_projects",
+ "rich_text",
+ "rpc",
+ "schemars",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "settings",
+ "smallvec",
+ "story",
+ "theme",
+ "theme_selector",
+ "time",
+ "time_format",
+ "tree-sitter-markdown",
+ "ui",
+ "util",
+ "vcs_menu",
+ "workspace",
+ "zed_actions",
+]
+
+[[package]]
+name = "collections"
+version = "0.1.0"
+dependencies = [
+ "rustc-hash",
+]
+
+[[package]]
+name = "color"
+version = "0.1.0"
+dependencies = [
+ "palette",
+]
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes 1.5.0",
+ "memchr",
+]
+
+[[package]]
+name = "command_palette"
+version = "0.1.0"
+dependencies = [
+ "client",
+ "collections",
+ "command_palette_hooks",
+ "ctor",
+ "editor",
+ "env_logger",
+ "fuzzy",
+ "go_to_line",
+ "gpui",
+ "language",
+ "menu",
+ "picker",
+ "postage",
+ "project",
+ "serde",
+ "serde_json",
+ "settings",
+ "theme",
+ "ui",
+ "util",
+ "workspace",
+ "zed_actions",
+]
+
+[[package]]
+name = "command_palette_hooks"
+version = "0.1.0"
+dependencies = [
+ "collections",
+ "derive_more",
+ "gpui",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "console"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "unicode-width",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "const-cstr"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3d0b5ff30645a68f35ece8cea4556ca14ef8a1651455f789a099a0513532a6"
+
+[[package]]
+name = "const-oid"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
+
+[[package]]
+name = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "copilot"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-compression",
+ "async-std",
+ "async-tar",
+ "clock",
+ "collections",
+ "command_palette_hooks",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "lsp",
+ "node_runtime",
+ "parking_lot",
+ "rpc",
+ "serde",
+ "settings",
+ "smol",
+ "util",
+]
+
+[[package]]
+name = "copilot_ui"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "copilot",
+ "editor",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "indoc",
+ "language",
+ "lsp",
+ "menu",
+ "project",
+ "serde_json",
+ "settings",
+ "theme",
+ "ui",
+ "util",
+ "workspace",
+ "zed_actions",
+]
+
+[[package]]
+name = "copypasta"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deb85422867ca93da58b7f95fb5c0c10f6183ed6e1ef8841568968a896d3a858"
+dependencies = [
+ "clipboard-win",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "smithay-clipboard",
+ "x11-clipboard",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys 0.8.6",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "core-graphics"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types 0.5.0",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "libc",
+]
+
+[[package]]
+name = "core-services"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92567e81db522550ebaf742c5d875624ec7820c2c7ee5f8c60e4ce7c2ae3c0fd"
+dependencies = [
+ "core-foundation",
+]
+
+[[package]]
+name = "core-text"
+version = "20.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9d2790b5c08465d49f8dc05c8bcae9fea467855947db39b0f8145c091aaced5"
+dependencies = [
+ "core-foundation",
+ "core-graphics",
+ "foreign-types 0.5.0",
+ "libc",
+]
+
+[[package]]
+name = "coreaudio-rs"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb17e2d1795b1996419648915df94bc7103c28f7b48062d7acf4652fc371b2ff"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation-sys 0.6.2",
+ "coreaudio-sys",
+]
+
+[[package]]
+name = "coreaudio-sys"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f034b2258e6c4ade2f73bf87b21047567fb913ee9550837c2316d139b0262b24"
+dependencies = [
+ "bindgen 0.64.0",
+]
+
+[[package]]
+name = "cosmic-text"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c578f2b9abb4d5f3fbb12aba4008084d435dc6a8425c195cfe0b3594bfea0c25"
+dependencies = [
+ "bitflags 2.4.2",
+ "fontdb 0.16.2",
+ "libm",
+ "log",
+ "rangemap",
+ "rustc-hash",
+ "rustybuzz 0.12.1",
+ "self_cell",
+ "swash",
+ "sys-locale",
+ "ttf-parser 0.20.0",
+ "unicode-bidi",
+ "unicode-linebreak",
+ "unicode-script",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "cpal"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d959d90e938c5493000514b446987c07aed46c668faaa7d34d6c7a67b1a578c"
+dependencies = [
+ "alsa",
+ "core-foundation-sys 0.8.6",
+ "coreaudio-rs",
+ "dasp_sample",
+ "jni 0.19.0",
+ "js-sys",
+ "libc",
+ "mach2",
+ "ndk",
+ "ndk-context",
+ "oboe",
+ "once_cell",
+ "parking_lot",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows 0.46.0",
+]
+
+[[package]]
+name = "cpp_demangle"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e8227005286ec39567949b33df9896bcadfa6051bccca2488129f108ca23119"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "cranelift-bforest"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a535eb1cf5a6003197dc569320c40c1cb2d2f97ef5d5348eebf067f20957381"
+dependencies = [
+ "cranelift-entity",
+]
+
+[[package]]
+name = "cranelift-codegen"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11b5066db32cec1492573827183af2142d2d88fe85a83cfc9e73f0f63d3788d4"
+dependencies = [
+ "bumpalo",
+ "cranelift-bforest",
+ "cranelift-codegen-meta",
+ "cranelift-codegen-shared",
+ "cranelift-control",
+ "cranelift-entity",
+ "cranelift-isle",
+ "gimli",
+ "hashbrown 0.14.0",
+ "log",
+ "regalloc2",
+ "smallvec",
+ "target-lexicon",
+]
+
+[[package]]
+name = "cranelift-codegen-meta"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64942e5774308e835fbad4dd25f253105412c90324631910e1ec27963147bddb"
+dependencies = [
+ "cranelift-codegen-shared",
+]
+
+[[package]]
+name = "cranelift-codegen-shared"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c39c33db9a86dd6d8d04166a10c53deb477aeea3500eaaefca682e4eda9bb986"
+
+[[package]]
+name = "cranelift-control"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b7fc4937613aea3156a0538800a17bf56f345a5da2e79ae3df58488c93d867f"
+dependencies = [
+ "arbitrary",
+]
+
+[[package]]
+name = "cranelift-entity"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f85575e79a153ce1ddbfb7fe1813519b4bfe1eb200cc9c8353b45ad123ae4d36"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "cranelift-frontend"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbc31d6c0ab2249fe0c21e988256b42f5f401ab2673b4fc40076c82a698bdfb9"
+dependencies = [
+ "cranelift-codegen",
+ "log",
+ "smallvec",
+ "target-lexicon",
+]
+
+[[package]]
+name = "cranelift-isle"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc14f37e3314c0e4c53779c2f46753bf242efff76ee9473757a1fff3b495ad37"
+
+[[package]]
+name = "cranelift-native"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ea5375f76ab31f9800a23fb2b440810286a6f669a3eb467cdd7ff255ea64268"
+dependencies = [
+ "cranelift-codegen",
+ "libc",
+ "target-lexicon",
+]
+
+[[package]]
+name = "cranelift-wasm"
+version = "0.106.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79851dba01b1fa83fad95134aa27beca88dc4b027121d92ab19788582389dc5f"
+dependencies = [
+ "cranelift-codegen",
+ "cranelift-entity",
+ "cranelift-frontend",
+ "itertools 0.12.1",
+ "log",
+ "smallvec",
+ "wasmparser",
+ "wasmtime-types",
+]
+
+[[package]]
+name = "crc"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe"
+dependencies = [
+ "crc-catalog",
+]
+
+[[package]]
+name = "crc-catalog"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484"
+
+[[package]]
+name = "crc32c"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89254598aa9b9fa608de44b3ae54c810f0f06d755e24c50177f1f8f31ff50ce2"
+dependencies = [
+ "rustc_version",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-queue"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crypto-bigint"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
+dependencies = [
+ "generic-array",
+ "rand_core 0.6.4",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "crypto-bigint"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
+dependencies = [
+ "rand_core 0.6.4",
+ "subtle",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "rand_core 0.6.4",
+ "typenum",
+]
+
+[[package]]
+name = "crypto-mac"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e"
+dependencies = [
+ "generic-array",
+ "subtle",
+]
+
+[[package]]
+name = "ctor"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e"
+dependencies = [
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "ctrlc"
+version = "3.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b467862cc8610ca6fc9a1532d7777cee0804e678ab45410897b9396495994a0b"
+dependencies = [
+ "nix 0.27.1",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "curl"
+version = "0.4.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
+dependencies = [
+ "curl-sys",
+ "libc",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "socket2 0.4.9",
+ "winapi",
+]
+
+[[package]]
+name = "curl-sys"
+version = "0.4.67+curl-8.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cc35d066510b197a0f72de863736641539957628c8a42e70e27c66849e77c34"
+dependencies = [
+ "cc",
+ "libc",
+ "libz-sys",
+ "openssl-sys",
+ "pkg-config",
+ "vcpkg",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "cursor-icon"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
+
+[[package]]
+name = "dashmap"
+version = "5.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+dependencies = [
+ "cfg-if",
+ "hashbrown 0.14.0",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "dasp_sample"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"
+
+[[package]]
+name = "data-encoding"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
+
+[[package]]
+name = "data-url"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193"
+dependencies = [
+ "matches",
+]
+
+[[package]]
+name = "db"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "gpui",
+ "indoc",
+ "lazy_static",
+ "log",
+ "release_channel",
+ "smol",
+ "sqlez",
+ "sqlez_macros",
+ "tempfile",
+ "util",
+]
+
+[[package]]
+name = "deflate"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174"
+dependencies = [
+ "adler32",
+ "byteorder",
+]
+
+[[package]]
+name = "der"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
+dependencies = [
+ "const-oid",
+ "zeroize",
+]
+
+[[package]]
+name = "der"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
+dependencies = [
+ "const-oid",
+ "pem-rfc7468",
+ "zeroize",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "derivative"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+dependencies = [
+ "convert_case 0.4.0",
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "derive_refineable"
+version = "0.1.0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "diagnostics"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "collections",
+ "editor",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "log",
+ "lsp",
+ "project",
+ "schemars",
+ "serde",
+ "serde_json",
+ "settings",
+ "theme",
+ "ui",
+ "unindent",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "dialoguer"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
+dependencies = [
+ "console",
+ "fuzzy-matcher",
+ "shell-words",
+ "tempfile",
+ "thiserror",
+ "zeroize",
+]
+
+[[package]]
+name = "diff"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+
+[[package]]
+name = "digest"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer 0.10.4",
+ "const-oid",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "dirs"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-next"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "dlib"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+dependencies = [
+ "libloading 0.8.0",
+]
+
+[[package]]
+name = "dotenvy"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
+
+[[package]]
+name = "downcast-rs"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
+
+[[package]]
+name = "dwrote"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "winapi",
+ "wio",
+]
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd"
+
+[[package]]
+name = "ecdsa"
+version = "0.14.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c"
+dependencies = [
+ "der 0.6.1",
+ "elliptic-curve",
+ "rfc6979",
+ "signature 1.6.4",
+]
+
+[[package]]
+name = "editor"
+version = "0.1.0"
+dependencies = [
+ "aho-corasick",
+ "anyhow",
+ "client",
+ "clock",
+ "collections",
+ "convert_case 0.6.0",
+ "ctor",
+ "db",
+ "emojis",
+ "env_logger",
+ "futures 0.3.28",
+ "fuzzy",
+ "git",
+ "gpui",
+ "indoc",
+ "itertools 0.11.0",
+ "language",
+ "lazy_static",
+ "linkify",
+ "log",
+ "lsp",
+ "multi_buffer",
+ "ordered-float 2.10.0",
+ "parking_lot",
+ "project",
+ "rand 0.8.5",
+ "release_channel",
+ "rpc",
+ "schemars",
+ "serde",
+ "serde_json",
+ "settings",
+ "smallvec",
+ "smol",
+ "snippet",
+ "sum_tree",
+ "text",
+ "theme",
+ "time",
+ "time_format",
+ "tree-sitter-html",
+ "tree-sitter-rust",
+ "tree-sitter-typescript",
+ "ui",
+ "unindent",
+ "url",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "either"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "elliptic-curve"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
+dependencies = [
+ "base16ct",
+ "crypto-bigint 0.4.9",
+ "der 0.6.1",
+ "digest 0.10.7",
+ "ff",
+ "generic-array",
+ "group",
+ "pkcs8 0.9.0",
+ "rand_core 0.6.4",
+ "sec1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "embed-manifest"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41cd446c890d6bed1d8b53acef5f240069ebef91d6fae7c5f52efe61fe8b5eae"
+
+[[package]]
+name = "emojis"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ee61eb945bff65ee7d19d157d39c67c33290ff0742907413fd5eefd29edc979"
+dependencies = [
+ "phf",
+]
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "endi"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
+
+[[package]]
+name = "enumflags2"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d"
+dependencies = [
+ "enumflags2_derive",
+ "serde",
+]
+
+[[package]]
+name = "enumflags2_derive"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7"
+dependencies = [
+ "atty",
+ "humantime",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "envy"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "erased-serde"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "errno"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "etagere"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcf22f748754352918e082e0039335ee92454a5d62bcaf69b5e8daf5907d9644"
+dependencies = [
+ "euclid",
+ "svg_fmt",
+]
+
+[[package]]
+name = "etcetera"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943"
+dependencies = [
+ "cfg-if",
+ "home",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "euclid"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
+dependencies = [
+ "event-listener 4.0.3",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+dependencies = [
+ "event-listener 5.1.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "extension"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-compression",
+ "async-tar",
+ "async-trait",
+ "cap-std",
+ "client",
+ "collections",
+ "ctor",
+ "env_logger",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "isahc",
+ "language",
+ "log",
+ "lsp",
+ "node_runtime",
+ "parking_lot",
+ "project",
+ "schemars",
+ "semantic_version",
+ "serde",
+ "serde_json",
+ "serde_json_lenient",
+ "settings",
+ "task",
+ "theme",
+ "toml 0.8.10",
+ "url",
+ "util",
+ "wasm-encoder",
+ "wasmparser",
+ "wasmtime",
+ "wasmtime-wasi",
+ "wit-component",
+]
+
+[[package]]
+name = "extension_cli"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clap 4.4.4",
+ "env_logger",
+ "extension",
+ "fs",
+ "language",
+ "log",
+ "rpc",
+ "serde",
+ "serde_json",
+ "theme",
+ "tokio",
+ "toml 0.8.10",
+ "tree-sitter",
+ "wasmtime",
+]
+
+[[package]]
+name = "extensions_ui"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "db",
+ "editor",
+ "extension",
+ "fs",
+ "fuzzy",
+ "gpui",
+ "language",
+ "picker",
+ "project",
+ "semantic_version",
+ "serde",
+ "settings",
+ "smallvec",
+ "theme",
+ "theme_selector",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "fallible-iterator"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
+
+[[package]]
+name = "fancy-regex"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"
+dependencies = [
+ "bit-set",
+ "regex",
+]
+
+[[package]]
+name = "fast-srgb8"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
+
+[[package]]
+name = "fastrand"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
+
+[[package]]
+name = "fd-lock"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947"
+dependencies = [
+ "cfg-if",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "feature_flags"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+]
+
+[[package]]
+name = "feedback"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "bitflags 2.4.2",
+ "client",
+ "db",
+ "editor",
+ "futures 0.3.28",
+ "gpui",
+ "human_bytes",
+ "isahc",
+ "language",
+ "log",
+ "menu",
+ "project",
+ "regex",
+ "release_channel",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "smol",
+ "sysinfo",
+ "ui",
+ "urlencoding",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "ff"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
+dependencies = [
+ "rand_core 0.6.4",
+ "subtle",
+]
+
+[[package]]
+name = "file_finder"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "ctor",
+ "editor",
+ "env_logger",
+ "fuzzy",
+ "gpui",
+ "itertools 0.11.0",
+ "language",
+ "menu",
+ "picker",
+ "project",
+ "serde_json",
+ "text",
+ "theme",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "file_icons"
+version = "0.1.0"
+dependencies = [
+ "collections",
+ "gpui",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "util",
+]
+
+[[package]]
+name = "filetime"
+version = "0.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.3.5",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "finl_unicode"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6"
+
+[[package]]
+name = "fixedbitset"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+
+[[package]]
+name = "flate2"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide 0.7.1",
+]
+
+[[package]]
+name = "float-cmp"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75224bec9bfe1a65e2d34132933f2de7fe79900c96a0174307554244ece8150e"
+
+[[package]]
+name = "float-ord"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bad48618fdb549078c333a7a8528acb57af271d0433bdecd523eb620628364e"
+
+[[package]]
+name = "flume"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+ "nanorand",
+ "spin 0.9.8",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "font-kit"
+version = "0.11.0"
+source = "git+https://github.com/zed-industries/font-kit?rev=5a5c4d4#5a5c4d4ca395c74eb0abde38508e170ce0fd761a"
+dependencies = [
+ "bitflags 1.3.2",
+ "byteorder",
+ "core-foundation",
+ "core-graphics",
+ "core-text",
+ "dirs-next",
+ "dwrote",
+ "float-ord",
+ "freetype",
+ "lazy_static",
+ "libc",
+ "log",
+ "pathfinder_geometry",
+ "pathfinder_simd",
+ "walkdir",
+ "winapi",
+ "yeslogic-fontconfig-sys",
+]
+
+[[package]]
+name = "font-types"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bd7f3ea17572640b606b35df42cfb6ecdf003704b062580e59918692190b73d"
+
+[[package]]
+name = "fontconfig-parser"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d"
+dependencies = [
+ "roxmltree 0.19.0",
+]
+
+[[package]]
+name = "fontdb"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e58903f4f8d5b58c7d300908e4ebe5289c1bfdf5587964330f12023b8ff17fd1"
+dependencies = [
+ "log",
+ "memmap2 0.2.3",
+ "ttf-parser 0.12.3",
+]
+
+[[package]]
+name = "fontdb"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3"
+dependencies = [
+ "fontconfig-parser",
+ "log",
+ "memmap2 0.9.4",
+ "slotmap",
+ "tinyvec",
+ "ttf-parser 0.20.0",
+]
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared 0.1.1",
+]
+
+[[package]]
+name = "foreign-types"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
+dependencies = [
+ "foreign-types-macros",
+ "foreign-types-shared 0.3.1",
+]
+
+[[package]]
+name = "foreign-types-macros"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
+
+[[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 = "freetype"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6"
+dependencies = [
+ "freetype-sys",
+ "libc",
+]
+
+[[package]]
+name = "freetype-sys"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a"
+dependencies = [
+ "cmake",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "fs"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-tar",
+ "async-trait",
+ "collections",
+ "fsevent",
+ "futures 0.3.28",
+ "git",
+ "git2",
+ "gpui",
+ "lazy_static",
+ "libc",
+ "log",
+ "notify",
+ "parking_lot",
+ "rope",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "smol",
+ "sum_tree",
+ "tempfile",
+ "text",
+ "time",
+ "util",
+ "windows 0.53.0",
+]
+
+[[package]]
+name = "fs-set-times"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "033b337d725b97690d86893f9de22b67b80dcc4e9ad815f348254c38119db8fb"
+dependencies = [
+ "io-lifetimes 2.0.3",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "fsevent"
+version = "0.1.0"
+dependencies = [
+ "bitflags 2.4.2",
+ "fsevent-sys 3.1.0",
+ "parking_lot",
+ "tempfile",
+]
+
+[[package]]
+name = "fsevent-sys"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca6f5e6817058771c10f0eb0f05ddf1e35844266f972004fe8e4b21fda295bd5"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "fsevent-sys"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+
+[[package]]
+name = "futf"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
+dependencies = [
+ "mac",
+ "new_debug_unreachable",
+]
+
+[[package]]
+name = "futures"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678"
+
+[[package]]
+name = "futures"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-intrusive"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f"
+dependencies = [
+ "futures-core",
+ "lock_api",
+ "parking_lot",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+dependencies = [
+ "fastrand 1.9.0",
+ "futures-core",
+ "futures-io",
+ "memchr",
+ "parking",
+ "pin-project-lite",
+ "waker-fn",
+]
+
+[[package]]
+name = "futures-lite"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba"
+dependencies = [
+ "fastrand 2.0.0",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures 0.1.31",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+ "tokio-io",
+]
+
+[[package]]
+name = "fuzzy"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+ "util",
+]
+
+[[package]]
+name = "fuzzy-matcher"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94"
+dependencies = [
+ "thread_local",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "gethostname"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
+dependencies = [
+ "libc",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gif"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06"
+dependencies = [
+ "color_quant",
+ "weezl",
+]
+
+[[package]]
+name = "gimli"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+dependencies = [
+ "fallible-iterator",
+ "indexmap 2.0.0",
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "git"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clock",
+ "collections",
+ "git2",
+ "lazy_static",
+ "log",
+ "pretty_assertions",
+ "serde",
+ "serde_json",
+ "smol",
+ "sum_tree",
+ "text",
+ "time",
+ "unindent",
+ "url",
+]
+
+[[package]]
+name = "git2"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+ "libgit2-sys",
+ "log",
+ "url",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "globset"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "log",
+ "regex-automata 0.4.5",
+ "regex-syntax 0.8.2",
+]
+
+[[package]]
+name = "gloo-timers"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "glow"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1"
+dependencies = [
+ "js-sys",
+ "slotmap",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "go_to_line"
+version = "0.1.0"
+dependencies = [
+ "editor",
+ "gpui",
+ "indoc",
+ "language",
+ "menu",
+ "project",
+ "rope",
+ "serde_json",
+ "text",
+ "theme",
+ "tree-sitter-rust",
+ "tree-sitter-typescript",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "google_ai"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "futures 0.3.28",
+ "serde",
+ "serde_json",
+ "util",
+]
+
+[[package]]
+name = "gpu-alloc"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
+dependencies = [
+ "bitflags 2.4.2",
+ "gpu-alloc-types",
+]
+
+[[package]]
+name = "gpu-alloc-ash"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2424bc9be88170e1a56e57c25d3d0e2dfdd22e8f328e892786aeb4da1415732"
+dependencies = [
+ "ash",
+ "gpu-alloc-types",
+ "tinyvec",
+]
+
+[[package]]
+name = "gpu-alloc-types"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
+dependencies = [
+ "bitflags 2.4.2",
+]
+
+[[package]]
+name = "gpui"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "as-raw-xcb-connection",
+ "ashpd",
+ "async-task",
+ "backtrace",
+ "bindgen 0.65.1",
+ "blade-graphics",
+ "blade-macros",
+ "block",
+ "bytemuck",
+ "calloop",
+ "calloop-wayland-source",
+ "cbindgen",
+ "cocoa",
+ "collections",
+ "copypasta",
+ "core-foundation",
+ "core-graphics",
+ "core-text",
+ "cosmic-text",
+ "ctor",
+ "derive_more",
+ "env_logger",
+ "etagere",
+ "flume",
+ "font-kit",
+ "foreign-types 0.5.0",
+ "futures 0.3.28",
+ "gpui_macros",
+ "image",
+ "itertools 0.11.0",
+ "lazy_static",
+ "linkme",
+ "log",
+ "media",
+ "metal",
+ "num_cpus",
+ "objc",
+ "oo7",
+ "open",
+ "parking",
+ "parking_lot",
+ "pathfinder_geometry",
+ "postage",
+ "profiling",
+ "rand 0.8.5",
+ "raw-window-handle 0.5.2",
+ "raw-window-handle 0.6.0",
+ "refineable",
+ "resvg",
+ "schemars",
+ "seahash",
+ "semantic_version",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "slotmap",
+ "smallvec",
+ "smol",
+ "sum_tree",
+ "taffy",
+ "thiserror",
+ "time",
+ "tiny-skia",
+ "usvg",
+ "util",
+ "uuid",
+ "waker-fn",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-cursor",
+ "wayland-protocols",
+ "windows 0.53.0",
+ "x11rb",
+ "xkbcommon",
+]
+
+[[package]]
+name = "gpui_macros"
+version = "0.1.0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "grid"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1df00eed8d1f0db937f6be10e46e8072b0671accb504cf0f959c5c52c679f5b9"
+
+[[package]]
+name = "group"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
+dependencies = [
+ "ff",
+ "rand_core 0.6.4",
+ "subtle",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"
+dependencies = [
+ "bytes 1.5.0",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 0.2.9",
+ "indexmap 1.9.3",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+dependencies = [
+ "ahash 0.7.8",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
+dependencies = [
+ "ahash 0.8.8",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+dependencies = [
+ "ahash 0.8.8",
+ "allocator-api2",
+]
+
+[[package]]
+name = "hashlink"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
+dependencies = [
+ "hashbrown 0.14.0",
+]
+
+[[package]]
+name = "headers"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
+dependencies = [
+ "base64 0.21.4",
+ "bytes 1.5.0",
+ "headers-core",
+ "http 0.2.9",
+ "httpdate",
+ "mime",
+ "sha1",
+]
+
+[[package]]
+name = "headers-core"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
+dependencies = [
+ "http 0.2.9",
+]
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hexf-parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
+
+[[package]]
+name = "hidden-trait"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68ed9e850438ac849bec07e7d09fbe9309cbd396a5988c30b010580ce08860df"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "hkdf"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
+dependencies = [
+ "hmac 0.12.1",
+]
+
+[[package]]
+name = "hmac"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
+dependencies = [
+ "crypto-mac",
+ "digest 0.9.0",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "hound"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d13cdbd5dbb29f9c88095bbdc2590c9cba0d0a1269b983fef6b2cdd7e9f4db1"
+
+[[package]]
+name = "http"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+dependencies = [
+ "bytes 1.5.0",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea"
+dependencies = [
+ "bytes 1.5.0",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+dependencies = [
+ "bytes 1.5.0",
+ "http 0.2.9",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-range-header"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "human_bytes"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91f255a4535024abf7640cb288260811fc14794f62b063652ed349f9a6c2348e"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "hyper"
+version = "0.14.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
+dependencies = [
+ "bytes 1.5.0",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.9",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2 0.4.9",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+dependencies = [
+ "futures-util",
+ "http 0.2.9",
+ "hyper",
+ "log",
+ "rustls",
+ "rustls-native-certs",
+ "tokio",
+ "tokio-rustls",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes 1.5.0",
+ "hyper",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.57"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys 0.8.6",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows 0.48.0",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "id-arena"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005"
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "ignore"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
+dependencies = [
+ "crossbeam-deque",
+ "globset",
+ "log",
+ "memchr",
+ "regex-automata 0.4.5",
+ "same-file",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "image"
+version = "0.23.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "gif",
+ "jpeg-decoder",
+ "num-iter",
+ "num-rational 0.3.2",
+ "num-traits",
+ "png",
+ "scoped_threadpool",
+ "tiff",
+]
+
+[[package]]
+name = "image_viewer"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "db",
+ "gpui",
+ "project",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.0",
+ "serde",
+]
+
+[[package]]
+name = "indoc"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
+
+[[package]]
+name = "inherent"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce243b1bfa62ffc028f1cc3b6034ec63d649f3031bc8a4fbbb004e1ac17d1f68"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "inotify"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
+dependencies = [
+ "bitflags 1.3.2",
+ "inotify-sys",
+ "libc",
+]
+
+[[package]]
+name = "inotify-sys"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "block-padding",
+ "generic-array",
+]
+
+[[package]]
+name = "install_cli"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "gpui",
+ "smol",
+ "util",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "io-extras"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c301e73fb90e8a29e600a9f402d095765f74310d582916a952f618836a1bd1ed"
+dependencies = [
+ "io-lifetimes 2.0.3",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+dependencies = [
+ "hermit-abi 0.3.3",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "2.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c"
+
+[[package]]
+name = "iovec"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "ipc-channel"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ab3a34c91b7e84a72643bd75d1bac3afd241f78f9859fe0b5e5b2a6a75732c2"
+dependencies = [
+ "bincode",
+ "crossbeam-channel",
+ "fnv",
+ "lazy_static",
+ "libc",
+ "mio",
+ "rand 0.8.5",
+ "serde",
+ "tempfile",
+ "uuid",
+ "windows 0.48.0",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
+
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
+[[package]]
+name = "isahc"
+version = "1.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9"
+dependencies = [
+ "async-channel 1.9.0",
+ "castaway",
+ "crossbeam-utils",
+ "curl",
+ "curl-sys",
+ "encoding_rs",
+ "event-listener 2.5.3",
+ "futures-lite 1.13.0",
+ "http 0.2.9",
+ "log",
+ "mime",
+ "once_cell",
+ "polling 2.8.0",
+ "slab",
+ "sluice",
+ "tracing",
+ "tracing-futures",
+ "url",
+ "waker-fn",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+
+[[package]]
+name = "jni"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec"
+dependencies = [
+ "cesu8",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "jni"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c"
+dependencies = [
+ "cesu8",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+
+[[package]]
+name = "jobserver"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "journal"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "chrono",
+ "editor",
+ "gpui",
+ "log",
+ "schemars",
+ "serde",
+ "settings",
+ "shellexpand",
+ "workspace",
+]
+
+[[package]]
+name = "jpeg-decoder"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2"
+dependencies = [
+ "rayon",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "jwt"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6204285f77fe7d9784db3fdc449ecce1a0114927a51d5a41c4c7a292011c015f"
+dependencies = [
+ "base64 0.13.1",
+ "crypto-common",
+ "digest 0.10.7",
+ "hmac 0.12.1",
+ "serde",
+ "serde_json",
+ "sha2 0.10.7",
+]
+
+[[package]]
+name = "khronos-egl"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1382b16c04aeb821453d6215a3c80ba78f24c6595c5aa85653378aabe0c83e3"
+dependencies = [
+ "libc",
+ "libloading 0.8.0",
+]
+
+[[package]]
+name = "kqueue"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
+dependencies = [
+ "kqueue-sys",
+ "libc",
+]
+
+[[package]]
+name = "kqueue-sys"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+]
+
+[[package]]
+name = "kurbo"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a53776d271cfb873b17c618af0298445c88afc52837f3e948fa3fafd131f449"
+dependencies = [
+ "arrayvec 0.7.4",
+]
+
+[[package]]
+name = "kv-log-macro"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "language"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "clock",
+ "collections",
+ "ctor",
+ "env_logger",
+ "futures 0.3.28",
+ "fuzzy",
+ "git",
+ "globset",
+ "gpui",
+ "indoc",
+ "lazy_static",
+ "log",
+ "lsp",
+ "parking_lot",
+ "postage",
+ "pulldown-cmark",
+ "rand 0.8.5",
+ "regex",
+ "rpc",
+ "schemars",
+ "serde",
+ "serde_json",
+ "settings",
+ "similar",
+ "smallvec",
+ "smol",
+ "sum_tree",
+ "task",
+ "text",
+ "theme",
+ "tree-sitter",
+ "tree-sitter-elixir",
+ "tree-sitter-embedded-template",
+ "tree-sitter-heex",
+ "tree-sitter-html",
+ "tree-sitter-json 0.20.0",
+ "tree-sitter-markdown",
+ "tree-sitter-ruby",
+ "tree-sitter-rust",
+ "tree-sitter-typescript",
+ "unicase",
+ "unindent",
+ "util",
+]
+
+[[package]]
+name = "language_selector"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "editor",
+ "fuzzy",
+ "gpui",
+ "language",
+ "picker",
+ "project",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "language_tools"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "collections",
+ "editor",
+ "env_logger",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "lsp",
+ "project",
+ "release_channel",
+ "serde_json",
+ "settings",
+ "theme",
+ "tree-sitter",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "languages"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-compression",
+ "async-tar",
+ "async-trait",
+ "collections",
+ "feature_flags",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "lazy_static",
+ "log",
+ "lsp",
+ "node_runtime",
+ "parking_lot",
+ "project",
+ "regex",
+ "rope",
+ "rust-embed",
+ "schemars",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "settings",
+ "shellexpand",
+ "smol",
+ "task",
+ "text",
+ "theme",
+ "toml 0.8.10",
+ "tree-sitter",
+ "tree-sitter-bash",
+ "tree-sitter-c",
+ "tree-sitter-cpp",
+ "tree-sitter-css",
+ "tree-sitter-dart",
+ "tree-sitter-elixir",
+ "tree-sitter-elm",
+ "tree-sitter-embedded-template",
+ "tree-sitter-glsl",
+ "tree-sitter-go",
+ "tree-sitter-gomod",
+ "tree-sitter-gowork",
+ "tree-sitter-hcl",
+ "tree-sitter-heex",
+ "tree-sitter-html",
+ "tree-sitter-jsdoc",
+ "tree-sitter-json 0.20.0",
+ "tree-sitter-lua",
+ "tree-sitter-markdown",
+ "tree-sitter-nix",
+ "tree-sitter-nu",
+ "tree-sitter-ocaml",
+ "tree-sitter-proto",
+ "tree-sitter-python",
+ "tree-sitter-racket",
+ "tree-sitter-regex",
+ "tree-sitter-ruby",
+ "tree-sitter-rust",
+ "tree-sitter-scheme",
+ "tree-sitter-typescript",
+ "tree-sitter-vue",
+ "tree-sitter-yaml",
+ "unindent",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "lazy-bytes-cast"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10257499f089cd156ad82d0a9cd57d9501fa2c989068992a97eb3c27836f206b"
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+dependencies = [
+ "spin 0.5.2",
+]
+
+[[package]]
+name = "lazycell"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+
+[[package]]
+name = "leb128"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "libgit2-sys"
+version = "0.14.2+1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4"
+dependencies = [
+ "cc",
+ "libc",
+ "libz-sys",
+ "pkg-config",
+]
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libloading"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "libm"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
+name = "libmimalloc-sys"
+version = "0.1.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "libsqlite3-sys"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326"
+dependencies = [
+ "cc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "libz-sys"
+version = "1.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "line-wrap"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
+dependencies = [
+ "safemem",
+]
+
+[[package]]
+name = "linkify"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1dfa36d52c581e9ec783a7ce2a5e0143da6237be5811a0b3153fedfdbe9f780"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "linkme"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ed2ee9464ff9707af8e9ad834cffa4802f072caad90639c583dd3c62e6e608"
+dependencies = [
+ "linkme-impl",
+]
+
+[[package]]
+name = "linkme-impl"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+
+[[package]]
+name = "live_kit_client"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-broadcast",
+ "async-trait",
+ "collections",
+ "core-foundation",
+ "futures 0.3.28",
+ "gpui",
+ "live_kit_server",
+ "log",
+ "media",
+ "nanoid",
+ "parking_lot",
+ "postage",
+ "serde",
+ "serde_json",
+ "sha2 0.10.7",
+ "simplelog",
+]
+
+[[package]]
+name = "live_kit_server"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "hmac 0.12.1",
+ "jwt",
+ "log",
+ "prost",
+ "prost-build",
+ "prost-types",
+ "reqwest",
+ "serde",
+ "sha2 0.10.7",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+dependencies = [
+ "serde",
+ "value-bag",
+]
+
+[[package]]
+name = "lsp"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-pipe",
+ "collections",
+ "ctor",
+ "env_logger",
+ "futures 0.3.28",
+ "gpui",
+ "log",
+ "lsp-types",
+ "parking_lot",
+ "postage",
+ "release_channel",
+ "serde",
+ "serde_json",
+ "smol",
+ "util",
+ "windows 0.53.0",
+]
+
+[[package]]
+name = "lsp-types"
+version = "0.94.1"
+source = "git+https://github.com/zed-industries/lsp-types?branch=updated-completion-list-item-defaults#90a040a1d195687bd19e1df47463320a44e93d7a"
+dependencies = [
+ "bitflags 1.3.2",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "url",
+]
+
+[[package]]
+name = "lz4"
+version = "1.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1"
+dependencies = [
+ "libc",
+ "lz4-sys",
+]
+
+[[package]]
+name = "lz4-sys"
+version = "1.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "mac"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+
+[[package]]
+name = "mach"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "mach2"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "markdown_preview"
+version = "0.1.0"
+dependencies = [
+ "async-recursion 1.0.5",
+ "editor",
+ "gpui",
+ "language",
+ "pretty_assertions",
+ "pulldown-cmark",
+ "theme",
+ "ui",
+ "workspace",
+]
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
+[[package]]
+name = "maybe-owned"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4"
+
+[[package]]
+name = "md-5"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "media"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "bindgen 0.65.1",
+ "core-foundation",
+ "foreign-types 0.5.0",
+ "metal",
+ "objc",
+]
+
+[[package]]
+name = "memchr"
+version = "2.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
+
+[[package]]
+name = "memfd"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64"
+dependencies = [
+ "rustix 0.38.32",
+]
+
+[[package]]
+name = "memmap2"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memmap2"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memmap2"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "menu"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+ "serde",
+]
+
+[[package]]
+name = "metal"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "550b24b0cd4cf923f36bae78eca457b3a10d8a6a14a9c84cb2687b527e6a84af"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "core-graphics-types",
+ "foreign-types 0.5.0",
+ "log",
+ "objc",
+ "paste",
+]
+
+[[package]]
+name = "mimalloc"
+version = "0.1.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c"
+dependencies = [
+ "libmimalloc-sys",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435"
+dependencies = [
+ "adler32",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
+dependencies = [
+ "adler",
+ "autocfg",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "mint"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff"
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "log",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "miow"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "multi_buffer"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clock",
+ "collections",
+ "futures 0.3.28",
+ "git",
+ "gpui",
+ "language",
+ "log",
+ "parking_lot",
+ "rand 0.8.5",
+ "settings",
+ "sum_tree",
+ "text",
+ "theme",
+ "util",
+]
+
+[[package]]
+name = "multimap"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
+
+[[package]]
+name = "naga"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e"
+dependencies = [
+ "bit-set",
+ "bitflags 2.4.2",
+ "codespan-reporting",
+ "hexf-parse",
+ "indexmap 2.0.0",
+ "log",
+ "num-traits",
+ "rustc-hash",
+ "spirv",
+ "termcolor",
+ "thiserror",
+ "unicode-xid",
+]
+
+[[package]]
+name = "nanoid"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8"
+dependencies = [
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "nanorand"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
+dependencies = [
+ "getrandom 0.2.10",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "ndk"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0"
+dependencies = [
+ "bitflags 1.3.2",
+ "jni-sys",
+ "ndk-sys",
+ "num_enum",
+ "raw-window-handle 0.5.2",
+ "thiserror",
+]
+
+[[package]]
+name = "ndk-context"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
+
+[[package]]
+name = "ndk-sys"
+version = "0.4.1+23.1.7779620"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3"
+dependencies = [
+ "jni-sys",
+]
+
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+
+[[package]]
+name = "nix"
+version = "0.24.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
+dependencies = [
+ "bitflags 1.3.2",
+ "cfg-if",
+ "libc",
+]
+
+[[package]]
+name = "nix"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+dependencies = [
+ "bitflags 2.4.2",
+ "cfg-if",
+ "libc",
+ "memoffset",
+]
+
+[[package]]
+name = "node_runtime"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-compression",
+ "async-tar",
+ "async-trait",
+ "futures 0.3.28",
+ "log",
+ "semver",
+ "serde",
+ "serde_json",
+ "smol",
+ "util",
+]
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "notifications"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "channel",
+ "client",
+ "collections",
+ "db",
+ "gpui",
+ "rpc",
+ "settings",
+ "sum_tree",
+ "time",
+ "util",
+]
+
+[[package]]
+name = "notify"
+version = "6.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
+dependencies = [
+ "bitflags 2.4.2",
+ "crossbeam-channel",
+ "filetime",
+ "fsevent-sys 4.1.0",
+ "inotify",
+ "kqueue",
+ "libc",
+ "log",
+ "mio",
+ "walkdir",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "ntapi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
+dependencies = [
+ "num-bigint",
+ "num-complex",
+ "num-integer",
+ "num-iter",
+ "num-rational 0.4.1",
+ "num-traits",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-bigint-dig"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9bc3e36fd683e004fd59c64a425e0e991616f5a8b617c3b9a933a93c168facc"
+dependencies = [
+ "byteorder",
+ "lazy_static",
+ "libm",
+ "num-integer",
+ "num-iter",
+ "num-traits",
+ "rand 0.8.5",
+ "smallvec",
+ "zeroize",
+]
+
+[[package]]
+name = "num-bigint-dig"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
+dependencies = [
+ "byteorder",
+ "lazy_static",
+ "libm",
+ "num-integer",
+ "num-iter",
+ "num-traits",
+ "rand 0.8.5",
+ "serde",
+ "smallvec",
+ "zeroize",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi 0.3.3",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
+dependencies = [
+ "proc-macro-crate 1.3.1",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "nvim-rs"
+version = "0.6.0-pre"
+source = "git+https://github.com/KillTheMule/nvim-rs?branch=master#0d2b1c884f3c39a76b5b7aac0b429f4624843954"
+dependencies = [
+ "async-trait",
+ "futures 0.3.28",
+ "log",
+ "parity-tokio-ipc",
+ "rmp",
+ "rmpv",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+ "objc_exception",
+]
+
+[[package]]
+name = "objc-foundation"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
+dependencies = [
+ "block",
+ "objc",
+ "objc_id",
+]
+
+[[package]]
+name = "objc_exception"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "objc_id"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
+dependencies = [
+ "objc",
+]
+
+[[package]]
+name = "object"
+version = "0.32.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+dependencies = [
+ "crc32fast",
+ "hashbrown 0.14.0",
+ "indexmap 2.0.0",
+ "memchr",
+]
+
+[[package]]
+name = "oboe"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0"
+dependencies = [
+ "jni 0.20.0",
+ "ndk",
+ "ndk-context",
+ "num-derive",
+ "num-traits",
+ "oboe-sys",
+]
+
+[[package]]
+name = "oboe-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f44155e7fb718d3cfddcf70690b2b51ac4412f347cd9e4fbe511abe9cd7b5f2"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "oo7"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37558cac1af63a81fd2ff7f3469c02a4da06b163c5671791553b8dac10f07c82"
+dependencies = [
+ "aes",
+ "async-fs 2.1.1",
+ "async-io 2.3.1",
+ "async-lock 3.3.0",
+ "blocking",
+ "cbc",
+ "cipher 0.4.4",
+ "digest 0.10.7",
+ "futures-lite 2.2.0",
+ "futures-util",
+ "hkdf",
+ "hmac 0.12.1",
+ "num",
+ "num-bigint-dig 0.8.4",
+ "pbkdf2 0.12.2",
+ "rand 0.8.5",
+ "serde",
+ "sha2 0.10.7",
+ "zbus",
+ "zeroize",
+ "zvariant",
+]
+
+[[package]]
+name = "opaque-debug"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+
+[[package]]
+name = "open"
+version = "5.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "449f0ff855d85ddbf1edd5b646d65249ead3f5e422aaa86b7d2d0b049b103e32"
+dependencies = [
+ "is-wsl",
+ "libc",
+ "pathdiff",
+]
+
+[[package]]
+name = "open_ai"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "futures 0.3.28",
+ "schemars",
+ "serde",
+ "serde_json",
+ "util",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.57"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
+dependencies = [
+ "bitflags 2.4.2",
+ "cfg-if",
+ "foreign-types 0.3.2",
+ "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 2.0.48",
+]
+
+[[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.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "ordered-float"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "ordered-float"
+version = "3.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a54938017eacd63036332b4ae5c8a49fc8c0c1d6d629893057e4f13609edd06"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "ordered-stream"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "os_str_bytes"
+version = "6.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
+
+[[package]]
+name = "ouroboros"
+version = "0.17.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954"
+dependencies = [
+ "aliasable",
+ "ouroboros_macro",
+ "static_assertions",
+]
+
+[[package]]
+name = "ouroboros_macro"
+version = "0.17.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "outline"
+version = "0.1.0"
+dependencies = [
+ "editor",
+ "fuzzy",
+ "gpui",
+ "indoc",
+ "language",
+ "menu",
+ "ordered-float 2.10.0",
+ "picker",
+ "project",
+ "rope",
+ "serde_json",
+ "settings",
+ "smol",
+ "theme",
+ "tree-sitter-rust",
+ "tree-sitter-typescript",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "outref"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a"
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "p256"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594"
+dependencies = [
+ "ecdsa",
+ "elliptic-curve",
+ "sha2 0.10.7",
+]
+
+[[package]]
+name = "palette"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebfc23a4b76642983d57e4ad00bb4504eb30a8ce3c70f4aee1f725610e36d97a"
+dependencies = [
+ "approx",
+ "fast-srgb8",
+ "palette_derive",
+]
+
+[[package]]
+name = "palette_derive"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8890702dbec0bad9116041ae586f84805b13eecd1d8b1df27c29998a9969d6d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "parity-tokio-ipc"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6"
+dependencies = [
+ "futures 0.3.28",
+ "libc",
+ "log",
+ "rand 0.7.3",
+ "tokio",
+ "winapi",
+]
+
+[[package]]
+name = "parking"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.3.5",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "password-hash"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1a5d4e9c205d2c1ae73b84aab6240e98218c0e72e63b50422cfb2d1ca952282"
+dependencies = [
+ "base64ct",
+ "rand_core 0.6.4",
+ "subtle",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[package]]
+name = "pathfinder_geometry"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3"
+dependencies = [
+ "log",
+ "pathfinder_simd",
+]
+
+[[package]]
+name = "pathfinder_simd"
+version = "0.5.3"
+source = "git+https://github.com/servo/pathfinder.git?rev=30419d07660dc11a21e42ef4a7fa329600cff152#30419d07660dc11a21e42ef4a7fa329600cff152"
+dependencies = [
+ "rustc_version",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa"
+dependencies = [
+ "crypto-mac",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
+dependencies = [
+ "digest 0.10.7",
+ "hmac 0.12.1",
+]
+
+[[package]]
+name = "peeking_take_while"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+
+[[package]]
+name = "pem"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd56cbd21fea48d0c440b41cd69c589faacade08c992d9a54e471b79d0fd13eb"
+dependencies = [
+ "base64 0.13.1",
+ "once_cell",
+ "regex",
+]
+
+[[package]]
+name = "pem-rfc7468"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
+dependencies = [
+ "base64ct",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "petgraph"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
+dependencies = [
+ "fixedbitset",
+ "indexmap 2.0.0",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
+dependencies = [
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
+dependencies = [
+ "siphasher 0.3.11",
+]
+
+[[package]]
+name = "picker"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "ctor",
+ "editor",
+ "env_logger",
+ "gpui",
+ "menu",
+ "serde",
+ "serde_json",
+ "ui",
+ "workspace",
+]
+
+[[package]]
+name = "pico-args"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468"
+
+[[package]]
+name = "pin-project"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "piper"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
+dependencies = [
+ "atomic-waker",
+ "fastrand 2.0.0",
+ "futures-io",
+]
+
+[[package]]
+name = "pkcs1"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
+dependencies = [
+ "der 0.7.8",
+ "pkcs8 0.10.2",
+ "spki 0.7.2",
+]
+
+[[package]]
+name = "pkcs8"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
+dependencies = [
+ "der 0.6.1",
+ "spki 0.6.0",
+]
+
+[[package]]
+name = "pkcs8"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+dependencies = [
+ "der 0.7.8",
+ "spki 0.7.2",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+
+[[package]]
+name = "plist"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a4a0cfc5fb21a09dc6af4bf834cf10d4a32fccd9e2ea468c4b1751a097487aa"
+dependencies = [
+ "base64 0.21.4",
+ "indexmap 1.9.3",
+ "line-wrap",
+ "quick-xml 0.30.0",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "png"
+version = "0.16.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6"
+dependencies = [
+ "bitflags 1.3.2",
+ "crc32fast",
+ "deflate",
+ "miniz_oxide 0.3.7",
+]
+
+[[package]]
+name = "polling"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
+dependencies = [
+ "autocfg",
+ "bitflags 1.3.2",
+ "cfg-if",
+ "concurrent-queue",
+ "libc",
+ "log",
+ "pin-project-lite",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "polling"
+version = "3.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "pin-project-lite",
+ "rustix 0.38.32",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "pollster"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7"
+
+[[package]]
+name = "postage"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af3fb618632874fb76937c2361a7f22afd393c982a2165595407edc75b06d3c1"
+dependencies = [
+ "atomic",
+ "crossbeam-queue",
+ "futures 0.3.28",
+ "log",
+ "parking_lot",
+ "pin-project",
+ "pollster",
+ "static_assertions",
+ "thiserror",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "prettier"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "fs",
+ "gpui",
+ "language",
+ "log",
+ "lsp",
+ "node_runtime",
+ "parking_lot",
+ "serde",
+ "serde_json",
+ "util",
+]
+
+[[package]]
+name = "pretty_assertions"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
+dependencies = [
+ "diff",
+ "yansi",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+dependencies = [
+ "toml 0.5.11",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+dependencies = [
+ "once_cell",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+dependencies = [
+ "toml_edit 0.21.1",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "profiling"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58"
+dependencies = [
+ "profiling-procmacros",
+]
+
+[[package]]
+name = "profiling-procmacros"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
+dependencies = [
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "project"
+version = "0.1.0"
+dependencies = [
+ "aho-corasick",
+ "anyhow",
+ "async-trait",
+ "client",
+ "clock",
+ "collections",
+ "copilot",
+ "env_logger",
+ "fs",
+ "futures 0.3.28",
+ "fuzzy",
+ "git",
+ "git2",
+ "globset",
+ "gpui",
+ "itertools 0.11.0",
+ "language",
+ "log",
+ "lsp",
+ "node_runtime",
+ "parking_lot",
+ "postage",
+ "prettier",
+ "pretty_assertions",
+ "rand 0.8.5",
+ "regex",
+ "release_channel",
+ "rpc",
+ "schemars",
+ "serde",
+ "serde_json",
+ "settings",
+ "sha2 0.10.7",
+ "similar",
+ "smol",
+ "task",
+ "terminal",
+ "text",
+ "unindent",
+ "util",
+ "which 6.0.0",
+ "worktree",
+]
+
+[[package]]
+name = "project_panel"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "collections",
+ "db",
+ "editor",
+ "file_icons",
+ "gpui",
+ "language",
+ "menu",
+ "pretty_assertions",
+ "project",
+ "schemars",
+ "search",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "settings",
+ "theme",
+ "ui",
+ "unicase",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "project_symbols"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "editor",
+ "futures 0.3.28",
+ "fuzzy",
+ "gpui",
+ "language",
+ "lsp",
+ "ordered-float 2.10.0",
+ "picker",
+ "project",
+ "release_channel",
+ "serde_json",
+ "settings",
+ "theme",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "prometheus"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c"
+dependencies = [
+ "cfg-if",
+ "fnv",
+ "lazy_static",
+ "memchr",
+ "parking_lot",
+ "protobuf",
+ "thiserror",
+]
+
+[[package]]
+name = "prost"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001"
+dependencies = [
+ "bytes 1.5.0",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-build"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
+dependencies = [
+ "bytes 1.5.0",
+ "heck 0.3.3",
+ "itertools 0.10.5",
+ "lazy_static",
+ "log",
+ "multimap",
+ "petgraph",
+ "prost",
+ "prost-types",
+ "regex",
+ "tempfile",
+ "which 4.4.2",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
+dependencies = [
+ "anyhow",
+ "itertools 0.10.5",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a"
+dependencies = [
+ "bytes 1.5.0",
+ "prost",
+]
+
+[[package]]
+name = "protobuf"
+version = "2.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94"
+
+[[package]]
+name = "psm"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ptr_meta"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1"
+dependencies = [
+ "ptr_meta_derive",
+]
+
+[[package]]
+name = "ptr_meta_derive"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "pulldown-cmark"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dce76ce678ffc8e5675b22aa1405de0b7037e2fdf8913fea40d1926c6fe1e6e7"
+dependencies = [
+ "bitflags 2.4.2",
+ "memchr",
+ "unicase",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quick_action_bar"
+version = "0.1.0"
+dependencies = [
+ "assistant",
+ "editor",
+ "gpui",
+ "search",
+ "settings",
+ "ui",
+ "workspace",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "radium"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.10",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rangemap"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "977b1e897f9d764566891689e642653e5ed90c6895106acd005eb4c1d0203991"
+
+[[package]]
+name = "raw-window-handle"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
+
+[[package]]
+name = "raw-window-handle"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
+
+[[package]]
+name = "raw-window-metal"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac4ea493258d54c24cb46aa9345d099e58e2ea3f30dd63667fc54fc892f18e76"
+dependencies = [
+ "cocoa",
+ "core-graphics",
+ "objc",
+ "raw-window-handle 0.5.2",
+]
+
+[[package]]
+name = "rayon"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "rctree"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be9e29cb19c8fe84169fcb07f8f11e66bc9e6e0280efd4715c54818296f8a4a8"
+
+[[package]]
+name = "read-fonts"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1362980db95801b70031dd592dc052a44b1810ca9da8fbcf7b25983f3174ed0"
+dependencies = [
+ "font-types",
+]
+
+[[package]]
+name = "recent_projects"
+version = "0.1.0"
+dependencies = [
+ "editor",
+ "fuzzy",
+ "gpui",
+ "language",
+ "menu",
+ "ordered-float 2.10.0",
+ "picker",
+ "project",
+ "serde",
+ "serde_json",
+ "smol",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom 0.2.10",
+ "redox_syscall 0.2.16",
+ "thiserror",
+]
+
+[[package]]
+name = "refineable"
+version = "0.1.0"
+dependencies = [
+ "derive_refineable",
+]
+
+[[package]]
+name = "regalloc2"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6"
+dependencies = [
+ "hashbrown 0.13.2",
+ "log",
+ "rustc-hash",
+ "slice-group-by",
+ "smallvec",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.5",
+ "regex-syntax 0.8.2",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
+
+[[package]]
+name = "regex-automata"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.2",
+]
+
+[[package]]
+name = "regex-lite"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e"
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
+name = "release_channel"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+ "once_cell",
+]
+
+[[package]]
+name = "rend"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab"
+dependencies = [
+ "bytecheck",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.11.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1"
+dependencies = [
+ "base64 0.21.4",
+ "bytes 1.5.0",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.9",
+ "http-body",
+ "hyper",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "tokio",
+ "tokio-native-tls",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "resvg"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09697862c5c3f940cbaffef91969c62188b5c8ed385b0aef43a5ff01ddc8000f"
+dependencies = [
+ "jpeg-decoder",
+ "log",
+ "pico-args",
+ "png",
+ "rgb",
+ "svgfilters",
+ "tiny-skia",
+ "usvg",
+]
+
+[[package]]
+name = "rfc6979"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb"
+dependencies = [
+ "crypto-bigint 0.4.9",
+ "hmac 0.12.1",
+ "zeroize",
+]
+
+[[package]]
+name = "rgb"
+version = "0.8.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "rich_text"
+version = "0.1.0"
+dependencies = [
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "linkify",
+ "pulldown-cmark",
+ "theme",
+ "ui",
+ "util",
+]
+
+[[package]]
+name = "ring"
+version = "0.16.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+dependencies = [
+ "cc",
+ "libc",
+ "once_cell",
+ "spin 0.5.2",
+ "untrusted 0.7.1",
+ "web-sys",
+ "winapi",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+dependencies = [
+ "cc",
+ "getrandom 0.2.10",
+ "libc",
+ "spin 0.9.8",
+ "untrusted 0.9.0",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rkyv"
+version = "0.7.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58"
+dependencies = [
+ "bitvec",
+ "bytecheck",
+ "hashbrown 0.12.3",
+ "ptr_meta",
+ "rend",
+ "rkyv_derive",
+ "seahash",
+ "tinyvec",
+ "uuid",
+]
+
+[[package]]
+name = "rkyv_derive"
+version = "0.7.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "rmp"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20"
+dependencies = [
+ "byteorder",
+ "num-traits",
+ "paste",
+]
+
+[[package]]
+name = "rmpv"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e0e0214a4a2b444ecce41a4025792fc31f77c7bb89c46d253953ea8c65701ec"
+dependencies = [
+ "num-traits",
+ "rmp",
+]
+
+[[package]]
+name = "rodio"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdf1d4dea18dff2e9eb6dca123724f8b60ef44ad74a9ad283cdfe025df7e73fa"
+dependencies = [
+ "cpal",
+ "hound",
+]
+
+[[package]]
+name = "rope"
+version = "0.1.0"
+dependencies = [
+ "arrayvec 0.7.4",
+ "bromberg_sl2",
+ "gpui",
+ "log",
+ "rand 0.8.5",
+ "smallvec",
+ "sum_tree",
+ "util",
+]
+
+[[package]]
+name = "roxmltree"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b"
+dependencies = [
+ "xmlparser",
+]
+
+[[package]]
+name = "roxmltree"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f"
+
+[[package]]
+name = "rpc"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-tungstenite",
+ "base64 0.13.1",
+ "chrono",
+ "collections",
+ "env_logger",
+ "futures 0.3.28",
+ "gpui",
+ "parking_lot",
+ "prost",
+ "prost-build",
+ "rand 0.8.5",
+ "rsa 0.4.0",
+ "serde",
+ "serde_json",
+ "strum",
+ "tracing",
+ "util",
+ "zstd",
+]
+
+[[package]]
+name = "rsa"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68ef841a26fc5d040ced0417c6c6a64ee851f42489df11cdf0218e545b6f8d28"
+dependencies = [
+ "byteorder",
+ "digest 0.9.0",
+ "lazy_static",
+ "num-bigint-dig 0.7.1",
+ "num-integer",
+ "num-iter",
+ "num-traits",
+ "pem",
+ "rand 0.8.5",
+ "simple_asn1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rsa"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8"
+dependencies = [
+ "byteorder",
+ "const-oid",
+ "digest 0.10.7",
+ "num-bigint-dig 0.8.4",
+ "num-integer",
+ "num-iter",
+ "num-traits",
+ "pkcs1",
+ "pkcs8 0.10.2",
+ "rand_core 0.6.4",
+ "signature 2.1.0",
+ "spki 0.7.2",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rust-embed"
+version = "8.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a82c0bbc10308ed323529fd3c1dce8badda635aa319a5ff0e6466f33b8101e3f"
+dependencies = [
+ "rust-embed-impl",
+ "rust-embed-utils",
+ "walkdir",
+]
+
+[[package]]
+name = "rust-embed-impl"
+version = "8.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6227c01b1783cdfee1bcf844eb44594cd16ec71c35305bf1c9fb5aade2735e16"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "rust-embed-utils",
+ "syn 2.0.48",
+ "walkdir",
+]
+
+[[package]]
+name = "rust-embed-utils"
+version = "8.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cb0a25bfbb2d4b4402179c2cf030387d9990857ce08a32592c6238db9fa8665"
+dependencies = [
+ "globset",
+ "sha2 0.10.7",
+ "walkdir",
+]
+
+[[package]]
+name = "rust_decimal"
+version = "1.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd"
+dependencies = [
+ "arrayvec 0.7.4",
+ "borsh",
+ "bytes 1.5.0",
+ "num-traits",
+ "rand 0.8.5",
+ "rkyv",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.37.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
+dependencies = [
+ "bitflags 1.3.2",
+ "errno",
+ "io-lifetimes 1.0.11",
+ "libc",
+ "linux-raw-sys 0.3.8",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
+dependencies = [
+ "bitflags 2.4.2",
+ "errno",
+ "itoa",
+ "libc",
+ "linux-raw-sys 0.4.12",
+ "once_cell",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustix-openpty"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a25c3aad9fc1424eb82c88087789a7d938e1829724f3e4043163baf0d13cfc12"
+dependencies = [
+ "errno",
+ "libc",
+ "rustix 0.38.32",
+]
+
+[[package]]
+name = "rustls"
+version = "0.21.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+dependencies = [
+ "log",
+ "ring 0.17.7",
+ "rustls-webpki",
+ "sct",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
+dependencies = [
+ "base64 0.21.4",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring 0.17.7",
+ "untrusted 0.9.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+
+[[package]]
+name = "rustybuzz"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ab463a295d00f3692e0974a0bfd83c7a9bcd119e27e07c2beecdb1b44a09d10"
+dependencies = [
+ "bitflags 1.3.2",
+ "bytemuck",
+ "smallvec",
+ "ttf-parser 0.9.0",
+ "unicode-bidi-mirroring",
+ "unicode-ccc",
+ "unicode-general-category",
+ "unicode-script",
+]
+
+[[package]]
+name = "rustybuzz"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0ae5692c5beaad6a9e22830deeed7874eae8a4e3ba4076fb48e12c56856222c"
+dependencies = [
+ "bitflags 2.4.2",
+ "bytemuck",
+ "libm",
+ "smallvec",
+ "ttf-parser 0.20.0",
+ "unicode-bidi-mirroring",
+ "unicode-ccc",
+ "unicode-properties",
+ "unicode-script",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+
+[[package]]
+name = "safe_arch"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "safemem"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+
+[[package]]
+name = "salsa20"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0"
+dependencies = [
+ "cipher 0.3.0",
+]
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "schemars"
+version = "0.8.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c"
+dependencies = [
+ "dyn-clone",
+ "indexmap 1.9.3",
+ "schemars_derive",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars_derive"
+version = "0.8.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_derive_internals",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "scoped-tls"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
+
+[[package]]
+name = "scoped_threadpool"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "scrypt"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518"
+dependencies = [
+ "base64ct",
+ "hmac 0.11.0",
+ "password-hash",
+ "pbkdf2 0.8.0",
+ "salsa20",
+ "sha2 0.9.9",
+]
+
+[[package]]
+name = "sct"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
+dependencies = [
+ "ring 0.16.20",
+ "untrusted 0.7.1",
+]
+
+[[package]]
+name = "sea-bae"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3bd3534a9978d0aa7edd2808dc1f8f31c4d0ecd31ddf71d997b3c98e9f3c9114"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "sea-orm"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da5b2d70c255bc5cbe1d49f69c3c8eadae0fbbaeb18ee978edbf2f75775cb94d"
+dependencies = [
+ "async-stream",
+ "async-trait",
+ "bigdecimal",
+ "chrono",
+ "futures 0.3.28",
+ "log",
+ "ouroboros",
+ "rust_decimal",
+ "sea-orm-macros",
+ "sea-query",
+ "sea-query-binder",
+ "serde",
+ "serde_json",
+ "sqlx",
+ "strum",
+ "thiserror",
+ "time",
+ "tracing",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "sea-orm-macros"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7c8d455fad40194fb9774fdc4810c0f2700ff0dc0e93bd5ce9d641cc3f5dd75"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "sea-bae",
+ "syn 2.0.48",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sea-query"
+version = "0.30.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb3e6bba153bb198646c8762c48414942a38db27d142e44735a133cabddcc820"
+dependencies = [
+ "bigdecimal",
+ "chrono",
+ "derivative",
+ "inherent",
+ "ordered-float 3.9.1",
+ "rust_decimal",
+ "serde_json",
+ "time",
+ "uuid",
+]
+
+[[package]]
+name = "sea-query-binder"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36bbb68df92e820e4d5aeb17b4acd5cc8b5d18b2c36a4dd6f4626aabfa7ab1b9"
+dependencies = [
+ "bigdecimal",
+ "chrono",
+ "rust_decimal",
+ "sea-query",
+ "serde_json",
+ "sqlx",
+ "time",
+ "uuid",
+]
+
+[[package]]
+name = "seahash"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
+
+[[package]]
+name = "sealed"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b5e421024b5e5edfbaa8e60ecf90bda9dbffc602dbb230e6028763f85f0c68c"
+dependencies = [
+ "heck 0.3.3",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "search"
+version = "0.1.0"
+dependencies = [
+ "any_vec",
+ "anyhow",
+ "bitflags 2.4.2",
+ "client",
+ "collections",
+ "editor",
+ "futures 0.3.28",
+ "gpui",
+ "language",
+ "menu",
+ "project",
+ "serde",
+ "serde_json",
+ "settings",
+ "smol",
+ "theme",
+ "ui",
+ "unindent",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "sec1"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
+dependencies = [
+ "base16ct",
+ "der 0.6.1",
+ "generic-array",
+ "pkcs8 0.9.0",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "security-framework"
+version = "2.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-foundation-sys 0.8.6",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+dependencies = [
+ "core-foundation-sys 0.8.6",
+ "libc",
+]
+
+[[package]]
+name = "self_cell"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba"
+
+[[package]]
+name = "semantic_version"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "serde",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
+
+[[package]]
+name = "seq-macro"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a9f47faea3cad316faa914d013d24f471cd90bfca1a0c70f05a3f42c6441e99"
+
+[[package]]
+name = "serde"
+version = "1.0.196"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.196"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "serde_derive_internals"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "serde_fmt"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.107"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
+dependencies = [
+ "indexmap 2.0.0",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_json_lenient"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26386958a1344003f2b2bcff51a23fbe70461a478ef29247c6c6ab2c1656f53e"
+dependencies = [
+ "indexmap 2.0.0",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_path_to_error"
+version = "0.1.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c"
+dependencies = [
+ "itoa",
+ "serde",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "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",
+]
+
+[[package]]
+name = "settings"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "indoc",
+ "lazy_static",
+ "pretty_assertions",
+ "release_channel",
+ "rust-embed",
+ "schemars",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_json_lenient",
+ "smallvec",
+ "tree-sitter",
+ "tree-sitter-json 0.19.0",
+ "unindent",
+ "util",
+]
+
+[[package]]
+name = "sha-1"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6"
+dependencies = [
+ "block-buffer 0.9.0",
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.9.0",
+ "opaque-debug",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "sha1_smol"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+
+[[package]]
+name = "sha2"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
+dependencies = [
+ "block-buffer 0.9.0",
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.9.0",
+ "opaque-debug",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shell-words"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
+
+[[package]]
+name = "shellexpand"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4"
+dependencies = [
+ "dirs 4.0.0",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "signature"
+version = "1.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
+dependencies = [
+ "digest 0.10.7",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "signature"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+dependencies = [
+ "digest 0.10.7",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "simdutf8"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
+
+[[package]]
+name = "similar"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ad1d488a557b235fc46dae55512ffbfc429d2482b08b4d9435ab07384ca8aec"
+
+[[package]]
+name = "simple_asn1"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eb4ea60fb301dc81dfc113df680571045d375ab7345d171c5dc7d7e13107a80"
+dependencies = [
+ "chrono",
+ "num-bigint",
+ "num-traits",
+ "thiserror",
+]
+
+[[package]]
+name = "simplecss"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "simplelog"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bc0ffd69814a9b251d43afcabf96dad1b29f5028378056257be9e3fecc9f720"
+dependencies = [
+ "chrono",
+ "log",
+ "termcolor",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac"
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "slice-group-by"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7"
+
+[[package]]
+name = "slotmap"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "sluice"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5"
+dependencies = [
+ "async-channel 1.9.0",
+ "futures-core",
+ "futures-io",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+
+[[package]]
+name = "smithay-client-toolkit"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
+dependencies = [
+ "bitflags 2.4.2",
+ "calloop",
+ "calloop-wayland-source",
+ "cursor-icon",
+ "libc",
+ "log",
+ "memmap2 0.9.4",
+ "rustix 0.38.32",
+ "thiserror",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-csd-frame",
+ "wayland-cursor",
+ "wayland-protocols",
+ "wayland-protocols-wlr",
+ "wayland-scanner",
+ "xkeysym",
+]
+
+[[package]]
+name = "smithay-clipboard"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d"
+dependencies = [
+ "libc",
+ "smithay-client-toolkit",
+ "wayland-backend",
+]
+
+[[package]]
+name = "smol"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1"
+dependencies = [
+ "async-channel 1.9.0",
+ "async-executor",
+ "async-fs 1.6.0",
+ "async-io 1.13.0",
+ "async-lock 2.8.0",
+ "async-net 1.7.0",
+ "async-process 1.7.0",
+ "blocking",
+ "futures-lite 1.13.0",
+]
+
+[[package]]
+name = "snippet"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "smallvec",
+]
+
+[[package]]
+name = "socket2"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "socket2"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "spdx"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29ef1a0fa1e39ac22972c8db23ff89aea700ab96aa87114e1fb55937a631a0c9"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+dependencies = [
+ "lock_api",
+]
+
+[[package]]
+name = "spirv"
+version = "0.2.0+1.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830"
+dependencies = [
+ "bitflags 1.3.2",
+ "num-traits",
+]
+
+[[package]]
+name = "spki"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
+dependencies = [
+ "base64ct",
+ "der 0.6.1",
+]
+
+[[package]]
+name = "spki"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+dependencies = [
+ "base64ct",
+ "der 0.7.8",
+]
+
+[[package]]
+name = "sptr"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a"
+
+[[package]]
+name = "sqlez"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "futures 0.3.28",
+ "indoc",
+ "lazy_static",
+ "libsqlite3-sys",
+ "parking_lot",
+ "smol",
+ "thread_local",
+ "util",
+ "uuid",
+]
+
+[[package]]
+name = "sqlez_macros"
+version = "0.1.0"
+dependencies = [
+ "lazy_static",
+ "sqlez",
+ "sqlformat",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "sqlformat"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85"
+dependencies = [
+ "itertools 0.11.0",
+ "nom",
+ "unicode_categories",
+]
+
+[[package]]
+name = "sqlx"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e50c216e3624ec8e7ecd14c6a6a6370aad6ee5d8cfc3ab30b5162eeeef2ed33"
+dependencies = [
+ "sqlx-core",
+ "sqlx-macros",
+ "sqlx-mysql",
+ "sqlx-postgres",
+ "sqlx-sqlite",
+]
+
+[[package]]
+name = "sqlx-core"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d"
+dependencies = [
+ "ahash 0.8.8",
+ "atoi",
+ "bigdecimal",
+ "byteorder",
+ "bytes 1.5.0",
+ "chrono",
+ "crc",
+ "crossbeam-queue",
+ "dotenvy",
+ "either",
+ "event-listener 2.5.3",
+ "futures-channel",
+ "futures-core",
+ "futures-intrusive",
+ "futures-io",
+ "futures-util",
+ "hashlink",
+ "hex",
+ "indexmap 2.0.0",
+ "log",
+ "memchr",
+ "once_cell",
+ "paste",
+ "percent-encoding",
+ "rust_decimal",
+ "rustls",
+ "rustls-pemfile",
+ "serde",
+ "serde_json",
+ "sha2 0.10.7",
+ "smallvec",
+ "sqlformat",
+ "thiserror",
+ "time",
+ "tokio",
+ "tokio-stream",
+ "tracing",
+ "url",
+ "uuid",
+ "webpki-roots",
+]
+
+[[package]]
+name = "sqlx-macros"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a793bb3ba331ec8359c1853bd39eed32cdd7baaf22c35ccf5c92a7e8d1189ec"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "sqlx-core",
+ "sqlx-macros-core",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "sqlx-macros-core"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a4ee1e104e00dedb6aa5ffdd1343107b0a4702e862a84320ee7cc74782d96fc"
+dependencies = [
+ "dotenvy",
+ "either",
+ "heck 0.4.1",
+ "hex",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_json",
+ "sha2 0.10.7",
+ "sqlx-core",
+ "sqlx-mysql",
+ "sqlx-postgres",
+ "sqlx-sqlite",
+ "syn 1.0.109",
+ "tempfile",
+ "tokio",
+ "url",
+]
+
+[[package]]
+name = "sqlx-mysql"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db"
+dependencies = [
+ "atoi",
+ "base64 0.21.4",
+ "bigdecimal",
+ "bitflags 2.4.2",
+ "byteorder",
+ "bytes 1.5.0",
+ "chrono",
+ "crc",
+ "digest 0.10.7",
+ "dotenvy",
+ "either",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "generic-array",
+ "hex",
+ "hkdf",
+ "hmac 0.12.1",
+ "itoa",
+ "log",
+ "md-5",
+ "memchr",
+ "once_cell",
+ "percent-encoding",
+ "rand 0.8.5",
+ "rsa 0.9.2",
+ "rust_decimal",
+ "serde",
+ "sha1",
+ "sha2 0.10.7",
+ "smallvec",
+ "sqlx-core",
+ "stringprep",
+ "thiserror",
+ "time",
+ "tracing",
+ "uuid",
+ "whoami",
+]
+
+[[package]]
+name = "sqlx-postgres"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624"
+dependencies = [
+ "atoi",
+ "base64 0.21.4",
+ "bigdecimal",
+ "bitflags 2.4.2",
+ "byteorder",
+ "chrono",
+ "crc",
+ "dotenvy",
+ "etcetera",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "hex",
+ "hkdf",
+ "hmac 0.12.1",
+ "home",
+ "itoa",
+ "log",
+ "md-5",
+ "memchr",
+ "num-bigint",
+ "once_cell",
+ "rand 0.8.5",
+ "rust_decimal",
+ "serde",
+ "serde_json",
+ "sha1",
+ "sha2 0.10.7",
+ "smallvec",
+ "sqlx-core",
+ "stringprep",
+ "thiserror",
+ "time",
+ "tracing",
+ "uuid",
+ "whoami",
+]
+
+[[package]]
+name = "sqlx-sqlite"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d59dc83cf45d89c555a577694534fcd1b55c545a816c816ce51f20bbe56a4f3f"
+dependencies = [
+ "atoi",
+ "chrono",
+ "flume",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-intrusive",
+ "futures-util",
+ "libsqlite3-sys",
+ "log",
+ "percent-encoding",
+ "serde",
+ "sqlx-core",
+ "time",
+ "tracing",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "story"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+ "itertools 0.10.5",
+ "smallvec",
+]
+
+[[package]]
+name = "storybook"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clap 4.4.4",
+ "collab_ui",
+ "ctrlc",
+ "dialoguer",
+ "editor",
+ "embed-manifest",
+ "fuzzy",
+ "gpui",
+ "indoc",
+ "language",
+ "log",
+ "menu",
+ "picker",
+ "rust-embed",
+ "settings",
+ "simplelog",
+ "story",
+ "strum",
+ "theme",
+ "ui",
+]
+
+[[package]]
+name = "stringprep"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6"
+dependencies = [
+ "finl_unicode",
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strum"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.25.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "subst"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca1318e5d6716d6541696727c88d9b8dfc8cfe6afd6908e186546fd4af7f5b98"
+dependencies = [
+ "memchr",
+ "unicode-width",
+]
+
+[[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
+name = "sum_tree"
+version = "0.1.0"
+dependencies = [
+ "arrayvec 0.7.4",
+ "ctor",
+ "env_logger",
+ "log",
+ "rand 0.8.5",
+ "rayon",
+]
+
+[[package]]
+name = "sval"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05d11eec9fbe2bc8bc71e7349f0e7534db9a96d961fb9f302574275b7880ad06"
+
+[[package]]
+name = "sval_buffer"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b7451f69a93c5baf2653d5aa8bb4178934337f16c22830a50b06b386f72d761"
+dependencies = [
+ "sval",
+ "sval_ref",
+]
+
+[[package]]
+name = "sval_dynamic"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c34f5a2cc12b4da2adfb59d5eedfd9b174a23cc3fae84cec71dcbcd9302068f5"
+dependencies = [
+ "sval",
+]
+
+[[package]]
+name = "sval_fmt"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f578b2301341e246d00b35957f2952c4ec554ad9c7cfaee10bc86bc92896578"
+dependencies = [
+ "itoa",
+ "ryu",
+ "sval",
+]
+
+[[package]]
+name = "sval_json"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8346c00f5dc6efe18bea8d13c1f7ca4f112b20803434bf3657ac17c0f74cbc4b"
+dependencies = [
+ "itoa",
+ "ryu",
+ "sval",
+]
+
+[[package]]
+name = "sval_ref"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6617cc89952f792aebc0f4a1a76bc51e80c70b18c491bd52215c7989c4c3dd06"
+dependencies = [
+ "sval",
+]
+
+[[package]]
+name = "sval_serde"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe3d1e59f023341d9af75d86f3bc148a6704f3f831eef0dd90bbe9cb445fa024"
+dependencies = [
+ "serde",
+ "sval",
+ "sval_buffer",
+ "sval_fmt",
+]
+
+[[package]]
+name = "svg_fmt"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2"
+
+[[package]]
+name = "svgfilters"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb0dce2fee79ac40c21dafba48565ff7a5fa275e23ffe9ce047a40c9574ba34e"
+dependencies = [
+ "float-cmp",
+ "rgb",
+]
+
+[[package]]
+name = "svgtypes"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c536faaff1a10837cfe373142583f6e27d81e96beba339147e77b67c9f260ff"
+dependencies = [
+ "float-cmp",
+ "siphasher 0.2.3",
+]
+
+[[package]]
+name = "swash"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d06ff4664af8923625604261c645f5c4cc610cc83c84bec74b50d76237089de7"
+dependencies = [
+ "read-fonts",
+ "yazi",
+ "zeno",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
+name = "sys-locale"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e801cf239ecd6ccd71f03d270d67dd53d13e90aab208bf4b8fe4ad957ea949b0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "sysinfo"
+version = "0.30.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c385888ef380a852a16209afc8cfad22795dd8873d69c9a14d2e2088f118d18"
+dependencies = [
+ "cfg-if",
+ "core-foundation-sys 0.8.6",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "rayon",
+ "windows 0.52.0",
+]
+
+[[package]]
+name = "system-interface"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aef1f9d4c1dbdd1cb3a63be9efd2f04d8ddbc919d46112982c76818ffc2f1a7"
+dependencies = [
+ "bitflags 2.4.2",
+ "cap-fs-ext",
+ "cap-std",
+ "fd-lock",
+ "io-lifetimes 2.0.3",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+ "winx",
+]
+
+[[package]]
+name = "tab_switcher"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "ctor",
+ "editor",
+ "env_logger",
+ "gpui",
+ "language",
+ "menu",
+ "picker",
+ "project",
+ "serde",
+ "serde_json",
+ "terminal_view",
+ "theme",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "taffy"
+version = "0.3.11"
+source = "git+https://github.com/DioxusLabs/taffy?rev=1876f72bee5e376023eaa518aa7b8a34c769bd1b#1876f72bee5e376023eaa518aa7b8a34c769bd1b"
+dependencies = [
+ "arrayvec 0.7.4",
+ "grid",
+ "num-traits",
+ "slotmap",
+]
+
+[[package]]
+name = "take-until"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bdb6fa0dfa67b38c1e66b7041ba9dcf23b99d8121907cd31c807a332f7a0bbb"
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
+
+[[package]]
+name = "task"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "futures 0.3.28",
+ "gpui",
+ "schemars",
+ "serde",
+ "serde_json_lenient",
+ "shellexpand",
+ "subst",
+ "util",
+]
+
+[[package]]
+name = "tasks_ui"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "editor",
+ "fuzzy",
+ "gpui",
+ "itertools 0.11.0",
+ "language",
+ "menu",
+ "picker",
+ "project",
+ "serde",
+ "serde_json",
+ "task",
+ "tree-sitter-rust",
+ "tree-sitter-typescript",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "telemetry_events"
+version = "0.1.0"
+dependencies = [
+ "semantic_version",
+ "serde",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+dependencies = [
+ "cfg-if",
+ "fastrand 2.0.0",
+ "redox_syscall 0.4.1",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "tendril"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
+dependencies = [
+ "futf",
+ "mac",
+ "utf-8",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "terminal"
+version = "0.1.0"
+dependencies = [
+ "alacritty_terminal",
+ "anyhow",
+ "collections",
+ "dirs 4.0.0",
+ "futures 0.3.28",
+ "gpui",
+ "libc",
+ "rand 0.8.5",
+ "schemars",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "settings",
+ "smol",
+ "sysinfo",
+ "task",
+ "theme",
+ "thiserror",
+ "util",
+ "windows 0.53.0",
+]
+
+[[package]]
+name = "terminal_view"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "collections",
+ "db",
+ "dirs 4.0.0",
+ "editor",
+ "futures 0.3.28",
+ "gpui",
+ "itertools 0.11.0",
+ "language",
+ "project",
+ "rand 0.8.5",
+ "search",
+ "serde",
+ "serde_json",
+ "settings",
+ "shellexpand",
+ "smol",
+ "task",
+ "terminal",
+ "theme",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "text"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clock",
+ "collections",
+ "ctor",
+ "env_logger",
+ "gpui",
+ "lazy_static",
+ "log",
+ "parking_lot",
+ "postage",
+ "rand 0.8.5",
+ "regex",
+ "rope",
+ "smallvec",
+ "sum_tree",
+ "util",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+
+[[package]]
+name = "theme"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "color",
+ "derive_more",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "indexmap 1.9.3",
+ "palette",
+ "parking_lot",
+ "refineable",
+ "schemars",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_json_lenient",
+ "serde_repr",
+ "settings",
+ "story",
+ "util",
+ "uuid",
+]
+
+[[package]]
+name = "theme_importer"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clap 4.4.4",
+ "gpui",
+ "indexmap 1.9.3",
+ "log",
+ "palette",
+ "rust-embed",
+ "schemars",
+ "serde",
+ "serde_json",
+ "serde_json_lenient",
+ "simplelog",
+ "strum",
+ "theme",
+ "vscode_theme",
+]
+
+[[package]]
+name = "theme_selector"
+version = "0.1.0"
+dependencies = [
+ "client",
+ "feature_flags",
+ "fs",
+ "fuzzy",
+ "gpui",
+ "log",
+ "picker",
+ "serde",
+ "settings",
+ "theme",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "tiff"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437"
+dependencies = [
+ "jpeg-decoder",
+ "miniz_oxide 0.4.4",
+ "weezl",
+]
+
+[[package]]
+name = "tiktoken-rs"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4427b6b1c6b38215b92dd47a83a0ecc6735573d0a5a4c14acc0ac5b33b28adb"
+dependencies = [
+ "anyhow",
+ "base64 0.21.4",
+ "bstr",
+ "fancy-regex",
+ "lazy_static",
+ "parking_lot",
+ "rustc-hash",
+]
+
+[[package]]
+name = "time"
+version = "0.3.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48"
+dependencies = [
+ "deranged",
+ "itoa",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
+
+[[package]]
+name = "time-macros"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572"
+dependencies = [
+ "time-core",
+]
+
+[[package]]
+name = "time_format"
+version = "0.1.0"
+dependencies = [
+ "core-foundation",
+ "core-foundation-sys 0.8.6",
+ "sys-locale",
+ "time",
+]
+
+[[package]]
+name = "tiny-skia"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bf81f2900d2e235220e6f31ec9f63ade6a7f59090c556d74fe949bb3b15e9fe"
+dependencies = [
+ "arrayref",
+ "arrayvec 0.5.2",
+ "bytemuck",
+ "cfg-if",
+ "png",
+ "safe_arch",
+]
+
+[[package]]
+name = "tiny_http"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce51b50006056f590c9b7c3808c3bd70f0d1101666629713866c227d6e58d39"
+dependencies = [
+ "ascii",
+ "chrono",
+ "chunked_transfer",
+ "log",
+ "url",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
+dependencies = [
+ "backtrace",
+ "bytes 1.5.0",
+ "libc",
+ "mio",
+ "num_cpus",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2 0.5.4",
+ "tokio-macros",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "tokio-io"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
+dependencies = [
+ "bytes 0.4.12",
+ "futures 0.1.31",
+ "log",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[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.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+dependencies = [
+ "rustls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-tungstenite"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c"
+dependencies = [
+ "futures-util",
+ "log",
+ "tokio",
+ "tungstenite 0.20.1",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d"
+dependencies = [
+ "bytes 1.5.0",
+ "futures-core",
+ "futures-io",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.22.6",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap 2.0.0",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.5.15",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+dependencies = [
+ "indexmap 2.0.0",
+ "toml_datetime",
+ "winnow 0.5.15",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6"
+dependencies = [
+ "indexmap 2.0.0",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.6.1",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858"
+dependencies = [
+ "bitflags 1.3.2",
+ "bytes 1.5.0",
+ "futures-core",
+ "futures-util",
+ "http 0.2.9",
+ "http-body",
+ "http-range-header",
+ "pin-project-lite",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
+dependencies = [
+ "bitflags 2.4.2",
+ "bytes 1.5.0",
+ "futures-core",
+ "futures-util",
+ "http 0.2.9",
+ "http-body",
+ "http-range-header",
+ "pin-project-lite",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if",
+ "log",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-futures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
+dependencies = [
+ "pin-project",
+ "tracing",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+dependencies = [
+ "lazy_static",
+ "log",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-serde"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
+dependencies = [
+ "serde",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "serde",
+ "serde_json",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+ "tracing-serde",
+]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.100"
+source = "git+https://github.com/tree-sitter/tree-sitter?rev=7f21c3b98c0749ac192da67a0d65dfe3eabc4a63#7f21c3b98c0749ac192da67a0d65dfe3eabc4a63"
+dependencies = [
+ "cc",
+ "regex",
+ "wasmtime-c-api-impl",
+]
+
+[[package]]
+name = "tree-sitter-bash"
+version = "0.20.4"
+source = "git+https://github.com/tree-sitter/tree-sitter-bash?rev=7331995b19b8f8aba2d5e26deb51d2195c18bc94#7331995b19b8f8aba2d5e26deb51d2195c18bc94"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-c"
+version = "0.20.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30b03bdf218020057abee831581a74bff8c298323d6c6cd1a70556430ded9f4b"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-cpp"
+version = "0.20.0"
+source = "git+https://github.com/tree-sitter/tree-sitter-cpp?rev=f44509141e7e483323d2ec178f2d2e6c0fc041c1#f44509141e7e483323d2ec178f2d2e6c0fc041c1"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-css"
+version = "0.19.0"
+source = "git+https://github.com/tree-sitter/tree-sitter-css?rev=769203d0f9abe1a9a691ac2b9fe4bb4397a73c51#769203d0f9abe1a9a691ac2b9fe4bb4397a73c51"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-dart"
+version = "0.0.1"
+source = "git+https://github.com/agent3bood/tree-sitter-dart?rev=48934e3bf757a9b78f17bdfaa3e2b4284656fdc7#48934e3bf757a9b78f17bdfaa3e2b4284656fdc7"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-elixir"
+version = "0.1.0"
+source = "git+https://github.com/elixir-lang/tree-sitter-elixir?rev=a2861e88a730287a60c11ea9299c033c7d076e30#a2861e88a730287a60c11ea9299c033c7d076e30"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-elm"
+version = "5.6.4"
+source = "git+https://github.com/elm-tooling/tree-sitter-elm?rev=692c50c0b961364c40299e73c1306aecb5d20f40#692c50c0b961364c40299e73c1306aecb5d20f40"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-embedded-template"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33817ade928c73a32d4f904a602321e09de9fc24b71d106f3b4b3f8ab30dcc38"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-glsl"
+version = "0.1.4"
+source = "git+https://github.com/theHamsta/tree-sitter-glsl?rev=2a56fb7bc8bb03a1892b4741279dd0a8758b7fb3#2a56fb7bc8bb03a1892b4741279dd0a8758b7fb3"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-go"
+version = "0.19.1"
+source = "git+https://github.com/tree-sitter/tree-sitter-go?rev=aeb2f33b366fd78d5789ff104956ce23508b85db#aeb2f33b366fd78d5789ff104956ce23508b85db"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-gomod"
+version = "1.0.2"
+source = "git+https://github.com/camdencheek/tree-sitter-go-mod#bbe2fe3be4b87e06a613e685250f473d2267f430"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-gowork"
+version = "0.0.1"
+source = "git+https://github.com/d1y/tree-sitter-go-work#a2a4b99b53b3740855ff33f0b54cab0bb4ce6f45"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-hcl"
+version = "0.0.1"
+source = "git+https://github.com/MichaHoffmann/tree-sitter-hcl?rev=v1.1.0#636dbe70301ecbab8f353c8c78b3406fe4f185f5"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-heex"
+version = "0.0.1"
+source = "git+https://github.com/phoenixframework/tree-sitter-heex?rev=2e1348c3cf2c9323e87c2744796cf3f3868aa82a#2e1348c3cf2c9323e87c2744796cf3f3868aa82a"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-html"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "184e6b77953a354303dc87bf5fe36558c83569ce92606e7b382a0dc1b7443443"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-jsdoc"
+version = "0.20.0"
+source = "git+https://github.com/tree-sitter/tree-sitter-jsdoc#6a6cf9e7341af32d8e2b2e24a37fbfebefc3dc55"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-json"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90b04c4e1a92139535eb9fca4ec8fa9666cc96b618005d3ae35f3c957fa92f92"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-json"
+version = "0.20.0"
+source = "git+https://github.com/tree-sitter/tree-sitter-json?rev=40a81c01a40ac48744e0c8ccabbaba1920441199#40a81c01a40ac48744e0c8ccabbaba1920441199"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-lua"
+version = "0.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d489873fd1a2fa6d5f04930bfc5c081c96f0c038c1437104518b5b842c69b282"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-markdown"
+version = "0.0.1"
+source = "git+https://github.com/MDeiml/tree-sitter-markdown?rev=330ecab87a3e3a7211ac69bbadc19eabecdb1cca#330ecab87a3e3a7211ac69bbadc19eabecdb1cca"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-nix"
+version = "0.0.1"
+source = "git+https://github.com/nix-community/tree-sitter-nix?rev=66e3e9ce9180ae08fc57372061006ef83f0abde7#66e3e9ce9180ae08fc57372061006ef83f0abde7"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-nu"
+version = "0.0.1"
+source = "git+https://github.com/nushell/tree-sitter-nu?rev=7dd29f9616822e5fc259f5b4ae6c4ded9a71a132#7dd29f9616822e5fc259f5b4ae6c4ded9a71a132"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-ocaml"
+version = "0.20.4"
+source = "git+https://github.com/tree-sitter/tree-sitter-ocaml?rev=4abfdc1c7af2c6c77a370aee974627be1c285b3b#4abfdc1c7af2c6c77a370aee974627be1c285b3b"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-proto"
+version = "0.0.2"
+source = "git+https://github.com/rewinfrey/tree-sitter-proto?rev=36d54f288aee112f13a67b550ad32634d0c2cb52#36d54f288aee112f13a67b550ad32634d0c2cb52"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-python"
+version = "0.20.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c93b1b1fbd0d399db3445f51fd3058e43d0b4dcff62ddbdb46e66550978aa5"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-racket"
+version = "0.0.1"
+source = "git+https://github.com/zed-industries/tree-sitter-racket?rev=eb010cf2c674c6fd9a6316a84e28ef90190fe51a#eb010cf2c674c6fd9a6316a84e28ef90190fe51a"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-regex"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efb5a53e9c990757895476216796b170fd81e4d173d08f8b082279c4e6ff8c5c"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-ruby"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ac30cbb1560363ae76e1ccde543d6d99087421e228cc47afcec004b86bb711a"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-rust"
+version = "0.20.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0832309b0b2b6d33760ce5c0e818cb47e1d72b468516bfe4134408926fa7594"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-scheme"
+version = "0.2.0"
+source = "git+https://github.com/6cdh/tree-sitter-scheme?rev=af0fd1fa452cb2562dc7b5c8a8c55551c39273b9#af0fd1fa452cb2562dc7b5c8a8c55551c39273b9"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-typescript"
+version = "0.20.2"
+source = "git+https://github.com/tree-sitter/tree-sitter-typescript?rev=5d20856f34315b068c41edaee2ac8a100081d259#5d20856f34315b068c41edaee2ac8a100081d259"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-vue"
+version = "0.0.1"
+source = "git+https://github.com/zed-industries/tree-sitter-vue?rev=6608d9d60c386f19d80af7d8132322fa11199c42#6608d9d60c386f19d80af7d8132322fa11199c42"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-yaml"
+version = "0.0.1"
+source = "git+https://github.com/zed-industries/tree-sitter-yaml?rev=f545a41f57502e1b5ddf2a6668896c1b0620f930#f545a41f57502e1b5ddf2a6668896c1b0620f930"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+
+[[package]]
+name = "ttf-parser"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62ddb402ac6c2af6f7a2844243887631c4e94b51585b229fcfddb43958cd55ca"
+
+[[package]]
+name = "ttf-parser"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6"
+
+[[package]]
+name = "ttf-parser"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4"
+
+[[package]]
+name = "tungstenite"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ad3713a14ae247f22a728a0456a545df14acf3867f905adff84be99e23b3ad1"
+dependencies = [
+ "base64 0.13.1",
+ "byteorder",
+ "bytes 1.5.0",
+ "http 0.2.9",
+ "httparse",
+ "log",
+ "native-tls",
+ "rand 0.8.5",
+ "sha-1",
+ "thiserror",
+ "url",
+ "utf-8",
+]
+
+[[package]]
+name = "tungstenite"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
+dependencies = [
+ "byteorder",
+ "bytes 1.5.0",
+ "data-encoding",
+ "http 0.2.9",
+ "httparse",
+ "log",
+ "rand 0.8.5",
+ "sha1",
+ "thiserror",
+ "url",
+ "utf-8",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "uds_windows"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
+dependencies = [
+ "memoffset",
+ "tempfile",
+ "winapi",
+]
+
+[[package]]
+name = "ui"
+version = "0.1.0"
+dependencies = [
+ "chrono",
+ "gpui",
+ "itertools 0.11.0",
+ "menu",
+ "settings",
+ "smallvec",
+ "story",
+ "strum",
+ "theme",
+ "windows 0.53.0",
+]
+
+[[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+
+[[package]]
+name = "unicode-bidi-mirroring"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694"
+
+[[package]]
+name = "unicode-ccc"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1"
+
+[[package]]
+name = "unicode-general-category"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f9af028e052a610d99e066b33304625dea9613170a2563314490a4e6ec5cf7f"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-linebreak"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-properties"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291"
+
+[[package]]
+name = "unicode-script"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+
+[[package]]
+name = "unicode-vo"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+
+[[package]]
+name = "unicode_categories"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
+
+[[package]]
+name = "unindent"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
+
+[[package]]
+name = "untrusted"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+
+[[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.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
+name = "usvg"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef8352f317d8f9a918ba5154797fb2a93e2730244041cf7d5be35148266adfa5"
+dependencies = [
+ "base64 0.13.1",
+ "data-url",
+ "flate2",
+ "fontdb 0.5.4",
+ "kurbo",
+ "log",
+ "memmap2 0.2.3",
+ "pico-args",
+ "rctree",
+ "roxmltree 0.14.1",
+ "rustybuzz 0.3.0",
+ "simplecss",
+ "siphasher 0.2.3",
+ "svgtypes",
+ "ttf-parser 0.12.3",
+ "unicode-bidi",
+ "unicode-script",
+ "unicode-vo",
+ "xmlwriter",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "util"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-fs 1.6.0",
+ "collections",
+ "dirs 3.0.2",
+ "futures 0.3.28",
+ "futures-lite 1.13.0",
+ "git2",
+ "globset",
+ "isahc",
+ "lazy_static",
+ "log",
+ "rand 0.8.5",
+ "regex",
+ "rust-embed",
+ "serde",
+ "serde_json",
+ "take-until",
+ "tempfile",
+ "tendril",
+ "unicase",
+ "url",
+]
+
+[[package]]
+name = "uuid"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
+dependencies = [
+ "getrandom 0.2.10",
+ "serde",
+ "sha1_smol",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "value-bag"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d92ccd67fb88503048c01b59152a04effd0782d035a83a6d256ce6085f08f4a3"
+dependencies = [
+ "value-bag-serde1",
+ "value-bag-sval2",
+]
+
+[[package]]
+name = "value-bag-serde1"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0b9f3feef403a50d4d67e9741a6d8fc688bcbb4e4f31bd4aab72cc690284394"
+dependencies = [
+ "erased-serde",
+ "serde",
+ "serde_fmt",
+]
+
+[[package]]
+name = "value-bag-sval2"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30b24f4146b6f3361e91cbf527d1fb35e9376c3c0cef72ca5ec5af6d640fad7d"
+dependencies = [
+ "sval",
+ "sval_buffer",
+ "sval_dynamic",
+ "sval_fmt",
+ "sval_json",
+ "sval_ref",
+ "sval_serde",
+]
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "vcs_menu"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "fs",
+ "fuzzy",
+ "gpui",
+ "picker",
+ "ui",
+ "util",
+ "workspace",
+]
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "vim"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-compat",
+ "async-trait",
+ "collections",
+ "command_palette",
+ "command_palette_hooks",
+ "editor",
+ "futures 0.3.28",
+ "gpui",
+ "indoc",
+ "language",
+ "log",
+ "lsp",
+ "nvim-rs",
+ "parking_lot",
+ "regex",
+ "release_channel",
+ "schemars",
+ "search",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "settings",
+ "tokio",
+ "ui",
+ "util",
+ "workspace",
+ "zed_actions",
+]
+
+[[package]]
+name = "vscode_theme"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b3666211944f2e6ba2c359bc9efc1891157e910b1b11c3900892ea9f18179d2"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "vsimd"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
+
+[[package]]
+name = "vte"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40eb22ae96f050e0c0d6f7ce43feeae26c348fc4dea56928ca81537cfaa6188b"
+dependencies = [
+ "bitflags 2.4.2",
+ "cursor-icon",
+ "log",
+ "serde",
+ "utf8parse",
+ "vte_generate_state_changes",
+]
+
+[[package]]
+name = "vte_generate_state_changes"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "waker-fn"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
+
+[[package]]
+name = "walkdir"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[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.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[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.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "wasm-encoder"
+version = "0.201.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9c7d2731df60006819b013f64ccc2019691deccf6e11a1804bc850cd6748f1a"
+dependencies = [
+ "leb128",
+]
+
+[[package]]
+name = "wasm-metadata"
+version = "0.201.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fd83062c17b9f4985d438603cde0a5e8c5c8198201a6937f778b607924c7da2"
+dependencies = [
+ "anyhow",
+ "indexmap 2.0.0",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "spdx",
+ "wasm-encoder",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasmparser"
+version = "0.201.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84e5df6dba6c0d7fafc63a450f1738451ed7a0b52295d83e868218fa286bf708"
+dependencies = [
+ "bitflags 2.4.2",
+ "indexmap 2.0.0",
+ "semver",
+]
+
+[[package]]
+name = "wasmprinter"
+version = "0.201.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a67e66da702706ba08729a78e3c0079085f6bfcb1a62e4799e97bbf728c2c265"
+dependencies = [
+ "anyhow",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasmtime"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a08af88fa3d324cc5cf6d388d90ef396a787b3fb4bbd51ba185f8645dc0f02c"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "bincode",
+ "bumpalo",
+ "cfg-if",
+ "encoding_rs",
+ "gimli",
+ "indexmap 2.0.0",
+ "libc",
+ "log",
+ "object",
+ "once_cell",
+ "paste",
+ "rustix 0.38.32",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "target-lexicon",
+ "wasmparser",
+ "wasmtime-component-macro",
+ "wasmtime-component-util",
+ "wasmtime-cranelift",
+ "wasmtime-environ",
+ "wasmtime-fiber",
+ "wasmtime-jit-icache-coherence",
+ "wasmtime-runtime",
+ "wasmtime-slab",
+ "wasmtime-winch",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "wasmtime-asm-macros"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16cdbfcf28542bcda0b5fd68d44603e53e5ad126cbe7b9f25c130e1249fd8211"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "wasmtime-c-api-impl"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67dea28073e105735210b9e932b5e654198d5e28ed31f1314037cd7664ceda2b"
+dependencies = [
+ "anyhow",
+ "log",
+ "once_cell",
+ "tracing",
+ "wasmtime",
+ "wasmtime-c-api-macros",
+]
+
+[[package]]
+name = "wasmtime-c-api-macros"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cfe12050fa28b17ab8434ab757fee281dd0d5c7715fa1bc5e4c0b29d1705415"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "wasmtime-component-macro"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cdcf690257c623506eeec3a502864b282aab0fdfd6981c1ebb63c7e98f4a23a"
+dependencies = [
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasmtime-component-util",
+ "wasmtime-wit-bindgen",
+ "wit-parser",
+]
+
+[[package]]
+name = "wasmtime-component-util"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab3ae7bf66e2fae1e332ab3634f332d7422e878a6eecc47c8f8f78cc1f24e501"
+
+[[package]]
+name = "wasmtime-cranelift"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67ea025c969a09117818732fa6f96848e858a7953d4659dab8081a6eea3c0523"
+dependencies = [
+ "anyhow",
+ "cfg-if",
+ "cranelift-codegen",
+ "cranelift-control",
+ "cranelift-entity",
+ "cranelift-frontend",
+ "cranelift-native",
+ "cranelift-wasm",
+ "gimli",
+ "log",
+ "object",
+ "target-lexicon",
+ "thiserror",
+ "wasmparser",
+ "wasmtime-cranelift-shared",
+ "wasmtime-environ",
+ "wasmtime-versioned-export-macros",
+]
+
+[[package]]
+name = "wasmtime-cranelift-shared"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcd6dd2f8d8d4860b384f61f89b597633a5b5f0943c546210e5084c5d321fe20"
+dependencies = [
+ "anyhow",
+ "cranelift-codegen",
+ "cranelift-control",
+ "cranelift-native",
+ "gimli",
+ "object",
+ "target-lexicon",
+ "wasmtime-environ",
+]
+
+[[package]]
+name = "wasmtime-environ"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f60f3f717658dd77745de03b750d5852126e9be6dad465848c77f90387c44c9"
+dependencies = [
+ "anyhow",
+ "bincode",
+ "cpp_demangle",
+ "cranelift-entity",
+ "gimli",
+ "indexmap 2.0.0",
+ "log",
+ "object",
+ "rustc-demangle",
+ "serde",
+ "serde_derive",
+ "target-lexicon",
+ "thiserror",
+ "wasm-encoder",
+ "wasmparser",
+ "wasmprinter",
+ "wasmtime-component-util",
+ "wasmtime-types",
+]
+
+[[package]]
+name = "wasmtime-fiber"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf8cd22ab1041bf0e54b6283e57824557902e4fed8b1f3a7eef29cbaba89eebf"
+dependencies = [
+ "anyhow",
+ "cc",
+ "cfg-if",
+ "rustix 0.38.32",
+ "wasmtime-asm-macros",
+ "wasmtime-versioned-export-macros",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "wasmtime-jit-icache-coherence"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2796e4b4989db62899d2117e1e0258b839d088c044591b14e3a0396e7b3ae53a"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "wasmtime-runtime"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bf2b7745df452a4f41b9aab21d3f7ba1347b12da2fdc5241e59306127884a68"
+dependencies = [
+ "anyhow",
+ "cc",
+ "cfg-if",
+ "encoding_rs",
+ "indexmap 2.0.0",
+ "libc",
+ "log",
+ "mach",
+ "memfd",
+ "memoffset",
+ "paste",
+ "psm",
+ "rustix 0.38.32",
+ "sptr",
+ "wasm-encoder",
+ "wasmtime-asm-macros",
+ "wasmtime-environ",
+ "wasmtime-fiber",
+ "wasmtime-versioned-export-macros",
+ "wasmtime-wmemcheck",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "wasmtime-slab"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83448ef600ad95977019ebaea84a5516fdbc9561d0a8e26b1e099351f993b527"
+
+[[package]]
+name = "wasmtime-types"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf6fe7ed3fd18ed4b1e4465fe5c8674acc9f03523fca5b1b9f975b2560cd741b"
+dependencies = [
+ "cranelift-entity",
+ "serde",
+ "serde_derive",
+ "thiserror",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasmtime-versioned-export-macros"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d6d967f01032da7d4c6303da32f6a00d5efe1bac124b156e7342d8ace6ffdfc"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "wasmtime-wasi"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "371d828b6849ea06d598ae7dd1c316e8dd9e99b76f77d93d5886cb25c7f8e188"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "bitflags 2.4.2",
+ "bytes 1.5.0",
+ "cap-fs-ext",
+ "cap-net-ext",
+ "cap-rand",
+ "cap-std",
+ "cap-time-ext",
+ "fs-set-times",
+ "futures 0.3.28",
+ "io-extras",
+ "io-lifetimes 2.0.3",
+ "once_cell",
+ "rustix 0.38.32",
+ "system-interface",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "url",
+ "wasmtime",
+ "wiggle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "wasmtime-winch"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb8b3fcbc455105760e4a2aa8ee3f39b8357183a62201383b3f72d4836ca2be8"
+dependencies = [
+ "anyhow",
+ "cranelift-codegen",
+ "gimli",
+ "object",
+ "target-lexicon",
+ "wasmparser",
+ "wasmtime-cranelift-shared",
+ "wasmtime-environ",
+ "winch-codegen",
+]
+
+[[package]]
+name = "wasmtime-wit-bindgen"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96326c9800fb6c099f50d1bd2126d636fc2f96950e1675acf358c0f52516cd38"
+dependencies = [
+ "anyhow",
+ "heck 0.4.1",
+ "indexmap 2.0.0",
+ "wit-parser",
+]
+
+[[package]]
+name = "wasmtime-wmemcheck"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36bd91a4dc55af0bf55e9e2ab0ea13724cfb5c5a1acdf8873039769208f59490"
+
+[[package]]
+name = "wast"
+version = "35.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68"
+dependencies = [
+ "leb128",
+]
+
+[[package]]
+name = "wayland-backend"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40"
+dependencies = [
+ "cc",
+ "downcast-rs",
+ "rustix 0.38.32",
+ "scoped-tls",
+ "smallvec",
+ "wayland-sys",
+]
+
+[[package]]
+name = "wayland-client"
+version = "0.31.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
+dependencies = [
+ "bitflags 2.4.2",
+ "rustix 0.38.32",
+ "wayland-backend",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-csd-frame"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
+dependencies = [
+ "bitflags 2.4.2",
+ "cursor-icon",
+ "wayland-backend",
+]
+
+[[package]]
+name = "wayland-cursor"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba"
+dependencies = [
+ "rustix 0.38.32",
+ "wayland-client",
+ "xcursor",
+]
+
+[[package]]
+name = "wayland-protocols"
+version = "0.31.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
+dependencies = [
+ "bitflags 2.4.2",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols-wlr"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
+dependencies = [
+ "bitflags 2.4.2",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-scanner"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283"
+dependencies = [
+ "proc-macro2",
+ "quick-xml 0.31.0",
+ "quote",
+]
+
+[[package]]
+name = "wayland-sys"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af"
+dependencies = [
+ "dlib",
+ "log",
+ "once_cell",
+ "pkg-config",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888"
+dependencies = [
+ "rustls-webpki",
+]
+
+[[package]]
+name = "weezl"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
+
+[[package]]
+name = "welcome"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "copilot_ui",
+ "db",
+ "editor",
+ "fuzzy",
+ "gpui",
+ "install_cli",
+ "picker",
+ "project",
+ "schemars",
+ "serde",
+ "settings",
+ "theme_selector",
+ "ui",
+ "util",
+ "vim",
+ "workspace",
+]
+
+[[package]]
+name = "which"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+dependencies = [
+ "either",
+ "home",
+ "once_cell",
+ "rustix 0.38.32",
+]
+
+[[package]]
+name = "which"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fa5e0c10bf77f44aac573e498d1a82d5fbd5e91f6fc0a99e7be4b38e85e101c"
+dependencies = [
+ "either",
+ "home",
+ "once_cell",
+ "rustix 0.38.32",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "whoami"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50"
+
+[[package]]
+name = "wiggle"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae1136a209614ace00b0c11f04dc7cf42540773be3b22eff6ad165110aba29c1"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "bitflags 2.4.2",
+ "thiserror",
+ "tracing",
+ "wasmtime",
+ "wiggle-macro",
+]
+
+[[package]]
+name = "wiggle-generate"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c2bd99ce26046f4246d720a4198f6a8fc95bc5da82ae4ef62263e24641c3076"
+dependencies = [
+ "anyhow",
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "shellexpand",
+ "syn 2.0.48",
+ "witx",
+]
+
+[[package]]
+name = "wiggle-macro"
+version = "19.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512d816dbcd0113103b2eb2402ec9018e7f0755202a5b3e67db726f229d8dcae"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wiggle-generate",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "winch-codegen"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d285c833af9453c037cd220765f86c5c9961e8906a815829107c8801d535b8e4"
+dependencies = [
+ "anyhow",
+ "cranelift-codegen",
+ "gimli",
+ "regalloc2",
+ "smallvec",
+ "target-lexicon",
+ "wasmparser",
+ "wasmtime-environ",
+]
+
+[[package]]
+name = "windows"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+dependencies = [
+ "windows-core 0.52.0",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efc5cf48f83140dcaab716eeaea345f9e93d0018fb81162753a3f76c3397b538"
+dependencies = [
+ "windows-core 0.53.0",
+ "windows-implement",
+ "windows-interface",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dcc5b895a6377f1ab9fa55acedab1fd5ac0db66ad1e6c7f47e28a22e446a5dd"
+dependencies = [
+ "windows-result",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd19df78e5168dfb0aedc343d1d1b8d422ab2db6756d2dc3fef75035402a3f64"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "winnow"
+version = "0.5.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d90f4e0f530c4c69f62b80d839e9ef3855edc9cba471a160c4d692deed62b401"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "winresource"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77e2aaaf8cfa92078c0c0375423d631f82f2f57979c2884fdd5f604a11e45329"
+dependencies = [
+ "toml 0.7.8",
+ "version_check",
+]
+
+[[package]]
+name = "winx"
+version = "0.36.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9643b83820c0cd246ecabe5fa454dd04ba4fa67996369466d0747472d337346"
+dependencies = [
+ "bitflags 2.4.2",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "wio"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "wit-bindgen"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "288f992ea30e6b5c531b52cdd5f3be81c148554b09ea416f058d16556ba92c27"
+dependencies = [
+ "bitflags 2.4.2",
+ "wit-bindgen-rt",
+ "wit-bindgen-rust-macro",
+]
+
+[[package]]
+name = "wit-bindgen-core"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e85e72719ffbccf279359ad071497e47eb0675fe22106dea4ed2d8a7fcb60ba4"
+dependencies = [
+ "anyhow",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcb8738270f32a2d6739973cbbb7c1b6dd8959ce515578a6e19165853272ee64"
+
+[[package]]
+name = "wit-bindgen-rust"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8a39a15d1ae2077688213611209849cad40e9e5cccf6e61951a425850677ff3"
+dependencies = [
+ "anyhow",
+ "heck 0.4.1",
+ "indexmap 2.0.0",
+ "wasm-metadata",
+ "wit-bindgen-core",
+ "wit-component",
+]
+
+[[package]]
+name = "wit-bindgen-rust-macro"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d376d3ae5850526dfd00d937faea0d81a06fa18f7ac1e26f386d760f241a8f4b"
+dependencies = [
+ "anyhow",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wit-bindgen-core",
+ "wit-bindgen-rust",
+]
+
+[[package]]
+name = "wit-component"
+version = "0.201.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "421c0c848a0660a8c22e2fd217929a0191f14476b68962afd2af89fd22e39825"
+dependencies = [
+ "anyhow",
+ "bitflags 2.4.2",
+ "indexmap 2.0.0",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "wasm-encoder",
+ "wasm-metadata",
+ "wasmparser",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-parser"
+version = "0.201.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "196d3ecfc4b759a8573bf86a9b3f8996b304b3732e4c7de81655f875f6efdca6"
+dependencies = [
+ "anyhow",
+ "id-arena",
+ "indexmap 2.0.0",
+ "log",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "unicode-xid",
+ "wasmparser",
+]
+
+[[package]]
+name = "witx"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b"
+dependencies = [
+ "anyhow",
+ "log",
+ "thiserror",
+ "wast",
+]
+
+[[package]]
+name = "workspace"
+version = "0.1.0"
+dependencies = [
+ "any_vec",
+ "anyhow",
+ "async-recursion 1.0.5",
+ "bincode",
+ "call",
+ "client",
+ "clock",
+ "collections",
+ "db",
+ "derive_more",
+ "env_logger",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "itertools 0.11.0",
+ "language",
+ "lazy_static",
+ "log",
+ "node_runtime",
+ "parking_lot",
+ "postage",
+ "project",
+ "schemars",
+ "serde",
+ "serde_json",
+ "settings",
+ "smallvec",
+ "sqlez",
+ "task",
+ "theme",
+ "ui",
+ "util",
+ "uuid",
+]
+
+[[package]]
+name = "worktree"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "client",
+ "clock",
+ "collections",
+ "fs",
+ "futures 0.3.28",
+ "fuzzy",
+ "git",
+ "git2",
+ "gpui",
+ "ignore",
+ "itertools 0.11.0",
+ "language",
+ "log",
+ "lsp",
+ "parking_lot",
+ "postage",
+ "pretty_assertions",
+ "rand 0.8.5",
+ "rpc",
+ "schemars",
+ "serde",
+ "serde_json",
+ "settings",
+ "smol",
+ "sum_tree",
+ "text",
+ "util",
+]
+
+[[package]]
+name = "wyz"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+dependencies = [
+ "tap",
+]
+
+[[package]]
+name = "x11-clipboard"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b98785a09322d7446e28a13203d2cae1059a0dd3dfb32cb06d0a225f023d8286"
+dependencies = [
+ "libc",
+ "x11rb",
+]
+
+[[package]]
+name = "x11rb"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
+dependencies = [
+ "as-raw-xcb-connection",
+ "gethostname",
+ "libc",
+ "rustix 0.38.32",
+ "x11rb-protocol",
+]
+
+[[package]]
+name = "x11rb-protocol"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
+
+[[package]]
+name = "xattr"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "xcursor"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911"
+
+[[package]]
+name = "xdg-home"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "xkbcommon"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13867d259930edc7091a6c41b4ce6eee464328c6ff9659b7e4c668ca20d4c91e"
+dependencies = [
+ "as-raw-xcb-connection",
+ "libc",
+ "memmap2 0.8.0",
+ "xkeysym",
+]
+
+[[package]]
+name = "xkeysym"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
+
+[[package]]
+name = "xmlparser"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd"
+
+[[package]]
+name = "xmlwriter"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
+
+[[package]]
+name = "xtask"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "clap 4.4.4",
+]
+
+[[package]]
+name = "yansi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+
+[[package]]
+name = "yazi"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1"
+
+[[package]]
+name = "yeslogic-fontconfig-sys"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2bbd69036d397ebbff671b1b8e4d918610c181c5a16073b96f984a38d08c386"
+dependencies = [
+ "const-cstr",
+ "dlib",
+ "once_cell",
+ "pkg-config",
+]
+
+[[package]]
+name = "zbus"
+version = "4.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030"
+dependencies = [
+ "async-broadcast",
+ "async-executor",
+ "async-fs 2.1.1",
+ "async-io 2.3.1",
+ "async-lock 3.3.0",
+ "async-process 2.1.0",
+ "async-recursion 1.0.5",
+ "async-task",
+ "async-trait",
+ "blocking",
+ "derivative",
+ "enumflags2",
+ "event-listener 5.1.0",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "hex",
+ "nix 0.27.1",
+ "ordered-stream",
+ "rand 0.8.5",
+ "serde",
+ "serde_repr",
+ "sha1",
+ "static_assertions",
+ "tracing",
+ "uds_windows",
+ "windows-sys 0.52.0",
+ "xdg-home",
+ "zbus_macros",
+ "zbus_names",
+ "zvariant",
+]
+
+[[package]]
+name = "zbus_macros"
+version = "4.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7"
+dependencies = [
+ "proc-macro-crate 1.3.1",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "syn 1.0.109",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zbus_names"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
+dependencies = [
+ "serde",
+ "static_assertions",
+ "zvariant",
+]
+
+[[package]]
+name = "zed"
+version = "0.130.6"
+dependencies = [
+ "activity_indicator",
+ "anyhow",
+ "assets",
+ "assistant",
+ "audio",
+ "auto_update",
+ "backtrace",
+ "breadcrumbs",
+ "call",
+ "channel",
+ "chrono",
+ "clap 4.4.4",
+ "cli",
+ "client",
+ "clock",
+ "collab_ui",
+ "collections",
+ "command_palette",
+ "copilot",
+ "copilot_ui",
+ "db",
+ "diagnostics",
+ "editor",
+ "embed-manifest",
+ "env_logger",
+ "extension",
+ "extensions_ui",
+ "feedback",
+ "file_finder",
+ "file_icons",
+ "fs",
+ "futures 0.3.28",
+ "go_to_line",
+ "gpui",
+ "image_viewer",
+ "install_cli",
+ "isahc",
+ "journal",
+ "language",
+ "language_selector",
+ "language_tools",
+ "languages",
+ "log",
+ "markdown_preview",
+ "menu",
+ "mimalloc",
+ "node_runtime",
+ "notifications",
+ "outline",
+ "parking_lot",
+ "profiling",
+ "project",
+ "project_panel",
+ "project_symbols",
+ "quick_action_bar",
+ "recent_projects",
+ "release_channel",
+ "rope",
+ "search",
+ "serde",
+ "serde_json",
+ "settings",
+ "simplelog",
+ "smol",
+ "tab_switcher",
+ "task",
+ "tasks_ui",
+ "terminal_view",
+ "theme",
+ "theme_selector",
+ "tree-sitter-rust",
+ "urlencoding",
+ "util",
+ "uuid",
+ "vim",
+ "welcome",
+ "winresource",
+ "workspace",
+ "zed_actions",
+]
+
+[[package]]
+name = "zed_actions"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+ "serde",
+]
+
+[[package]]
+name = "zed_astro"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_clojure"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_csharp"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_erlang"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_extension_api"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5c51cad4152bb5eb35b20dccdcbfb36f48d8952a2ed2d3e25b70361007d953b"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "zed_extension_api"
+version = "0.0.5"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "zed_extension_api"
+version = "0.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5f4ae4e302a80591635ef9a236b35fde6fcc26cfd060e66fde4ba9f9fd394a1"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "zed_gleam"
+version = "0.0.2"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_haskell"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_php"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_prisma"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_purescript"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_svelte"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_toml"
+version = "0.0.2"
+dependencies = [
+ "zed_extension_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "zed_uiua"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.4",
+]
+
+[[package]]
+name = "zed_zig"
+version = "0.0.1"
+dependencies = [
+ "zed_extension_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "zeno"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "zstd"
+version = "0.11.2+zstd.1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
+dependencies = [
+ "zstd-safe",
+]
+
+[[package]]
+name = "zstd-safe"
+version = "5.0.2+zstd.1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
+dependencies = [
+ "libc",
+ "zstd-sys",
+]
+
+[[package]]
+name = "zstd-sys"
+version = "2.0.8+zstd.1.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "zvariant"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a"
+dependencies = [
+ "endi",
+ "enumflags2",
+ "serde",
+ "static_assertions",
+ "url",
+ "zvariant_derive",
+]
+
+[[package]]
+name = "zvariant_derive"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc"
+dependencies = [
+ "proc-macro-crate 3.1.0",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_utils"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
diff --git a/pkgs/by-name/ze/zed-editor/package.nix b/pkgs/by-name/ze/zed-editor/package.nix
new file mode 100644
index 0000000000000..d8df94bf889c6
--- /dev/null
+++ b/pkgs/by-name/ze/zed-editor/package.nix
@@ -0,0 +1,208 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  copyDesktopItems,
+  curl,
+  pkg-config,
+  protobuf,
+  xcbuild,
+  fontconfig,
+  freetype,
+  libgit2,
+  openssl,
+  sqlite,
+  zlib,
+  zstd,
+  alsa-lib,
+  libxkbcommon,
+  wayland,
+  xorg,
+  stdenv,
+  darwin,
+  makeFontsConf,
+  vulkan-loader,
+  makeDesktopItem,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "zed";
+  version = "0.130.6";
+
+  src = fetchFromGitHub {
+    owner = "zed-industries";
+    repo = "zed";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ENlvjqoxPInTVpt7qpV+02AbAOCnfCrowfDTyyr4Y7A=";
+    fetchSubmodules = true;
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "async-pipe-0.1.3" = "sha256-g120X88HGT8P6GNCrzpS5SutALx5H+45Sf4iSSxzctE=";
+      "blade-graphics-0.3.0" = "sha256-0TmunFnq9MBxm4TrAkI0PxB58qJEf7oWLWhHq5cVsQ8=";
+      "bromberg_sl2-0.6.0" = "sha256-+bwdnk3EgYEAxQSP4KpEPicCfO+r2er1DRZjvfF4jSM=";
+      "font-kit-0.11.0" = "sha256-+4zMzjFyMS60HfLMEXGfXqKn6P+pOngLA45udV09DM8=";
+      "lsp-types-0.94.1" = "sha256-kplgPsafrgZFMI1D9pQCwmg+FKMn5HNWLbcgdXHUFVU=";
+      "nvim-rs-0.6.0-pre" = "sha256-bdWWuCsBv01mnPA5e5zRpq48BgOqaqIcAu+b7y1NnM8=";
+      "pathfinder_simd-0.5.3" = "sha256-bakBcAQZJdHQPXybe0zoMzE49aOHENQY7/ZWZUMt+pM=";
+      "taffy-0.3.11" = "sha256-0hXOEj6IjSW8e1t+rvxBFX6V9XRum3QO2Des1XlHJEw=";
+      "tree-sitter-0.20.100" = "sha256-k8au4++UJyaOCNo0cqokaQ5Is3BmIiCBSxiUkbrzhFQ=";
+      "tree-sitter-bash-0.20.4" = "sha256-VP7rJfE/k8KV1XN1w5f0YKjCnDMYU1go/up0zj1mabM=";
+      "tree-sitter-cpp-0.20.0" = "sha256-2QYEFkpwcRmh2kf4qEAL2a5lGSa316CetOhF73e7rEM=";
+      "tree-sitter-css-0.19.0" = "sha256-5Qti/bFac2A1PJxqZEOuSLK3GGKYwPDKAp3OOassBxU=";
+      "tree-sitter-dart-0.0.1" = "sha256-FE6zXy0lAUWWayrM3urZFnQaEYBcnmaVANcUUnvw1q4=";
+      "tree-sitter-elixir-0.1.0" = "sha256-hBHqQ3eBjknRPJjP+lQJU6NPFhUMtiv4FbKsTw28Bog=";
+      "tree-sitter-elm-5.6.4" = "sha256-0LpuyebOB5ew9fULBcaw8aUbF7HM5sXQpv+Jroz4tXg=";
+      "tree-sitter-glsl-0.1.4" = "sha256-TRuiT3ndCeDCsCFokAN8cosNKccB0NjWVRiBJuBJXZw=";
+      "tree-sitter-go-0.19.1" = "sha256-5+L5QqVjZyeh+sKfxKZWrjIBFE5xM9KZlHcLiHzJCIA=";
+      "tree-sitter-gomod-1.0.2" = "sha256-OPtqXe6OMC9c5dgFH8Msj+6DU01LvLKVbCzGLj0PnLI=";
+      "tree-sitter-gowork-0.0.1" = "sha256-lM4L4Ap/c8uCr4xUw9+l/vaGb3FxxnuZI0+xKYFDPVg=";
+      "tree-sitter-hcl-0.0.1" = "sha256-saVKSYUJY7OuIuNm9EpQnhFO/vQGKxCXuv3EKYOJzfs=";
+      "tree-sitter-heex-0.0.1" = "sha256-6LREyZhdTDt3YHVRPDyqCaDXqcsPlHOoMFDb2B3+3xM=";
+      "tree-sitter-jsdoc-0.20.0" = "sha256-fKscFhgZ/BQnYnE5EwurFZgiE//O0WagRIHVtDyes/Y=";
+      "tree-sitter-json-0.20.0" = "sha256-fZNftzNavJQPQE4S1VLhRyGQRoJgbWA5xTPa8ZI5UX4=";
+      "tree-sitter-markdown-0.0.1" = "sha256-F8VVd7yYa4nCrj/HEC13BTC7lkV3XSb2Z3BNi/VfSbs=";
+      "tree-sitter-nix-0.0.1" = "sha256-+o+f1TlhcrcCB3TNw1RyCjVZ+37e11nL+GWBPo0Mxxg=";
+      "tree-sitter-nu-0.0.1" = "sha256-V6EZfba5e0NdOG4n3DNI25luNXfcCN3+/vNYuz9llUk=";
+      "tree-sitter-ocaml-0.20.4" = "sha256-ycmjIKfrsVSVHmPP3HCxfk5wcBIF/JFH8OnU8mY1Cc8=";
+      "tree-sitter-proto-0.0.2" = "sha256-W0diP2ByAXYrc7Mu/sbqST6lgVIyHeSBmH7/y/X3NhU=";
+      "tree-sitter-racket-0.0.1" = "sha256-ie64no94TtAWsSYaBXmic4oyRAA01fMl97+JWcFU1E8=";
+      "tree-sitter-scheme-0.2.0" = "sha256-K3+zmykjq2DpCnk17Ko9LOyGQTBZb1/dgVXIVynCYd4=";
+      "tree-sitter-typescript-0.20.2" = "sha256-cpOAtfvlffS57BrXaoa2xa9NUYw0AsHxVI8PrcpgZCQ=";
+      "tree-sitter-vue-0.0.1" = "sha256-8v2e03A/Uj6zCJTH4j6TPwDQcNFeze1jepMADT6UVis=";
+      "tree-sitter-yaml-0.0.1" = "sha256-S59jLlipBI2kwFuZDMmpv0TOZpGyXpbAizN3yC6wJ5I=";
+    };
+  };
+
+  nativeBuildInputs = [
+    copyDesktopItems
+    curl
+    pkg-config
+    protobuf
+    rustPlatform.bindgenHook
+  ] ++ lib.optionals stdenv.isDarwin [ xcbuild.xcrun ];
+
+  buildInputs =
+    [
+      curl
+      fontconfig
+      freetype
+      libgit2
+      openssl
+      sqlite
+      zlib
+      zstd
+    ]
+    ++ lib.optionals stdenv.isLinux [
+      alsa-lib
+      libxkbcommon
+      wayland
+      xorg.libxcb
+    ]
+    ++ lib.optionals stdenv.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        AppKit
+        CoreAudio
+        CoreFoundation
+        CoreGraphics
+        CoreMedia
+        CoreServices
+        CoreText
+        Foundation
+        IOKit
+        Metal
+        Security
+        SystemConfiguration
+        VideoToolbox
+      ]
+    );
+
+  buildFeatures = [ "gpui/runtime_shaders" ];
+
+  env = {
+    ZSTD_SYS_USE_PKG_CONFIG = true;
+    FONTCONFIG_FILE = makeFontsConf {
+      fontDirectories = [
+        "${src}/assets/fonts/zed-mono"
+        "${src}/assets/fonts/zed-sans"
+      ];
+    };
+  };
+
+  postFixup = lib.optionalString stdenv.isLinux ''
+    patchelf --add-rpath ${vulkan-loader}/lib $out/bin/*
+    patchelf --add-rpath ${wayland}/lib $out/bin/*
+  '';
+
+  checkFlags = lib.optionals stdenv.hostPlatform.isLinux [
+    # Fails with "On 2823 Failed to find test1:A"
+    "--skip=test_base_keymap"
+    # Fails with "called `Result::unwrap()` on an `Err` value: Invalid keystroke `cmd-k`"
+    # https://github.com/zed-industries/zed/issues/10427
+    "--skip=test_disabled_keymap_binding"
+  ];
+
+  postInstall = ''
+    mv $out/bin/Zed $out/bin/zed
+    install -D ${src}/crates/zed/resources/app-icon@2x.png $out/share/icons/hicolor/1024x1024@2x/apps/Zed.png
+    install -D ${src}/crates/zed/resources/app-icon.png $out/share/icons/hicolor/512x512/apps/Zed.png
+  '';
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "dev.zed.Zed";
+      exec = "zed %F";
+      tryExec = "zed";
+      icon = "Zed";
+      comment = meta.description;
+      desktopName = "Zed";
+      genericName = "Text Editor";
+      categories = [
+        "Utility"
+        "TextEditor"
+        "Development"
+      ];
+      keywords = [
+        "Text"
+        "Editor"
+      ];
+      terminal = false;
+      type = "Application";
+      mimeTypes = [
+        "inode/directory"
+        "text/plain"
+        "text/x-makefile"
+        "text/x-c++hdr"
+        "text/x-c++src"
+        "text/x-chdr"
+        "text/x-csrc"
+        "text/x-java"
+        "text/x-moc"
+        "text/x-pascal"
+        "text/x-tcl"
+        "text/x-tex"
+        "application/x-shellscript"
+        "text/x-c"
+        "text/x-c++"
+      ];
+    })
+  ];
+
+  meta = with lib; {
+    description = "High-performance, multiplayer code editor from the creators of Atom and Tree-sitter";
+    homepage = "https://zed.dev";
+    changelog = "https://github.com/zed-industries/zed/releases/tag/v${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [
+      GaetanLepage
+      niklaskorz
+    ];
+    mainProgram = "zed";
+    platforms = platforms.all;
+    # Currently broken on darwin: https://github.com/NixOS/nixpkgs/pull/303233#issuecomment-2048650618
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/pkgs/data/documentation/man-pages/default.nix b/pkgs/data/documentation/man-pages/default.nix
index 7befda407d48b..deb6a4005f666 100644
--- a/pkgs/data/documentation/man-pages/default.nix
+++ b/pkgs/data/documentation/man-pages/default.nix
@@ -2,26 +2,21 @@
 
 stdenv.mkDerivation rec {
   pname = "man-pages";
-  version = "6.05.01";
+  version = "6.7";
 
   src = fetchurl {
     url = "mirror://kernel/linux/docs/man-pages/${pname}-${version}.tar.xz";
-    sha256 = "sha256-uWq2tEpojJHRtXLlL+zlGeHP0rtMM/5wFPw/0e8/nK4=";
+    hash = "sha256-gkA61LwXqtuST2hji3nWkwssvVUVMSSKepaId52077I=";
   };
 
-  makeFlags = [ "prefix=$(out)" ];
+  makeFlags = [
+    # Clobber /usr/bin/env with the one in PATH.
+    "SHELL=env"
+    "prefix=${placeholder "out"}"
+  ];
 
   dontBuild = true;
 
-  postInstall = ''
-    # conflict with shadow-utils
-    rm $out/share/man/man5/passwd.5 \
-       $out/share/man/man3/getspnam.3
-
-    # The manpath executable looks up manpages from PATH. And this package won't
-    # appear in PATH unless it has a /bin folder
-    mkdir -p $out/bin
-  '';
   outputDocdev = "out";
 
   enableParallelInstalling = true;
diff --git a/pkgs/data/fonts/iosevka/bin.nix b/pkgs/data/fonts/iosevka/bin.nix
index 12c5a6d8656d6..749658086bf50 100644
--- a/pkgs/data/fonts/iosevka/bin.nix
+++ b/pkgs/data/fonts/iosevka/bin.nix
@@ -17,7 +17,7 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "${name}-bin";
-  version = "29.0.5";
+  version = "29.1.0";
 
   src = fetchurl {
     url = "https://github.com/be5invis/Iosevka/releases/download/v${version}/PkgTTC-${name}-${version}.zip";
diff --git a/pkgs/data/fonts/iosevka/default.nix b/pkgs/data/fonts/iosevka/default.nix
index d421fd7d6be3d..a7463af5de917 100644
--- a/pkgs/data/fonts/iosevka/default.nix
+++ b/pkgs/data/fonts/iosevka/default.nix
@@ -55,16 +55,16 @@ assert (extraParameters != null) -> set != null;
 
 buildNpmPackage rec {
   pname = "Iosevka${toString set}";
-  version = "29.0.5";
+  version = "29.1.0";
 
   src = fetchFromGitHub {
     owner = "be5invis";
     repo = "iosevka";
     rev = "v${version}";
-    hash = "sha256-Ir/HS9MFqOO7CDDLnqFX+6vCg06U5cYAcNKFyh5Ioc8=";
+    hash = "sha256-LtbkumAAx77sG2Mw5gkjFK+wtwibKP6uVT2buEkERik=";
   };
 
-  npmDepsHash = "sha256-tzrMAZv1ATYwPVBUiDm4GPVj+TVAA3hMdc3MrdblOIw=";
+  npmDepsHash = "sha256-hC5283V5olhZlwY8PgTywTrbx93acclc4N0YrZTaV7Y=";
 
   nativeBuildInputs = [
     remarshal
diff --git a/pkgs/data/fonts/iosevka/variants.nix b/pkgs/data/fonts/iosevka/variants.nix
index ae263adf2d05f..268f2c80f1b6c 100644
--- a/pkgs/data/fonts/iosevka/variants.nix
+++ b/pkgs/data/fonts/iosevka/variants.nix
@@ -1,93 +1,93 @@
 # This file was autogenerated. DO NOT EDIT!
 {
-  Iosevka = "0vvgmgva9j0mn0f6rza4vr7fdz3ypxlfl17ikcyyb2gblf5pj511";
-  IosevkaAile = "1lwfj4w0cyvzxf044ylph9vpv0807wfdy2rf2w0jhmzv5pqhzwn1";
-  IosevkaCurly = "03zjkiz7k5amlj0h36994fqjclj795mcxlv5913a7kpxwqwlwwxh";
-  IosevkaCurlySlab = "005ifmkm52arw184c7xdxyisxvzn2ai19bl5gniwh2waqrx6r8wv";
-  IosevkaEtoile = "0zsimpmvr4vaf1bsjg4lzi876ls29p3xx9agmh9rvmyv0nizys0i";
-  IosevkaSlab = "06fy0mq899n9i5qkiqfczkdkk289mp6px9mnrkwbrjajpsl30mng";
-  IosevkaSS01 = "15f2wj4vvxvqbvqqxqq90idarlic05mjrimj5s5mynamff8ixxni";
-  IosevkaSS02 = "1qlj7vsg6rg0ds8xx472m7gbh8128f0p1cx44ygk9vy072dh56mm";
-  IosevkaSS03 = "1m7l1c48rbkbn9wwzhiycrfh2vsm6lnamyvxkz3w10b1kww3w8ch";
-  IosevkaSS04 = "0l6g8sqfk6nig9pr22zng7csk7f6y9cllknihk0yvc8p53i8p2zg";
-  IosevkaSS05 = "0xyndq7wzfvbgwjpx3acp8rsrnbyp19p1ds79gjl8dyzmbqnl8c7";
-  IosevkaSS06 = "0hr5x608kbmpll9y9nqzy6ffv0kc3zs68gd1pnnxdd3qi0bawxm9";
-  IosevkaSS07 = "1x2ril5w5axjk19v49lqx4qiswa724cppgnw2apm3ccb5acrn8b3";
-  IosevkaSS08 = "1h6kpnbmsa002s26ffahsg7wn1b6yccg1217i5rm3jxnfv9yvvqc";
-  IosevkaSS09 = "1qyfqa5mar45vfirvn3rvgmv6gf7f43ckw6ihfh3q25dq700lkq4";
-  IosevkaSS10 = "19idljflcghbyyzzbbyrracpvi3jnx24fq0i9k5m48a32p7ay86v";
-  IosevkaSS11 = "0q1lwmrsd8fc8a9r5iknapvmh02p3wx26fa9azh9z4b97qy1bawq";
-  IosevkaSS12 = "1zj92l6iy8vmqfklgsq5pxxflrnbgzwx2kfm3l2dmd59r9b9crl0";
-  IosevkaSS13 = "05vphzvvss7rc5wvgfb8qk940qacxl74mvm63nal2iyy9rgbpsgm";
-  IosevkaSS14 = "0fnn8s944hbz78g3j2r69g31g2w5a9x8dng5gsc4y17492q9md9r";
-  IosevkaSS15 = "191jq0ray8dcrv7nidkr95bscf9qkhlvpka637lbfp3cvvqlnhl6";
-  IosevkaSS16 = "1mfivf9l3awsyjh6mhq56r1pd1fkpp5wrkpwbz9ag431n7pgiw4d";
-  IosevkaSS17 = "0891jxy0mabdlv0dfdfkaxb1lnid0abvw43bhhvvqgrcx6js2955";
-  IosevkaSS18 = "1d37i0vsbws14l1r4hxr9y44g60wxlpc5fs5w19syn6jk35rcwkn";
-  SGr-Iosevka = "03i7i943dvp5673ya0v243nq3pxplccy1az2irxds0mp609916cl";
-  SGr-IosevkaCurly = "189jgm3v4vy68icirgvakski4l5330hxgdx36r7vc4s62smpmh71";
-  SGr-IosevkaCurlySlab = "1075nkbxb51gkjn0zkh7kh8jzw0axn9pnrb310gpw9b04n2qxbhk";
-  SGr-IosevkaFixed = "0ff4znsmc5qgap8b27r609j55r89xyb3gjj70dys37dksbqb2y0h";
-  SGr-IosevkaFixedCurly = "0j1pjfrgb888cij2gpm8a1pqs6z6cwnnjawmjg4ps45c25m07f8g";
-  SGr-IosevkaFixedCurlySlab = "1vmypssc1scj02p9v4591pwp1vnmaya7l8r8f8m7vqmqg9lkh5si";
-  SGr-IosevkaFixedSlab = "1d3g70g90q1r0q9dm1vkggmb37siphjl132jcs41s9qavy85q6w5";
-  SGr-IosevkaFixedSS01 = "1slf9whfc7f7iishxypw2pi4kg3jbfacw4bqmnil4k8rar7hq2gi";
-  SGr-IosevkaFixedSS02 = "0lsz14nqgys9cacppb95s21cdixvf742h5pkp0i65g6ccqipbjk1";
-  SGr-IosevkaFixedSS03 = "1ibvw2ci516sn9krra7kq37v96rhwznznwrsc7ipqns2wqwq84hi";
-  SGr-IosevkaFixedSS04 = "1fdqpnp5338jv6isx5mcvpm6pard78jvnn2217rb13lmwp45sc70";
-  SGr-IosevkaFixedSS05 = "1sq5gscr02dx2kzjcxl0fbvpmyir3h0wmqqdb6zfp37bhcir9ac4";
-  SGr-IosevkaFixedSS06 = "037y2s503bh6051kpwicpa8fqwbxq0lhfldjh5k81mcrbzqaycwa";
-  SGr-IosevkaFixedSS07 = "1n929d52bzdm9nxdp8lxjlnd9nfdqi35vy1ssq7sy87aqlfp22l3";
-  SGr-IosevkaFixedSS08 = "0wyaw9l6bvh38ns9hvfgykbhkzxrmmczkccpj00ihxs0vy8yvc1c";
-  SGr-IosevkaFixedSS09 = "14akrpb22xb9cal2q6qgrm0abc41ikdf4np2j9g8038hy5l2lssy";
-  SGr-IosevkaFixedSS10 = "1nbv9k2jk7bx7m3hdw3mjg4fw90yx5am22fbx5abg6im807qqgcy";
-  SGr-IosevkaFixedSS11 = "1fhkfa8lbk9726jbspixqs2580mlillnfxapzb0znqavrkwv6lfn";
-  SGr-IosevkaFixedSS12 = "1j3kddd8zbrxm0834s57fbsrc3y3vq597ka7mcx2q5hha6yqnr15";
-  SGr-IosevkaFixedSS13 = "";
-  SGr-IosevkaFixedSS14 = "0ra5rj5ywj73ihh9bgiil0wd2xnw4h700mxa8nvs7jbw9hggvxjc";
-  SGr-IosevkaFixedSS15 = "04m5n333qf75jla3j710s3snqxyzzi316560lwnkq116sxi7zy0w";
-  SGr-IosevkaFixedSS16 = "0lxvh5bj8w7yvcx3yard04cssn1w6068xkg2c63hjyvhbhp8h787";
-  SGr-IosevkaFixedSS17 = "1xmh1wr1zvpjndra2891ywx31rswrb5zwcpmanwd9rhkv2yi9l3z";
-  SGr-IosevkaFixedSS18 = "1nkl49zlg3jw19d2mdnymwd8dcwl7q3hzf95rms8rlsv6s20bm14";
-  SGr-IosevkaSlab = "0k2fr5bl8yrmzgli4rjyishgca1wpgzqmi723fbrd5i9mi1130yz";
-  SGr-IosevkaSS01 = "0wkxqy77vgpphq7bjj5hqh21ciypl0fhs3g4j0fcwh8gw0fzzg5k";
-  SGr-IosevkaSS02 = "0r90fwi8lm6cmrlbrlrrjyjws391rj3458cy61gk7wnyh8i4ym51";
-  SGr-IosevkaSS03 = "08778yg5bqv46rw7dgwlh9b4dmw5q4jnw9cvd7zjbrsqnvc2fkk7";
-  SGr-IosevkaSS04 = "1lb4fp5gw33wx0ch238h0galmcd5bviv3rgjzkqwavmb38hi5i7h";
-  SGr-IosevkaSS05 = "0gfsbqfp1zg638a8lilzm0a0w3r7yh1jqr3dic9d8rhga46jh522";
-  SGr-IosevkaSS06 = "0kzv05b2azn00synmj4dimw30f0rihcl6nklkm4669lq7gmq9x2j";
-  SGr-IosevkaSS07 = "10irpnh6dv9xa69kmwni0jnv6f6f7pmbgd6zqmiw6182ivnszp33";
-  SGr-IosevkaSS08 = "0raxx217db2ra11j9bqx7vp7vmz4j73298rvwvlr8xl25mw7xikj";
-  SGr-IosevkaSS09 = "04cwa10sby3r6ya285jsly5lvvc6l8wrv012khp7abpmcdsssmys";
-  SGr-IosevkaSS10 = "099xlbai3m903j5zfbcn3hbhzqh8kk24lzlczdsr79igjaadwv92";
-  SGr-IosevkaSS11 = "1qfw6s7pb4s8dwbd1bfdxs99zviz3wawagaakjx4n3izcpzmmb1c";
-  SGr-IosevkaSS12 = "1cfbw20wa8g8vi244hjih081li1488fbgbzm4zcfrjfvqg334qyb";
-  SGr-IosevkaSS13 = "1m6xp2xwl9yv4qmzh0pddfyddh9pwdlvhjaiikhsblvhfqp7bj23";
-  SGr-IosevkaSS14 = "1d2agan90ri1mdvfyxjgjvdlfxf1140y7r77rzy29ihx466gagid";
-  SGr-IosevkaSS15 = "1xpy354fjnx9cg15qf02x874hphphnrmdzmv2nc0ib974aakkvdb";
-  SGr-IosevkaSS16 = "1y246rxs7grkaf4iapbghrywgwppc853ixb96k6ba2zs6lahb8j8";
-  SGr-IosevkaSS17 = "0xq6mwcjjy2gb8rkyvr7y5glzdl6040aask4fhslwhxj5fna817n";
-  SGr-IosevkaSS18 = "1x9lm1b4dj95ccwaiwan0fiwjrr4dxgj8p68amrzqg825clv62j3";
-  SGr-IosevkaTerm = "00g8bwjyhm8jdgw9lxdwxdd0rnsdfkf2ql26dh5s1pcr5ccxzv2p";
-  SGr-IosevkaTermCurly = "0dx37cmryn3vszv4mbq53l2362abqyz4ixaw9wc2jdcs81db8y07";
-  SGr-IosevkaTermCurlySlab = "14fs8bhrzl0prf8f6mglfcnyr92scpzs5iiy02rzikka3ksxvl98";
-  SGr-IosevkaTermSlab = "145j7dajx6bjgagvbbf3ynfinwx0iiwjf25qp6fkbnpza45jbzwc";
-  SGr-IosevkaTermSS01 = "1wyk1ys8jwsb3j5zgvx4kl7mn6kw3biq4yiqscr117birl3paz0m";
-  SGr-IosevkaTermSS02 = "0vqmxx0drm6d2jdggvb77p2nqgic2jrkbx5ay16jyflx5r3zg1xh";
-  SGr-IosevkaTermSS03 = "1csy3c99cmznrl2ij27z6ynhmhdfbw4hg8w4ikj670p8l01qn1z3";
-  SGr-IosevkaTermSS04 = "1fx49ah9z5hs8a5bqlfvgrc9nsj3k5k2j812bc34iqbki1l5wssi";
-  SGr-IosevkaTermSS05 = "0frgvdz3pq3drjc0sfsx09lv6x3f0b4gr7y3vy6g8c69r3vdqhps";
-  SGr-IosevkaTermSS06 = "1mnkvqdwsswqi2z4ja49my9dbbhf95qm4ig3wmbfjwgv78v0z0ys";
-  SGr-IosevkaTermSS07 = "1vy9rbwfmcfb2wwdi9sk7pwhpmmx50ldabfcdm5rg42fzz3lkckm";
-  SGr-IosevkaTermSS08 = "0xnsw8c4r77gwkbknhlbrsr9b0485bhplp3blrp3m09s61a8zkas";
-  SGr-IosevkaTermSS09 = "09ks2z88l1rnz268bxw0cddp30km8fxlfl4q0ply6rryx2jw81pb";
-  SGr-IosevkaTermSS10 = "18rpa0nmv709afy2bid8hkiij04wary2ayq1gbwx7avjis9xw8mk";
-  SGr-IosevkaTermSS11 = "0myam4a9h51iss8vczw45hh90zz5is1q9isy89lih61jkg2yh925";
-  SGr-IosevkaTermSS12 = "1qkjkv1rn1pc8iri6x1jmagdhnq50mfzjx6fc1ajlhiqkwn2428n";
-  SGr-IosevkaTermSS13 = "06y59cq1k5hadz5231r9xzy48awwyxq3k752bh9mr39x4r0k1y8z";
-  SGr-IosevkaTermSS14 = "13vqi1sxzjbcc682a1r5lf71lxlhi0xmsyl9x3samp144a2kq671";
-  SGr-IosevkaTermSS15 = "0q0gv924jm774n14ghkybk2ssmvm8hy1sxypfrfd2871xihg0xm1";
-  SGr-IosevkaTermSS16 = "0rycjqp68y7wnnd4k1r6m70blfma0qly2r1v1mfar7yya80s1yzm";
-  SGr-IosevkaTermSS17 = "1n4hg9c56ycshj7wvhc90y3d2nzhz5bpjy8im2wglbw24k98f6i1";
-  SGr-IosevkaTermSS18 = "1qg3kys0gm8mw7xf989dbdygxhal1bil0ca3caljm0bahnri20bm";
+  Iosevka = "1mz2l4j2kczk540gx2nbj40apympy9b7sih9nr3585yg14axihfa";
+  IosevkaAile = "0rlajr2gzj8n2jynz86yr382jbxffi6rygkb7a2psp6b91p3q8yg";
+  IosevkaCurly = "1zp5015qvrnzpp2hr8cxrdb8qw86bmn80cr7jwl119dmdsk7aaks";
+  IosevkaCurlySlab = "1lkq462j3a2bm791d67xsymdgz3fjjakakdzyjj3plvycg39rszd";
+  IosevkaEtoile = "17shszmnrsxis5hvafsp3j0p7izzqw9fv0j0bp7x0dxljdhj9f4x";
+  IosevkaSlab = "03xcj0y7m9rp9p9vh8mah83kap3bfssbxfpl4jwdjq661f43pkxw";
+  IosevkaSS01 = "1hc3x3m5p22483asdfy1anvlxvpagwf8k23kri0r5i003cyhs4kb";
+  IosevkaSS02 = "0rcmiirz5hkfb8pjsgz1sqjr6dj6w922yx60fz8icg5743q7n8gs";
+  IosevkaSS03 = "02lyihd7acr6ai22k78qk18zfgs63rmwv57v2hkz248nz04xhg5v";
+  IosevkaSS04 = "06by2zj9m5v70hpa7krf443817dikzyc1sawldgqjz83nwhnnbyq";
+  IosevkaSS05 = "1f6bvc47rc843n6a12j3mdf223df8rr542xjvg4zh9g6lmm35bj9";
+  IosevkaSS06 = "0vrpygvg5ywhqzam1yndmbxlq72fmab70ns6pmn9yx4gpa95gdr3";
+  IosevkaSS07 = "0g69bwhxgnk8lyqyvvg7hg88lfgakh4vjkxcjpqnymia3bd5siiy";
+  IosevkaSS08 = "0a02ar74m8cas3x9mfwi1ncbnvrgcipii17qip0c3f1d7a0qpf8i";
+  IosevkaSS09 = "1mh77424jxnf5hicy9v3kgzngy4cvh0kwkqpyfhdk8f7alqnlk8v";
+  IosevkaSS10 = "05bqjz33j78q4daf40js6rcli8q7i2y1ldxnpgsrlirk7cr3q88y";
+  IosevkaSS11 = "11blakgiqhvl5z34py7lw23m32f1qqinajrya1pi10i2q2kwhm06";
+  IosevkaSS12 = "0zb9xrw83a3g4rany2prkxw6x707rxziv0fjj1vjmdpxcdpmndi6";
+  IosevkaSS13 = "1li250cjnyihs1ha3y3xhw3fbr60bz068513zjf7pjqwjpaj1lqq";
+  IosevkaSS14 = "027g4lj3qqmq6m2bpk79i8bf0d402yqwnk800zzbhvgc32pmrwz5";
+  IosevkaSS15 = "0ndn2y8sq9b3667j4cvz5nqyfs5sldn231xba4q79naq4cgjphkl";
+  IosevkaSS16 = "17vndj8h8dcgbsvzmjvzyzj30zzpqjyxch346a1zhrpaq4slmahp";
+  IosevkaSS17 = "0y95r32x5z75nk3rqvqx9makr3lpkyap8zlwg1aq2hfcnfppf2mf";
+  IosevkaSS18 = "1w70hv0fapx3a7zmnrayzxc0wxsk6rc9czr2spjjy42l60nrf4fl";
+  SGr-Iosevka = "1n8haiwyvsxi9qf2h63jp2ilr9iqc7dgw7j3znji8dpwzvyl86hh";
+  SGr-IosevkaCurly = "0g86gdhqw231bgqy26shi8bm6216rvyxzwvnjis7hjqg3b312z9x";
+  SGr-IosevkaCurlySlab = "0cy1nzqn138cd1xipb76pz36dd3mgss2vmmqlbqwjjcwpr8h0s0s";
+  SGr-IosevkaFixed = "187g1q32blj0nkfd3yxjgscnz7zslh5k58abnx7fjd30s5n5yscr";
+  SGr-IosevkaFixedCurly = "1mgbbhazvqxm1r9cl6slr1y0bdna6h7as0q5iggh6zqan0zrr70c";
+  SGr-IosevkaFixedCurlySlab = "1v8gsjbl5136scnd06k7hhbkzsvjbg9j2g1xj5pgvda0lanqy0r4";
+  SGr-IosevkaFixedSlab = "05jf8yzkp61aggyb8rky9wlj16g9xfhf0qgr8n9p4wf51i1fikky";
+  SGr-IosevkaFixedSS01 = "1h43f0vn1hlv7676v620dss9ijwlnjkdjzf3zs590k5cm0xpfmfj";
+  SGr-IosevkaFixedSS02 = "004idwfv9fww05q44bdqcc1m47sjdkh0ybrv3k3djgkm4ii3irjf";
+  SGr-IosevkaFixedSS03 = "0l4i8fzy1ypfcb43475jyccij8a9s2bm7pvbbrckkhmi357f53mh";
+  SGr-IosevkaFixedSS04 = "15kmg0xvi1l32fd3swl5rz539xxif5vx57rr0byrg9bi9ksvsfg6";
+  SGr-IosevkaFixedSS05 = "07i8nd9z42xxjqb73if3zqznipgkjlvh06rckrp3k9ylpr608rgr";
+  SGr-IosevkaFixedSS06 = "0s9zh2v0qykqjrms8wbrarjid3vjd3d0mas7pl75d207smcy1sf2";
+  SGr-IosevkaFixedSS07 = "1bkqj44xjnafp1vmlyg91zpjwsqc991infbpcgrmm1kd7nxsdki1";
+  SGr-IosevkaFixedSS08 = "1jyrnc94cr47glmjn9as5yz534j2lzb171rr5ybmjf1f1iir8hh5";
+  SGr-IosevkaFixedSS09 = "1kpf263mjddjdl4nk06pp0x48ia73pyicvqkkk6jw556w0gbmd38";
+  SGr-IosevkaFixedSS10 = "0dx5bjc8xhxg6a6h6620v3nz3jnldq4is1cw2g4j0xxr2wigi1q2";
+  SGr-IosevkaFixedSS11 = "0zc66j2x7z95lycmi7phyjl7wxf8fxy0x6dywsksm54rzqpw2x2n";
+  SGr-IosevkaFixedSS12 = "0z7riwx6kq3v35vap4vnp23xlwdczp4mdzkwq8w73v0ki47mm1vf";
+  SGr-IosevkaFixedSS13 = "0nq1l70fw1rlj6ijs3drjrgwsfrgl3r7hzmv4dzaw3135irbw7jl";
+  SGr-IosevkaFixedSS14 = "15i7qy09x7xgcl097l430nbs4zfmdqsjqlqxlnvxh8l7if52glx0";
+  SGr-IosevkaFixedSS15 = "04pl83npfvy7zyhxnzsds04sq0ffilkgvj74i8w74jrr6ncsigc5";
+  SGr-IosevkaFixedSS16 = "0ib27fr1mj6zdyp99h425wyw1g4a0qdgz7wkbvnvjm7s9api750w";
+  SGr-IosevkaFixedSS17 = "0ln4i0q5yszb1162rm6dgfnssqc09zak400rjhwkf89z8nggyjnr";
+  SGr-IosevkaFixedSS18 = "0pi4qnzjlkzfdlnf853aamhb1dbinhcs42al6dara8j4la2mw9b0";
+  SGr-IosevkaSlab = "17fcn0b79z901kdzyjxlx46d6b40x2rib6lnh6bja7g4n42ha8rc";
+  SGr-IosevkaSS01 = "1xrdrydi9ync2iybpbf4k5iax1i7pfbmn1grbql07b13snagcjsy";
+  SGr-IosevkaSS02 = "13m6si5mamblvdbnaz16fl9gnpq0r5zr0iwrv4fycs21bz12gz3w";
+  SGr-IosevkaSS03 = "0s6ljh6igx7i188c86xy3gpwc37xzm2d5w3f6sdp1sg8cgr71iaf";
+  SGr-IosevkaSS04 = "15xlzn0mi150h8hy03bz611w5vla61nhannglfmsa8bljqwb33sp";
+  SGr-IosevkaSS05 = "1ljkb44sycdh6gira2fjflbmcfkqs3fsv2xf493bl2mvd46kkh2b";
+  SGr-IosevkaSS06 = "1ra5s2f1ydpzg742yg1d1fawvhvxijq8ibi7maf99k1pf4qkpvak";
+  SGr-IosevkaSS07 = "1cx9k8f6qnqfz2klcqdbnbz9ndr353kvg5w817b84zqbb2isyy2g";
+  SGr-IosevkaSS08 = "0i3sz05nmabvxa62j85hw4hs53q378x4sy715af8cpzy1xwg46qh";
+  SGr-IosevkaSS09 = "1pbd35y5rfa7hlvgci3a5mfixpq3dcg69yd539csy4riz99nbnzz";
+  SGr-IosevkaSS10 = "0br4g7hdf3crnxkax2qy6nm1prgygl8j78jlhkfqhzfmzxajf2v3";
+  SGr-IosevkaSS11 = "1k6vg4xkarch1vxry6wk1fsns563a6afv88pd286gid332hjlzk5";
+  SGr-IosevkaSS12 = "01sraf0kw9kfm33ybglpqml59blggsp7q4hpi2jmf2nm05qzd5kz";
+  SGr-IosevkaSS13 = "0ga9j1cd9vgiwji2pz3w1dmgd7r8abnd8486fyfjqzjcw9vh4w06";
+  SGr-IosevkaSS14 = "0d1d65d52r7snmzhyb8r6i78z7mjmhz8psw20843bg8wrbpd35yq";
+  SGr-IosevkaSS15 = "11bxcnpj4b6w9v4kwg6lfg4gingh9aigfwwi7q7iv8bzhv6pznng";
+  SGr-IosevkaSS16 = "0bk8cs7qm4q36s28hrdg3sd7b6v2b9xfvam8vsxfbdsdwy8p7ksv";
+  SGr-IosevkaSS17 = "0qz53fa53bin4an8dh66j29j019zhb4pni1j6isijm1lr37i7xmf";
+  SGr-IosevkaSS18 = "02d57rs879r8rnikdpcr6vk1i191c674jvxw7qzanyflfi9xr90m";
+  SGr-IosevkaTerm = "1pamv5s6d11kxvhcy6id985rz895y02px65dv7s761ci5a1rvayx";
+  SGr-IosevkaTermCurly = "09781j6hhv7v3qrh79kdg3kzyfdwfy217fz5mwhr36qjikwlbbiq";
+  SGr-IosevkaTermCurlySlab = "1kx0nzgcrggwgw06520nrfhym5yi6k1rfgbgdc6f7a93hdkyb8v1";
+  SGr-IosevkaTermSlab = "07i6wbqxaaxr4xg9avs7473x0w2zcyg6zxpgby8l7lcv4g6wrn23";
+  SGr-IosevkaTermSS01 = "1g8lbkk5z1kypcwhkn9izdbg246imnhfa0g2xssy2xd41jmk9djn";
+  SGr-IosevkaTermSS02 = "04n26jkd8dp91n1a0ifr4srsxhpg3rcp9k56r1xjrc0wjpwmw05n";
+  SGr-IosevkaTermSS03 = "108160gn6ggw1piz7r4ngwyfhycqhx350v8x6lcrfjlcx1mp5isk";
+  SGr-IosevkaTermSS04 = "0qw7n2i8p323mr73pimjyb1rlk2m07d34qswgwpqvfj0jbbp3bp3";
+  SGr-IosevkaTermSS05 = "0diwqrdyl43c6kng7rvg8wc7m2r5bri999rvn99xdhsll644b7zd";
+  SGr-IosevkaTermSS06 = "08wql4iwkczxb0nz74iwnkr2gnafw4wa3x2yaxyd7rqf5qdlf0pr";
+  SGr-IosevkaTermSS07 = "1hlcfx89yz0j0f93v0gww72m8jdy8k6cbmj7nhh4yqyvph9clqqa";
+  SGr-IosevkaTermSS08 = "1z4qxhlibyimjwizwp5i3b8c827c4pvdfib1ma7f8c654jni7v8k";
+  SGr-IosevkaTermSS09 = "1847m7zksg0ndn8kzx7hlqmwc9hs7rgaywqqzyp7ahpa5cwyk9zr";
+  SGr-IosevkaTermSS10 = "16nyrrim1g0zf5n4mp9k1iz8l5pgb3w9hlafhl4ys5xn7fw47cfc";
+  SGr-IosevkaTermSS11 = "0ry7h0ghwgi5ra36dgsc8zdkyxrd8srpc12ix9glcficbkhkkisp";
+  SGr-IosevkaTermSS12 = "1iri5bcjlwcni9k64y7cq3rh4106hrimpi4c47ii249nk6q2ppak";
+  SGr-IosevkaTermSS13 = "0qkkxq4gmf13wzic31y477hi3rkyihs0bxmch8nh1myy8fmj4fik";
+  SGr-IosevkaTermSS14 = "04pjjmy3mh3721fxf10hgii2d8gzc7x76v4mv6m84spwa2g8c72c";
+  SGr-IosevkaTermSS15 = "1lix7g00xx4yrq7xc2jik0bh6iib7sqyn2zsrng9pph4589vri22";
+  SGr-IosevkaTermSS16 = "076wy7yix7d217c87pp61x4nwqmmlzpqzlidq5v49jcdrdxj4b7k";
+  SGr-IosevkaTermSS17 = "0qdb5603nxs93sv1f06svf0r0c9b0qmpnr3grif3qx09ifpqnkfb";
+  SGr-IosevkaTermSS18 = "0whg2lxndn3j5jlnhjy6zj1lkwd4q0qf0pbf8kajhvnlrn6yx0ca";
 }
diff --git a/pkgs/data/fonts/nerdfonts/shas.nix b/pkgs/data/fonts/nerdfonts/shas.nix
index 5a12102376308..b7ad0b67aa1b8 100644
--- a/pkgs/data/fonts/nerdfonts/shas.nix
+++ b/pkgs/data/fonts/nerdfonts/shas.nix
@@ -1,66 +1,69 @@
 {
-  "0xProto" = "0a05a5pzqrncijngdn39v4dckq54sip1sclyyazfwgz5lyazwsac";
-  "3270" = "0fdfwgjn2gx1a3pakyqlbq2yijrs7i8z7zcgb59qy7dfn1ddc1wc";
-  "Agave" = "1akiinz10nmwqffdms3367hizbnk2y2d545ypz94hfvp3b5kpagr";
-  "AnonymousPro" = "1nkg8wxcw0fvshvbphaqq3hwsi14lj5adh93nklg7y9zvqyyg63m";
-  "Arimo" = "04dfmy16jvrm0n4y2fwad9d3ijwibb3rhm8b0gxyfx30ipm7ar67";
-  "AurulentSansMono" = "0h7n1dxim6623s7b6nww72g28qfbdafakzpzmkdv0nywa0k0z6bw";
-  "BigBlueTerminal" = "1y5i2bkcszi48ajman2gm4vsqxdh03hf0l66bdzaihfxbxx7wsc1";
-  "BitstreamVeraSansMono" = "0y8b9ckq9im3mnzz66zk8alkgf450hy9a2gwb1zvb1s93kc8jmfb";
-  "CascadiaCode" = "1x5y55s6nc7k7lnrwv547a3vaf65q099mj17qindki27vylp4pvg";
-  "CascadiaMono" = "1168l2lvb5wi4wy2hplm8mxzwvk4k0si4sgabpamxn7qwynxg875";
-  "CodeNewRoman" = "1bj6jf9h0975f5syxibgw1vbw5hf1yh7lz118s6nmfdnjd3gkgxh";
-  "ComicShannsMono" = "1c32nhk02aiiz8cwws1rhvikyb27i5jbigy9k20n6zcj5v1n2b4f";
-  "CommitMono" = "00anj74dzjbf2b51r52qcw28jbvpd3v9p9gnws5c1bhjc4p0a3h0";
-  "Cousine" = "1apa96haqyi1ya7w5n7bvmy80gwqvawc9pnwcw19z1j8vmlxziya";
-  "D2Coding" = "12caqhh15glw4spmgf2l9xfwhab8mjrjdpcx0rf9zyd4fhn6rdj2";
-  "DaddyTimeMono" = "145nhbp5b83s5n2nqnmijnwl7g7ddpn6mzkqfip33ywsvvd5zrsy";
-  "DejaVuSansMono" = "1bxmylj3lg8w56maxp0z2zqfi4rwggabvcgkn6n4wzm2bm6l13dg";
-  "DroidSansMono" = "02cxbklawvvywbyh0b82mh4wvnbnl3b17lxy5hfhjarzzfm6zqf7";
-  "EnvyCodeR" = "0zy4mydpi0yvp15vd4yk5389pgxj2m2cx1pa3c749r81wrmc7b82";
-  "FantasqueSansMono" = "1nrs1vn8n7pm7fhvirxq77581ck2c1z8cj4454az2x3scglc6qb3";
-  "FiraCode" = "1brqps4j1n57l4y25m38mjcsxhl1jdhiwf5dgi482zbfi89yx5l7";
-  "FiraMono" = "0gf2vd9zz33hjkm2l1nyk458j561x7mva6p2nc3ja92156q99ci2";
-  "GeistMono" = "09ch98xwdj4qwcmkhb10fm6xjg0038q2gnrllyjnyd3jyph4klh1";
-  "Go-Mono" = "03946zrsdvb7mbbc6l5ar292jdpf9k77jvdjgh2vgml1ibxg91q5";
-  "Gohu" = "1qm97n6w8msw2s6gbmch7m5j1q50karrj9m2mp79ifhv808j7k4g";
-  "Hack" = "05ls81d15lgscc163451da5wxyj3ckr06kiml5fa31nvzsr0r0hd";
-  "Hasklig" = "117236vqcf2j70irb5a36n509swssmv2310c43b1ffxx5m4ysq0n";
-  "HeavyData" = "1mm0qj8pk8da7ffzh6sxlgis188k25k6r11vwa9albmsqb99qnp3";
-  "Hermit" = "157xyw1hdwhsr20dsp71kpm7kgv63ag0xdhyinkmcdfc0nmr14p1";
-  "iA-Writer" = "1gc1nv13bh91c2hq64acvmdyn314n61l465j0dzl6r3wzqcc0civ";
-  "IBMPlexMono" = "0a67c2imml0r888s9sfjsw0dvm14anw70j98aq00hx637xs8j5ka";
-  "Inconsolata" = "0vj68n1l8baxgyhm5dblqq74gns8gc7g41kh9j6dxq1xg9p9v5bg";
-  "InconsolataGo" = "0pqv0jj7kg9q3iw0acv59ip6ccgdwypk0qjniyqxbr786rpl2wvx";
-  "InconsolataLGC" = "13xi6s8v5rymw827hm89wiaf9gbnysmria7wqjv94c43yxx95xwm";
-  "IntelOneMono" = "07z4gk8jb2s0i8g7dza88gadb2hl3af71cl3pdkkz31ihjs19x21";
-  "Iosevka" = "00579ljkpry71iwihj9ncmx36hgnxy6hasgbk0wnxc9qizxx6ya1";
-  "IosevkaTerm" = "00qjllymd94cdj0jpcydn2xqylvfaga81lw5rjpl1in1jpwmnmad";
-  "IosevkaTermSlab" = "0vf4gha5v069ck0y7aq501c443vr7gnn5qrbacgjhs9lmdamx2ap";
-  "JetBrainsMono" = "1f8xi8kgyik59ahjm3pcrb2s02c9a9i6kwf5b4651zpjmjy5l8lj";
-  "Lekton" = "0fzmrfwhxykgr4m274v5pza7n6ayk52dprfx1vrjflcqmm3h4k8h";
-  "LiberationMono" = "1gfim5av892rcxwg0jdfa8an5k6sd683fkhf46ydi5sydw59bdp1";
-  "Lilex" = "0n4h968gv24szrpqkllypgpxwzf0bf7kvm6v5jfcgdcfvswkqm2w";
-  "MartianMono" = "1bbrcjkgvga4wnbh0hbx64ldc8plcl7zkyh4d7hja85nhh5z377f";
-  "Meslo" = "165mkzl3lfg01cmx1pngbjynrskwgdvh74ir4jjbp9im3xp9nbfh";
-  "Monaspace" = "0xp859zn2agj8mya1mxprlhlawb9k7r0x6dzl6isilf7n444wjq0";
-  "Monofur" = "1g0kbazkap4f4kiidc68b3za2kls9mj0qxwrvlrlgwdjlcri9n6n";
-  "Monoid" = "0faxfb0nb6j1zcsdic0xkgvi7g6n41jnx4m0rcyd5c8xparalg1v";
-  "Mononoki" = "10zs46vyffr4z84ay1rw2w9bl5yi85sapiwa3bqp2wkvh68as418";
-  "MPlus" = "1r5l09pk2dw3lq9y7ffg5qnblwv02mabj6w41vcp1w5yzp9agqrj";
-  "NerdFontsSymbolsOnly" = "0v3x4aiia098zbpb0pabi6srzmlxcdcwky7nf7mha8g47c6xdwnz";
-  "Noto" = "00byck8xwmr4fkj4ah6sbifvl8lwsclgqj96ygqci6pn9rwgrc3i";
-  "OpenDyslexic" = "0fan7yn3wadq6gsa69nz92m0ibzwhfp1b57jgh96ifq1k2prrlrp";
-  "Overpass" = "0inij9mi1v375yykxf1sy5jh5hgp6p6n7szzwwshbv37xsispqnq";
-  "ProFont" = "0l8diqylagjj6q0gqmfrz0vh1jzag2pwm4i7czy843bzgv04p9ci";
-  "ProggyClean" = "1wsb7xz5wx9rni0n01vyhj6a1x0r7fd733fbd3ynmykcqz4v7kfv";
-  "RobotoMono" = "1jsqhfahn0fmdk3m40x0fipfm8bmwyg7w0bi3cjbqrzvg7m1f197";
-  "ShareTechMono" = "12x08z717w13agcf4xbwgzmi9qqzycr3rrc4wyykm2cnrpldhss4";
-  "SourceCodePro" = "0fmxjgjxg4r956svry7ngxlxs7sp7arlbyaynm9dvxqpw46jylhk";
-  "SpaceMono" = "1imgcrv0000l1hd8hynas5d1x3mr7nq2xhc8drlqhcgcd4hxil2f";
-  "Terminus" = "0k1lm09rs0kih0fhrmmw87261pyl6c1s3507qs8hzbx75hsmzy2a";
-  "Tinos" = "11p0a9np9lknxmsddiwqlsw72rbwmc1hagahh37gah95gx5sxgyz";
-  "Ubuntu" = "0xm0qqphsaq9mr6a4lip2bnls687wxzh6hjljyvjrfdjam9d5q3m";
-  "UbuntuMono" = "0slcb7yd9imk2l4jkg2k1gr05xp0a6jb6gv2bzab2igkv737s62b";
-  "VictorMono" = "1yhj87vwwap8wr88bdmpgfb4s6qmszvczj2rg10rjkgsn4c0q6d2";
+  "0xProto" = "09q4ipl3vvav3jbs0s14fqmd2wk70mc7i8mmplpj20jwcicm05ng";
+  "3270" = "0zcj5xhylyqxpwn6dzp28kh8xybhh4y9lva3smcqs7iklhbf8s31";
+  "Agave" = "1xxylrjb0zbq3kj14fx5d3lpb7abl0br6mkj961i391qyqlx01y3";
+  "AnonymousPro" = "1lq9wkf8c153jkjmhnddih12y9xd4gabbkgac0vx9j98hmy7yjqy";
+  "Arimo" = "1f7zljmljrp1dxkrhkyz8zh9ddv7l7m9br6gaygzxr26bq0vrwr0";
+  "AurulentSansMono" = "0wlwwgp1w7rqvqx66dkqwhz5flw75620fj9fb795hakpkjiya6yp";
+  "BigBlueTerminal" = "115cxnll1iyj75f5wi7b7pi5hgfa3b5kbx269alm9183h284lb23";
+  "BitstreamVeraSansMono" = "1s6jpg0vrdwgi9qyn0mbcy8r7h1lqw8z6q39wiin61szfn642a2k";
+  "CascadiaCode" = "1sg6czl3km7yi70vdcyb0ff1xkq1p4nalj0yh164gan3psp9mxss";
+  "CascadiaMono" = "0rrknf86kdwyjpnryp5870nmnq2sxjda8pgs93z23lh7hw758wln";
+  "CodeNewRoman" = "0p1wkmpzcrxw8qv5lf9fwsxqpjglhwim83amf7i8mmxdx1drzlj5";
+  "ComicShannsMono" = "1p35nmzl51mn2mk0g9fdcawvssv4v7bklxxmdx99357ihnlka26w";
+  "CommitMono" = "0jjzi98i28s3z2x8v7rakcdhgdf7jxzagj8snrylw2mvwn7mlgqp";
+  "Cousine" = "1ccq3sp8fqbi0njm9w2p6cf5r7avpan5fklwzpx4mknwbdqlrwdq";
+  "D2Coding" = "1c0chgbsmzlgq0vinbcz7ydkdhnram8cif8zx8kkpha31abna5n0";
+  "DaddyTimeMono" = "1nz4g26a4dx7ng5nv6bc4hg474inan1c00c86mdlmvl2vgmx6zbf";
+  "DejaVuSansMono" = "12x18i15723hxc1l6ng92m77wycjk0d6r15j34n1zsww5r6xwjxr";
+  "DroidSansMono" = "1mqd1qqbs9dxwmi98i4xw88c68l1bww1sqlsmxmn86368rjh14fk";
+  "EnvyCodeR" = "197g4jaljcb1yncn9rvh17n077p7bq0v59lvb9vqkq3lms5lzjni";
+  "FantasqueSansMono" = "079mk8xrri4r1d5k1w5fv1hb0hp3w499csirkd6yriss35sbhv9d";
+  "FiraCode" = "1i1vw65f00n6vjinyqr1bq5ni5r6g8cjinrfl5zhlqm0gagv5x6y";
+  "FiraMono" = "1i9bfxblx568wsjq7ks1kyyfn9k36i4r2an4n45mb46swc94n8n0";
+  "GeistMono" = "0wvc9hqkh7ap3ysklcin8k72706l72p2wyqv3bg5brzcmwcpy90g";
+  "Go-Mono" = "0j6rr0r7418f8a5bmxbagpmcf7bas2n53f0hg835zp2ikx9cx924";
+  "Gohu" = "0h8hjiqs3f6xwn7g4wg12xim65ybw2546nlf5p9ip4ymr7x17dks";
+  "Hack" = "1wxmd4jr4p11cfhzs5chyh649vps6sdz4bq28204npkd7wzh5fc9";
+  "Hasklig" = "1nja4r8sn67g3gn85xhb1h7p1pi96wl0hpg5b5gyd1z5llbgzc2g";
+  "HeavyData" = "1a3a1pixv97wlnai24zb8dhkzxb2llcarhjkfrgd4syhn37sdf7n";
+  "Hermit" = "1bh18rzwma7gzrx3ybw8g2s9k5xv7wx8ybnyas3qaxb03fpjqm93";
+  "iA-Writer" = "0vsppg62l35zhzlsa0fwczv09pk1nhrag9xhcaadipd962dv7c45";
+  "IBMPlexMono" = "0hd04z17l2p21hij4a0gmwnlfxs7s8qqh08zf4pzqld10557gqlp";
+  "Inconsolata" = "1xy3h05zy49h91k7fqk8934p1f776w46i0bh510addg12w8mm7rc";
+  "InconsolataGo" = "0hcvh3s2rnnir03pszfmmwhbdsapx1b516phhjhb4wl0dqma9q39";
+  "InconsolataLGC" = "0bfwhzbz422kfdv9ppr83cc2aqqdn7g49f73zipl4yp5636gi5ks";
+  "IntelOneMono" = "0388390dlcprxhxxl57gy8rllwk8wsd92b5xwnqwb5f394gbc5m0";
+  "Iosevka" = "0dzkcn277jxiqrrqkyigw6jgd4lp9411r28rkpkwx6js6px27q8v";
+  "IosevkaTerm" = "1xccqkydkhmhq8akk23kkypqzcc2svyicxv9gblwzwbndjrfgmdm";
+  "IosevkaTermSlab" = "1svig63li8mjj2dkgiawgb82gpk8vkrkhih5cp0a6174bh4gycii";
+  "JetBrainsMono" = "01j0rkgrix7mdp9fx0y8zzk1kh40yfcp932p0r5y666aq4mq5y3c";
+  "Lekton" = "00cm8ni3cnmgzwj1ypvpcy8gvnlz31la51j411dpsdqsclbcp0i2";
+  "LiberationMono" = "1941pgw723a6my44g6idi56a88qvsi8lj3wl7slpr5l3pmfda2lx";
+  "Lilex" = "0qz23h6a77i4n8nmhb7hc56mkiwn3pj1s6dbl2v53fvypwghswm2";
+  "MartianMono" = "0zfcvi150yn274i41n66zr20hqgqb0r5v75q21bbgqvaysl4wj32";
+  "Meslo" = "1sjrsr7i3diz4h7wkrl8va7b40g4m1432dz6bpbm2nmp89aszg8s";
+  "Monaspace" = "0il36cm37pc6ndp96j32j0fqpqvwyv2xm3jr7d3zxwax1lcfilp5";
+  "Monofur" = "10gzx2r5a5f5jl192c6cwsil5k57aslmryfnilkv4g8417xmn0zb";
+  "Monoid" = "1fhsb326lc093ckrq2kz4vhr3ibrgp8y0mwa3qwdbapldxazz9f7";
+  "Mononoki" = "18zp94dnv6kp8l58151dybjf2w1gi99nh1rw098hkrf52gfrfdpb";
+  "MPlus" = "0x7yvpkn32x50y9zpdpjrp1gvwwp4fsmjbqbnfzy14xhi03p0q2w";
+  "NerdFontsSymbolsOnly" = "0y4r1rid5sjd9ihi6nkwy0sja792aghg21bpl3ri029b9pifx8xp";
+  "Noto" = "0vq9lgf4j6pi7pw3bfgfzkcdixnhikf4yys8fr0qql7mkwhj3rjb";
+  "OpenDyslexic" = "1yl1fm4pfjvxq411m6f8nycqjnpnhkllmlx16wjrjfqpaf63mm4n";
+  "Overpass" = "1plcn2qx2b08va65zagn1ybkh850157ii7x20nnrhp0h5f4rddzw";
+  "ProFont" = "11c3shv09dssjbjwa44y64dwq7dxn3gs23bfgvhkv51vshsx0fzy";
+  "ProggyClean" = "1l822wqrz7xmgnw535i9vl9gwjl4h037hi3xl0g4907kcdxwan0s";
+  "Recursive" = "1fngqsl1shbfbb1wcx77di42g65lm9f5fcw93m8dcvdzk5lxpxz5";
+  "RobotoMono" = "0g6yvz4vpfcylnshhyhwy5llz61n8m0a0vp4jgjhiir5svcd9krw";
+  "ShareTechMono" = "0mxsywg4gns31yzh1256y7pkbh0m6n3rf8gbb55mxw219ngskkyv";
+  "SourceCodePro" = "088vi947kavk1pkvbl68kv7nz84yvfkj725n2zn7ypq354kkm92n";
+  "SpaceMono" = "0f4kcm4i3y11mpxb9anmn8759zpv3lvril4shp3d4mfc0k3dgfdn";
+  "Terminus" = "04kzc594sb5vk8fd3ww9ip7jsy4vi6wmxdf6vzsvb2fgd98ck335";
+  "Tinos" = "14c31qv3ik0in44k98zjn398cffwgq8z7d5lx7sk6iv12hikrd11";
+  "Ubuntu" = "1bgk4hx26qn5ylsydsy9655isz05ir7154pv8dy4x5rpr144s9ba";
+  "UbuntuMono" = "15kkgx6i4f7zn6fdaw2dqqw3hcpl3pi4cy4g5jx67af8qlhqarrb";
+  "UbuntuSans" = "0jj4v198zshwhns5swrh02h2np3wgnv8lacn8b7jhmcd575cgy1y";
+  "VictorMono" = "03rh7rc6a934sgd1bs7h7y1swqwbv3g7zi624k6hd8v1m3f0j6xa";
+  "ZedMono" = "0yhb9fp7ahw8niki1njzk8pbl0iy53pgf7gx5yfc2ass9vjwky9d";
 }
diff --git a/pkgs/data/fonts/nerdfonts/version.nix b/pkgs/data/fonts/nerdfonts/version.nix
index b6d7788c7faeb..038707f5b9ecc 100644
--- a/pkgs/data/fonts/nerdfonts/version.nix
+++ b/pkgs/data/fonts/nerdfonts/version.nix
@@ -1 +1 @@
-"3.1.1"
+"3.2.1"
diff --git a/pkgs/data/fonts/sketchybar-app-font/default.nix b/pkgs/data/fonts/sketchybar-app-font/default.nix
index cd9af9a9c5f47..c131069e9e748 100644
--- a/pkgs/data/fonts/sketchybar-app-font/default.nix
+++ b/pkgs/data/fonts/sketchybar-app-font/default.nix
@@ -1,34 +1,91 @@
+let
+  artifacts = [ "shell" "lua" "font" ];
+in
 { lib
 , stdenvNoCC
 , fetchurl
+, common-updater-scripts
+, curl
+, jq
+, writeShellScript
+, artifactList ? artifacts
 }:
+lib.checkListOfEnum "sketchybar-app-font: artifacts" artifacts artifactList
+  stdenvNoCC.mkDerivation
+  (finalAttrs:
+  let
+    selectedSources = map (artifact: builtins.getAttr artifact finalAttrs.passthru.sources) artifactList;
+  in
+  {
+    pname = "sketchybar-app-font";
+    version = "2.0.16";
 
-stdenvNoCC.mkDerivation (finalAttrs: {
-  pname = "sketchybar-app-font";
-  version = "2.0.12";
+    srcs = selectedSources;
 
-  src = fetchurl {
-    url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/sketchybar-app-font.ttf";
-    hash = "sha256-qACf4eWDeubBmJV0ApWidp2ESLREi5qiLliWCXoMBKY=";
-  };
+    unpackPhase = ''
+      runHook preUnpack
 
-  dontUnpack = true;
+      for s in $selectedSources; do
+        b=$(basename $s)
+        cp $s ''${b#*-}
+      done
 
-  installPhase = ''
-    runHook preInstall
+      runHook postUnpack
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+    '' + lib.optionalString (lib.elem "font" artifactList) ''
+      install -Dm644 ${finalAttrs.passthru.sources.font} "$out/share/fonts/truetype/sketchybar-app-font.ttf"
 
-    install -Dm644 $src $out/share/fonts/truetype/sketchybar-app-font.ttf
+    '' + lib.optionalString (lib.elem "shell" artifactList) ''
+      install -Dm755 ${finalAttrs.passthru.sources.shell} "$out/bin/icon_map.sh"
 
-    runHook postInstall
-  '';
+    '' + lib.optionalString (lib.elem "lua" artifactList) ''
+      install -Dm644 ${finalAttrs.passthru.sources.lua} "$out/lib/sketchybar-app-font/icon_map.lua"
 
-  meta = {
-    description = "A ligature-based symbol font and a mapping function for sketchybar";
-    longDescription = ''
-      A ligature-based symbol font and a mapping function for sketchybar, inspired by simple-bar's usage of community-contributed minimalistic app icons.
+      runHook postInstall
     '';
-    homepage = "https://github.com/kvndrsslr/sketchybar-app-font";
-    license = lib.licenses.cc0;
-    maintainers = with lib.maintainers; [ khaneliman ];
-  };
-})
+
+    passthru = {
+      sources = {
+        font = fetchurl {
+          url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/sketchybar-app-font.ttf";
+          hash = "sha256-mZ3LmkL54NNQzXuCyWVNlAIod3T5/aGKvnLZjZ/GYdw=";
+        };
+        lua = fetchurl {
+          url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/icon_map.lua";
+          hash = "sha256-8daDECZ8hsoyh4Rp3xbkYgPSamCylrzf8zzyu/iwZEc=";
+        };
+        shell = fetchurl {
+          url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/icon_map.sh";
+          hash = "sha256-h0rGkzy1smDL2guvvgeUVUD0q4n9LDKDLQJahbWHgWA=";
+        };
+      };
+
+      updateScript = writeShellScript "update-sketchybar-app-font" ''
+        set -o errexit
+        export PATH="${lib.makeBinPath [ curl jq common-updater-scripts ]}"
+        NEW_VERSION=$(curl --silent https://api.github.com/repos/kvndrsslr/sketchybar-app-font/releases/latest | jq '.tag_name | ltrimstr("v")' --raw-output)
+        if [[ "${finalAttrs.version}" = "$NEW_VERSION" ]]; then
+            echo "The new version same as the old version."
+            exit 0
+        fi
+        for artifact in ${lib.escapeShellArgs (lib.mapAttrsToList(a: _: a) finalAttrs.passthru.sources)}; do
+          update-source-version "sketchybar-app-font" "0" "${lib.fakeHash}" --source-key="sources.$artifact"
+          update-source-version "sketchybar-app-font" "$NEW_VERSION" --source-key="sources.$artifact"
+        done
+      '';
+    };
+
+    meta = {
+      description = "A ligature-based symbol font and a mapping function for sketchybar";
+      longDescription = ''
+        A ligature-based symbol font and a mapping function for sketchybar, inspired by simple-bar's usage of community-contributed minimalistic app icons.
+      '';
+      homepage = "https://github.com/kvndrsslr/sketchybar-app-font";
+      license = lib.licenses.cc0;
+      maintainers = with lib.maintainers; [ khaneliman ];
+    };
+  })
diff --git a/pkgs/data/icons/phinger-cursors/default.nix b/pkgs/data/icons/phinger-cursors/default.nix
index 82742723806f5..26b729b268c93 100644
--- a/pkgs/data/icons/phinger-cursors/default.nix
+++ b/pkgs/data/icons/phinger-cursors/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "phinger-cursors";
-  version = "1.1";
+  version = "2.0";
 
   src = fetchurl {
     url = "https://github.com/phisch/phinger-cursors/releases/download/v${version}/phinger-cursors-variants.tar.bz2";
-    sha256 = "sha256-II+1x+rcjGRRVB8GYkVwkKVHNHcNaBKRb6C613901oc=";
+    sha256 = "sha256-A12BGtc0+wDqeSGN4lbUe5G3Pv4IsQB4TkvWHnDU6bE=";
   };
 
   sourceRoot = ".";
diff --git a/pkgs/data/icons/pop-icon-theme/default.nix b/pkgs/data/icons/pop-icon-theme/default.nix
index 2a27122da5db7..8d4467e3abad6 100644
--- a/pkgs/data/icons/pop-icon-theme/default.nix
+++ b/pkgs/data/icons/pop-icon-theme/default.nix
@@ -10,13 +10,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "pop-icon-theme";
-  version = "3.3.0";
+  version = "3.5.0";
 
   src = fetchFromGitHub {
     owner = "pop-os";
     repo = "icon-theme";
     rev = "v${version}";
-    sha256 = "sha256-7cDXEkqtPNQsyZvuYZhBSgAYshkDlP8o8umWGbNLtjw=";
+    sha256 = "sha256-V8xBZj6T4Ly/GHV0CVLZ1a4UZbmCkhYRe05qUfJk7Wg=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/icons/whitesur-icon-theme/default.nix b/pkgs/data/icons/whitesur-icon-theme/default.nix
index a6514b3fe0d41..e9ca757add207 100644
--- a/pkgs/data/icons/whitesur-icon-theme/default.nix
+++ b/pkgs/data/icons/whitesur-icon-theme/default.nix
@@ -27,13 +27,13 @@ lib.checkListOfEnum "${pname}: theme variants" [
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "2023-07-03";
+  version = "2024.04.08";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    hash = "sha256-lq6d3BForrvzEJYeEMQZplvn/p6dPjggTToAU9UcPoM=";
+    hash = "sha256-Baf0BowyR4P7MDx+LmH6MHlANl+9lXlCaQispN4/i9o=";
   };
 
   nativeBuildInputs = [ gtk3 jdupes ];
diff --git a/pkgs/data/misc/hackage/pin.json b/pkgs/data/misc/hackage/pin.json
index e4e3d08ddc7b2..6b1eafaee7e00 100644
--- a/pkgs/data/misc/hackage/pin.json
+++ b/pkgs/data/misc/hackage/pin.json
@@ -1,6 +1,6 @@
 {
-  "commit": "8fd329148e6583ab472717f5cac4e8132dac2c1e",
-  "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/8fd329148e6583ab472717f5cac4e8132dac2c1e.tar.gz",
-  "sha256": "0acf86rjvkh8vgbkzm1gjavm8xr508hd19ncwa19zqrf8gpp051x",
-  "msg": "Update from Hackage at 2024-03-16T22:28:08Z"
+  "commit": "a3f1357d6561e38afbb7545f733063f9ad7465c4",
+  "url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/a3f1357d6561e38afbb7545f733063f9ad7465c4.tar.gz",
+  "sha256": "0nvrqbaf483af1abxqcms8f60nbxyqghf5k1jb4m3xah0206kdwf",
+  "msg": "Update from Hackage at 2024-03-31T04:36:22Z"
 }
diff --git a/pkgs/data/misc/sing-geoip/default.nix b/pkgs/data/misc/sing-geoip/default.nix
index b27a61ef02013..2e128c6efe362 100644
--- a/pkgs/data/misc/sing-geoip/default.nix
+++ b/pkgs/data/misc/sing-geoip/default.nix
@@ -8,26 +8,32 @@
 let
   generator = buildGoModule rec {
     pname = "sing-geoip";
-    version = "20230512";
+    version = "20240312";
 
     src = fetchFromGitHub {
       owner = "SagerNet";
       repo = pname;
       rev = "refs/tags/${version}";
-      hash = "sha256-Zm+5N/37hoHpH/TLNJrHeaBXI8G1jEpM1jz6Um8edNE=";
+      hash = "sha256-nIrbiECK25GyuPEFqMvPdZUShC2JC1NI60Y10SsoWyY=";
     };
 
-    vendorHash = "sha256-ejXAdsJwXhqet+Ca+pDLWwu0gex79VcIxW6rmhRnbTQ=";
+    vendorHash = "sha256-WH0eMg06qCiVcy4H+vBtYrmLMA2KJRCPGXiEnatW+LU=";
+
+    postPatch = ''
+      sed -i -e '/func main()/,/^}/d' main.go
+      cat ${./main.go} >> main.go
+    '';
 
     meta = with lib; {
       description = "GeoIP data for sing-box";
       homepage = "https://github.com/SagerNet/sing-geoip";
       license = licenses.gpl3Plus;
       maintainers = with maintainers; [ linsui ];
+      mainProgram = "sing-geoip";
     };
   };
 in
-stdenvNoCC.mkDerivation rec {
+stdenvNoCC.mkDerivation {
   inherit (generator) pname;
   inherit (dbip-country-lite) version;
 
@@ -38,8 +44,7 @@ stdenvNoCC.mkDerivation rec {
   buildPhase = ''
     runHook preBuild
 
-    ${pname} ${dbip-country-lite.mmdb} geoip.db
-    ${pname} ${dbip-country-lite.mmdb} geoip-cn.db cn
+    sing-geoip ${dbip-country-lite.mmdb}
 
     runHook postBuild
   '';
@@ -49,6 +54,7 @@ stdenvNoCC.mkDerivation rec {
 
     install -Dm644 geoip.db $out/share/sing-box/geoip.db
     install -Dm644 geoip-cn.db $out/share/sing-box/geoip-cn.db
+    install -Dm644 rule-set/* -t $out/share/sing-box/rule-set
 
     runHook postInstall
   '';
diff --git a/pkgs/data/misc/sing-geoip/main.go b/pkgs/data/misc/sing-geoip/main.go
new file mode 100644
index 0000000000000..8c2ac246fba4a
--- /dev/null
+++ b/pkgs/data/misc/sing-geoip/main.go
@@ -0,0 +1,68 @@
+func main() {
+	var err error
+
+  input := os.Args[1]
+  ruleSetOutput := "rule-set"
+
+  binary, err := os.ReadFile(input)
+	if err != nil {
+		panic(err)
+	}
+  metadata, countryMap, err := parse(binary)
+	if err != nil {
+		panic(err)
+	}
+	allCodes := make([]string, 0, len(countryMap))
+	for code := range countryMap {
+		allCodes = append(allCodes, code)
+	}
+
+	writer, err := newWriter(metadata, allCodes)
+	if err != nil {
+		panic(err)
+	}
+	err = write(writer, countryMap, "geoip.db", nil)
+	if err != nil {
+		panic(err)
+	}
+
+	writer, err = newWriter(metadata, []string{"cn"})
+	if err != nil {
+		panic(err)
+	}
+	err = write(writer, countryMap, "geoip-cn.db", []string{"cn"})
+	if err != nil {
+		panic(err)
+	}
+
+	err = os.MkdirAll(ruleSetOutput, 0o755)
+	if err != nil {
+		panic(err)
+	}
+	for countryCode, ipNets := range countryMap {
+		var headlessRule option.DefaultHeadlessRule
+		headlessRule.IPCIDR = make([]string, 0, len(ipNets))
+		for _, cidr := range ipNets {
+			headlessRule.IPCIDR = append(headlessRule.IPCIDR, cidr.String())
+		}
+		var plainRuleSet option.PlainRuleSet
+		plainRuleSet.Rules = []option.HeadlessRule{
+			{
+				Type:           C.RuleTypeDefault,
+				DefaultOptions: headlessRule,
+			},
+		}
+		srsPath, _ := filepath.Abs(filepath.Join(ruleSetOutput, "geoip-"+countryCode+".srs"))
+		os.Stderr.WriteString("write " + srsPath + "\n")
+		outputRuleSet, err := os.Create(srsPath)
+		if err != nil {
+			panic(err)
+		}
+		err = srs.Write(outputRuleSet, plainRuleSet)
+		if err != nil {
+			outputRuleSet.Close()
+			panic(err)
+		}
+		outputRuleSet.Close()
+	}
+}
diff --git a/pkgs/data/themes/catppuccin-gtk/default.nix b/pkgs/data/themes/catppuccin-gtk/default.nix
index 0dc881942bccb..a3262dcf22e2e 100644
--- a/pkgs/data/themes/catppuccin-gtk/default.nix
+++ b/pkgs/data/themes/catppuccin-gtk/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenvNoCC
 , fetchFromGitHub
+, fetchpatch
 , gtk3
 , colloid-gtk-theme
 , gnome-themes-extra
@@ -29,19 +30,27 @@ lib.checkListOfEnum "${pname}: tweaks" validTweaks tweaks
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "0.7.1";
+  version = "0.7.2";
 
   src = fetchFromGitHub {
     owner = "catppuccin";
     repo = "gtk";
     rev = "v${version}";
-    hash = "sha256-V3JasiHaATbVDQJeJPeFq5sjbkQnSMbDRWsaRzGccXU=";
+    hash = "sha256-7EvKcyh9gH/QbiXKlyAKMSBXMF3DmbHD+wJD3Sq39DE=";
   };
 
   nativeBuildInputs = [ gtk3 sassc ];
 
   patches = [
     ./colloid-src-git-reset.patch
+
+    # Can be removed next release
+    # Adds compatibility with the 2.x.x versions of the catppuccin python package
+    (fetchpatch {
+      name = "catppuccin-python-compatibility.patch";
+      url = "https://github.com/catppuccin/gtk/commit/355e12387f73b27cf4734a6a3eb431554fabb74f.patch";
+      hash = "sha256-4vgZbNeGMtsQEitIWDCVb5o4fAjhVu3iIUttUYqtHPc=";
+    })
   ];
 
   buildInputs = [
diff --git a/pkgs/data/themes/catppuccin-sddm-corners/default.nix b/pkgs/data/themes/catppuccin-sddm-corners/default.nix
index eca8bac5e4980..fe2fa9b9fb774 100644
--- a/pkgs/data/themes/catppuccin-sddm-corners/default.nix
+++ b/pkgs/data/themes/catppuccin-sddm-corners/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenvNoCC
 , fetchFromGitHub
+, unstableGitUpdater
 }:
 
 stdenvNoCC.mkDerivation {
@@ -26,6 +27,8 @@ stdenvNoCC.mkDerivation {
     runHook postInstall
   '';
 
+  passthru.updateScript = unstableGitUpdater { };
+
   meta = {
     description = "Soothing pastel theme for SDDM based on corners theme.";
     homepage = "https://github.com/khaneliman/sddm-catppuccin-corners";
diff --git a/pkgs/data/themes/catppuccin/default.nix b/pkgs/data/themes/catppuccin/default.nix
index accc06f48c2f5..2463b1fde6db3 100644
--- a/pkgs/data/themes/catppuccin/default.nix
+++ b/pkgs/data/themes/catppuccin/default.nix
@@ -1,5 +1,5 @@
 let
-  validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "plymouth" "qt5ct" "refind" "rofi" "starship" "thunderbird" "waybar" ];
+  validThemes = [ "bat" "bottom" "btop" "grub" "hyprland" "k9s" "kvantum" "lazygit" "lxqt" "plymouth" "qt5ct" "refind" "rofi" "starship" "thunderbird" "waybar" ];
 in
 { fetchFromGitHub
 , lib
@@ -80,6 +80,14 @@ let
       hash = "sha256-gM0HplHhcpvtpmIVdlX/p59h0v+ihKEidS1imqPYlBg=";
     };
 
+    lxqt = fetchFromGitHub {
+      name = "lxqt";
+      owner = "catppuccin";
+      repo = "lxqt";
+      rev = "38cf86b3e499e0c0928a102c9c030e5dc6b79255";
+      hash = "sha256-3TuUkOwk6BSc7BnLnTowGAkSlNTOtGTRlEcjJ6MNJ5g=";
+    };
+
     plymouth = fetchFromGitHub {
       name = "plymouth";
       owner = "catppuccin";
@@ -194,6 +202,10 @@ stdenvNoCC.mkDerivation {
     cp "${sources.lazygit}/themes/${variant}/${accent}.yml" "$out/lazygit/themes/"
     cp "${sources.lazygit}/themes-mergable/${variant}/${accent}.yml" "$out/lazygit/themes-mergable/"
 
+  '' + lib.optionalString (lib.elem "lxqt" themeList) ''
+    mkdir -p $out/share/lxqt/themes/catppuccin-${variant}
+    cp -r ${sources.lxqt}/src/catppuccin-${variant}/* $out/share/lxqt/themes/catppuccin-${variant}/
+
   '' + lib.optionalString (lib.elem "plymouth" themeList) ''
     mkdir -p $out/share/plymouth/themes/catppuccin-${variant}
     cp ${sources.plymouth}/themes/catppuccin-${variant}/* $out/share/plymouth/themes/catppuccin-${variant}
diff --git a/pkgs/data/themes/dracula-theme/default.nix b/pkgs/data/themes/dracula-theme/default.nix
index cfc3689d7cc3e..db1ef4da0b1e3 100644
--- a/pkgs/data/themes/dracula-theme/default.nix
+++ b/pkgs/data/themes/dracula-theme/default.nix
@@ -2,7 +2,7 @@
 
 let
   themeName = "Dracula";
-  version = "unstable-2024-03-13";
+  version = "unstable-2024-04-08";
 in
 stdenvNoCC.mkDerivation {
   pname = "dracula-theme";
@@ -11,8 +11,8 @@ stdenvNoCC.mkDerivation {
   src = fetchFromGitHub {
     owner = "dracula";
     repo = "gtk";
-    rev = "573f88083ae759f480860552f66e9951077bc428";
-    hash = "sha256-BQPlKcsfhpVTtVrwS9yVpIkujF6vM/ToIDmy9X60Mhs=";
+    rev = "18350cafd8e9c775737f97fb5acf0890e29bc47a";
+    hash = "sha256-uhcRV7E7GDjWjetUHcz/E/g36m/yYTg3c9WJo6gYTJA=";
   };
 
   propagatedUserEnvPkgs = [
diff --git a/pkgs/data/themes/where-is-my-sddm-theme/default.nix b/pkgs/data/themes/where-is-my-sddm-theme/default.nix
deleted file mode 100644
index d55279dd33ce5..0000000000000
--- a/pkgs/data/themes/where-is-my-sddm-theme/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ lib
-, formats
-, stdenvNoCC
-, fetchFromGitHub
-, qtgraphicaleffects
-  /* An example of how you can override the background on the NixOS logo
-  *
-  *  environment.systemPackages = [
-  *    (pkgs.where-is-my-sddm-theme.override {
-  *      themeConfig.General = {
-  *        background = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
-  *        backgroundMode = "none";
-  *      };
-  *    })
-  *  ];
-  */
-, themeConfig ? null
-}:
-
-let
-  user-cfg = (formats.ini { }).generate "theme.conf.user" themeConfig;
-in
-
-stdenvNoCC.mkDerivation rec {
-  pname = "where-is-my-sddm-theme";
-  version = "1.8.0";
-
-  src = fetchFromGitHub {
-    owner = "stepanzubkov";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-/D3i4QcE5+GbiAw32bFYJ7UxW/5NAl9FqQfiQc4akzI=";
-  };
-
-  propagatedUserEnvPkgs = [ qtgraphicaleffects ];
-
-  installPhase = ''
-    mkdir -p $out/share/sddm/themes/
-    cp -r where_is_my_sddm_theme/ $out/share/sddm/themes/
-  '' + lib.optionalString (lib.isAttrs themeConfig) ''
-    ln -sf ${user-cfg} $out/share/sddm/themes/where_is_my_sddm_theme/theme.conf.user
-  '';
-
-  meta = with lib; {
-    description = "The most minimalistic SDDM theme among all themes";
-    homepage = "https://github.com/stepanzubkov/where-is-my-sddm-theme";
-    license = licenses.mit;
-    maintainers = with maintainers; [ name-snrl ];
-  };
-}
diff --git a/pkgs/data/themes/yaru/default.nix b/pkgs/data/themes/yaru/default.nix
index bedf4482f74af..4810bfd55e325 100644
--- a/pkgs/data/themes/yaru/default.nix
+++ b/pkgs/data/themes/yaru/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "yaru";
-  version = "24.04.0";
+  version = "23.10.0";
 
   src = fetchFromGitHub {
     owner = "ubuntu";
     repo = "yaru";
     rev = version;
-    hash = "sha256-KvpA86YL6toVklRPu4hP3j3w+Q0h/n6mZRZgk3HvMfc=";
+    hash = "sha256-+Szk77QeoM4PwusxKflTh83h16qz6Es6UwDXpbydJUE=";
   };
 
   nativeBuildInputs = [ meson sassc pkg-config glib ninja python3 ];
diff --git a/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix b/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix
index 81bec81cb41e2..5a6cab8177a9f 100644
--- a/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix
+++ b/pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix
@@ -4,7 +4,7 @@
 , pkg-config
 , gettext
 , gobject-introspection
-, wrapGAppsHook
+, wrapGAppsHook4
 , gjs
 , glib
 , gtk4
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     meson
     ninja
     gobject-introspection
-    wrapGAppsHook
+    wrapGAppsHook4
     python3
     desktop-file-utils
   ];
@@ -53,6 +53,8 @@ stdenv.mkDerivation rec {
 
   postPatch = ''
     chmod +x build-aux/meson_post_install.py
+    substituteInPlace build-aux/meson_post_install.py \
+      --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
     patchShebangs build-aux/meson_post_install.py
   '';
 
diff --git a/pkgs/desktops/gnome/core/gnome-control-center/default.nix b/pkgs/desktops/gnome/core/gnome-control-center/default.nix
index eafbc79545f32..2042eede7c113 100644
--- a/pkgs/desktops/gnome/core/gnome-control-center/default.nix
+++ b/pkgs/desktops/gnome/core/gnome-control-center/default.nix
@@ -62,7 +62,7 @@
 , libepoxy
 , gnome-user-share
 , gnome-remote-desktop
-, wrapGAppsHook
+, wrapGAppsHook4
 , xvfb-run
 }:
 
@@ -93,7 +93,7 @@ stdenv.mkDerivation (finalAttrs: {
     pkg-config
     python3
     shared-mime-info
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/desktops/gnome/extensions/arcmenu/default.nix b/pkgs/desktops/gnome/extensions/arcmenu/default.nix
index a4e1fea6931cb..9e0747ad876b1 100644
--- a/pkgs/desktops/gnome/extensions/arcmenu/default.nix
+++ b/pkgs/desktops/gnome/extensions/arcmenu/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extension-arcmenu";
-  version = "52";
+  version = "55";
 
   src = fetchFromGitLab {
     owner = "arcmenu";
     repo = "ArcMenu";
     rev = "v${version}";
-    sha256 = "sha256-nZRdNkS4JfSwtqQsROKa1+eqcgwMQwVsqgeWVPpZIi0=";
+    sha256 = "sha256-xLKvcrZkqcj7aHiv9JumLWSP5LbajITAyopCIwGqpkE=";
   };
 
   patches = [
diff --git a/pkgs/desktops/gnome/extensions/argos/default.nix b/pkgs/desktops/gnome/extensions/argos/default.nix
index cc12c5dc2015d..66c979bd54af4 100644
--- a/pkgs/desktops/gnome/extensions/argos/default.nix
+++ b/pkgs/desktops/gnome/extensions/argos/default.nix
@@ -1,14 +1,14 @@
-{ fetchFromGitHub, lib, stdenv }:
+{ fetchFromGitHub, lib, stdenv, unstableGitUpdater }:
 
 stdenv.mkDerivation rec {
   pname = "argos";
-  version = "unstable-2023-09-26";
+  version = "unstable-2024-04-03";
 
   src = fetchFromGitHub {
     owner = "p-e-w";
     repo = "argos";
-    rev = "adfaa31e8c08f7b59e9492891a7e6f753c29b35e";  # https://github.com/p-e-w/argos/pull/150
-    hash = "sha256-st8AeMRtkvM4M/Z70qopjw9Yx0t9l0DsUke4ClQtcBU=";
+    rev = "0449229e11bc2bb5c66e6f1d8503635cdf276bcf";
+    hash = "sha256-szBk3zW+HzfxTI34lLB1DFdnwZ3W+BgeVgDkwf0UzQU=";
   };
 
   installPhase = ''
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
   passthru = {
     extensionUuid = "argos@pew.worldwidemann.com";
     extensionPortalSlug = "argos";
+    updateScript = unstableGitUpdater { };
   };
 
   meta = with lib; {
diff --git a/pkgs/desktops/gnome/extensions/collisions.json b/pkgs/desktops/gnome/extensions/collisions.json
index bfd4d75871398..1ecf8d1b34e9c 100644
--- a/pkgs/desktops/gnome/extensions/collisions.json
+++ b/pkgs/desktops/gnome/extensions/collisions.json
@@ -348,6 +348,24 @@
     "battery-time": [
       "batime@martin.zurowietz.de",
       "batterytime@typeof.pw"
+    ],
+    "power-profile-indicator": [
+      "power-profile-indicator@laux.wtf",
+      "power-profile@fthx"
+    ]
+  },
+  "46": {
+    "applications-menu": [
+      "apps-menu@gnome-shell-extensions.gcampax.github.com",
+      "Applications_Menu@rmy.pobox.com"
+    ],
+    "persian-calendar": [
+      "PersianCalendar@oxygenws.com",
+      "persian-calendar@iamrezamousavi.gmail.com"
+    ],
+    "power-profile-indicator": [
+      "power-profile-indicator@laux.wtf",
+      "power-profile@fthx"
     ]
   }
 }
diff --git a/pkgs/desktops/gnome/extensions/default.nix b/pkgs/desktops/gnome/extensions/default.nix
index 89f5edb5f7bf1..85b4fc5fca001 100644
--- a/pkgs/desktops/gnome/extensions/default.nix
+++ b/pkgs/desktops/gnome/extensions/default.nix
@@ -64,9 +64,10 @@ in rec {
   gnome43Extensions = mapUuidNames (produceExtensionsList "43");
   gnome44Extensions = mapUuidNames (produceExtensionsList "44");
   gnome45Extensions = mapUuidNames (produceExtensionsList "45");
+  gnome46Extensions = mapUuidNames (produceExtensionsList "46");
 
   # Keep the last three versions in here
-  gnomeExtensions = lib.trivial.pipe (gnome43Extensions // gnome44Extensions // gnome45Extensions) [
+  gnomeExtensions = lib.trivial.pipe (gnome44Extensions // gnome45Extensions // gnome46Extensions) [
     (v: builtins.removeAttrs v [ "__attrsFailEvaluation" ])
     # Apply some custom patches for automatically packaged extensions
     (callPackage ./extensionOverrides.nix {})
diff --git a/pkgs/desktops/gnome/extensions/extensionOverrides.nix b/pkgs/desktops/gnome/extensions/extensionOverrides.nix
index c2e95835204d0..6fd01d1b52d24 100644
--- a/pkgs/desktops/gnome/extensions/extensionOverrides.nix
+++ b/pkgs/desktops/gnome/extensions/extensionOverrides.nix
@@ -106,6 +106,14 @@ super: lib.trivial.pipe super [
     ];
   }))
 
+  (patchExtension "mullvadindicator@pobega.github.com" (old: {
+    patches = [
+      # Patch from https://github.com/Pobega/gnome-shell-extension-mullvad-indicator/pull/36
+      # tweaked to drop the Makefile changes to fix application
+      ./extensionOverridesPatches/mullvadindicator_at_pobega.github.com.patch
+    ];
+  }))
+
   (patchExtension "pano@elhan.io" (old: {
     patches = [
       (substituteAll {
diff --git a/pkgs/desktops/gnome/extensions/extensionOverridesPatches/mullvadindicator_at_pobega.github.com.patch b/pkgs/desktops/gnome/extensions/extensionOverridesPatches/mullvadindicator_at_pobega.github.com.patch
new file mode 100644
index 0000000000000..772da94271103
--- /dev/null
+++ b/pkgs/desktops/gnome/extensions/extensionOverridesPatches/mullvadindicator_at_pobega.github.com.patch
@@ -0,0 +1,25 @@
+From ea472538fc73e9ab81e50183444dbb256d32ecc0 Mon Sep 17 00:00:00 2001
+From: Sergio Rubio <rubiojr@rbel.co>
+Date: Wed, 27 Mar 2024 20:43:38 +0100
+Subject: [PATCH] Bump GNOME desktop version
+
+The extension is 46 compatible.
+
+---
+ metadata.json | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/metadata.json b/metadata.json
+index bc0e272..e647258 100644
+--- a/metadata.json
++++ b/metadata.json
+@@ -3,7 +3,8 @@
+   "description": "Mullvad connection status indicator",
+   "uuid": "mullvadindicator@pobega.github.com",
+   "shell-version": [
+-    "45"
++    "45",
++    "46"
+   ],
+   "url": "https://github.com/Pobega/gnome-shell-extension-mullvad-indicator",
+   "settings-schema": "org.gnome.shell.extensions.MullvadIndicator",
diff --git a/pkgs/desktops/gnome/extensions/extensions.json b/pkgs/desktops/gnome/extensions/extensions.json
index a983f620cdc44..470b4aa9af094 100644
--- a/pkgs/desktops/gnome/extensions/extensions.json
+++ b/pkgs/desktops/gnome/extensions/extensions.json
@@ -5,7 +5,8 @@
     "42": {"version": "28", "sha256": "12hwvdc7hk0p6p72fp4lj43wsq7gq0dwv6kra785v6q8mq298vvd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgY2xvY2sgdG8gbGVmdCBvZiBzdGF0dXMgbWVudSBidXR0b24iLAogICJuYW1lIjogIkZyaXBwZXJ5IE1vdmUgQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2ZyaXBwZXJ5Lm9yZy9leHRlbnNpb25zIiwKICAidXVpZCI6ICJNb3ZlX0Nsb2NrQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
     "43": {"version": "28", "sha256": "12hwvdc7hk0p6p72fp4lj43wsq7gq0dwv6kra785v6q8mq298vvd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgY2xvY2sgdG8gbGVmdCBvZiBzdGF0dXMgbWVudSBidXR0b24iLAogICJuYW1lIjogIkZyaXBwZXJ5IE1vdmUgQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2ZyaXBwZXJ5Lm9yZy9leHRlbnNpb25zIiwKICAidXVpZCI6ICJNb3ZlX0Nsb2NrQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
     "44": {"version": "28", "sha256": "12hwvdc7hk0p6p72fp4lj43wsq7gq0dwv6kra785v6q8mq298vvd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgY2xvY2sgdG8gbGVmdCBvZiBzdGF0dXMgbWVudSBidXR0b24iLAogICJuYW1lIjogIkZyaXBwZXJ5IE1vdmUgQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2ZyaXBwZXJ5Lm9yZy9leHRlbnNpb25zIiwKICAidXVpZCI6ICJNb3ZlX0Nsb2NrQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
-    "45": {"version": "29", "sha256": "0463xm7cm4m83j4jhhr4rq9b336dgqib0v2zh6wl5pzprn3p092h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgY2xvY2sgdG8gbGVmdCBvZiBzdGF0dXMgbWVudSBidXR0b24iLAogICJuYW1lIjogIkZyaXBwZXJ5IE1vdmUgQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIk1vdmVfQ2xvY2tAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiAyOQp9"}
+    "45": {"version": "29", "sha256": "0463xm7cm4m83j4jhhr4rq9b336dgqib0v2zh6wl5pzprn3p092h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgY2xvY2sgdG8gbGVmdCBvZiBzdGF0dXMgbWVudSBidXR0b24iLAogICJuYW1lIjogIkZyaXBwZXJ5IE1vdmUgQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIk1vdmVfQ2xvY2tAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiAyOQp9"},
+    "46": {"version": "30", "sha256": "1k274i7hg4l0m4dcazcaifkb0rhm0kc56qd2xin9daz8ijrwgwzm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgY2xvY2sgdG8gbGVmdCBvZiBzdGF0dXMgbWVudSBidXR0b24iLAogICJuYW1lIjogIkZyaXBwZXJ5IE1vdmUgQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIk1vdmVfQ2xvY2tAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiAzMAp9"}
   }}
 , {"uuid": "Bottom_Panel@rmy.pobox.com", "name": "Frippery Bottom Panel", "pname": "bottom-panel", "description": "Add a bottom panel to the shell", "link": "https://extensions.gnome.org/extension/3/bottom-panel/", "shell_version_map": {
     "38": {"version": "49", "sha256": "09gsbnj564z8f7m593iv8j7s6f32230k0ikfsl1dlv1jsfpfn8zv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGJvdHRvbSBwYW5lbCB0byB0aGUgc2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJuYW1lIjogIkZyaXBwZXJ5IEJvdHRvbSBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZnJpcHBlcnkuYm90dG9tLXBhbmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkJvdHRvbV9QYW5lbEBybXkucG9ib3guY29tIiwKICAidmVyc2lvbiI6IDQ5Cn0="},
@@ -14,7 +15,8 @@
     "42": {"version": "63", "sha256": "11hf5j54zww67n69xz59lfmgi281j11pfljlbkl4kpq1kaii7n5v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGJvdHRvbSBwYW5lbCB0byB0aGUgc2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJuYW1lIjogIkZyaXBwZXJ5IEJvdHRvbSBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZnJpcHBlcnkuYm90dG9tLXBhbmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHA6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiQm90dG9tX1BhbmVsQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
     "43": {"version": "63", "sha256": "11hf5j54zww67n69xz59lfmgi281j11pfljlbkl4kpq1kaii7n5v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGJvdHRvbSBwYW5lbCB0byB0aGUgc2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJuYW1lIjogIkZyaXBwZXJ5IEJvdHRvbSBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZnJpcHBlcnkuYm90dG9tLXBhbmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHA6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiQm90dG9tX1BhbmVsQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
     "44": {"version": "67", "sha256": "0azl76vkxnppw5lclk1dyh747ahxllyvcbhnff54ykx7nb4lnkmj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGJvdHRvbSBwYW5lbCB0byB0aGUgc2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJuYW1lIjogIkZyaXBwZXJ5IEJvdHRvbSBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkJvdHRvbV9QYW5lbEBybXkucG9ib3guY29tIiwKICAidmVyc2lvbiI6IDY3Cn0="},
-    "45": {"version": "70", "sha256": "0g9m181vy1bjkjl15qaw6zca31cam8491g17dckvy0pb3xs2jlwj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGJvdHRvbSBwYW5lbCB0byB0aGUgc2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJuYW1lIjogIkZyaXBwZXJ5IEJvdHRvbSBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkJvdHRvbV9QYW5lbEBybXkucG9ib3guY29tIiwKICAidmVyc2lvbiI6IDcwCn0="}
+    "45": {"version": "70", "sha256": "0g9m181vy1bjkjl15qaw6zca31cam8491g17dckvy0pb3xs2jlwj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGJvdHRvbSBwYW5lbCB0byB0aGUgc2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJuYW1lIjogIkZyaXBwZXJ5IEJvdHRvbSBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkJvdHRvbV9QYW5lbEBybXkucG9ib3guY29tIiwKICAidmVyc2lvbiI6IDcwCn0="},
+    "46": {"version": "71", "sha256": "03b99f2g6v4nlhkk05z7za9kj4vaqghz3wig27vb3h68d4v6qmcs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGJvdHRvbSBwYW5lbCB0byB0aGUgc2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJuYW1lIjogIkZyaXBwZXJ5IEJvdHRvbSBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1ib3R0b20tcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkJvdHRvbV9QYW5lbEBybXkucG9ib3guY29tIiwKICAidmVyc2lvbiI6IDcxCn0="}
   }}
 , {"uuid": "Panel_Favorites@rmy.pobox.com", "name": "Frippery Panel Favorites", "pname": "panel-favorites", "description": "Add launchers for Favorites to the panel", "link": "https://extensions.gnome.org/extension/4/panel-favorites/", "shell_version_map": {
     "38": {"version": "39", "sha256": "0jqysp82rhckdlgn1jhf1n6sqqphv97m9dri5pjiqjggvm4ls80j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBsYXVuY2hlcnMgZm9yIEZhdm9yaXRlcyB0byB0aGUgcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJuYW1lIjogIkZyaXBwZXJ5IFBhbmVsIEZhdm9yaXRlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZnJpcHBlcnkucGFuZWwtZmF2b3JpdGVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2ZyaXBwZXJ5Lm9yZy9leHRlbnNpb25zIiwKICAidXVpZCI6ICJQYW5lbF9GYXZvcml0ZXNAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiAzOQp9"},
@@ -23,7 +25,8 @@
     "42": {"version": "44", "sha256": "0r2srgkz2zjxr1z2n8xc8ypmzmqd6wwrfqkq3p01sdy01hvg5983", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBsYXVuY2hlcnMgZm9yIEZhdm9yaXRlcyB0byB0aGUgcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJuYW1lIjogIkZyaXBwZXJ5IFBhbmVsIEZhdm9yaXRlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZnJpcHBlcnkucGFuZWwtZmF2b3JpdGVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiUGFuZWxfRmF2b3JpdGVzQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNDQKfQ=="},
     "43": {"version": "47", "sha256": "0him9afr50fqgp8mdq5nbdsq4igqvwn7k3grvxzixb4y68514b5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBsYXVuY2hlcnMgZm9yIEZhdm9yaXRlcyB0byB0aGUgcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJuYW1lIjogIkZyaXBwZXJ5IFBhbmVsIEZhdm9yaXRlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiUGFuZWxfRmF2b3JpdGVzQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNDcKfQ=="},
     "44": {"version": "47", "sha256": "0him9afr50fqgp8mdq5nbdsq4igqvwn7k3grvxzixb4y68514b5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBsYXVuY2hlcnMgZm9yIEZhdm9yaXRlcyB0byB0aGUgcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJuYW1lIjogIkZyaXBwZXJ5IFBhbmVsIEZhdm9yaXRlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiUGFuZWxfRmF2b3JpdGVzQHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNDcKfQ=="},
-    "45": {"version": "49", "sha256": "0ayp2h0bimj0b4341rclsfszli77yh5i2gjrp16avs1m8zrqyll1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBsYXVuY2hlcnMgZm9yIEZhdm9yaXRlcyB0byB0aGUgcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJuYW1lIjogIkZyaXBwZXJ5IFBhbmVsIEZhdm9yaXRlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2ZyaXBwZXJ5Lm9yZy9leHRlbnNpb25zIiwKICAidXVpZCI6ICJQYW5lbF9GYXZvcml0ZXNAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiA0OQp9"}
+    "45": {"version": "49", "sha256": "0ayp2h0bimj0b4341rclsfszli77yh5i2gjrp16avs1m8zrqyll1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBsYXVuY2hlcnMgZm9yIEZhdm9yaXRlcyB0byB0aGUgcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJuYW1lIjogIkZyaXBwZXJ5IFBhbmVsIEZhdm9yaXRlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2ZyaXBwZXJ5Lm9yZy9leHRlbnNpb25zIiwKICAidXVpZCI6ICJQYW5lbF9GYXZvcml0ZXNAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiA0OQp9"},
+    "46": {"version": "50", "sha256": "0nzxbsdscyblfkszlf8idkpfhxf128k23gylxipfyxblijxxbrgz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBsYXVuY2hlcnMgZm9yIEZhdm9yaXRlcyB0byB0aGUgcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJuYW1lIjogIkZyaXBwZXJ5IFBhbmVsIEZhdm9yaXRlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1wYW5lbC1mYXZvcml0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2ZyaXBwZXJ5Lm9yZy9leHRlbnNpb25zIiwKICAidXVpZCI6ICJQYW5lbF9GYXZvcml0ZXNAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiA1MAp9"}
   }}
 , {"uuid": "apps-menu@gnome-shell-extensions.gcampax.github.com", "name": "Apps Menu", "pname": "applications-menu", "description": "Add a category-based menu for apps.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.", "link": "https://extensions.gnome.org/extension/6/applications-menu/", "shell_version_map": {
     "38": {"version": "46", "sha256": "1l5fliypxq3s3b6crv7rc6nl741m7hw48dwl0g7vi3yxyw0vyc0x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNhdGVnb3J5LWJhc2VkIG1lbnUgZm9yIGFwcGxpY2F0aW9ucy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImFwcHMtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkFwcGxpY2F0aW9ucyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJlMjAwMkBiay5ydSIsCiAgICAiZGViYXJzaGlyQGdub21lLm9yZyIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJhcHBzLW1lbnVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNDYKfQ=="},
@@ -32,7 +35,8 @@
     "42": {"version": "51", "sha256": "016ngp84g47p904kk9jzfn5mkpy774fj7h70v53dlqc9s7c58r6s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNhdGVnb3J5LWJhc2VkIG1lbnUgZm9yIGFwcGxpY2F0aW9ucy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImFwcHMtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hcHBzLW1lbnUiLAogICJuYW1lIjogIkFwcGxpY2F0aW9ucyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJlMjAwMkBiay5ydSIsCiAgICAiZGViYXJzaGlyQGdub21lLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwcy1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImFwcHMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MQp9"},
     "43": {"version": "52", "sha256": "0h9b0kw919sfcx4l4ffi96fgvhgqnvssgwkbf3qh4lyqs4avb2xy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNhdGVnb3J5LWJhc2VkIG1lbnUgZm9yIGFwcGxpY2F0aW9ucy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImFwcHMtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hcHBzLW1lbnUiLAogICJuYW1lIjogIkFwcGxpY2F0aW9ucyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJlMjAwMkBiay5ydSIsCiAgICAiZGViYXJzaGlyQGdub21lLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwcy1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImFwcHMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mgp9"},
     "44": {"version": "53", "sha256": "18wh0z8pq991i2kcp4a5dpx6m05qansm357k98n258j1q3jxac5m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNhdGVnb3J5LWJhc2VkIG1lbnUgZm9yIGFwcGxpY2F0aW9ucy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImFwcHMtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hcHBzLW1lbnUiLAogICJuYW1lIjogIkFwcGxpY2F0aW9ucyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJlMjAwMkBiay5ydSIsCiAgICAiZGViYXJzaGlyQGdub21lLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwcy1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImFwcHMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mwp9"},
-    "45": {"version": "56", "sha256": "1k8048dmqyyh3vzamafj90qsn4m98kj7gz5f4hj7z9bqdi38nn6d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNhdGVnb3J5LWJhc2VkIG1lbnUgZm9yIGFwcGxpY2F0aW9ucy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImFwcHMtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hcHBzLW1lbnUiLAogICJuYW1lIjogIkFwcGxpY2F0aW9ucyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJlMjAwMkBiay5ydSIsCiAgICAiZGViYXJzaGlyQGdub21lLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwcy1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImFwcHMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Ngp9"}
+    "45": {"version": "56", "sha256": "1k8048dmqyyh3vzamafj90qsn4m98kj7gz5f4hj7z9bqdi38nn6d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNhdGVnb3J5LWJhc2VkIG1lbnUgZm9yIGFwcGxpY2F0aW9ucy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImFwcHMtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hcHBzLW1lbnUiLAogICJuYW1lIjogIkFwcGxpY2F0aW9ucyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJlMjAwMkBiay5ydSIsCiAgICAiZGViYXJzaGlyQGdub21lLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwcy1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImFwcHMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Ngp9"},
+    "46": {"version": "58", "sha256": "0dbadbx7mww4i6jj4a08khvg6d2njaksrqhly78fk99yjz19sg0y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNhdGVnb3J5LWJhc2VkIG1lbnUgZm9yIGFwcHMuXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhcHBzLW1lbnUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tYXBwcy1tZW51IiwKICAibmFtZSI6ICJBcHBzIE1lbnUiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImUyMDAyQGJrLnJ1IiwKICAgICJkZWJhcnNoaXJAZ25vbWUub3JnIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hcHBzLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiYXBwcy1tZW51QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU4Cn0="}
   }}
 , {"uuid": "drive-menu@gnome-shell-extensions.gcampax.github.com", "name": "Removable Drive Menu", "pname": "removable-drive-menu", "description": "A status menu for accessing and unmounting removable devices.", "link": "https://extensions.gnome.org/extension/7/removable-drive-menu/", "shell_version_map": {
     "38": {"version": "45", "sha256": "1f5a9md2gxbl65shbdm498y5dwhhqdpj96gvf2m81ad7gsgxzliv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIGFjY2Vzc2luZyBhbmQgdW5tb3VudGluZyByZW1vdmFibGUgZGV2aWNlcy4iLAogICJleHRlbnNpb24taWQiOiAiZHJpdmUtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIlJlbW92YWJsZSBEcml2ZSBNZW51IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRyaXZlLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJkcml2ZS1tZW51QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQ1Cn0="},
@@ -41,7 +45,8 @@
     "42": {"version": "51", "sha256": "1mjxrmlcrn1c9plcmvs4pgmm13jxc7c7v3s4d3xbl2bp096878dc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIGFjY2Vzc2luZyBhbmQgdW5tb3VudGluZyByZW1vdmFibGUgZGV2aWNlcy4iLAogICJleHRlbnNpb24taWQiOiAiZHJpdmUtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1kcml2ZS1tZW51IiwKICAibmFtZSI6ICJSZW1vdmFibGUgRHJpdmUgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kcml2ZS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImRyaXZlLW1lbnVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTEKfQ=="},
     "43": {"version": "52", "sha256": "0zn9xkw5r0j1kwbs78j7chp4l2404d177w3a4shjd765hvjy6wam", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIGFjY2Vzc2luZyBhbmQgdW5tb3VudGluZyByZW1vdmFibGUgZGV2aWNlcy4iLAogICJleHRlbnNpb24taWQiOiAiZHJpdmUtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1kcml2ZS1tZW51IiwKICAibmFtZSI6ICJSZW1vdmFibGUgRHJpdmUgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kcml2ZS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImRyaXZlLW1lbnVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
     "44": {"version": "53", "sha256": "01wn2icq1cnly9xg7pr2pzk4vqw4l5fhasy5hvq3pq8mbidmdm5s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIGFjY2Vzc2luZyBhbmQgdW5tb3VudGluZyByZW1vdmFibGUgZGV2aWNlcy4iLAogICJleHRlbnNpb24taWQiOiAiZHJpdmUtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1kcml2ZS1tZW51IiwKICAibmFtZSI6ICJSZW1vdmFibGUgRHJpdmUgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kcml2ZS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImRyaXZlLW1lbnVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTMKfQ=="},
-    "45": {"version": "57", "sha256": "1a2j8l2wmxx97snqrj5hs9y0qcjwkv9g00bgr0968h8rpy4fl56y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIGFjY2Vzc2luZyBhbmQgdW5tb3VudGluZyByZW1vdmFibGUgZGV2aWNlcy4iLAogICJleHRlbnNpb24taWQiOiAiZHJpdmUtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1kcml2ZS1tZW51IiwKICAibmFtZSI6ICJSZW1vdmFibGUgRHJpdmUgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kcml2ZS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImRyaXZlLW1lbnVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTcKfQ=="}
+    "45": {"version": "57", "sha256": "1a2j8l2wmxx97snqrj5hs9y0qcjwkv9g00bgr0968h8rpy4fl56y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIGFjY2Vzc2luZyBhbmQgdW5tb3VudGluZyByZW1vdmFibGUgZGV2aWNlcy4iLAogICJleHRlbnNpb24taWQiOiAiZHJpdmUtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1kcml2ZS1tZW51IiwKICAibmFtZSI6ICJSZW1vdmFibGUgRHJpdmUgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kcml2ZS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImRyaXZlLW1lbnVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTcKfQ=="},
+    "46": {"version": "59", "sha256": "07kcjsg0njir7692zgji91izbbynw5m7snpm4f129gwk51fjn5xs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIGFjY2Vzc2luZyBhbmQgdW5tb3VudGluZyByZW1vdmFibGUgZGV2aWNlcy4iLAogICJleHRlbnNpb24taWQiOiAiZHJpdmUtbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1kcml2ZS1tZW51IiwKICAibmFtZSI6ICJSZW1vdmFibGUgRHJpdmUgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kcml2ZS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImRyaXZlLW1lbnVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTkKfQ=="}
   }}
 , {"uuid": "places-menu@gnome-shell-extensions.gcampax.github.com", "name": "Places Status Indicator", "pname": "places-status-indicator", "description": "Add a menu for quickly navigating places in the system.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.", "link": "https://extensions.gnome.org/extension/8/places-status-indicator/", "shell_version_map": {
     "38": {"version": "48", "sha256": "05m8nkg2km72iwnmadx6f4br8qnzqagp78mlhz8r2z6hp19nqsh5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIG1lbnUgZm9yIHF1aWNrbHkgbmF2aWdhdGluZyBwbGFjZXMgaW4gdGhlIHN5c3RlbS5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogInBsYWNlcy1tZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiUGxhY2VzIFN0YXR1cyBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucGxhY2VzLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJwbGFjZXMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0OAp9"},
@@ -50,7 +55,8 @@
     "42": {"version": "54", "sha256": "1sfifdzglmn5x3qxs9k0dn4rwislsyzvp2w3dn47x26mvc90zb90", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIG1lbnUgZm9yIHF1aWNrbHkgbmF2aWdhdGluZyBwbGFjZXMgaW4gdGhlIHN5c3RlbS5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogInBsYWNlcy1tZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBsYWNlcy1tZW51IiwKICAibmFtZSI6ICJQbGFjZXMgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wbGFjZXMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJwbGFjZXMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
     "43": {"version": "55", "sha256": "19pw472bjz3j9z1s23q4rxsjmz0x54fcpi968yw7k8ivd1cihfx5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIG1lbnUgZm9yIHF1aWNrbHkgbmF2aWdhdGluZyBwbGFjZXMgaW4gdGhlIHN5c3RlbS5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogInBsYWNlcy1tZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBsYWNlcy1tZW51IiwKICAibmFtZSI6ICJQbGFjZXMgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wbGFjZXMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJwbGFjZXMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NQp9"},
     "44": {"version": "56", "sha256": "0fc52km2aj7c4n1q6y4yf2l4nzzwawyizi8d6d0b1wrcqa8n64n6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIG1lbnUgZm9yIHF1aWNrbHkgbmF2aWdhdGluZyBwbGFjZXMgaW4gdGhlIHN5c3RlbS5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogInBsYWNlcy1tZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBsYWNlcy1tZW51IiwKICAibmFtZSI6ICJQbGFjZXMgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wbGFjZXMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJwbGFjZXMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Ngp9"},
-    "45": {"version": "59", "sha256": "1sai071js4l70mm8cfnr8yavisiy5wbdifkhc9wl4pqj12g33x31", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIG1lbnUgZm9yIHF1aWNrbHkgbmF2aWdhdGluZyBwbGFjZXMgaW4gdGhlIHN5c3RlbS5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogInBsYWNlcy1tZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBsYWNlcy1tZW51IiwKICAibmFtZSI6ICJQbGFjZXMgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wbGFjZXMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJwbGFjZXMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1OQp9"}
+    "45": {"version": "59", "sha256": "1sai071js4l70mm8cfnr8yavisiy5wbdifkhc9wl4pqj12g33x31", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIG1lbnUgZm9yIHF1aWNrbHkgbmF2aWdhdGluZyBwbGFjZXMgaW4gdGhlIHN5c3RlbS5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogInBsYWNlcy1tZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBsYWNlcy1tZW51IiwKICAibmFtZSI6ICJQbGFjZXMgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wbGFjZXMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJwbGFjZXMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1OQp9"},
+    "46": {"version": "61", "sha256": "1y4q3z5hgmhrlj0b9k99h782phsjimbifsdphf1pg6n2fp31apah", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIG1lbnUgZm9yIHF1aWNrbHkgbmF2aWdhdGluZyBwbGFjZXMgaW4gdGhlIHN5c3RlbS5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogInBsYWNlcy1tZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBsYWNlcy1tZW51IiwKICAibmFtZSI6ICJQbGFjZXMgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wbGFjZXMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJwbGFjZXMtbWVudUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA2MQp9"}
   }}
 , {"uuid": "windowsNavigator@gnome-shell-extensions.gcampax.github.com", "name": "windowNavigator", "pname": "windownavigator", "description": "Allow keyboard selection of windows and workspaces in overlay mode. <Ctrl>number selects a workspace, and <Alt>number selects a window.", "link": "https://extensions.gnome.org/extension/10/windownavigator/", "shell_version_map": {
     "38": {"version": "49", "sha256": "1rzfnssk0iw1ysaya79ksghikkr1rpm41h2w39cz142fby6kip2d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGtleWJvYXJkIHNlbGVjdGlvbiBvZiB3aW5kb3dzIGFuZCB3b3Jrc3BhY2VzIGluIG92ZXJsYXkgbW9kZS4gPEN0cmw+bnVtYmVyIHNlbGVjdHMgYSB3b3Jrc3BhY2UsIGFuZCA8QWx0Pm51bWJlciBzZWxlY3RzIGEgd2luZG93LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3dzTmF2aWdhdG9yIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAid2luZG93TmF2aWdhdG9yIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInphc3BpcmVAcmFtYmxlci5ydSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3dzTmF2aWdhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93c05hdmlnYXRvckBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0OQp9"},
@@ -59,7 +65,8 @@
     "42": {"version": "57", "sha256": "1w3rf6y7l2qgg4ya8cqlj8a6wf8l4yqfjlh17mpmi6gmfzsxplnf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGtleWJvYXJkIHNlbGVjdGlvbiBvZiB3aW5kb3dzIGFuZCB3b3Jrc3BhY2VzIGluIG92ZXJsYXkgbW9kZS4gPEN0cmw+bnVtYmVyIHNlbGVjdHMgYSB3b3Jrc3BhY2UsIGFuZCA8QWx0Pm51bWJlciBzZWxlY3RzIGEgd2luZG93LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3dzTmF2aWdhdG9yIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvd3NOYXZpZ2F0b3IiLAogICJuYW1lIjogIndpbmRvd05hdmlnYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJ6YXNwaXJlQHJhbWJsZXIucnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93c05hdmlnYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3aW5kb3dzTmF2aWdhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU3Cn0="},
     "43": {"version": "58", "sha256": "1l5fiajbv9484ln7kkq5nm4ph71ir9fnav6gqhyzbfhbx94qh9gd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGtleWJvYXJkIHNlbGVjdGlvbiBvZiB3aW5kb3dzIGFuZCB3b3Jrc3BhY2VzIGluIG92ZXJsYXkgbW9kZS4gPEN0cmw+bnVtYmVyIHNlbGVjdHMgYSB3b3Jrc3BhY2UsIGFuZCA8QWx0Pm51bWJlciBzZWxlY3RzIGEgd2luZG93LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3dzTmF2aWdhdG9yIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvd3NOYXZpZ2F0b3IiLAogICJuYW1lIjogIndpbmRvd05hdmlnYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJ6YXNwaXJlQHJhbWJsZXIucnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93c05hdmlnYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3aW5kb3dzTmF2aWdhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU4Cn0="},
     "44": {"version": "59", "sha256": "1pa1i7scsjj91dql0v6zajyx30w446r1cxknl0dp1fpmydqwxjpl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGtleWJvYXJkIHNlbGVjdGlvbiBvZiB3aW5kb3dzIGFuZCB3b3Jrc3BhY2VzIGluIG92ZXJsYXkgbW9kZS4gPEN0cmw+bnVtYmVyIHNlbGVjdHMgYSB3b3Jrc3BhY2UsIGFuZCA8QWx0Pm51bWJlciBzZWxlY3RzIGEgd2luZG93LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3dzTmF2aWdhdG9yIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvd3NOYXZpZ2F0b3IiLAogICJuYW1lIjogIndpbmRvd05hdmlnYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJ6YXNwaXJlQHJhbWJsZXIucnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93c05hdmlnYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3aW5kb3dzTmF2aWdhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU5Cn0="},
-    "45": {"version": "62", "sha256": "10d6hj0nbnfq55lqjjmilb8f6v2cv70kk6bnzyj3cn832hrz959a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGtleWJvYXJkIHNlbGVjdGlvbiBvZiB3aW5kb3dzIGFuZCB3b3Jrc3BhY2VzIGluIG92ZXJsYXkgbW9kZS4gPEN0cmw+bnVtYmVyIHNlbGVjdHMgYSB3b3Jrc3BhY2UsIGFuZCA8QWx0Pm51bWJlciBzZWxlY3RzIGEgd2luZG93LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3dzTmF2aWdhdG9yIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvd3NOYXZpZ2F0b3IiLAogICJuYW1lIjogIndpbmRvd05hdmlnYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJ6YXNwaXJlQHJhbWJsZXIucnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93c05hdmlnYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3aW5kb3dzTmF2aWdhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYyCn0="}
+    "45": {"version": "62", "sha256": "10d6hj0nbnfq55lqjjmilb8f6v2cv70kk6bnzyj3cn832hrz959a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGtleWJvYXJkIHNlbGVjdGlvbiBvZiB3aW5kb3dzIGFuZCB3b3Jrc3BhY2VzIGluIG92ZXJsYXkgbW9kZS4gPEN0cmw+bnVtYmVyIHNlbGVjdHMgYSB3b3Jrc3BhY2UsIGFuZCA8QWx0Pm51bWJlciBzZWxlY3RzIGEgd2luZG93LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3dzTmF2aWdhdG9yIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvd3NOYXZpZ2F0b3IiLAogICJuYW1lIjogIndpbmRvd05hdmlnYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJ6YXNwaXJlQHJhbWJsZXIucnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93c05hdmlnYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3aW5kb3dzTmF2aWdhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYyCn0="},
+    "46": {"version": "64", "sha256": "1gk9sh02g825nwf2kii66n3vpkgi8wsvsj3mbh124rhsl5a7ps6k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGtleWJvYXJkIHNlbGVjdGlvbiBvZiB3aW5kb3dzIGFuZCB3b3Jrc3BhY2VzIGluIG92ZXJsYXkgbW9kZS4gPEN0cmw+bnVtYmVyIHNlbGVjdHMgYSB3b3Jrc3BhY2UsIGFuZCA8QWx0Pm51bWJlciBzZWxlY3RzIGEgd2luZG93LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3dzTmF2aWdhdG9yIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvd3NOYXZpZ2F0b3IiLAogICJuYW1lIjogIndpbmRvd05hdmlnYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJ6YXNwaXJlQHJhbWJsZXIucnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93c05hdmlnYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3aW5kb3dzTmF2aWdhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDY0Cn0="}
   }}
 , {"uuid": "Applications_Menu@rmy.pobox.com", "name": "Frippery Applications Menu", "pname": "applications-menu", "description": "Replace Activities button with an Applications menu", "link": "https://extensions.gnome.org/extension/13/applications-menu/", "shell_version_map": {
     "38": {"version": "45", "sha256": "0kg9dq1ssa11xizb31kcq3p724qzm1cmf30wriqffj043n5nd125", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgQWN0aXZpdGllcyBidXR0b24gd2l0aCBhbiBBcHBsaWNhdGlvbnMgbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImZyaXBwZXJ5LWFwcGxpY2F0aW9ucy1tZW51IiwKICAibmFtZSI6ICJGcmlwcGVyeSBBcHBsaWNhdGlvbnMgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZnJpcHBlcnkuYXBwbGljYXRpb25zLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHA6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiQXBwbGljYXRpb25zX01lbnVAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiA0NQp9"},
@@ -68,7 +75,8 @@
     "42": {"version": "52", "sha256": "0dwfbbdcifciyyj03k1mnmnx66djhszc65hf4z0rhyyry5r5bi99", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgQWN0aXZpdGllcyBidXR0b24gd2l0aCBhbiBBcHBsaWNhdGlvbnMgbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImZyaXBwZXJ5LWFwcGxpY2F0aW9ucy1tZW51IiwKICAibmFtZSI6ICJGcmlwcGVyeSBBcHBsaWNhdGlvbnMgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1hcHBsaWNhdGlvbnMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkFwcGxpY2F0aW9uc19NZW51QHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
     "43": {"version": "52", "sha256": "0dwfbbdcifciyyj03k1mnmnx66djhszc65hf4z0rhyyry5r5bi99", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgQWN0aXZpdGllcyBidXR0b24gd2l0aCBhbiBBcHBsaWNhdGlvbnMgbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImZyaXBwZXJ5LWFwcGxpY2F0aW9ucy1tZW51IiwKICAibmFtZSI6ICJGcmlwcGVyeSBBcHBsaWNhdGlvbnMgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1hcHBsaWNhdGlvbnMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkFwcGxpY2F0aW9uc19NZW51QHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
     "44": {"version": "52", "sha256": "0dwfbbdcifciyyj03k1mnmnx66djhszc65hf4z0rhyyry5r5bi99", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgQWN0aXZpdGllcyBidXR0b24gd2l0aCBhbiBBcHBsaWNhdGlvbnMgbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImZyaXBwZXJ5LWFwcGxpY2F0aW9ucy1tZW51IiwKICAibmFtZSI6ICJGcmlwcGVyeSBBcHBsaWNhdGlvbnMgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1hcHBsaWNhdGlvbnMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwOi8vZnJpcHBlcnkub3JnL2V4dGVuc2lvbnMiLAogICJ1dWlkIjogIkFwcGxpY2F0aW9uc19NZW51QHJteS5wb2JveC5jb20iLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
-    "45": {"version": "54", "sha256": "0ykp28ibnvcz5y07pcrz2gsnwz7l80bbxbgk9kksc33bchhmyrlh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgQWN0aXZpdGllcyBidXR0b24gd2l0aCBhbiBBcHBsaWNhdGlvbnMgbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImZyaXBwZXJ5LWFwcGxpY2F0aW9ucy1tZW51IiwKICAibmFtZSI6ICJGcmlwcGVyeSBBcHBsaWNhdGlvbnMgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1hcHBsaWNhdGlvbnMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHA6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiQXBwbGljYXRpb25zX01lbnVAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"}
+    "45": {"version": "54", "sha256": "0ykp28ibnvcz5y07pcrz2gsnwz7l80bbxbgk9kksc33bchhmyrlh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgQWN0aXZpdGllcyBidXR0b24gd2l0aCBhbiBBcHBsaWNhdGlvbnMgbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImZyaXBwZXJ5LWFwcGxpY2F0aW9ucy1tZW51IiwKICAibmFtZSI6ICJGcmlwcGVyeSBBcHBsaWNhdGlvbnMgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1hcHBsaWNhdGlvbnMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHA6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiQXBwbGljYXRpb25zX01lbnVAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
+    "46": {"version": "55", "sha256": "08b35dv1amplplai6idszq751bhfs83arg1ap7acv3pjfgsb4g0f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgQWN0aXZpdGllcyBidXR0b24gd2l0aCBhbiBBcHBsaWNhdGlvbnMgbWVudSIsCiAgImdldHRleHQtZG9tYWluIjogImZyaXBwZXJ5LWFwcGxpY2F0aW9ucy1tZW51IiwKICAibmFtZSI6ICJGcmlwcGVyeSBBcHBsaWNhdGlvbnMgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmlwcGVyeS1hcHBsaWNhdGlvbnMtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHA6Ly9mcmlwcGVyeS5vcmcvZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAiQXBwbGljYXRpb25zX01lbnVAcm15LnBvYm94LmNvbSIsCiAgInZlcnNpb24iOiA1NQp9"}
   }}
 , {"uuid": "auto-move-windows@gnome-shell-extensions.gcampax.github.com", "name": "Auto Move Windows", "pname": "auto-move-windows", "description": "Move applications to specific workspaces when they create windows.", "link": "https://extensions.gnome.org/extension/16/auto-move-windows/", "shell_version_map": {
     "38": {"version": "44", "sha256": "05lmpmyzaawxh3kn030a8sanq7p6g87zfh7nzxfvgi8nbpygd59q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgYXBwbGljYXRpb25zIHRvIHNwZWNpZmljIHdvcmtzcGFjZXMgd2hlbiB0aGV5IGNyZWF0ZSB3aW5kb3dzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhdXRvLW1vdmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkF1dG8gTW92ZSBXaW5kb3dzIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJhbGVzc2FuZHJvLmNyaXNtYW5pQGdtYWlsLmNvbSIsCiAgICAidGhvbWFzLmJvdWZmb25AZ21haWwuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLW1vdmUtd2luZG93cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImF1dG8tbW92ZS13aW5kb3dzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQ0Cn0="},
@@ -77,7 +85,8 @@
     "42": {"version": "49", "sha256": "031ppsjqv3y81wcjjsm14rqfh0l7vvaavy01hlqfyglpk8vlfvml", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgYXBwbGljYXRpb25zIHRvIHNwZWNpZmljIHdvcmtzcGFjZXMgd2hlbiB0aGV5IGNyZWF0ZSB3aW5kb3dzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhdXRvLW1vdmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hdXRvLW1vdmUtd2luZG93cyIsCiAgIm5hbWUiOiAiQXV0byBNb3ZlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImFsZXNzYW5kcm8uY3Jpc21hbmlAZ21haWwuY29tIiwKICAgICJ0aG9tYXMuYm91ZmZvbkBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF1dG8tbW92ZS13aW5kb3dzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImF1dG8tbW92ZS13aW5kb3dzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQ5Cn0="},
     "43": {"version": "50", "sha256": "0s0ky7sslyf2cy68xlqrrz01py82wi861gpcfqj97qdwdf9hzq2g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgYXBwbGljYXRpb25zIHRvIHNwZWNpZmljIHdvcmtzcGFjZXMgd2hlbiB0aGV5IGNyZWF0ZSB3aW5kb3dzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhdXRvLW1vdmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hdXRvLW1vdmUtd2luZG93cyIsCiAgIm5hbWUiOiAiQXV0byBNb3ZlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImFsZXNzYW5kcm8uY3Jpc21hbmlAZ21haWwuY29tIiwKICAgICJ0aG9tYXMuYm91ZmZvbkBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF1dG8tbW92ZS13aW5kb3dzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImF1dG8tbW92ZS13aW5kb3dzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUwCn0="},
     "44": {"version": "51", "sha256": "1j9nba9r5a56c2ks61jbrr6n8gc470g4c0lig9r4angqhc6sn7bl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgYXBwbGljYXRpb25zIHRvIHNwZWNpZmljIHdvcmtzcGFjZXMgd2hlbiB0aGV5IGNyZWF0ZSB3aW5kb3dzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhdXRvLW1vdmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hdXRvLW1vdmUtd2luZG93cyIsCiAgIm5hbWUiOiAiQXV0byBNb3ZlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImFsZXNzYW5kcm8uY3Jpc21hbmlAZ21haWwuY29tIiwKICAgICJ0aG9tYXMuYm91ZmZvbkBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF1dG8tbW92ZS13aW5kb3dzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImF1dG8tbW92ZS13aW5kb3dzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUxCn0="},
-    "45": {"version": "54", "sha256": "11gxlyp83096ky0iqd8svn802ih7knvhn3qml6532c1h2xv8krlp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgYXBwbGljYXRpb25zIHRvIHNwZWNpZmljIHdvcmtzcGFjZXMgd2hlbiB0aGV5IGNyZWF0ZSB3aW5kb3dzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhdXRvLW1vdmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hdXRvLW1vdmUtd2luZG93cyIsCiAgIm5hbWUiOiAiQXV0byBNb3ZlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImFsZXNzYW5kcm8uY3Jpc21hbmlAZ21haWwuY29tIiwKICAgICJ0aG9tYXMuYm91ZmZvbkBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF1dG8tbW92ZS13aW5kb3dzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImF1dG8tbW92ZS13aW5kb3dzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU0Cn0="}
+    "45": {"version": "54", "sha256": "11gxlyp83096ky0iqd8svn802ih7knvhn3qml6532c1h2xv8krlp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgYXBwbGljYXRpb25zIHRvIHNwZWNpZmljIHdvcmtzcGFjZXMgd2hlbiB0aGV5IGNyZWF0ZSB3aW5kb3dzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhdXRvLW1vdmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hdXRvLW1vdmUtd2luZG93cyIsCiAgIm5hbWUiOiAiQXV0byBNb3ZlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImFsZXNzYW5kcm8uY3Jpc21hbmlAZ21haWwuY29tIiwKICAgICJ0aG9tYXMuYm91ZmZvbkBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF1dG8tbW92ZS13aW5kb3dzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImF1dG8tbW92ZS13aW5kb3dzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU0Cn0="},
+    "46": {"version": "56", "sha256": "00snc3q2102c19m2jzinlca4id66qk40wadr2dq2ipn1qndf4pi8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgYXBwbGljYXRpb25zIHRvIHNwZWNpZmljIHdvcmtzcGFjZXMgd2hlbiB0aGV5IGNyZWF0ZSB3aW5kb3dzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJhdXRvLW1vdmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1hdXRvLW1vdmUtd2luZG93cyIsCiAgIm5hbWUiOiAiQXV0byBNb3ZlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImFsZXNzYW5kcm8uY3Jpc21hbmlAZ21haWwuY29tIiwKICAgICJ0aG9tYXMuYm91ZmZvbkBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF1dG8tbW92ZS13aW5kb3dzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImF1dG8tbW92ZS13aW5kb3dzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU2Cn0="}
   }}
 , {"uuid": "native-window-placement@gnome-shell-extensions.gcampax.github.com", "name": "Native Window Placement", "pname": "native-window-placement", "description": "Arrange windows in overview in a more compact way.", "link": "https://extensions.gnome.org/extension/18/native-window-placement/", "shell_version_map": {
     "38": {"version": "45", "sha256": "15vhdcfrfbsinp0m1jfygjl4djccafhvgwc1rsi321jvykqhajmm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBpbiBvdmVydmlldyBpbiBhIG1vcmUgY29tcGFjdCB3YXkuIiwKICAiZXh0ZW5zaW9uLWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiTmF0aXZlIFdpbmRvdyBQbGFjZW1lbnQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIndlcG1hc2NoZGFAZ214LmRlIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uYXRpdmUtd2luZG93LXBsYWNlbWVudCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQ1Cn0="},
@@ -86,7 +95,8 @@
     "42": {"version": "51", "sha256": "1i9grnrd07zpsshf1710ag4y0zqwgi1c7rrarb8l55w45slg2254", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBpbiBvdmVydmlldyBpbiBhIG1vcmUgY29tcGFjdCB3YXkuIiwKICAiZXh0ZW5zaW9uLWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAibmFtZSI6ICJOYXRpdmUgV2luZG93IFBsYWNlbWVudCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAid2VwbWFzY2hkYUBnbXguZGUiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUxCn0="},
     "43": {"version": "52", "sha256": "09660cb8y0549py4d4wrl2fhg7grl0c1fnakzznvfwzh0cdr3f8r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBpbiBvdmVydmlldyBpbiBhIG1vcmUgY29tcGFjdCB3YXkuIiwKICAiZXh0ZW5zaW9uLWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAibmFtZSI6ICJOYXRpdmUgV2luZG93IFBsYWNlbWVudCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAid2VwbWFzY2hkYUBnbXguZGUiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUyCn0="},
     "44": {"version": "53", "sha256": "18k0b7vsjmvbvnzb5b5qa3jk0i14ah93cwi1399m6ma9llhyhwjw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBpbiBvdmVydmlldyBpbiBhIG1vcmUgY29tcGFjdCB3YXkuIiwKICAiZXh0ZW5zaW9uLWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAibmFtZSI6ICJOYXRpdmUgV2luZG93IFBsYWNlbWVudCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAid2VwbWFzY2hkYUBnbXguZGUiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUzCn0="},
-    "45": {"version": "56", "sha256": "0g864ji4bazc7x25qqjrcayhpq8sqrabxdwfl7iviz7s0yc40iz0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBpbiBvdmVydmlldyBpbiBhIG1vcmUgY29tcGFjdCB3YXkuIiwKICAiZXh0ZW5zaW9uLWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAibmFtZSI6ICJOYXRpdmUgV2luZG93IFBsYWNlbWVudCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAid2VwbWFzY2hkYUBnbXguZGUiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU2Cn0="}
+    "45": {"version": "56", "sha256": "0g864ji4bazc7x25qqjrcayhpq8sqrabxdwfl7iviz7s0yc40iz0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBpbiBvdmVydmlldyBpbiBhIG1vcmUgY29tcGFjdCB3YXkuIiwKICAiZXh0ZW5zaW9uLWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAibmFtZSI6ICJOYXRpdmUgV2luZG93IFBsYWNlbWVudCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAid2VwbWFzY2hkYUBnbXguZGUiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU2Cn0="},
+    "46": {"version": "58", "sha256": "14774qxsir8dr7nknmfp08iddl50rsdwr50lrslcvbpn0w0byjkx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBpbiBvdmVydmlldyBpbiBhIG1vcmUgY29tcGFjdCB3YXkuIiwKICAiZXh0ZW5zaW9uLWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAibmFtZSI6ICJOYXRpdmUgV2luZG93IFBsYWNlbWVudCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAid2VwbWFzY2hkYUBnbXguZGUiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogIm5hdGl2ZS13aW5kb3ctcGxhY2VtZW50QGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU4Cn0="}
   }}
 , {"uuid": "user-theme@gnome-shell-extensions.gcampax.github.com", "name": "User Themes", "pname": "user-themes", "description": "Load shell themes from user directory.", "link": "https://extensions.gnome.org/extension/19/user-themes/", "shell_version_map": {
     "38": {"version": "42", "sha256": "0jykwcd8pmvr03dm2vala6nzzhi9i83c11svgx8wymfvxr5qrya8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgc2hlbGwgdGhlbWVzIGZyb20gdXNlciBkaXJlY3RvcnkuIiwKICAiZXh0ZW5zaW9uLWlkIjogInVzZXItdGhlbWUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJVc2VyIFRoZW1lcyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiam9obi5zdG93ZXJzQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudXNlci10aGVtZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogInVzZXItdGhlbWVAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNDIKfQ=="},
@@ -95,7 +105,8 @@
     "42": {"version": "49", "sha256": "0ykaw2602iixn87fc65h6vwxzlcjidpp9hpcsmf66r0f6xibgpah", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgc2hlbGwgdGhlbWVzIGZyb20gdXNlciBkaXJlY3RvcnkuIiwKICAiZXh0ZW5zaW9uLWlkIjogInVzZXItdGhlbWUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZSIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImpvaG4uc3Rvd2Vyc0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzZXItdGhlbWUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAidXNlci10aGVtZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0OQp9"},
     "43": {"version": "50", "sha256": "0jyd2rn2nlvcmx8xn2azhbaqf5k0kgyx8ciy6bj1iq35s7k5sp7h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgc2hlbGwgdGhlbWVzIGZyb20gdXNlciBkaXJlY3RvcnkuIiwKICAiZXh0ZW5zaW9uLWlkIjogInVzZXItdGhlbWUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZSIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImpvaG4uc3Rvd2Vyc0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzZXItdGhlbWUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAidXNlci10aGVtZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MAp9"},
     "44": {"version": "51", "sha256": "0m7gw3lcds1r6d8q5962bjxb4b2hqy633c73axxc5gvyr9i0bjf2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgc2hlbGwgdGhlbWVzIGZyb20gdXNlciBkaXJlY3RvcnkuIiwKICAiZXh0ZW5zaW9uLWlkIjogInVzZXItdGhlbWUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZSIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImpvaG4uc3Rvd2Vyc0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzZXItdGhlbWUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAidXNlci10aGVtZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MQp9"},
-    "45": {"version": "54", "sha256": "0gpkxmjaaq9rmh16wf5cf24q2w2wb0z0z8v7mcg7wrwsjszg7xhb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgc2hlbGwgdGhlbWVzIGZyb20gdXNlciBkaXJlY3RvcnkuIiwKICAiZXh0ZW5zaW9uLWlkIjogInVzZXItdGhlbWUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZSIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImpvaG4uc3Rvd2Vyc0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzZXItdGhlbWUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAidXNlci10aGVtZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"}
+    "45": {"version": "54", "sha256": "0gpkxmjaaq9rmh16wf5cf24q2w2wb0z0z8v7mcg7wrwsjszg7xhb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgc2hlbGwgdGhlbWVzIGZyb20gdXNlciBkaXJlY3RvcnkuIiwKICAiZXh0ZW5zaW9uLWlkIjogInVzZXItdGhlbWUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZSIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImpvaG4uc3Rvd2Vyc0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzZXItdGhlbWUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAidXNlci10aGVtZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
+    "46": {"version": "57", "sha256": "17wnlzbqdqc1j0cz61422601pngwxvvch2zw5462k4916kxjbf2s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgc2hlbGwgdGhlbWVzIGZyb20gdXNlciBkaXJlY3RvcnkuIiwKICAiZXh0ZW5zaW9uLWlkIjogInVzZXItdGhlbWUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZSIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImpvaG4uc3Rvd2Vyc0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzZXItdGhlbWUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAidXNlci10aGVtZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Nwp9"}
   }}
 , {"uuid": "workspace-indicator@gnome-shell-extensions.gcampax.github.com", "name": "Workspace Indicator", "pname": "workspace-indicator", "description": "Put an indicator on the panel signaling in which workspace you are, and give you the possibility of switching to another one.", "link": "https://extensions.gnome.org/extension/21/workspace-indicator/", "shell_version_map": {
     "38": {"version": "45", "sha256": "16y7zhlsj0qjwwj78fvcr81m7081i2y30gwjm35qahr3j0gfrk16", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBhbiBpbmRpY2F0b3Igb24gdGhlIHBhbmVsIHNpZ25hbGluZyBpbiB3aGljaCB3b3Jrc3BhY2UgeW91IGFyZSwgYW5kIGdpdmUgeW91IHRoZSBwb3NzaWJpbGl0eSBvZiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBvbmUuIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJXb3Jrc3BhY2UgSW5kaWNhdG9yIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJlcmljay5yZWRAZ21haWwuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3Jrc3BhY2UtaW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid29ya3NwYWNlLWluZGljYXRvckBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0NQp9"},
@@ -104,7 +115,8 @@
     "42": {"version": "52", "sha256": "1i0jm0k3rjk97283p0iv0nx2cclij0kx7dqb35a7kd2pxh89jn8w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBhbiBpbmRpY2F0b3Igb24gdGhlIHBhbmVsIHNpZ25hbGluZyBpbiB3aGljaCB3b3Jrc3BhY2UgeW91IGFyZSwgYW5kIGdpdmUgeW91IHRoZSBwb3NzaWJpbGl0eSBvZiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBvbmUuIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24td29ya3NwYWNlLWluZGljYXRvciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIEluZGljYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZXJpY2sucmVkQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2UtaW5kaWNhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUyCn0="},
     "43": {"version": "53", "sha256": "0idl8n6205ymh1z3w15sxv98940q8qch2pp5wk9gzd594i2aya2p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBhbiBpbmRpY2F0b3Igb24gdGhlIHBhbmVsIHNpZ25hbGluZyBpbiB3aGljaCB3b3Jrc3BhY2UgeW91IGFyZSwgYW5kIGdpdmUgeW91IHRoZSBwb3NzaWJpbGl0eSBvZiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBvbmUuIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24td29ya3NwYWNlLWluZGljYXRvciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIEluZGljYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZXJpY2sucmVkQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2UtaW5kaWNhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUzCn0="},
     "44": {"version": "54", "sha256": "03jq25xa3z0b32vczqv12gkfdmw4ll56zb0walm5gfmmmzivsn1i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBhbiBpbmRpY2F0b3Igb24gdGhlIHBhbmVsIHNpZ25hbGluZyBpbiB3aGljaCB3b3Jrc3BhY2UgeW91IGFyZSwgYW5kIGdpdmUgeW91IHRoZSBwb3NzaWJpbGl0eSBvZiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBvbmUuIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24td29ya3NwYWNlLWluZGljYXRvciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIEluZGljYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZXJpY2sucmVkQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2UtaW5kaWNhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU0Cn0="},
-    "45": {"version": "57", "sha256": "0qpzc1njng95ck1svw9nig2j9i5p7nqbgaxm1x7gg3i9jn8rgwqh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBhbiBpbmRpY2F0b3Igb24gdGhlIHBhbmVsIHNpZ25hbGluZyBpbiB3aGljaCB3b3Jrc3BhY2UgeW91IGFyZSwgYW5kIGdpdmUgeW91IHRoZSBwb3NzaWJpbGl0eSBvZiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBvbmUuIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24td29ya3NwYWNlLWluZGljYXRvciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIEluZGljYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZXJpY2sucmVkQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2UtaW5kaWNhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU3Cn0="}
+    "45": {"version": "57", "sha256": "0qpzc1njng95ck1svw9nig2j9i5p7nqbgaxm1x7gg3i9jn8rgwqh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBhbiBpbmRpY2F0b3Igb24gdGhlIHBhbmVsIHNpZ25hbGluZyBpbiB3aGljaCB3b3Jrc3BhY2UgeW91IGFyZSwgYW5kIGdpdmUgeW91IHRoZSBwb3NzaWJpbGl0eSBvZiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBvbmUuIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24td29ya3NwYWNlLWluZGljYXRvciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIEluZGljYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZXJpY2sucmVkQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2UtaW5kaWNhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU3Cn0="},
+    "46": {"version": "59", "sha256": "0fq3rjch1ciqk0xpr8zkmsvmbd7jsch10mg0jdchjmscim14cvii", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBhbiBpbmRpY2F0b3Igb24gdGhlIHBhbmVsIHNpZ25hbGluZyBpbiB3aGljaCB3b3Jrc3BhY2UgeW91IGFyZSwgYW5kIGdpdmUgeW91IHRoZSBwb3NzaWJpbGl0eSBvZiBzd2l0Y2hpbmcgdG8gYW5vdGhlciBvbmUuIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24td29ya3NwYWNlLWluZGljYXRvciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIEluZGljYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZXJpY2sucmVkQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2UtaW5kaWNhdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU5Cn0="}
   }}
 , {"uuid": "gTile@vibou", "name": "gTile", "pname": "gtile", "description": "Tile windows on a grid", "link": "https://extensions.gnome.org/extension/28/gtile/", "shell_version_map": {
     "38": {"version": "52", "sha256": "0j3mva9qzsz3nvww9d99ig5z4nr9g339lirmavfzry9yf8l29cwz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGdyaWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ3RpbGVAdmlib3UiLAogICJuYW1lIjogImdUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0aWxlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nVGlsZS9nVGlsZSIsCiAgInV1aWQiOiAiZ1RpbGVAdmlib3UiLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
@@ -113,7 +125,8 @@
     "42": {"version": "52", "sha256": "0j3mva9qzsz3nvww9d99ig5z4nr9g339lirmavfzry9yf8l29cwz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGdyaWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ3RpbGVAdmlib3UiLAogICJuYW1lIjogImdUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0aWxlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nVGlsZS9nVGlsZSIsCiAgInV1aWQiOiAiZ1RpbGVAdmlib3UiLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
     "43": {"version": "52", "sha256": "0j3mva9qzsz3nvww9d99ig5z4nr9g339lirmavfzry9yf8l29cwz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGdyaWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ3RpbGVAdmlib3UiLAogICJuYW1lIjogImdUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0aWxlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nVGlsZS9nVGlsZSIsCiAgInV1aWQiOiAiZ1RpbGVAdmlib3UiLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
     "44": {"version": "52", "sha256": "0j3mva9qzsz3nvww9d99ig5z4nr9g339lirmavfzry9yf8l29cwz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGdyaWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ3RpbGVAdmlib3UiLAogICJuYW1lIjogImdUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0aWxlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nVGlsZS9nVGlsZSIsCiAgInV1aWQiOiAiZ1RpbGVAdmlib3UiLAogICJ2ZXJzaW9uIjogNTIKfQ=="},
-    "45": {"version": "58", "sha256": "0j9sjxcy9jjqw2a0crdqvyfn6bs1463w51w6lkwcn63nkr7yh8ns", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGdyaWQiLAogICJuYW1lIjogImdUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0aWxlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dUaWxlIiwKICAidXVpZCI6ICJnVGlsZUB2aWJvdSIsCiAgInZlcnNpb24iOiA1OAp9"}
+    "45": {"version": "59", "sha256": "1xf0g2y0722nxiy768p54v5ra06fh0smvgf6wh5vcrs2s521rbrp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGdyaWQiLAogICJuYW1lIjogImdUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0aWxlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nVGlsZSIsCiAgInV1aWQiOiAiZ1RpbGVAdmlib3UiLAogICJ2ZXJzaW9uIjogNTkKfQ=="},
+    "46": {"version": "59", "sha256": "1xf0g2y0722nxiy768p54v5ra06fh0smvgf6wh5vcrs2s521rbrp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGdyaWQiLAogICJuYW1lIjogImdUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0aWxlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nVGlsZSIsCiAgInV1aWQiOiAiZ1RpbGVAdmlib3UiLAogICJ2ZXJzaW9uIjogNTkKfQ=="}
   }}
 , {"uuid": "lockkeys@vaina.lt", "name": "Lock Keys", "pname": "lock-keys", "description": "Numlock & Capslock status on the panel.", "link": "https://extensions.gnome.org/extension/36/lock-keys/", "shell_version_map": {
     "38": {"version": "52", "sha256": "02190kcp0c1mzlxf4ax0shk7r6zh9adynidxnjdhbkwl9knxalra", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk51bWxvY2sgJiBDYXBzbG9jayBzdGF0dXMgb24gdGhlIHBhbmVsLiBHbm9tZSB2ZXJzaW9uIDMuMzAgYW5kIGVhcmxpZXIgdXNlcnMgcGxlYXNlIGluc3RhbGwgNDQgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9uIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZG93bmxvYWQtZXh0ZW5zaW9uL2xvY2trZXlzJTQwdmFpbmEubHQuc2hlbGwtZXh0ZW5zaW9uLnppcD92ZXJzaW9uX3RhZz0yNjIyOSAiLAogICJuYW1lIjogIkxvY2sgS2V5cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiS2F6aW1pZXJhcyBWYWluYSwgUGllcnJlIE9zc21hbiwgZXJndWlsbGUsIGpvbm5pdXMsIFBoaWxpcHAgV29sZmVyLCBNYXJpdXN6IExpc293c2tpLCBDcmlzdGlhbiBCZXJvaXphLCB3YXJtc3VuMDIyMCwgUmFzbXVzIEthaiwgUGFibG8gTWFydGluLUdvbWV6IEJvdXNrYSwgUmFwaGFcdTAwZWJsIFJvY2hldCwgTHVpeiBOaWNrZWwsIEplc3NlLCBEdVx1MDE2MWFuIEthemlrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9rYXp5c21hc3Rlci9nbm9tZS1zaGVsbC1leHRlbnNpb24tbG9ja2tleXMiLAogICJ1dWlkIjogImxvY2trZXlzQHZhaW5hLmx0IiwKICAidmVyc2lvbiI6IDUyCn0="},
@@ -122,7 +135,8 @@
     "42": {"version": "52", "sha256": "02190kcp0c1mzlxf4ax0shk7r6zh9adynidxnjdhbkwl9knxalra", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk51bWxvY2sgJiBDYXBzbG9jayBzdGF0dXMgb24gdGhlIHBhbmVsLiBHbm9tZSB2ZXJzaW9uIDMuMzAgYW5kIGVhcmxpZXIgdXNlcnMgcGxlYXNlIGluc3RhbGwgNDQgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9uIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZG93bmxvYWQtZXh0ZW5zaW9uL2xvY2trZXlzJTQwdmFpbmEubHQuc2hlbGwtZXh0ZW5zaW9uLnppcD92ZXJzaW9uX3RhZz0yNjIyOSAiLAogICJuYW1lIjogIkxvY2sgS2V5cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiS2F6aW1pZXJhcyBWYWluYSwgUGllcnJlIE9zc21hbiwgZXJndWlsbGUsIGpvbm5pdXMsIFBoaWxpcHAgV29sZmVyLCBNYXJpdXN6IExpc293c2tpLCBDcmlzdGlhbiBCZXJvaXphLCB3YXJtc3VuMDIyMCwgUmFzbXVzIEthaiwgUGFibG8gTWFydGluLUdvbWV6IEJvdXNrYSwgUmFwaGFcdTAwZWJsIFJvY2hldCwgTHVpeiBOaWNrZWwsIEplc3NlLCBEdVx1MDE2MWFuIEthemlrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9rYXp5c21hc3Rlci9nbm9tZS1zaGVsbC1leHRlbnNpb24tbG9ja2tleXMiLAogICJ1dWlkIjogImxvY2trZXlzQHZhaW5hLmx0IiwKICAidmVyc2lvbiI6IDUyCn0="},
     "43": {"version": "52", "sha256": "02190kcp0c1mzlxf4ax0shk7r6zh9adynidxnjdhbkwl9knxalra", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk51bWxvY2sgJiBDYXBzbG9jayBzdGF0dXMgb24gdGhlIHBhbmVsLiBHbm9tZSB2ZXJzaW9uIDMuMzAgYW5kIGVhcmxpZXIgdXNlcnMgcGxlYXNlIGluc3RhbGwgNDQgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9uIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZG93bmxvYWQtZXh0ZW5zaW9uL2xvY2trZXlzJTQwdmFpbmEubHQuc2hlbGwtZXh0ZW5zaW9uLnppcD92ZXJzaW9uX3RhZz0yNjIyOSAiLAogICJuYW1lIjogIkxvY2sgS2V5cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiS2F6aW1pZXJhcyBWYWluYSwgUGllcnJlIE9zc21hbiwgZXJndWlsbGUsIGpvbm5pdXMsIFBoaWxpcHAgV29sZmVyLCBNYXJpdXN6IExpc293c2tpLCBDcmlzdGlhbiBCZXJvaXphLCB3YXJtc3VuMDIyMCwgUmFzbXVzIEthaiwgUGFibG8gTWFydGluLUdvbWV6IEJvdXNrYSwgUmFwaGFcdTAwZWJsIFJvY2hldCwgTHVpeiBOaWNrZWwsIEplc3NlLCBEdVx1MDE2MWFuIEthemlrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9rYXp5c21hc3Rlci9nbm9tZS1zaGVsbC1leHRlbnNpb24tbG9ja2tleXMiLAogICJ1dWlkIjogImxvY2trZXlzQHZhaW5hLmx0IiwKICAidmVyc2lvbiI6IDUyCn0="},
     "44": {"version": "52", "sha256": "02190kcp0c1mzlxf4ax0shk7r6zh9adynidxnjdhbkwl9knxalra", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk51bWxvY2sgJiBDYXBzbG9jayBzdGF0dXMgb24gdGhlIHBhbmVsLiBHbm9tZSB2ZXJzaW9uIDMuMzAgYW5kIGVhcmxpZXIgdXNlcnMgcGxlYXNlIGluc3RhbGwgNDQgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9uIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZG93bmxvYWQtZXh0ZW5zaW9uL2xvY2trZXlzJTQwdmFpbmEubHQuc2hlbGwtZXh0ZW5zaW9uLnppcD92ZXJzaW9uX3RhZz0yNjIyOSAiLAogICJuYW1lIjogIkxvY2sgS2V5cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiS2F6aW1pZXJhcyBWYWluYSwgUGllcnJlIE9zc21hbiwgZXJndWlsbGUsIGpvbm5pdXMsIFBoaWxpcHAgV29sZmVyLCBNYXJpdXN6IExpc293c2tpLCBDcmlzdGlhbiBCZXJvaXphLCB3YXJtc3VuMDIyMCwgUmFzbXVzIEthaiwgUGFibG8gTWFydGluLUdvbWV6IEJvdXNrYSwgUmFwaGFcdTAwZWJsIFJvY2hldCwgTHVpeiBOaWNrZWwsIEplc3NlLCBEdVx1MDE2MWFuIEthemlrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9rYXp5c21hc3Rlci9nbm9tZS1zaGVsbC1leHRlbnNpb24tbG9ja2tleXMiLAogICJ1dWlkIjogImxvY2trZXlzQHZhaW5hLmx0IiwKICAidmVyc2lvbiI6IDUyCn0="},
-    "45": {"version": "55", "sha256": "077kyy2h43xnj68zbq594dc7h995hg15a0f9gnnfv2wfag1ggksn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk51bWxvY2sgJiBDYXBzbG9jayBzdGF0dXMgb24gdGhlIHBhbmVsLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxvY2trZXlzIiwKICAibmFtZSI6ICJMb2NrIEtleXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIkthemltaWVyYXMgVmFpbmEsIFBpZXJyZSBPc3NtYW4sIGVyZ3VpbGxlLCBqb25uaXVzLCBQaGlsaXBwIFdvbGZlciwgTWFyaXVzeiBMaXNvd3NraSwgQ3Jpc3RpYW4gQmVyb2l6YSwgd2FybXN1bjAyMjAsIFJhc211cyBLYWosIFBhYmxvIE1hcnRpbi1Hb21leiBCb3Vza2EsIFJhcGhhXHUwMGVibCBSb2NoZXQsIEx1aXogTmlja2VsLCBKZXNzZSwgRHVcdTAxNjFhbiBLYXppayBhbmQgbWFueSBvdGhlcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubG9ja2tleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20va2F6eXNtYXN0ZXIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxvY2trZXlzIiwKICAidXVpZCI6ICJsb2Nra2V5c0B2YWluYS5sdCIsCiAgInZlcnNpb24iOiA1NQp9"}
+    "45": {"version": "57", "sha256": "0z6cmzr9bx03akwdxkpay2lj2pai77qs199sx9i234z2ab035qjs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk51bWxvY2sgJiBDYXBzbG9jayBzdGF0dXMgb24gdGhlIHBhbmVsLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxvY2trZXlzIiwKICAibmFtZSI6ICJMb2NrIEtleXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIkthemltaWVyYXMgVmFpbmEsIFBpZXJyZSBPc3NtYW4sIGVyZ3VpbGxlLCBqb25uaXVzLCBQaGlsaXBwIFdvbGZlciwgTWFyaXVzeiBMaXNvd3NraSwgQ3Jpc3RpYW4gQmVyb2l6YSwgd2FybXN1bjAyMjAsIFJhc211cyBLYWosIFBhYmxvIE1hcnRpbi1Hb21leiBCb3Vza2EsIFJhcGhhXHUwMGVibCBSb2NoZXQsIEx1aXogTmlja2VsLCBKZXNzZSwgRHVcdTAxNjFhbiBLYXppayBhbmQgbWFueSBvdGhlcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubG9ja2tleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2thenlzbWFzdGVyL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sb2Nra2V5cyIsCiAgInV1aWQiOiAibG9ja2tleXNAdmFpbmEubHQiLAogICJ2ZXJzaW9uIjogNTcKfQ=="},
+    "46": {"version": "57", "sha256": "0z6cmzr9bx03akwdxkpay2lj2pai77qs199sx9i234z2ab035qjs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk51bWxvY2sgJiBDYXBzbG9jayBzdGF0dXMgb24gdGhlIHBhbmVsLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxvY2trZXlzIiwKICAibmFtZSI6ICJMb2NrIEtleXMiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIkthemltaWVyYXMgVmFpbmEsIFBpZXJyZSBPc3NtYW4sIGVyZ3VpbGxlLCBqb25uaXVzLCBQaGlsaXBwIFdvbGZlciwgTWFyaXVzeiBMaXNvd3NraSwgQ3Jpc3RpYW4gQmVyb2l6YSwgd2FybXN1bjAyMjAsIFJhc211cyBLYWosIFBhYmxvIE1hcnRpbi1Hb21leiBCb3Vza2EsIFJhcGhhXHUwMGVibCBSb2NoZXQsIEx1aXogTmlja2VsLCBKZXNzZSwgRHVcdTAxNjFhbiBLYXppayBhbmQgbWFueSBvdGhlcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubG9ja2tleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2thenlzbWFzdGVyL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sb2Nra2V5cyIsCiAgInV1aWQiOiAibG9ja2tleXNAdmFpbmEubHQiLAogICJ2ZXJzaW9uIjogNTcKfQ=="}
   }}
 , {"uuid": "putWindow@clemens.lab21.org", "name": "Put Windows", "pname": "put-windows", "description": "Fully customizable replacement for the old compiz put plugin. \n * Move windows to left/right side, bottom/top, center or corner (aka tile)\n * Move window to other screen \n * Select focused window using the keyboard \n * Application based window placement \n\n Please check github if your gnome-shell version is not supported", "link": "https://extensions.gnome.org/extension/39/put-windows/", "shell_version_map": {
     "38": {"version": "32", "sha256": "0gzi2xmqkjl6x3q1lcb5mrlvvxsni7bax8j5q7wy25hhpizbj2m7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6YWJsZSByZXBsYWNlbWVudCBmb3IgdGhlIG9sZCBjb21waXogcHV0IHBsdWdpbi4gXG4gKiBNb3ZlIHdpbmRvd3MgdG8gbGVmdC9yaWdodCBzaWRlLCBib3R0b20vdG9wLCBjZW50ZXIgb3IgY29ybmVyIChha2EgdGlsZSlcbiAqIE1vdmUgd2luZG93IHRvIG90aGVyIHNjcmVlbiBcbiAqIFNlbGVjdCBmb2N1c2VkIHdpbmRvdyB1c2luZyB0aGUga2V5Ym9hcmQgXG4gKiBBcHBsaWNhdGlvbiBiYXNlZCB3aW5kb3cgcGxhY2VtZW50IFxuXG4gUGxlYXNlIGNoZWNrIGdpdGh1YiBpZiB5b3VyIGdub21lLXNoZWxsIHZlcnNpb24gaXMgbm90IHN1cHBvcnRlZCIsCiAgImdldHRleHQtZG9tYWluIjogInB1dFdpbmRvdyIsCiAgIm5hbWUiOiAiUHV0IFdpbmRvd3MiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3JnLWxhYjIxLXB1dHdpbmRvdyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25lZ2VzdGkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy1uZWdlc3RpIiwKICAidXVpZCI6ICJwdXRXaW5kb3dAY2xlbWVucy5sYWIyMS5vcmciLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
@@ -163,7 +177,8 @@
     "42": {"version": "55", "sha256": "16ff2fbv8vf9cgzrxy85vis9a5bgbkn1lb21brpxsf9gs5kk4v8k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VtZW50IG9mIEFsdC1UYWIsIGl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyBpbiBhIGNvdmVyLWZsb3cgbWFubmVyLiIsCiAgIm5hbWUiOiAiQ292ZXJmbG93IEFsdC1UYWIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RtbzYwL0NvdmVyZmxvd0FsdFRhYiIsCiAgInV1aWQiOiAiQ292ZXJmbG93QWx0VGFiQHBhbGF0aXMuYmxvZ3Nwb3QuY29tIiwKICAidmVyc2lvbiI6IDU1Cn0="},
     "43": {"version": "61", "sha256": "0bnwwvq73hn0p5qy2h9n7zq8wpna7wf3mx94i1p2mxkl4l2mv6f9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VtZW50IG9mIEFsdC1UYWIsIGl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyBpbiBhIGNvdmVyLWZsb3cgbWFubmVyLiIsCiAgIm5hbWUiOiAiQ292ZXJmbG93IEFsdC1UYWIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RtbzYwL0NvdmVyZmxvd0FsdFRhYiIsCiAgInV1aWQiOiAiQ292ZXJmbG93QWx0VGFiQHBhbGF0aXMuYmxvZ3Nwb3QuY29tIiwKICAidmVyc2lvbiI6IDYxCn0="},
     "44": {"version": "65", "sha256": "04ydnd74kyc38l0k4sc20g42c17p0k79gd5iknivwz7i6xx6hbx2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VtZW50IG9mIEFsdC1UYWIsIGl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyBpbiBhIGNvdmVyLWZsb3cgbWFubmVyLiIsCiAgIm5hbWUiOiAiQ292ZXJmbG93IEFsdC1UYWIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZG1vNjAvQ292ZXJmbG93QWx0VGFiIiwKICAidXVpZCI6ICJDb3ZlcmZsb3dBbHRUYWJAcGFsYXRpcy5ibG9nc3BvdC5jb20iLAogICJ2ZXJzaW9uIjogNjUKfQ=="},
-    "45": {"version": "71", "sha256": "0agf21qyk576aa212w42hcn9vhpbsrjisrby0mfnw22giah9sf28", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VtZW50IG9mIEFsdC1UYWIsIGl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyBpbiBhIGNvdmVyLWZsb3cgbWFubmVyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiZHNoZWVsZXIiLAogICAgImxpYmVyYXBheSI6ICJkc2hlZWxlciIsCiAgICAicGF5cGFsIjogIkRhbmllbFNoZWVsZXIiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiQ292ZXJmbG93QWx0VGFiQHBhbGF0aXMuYmxvZ3Nwb3QuY29tIiwKICAibmFtZSI6ICJDb3ZlcmZsb3cgQWx0LVRhYiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb3ZlcmZsb3dhbHR0YWIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZG1vNjAvQ292ZXJmbG93QWx0VGFiIiwKICAidXVpZCI6ICJDb3ZlcmZsb3dBbHRUYWJAcGFsYXRpcy5ibG9nc3BvdC5jb20iLAogICJ2ZXJzaW9uIjogNzEKfQ=="}
+    "45": {"version": "71", "sha256": "0agf21qyk576aa212w42hcn9vhpbsrjisrby0mfnw22giah9sf28", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VtZW50IG9mIEFsdC1UYWIsIGl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyBpbiBhIGNvdmVyLWZsb3cgbWFubmVyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiZHNoZWVsZXIiLAogICAgImxpYmVyYXBheSI6ICJkc2hlZWxlciIsCiAgICAicGF5cGFsIjogIkRhbmllbFNoZWVsZXIiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiQ292ZXJmbG93QWx0VGFiQHBhbGF0aXMuYmxvZ3Nwb3QuY29tIiwKICAibmFtZSI6ICJDb3ZlcmZsb3cgQWx0LVRhYiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb3ZlcmZsb3dhbHR0YWIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZG1vNjAvQ292ZXJmbG93QWx0VGFiIiwKICAidXVpZCI6ICJDb3ZlcmZsb3dBbHRUYWJAcGFsYXRpcy5ibG9nc3BvdC5jb20iLAogICJ2ZXJzaW9uIjogNzEKfQ=="},
+    "46": {"version": "72", "sha256": "1pk29n3hx59lg8gcmv36xylqpqjrhdxmjzcl9f1ipbm2hkdczsic", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VtZW50IG9mIEFsdC1UYWIsIGl0ZXJhdGVzIHRocm91Z2ggd2luZG93cyBpbiBhIGNvdmVyLWZsb3cgbWFubmVyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiZHNoZWVsZXIiLAogICAgImxpYmVyYXBheSI6ICJkc2hlZWxlciIsCiAgICAicGF5cGFsIjogIkRhbmllbFNoZWVsZXIiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiQ292ZXJmbG93QWx0VGFiQHBhbGF0aXMuYmxvZ3Nwb3QuY29tIiwKICAibmFtZSI6ICJDb3ZlcmZsb3cgQWx0LVRhYiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb3ZlcmZsb3dhbHR0YWIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZG1vNjAvQ292ZXJmbG93QWx0VGFiIiwKICAidXVpZCI6ICJDb3ZlcmZsb3dBbHRUYWJAcGFsYXRpcy5ibG9nc3BvdC5jb20iLAogICJ2ZXJzaW9uIjogNzIKfQ=="}
   }}
 , {"uuid": "netspeed@hedayaty.gmail.com", "name": "NetSpeed", "pname": "netspeed", "description": "Displays Internet Speed", "link": "https://extensions.gnome.org/extension/104/netspeed/", "shell_version_map": {
     "40": {"version": "34", "sha256": "04137rwnnf2mbp228wl9qjcix6i7757cqsdamabdrjwclg147vql", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIEludGVybmV0IFNwZWVkIiwKICAibmFtZSI6ICJOZXRTcGVlZCIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJoZWRheWF0eUBnbWFpbC5jb20iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGF5YXR5L05ldFNwZWVkIiwKICAidXVpZCI6ICJuZXRzcGVlZEBoZWRheWF0eS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
@@ -194,7 +209,8 @@
     "42": {"version": "104", "sha256": "1qsdr2jr0474z9hzcz1hk1hz10cq0v71f9p4zd4maxy0fqnsw84r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIFBlcnNpYW4gZGF0ZSBpbiB0aGUgdG9wIHBhbmVsLlxuXG5JdCBzaG93czpcbjEuIFBlcnNpYW4gY2FsZW5kYXJcbjIuIEl0IGNhbiBzaG93LCB0b2RheSBpcyBhIGhvbGlkYXkgb3Igbm90IVxuMy4gU2hvdyBub3RpZmljYXRpb24gb25EYXlDaGFuZ2VkIVxuNC4gRGF0ZSBjb252ZXJ0ZXIgYmV0d2VlbiBQZXJzaWFuLCBHcmVnb3JpYW4gYW5kIEx1bmFyIEhpanJpXG41LiBFdmVudHM6XG41LjEuIE9mZmljaWFsIHNvbGFyIGV2ZW50cy5cbjUuMi4gT2ZmaWNpYWwgbHVuYXIgZXZlbnRzLlxuNS4zLiBPZmZpY2lhbCBpbnRlcm5hdGlvbmFsIGV2ZW50cy5cbjUuNC4gVHJhZGl0aW9uYWwgUGVyc2lhbiBldmVudHMuXG41LjUuIFBlcnNpYW4gcGVyc29uYWdlcy5cblxuUGxlYXNlIFx1MjAxY3JhdGVcdTIwMWQgaGVyZSBhbmQgXHUyMDFjc3Rhclx1MjAxZCB0aGUgcHJvamVjdCBvbiBHaXRIdWIuXG5QbGVhc2Ugb3BlbiBhbiBpc3N1ZSBvbiBHaXRIdWIgaWYgeW91IGZvdW5kIHNvbWV0aGluZyBvciBoYXZlIGFuIGlkZWEhIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJPbWlkIE1vdHRhZ2hpIFJhZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJzaWFuLWNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb21pZC9QZXJzaWFuLUNhbGVuZGFyLWZvci1Hbm9tZS1TaGVsbCIsCiAgInV1aWQiOiAiUGVyc2lhbkNhbGVuZGFyQG94eWdlbndzLmNvbSIsCiAgInZlcnNpb24iOiAxMDQKfQ=="},
     "43": {"version": "104", "sha256": "1qsdr2jr0474z9hzcz1hk1hz10cq0v71f9p4zd4maxy0fqnsw84r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIFBlcnNpYW4gZGF0ZSBpbiB0aGUgdG9wIHBhbmVsLlxuXG5JdCBzaG93czpcbjEuIFBlcnNpYW4gY2FsZW5kYXJcbjIuIEl0IGNhbiBzaG93LCB0b2RheSBpcyBhIGhvbGlkYXkgb3Igbm90IVxuMy4gU2hvdyBub3RpZmljYXRpb24gb25EYXlDaGFuZ2VkIVxuNC4gRGF0ZSBjb252ZXJ0ZXIgYmV0d2VlbiBQZXJzaWFuLCBHcmVnb3JpYW4gYW5kIEx1bmFyIEhpanJpXG41LiBFdmVudHM6XG41LjEuIE9mZmljaWFsIHNvbGFyIGV2ZW50cy5cbjUuMi4gT2ZmaWNpYWwgbHVuYXIgZXZlbnRzLlxuNS4zLiBPZmZpY2lhbCBpbnRlcm5hdGlvbmFsIGV2ZW50cy5cbjUuNC4gVHJhZGl0aW9uYWwgUGVyc2lhbiBldmVudHMuXG41LjUuIFBlcnNpYW4gcGVyc29uYWdlcy5cblxuUGxlYXNlIFx1MjAxY3JhdGVcdTIwMWQgaGVyZSBhbmQgXHUyMDFjc3Rhclx1MjAxZCB0aGUgcHJvamVjdCBvbiBHaXRIdWIuXG5QbGVhc2Ugb3BlbiBhbiBpc3N1ZSBvbiBHaXRIdWIgaWYgeW91IGZvdW5kIHNvbWV0aGluZyBvciBoYXZlIGFuIGlkZWEhIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJPbWlkIE1vdHRhZ2hpIFJhZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJzaWFuLWNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb21pZC9QZXJzaWFuLUNhbGVuZGFyLWZvci1Hbm9tZS1TaGVsbCIsCiAgInV1aWQiOiAiUGVyc2lhbkNhbGVuZGFyQG94eWdlbndzLmNvbSIsCiAgInZlcnNpb24iOiAxMDQKfQ=="},
     "44": {"version": "104", "sha256": "1qsdr2jr0474z9hzcz1hk1hz10cq0v71f9p4zd4maxy0fqnsw84r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIFBlcnNpYW4gZGF0ZSBpbiB0aGUgdG9wIHBhbmVsLlxuXG5JdCBzaG93czpcbjEuIFBlcnNpYW4gY2FsZW5kYXJcbjIuIEl0IGNhbiBzaG93LCB0b2RheSBpcyBhIGhvbGlkYXkgb3Igbm90IVxuMy4gU2hvdyBub3RpZmljYXRpb24gb25EYXlDaGFuZ2VkIVxuNC4gRGF0ZSBjb252ZXJ0ZXIgYmV0d2VlbiBQZXJzaWFuLCBHcmVnb3JpYW4gYW5kIEx1bmFyIEhpanJpXG41LiBFdmVudHM6XG41LjEuIE9mZmljaWFsIHNvbGFyIGV2ZW50cy5cbjUuMi4gT2ZmaWNpYWwgbHVuYXIgZXZlbnRzLlxuNS4zLiBPZmZpY2lhbCBpbnRlcm5hdGlvbmFsIGV2ZW50cy5cbjUuNC4gVHJhZGl0aW9uYWwgUGVyc2lhbiBldmVudHMuXG41LjUuIFBlcnNpYW4gcGVyc29uYWdlcy5cblxuUGxlYXNlIFx1MjAxY3JhdGVcdTIwMWQgaGVyZSBhbmQgXHUyMDFjc3Rhclx1MjAxZCB0aGUgcHJvamVjdCBvbiBHaXRIdWIuXG5QbGVhc2Ugb3BlbiBhbiBpc3N1ZSBvbiBHaXRIdWIgaWYgeW91IGZvdW5kIHNvbWV0aGluZyBvciBoYXZlIGFuIGlkZWEhIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJPbWlkIE1vdHRhZ2hpIFJhZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJzaWFuLWNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb21pZC9QZXJzaWFuLUNhbGVuZGFyLWZvci1Hbm9tZS1TaGVsbCIsCiAgInV1aWQiOiAiUGVyc2lhbkNhbGVuZGFyQG94eWdlbndzLmNvbSIsCiAgInZlcnNpb24iOiAxMDQKfQ=="},
-    "45": {"version": "107", "sha256": "1nkqfk7r6rvagfr5wvg5adxm5p70c0v61n8hc63cq8yrg4432jcl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIFBlcnNpYW4gZGF0ZSBpbiB0aGUgdG9wIHBhbmVsLlxuXG5JdCBzaG93czpcbjEuIFBlcnNpYW4gY2FsZW5kYXJcbjIuIEl0IGNhbiBzaG93LCB0b2RheSBpcyBhIGhvbGlkYXkgb3Igbm90IVxuMy4gU2hvdyBub3RpZmljYXRpb24gb25EYXlDaGFuZ2VkIVxuNC4gRGF0ZSBjb252ZXJ0ZXIgYmV0d2VlbiBQZXJzaWFuLCBHcmVnb3JpYW4gYW5kIEx1bmFyIEhpanJpXG41LiBFdmVudHM6XG41LjEuIE9mZmljaWFsIHNvbGFyIGV2ZW50cy5cbjUuMi4gT2ZmaWNpYWwgbHVuYXIgZXZlbnRzLlxuNS4zLiBPZmZpY2lhbCBpbnRlcm5hdGlvbmFsIGV2ZW50cy5cbjUuNC4gVHJhZGl0aW9uYWwgUGVyc2lhbiBldmVudHMuXG41LjUuIFBlcnNpYW4gcGVyc29uYWdlcy5cblxuUGxlYXNlIFx1MjAxY3JhdGVcdTIwMWQgaGVyZSBhbmQgXHUyMDFjc3Rhclx1MjAxZCB0aGUgcHJvamVjdCBvbiBHaXRIdWIuXG5QbGVhc2Ugb3BlbiBhbiBpc3N1ZSBvbiBHaXRIdWIgaWYgeW91IGZvdW5kIHNvbWV0aGluZyBvciBoYXZlIGFuIGlkZWEhIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJPbWlkIE1vdHRhZ2hpIFJhZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJzaWFuLWNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL29taWQvUGVyc2lhbi1DYWxlbmRhci1mb3ItR25vbWUtU2hlbGwiLAogICJ1dWlkIjogIlBlcnNpYW5DYWxlbmRhckBveHlnZW53cy5jb20iLAogICJ2ZXJzaW9uIjogMTA3Cn0="}
+    "45": {"version": "107", "sha256": "1nkqfk7r6rvagfr5wvg5adxm5p70c0v61n8hc63cq8yrg4432jcl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIFBlcnNpYW4gZGF0ZSBpbiB0aGUgdG9wIHBhbmVsLlxuXG5JdCBzaG93czpcbjEuIFBlcnNpYW4gY2FsZW5kYXJcbjIuIEl0IGNhbiBzaG93LCB0b2RheSBpcyBhIGhvbGlkYXkgb3Igbm90IVxuMy4gU2hvdyBub3RpZmljYXRpb24gb25EYXlDaGFuZ2VkIVxuNC4gRGF0ZSBjb252ZXJ0ZXIgYmV0d2VlbiBQZXJzaWFuLCBHcmVnb3JpYW4gYW5kIEx1bmFyIEhpanJpXG41LiBFdmVudHM6XG41LjEuIE9mZmljaWFsIHNvbGFyIGV2ZW50cy5cbjUuMi4gT2ZmaWNpYWwgbHVuYXIgZXZlbnRzLlxuNS4zLiBPZmZpY2lhbCBpbnRlcm5hdGlvbmFsIGV2ZW50cy5cbjUuNC4gVHJhZGl0aW9uYWwgUGVyc2lhbiBldmVudHMuXG41LjUuIFBlcnNpYW4gcGVyc29uYWdlcy5cblxuUGxlYXNlIFx1MjAxY3JhdGVcdTIwMWQgaGVyZSBhbmQgXHUyMDFjc3Rhclx1MjAxZCB0aGUgcHJvamVjdCBvbiBHaXRIdWIuXG5QbGVhc2Ugb3BlbiBhbiBpc3N1ZSBvbiBHaXRIdWIgaWYgeW91IGZvdW5kIHNvbWV0aGluZyBvciBoYXZlIGFuIGlkZWEhIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJPbWlkIE1vdHRhZ2hpIFJhZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJzaWFuLWNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL29taWQvUGVyc2lhbi1DYWxlbmRhci1mb3ItR25vbWUtU2hlbGwiLAogICJ1dWlkIjogIlBlcnNpYW5DYWxlbmRhckBveHlnZW53cy5jb20iLAogICJ2ZXJzaW9uIjogMTA3Cn0="},
+    "46": {"version": "109", "sha256": "0dqsxmjaicfya7prkhcs84klgfdqx3n7pq37j7sizxnlpwv8v0sx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIFBlcnNpYW4gZGF0ZSBpbiB0aGUgdG9wIHBhbmVsLlxuXG5JdCBzaG93czpcbjEuIFBlcnNpYW4gY2FsZW5kYXJcbjIuIEl0IGNhbiBzaG93LCB0b2RheSBpcyBhIGhvbGlkYXkgb3Igbm90IVxuMy4gU2hvdyBub3RpZmljYXRpb24gb25EYXlDaGFuZ2VkIVxuNC4gRGF0ZSBjb252ZXJ0ZXIgYmV0d2VlbiBQZXJzaWFuLCBHcmVnb3JpYW4gYW5kIEx1bmFyIEhpanJpXG41LiBFdmVudHM6XG41LjEuIE9mZmljaWFsIHNvbGFyIGV2ZW50cy5cbjUuMi4gT2ZmaWNpYWwgbHVuYXIgZXZlbnRzLlxuNS4zLiBPZmZpY2lhbCBpbnRlcm5hdGlvbmFsIGV2ZW50cy5cbjUuNC4gVHJhZGl0aW9uYWwgUGVyc2lhbiBldmVudHMuXG41LjUuIFBlcnNpYW4gcGVyc29uYWdlcy5cblxuUGxlYXNlIFx1MjAxY3JhdGVcdTIwMWQgaGVyZSBhbmQgXHUyMDFjc3Rhclx1MjAxZCB0aGUgcHJvamVjdCBvbiBHaXRIdWIuXG5QbGVhc2Ugb3BlbiBhbiBpc3N1ZSBvbiBHaXRIdWIgaWYgeW91IGZvdW5kIHNvbWV0aGluZyBvciBoYXZlIGFuIGlkZWEhIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJPbWlkIE1vdHRhZ2hpIFJhZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJzaWFuLWNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL29taWQvUGVyc2lhbi1DYWxlbmRhci1mb3ItR25vbWUtU2hlbGwiLAogICJ1dWlkIjogIlBlcnNpYW5DYWxlbmRhckBveHlnZW53cy5jb20iLAogICJ2ZXJzaW9uIjogMTA5Cn0="}
   }}
 , {"uuid": "notifications-alert-on-user-menu@hackedbellini.gmail.com", "name": "Notifications Alert", "pname": "notifications-alert-on-user-menu", "description": "Changes the color of the time and date indicator in the top bar when there are unread notifications. Colors and blinking are customizable.\n\nIf you have questions, please take a look at the FAQ:\nhttp://goo.gl/lmwtW\n\nCredits: The idea of painting the message on user's menu was borrowed from 'Pidgin Persistent Notification' extension by nemo. The code itself has some parts forked from 'Message Notifier' extension by barisione, 'Media player indicator' extension by eon and convenience.js from git.gnome.org/gnome-shell-extensions. The blink idea and it's initial code was written by hossman. The initial gnome 3.10 support was done by Anthony25. The filtering support was done by ilgarmehmetali", "link": "https://extensions.gnome.org/extension/258/notifications-alert-on-user-menu/", "shell_version_map": {
     "40": {"version": "47", "sha256": "0pvm01r7x8cl8dww1bm491znlcrymcnq4ndrbfxjlvigdnk46pz8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldoZW5ldmVyIHRoZXJlIGlzIGFuIHVucmVhZCBub3RpZmljYXRpb24gKGUuZy4gY2hhdCBtZXNzYWdlcyksIGJsaW5rcyB0aGUgbWVzc2FnZSBpbiB0aGUgdXNlcidzIG1lbnUgd2l0aCBhIGNvbG9yIGNob3NlbiBieSB0aGUgdXNlci5cblxuTm93IGNvbmZpZ3VyYWJsZSAoMy40KyBvbmx5KSEhIEFsZXJ0IGNvbG9yIGFuZCBibGluayByYXRlIGNhbiBiZSBjaGFuZ2VkIG9uIHNldHRpbmdzIDspXG5cbklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbiwgYmUgc3VyZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgRkFROlxuaHR0cDovL2dvby5nbC9sbXd0VyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLW5vdGlmaWNhdGlvbnMtYWxlcnQiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbnMgQWxlcnQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIlRoaWFnbyBCZWxsaW5pIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ub3RpZmljYXRpb25zLWFsZXJ0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iZWxsaW5pNjY2L2dub21lLXNoZWxsLW5vdGlmaWNhdGlvbnMtYWxlcnQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbnMtYWxlcnQtb24tdXNlci1tZW51QGhhY2tlZGJlbGxpbmkuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDQ3Cn0="},
@@ -211,7 +227,8 @@
     "42": {"version": "76", "sha256": "0p615amdp1fh6k7ci7m2j4fr3z3fc94jpm0nqwwp6m51phbi386n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IE1ldGhvZCBQYW5lbCB1c2luZyBLREUncyBraW1wYW5lbCBwcm90b2NvbCBmb3IgR25vbWUtU2hlbGwiLAogICJleHRlbnNpb24taWQiOiAia2ltcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zLWtpbXBhbmVsIiwKICAibG9jYWxlIjogIi91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiwKICAibmFtZSI6ICJJbnB1dCBNZXRob2QgUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua2ltcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlbmd4dC9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2ltcGFuZWwiLAogICJ1dWlkIjogImtpbXBhbmVsQGtkZS5vcmciLAogICJ2ZXJzaW9uIjogNzYKfQ=="},
     "43": {"version": "76", "sha256": "0p615amdp1fh6k7ci7m2j4fr3z3fc94jpm0nqwwp6m51phbi386n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IE1ldGhvZCBQYW5lbCB1c2luZyBLREUncyBraW1wYW5lbCBwcm90b2NvbCBmb3IgR25vbWUtU2hlbGwiLAogICJleHRlbnNpb24taWQiOiAia2ltcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zLWtpbXBhbmVsIiwKICAibG9jYWxlIjogIi91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiwKICAibmFtZSI6ICJJbnB1dCBNZXRob2QgUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua2ltcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlbmd4dC9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2ltcGFuZWwiLAogICJ1dWlkIjogImtpbXBhbmVsQGtkZS5vcmciLAogICJ2ZXJzaW9uIjogNzYKfQ=="},
     "44": {"version": "76", "sha256": "0p615amdp1fh6k7ci7m2j4fr3z3fc94jpm0nqwwp6m51phbi386n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IE1ldGhvZCBQYW5lbCB1c2luZyBLREUncyBraW1wYW5lbCBwcm90b2NvbCBmb3IgR25vbWUtU2hlbGwiLAogICJleHRlbnNpb24taWQiOiAia2ltcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zLWtpbXBhbmVsIiwKICAibG9jYWxlIjogIi91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiwKICAibmFtZSI6ICJJbnB1dCBNZXRob2QgUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua2ltcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlbmd4dC9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2ltcGFuZWwiLAogICJ1dWlkIjogImtpbXBhbmVsQGtkZS5vcmciLAogICJ2ZXJzaW9uIjogNzYKfQ=="},
-    "45": {"version": "79", "sha256": "1c0v2m8cp7slq1lzv9kxav2hzg8l4a3g8vr250q6lvy15jzib5yh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IE1ldGhvZCBQYW5lbCB1c2luZyBLREUncyBraW1wYW5lbCBwcm90b2NvbCBmb3IgR25vbWUtU2hlbGwiLAogICJleHRlbnNpb24taWQiOiAia2ltcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zLWtpbXBhbmVsIiwKICAibG9jYWxlIjogIi91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiwKICAibmFtZSI6ICJJbnB1dCBNZXRob2QgUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua2ltcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2VuZ3h0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1raW1wYW5lbCIsCiAgInV1aWQiOiAia2ltcGFuZWxAa2RlLm9yZyIsCiAgInZlcnNpb24iOiA3OQp9"}
+    "45": {"version": "80", "sha256": "04lcvlhvip4144mb9zwzipd475rqff79faqx363jmmrbb9pra0c3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IE1ldGhvZCBQYW5lbCB1c2luZyBLREUncyBraW1wYW5lbCBwcm90b2NvbCBmb3IgR25vbWUtU2hlbGwiLAogICJleHRlbnNpb24taWQiOiAia2ltcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zLWtpbXBhbmVsIiwKICAibG9jYWxlIjogIi91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiwKICAibmFtZSI6ICJJbnB1dCBNZXRob2QgUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua2ltcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlbmd4dC9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2ltcGFuZWwiLAogICJ1dWlkIjogImtpbXBhbmVsQGtkZS5vcmciLAogICJ2ZXJzaW9uIjogODAKfQ=="},
+    "46": {"version": "80", "sha256": "04lcvlhvip4144mb9zwzipd475rqff79faqx363jmmrbb9pra0c3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IE1ldGhvZCBQYW5lbCB1c2luZyBLREUncyBraW1wYW5lbCBwcm90b2NvbCBmb3IgR25vbWUtU2hlbGwiLAogICJleHRlbnNpb24taWQiOiAia2ltcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zLWtpbXBhbmVsIiwKICAibG9jYWxlIjogIi91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiwKICAibmFtZSI6ICJJbnB1dCBNZXRob2QgUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua2ltcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlbmd4dC9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2ltcGFuZWwiLAogICJ1dWlkIjogImtpbXBhbmVsQGtkZS5vcmciLAogICJ2ZXJzaW9uIjogODAKfQ=="}
   }}
 , {"uuid": "impatience@gfxmonk.net", "name": "Impatience", "pname": "impatience", "description": "Speed up the gnome-shell animation speed", "link": "https://extensions.gnome.org/extension/277/impatience/", "shell_version_map": {
     "40": {"version": "22", "sha256": "1npc0y8bf5rrwl1v55hlf213pd5vp8wrj6qyhp2yhvz6km1ib6q2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNwZWVkIHVwIHRoZSBnbm9tZS1zaGVsbCBhbmltYXRpb24gc3BlZWQiLAogICJuYW1lIjogIkltcGF0aWVuY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2dmeG1vbmsubmV0L2Rpc3QvMGluc3RhbGwvZ25vbWUtc2hlbGwtaW1wYXRpZW5jZS54bWwiLAogICJ1dWlkIjogImltcGF0aWVuY2VAZ2Z4bW9uay5uZXQiLAogICJ2ZXJzaW9uIjogMjIKfQ=="},
@@ -248,7 +265,8 @@
     "42": {"version": "28", "sha256": "0c2akxvw2351a6i0ah5rrir9n05zxibzhiz7n97xk8b4d03hh1kd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHdpbmRvd3Mgd2l0aCBhIGJ1dHRvbiBjbGljayAodGhlIG1pZGRsZSBvbmUgYnkgZGVmYXVsdCkgd2hlbiBpbiBvdmVydmlldyBtb2RlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgImxvY2FsZSI6ICIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiUXVpY2sgQ2xvc2UgaW4gT3ZlcnZpZXciLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIlBhb2xvIFRyYW5xdWlsbGkiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pZGRsZWNsaWNrY2xvc2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wOTFwYXVsL21pZGRsZWNsaWNrY2xvc2UiLAogICJ1dWlkIjogIm1pZGRsZWNsaWNrY2xvc2VAcGFvbG8udHJhbnF1aWxsaS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
     "43": {"version": "28", "sha256": "0c2akxvw2351a6i0ah5rrir9n05zxibzhiz7n97xk8b4d03hh1kd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHdpbmRvd3Mgd2l0aCBhIGJ1dHRvbiBjbGljayAodGhlIG1pZGRsZSBvbmUgYnkgZGVmYXVsdCkgd2hlbiBpbiBvdmVydmlldyBtb2RlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgImxvY2FsZSI6ICIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiUXVpY2sgQ2xvc2UgaW4gT3ZlcnZpZXciLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIlBhb2xvIFRyYW5xdWlsbGkiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pZGRsZWNsaWNrY2xvc2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wOTFwYXVsL21pZGRsZWNsaWNrY2xvc2UiLAogICJ1dWlkIjogIm1pZGRsZWNsaWNrY2xvc2VAcGFvbG8udHJhbnF1aWxsaS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
     "44": {"version": "28", "sha256": "0c2akxvw2351a6i0ah5rrir9n05zxibzhiz7n97xk8b4d03hh1kd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHdpbmRvd3Mgd2l0aCBhIGJ1dHRvbiBjbGljayAodGhlIG1pZGRsZSBvbmUgYnkgZGVmYXVsdCkgd2hlbiBpbiBvdmVydmlldyBtb2RlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgImxvY2FsZSI6ICIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiUXVpY2sgQ2xvc2UgaW4gT3ZlcnZpZXciLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIlBhb2xvIFRyYW5xdWlsbGkiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pZGRsZWNsaWNrY2xvc2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wOTFwYXVsL21pZGRsZWNsaWNrY2xvc2UiLAogICJ1dWlkIjogIm1pZGRsZWNsaWNrY2xvc2VAcGFvbG8udHJhbnF1aWxsaS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
-    "45": {"version": "29", "sha256": "02p20rng55kbd6415x3ywmvlns88x9q7160y6cl2gqlc0w27c4kq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHdpbmRvd3Mgd2l0aCBhIGJ1dHRvbiBjbGljayAodGhlIG1pZGRsZSBvbmUgYnkgZGVmYXVsdCkgd2hlbiBpbiBvdmVydmlldyBtb2RlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgIm5hbWUiOiAiUXVpY2sgQ2xvc2UgaW4gT3ZlcnZpZXciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wOTFwYXVsL21pZGRsZWNsaWNrY2xvc2UiLAogICJ1dWlkIjogIm1pZGRsZWNsaWNrY2xvc2VAcGFvbG8udHJhbnF1aWxsaS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="}
+    "45": {"version": "30", "sha256": "1vw310ji7n8fv4xd099xv06yjq79d53v5lmxx2szyzy723nn0r7a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHdpbmRvd3Mgd2l0aCBhIGJ1dHRvbiBjbGljayAodGhlIG1pZGRsZSBvbmUgYnkgZGVmYXVsdCkgd2hlbiBpbiBvdmVydmlldyBtb2RlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgIm5hbWUiOiAiUXVpY2sgQ2xvc2UgaW4gT3ZlcnZpZXciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcDkxcGF1bC9taWRkbGVjbGlja2Nsb3NlIiwKICAidXVpZCI6ICJtaWRkbGVjbGlja2Nsb3NlQHBhb2xvLnRyYW5xdWlsbGkuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMwCn0="},
+    "46": {"version": "30", "sha256": "1vw310ji7n8fv4xd099xv06yjq79d53v5lmxx2szyzy723nn0r7a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHdpbmRvd3Mgd2l0aCBhIGJ1dHRvbiBjbGljayAodGhlIG1pZGRsZSBvbmUgYnkgZGVmYXVsdCkgd2hlbiBpbiBvdmVydmlldyBtb2RlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgIm5hbWUiOiAiUXVpY2sgQ2xvc2UgaW4gT3ZlcnZpZXciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWlkZGxlY2xpY2tjbG9zZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcDkxcGF1bC9taWRkbGVjbGlja2Nsb3NlIiwKICAidXVpZCI6ICJtaWRkbGVjbGlja2Nsb3NlQHBhb2xvLnRyYW5xdWlsbGkuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMwCn0="}
   }}
 , {"uuid": "status-area-horizontal-spacing@mathematical.coffee.gmail.com", "name": "Status Area Horizontal Spacing", "pname": "status-area-horizontal-spacing", "description": "Reduce the horizontal spacing between icons in the top-right status area", "link": "https://extensions.gnome.org/extension/355/status-area-horizontal-spacing/", "shell_version_map": {
     "38": {"version": "16", "sha256": "05hhj10hlcpbgd9sbvq89vxzqj6ndf21syas8zidy6yfy613b6l3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlZHVjZSB0aGUgaG9yaXpvbnRhbCBzcGFjaW5nIGJldHdlZW4gaWNvbnMgaW4gdGhlIHRvcC1yaWdodCBzdGF0dXMgYXJlYSIsCiAgImRldi12ZXJzaW9uIjogIjIuMS40IiwKICAibmFtZSI6ICJTdGF0dXMgQXJlYSBIb3Jpem9udGFsIFNwYWNpbmciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3RhdHVzLWFyZWEtaG9yaXpvbnRhbC1zcGFjaW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjQiLAogICAgIjMuNiIsCiAgICAiMy44IiwKICAgICIzLjEwIiwKICAgICIzLjEyIiwKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcDkxcGF1bC9zdGF0dXMtYXJlYS1ob3Jpem9udGFsLXNwYWNpbmctZ25vbWUtc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJzdGF0dXMtYXJlYS1ob3Jpem9udGFsLXNwYWNpbmdAbWF0aGVtYXRpY2FsLmNvZmZlZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="},
@@ -268,7 +286,8 @@
     "42": {"version": "12", "sha256": "04hy8bjr82hzcf7y6hg878ygqgbzr8d4y3w0cvd7zz86knpc6kfs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBydW4gZGlhbG9nIGNhbGN1bGF0aW9uIiwKICAibmFtZSI6ICJjYWxjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiY2FsY0BkYW5pZ20ud2Fkb2JvLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "43": {"version": "12", "sha256": "04hy8bjr82hzcf7y6hg878ygqgbzr8d4y3w0cvd7zz86knpc6kfs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBydW4gZGlhbG9nIGNhbGN1bGF0aW9uIiwKICAibmFtZSI6ICJjYWxjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiY2FsY0BkYW5pZ20ud2Fkb2JvLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "04hy8bjr82hzcf7y6hg878ygqgbzr8d4y3w0cvd7zz86knpc6kfs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBydW4gZGlhbG9nIGNhbGN1bGF0aW9uIiwKICAibmFtZSI6ICJjYWxjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiY2FsY0BkYW5pZ20ud2Fkb2JvLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "14", "sha256": "1zdxaip41frm29wch3306bvx6csm9rmc2yysp11y9dhmxiy9y1r6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBydW4gZGlhbG9nIGNhbGN1bGF0aW9uIiwKICAibmFtZSI6ICJjYWxjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhbmlnbS9nbm9tZS1zaGVsbC1jYWxjdWxhdG9yIiwKICAidXVpZCI6ICJjYWxjQGRhbmlnbS53YWRvYm8uY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="}
+    "45": {"version": "15", "sha256": "12rrykrrbkbzjads39apw8rdxnmic3y03c2mndqnybhlnxmbrrpx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBydW4gZGlhbG9nIGNhbGN1bGF0aW9uIiwKICAibmFtZSI6ICJjYWxjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZ20vZ25vbWUtc2hlbGwtY2FsY3VsYXRvciIsCiAgInV1aWQiOiAiY2FsY0BkYW5pZ20ud2Fkb2JvLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"},
+    "46": {"version": "15", "sha256": "12rrykrrbkbzjads39apw8rdxnmic3y03c2mndqnybhlnxmbrrpx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBydW4gZGlhbG9nIGNhbGN1bGF0aW9uIiwKICAibmFtZSI6ICJjYWxjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZ20vZ25vbWUtc2hlbGwtY2FsY3VsYXRvciIsCiAgInV1aWQiOiAiY2FsY0BkYW5pZ20ud2Fkb2JvLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"}
   }}
 , {"uuid": "remmina-search-provider@alexmurray.github.com", "name": "Remmina Search Provider", "pname": "remmina-search-provider", "description": "Search for Remmina Remote Desktop Connections\n\nEasily search for and launch connections to remote machines by name and protocol.", "link": "https://extensions.gnome.org/extension/473/remmina-search-provider/", "shell_version_map": {
     "40": {"version": "15", "sha256": "1z1myqwj9wmz3li7y6zlb3ma1icmj2gpna4qb8nzm6girrkajwda", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBmb3IgUmVtbWluYSBSZW1vdGUgRGVza3RvcCBDb25uZWN0aW9uc1xuXG5FYXNpbHkgc2VhcmNoIGZvciBhbmQgbGF1bmNoIGNvbm5lY3Rpb25zIHRvIHJlbW90ZSBtYWNoaW5lcyBieSBuYW1lIGFuZCBwcm90b2NvbC4iLAogICJuYW1lIjogIlJlbW1pbmEgU2VhcmNoIFByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjMyIiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxleG11cnJheS9yZW1taW5hLXNlYXJjaC1wcm92aWRlci8iLAogICJ1dWlkIjogInJlbW1pbmEtc2VhcmNoLXByb3ZpZGVyQGFsZXhtdXJyYXkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"},
@@ -276,7 +295,8 @@
     "42": {"version": "15", "sha256": "1z1myqwj9wmz3li7y6zlb3ma1icmj2gpna4qb8nzm6girrkajwda", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBmb3IgUmVtbWluYSBSZW1vdGUgRGVza3RvcCBDb25uZWN0aW9uc1xuXG5FYXNpbHkgc2VhcmNoIGZvciBhbmQgbGF1bmNoIGNvbm5lY3Rpb25zIHRvIHJlbW90ZSBtYWNoaW5lcyBieSBuYW1lIGFuZCBwcm90b2NvbC4iLAogICJuYW1lIjogIlJlbW1pbmEgU2VhcmNoIFByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjMyIiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxleG11cnJheS9yZW1taW5hLXNlYXJjaC1wcm92aWRlci8iLAogICJ1dWlkIjogInJlbW1pbmEtc2VhcmNoLXByb3ZpZGVyQGFsZXhtdXJyYXkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"},
     "43": {"version": "16", "sha256": "0mlbda3rln4fr4i9hzy36xkfw8xnr3y5q6rc3zvv1nz24zavzlhc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBmb3IgUmVtbWluYSBSZW1vdGUgRGVza3RvcCBDb25uZWN0aW9uc1xuXG5FYXNpbHkgc2VhcmNoIGZvciBhbmQgbGF1bmNoIGNvbm5lY3Rpb25zIHRvIHJlbW90ZSBtYWNoaW5lcyBieSBuYW1lIGFuZCBwcm90b2NvbC4iLAogICJuYW1lIjogIlJlbW1pbmEgU2VhcmNoIFByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsZXhtdXJyYXkvcmVtbWluYS1zZWFyY2gtcHJvdmlkZXIvIiwKICAidXVpZCI6ICJyZW1taW5hLXNlYXJjaC1wcm92aWRlckBhbGV4bXVycmF5LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="},
     "44": {"version": "18", "sha256": "0l3p1w4ynn38gvqky0cmldcc7md7rcqn5w1iskhv8d5bg0arccsx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBmb3IgUmVtbWluYSBSZW1vdGUgRGVza3RvcCBDb25uZWN0aW9uc1xuXG5FYXNpbHkgc2VhcmNoIGZvciBhbmQgbGF1bmNoIGNvbm5lY3Rpb25zIHRvIHJlbW90ZSBtYWNoaW5lcyBieSBuYW1lIGFuZCBwcm90b2NvbC4iLAogICJuYW1lIjogIlJlbW1pbmEgU2VhcmNoIFByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsZXhtdXJyYXkvcmVtbWluYS1zZWFyY2gtcHJvdmlkZXIvIiwKICAidXVpZCI6ICJyZW1taW5hLXNlYXJjaC1wcm92aWRlckBhbGV4bXVycmF5LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTgKfQ=="},
-    "45": {"version": "22", "sha256": "1bjmzp3sldf8g31i3pr4a2k3wskj9yywm8r97im8ds1jvr9ndrgv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBmb3IgUmVtbWluYSBSZW1vdGUgRGVza3RvcCBDb25uZWN0aW9uc1xuXG5FYXNpbHkgc2VhcmNoIGZvciBhbmQgbGF1bmNoIGNvbm5lY3Rpb25zIHRvIHJlbW90ZSBtYWNoaW5lcyBieSBuYW1lIGFuZCBwcm90b2NvbC4iLAogICJuYW1lIjogIlJlbW1pbmEgU2VhcmNoIFByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsZXhtdXJyYXkvcmVtbWluYS1zZWFyY2gtcHJvdmlkZXIvIiwKICAidXVpZCI6ICJyZW1taW5hLXNlYXJjaC1wcm92aWRlckBhbGV4bXVycmF5LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjIKfQ=="}
+    "45": {"version": "23", "sha256": "15736fnizd9fjwxwd6xha1iqgwmqfrvv5bfbwydk9vajkv5wyb4m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBmb3IgUmVtbWluYSBSZW1vdGUgRGVza3RvcCBDb25uZWN0aW9uc1xuXG5FYXNpbHkgc2VhcmNoIGZvciBhbmQgbGF1bmNoIGNvbm5lY3Rpb25zIHRvIHJlbW90ZSBtYWNoaW5lcyBieSBuYW1lIGFuZCBwcm90b2NvbC4iLAogICJuYW1lIjogIlJlbW1pbmEgU2VhcmNoIFByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bXVycmF5L3JlbW1pbmEtc2VhcmNoLXByb3ZpZGVyLyIsCiAgInV1aWQiOiAicmVtbWluYS1zZWFyY2gtcHJvdmlkZXJAYWxleG11cnJheS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="},
+    "46": {"version": "23", "sha256": "15736fnizd9fjwxwd6xha1iqgwmqfrvv5bfbwydk9vajkv5wyb4m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBmb3IgUmVtbWluYSBSZW1vdGUgRGVza3RvcCBDb25uZWN0aW9uc1xuXG5FYXNpbHkgc2VhcmNoIGZvciBhbmQgbGF1bmNoIGNvbm5lY3Rpb25zIHRvIHJlbW90ZSBtYWNoaW5lcyBieSBuYW1lIGFuZCBwcm90b2NvbC4iLAogICJuYW1lIjogIlJlbW1pbmEgU2VhcmNoIFByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGV4bXVycmF5L3JlbW1pbmEtc2VhcmNoLXByb3ZpZGVyLyIsCiAgInV1aWQiOiAicmVtbWluYS1zZWFyY2gtcHJvdmlkZXJAYWxleG11cnJheS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="}
   }}
 , {"uuid": "uptime-indicator@gniourfgniourf.gmail.com", "name": "Uptime Indicator", "pname": "uptime-indicator", "description": "Indicates uptime in status area. When clicked, a popup menu indicates the date when the system was started.", "link": "https://extensions.gnome.org/extension/508/uptime-indicator/", "shell_version_map": {
     "38": {"version": "23", "sha256": "0rq7q1h2vr8f44b5vgyrhbhr3d1hir173kk6c2zl81kj77nvna0b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB1cHRpbWUgaW4gc3RhdHVzIGFyZWEuIFdoZW4gY2xpY2tlZCwgYSBwb3B1cCBtZW51IGluZGljYXRlcyB0aGUgZGF0ZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIHN0YXJ0ZWQuIiwKICAibmFtZSI6ICJVcHRpbWUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0duaW91cmYvVXB0aW1lLUluZGljYXRvciIsCiAgInV1aWQiOiAidXB0aW1lLWluZGljYXRvckBnbmlvdXJmZ25pb3VyZi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
@@ -284,7 +304,8 @@
     "42": {"version": "23", "sha256": "0rq7q1h2vr8f44b5vgyrhbhr3d1hir173kk6c2zl81kj77nvna0b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB1cHRpbWUgaW4gc3RhdHVzIGFyZWEuIFdoZW4gY2xpY2tlZCwgYSBwb3B1cCBtZW51IGluZGljYXRlcyB0aGUgZGF0ZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIHN0YXJ0ZWQuIiwKICAibmFtZSI6ICJVcHRpbWUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0duaW91cmYvVXB0aW1lLUluZGljYXRvciIsCiAgInV1aWQiOiAidXB0aW1lLWluZGljYXRvckBnbmlvdXJmZ25pb3VyZi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
     "43": {"version": "23", "sha256": "0rq7q1h2vr8f44b5vgyrhbhr3d1hir173kk6c2zl81kj77nvna0b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB1cHRpbWUgaW4gc3RhdHVzIGFyZWEuIFdoZW4gY2xpY2tlZCwgYSBwb3B1cCBtZW51IGluZGljYXRlcyB0aGUgZGF0ZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIHN0YXJ0ZWQuIiwKICAibmFtZSI6ICJVcHRpbWUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0duaW91cmYvVXB0aW1lLUluZGljYXRvciIsCiAgInV1aWQiOiAidXB0aW1lLWluZGljYXRvckBnbmlvdXJmZ25pb3VyZi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
     "44": {"version": "23", "sha256": "0rq7q1h2vr8f44b5vgyrhbhr3d1hir173kk6c2zl81kj77nvna0b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB1cHRpbWUgaW4gc3RhdHVzIGFyZWEuIFdoZW4gY2xpY2tlZCwgYSBwb3B1cCBtZW51IGluZGljYXRlcyB0aGUgZGF0ZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIHN0YXJ0ZWQuIiwKICAibmFtZSI6ICJVcHRpbWUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0duaW91cmYvVXB0aW1lLUluZGljYXRvciIsCiAgInV1aWQiOiAidXB0aW1lLWluZGljYXRvckBnbmlvdXJmZ25pb3VyZi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
-    "45": {"version": "26", "sha256": "1vh7cqlbd4lv8g4ymz541scjc1d8g8jyvs7mabrhkicmgmydnj1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB1cHRpbWUgaW4gc3RhdHVzIGFyZWEuIFdoZW4gY2xpY2tlZCwgYSBwb3B1cCBtZW51IGluZGljYXRlcyB0aGUgZGF0ZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIHN0YXJ0ZWQuIiwKICAibmFtZSI6ICJVcHRpbWUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HbmlvdXJmL1VwdGltZS1JbmRpY2F0b3IiLAogICJ1dWlkIjogInVwdGltZS1pbmRpY2F0b3JAZ25pb3VyZmduaW91cmYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDI2Cn0="}
+    "45": {"version": "26", "sha256": "1vh7cqlbd4lv8g4ymz541scjc1d8g8jyvs7mabrhkicmgmydnj1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB1cHRpbWUgaW4gc3RhdHVzIGFyZWEuIFdoZW4gY2xpY2tlZCwgYSBwb3B1cCBtZW51IGluZGljYXRlcyB0aGUgZGF0ZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIHN0YXJ0ZWQuIiwKICAibmFtZSI6ICJVcHRpbWUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HbmlvdXJmL1VwdGltZS1JbmRpY2F0b3IiLAogICJ1dWlkIjogInVwdGltZS1pbmRpY2F0b3JAZ25pb3VyZmduaW91cmYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDI2Cn0="},
+    "46": {"version": "26", "sha256": "1vh7cqlbd4lv8g4ymz541scjc1d8g8jyvs7mabrhkicmgmydnj1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB1cHRpbWUgaW4gc3RhdHVzIGFyZWEuIFdoZW4gY2xpY2tlZCwgYSBwb3B1cCBtZW51IGluZGljYXRlcyB0aGUgZGF0ZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIHN0YXJ0ZWQuIiwKICAibmFtZSI6ICJVcHRpbWUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HbmlvdXJmL1VwdGltZS1JbmRpY2F0b3IiLAogICJ1dWlkIjogInVwdGltZS1pbmRpY2F0b3JAZ25pb3VyZmduaW91cmYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDI2Cn0="}
   }}
 , {"uuid": "caffeine@patapon.info", "name": "Caffeine", "pname": "caffeine", "description": "Disable the screensaver and auto suspend", "link": "https://extensions.gnome.org/extension/517/caffeine/", "shell_version_map": {
     "38": {"version": "37", "sha256": "05g1910jcwkjl9gmvnk57ip20sbzy09mk4v6q2fm0pg8398v0vhf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCBhdXRvIHN1c3BlbmQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tY2FmZmVpbmUiLAogICJuYW1lIjogIkNhZmZlaW5lIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNhZmZlaW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZW9ucGF0YXBvbi9nbm9tZS1zaGVsbC1leHRlbnNpb24tY2FmZmVpbmUiLAogICJ1dWlkIjogImNhZmZlaW5lQHBhdGFwb24uaW5mbyIsCiAgInZlcnNpb24iOiAzNwp9"},
@@ -293,7 +314,8 @@
     "42": {"version": "42", "sha256": "1bg5kvkf6kic1cp8r3h2h1qzyhnk0625b1gln6jxjfnygna9n197", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCBhdXRvIHN1c3BlbmQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tY2FmZmVpbmUiLAogICJuYW1lIjogIkNhZmZlaW5lIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNhZmZlaW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VvbnBhdGFwb24vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNhZmZlaW5lIiwKICAidXVpZCI6ICJjYWZmZWluZUBwYXRhcG9uLmluZm8iLAogICJ2ZXJzaW9uIjogNDIKfQ=="},
     "43": {"version": "51", "sha256": "1vpm780bcjf5g0fxwdb1blch6yzy60vwa1acxwf53m8zyqsxbmfx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCBhdXRvIHN1c3BlbmQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tY2FmZmVpbmUiLAogICJuYW1lIjogIkNhZmZlaW5lIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNhZmZlaW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9lb25wYXRhcG9uL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jYWZmZWluZSIsCiAgInV1aWQiOiAiY2FmZmVpbmVAcGF0YXBvbi5pbmZvIiwKICAidmVyc2lvbiI6IDUxCn0="},
     "44": {"version": "51", "sha256": "1vpm780bcjf5g0fxwdb1blch6yzy60vwa1acxwf53m8zyqsxbmfx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCBhdXRvIHN1c3BlbmQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tY2FmZmVpbmUiLAogICJuYW1lIjogIkNhZmZlaW5lIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNhZmZlaW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9lb25wYXRhcG9uL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jYWZmZWluZSIsCiAgInV1aWQiOiAiY2FmZmVpbmVAcGF0YXBvbi5pbmZvIiwKICAidmVyc2lvbiI6IDUxCn0="},
-    "45": {"version": "52", "sha256": "0yxzw2vzqi8jd1p5risplh74fz84fhh5qisghg1j0lqnc5lmyai7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCBhdXRvIHN1c3BlbmQiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogWwogICAgICAiZW9ucGF0YXBvbiIsCiAgICAgICJzdHVhcnRhaGF5aHVyc3QiLAogICAgICAicGFrYW9yYWtpIgogICAgXQogIH0sCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jYWZmZWluZSIsCiAgIm5hbWUiOiAiQ2FmZmVpbmUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY2FmZmVpbmUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZW9ucGF0YXBvbi9nbm9tZS1zaGVsbC1leHRlbnNpb24tY2FmZmVpbmUiLAogICJ1dWlkIjogImNhZmZlaW5lQHBhdGFwb24uaW5mbyIsCiAgInZlcnNpb24iOiA1Mgp9"}
+    "45": {"version": "54", "sha256": "0l4m23qjx0h7plakrvpgy3vvmga2b4v76jxlzhxydsj3ivyr4f3q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCBhdXRvIHN1c3BlbmQiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogWwogICAgICAiZW9ucGF0YXBvbiIsCiAgICAgICJzdHVhcnRhaGF5aHVyc3QiLAogICAgICAicGFrYW9yYWtpIgogICAgXQogIH0sCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jYWZmZWluZSIsCiAgIm5hbWUiOiAiQ2FmZmVpbmUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY2FmZmVpbmUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VvbnBhdGFwb24vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNhZmZlaW5lIiwKICAidXVpZCI6ICJjYWZmZWluZUBwYXRhcG9uLmluZm8iLAogICJ2ZXJzaW9uIjogNTQKfQ=="},
+    "46": {"version": "54", "sha256": "0l4m23qjx0h7plakrvpgy3vvmga2b4v76jxlzhxydsj3ivyr4f3q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbnNhdmVyIGFuZCBhdXRvIHN1c3BlbmQiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogWwogICAgICAiZW9ucGF0YXBvbiIsCiAgICAgICJzdHVhcnRhaGF5aHVyc3QiLAogICAgICAicGFrYW9yYWtpIgogICAgXQogIH0sCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jYWZmZWluZSIsCiAgIm5hbWUiOiAiQ2FmZmVpbmUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY2FmZmVpbmUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VvbnBhdGFwb24vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNhZmZlaW5lIiwKICAidXVpZCI6ICJjYWZmZWluZUBwYXRhcG9uLmluZm8iLAogICJ2ZXJzaW9uIjogNTQKfQ=="}
   }}
 , {"uuid": "backslide@codeisland.org", "name": "BackSlide", "pname": "backslide", "description": "Automatic background-image (wallpaper) slideshow for Gnome Shell", "link": "https://extensions.gnome.org/extension/543/backslide/", "shell_version_map": {
     "38": {"version": "18", "sha256": "155fpm71cfy23xj9pz0n7299vc4rdfkd5mjgg55vkz8wh76xbc7d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpYyBiYWNrZ3JvdW5kLWltYWdlICh3YWxscGFwZXIpIHNsaWRlc2hvdyBmb3IgR25vbWUgU2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiYWNrc2xpZGUiLAogICJuYW1lIjogIkJhY2tTbGlkZSIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJMdWthcyBLbnV0aCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3A5MXBhdWwvQmFja1NsaWRlIiwKICAidXVpZCI6ICJiYWNrc2xpZGVAY29kZWlzbGFuZC5vcmciLAogICJ2ZXJzaW9uIjogMTgKfQ=="},
@@ -317,7 +339,8 @@
     "41": {"version": "114", "sha256": "07mqqya5vpfs3bf7823ir3c23rjpn81l58m8r5nas3i2ggxsgfln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSB0b3AgYmFyLCBleGNlcHQgaW4gb3ZlcnZpZXcuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIG9wdGlvbiB0byBzaG93IHRoZSBwYW5lbCB3aGVuZXZlciB0aGUgbW91c2UgcG9pbnRlciBhcHByb2FjaGVzIHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4uIEFuZCBpZiBcImludGVsbGloaWRlXCIgaXMgZW5hYmxlZCwgdGhlIHBhbmVsIG9ubHkgaGlkZXMgd2hlbiBhIHdpbmRvdyB0YWtlcyB0aGUgc3BhY2UuXG5cbi0gUHJlc3MgYmFja3NwYWNlIHRvIHJlbW92ZSBrZXlib2FyZCBzaG9ydGN1dC5cbi0gTG9nIG9mZiBhbmQgb24gYWdhaW4gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBhZnRlciB1cGdyYWRpbmcuIiwKICAibmFtZSI6ICJIaWRlIFRvcCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGlkZXRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvdHV4b3IxMzM3L2hpZGV0b3BiYXIiLAogICJ1dWlkIjogImhpZGV0b3BiYXJAbWF0aGlldS5iaWRvbi5jYSIsCiAgInZlcnNpb24iOiAxMTQKfQ=="},
     "42": {"version": "114", "sha256": "07mqqya5vpfs3bf7823ir3c23rjpn81l58m8r5nas3i2ggxsgfln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSB0b3AgYmFyLCBleGNlcHQgaW4gb3ZlcnZpZXcuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIG9wdGlvbiB0byBzaG93IHRoZSBwYW5lbCB3aGVuZXZlciB0aGUgbW91c2UgcG9pbnRlciBhcHByb2FjaGVzIHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4uIEFuZCBpZiBcImludGVsbGloaWRlXCIgaXMgZW5hYmxlZCwgdGhlIHBhbmVsIG9ubHkgaGlkZXMgd2hlbiBhIHdpbmRvdyB0YWtlcyB0aGUgc3BhY2UuXG5cbi0gUHJlc3MgYmFja3NwYWNlIHRvIHJlbW92ZSBrZXlib2FyZCBzaG9ydGN1dC5cbi0gTG9nIG9mZiBhbmQgb24gYWdhaW4gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBhZnRlciB1cGdyYWRpbmcuIiwKICAibmFtZSI6ICJIaWRlIFRvcCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGlkZXRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvdHV4b3IxMzM3L2hpZGV0b3BiYXIiLAogICJ1dWlkIjogImhpZGV0b3BiYXJAbWF0aGlldS5iaWRvbi5jYSIsCiAgInZlcnNpb24iOiAxMTQKfQ=="},
     "43": {"version": "114", "sha256": "07mqqya5vpfs3bf7823ir3c23rjpn81l58m8r5nas3i2ggxsgfln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSB0b3AgYmFyLCBleGNlcHQgaW4gb3ZlcnZpZXcuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIG9wdGlvbiB0byBzaG93IHRoZSBwYW5lbCB3aGVuZXZlciB0aGUgbW91c2UgcG9pbnRlciBhcHByb2FjaGVzIHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4uIEFuZCBpZiBcImludGVsbGloaWRlXCIgaXMgZW5hYmxlZCwgdGhlIHBhbmVsIG9ubHkgaGlkZXMgd2hlbiBhIHdpbmRvdyB0YWtlcyB0aGUgc3BhY2UuXG5cbi0gUHJlc3MgYmFja3NwYWNlIHRvIHJlbW92ZSBrZXlib2FyZCBzaG9ydGN1dC5cbi0gTG9nIG9mZiBhbmQgb24gYWdhaW4gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBhZnRlciB1cGdyYWRpbmcuIiwKICAibmFtZSI6ICJIaWRlIFRvcCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGlkZXRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvdHV4b3IxMzM3L2hpZGV0b3BiYXIiLAogICJ1dWlkIjogImhpZGV0b3BiYXJAbWF0aGlldS5iaWRvbi5jYSIsCiAgInZlcnNpb24iOiAxMTQKfQ=="},
-    "44": {"version": "114", "sha256": "07mqqya5vpfs3bf7823ir3c23rjpn81l58m8r5nas3i2ggxsgfln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSB0b3AgYmFyLCBleGNlcHQgaW4gb3ZlcnZpZXcuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIG9wdGlvbiB0byBzaG93IHRoZSBwYW5lbCB3aGVuZXZlciB0aGUgbW91c2UgcG9pbnRlciBhcHByb2FjaGVzIHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4uIEFuZCBpZiBcImludGVsbGloaWRlXCIgaXMgZW5hYmxlZCwgdGhlIHBhbmVsIG9ubHkgaGlkZXMgd2hlbiBhIHdpbmRvdyB0YWtlcyB0aGUgc3BhY2UuXG5cbi0gUHJlc3MgYmFja3NwYWNlIHRvIHJlbW92ZSBrZXlib2FyZCBzaG9ydGN1dC5cbi0gTG9nIG9mZiBhbmQgb24gYWdhaW4gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBhZnRlciB1cGdyYWRpbmcuIiwKICAibmFtZSI6ICJIaWRlIFRvcCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGlkZXRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvdHV4b3IxMzM3L2hpZGV0b3BiYXIiLAogICJ1dWlkIjogImhpZGV0b3BiYXJAbWF0aGlldS5iaWRvbi5jYSIsCiAgInZlcnNpb24iOiAxMTQKfQ=="}
+    "44": {"version": "114", "sha256": "07mqqya5vpfs3bf7823ir3c23rjpn81l58m8r5nas3i2ggxsgfln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSB0b3AgYmFyLCBleGNlcHQgaW4gb3ZlcnZpZXcuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIG9wdGlvbiB0byBzaG93IHRoZSBwYW5lbCB3aGVuZXZlciB0aGUgbW91c2UgcG9pbnRlciBhcHByb2FjaGVzIHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4uIEFuZCBpZiBcImludGVsbGloaWRlXCIgaXMgZW5hYmxlZCwgdGhlIHBhbmVsIG9ubHkgaGlkZXMgd2hlbiBhIHdpbmRvdyB0YWtlcyB0aGUgc3BhY2UuXG5cbi0gUHJlc3MgYmFja3NwYWNlIHRvIHJlbW92ZSBrZXlib2FyZCBzaG9ydGN1dC5cbi0gTG9nIG9mZiBhbmQgb24gYWdhaW4gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBhZnRlciB1cGdyYWRpbmcuIiwKICAibmFtZSI6ICJIaWRlIFRvcCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGlkZXRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvdHV4b3IxMzM3L2hpZGV0b3BiYXIiLAogICJ1dWlkIjogImhpZGV0b3BiYXJAbWF0aGlldS5iaWRvbi5jYSIsCiAgInZlcnNpb24iOiAxMTQKfQ=="},
+    "45": {"version": "116", "sha256": "0ymr8lrlxsv25b7c9wskkjqd8girkbwfvl3p9kwq4vklrphz1kr8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSB0b3AgYmFyLCBleGNlcHQgaW4gb3ZlcnZpZXcuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIG9wdGlvbiB0byBzaG93IHRoZSBwYW5lbCB3aGVuZXZlciB0aGUgbW91c2UgcG9pbnRlciBhcHByb2FjaGVzIHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4uIEFuZCBpZiBcImludGVsbGloaWRlXCIgaXMgZW5hYmxlZCwgdGhlIHBhbmVsIG9ubHkgaGlkZXMgd2hlbiBhIHdpbmRvdyB0YWtlcyB0aGUgc3BhY2UuXG5cbi0gUHJlc3MgYmFja3NwYWNlIHRvIHJlbW92ZSBrZXlib2FyZCBzaG9ydGN1dC5cbi0gTG9nIG9mZiBhbmQgb24gYWdhaW4gd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBhZnRlciB1cGdyYWRpbmcuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGlkZXRvcGJhckBtYXRoaWV1LmJpZG9uLmNhIiwKICAibmFtZSI6ICJIaWRlIFRvcCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGlkZXRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy90dXhvcjEzMzcvaGlkZXRvcGJhciIsCiAgInV1aWQiOiAiaGlkZXRvcGJhckBtYXRoaWV1LmJpZG9uLmNhIiwKICAidmVyc2lvbiI6IDExNgp9"}
   }}
 , {"uuid": "hdate@hatul.info", "name": "Gnome HDate", "pname": "gnome-hdate", "description": "Show Hebrew Date in the Panel.\nRequires libhdate-glib", "link": "https://extensions.gnome.org/extension/554/gnome-hdate/", "shell_version_map": {
     "40": {"version": "25", "sha256": "0nxn93jxagzld6x0rxi56q1y8lcjzh2p82jhxli90cg940w38jj9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgSGVicmV3IERhdGUgaW4gdGhlIFBhbmVsLlxuUmVxdWlyZXMgbGliaGRhdGUtZ2xpYiIsCiAgIm5hbWUiOiAiR25vbWUgSERhdGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMiIsCiAgICAiMy40IiwKICAgICIzLjYiLAogICAgIjMuOCIsCiAgICAiMy4xMCIsCiAgICAiMy4xMiIsCiAgICAiMy4xNCIsCiAgICAiMy4xNiIsCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbWlhZC9nbm9tZS1oZGF0ZSIsCiAgInV1aWQiOiAiaGRhdGVAaGF0dWwuaW5mbyIsCiAgInZlcnNpb24iOiAyNQp9"},
@@ -344,7 +367,8 @@
     "42": {"version": "41", "sha256": "071m9z08bipyjfbvzyd00cdd0qrjz8ix6p2rjkqcjqgv102hldb7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYmF0dGVyeSBpY29uIGluIHRvcCBwYW5lbCwgaWYgYmF0dGVyeSBpcyBmdWxseSBjaGFyZ2VkIGFuZCBBQyBpcyBjb25uZWN0ZWQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhdXRvaGlkZS1iYXR0ZXJ5IiwKICAibmFtZSI6ICJBdXRvaGlkZSBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9haS9hdXRvaGlkZS1iYXR0ZXJ5IiwKICAidXVpZCI6ICJhdXRvaGlkZS1iYXR0ZXJ5QHNpdG5pay5ydSIsCiAgInZlcnNpb24iOiA0MQp9"},
     "43": {"version": "41", "sha256": "071m9z08bipyjfbvzyd00cdd0qrjz8ix6p2rjkqcjqgv102hldb7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYmF0dGVyeSBpY29uIGluIHRvcCBwYW5lbCwgaWYgYmF0dGVyeSBpcyBmdWxseSBjaGFyZ2VkIGFuZCBBQyBpcyBjb25uZWN0ZWQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhdXRvaGlkZS1iYXR0ZXJ5IiwKICAibmFtZSI6ICJBdXRvaGlkZSBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9haS9hdXRvaGlkZS1iYXR0ZXJ5IiwKICAidXVpZCI6ICJhdXRvaGlkZS1iYXR0ZXJ5QHNpdG5pay5ydSIsCiAgInZlcnNpb24iOiA0MQp9"},
     "44": {"version": "41", "sha256": "071m9z08bipyjfbvzyd00cdd0qrjz8ix6p2rjkqcjqgv102hldb7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYmF0dGVyeSBpY29uIGluIHRvcCBwYW5lbCwgaWYgYmF0dGVyeSBpcyBmdWxseSBjaGFyZ2VkIGFuZCBBQyBpcyBjb25uZWN0ZWQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhdXRvaGlkZS1iYXR0ZXJ5IiwKICAibmFtZSI6ICJBdXRvaGlkZSBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9haS9hdXRvaGlkZS1iYXR0ZXJ5IiwKICAidXVpZCI6ICJhdXRvaGlkZS1iYXR0ZXJ5QHNpdG5pay5ydSIsCiAgInZlcnNpb24iOiA0MQp9"},
-    "45": {"version": "46", "sha256": "19rhp40wdskf513ki5sm16pa1ka7fhcqsxk1gq4ngsfirbfc8lh1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYmF0dGVyeSBpY29uIGluIHRvcCBwYW5lbCwgaWYgYmF0dGVyeSBpcyBmdWxseSBjaGFyZ2VkIGFuZCBBQyBpcyBjb25uZWN0ZWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImFpIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG9oaWRlLWJhdHRlcnkiLAogICJuYW1lIjogIkF1dG9oaWRlIEJhdHRlcnkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXV0b2hpZGUtYmF0dGVyeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWkvYXV0b2hpZGUtYmF0dGVyeSIsCiAgInV1aWQiOiAiYXV0b2hpZGUtYmF0dGVyeUBzaXRuaWsucnUiLAogICJ2ZXJzaW9uIjogNDYKfQ=="}
+    "45": {"version": "48", "sha256": "0rg6i3xav0sb3j6ihqc6v0kchhsy1r7vr3ipp8cphrmif2brn0dp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYmF0dGVyeSBpY29uIGluIHRvcCBwYW5lbCwgaWYgYmF0dGVyeSBpcyBmdWxseSBjaGFyZ2VkIGFuZCBBQyBpcyBjb25uZWN0ZWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImFpIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG9oaWRlLWJhdHRlcnkiLAogICJuYW1lIjogIkF1dG9oaWRlIEJhdHRlcnkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXV0b2hpZGUtYmF0dGVyeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWkvYXV0b2hpZGUtYmF0dGVyeSIsCiAgInV1aWQiOiAiYXV0b2hpZGUtYmF0dGVyeUBzaXRuaWsucnUiLAogICJ2ZXJzaW9uIjogNDgKfQ=="},
+    "46": {"version": "48", "sha256": "0rg6i3xav0sb3j6ihqc6v0kchhsy1r7vr3ipp8cphrmif2brn0dp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYmF0dGVyeSBpY29uIGluIHRvcCBwYW5lbCwgaWYgYmF0dGVyeSBpcyBmdWxseSBjaGFyZ2VkIGFuZCBBQyBpcyBjb25uZWN0ZWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImFpIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG9oaWRlLWJhdHRlcnkiLAogICJuYW1lIjogIkF1dG9oaWRlIEJhdHRlcnkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXV0b2hpZGUtYmF0dGVyeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWkvYXV0b2hpZGUtYmF0dGVyeSIsCiAgInV1aWQiOiAiYXV0b2hpZGUtYmF0dGVyeUBzaXRuaWsucnUiLAogICJ2ZXJzaW9uIjogNDgKfQ=="}
   }}
 , {"uuid": "launch-new-instance@gnome-shell-extensions.gcampax.github.com", "name": "Launch new instance", "pname": "launch-new-instance", "description": "Always launch a new instance when clicking in the dash or the application view.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.", "link": "https://extensions.gnome.org/extension/600/launch-new-instance/", "shell_version_map": {
     "38": {"version": "29", "sha256": "0qb1ajjwm076zxsd314n7f5vl72ih7j4h9y84bqwb9cxa53mp4g4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBsYXVuY2ggYSBuZXcgaW5zdGFuY2Ugd2hlbiBjbGlja2luZyBpbiB0aGUgZGFzaCBvciB0aGUgYXBwbGljYXRpb24gdmlldy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJMYXVuY2ggbmV3IGluc3RhbmNlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJsYXVuY2gtbmV3LWluc3RhbmNlQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI5Cn0="},
@@ -353,7 +377,8 @@
     "42": {"version": "34", "sha256": "1vx1dbb8sq5ss3ilqah92nja6ivqnijywj2wkg29akz8ijbss19f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBsYXVuY2ggYSBuZXcgaW5zdGFuY2Ugd2hlbiBjbGlja2luZyBpbiB0aGUgZGFzaCBvciB0aGUgYXBwbGljYXRpb24gdmlldy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGF1bmNoLW5ldy1pbnN0YW5jZSIsCiAgIm5hbWUiOiAiTGF1bmNoIG5ldyBpbnN0YW5jZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sYXVuY2gtbmV3LWluc3RhbmNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2VAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "43": {"version": "35", "sha256": "1i96p4jzi3yfkccbzv7r7x059xr834wispzg1n2888im51zz6x4h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBsYXVuY2ggYSBuZXcgaW5zdGFuY2Ugd2hlbiBjbGlja2luZyBpbiB0aGUgZGFzaCBvciB0aGUgYXBwbGljYXRpb24gdmlldy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGF1bmNoLW5ldy1pbnN0YW5jZSIsCiAgIm5hbWUiOiAiTGF1bmNoIG5ldyBpbnN0YW5jZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sYXVuY2gtbmV3LWluc3RhbmNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2VAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzUKfQ=="},
     "44": {"version": "36", "sha256": "06rhp1difpb7j1l49lay3h5wscf8nv2p0xqs70rss6yvjywsgi34", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBsYXVuY2ggYSBuZXcgaW5zdGFuY2Ugd2hlbiBjbGlja2luZyBpbiB0aGUgZGFzaCBvciB0aGUgYXBwbGljYXRpb24gdmlldy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGF1bmNoLW5ldy1pbnN0YW5jZSIsCiAgIm5hbWUiOiAiTGF1bmNoIG5ldyBpbnN0YW5jZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sYXVuY2gtbmV3LWluc3RhbmNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2VAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzYKfQ=="},
-    "45": {"version": "39", "sha256": "0ap68r89z2z95vvmr6k009gczijanlkp002dbvkr5dpvzknzzc09", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBsYXVuY2ggYSBuZXcgaW5zdGFuY2Ugd2hlbiBjbGlja2luZyBpbiB0aGUgZGFzaCBvciB0aGUgYXBwbGljYXRpb24gdmlldy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGF1bmNoLW5ldy1pbnN0YW5jZSIsCiAgIm5hbWUiOiAiTGF1bmNoIG5ldyBpbnN0YW5jZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sYXVuY2gtbmV3LWluc3RhbmNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2VAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzkKfQ=="}
+    "45": {"version": "39", "sha256": "0ap68r89z2z95vvmr6k009gczijanlkp002dbvkr5dpvzknzzc09", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBsYXVuY2ggYSBuZXcgaW5zdGFuY2Ugd2hlbiBjbGlja2luZyBpbiB0aGUgZGFzaCBvciB0aGUgYXBwbGljYXRpb24gdmlldy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGF1bmNoLW5ldy1pbnN0YW5jZSIsCiAgIm5hbWUiOiAiTGF1bmNoIG5ldyBpbnN0YW5jZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sYXVuY2gtbmV3LWluc3RhbmNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2VAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzkKfQ=="},
+    "46": {"version": "41", "sha256": "1yfdrnnxm1f1pmqqgrjb9k4rcq2nbj2wv94ljbw4g8wgmkh2ddfy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBsYXVuY2ggYSBuZXcgaW5zdGFuY2Ugd2hlbiBjbGlja2luZyBpbiB0aGUgZGFzaCBvciB0aGUgYXBwbGljYXRpb24gdmlldy5cblRoaXMgZXh0ZW5zaW9uIGlzIHBhcnQgb2YgQ2xhc3NpYyBNb2RlIGFuZCBpcyBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBHTk9NRS4gUGxlYXNlIGRvIG5vdCByZXBvcnQgYnVncyB1c2luZyB0aGUgZm9ybSBiZWxvdywgdXNlIEdOT01FJ3MgR2l0TGFiIGluc3RhbmNlIGluc3RlYWQuIiwKICAiZXh0ZW5zaW9uLWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2UiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGF1bmNoLW5ldy1pbnN0YW5jZSIsCiAgIm5hbWUiOiAiTGF1bmNoIG5ldyBpbnN0YW5jZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sYXVuY2gtbmV3LWluc3RhbmNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogImxhdW5jaC1uZXctaW5zdGFuY2VAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNDEKfQ=="}
   }}
 , {"uuid": "window-list@gnome-shell-extensions.gcampax.github.com", "name": "Window List", "pname": "window-list", "description": "Display a window list at the bottom of the screen.\nThis extension is part of Classic Mode and is officially supported by GNOME. Please do not report bugs using the form below, use GNOME's GitLab instance instead.", "link": "https://extensions.gnome.org/extension/602/window-list/", "shell_version_map": {
     "38": {"version": "34", "sha256": "06jww5sv3a32plbvnl1xch10y19q807dx6zn6z5gwpvq8n0nvnx3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSB3aW5kb3cgbGlzdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3ctbGlzdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIldpbmRvdyBMaXN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvdy1saXN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93LWxpc3RAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
@@ -362,7 +387,8 @@
     "42": {"version": "46", "sha256": "12h8601f1hl4cfr3gh9pykibb9lh7l0v01s80cjz0lc72c64j9qz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSB3aW5kb3cgbGlzdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3ctbGlzdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aW5kb3ctbGlzdCIsCiAgIm5hbWUiOiAiV2luZG93IExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93LWxpc3RAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNDYKfQ=="},
     "43": {"version": "47", "sha256": "1nzdl0zb8i7wipsnnrixkpj6rrsv3vz4c1snqspb23h494232wmz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSB3aW5kb3cgbGlzdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3ctbGlzdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aW5kb3ctbGlzdCIsCiAgIm5hbWUiOiAiV2luZG93IExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93LWxpc3RAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNDcKfQ=="},
     "44": {"version": "48", "sha256": "121n3vcy1kk3vj7say292synnl5ig3kl94i039d2b40pslh4zlq9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSB3aW5kb3cgbGlzdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3ctbGlzdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aW5kb3ctbGlzdCIsCiAgIm5hbWUiOiAiV2luZG93IExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93LWxpc3RAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNDgKfQ=="},
-    "45": {"version": "51", "sha256": "1nb3iwyhn08m9ylyb8jn9lncqmj08vrldvjvn642wkibi0vg1dwf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSB3aW5kb3cgbGlzdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3ctbGlzdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aW5kb3ctbGlzdCIsCiAgIm5hbWUiOiAiV2luZG93IExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93LWxpc3RAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTEKfQ=="}
+    "45": {"version": "51", "sha256": "1nb3iwyhn08m9ylyb8jn9lncqmj08vrldvjvn642wkibi0vg1dwf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSB3aW5kb3cgbGlzdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3ctbGlzdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aW5kb3ctbGlzdCIsCiAgIm5hbWUiOiAiV2luZG93IExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93LWxpc3RAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTEKfQ=="},
+    "46": {"version": "53", "sha256": "0x3bb1615z1cbacawgr5d82993kwi7qapm453ncsj82nibmp578y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSB3aW5kb3cgbGlzdCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG5UaGlzIGV4dGVuc2lvbiBpcyBwYXJ0IG9mIENsYXNzaWMgTW9kZSBhbmQgaXMgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYnkgR05PTUUuIFBsZWFzZSBkbyBub3QgcmVwb3J0IGJ1Z3MgdXNpbmcgdGhlIGZvcm0gYmVsb3csIHVzZSBHTk9NRSdzIEdpdExhYiBpbnN0YW5jZSBpbnN0ZWFkLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3aW5kb3ctbGlzdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aW5kb3ctbGlzdCIsCiAgIm5hbWUiOiAiV2luZG93IExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAid2luZG93LWxpc3RAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTMKfQ=="}
   }}
 , {"uuid": "MultiClock@mibus.org", "name": "MultiClock", "pname": "multiclock", "description": "A clock for showing a second timezone in the panel.", "link": "https://extensions.gnome.org/extension/605/multiclock/", "shell_version_map": {
     "40": {"version": "8", "sha256": "1pp1cnmpix668mrywpv6mkyb45lw7f6cwibjl6bc7cgb01hkzd53", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgY2xvY2sgZm9yIHNob3dpbmcgYSBzZWNvbmQgdGltZXpvbmUgaW4gdGhlIHBhbmVsLiIsCiAgIm5hbWUiOiAiTXVsdGlDbG9jayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5taWJ1c011bHRpQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjQwLjAiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9taWJ1cy9NdWx0aUNsb2NrIiwKICAidXVpZCI6ICJNdWx0aUNsb2NrQG1pYnVzLm9yZyIsCiAgInZlcnNpb24iOiA4Cn0="}
@@ -388,14 +414,15 @@
 , {"uuid": "ShellTile@emasab.it", "name": "ShellTile", "pname": "shelltile", "description": "A tiling window extension for GNOME Shell. Just move a window to the edges of the screen to create a tiling, otherwise move a window over another one, holding down the Control key. Grouped windows minimize, resize, raise and change workspace together. Move or maximize a window to remove it from the group.", "link": "https://extensions.gnome.org/extension/657/shelltile/", "shell_version_map": {
     "38": {"version": "69", "sha256": "1kpsqaq2fcj1z3jcbvgh23c8k6bv9l6vyl05kpw0fclzsmy60mh1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgdGlsaW5nIHdpbmRvdyBleHRlbnNpb24gZm9yIEdOT01FIFNoZWxsLiBKdXN0IG1vdmUgYSB3aW5kb3cgdG8gdGhlIGVkZ2VzIG9mIHRoZSBzY3JlZW4gdG8gY3JlYXRlIGEgdGlsaW5nLCBvdGhlcndpc2UgbW92ZSBhIHdpbmRvdyBvdmVyIGFub3RoZXIgb25lLCBob2xkaW5nIGRvd24gdGhlIENvbnRyb2wga2V5LiBHcm91cGVkIHdpbmRvd3MgbWluaW1pemUsIHJlc2l6ZSwgcmFpc2UgYW5kIGNoYW5nZSB3b3Jrc3BhY2UgdG9nZXRoZXIuIE1vdmUgb3IgbWF4aW1pemUgYSB3aW5kb3cgdG8gcmVtb3ZlIGl0IGZyb20gdGhlIGdyb3VwLiIsCiAgImdldHRleHQtZG9tYWluIjogInNoZWxsdGlsZSIsCiAgIm5hbWUiOiAiU2hlbGxUaWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNoZWxsdGlsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy44IiwKICAgICIzLjEwIiwKICAgICIzLjEyIiwKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZW1hc2FiL3NoZWxsdGlsZSIsCiAgInV1aWQiOiAiU2hlbGxUaWxlQGVtYXNhYi5pdCIsCiAgInZlcnNpb24iOiA2OQp9"}
   }}
-, {"uuid": "lunarcal@ailin.nemui", "name": "Lunar Calendar 农历", "pname": "lunar-calendar", "description": "Display Chinese Lunar Calendar in panel\n\n⚠⚠⚠ dependency: ChineseCalendar by ytliu0: https://gitlab.gnome.org/Nei/ChineseCalendar/-/archive/20231023/ChineseCalendar-20231023.tar.gz", "link": "https://extensions.gnome.org/extension/675/lunar-calendar/", "shell_version_map": {
+, {"uuid": "lunarcal@ailin.nemui", "name": "Lunar Calendar 农历", "pname": "lunar-calendar", "description": "Display Chinese Lunar Calendar in panel\n\n⚠⚠⚠ dependency: ChineseCalendar by ytliu0: https://gitlab.gnome.org/Nei/ChineseCalendar/-/archive/20240107/ChineseCalendar-20240107.tar.gz", "link": "https://extensions.gnome.org/extension/675/lunar-calendar/", "shell_version_map": {
     "38": {"version": "25", "sha256": "19y2xr06qivvff4kgxsi7qav55ks060aqs4nksfh52xgxg1a5y8i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiB0eXBlbGliLTFfMC1MdW5hckRhdGUtM18wIC8gZ2lyMS4yLWx1bmFyZGF0ZS0zLjAiLAogICJuYW1lIjogIkx1bmFyIENhbGVuZGFyIFx1NTE5Y1x1NTM4NiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sdW5hci1jYWxlbmRhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJsdW5hcmNhbEBhaWxpbi5uZW11aSIsCiAgInZlcnNpb24iOiAyNQp9"},
-    "40": {"version": "42", "sha256": "1qrn9s5jl37gf9har7nybznw4vlxspq17wzc9nk45dfi3y5vf9z9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyMzEwMjMvQ2hpbmVzZUNhbGVuZGFyLTIwMjMxMDIzLnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQyCn0="},
-    "41": {"version": "42", "sha256": "1qrn9s5jl37gf9har7nybznw4vlxspq17wzc9nk45dfi3y5vf9z9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyMzEwMjMvQ2hpbmVzZUNhbGVuZGFyLTIwMjMxMDIzLnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQyCn0="},
-    "42": {"version": "42", "sha256": "1qrn9s5jl37gf9har7nybznw4vlxspq17wzc9nk45dfi3y5vf9z9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyMzEwMjMvQ2hpbmVzZUNhbGVuZGFyLTIwMjMxMDIzLnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQyCn0="},
-    "43": {"version": "42", "sha256": "1qrn9s5jl37gf9har7nybznw4vlxspq17wzc9nk45dfi3y5vf9z9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyMzEwMjMvQ2hpbmVzZUNhbGVuZGFyLTIwMjMxMDIzLnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQyCn0="},
-    "44": {"version": "42", "sha256": "1qrn9s5jl37gf9har7nybznw4vlxspq17wzc9nk45dfi3y5vf9z9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyMzEwMjMvQ2hpbmVzZUNhbGVuZGFyLTIwMjMxMDIzLnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQyCn0="},
-    "45": {"version": "43", "sha256": "13gmwz3195jpz4cjkq2rk4a2l5kidnqr0vqjddnjj5f9xsp71mk0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyMzEwMjMvQ2hpbmVzZUNhbGVuZGFyLTIwMjMxMDIzLnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQzCn0="}
+    "40": {"version": "47", "sha256": "01kw3aqcyv5lm0rfyfg1vkmn9bwm8ai0yg29b48b0904jc31qad3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyNDAxMDcvQ2hpbmVzZUNhbGVuZGFyLTIwMjQwMTA3LnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQ3Cn0="},
+    "41": {"version": "47", "sha256": "01kw3aqcyv5lm0rfyfg1vkmn9bwm8ai0yg29b48b0904jc31qad3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyNDAxMDcvQ2hpbmVzZUNhbGVuZGFyLTIwMjQwMTA3LnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQ3Cn0="},
+    "42": {"version": "47", "sha256": "01kw3aqcyv5lm0rfyfg1vkmn9bwm8ai0yg29b48b0904jc31qad3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyNDAxMDcvQ2hpbmVzZUNhbGVuZGFyLTIwMjQwMTA3LnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQ3Cn0="},
+    "43": {"version": "47", "sha256": "01kw3aqcyv5lm0rfyfg1vkmn9bwm8ai0yg29b48b0904jc31qad3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyNDAxMDcvQ2hpbmVzZUNhbGVuZGFyLTIwMjQwMTA3LnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQ3Cn0="},
+    "44": {"version": "47", "sha256": "01kw3aqcyv5lm0rfyfg1vkmn9bwm8ai0yg29b48b0904jc31qad3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyNDAxMDcvQ2hpbmVzZUNhbGVuZGFyLTIwMjQwMTA3LnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbHVuYXItY2FsZW5kYXIvLS9pc3N1ZXMiLAogICJ1dWlkIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDQ3Cn0="},
+    "45": {"version": "46", "sha256": "1wxanc7saa6vl78k2fi2v8skcj90k1hkb8v85b8n608ma90gycbv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyNDAxMDcvQ2hpbmVzZUNhbGVuZGFyLTIwMjQwMTA3LnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sdW5hci1jYWxlbmRhci8tL2lzc3VlcyIsCiAgInV1aWQiOiAibHVuYXJjYWxAYWlsaW4ubmVtdWkiLAogICJ2ZXJzaW9uIjogNDYKfQ=="},
+    "46": {"version": "48", "sha256": "17ksgq6bd9n3xjj02bkisp70bag4mdzi3k8yzrsn3whz6mgrfsch", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSBDaGluZXNlIEx1bmFyIENhbGVuZGFyIGluIHBhbmVsXG5cblx1MjZhMFx1MjZhMFx1MjZhMCBkZXBlbmRlbmN5OiBDaGluZXNlQ2FsZW5kYXIgYnkgeXRsaXUwOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL0NoaW5lc2VDYWxlbmRhci8tL2FyY2hpdmUvMjAyNDAxMDcvQ2hpbmVzZUNhbGVuZGFyLTIwMjQwMTA3LnRhci5neiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImx1bmFyY2FsQGFpbGluLm5lbXVpIiwKICAibmFtZSI6ICJMdW5hciBDYWxlbmRhciBcdTUxOWNcdTUzODYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHVuYXItY2FsZW5kYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sdW5hci1jYWxlbmRhci8tL2lzc3VlcyIsCiAgInV1aWQiOiAibHVuYXJjYWxAYWlsaW4ubmVtdWkiLAogICJ2ZXJzaW9uIjogNDgKfQ=="}
   }}
 , {"uuid": "EasyScreenCast@iacopodeenosee.gmail.com", "name": "EasyScreenCast", "pname": "easyscreencast", "description": "This extension simplifies the use of the video recording function integrated in gnome shell, allows quickly to change the various settings of the desktop recording.\n\nSOURCE CODE ->  https://github.com/EasyScreenCast/EasyScreenCast\n\nVIDEO ->  https://youtu.be/81E9AruraKU\n\n**NOTICE**\nif an error occurs during the update is recommended to reload GNOME Shell (Alt + F2, 'r') and reload the extension's installation page.", "link": "https://extensions.gnome.org/extension/690/easyscreencast/", "shell_version_map": {
     "38": {"version": "47", "sha256": "0fkp5qg6xg4jh8zamba7gva5imp83pg4cy4v8q586dcli2r8yzmn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgdmlkZW8gcmVjb3JkaW5nIGZ1bmN0aW9uIGludGVncmF0ZWQgaW4gZ25vbWUgc2hlbGwsIGFsbG93cyBxdWlja2x5IHRvIGNoYW5nZSB0aGUgdmFyaW91cyBzZXR0aW5ncyBvZiB0aGUgZGVza3RvcCByZWNvcmRpbmcuXG5cblNPVVJDRSBDT0RFIC0+ICBodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3RcblxuVklERU8gLT4gIGh0dHBzOi8veW91dHUuYmUvODFFOUFydXJhS1VcblxuKipOT1RJQ0UqKlxuaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgdXBkYXRlIGlzIHJlY29tbWVuZGVkIHRvIHJlbG9hZCBHTk9NRSBTaGVsbCAoQWx0ICsgRjIsICdyJykgYW5kIHJlbG9hZCB0aGUgZXh0ZW5zaW9uJ3MgaW5zdGFsbGF0aW9uIHBhZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAibmFtZSI6ICJFYXN5U2NyZWVuQ2FzdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5FYXN5U2NyZWVuQ2FzdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3QiLAogICJ1dWlkIjogIkVhc3lTY3JlZW5DYXN0QGlhY29wb2RlZW5vc2VlLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0Nwp9"},
@@ -404,7 +431,8 @@
     "42": {"version": "47", "sha256": "0fkp5qg6xg4jh8zamba7gva5imp83pg4cy4v8q586dcli2r8yzmn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgdmlkZW8gcmVjb3JkaW5nIGZ1bmN0aW9uIGludGVncmF0ZWQgaW4gZ25vbWUgc2hlbGwsIGFsbG93cyBxdWlja2x5IHRvIGNoYW5nZSB0aGUgdmFyaW91cyBzZXR0aW5ncyBvZiB0aGUgZGVza3RvcCByZWNvcmRpbmcuXG5cblNPVVJDRSBDT0RFIC0+ICBodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3RcblxuVklERU8gLT4gIGh0dHBzOi8veW91dHUuYmUvODFFOUFydXJhS1VcblxuKipOT1RJQ0UqKlxuaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgdXBkYXRlIGlzIHJlY29tbWVuZGVkIHRvIHJlbG9hZCBHTk9NRSBTaGVsbCAoQWx0ICsgRjIsICdyJykgYW5kIHJlbG9hZCB0aGUgZXh0ZW5zaW9uJ3MgaW5zdGFsbGF0aW9uIHBhZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAibmFtZSI6ICJFYXN5U2NyZWVuQ2FzdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5FYXN5U2NyZWVuQ2FzdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3QiLAogICJ1dWlkIjogIkVhc3lTY3JlZW5DYXN0QGlhY29wb2RlZW5vc2VlLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0Nwp9"},
     "43": {"version": "47", "sha256": "0fkp5qg6xg4jh8zamba7gva5imp83pg4cy4v8q586dcli2r8yzmn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgdmlkZW8gcmVjb3JkaW5nIGZ1bmN0aW9uIGludGVncmF0ZWQgaW4gZ25vbWUgc2hlbGwsIGFsbG93cyBxdWlja2x5IHRvIGNoYW5nZSB0aGUgdmFyaW91cyBzZXR0aW5ncyBvZiB0aGUgZGVza3RvcCByZWNvcmRpbmcuXG5cblNPVVJDRSBDT0RFIC0+ICBodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3RcblxuVklERU8gLT4gIGh0dHBzOi8veW91dHUuYmUvODFFOUFydXJhS1VcblxuKipOT1RJQ0UqKlxuaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgdXBkYXRlIGlzIHJlY29tbWVuZGVkIHRvIHJlbG9hZCBHTk9NRSBTaGVsbCAoQWx0ICsgRjIsICdyJykgYW5kIHJlbG9hZCB0aGUgZXh0ZW5zaW9uJ3MgaW5zdGFsbGF0aW9uIHBhZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAibmFtZSI6ICJFYXN5U2NyZWVuQ2FzdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5FYXN5U2NyZWVuQ2FzdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3QiLAogICJ1dWlkIjogIkVhc3lTY3JlZW5DYXN0QGlhY29wb2RlZW5vc2VlLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0Nwp9"},
     "44": {"version": "47", "sha256": "0fkp5qg6xg4jh8zamba7gva5imp83pg4cy4v8q586dcli2r8yzmn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgdmlkZW8gcmVjb3JkaW5nIGZ1bmN0aW9uIGludGVncmF0ZWQgaW4gZ25vbWUgc2hlbGwsIGFsbG93cyBxdWlja2x5IHRvIGNoYW5nZSB0aGUgdmFyaW91cyBzZXR0aW5ncyBvZiB0aGUgZGVza3RvcCByZWNvcmRpbmcuXG5cblNPVVJDRSBDT0RFIC0+ICBodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3RcblxuVklERU8gLT4gIGh0dHBzOi8veW91dHUuYmUvODFFOUFydXJhS1VcblxuKipOT1RJQ0UqKlxuaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgdXBkYXRlIGlzIHJlY29tbWVuZGVkIHRvIHJlbG9hZCBHTk9NRSBTaGVsbCAoQWx0ICsgRjIsICdyJykgYW5kIHJlbG9hZCB0aGUgZXh0ZW5zaW9uJ3MgaW5zdGFsbGF0aW9uIHBhZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAibmFtZSI6ICJFYXN5U2NyZWVuQ2FzdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5FYXN5U2NyZWVuQ2FzdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3QiLAogICJ1dWlkIjogIkVhc3lTY3JlZW5DYXN0QGlhY29wb2RlZW5vc2VlLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0Nwp9"},
-    "45": {"version": "49", "sha256": "1jz9g6ni05pjf0kghzsjqm1l05sagbyns5x97dx464dkvbjfn56p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgdmlkZW8gcmVjb3JkaW5nIGZ1bmN0aW9uIGludGVncmF0ZWQgaW4gZ25vbWUgc2hlbGwsIGFsbG93cyBxdWlja2x5IHRvIGNoYW5nZSB0aGUgdmFyaW91cyBzZXR0aW5ncyBvZiB0aGUgZGVza3RvcCByZWNvcmRpbmcuXG5cblNPVVJDRSBDT0RFIC0+ICBodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3RcblxuVklERU8gLT4gIGh0dHBzOi8veW91dHUuYmUvODFFOUFydXJhS1VcblxuKipOT1RJQ0UqKlxuaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgdXBkYXRlIGlzIHJlY29tbWVuZGVkIHRvIHJlbG9hZCBHTk9NRSBTaGVsbCAoQWx0ICsgRjIsICdyJykgYW5kIHJlbG9hZCB0aGUgZXh0ZW5zaW9uJ3MgaW5zdGFsbGF0aW9uIHBhZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAibmFtZSI6ICJFYXN5U2NyZWVuQ2FzdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5FYXN5U2NyZWVuQ2FzdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9FYXN5U2NyZWVuQ2FzdC9FYXN5U2NyZWVuQ2FzdCIsCiAgInV1aWQiOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDQ5Cn0="}
+    "45": {"version": "49", "sha256": "1jz9g6ni05pjf0kghzsjqm1l05sagbyns5x97dx464dkvbjfn56p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgdmlkZW8gcmVjb3JkaW5nIGZ1bmN0aW9uIGludGVncmF0ZWQgaW4gZ25vbWUgc2hlbGwsIGFsbG93cyBxdWlja2x5IHRvIGNoYW5nZSB0aGUgdmFyaW91cyBzZXR0aW5ncyBvZiB0aGUgZGVza3RvcCByZWNvcmRpbmcuXG5cblNPVVJDRSBDT0RFIC0+ICBodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3RcblxuVklERU8gLT4gIGh0dHBzOi8veW91dHUuYmUvODFFOUFydXJhS1VcblxuKipOT1RJQ0UqKlxuaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgdXBkYXRlIGlzIHJlY29tbWVuZGVkIHRvIHJlbG9hZCBHTk9NRSBTaGVsbCAoQWx0ICsgRjIsICdyJykgYW5kIHJlbG9hZCB0aGUgZXh0ZW5zaW9uJ3MgaW5zdGFsbGF0aW9uIHBhZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAibmFtZSI6ICJFYXN5U2NyZWVuQ2FzdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5FYXN5U2NyZWVuQ2FzdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9FYXN5U2NyZWVuQ2FzdC9FYXN5U2NyZWVuQ2FzdCIsCiAgInV1aWQiOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDQ5Cn0="},
+    "46": {"version": "50", "sha256": "0fxnymblyrh6clh19jx1y8ln7xclyb8xv25lc0bbja3q7w4pxfh4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNpbXBsaWZpZXMgdGhlIHVzZSBvZiB0aGUgdmlkZW8gcmVjb3JkaW5nIGZ1bmN0aW9uIGludGVncmF0ZWQgaW4gZ25vbWUgc2hlbGwsIGFsbG93cyBxdWlja2x5IHRvIGNoYW5nZSB0aGUgdmFyaW91cyBzZXR0aW5ncyBvZiB0aGUgZGVza3RvcCByZWNvcmRpbmcuXG5cblNPVVJDRSBDT0RFIC0+ICBodHRwczovL2dpdGh1Yi5jb20vRWFzeVNjcmVlbkNhc3QvRWFzeVNjcmVlbkNhc3RcblxuVklERU8gLT4gIGh0dHBzOi8veW91dHUuYmUvODFFOUFydXJhS1VcblxuKipOT1RJQ0UqKlxuaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgdXBkYXRlIGlzIHJlY29tbWVuZGVkIHRvIHJlbG9hZCBHTk9NRSBTaGVsbCAoQWx0ICsgRjIsICdyJykgYW5kIHJlbG9hZCB0aGUgZXh0ZW5zaW9uJ3MgaW5zdGFsbGF0aW9uIHBhZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAibmFtZSI6ICJFYXN5U2NyZWVuQ2FzdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5FYXN5U2NyZWVuQ2FzdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9FYXN5U2NyZWVuQ2FzdC9FYXN5U2NyZWVuQ2FzdCIsCiAgInV1aWQiOiAiRWFzeVNjcmVlbkNhc3RAaWFjb3BvZGVlbm9zZWUuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDUwCn0="}
   }}
 , {"uuid": "scroll-workspaces@gfxmonk.net", "name": "Top Panel Workspace Scroll", "pname": "top-panel-workspace-scroll", "description": "Change workspaces by scrolling over the top panel", "link": "https://extensions.gnome.org/extension/701/top-panel-workspace-scroll/", "shell_version_map": {
     "40": {"version": "32", "sha256": "0lfklqnwjrvd0ndsbaspr58d5grf33pbaghw8pbhgf564mfj5946", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB3b3Jrc3BhY2VzIGJ5IHNjcm9sbGluZyBvdmVyIHRoZSB0b3AgcGFuZWwiLAogICJuYW1lIjogIlRvcCBQYW5lbCBXb3Jrc3BhY2UgU2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aW1AZ2Z4bW9uay5uZXQiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5ldC5nZnhtb25rLnNjcm9sbC13b3Jrc3BhY2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dmeG1vbmsvZ25vbWUtc2hlbGwtc2Nyb2xsLXdvcmtzcGFjZXMiLAogICJ1dWlkIjogInNjcm9sbC13b3Jrc3BhY2VzQGdmeG1vbmsubmV0IiwKICAidmVyc2lvbiI6IDMyCn0="},
@@ -444,7 +472,8 @@
     "42": {"version": "15", "sha256": "1bz18vqqk7ya2w53qa3jnw33vfxisjmr76ribdq3lwsjm0kimmyc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBBY3Rpdml0aWVzIGJ1dHRvbiBmcm9tIHRoZSBzdGF0dXMgYmFyICh0aGUgaG90IGNvcm5lciBhbmQga2V5Ym9hcmQgc2hvcnRjdXQga2VlcHMgd29ya2luZykuIFxuXG5UbyBkaXNhYmxlIHRvcCBsZWZ0IGhvdCBjb3JuZXIgLSBpbiBvbGRlciBnbm9tZS1zaGVsbCAtICB1c2UgJ05vIFRvcGxlZnQgSG90IENvcm5lcicgZXh0ZW5zaW9uIFx1MjAxNCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTgvbm8tdG9wbGVmdC1ob3QtY29ybmVyLyAuXG5cbk5ld2VyIGdub21lLXNoZWxsIGhhcyBhIGJ1aWx0aW4gc2V0dGluZyB0byBkaXNhYmxlIGhvdC1jb3JuZXI7KSIsCiAgIm5hbWUiOiAiSGlkZSBBY3Rpdml0aWVzIEJ1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIkhpZGVfQWN0aXZpdGllc0BzaGF5LnNoYXllbC5vcmciLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
     "43": {"version": "15", "sha256": "1bz18vqqk7ya2w53qa3jnw33vfxisjmr76ribdq3lwsjm0kimmyc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBBY3Rpdml0aWVzIGJ1dHRvbiBmcm9tIHRoZSBzdGF0dXMgYmFyICh0aGUgaG90IGNvcm5lciBhbmQga2V5Ym9hcmQgc2hvcnRjdXQga2VlcHMgd29ya2luZykuIFxuXG5UbyBkaXNhYmxlIHRvcCBsZWZ0IGhvdCBjb3JuZXIgLSBpbiBvbGRlciBnbm9tZS1zaGVsbCAtICB1c2UgJ05vIFRvcGxlZnQgSG90IENvcm5lcicgZXh0ZW5zaW9uIFx1MjAxNCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTgvbm8tdG9wbGVmdC1ob3QtY29ybmVyLyAuXG5cbk5ld2VyIGdub21lLXNoZWxsIGhhcyBhIGJ1aWx0aW4gc2V0dGluZyB0byBkaXNhYmxlIGhvdC1jb3JuZXI7KSIsCiAgIm5hbWUiOiAiSGlkZSBBY3Rpdml0aWVzIEJ1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIkhpZGVfQWN0aXZpdGllc0BzaGF5LnNoYXllbC5vcmciLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
     "44": {"version": "15", "sha256": "1bz18vqqk7ya2w53qa3jnw33vfxisjmr76ribdq3lwsjm0kimmyc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBBY3Rpdml0aWVzIGJ1dHRvbiBmcm9tIHRoZSBzdGF0dXMgYmFyICh0aGUgaG90IGNvcm5lciBhbmQga2V5Ym9hcmQgc2hvcnRjdXQga2VlcHMgd29ya2luZykuIFxuXG5UbyBkaXNhYmxlIHRvcCBsZWZ0IGhvdCBjb3JuZXIgLSBpbiBvbGRlciBnbm9tZS1zaGVsbCAtICB1c2UgJ05vIFRvcGxlZnQgSG90IENvcm5lcicgZXh0ZW5zaW9uIFx1MjAxNCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTgvbm8tdG9wbGVmdC1ob3QtY29ybmVyLyAuXG5cbk5ld2VyIGdub21lLXNoZWxsIGhhcyBhIGJ1aWx0aW4gc2V0dGluZyB0byBkaXNhYmxlIGhvdC1jb3JuZXI7KSIsCiAgIm5hbWUiOiAiSGlkZSBBY3Rpdml0aWVzIEJ1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIkhpZGVfQWN0aXZpdGllc0BzaGF5LnNoYXllbC5vcmciLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
-    "45": {"version": "18", "sha256": "1an1nkrk5pkm3ds6rxwvhigl39ngdq3150hl7ragicgigqr2jxf0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBBY3Rpdml0aWVzIGJ1dHRvbiBmcm9tIHRoZSBzdGF0dXMgYmFyICh0aGUgaG90IGNvcm5lciBhbmQga2V5Ym9hcmQgc2hvcnRjdXQga2VlcHMgd29ya2luZykuIFRvIGRpc2FibGUgdG9wIGxlZnQgaG90IGNvcm5lciB1c2UgJ05vIFRvcGxlZnQgSG90IENvcm5lcicgZXh0ZW5zaW9uIFx1MjAxNCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTgvbm8tdG9wbGVmdC1ob3QtY29ybmVyLyAuIiwKICAibmFtZSI6ICJIaWRlIEFjdGl2aXRpZXMgQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3pldGVuMzAvSGlkZUFjdGl2aXRpZXMiLAogICJ1dWlkIjogIkhpZGVfQWN0aXZpdGllc0BzaGF5LnNoYXllbC5vcmciLAogICJ2ZXJzaW9uIjogMTgKfQ=="}
+    "45": {"version": "19", "sha256": "1li9glqlxcxsxv4v6l3ahk1i11rlkyg54zxl6d55vwl2ywka1yjd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBBY3Rpdml0aWVzIGJ1dHRvbiBmcm9tIHRoZSBzdGF0dXMgYmFyICh0aGUgaG90IGNvcm5lciBhbmQga2V5Ym9hcmQgc2hvcnRjdXQga2VlcHMgd29ya2luZykuIFRvIGRpc2FibGUgdG9wIGxlZnQgaG90IGNvcm5lciB1c2UgJ05vIFRvcGxlZnQgSG90IENvcm5lcicgZXh0ZW5zaW9uIFx1MjAxNCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTgvbm8tdG9wbGVmdC1ob3QtY29ybmVyLyAuIiwKICAibmFtZSI6ICJIaWRlIEFjdGl2aXRpZXMgQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96ZXRlbjMwL0hpZGVBY3Rpdml0aWVzIiwKICAidXVpZCI6ICJIaWRlX0FjdGl2aXRpZXNAc2hheS5zaGF5ZWwub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="},
+    "46": {"version": "19", "sha256": "1li9glqlxcxsxv4v6l3ahk1i11rlkyg54zxl6d55vwl2ywka1yjd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBBY3Rpdml0aWVzIGJ1dHRvbiBmcm9tIHRoZSBzdGF0dXMgYmFyICh0aGUgaG90IGNvcm5lciBhbmQga2V5Ym9hcmQgc2hvcnRjdXQga2VlcHMgd29ya2luZykuIFRvIGRpc2FibGUgdG9wIGxlZnQgaG90IGNvcm5lciB1c2UgJ05vIFRvcGxlZnQgSG90IENvcm5lcicgZXh0ZW5zaW9uIFx1MjAxNCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTgvbm8tdG9wbGVmdC1ob3QtY29ybmVyLyAuIiwKICAibmFtZSI6ICJIaWRlIEFjdGl2aXRpZXMgQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96ZXRlbjMwL0hpZGVBY3Rpdml0aWVzIiwKICAidXVpZCI6ICJIaWRlX0FjdGl2aXRpZXNAc2hheS5zaGF5ZWwub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="}
   }}
 , {"uuid": "openweather-extension@jenslody.de", "name": "OpenWeather", "pname": "openweather", "description": "Display weather information for any location on Earth in the GNOME Shell", "link": "https://extensions.gnome.org/extension/750/openweather/", "shell_version_map": {
     "38": {"version": "105", "sha256": "0mz63xcvd8v6kyak2n0fs0rd07vwy2j3mdbj9nzvcd71askdm5rd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgd2VhdGhlciBpbmZvcm1hdGlvbiBmb3IgYW55IGxvY2F0aW9uIG9uIEVhcnRoIGluIHRoZSBHTk9NRSBTaGVsbCIsCiAgImxvY2FsZWRpciI6ICIvdXNyL2xvY2FsL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiT3BlbldlYXRoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9za3Jld2JhbGwvb3BlbndlYXRoZXIiLAogICJ1dWlkIjogIm9wZW53ZWF0aGVyLWV4dGVuc2lvbkBqZW5zbG9keS5kZSIsCiAgInZlcnNpb24iOiAxMDUKfQ=="},
@@ -467,7 +496,8 @@
     "42": {"version": "33", "sha256": "181j95bhmrkvxvpam8ysrxzsaznfkgnn92xxfkg86lavvyl1alv5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBIaWJlcm5hdGUgYnV0dG9uIGluIFN0YXR1cyBtZW51LiBVc2luZyBBbHQgbW9kaWZpZXIsIHlvdSBjYW4gYWxzbyBzZWxlY3QgSHlicmlkIFNsZWVwIGluc3RlYWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGliZXJuYXRlLXN0YXR1cy1idXR0b24iLAogICJuYW1lIjogIkhpYmVybmF0ZSBTdGF0dXMgQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJlbGFuZ2UvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWhpYmVybmF0ZS1zdGF0dXMiLAogICJ1dWlkIjogImhpYmVybmF0ZS1zdGF0dXNAZHJvbWkiLAogICJ2ZXJzaW9uIjogMzMKfQ=="},
     "43": {"version": "36", "sha256": "1a1is1bp28ml1m5nfqf4vkzd682bcx1avqlii5qpcd9d8ykq1l68", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBIaWJlcm5hdGUgYnV0dG9uIGluIFN0YXR1cyBtZW51LiBVc2luZyBBbHQgbW9kaWZpZXIsIHlvdSBjYW4gYWxzbyBzZWxlY3QgSHlicmlkIFNsZWVwIGluc3RlYWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGliZXJuYXRlLXN0YXR1cy1idXR0b24iLAogICJuYW1lIjogIkhpYmVybmF0ZSBTdGF0dXMgQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcmVsYW5nZS9nbm9tZS1zaGVsbC1leHRlbnNpb24taGliZXJuYXRlLXN0YXR1cyIsCiAgInV1aWQiOiAiaGliZXJuYXRlLXN0YXR1c0Bkcm9taSIsCiAgInZlcnNpb24iOiAzNgp9"},
     "44": {"version": "36", "sha256": "1a1is1bp28ml1m5nfqf4vkzd682bcx1avqlii5qpcd9d8ykq1l68", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBIaWJlcm5hdGUgYnV0dG9uIGluIFN0YXR1cyBtZW51LiBVc2luZyBBbHQgbW9kaWZpZXIsIHlvdSBjYW4gYWxzbyBzZWxlY3QgSHlicmlkIFNsZWVwIGluc3RlYWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGliZXJuYXRlLXN0YXR1cy1idXR0b24iLAogICJuYW1lIjogIkhpYmVybmF0ZSBTdGF0dXMgQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcmVsYW5nZS9nbm9tZS1zaGVsbC1leHRlbnNpb24taGliZXJuYXRlLXN0YXR1cyIsCiAgInV1aWQiOiAiaGliZXJuYXRlLXN0YXR1c0Bkcm9taSIsCiAgInZlcnNpb24iOiAzNgp9"},
-    "45": {"version": "38", "sha256": "1vshgp9ai0x5si2867nih19af239sn5amiaza2y97q6k60rgw4qp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBIaWJlcm5hdGUgYnV0dG9uIGluIFN0YXR1cyBtZW51LiBVc2luZyBBbHQgbW9kaWZpZXIsIHlvdSBjYW4gYWxzbyBzZWxlY3QgSHlicmlkIFNsZWVwIGluc3RlYWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGliZXJuYXRlLXN0YXR1cy1idXR0b24iLAogICJuYW1lIjogIkhpYmVybmF0ZSBTdGF0dXMgQnV0dG9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmhpYmVybmF0ZS1zdGF0dXMtYnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FyZWxhbmdlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1oaWJlcm5hdGUtc3RhdHVzIiwKICAidXVpZCI6ICJoaWJlcm5hdGUtc3RhdHVzQGRyb21pIiwKICAidmVyc2lvbiI6IDM4Cn0="}
+    "45": {"version": "40", "sha256": "0r0c9rd1v2k3hnxizkzsc536d3c4f6fh6f8xmwhhg7xqzfw29y7k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBIaWJlcm5hdGUgYnV0dG9uIGluIFN0YXR1cyBtZW51LiBVc2luZyBBbHQgbW9kaWZpZXIsIHlvdSBjYW4gYWxzbyBzZWxlY3QgSHlicmlkIFNsZWVwIGluc3RlYWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGliZXJuYXRlLXN0YXR1cy1idXR0b24iLAogICJuYW1lIjogIkhpYmVybmF0ZSBTdGF0dXMgQnV0dG9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmhpYmVybmF0ZS1zdGF0dXMtYnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcmVsYW5nZS9nbm9tZS1zaGVsbC1leHRlbnNpb24taGliZXJuYXRlLXN0YXR1cyIsCiAgInV1aWQiOiAiaGliZXJuYXRlLXN0YXR1c0Bkcm9taSIsCiAgInZlcnNpb24iOiA0MAp9"},
+    "46": {"version": "40", "sha256": "0r0c9rd1v2k3hnxizkzsc536d3c4f6fh6f8xmwhhg7xqzfw29y7k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBIaWJlcm5hdGUgYnV0dG9uIGluIFN0YXR1cyBtZW51LiBVc2luZyBBbHQgbW9kaWZpZXIsIHlvdSBjYW4gYWxzbyBzZWxlY3QgSHlicmlkIFNsZWVwIGluc3RlYWQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGliZXJuYXRlLXN0YXR1cy1idXR0b24iLAogICJuYW1lIjogIkhpYmVybmF0ZSBTdGF0dXMgQnV0dG9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmhpYmVybmF0ZS1zdGF0dXMtYnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcmVsYW5nZS9nbm9tZS1zaGVsbC1leHRlbnNpb24taGliZXJuYXRlLXN0YXR1cyIsCiAgInV1aWQiOiAiaGliZXJuYXRlLXN0YXR1c0Bkcm9taSIsCiAgInZlcnNpb24iOiA0MAp9"}
   }}
 , {"uuid": "minimizeall@scharlessantos.org", "name": "Minimize All", "pname": "minimize-all", "description": "Minimize all windows in current workspace", "link": "https://extensions.gnome.org/extension/760/minimize-all/", "shell_version_map": {
     "38": {"version": "23", "sha256": "1qksj7cg740bbywfwal92mghpgyj89qz5knfaij5fnh8xkf4pvrz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1pbmltaXplIGFsbCB3aW5kb3dzIGluIGN1cnJlbnQgd29ya3NwYWNlIiwKICAibmFtZSI6ICJNaW5pbWl6ZSBBbGwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NjaGFybGVzc2FudG9zL21pbmltaXplYWxsIiwKICAidXVpZCI6ICJtaW5pbWl6ZWFsbEBzY2hhcmxlc3NhbnRvcy5vcmciLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
@@ -484,7 +514,8 @@
     "42": {"version": "28", "sha256": "0hmsvvg0skdj13bbbx29hjykranvhd9dir84c3z0kbz8wv8q5wx6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBmb3JjZSBxdWl0IGJ1dHRvbi5cbk9uIGFjY2lkZW50YWwgY2xpY2ssIHJpZ2h0IGNsaWNrIG9yIHByZXNzIFtFU0NdIHRvIHVuZG8uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnFAbWVnaCIsCiAgIm5hbWUiOiAiRm9yY2UgUXVpdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVnaHBya2gvZm9yY2UtcXVpdC8iLAogICJ1dWlkIjogImZxQG1lZ2giLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
     "43": {"version": "28", "sha256": "0hmsvvg0skdj13bbbx29hjykranvhd9dir84c3z0kbz8wv8q5wx6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBmb3JjZSBxdWl0IGJ1dHRvbi5cbk9uIGFjY2lkZW50YWwgY2xpY2ssIHJpZ2h0IGNsaWNrIG9yIHByZXNzIFtFU0NdIHRvIHVuZG8uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnFAbWVnaCIsCiAgIm5hbWUiOiAiRm9yY2UgUXVpdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVnaHBya2gvZm9yY2UtcXVpdC8iLAogICJ1dWlkIjogImZxQG1lZ2giLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
     "44": {"version": "28", "sha256": "0hmsvvg0skdj13bbbx29hjykranvhd9dir84c3z0kbz8wv8q5wx6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBmb3JjZSBxdWl0IGJ1dHRvbi5cbk9uIGFjY2lkZW50YWwgY2xpY2ssIHJpZ2h0IGNsaWNrIG9yIHByZXNzIFtFU0NdIHRvIHVuZG8uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnFAbWVnaCIsCiAgIm5hbWUiOiAiRm9yY2UgUXVpdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVnaHBya2gvZm9yY2UtcXVpdC8iLAogICJ1dWlkIjogImZxQG1lZ2giLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
-    "45": {"version": "31", "sha256": "0gh8k4lysjk1piq576kb4c9mj6syad7rn5nqrvgcmq818cgfvl29", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBmb3JjZSBxdWl0IGJ1dHRvbi5cbk9uIGFjY2lkZW50YWwgY2xpY2ssIHJpZ2h0IGNsaWNrIG9yIHByZXNzIFtFU0NdIHRvIHVuZG8uXG5DdXN0b21pemUgcG9zaXRpb24gYnkgdHdlYWtpbmcgbGluZSA1MCBvZiBleHRlbnNpb24uanMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcUBtZWdoIiwKICAibmFtZSI6ICJGb3JjZSBRdWl0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21lZ2hwcmtoL2ZvcmNlLXF1aXQvIiwKICAidXVpZCI6ICJmcUBtZWdoIiwKICAidmVyc2lvbiI6IDMxCn0="}
+    "45": {"version": "31", "sha256": "0gh8k4lysjk1piq576kb4c9mj6syad7rn5nqrvgcmq818cgfvl29", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBmb3JjZSBxdWl0IGJ1dHRvbi5cbk9uIGFjY2lkZW50YWwgY2xpY2ssIHJpZ2h0IGNsaWNrIG9yIHByZXNzIFtFU0NdIHRvIHVuZG8uXG5DdXN0b21pemUgcG9zaXRpb24gYnkgdHdlYWtpbmcgbGluZSA1MCBvZiBleHRlbnNpb24uanMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcUBtZWdoIiwKICAibmFtZSI6ICJGb3JjZSBRdWl0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21lZ2hwcmtoL2ZvcmNlLXF1aXQvIiwKICAidXVpZCI6ICJmcUBtZWdoIiwKICAidmVyc2lvbiI6IDMxCn0="},
+    "46": {"version": "32", "sha256": "02kjfddlbdvsck5ra9f1pzvsi3xl3d3dgp8i6dmgqh55lw359cyf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBmb3JjZSBxdWl0IGJ1dHRvbi5cbk9uIGFjY2lkZW50YWwgY2xpY2ssIHJpZ2h0IGNsaWNrIG9yIHByZXNzIFtFU0NdIHRvIHVuZG8uXG5DdXN0b21pemUgcG9zaXRpb24gYnkgdHdlYWtpbmcgbGluZSA1MCBvZiBleHRlbnNpb24uanMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmcUBtZWdoIiwKICAibmFtZSI6ICJGb3JjZSBRdWl0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21lZ2hwcmtoL2ZvcmNlLXF1aXQvIiwKICAidXVpZCI6ICJmcUBtZWdoIiwKICAidmVyc2lvbiI6IDMyCn0="}
   }}
 , {"uuid": "ProxySwitcher@flannaghan.com", "name": "Proxy Switcher", "pname": "proxy-switcher", "description": "Switches between the system proxy settings profiles defined in Network Settings.", "link": "https://extensions.gnome.org/extension/771/proxy-switcher/", "shell_version_map": {
     "38": {"version": "17", "sha256": "0ap55mxnhwzxzv95jfc4l3bz9v6z04yn53yf233vbjsdpx55vh38", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIGJldHdlZW4gdGhlIHN5c3RlbSBwcm94eSBzZXR0aW5ncyBwcm9maWxlcyBkZWZpbmVkIGluIE5ldHdvcmsgU2V0dGluZ3MuIiwKICAibmFtZSI6ICJQcm94eSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RvbWZsYW5uYWdoYW4vcHJveHktc3dpdGNoZXIiLAogICJ1dWlkIjogIlByb3h5U3dpdGNoZXJAZmxhbm5hZ2hhbi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
@@ -493,7 +524,8 @@
     "42": {"version": "17", "sha256": "0ap55mxnhwzxzv95jfc4l3bz9v6z04yn53yf233vbjsdpx55vh38", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIGJldHdlZW4gdGhlIHN5c3RlbSBwcm94eSBzZXR0aW5ncyBwcm9maWxlcyBkZWZpbmVkIGluIE5ldHdvcmsgU2V0dGluZ3MuIiwKICAibmFtZSI6ICJQcm94eSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RvbWZsYW5uYWdoYW4vcHJveHktc3dpdGNoZXIiLAogICJ1dWlkIjogIlByb3h5U3dpdGNoZXJAZmxhbm5hZ2hhbi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "43": {"version": "18", "sha256": "1bd2zjmb5h4iw9z9k07x92fmxgbj8psz44p4fa64k0kzxka10mzp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIGJldHdlZW4gdGhlIHN5c3RlbSBwcm94eSBzZXR0aW5ncyBwcm9maWxlcyBkZWZpbmVkIGluIE5ldHdvcmsgU2V0dGluZ3MuIiwKICAibmFtZSI6ICJQcm94eSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b21mbGFubmFnaGFuL3Byb3h5LXN3aXRjaGVyIiwKICAidXVpZCI6ICJQcm94eVN3aXRjaGVyQGZsYW5uYWdoYW4uY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "44": {"version": "19", "sha256": "0y7qx8kjwgpghl9w30xwmaxv9bafb26fhyx4lr52p4i1q2fi7y65", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIGJldHdlZW4gdGhlIHN5c3RlbSBwcm94eSBzZXR0aW5ncyBwcm9maWxlcyBkZWZpbmVkIGluIE5ldHdvcmsgU2V0dGluZ3MuIiwKICAibmFtZSI6ICJQcm94eSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b21mbGFubmFnaGFuL3Byb3h5LXN3aXRjaGVyIiwKICAidXVpZCI6ICJQcm94eVN3aXRjaGVyQGZsYW5uYWdoYW4uY29tIiwKICAidmVyc2lvbiI6IDE5Cn0="},
-    "45": {"version": "20", "sha256": "1d2zkxpg3fidr1q0v1dzxw3y0c24ixv712s3vzrylzn761jllcmd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIGJldHdlZW4gdGhlIHN5c3RlbSBwcm94eSBzZXR0aW5ncyBwcm9maWxlcyBkZWZpbmVkIGluIE5ldHdvcmsgU2V0dGluZ3MuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiUHJveHlTd2l0Y2hlckBmbGFubmFnaGFuLmNvbSIsCiAgIm5hbWUiOiAiUHJveHkgU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdG9tZmxhbm5hZ2hhbi9wcm94eS1zd2l0Y2hlciIsCiAgInV1aWQiOiAiUHJveHlTd2l0Y2hlckBmbGFubmFnaGFuLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"}
+    "45": {"version": "20", "sha256": "1d2zkxpg3fidr1q0v1dzxw3y0c24ixv712s3vzrylzn761jllcmd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIGJldHdlZW4gdGhlIHN5c3RlbSBwcm94eSBzZXR0aW5ncyBwcm9maWxlcyBkZWZpbmVkIGluIE5ldHdvcmsgU2V0dGluZ3MuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiUHJveHlTd2l0Y2hlckBmbGFubmFnaGFuLmNvbSIsCiAgIm5hbWUiOiAiUHJveHkgU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdG9tZmxhbm5hZ2hhbi9wcm94eS1zd2l0Y2hlciIsCiAgInV1aWQiOiAiUHJveHlTd2l0Y2hlckBmbGFubmFnaGFuLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"},
+    "46": {"version": "21", "sha256": "04xrx55qfkwa6p40r8dyvk72ac9wg6cw54gafmghrxaf2r6syxy2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIGJldHdlZW4gdGhlIHN5c3RlbSBwcm94eSBzZXR0aW5ncyBwcm9maWxlcyBkZWZpbmVkIGluIE5ldHdvcmsgU2V0dGluZ3MuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiUHJveHlTd2l0Y2hlckBmbGFubmFnaGFuLmNvbSIsCiAgIm5hbWUiOiAiUHJveHkgU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdG9tZmxhbm5hZ2hhbi9wcm94eS1zd2l0Y2hlciIsCiAgInV1aWQiOiAiUHJveHlTd2l0Y2hlckBmbGFubmFnaGFuLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"}
   }}
 , {"uuid": "clipboard-indicator@tudmotu.com", "name": "Clipboard Indicator", "pname": "clipboard-indicator", "description": "The most popular clipboard manager for GNOME, with over 1M downloads", "link": "https://extensions.gnome.org/extension/779/clipboard-indicator/", "shell_version_map": {
     "38": {"version": "37", "sha256": "1nd6ydp5wmd56zf3vwrsi2wflrw15krdbvqv2fkmla8rndallp1i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsaXBib2FyZCBNYW5hZ2VyIGV4dGVuc2lvbiBmb3IgR25vbWUtU2hlbGwgLSBBZGRzIGEgY2xpcGJvYXJkIGluZGljYXRvciB0byB0aGUgdG9wIHBhbmVsLCBhbmQgY2FjaGVzIGNsaXBib2FyZCBoaXN0b3J5LiIsCiAgIm5hbWUiOiAiQ2xpcGJvYXJkIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1R1ZG1vdHUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNsaXBib2FyZC1pbmRpY2F0b3IiLAogICJ1dWlkIjogImNsaXBib2FyZC1pbmRpY2F0b3JAdHVkbW90dS5jb20iLAogICJ2ZXJzaW9uIjogMzcKfQ=="},
@@ -501,7 +533,8 @@
     "42": {"version": "47", "sha256": "1w34xlbsphxp0k9smlcf8kq9ccq15yarnf265q0fbh6qc7lgfj4i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsaXBib2FyZCBNYW5hZ2VyIGV4dGVuc2lvbiBmb3IgR25vbWUtU2hlbGwgLSBBZGRzIGEgY2xpcGJvYXJkIGluZGljYXRvciB0byB0aGUgdG9wIHBhbmVsLCBhbmQgY2FjaGVzIGNsaXBib2FyZCBoaXN0b3J5LiIsCiAgIm5hbWUiOiAiQ2xpcGJvYXJkIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1R1ZG1vdHUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNsaXBib2FyZC1pbmRpY2F0b3IiLAogICJ1dWlkIjogImNsaXBib2FyZC1pbmRpY2F0b3JAdHVkbW90dS5jb20iLAogICJ2ZXJzaW9uIjogNDcKfQ=="},
     "43": {"version": "47", "sha256": "1w34xlbsphxp0k9smlcf8kq9ccq15yarnf265q0fbh6qc7lgfj4i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsaXBib2FyZCBNYW5hZ2VyIGV4dGVuc2lvbiBmb3IgR25vbWUtU2hlbGwgLSBBZGRzIGEgY2xpcGJvYXJkIGluZGljYXRvciB0byB0aGUgdG9wIHBhbmVsLCBhbmQgY2FjaGVzIGNsaXBib2FyZCBoaXN0b3J5LiIsCiAgIm5hbWUiOiAiQ2xpcGJvYXJkIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1R1ZG1vdHUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNsaXBib2FyZC1pbmRpY2F0b3IiLAogICJ1dWlkIjogImNsaXBib2FyZC1pbmRpY2F0b3JAdHVkbW90dS5jb20iLAogICJ2ZXJzaW9uIjogNDcKfQ=="},
     "44": {"version": "47", "sha256": "1w34xlbsphxp0k9smlcf8kq9ccq15yarnf265q0fbh6qc7lgfj4i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsaXBib2FyZCBNYW5hZ2VyIGV4dGVuc2lvbiBmb3IgR25vbWUtU2hlbGwgLSBBZGRzIGEgY2xpcGJvYXJkIGluZGljYXRvciB0byB0aGUgdG9wIHBhbmVsLCBhbmQgY2FjaGVzIGNsaXBib2FyZCBoaXN0b3J5LiIsCiAgIm5hbWUiOiAiQ2xpcGJvYXJkIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1R1ZG1vdHUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNsaXBib2FyZC1pbmRpY2F0b3IiLAogICJ1dWlkIjogImNsaXBib2FyZC1pbmRpY2F0b3JAdHVkbW90dS5jb20iLAogICJ2ZXJzaW9uIjogNDcKfQ=="},
-    "45": {"version": "57", "sha256": "1cpa30a9y6gw9k27njcb795j3vdwpx2jfivz858zs2k5n9wl9ypq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBtb3N0IHBvcHVsYXIgY2xpcGJvYXJkIG1hbmFnZXIgZm9yIEdOT01FLCB3aXRoIG92ZXIgMU0gZG93bmxvYWRzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY2xpcGJvYXJkLWluZGljYXRvciIsCiAgIm5hbWUiOiAiQ2xpcGJvYXJkIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbGlwYm9hcmQtaW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1R1ZG1vdHUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNsaXBib2FyZC1pbmRpY2F0b3IiLAogICJ1dWlkIjogImNsaXBib2FyZC1pbmRpY2F0b3JAdHVkbW90dS5jb20iLAogICJ2ZXJzaW9uIjogNTcKfQ=="}
+    "45": {"version": "57", "sha256": "1cpa30a9y6gw9k27njcb795j3vdwpx2jfivz858zs2k5n9wl9ypq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBtb3N0IHBvcHVsYXIgY2xpcGJvYXJkIG1hbmFnZXIgZm9yIEdOT01FLCB3aXRoIG92ZXIgMU0gZG93bmxvYWRzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY2xpcGJvYXJkLWluZGljYXRvciIsCiAgIm5hbWUiOiAiQ2xpcGJvYXJkIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbGlwYm9hcmQtaW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1R1ZG1vdHUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNsaXBib2FyZC1pbmRpY2F0b3IiLAogICJ1dWlkIjogImNsaXBib2FyZC1pbmRpY2F0b3JAdHVkbW90dS5jb20iLAogICJ2ZXJzaW9uIjogNTcKfQ=="},
+    "46": {"version": "61", "sha256": "115qvifq5sskpxjrs5srkqafs3cykwrv9yndvi75v7xyjri4lzrg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBtb3N0IHBvcHVsYXIgY2xpcGJvYXJkIG1hbmFnZXIgZm9yIEdOT01FLCB3aXRoIG92ZXIgMU0gZG93bmxvYWRzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY2xpcGJvYXJkLWluZGljYXRvciIsCiAgIm5hbWUiOiAiQ2xpcGJvYXJkIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbGlwYm9hcmQtaW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1R1ZG1vdHUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNsaXBib2FyZC1pbmRpY2F0b3IiLAogICJ1dWlkIjogImNsaXBib2FyZC1pbmRpY2F0b3JAdHVkbW90dS5jb20iLAogICJ2ZXJzaW9uIjogNjEKfQ=="}
   }}
 , {"uuid": "pidgin@muffinmad", "name": "Pidgin IM integration", "pname": "pidgin-im-integration", "description": "Integrate Pidgin IMs in the Gnome Shell message tray", "link": "https://extensions.gnome.org/extension/782/pidgin-im-integration/", "shell_version_map": {
     "40": {"version": "44", "sha256": "0s7xra49fbm5byh82ihwrz0b8bvli0bmsmwz58868bl42zb0l0zs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkludGVncmF0ZSBQaWRnaW4gSU1zIGluIHRoZSBHbm9tZSBTaGVsbCBtZXNzYWdlIHRyYXkiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tcGlkZ2luIiwKICAibmFtZSI6ICJQaWRnaW4gSU0gaW50ZWdyYXRpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucGlkZ2luIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL211ZmZpbm1hZC9waWRnaW4taW0tZ25vbWUtc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJwaWRnaW5AbXVmZmlubWFkIiwKICAidmVyc2lvbiI6IDQ0Cn0="},
@@ -546,7 +579,8 @@
     "42": {"version": "11", "sha256": "0j97fsw2qsac4dxyvc7cman33snkcvj0lm80gfs94w8cjlcvd4j3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBiZXR3ZWVuIGZvY3VzLWZvbGxvdy1tb3VzZSBhbmQgY2xpY2stdG8tZm9jdXMgbW9kZSIsCiAgIm5hbWUiOiAiU3dpdGNoIEZvY3VzIFR5cGUiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIlJvbWFubyBHaWFubmV0dGkgPHJvbWFuby5naWFubmV0dGlAZ21haWwuY29tPiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm1hbm8vZ3NlLXN3aXRjaC1mb2N1cy1tb2RlIiwKICAidXVpZCI6ICJTd2l0Y2hGb2N1c1R5cGVAcm9tYW5vLnJndHRpLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"},
     "43": {"version": "11", "sha256": "0j97fsw2qsac4dxyvc7cman33snkcvj0lm80gfs94w8cjlcvd4j3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBiZXR3ZWVuIGZvY3VzLWZvbGxvdy1tb3VzZSBhbmQgY2xpY2stdG8tZm9jdXMgbW9kZSIsCiAgIm5hbWUiOiAiU3dpdGNoIEZvY3VzIFR5cGUiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIlJvbWFubyBHaWFubmV0dGkgPHJvbWFuby5naWFubmV0dGlAZ21haWwuY29tPiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm1hbm8vZ3NlLXN3aXRjaC1mb2N1cy1tb2RlIiwKICAidXVpZCI6ICJTd2l0Y2hGb2N1c1R5cGVAcm9tYW5vLnJndHRpLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"},
     "44": {"version": "11", "sha256": "0j97fsw2qsac4dxyvc7cman33snkcvj0lm80gfs94w8cjlcvd4j3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBiZXR3ZWVuIGZvY3VzLWZvbGxvdy1tb3VzZSBhbmQgY2xpY2stdG8tZm9jdXMgbW9kZSIsCiAgIm5hbWUiOiAiU3dpdGNoIEZvY3VzIFR5cGUiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIlJvbWFubyBHaWFubmV0dGkgPHJvbWFuby5naWFubmV0dGlAZ21haWwuY29tPiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm1hbm8vZ3NlLXN3aXRjaC1mb2N1cy1tb2RlIiwKICAidXVpZCI6ICJTd2l0Y2hGb2N1c1R5cGVAcm9tYW5vLnJndHRpLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"},
-    "45": {"version": "15", "sha256": "129jajqndysqbj2mn4w0b2d7pw12il5rm9smjijk4qxfi195kci9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBiZXR3ZWVuIGZvY3VzLWZvbGxvdy1tb3VzZSBhbmQgY2xpY2stdG8tZm9jdXMgbW9kZSIsCiAgIm5hbWUiOiAiU3dpdGNoIEZvY3VzIFR5cGUiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIlJvbWFubyBHaWFubmV0dGkgPHJvbWFuby5naWFubmV0dGlAZ21haWwuY29tPiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zd2l0Y2hmb2N1c3R5cGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm1hbm8vZ3NlLXN3aXRjaC1mb2N1cy1tb2RlIiwKICAidXVpZCI6ICJTd2l0Y2hGb2N1c1R5cGVAcm9tYW5vLnJndHRpLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"}
+    "45": {"version": "16", "sha256": "1gg9kvr7gc6qm890q1g30zd9brn59dhzp0rdzr2kykl8dyyg6amv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBiZXR3ZWVuIGZvY3VzLWZvbGxvdy1tb3VzZSBhbmQgY2xpY2stdG8tZm9jdXMgbW9kZSIsCiAgIm5hbWUiOiAiU3dpdGNoIEZvY3VzIFR5cGUiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIlJvbWFubyBHaWFubmV0dGkgPHJvbWFuby5naWFubmV0dGlAZ21haWwuY29tPiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zd2l0Y2hmb2N1c3R5cGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JtYW5vL2dzZS1zd2l0Y2gtZm9jdXMtbW9kZSIsCiAgInV1aWQiOiAiU3dpdGNoRm9jdXNUeXBlQHJvbWFuby5yZ3R0aS5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="},
+    "46": {"version": "16", "sha256": "1gg9kvr7gc6qm890q1g30zd9brn59dhzp0rdzr2kykl8dyyg6amv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBiZXR3ZWVuIGZvY3VzLWZvbGxvdy1tb3VzZSBhbmQgY2xpY2stdG8tZm9jdXMgbW9kZSIsCiAgIm5hbWUiOiAiU3dpdGNoIEZvY3VzIFR5cGUiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIlJvbWFubyBHaWFubmV0dGkgPHJvbWFuby5naWFubmV0dGlAZ21haWwuY29tPiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zd2l0Y2hmb2N1c3R5cGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JtYW5vL2dzZS1zd2l0Y2gtZm9jdXMtbW9kZSIsCiAgInV1aWQiOiAiU3dpdGNoRm9jdXNUeXBlQHJvbWFuby5yZ3R0aS5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="}
   }}
 , {"uuid": "radio@hslbck.gmail.com", "name": "Internet Radio", "pname": "internet-radio", "description": "Listen to an Internet Radio Stream", "link": "https://extensions.gnome.org/extension/836/internet-radio/", "shell_version_map": {
     "38": {"version": "14", "sha256": "013wbf3npz7f438i39cd41s6whs4lgaigv4i1zais994n9ybw5y9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3RlbiB0byBhbiBJbnRlcm5ldCBSYWRpbyBTdHJlYW0iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyYWRpb0Boc2xiY2suZ21haWwuY29tIiwKICAibmFtZSI6ICJJbnRlcm5ldCBSYWRpbyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5yYWRpbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hzbGJjay9nbm9tZS1zaGVsbC1leHRlbnNpb24tcmFkaW8iLAogICJ1dWlkIjogInJhZGlvQGhzbGJjay5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
@@ -563,7 +597,8 @@
     "42": {"version": "52", "sha256": "1i59pp1wzd49fvz56rk2fq3zi0zkh8y2jf17ssgjcj1cn68x6k7r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIENQVSB0ZW1wZXJhdHVyZSwgZGlzayB0ZW1wZXJhdHVyZSwgdmlkZW8gY2FyZCB0ZW1wZXJhdHVyZSAoTlZJRElBL0NhdGFseXN0L0J1bWJsZWJlZSZOVklESUEpLCB2b2x0YWdlIGFuZCBmYW4gUlBNIChmb3JrZWQgZnJvbSB4dHJhbm9waGlsaXN0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1zZW5zb3JzKSIsCiAgImdldHRleHQtZG9tYWluIjogImZyZW9uIiwKICAibmFtZSI6ICJGcmVvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVXNoYWtvdlZhc2lsaWkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZyZW9uIiwKICAidXVpZCI6ICJmcmVvbkBVc2hha292VmFzaWxpaV9HaXRodWIueWFob28uY29tIiwKICAidmVyc2lvbiI6IDUyCn0="},
     "43": {"version": "52", "sha256": "1i59pp1wzd49fvz56rk2fq3zi0zkh8y2jf17ssgjcj1cn68x6k7r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIENQVSB0ZW1wZXJhdHVyZSwgZGlzayB0ZW1wZXJhdHVyZSwgdmlkZW8gY2FyZCB0ZW1wZXJhdHVyZSAoTlZJRElBL0NhdGFseXN0L0J1bWJsZWJlZSZOVklESUEpLCB2b2x0YWdlIGFuZCBmYW4gUlBNIChmb3JrZWQgZnJvbSB4dHJhbm9waGlsaXN0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1zZW5zb3JzKSIsCiAgImdldHRleHQtZG9tYWluIjogImZyZW9uIiwKICAibmFtZSI6ICJGcmVvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVXNoYWtvdlZhc2lsaWkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZyZW9uIiwKICAidXVpZCI6ICJmcmVvbkBVc2hha292VmFzaWxpaV9HaXRodWIueWFob28uY29tIiwKICAidmVyc2lvbiI6IDUyCn0="},
     "44": {"version": "52", "sha256": "1i59pp1wzd49fvz56rk2fq3zi0zkh8y2jf17ssgjcj1cn68x6k7r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIENQVSB0ZW1wZXJhdHVyZSwgZGlzayB0ZW1wZXJhdHVyZSwgdmlkZW8gY2FyZCB0ZW1wZXJhdHVyZSAoTlZJRElBL0NhdGFseXN0L0J1bWJsZWJlZSZOVklESUEpLCB2b2x0YWdlIGFuZCBmYW4gUlBNIChmb3JrZWQgZnJvbSB4dHJhbm9waGlsaXN0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1zZW5zb3JzKSIsCiAgImdldHRleHQtZG9tYWluIjogImZyZW9uIiwKICAibmFtZSI6ICJGcmVvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVXNoYWtvdlZhc2lsaWkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZyZW9uIiwKICAidXVpZCI6ICJmcmVvbkBVc2hha292VmFzaWxpaV9HaXRodWIueWFob28uY29tIiwKICAidmVyc2lvbiI6IDUyCn0="},
-    "45": {"version": "55", "sha256": "070wwvl153swnqzx8qgw79zjsg1z6844pkc4a1lfjfrsfnvcfgw5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIENQVSB0ZW1wZXJhdHVyZSwgZGlzayB0ZW1wZXJhdHVyZSwgdmlkZW8gY2FyZCB0ZW1wZXJhdHVyZSAoTlZJRElBL0NhdGFseXN0L0J1bWJsZWJlZSZOVklESUEpLCB2b2x0YWdlIGFuZCBmYW4gUlBNIChmb3JrZWQgZnJvbSB4dHJhbm9waGlsaXN0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1zZW5zb3JzKSIsCiAgImdldHRleHQtZG9tYWluIjogImZyZW9uIiwKICAibmFtZSI6ICJGcmVvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Vc2hha292VmFzaWxpaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tZnJlb24iLAogICJ1dWlkIjogImZyZW9uQFVzaGFrb3ZWYXNpbGlpX0dpdGh1Yi55YWhvby5jb20iLAogICJ2ZXJzaW9uIjogNTUKfQ=="}
+    "45": {"version": "56", "sha256": "1pakk3gnswg3z7lw2rw8vwz2p17aynyyaq7q8fn8qjkk1rhakbyd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIENQVSB0ZW1wZXJhdHVyZSwgZGlzayB0ZW1wZXJhdHVyZSwgdmlkZW8gY2FyZCB0ZW1wZXJhdHVyZSAoTlZJRElBL0NhdGFseXN0L0J1bWJsZWJlZSZOVklESUEpLCB2b2x0YWdlIGFuZCBmYW4gUlBNIChmb3JrZWQgZnJvbSB4dHJhbm9waGlsaXN0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1zZW5zb3JzKSIsCiAgImdldHRleHQtZG9tYWluIjogImZyZW9uIiwKICAibmFtZSI6ICJGcmVvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVXNoYWtvdlZhc2lsaWkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZyZW9uIiwKICAidXVpZCI6ICJmcmVvbkBVc2hha292VmFzaWxpaV9HaXRodWIueWFob28uY29tIiwKICAidmVyc2lvbiI6IDU2Cn0="},
+    "46": {"version": "56", "sha256": "1pakk3gnswg3z7lw2rw8vwz2p17aynyyaq7q8fn8qjkk1rhakbyd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIENQVSB0ZW1wZXJhdHVyZSwgZGlzayB0ZW1wZXJhdHVyZSwgdmlkZW8gY2FyZCB0ZW1wZXJhdHVyZSAoTlZJRElBL0NhdGFseXN0L0J1bWJsZWJlZSZOVklESUEpLCB2b2x0YWdlIGFuZCBmYW4gUlBNIChmb3JrZWQgZnJvbSB4dHJhbm9waGlsaXN0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1zZW5zb3JzKSIsCiAgImdldHRleHQtZG9tYWluIjogImZyZW9uIiwKICAibmFtZSI6ICJGcmVvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVXNoYWtvdlZhc2lsaWkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZyZW9uIiwKICAidXVpZCI6ICJmcmVvbkBVc2hha292VmFzaWxpaV9HaXRodWIueWFob28uY29tIiwKICAidmVyc2lvbiI6IDU2Cn0="}
   }}
 , {"uuid": "shell-volume-mixer@derhofbauer.at", "name": "Volume Mixer", "pname": "volume-mixer", "description": "Applet allowing separate configuration of PulseAudio mixers.\n\nShell Volume Mixer is an extension for GNOME Shell allowing separate configuration of PulseAudio devices and output switches. It features a profile switcher to quickly switch between pinned profiles and devices.\n\nMiddle mouse click on a slider mutes the selected stream.\n\nPlease file bugs and feature requests on the GitHub page.", "link": "https://extensions.gnome.org/extension/858/volume-mixer/", "shell_version_map": {
     "38": {"version": "39", "sha256": "1cnyapjvqri5k5m4nbcmbcx97b4akwv32h7ddav2ipahqh1lqqzj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGxldCBhbGxvd2luZyBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIG9mIFB1bHNlQXVkaW8gbWl4ZXJzLlxuXG5TaGVsbCBWb2x1bWUgTWl4ZXIgaXMgYW4gZXh0ZW5zaW9uIGZvciBHTk9NRSBTaGVsbCBhbGxvd2luZyBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIG9mIFB1bHNlQXVkaW8gZGV2aWNlcyBhbmQgb3V0cHV0IHN3aXRjaGVzLiBJdCBmZWF0dXJlcyBhIHByb2ZpbGUgc3dpdGNoZXIgdG8gcXVpY2tseSBzd2l0Y2ggYmV0d2VlbiBwaW5uZWQgcHJvZmlsZXMgYW5kIGRldmljZXMuXG5cbk1pZGRsZSBtb3VzZSBjbGljayBvbiBhIHNsaWRlciBtdXRlcyB0aGUgc2VsZWN0ZWQgc3RyZWFtLlxuXG5QbGVhc2UgZmlsZSBidWdzIGFuZCBmZWF0dXJlIHJlcXVlc3RzIG9uIHRoZSBHaXRIdWIgcGFnZS4iLAogICJuYW1lIjogIlZvbHVtZSBNaXhlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsZWhvL2dub21lLXNoZWxsLXZvbHVtZS1taXhlciIsCiAgInV1aWQiOiAic2hlbGwtdm9sdW1lLW1peGVyQGRlcmhvZmJhdWVyLmF0IiwKICAidmVyc2lvbiI6IDM5Cn0="},
@@ -581,7 +616,8 @@
     "42": {"version": "29", "sha256": "1qsqdasff8b3m8h4739y98jcmi5dvv0shq1f4mglkrfh6cx2ry23", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc2l6ZSB3aW5kb3dzIGZvciBHTk9NRSBTb2Z0d2FyZSBzY3JlZW5zaG90cyIsCiAgImV4dGVuc2lvbi1pZCI6ICJzY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvdCBXaW5kb3cgU2l6ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2NyZWVuc2hvdC13aW5kb3ctc2l6ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAic2NyZWVuc2hvdC13aW5kb3ctc2l6ZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
     "43": {"version": "30", "sha256": "036h42fs0yjgfjncvv97wpb2y860rhncfhz0znw4npj0gab5pn42", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc2l6ZSB3aW5kb3dzIGZvciBHTk9NRSBTb2Z0d2FyZSBzY3JlZW5zaG90cyIsCiAgImV4dGVuc2lvbi1pZCI6ICJzY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvdCBXaW5kb3cgU2l6ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2NyZWVuc2hvdC13aW5kb3ctc2l6ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAic2NyZWVuc2hvdC13aW5kb3ctc2l6ZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzAKfQ=="},
     "44": {"version": "32", "sha256": "1km4mvmv9350172fjihzmjd18l6ypm8hb22vz1k09xpcas01p448", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc2l6ZSB3aW5kb3dzIGZvciBHTk9NRSBTb2Z0d2FyZSBzY3JlZW5zaG90cyIsCiAgImV4dGVuc2lvbi1pZCI6ICJzY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvdCBXaW5kb3cgU2l6ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2NyZWVuc2hvdC13aW5kb3ctc2l6ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAic2NyZWVuc2hvdC13aW5kb3ctc2l6ZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "45": {"version": "35", "sha256": "0id9z143wm1xqb4ppvvwrfqrjm9qwaqgxz6hb37s0h2gvr5lamw2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc2l6ZSB3aW5kb3dzIGZvciBHTk9NRSBTb2Z0d2FyZSBzY3JlZW5zaG90cyIsCiAgImV4dGVuc2lvbi1pZCI6ICJzY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvdCBXaW5kb3cgU2l6ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2NyZWVuc2hvdC13aW5kb3ctc2l6ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAic2NyZWVuc2hvdC13aW5kb3ctc2l6ZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzUKfQ=="}
+    "45": {"version": "35", "sha256": "0id9z143wm1xqb4ppvvwrfqrjm9qwaqgxz6hb37s0h2gvr5lamw2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc2l6ZSB3aW5kb3dzIGZvciBHTk9NRSBTb2Z0d2FyZSBzY3JlZW5zaG90cyIsCiAgImV4dGVuc2lvbi1pZCI6ICJzY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvdCBXaW5kb3cgU2l6ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2NyZWVuc2hvdC13aW5kb3ctc2l6ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAic2NyZWVuc2hvdC13aW5kb3ctc2l6ZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzUKfQ=="},
+    "46": {"version": "37", "sha256": "0k0j0f3dm4brwngw8nv1svxhc23sw4n8w1vfax27gcmj8nga7jfm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc2l6ZSB3aW5kb3dzIGZvciBHTk9NRSBTb2Z0d2FyZSBzY3JlZW5zaG90cyIsCiAgImV4dGVuc2lvbi1pZCI6ICJzY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW5zaG90LXdpbmRvdy1zaXplciIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvdCBXaW5kb3cgU2l6ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2NyZWVuc2hvdC13aW5kb3ctc2l6ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAic2NyZWVuc2hvdC13aW5kb3ctc2l6ZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5nY2FtcGF4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzcKfQ=="}
   }}
 , {"uuid": "mailnag@pulb.github.com", "name": "Mailnag", "pname": "mailnag", "description": "Mail indicator (GMail, IMAP, POP) for GNOME.\n\nPlease note that this extension requires the mailnag daemon.\nInstall it from your distros package repositories or get it here:\nhttps://github.com/pulb/mailnag\n\nPlease also note that this version of the extension does not support avatars (as shown in the screenshot).\nIf you like to have avatar support install this extension from your distros package repositories or get a package from here:\nhttps://github.com/pulb/mailnag-gnome-shell\n\nIMPORTANT:\nI do not get notifications for user comments. Please always report bugs here:\nhttps://github.com/pulb/mailnag-gnome-shell/issues", "link": "https://extensions.gnome.org/extension/886/mailnag/", "shell_version_map": {
     "38": {"version": "20", "sha256": "15n816y34qlc7va72q75ngzw1my3n5j7xhg9a6dc0g8q4dd0g2r9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1haWwgaW5kaWNhdG9yIChHTWFpbCwgSU1BUCwgUE9QKSBmb3IgR05PTUUuXG5cblBsZWFzZSBub3RlIHRoYXQgdGhpcyBleHRlbnNpb24gcmVxdWlyZXMgdGhlIG1haWxuYWcgZGFlbW9uLlxuSW5zdGFsbCBpdCBmcm9tIHlvdXIgZGlzdHJvcyBwYWNrYWdlIHJlcG9zaXRvcmllcyBvciBnZXQgaXQgaGVyZTpcbmh0dHBzOi8vZ2l0aHViLmNvbS9wdWxiL21haWxuYWdcblxuUGxlYXNlIGFsc28gbm90ZSB0aGF0IHRoaXMgdmVyc2lvbiBvZiB0aGUgZXh0ZW5zaW9uIGRvZXMgbm90IHN1cHBvcnQgYXZhdGFycyAoYXMgc2hvd24gaW4gdGhlIHNjcmVlbnNob3QpLlxuSWYgeW91IGxpa2UgdG8gaGF2ZSBhdmF0YXIgc3VwcG9ydCBpbnN0YWxsIHRoaXMgZXh0ZW5zaW9uIGZyb20geW91ciBkaXN0cm9zIHBhY2thZ2UgcmVwb3NpdG9yaWVzIG9yIGdldCBhIHBhY2thZ2UgZnJvbSBoZXJlOlxuaHR0cHM6Ly9naXRodWIuY29tL3B1bGIvbWFpbG5hZy1nbm9tZS1zaGVsbFxuXG5JTVBPUlRBTlQ6XG5JIGRvIG5vdCBnZXQgbm90aWZpY2F0aW9ucyBmb3IgdXNlciBjb21tZW50cy4gUGxlYXNlIGFsd2F5cyByZXBvcnQgYnVncyBoZXJlOlxuaHR0cHM6Ly9naXRodWIuY29tL3B1bGIvbWFpbG5hZy1nbm9tZS1zaGVsbC9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJtYWlsbmFnLWdub21lLXNoZWxsIiwKICAibmFtZSI6ICJNYWlsbmFnIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1haWxuYWciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAibWFpbG5hZ0BwdWxiLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjAKfQ=="},
@@ -640,7 +676,8 @@
     "42": {"version": "13", "sha256": "00fxrq4abxqczkypvbqnw2z5q5adb6gdlz98c9hijj7s7jpp3xcy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaGluZyBhcHBzIGJvdGggZGlyZWN0IGFuZCB0cmFuc2NvZGVkIG5hbWUgKEVuZ2xpc2gsIFJ1c3NpYW4sIFVrcmFpbmlhbiBsYW5ncykiLAogICJuYW1lIjogIlRyYW5zY29kZSBBcHAgU2VhcmNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjEwIiwKICAgICIzLjEyIiwKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdGF0eWFuL2dub21lLWV4dGVuc2lvbi10cmFuc2NvZGUtc2VhcmNoYXBwIiwKICAidXVpZCI6ICJ0cmFuc2NvZGUtYXBwc2VhcmNoQGsua3VidXNoYUBnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "43": {"version": "13", "sha256": "00fxrq4abxqczkypvbqnw2z5q5adb6gdlz98c9hijj7s7jpp3xcy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaGluZyBhcHBzIGJvdGggZGlyZWN0IGFuZCB0cmFuc2NvZGVkIG5hbWUgKEVuZ2xpc2gsIFJ1c3NpYW4sIFVrcmFpbmlhbiBsYW5ncykiLAogICJuYW1lIjogIlRyYW5zY29kZSBBcHAgU2VhcmNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjEwIiwKICAgICIzLjEyIiwKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdGF0eWFuL2dub21lLWV4dGVuc2lvbi10cmFuc2NvZGUtc2VhcmNoYXBwIiwKICAidXVpZCI6ICJ0cmFuc2NvZGUtYXBwc2VhcmNoQGsua3VidXNoYUBnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "44": {"version": "13", "sha256": "00fxrq4abxqczkypvbqnw2z5q5adb6gdlz98c9hijj7s7jpp3xcy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaGluZyBhcHBzIGJvdGggZGlyZWN0IGFuZCB0cmFuc2NvZGVkIG5hbWUgKEVuZ2xpc2gsIFJ1c3NpYW4sIFVrcmFpbmlhbiBsYW5ncykiLAogICJuYW1lIjogIlRyYW5zY29kZSBBcHAgU2VhcmNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjEwIiwKICAgICIzLjEyIiwKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdGF0eWFuL2dub21lLWV4dGVuc2lvbi10cmFuc2NvZGUtc2VhcmNoYXBwIiwKICAidXVpZCI6ICJ0cmFuc2NvZGUtYXBwc2VhcmNoQGsua3VidXNoYUBnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
-    "45": {"version": "14", "sha256": "1kghh2aimzj3kjzmnh0mwigaz0wfz4x0aji4hk2kkjfhyd1cb5na", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaGluZyBhcHBzIGJvdGggZGlyZWN0IGFuZCB0cmFuc2NvZGVkIG5hbWUgKEVuZ2xpc2gsIFJ1c3NpYW4sIFVrcmFpbmlhbiBsYW5ncykiLAogICJuYW1lIjogIlRyYW5zY29kZSBBcHAgU2VhcmNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0YXR5YW4vZ25vbWUtZXh0ZW5zaW9uLXRyYW5zY29kZS1zZWFyY2hhcHAiLAogICJ1dWlkIjogInRyYW5zY29kZS1hcHBzZWFyY2hAay5rdWJ1c2hhQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxNAp9"}
+    "45": {"version": "16", "sha256": "0y911i7k3705ql9pymyrl47jwkmjg9f3hr5bxms59abdgs5ycpia", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaGluZyBhcHBzIGJvdGggZGlyZWN0IGFuZCB0cmFuc2NvZGVkIG5hbWUgKEVuZ2xpc2gsIFJ1c3NpYW4sIFVrcmFpbmlhbiBsYW5ncykiLAogICJuYW1lIjogIlRyYW5zY29kZSBBcHAgU2VhcmNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdGF0eWFuL2dub21lLWV4dGVuc2lvbi10cmFuc2NvZGUtc2VhcmNoYXBwIiwKICAidXVpZCI6ICJ0cmFuc2NvZGUtYXBwc2VhcmNoQGsua3VidXNoYUBnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="},
+    "46": {"version": "16", "sha256": "0y911i7k3705ql9pymyrl47jwkmjg9f3hr5bxms59abdgs5ycpia", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaGluZyBhcHBzIGJvdGggZGlyZWN0IGFuZCB0cmFuc2NvZGVkIG5hbWUgKEVuZ2xpc2gsIFJ1c3NpYW4sIFVrcmFpbmlhbiBsYW5ncykiLAogICJuYW1lIjogIlRyYW5zY29kZSBBcHAgU2VhcmNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdGF0eWFuL2dub21lLWV4dGVuc2lvbi10cmFuc2NvZGUtc2VhcmNoYXBwIiwKICAidXVpZCI6ICJ0cmFuc2NvZGUtYXBwc2VhcmNoQGsua3VidXNoYUBnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="}
   }}
 , {"uuid": "synaptic-button@fthx", "name": "Synaptic Button", "pname": "synaptic-button", "description": "NOT MAINTAINED ANYMORE\n\nButton that directly starts Synaptic package manager.\n\n For snap management without Snap Store, consider Snap Manager extension.", "link": "https://extensions.gnome.org/extension/938/synaptic-button/", "shell_version_map": {
     "38": {"version": "4", "sha256": "1l564ma14p1msykgl67836y7nf6wsnqcvch0kmc19mqasj5gp96z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5PVCBNQUlOVEFJTkVEIEFOWU1PUkVcblxuQnV0dG9uIHRoYXQgZGlyZWN0bHkgc3RhcnRzIFN5bmFwdGljIHBhY2thZ2UgbWFuYWdlci5cblxuIEZvciBzbmFwIG1hbmFnZW1lbnQgd2l0aG91dCBTbmFwIFN0b3JlLCBjb25zaWRlciBTbmFwIE1hbmFnZXIgZXh0ZW5zaW9uLiIsCiAgIm5hbWUiOiAiU3luYXB0aWMgQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9zeW5hcHRpYy1idXR0b24iLAogICJ1dWlkIjogInN5bmFwdGljLWJ1dHRvbkBmdGh4IiwKICAidmVyc2lvbiI6IDQKfQ=="}
@@ -663,7 +700,8 @@
     "42": {"version": "19", "sha256": "18l04cf2sv1wrsqcif5wsrmcsw6nsh7y459a7xjhl06hzigf5k0h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgd29ybGQgY2xvY2sgZm9yIHRoZSBwYW5lbFxuXG5JbnN0YWxsIGdub21lLWNsb2NrcyB0byBnZXQgc3RhcnRlZCEgKEZsYXRwYWsgb3IgU25hcCB2ZXJzaW9ucyBOT1Qgc3VwcG9ydGVkKSBcblxuR25vbWUgXHUyMjY0My4xND8gaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNjk3L3BhbmVsLXdvcmxkLWNsb2NrLyIsCiAgIm5hbWUiOiAiUGFuZWwgV29ybGQgQ2xvY2sgKExpdGUpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndvcmxkLWNsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJ3b3JsZF9jbG9ja19saXRlQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "43": {"version": "19", "sha256": "18l04cf2sv1wrsqcif5wsrmcsw6nsh7y459a7xjhl06hzigf5k0h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgd29ybGQgY2xvY2sgZm9yIHRoZSBwYW5lbFxuXG5JbnN0YWxsIGdub21lLWNsb2NrcyB0byBnZXQgc3RhcnRlZCEgKEZsYXRwYWsgb3IgU25hcCB2ZXJzaW9ucyBOT1Qgc3VwcG9ydGVkKSBcblxuR25vbWUgXHUyMjY0My4xND8gaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNjk3L3BhbmVsLXdvcmxkLWNsb2NrLyIsCiAgIm5hbWUiOiAiUGFuZWwgV29ybGQgQ2xvY2sgKExpdGUpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndvcmxkLWNsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJ3b3JsZF9jbG9ja19saXRlQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "44": {"version": "24", "sha256": "0s1d81fxndbsx1cnh05zpwhcr5p5gqniszm0c8q8vm1m1jm5d92g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgd29ybGQgY2xvY2sgZm9yIHRoZSBwYW5lbFxuXG5JbnN0YWxsIGdub21lLWNsb2NrcyB0byBnZXQgc3RhcnRlZCEgKEZsYXRwYWsgb3IgU25hcCB2ZXJzaW9ucyBOT1Qgc3VwcG9ydGVkKSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgIm5hbWUiOiAiUGFuZWwgV29ybGQgQ2xvY2sgKExpdGUpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndvcmxkLWNsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL05laS9nbm9tZS1zaGVsbC1leHRlbnNpb24tcGFuZWwtd29ybGQtY2xvY2stbGl0ZS8tL2lzc3VlcyIsCiAgInV1aWQiOiAid29ybGRfY2xvY2tfbGl0ZUBhaWxpbi5uZW11aSIsCiAgInZlcnNpb24iOiAyNAp9"},
-    "45": {"version": "28", "sha256": "1x89x8a6id3nb270lc8zg6bvqimwpan09041j9xdya7wh1mb9cv3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgd29ybGQgY2xvY2sgZm9yIHRoZSBwYW5lbC4gVGltZSB6b25lcy9DaXRpZXMvVVRDL0FvRS5cblxuSW5zdGFsbCBnbm9tZS1jbG9ja3MgdG8gZ2V0IHN0YXJ0ZWQhIChGbGF0cGFrIG9yIFNuYXAgdmVyc2lvbnMgTk9UIHN1cHBvcnRlZCkiLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJhaWxpbiIKICB9LAogICJuYW1lIjogIlBhbmVsIFdvcmxkIENsb2NrIChMaXRlKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3JsZC1jbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1wYW5lbC13b3JsZC1jbG9jay1saXRlLy0vaXNzdWVzIiwKICAidXVpZCI6ICJ3b3JsZF9jbG9ja19saXRlQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDI4Cn0="}
+    "45": {"version": "29", "sha256": "0vcrp9s23lav5443561lz973wfs58069zhh95q8l44mb3lvfai63", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgd29ybGQgY2xvY2sgZm9yIHRoZSBwYW5lbC4gVGltZSB6b25lcy9DaXRpZXMvVVRDL0FvRS5cblxuSW5zdGFsbCBnbm9tZS1jbG9ja3MgdG8gZ2V0IHN0YXJ0ZWQhIChGbGF0cGFrIG9yIFNuYXAgdmVyc2lvbnMgTk9UIHN1cHBvcnRlZCkiLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJhaWxpbiIKICB9LAogICJuYW1lIjogIlBhbmVsIFdvcmxkIENsb2NrIChMaXRlKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3JsZC1jbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1wYW5lbC13b3JsZC1jbG9jay1saXRlLy0vaXNzdWVzIiwKICAidXVpZCI6ICJ3b3JsZF9jbG9ja19saXRlQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDI5Cn0="},
+    "46": {"version": "29", "sha256": "0vcrp9s23lav5443561lz973wfs58069zhh95q8l44mb3lvfai63", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgd29ybGQgY2xvY2sgZm9yIHRoZSBwYW5lbC4gVGltZSB6b25lcy9DaXRpZXMvVVRDL0FvRS5cblxuSW5zdGFsbCBnbm9tZS1jbG9ja3MgdG8gZ2V0IHN0YXJ0ZWQhIChGbGF0cGFrIG9yIFNuYXAgdmVyc2lvbnMgTk9UIHN1cHBvcnRlZCkiLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJhaWxpbiIKICB9LAogICJuYW1lIjogIlBhbmVsIFdvcmxkIENsb2NrIChMaXRlKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3JsZC1jbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1wYW5lbC13b3JsZC1jbG9jay1saXRlLy0vaXNzdWVzIiwKICAidXVpZCI6ICJ3b3JsZF9jbG9ja19saXRlQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDI5Cn0="}
   }}
 , {"uuid": "dim-on-battery@nailfarmer.nailfarmer.com", "name": "Dim On Battery Power", "pname": "dim-on-battery-power", "description": "Automatically dims the screen when the machine is running on battery power.", "link": "https://extensions.gnome.org/extension/947/dim-on-battery-power/", "shell_version_map": {
     "38": {"version": "27", "sha256": "1lqfsm349bwhbidv5g9sagfncysng3qf0fypnf4sqp0gwaxx6yy4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgZGltcyB0aGUgc2NyZWVuIHdoZW4gdGhlIG1hY2hpbmUgaXMgcnVubmluZyBvbiBiYXR0ZXJ5IHBvd2VyLiIsCiAgIm5hbWUiOiAiRGltIE9uIEJhdHRlcnkgUG93ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMTQiLAogICAgIjMuMTYiLAogICAgIjMuMTgiLAogICAgIjMuMjAiLAogICAgIjMuMjIiLAogICAgIjMuMjQiLAogICAgIjMuMjYiLAogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9uYWlsZmFybWVyL2dub21lLXNoZWxsLWRpbS1vbi1iYXR0ZXJ5LWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZGltLW9uLWJhdHRlcnlAbmFpbGZhcm1lci5uYWlsZmFybWVyLmNvbSIsCiAgInZlcnNpb24iOiAyNwp9"},
@@ -688,7 +726,7 @@
     "41": {"version": "34", "sha256": "1bgj8w7qlz4kv70k6rjmm5f5rygn2n5fp0rd29jj1wfm50hfvzg1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIGxhdW5jaCBhcHBsaWNhdGlvbnMgcXVpY2tseSBieSB0eXBpbmdcblxuVXNlIHRoZSBjb25maWd1cmVkIGdsb2JhbCBob3RrZXkgKFN1cGVyK3cgYnkgZGVmYXVsdCkgdG8gb3BlbiBhIGxpc3Qgb2YgY3VycmVudCB3aW5kb3dzLiBUeXBlIGEgcGFydCBvZiB0aGUgbmFtZSBvciB0aXRsZSBvZiB0aGUgYXBwbGljYXRpb24gd2luZG93IHlvdSB3YW50IHRvIGFjdGl2YXRlIGFuZCBoaXQgZW50ZXIgb3IgY2xpY2sgb24gdGhlIGl0ZW0geW91IHdpc2ggdG8gYWN0aXZhdGUuIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGFtb25nIHRoZSBmaWx0ZXJlZCBzZWxlY3Rpb24gYW5kIHR5cGUgc2V2ZXJhbCBzcGFjZSBzZXBhcmF0ZWQgc2VhcmNoIHRlcm1zIHRvIGZpbHRlciBmdXJ0aGVyLiBJZiB5b3VyIHNlYXJjaCBtYXRjaGVzIGxhdW5jaGFibGUgYXBwcywgdGhvc2UgYXJlIHNob3duIGluIHRoZSBsaXN0IHRvby4gVXNlIEVzYyBvciBjbGljayBhbnl3aGVyZSBvdXRzaWRlIHRoZSBzd2l0Y2hlciB0byBjYW5jZWwuXG5cbllvdSBjYW4gY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIGFuZCBmdW5jdGlvbmFsaXR5IGluIHRoZSBwcmVmZXJlbmNlcy4iLAogICJuYW1lIjogIlN3aXRjaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGxhbmRhdS9zd2l0Y2hlciIsCiAgInV1aWQiOiAic3dpdGNoZXJAbGFuZGF1LmZpIiwKICAidmVyc2lvbiI6IDM0Cn0="},
     "42": {"version": "36", "sha256": "06ayifrf49bdf61y9502fcwf9937py3zlmcf1idlp1f3y18s5i8c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIGxhdW5jaCBhcHBsaWNhdGlvbnMgcXVpY2tseSBieSB0eXBpbmdcblxuVXNlIHRoZSBjb25maWd1cmVkIGdsb2JhbCBob3RrZXkgKFN1cGVyK3cgYnkgZGVmYXVsdCkgdG8gb3BlbiBhIGxpc3Qgb2YgY3VycmVudCB3aW5kb3dzLiBUeXBlIGEgcGFydCBvZiB0aGUgbmFtZSBvciB0aXRsZSBvZiB0aGUgYXBwbGljYXRpb24gd2luZG93IHlvdSB3YW50IHRvIGFjdGl2YXRlIGFuZCBoaXQgZW50ZXIgb3IgY2xpY2sgb24gdGhlIGl0ZW0geW91IHdpc2ggdG8gYWN0aXZhdGUuIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGFtb25nIHRoZSBmaWx0ZXJlZCBzZWxlY3Rpb24gYW5kIHR5cGUgc2V2ZXJhbCBzcGFjZSBzZXBhcmF0ZWQgc2VhcmNoIHRlcm1zIHRvIGZpbHRlciBmdXJ0aGVyLiBJZiB5b3VyIHNlYXJjaCBtYXRjaGVzIGxhdW5jaGFibGUgYXBwcywgdGhvc2UgYXJlIHNob3duIGluIHRoZSBsaXN0IHRvby4gVXNlIEVzYyBvciBjbGljayBhbnl3aGVyZSBvdXRzaWRlIHRoZSBzd2l0Y2hlciB0byBjYW5jZWwuXG5cbllvdSBjYW4gY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIGFuZCBmdW5jdGlvbmFsaXR5IGluIHRoZSBwcmVmZXJlbmNlcy4iLAogICJuYW1lIjogIlN3aXRjaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGxhbmRhdS9zd2l0Y2hlciIsCiAgInV1aWQiOiAic3dpdGNoZXJAbGFuZGF1LmZpIiwKICAidmVyc2lvbiI6IDM2Cn0="},
     "43": {"version": "37", "sha256": "19yrdy58hx1zwl0a7wjd0fwnfwsgsyqv9m1va8x5niynblajcs8g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIGxhdW5jaCBhcHBsaWNhdGlvbnMgcXVpY2tseSBieSB0eXBpbmdcblxuVXNlIHRoZSBjb25maWd1cmVkIGdsb2JhbCBob3RrZXkgKFN1cGVyK3cgYnkgZGVmYXVsdCkgdG8gb3BlbiBhIGxpc3Qgb2YgY3VycmVudCB3aW5kb3dzLiBUeXBlIGEgcGFydCBvZiB0aGUgbmFtZSBvciB0aXRsZSBvZiB0aGUgYXBwbGljYXRpb24gd2luZG93IHlvdSB3YW50IHRvIGFjdGl2YXRlIGFuZCBoaXQgZW50ZXIgb3IgY2xpY2sgb24gdGhlIGl0ZW0geW91IHdpc2ggdG8gYWN0aXZhdGUuIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGFtb25nIHRoZSBmaWx0ZXJlZCBzZWxlY3Rpb24gYW5kIHR5cGUgc2V2ZXJhbCBzcGFjZSBzZXBhcmF0ZWQgc2VhcmNoIHRlcm1zIHRvIGZpbHRlciBmdXJ0aGVyLiBJZiB5b3VyIHNlYXJjaCBtYXRjaGVzIGxhdW5jaGFibGUgYXBwcywgdGhvc2UgYXJlIHNob3duIGluIHRoZSBsaXN0IHRvby4gVXNlIEVzYyBvciBjbGljayBhbnl3aGVyZSBvdXRzaWRlIHRoZSBzd2l0Y2hlciB0byBjYW5jZWwuXG5cbllvdSBjYW4gY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIGFuZCBmdW5jdGlvbmFsaXR5IGluIHRoZSBwcmVmZXJlbmNlcy4iLAogICJuYW1lIjogIlN3aXRjaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGxhbmRhdS9zd2l0Y2hlciIsCiAgInV1aWQiOiAic3dpdGNoZXJAbGFuZGF1LmZpIiwKICAidmVyc2lvbiI6IDM3Cn0="},
-    "44": {"version": "38", "sha256": "0hyrhxnfrn58c8y7f181amjwaracgp4a512p2ccpjrksw6n4vgzc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIGxhdW5jaCBhcHBsaWNhdGlvbnMgcXVpY2tseSBieSB0eXBpbmdcblxuVXNlIHRoZSBjb25maWd1cmVkIGdsb2JhbCBob3RrZXkgKFN1cGVyK3cgYnkgZGVmYXVsdCkgdG8gb3BlbiBhIGxpc3Qgb2YgY3VycmVudCB3aW5kb3dzLiBUeXBlIGEgcGFydCBvZiB0aGUgbmFtZSBvciB0aXRsZSBvZiB0aGUgYXBwbGljYXRpb24gd2luZG93IHlvdSB3YW50IHRvIGFjdGl2YXRlIGFuZCBoaXQgZW50ZXIgb3IgY2xpY2sgb24gdGhlIGl0ZW0geW91IHdpc2ggdG8gYWN0aXZhdGUuIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGFtb25nIHRoZSBmaWx0ZXJlZCBzZWxlY3Rpb24gYW5kIHR5cGUgc2V2ZXJhbCBzcGFjZSBzZXBhcmF0ZWQgc2VhcmNoIHRlcm1zIHRvIGZpbHRlciBmdXJ0aGVyLiBJZiB5b3VyIHNlYXJjaCBtYXRjaGVzIGxhdW5jaGFibGUgYXBwcywgdGhvc2UgYXJlIHNob3duIGluIHRoZSBsaXN0IHRvby4gVXNlIEVzYyBvciBjbGljayBhbnl3aGVyZSBvdXRzaWRlIHRoZSBzd2l0Y2hlciB0byBjYW5jZWwuXG5cbllvdSBjYW4gY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIGFuZCBmdW5jdGlvbmFsaXR5IGluIHRoZSBwcmVmZXJlbmNlcy4iLAogICJuYW1lIjogIlN3aXRjaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGxhbmRhdS9zd2l0Y2hlciIsCiAgInV1aWQiOiAic3dpdGNoZXJAbGFuZGF1LmZpIiwKICAidmVyc2lvbiI6IDM4Cn0="},
+    "44": {"version": "40", "sha256": "1nl4i9i064dch7mwn8xnmhh69ji7r6vl4zhmyxw4pk5ihrgcwkcj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIGxhdW5jaCBhcHBsaWNhdGlvbnMgcXVpY2tseSBieSB0eXBpbmdcblxuVXNlIHRoZSBjb25maWd1cmVkIGdsb2JhbCBob3RrZXkgKFN1cGVyK3cgYnkgZGVmYXVsdCkgdG8gb3BlbiBhIGxpc3Qgb2YgY3VycmVudCB3aW5kb3dzLiBUeXBlIGEgcGFydCBvZiB0aGUgbmFtZSBvciB0aXRsZSBvZiB0aGUgYXBwbGljYXRpb24gd2luZG93IHlvdSB3YW50IHRvIGFjdGl2YXRlIGFuZCBoaXQgZW50ZXIgb3IgY2xpY2sgb24gdGhlIGl0ZW0geW91IHdpc2ggdG8gYWN0aXZhdGUuIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGFtb25nIHRoZSBmaWx0ZXJlZCBzZWxlY3Rpb24gYW5kIHR5cGUgc2V2ZXJhbCBzcGFjZSBzZXBhcmF0ZWQgc2VhcmNoIHRlcm1zIHRvIGZpbHRlciBmdXJ0aGVyLiBJZiB5b3VyIHNlYXJjaCBtYXRjaGVzIGxhdW5jaGFibGUgYXBwcywgdGhvc2UgYXJlIHNob3duIGluIHRoZSBsaXN0IHRvby4gVXNlIEVzYyBvciBjbGljayBhbnl3aGVyZSBvdXRzaWRlIHRoZSBzd2l0Y2hlciB0byBjYW5jZWwuXG5cbllvdSBjYW4gY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIGFuZCBmdW5jdGlvbmFsaXR5IGluIHRoZSBwcmVmZXJlbmNlcy4iLAogICJuYW1lIjogIlN3aXRjaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGxhbmRhdS9zd2l0Y2hlciIsCiAgInV1aWQiOiAic3dpdGNoZXJAbGFuZGF1LmZpIiwKICAidmVyc2lvbiI6IDQwCn0="},
     "45": {"version": "39", "sha256": "150j5d9pk20rbhwsmdbn382973w2v6hc9j017b9crxam70rww3qk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIGxhdW5jaCBhcHBsaWNhdGlvbnMgcXVpY2tseSBieSB0eXBpbmdcblxuVXNlIHRoZSBjb25maWd1cmVkIGdsb2JhbCBob3RrZXkgKFN1cGVyK3cgYnkgZGVmYXVsdCkgdG8gb3BlbiBhIGxpc3Qgb2YgY3VycmVudCB3aW5kb3dzLiBUeXBlIGEgcGFydCBvZiB0aGUgbmFtZSBvciB0aXRsZSBvZiB0aGUgYXBwbGljYXRpb24gd2luZG93IHlvdSB3YW50IHRvIGFjdGl2YXRlIGFuZCBoaXQgZW50ZXIgb3IgY2xpY2sgb24gdGhlIGl0ZW0geW91IHdpc2ggdG8gYWN0aXZhdGUuIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGFtb25nIHRoZSBmaWx0ZXJlZCBzZWxlY3Rpb24gYW5kIHR5cGUgc2V2ZXJhbCBzcGFjZSBzZXBhcmF0ZWQgc2VhcmNoIHRlcm1zIHRvIGZpbHRlciBmdXJ0aGVyLiBJZiB5b3VyIHNlYXJjaCBtYXRjaGVzIGxhdW5jaGFibGUgYXBwcywgdGhvc2UgYXJlIHNob3duIGluIHRoZSBsaXN0IHRvby4gVXNlIEVzYyBvciBjbGljayBhbnl3aGVyZSBvdXRzaWRlIHRoZSBzd2l0Y2hlciB0byBjYW5jZWwuXG5cbllvdSBjYW4gY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVsIGFuZCBmdW5jdGlvbmFsaXR5IGluIHRoZSBwcmVmZXJlbmNlcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzd2l0Y2hlciIsCiAgIm5hbWUiOiAiU3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsbGFuZGF1L3N3aXRjaGVyIiwKICAidXVpZCI6ICJzd2l0Y2hlckBsYW5kYXUuZmkiLAogICJ2ZXJzaW9uIjogMzkKfQ=="}
   }}
 , {"uuid": "keyboard_modifiers_status@sneetsher", "name": "Keyboard Modifiers Status", "pname": "keyboard-modifiers-status", "description": "Shows keyboard modifiers status. It's useful when sticky keys are active.", "link": "https://extensions.gnome.org/extension/975/keyboard-modifiers-status/", "shell_version_map": {
@@ -698,13 +736,15 @@
     "42": {"version": "17", "sha256": "18dx4zwj3ldcwqw3z1f8x4z2q9g7vp53cl7v6lw4dvz9kv47swbi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGtleWJvYXJkIG1vZGlmaWVycyBzdGF0dXMuIEl0J3MgdXNlZnVsIHdoZW4gc3RpY2t5IGtleXMgYXJlIGFjdGl2ZS4iLAogICJuYW1lIjogIktleWJvYXJkIE1vZGlmaWVycyBTdGF0dXMiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic25lZXRzaGVyQGxvY2FsaG9zdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc25lZXRzaGVyL0tleWJvYXJkLU1vZGlmaWVycy1TdGF0dXMiLAogICJ1dWlkIjogImtleWJvYXJkX21vZGlmaWVyc19zdGF0dXNAc25lZXRzaGVyIiwKICAidmVyc2lvbiI6IDE3Cn0="},
     "43": {"version": "17", "sha256": "18dx4zwj3ldcwqw3z1f8x4z2q9g7vp53cl7v6lw4dvz9kv47swbi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGtleWJvYXJkIG1vZGlmaWVycyBzdGF0dXMuIEl0J3MgdXNlZnVsIHdoZW4gc3RpY2t5IGtleXMgYXJlIGFjdGl2ZS4iLAogICJuYW1lIjogIktleWJvYXJkIE1vZGlmaWVycyBTdGF0dXMiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic25lZXRzaGVyQGxvY2FsaG9zdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc25lZXRzaGVyL0tleWJvYXJkLU1vZGlmaWVycy1TdGF0dXMiLAogICJ1dWlkIjogImtleWJvYXJkX21vZGlmaWVyc19zdGF0dXNAc25lZXRzaGVyIiwKICAidmVyc2lvbiI6IDE3Cn0="},
     "44": {"version": "17", "sha256": "18dx4zwj3ldcwqw3z1f8x4z2q9g7vp53cl7v6lw4dvz9kv47swbi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGtleWJvYXJkIG1vZGlmaWVycyBzdGF0dXMuIEl0J3MgdXNlZnVsIHdoZW4gc3RpY2t5IGtleXMgYXJlIGFjdGl2ZS4iLAogICJuYW1lIjogIktleWJvYXJkIE1vZGlmaWVycyBTdGF0dXMiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic25lZXRzaGVyQGxvY2FsaG9zdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc25lZXRzaGVyL0tleWJvYXJkLU1vZGlmaWVycy1TdGF0dXMiLAogICJ1dWlkIjogImtleWJvYXJkX21vZGlmaWVyc19zdGF0dXNAc25lZXRzaGVyIiwKICAidmVyc2lvbiI6IDE3Cn0="},
-    "45": {"version": "21", "sha256": "0qfq1s2i0c6h8n7f2n8ir5aa6xdp90afkmaspnpsxvlsm0qnx8x1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGtleWJvYXJkIG1vZGlmaWVycyBzdGF0dXMuIEl0J3MgdXNlZnVsIHdoZW4gc3RpY2t5IGtleXMgYXJlIGFjdGl2ZS4iLAogICJuYW1lIjogIktleWJvYXJkIE1vZGlmaWVycyBTdGF0dXMiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic25lZXRzaGVyQGxvY2FsaG9zdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc25lZXRzaGVyL0tleWJvYXJkLU1vZGlmaWVycy1TdGF0dXMiLAogICJ1dWlkIjogImtleWJvYXJkX21vZGlmaWVyc19zdGF0dXNAc25lZXRzaGVyIiwKICAidmVyc2lvbiI6IDIxCn0="}
+    "45": {"version": "21", "sha256": "0qfq1s2i0c6h8n7f2n8ir5aa6xdp90afkmaspnpsxvlsm0qnx8x1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGtleWJvYXJkIG1vZGlmaWVycyBzdGF0dXMuIEl0J3MgdXNlZnVsIHdoZW4gc3RpY2t5IGtleXMgYXJlIGFjdGl2ZS4iLAogICJuYW1lIjogIktleWJvYXJkIE1vZGlmaWVycyBTdGF0dXMiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic25lZXRzaGVyQGxvY2FsaG9zdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc25lZXRzaGVyL0tleWJvYXJkLU1vZGlmaWVycy1TdGF0dXMiLAogICJ1dWlkIjogImtleWJvYXJkX21vZGlmaWVyc19zdGF0dXNAc25lZXRzaGVyIiwKICAidmVyc2lvbiI6IDIxCn0="},
+    "46": {"version": "21", "sha256": "0qfq1s2i0c6h8n7f2n8ir5aa6xdp90afkmaspnpsxvlsm0qnx8x1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGtleWJvYXJkIG1vZGlmaWVycyBzdGF0dXMuIEl0J3MgdXNlZnVsIHdoZW4gc3RpY2t5IGtleXMgYXJlIGFjdGl2ZS4iLAogICJuYW1lIjogIktleWJvYXJkIE1vZGlmaWVycyBTdGF0dXMiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic25lZXRzaGVyQGxvY2FsaG9zdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc25lZXRzaGVyL0tleWJvYXJkLU1vZGlmaWVycy1TdGF0dXMiLAogICJ1dWlkIjogImtleWJvYXJkX21vZGlmaWVyc19zdGF0dXNAc25lZXRzaGVyIiwKICAidmVyc2lvbiI6IDIxCn0="}
   }}
 , {"uuid": "thinkpadthermal@moonlight.drive.vk.gmail.com", "name": "ThinkPad Thermal", "pname": "thinkpad-thermal", "description": "ThinkPad thermal monitor, display ThinkPad thermal and fan status using /proc/acpi/ibm/thermal and /proc/acpi/ibm/fan.", "link": "https://extensions.gnome.org/extension/986/thinkpad-thermal/", "shell_version_map": {
     "42": {"version": "17", "sha256": "0q8ah8ms6iv24fyl684hbivbnw5d9k4as991zng9k9ywsjlpp40d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW5rUGFkIHRoZXJtYWwgbW9uaXRvciwgZGlzcGxheSBUaGlua1BhZCB0aGVybWFsIGFuZCBmYW4gc3RhdHVzIHVzaW5nIC9wcm9jL2FjcGkvaWJtL3RoZXJtYWwgYW5kIC9wcm9jL2FjcGkvaWJtL2Zhbi4iLAogICJuYW1lIjogIlRoaW5rUGFkIFRoZXJtYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mbXVqYWtpdHovdGhpbmtwYWQtdGhlcm1hbCIsCiAgInV1aWQiOiAidGhpbmtwYWR0aGVybWFsQG1vb25saWdodC5kcml2ZS52ay5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "43": {"version": "17", "sha256": "0q8ah8ms6iv24fyl684hbivbnw5d9k4as991zng9k9ywsjlpp40d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW5rUGFkIHRoZXJtYWwgbW9uaXRvciwgZGlzcGxheSBUaGlua1BhZCB0aGVybWFsIGFuZCBmYW4gc3RhdHVzIHVzaW5nIC9wcm9jL2FjcGkvaWJtL3RoZXJtYWwgYW5kIC9wcm9jL2FjcGkvaWJtL2Zhbi4iLAogICJuYW1lIjogIlRoaW5rUGFkIFRoZXJtYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mbXVqYWtpdHovdGhpbmtwYWQtdGhlcm1hbCIsCiAgInV1aWQiOiAidGhpbmtwYWR0aGVybWFsQG1vb25saWdodC5kcml2ZS52ay5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "44": {"version": "17", "sha256": "0q8ah8ms6iv24fyl684hbivbnw5d9k4as991zng9k9ywsjlpp40d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW5rUGFkIHRoZXJtYWwgbW9uaXRvciwgZGlzcGxheSBUaGlua1BhZCB0aGVybWFsIGFuZCBmYW4gc3RhdHVzIHVzaW5nIC9wcm9jL2FjcGkvaWJtL3RoZXJtYWwgYW5kIC9wcm9jL2FjcGkvaWJtL2Zhbi4iLAogICJuYW1lIjogIlRoaW5rUGFkIFRoZXJtYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mbXVqYWtpdHovdGhpbmtwYWQtdGhlcm1hbCIsCiAgInV1aWQiOiAidGhpbmtwYWR0aGVybWFsQG1vb25saWdodC5kcml2ZS52ay5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
-    "45": {"version": "26", "sha256": "0pym8nq0kfvacqvzisk3q0045jh8s1f4xkjylzsigk0abmqci937", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW5rUGFkIHRoZXJtYWwgbW9uaXRvciwgZGlzcGxheSBUaGlua1BhZCB0aGVybWFsIGFuZCBmYW4gc3RhdHVzIHVzaW5nIC9wcm9jL2FjcGkvaWJtL3RoZXJtYWwgYW5kIC9wcm9jL2FjcGkvaWJtL2Zhbi4iLAogICJuYW1lIjogIlRoaW5rUGFkIFRoZXJtYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZm11amFraXR6L3RoaW5rcGFkLXRoZXJtYWwiLAogICJ1dWlkIjogInRoaW5rcGFkdGhlcm1hbEBtb29ubGlnaHQuZHJpdmUudmsuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDI2Cn0="}
+    "45": {"version": "26", "sha256": "0pym8nq0kfvacqvzisk3q0045jh8s1f4xkjylzsigk0abmqci937", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW5rUGFkIHRoZXJtYWwgbW9uaXRvciwgZGlzcGxheSBUaGlua1BhZCB0aGVybWFsIGFuZCBmYW4gc3RhdHVzIHVzaW5nIC9wcm9jL2FjcGkvaWJtL3RoZXJtYWwgYW5kIC9wcm9jL2FjcGkvaWJtL2Zhbi4iLAogICJuYW1lIjogIlRoaW5rUGFkIFRoZXJtYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZm11amFraXR6L3RoaW5rcGFkLXRoZXJtYWwiLAogICJ1dWlkIjogInRoaW5rcGFkdGhlcm1hbEBtb29ubGlnaHQuZHJpdmUudmsuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDI2Cn0="},
+    "46": {"version": "27", "sha256": "1j94q6jvrgahgazdfhm1jfhhnmlmq4052h5h78bs28gvpcjalwaz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW5rUGFkIHRoZXJtYWwgbW9uaXRvciwgZGlzcGxheSBUaGlua1BhZCB0aGVybWFsIGFuZCBmYW4gc3RhdHVzIHVzaW5nIC9wcm9jL2FjcGkvaWJtL3RoZXJtYWwgYW5kIC9wcm9jL2FjcGkvaWJtL2Zhbi4iLAogICJuYW1lIjogIlRoaW5rUGFkIFRoZXJtYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZm11amFraXR6L3RoaW5rcGFkLXRoZXJtYWwiLAogICJ1dWlkIjogInRoaW5rcGFkdGhlcm1hbEBtb29ubGlnaHQuZHJpdmUudmsuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDI3Cn0="}
   }}
 , {"uuid": "harddiskled@bijidroid.gmail.com", "name": "Harddisk LED", "pname": "harddisk-led", "description": "Show harddisk activity (IO speed read/write and LED). Click to change led size", "link": "https://extensions.gnome.org/extension/988/harddisk-led/", "shell_version_map": {
     "38": {"version": "34", "sha256": "039bkjfr4ga2n3cj8pqpkvqpbspyk23f1dnv15sbq1il2zjqnm4i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgaGFyZGRpc2sgYWN0aXZpdHkgKElPIHNwZWVkIHJlYWQvd3JpdGUgYW5kIExFRCkuIENsaWNrIHRvIGNoYW5nZSBsZWQgc2l6ZSIsCiAgIm5hbWUiOiAiSGFyZGRpc2sgTEVEIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iaWppL2hhcmRkaXNrbGVkIiwKICAidXVpZCI6ICJoYXJkZGlza2xlZEBiaWppZHJvaWQuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM0Cn0="},
@@ -740,7 +780,8 @@
     "42": {"version": "51", "sha256": "1qz9q8vwdwir5v3idxz8y756aps8lhsdj0yp00lj2n5x55hgrh99", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEFyY2ggTGludXggYW5kIEdOT01FIFNoZWxsLlxuKiogTm90ZSA6IHlvdSBub3cgbmVlZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHBhY21hbi1jb250cmliIHRvIHVzZSB0aGUgY2hlY2t1cGRhdGVzIHNjcmlwdC4gKipcbiAgQ2FuIHN1cHBvcnQgQVVSIG9yIG90aGVyIGRpc3Ryb3MgYnkgY2hhbmdpbmcgY29tbWFuZCB1c2VkIHRvIGNoZWNrIGZvciBhbmQgYXBwbHkgdXBkYXRlcy5cbiBTZWUgUkVBRE1FIGFib3V0IEdub21lIENvbnNvbGUiLAogICJuYW1lIjogIkFyY2ggTGludXggVXBkYXRlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmFwaGFlbFJvY2hldC9hcmNoLXVwZGF0ZSIsCiAgInV1aWQiOiAiYXJjaC11cGRhdGVAUmFwaGFlbFJvY2hldCIsCiAgInZlcnNpb24iOiA1MQp9"},
     "43": {"version": "51", "sha256": "1qz9q8vwdwir5v3idxz8y756aps8lhsdj0yp00lj2n5x55hgrh99", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEFyY2ggTGludXggYW5kIEdOT01FIFNoZWxsLlxuKiogTm90ZSA6IHlvdSBub3cgbmVlZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHBhY21hbi1jb250cmliIHRvIHVzZSB0aGUgY2hlY2t1cGRhdGVzIHNjcmlwdC4gKipcbiAgQ2FuIHN1cHBvcnQgQVVSIG9yIG90aGVyIGRpc3Ryb3MgYnkgY2hhbmdpbmcgY29tbWFuZCB1c2VkIHRvIGNoZWNrIGZvciBhbmQgYXBwbHkgdXBkYXRlcy5cbiBTZWUgUkVBRE1FIGFib3V0IEdub21lIENvbnNvbGUiLAogICJuYW1lIjogIkFyY2ggTGludXggVXBkYXRlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmFwaGFlbFJvY2hldC9hcmNoLXVwZGF0ZSIsCiAgInV1aWQiOiAiYXJjaC11cGRhdGVAUmFwaGFlbFJvY2hldCIsCiAgInZlcnNpb24iOiA1MQp9"},
     "44": {"version": "53", "sha256": "09vkzz2rkjaf0z3snpkd67brq2kimq5l2clyhyfvyp2wf71f5zp6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEFyY2ggTGludXggYW5kIEdOT01FIFNoZWxsLlxuKiogTm90ZSA6IHlvdSBub3cgbmVlZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHBhY21hbi1jb250cmliIHRvIHVzZSB0aGUgY2hlY2t1cGRhdGVzIHNjcmlwdC4gKipcbiAgQ2FuIHN1cHBvcnQgQVVSIG9yIG90aGVyIGRpc3Ryb3MgYnkgY2hhbmdpbmcgY29tbWFuZCB1c2VkIHRvIGNoZWNrIGZvciBhbmQgYXBwbHkgdXBkYXRlcy5cbiBTZWUgUkVBRE1FIGFib3V0IEdub21lIENvbnNvbGUiLAogICJuYW1lIjogIkFyY2ggTGludXggVXBkYXRlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmFwaGFlbFJvY2hldC9hcmNoLXVwZGF0ZSIsCiAgInV1aWQiOiAiYXJjaC11cGRhdGVAUmFwaGFlbFJvY2hldCIsCiAgInZlcnNpb24iOiA1Mwp9"},
-    "45": {"version": "57", "sha256": "1g66g1abf0hsshihc76n3qznfd476sxg8yrj8h279cvqh8q6xgqx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEFyY2ggTGludXggYW5kIEdOT01FIFNoZWxsLlxuKiogTm90ZSA6IHlvdSBub3cgbmVlZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHBhY21hbi1jb250cmliIHRvIHVzZSB0aGUgY2hlY2t1cGRhdGVzIHNjcmlwdC4gKipcbiAgQ2FuIHN1cHBvcnQgQVVSIG9yIG90aGVyIGRpc3Ryb3MgYnkgY2hhbmdpbmcgY29tbWFuZCB1c2VkIHRvIGNoZWNrIGZvciBhbmQgYXBwbHkgdXBkYXRlcy5cbiBTZWUgUkVBRE1FIGFib3V0IEdub21lIENvbnNvbGUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcmNoLXVwZGF0ZSIsCiAgIm5hbWUiOiAiQXJjaCBMaW51eCBVcGRhdGVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hcmNoLXVwZGF0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9SYXBoYWVsUm9jaGV0L2FyY2gtdXBkYXRlIiwKICAidXVpZCI6ICJhcmNoLXVwZGF0ZUBSYXBoYWVsUm9jaGV0IiwKICAidmVyc2lvbiI6IDU3Cn0="}
+    "45": {"version": "57", "sha256": "1g66g1abf0hsshihc76n3qznfd476sxg8yrj8h279cvqh8q6xgqx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEFyY2ggTGludXggYW5kIEdOT01FIFNoZWxsLlxuKiogTm90ZSA6IHlvdSBub3cgbmVlZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHBhY21hbi1jb250cmliIHRvIHVzZSB0aGUgY2hlY2t1cGRhdGVzIHNjcmlwdC4gKipcbiAgQ2FuIHN1cHBvcnQgQVVSIG9yIG90aGVyIGRpc3Ryb3MgYnkgY2hhbmdpbmcgY29tbWFuZCB1c2VkIHRvIGNoZWNrIGZvciBhbmQgYXBwbHkgdXBkYXRlcy5cbiBTZWUgUkVBRE1FIGFib3V0IEdub21lIENvbnNvbGUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcmNoLXVwZGF0ZSIsCiAgIm5hbWUiOiAiQXJjaCBMaW51eCBVcGRhdGVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hcmNoLXVwZGF0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9SYXBoYWVsUm9jaGV0L2FyY2gtdXBkYXRlIiwKICAidXVpZCI6ICJhcmNoLXVwZGF0ZUBSYXBoYWVsUm9jaGV0IiwKICAidmVyc2lvbiI6IDU3Cn0="},
+    "46": {"version": "60", "sha256": "1gpmqxlnnf7g9a528dwj6dzmllxvs11v1wnsc1awjkc7qbv77ywi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEFyY2ggTGludXggYW5kIEdOT01FIFNoZWxsLlxuKiogTm90ZSA6IHlvdSBub3cgbmVlZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHBhY21hbi1jb250cmliIHRvIHVzZSB0aGUgY2hlY2t1cGRhdGVzIHNjcmlwdC4gKipcbiAgQ2FuIHN1cHBvcnQgQVVSIG9yIG90aGVyIGRpc3Ryb3MgYnkgY2hhbmdpbmcgY29tbWFuZCB1c2VkIHRvIGNoZWNrIGZvciBhbmQgYXBwbHkgdXBkYXRlcy5cbiBTZWUgUkVBRE1FIGFib3V0IEdub21lIENvbnNvbGUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcmNoLXVwZGF0ZSIsCiAgIm5hbWUiOiAiQXJjaCBMaW51eCBVcGRhdGVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hcmNoLXVwZGF0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9SYXBoYWVsUm9jaGV0L2FyY2gtdXBkYXRlIiwKICAidXVpZCI6ICJhcmNoLXVwZGF0ZUBSYXBoYWVsUm9jaGV0IiwKICAidmVyc2lvbiI6IDYwCn0="}
   }}
 , {"uuid": "dynamic-panel-transparency@rockon999.github.io", "name": "Dynamic Panel Transparency", "pname": "dynamic-panel-transparency", "description": "This extension fades your top panel to nothingness when there are no maximized windows present. Never again will the panel be abruptly darkened!", "link": "https://extensions.gnome.org/extension/1011/dynamic-panel-transparency/", "shell_version_map": {
     "38": {"version": "34", "sha256": "118j8sc295szqlsz7r7sdywvp5lxpzpv24q2g1f4lzl79v6i9i1m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGZhZGVzIHlvdXIgdG9wIHBhbmVsIHRvIG5vdGhpbmduZXNzIHdoZW4gdGhlcmUgYXJlIG5vIG1heGltaXplZCB3aW5kb3dzIHByZXNlbnQuIE5ldmVyIGFnYWluIHdpbGwgdGhlIHBhbmVsIGJlIGFicnVwdGx5IGRhcmtlbmVkISIsCiAgImdldHRleHQtZG9tYWluIjogImR5bmFtaWMtcGFuZWwtdHJhbnNwYXJlbmN5IiwKICAibmFtZSI6ICJEeW5hbWljIFBhbmVsIFRyYW5zcGFyZW5jeSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5keW5hbWljLXBhbmVsLXRyYW5zcGFyZW5jeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2V3bHNoL2R5bmFtaWMtcGFuZWwtdHJhbnNwYXJlbmN5LyIsCiAgInV1aWQiOiAiZHluYW1pYy1wYW5lbC10cmFuc3BhcmVuY3lAcm9ja29uOTk5LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAzNAp9"},
@@ -753,7 +794,8 @@
     "42": {"version": "14", "sha256": "11k6gnk2riry80brvfkjx5m5x51613l8g7gpgdzigjk5krdbhc6p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gZWFzaWx5IGRlZmluZSBhcmJpdHJhcnkgdmFsdWVzIGZvciB0aGUgdGV4dCBzY2FsaW5nIGZhY3RvciIsCiAgImdldHRleHQtZG9tYWluIjogInRleHQtc2NhbGVyIiwKICAibmFtZSI6ICJUZXh0IFNjYWxlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmlvc3ByL3RleHQtc2NhbGVyLWdub21lLXNoZWxsLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAidGV4dC1zY2FsZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5tYXJpb3Nwci5vcmciLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
     "43": {"version": "14", "sha256": "11k6gnk2riry80brvfkjx5m5x51613l8g7gpgdzigjk5krdbhc6p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gZWFzaWx5IGRlZmluZSBhcmJpdHJhcnkgdmFsdWVzIGZvciB0aGUgdGV4dCBzY2FsaW5nIGZhY3RvciIsCiAgImdldHRleHQtZG9tYWluIjogInRleHQtc2NhbGVyIiwKICAibmFtZSI6ICJUZXh0IFNjYWxlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmlvc3ByL3RleHQtc2NhbGVyLWdub21lLXNoZWxsLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAidGV4dC1zY2FsZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5tYXJpb3Nwci5vcmciLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
     "44": {"version": "14", "sha256": "11k6gnk2riry80brvfkjx5m5x51613l8g7gpgdzigjk5krdbhc6p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gZWFzaWx5IGRlZmluZSBhcmJpdHJhcnkgdmFsdWVzIGZvciB0aGUgdGV4dCBzY2FsaW5nIGZhY3RvciIsCiAgImdldHRleHQtZG9tYWluIjogInRleHQtc2NhbGVyIiwKICAibmFtZSI6ICJUZXh0IFNjYWxlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmlvc3ByL3RleHQtc2NhbGVyLWdub21lLXNoZWxsLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAidGV4dC1zY2FsZXJAZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucy5tYXJpb3Nwci5vcmciLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
-    "45": {"version": "16", "sha256": "0127qq7cwsr300mkvmwpll9m6dwj1xnly0z8y4djspw3rhyqrc7r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gZWFzaWx5IGRlZmluZSBhcmJpdHJhcnkgdmFsdWVzIGZvciB0aGUgdGV4dCBzY2FsaW5nIGZhY3RvciIsCiAgImdldHRleHQtZG9tYWluIjogInRleHQtc2NhbGVyIiwKICAibmFtZSI6ICJUZXh0IFNjYWxlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJpb3Nwci90ZXh0LXNjYWxlci1nbm9tZS1zaGVsbC1leHRlbnNpb24iLAogICJ1dWlkIjogInRleHQtc2NhbGVyQGdub21lLXNoZWxsLWV4dGVuc2lvbnMubWFyaW9zcHIub3JnIiwKICAidmVyc2lvbiI6IDE2Cn0="}
+    "45": {"version": "17", "sha256": "0g9wxv3piws77a8lg19lqafx1kq6aarf46gaw6b8z2j40vw0hs64", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gZWFzaWx5IGRlZmluZSBhcmJpdHJhcnkgdmFsdWVzIGZvciB0aGUgdGV4dCBzY2FsaW5nIGZhY3RvciIsCiAgImdldHRleHQtZG9tYWluIjogInRleHQtc2NhbGVyIiwKICAibmFtZSI6ICJUZXh0IFNjYWxlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyaW9zcHIvdGV4dC1zY2FsZXItZ25vbWUtc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJ0ZXh0LXNjYWxlckBnbm9tZS1zaGVsbC1leHRlbnNpb25zLm1hcmlvc3ByLm9yZyIsCiAgInZlcnNpb24iOiAxNwp9"},
+    "46": {"version": "17", "sha256": "0g9wxv3piws77a8lg19lqafx1kq6aarf46gaw6b8z2j40vw0hs64", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gZWFzaWx5IGRlZmluZSBhcmJpdHJhcnkgdmFsdWVzIGZvciB0aGUgdGV4dCBzY2FsaW5nIGZhY3RvciIsCiAgImdldHRleHQtZG9tYWluIjogInRleHQtc2NhbGVyIiwKICAibmFtZSI6ICJUZXh0IFNjYWxlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyaW9zcHIvdGV4dC1zY2FsZXItZ25vbWUtc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJ0ZXh0LXNjYWxlckBnbm9tZS1zaGVsbC1leHRlbnNpb25zLm1hcmlvc3ByLm9yZyIsCiAgInZlcnNpb24iOiAxNwp9"}
   }}
 , {"uuid": "icinga-checker@sosulski.net", "name": "Icinga checker", "pname": "icinga-checker", "description": "Icinga/Nagios checker", "link": "https://extensions.gnome.org/extension/1029/icinga-checker/", "shell_version_map": {
     "38": {"version": "17", "sha256": "1j14ibzkqfy3zvk09nxnb9yaw4rlw7gb1nzg49h29c5cmnv57l1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkljaW5nYS9OYWdpb3MgY2hlY2tlciIsCiAgImV4dGVuc2lvbi1pZCI6ICJpY2luZ2EtY2hlY2tlciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkljaW5nYSBjaGVja2VyIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInBhd2VsQHNvc3Vsc2tpLm5ldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pY2luZ2EtY2hlY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4xNCIsCiAgICAiMy4xNiIsCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogImljaW5nYS1jaGVja2VyQHNvc3Vsc2tpLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
@@ -762,7 +804,8 @@
     "42": {"version": "17", "sha256": "1j14ibzkqfy3zvk09nxnb9yaw4rlw7gb1nzg49h29c5cmnv57l1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkljaW5nYS9OYWdpb3MgY2hlY2tlciIsCiAgImV4dGVuc2lvbi1pZCI6ICJpY2luZ2EtY2hlY2tlciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkljaW5nYSBjaGVja2VyIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInBhd2VsQHNvc3Vsc2tpLm5ldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pY2luZ2EtY2hlY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4xNCIsCiAgICAiMy4xNiIsCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogImljaW5nYS1jaGVja2VyQHNvc3Vsc2tpLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
     "43": {"version": "17", "sha256": "1j14ibzkqfy3zvk09nxnb9yaw4rlw7gb1nzg49h29c5cmnv57l1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkljaW5nYS9OYWdpb3MgY2hlY2tlciIsCiAgImV4dGVuc2lvbi1pZCI6ICJpY2luZ2EtY2hlY2tlciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkljaW5nYSBjaGVja2VyIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInBhd2VsQHNvc3Vsc2tpLm5ldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pY2luZ2EtY2hlY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4xNCIsCiAgICAiMy4xNiIsCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogImljaW5nYS1jaGVja2VyQHNvc3Vsc2tpLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
     "44": {"version": "17", "sha256": "1j14ibzkqfy3zvk09nxnb9yaw4rlw7gb1nzg49h29c5cmnv57l1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkljaW5nYS9OYWdpb3MgY2hlY2tlciIsCiAgImV4dGVuc2lvbi1pZCI6ICJpY2luZ2EtY2hlY2tlciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkljaW5nYSBjaGVja2VyIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInBhd2VsQHNvc3Vsc2tpLm5ldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pY2luZ2EtY2hlY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4xNCIsCiAgICAiMy4xNiIsCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogImljaW5nYS1jaGVja2VyQHNvc3Vsc2tpLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
-    "45": {"version": "21", "sha256": "1lbhwda77yyvp6aiincpqdbddl916aczbp0mnsm7rbbgw8nv618a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkljaW5nYS9OYWdpb3MgY2hlY2tlciIsCiAgImV4dGVuc2lvbi1pZCI6ICJpY2luZ2EtY2hlY2tlciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkljaW5nYSBjaGVja2VyIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInBhd2VsQHNvc3Vsc2tpLm5ldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pY2luZ2EtY2hlY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiaWNpbmdhLWNoZWNrZXJAc29zdWxza2kubmV0IiwKICAidmVyc2lvbiI6IDIxCn0="}
+    "45": {"version": "21", "sha256": "1lbhwda77yyvp6aiincpqdbddl916aczbp0mnsm7rbbgw8nv618a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkljaW5nYS9OYWdpb3MgY2hlY2tlciIsCiAgImV4dGVuc2lvbi1pZCI6ICJpY2luZ2EtY2hlY2tlciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkljaW5nYSBjaGVja2VyIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInBhd2VsQHNvc3Vsc2tpLm5ldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pY2luZ2EtY2hlY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiaWNpbmdhLWNoZWNrZXJAc29zdWxza2kubmV0IiwKICAidmVyc2lvbiI6IDIxCn0="},
+    "46": {"version": "22", "sha256": "18c2hfjbhs4ldi153bvf89l5zq4j2m7gpjxwsdvbypy06g86088h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkljaW5nYS9OYWdpb3MgY2hlY2tlciIsCiAgImV4dGVuc2lvbi1pZCI6ICJpY2luZ2EtY2hlY2tlciIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkljaW5nYSBjaGVja2VyIiwKICAib3JpZ2luYWwtYXV0aG9yIjogInBhd2VsQHNvc3Vsc2tpLm5ldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pY2luZ2EtY2hlY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiaWNpbmdhLWNoZWNrZXJAc29zdWxza2kubmV0IiwKICAidmVyc2lvbiI6IDIyCn0="}
   }}
 , {"uuid": "taskwhisperer-extension@infinicode.de", "name": "TaskWhisperer", "pname": "taskwhisperer", "description": "Taskwhisperer is a extension for TaskWarrior Application https://taskwarrior.org. It is to display upcoming tasks and task details as well as to create and modify them.\n", "link": "https://extensions.gnome.org/extension/1039/taskwhisperer/", "shell_version_map": {
     "38": {"version": "20", "sha256": "067z3j2px4rz5yspfjx2s6p5j4l1svxllclahnf3zmv1nlbhzq8a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2t3aGlzcGVyZXIgaXMgYSBleHRlbnNpb24gZm9yIFRhc2tXYXJyaW9yIEFwcGxpY2F0aW9uIGh0dHBzOi8vdGFza3dhcnJpb3Iub3JnLiBJdCBpcyB0byBkaXNwbGF5IHVwY29taW5nIHRhc2tzIGFuZCB0YXNrIGRldGFpbHMgYXMgd2VsbCBhcyB0byBjcmVhdGUgYW5kIG1vZGlmeSB0aGVtLlxuIiwKICAibG9jYWxlZGlyIjogIi91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiwKICAibmFtZSI6ICJUYXNrV2hpc3BlcmVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NpbmF0aWMvdGFza3doaXNwZXJlciIsCiAgInV1aWQiOiAidGFza3doaXNwZXJlci1leHRlbnNpb25AaW5maW5pY29kZS5kZSIsCiAgInZlcnNpb24iOiAyMAp9"},
@@ -788,7 +831,8 @@
     "42": {"version": "23", "sha256": "0gffarks0z70gdiz8jlgivv2lzxbr0hwbljjhs1xbffx45rla3g5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxldHMgeW91IGNvbnRyb2wgSGFndWljaGkgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtIHN0YXR1cyBhcmVhIGluIEdOT01FIFNoZWxsLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAienRlZm4iCiAgfSwKICAibmFtZSI6ICJIYWd1aWNoaSBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3p0ZWZuL2dzZS1oYWd1aWNoaS1pbmRpY2F0b3IiLAogICJ1dWlkIjogImdzZS1oYWd1aWNoaS1pbmRpY2F0b3JAenRlZm4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMwp9"},
     "43": {"version": "23", "sha256": "0gffarks0z70gdiz8jlgivv2lzxbr0hwbljjhs1xbffx45rla3g5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxldHMgeW91IGNvbnRyb2wgSGFndWljaGkgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtIHN0YXR1cyBhcmVhIGluIEdOT01FIFNoZWxsLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAienRlZm4iCiAgfSwKICAibmFtZSI6ICJIYWd1aWNoaSBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3p0ZWZuL2dzZS1oYWd1aWNoaS1pbmRpY2F0b3IiLAogICJ1dWlkIjogImdzZS1oYWd1aWNoaS1pbmRpY2F0b3JAenRlZm4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMwp9"},
     "44": {"version": "23", "sha256": "0gffarks0z70gdiz8jlgivv2lzxbr0hwbljjhs1xbffx45rla3g5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxldHMgeW91IGNvbnRyb2wgSGFndWljaGkgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtIHN0YXR1cyBhcmVhIGluIEdOT01FIFNoZWxsLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAienRlZm4iCiAgfSwKICAibmFtZSI6ICJIYWd1aWNoaSBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3p0ZWZuL2dzZS1oYWd1aWNoaS1pbmRpY2F0b3IiLAogICJ1dWlkIjogImdzZS1oYWd1aWNoaS1pbmRpY2F0b3JAenRlZm4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMwp9"},
-    "45": {"version": "29", "sha256": "00r9h4hrs8ix96mi407ahdp4i3wwqapd4n95h61xyw881pq1hnni", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxldHMgeW91IGNvbnRyb2wgSGFndWljaGkgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtIHN0YXR1cyBhcmVhIGluIEdOT01FIFNoZWxsLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAienRlZm4iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGFndWljaGkiLAogICJuYW1lIjogIkhhZ3VpY2hpIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96dGVmbi9nc2UtaGFndWljaGktaW5kaWNhdG9yIiwKICAidXVpZCI6ICJnc2UtaGFndWljaGktaW5kaWNhdG9yQHp0ZWZuLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="}
+    "45": {"version": "30", "sha256": "11vqbf56djyrn0ikgpjqhmivjxf6nmnswc0q340kl9b7sjq33id3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxldHMgeW91IGNvbnRyb2wgSGFndWljaGkgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtIHN0YXR1cyBhcmVhIGluIEdOT01FIFNoZWxsLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAienRlZm4iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGFndWljaGkiLAogICJuYW1lIjogIkhhZ3VpY2hpIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20venRlZm4vZ3NlLWhhZ3VpY2hpLWluZGljYXRvciIsCiAgInV1aWQiOiAiZ3NlLWhhZ3VpY2hpLWluZGljYXRvckB6dGVmbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMwCn0="},
+    "46": {"version": "30", "sha256": "11vqbf56djyrn0ikgpjqhmivjxf6nmnswc0q340kl9b7sjq33id3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxldHMgeW91IGNvbnRyb2wgSGFndWljaGkgZGlyZWN0bHkgZnJvbSB0aGUgc3lzdGVtIHN0YXR1cyBhcmVhIGluIEdOT01FIFNoZWxsLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAienRlZm4iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiaGFndWljaGkiLAogICJuYW1lIjogIkhhZ3VpY2hpIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20venRlZm4vZ3NlLWhhZ3VpY2hpLWluZGljYXRvciIsCiAgInV1aWQiOiAiZ3NlLWhhZ3VpY2hpLWluZGljYXRvckB6dGVmbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMwCn0="}
   }}
 , {"uuid": "gnome-shutdown-button@kirby_33@hotmail.fr", "name": "Gnome-Shutdown Button", "pname": "gnome-shutdown-button", "description": "Add a power off button to easily turn off your computer.\nThis button replaces the power off icon in the system area of the Gnome panel.\nYou no longer need to open the system menu to turn off your computer.", "link": "https://extensions.gnome.org/extension/1056/gnome-shutdown-button/", "shell_version_map": {
     "40": {"version": "6", "sha256": "118p8avf2nfxpp3f7l1675s6glcjk0by9fvzrrdv2bqvi0mxnj15", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHBvd2VyIG9mZiBidXR0b24gdG8gZWFzaWx5IHR1cm4gb2ZmIHlvdXIgY29tcHV0ZXIuXG5UaGlzIGJ1dHRvbiByZXBsYWNlcyB0aGUgcG93ZXIgb2ZmIGljb24gaW4gdGhlIHN5c3RlbSBhcmVhIG9mIHRoZSBHbm9tZSBwYW5lbC5cbllvdSBubyBsb25nZXIgbmVlZCB0byBvcGVuIHRoZSBzeXN0ZW0gbWVudSB0byB0dXJuIG9mZiB5b3VyIGNvbXB1dGVyLiIsCiAgIm5hbWUiOiAiR25vbWUtU2h1dGRvd24gQnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjEyIiwKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjM2IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcva2lyYnlfMzMvZ25vbWUtc2h1dGRvd24tYnV0dG9uLyIsCiAgInV1aWQiOiAiZ25vbWUtc2h1dGRvd24tYnV0dG9uQGtpcmJ5XzMzQGhvdG1haWwuZnIiLAogICJ2ZXJzaW9uIjogNgp9"},
@@ -830,7 +874,8 @@
     "42": {"version": "16", "sha256": "1ab4dwz36jqcwqyf4311ln1s6622hbykd84l97442blvz108x9gk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGEgdG9vbHRpcCBvdmVyIGFwcGxpY2F0aW9ucyBpY29ucyBvbiBhcHBsaWNhdGlvbnMgb3ZlcnZpZXcgd2l0aCBhcHBsaWNhdGlvbiBuYW1lIGFuZC9vciBkZXNjcmlwdGlvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgIm5hbWUiOiAiQXBwbGljYXRpb25zIE92ZXJ2aWV3IFRvb2x0aXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmFwaGFlbFJvY2hldC9hcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgInV1aWQiOiAiYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXBAUmFwaGFlbFJvY2hldCIsCiAgInZlcnNpb24iOiAxNgp9"},
     "43": {"version": "17", "sha256": "1mkagqmgc660n3vryp7vybk9dkk7g0iyaa8r69s8rmyf692vdbcb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGEgdG9vbHRpcCBvdmVyIGFwcGxpY2F0aW9ucyBpY29ucyBvbiBhcHBsaWNhdGlvbnMgb3ZlcnZpZXcgd2l0aCBhcHBsaWNhdGlvbiBuYW1lIGFuZC9vciBkZXNjcmlwdGlvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgIm5hbWUiOiAiQXBwbGljYXRpb25zIE92ZXJ2aWV3IFRvb2x0aXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JhcGhhZWxSb2NoZXQvYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJ1dWlkIjogImFwcGxpY2F0aW9ucy1vdmVydmlldy10b29sdGlwQFJhcGhhZWxSb2NoZXQiLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "44": {"version": "17", "sha256": "1mkagqmgc660n3vryp7vybk9dkk7g0iyaa8r69s8rmyf692vdbcb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGEgdG9vbHRpcCBvdmVyIGFwcGxpY2F0aW9ucyBpY29ucyBvbiBhcHBsaWNhdGlvbnMgb3ZlcnZpZXcgd2l0aCBhcHBsaWNhdGlvbiBuYW1lIGFuZC9vciBkZXNjcmlwdGlvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgIm5hbWUiOiAiQXBwbGljYXRpb25zIE92ZXJ2aWV3IFRvb2x0aXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JhcGhhZWxSb2NoZXQvYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJ1dWlkIjogImFwcGxpY2F0aW9ucy1vdmVydmlldy10b29sdGlwQFJhcGhhZWxSb2NoZXQiLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
-    "45": {"version": "19", "sha256": "1z583a2g6sdj1srkq3idzmdc7dvhddpd6ynw7z2kyy0rz4xkk3d6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGEgdG9vbHRpcCBvdmVyIGFwcGxpY2F0aW9ucyBpY29ucyBvbiBhcHBsaWNhdGlvbnMgb3ZlcnZpZXcgd2l0aCBhcHBsaWNhdGlvbiBuYW1lIGFuZC9vciBkZXNjcmlwdGlvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgIm5hbWUiOiAiQXBwbGljYXRpb25zIE92ZXJ2aWV3IFRvb2x0aXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmFwaGFlbFJvY2hldC9hcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgInV1aWQiOiAiYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXBAUmFwaGFlbFJvY2hldCIsCiAgInZlcnNpb24iOiAxOQp9"}
+    "45": {"version": "19", "sha256": "1z583a2g6sdj1srkq3idzmdc7dvhddpd6ynw7z2kyy0rz4xkk3d6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGEgdG9vbHRpcCBvdmVyIGFwcGxpY2F0aW9ucyBpY29ucyBvbiBhcHBsaWNhdGlvbnMgb3ZlcnZpZXcgd2l0aCBhcHBsaWNhdGlvbiBuYW1lIGFuZC9vciBkZXNjcmlwdGlvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgIm5hbWUiOiAiQXBwbGljYXRpb25zIE92ZXJ2aWV3IFRvb2x0aXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmFwaGFlbFJvY2hldC9hcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgInV1aWQiOiAiYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXBAUmFwaGFlbFJvY2hldCIsCiAgInZlcnNpb24iOiAxOQp9"},
+    "46": {"version": "21", "sha256": "13ipf5mjsbhjxym5cmzi8zrm92q721m6gwvik5fn3bygzrb9vc3c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGEgdG9vbHRpcCBvdmVyIGFwcGxpY2F0aW9ucyBpY29ucyBvbiBhcHBsaWNhdGlvbnMgb3ZlcnZpZXcgd2l0aCBhcHBsaWNhdGlvbiBuYW1lIGFuZC9vciBkZXNjcmlwdGlvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgIm5hbWUiOiAiQXBwbGljYXRpb25zIE92ZXJ2aWV3IFRvb2x0aXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmFwaGFlbFJvY2hldC9hcHBsaWNhdGlvbnMtb3ZlcnZpZXctdG9vbHRpcCIsCiAgInV1aWQiOiAiYXBwbGljYXRpb25zLW92ZXJ2aWV3LXRvb2x0aXBAUmFwaGFlbFJvY2hldCIsCiAgInZlcnNpb24iOiAyMQp9"}
   }}
 , {"uuid": "TwitchLive_Panel@extensions.maweki.de", "name": "TwitchLive Panel", "pname": "twitchlive-panel", "description": "A panel showing whether your favorite Twitch.tv streamers are streaming.\n\nCycles through the online streamers if multiples are configured. Click on the panel and then on streamer's name to launch the stream with a custom command (your browser or some other application).\n\nNeeds curl and mogrify to fully support streamer logos.", "link": "https://extensions.gnome.org/extension/1078/twitchlive-panel/", "shell_version_map": {
     "40": {"version": "44", "sha256": "0shgh7lb1h8cwzj1h6ia26dqk4yimx3zqb0vgz4sdak8h55x8486", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgcGFuZWwgc2hvd2luZyB3aGV0aGVyIHlvdXIgZmF2b3JpdGUgVHdpdGNoLnR2IHN0cmVhbWVycyBhcmUgc3RyZWFtaW5nLlxuXG5DeWNsZXMgdGhyb3VnaCB0aGUgb25saW5lIHN0cmVhbWVycyBpZiBtdWx0aXBsZXMgYXJlIGNvbmZpZ3VyZWQuIENsaWNrIG9uIHRoZSBwYW5lbCBhbmQgdGhlbiBvbiBzdHJlYW1lcidzIG5hbWUgdG8gbGF1bmNoIHRoZSBzdHJlYW0gd2l0aCBhIGN1c3RvbSBjb21tYW5kICh5b3VyIGJyb3dzZXIgb3Igc29tZSBvdGhlciBhcHBsaWNhdGlvbikuXG5cbk5lZWRzIGN1cmwgYW5kIG1vZ3JpZnkgdG8gZnVsbHkgc3VwcG9ydCBzdHJlYW1lciBsb2dvcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ0d2l0Y2hsaXZlIiwKICAibmFtZSI6ICJUd2l0Y2hMaXZlIFBhbmVsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnR3aXRjaGxpdmUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXdla2kvdHdpdGNobGl2ZS1leHRlbnNpb24iLAogICJ1dWlkIjogIlR3aXRjaExpdmVfUGFuZWxAZXh0ZW5zaW9ucy5tYXdla2kuZGUiLAogICJ2ZXJzaW9uIjogNDQKfQ=="},
@@ -855,7 +900,8 @@
     "42": {"version": "30", "sha256": "0qcj08mh1xbcikzd7j4bgnxlbk0qpd6dx591nkm2s0081dj5lvgw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBzaG93aW5nIG5ldHdvcmsgc3BlZWQuIExlZnQgY2xpY2sgdG8gY2hhbmdlIG1vZGVzOlxuXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gYml0cyBwZXIgc2Vjb25kXG4yLiBUb3RhbCBuZXQgc3BlZWQgaW4gQnl0ZXMgcGVyIHNlY29uZFxuMy4gVXAgJiBkb3duIHNwZWVkIGluIGJpdHMgcGVyIHNlY29uZFxuNC4gVXAgJiBkb3duIHNwZWVkIGluIEJ5dGVzIHBlciBzZWNvbmRcbjUuIFRvdGFsIG9mIGRvd25sb2FkZWQgaW4gQnl0ZXMgKFJpZ2h0IGNsaWNrIHRvIHJlc2V0IGNvdW50ZXIpXG5cbk1pZGRsZSBjbGljayB0byBjaGFuZ2UgZm9udCBzaXplIiwKICAibmFtZSI6ICJTaW1wbGUgbmV0IHNwZWVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iaWppL3NpbXBsZW5ldHNwZWVkIiwKICAidXVpZCI6ICJzaW1wbGVuZXRzcGVlZEBiaWppLmV4dGVuc2lvbiIsCiAgInZlcnNpb24iOiAzMAp9"},
     "43": {"version": "30", "sha256": "0qcj08mh1xbcikzd7j4bgnxlbk0qpd6dx591nkm2s0081dj5lvgw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBzaG93aW5nIG5ldHdvcmsgc3BlZWQuIExlZnQgY2xpY2sgdG8gY2hhbmdlIG1vZGVzOlxuXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gYml0cyBwZXIgc2Vjb25kXG4yLiBUb3RhbCBuZXQgc3BlZWQgaW4gQnl0ZXMgcGVyIHNlY29uZFxuMy4gVXAgJiBkb3duIHNwZWVkIGluIGJpdHMgcGVyIHNlY29uZFxuNC4gVXAgJiBkb3duIHNwZWVkIGluIEJ5dGVzIHBlciBzZWNvbmRcbjUuIFRvdGFsIG9mIGRvd25sb2FkZWQgaW4gQnl0ZXMgKFJpZ2h0IGNsaWNrIHRvIHJlc2V0IGNvdW50ZXIpXG5cbk1pZGRsZSBjbGljayB0byBjaGFuZ2UgZm9udCBzaXplIiwKICAibmFtZSI6ICJTaW1wbGUgbmV0IHNwZWVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iaWppL3NpbXBsZW5ldHNwZWVkIiwKICAidXVpZCI6ICJzaW1wbGVuZXRzcGVlZEBiaWppLmV4dGVuc2lvbiIsCiAgInZlcnNpb24iOiAzMAp9"},
     "44": {"version": "30", "sha256": "0qcj08mh1xbcikzd7j4bgnxlbk0qpd6dx591nkm2s0081dj5lvgw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBzaG93aW5nIG5ldHdvcmsgc3BlZWQuIExlZnQgY2xpY2sgdG8gY2hhbmdlIG1vZGVzOlxuXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gYml0cyBwZXIgc2Vjb25kXG4yLiBUb3RhbCBuZXQgc3BlZWQgaW4gQnl0ZXMgcGVyIHNlY29uZFxuMy4gVXAgJiBkb3duIHNwZWVkIGluIGJpdHMgcGVyIHNlY29uZFxuNC4gVXAgJiBkb3duIHNwZWVkIGluIEJ5dGVzIHBlciBzZWNvbmRcbjUuIFRvdGFsIG9mIGRvd25sb2FkZWQgaW4gQnl0ZXMgKFJpZ2h0IGNsaWNrIHRvIHJlc2V0IGNvdW50ZXIpXG5cbk1pZGRsZSBjbGljayB0byBjaGFuZ2UgZm9udCBzaXplIiwKICAibmFtZSI6ICJTaW1wbGUgbmV0IHNwZWVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iaWppL3NpbXBsZW5ldHNwZWVkIiwKICAidXVpZCI6ICJzaW1wbGVuZXRzcGVlZEBiaWppLmV4dGVuc2lvbiIsCiAgInZlcnNpb24iOiAzMAp9"},
-    "45": {"version": "31", "sha256": "0a4kwny376j5gxz4ri2119cjy8aj6g9i4yhqqmkpfl5pbv9ph5qf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBzaG93aW5nIG5ldHdvcmsgc3BlZWQuIExlZnQgY2xpY2sgdG8gY2hhbmdlIG1vZGVzOlxuXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gYml0cyBwZXIgc2Vjb25kXG4yLiBUb3RhbCBuZXQgc3BlZWQgaW4gQnl0ZXMgcGVyIHNlY29uZFxuMy4gVXAgJiBkb3duIHNwZWVkIGluIGJpdHMgcGVyIHNlY29uZFxuNC4gVXAgJiBkb3duIHNwZWVkIGluIEJ5dGVzIHBlciBzZWNvbmRcbjUuIFRvdGFsIG9mIGRvd25sb2FkZWQgaW4gQnl0ZXMgKFJpZ2h0IGNsaWNrIHRvIHJlc2V0IGNvdW50ZXIpXG5cbk1pZGRsZSBjbGljayB0byBjaGFuZ2UgZm9udCBzaXplIiwKICAibmFtZSI6ICJTaW1wbGUgbmV0IHNwZWVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Jpamkvc2ltcGxlbmV0c3BlZWQiLAogICJ1dWlkIjogInNpbXBsZW5ldHNwZWVkQGJpamkuZXh0ZW5zaW9uIiwKICAidmVyc2lvbiI6IDMxCn0="}
+    "45": {"version": "33", "sha256": "11x5yhgx1rpd7q5h6nw6jqf4wa9gjrh9wa9hii71fmg5b2rzk5kq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBzaG93aW5nIG5ldHdvcmsgc3BlZWQuIExlZnQgY2xpY2sgdG8gY2hhbmdlIG1vZGVzOlxuXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gYml0cyBwZXIgc2Vjb25kXG4yLiBUb3RhbCBuZXQgc3BlZWQgaW4gQnl0ZXMgcGVyIHNlY29uZFxuMy4gVXAgJiBkb3duIHNwZWVkIGluIGJpdHMgcGVyIHNlY29uZFxuNC4gVXAgJiBkb3duIHNwZWVkIGluIEJ5dGVzIHBlciBzZWNvbmRcbjUuIFRvdGFsIG9mIGRvd25sb2FkZWQgaW4gQnl0ZXMgKFJpZ2h0IGNsaWNrIHRvIHJlc2V0IGNvdW50ZXIpXG5cbk1pZGRsZSBjbGljayB0byBjaGFuZ2UgZm9udCBzaXplIiwKICAibmFtZSI6ICJTaW1wbGUgbmV0IHNwZWVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iaWppL3NpbXBsZW5ldHNwZWVkIiwKICAidXVpZCI6ICJzaW1wbGVuZXRzcGVlZEBiaWppLmV4dGVuc2lvbiIsCiAgInZlcnNpb24iOiAzMwp9"},
+    "46": {"version": "33", "sha256": "11x5yhgx1rpd7q5h6nw6jqf4wa9gjrh9wa9hii71fmg5b2rzk5kq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBzaG93aW5nIG5ldHdvcmsgc3BlZWQuIExlZnQgY2xpY2sgdG8gY2hhbmdlIG1vZGVzOlxuXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gYml0cyBwZXIgc2Vjb25kXG4yLiBUb3RhbCBuZXQgc3BlZWQgaW4gQnl0ZXMgcGVyIHNlY29uZFxuMy4gVXAgJiBkb3duIHNwZWVkIGluIGJpdHMgcGVyIHNlY29uZFxuNC4gVXAgJiBkb3duIHNwZWVkIGluIEJ5dGVzIHBlciBzZWNvbmRcbjUuIFRvdGFsIG9mIGRvd25sb2FkZWQgaW4gQnl0ZXMgKFJpZ2h0IGNsaWNrIHRvIHJlc2V0IGNvdW50ZXIpXG5cbk1pZGRsZSBjbGljayB0byBjaGFuZ2UgZm9udCBzaXplIiwKICAibmFtZSI6ICJTaW1wbGUgbmV0IHNwZWVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iaWppL3NpbXBsZW5ldHNwZWVkIiwKICAidXVpZCI6ICJzaW1wbGVuZXRzcGVlZEBiaWppLmV4dGVuc2lvbiIsCiAgInZlcnNpb24iOiAzMwp9"}
   }}
 , {"uuid": "gnome-shell-go-to-last-workspace@github.com", "name": "Go To Last Workspace", "pname": "go-to-last-workspace", "description": "Quickly toggle between two workspaces with one key", "link": "https://extensions.gnome.org/extension/1089/go-to-last-workspace/", "shell_version_map": {
     "38": {"version": "11", "sha256": "0ppvb3j8f8b9r1n72cdwwjj488grvqnk9b3j0y103kgwbxhr8qw3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgdG9nZ2xlIGJldHdlZW4gdHdvIHdvcmtzcGFjZXMgd2l0aCBvbmUga2V5IiwKICAibmFtZSI6ICJHbyBUbyBMYXN0IFdvcmtzcGFjZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5nby10by1sYXN0LXdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJqYW4vZ25vbWUtc2hlbGwtZ28tdG8tbGFzdC13b3Jrc3BhY2UiLAogICJ1dWlkIjogImdub21lLXNoZWxsLWdvLXRvLWxhc3Qtd29ya3NwYWNlQGdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
@@ -888,7 +934,8 @@
     "42": {"version": "8", "sha256": "0vkbwld1p68y1w97qblkra164698qbhkk8laamr6rdnk29iy0zrh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBhZGQgeW91ciB1c2VybmFtZSB0byB0b3BiYXIgcGFuZWwgcXVpY2sgc2V0dGluZ3MgbWVudS4iLAogICJuYW1lIjogIkFkZCBVc2VybmFtZSB0byBUb3AgUGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIndpbGxpYW1icmVuZGF3QHByb3Rvbm1haWwuY29tIgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4xMiIsCiAgICAiMy4xNCIsCiAgICAiMy4xNiIsCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4yMC40IiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MC4wIiwKICAgICI0MC4xIiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJlbmRhdy9hZGQtdXNlcm5hbWUtdG9wcGFuZWwiLAogICJ1dWlkIjogImFkZC11c2VybmFtZS10b3BwYW5lbEBicmVuZGF3LmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="},
     "43": {"version": "11", "sha256": "17z80qwsad3bd0kfs5bz8l6gz39kdzhbd3ym5f5h32q6sbjyrp2w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBhZGQgeW91ciB1c2VybmFtZSB0byB0b3BiYXIgcGFuZWwgcXVpY2sgc2V0dGluZ3MgbWVudS4iLAogICJuYW1lIjogIkFkZCBVc2VybmFtZSB0byBUb3AgUGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIndpbGxpYW1icmVuZGF3QGljbG91ZC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9icmVuZGF3L2FkZC11c2VybmFtZS10b3BwYW5lbCIsCiAgInV1aWQiOiAiYWRkLXVzZXJuYW1lLXRvcHBhbmVsQGJyZW5kYXcuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
     "44": {"version": "11", "sha256": "17z80qwsad3bd0kfs5bz8l6gz39kdzhbd3ym5f5h32q6sbjyrp2w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBhZGQgeW91ciB1c2VybmFtZSB0byB0b3BiYXIgcGFuZWwgcXVpY2sgc2V0dGluZ3MgbWVudS4iLAogICJuYW1lIjogIkFkZCBVc2VybmFtZSB0byBUb3AgUGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIndpbGxpYW1icmVuZGF3QGljbG91ZC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9icmVuZGF3L2FkZC11c2VybmFtZS10b3BwYW5lbCIsCiAgInV1aWQiOiAiYWRkLXVzZXJuYW1lLXRvcHBhbmVsQGJyZW5kYXcuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
-    "45": {"version": "12", "sha256": "14pphn5w53hwz7m2qn4mqvv279yl1y76c4kcnp2y80xzzgpp2kz6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBhZGQgeW91ciB1c2VybmFtZSB0byB0b3BiYXIgcGFuZWwgcXVpY2sgc2V0dGluZ3MgbWVudS4iLAogICJuYW1lIjogIkFkZCBVc2VybmFtZSB0byBUb3AgUGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIndpbGxpYW1icmVuZGF3QGljbG91ZC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JyZW5kYXcvYWRkLXVzZXJuYW1lLXRvcHBhbmVsIiwKICAidXVpZCI6ICJhZGQtdXNlcm5hbWUtdG9wcGFuZWxAYnJlbmRhdy5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
+    "45": {"version": "13", "sha256": "1l05dqc59xv3yjj8grn11l2af6sx7s3ck8g4wn9sbbc93la1v46a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBhZGQgeW91ciB1c2VybmFtZSB0byB0b3BiYXIgcGFuZWwgcXVpY2sgc2V0dGluZ3MgbWVudS4iLAogICJuYW1lIjogIkFkZCBVc2VybmFtZSB0byBUb3AgUGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIndpbGxpYW1icmVuZGF3QGljbG91ZC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9icmVuZGF3L2FkZC11c2VybmFtZS10b3BwYW5lbCIsCiAgInV1aWQiOiAiYWRkLXVzZXJuYW1lLXRvcHBhbmVsQGJyZW5kYXcuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
+    "46": {"version": "13", "sha256": "1l05dqc59xv3yjj8grn11l2af6sx7s3ck8g4wn9sbbc93la1v46a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBhZGQgeW91ciB1c2VybmFtZSB0byB0b3BiYXIgcGFuZWwgcXVpY2sgc2V0dGluZ3MgbWVudS4iLAogICJuYW1lIjogIkFkZCBVc2VybmFtZSB0byBUb3AgUGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIndpbGxpYW1icmVuZGF3QGljbG91ZC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9icmVuZGF3L2FkZC11c2VybmFtZS10b3BwYW5lbCIsCiAgInV1aWQiOiAiYWRkLXVzZXJuYW1lLXRvcHBhbmVsQGJyZW5kYXcuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="}
   }}
 , {"uuid": "hide_clock@grantmcwilliams.com", "name": "Hide Clock", "pname": "hide-clock", "description": "Hides Clock", "link": "https://extensions.gnome.org/extension/1110/hide-clock/", "shell_version_map": {
     "38": {"version": "11", "sha256": "1gzk6xf5jy2cq33s7fbl2s57y8jfdcz096r6czc2mdd4n5aqiija", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIENsb2NrIiwKICAibmFtZSI6ICJIaWRlIENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMwIiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ncmFudG1jd2lsbGlhbXMvR25vbWVfSGlkZV9DbG9jayIsCiAgInV1aWQiOiAiaGlkZV9jbG9ja0BncmFudG1jd2lsbGlhbXMuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
@@ -914,7 +961,8 @@
     "42": {"version": "18", "sha256": "1kif3hd58yqa7y05w08rbkg7ipj9f8569gcjb1kz7m3fajysjx3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVubXV0ZSB0aGUgbWljcm9waG9uZSBvbmx5IHdoZW4geW91IGhhdmUgc29tZXRoaW5nIHRvIHNheS4iLAogICJuYW1lIjogIk5vdGhpbmcgdG8gc2F5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vdGhpbmctdG8tc2F5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiLAogICAgIjMuMzYuOSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dib2xzdGVyL25vdGhpbmctdG8tc2F5IiwKICAidXVpZCI6ICJub3RoaW5nLXRvLXNheUBleHRlbnNpb25zLmdub21lLndvdXRlci5ib2xzdGVybC5lZSIsCiAgInZlcnNpb24iOiAxOAp9"},
     "43": {"version": "18", "sha256": "1kif3hd58yqa7y05w08rbkg7ipj9f8569gcjb1kz7m3fajysjx3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVubXV0ZSB0aGUgbWljcm9waG9uZSBvbmx5IHdoZW4geW91IGhhdmUgc29tZXRoaW5nIHRvIHNheS4iLAogICJuYW1lIjogIk5vdGhpbmcgdG8gc2F5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vdGhpbmctdG8tc2F5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiLAogICAgIjMuMzYuOSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dib2xzdGVyL25vdGhpbmctdG8tc2F5IiwKICAidXVpZCI6ICJub3RoaW5nLXRvLXNheUBleHRlbnNpb25zLmdub21lLndvdXRlci5ib2xzdGVybC5lZSIsCiAgInZlcnNpb24iOiAxOAp9"},
     "44": {"version": "18", "sha256": "1kif3hd58yqa7y05w08rbkg7ipj9f8569gcjb1kz7m3fajysjx3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVubXV0ZSB0aGUgbWljcm9waG9uZSBvbmx5IHdoZW4geW91IGhhdmUgc29tZXRoaW5nIHRvIHNheS4iLAogICJuYW1lIjogIk5vdGhpbmcgdG8gc2F5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vdGhpbmctdG8tc2F5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiLAogICAgIjMuMzYuOSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dib2xzdGVyL25vdGhpbmctdG8tc2F5IiwKICAidXVpZCI6ICJub3RoaW5nLXRvLXNheUBleHRlbnNpb25zLmdub21lLndvdXRlci5ib2xzdGVybC5lZSIsCiAgInZlcnNpb24iOiAxOAp9"},
-    "45": {"version": "20", "sha256": "0anbrxra9prkh7rj0rlrkp2d2c6gy2j47pf8rbwys6yyq1wzq509", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVubXV0ZSB0aGUgbWljcm9waG9uZSBvbmx5IHdoZW4geW91IGhhdmUgc29tZXRoaW5nIHRvIHNheS4iLAogICJuYW1lIjogIk5vdGhpbmcgdG8gc2F5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vdGhpbmctdG8tc2F5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dib2xzdGVyL25vdGhpbmctdG8tc2F5IiwKICAidXVpZCI6ICJub3RoaW5nLXRvLXNheUBleHRlbnNpb25zLmdub21lLndvdXRlci5ib2xzdGVybC5lZSIsCiAgInZlcnNpb24iOiAyMAp9"}
+    "45": {"version": "21", "sha256": "049n0xc0s8wg4wblp2fv6x2x2y61fan3f461yanpp84jc97fglnp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVubXV0ZSB0aGUgbWljcm9waG9uZSBvbmx5IHdoZW4geW91IGhhdmUgc29tZXRoaW5nIHRvIHNheS4iLAogICJuYW1lIjogIk5vdGhpbmcgdG8gc2F5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vdGhpbmctdG8tc2F5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93Ym9sc3Rlci9ub3RoaW5nLXRvLXNheSIsCiAgInV1aWQiOiAibm90aGluZy10by1zYXlAZXh0ZW5zaW9ucy5nbm9tZS53b3V0ZXIuYm9sc3RlcmwuZWUiLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
+    "46": {"version": "21", "sha256": "049n0xc0s8wg4wblp2fv6x2x2y61fan3f461yanpp84jc97fglnp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVubXV0ZSB0aGUgbWljcm9waG9uZSBvbmx5IHdoZW4geW91IGhhdmUgc29tZXRoaW5nIHRvIHNheS4iLAogICJuYW1lIjogIk5vdGhpbmcgdG8gc2F5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vdGhpbmctdG8tc2F5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93Ym9sc3Rlci9ub3RoaW5nLXRvLXNheSIsCiAgInV1aWQiOiAibm90aGluZy10by1zYXlAZXh0ZW5zaW9ucy5nbm9tZS53b3V0ZXIuYm9sc3RlcmwuZWUiLAogICJ2ZXJzaW9uIjogMjEKfQ=="}
   }}
 , {"uuid": "workspace-switch-wraparound@theychx.org", "name": "Workspace Switch Wraparound", "pname": "workspace-switch-wraparound", "description": "NO LONGER MAINTAINED\n\nWhen switching workspaces, going down from the bottom workspace switches to the top workspace. Likewise, up from the top workspace goes to the bottom workspace.", "link": "https://extensions.gnome.org/extension/1116/workspace-switch-wraparound/", "shell_version_map": {
     "38": {"version": "10", "sha256": "0r8ivrnnilvm0yijdra2n1n9ygcaclz57d5zcmi1jihggdhnc3ca", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldoZW4gc3dpdGNoaW5nIHdvcmtzcGFjZXMsIGdvaW5nIGRvd24gZnJvbSB0aGUgYm90dG9tIHdvcmtzcGFjZSBzd2l0Y2hlcyB0byB0aGUgdG9wIHdvcmtzcGFjZS4gTGlrZXdpc2UsIHVwIGZyb20gdGhlIHRvcCB3b3Jrc3BhY2UgZ29lcyB0byB0aGUgYm90dG9tIHdvcmtzcGFjZS4iLAogICJuYW1lIjogIldvcmtzcGFjZSBTd2l0Y2ggV3JhcGFyb3VuZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGhleWNoeC9Xb3Jrc3BhY2VTd2l0Y2hlcldyYXBBcm91bmQiLAogICJ1dWlkIjogIndvcmtzcGFjZS1zd2l0Y2gtd3JhcGFyb3VuZEB0aGV5Y2h4Lm9yZyIsCiAgInZlcnNpb24iOiAxMAp9"},
@@ -953,7 +1001,8 @@
     "42": {"version": "15", "sha256": "0bhq1ns7pbrdxkclg2q213hfy0633171zfj17jhxxv70qpkskpbw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgc2hvd3MgYSBwb3AtdXAgb2YgdXNlZnVsIGtleWJvYXJkIHNob3J0Y3V0cyB3aGVuIEN0cmwgKyBBbHQgKyBTdXBlciArIFMgaXMgcHJlc3NlZCIsCiAgImdldHRleHQtZG9tYWluIjogIlNob3J0Y3V0cyIsCiAgIm5hbWUiOiAiU2hvcnRjdXRzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNob3J0Y3V0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcGFkZGF0cmFwcGVyL3Nob3J0Y3V0cy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIlNob3J0Y3V0c0BreWxlLmFpbXMuYWMuemEiLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
     "43": {"version": "15", "sha256": "0bhq1ns7pbrdxkclg2q213hfy0633171zfj17jhxxv70qpkskpbw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgc2hvd3MgYSBwb3AtdXAgb2YgdXNlZnVsIGtleWJvYXJkIHNob3J0Y3V0cyB3aGVuIEN0cmwgKyBBbHQgKyBTdXBlciArIFMgaXMgcHJlc3NlZCIsCiAgImdldHRleHQtZG9tYWluIjogIlNob3J0Y3V0cyIsCiAgIm5hbWUiOiAiU2hvcnRjdXRzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNob3J0Y3V0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcGFkZGF0cmFwcGVyL3Nob3J0Y3V0cy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIlNob3J0Y3V0c0BreWxlLmFpbXMuYWMuemEiLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
     "44": {"version": "15", "sha256": "0bhq1ns7pbrdxkclg2q213hfy0633171zfj17jhxxv70qpkskpbw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgc2hvd3MgYSBwb3AtdXAgb2YgdXNlZnVsIGtleWJvYXJkIHNob3J0Y3V0cyB3aGVuIEN0cmwgKyBBbHQgKyBTdXBlciArIFMgaXMgcHJlc3NlZCIsCiAgImdldHRleHQtZG9tYWluIjogIlNob3J0Y3V0cyIsCiAgIm5hbWUiOiAiU2hvcnRjdXRzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNob3J0Y3V0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcGFkZGF0cmFwcGVyL3Nob3J0Y3V0cy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIlNob3J0Y3V0c0BreWxlLmFpbXMuYWMuemEiLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
-    "45": {"version": "25", "sha256": "19db7wp7jrwyb7z7ghic4aa6nmk160h21gx9bgq7s119c8dyxpjq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgc2hvd3MgYSBwb3AtdXAgb2YgdXNlZnVsIGtleWJvYXJkIHNob3J0Y3V0cyB3aGVuIEN0cmwgKyBBbHQgKyBTdXBlciArIFMgaXMgcHJlc3NlZCAoaG90a2V5IGNhbiBiZSBjaGFuZ2VkIGluIHNldHRpbmdzKSIsCiAgImdldHRleHQtZG9tYWluIjogIlNob3J0Y3V0cyIsCiAgIm5hbWUiOiAiU2hvcnRjdXRzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNob3J0Y3V0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcGFkZGF0cmFwcGVyL3Nob3J0Y3V0cy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIlNob3J0Y3V0c0BreWxlLmFpbXMuYWMuemEiLAogICJ2ZXJzaW9uIjogMjUsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4wIgp9"}
+    "45": {"version": "26", "sha256": "1996qchzb9rib835vjq3lf04pfbq596jp0rrl9xp1spiaqx2mnkq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgc2hvd3MgYSBwb3AtdXAgb2YgdXNlZnVsIGtleWJvYXJkIHNob3J0Y3V0cyB3aGVuIEN0cmwgKyBBbHQgKyBTdXBlciArIFMgaXMgcHJlc3NlZCAoaG90a2V5IGNhbiBiZSBjaGFuZ2VkIGluIHNldHRpbmdzKSIsCiAgImdldHRleHQtZG9tYWluIjogIlNob3J0Y3V0cyIsCiAgIm5hbWUiOiAiU2hvcnRjdXRzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNob3J0Y3V0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcGFkZGF0cmFwcGVyL3Nob3J0Y3V0cy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIlNob3J0Y3V0c0BreWxlLmFpbXMuYWMuemEiLAogICJ2ZXJzaW9uIjogMjYsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4xIgp9"},
+    "46": {"version": "26", "sha256": "1996qchzb9rib835vjq3lf04pfbq596jp0rrl9xp1spiaqx2mnkq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgc2hvd3MgYSBwb3AtdXAgb2YgdXNlZnVsIGtleWJvYXJkIHNob3J0Y3V0cyB3aGVuIEN0cmwgKyBBbHQgKyBTdXBlciArIFMgaXMgcHJlc3NlZCAoaG90a2V5IGNhbiBiZSBjaGFuZ2VkIGluIHNldHRpbmdzKSIsCiAgImdldHRleHQtZG9tYWluIjogIlNob3J0Y3V0cyIsCiAgIm5hbWUiOiAiU2hvcnRjdXRzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNob3J0Y3V0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcGFkZGF0cmFwcGVyL3Nob3J0Y3V0cy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIlNob3J0Y3V0c0BreWxlLmFpbXMuYWMuemEiLAogICJ2ZXJzaW9uIjogMjYsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4xIgp9"}
   }}
 , {"uuid": "sensory-perception@HarlemSquirrel.github.io", "name": "Sensory Perception", "pname": "sensory-perception", "description": "Requires lm-sensors (or lm_sensors). Shows CPU temperature, disk temperature, video card temperature, voltage and fan RPM.", "link": "https://extensions.gnome.org/extension/1145/sensory-perception/", "shell_version_map": {
     "38": {"version": "13", "sha256": "16wc49khyk5arsis8kzpjgl6nl8gccc2y5sspq8rwnab22jnzwjh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcXVpcmVzIGxtLXNlbnNvcnMgKG9yIGxtX3NlbnNvcnMpLiBTaG93cyBDUFUgdGVtcGVyYXR1cmUsIGRpc2sgdGVtcGVyYXR1cmUsIHZpZGVvIGNhcmQgdGVtcGVyYXR1cmUsIHZvbHRhZ2UgYW5kIGZhbiBSUE0uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2Vuc29yeS1wZXJjZXB0aW9uIiwKICAibmFtZSI6ICJTZW5zb3J5IFBlcmNlcHRpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2Vuc29yeS1wZXJjZXB0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSGFybGVtU3F1aXJyZWwvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNlbnNvcnktcGVyY2VwdGlvbiIsCiAgInV1aWQiOiAic2Vuc29yeS1wZXJjZXB0aW9uQEhhcmxlbVNxdWlycmVsLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMwp9"},
@@ -980,7 +1029,8 @@
     "42": {"version": "56", "sha256": "0hl85jdmv07viqhvfd35w2wdyjyv5hywr55pycgz21fjk11waf1k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGljb24gdGFza2JhciBmb3IgdGhlIEdub21lIFNoZWxsLiBUaGlzIGV4dGVuc2lvbiBtb3ZlcyB0aGUgZGFzaCBpbnRvIHRoZSBnbm9tZSBtYWluIHBhbmVsIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVycyBhbmQgc3lzdGVtIHRyYXkgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgcGFuZWwsIHNpbWlsYXIgdG8gdGhhdCBmb3VuZCBpbiBLREUgUGxhc21hIGFuZCBXaW5kb3dzIDcrLiBBIHNlcGFyYXRlIGRvY2sgaXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgZWFzeSBhY2Nlc3MgdG8gcnVubmluZyBhbmQgZmF2b3JpdGVkIGFwcGxpY2F0aW9ucy5cblxuRm9yIGEgbW9yZSB0cmFkaXRpb25hbCBleHBlcmllbmNlLCB5b3UgbWF5IGFsc28gd2FudCB0byB1c2UgVHdlYWsgVG9vbCB0byBlbmFibGUgV2luZG93cyA+IFRpdGxlYmFyIEJ1dHRvbnMgPiBNaW5pbWl6ZSAmIE1heGltaXplLlxuXG5Gb3IgdGhlIGJlc3Qgc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIG9uIEdpdGh1Yi4gRGFzaC10by1wYW5lbCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgQGpkZXJvc2U5IGFuZCBAY2hhcmxlc2c5OS4iLAogICJleHRlbnNpb24taWQiOiAiZGFzaC10by1wYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtdG8tcGFuZWwiLAogICJuYW1lIjogIkRhc2ggdG8gUGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob21lLXN3ZWV0LWdub21lL2Rhc2gtdG8tcGFuZWwiLAogICJ1dWlkIjogImRhc2gtdG8tcGFuZWxAamRlcm9zZTkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Ngp9"},
     "43": {"version": "56", "sha256": "0hl85jdmv07viqhvfd35w2wdyjyv5hywr55pycgz21fjk11waf1k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGljb24gdGFza2JhciBmb3IgdGhlIEdub21lIFNoZWxsLiBUaGlzIGV4dGVuc2lvbiBtb3ZlcyB0aGUgZGFzaCBpbnRvIHRoZSBnbm9tZSBtYWluIHBhbmVsIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVycyBhbmQgc3lzdGVtIHRyYXkgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgcGFuZWwsIHNpbWlsYXIgdG8gdGhhdCBmb3VuZCBpbiBLREUgUGxhc21hIGFuZCBXaW5kb3dzIDcrLiBBIHNlcGFyYXRlIGRvY2sgaXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgZWFzeSBhY2Nlc3MgdG8gcnVubmluZyBhbmQgZmF2b3JpdGVkIGFwcGxpY2F0aW9ucy5cblxuRm9yIGEgbW9yZSB0cmFkaXRpb25hbCBleHBlcmllbmNlLCB5b3UgbWF5IGFsc28gd2FudCB0byB1c2UgVHdlYWsgVG9vbCB0byBlbmFibGUgV2luZG93cyA+IFRpdGxlYmFyIEJ1dHRvbnMgPiBNaW5pbWl6ZSAmIE1heGltaXplLlxuXG5Gb3IgdGhlIGJlc3Qgc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIG9uIEdpdGh1Yi4gRGFzaC10by1wYW5lbCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgQGpkZXJvc2U5IGFuZCBAY2hhcmxlc2c5OS4iLAogICJleHRlbnNpb24taWQiOiAiZGFzaC10by1wYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtdG8tcGFuZWwiLAogICJuYW1lIjogIkRhc2ggdG8gUGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob21lLXN3ZWV0LWdub21lL2Rhc2gtdG8tcGFuZWwiLAogICJ1dWlkIjogImRhc2gtdG8tcGFuZWxAamRlcm9zZTkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Ngp9"},
     "44": {"version": "56", "sha256": "0hl85jdmv07viqhvfd35w2wdyjyv5hywr55pycgz21fjk11waf1k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGljb24gdGFza2JhciBmb3IgdGhlIEdub21lIFNoZWxsLiBUaGlzIGV4dGVuc2lvbiBtb3ZlcyB0aGUgZGFzaCBpbnRvIHRoZSBnbm9tZSBtYWluIHBhbmVsIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVycyBhbmQgc3lzdGVtIHRyYXkgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgcGFuZWwsIHNpbWlsYXIgdG8gdGhhdCBmb3VuZCBpbiBLREUgUGxhc21hIGFuZCBXaW5kb3dzIDcrLiBBIHNlcGFyYXRlIGRvY2sgaXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgZWFzeSBhY2Nlc3MgdG8gcnVubmluZyBhbmQgZmF2b3JpdGVkIGFwcGxpY2F0aW9ucy5cblxuRm9yIGEgbW9yZSB0cmFkaXRpb25hbCBleHBlcmllbmNlLCB5b3UgbWF5IGFsc28gd2FudCB0byB1c2UgVHdlYWsgVG9vbCB0byBlbmFibGUgV2luZG93cyA+IFRpdGxlYmFyIEJ1dHRvbnMgPiBNaW5pbWl6ZSAmIE1heGltaXplLlxuXG5Gb3IgdGhlIGJlc3Qgc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIG9uIEdpdGh1Yi4gRGFzaC10by1wYW5lbCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgQGpkZXJvc2U5IGFuZCBAY2hhcmxlc2c5OS4iLAogICJleHRlbnNpb24taWQiOiAiZGFzaC10by1wYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtdG8tcGFuZWwiLAogICJuYW1lIjogIkRhc2ggdG8gUGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob21lLXN3ZWV0LWdub21lL2Rhc2gtdG8tcGFuZWwiLAogICJ1dWlkIjogImRhc2gtdG8tcGFuZWxAamRlcm9zZTkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Ngp9"},
-    "45": {"version": "60", "sha256": "12l8fvw271k5q0dbhq5vw5li7fbjxi4y0n5d4rz0w8hrgj2jsikb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGljb24gdGFza2JhciBmb3IgdGhlIEdub21lIFNoZWxsLiBUaGlzIGV4dGVuc2lvbiBtb3ZlcyB0aGUgZGFzaCBpbnRvIHRoZSBnbm9tZSBtYWluIHBhbmVsIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVycyBhbmQgc3lzdGVtIHRyYXkgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgcGFuZWwsIHNpbWlsYXIgdG8gdGhhdCBmb3VuZCBpbiBLREUgUGxhc21hIGFuZCBXaW5kb3dzIDcrLiBBIHNlcGFyYXRlIGRvY2sgaXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgZWFzeSBhY2Nlc3MgdG8gcnVubmluZyBhbmQgZmF2b3JpdGVkIGFwcGxpY2F0aW9ucy5cblxuRm9yIGEgbW9yZSB0cmFkaXRpb25hbCBleHBlcmllbmNlLCB5b3UgbWF5IGFsc28gd2FudCB0byB1c2UgVHdlYWsgVG9vbCB0byBlbmFibGUgV2luZG93cyA+IFRpdGxlYmFyIEJ1dHRvbnMgPiBNaW5pbWl6ZSAmIE1heGltaXplLlxuXG5Gb3IgdGhlIGJlc3Qgc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIG9uIEdpdGh1Yi4gRGFzaC10by1wYW5lbCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgQGpkZXJvc2U5IGFuZCBAY2hhcmxlc2c5OS4iLAogICJleHRlbnNpb24taWQiOiAiZGFzaC10by1wYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtdG8tcGFuZWwiLAogICJuYW1lIjogIkRhc2ggdG8gUGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9tZS1zd2VldC1nbm9tZS9kYXNoLXRvLXBhbmVsIiwKICAidXVpZCI6ICJkYXNoLXRvLXBhbmVsQGpkZXJvc2U5LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNjAKfQ=="}
+    "45": {"version": "60", "sha256": "12l8fvw271k5q0dbhq5vw5li7fbjxi4y0n5d4rz0w8hrgj2jsikb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGljb24gdGFza2JhciBmb3IgdGhlIEdub21lIFNoZWxsLiBUaGlzIGV4dGVuc2lvbiBtb3ZlcyB0aGUgZGFzaCBpbnRvIHRoZSBnbm9tZSBtYWluIHBhbmVsIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVycyBhbmQgc3lzdGVtIHRyYXkgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgcGFuZWwsIHNpbWlsYXIgdG8gdGhhdCBmb3VuZCBpbiBLREUgUGxhc21hIGFuZCBXaW5kb3dzIDcrLiBBIHNlcGFyYXRlIGRvY2sgaXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgZWFzeSBhY2Nlc3MgdG8gcnVubmluZyBhbmQgZmF2b3JpdGVkIGFwcGxpY2F0aW9ucy5cblxuRm9yIGEgbW9yZSB0cmFkaXRpb25hbCBleHBlcmllbmNlLCB5b3UgbWF5IGFsc28gd2FudCB0byB1c2UgVHdlYWsgVG9vbCB0byBlbmFibGUgV2luZG93cyA+IFRpdGxlYmFyIEJ1dHRvbnMgPiBNaW5pbWl6ZSAmIE1heGltaXplLlxuXG5Gb3IgdGhlIGJlc3Qgc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIG9uIEdpdGh1Yi4gRGFzaC10by1wYW5lbCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgQGpkZXJvc2U5IGFuZCBAY2hhcmxlc2c5OS4iLAogICJleHRlbnNpb24taWQiOiAiZGFzaC10by1wYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtdG8tcGFuZWwiLAogICJuYW1lIjogIkRhc2ggdG8gUGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG9tZS1zd2VldC1nbm9tZS9kYXNoLXRvLXBhbmVsIiwKICAidXVpZCI6ICJkYXNoLXRvLXBhbmVsQGpkZXJvc2U5LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNjAKfQ=="},
+    "46": {"version": "62", "sha256": "05g651mh4db8s5p796702d0sd5yipdrv4pm0p3b7v0m5b9q8hwhf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGljb24gdGFza2JhciBmb3IgdGhlIEdub21lIFNoZWxsLiBUaGlzIGV4dGVuc2lvbiBtb3ZlcyB0aGUgZGFzaCBpbnRvIHRoZSBnbm9tZSBtYWluIHBhbmVsIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGxhdW5jaGVycyBhbmQgc3lzdGVtIHRyYXkgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgcGFuZWwsIHNpbWlsYXIgdG8gdGhhdCBmb3VuZCBpbiBLREUgUGxhc21hIGFuZCBXaW5kb3dzIDcrLiBBIHNlcGFyYXRlIGRvY2sgaXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgZWFzeSBhY2Nlc3MgdG8gcnVubmluZyBhbmQgZmF2b3JpdGVkIGFwcGxpY2F0aW9ucy5cblxuRm9yIGEgbW9yZSB0cmFkaXRpb25hbCBleHBlcmllbmNlLCB5b3UgbWF5IGFsc28gd2FudCB0byB1c2UgVHdlYWsgVG9vbCB0byBlbmFibGUgV2luZG93cyA+IFRpdGxlYmFyIEJ1dHRvbnMgPiBNaW5pbWl6ZSAmIE1heGltaXplLlxuXG5Gb3IgdGhlIGJlc3Qgc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIG9uIEdpdGh1Yi4gRGFzaC10by1wYW5lbCBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYnkgQGpkZXJvc2U5IGFuZCBAY2hhcmxlc2c5OS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogImNoYXJsZXNnOTkiCiAgfSwKICAiZXh0ZW5zaW9uLWlkIjogImRhc2gtdG8tcGFuZWwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJkYXNoLXRvLXBhbmVsIiwKICAibmFtZSI6ICJEYXNoIHRvIFBhbmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hvbWUtc3dlZXQtZ25vbWUvZGFzaC10by1wYW5lbCIsCiAgInV1aWQiOiAiZGFzaC10by1wYW5lbEBqZGVyb3NlOS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYyCn0="}
   }}
 , {"uuid": "emoji-selector@maestroschan.fr", "name": "Emoji Selector", "pname": "emoji-selector", "description": "This extension provides a parametrable popup menu displaying most emojis, clicking on an emoji copies it to the clipboard. An appropriate font like 'Twitter Color Emoji' or 'JoyPixels Color' should be installed on your system for a better visual result.", "link": "https://extensions.gnome.org/extension/1162/emoji-selector/", "shell_version_map": {
     "38": {"version": "20", "sha256": "1i6py149m46xig5a0ry7y5v887nlzw644mw72gcr2hkfsn8b0gnd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgcGFyYW1ldHJhYmxlIHBvcHVwIG1lbnUgZGlzcGxheWluZyBtb3N0IGVtb2ppcywgY2xpY2tpbmcgb24gYW4gZW1vamkgY29waWVzIGl0IHRvIHRoZSBjbGlwYm9hcmQuIEFuIGFwcHJvcHJpYXRlIGZvbnQgbGlrZSAnVHdpdHRlciBDb2xvciBFbW9qaScgb3IgJ0pveVBpeGVscyBDb2xvcicgc2hvdWxkIGJlIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSBmb3IgYSBiZXR0ZXIgdmlzdWFsIHJlc3VsdC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlbW9qaS1zZWxlY3RvciIsCiAgIm5hbWUiOiAiRW1vamkgU2VsZWN0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZW1vamktc2VsZWN0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYW9zY2hhbnovZW1vamktc2VsZWN0b3ItZm9yLWdub21lIiwKICAidXVpZCI6ICJlbW9qaS1zZWxlY3RvckBtYWVzdHJvc2NoYW4uZnIiLAogICJ2ZXJzaW9uIjogMjAKfQ=="},
@@ -995,7 +1045,8 @@
     "42": {"version": "7", "sha256": "0ykqd0yazwrrb93gq07mbb0jcyfpmj8imbk324iq1828zsvfld8z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgYSBzeXN0ZW0gbWVudSBpdGVtIHRvIHJlbmV3IEtlcmJlcm9zIHRpY2tldHMiLAogICJuYW1lIjogIktlcmJlcm9zIGxvZ2luIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2JvbnppbmkvZ25vbWUta2luaXQiLAogICJ1dWlkIjogImdub21lLWtpbml0QGJvbnppbmkuZ251Lm9yZyIsCiAgInZlcnNpb24iOiA3Cn0="},
     "43": {"version": "12", "sha256": "1wrlnsgq181636ai3p14l8rx809qn0kykhh1q0267jw108hjha1d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgYSBzeXN0ZW0gbWVudSBpdGVtIHRvIHJlbmV3IEtlcmJlcm9zIHRpY2tldHMiLAogICJuYW1lIjogIktlcmJlcm9zIGxvZ2luIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9ib256aW5pL2dub21lLWtpbml0IiwKICAidXVpZCI6ICJnbm9tZS1raW5pdEBib256aW5pLmdudS5vcmciLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "44": {"version": "12", "sha256": "1wrlnsgq181636ai3p14l8rx809qn0kykhh1q0267jw108hjha1d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgYSBzeXN0ZW0gbWVudSBpdGVtIHRvIHJlbmV3IEtlcmJlcm9zIHRpY2tldHMiLAogICJuYW1lIjogIktlcmJlcm9zIGxvZ2luIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9ib256aW5pL2dub21lLWtpbml0IiwKICAidXVpZCI6ICJnbm9tZS1raW5pdEBib256aW5pLmdudS5vcmciLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
-    "45": {"version": "14", "sha256": "0ww75v8x1yc8km0j5w7s4wjqvvr62r2385gq08g583agzh99ds5j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgYSBzeXN0ZW0gbWVudSBpdGVtIHRvIHJlbmV3IEtlcmJlcm9zIHRpY2tldHMiLAogICJuYW1lIjogIktlcmJlcm9zIGxvZ2luIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2JvbnppbmkvZ25vbWUta2luaXQiLAogICJ1dWlkIjogImdub21lLWtpbml0QGJvbnppbmkuZ251Lm9yZyIsCiAgInZlcnNpb24iOiAxNAp9"}
+    "45": {"version": "15", "sha256": "1683b2y6asv4vjr603hmsfk074n5w0bs5swbw5li7vmjzx9v1m0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgYSBzeXN0ZW0gbWVudSBpdGVtIHRvIHJlbmV3IEtlcmJlcm9zIHRpY2tldHMiLAogICJuYW1lIjogIktlcmJlcm9zIGxvZ2luIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9ib256aW5pL2dub21lLWtpbml0IiwKICAidXVpZCI6ICJnbm9tZS1raW5pdEBib256aW5pLmdudS5vcmciLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
+    "46": {"version": "15", "sha256": "1683b2y6asv4vjr603hmsfk074n5w0bs5swbw5li7vmjzx9v1m0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgYSBzeXN0ZW0gbWVudSBpdGVtIHRvIHJlbmV3IEtlcmJlcm9zIHRpY2tldHMiLAogICJuYW1lIjogIktlcmJlcm9zIGxvZ2luIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9ib256aW5pL2dub21lLWtpbml0IiwKICAidXVpZCI6ICJnbm9tZS1raW5pdEBib256aW5pLmdudS5vcmciLAogICJ2ZXJzaW9uIjogMTUKfQ=="}
   }}
 , {"uuid": "screenshotlocations.timur@linux.com", "name": "Screenshot Locations", "pname": "screenshot-locations", "description": "Change the default GNOME screenshot directory", "link": "https://extensions.gnome.org/extension/1179/screenshot-locations/", "shell_version_map": {
     "38": {"version": "7", "sha256": "0ymb4m8fgxgi964fdfdqwgjw95qbcm906zgqmyqxgd4ggip3mn47", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRhdGEtZ3Jlc291cmNlIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNjcmVlbnNob3Rsb2NhdGlvbnMuZGF0YS5ncmVzb3VyY2UiLAogICJkZXNjcmlwdGlvbiI6ICJDaGFuZ2UgdGhlIGRlZmF1bHQgR05PTUUgc2NyZWVuc2hvdCBkaXJlY3RvcnkiLAogICJuYW1lIjogIlNjcmVlbnNob3QgTG9jYXRpb25zIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNjcmVlbnNob3Rsb2NhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vY29kZWJlcmcub3JnL2tpeXVpL2dub21lLXNoZWxsLXNjcmVlbnNob3Rsb2NhdGlvbnMtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJzY3JlZW5zaG90bG9jYXRpb25zLnRpbXVyQGxpbnV4LmNvbSIsCiAgInZlcnNpb24iOiA3Cn0="},
@@ -1008,7 +1059,8 @@
     "42": {"version": "34", "sha256": "12n7mvnar9k2hndmn4habdw5jigc458sy2nvsvi8g84c9ryd38xr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVUQyBjbG9jayBmb3IgdGhlIHRvcCBiYXIiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogImluamNyaXN0aWFucm9qYXMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiVVRDQ2xvY2siLAogICJuYW1lIjogIlVUQ0Nsb2NrIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnV0Y2Nsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pbmpjcmlzdGlhbnJvamFzL1VUQ0Nsb2NrIiwKICAidXVpZCI6ICJ1dGNjbG9ja0BpbmpjcmlzdGlhbnJvamFzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "43": {"version": "34", "sha256": "12n7mvnar9k2hndmn4habdw5jigc458sy2nvsvi8g84c9ryd38xr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVUQyBjbG9jayBmb3IgdGhlIHRvcCBiYXIiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogImluamNyaXN0aWFucm9qYXMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiVVRDQ2xvY2siLAogICJuYW1lIjogIlVUQ0Nsb2NrIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnV0Y2Nsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pbmpjcmlzdGlhbnJvamFzL1VUQ0Nsb2NrIiwKICAidXVpZCI6ICJ1dGNjbG9ja0BpbmpjcmlzdGlhbnJvamFzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "44": {"version": "34", "sha256": "12n7mvnar9k2hndmn4habdw5jigc458sy2nvsvi8g84c9ryd38xr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVUQyBjbG9jayBmb3IgdGhlIHRvcCBiYXIiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogImluamNyaXN0aWFucm9qYXMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiVVRDQ2xvY2siLAogICJuYW1lIjogIlVUQ0Nsb2NrIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnV0Y2Nsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pbmpjcmlzdGlhbnJvamFzL1VUQ0Nsb2NrIiwKICAidXVpZCI6ICJ1dGNjbG9ja0BpbmpjcmlzdGlhbnJvamFzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
-    "45": {"version": "35", "sha256": "0p53gzy6v74kdcp15kipxwarxix5swnqzqxl07g1bjjlq6qbjmmd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVUQyBjbG9jayBmb3IgdGhlIHRvcCBiYXIiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogImluamNyaXN0aWFucm9qYXMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiVVRDQ2xvY2siLAogICJuYW1lIjogIlVUQ0Nsb2NrIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnV0Y2Nsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2luamNyaXN0aWFucm9qYXMvVVRDQ2xvY2siLAogICJ1dWlkIjogInV0Y2Nsb2NrQGluamNyaXN0aWFucm9qYXMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzNQp9"}
+    "45": {"version": "36", "sha256": "0wamnpd3pq8nqafl00sbm03sqimz3sfc2v8zj9f2kfn3x3hqrcr1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVUQyBjbG9jayBmb3IgdGhlIHRvcCBiYXIiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogImluamNyaXN0aWFucm9qYXMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiVVRDQ2xvY2siLAogICJuYW1lIjogIlVUQ0Nsb2NrIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnV0Y2Nsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pbmpjcmlzdGlhbnJvamFzL1VUQ0Nsb2NrIiwKICAidXVpZCI6ICJ1dGNjbG9ja0BpbmpjcmlzdGlhbnJvamFzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzYKfQ=="},
+    "46": {"version": "36", "sha256": "0wamnpd3pq8nqafl00sbm03sqimz3sfc2v8zj9f2kfn3x3hqrcr1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVUQyBjbG9jayBmb3IgdGhlIHRvcCBiYXIiLAogICJkb25hdGlvbnMiOiB7CiAgICAicGF5cGFsIjogImluamNyaXN0aWFucm9qYXMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiVVRDQ2xvY2siLAogICJuYW1lIjogIlVUQ0Nsb2NrIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnV0Y2Nsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pbmpjcmlzdGlhbnJvamFzL1VUQ0Nsb2NrIiwKICAidXVpZCI6ICJ1dGNjbG9ja0BpbmpjcmlzdGlhbnJvamFzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzYKfQ=="}
   }}
 , {"uuid": "show-desktop-button@amivaleo", "name": "Show Desktop Button", "pname": "show-desktop-button", "description": "Minimize/unminimize all open windows with a single click.", "link": "https://extensions.gnome.org/extension/1194/show-desktop-button/", "shell_version_map": {
     "38": {"version": "17", "sha256": "0hq25s6kwkd857z5799598n8nx5dxvwy9xwnsrsad3n79pgl7rir", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1pbmltaXplL3VubWluaW1pemUgYWxsIG9wZW4gd2luZG93cyB3aXRoIGEgc2luZ2xlIGNsaWNrLlxuXG5OT1RFOiBJIGlnbm9yZSBidWcgcmVwb3J0cyBzZW50IGhlcmUuIFBsZWFzZSB1c2UgZ2l0aHViLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJzaG93LWRlc2t0b3AtYnV0dG9uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2hvdy1kZXNrdG9wLWJ1dHRvbiIsCiAgImxvY2FsZWRpciI6ICIvdXNyL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiU2hvdyBEZXNrdG9wIEJ1dHRvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zaG93LWRlc2t0b3AtYnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYW1pdmFsZW8vU2hvdy1EZXNrdG9wLUJ1dHRvbiIsCiAgInV1aWQiOiAic2hvdy1kZXNrdG9wLWJ1dHRvbkBhbWl2YWxlbyIsCiAgInZlcnNpb24iOiAxNwp9"},
@@ -1040,7 +1092,8 @@
     "42": {"version": "7", "sha256": "1ivk8x3sjdsyhjj10lfzdrhci7p1f8ws68nyml0vs7ypqdchihcr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB1bmRlY29yYXRlIGl0ZW0gaW4gd2luZG93IG1lbnUuIFVzZSBBTFQrU3BhY2UgdG8gc2hvdyB3aW5kb3cgbWVudS4iLAogICJuYW1lIjogIlVuZGVjb3JhdGUgV2luZG93IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJzdW4ud3hnQGdtYWlsLmNvbSIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi11bmRlY29yYXRlIiwKICAidXVpZCI6ICJ1bmRlY29yYXRlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
     "43": {"version": "7", "sha256": "1ivk8x3sjdsyhjj10lfzdrhci7p1f8ws68nyml0vs7ypqdchihcr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB1bmRlY29yYXRlIGl0ZW0gaW4gd2luZG93IG1lbnUuIFVzZSBBTFQrU3BhY2UgdG8gc2hvdyB3aW5kb3cgbWVudS4iLAogICJuYW1lIjogIlVuZGVjb3JhdGUgV2luZG93IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJzdW4ud3hnQGdtYWlsLmNvbSIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi11bmRlY29yYXRlIiwKICAidXVpZCI6ICJ1bmRlY29yYXRlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
     "44": {"version": "8", "sha256": "0wwzfas2q81wl3vnwhadyb14fgrzk5s4l65zk5js137x93vvi0k0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB1bmRlY29yYXRlIGl0ZW0gaW4gd2luZG93IG1lbnUuIFVzZSBBTFQrU3BhY2UgdG8gc2hvdyB3aW5kb3cgbWVudS4iLAogICJuYW1lIjogIlVuZGVjb3JhdGUgV2luZG93IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJzdW4ud3hnQGdtYWlsLmNvbSIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi11bmRlY29yYXRlIiwKICAidXVpZCI6ICJ1bmRlY29yYXRlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "10", "sha256": "19d5pbb0j1dnpgjf97215rz69xpblfp9q631mnxwin9gp65v0k0n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB1bmRlY29yYXRlIGl0ZW0gaW4gd2luZG93IG1lbnUuIFVzZSBBTFQrU3BhY2UgdG8gc2hvdyB3aW5kb3cgbWVudS4iLAogICJleHRlbnNpb24taWQiOiAidW5kZWNvcmF0ZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIlVuZGVjb3JhdGUgV2luZG93IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVuZGVjb3JhdGUiLAogICJ1dWlkIjogInVuZGVjb3JhdGVAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="}
+    "45": {"version": "11", "sha256": "1fyyvhqhjrklak5i716maspm1x6ikcmify4b2bzb22bbgddsfxa5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB1bmRlY29yYXRlIGl0ZW0gaW4gd2luZG93IG1lbnUuIFVzZSBBTFQrU3BhY2UgdG8gc2hvdyB3aW5kb3cgbWVudS4iLAogICJleHRlbnNpb24taWQiOiAidW5kZWNvcmF0ZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIlVuZGVjb3JhdGUgV2luZG93IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi11bmRlY29yYXRlIiwKICAidXVpZCI6ICJ1bmRlY29yYXRlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
+    "46": {"version": "11", "sha256": "1fyyvhqhjrklak5i716maspm1x6ikcmify4b2bzb22bbgddsfxa5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB1bmRlY29yYXRlIGl0ZW0gaW4gd2luZG93IG1lbnUuIFVzZSBBTFQrU3BhY2UgdG8gc2hvdyB3aW5kb3cgbWVudS4iLAogICJleHRlbnNpb24taWQiOiAidW5kZWNvcmF0ZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIlVuZGVjb3JhdGUgV2luZG93IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi11bmRlY29yYXRlIiwKICAidXVpZCI6ICJ1bmRlY29yYXRlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDExCn0="}
   }}
 , {"uuid": "rcd@criztovyl.space", "name": "Right Click Down", "pname": "right-click-down", "description": "Moves windows one workspace down by right-clicking them in the overview.", "link": "https://extensions.gnome.org/extension/1210/right-click-down/", "shell_version_map": {
     "38": {"version": "3", "sha256": "1vh9capapzbbwg2zlw9iphdk48q6fqk0qsmaylvsvw59xc7f9bia", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHdpbmRvd3Mgb25lIHdvcmtzcGFjZSBkb3duIGJ5IHJpZ2h0LWNsaWNraW5nIHRoZW0gaW4gdGhlIG92ZXJ2aWV3LiIsCiAgImV4dGVuc2lvbi1pZCI6ICJyY2QiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbmlvbnMtcmlnaHQtY2xpY2stZG93biIsCiAgIm5hbWUiOiAiUmlnaHQgQ2xpY2sgRG93biIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5yaWdodC1jbGljay1kb3duIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4LjAiLAogICAgIjMuMzguMSIsCiAgICAiMy4zOC4yIiwKICAgICI0MC5hbHBoYSIsCiAgICAiNDAuYWxwaGEiLAogICAgIjMuMzguMyIsCiAgICAiMy4zNy45MiIsCiAgICAiMy4zNy45MSIsCiAgICAiMy4zNy45MCIsCiAgICAiMy4zNy4zIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vY3JpenRvdnlsL2dub21lLXJpZ2h0LWNsaWNrLWRvd24iLAogICJ1dWlkIjogInJjZEBjcml6dG92eWwuc3BhY2UiLAogICJ2ZXJzaW9uIjogMwp9"},
@@ -1075,7 +1128,8 @@
     "42": {"version": "36", "sha256": "1m7v0apk4csy7wq0wzxspfqjazqpchnwmwmcj4hngspz9z0zmky4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgbGlrZSB1c2luZyBBTFQrVEFCIGtleSB0byBzd2l0Y2ggd2luZG93cyBcblxuIERlZmF1bHQgc2hvcnRjdXQga2V5IHRvIHN3aXRjaCB3b3Jrc3BhY2UgaXMgQ3RybCtBYm92ZV9UYWIgLiIsCiAgIm5hbWUiOiAiU3dpdGNoIFdvcmtzcGFjZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAic3VuLnd4Z0BnbWFpbC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXN3aXRjaHdvcmtzcGFjZSIsCiAgInV1aWQiOiAic3dpdGNoV29ya1NwYWNlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM2Cn0="},
     "43": {"version": "36", "sha256": "1m7v0apk4csy7wq0wzxspfqjazqpchnwmwmcj4hngspz9z0zmky4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgbGlrZSB1c2luZyBBTFQrVEFCIGtleSB0byBzd2l0Y2ggd2luZG93cyBcblxuIERlZmF1bHQgc2hvcnRjdXQga2V5IHRvIHN3aXRjaCB3b3Jrc3BhY2UgaXMgQ3RybCtBYm92ZV9UYWIgLiIsCiAgIm5hbWUiOiAiU3dpdGNoIFdvcmtzcGFjZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAic3VuLnd4Z0BnbWFpbC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXN3aXRjaHdvcmtzcGFjZSIsCiAgInV1aWQiOiAic3dpdGNoV29ya1NwYWNlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM2Cn0="},
     "44": {"version": "36", "sha256": "1m7v0apk4csy7wq0wzxspfqjazqpchnwmwmcj4hngspz9z0zmky4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgbGlrZSB1c2luZyBBTFQrVEFCIGtleSB0byBzd2l0Y2ggd2luZG93cyBcblxuIERlZmF1bHQgc2hvcnRjdXQga2V5IHRvIHN3aXRjaCB3b3Jrc3BhY2UgaXMgQ3RybCtBYm92ZV9UYWIgLiIsCiAgIm5hbWUiOiAiU3dpdGNoIFdvcmtzcGFjZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAic3VuLnd4Z0BnbWFpbC5jb20iCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXN3aXRjaHdvcmtzcGFjZSIsCiAgInV1aWQiOiAic3dpdGNoV29ya1NwYWNlQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM2Cn0="},
-    "45": {"version": "37", "sha256": "0ng09kk9ipqkz5kvdj3r3mk69j2rfgv9cbnvklrzvd4vvx853zbx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgbGlrZSB1c2luZyBBTFQrVEFCIGtleSB0byBzd2l0Y2ggd2luZG93cyBcblxuIERlZmF1bHQgc2hvcnRjdXQga2V5IHRvIHN3aXRjaCB3b3Jrc3BhY2UgaXMgQ3RybCtBYm92ZV9UYWIgLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJzd2l0Y2gtd29ya3NwYWNlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiU3dpdGNoIFdvcmtzcGFjZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3dpdGNoV29ya1NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tc3dpdGNod29ya3NwYWNlIiwKICAidXVpZCI6ICJzd2l0Y2hXb3JrU3BhY2VAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzcKfQ=="}
+    "45": {"version": "37", "sha256": "0ng09kk9ipqkz5kvdj3r3mk69j2rfgv9cbnvklrzvd4vvx853zbx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgbGlrZSB1c2luZyBBTFQrVEFCIGtleSB0byBzd2l0Y2ggd2luZG93cyBcblxuIERlZmF1bHQgc2hvcnRjdXQga2V5IHRvIHN3aXRjaCB3b3Jrc3BhY2UgaXMgQ3RybCtBYm92ZV9UYWIgLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJzd2l0Y2gtd29ya3NwYWNlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiU3dpdGNoIFdvcmtzcGFjZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3dpdGNoV29ya1NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tc3dpdGNod29ya3NwYWNlIiwKICAidXVpZCI6ICJzd2l0Y2hXb3JrU3BhY2VAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzcKfQ=="},
+    "46": {"version": "38", "sha256": "1amic3gxc3slf2142652xp1jpdfvgp8pmgv9syr5ycd2sp6v0l6c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgbGlrZSB1c2luZyBBTFQrVEFCIGtleSB0byBzd2l0Y2ggd2luZG93cyBcblxuIERlZmF1bHQgc2hvcnRjdXQga2V5IHRvIHN3aXRjaCB3b3Jrc3BhY2UgaXMgQ3RybCtBYm92ZV9UYWIgLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJzd2l0Y2gtd29ya3NwYWNlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiU3dpdGNoIFdvcmtzcGFjZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3dpdGNoV29ya1NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tc3dpdGNod29ya3NwYWNlIiwKICAidXVpZCI6ICJzd2l0Y2hXb3JrU3BhY2VAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzgKfQ=="}
   }}
 , {"uuid": "noannoyance@sindex.com", "name": "NoAnnoyance", "pname": "noannoyance", "description": "Removes the 'Windows is ready' notification and puts the window into focus.", "link": "https://extensions.gnome.org/extension/1236/noannoyance/", "shell_version_map": {
     "38": {"version": "6", "sha256": "1zqxykbfcc11xmk201d7dgi2qy0srzcm9il0q745dh4sllz1ar9y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZXMgdGhlICdXaW5kb3dzIGlzIHJlYWR5JyBub3RpZmljYXRpb24gYW5kIHB1dHMgdGhlIHdpbmRvdyBpbnRvIGZvY3VzLiIsCiAgIm5hbWUiOiAiTm9Bbm5veWFuY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMTgiLAogICAgIjMuMjAiLAogICAgIjMuMjIiLAogICAgIjMuMjQiLAogICAgIjMuMjYiLAogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2luZGV4L25vLWFubm95YW5jZSIsCiAgInV1aWQiOiAibm9hbm5veWFuY2VAc2luZGV4LmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -1091,7 +1145,8 @@
     "42": {"version": "31", "sha256": "0f6wsvdfqzf7fpsk0rgp7rjm267xsy64ksq504krdlg9wpgammhj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3RlbiB0byBTb21hRm0gZnJlZSBpbnRlcm5ldCByYWRpbyBpbiB5b3VyIEdOT01FIGRlc2t0b3BcblxuKiBGZWF0dWVzOlxuLSAzMisgQ2hhbm5lbHNcbi0gVm9sdW1lIHNsaWRlclxuLSBGYXZvcml0ZXMgbWVudVxuLSBHb29kIHNvdW5kIHF1YWxpdHlcbi0gU3VwcG9ydHMgbW9zdCBnbm9tZS1zaGVsbCB2ZXJzaW9uc1xuLSBDaGFubmVsIGxvZ29zXG5cbiogUmVxdWlyZW1lbnRzOlxuLSBHc3RyZWFtZXIgYW5kIHBsdWdpbnM6XG5Zb3UgbmVlZCB0byBpbnN0YWxsICdnc3RyZWFtZXInIGFuZCBtdWx0aW1lZGlhIGNvZGVjcy9wbHVnaW5zIGZvciB5b3VyIGRpc3Ryby4iLAogICJuYW1lIjogIlNvbWFGTSBpbnRlcm5ldCByYWRpbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwOi8vZ2l0aHViLmNvbS9UaGVXZWlyZERldi9zb21hZm0tcmFkaW8tZ25vbWUtZXh0IiwKICAidXVpZCI6ICJTb21hRm0tUmFkaW9AYWxpcmV6YTY2NzcuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMxCn0="},
     "43": {"version": "31", "sha256": "0f6wsvdfqzf7fpsk0rgp7rjm267xsy64ksq504krdlg9wpgammhj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3RlbiB0byBTb21hRm0gZnJlZSBpbnRlcm5ldCByYWRpbyBpbiB5b3VyIEdOT01FIGRlc2t0b3BcblxuKiBGZWF0dWVzOlxuLSAzMisgQ2hhbm5lbHNcbi0gVm9sdW1lIHNsaWRlclxuLSBGYXZvcml0ZXMgbWVudVxuLSBHb29kIHNvdW5kIHF1YWxpdHlcbi0gU3VwcG9ydHMgbW9zdCBnbm9tZS1zaGVsbCB2ZXJzaW9uc1xuLSBDaGFubmVsIGxvZ29zXG5cbiogUmVxdWlyZW1lbnRzOlxuLSBHc3RyZWFtZXIgYW5kIHBsdWdpbnM6XG5Zb3UgbmVlZCB0byBpbnN0YWxsICdnc3RyZWFtZXInIGFuZCBtdWx0aW1lZGlhIGNvZGVjcy9wbHVnaW5zIGZvciB5b3VyIGRpc3Ryby4iLAogICJuYW1lIjogIlNvbWFGTSBpbnRlcm5ldCByYWRpbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwOi8vZ2l0aHViLmNvbS9UaGVXZWlyZERldi9zb21hZm0tcmFkaW8tZ25vbWUtZXh0IiwKICAidXVpZCI6ICJTb21hRm0tUmFkaW9AYWxpcmV6YTY2NzcuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMxCn0="},
     "44": {"version": "31", "sha256": "0f6wsvdfqzf7fpsk0rgp7rjm267xsy64ksq504krdlg9wpgammhj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3RlbiB0byBTb21hRm0gZnJlZSBpbnRlcm5ldCByYWRpbyBpbiB5b3VyIEdOT01FIGRlc2t0b3BcblxuKiBGZWF0dWVzOlxuLSAzMisgQ2hhbm5lbHNcbi0gVm9sdW1lIHNsaWRlclxuLSBGYXZvcml0ZXMgbWVudVxuLSBHb29kIHNvdW5kIHF1YWxpdHlcbi0gU3VwcG9ydHMgbW9zdCBnbm9tZS1zaGVsbCB2ZXJzaW9uc1xuLSBDaGFubmVsIGxvZ29zXG5cbiogUmVxdWlyZW1lbnRzOlxuLSBHc3RyZWFtZXIgYW5kIHBsdWdpbnM6XG5Zb3UgbmVlZCB0byBpbnN0YWxsICdnc3RyZWFtZXInIGFuZCBtdWx0aW1lZGlhIGNvZGVjcy9wbHVnaW5zIGZvciB5b3VyIGRpc3Ryby4iLAogICJuYW1lIjogIlNvbWFGTSBpbnRlcm5ldCByYWRpbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwOi8vZ2l0aHViLmNvbS9UaGVXZWlyZERldi9zb21hZm0tcmFkaW8tZ25vbWUtZXh0IiwKICAidXVpZCI6ICJTb21hRm0tUmFkaW9AYWxpcmV6YTY2NzcuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMxCn0="},
-    "45": {"version": "38", "sha256": "1j5bk8w1z5wpn5jy1zfssyiibd8c66fyqrph8k2z67jsag0dk0sj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3RlbiB0byBTb21hRm0gZnJlZSBpbnRlcm5ldCByYWRpbyBpbiB5b3VyIEdOT01FIGRlc2t0b3BcblxuKiBGZWF0dWVzOlxuLSAzMisgQ2hhbm5lbHNcbi0gVm9sdW1lIHNsaWRlclxuLSBGYXZvcml0ZXMgbWVudVxuLSBHb29kIHNvdW5kIHF1YWxpdHlcbi0gU3VwcG9ydHMgbW9zdCBnbm9tZS1zaGVsbCB2ZXJzaW9uc1xuLSBDaGFubmVsIGxvZ29zXG4tIEhvbGlkYXkgY2hhbm5lbHMgKG9ubHkgaW4gRGVjZW1iZXIpXG5cbiogUmVxdWlyZW1lbnRzOlxuLSBHc3RyZWFtZXIgYW5kIHBsdWdpbnM6XG5Zb3UgbmVlZCB0byBpbnN0YWxsICdnc3RyZWFtZXInIGFuZCBtdWx0aW1lZGlhIGNvZGVjcy9wbHVnaW5zIGZvciB5b3VyIGRpc3Ryby4iLAogICJuYW1lIjogIlNvbWFGTSBpbnRlcm5ldCByYWRpbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHA6Ly9naXRodWIuY29tL1RoZVdlaXJkRGV2L3NvbWFmbS1yYWRpby1nbm9tZS1leHQiLAogICJ1dWlkIjogIlNvbWFGbS1SYWRpb0BhbGlyZXphNjY3Ny5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzgKfQ=="}
+    "45": {"version": "39", "sha256": "0havccc37vgkqyf5fl00wxyzw56gdx75bb175i3zwxzck6cajj2v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3RlbiB0byBTb21hRm0gZnJlZSBpbnRlcm5ldCByYWRpbyBpbiB5b3VyIEdOT01FIGRlc2t0b3BcblxuKiBGZWF0dWVzOlxuLSAzMisgQ2hhbm5lbHNcbi0gVm9sdW1lIHNsaWRlclxuLSBGYXZvcml0ZXMgbWVudVxuLSBHb29kIHNvdW5kIHF1YWxpdHlcbi0gU3VwcG9ydHMgbW9zdCBnbm9tZS1zaGVsbCB2ZXJzaW9uc1xuLSBDaGFubmVsIGxvZ29zXG4tIEhvbGlkYXkgY2hhbm5lbHMgKG9ubHkgaW4gRGVjZW1iZXIpXG5cbiogUmVxdWlyZW1lbnRzOlxuLSBHc3RyZWFtZXIgYW5kIHBsdWdpbnM6XG5Zb3UgbmVlZCB0byBpbnN0YWxsICdnc3RyZWFtZXInIGFuZCBtdWx0aW1lZGlhIGNvZGVjcy9wbHVnaW5zIGZvciB5b3VyIGRpc3Ryby4iLAogICJuYW1lIjogIlNvbWFGTSBpbnRlcm5ldCByYWRpbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwOi8vZ2l0aHViLmNvbS9UaGVXZWlyZERldi9zb21hZm0tcmFkaW8tZ25vbWUtZXh0IiwKICAidXVpZCI6ICJTb21hRm0tUmFkaW9AYWxpcmV6YTY2NzcuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM5Cn0="},
+    "46": {"version": "39", "sha256": "0havccc37vgkqyf5fl00wxyzw56gdx75bb175i3zwxzck6cajj2v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3RlbiB0byBTb21hRm0gZnJlZSBpbnRlcm5ldCByYWRpbyBpbiB5b3VyIEdOT01FIGRlc2t0b3BcblxuKiBGZWF0dWVzOlxuLSAzMisgQ2hhbm5lbHNcbi0gVm9sdW1lIHNsaWRlclxuLSBGYXZvcml0ZXMgbWVudVxuLSBHb29kIHNvdW5kIHF1YWxpdHlcbi0gU3VwcG9ydHMgbW9zdCBnbm9tZS1zaGVsbCB2ZXJzaW9uc1xuLSBDaGFubmVsIGxvZ29zXG4tIEhvbGlkYXkgY2hhbm5lbHMgKG9ubHkgaW4gRGVjZW1iZXIpXG5cbiogUmVxdWlyZW1lbnRzOlxuLSBHc3RyZWFtZXIgYW5kIHBsdWdpbnM6XG5Zb3UgbmVlZCB0byBpbnN0YWxsICdnc3RyZWFtZXInIGFuZCBtdWx0aW1lZGlhIGNvZGVjcy9wbHVnaW5zIGZvciB5b3VyIGRpc3Ryby4iLAogICJuYW1lIjogIlNvbWFGTSBpbnRlcm5ldCByYWRpbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwOi8vZ2l0aHViLmNvbS9UaGVXZWlyZERldi9zb21hZm0tcmFkaW8tZ25vbWUtZXh0IiwKICAidXVpZCI6ICJTb21hRm0tUmFkaW9AYWxpcmV6YTY2NzcuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM5Cn0="}
   }}
 , {"uuid": "timepp@zagortenay333", "name": "Time++", "pname": "time", "description": "All-in-one timer, stopwatch, pomodoro, alarm, todo and time tracker\n\nThis extension has been renamed and is available at:\n\nhttps://extensions.gnome.org/extension/6003/cronomix/\n", "link": "https://extensions.gnome.org/extension/1238/time/", "shell_version_map": {
     "38": {"version": "155", "sha256": "0q3612mlccfzma6i9vs3g42xg71axach3gi7llajrlx59y5jjgb5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNhY2hlLWZpbGUtZm9ybWF0LXZlcnNpb24iOiB7CiAgICAiYWxhcm1zIjogMywKICAgICJwb21vZG9ybyI6IDMsCiAgICAic3RvcHdhdGNoIjogNCwKICAgICJ0aW1lciI6IDMsCiAgICAidG9kbyI6IDEwCiAgfSwKICAiZGVzY3JpcHRpb24iOiAiQWxsLWluLW9uZSB0aW1lciwgc3RvcHdhdGNoLCBwb21vZG9ybywgYWxhcm0sIHRvZG8gYW5kIHRpbWUgdHJhY2tlclxuXG5UaGlzIGV4dGVuc2lvbiBoYXMgYmVlbiByZW5hbWVkIGFuZCBpcyBhdmFpbGFibGUgYXQ6XG5cbmh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzYwMDMvY3Jvbm9taXgvXG4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ0aW1lcHAiLAogICJpc3N1ZXNfdXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96YWdvcnRlbmF5MzMzL3RpbWVwcF9fZ25vbWUvaXNzdWVzIiwKICAibmFtZSI6ICJUaW1lKysiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiaHR0cHM6Ly9naXRodWIuY29tL3phZ29ydGVuYXkzMzMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidHJhbnNsYXRpb25zX3VybCI6ICJodHRwczovL2dpdGh1Yi5jb20vemFnb3J0ZW5heTMzMy90aW1lcHBfX2dub21lL3RyZWUvbWFzdGVyL2RhdGEvcG9fZmlsZXMiLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3phZ29ydGVuYXkzMzMvY3Jvbm9taXgiLAogICJ1dWlkIjogInRpbWVwcEB6YWdvcnRlbmF5MzMzIiwKICAidmVyc2lvbiI6IDE1NQp9"},
@@ -1111,7 +1166,8 @@
     "42": {"version": "45", "sha256": "0dyb94ncgimzl6iyfrxls8kqca0bsykkws6zmjdq657rckjgainj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN5bmMgeW91ciB3YWxscGFwZXIgdG8gdG9kYXkncyBNaWNyb3NvZnQgQmluZyBpbWFnZSBvZiB0aGUgZGF5ICh0aGUgaW1hZ2UgeW91IHNlZSB3aGVuIHlvdSB2aXNpdCBCaW5nLmNvbSkuXG5cbiAqRGlzY2xhaW1lcio6IHRoaXMgZXh0ZW5zaW9uIGlzIHVub2ZmaWNpYWwgYW5kIG5vdCBhZmZpbGlhdGVkIHdpdGggQmluZyBvciBNaWNyb3NvZnQgaW4gYW55IHdheS4gSW1hZ2VzIGFyZSBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGFuZCBhcmUgbGljZW5zZWQgb25seSBmb3IgdXNlIGFzIHdhbGxwYXBlcnMuXG5cbkZlYXR1cmVzOlxuKiBVSEQgcmVzb2x1dGlvbiB3YWxscGFwZXJzXG4qIEF1dG9tYXRpY2FsbHkgZmV0Y2hlcyBjdXJyZW50IEJpbmcgd2FsbHBhcGVyIG9mIHRoZSBkYXkgYW5kIHNldHMgYXMgYm90aCBsb2NrIHNjcmVlbiBhbmQgZGVza3RvcCB3YWxscGFwZXIgKHVzZXIgc2VsZWN0YWJsZSBvbiBHTk9NRSB2ZXJzaW9ucyB0aGF0IHN1cHBvcnQgaXQpXG4qIERvZXNuJ3QgcG9sbCBjb250aW51b3VzbHkgLSBvbmx5IG9uY2UgcGVyIGRheSBhbmQgb24gc3RhcnR1cCAoc2NoZWR1bGVzIGEgcmVmcmVzaCB3aGVuIEJpbmcgaXMgZHVlIHRvIHVwZGF0ZSlcbiAqIHJhbmRvbSBtb2RlIChmcm9tIHByZXZpb3VzbHkgZG93bmxvYWRlZCB3YWxscGFwZXJzKVxuICpORVc6IHNlbGVjdC9jeWNsZSB3YWxscGFwZXIgdGhyb3VnaCBwcmV2aW91c2x5IGRvd25sb2FkZWQgaW1hZ2VzXG4qIExhbmd1YWdlIHN1cHBvcnQ6IEVuZ2xpc2ggKGVuKSwgR2VybWFuIChkZSksIER1dGNoIChubCksIEl0YWxpYW4gKGl0KSwgUG9saXNoIChwbCksIENoaW5lc2UgKHpoX0NOLCB6aF9UVyksIEZyZW5jaCAoZnJfRlIpLCBQb3J0dWd1ZXNlIChwdCwgcHRfQlIpLCBVa3JhaW5pYW4gKHVrKSwgUnVzc2lhbiAocnVfUlUpLCBTcGFuaXNoIChlcyksIEtvcmVhbiAoa28pLCBJbmRvbmVzaWFuIChpZCksIENhdGFsYW4gKGNhKSwgTm9yd2VnaWFuIEJva21cdTAwZTVsIChuYikgJiBOeW5vcnNrIChuaSksIFN3ZWRpc2ggKHN2KSwgQXJhYmljIChhciksIEh1bmdhcmlhbiAoaHUpIGFuZCBKYXBhbmVzZSAoamEpIC0gYSBIVUdFIHRoYW5rcyB0byB0aGUgdHJhbnNsYXRvcnNcblxuVGhpcyBleHRlbnNpb24gd2FzIGZvcmtlZCBmcm9tIHRoZSBOQVNBIEFQT0QgZXh0ZW5zaW9uIGJ5IEVsaW52ZW50aW9uIChodHRwczovL2dpdGh1Yi5jb20vRWxpbnZlbnRpb24pIGFuZCBpbnNwaXJlZCBieSBCaW5nIERlc2t0b3AgV2FsbHBhcGVyIENoYW5nZXIgYnkgVXRrYXJzaCBHdXB0YSAoaHR0cHM6Ly9naXRodWIuY29tL1V0a2Fyc2hHcHRhKS5cblxuQWx3YXlzIHJlc3RhcnQgR05PTUUgYWZ0ZXIgbWFudWFsbHkgdXBkYXRpbmcgZXh0ZW5zaW9ucy4gUGxlYXNlIHJlcG9ydCBidWdzIHRvIHRoZSBHaXRIdWIgcGFnZSBiZWxvdzoiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCaW5nV2FsbHBhcGVyIiwKICAibmFtZSI6ICJCaW5nIFdhbGxwYXBlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iaW5nd2FsbHBhcGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZWZmby9iaW5nLXdhbGxwYXBlci1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIkJpbmdXYWxscGFwZXJAaW5lZmZhYmxlLWdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0NQp9"},
     "43": {"version": "45", "sha256": "0dyb94ncgimzl6iyfrxls8kqca0bsykkws6zmjdq657rckjgainj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN5bmMgeW91ciB3YWxscGFwZXIgdG8gdG9kYXkncyBNaWNyb3NvZnQgQmluZyBpbWFnZSBvZiB0aGUgZGF5ICh0aGUgaW1hZ2UgeW91IHNlZSB3aGVuIHlvdSB2aXNpdCBCaW5nLmNvbSkuXG5cbiAqRGlzY2xhaW1lcio6IHRoaXMgZXh0ZW5zaW9uIGlzIHVub2ZmaWNpYWwgYW5kIG5vdCBhZmZpbGlhdGVkIHdpdGggQmluZyBvciBNaWNyb3NvZnQgaW4gYW55IHdheS4gSW1hZ2VzIGFyZSBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGFuZCBhcmUgbGljZW5zZWQgb25seSBmb3IgdXNlIGFzIHdhbGxwYXBlcnMuXG5cbkZlYXR1cmVzOlxuKiBVSEQgcmVzb2x1dGlvbiB3YWxscGFwZXJzXG4qIEF1dG9tYXRpY2FsbHkgZmV0Y2hlcyBjdXJyZW50IEJpbmcgd2FsbHBhcGVyIG9mIHRoZSBkYXkgYW5kIHNldHMgYXMgYm90aCBsb2NrIHNjcmVlbiBhbmQgZGVza3RvcCB3YWxscGFwZXIgKHVzZXIgc2VsZWN0YWJsZSBvbiBHTk9NRSB2ZXJzaW9ucyB0aGF0IHN1cHBvcnQgaXQpXG4qIERvZXNuJ3QgcG9sbCBjb250aW51b3VzbHkgLSBvbmx5IG9uY2UgcGVyIGRheSBhbmQgb24gc3RhcnR1cCAoc2NoZWR1bGVzIGEgcmVmcmVzaCB3aGVuIEJpbmcgaXMgZHVlIHRvIHVwZGF0ZSlcbiAqIHJhbmRvbSBtb2RlIChmcm9tIHByZXZpb3VzbHkgZG93bmxvYWRlZCB3YWxscGFwZXJzKVxuICpORVc6IHNlbGVjdC9jeWNsZSB3YWxscGFwZXIgdGhyb3VnaCBwcmV2aW91c2x5IGRvd25sb2FkZWQgaW1hZ2VzXG4qIExhbmd1YWdlIHN1cHBvcnQ6IEVuZ2xpc2ggKGVuKSwgR2VybWFuIChkZSksIER1dGNoIChubCksIEl0YWxpYW4gKGl0KSwgUG9saXNoIChwbCksIENoaW5lc2UgKHpoX0NOLCB6aF9UVyksIEZyZW5jaCAoZnJfRlIpLCBQb3J0dWd1ZXNlIChwdCwgcHRfQlIpLCBVa3JhaW5pYW4gKHVrKSwgUnVzc2lhbiAocnVfUlUpLCBTcGFuaXNoIChlcyksIEtvcmVhbiAoa28pLCBJbmRvbmVzaWFuIChpZCksIENhdGFsYW4gKGNhKSwgTm9yd2VnaWFuIEJva21cdTAwZTVsIChuYikgJiBOeW5vcnNrIChuaSksIFN3ZWRpc2ggKHN2KSwgQXJhYmljIChhciksIEh1bmdhcmlhbiAoaHUpIGFuZCBKYXBhbmVzZSAoamEpIC0gYSBIVUdFIHRoYW5rcyB0byB0aGUgdHJhbnNsYXRvcnNcblxuVGhpcyBleHRlbnNpb24gd2FzIGZvcmtlZCBmcm9tIHRoZSBOQVNBIEFQT0QgZXh0ZW5zaW9uIGJ5IEVsaW52ZW50aW9uIChodHRwczovL2dpdGh1Yi5jb20vRWxpbnZlbnRpb24pIGFuZCBpbnNwaXJlZCBieSBCaW5nIERlc2t0b3AgV2FsbHBhcGVyIENoYW5nZXIgYnkgVXRrYXJzaCBHdXB0YSAoaHR0cHM6Ly9naXRodWIuY29tL1V0a2Fyc2hHcHRhKS5cblxuQWx3YXlzIHJlc3RhcnQgR05PTUUgYWZ0ZXIgbWFudWFsbHkgdXBkYXRpbmcgZXh0ZW5zaW9ucy4gUGxlYXNlIHJlcG9ydCBidWdzIHRvIHRoZSBHaXRIdWIgcGFnZSBiZWxvdzoiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCaW5nV2FsbHBhcGVyIiwKICAibmFtZSI6ICJCaW5nIFdhbGxwYXBlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iaW5nd2FsbHBhcGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZWZmby9iaW5nLXdhbGxwYXBlci1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIkJpbmdXYWxscGFwZXJAaW5lZmZhYmxlLWdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0NQp9"},
     "44": {"version": "45", "sha256": "0dyb94ncgimzl6iyfrxls8kqca0bsykkws6zmjdq657rckjgainj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN5bmMgeW91ciB3YWxscGFwZXIgdG8gdG9kYXkncyBNaWNyb3NvZnQgQmluZyBpbWFnZSBvZiB0aGUgZGF5ICh0aGUgaW1hZ2UgeW91IHNlZSB3aGVuIHlvdSB2aXNpdCBCaW5nLmNvbSkuXG5cbiAqRGlzY2xhaW1lcio6IHRoaXMgZXh0ZW5zaW9uIGlzIHVub2ZmaWNpYWwgYW5kIG5vdCBhZmZpbGlhdGVkIHdpdGggQmluZyBvciBNaWNyb3NvZnQgaW4gYW55IHdheS4gSW1hZ2VzIGFyZSBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGFuZCBhcmUgbGljZW5zZWQgb25seSBmb3IgdXNlIGFzIHdhbGxwYXBlcnMuXG5cbkZlYXR1cmVzOlxuKiBVSEQgcmVzb2x1dGlvbiB3YWxscGFwZXJzXG4qIEF1dG9tYXRpY2FsbHkgZmV0Y2hlcyBjdXJyZW50IEJpbmcgd2FsbHBhcGVyIG9mIHRoZSBkYXkgYW5kIHNldHMgYXMgYm90aCBsb2NrIHNjcmVlbiBhbmQgZGVza3RvcCB3YWxscGFwZXIgKHVzZXIgc2VsZWN0YWJsZSBvbiBHTk9NRSB2ZXJzaW9ucyB0aGF0IHN1cHBvcnQgaXQpXG4qIERvZXNuJ3QgcG9sbCBjb250aW51b3VzbHkgLSBvbmx5IG9uY2UgcGVyIGRheSBhbmQgb24gc3RhcnR1cCAoc2NoZWR1bGVzIGEgcmVmcmVzaCB3aGVuIEJpbmcgaXMgZHVlIHRvIHVwZGF0ZSlcbiAqIHJhbmRvbSBtb2RlIChmcm9tIHByZXZpb3VzbHkgZG93bmxvYWRlZCB3YWxscGFwZXJzKVxuICpORVc6IHNlbGVjdC9jeWNsZSB3YWxscGFwZXIgdGhyb3VnaCBwcmV2aW91c2x5IGRvd25sb2FkZWQgaW1hZ2VzXG4qIExhbmd1YWdlIHN1cHBvcnQ6IEVuZ2xpc2ggKGVuKSwgR2VybWFuIChkZSksIER1dGNoIChubCksIEl0YWxpYW4gKGl0KSwgUG9saXNoIChwbCksIENoaW5lc2UgKHpoX0NOLCB6aF9UVyksIEZyZW5jaCAoZnJfRlIpLCBQb3J0dWd1ZXNlIChwdCwgcHRfQlIpLCBVa3JhaW5pYW4gKHVrKSwgUnVzc2lhbiAocnVfUlUpLCBTcGFuaXNoIChlcyksIEtvcmVhbiAoa28pLCBJbmRvbmVzaWFuIChpZCksIENhdGFsYW4gKGNhKSwgTm9yd2VnaWFuIEJva21cdTAwZTVsIChuYikgJiBOeW5vcnNrIChuaSksIFN3ZWRpc2ggKHN2KSwgQXJhYmljIChhciksIEh1bmdhcmlhbiAoaHUpIGFuZCBKYXBhbmVzZSAoamEpIC0gYSBIVUdFIHRoYW5rcyB0byB0aGUgdHJhbnNsYXRvcnNcblxuVGhpcyBleHRlbnNpb24gd2FzIGZvcmtlZCBmcm9tIHRoZSBOQVNBIEFQT0QgZXh0ZW5zaW9uIGJ5IEVsaW52ZW50aW9uIChodHRwczovL2dpdGh1Yi5jb20vRWxpbnZlbnRpb24pIGFuZCBpbnNwaXJlZCBieSBCaW5nIERlc2t0b3AgV2FsbHBhcGVyIENoYW5nZXIgYnkgVXRrYXJzaCBHdXB0YSAoaHR0cHM6Ly9naXRodWIuY29tL1V0a2Fyc2hHcHRhKS5cblxuQWx3YXlzIHJlc3RhcnQgR05PTUUgYWZ0ZXIgbWFudWFsbHkgdXBkYXRpbmcgZXh0ZW5zaW9ucy4gUGxlYXNlIHJlcG9ydCBidWdzIHRvIHRoZSBHaXRIdWIgcGFnZSBiZWxvdzoiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCaW5nV2FsbHBhcGVyIiwKICAibmFtZSI6ICJCaW5nIFdhbGxwYXBlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iaW5nd2FsbHBhcGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZWZmby9iaW5nLXdhbGxwYXBlci1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogIkJpbmdXYWxscGFwZXJAaW5lZmZhYmxlLWdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0NQp9"},
-    "45": {"version": "48", "sha256": "0qprs8yf851d541krkqzhrb57srww64mm7qyahlfd5pdcqx95gky", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN5bmMgeW91ciB3YWxscGFwZXIgdG8gdG9kYXkncyBNaWNyb3NvZnQgQmluZyBpbWFnZSBvZiB0aGUgZGF5ICh0aGUgaW1hZ2UgeW91IHNlZSB3aGVuIHlvdSB2aXNpdCBCaW5nLmNvbSkuXG5cbiAqRGlzY2xhaW1lcio6IHRoaXMgZXh0ZW5zaW9uIGlzIHVub2ZmaWNpYWwgYW5kIG5vdCBhZmZpbGlhdGVkIHdpdGggQmluZyBvciBNaWNyb3NvZnQgaW4gYW55IHdheS4gSW1hZ2VzIGFyZSBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGFuZCBhcmUgbGljZW5zZWQgb25seSBmb3IgdXNlIGFzIHdhbGxwYXBlcnMuXG5cbkZlYXR1cmVzOlxuKiBVSEQgcmVzb2x1dGlvbiB3YWxscGFwZXJzXG4qIEF1dG9tYXRpY2FsbHkgZmV0Y2hlcyBjdXJyZW50IEJpbmcgd2FsbHBhcGVyIG9mIHRoZSBkYXkgYW5kIHNldHMgYXMgYm90aCBsb2NrIHNjcmVlbiBhbmQgZGVza3RvcCB3YWxscGFwZXIgKHVzZXIgc2VsZWN0YWJsZSBvbiBHTk9NRSB2ZXJzaW9ucyB0aGF0IHN1cHBvcnQgaXQpXG4qIERvZXNuJ3QgcG9sbCBjb250aW51b3VzbHkgLSBvbmx5IG9uY2UgcGVyIGRheSBhbmQgb24gc3RhcnR1cCAoc2NoZWR1bGVzIGEgcmVmcmVzaCB3aGVuIEJpbmcgaXMgZHVlIHRvIHVwZGF0ZSlcbiAqIHJhbmRvbSBtb2RlIChmcm9tIHByZXZpb3VzbHkgZG93bmxvYWRlZCB3YWxscGFwZXJzKVxuICpORVc6IHNlbGVjdC9jeWNsZSB3YWxscGFwZXIgdGhyb3VnaCBwcmV2aW91c2x5IGRvd25sb2FkZWQgaW1hZ2VzXG4qIExhbmd1YWdlIHN1cHBvcnQ6IEVuZ2xpc2ggKGVuKSwgR2VybWFuIChkZSksIER1dGNoIChubCksIEl0YWxpYW4gKGl0KSwgUG9saXNoIChwbCksIENoaW5lc2UgKHpoX0NOLCB6aF9UVyksIEZyZW5jaCAoZnIpLCBQb3J0dWd1ZXNlIChwdCksIFVrcmFpbmlhbiAodWspLCBSdXNzaWFuIChydV9SVSksIFNwYW5pc2ggKGVzKSwgS29yZWFuIChrbyksIEluZG9uZXNpYW4gKGlkKSwgQ2F0YWxhbiAoY2EpLCBOb3J3ZWdpYW4gQm9rbVx1MDBlNWwgKG5iKSAmIE55bm9yc2sgKG5pKSwgU3dlZGlzaCAoc3YpLCBBcmFiaWMgKGFyKSwgSHVuZ2FyaWFuIChodSkgYW5kIEphcGFuZXNlIChqYSkgLSBhIEhVR0UgdGhhbmtzIHRvIHRoZSB0cmFuc2xhdG9yc1xuXG5UaGlzIGV4dGVuc2lvbiB3YXMgZm9ya2VkIGZyb20gdGhlIE5BU0EgQVBPRCBleHRlbnNpb24gYnkgRWxpbnZlbnRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9FbGludmVudGlvbikgYW5kIGluc3BpcmVkIGJ5IEJpbmcgRGVza3RvcCBXYWxscGFwZXIgQ2hhbmdlciBieSBVdGthcnNoIEd1cHRhIChodHRwczovL2dpdGh1Yi5jb20vVXRrYXJzaEdwdGEpLlxuXG5BbHdheXMgcmVzdGFydCBHTk9NRSBhZnRlciBtYW51YWxseSB1cGRhdGluZyBleHRlbnNpb25zLiBQbGVhc2UgcmVwb3J0IGJ1Z3MgdG8gdGhlIEdpdEh1YiBwYWdlIGJlbG93OiIsCiAgImdldHRleHQtZG9tYWluIjogIkJpbmdXYWxscGFwZXIiLAogICJuYW1lIjogIkJpbmcgV2FsbHBhcGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJpbmd3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmVmZm8vYmluZy13YWxscGFwZXItZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJCaW5nV2FsbHBhcGVyQGluZWZmYWJsZS1nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNDgKfQ=="}
+    "45": {"version": "49", "sha256": "14c2s823q6rl0g9kgixicjrb6gnv2bz1x2ywkjr2shcjxkwkxs3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN5bmMgeW91ciB3YWxscGFwZXIgdG8gdG9kYXkncyBNaWNyb3NvZnQgQmluZyBpbWFnZSBvZiB0aGUgZGF5ICh0aGUgaW1hZ2UgeW91IHNlZSB3aGVuIHlvdSB2aXNpdCBCaW5nLmNvbSkuXG5cbiAqRGlzY2xhaW1lcio6IHRoaXMgZXh0ZW5zaW9uIGlzIHVub2ZmaWNpYWwgYW5kIG5vdCBhZmZpbGlhdGVkIHdpdGggQmluZyBvciBNaWNyb3NvZnQgaW4gYW55IHdheS4gSW1hZ2VzIGFyZSBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGFuZCBhcmUgbGljZW5zZWQgb25seSBmb3IgdXNlIGFzIHdhbGxwYXBlcnMuXG5cbkZlYXR1cmVzOlxuKiBVSEQgcmVzb2x1dGlvbiB3YWxscGFwZXJzXG4qIEF1dG9tYXRpY2FsbHkgZmV0Y2hlcyBjdXJyZW50IEJpbmcgd2FsbHBhcGVyIG9mIHRoZSBkYXkgYW5kIHNldHMgYXMgYm90aCBsb2NrIHNjcmVlbiBhbmQgZGVza3RvcCB3YWxscGFwZXIgKHVzZXIgc2VsZWN0YWJsZSBvbiBHTk9NRSB2ZXJzaW9ucyB0aGF0IHN1cHBvcnQgaXQpXG4qIERvZXNuJ3QgcG9sbCBjb250aW51b3VzbHkgLSBvbmx5IG9uY2UgcGVyIGRheSBhbmQgb24gc3RhcnR1cCAoc2NoZWR1bGVzIGEgcmVmcmVzaCB3aGVuIEJpbmcgaXMgZHVlIHRvIHVwZGF0ZSlcbiAqIHJhbmRvbSBtb2RlIChmcm9tIHByZXZpb3VzbHkgZG93bmxvYWRlZCB3YWxscGFwZXJzKVxuICpORVc6IHNlbGVjdC9jeWNsZSB3YWxscGFwZXIgdGhyb3VnaCBwcmV2aW91c2x5IGRvd25sb2FkZWQgaW1hZ2VzXG4qIExhbmd1YWdlIHN1cHBvcnQ6IEVuZ2xpc2ggKGVuKSwgR2VybWFuIChkZSksIER1dGNoIChubCksIEl0YWxpYW4gKGl0KSwgUG9saXNoIChwbCksIENoaW5lc2UgKHpoX0NOLCB6aF9UVyksIEZyZW5jaCAoZnIpLCBQb3J0dWd1ZXNlIChwdCksIFVrcmFpbmlhbiAodWspLCBSdXNzaWFuIChydV9SVSksIFNwYW5pc2ggKGVzKSwgS29yZWFuIChrbyksIEluZG9uZXNpYW4gKGlkKSwgQ2F0YWxhbiAoY2EpLCBOb3J3ZWdpYW4gQm9rbVx1MDBlNWwgKG5iKSAmIE55bm9yc2sgKG5pKSwgU3dlZGlzaCAoc3YpLCBBcmFiaWMgKGFyKSwgSHVuZ2FyaWFuIChodSkgYW5kIEphcGFuZXNlIChqYSkgLSBhIEhVR0UgdGhhbmtzIHRvIHRoZSB0cmFuc2xhdG9yc1xuXG5UaGlzIGV4dGVuc2lvbiB3YXMgZm9ya2VkIGZyb20gdGhlIE5BU0EgQVBPRCBleHRlbnNpb24gYnkgRWxpbnZlbnRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9FbGludmVudGlvbikgYW5kIGluc3BpcmVkIGJ5IEJpbmcgRGVza3RvcCBXYWxscGFwZXIgQ2hhbmdlciBieSBVdGthcnNoIEd1cHRhIChodHRwczovL2dpdGh1Yi5jb20vVXRrYXJzaEdwdGEpLlxuXG5BbHdheXMgcmVzdGFydCBHTk9NRSBhZnRlciBtYW51YWxseSB1cGRhdGluZyBleHRlbnNpb25zLiBQbGVhc2UgcmVwb3J0IGJ1Z3MgdG8gdGhlIEdpdEh1YiBwYWdlIGJlbG93OiIsCiAgImdldHRleHQtZG9tYWluIjogIkJpbmdXYWxscGFwZXIiLAogICJuYW1lIjogIkJpbmcgV2FsbHBhcGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJpbmd3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25lZmZvL2Jpbmctd2FsbHBhcGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQmluZ1dhbGxwYXBlckBpbmVmZmFibGUtZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDQ5Cn0="},
+    "46": {"version": "49", "sha256": "14c2s823q6rl0g9kgixicjrb6gnv2bz1x2ywkjr2shcjxkwkxs3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN5bmMgeW91ciB3YWxscGFwZXIgdG8gdG9kYXkncyBNaWNyb3NvZnQgQmluZyBpbWFnZSBvZiB0aGUgZGF5ICh0aGUgaW1hZ2UgeW91IHNlZSB3aGVuIHlvdSB2aXNpdCBCaW5nLmNvbSkuXG5cbiAqRGlzY2xhaW1lcio6IHRoaXMgZXh0ZW5zaW9uIGlzIHVub2ZmaWNpYWwgYW5kIG5vdCBhZmZpbGlhdGVkIHdpdGggQmluZyBvciBNaWNyb3NvZnQgaW4gYW55IHdheS4gSW1hZ2VzIGFyZSBwcm90ZWN0ZWQgYnkgY29weXJpZ2h0IGFuZCBhcmUgbGljZW5zZWQgb25seSBmb3IgdXNlIGFzIHdhbGxwYXBlcnMuXG5cbkZlYXR1cmVzOlxuKiBVSEQgcmVzb2x1dGlvbiB3YWxscGFwZXJzXG4qIEF1dG9tYXRpY2FsbHkgZmV0Y2hlcyBjdXJyZW50IEJpbmcgd2FsbHBhcGVyIG9mIHRoZSBkYXkgYW5kIHNldHMgYXMgYm90aCBsb2NrIHNjcmVlbiBhbmQgZGVza3RvcCB3YWxscGFwZXIgKHVzZXIgc2VsZWN0YWJsZSBvbiBHTk9NRSB2ZXJzaW9ucyB0aGF0IHN1cHBvcnQgaXQpXG4qIERvZXNuJ3QgcG9sbCBjb250aW51b3VzbHkgLSBvbmx5IG9uY2UgcGVyIGRheSBhbmQgb24gc3RhcnR1cCAoc2NoZWR1bGVzIGEgcmVmcmVzaCB3aGVuIEJpbmcgaXMgZHVlIHRvIHVwZGF0ZSlcbiAqIHJhbmRvbSBtb2RlIChmcm9tIHByZXZpb3VzbHkgZG93bmxvYWRlZCB3YWxscGFwZXJzKVxuICpORVc6IHNlbGVjdC9jeWNsZSB3YWxscGFwZXIgdGhyb3VnaCBwcmV2aW91c2x5IGRvd25sb2FkZWQgaW1hZ2VzXG4qIExhbmd1YWdlIHN1cHBvcnQ6IEVuZ2xpc2ggKGVuKSwgR2VybWFuIChkZSksIER1dGNoIChubCksIEl0YWxpYW4gKGl0KSwgUG9saXNoIChwbCksIENoaW5lc2UgKHpoX0NOLCB6aF9UVyksIEZyZW5jaCAoZnIpLCBQb3J0dWd1ZXNlIChwdCksIFVrcmFpbmlhbiAodWspLCBSdXNzaWFuIChydV9SVSksIFNwYW5pc2ggKGVzKSwgS29yZWFuIChrbyksIEluZG9uZXNpYW4gKGlkKSwgQ2F0YWxhbiAoY2EpLCBOb3J3ZWdpYW4gQm9rbVx1MDBlNWwgKG5iKSAmIE55bm9yc2sgKG5pKSwgU3dlZGlzaCAoc3YpLCBBcmFiaWMgKGFyKSwgSHVuZ2FyaWFuIChodSkgYW5kIEphcGFuZXNlIChqYSkgLSBhIEhVR0UgdGhhbmtzIHRvIHRoZSB0cmFuc2xhdG9yc1xuXG5UaGlzIGV4dGVuc2lvbiB3YXMgZm9ya2VkIGZyb20gdGhlIE5BU0EgQVBPRCBleHRlbnNpb24gYnkgRWxpbnZlbnRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9FbGludmVudGlvbikgYW5kIGluc3BpcmVkIGJ5IEJpbmcgRGVza3RvcCBXYWxscGFwZXIgQ2hhbmdlciBieSBVdGthcnNoIEd1cHRhIChodHRwczovL2dpdGh1Yi5jb20vVXRrYXJzaEdwdGEpLlxuXG5BbHdheXMgcmVzdGFydCBHTk9NRSBhZnRlciBtYW51YWxseSB1cGRhdGluZyBleHRlbnNpb25zLiBQbGVhc2UgcmVwb3J0IGJ1Z3MgdG8gdGhlIEdpdEh1YiBwYWdlIGJlbG93OiIsCiAgImdldHRleHQtZG9tYWluIjogIkJpbmdXYWxscGFwZXIiLAogICJuYW1lIjogIkJpbmcgV2FsbHBhcGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJpbmd3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25lZmZvL2Jpbmctd2FsbHBhcGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQmluZ1dhbGxwYXBlckBpbmVmZmFibGUtZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDQ5Cn0="}
   }}
 , {"uuid": "gnomesome@chwick.github.com", "name": "Gnomesome", "pname": "gnomesome", "description": "Tiling window manager with awesome keybindings", "link": "https://extensions.gnome.org/extension/1268/gnomesome/", "shell_version_map": {
     "38": {"version": "15", "sha256": "1dn67is3qk80xxfkc2pd43jrsyylmsprd7v3axvl677wdjgaq83z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyB3aW5kb3cgbWFuYWdlciB3aXRoIGF3ZXNvbWUga2V5YmluZGluZ3MiLAogICJuYW1lIjogIkdub21lc29tZSIsCiAgInNldHRpbmdzLWtleWJpbmRpbmdzIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmdub21lc29tZS5rZXliaW5kaW5ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Nod2ljay9nbm9tZXNvbWUiLAogICJ1dWlkIjogImdub21lc29tZUBjaHdpY2suZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"}
@@ -1218,7 +1274,8 @@
     "42": {"version": "31", "sha256": "00nayj91lmdl12s8g1lh785ywq2svmvlz4k79kb5jdl3p6ljx8j3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBvciBmb2N1cyB0aGUgd2luZG93IG9yIGRlZmluZSBjdXN0b20gc2hvcnRjdXRzIGluIGEgdGV4dCBmaWxlIiwKICAiZGlzYWJsZS1leHRlbnNpb24tdmVyc2lvbi12YWxpZGF0aW9uIjogdHJ1ZSwKICAibmFtZSI6ICJSdW4gb3IgcmFpc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuLW9yLXJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ1otTklDL3J1bi1vci1yYWlzZSIsCiAgInV1aWQiOiAicnVuLW9yLXJhaXNlQGVkdmFyZC5jeiIsCiAgInZlcnNpb24iOiAzMQp9"},
     "43": {"version": "31", "sha256": "00nayj91lmdl12s8g1lh785ywq2svmvlz4k79kb5jdl3p6ljx8j3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBvciBmb2N1cyB0aGUgd2luZG93IG9yIGRlZmluZSBjdXN0b20gc2hvcnRjdXRzIGluIGEgdGV4dCBmaWxlIiwKICAiZGlzYWJsZS1leHRlbnNpb24tdmVyc2lvbi12YWxpZGF0aW9uIjogdHJ1ZSwKICAibmFtZSI6ICJSdW4gb3IgcmFpc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuLW9yLXJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ1otTklDL3J1bi1vci1yYWlzZSIsCiAgInV1aWQiOiAicnVuLW9yLXJhaXNlQGVkdmFyZC5jeiIsCiAgInZlcnNpb24iOiAzMQp9"},
     "44": {"version": "31", "sha256": "00nayj91lmdl12s8g1lh785ywq2svmvlz4k79kb5jdl3p6ljx8j3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBvciBmb2N1cyB0aGUgd2luZG93IG9yIGRlZmluZSBjdXN0b20gc2hvcnRjdXRzIGluIGEgdGV4dCBmaWxlIiwKICAiZGlzYWJsZS1leHRlbnNpb24tdmVyc2lvbi12YWxpZGF0aW9uIjogdHJ1ZSwKICAibmFtZSI6ICJSdW4gb3IgcmFpc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuLW9yLXJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ1otTklDL3J1bi1vci1yYWlzZSIsCiAgInV1aWQiOiAicnVuLW9yLXJhaXNlQGVkdmFyZC5jeiIsCiAgInZlcnNpb24iOiAzMQp9"},
-    "45": {"version": "34", "sha256": "1nki9hrfv2dv44kzpysshgfz7giwx7kzhmph6crgp804kn4bv8da", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBvciBmb2N1cyB0aGUgd2luZG93IG9yIGRlZmluZSBjdXN0b20gc2hvcnRjdXRzIGluIGEgdGV4dCBmaWxlIiwKICAiZGlzYWJsZS1leHRlbnNpb24tdmVyc2lvbi12YWxpZGF0aW9uIjogdHJ1ZSwKICAibmFtZSI6ICJSdW4gb3IgcmFpc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuLW9yLXJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NaLU5JQy9ydW4tb3ItcmFpc2UiLAogICJ1dWlkIjogInJ1bi1vci1yYWlzZUBlZHZhcmQuY3oiLAogICJ2ZXJzaW9uIjogMzQKfQ=="}
+    "45": {"version": "37", "sha256": "14j4m6w83a2jdvy6lg51z2f0bkb33hnswm23242i3d18klxlycnp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBvciBmb2N1cyB0aGUgd2luZG93IG9yIGRlZmluZSBjdXN0b20gc2hvcnRjdXRzIGluIGEgdGV4dCBmaWxlIiwKICAiZGlzYWJsZS1leHRlbnNpb24tdmVyc2lvbi12YWxpZGF0aW9uIjogdHJ1ZSwKICAibmFtZSI6ICJSdW4gb3IgcmFpc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuLW9yLXJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DWi1OSUMvcnVuLW9yLXJhaXNlIiwKICAidXVpZCI6ICJydW4tb3ItcmFpc2VAZWR2YXJkLmN6IiwKICAidmVyc2lvbiI6IDM3Cn0="},
+    "46": {"version": "37", "sha256": "14j4m6w83a2jdvy6lg51z2f0bkb33hnswm23242i3d18klxlycnp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBvciBmb2N1cyB0aGUgd2luZG93IG9yIGRlZmluZSBjdXN0b20gc2hvcnRjdXRzIGluIGEgdGV4dCBmaWxlIiwKICAiZGlzYWJsZS1leHRlbnNpb24tdmVyc2lvbi12YWxpZGF0aW9uIjogdHJ1ZSwKICAibmFtZSI6ICJSdW4gb3IgcmFpc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuLW9yLXJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DWi1OSUMvcnVuLW9yLXJhaXNlIiwKICAidXVpZCI6ICJydW4tb3ItcmFpc2VAZWR2YXJkLmN6IiwKICAidmVyc2lvbiI6IDM3Cn0="}
   }}
 , {"uuid": "show_applications_instead_of_overview@fawtytoo", "name": "Show Applications Instead Of Workspaces", "pname": "show-applications-instead-of-overview", "description": "The Overview will show Applications instead of Workspaces when invoked.", "link": "https://extensions.gnome.org/extension/1337/show-applications-instead-of-overview/", "shell_version_map": {
     "38": {"version": "8", "sha256": "0dj704fq6g8jfl13gkfljyq360s6in77vd61w8ds8azysarmaww3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBPdmVydmlldyB3aWxsIHNob3cgQXBwbGljYXRpb25zIGluc3RlYWQgb2YgV29ya3NwYWNlcyB3aGVuIGludm9rZWQuIiwKICAibmFtZSI6ICJTaG93IEFwcGxpY2F0aW9ucyBJbnN0ZWFkIE9mIFdvcmtzcGFjZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjIiLAogICAgIjMuMjQiLAogICAgIjMuMjYiLAogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAic2hvd19hcHBsaWNhdGlvbnNfaW5zdGVhZF9vZl9vdmVydmlld0BmYXd0eXRvbyIsCiAgInZlcnNpb24iOiA4Cn0="},
@@ -1269,14 +1326,15 @@
 , {"uuid": "files-view@argonauta.framagit.org", "name": "Files View", "pname": "files-view", "description": "", "link": "https://extensions.gnome.org/extension/1395/files-view/", "shell_version_map": {
     "38": {"version": "11", "sha256": "0367kzrpzbx1b2l1m68n2pmazlsy4207a1anvyr2n1a4xpq3vwb0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiIsCiAgImdldHRleHQtZG9tYWluIjogImZpbGVzLXZpZXciLAogICJuYW1lIjogIkZpbGVzIFZpZXciLAogICJyZWNlbnRseS1vcGVuLXBlcnNpc3RlbnQtZmlsZW5hbWUiOiAicmVjZW50bHktb3Blbi1mb2xkZXJzLWZpbGVzLXZpZXctZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLmpzb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZmlsZXMtdmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJmaWxlcy12aWV3QGFyZ29uYXV0YS5mcmFtYWdpdC5vcmciLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
   }}
-, {"uuid": "bluetooth-quick-connect@bjarosze.gmail.com", "name": "Bluetooth Quick Connect", "pname": "bluetooth-quick-connect", "description": "This extension allows paired Bluetooth devices to be connected and disconnected via the GNOME system menu, Shows battery status and more.", "link": "https://extensions.gnome.org/extension/1401/bluetooth-quick-connect/", "shell_version_map": {
+, {"uuid": "bluetooth-quick-connect@bjarosze.gmail.com", "name": "Bluetooth Quick Connect", "pname": "bluetooth-quick-connect", "description": "This extension allows paired Bluetooth devices to be connected and disconnected via the GNOME system menu, Shows battery status and more.\n", "link": "https://extensions.gnome.org/extension/1401/bluetooth-quick-connect/", "shell_version_map": {
     "38": {"version": "16", "sha256": "1fkx12xx1m8pchyfvq0vmyd21m79s9s0jw4ackqg1nqcpwyqd1c3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHRvIGNvbm5lY3QgdG8gcGFpcmVkIGRldmljZXMgZnJvbSBnbm9tZSBjb250cm9sIHBhbmVsLlxuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYmphcm9zemUvZ25vbWUtYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJ1dWlkIjogImJsdWV0b290aC1xdWljay1jb25uZWN0QGJqYXJvc3plLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxNgp9"},
     "40": {"version": "34", "sha256": "0yv1igdh95s70jrqz3y6p0135a2yzzsjvqm2l2lg81qkfms6jk3k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHRvIGNvbm5lY3QgdG8gcGFpcmVkIGRldmljZXMgZnJvbSBnbm9tZSBjb250cm9sIHBhbmVsLlxuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JqYXJvc3plL2dub21lLWJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAidXVpZCI6ICJibHVldG9vdGgtcXVpY2stY29ubmVjdEBiamFyb3N6ZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "41": {"version": "34", "sha256": "0yv1igdh95s70jrqz3y6p0135a2yzzsjvqm2l2lg81qkfms6jk3k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHRvIGNvbm5lY3QgdG8gcGFpcmVkIGRldmljZXMgZnJvbSBnbm9tZSBjb250cm9sIHBhbmVsLlxuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JqYXJvc3plL2dub21lLWJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAidXVpZCI6ICJibHVldG9vdGgtcXVpY2stY29ubmVjdEBiamFyb3N6ZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "42": {"version": "34", "sha256": "0yv1igdh95s70jrqz3y6p0135a2yzzsjvqm2l2lg81qkfms6jk3k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHRvIGNvbm5lY3QgdG8gcGFpcmVkIGRldmljZXMgZnJvbSBnbm9tZSBjb250cm9sIHBhbmVsLlxuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JqYXJvc3plL2dub21lLWJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAidXVpZCI6ICJibHVldG9vdGgtcXVpY2stY29ubmVjdEBiamFyb3N6ZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "43": {"version": "34", "sha256": "0yv1igdh95s70jrqz3y6p0135a2yzzsjvqm2l2lg81qkfms6jk3k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHRvIGNvbm5lY3QgdG8gcGFpcmVkIGRldmljZXMgZnJvbSBnbm9tZSBjb250cm9sIHBhbmVsLlxuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JqYXJvc3plL2dub21lLWJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAidXVpZCI6ICJibHVldG9vdGgtcXVpY2stY29ubmVjdEBiamFyb3N6ZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "44": {"version": "37", "sha256": "0ydch21gzvndvbr7hlhps4l6gcncd6whdswf8rj23axl4q1smx4w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHRvIGNvbm5lY3QgdG8gcGFpcmVkIGRldmljZXMgZnJvbSBnbm9tZSBjb250cm9sIHBhbmVsLlxuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JqYXJvc3plL2dub21lLWJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAidXVpZCI6ICJibHVldG9vdGgtcXVpY2stY29ubmVjdEBiamFyb3N6ZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzcKfQ=="},
-    "45": {"version": "46", "sha256": "0bx665r2yihfxm322rxmh9x00cylxk7aji0idavqny3gp8xs6dvf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBwYWlyZWQgQmx1ZXRvb3RoIGRldmljZXMgdG8gYmUgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgdmlhIHRoZSBHTk9NRSBzeXN0ZW0gbWVudSwgU2hvd3MgYmF0dGVyeSBzdGF0dXMgYW5kIG1vcmUuXG4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogIkJsYW5rUGFydGljbGUiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0V4dGVuc2lvbnMtVmFsaGFsbGEvZ25vbWUtYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJ1dWlkIjogImJsdWV0b290aC1xdWljay1jb25uZWN0QGJqYXJvc3plLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0Ngp9"}
+    "45": {"version": "48", "sha256": "1fr1c3s5ma9xk383khr0pcas1mjk7qiia93fb61xfsm54b1jaw4f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBwYWlyZWQgQmx1ZXRvb3RoIGRldmljZXMgdG8gYmUgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgdmlhIHRoZSBHTk9NRSBzeXN0ZW0gbWVudSwgU2hvd3MgYmF0dGVyeSBzdGF0dXMgYW5kIG1vcmUuXG4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogIkJsYW5rUGFydGljbGUiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9FeHRlbnNpb25zLVZhbGhhbGxhL2dub21lLWJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAidXVpZCI6ICJibHVldG9vdGgtcXVpY2stY29ubmVjdEBiamFyb3N6ZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNDgKfQ=="},
+    "46": {"version": "48", "sha256": "1fr1c3s5ma9xk383khr0pcas1mjk7qiia93fb61xfsm54b1jaw4f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBwYWlyZWQgQmx1ZXRvb3RoIGRldmljZXMgdG8gYmUgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgdmlhIHRoZSBHTk9NRSBzeXN0ZW0gbWVudSwgU2hvd3MgYmF0dGVyeSBzdGF0dXMgYW5kIG1vcmUuXG4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogIkJsYW5rUGFydGljbGUiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ZXRvb3RoLXF1aWNrLWNvbm5lY3QiLAogICJuYW1lIjogIkJsdWV0b290aCBRdWljayBDb25uZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9FeHRlbnNpb25zLVZhbGhhbGxhL2dub21lLWJsdWV0b290aC1xdWljay1jb25uZWN0IiwKICAidXVpZCI6ICJibHVldG9vdGgtcXVpY2stY29ubmVjdEBiamFyb3N6ZS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNDgKfQ=="}
   }}
 , {"uuid": "syspeek-gs@gs.eros2.info", "name": "SysPeek-GS", "pname": "syspeek-gs", "description": "Minimalistic CPU load monitor widget inspired by SysPeek indicator", "link": "https://extensions.gnome.org/extension/1409/syspeek-gs/", "shell_version_map": {
     "38": {"version": "12", "sha256": "0bdspqf9vyhfv9rcj1xz9jkswh4gy3laj2vhnfsl64skfp2c8qsl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1pbmltYWxpc3RpYyBDUFUgbG9hZCBtb25pdG9yIHdpZGdldCBpbnNwaXJlZCBieSBTeXNQZWVrIGluZGljYXRvciIsCiAgIm5hbWUiOiAiU3lzUGVlay1HUyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZXVnZW5lLXJvbS9zeXNwZWVrLWdzIiwKICAidXVpZCI6ICJzeXNwZWVrLWdzQGdzLmVyb3MyLmluZm8iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
@@ -1310,7 +1368,8 @@
     "42": {"version": "29", "sha256": "00b6r3gc9pkhkwwmvc2b3w27spa7sxijiz540s7g6amyb8gmwj6h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVuYmxhbmsgbG9jayBzY3JlZW4uIiwKICAibmFtZSI6ICJVbmJsYW5rIGxvY2sgc2NyZWVuIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVuYmxhbmsiLAogICJ1dWlkIjogInVuYmxhbmtAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
     "43": {"version": "29", "sha256": "00b6r3gc9pkhkwwmvc2b3w27spa7sxijiz540s7g6amyb8gmwj6h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVuYmxhbmsgbG9jayBzY3JlZW4uIiwKICAibmFtZSI6ICJVbmJsYW5rIGxvY2sgc2NyZWVuIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVuYmxhbmsiLAogICJ1dWlkIjogInVuYmxhbmtAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
     "44": {"version": "29", "sha256": "00b6r3gc9pkhkwwmvc2b3w27spa7sxijiz540s7g6amyb8gmwj6h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVuYmxhbmsgbG9jayBzY3JlZW4uIiwKICAibmFtZSI6ICJVbmJsYW5rIGxvY2sgc2NyZWVuIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVuYmxhbmsiLAogICJ1dWlkIjogInVuYmxhbmtAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
-    "45": {"version": "30", "sha256": "0i2q3jkrwql7v79h38afav50rqh91395d73v1vqigf89g50c3xjj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVuYmxhbmsgbG9jayBzY3JlZW4uIiwKICAiZXh0ZW5zaW9uLWlkIjogInVuYmxhbmsiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJVbmJsYW5rIGxvY2sgc2NyZWVuIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51bmJsYW5rIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5ibGFuayIsCiAgInV1aWQiOiAidW5ibGFua0BzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAzMAp9"}
+    "45": {"version": "31", "sha256": "0hs1zq6fng86zis7jqvnfsx9mai050r4xj5k2a4hqjzgxqhf33jg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVuYmxhbmsgbG9jayBzY3JlZW4uIiwKICAiZXh0ZW5zaW9uLWlkIjogInVuYmxhbmsiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJVbmJsYW5rIGxvY2sgc2NyZWVuIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51bmJsYW5rIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVuYmxhbmsiLAogICJ1dWlkIjogInVuYmxhbmtAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzEKfQ=="},
+    "46": {"version": "31", "sha256": "0hs1zq6fng86zis7jqvnfsx9mai050r4xj5k2a4hqjzgxqhf33jg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVuYmxhbmsgbG9jayBzY3JlZW4uIiwKICAiZXh0ZW5zaW9uLWlkIjogInVuYmxhbmsiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJVbmJsYW5rIGxvY2sgc2NyZWVuIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51bmJsYW5rIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVuYmxhbmsiLAogICJ1dWlkIjogInVuYmxhbmtAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzEKfQ=="}
   }}
 , {"uuid": "vbox-applet@gs.eros2.info", "name": "VirtualBox applet", "pname": "virtualbox-applet", "description": "Provide menu to run VirtualBox machines and switch between running VMs", "link": "https://extensions.gnome.org/extension/1415/virtualbox-applet/", "shell_version_map": {
     "38": {"version": "13", "sha256": "0crmp0fxmca3xkgplnsd22jzyhvdsppfjhx9h1393slvm10w5i5c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgbWVudSB0byBydW4gVmlydHVhbEJveCBtYWNoaW5lcyBhbmQgc3dpdGNoIGJldHdlZW4gcnVubmluZyBWTXMiLAogICJuYW1lIjogIlZpcnR1YWxCb3ggYXBwbGV0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnZib3gtYXBwbGV0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ldWdlbmUtcm9tL3Zib3gtYXBwbGV0IiwKICAidXVpZCI6ICJ2Ym94LWFwcGxldEBncy5lcm9zMi5pbmZvIiwKICAidmVyc2lvbiI6IDEzCn0="},
@@ -1359,7 +1418,8 @@
     "42": {"version": "13", "sha256": "1iknj3xp78brp6mcfcpqc0a95xflpdili1rghh0j0cp21z1rc92f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIHRoZSB3aW5kb3cgc2VtaS10cmFuc3BhcmVudCB3aGVuIG1vdmluZyBvciByZXNpemluZyIsCiAgImV4dGVuc2lvbi1pZCI6ICJ0cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiVHJhbnNwYXJlbnQgV2luZG93IE1vdmluZyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ob29ic2FpL3RyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmdAbm9vYnNhaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
     "43": {"version": "13", "sha256": "1iknj3xp78brp6mcfcpqc0a95xflpdili1rghh0j0cp21z1rc92f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIHRoZSB3aW5kb3cgc2VtaS10cmFuc3BhcmVudCB3aGVuIG1vdmluZyBvciByZXNpemluZyIsCiAgImV4dGVuc2lvbi1pZCI6ICJ0cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiVHJhbnNwYXJlbnQgV2luZG93IE1vdmluZyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ob29ic2FpL3RyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmdAbm9vYnNhaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
     "44": {"version": "13", "sha256": "1iknj3xp78brp6mcfcpqc0a95xflpdili1rghh0j0cp21z1rc92f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIHRoZSB3aW5kb3cgc2VtaS10cmFuc3BhcmVudCB3aGVuIG1vdmluZyBvciByZXNpemluZyIsCiAgImV4dGVuc2lvbi1pZCI6ICJ0cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiVHJhbnNwYXJlbnQgV2luZG93IE1vdmluZyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ob29ic2FpL3RyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmdAbm9vYnNhaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
-    "45": {"version": "16", "sha256": "1hqa95x232mi8qjfjyyi28cm3nhlp24lgqdd9r0vj31wl0fyrn04", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIHRoZSB3aW5kb3cgc2VtaS10cmFuc3BhcmVudCB3aGVuIG1vdmluZyBvciByZXNpemluZyIsCiAgImV4dGVuc2lvbi1pZCI6ICJ0cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiVHJhbnNwYXJlbnQgV2luZG93IE1vdmluZyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL05vb2JzYWkvdHJhbnNwYXJlbnQtd2luZG93LW1vdmluZyIsCiAgInV1aWQiOiAidHJhbnNwYXJlbnQtd2luZG93LW1vdmluZ0Bub29ic2FpLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="}
+    "45": {"version": "17", "sha256": "0x8ff59wmr24r7472qm8zpf19nncx5gaxrfdzvk7m2ab57q42mn1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIHRoZSB3aW5kb3cgc2VtaS10cmFuc3BhcmVudCB3aGVuIG1vdmluZyBvciByZXNpemluZyIsCiAgImV4dGVuc2lvbi1pZCI6ICJ0cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiVHJhbnNwYXJlbnQgV2luZG93IE1vdmluZyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ob29ic2FpL3RyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmdAbm9vYnNhaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
+    "46": {"version": "17", "sha256": "0x8ff59wmr24r7472qm8zpf19nncx5gaxrfdzvk7m2ab57q42mn1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIHRoZSB3aW5kb3cgc2VtaS10cmFuc3BhcmVudCB3aGVuIG1vdmluZyBvciByZXNpemluZyIsCiAgImV4dGVuc2lvbi1pZCI6ICJ0cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiVHJhbnNwYXJlbnQgV2luZG93IE1vdmluZyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmFuc3BhcmVudC13aW5kb3ctbW92aW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ob29ic2FpL3RyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvdy1tb3ZpbmdAbm9vYnNhaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="}
   }}
 , {"uuid": "transparent-window@pbxqdown.github.com", "name": "Transparent Window", "pname": "transparent-window", "description": "Change the opacity of windows by compiz-style shortcut Alt+scroll.\nYou can customize hotkey in Preference page if Alt key doesn't work.", "link": "https://extensions.gnome.org/extension/1454/transparent-window/", "shell_version_map": {
     "38": {"version": "13", "sha256": "18n67rgcw44d9bpam8fj018z5bznlsysh99lrcffnlq8mr6yjm0f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgb3BhY2l0eSBvZiB3aW5kb3dzIGJ5IGNvbXBpei1zdHlsZSBzaG9ydGN1dCBBbHQrc2Nyb2xsLlxuWW91IGNhbiBjdXN0b21pemUgaG90a2V5IGluIFByZWZlcmVuY2UgcGFnZSBpZiBBbHQga2V5IGRvZXNuJ3Qgd29yay4iLAogICJuYW1lIjogIlRyYW5zcGFyZW50IFdpbmRvdyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5UcmFuc3BhcmVudFdpbmRvdyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOC4xIiwKICAgICIzLjM2LjEiLAogICAgIjMuMzguMSIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjMuMzguNCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BieHFkb3duL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC13aW5kb3ciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvd0BwYnhxZG93bi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
@@ -1368,14 +1428,15 @@
     "42": {"version": "13", "sha256": "18n67rgcw44d9bpam8fj018z5bznlsysh99lrcffnlq8mr6yjm0f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgb3BhY2l0eSBvZiB3aW5kb3dzIGJ5IGNvbXBpei1zdHlsZSBzaG9ydGN1dCBBbHQrc2Nyb2xsLlxuWW91IGNhbiBjdXN0b21pemUgaG90a2V5IGluIFByZWZlcmVuY2UgcGFnZSBpZiBBbHQga2V5IGRvZXNuJ3Qgd29yay4iLAogICJuYW1lIjogIlRyYW5zcGFyZW50IFdpbmRvdyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5UcmFuc3BhcmVudFdpbmRvdyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOC4xIiwKICAgICIzLjM2LjEiLAogICAgIjMuMzguMSIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjMuMzguNCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BieHFkb3duL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC13aW5kb3ciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvd0BwYnhxZG93bi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
     "43": {"version": "13", "sha256": "18n67rgcw44d9bpam8fj018z5bznlsysh99lrcffnlq8mr6yjm0f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgb3BhY2l0eSBvZiB3aW5kb3dzIGJ5IGNvbXBpei1zdHlsZSBzaG9ydGN1dCBBbHQrc2Nyb2xsLlxuWW91IGNhbiBjdXN0b21pemUgaG90a2V5IGluIFByZWZlcmVuY2UgcGFnZSBpZiBBbHQga2V5IGRvZXNuJ3Qgd29yay4iLAogICJuYW1lIjogIlRyYW5zcGFyZW50IFdpbmRvdyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5UcmFuc3BhcmVudFdpbmRvdyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOC4xIiwKICAgICIzLjM2LjEiLAogICAgIjMuMzguMSIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjMuMzguNCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BieHFkb3duL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC13aW5kb3ciLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXdpbmRvd0BwYnhxZG93bi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="}
   }}
-, {"uuid": "miniview@thesecretaryofwar.com", "name": "Miniview", "pname": "miniview", "description": "Displays a mini window preview (like picture-in-picture on a TV):\n— Left-mouse drag: move preview window\n— Right-mouse drag (or ctrl + left mouse drag): resize preview window\n— Scroll wheel (or shift + click): change target window\n— Double click: raise target window\n— Shift + F12: toggle preview window (this can be changed or disabled in preferences)\n— Ctrl + scroll wheel: adjust opacity", "link": "https://extensions.gnome.org/extension/1459/miniview/", "shell_version_map": {
+, {"uuid": "miniview@thesecretaryofwar.com", "name": "Miniview", "pname": "miniview", "description": "Show window previews", "link": "https://extensions.gnome.org/extension/1459/miniview/", "shell_version_map": {
     "38": {"version": "13", "sha256": "09bkkqhah75pgx38a601pb65w44d9q8b2n24bxnvwc6bzh1rcbbv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGEgbWluaSB3aW5kb3cgcHJldmlldyAobGlrZSBwaWN0dXJlLWluLXBpY3R1cmUgb24gYSBUVik6XG5cdTIwMTQgTGVmdC1tb3VzZSBkcmFnOiBtb3ZlIHByZXZpZXcgd2luZG93XG5cdTIwMTQgUmlnaHQtbW91c2UgZHJhZyAob3IgY3RybCArIGxlZnQgbW91c2UgZHJhZyk6IHJlc2l6ZSBwcmV2aWV3IHdpbmRvd1xuXHUyMDE0IFNjcm9sbCB3aGVlbCAob3Igc2hpZnQgKyBjbGljayk6IGNoYW5nZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgRG91YmxlIGNsaWNrOiByYWlzZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgU2hpZnQgKyBGMTI6IHRvZ2dsZSBwcmV2aWV3IHdpbmRvdyAodGhpcyBjYW4gYmUgY2hhbmdlZCBvciBkaXNhYmxlZCBpbiBwcmVmZXJlbmNlcylcblx1MjAxNCBDdHJsICsgc2Nyb2xsIHdoZWVsOiBhZGp1c3Qgb3BhY2l0eSIsCiAgImV4dGVuc2lvbi1pZCI6ICJtaW5pdmlldyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWFtbGVtZWMvbWluaXZpZXciLAogICJ1dWlkIjogIm1pbml2aWV3QHRoZXNlY3JldGFyeW9md2FyLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"},
     "40": {"version": "16", "sha256": "16wqzfw7bcqvna8j16lag0zfskda6zbvgiszx767mn1mwn6kxfvm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGEgbWluaSB3aW5kb3cgcHJldmlldyAobGlrZSBwaWN0dXJlLWluLXBpY3R1cmUgb24gYSBUVik6XG5cdTIwMTQgTGVmdC1tb3VzZSBkcmFnOiBtb3ZlIHByZXZpZXcgd2luZG93XG5cdTIwMTQgUmlnaHQtbW91c2UgZHJhZyAob3IgY3RybCArIGxlZnQgbW91c2UgZHJhZyk6IHJlc2l6ZSBwcmV2aWV3IHdpbmRvd1xuXHUyMDE0IFNjcm9sbCB3aGVlbCAob3Igc2hpZnQgKyBjbGljayk6IGNoYW5nZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgRG91YmxlIGNsaWNrOiByYWlzZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgU2hpZnQgKyBGMTI6IHRvZ2dsZSBwcmV2aWV3IHdpbmRvdyAodGhpcyBjYW4gYmUgY2hhbmdlZCBvciBkaXNhYmxlZCBpbiBwcmVmZXJlbmNlcylcblx1MjAxNCBDdHJsICsgc2Nyb2xsIHdoZWVsOiBhZGp1c3Qgb3BhY2l0eSIsCiAgImV4dGVuc2lvbi1pZCI6ICJtaW5pdmlldyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pYW1sZW1lYy9taW5pdmlldyIsCiAgInV1aWQiOiAibWluaXZpZXdAdGhlc2VjcmV0YXJ5b2Z3YXIuY29tIiwKICAidmVyc2lvbiI6IDE2Cn0="},
     "41": {"version": "16", "sha256": "16wqzfw7bcqvna8j16lag0zfskda6zbvgiszx767mn1mwn6kxfvm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGEgbWluaSB3aW5kb3cgcHJldmlldyAobGlrZSBwaWN0dXJlLWluLXBpY3R1cmUgb24gYSBUVik6XG5cdTIwMTQgTGVmdC1tb3VzZSBkcmFnOiBtb3ZlIHByZXZpZXcgd2luZG93XG5cdTIwMTQgUmlnaHQtbW91c2UgZHJhZyAob3IgY3RybCArIGxlZnQgbW91c2UgZHJhZyk6IHJlc2l6ZSBwcmV2aWV3IHdpbmRvd1xuXHUyMDE0IFNjcm9sbCB3aGVlbCAob3Igc2hpZnQgKyBjbGljayk6IGNoYW5nZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgRG91YmxlIGNsaWNrOiByYWlzZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgU2hpZnQgKyBGMTI6IHRvZ2dsZSBwcmV2aWV3IHdpbmRvdyAodGhpcyBjYW4gYmUgY2hhbmdlZCBvciBkaXNhYmxlZCBpbiBwcmVmZXJlbmNlcylcblx1MjAxNCBDdHJsICsgc2Nyb2xsIHdoZWVsOiBhZGp1c3Qgb3BhY2l0eSIsCiAgImV4dGVuc2lvbi1pZCI6ICJtaW5pdmlldyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pYW1sZW1lYy9taW5pdmlldyIsCiAgInV1aWQiOiAibWluaXZpZXdAdGhlc2VjcmV0YXJ5b2Z3YXIuY29tIiwKICAidmVyc2lvbiI6IDE2Cn0="},
     "42": {"version": "16", "sha256": "16wqzfw7bcqvna8j16lag0zfskda6zbvgiszx767mn1mwn6kxfvm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGEgbWluaSB3aW5kb3cgcHJldmlldyAobGlrZSBwaWN0dXJlLWluLXBpY3R1cmUgb24gYSBUVik6XG5cdTIwMTQgTGVmdC1tb3VzZSBkcmFnOiBtb3ZlIHByZXZpZXcgd2luZG93XG5cdTIwMTQgUmlnaHQtbW91c2UgZHJhZyAob3IgY3RybCArIGxlZnQgbW91c2UgZHJhZyk6IHJlc2l6ZSBwcmV2aWV3IHdpbmRvd1xuXHUyMDE0IFNjcm9sbCB3aGVlbCAob3Igc2hpZnQgKyBjbGljayk6IGNoYW5nZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgRG91YmxlIGNsaWNrOiByYWlzZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgU2hpZnQgKyBGMTI6IHRvZ2dsZSBwcmV2aWV3IHdpbmRvdyAodGhpcyBjYW4gYmUgY2hhbmdlZCBvciBkaXNhYmxlZCBpbiBwcmVmZXJlbmNlcylcblx1MjAxNCBDdHJsICsgc2Nyb2xsIHdoZWVsOiBhZGp1c3Qgb3BhY2l0eSIsCiAgImV4dGVuc2lvbi1pZCI6ICJtaW5pdmlldyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pYW1sZW1lYy9taW5pdmlldyIsCiAgInV1aWQiOiAibWluaXZpZXdAdGhlc2VjcmV0YXJ5b2Z3YXIuY29tIiwKICAidmVyc2lvbiI6IDE2Cn0="},
     "43": {"version": "16", "sha256": "16wqzfw7bcqvna8j16lag0zfskda6zbvgiszx767mn1mwn6kxfvm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGEgbWluaSB3aW5kb3cgcHJldmlldyAobGlrZSBwaWN0dXJlLWluLXBpY3R1cmUgb24gYSBUVik6XG5cdTIwMTQgTGVmdC1tb3VzZSBkcmFnOiBtb3ZlIHByZXZpZXcgd2luZG93XG5cdTIwMTQgUmlnaHQtbW91c2UgZHJhZyAob3IgY3RybCArIGxlZnQgbW91c2UgZHJhZyk6IHJlc2l6ZSBwcmV2aWV3IHdpbmRvd1xuXHUyMDE0IFNjcm9sbCB3aGVlbCAob3Igc2hpZnQgKyBjbGljayk6IGNoYW5nZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgRG91YmxlIGNsaWNrOiByYWlzZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgU2hpZnQgKyBGMTI6IHRvZ2dsZSBwcmV2aWV3IHdpbmRvdyAodGhpcyBjYW4gYmUgY2hhbmdlZCBvciBkaXNhYmxlZCBpbiBwcmVmZXJlbmNlcylcblx1MjAxNCBDdHJsICsgc2Nyb2xsIHdoZWVsOiBhZGp1c3Qgb3BhY2l0eSIsCiAgImV4dGVuc2lvbi1pZCI6ICJtaW5pdmlldyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pYW1sZW1lYy9taW5pdmlldyIsCiAgInV1aWQiOiAibWluaXZpZXdAdGhlc2VjcmV0YXJ5b2Z3YXIuY29tIiwKICAidmVyc2lvbiI6IDE2Cn0="},
     "44": {"version": "16", "sha256": "16wqzfw7bcqvna8j16lag0zfskda6zbvgiszx767mn1mwn6kxfvm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGEgbWluaSB3aW5kb3cgcHJldmlldyAobGlrZSBwaWN0dXJlLWluLXBpY3R1cmUgb24gYSBUVik6XG5cdTIwMTQgTGVmdC1tb3VzZSBkcmFnOiBtb3ZlIHByZXZpZXcgd2luZG93XG5cdTIwMTQgUmlnaHQtbW91c2UgZHJhZyAob3IgY3RybCArIGxlZnQgbW91c2UgZHJhZyk6IHJlc2l6ZSBwcmV2aWV3IHdpbmRvd1xuXHUyMDE0IFNjcm9sbCB3aGVlbCAob3Igc2hpZnQgKyBjbGljayk6IGNoYW5nZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgRG91YmxlIGNsaWNrOiByYWlzZSB0YXJnZXQgd2luZG93XG5cdTIwMTQgU2hpZnQgKyBGMTI6IHRvZ2dsZSBwcmV2aWV3IHdpbmRvdyAodGhpcyBjYW4gYmUgY2hhbmdlZCBvciBkaXNhYmxlZCBpbiBwcmVmZXJlbmNlcylcblx1MjAxNCBDdHJsICsgc2Nyb2xsIHdoZWVsOiBhZGp1c3Qgb3BhY2l0eSIsCiAgImV4dGVuc2lvbi1pZCI6ICJtaW5pdmlldyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pYW1sZW1lYy9taW5pdmlldyIsCiAgInV1aWQiOiAibWluaXZpZXdAdGhlc2VjcmV0YXJ5b2Z3YXIuY29tIiwKICAidmVyc2lvbiI6IDE2Cn0="},
-    "45": {"version": "17", "sha256": "07mcribf30nxipk44qwn3k53b4hk7wki8l7zssisriyp99zv6xhx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgd2luZG93IHByZXZpZXdzIiwKICAiZXh0ZW5zaW9uLWlkIjogIm1pbml2aWV3IiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWluaXZpZXciLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2lhbWxlbWVjL21pbml2aWV3IiwKICAidXVpZCI6ICJtaW5pdmlld0B0aGVzZWNyZXRhcnlvZndhci5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="}
+    "45": {"version": "18", "sha256": "07pbxvnd1rgc6kz3qm6vhlfbs9nsqy7jspqp0bl3qq4hpvjynscz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgd2luZG93IHByZXZpZXdzIiwKICAiZXh0ZW5zaW9uLWlkIjogIm1pbml2aWV3IiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWluaXZpZXciLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pYW1sZW1lYy9taW5pdmlldyIsCiAgInV1aWQiOiAibWluaXZpZXdAdGhlc2VjcmV0YXJ5b2Z3YXIuY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="},
+    "46": {"version": "18", "sha256": "07pbxvnd1rgc6kz3qm6vhlfbs9nsqy7jspqp0bl3qq4hpvjynscz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgd2luZG93IHByZXZpZXdzIiwKICAiZXh0ZW5zaW9uLWlkIjogIm1pbml2aWV3IiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWluaXZpZXciLAogICJuYW1lIjogIk1pbml2aWV3IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJ0aGVzZWNyZXRhcnlvZndhckBnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1pbml2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pYW1sZW1lYy9taW5pdmlldyIsCiAgInV1aWQiOiAibWluaXZpZXdAdGhlc2VjcmV0YXJ5b2Z3YXIuY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="}
   }}
 , {"uuid": "Vitals@CoreCoding.com", "name": "Vitals", "pname": "vitals", "description": "A glimpse into your computer's temperature, voltage, fan speed, memory usage, processor load, system resources, network speed and storage stats. This is a one stop shop to monitor all of your vital sensors. Uses asynchronous polling to provide a smooth user experience. Feature requests or bugs? Please use GitHub.", "link": "https://extensions.gnome.org/extension/1460/vitals/", "shell_version_map": {
     "38": {"version": "57", "sha256": "1q6h9pc1d31993v5knnb7c4224h6f7x1jida2xnwi0047nz5b8zn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ2xpbXBzZSBpbnRvIHlvdXIgY29tcHV0ZXIncyB0ZW1wZXJhdHVyZSwgdm9sdGFnZSwgZmFuIHNwZWVkLCBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NvciBsb2FkLCBzeXN0ZW0gcmVzb3VyY2VzLCBuZXR3b3JrIHNwZWVkIGFuZCBzdG9yYWdlIHN0YXRzLiBUaGlzIGlzIGEgb25lIHN0b3Agc2hvcCB0byBtb25pdG9yIGFsbCBvZiB5b3VyIHZpdGFsIHNlbnNvcnMuIFVzZXMgYXN5bmNocm9ub3VzIHBvbGxpbmcgdG8gcHJvdmlkZSBhIHNtb290aCB1c2VyIGV4cGVyaWVuY2UuIEZlYXR1cmUgcmVxdWVzdHMgb3IgYnVncz8gUGxlYXNlIHVzZSBHaXRIdWIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidml0YWxzIiwKICAibmFtZSI6ICJWaXRhbHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudml0YWxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NvcmVjb2RpbmcvVml0YWxzIiwKICAidXVpZCI6ICJWaXRhbHNAQ29yZUNvZGluZy5jb20iLAogICJ2ZXJzaW9uIjogNTcKfQ=="},
@@ -1384,7 +1445,8 @@
     "42": {"version": "61", "sha256": "137piq92wc23imcwqg5jyra1yfvj5xhm3iy7ls3djni76xkcfghf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ2xpbXBzZSBpbnRvIHlvdXIgY29tcHV0ZXIncyB0ZW1wZXJhdHVyZSwgdm9sdGFnZSwgZmFuIHNwZWVkLCBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NvciBsb2FkLCBzeXN0ZW0gcmVzb3VyY2VzLCBuZXR3b3JrIHNwZWVkIGFuZCBzdG9yYWdlIHN0YXRzLiBUaGlzIGlzIGEgb25lIHN0b3Agc2hvcCB0byBtb25pdG9yIGFsbCBvZiB5b3VyIHZpdGFsIHNlbnNvcnMuIFVzZXMgYXN5bmNocm9ub3VzIHBvbGxpbmcgdG8gcHJvdmlkZSBhIHNtb290aCB1c2VyIGV4cGVyaWVuY2UuIEZlYXR1cmUgcmVxdWVzdHMgb3IgYnVncz8gUGxlYXNlIHVzZSBHaXRIdWIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidml0YWxzIiwKICAibmFtZSI6ICJWaXRhbHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudml0YWxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jb3JlY29kaW5nL1ZpdGFscyIsCiAgInV1aWQiOiAiVml0YWxzQENvcmVDb2RpbmcuY29tIiwKICAidmVyc2lvbiI6IDYxCn0="},
     "43": {"version": "61", "sha256": "137piq92wc23imcwqg5jyra1yfvj5xhm3iy7ls3djni76xkcfghf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ2xpbXBzZSBpbnRvIHlvdXIgY29tcHV0ZXIncyB0ZW1wZXJhdHVyZSwgdm9sdGFnZSwgZmFuIHNwZWVkLCBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NvciBsb2FkLCBzeXN0ZW0gcmVzb3VyY2VzLCBuZXR3b3JrIHNwZWVkIGFuZCBzdG9yYWdlIHN0YXRzLiBUaGlzIGlzIGEgb25lIHN0b3Agc2hvcCB0byBtb25pdG9yIGFsbCBvZiB5b3VyIHZpdGFsIHNlbnNvcnMuIFVzZXMgYXN5bmNocm9ub3VzIHBvbGxpbmcgdG8gcHJvdmlkZSBhIHNtb290aCB1c2VyIGV4cGVyaWVuY2UuIEZlYXR1cmUgcmVxdWVzdHMgb3IgYnVncz8gUGxlYXNlIHVzZSBHaXRIdWIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidml0YWxzIiwKICAibmFtZSI6ICJWaXRhbHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudml0YWxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jb3JlY29kaW5nL1ZpdGFscyIsCiAgInV1aWQiOiAiVml0YWxzQENvcmVDb2RpbmcuY29tIiwKICAidmVyc2lvbiI6IDYxCn0="},
     "44": {"version": "61", "sha256": "137piq92wc23imcwqg5jyra1yfvj5xhm3iy7ls3djni76xkcfghf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ2xpbXBzZSBpbnRvIHlvdXIgY29tcHV0ZXIncyB0ZW1wZXJhdHVyZSwgdm9sdGFnZSwgZmFuIHNwZWVkLCBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NvciBsb2FkLCBzeXN0ZW0gcmVzb3VyY2VzLCBuZXR3b3JrIHNwZWVkIGFuZCBzdG9yYWdlIHN0YXRzLiBUaGlzIGlzIGEgb25lIHN0b3Agc2hvcCB0byBtb25pdG9yIGFsbCBvZiB5b3VyIHZpdGFsIHNlbnNvcnMuIFVzZXMgYXN5bmNocm9ub3VzIHBvbGxpbmcgdG8gcHJvdmlkZSBhIHNtb290aCB1c2VyIGV4cGVyaWVuY2UuIEZlYXR1cmUgcmVxdWVzdHMgb3IgYnVncz8gUGxlYXNlIHVzZSBHaXRIdWIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidml0YWxzIiwKICAibmFtZSI6ICJWaXRhbHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudml0YWxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jb3JlY29kaW5nL1ZpdGFscyIsCiAgInV1aWQiOiAiVml0YWxzQENvcmVDb2RpbmcuY29tIiwKICAidmVyc2lvbiI6IDYxCn0="},
-    "45": {"version": "65", "sha256": "01w9z5razx4ss49pjnsdxfkzq9xd61rvg5vjkw7w2mwdq0jwzknk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ2xpbXBzZSBpbnRvIHlvdXIgY29tcHV0ZXIncyB0ZW1wZXJhdHVyZSwgdm9sdGFnZSwgZmFuIHNwZWVkLCBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NvciBsb2FkLCBzeXN0ZW0gcmVzb3VyY2VzLCBuZXR3b3JrIHNwZWVkIGFuZCBzdG9yYWdlIHN0YXRzLiBUaGlzIGlzIGEgb25lIHN0b3Agc2hvcCB0byBtb25pdG9yIGFsbCBvZiB5b3VyIHZpdGFsIHNlbnNvcnMuIFVzZXMgYXN5bmNocm9ub3VzIHBvbGxpbmcgdG8gcHJvdmlkZSBhIHNtb290aCB1c2VyIGV4cGVyaWVuY2UuIEZlYXR1cmUgcmVxdWVzdHMgb3IgYnVncz8gUGxlYXNlIHVzZSBHaXRIdWIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidml0YWxzIiwKICAibmFtZSI6ICJWaXRhbHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudml0YWxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jb3JlY29kaW5nL1ZpdGFscyIsCiAgInV1aWQiOiAiVml0YWxzQENvcmVDb2RpbmcuY29tIiwKICAidmVyc2lvbiI6IDY1Cn0="}
+    "45": {"version": "67", "sha256": "1ks26bxyyshprbyvclk44rmcrx4wkqsjfrvarbf4g806pazvw4ww", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ2xpbXBzZSBpbnRvIHlvdXIgY29tcHV0ZXIncyB0ZW1wZXJhdHVyZSwgdm9sdGFnZSwgZmFuIHNwZWVkLCBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NvciBsb2FkLCBzeXN0ZW0gcmVzb3VyY2VzLCBuZXR3b3JrIHNwZWVkIGFuZCBzdG9yYWdlIHN0YXRzLiBUaGlzIGlzIGEgb25lIHN0b3Agc2hvcCB0byBtb25pdG9yIGFsbCBvZiB5b3VyIHZpdGFsIHNlbnNvcnMuIFVzZXMgYXN5bmNocm9ub3VzIHBvbGxpbmcgdG8gcHJvdmlkZSBhIHNtb290aCB1c2VyIGV4cGVyaWVuY2UuIEZlYXR1cmUgcmVxdWVzdHMgb3IgYnVncz8gUGxlYXNlIHVzZSBHaXRIdWIuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJjb3JlY29kaW5nIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZpdGFscyIsCiAgIm5hbWUiOiAiVml0YWxzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnZpdGFscyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29yZWNvZGluZy9WaXRhbHMiLAogICJ1dWlkIjogIlZpdGFsc0BDb3JlQ29kaW5nLmNvbSIsCiAgInZlcnNpb24iOiA2Nwp9"},
+    "46": {"version": "67", "sha256": "1ks26bxyyshprbyvclk44rmcrx4wkqsjfrvarbf4g806pazvw4ww", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ2xpbXBzZSBpbnRvIHlvdXIgY29tcHV0ZXIncyB0ZW1wZXJhdHVyZSwgdm9sdGFnZSwgZmFuIHNwZWVkLCBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NvciBsb2FkLCBzeXN0ZW0gcmVzb3VyY2VzLCBuZXR3b3JrIHNwZWVkIGFuZCBzdG9yYWdlIHN0YXRzLiBUaGlzIGlzIGEgb25lIHN0b3Agc2hvcCB0byBtb25pdG9yIGFsbCBvZiB5b3VyIHZpdGFsIHNlbnNvcnMuIFVzZXMgYXN5bmNocm9ub3VzIHBvbGxpbmcgdG8gcHJvdmlkZSBhIHNtb290aCB1c2VyIGV4cGVyaWVuY2UuIEZlYXR1cmUgcmVxdWVzdHMgb3IgYnVncz8gUGxlYXNlIHVzZSBHaXRIdWIuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJjb3JlY29kaW5nIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZpdGFscyIsCiAgIm5hbWUiOiAiVml0YWxzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnZpdGFscyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29yZWNvZGluZy9WaXRhbHMiLAogICJ1dWlkIjogIlZpdGFsc0BDb3JlQ29kaW5nLmNvbSIsCiAgInZlcnNpb24iOiA2Nwp9"}
   }}
 , {"uuid": "panel-date-format@keiii.github.com", "name": "Panel Date Format", "pname": "panel-date-format", "description": "Allows to customize the date format on the panel.", "link": "https://extensions.gnome.org/extension/1462/panel-date-format/", "shell_version_map": {
     "40": {"version": "11", "sha256": "1l6kaq9lpxyyj81iqqxwdpa4mwdsndx744zmgr69vklz4lkyznj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0byBjdXN0b21pemUgdGhlIGRhdGUgZm9ybWF0IG9uIHRoZSBwYW5lbC4iLAogICJuYW1lIjogIlBhbmVsIERhdGUgRm9ybWF0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWRhdGUtZm9ybWF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9LRUlJSS9nbm9tZS1zaGVsbC1wYW5lbC1kYXRlLWZvcm1hdCIsCiAgInV1aWQiOiAicGFuZWwtZGF0ZS1mb3JtYXRAa2VpaWkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"},
@@ -1392,7 +1454,8 @@
     "42": {"version": "11", "sha256": "1l6kaq9lpxyyj81iqqxwdpa4mwdsndx744zmgr69vklz4lkyznj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0byBjdXN0b21pemUgdGhlIGRhdGUgZm9ybWF0IG9uIHRoZSBwYW5lbC4iLAogICJuYW1lIjogIlBhbmVsIERhdGUgRm9ybWF0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWRhdGUtZm9ybWF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9LRUlJSS9nbm9tZS1zaGVsbC1wYW5lbC1kYXRlLWZvcm1hdCIsCiAgInV1aWQiOiAicGFuZWwtZGF0ZS1mb3JtYXRAa2VpaWkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"},
     "43": {"version": "11", "sha256": "1l6kaq9lpxyyj81iqqxwdpa4mwdsndx744zmgr69vklz4lkyznj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0byBjdXN0b21pemUgdGhlIGRhdGUgZm9ybWF0IG9uIHRoZSBwYW5lbC4iLAogICJuYW1lIjogIlBhbmVsIERhdGUgRm9ybWF0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWRhdGUtZm9ybWF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9LRUlJSS9nbm9tZS1zaGVsbC1wYW5lbC1kYXRlLWZvcm1hdCIsCiAgInV1aWQiOiAicGFuZWwtZGF0ZS1mb3JtYXRAa2VpaWkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"},
     "44": {"version": "11", "sha256": "1l6kaq9lpxyyj81iqqxwdpa4mwdsndx744zmgr69vklz4lkyznj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0byBjdXN0b21pemUgdGhlIGRhdGUgZm9ybWF0IG9uIHRoZSBwYW5lbC4iLAogICJuYW1lIjogIlBhbmVsIERhdGUgRm9ybWF0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWRhdGUtZm9ybWF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9LRUlJSS9nbm9tZS1zaGVsbC1wYW5lbC1kYXRlLWZvcm1hdCIsCiAgInV1aWQiOiAicGFuZWwtZGF0ZS1mb3JtYXRAa2VpaWkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"},
-    "45": {"version": "12", "sha256": "14ca3853hmn67c534qm8bna034mpkgal6waw2pkl98imy78276rq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0byBjdXN0b21pemUgdGhlIGRhdGUgZm9ybWF0IG9uIHRoZSBwYW5lbC4iLAogICJuYW1lIjogIlBhbmVsIERhdGUgRm9ybWF0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWRhdGUtZm9ybWF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0tFSUlJL2dub21lLXNoZWxsLXBhbmVsLWRhdGUtZm9ybWF0IiwKICAidXVpZCI6ICJwYW5lbC1kYXRlLWZvcm1hdEBrZWlpaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEyCn0="}
+    "45": {"version": "13", "sha256": "0b65dsimr97x8vgsvn5gsplfxipxq6ghc7cyrfkdpyk1xa84pjp3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0byBjdXN0b21pemUgdGhlIGRhdGUgZm9ybWF0IG9uIHRoZSBwYW5lbC4iLAogICJuYW1lIjogIlBhbmVsIERhdGUgRm9ybWF0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWRhdGUtZm9ybWF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9LRUlJSS9nbm9tZS1zaGVsbC1wYW5lbC1kYXRlLWZvcm1hdCIsCiAgInV1aWQiOiAicGFuZWwtZGF0ZS1mb3JtYXRAa2VpaWkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"},
+    "46": {"version": "13", "sha256": "0b65dsimr97x8vgsvn5gsplfxipxq6ghc7cyrfkdpyk1xa84pjp3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0byBjdXN0b21pemUgdGhlIGRhdGUgZm9ybWF0IG9uIHRoZSBwYW5lbC4iLAogICJuYW1lIjogIlBhbmVsIERhdGUgRm9ybWF0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWRhdGUtZm9ybWF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9LRUlJSS9nbm9tZS1zaGVsbC1wYW5lbC1kYXRlLWZvcm1hdCIsCiAgInV1aWQiOiAicGFuZWwtZGF0ZS1mb3JtYXRAa2VpaWkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"}
   }}
 , {"uuid": "desktop-icons@csoriano", "name": "Desktop Icons", "pname": "desktop-icons", "description": "Add icons to the desktop", "link": "https://extensions.gnome.org/extension/1465/desktop-icons/", "shell_version_map": {
     "38": {"version": "19", "sha256": "01qdh1kigl3ck1mzgha1a9218lpam5b54ai72mpvr64gkaax2mcv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBpY29ucyB0byB0aGUgZGVza3RvcCIsCiAgIm5hbWUiOiAiRGVza3RvcCBJY29ucyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOC4wIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvV29ybGQvU2hlbGxFeHRlbnNpb25zL2Rlc2t0b3AtaWNvbnMiLAogICJ1dWlkIjogImRlc2t0b3AtaWNvbnNAY3Nvcmlhbm8iLAogICJ2ZXJzaW9uIjogMTkKfQ=="}
@@ -1408,7 +1471,8 @@
     "42": {"version": "19", "sha256": "19jmxb7lhnwzssr7zcp4hrlwawcxsbz6ckabrsv4cppyal54j6dj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNlcnZlcnMgc3RhdHVzIG1lbnUgZm9yIHF1aWNrbHkgcnVubmluZyByZGVza3RvcCIsCiAgImV4dGVuc2lvbi1pZCI6ICJyZGVza3RvcC1tZW51IiwKICAibmFtZSI6ICJSZGVza3RvcCBsYXVuY2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdC5nZWVrd3Uub3JnL2Jhc3RpZW4vcmRlc2t0b3AtbWVudSIsCiAgInV1aWQiOiAicmRlc2t0b3AtbWVudUBiYXN0aWVuLmdpdC5nZWVrd3Uub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "43": {"version": "19", "sha256": "19jmxb7lhnwzssr7zcp4hrlwawcxsbz6ckabrsv4cppyal54j6dj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNlcnZlcnMgc3RhdHVzIG1lbnUgZm9yIHF1aWNrbHkgcnVubmluZyByZGVza3RvcCIsCiAgImV4dGVuc2lvbi1pZCI6ICJyZGVza3RvcC1tZW51IiwKICAibmFtZSI6ICJSZGVza3RvcCBsYXVuY2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdC5nZWVrd3Uub3JnL2Jhc3RpZW4vcmRlc2t0b3AtbWVudSIsCiAgInV1aWQiOiAicmRlc2t0b3AtbWVudUBiYXN0aWVuLmdpdC5nZWVrd3Uub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "44": {"version": "19", "sha256": "19jmxb7lhnwzssr7zcp4hrlwawcxsbz6ckabrsv4cppyal54j6dj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNlcnZlcnMgc3RhdHVzIG1lbnUgZm9yIHF1aWNrbHkgcnVubmluZyByZGVza3RvcCIsCiAgImV4dGVuc2lvbi1pZCI6ICJyZGVza3RvcC1tZW51IiwKICAibmFtZSI6ICJSZGVza3RvcCBsYXVuY2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdC5nZWVrd3Uub3JnL2Jhc3RpZW4vcmRlc2t0b3AtbWVudSIsCiAgInV1aWQiOiAicmRlc2t0b3AtbWVudUBiYXN0aWVuLmdpdC5nZWVrd3Uub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="},
-    "45": {"version": "23", "sha256": "0nlmx2rmhd3akhrypw4xbb4qsv126parbrx6pkf6h5z6qcx3qzcr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNlcnZlcnMgc3RhdHVzIG1lbnUgZm9yIHF1aWNrbHkgcnVubmluZyByZGVza3RvcCIsCiAgImV4dGVuc2lvbi1pZCI6ICJyZGVza3RvcC1tZW51IiwKICAibmFtZSI6ICJSZGVza3RvcCBsYXVuY2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0LmdlZWt3dS5vcmcvYmFzdGllbi9yZGVza3RvcC1tZW51IiwKICAidXVpZCI6ICJyZGVza3RvcC1tZW51QGJhc3RpZW4uZ2l0LmdlZWt3dS5vcmciLAogICJ2ZXJzaW9uIjogMjMKfQ=="}
+    "45": {"version": "24", "sha256": "0r5aqs29920jnxb7sgqqlh4mrfhry6sllp2ya5gsydn2710jfxpr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNlcnZlcnMgc3RhdHVzIG1lbnUgZm9yIHF1aWNrbHkgcnVubmluZyByZGVza3RvcCIsCiAgImV4dGVuc2lvbi1pZCI6ICJyZGVza3RvcC1tZW51IiwKICAibmFtZSI6ICJSZGVza3RvcCBsYXVuY2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdC5nZWVrd3Uub3JnL2Jhc3RpZW4vcmRlc2t0b3AtbWVudSIsCiAgInV1aWQiOiAicmRlc2t0b3AtbWVudUBiYXN0aWVuLmdpdC5nZWVrd3Uub3JnIiwKICAidmVyc2lvbiI6IDI0Cn0="},
+    "46": {"version": "24", "sha256": "0r5aqs29920jnxb7sgqqlh4mrfhry6sllp2ya5gsydn2710jfxpr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNlcnZlcnMgc3RhdHVzIG1lbnUgZm9yIHF1aWNrbHkgcnVubmluZyByZGVza3RvcCIsCiAgImV4dGVuc2lvbi1pZCI6ICJyZGVza3RvcC1tZW51IiwKICAibmFtZSI6ICJSZGVza3RvcCBsYXVuY2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdC5nZWVrd3Uub3JnL2Jhc3RpZW4vcmRlc2t0b3AtbWVudSIsCiAgInV1aWQiOiAicmRlc2t0b3AtbWVudUBiYXN0aWVuLmdpdC5nZWVrd3Uub3JnIiwKICAidmVyc2lvbiI6IDI0Cn0="}
   }}
 , {"uuid": "tint-all@amarovita.github.com", "name": "Tint All", "pname": "tint-all", "description": "Colorize the entire gnome workspace. Amber, green, cyan, sepia and grayscale - just keep clicking extension icon. Scroll over extension icon to change fx level.", "link": "https://extensions.gnome.org/extension/1471/tint-all/", "shell_version_map": {
     "38": {"version": "7", "sha256": "1lflpza6kbdh4ql338vidij9c2gh2r116gfgih7lk4inkj1hqmmz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yaXplIHRoZSBlbnRpcmUgZ25vbWUgd29ya3NwYWNlLiBBbWJlciwgZ3JlZW4sIGN5YW4sIHNlcGlhIGFuZCBncmF5c2NhbGUgLSBqdXN0IGtlZXAgY2xpY2tpbmcgZXh0ZW5zaW9uIGljb24uIFNjcm9sbCBvdmVyIGV4dGVuc2lvbiBpY29uIHRvIGNoYW5nZSBmeCBsZXZlbC4iLAogICJuYW1lIjogIlRpbnQgQWxsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidGludC1hbGxAYW1hcm92aXRhLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNwp9"},
@@ -1430,7 +1494,8 @@
     "42": {"version": "28", "sha256": "1iag2yy73ixz4al1ml8kfhf1hwy4lw3y0b5ngyy5w73hv5janivp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBsb2NrIHNjcmVlbiBiYWNrZ3JvdW5kLlxuSWYgeW91IHVzZSBVYnVudHUsIGluc3RhbGwgcGFja2FnZSBnaXIxLjItY2x1dHRlci0xLjAgZmlyc3QuIiwKICAibmFtZSI6ICJMb2NrIHNjcmVlbiBiYWNrZ3JvdW5kIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5sb2NrRGlhbG9nQmFja2dyb3VuZCIsCiAgInV1aWQiOiAidW5sb2NrRGlhbG9nQmFja2dyb3VuZEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyOAp9"},
     "43": {"version": "28", "sha256": "1iag2yy73ixz4al1ml8kfhf1hwy4lw3y0b5ngyy5w73hv5janivp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBsb2NrIHNjcmVlbiBiYWNrZ3JvdW5kLlxuSWYgeW91IHVzZSBVYnVudHUsIGluc3RhbGwgcGFja2FnZSBnaXIxLjItY2x1dHRlci0xLjAgZmlyc3QuIiwKICAibmFtZSI6ICJMb2NrIHNjcmVlbiBiYWNrZ3JvdW5kIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5sb2NrRGlhbG9nQmFja2dyb3VuZCIsCiAgInV1aWQiOiAidW5sb2NrRGlhbG9nQmFja2dyb3VuZEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyOAp9"},
     "44": {"version": "28", "sha256": "1iag2yy73ixz4al1ml8kfhf1hwy4lw3y0b5ngyy5w73hv5janivp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBsb2NrIHNjcmVlbiBiYWNrZ3JvdW5kLlxuSWYgeW91IHVzZSBVYnVudHUsIGluc3RhbGwgcGFja2FnZSBnaXIxLjItY2x1dHRlci0xLjAgZmlyc3QuIiwKICAibmFtZSI6ICJMb2NrIHNjcmVlbiBiYWNrZ3JvdW5kIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5sb2NrRGlhbG9nQmFja2dyb3VuZCIsCiAgInV1aWQiOiAidW5sb2NrRGlhbG9nQmFja2dyb3VuZEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyOAp9"},
-    "45": {"version": "34", "sha256": "0f0azv8scjhrj3pgpancgdmj3wz5b7p6aq562a1nz0b4bw6bwzv9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBsb2NrIHNjcmVlbiBiYWNrZ3JvdW5kLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ1bmxvY2tEaWFsb2ctQmFja2dyb3VuZCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkxvY2sgc2NyZWVuIGJhY2tncm91bmQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51bmxvY2tEaWFsb2dCYWNrZ3JvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5sb2NrRGlhbG9nQmFja2dyb3VuZCIsCiAgInV1aWQiOiAidW5sb2NrRGlhbG9nQmFja2dyb3VuZEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAzNAp9"}
+    "45": {"version": "34", "sha256": "0f0azv8scjhrj3pgpancgdmj3wz5b7p6aq562a1nz0b4bw6bwzv9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBsb2NrIHNjcmVlbiBiYWNrZ3JvdW5kLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ1bmxvY2tEaWFsb2ctQmFja2dyb3VuZCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkxvY2sgc2NyZWVuIGJhY2tncm91bmQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51bmxvY2tEaWFsb2dCYWNrZ3JvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5sb2NrRGlhbG9nQmFja2dyb3VuZCIsCiAgInV1aWQiOiAidW5sb2NrRGlhbG9nQmFja2dyb3VuZEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAzNAp9"},
+    "46": {"version": "35", "sha256": "0fwj1y12zgcp954ifaa1alzpylnqlgzkbgdg5hkia8k4bx6i8xdr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBsb2NrIHNjcmVlbiBiYWNrZ3JvdW5kLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ1bmxvY2tEaWFsb2ctQmFja2dyb3VuZCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkxvY2sgc2NyZWVuIGJhY2tncm91bmQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51bmxvY2tEaWFsb2dCYWNrZ3JvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5sb2NrRGlhbG9nQmFja2dyb3VuZCIsCiAgInV1aWQiOiAidW5sb2NrRGlhbG9nQmFja2dyb3VuZEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAzNQp9"}
   }}
 , {"uuid": "wsmatrix@martin.zurowietz.de", "name": "Workspace Matrix", "pname": "workspace-matrix", "description": "Arrange workspaces in a two dimensional grid with workspace thumbnails.\n\nIf you appreciate this extension please consider to donate $1.", "link": "https://extensions.gnome.org/extension/1485/workspace-matrix/", "shell_version_map": {
     "38": {"version": "27", "sha256": "1ll51pnpx29vckdhz739i6gnfababi2xdbhfv1hm5xhd1jrqc1kz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd29ya3NwYWNlcyBpbiBhIHR3byBkaW1lbnNpb25hbCBncmlkIHdpdGggd29ya3NwYWNlIHRodW1ibmFpbHMuXG5cbklmIHlvdSBhcHByZWNpYXRlIHRoaXMgZXh0ZW5zaW9uIHBsZWFzZSBjb25zaWRlciB0byBkb25hdGUgJDEuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid3NtYXRyaXgiLAogICJrZXliaW5kaW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud3NtYXRyaXgta2V5YmluZGluZ3MiLAogICJuYW1lIjogIldvcmtzcGFjZSBNYXRyaXgiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud3NtYXRyaXgtc2V0dGluZ3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tenVyL2dub21lLXNoZWxsLXdzbWF0cml4IiwKICAidXVpZCI6ICJ3c21hdHJpeEBtYXJ0aW4uenVyb3dpZXR6LmRlIiwKICAidmVyc2lvbiI6IDI3Cn0="},
@@ -1474,7 +1539,7 @@
     "45": {"version": "37", "sha256": "0w4anb7nmzk8mipnip163csz1mfj2jq5w1jrv3dirc4g9fdwi6w2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5ldyBtYWlsIGluZGljYXRvci5cblxuIEl0IGNoZWNrcyB0aGUgbm90aWZpY2F0aW9ucyBpbiB0aGUgbWVzc2FnZSB0cmF5IHJlbGF0ZWQgdG8gYSBuZXcgbWFpbCBjb21pbmcgZnJvbSB5b3VyIGRlZmF1bHQgZW1haWwgY2xpZW50LCBubyBleHRyYSBjb25maWd1cmF0aW9uIG5lZWRlZCwgdmVyeSBsaWdodCBleHRlbnNpb24uIENsaWNrIG9uIHRoZSBpY29uIGRvZXMgdG9nZ2xlIHlvdXIgZW1haWwgY2xpZW50IHdpbmRvdy5cblxuICoqKiBEbyBub3QgZGlzYWJsZSB0aGUgbm90aWZpY2F0aW9ucyBvZiB5b3VyIGRlZmF1bHQgZW1haWwgY2xpZW50IVxuXG4gKioqIEl0IGlzIG5vdCBhIHN0YW5kYWxvbmUgbWFpbCBjaGVja2VyLCB5b3UgbmVlZCB5b3VyIGVtYWlsIGNsaWVudCB0byBiZSBydW5uaW5nLiIsCiAgIm5hbWUiOiAiTmV3IE1haWwgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvbmV3LW1haWwtaW5kaWNhdG9yIiwKICAidXVpZCI6ICJuZXctbWFpbC1pbmRpY2F0b3JAZnRoeCIsCiAgInZlcnNpb24iOiAzNwp9"}
   }}
 , {"uuid": "tandem-raise@tomdryer.com", "name": "Tandem Raise", "pname": "tandem-raise", "description": "Raise pairs of tiled windows in tandem.", "link": "https://extensions.gnome.org/extension/1506/tandem-raise/", "shell_version_map": {
-    "42": {"version": "3", "sha256": "0f828j1pcad18i8z8n4691zm6rxl99ziigb8sj4qjbc0bn70nvmy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJhaXNlIHBhaXJzIG9mIHRpbGVkIHdpbmRvd3MgaW4gdGFuZGVtLiIsCiAgIm5hbWUiOiAiVGFuZGVtIFJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM2IiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rkcnllci90YW5kZW0tcmFpc2UiLAogICJ1dWlkIjogInRhbmRlbS1yYWlzZUB0b21kcnllci5jb20iLAogICJ2ZXJzaW9uIjogMwp9"}
+    "42": {"version": "5", "sha256": "0v82zypsh7qc3yv6fmqx9a2568q014papax4yrs9f92nqljzj7a6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJhaXNlIHBhaXJzIG9mIHRpbGVkIHdpbmRvd3MgaW4gdGFuZGVtLiIsCiAgIm5hbWUiOiAiVGFuZGVtIFJhaXNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMwIiwKICAgICIzLjM2IiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Rkcnllci90YW5kZW0tcmFpc2UiLAogICJ1dWlkIjogInRhbmRlbS1yYWlzZUB0b21kcnllci5jb20iLAogICJ2ZXJzaW9uIjogNQp9"}
   }}
 , {"uuid": "drop-down-terminal-x@bigbn.pro", "name": "Drop Down Terminal X", "pname": "drop-down-terminal-x", "description": "THIS EXTENSION IS NO LONGER SUPPORTED.\n\nIf you are looking for an alternative please look at that https://extensions.gnome.org/extension/3780/ddterm \nawesome extension.\n\nA GNOME Shell drop down terminal with extra feautures.\n \nSpecial thanks to:\n- Osman Alperen Elhan (https://github.com/oae)\n- Balder Claassen (https://github.com/balderclaassen)\n- Adrien Pyke (https://github.com/kufii)\n- Alan J Carvajal (https://github.com/ajcarvajal)\n- Massimo Mund (https://github.com/masmu)\n- Jakub Żywiec (https://github.com/jakubzet)\n- Mattias Eriksson (https://github.com/snaggen)\n- Henry78 (https://github.com/Henry78)\n- Maxim Toropov (https://github.com/MaxMaxoff)\nfor active contribution.\n\nBased on original extension \"gs-extensions-drop-down-terminal\" from Stéphane Démurget (https://github.com/zzrough)", "link": "https://extensions.gnome.org/extension/1509/drop-down-terminal-x/", "shell_version_map": {
     "38": {"version": "17", "sha256": "1k90g6bndw1xr56k7lwlxyw89aqbl47spkfmj1lq224z83w6hzdw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRISVMgRVhURU5TSU9OIElTIE5PIExPTkdFUiBTVVBQT1JURUQuXG5cbklmIHlvdSBhcmUgbG9va2luZyBmb3IgYW4gYWx0ZXJuYXRpdmUgcGxlYXNlIGxvb2sgYXQgdGhhdCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8zNzgwL2RkdGVybSBcbmF3ZXNvbWUgZXh0ZW5zaW9uLlxuXG5BIEdOT01FIFNoZWxsIGRyb3AgZG93biB0ZXJtaW5hbCB3aXRoIGV4dHJhIGZlYXV0dXJlcy5cbiBcblNwZWNpYWwgdGhhbmtzIHRvOlxuLSBPc21hbiBBbHBlcmVuIEVsaGFuIChodHRwczovL2dpdGh1Yi5jb20vb2FlKVxuLSBCYWxkZXIgQ2xhYXNzZW4gKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWxkZXJjbGFhc3Nlbilcbi0gQWRyaWVuIFB5a2UgKGh0dHBzOi8vZ2l0aHViLmNvbS9rdWZpaSlcbi0gQWxhbiBKIENhcnZhamFsIChodHRwczovL2dpdGh1Yi5jb20vYWpjYXJ2YWphbClcbi0gTWFzc2ltbyBNdW5kIChodHRwczovL2dpdGh1Yi5jb20vbWFzbXUpXG4tIEpha3ViIFx1MDE3Ynl3aWVjIChodHRwczovL2dpdGh1Yi5jb20vamFrdWJ6ZXQpXG4tIE1hdHRpYXMgRXJpa3Nzb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9zbmFnZ2VuKVxuLSBIZW5yeTc4IChodHRwczovL2dpdGh1Yi5jb20vSGVucnk3OClcbi0gTWF4aW0gVG9yb3BvdiAoaHR0cHM6Ly9naXRodWIuY29tL01heE1heG9mZilcbmZvciBhY3RpdmUgY29udHJpYnV0aW9uLlxuXG5CYXNlZCBvbiBvcmlnaW5hbCBleHRlbnNpb24gXCJncy1leHRlbnNpb25zLWRyb3AtZG93bi10ZXJtaW5hbFwiIGZyb20gU3RcdTAwZTlwaGFuZSBEXHUwMGU5bXVyZ2V0IChodHRwczovL2dpdGh1Yi5jb20venpyb3VnaCkiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJkcm9wLWRvd24tdGVybWluYWwteCIsCiAgImlkIjogImRyb3AtZG93bi10ZXJtaW5hbC14IiwKICAibmFtZSI6ICJEcm9wIERvd24gVGVybWluYWwgWCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOC4wIiwKICAgICIzLjI4LjEiLAogICAgIjMuMjguMiIsCiAgICAiMy4zMC4wIiwKICAgICIzLjMwLjEiLAogICAgIjMuMzAuMiIsCiAgICAiMy4zMi4wIiwKICAgICIzLjMyLjEiLAogICAgIjMuMzIuMiIsCiAgICAiMy4zNC4wIiwKICAgICIzLjM0LjQiLAogICAgIjMuMzYuMCIsCiAgICAiMy4zNi4xIiwKICAgICIzLjM2LjIiLAogICAgIjMuMzguMCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JpZ2JuL2dzLWV4dGVuc2lvbnMtZHJvcC1kb3duLXRlcm1pbmFsIiwKICAidXVpZCI6ICJkcm9wLWRvd24tdGVybWluYWwteEBiaWdibi5wcm8iLAogICJ2ZXJzaW9uIjogMTcKfQ=="}
@@ -1521,7 +1586,8 @@
     "42": {"version": "12", "sha256": "1qdyyrlgj3zgby95i2hvycgb3b2rfz29z9qbi3mccwqvz5r4in1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgaG90IGNvcm5lciBpbiBmdWxsc2NyZWVuIG1vZGUiLAogICJuYW1lIjogIkZ1bGxzY3JlZW4gSG90IENvcm5lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zb2FsL2dub21lLXNoZWxsLWZ1bGxzY3JlZW4taG90LWNvcm5lciIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1ob3QtY29ybmVyQHNvcnJvdy5hYm91dC5hbGljZS5wbS5tZSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "43": {"version": "12", "sha256": "1qdyyrlgj3zgby95i2hvycgb3b2rfz29z9qbi3mccwqvz5r4in1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgaG90IGNvcm5lciBpbiBmdWxsc2NyZWVuIG1vZGUiLAogICJuYW1lIjogIkZ1bGxzY3JlZW4gSG90IENvcm5lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zb2FsL2dub21lLXNoZWxsLWZ1bGxzY3JlZW4taG90LWNvcm5lciIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1ob3QtY29ybmVyQHNvcnJvdy5hYm91dC5hbGljZS5wbS5tZSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "1qdyyrlgj3zgby95i2hvycgb3b2rfz29z9qbi3mccwqvz5r4in1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgaG90IGNvcm5lciBpbiBmdWxsc2NyZWVuIG1vZGUiLAogICJuYW1lIjogIkZ1bGxzY3JlZW4gSG90IENvcm5lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zb2FsL2dub21lLXNoZWxsLWZ1bGxzY3JlZW4taG90LWNvcm5lciIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1ob3QtY29ybmVyQHNvcnJvdy5hYm91dC5hbGljZS5wbS5tZSIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "13", "sha256": "02qhd300q15l9rsn3y58w8l1gdh537cih5sxf1bhismmrvaz1s69", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgaG90IGNvcm5lciBpbiBmdWxsc2NyZWVuIG1vZGUiLAogICJuYW1lIjogIkZ1bGxzY3JlZW4gSG90IENvcm5lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zb2FsL2dub21lLXNoZWxsLWZ1bGxzY3JlZW4taG90LWNvcm5lciIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1ob3QtY29ybmVyQHNvcnJvdy5hYm91dC5hbGljZS5wbS5tZSIsCiAgInZlcnNpb24iOiAxMwp9"}
+    "45": {"version": "14", "sha256": "1pzrcqw79ldm5p0w0r86nc3apl5dcmx49zbjw0hpicpc6gzgyxq1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgaG90IGNvcm5lciBpbiBmdWxsc2NyZWVuIG1vZGUiLAogICJuYW1lIjogIkZ1bGxzY3JlZW4gSG90IENvcm5lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29hbC9nbm9tZS1zaGVsbC1mdWxsc2NyZWVuLWhvdC1jb3JuZXIiLAogICJ1dWlkIjogImZ1bGxzY3JlZW4taG90LWNvcm5lckBzb3Jyb3cuYWJvdXQuYWxpY2UucG0ubWUiLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
+    "46": {"version": "14", "sha256": "1pzrcqw79ldm5p0w0r86nc3apl5dcmx49zbjw0hpicpc6gzgyxq1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgaG90IGNvcm5lciBpbiBmdWxsc2NyZWVuIG1vZGUiLAogICJuYW1lIjogIkZ1bGxzY3JlZW4gSG90IENvcm5lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29hbC9nbm9tZS1zaGVsbC1mdWxsc2NyZWVuLWhvdC1jb3JuZXIiLAogICJ1dWlkIjogImZ1bGxzY3JlZW4taG90LWNvcm5lckBzb3Jyb3cuYWJvdXQuYWxpY2UucG0ubWUiLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
   }}
 , {"uuid": "worksets@blipk.xyz", "name": "Customised Workspaces", "pname": "worksets", "description": "Customised Workspaces enables creating isolated and customised workspaces.\n\n* Choose a different background image for each workspace\n* Your dash will have unique favourite applications on each workspace\n* Optionally isolate running applications to only appear on the dash in their respective workspace\n* Optionally show workspace information and actions in the overview\n* Set each customised workspace to autoload on specific workspaces\n* Hide the extension once you've configured your preferences to enjoy seamlessly upgraded workspaces in gnome shell\n\nPlease do not leave a comment for issues and instead report it here: https://github.com/blipk/Customised-Workspaces/issues", "link": "https://extensions.gnome.org/extension/1583/worksets/", "shell_version_map": {
     "38": {"version": "30", "sha256": "1z1yy47x20vqmjgghn91zs9nfs2g6f57nv4rzyi47bnklw7zsdcf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImFwcGxpY2F0aW9uLWlkIjogIm9yZy5rcm9ub3NvdWwud29ya3NldHMiLAogICJkZXNjcmlwdGlvbiI6ICJDdXN0b21pc2VkIFdvcmtzcGFjZXMgZW5hYmxlcyBjcmVhdGluZyBpc29sYXRlZCBhbmQgY3VzdG9taXNlZCB3b3Jrc3BhY2VzLlxuXG4qIENob29zZSBhIGRpZmZlcmVudCBiYWNrZ3JvdW5kIGltYWdlIGZvciBlYWNoIHdvcmtzcGFjZVxuKiBZb3VyIGRhc2ggd2lsbCBoYXZlIHVuaXF1ZSBmYXZvdXJpdGUgYXBwbGljYXRpb25zIG9uIGVhY2ggd29ya3NwYWNlXG4qIE9wdGlvbmFsbHkgaXNvbGF0ZSBydW5uaW5nIGFwcGxpY2F0aW9ucyB0byBvbmx5IGFwcGVhciBvbiB0aGUgZGFzaCBpbiB0aGVpciByZXNwZWN0aXZlIHdvcmtzcGFjZVxuKiBPcHRpb25hbGx5IHNob3cgd29ya3NwYWNlIGluZm9ybWF0aW9uIGFuZCBhY3Rpb25zIGluIHRoZSBvdmVydmlld1xuKiBTZXQgZWFjaCBjdXN0b21pc2VkIHdvcmtzcGFjZSB0byBhdXRvbG9hZCBvbiBzcGVjaWZpYyB3b3Jrc3BhY2VzXG4qIEhpZGUgdGhlIGV4dGVuc2lvbiBvbmNlIHlvdSd2ZSBjb25maWd1cmVkIHlvdXIgcHJlZmVyZW5jZXMgdG8gZW5qb3kgc2VhbWxlc3NseSB1cGdyYWRlZCB3b3Jrc3BhY2VzIGluIGdub21lIHNoZWxsXG5cblBsZWFzZSBkbyBub3QgbGVhdmUgYSBjb21tZW50IGZvciBpc3N1ZXMgYW5kIGluc3RlYWQgcmVwb3J0IGl0IGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibGlway9DdXN0b21pc2VkLVdvcmtzcGFjZXMvaXNzdWVzIiwKICAiZXh0ZW5zaW9uLWlkIjogIndvcmtzZXRzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid29ya3NldHMiLAogICJuYW1lIjogIkN1c3RvbWlzZWQgV29ya3NwYWNlcyIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJhZG1pbkBrcm9ub3NvdWwueHl6IiwKICAicmVzb3VyY2UtcGF0aCI6ICIvb3JnL2tyb25vc291bC93b3Jrc2V0cy8iLAogICJzZXR0aW5ncy1wYXRoIjogIi9vcmcvZ25vbWUvc2hlbGwvZXh0ZW5zaW9ucy93b3Jrc2V0cy8iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NldHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwLmJldGEiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYmxpcGsvQ3VzdG9taXNlZC1Xb3Jrc3BhY2VzIiwKICAidXVpZCI6ICJ3b3Jrc2V0c0BibGlway54eXoiLAogICJ2ZXJzaW9uIjogMzAKfQ=="},
@@ -1544,7 +1610,8 @@
     "42": {"version": "28", "sha256": "0m32y943k89775ibci9j6k75la2qhr0z6va0yisb77sv2gy72cqw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBvbiB0aGUgbW9uaXRvcnNcblxuSG90a2V5czpcbiBDdHJsK0FsdCsxIENhc2NhZGUgd2luZG93c1xuIEN0cmwrQWx0KzIgVGlsaW5nIHdpbmRvd3NcbiBDdHJsK0FsdCszIFNpZGUgYnkgc2lkZSB3aW5kb3dzXG4gQ3RybCtBbHQrNCBTdGFjayB3aW5kb3dzIiwKICAibmFtZSI6ICJBcnJhbmdlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFycmFuZ2VXaW5kb3dzIiwKICAidXVpZCI6ICJhcnJhbmdlV2luZG93c0BzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyOAp9"},
     "43": {"version": "28", "sha256": "0m32y943k89775ibci9j6k75la2qhr0z6va0yisb77sv2gy72cqw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBvbiB0aGUgbW9uaXRvcnNcblxuSG90a2V5czpcbiBDdHJsK0FsdCsxIENhc2NhZGUgd2luZG93c1xuIEN0cmwrQWx0KzIgVGlsaW5nIHdpbmRvd3NcbiBDdHJsK0FsdCszIFNpZGUgYnkgc2lkZSB3aW5kb3dzXG4gQ3RybCtBbHQrNCBTdGFjayB3aW5kb3dzIiwKICAibmFtZSI6ICJBcnJhbmdlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFycmFuZ2VXaW5kb3dzIiwKICAidXVpZCI6ICJhcnJhbmdlV2luZG93c0BzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyOAp9"},
     "44": {"version": "28", "sha256": "0m32y943k89775ibci9j6k75la2qhr0z6va0yisb77sv2gy72cqw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBvbiB0aGUgbW9uaXRvcnNcblxuSG90a2V5czpcbiBDdHJsK0FsdCsxIENhc2NhZGUgd2luZG93c1xuIEN0cmwrQWx0KzIgVGlsaW5nIHdpbmRvd3NcbiBDdHJsK0FsdCszIFNpZGUgYnkgc2lkZSB3aW5kb3dzXG4gQ3RybCtBbHQrNCBTdGFjayB3aW5kb3dzIiwKICAibmFtZSI6ICJBcnJhbmdlIFdpbmRvd3MiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFycmFuZ2VXaW5kb3dzIiwKICAidXVpZCI6ICJhcnJhbmdlV2luZG93c0BzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyOAp9"},
-    "45": {"version": "29", "sha256": "1nqmg1ra61kc5kchwprav13cjck1n2r97hdbrnz1iq0v8pwk63sl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBvbiB0aGUgbW9uaXRvcnNcblxuSG90a2V5czpcbiBDdHJsK0FsdCsxIENhc2NhZGUgd2luZG93c1xuIEN0cmwrQWx0KzIgVGlsaW5nIHdpbmRvd3NcbiBDdHJsK0FsdCszIFNpZGUgYnkgc2lkZSB3aW5kb3dzXG4gQ3RybCtBbHQrNCBTdGFjayB3aW5kb3dzIiwKICAiZXh0ZW5zaW9uLWlkIjogImFycmFnbmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkFycmFuZ2UgV2luZG93cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJyYW5nZVdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1hcnJhbmdlV2luZG93cyIsCiAgInV1aWQiOiAiYXJyYW5nZVdpbmRvd3NAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="}
+    "45": {"version": "29", "sha256": "1nqmg1ra61kc5kchwprav13cjck1n2r97hdbrnz1iq0v8pwk63sl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBvbiB0aGUgbW9uaXRvcnNcblxuSG90a2V5czpcbiBDdHJsK0FsdCsxIENhc2NhZGUgd2luZG93c1xuIEN0cmwrQWx0KzIgVGlsaW5nIHdpbmRvd3NcbiBDdHJsK0FsdCszIFNpZGUgYnkgc2lkZSB3aW5kb3dzXG4gQ3RybCtBbHQrNCBTdGFjayB3aW5kb3dzIiwKICAiZXh0ZW5zaW9uLWlkIjogImFycmFnbmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkFycmFuZ2UgV2luZG93cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJyYW5nZVdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1hcnJhbmdlV2luZG93cyIsCiAgInV1aWQiOiAiYXJyYW5nZVdpbmRvd3NAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "46": {"version": "30", "sha256": "1cpzyg3swis4rfgajsk92pvpk1831wnrq14rl7f04wraw41md3bs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFycmFuZ2Ugd2luZG93cyBvbiB0aGUgbW9uaXRvcnNcblxuSG90a2V5czpcbiBDdHJsK0FsdCsxIENhc2NhZGUgd2luZG93c1xuIEN0cmwrQWx0KzIgVGlsaW5nIHdpbmRvd3NcbiBDdHJsK0FsdCszIFNpZGUgYnkgc2lkZSB3aW5kb3dzXG4gQ3RybCtBbHQrNCBTdGFjayB3aW5kb3dzIiwKICAiZXh0ZW5zaW9uLWlkIjogImFycmFnbmUtd2luZG93cyIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIkFycmFuZ2UgV2luZG93cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJyYW5nZVdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1hcnJhbmdlV2luZG93cyIsCiAgInV1aWQiOiAiYXJyYW5nZVdpbmRvd3NAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzAKfQ=="}
   }}
 , {"uuid": "fullscreen-notifications@sorrow.about.alice.pm.me", "name": "Fullscreen Notifications", "pname": "fullscreen-notifications", "description": "Enables all notifications in fullscreen mode", "link": "https://extensions.gnome.org/extension/1610/fullscreen-notifications/", "shell_version_map": {
     "38": {"version": "3", "sha256": "1g1dgrhbif7qcxga7302bhhdjrr2v3vkp6dfavyclzsdkkrr2wwh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgYWxsIG5vdGlmaWNhdGlvbnMgaW4gZnVsbHNjcmVlbiBtb2RlIiwKICAibmFtZSI6ICJGdWxsc2NyZWVuIE5vdGlmaWNhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzAuMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NvYWwvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZ1bGxzY3JlZW4tbm90aWZpY2F0aW9ucyIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1ub3RpZmljYXRpb25zQHNvcnJvdy5hYm91dC5hbGljZS5wbS5tZSIsCiAgInZlcnNpb24iOiAzCn0="},
@@ -1553,7 +1620,8 @@
     "42": {"version": "8", "sha256": "0dwg21ic5xs6pmrgfjfrw7a8s5clfqazkmh0b3q3rh93dqizmp7j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgYWxsIG5vdGlmaWNhdGlvbnMgaW4gZnVsbHNjcmVlbiBtb2RlIiwKICAibmFtZSI6ICJGdWxsc2NyZWVuIE5vdGlmaWNhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29hbC9nbm9tZS1zaGVsbC1leHRlbnNpb24tZnVsbHNjcmVlbi1ub3RpZmljYXRpb25zIiwKICAidXVpZCI6ICJmdWxsc2NyZWVuLW5vdGlmaWNhdGlvbnNAc29ycm93LmFib3V0LmFsaWNlLnBtLm1lIiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "43": {"version": "8", "sha256": "0dwg21ic5xs6pmrgfjfrw7a8s5clfqazkmh0b3q3rh93dqizmp7j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgYWxsIG5vdGlmaWNhdGlvbnMgaW4gZnVsbHNjcmVlbiBtb2RlIiwKICAibmFtZSI6ICJGdWxsc2NyZWVuIE5vdGlmaWNhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29hbC9nbm9tZS1zaGVsbC1leHRlbnNpb24tZnVsbHNjcmVlbi1ub3RpZmljYXRpb25zIiwKICAidXVpZCI6ICJmdWxsc2NyZWVuLW5vdGlmaWNhdGlvbnNAc29ycm93LmFib3V0LmFsaWNlLnBtLm1lIiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "44": {"version": "8", "sha256": "0dwg21ic5xs6pmrgfjfrw7a8s5clfqazkmh0b3q3rh93dqizmp7j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgYWxsIG5vdGlmaWNhdGlvbnMgaW4gZnVsbHNjcmVlbiBtb2RlIiwKICAibmFtZSI6ICJGdWxsc2NyZWVuIE5vdGlmaWNhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29hbC9nbm9tZS1zaGVsbC1leHRlbnNpb24tZnVsbHNjcmVlbi1ub3RpZmljYXRpb25zIiwKICAidXVpZCI6ICJmdWxsc2NyZWVuLW5vdGlmaWNhdGlvbnNAc29ycm93LmFib3V0LmFsaWNlLnBtLm1lIiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "9", "sha256": "1cs3l3y21lwnvmkybp8pmvypghrd5ypzh5ixhlgx5fza8db27dhi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgYWxsIG5vdGlmaWNhdGlvbnMgaW4gZnVsbHNjcmVlbiBtb2RlIiwKICAibmFtZSI6ICJGdWxsc2NyZWVuIE5vdGlmaWNhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29hbC9nbm9tZS1zaGVsbC1leHRlbnNpb24tZnVsbHNjcmVlbi1ub3RpZmljYXRpb25zIiwKICAidXVpZCI6ICJmdWxsc2NyZWVuLW5vdGlmaWNhdGlvbnNAc29ycm93LmFib3V0LmFsaWNlLnBtLm1lIiwKICAidmVyc2lvbiI6IDkKfQ=="}
+    "45": {"version": "10", "sha256": "039x00zq8vqa32qfv2452wrnka5wq3asn19nwpzc3fgn43b5g8cz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgYWxsIG5vdGlmaWNhdGlvbnMgaW4gZnVsbHNjcmVlbiBtb2RlIiwKICAibmFtZSI6ICJGdWxsc2NyZWVuIE5vdGlmaWNhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NvYWwvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZ1bGxzY3JlZW4tbm90aWZpY2F0aW9ucyIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1ub3RpZmljYXRpb25zQHNvcnJvdy5hYm91dC5hbGljZS5wbS5tZSIsCiAgInZlcnNpb24iOiAxMAp9"},
+    "46": {"version": "10", "sha256": "039x00zq8vqa32qfv2452wrnka5wq3asn19nwpzc3fgn43b5g8cz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgYWxsIG5vdGlmaWNhdGlvbnMgaW4gZnVsbHNjcmVlbiBtb2RlIiwKICAibmFtZSI6ICJGdWxsc2NyZWVuIE5vdGlmaWNhdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NvYWwvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZ1bGxzY3JlZW4tbm90aWZpY2F0aW9ucyIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1ub3RpZmljYXRpb25zQHNvcnJvdy5hYm91dC5hbGljZS5wbS5tZSIsCiAgInZlcnNpb24iOiAxMAp9"}
   }}
 , {"uuid": "panelScroll@sun.wxg@gmail.com", "name": "panel scroll", "pname": "panel-scroll", "description": "Switch windows or workspace by mouse scroll on the panel.\nPointer on left of panel, switch windows.\nPointer on right of panel, switch workspaces.", "link": "https://extensions.gnome.org/extension/1616/panel-scroll/", "shell_version_map": {
     "38": {"version": "10", "sha256": "1llw16wszrkrrzrlyd1ppw8kn1cqp2z4irzi9q7v2nr47hrk14kd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIHdvcmtzcGFjZSBieSBtb3VzZSBzY3JvbGwgb24gdGhlIHBhbmVsLlxuUG9pbnRlciBvbiBsZWZ0IG9mIHBhbmVsLCBzd2l0Y2ggd2luZG93cy5cblBvaW50ZXIgb24gcmlnaHQgb2YgcGFuZWwsIHN3aXRjaCB3b3Jrc3BhY2VzLiIsCiAgIm5hbWUiOiAicGFuZWwgc2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tcGFuZWxTY3JvbGwiLAogICJ1dWlkIjogInBhbmVsU2Nyb2xsQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDEwCn0="},
@@ -1562,7 +1630,8 @@
     "42": {"version": "21", "sha256": "0fdhbk1pxh5vwrkwxzzcanf9sm5zm83149gg69nch1mph4bk9s06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIHdvcmtzcGFjZSBieSBtb3VzZSBzY3JvbGwgb24gdGhlIHBhbmVsLlxuUG9pbnRlciBvbiBsZWZ0IG9mIHBhbmVsLCBzd2l0Y2ggd2luZG93cy5cblBvaW50ZXIgb24gcmlnaHQgb2YgcGFuZWwsIHN3aXRjaCB3b3Jrc3BhY2VzLiIsCiAgIm5hbWUiOiAicGFuZWwgc2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1wYW5lbFNjcm9sbCIsCiAgInV1aWQiOiAicGFuZWxTY3JvbGxAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
     "43": {"version": "21", "sha256": "0fdhbk1pxh5vwrkwxzzcanf9sm5zm83149gg69nch1mph4bk9s06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIHdvcmtzcGFjZSBieSBtb3VzZSBzY3JvbGwgb24gdGhlIHBhbmVsLlxuUG9pbnRlciBvbiBsZWZ0IG9mIHBhbmVsLCBzd2l0Y2ggd2luZG93cy5cblBvaW50ZXIgb24gcmlnaHQgb2YgcGFuZWwsIHN3aXRjaCB3b3Jrc3BhY2VzLiIsCiAgIm5hbWUiOiAicGFuZWwgc2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1wYW5lbFNjcm9sbCIsCiAgInV1aWQiOiAicGFuZWxTY3JvbGxAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
     "44": {"version": "21", "sha256": "0fdhbk1pxh5vwrkwxzzcanf9sm5zm83149gg69nch1mph4bk9s06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIHdvcmtzcGFjZSBieSBtb3VzZSBzY3JvbGwgb24gdGhlIHBhbmVsLlxuUG9pbnRlciBvbiBsZWZ0IG9mIHBhbmVsLCBzd2l0Y2ggd2luZG93cy5cblBvaW50ZXIgb24gcmlnaHQgb2YgcGFuZWwsIHN3aXRjaCB3b3Jrc3BhY2VzLiIsCiAgIm5hbWUiOiAicGFuZWwgc2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1wYW5lbFNjcm9sbCIsCiAgInV1aWQiOiAicGFuZWxTY3JvbGxAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
-    "45": {"version": "23", "sha256": "023567g00rzd6wprl2qmkdaa620i1wl9kyrgi4yyr9jav98kg8j2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIHdvcmtzcGFjZSBieSBtb3VzZSBzY3JvbGwgb24gdGhlIHBhbmVsLlxuUG9pbnRlciBvbiBsZWZ0IG9mIHBhbmVsLCBzd2l0Y2ggd2luZG93cy5cblBvaW50ZXIgb24gcmlnaHQgb2YgcGFuZWwsIHN3aXRjaCB3b3Jrc3BhY2VzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC1zY3JvbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJwYW5lbCBzY3JvbGwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsU2Nyb2xsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tcGFuZWxTY3JvbGwiLAogICJ1dWlkIjogInBhbmVsU2Nyb2xsQHN1bi53eGdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="}
+    "45": {"version": "24", "sha256": "0i9ay2nb26k6bvrfjaldmyr1h1s2s1xj8vsbkhw7lnp5b24jprnl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIHdvcmtzcGFjZSBieSBtb3VzZSBzY3JvbGwgb24gdGhlIHBhbmVsLlxuUG9pbnRlciBvbiBsZWZ0IG9mIHBhbmVsLCBzd2l0Y2ggd2luZG93cy5cblBvaW50ZXIgb24gcmlnaHQgb2YgcGFuZWwsIHN3aXRjaCB3b3Jrc3BhY2VzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC1zY3JvbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJwYW5lbCBzY3JvbGwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsU2Nyb2xsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBhbmVsU2Nyb2xsIiwKICAidXVpZCI6ICJwYW5lbFNjcm9sbEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyNAp9"},
+    "46": {"version": "24", "sha256": "0i9ay2nb26k6bvrfjaldmyr1h1s2s1xj8vsbkhw7lnp5b24jprnl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3aW5kb3dzIG9yIHdvcmtzcGFjZSBieSBtb3VzZSBzY3JvbGwgb24gdGhlIHBhbmVsLlxuUG9pbnRlciBvbiBsZWZ0IG9mIHBhbmVsLCBzd2l0Y2ggd2luZG93cy5cblBvaW50ZXIgb24gcmlnaHQgb2YgcGFuZWwsIHN3aXRjaCB3b3Jrc3BhY2VzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC1zY3JvbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJwYW5lbCBzY3JvbGwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogInN1bi53eGdAZ21haWwuY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsU2Nyb2xsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBhbmVsU2Nyb2xsIiwKICAidXVpZCI6ICJwYW5lbFNjcm9sbEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyNAp9"}
   }}
 , {"uuid": "soft-brightness@fifi.org", "name": "Soft brightness", "pname": "soft-brightness", "description": "Add or override the brightness slider to change the brightness via an alpha layer (and optionally stop using or cooperate with the exising backlight, if present).\nEither internal, external or all monitors can be dimmed.\nSee the GitHub page for details.\n\nNote that this extension will keep running on the lock screen, as you'd also want the brightness setting to apply to the lock screen as well. Please report on GitHub if this gives you any trouble.", "link": "https://extensions.gnome.org/extension/1625/soft-brightness/", "shell_version_map": {
     "38": {"version": "30", "sha256": "0d8561qp92v8n561bafhkj9j5k21knljzyrf2msihxxj1kfgkp9l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzb2Z0LWJyaWdodG5lc3MiLAogICJuYW1lIjogIlNvZnQgYnJpZ2h0bmVzcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zb2Z0LWJyaWdodG5lc3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzMuOTAiLAogICAgIjMuMzYiLAogICAgIjMuMzUuMSIsCiAgICAiMy4zNS45MiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0YtaS1mL3NvZnQtYnJpZ2h0bmVzcyIsCiAgInV1aWQiOiAic29mdC1icmlnaHRuZXNzQGZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYzMC0wLWc4ODQyZGZiIiwKICAidmVyc2lvbiI6IDMwCn0="},
@@ -1592,7 +1661,8 @@
     "42": {"version": "13", "sha256": "1q9zzjcy8pyifqm51p51wb290casl3464k1w1p5ijgwf492va6gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGxlZ2FjeSB0cmF5IGljb25zIG9uIHRvcCBcdTIwMTMgdGhlIGZpeGVkIHZlcnNpb24gb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNDk1L3RvcGljb25zLyIsCiAgIm5hbWUiOiAiVG9wSWNvbnNGaXgiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidG9waWNvbnNmaXhAYWxlc2t2YUBkZXZudWxsbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "43": {"version": "18", "sha256": "14hk5283fspffhjv66xh44xzy06ap0cbwsjgp9n3k53kr17f3m93", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGxlZ2FjeSB0cmF5IGljb25zIG9uIHRvcCBcdTIwMTMgdGhlIGZpeGVkIHZlcnNpb24gb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNDk1L3RvcGljb25zLyIsCiAgIm5hbWUiOiAiVG9wSWNvbnNGaXgiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInRvcGljb25zZml4QGFsZXNrdmFAZGV2bnVsbG1haWwuY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "44": {"version": "19", "sha256": "1sfv67m3xbnpq63xbd794y9zf4r0c5myjpjwdn6nmwp9rad7xdmk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGxlZ2FjeSB0cmF5IGljb25zIG9uIHRvcCBcdTIwMTMgdGhlIGZpeGVkIHZlcnNpb24gb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNDk1L3RvcGljb25zLyIsCiAgIm5hbWUiOiAiVG9wSWNvbnNGaXgiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInRvcGljb25zZml4QGFsZXNrdmFAZGV2bnVsbG1haWwuY29tIiwKICAidmVyc2lvbiI6IDE5Cn0="},
-    "45": {"version": "21", "sha256": "11kqk1kdghblrb2hprjqnxw8l7mp2h2vwmpqjs0j817nw3aiasvw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGxlZ2FjeSB0cmF5IGljb25zIG9uIHRvcCBcdTIwMTMgdGhlIGZpeGVkIHZlcnNpb24gb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNDk1L3RvcGljb25zLyIsCiAgIm5hbWUiOiAiVG9wSWNvbnNGaXgiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInRvcGljb25zZml4QGFsZXNrdmFAZGV2bnVsbG1haWwuY29tIiwKICAidmVyc2lvbiI6IDIxCn0="}
+    "45": {"version": "22", "sha256": "1ds4gkjbdhzk9z41gl0nksnwy20cp8p5f8q2wqng4qkair3kah0b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGxlZ2FjeSB0cmF5IGljb25zIG9uIHRvcCBcdTIwMTMgdGhlIGZpeGVkIHZlcnNpb24gb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNDk1L3RvcGljb25zLyIsCiAgIm5hbWUiOiAiVG9wSWNvbnNGaXgiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJ0b3BpY29uc2ZpeEBhbGVza3ZhQGRldm51bGxtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyMgp9"},
+    "46": {"version": "22", "sha256": "1ds4gkjbdhzk9z41gl0nksnwy20cp8p5f8q2wqng4qkair3kah0b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGxlZ2FjeSB0cmF5IGljb25zIG9uIHRvcCBcdTIwMTMgdGhlIGZpeGVkIHZlcnNpb24gb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNDk1L3RvcGljb25zLyIsCiAgIm5hbWUiOiAiVG9wSWNvbnNGaXgiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJ0b3BpY29uc2ZpeEBhbGVza3ZhQGRldm51bGxtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyMgp9"}
   }}
 , {"uuid": "animation-tweaks@Selenium-H", "name": "Animation Tweaks", "pname": "animation-tweaks", "description": "Add animations to different items and customize them.\n\nPlease reset the extension after updating.\nThe Extension will stop when upgraded to an incompatible version.\nIn that case an Update tab is created to easily reset the extension.\nA Reset menu entry is also always present in in the Top Right Application menu of the extension preferences window.\nA Default shortcut combination of Super Key + t is provided to disable the extension.\n\nSome effects might not work properly on wayland, for which an option to integrate with wayland is provided on Integrations tab.\nHowever, some animations might not work properly.\n\nTo manage effect Delay time enable Show delay time in preferences Window from Top Right Application menu -> Preferences\nand reopen preferences.", "link": "https://extensions.gnome.org/extension/1680/animation-tweaks/", "shell_version_map": {
     "38": {"version": "18", "sha256": "07niv7biy9yxmxdg498kqypyqva6y8slm3gmn70dpx9f9ng8ya55", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvbW1lbnQiOiAiQWRkIGFuaW1hdGlvbnMgdG8gZGlmZmVyZW50IGl0ZW1zIGFuZCBjdXN0b21pemUgdGhlbS4iLAogICJkZXNjcmlwdGlvbiI6ICJBZGQgYW5pbWF0aW9ucyB0byBkaWZmZXJlbnQgaXRlbXMgYW5kIGN1c3RvbWl6ZSB0aGVtLlxuXG5QbGVhc2UgcmVzZXQgdGhlIGV4dGVuc2lvbiBhZnRlciB1cGRhdGluZy5cblRoZSBFeHRlbnNpb24gd2lsbCBzdG9wIHdoZW4gdXBncmFkZWQgdG8gYW4gaW5jb21wYXRpYmxlIHZlcnNpb24uXG5JbiB0aGF0IGNhc2UgYW4gVXBkYXRlIHRhYiBpcyBjcmVhdGVkIHRvIGVhc2lseSByZXNldCB0aGUgZXh0ZW5zaW9uLlxuQSBSZXNldCBtZW51IGVudHJ5IGlzIGFsc28gYWx3YXlzIHByZXNlbnQgaW4gaW4gdGhlIFRvcCBSaWdodCBBcHBsaWNhdGlvbiBtZW51IG9mIHRoZSBleHRlbnNpb24gcHJlZmVyZW5jZXMgd2luZG93LlxuQSBEZWZhdWx0IHNob3J0Y3V0IGNvbWJpbmF0aW9uIG9mIFN1cGVyIEtleSArIHQgaXMgcHJvdmlkZWQgdG8gZGlzYWJsZSB0aGUgZXh0ZW5zaW9uLlxuXG5Tb21lIGVmZmVjdHMgbWlnaHQgbm90IHdvcmsgcHJvcGVybHkgb24gd2F5bGFuZCwgZm9yIHdoaWNoIGFuIG9wdGlvbiB0byBpbnRlZ3JhdGUgd2l0aCB3YXlsYW5kIGlzIHByb3ZpZGVkIG9uIEludGVncmF0aW9ucyB0YWIuXG5Ib3dldmVyLCBzb21lIGFuaW1hdGlvbnMgbWlnaHQgbm90IHdvcmsgcHJvcGVybHkuXG5cblRvIG1hbmFnZSBlZmZlY3QgRGVsYXkgdGltZSBlbmFibGUgU2hvdyBkZWxheSB0aW1lIGluIHByZWZlcmVuY2VzIFdpbmRvdyBmcm9tIFRvcCBSaWdodCBBcHBsaWNhdGlvbiBtZW51IC0+IFByZWZlcmVuY2VzXG5hbmQgcmVvcGVuIHByZWZlcmVuY2VzLiIsCiAgIm5hbWUiOiAiQW5pbWF0aW9uIFR3ZWFrcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIgogIF0sCiAgInN0YXR1cyI6ICIiLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NlbGVuaXVtLUgvQW5pbWF0aW9uLVR3ZWFrcyIsCiAgInV1aWQiOiAiYW5pbWF0aW9uLXR3ZWFrc0BTZWxlbml1bS1IIiwKICAidmVyc2lvbiI6IDE4Cn0="},
@@ -1624,7 +1694,8 @@
     "42": {"version": "16", "sha256": "0hbgig15gyvnivhjny2i899rbwl5whcliwj1nn1zyccdv0v7xad8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIGJhY2sgdGhlIHRyYW5zcGFyZW50IHRvcCBiYXIgd2hlbiBmcmVlLWZsb2F0aW5nIGluIEdOT01FIFNoZWxsIDMuMzIuXG5cblRoaXMgYmFzaWNhbGx5IGNvbWVzIGZyb20gdGhlIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gcmVtb3ZlZCBpbiBHTk9NRSBTaGVsbCAzLjMyLCBhbmQgSSBtb2RpZmllZCB0aGUgY29kZSBhIGJpdCB0byBtYWtlIGl0IGFuIGV4dGVuc2lvbi4gRW5qb3khIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhciIsCiAgInV1aWQiOiAidHJhbnNwYXJlbnQtdG9wLWJhckB6aGFuZ2hhaS5tZSIsCiAgInZlcnNpb24iOiAxNgp9"},
     "43": {"version": "16", "sha256": "0hbgig15gyvnivhjny2i899rbwl5whcliwj1nn1zyccdv0v7xad8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIGJhY2sgdGhlIHRyYW5zcGFyZW50IHRvcCBiYXIgd2hlbiBmcmVlLWZsb2F0aW5nIGluIEdOT01FIFNoZWxsIDMuMzIuXG5cblRoaXMgYmFzaWNhbGx5IGNvbWVzIGZyb20gdGhlIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gcmVtb3ZlZCBpbiBHTk9NRSBTaGVsbCAzLjMyLCBhbmQgSSBtb2RpZmllZCB0aGUgY29kZSBhIGJpdCB0byBtYWtlIGl0IGFuIGV4dGVuc2lvbi4gRW5qb3khIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhciIsCiAgInV1aWQiOiAidHJhbnNwYXJlbnQtdG9wLWJhckB6aGFuZ2hhaS5tZSIsCiAgInZlcnNpb24iOiAxNgp9"},
     "44": {"version": "17", "sha256": "16fd6rqvfm6d9qcy60ww5v5i6dhid59ski9ijn0ab0a0zbb2s4yy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIGJhY2sgdGhlIHRyYW5zcGFyZW50IHRvcCBiYXIgd2hlbiBmcmVlLWZsb2F0aW5nIGluIEdOT01FIFNoZWxsIDMuMzIuXG5cblRoaXMgYmFzaWNhbGx5IGNvbWVzIGZyb20gdGhlIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gcmVtb3ZlZCBpbiBHTk9NRSBTaGVsbCAzLjMyLCBhbmQgSSBtb2RpZmllZCB0aGUgY29kZSBhIGJpdCB0byBtYWtlIGl0IGFuIGV4dGVuc2lvbi4gRW5qb3khIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3poYW5naGFpL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC10b3AtYmFyIiwKICAidXVpZCI6ICJ0cmFuc3BhcmVudC10b3AtYmFyQHpoYW5naGFpLm1lIiwKICAidmVyc2lvbiI6IDE3Cn0="},
-    "45": {"version": "20", "sha256": "021pwcnyj79r8w1hjyv8xqqdzbzk0f5fbiply0izp690ahvkx7gn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIGJhY2sgdGhlIHRyYW5zcGFyZW50IHRvcCBiYXIgd2hlbiBmcmVlLWZsb2F0aW5nIGluIEdOT01FIFNoZWxsIDMuMzIuXG5cblRoaXMgYmFzaWNhbGx5IGNvbWVzIGZyb20gdGhlIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gcmVtb3ZlZCBpbiBHTk9NRSBTaGVsbCAzLjMyLCBhbmQgSSBtb2RpZmllZCB0aGUgY29kZSBhIGJpdCB0byBtYWtlIGl0IGFuIGV4dGVuc2lvbi4gRW5qb3khIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3poYW5naGFpL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC10b3AtYmFyIiwKICAidXVpZCI6ICJ0cmFuc3BhcmVudC10b3AtYmFyQHpoYW5naGFpLm1lIiwKICAidmVyc2lvbiI6IDIwCn0="}
+    "45": {"version": "20", "sha256": "021pwcnyj79r8w1hjyv8xqqdzbzk0f5fbiply0izp690ahvkx7gn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIGJhY2sgdGhlIHRyYW5zcGFyZW50IHRvcCBiYXIgd2hlbiBmcmVlLWZsb2F0aW5nIGluIEdOT01FIFNoZWxsIDMuMzIuXG5cblRoaXMgYmFzaWNhbGx5IGNvbWVzIGZyb20gdGhlIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gcmVtb3ZlZCBpbiBHTk9NRSBTaGVsbCAzLjMyLCBhbmQgSSBtb2RpZmllZCB0aGUgY29kZSBhIGJpdCB0byBtYWtlIGl0IGFuIGV4dGVuc2lvbi4gRW5qb3khIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3poYW5naGFpL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC10b3AtYmFyIiwKICAidXVpZCI6ICJ0cmFuc3BhcmVudC10b3AtYmFyQHpoYW5naGFpLm1lIiwKICAidmVyc2lvbiI6IDIwCn0="},
+    "46": {"version": "22", "sha256": "0ns2f83jch8fqsbkd8ax7a9cv45ywi6mpn5r16qhzgigv3576vj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIGJhY2sgdGhlIHRyYW5zcGFyZW50IHRvcCBiYXIgd2hlbiBmcmVlLWZsb2F0aW5nIGluIEdOT01FIFNoZWxsIDMuMzIuXG5cblRoaXMgYmFzaWNhbGx5IGNvbWVzIGZyb20gdGhlIGZlYXR1cmUgaW1wbGVtZW50YXRpb24gcmVtb3ZlZCBpbiBHTk9NRSBTaGVsbCAzLjMyLCBhbmQgSSBtb2RpZmllZCB0aGUgY29kZSBhIGJpdCB0byBtYWtlIGl0IGFuIGV4dGVuc2lvbi4gRW5qb3khIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3poYW5naGFpL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC10b3AtYmFyIiwKICAidXVpZCI6ICJ0cmFuc3BhcmVudC10b3AtYmFyQHpoYW5naGFpLm1lIiwKICAidmVyc2lvbiI6IDIyCn0="}
   }}
 , {"uuid": "ssh-search-provider@extensions.gnome-shell.fifi.org", "name": "SSH Search Provider Reborn", "pname": "ssh-search-provider-reborn", "description": "Provide SSH search results in overview.\n\nThis is a fork of the original \"SSH Search Provider\", updated to work with newer Gnome-Shells.", "link": "https://extensions.gnome.org/extension/1714/ssh-search-provider-reborn/", "shell_version_map": {
     "38": {"version": "11", "sha256": "1dyzkbzy2lg2h3ixz1i86hbrh69irw70whbrl8vw0m5yypfm15wm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgU1NIIHNlYXJjaCByZXN1bHRzIGluIG92ZXJ2aWV3LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgXCJTU0ggU2VhcmNoIFByb3ZpZGVyXCIsIHVwZGF0ZWQgdG8gd29yayB3aXRoIG5ld2VyIEdub21lLVNoZWxscy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAibmFtZSI6ICJTU0ggU2VhcmNoIFByb3ZpZGVyIFJlYm9ybiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjMzLjkwIiwKICAgICIzLjM2IiwKICAgICIzLjM1LjkyIiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRi1pLWYvc3NoLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAic3NoLXNlYXJjaC1wcm92aWRlckBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxMS0wLWc2M2M0NjZjIiwKICAidmVyc2lvbiI6IDExCn0="},
@@ -1633,7 +1704,8 @@
     "42": {"version": "11", "sha256": "1dyzkbzy2lg2h3ixz1i86hbrh69irw70whbrl8vw0m5yypfm15wm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgU1NIIHNlYXJjaCByZXN1bHRzIGluIG92ZXJ2aWV3LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgXCJTU0ggU2VhcmNoIFByb3ZpZGVyXCIsIHVwZGF0ZWQgdG8gd29yayB3aXRoIG5ld2VyIEdub21lLVNoZWxscy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAibmFtZSI6ICJTU0ggU2VhcmNoIFByb3ZpZGVyIFJlYm9ybiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjMzLjkwIiwKICAgICIzLjM2IiwKICAgICIzLjM1LjkyIiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRi1pLWYvc3NoLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAic3NoLXNlYXJjaC1wcm92aWRlckBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxMS0wLWc2M2M0NjZjIiwKICAidmVyc2lvbiI6IDExCn0="},
     "43": {"version": "13", "sha256": "1y4167891nh4vd9d9jmy23cdzsgfxivwaf4s71j7x3hvpw52iwj1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgU1NIIHNlYXJjaCByZXN1bHRzIGluIG92ZXJ2aWV3LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgXCJTU0ggU2VhcmNoIFByb3ZpZGVyXCIsIHVwZGF0ZWQgdG8gd29yayB3aXRoIG5ld2VyIEdub21lLVNoZWxscy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAibmFtZSI6ICJTU0ggU2VhcmNoIFByb3ZpZGVyIFJlYm9ybiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi9zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyQGV4dGVuc2lvbnMuZ25vbWUtc2hlbGwuZmlmaS5vcmciLAogICJ2Y3NfcmV2aXNpb24iOiAidjEzLTAtZzM1NmJlMmUiLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "44": {"version": "13", "sha256": "1y4167891nh4vd9d9jmy23cdzsgfxivwaf4s71j7x3hvpw52iwj1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgU1NIIHNlYXJjaCByZXN1bHRzIGluIG92ZXJ2aWV3LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgXCJTU0ggU2VhcmNoIFByb3ZpZGVyXCIsIHVwZGF0ZWQgdG8gd29yayB3aXRoIG5ld2VyIEdub21lLVNoZWxscy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAibmFtZSI6ICJTU0ggU2VhcmNoIFByb3ZpZGVyIFJlYm9ybiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi9zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyQGV4dGVuc2lvbnMuZ25vbWUtc2hlbGwuZmlmaS5vcmciLAogICJ2Y3NfcmV2aXNpb24iOiAidjEzLTAtZzM1NmJlMmUiLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
-    "45": {"version": "15", "sha256": "1hkgkkjl43ji79bb4rrssbm4y5k2cz622nmczh4j1bj77c3k09xh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgU1NIIHNlYXJjaCByZXN1bHRzIGluIG92ZXJ2aWV3LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgXCJTU0ggU2VhcmNoIFByb3ZpZGVyXCIsIHVwZGF0ZWQgdG8gd29yayB3aXRoIG5ld2VyIEdub21lLVNoZWxscy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAibmFtZSI6ICJTU0ggU2VhcmNoIFByb3ZpZGVyIFJlYm9ybiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0YtaS1mL3NzaC1zZWFyY2gtcHJvdmlkZXIiLAogICJ1dWlkIjogInNzaC1zZWFyY2gtcHJvdmlkZXJAZXh0ZW5zaW9ucy5nbm9tZS1zaGVsbC5maWZpLm9yZyIsCiAgInZjc19yZXZpc2lvbiI6ICJ2MTUtMC1nZmI2MTdlMyIsCiAgInZlcnNpb24iOiAxNQp9"}
+    "45": {"version": "16", "sha256": "0vgckaj2qjyy3r5w7c1b8cf8qz3lff177m921vsm5q7mc8ry3h7l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgU1NIIHNlYXJjaCByZXN1bHRzIGluIG92ZXJ2aWV3LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgXCJTU0ggU2VhcmNoIFByb3ZpZGVyXCIsIHVwZGF0ZWQgdG8gd29yayB3aXRoIG5ld2VyIEdub21lLVNoZWxscy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAibmFtZSI6ICJTU0ggU2VhcmNoIFByb3ZpZGVyIFJlYm9ybiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi9zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyQGV4dGVuc2lvbnMuZ25vbWUtc2hlbGwuZmlmaS5vcmciLAogICJ2Y3NfcmV2aXNpb24iOiAidjE2LTAtZzdmNDdlNTYiLAogICJ2ZXJzaW9uIjogMTYKfQ=="},
+    "46": {"version": "16", "sha256": "0vgckaj2qjyy3r5w7c1b8cf8qz3lff177m921vsm5q7mc8ry3h7l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgU1NIIHNlYXJjaCByZXN1bHRzIGluIG92ZXJ2aWV3LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgXCJTU0ggU2VhcmNoIFByb3ZpZGVyXCIsIHVwZGF0ZWQgdG8gd29yayB3aXRoIG5ld2VyIEdub21lLVNoZWxscy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAibmFtZSI6ICJTU0ggU2VhcmNoIFByb3ZpZGVyIFJlYm9ybiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi9zc2gtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJzc2gtc2VhcmNoLXByb3ZpZGVyQGV4dGVuc2lvbnMuZ25vbWUtc2hlbGwuZmlmaS5vcmciLAogICJ2Y3NfcmV2aXNpb24iOiAidjE2LTAtZzdmNDdlNTYiLAogICJ2ZXJzaW9uIjogMTYKfQ=="}
   }}
 , {"uuid": "weeks-start-on-monday@extensions.gnome-shell.fifi.org", "name": "Weeks Start on Monday Again...", "pname": "weeks-start-on-monday-again", "description": "... or maybe not, and that's why the start day is configurable in the preferences.\n\nThis is an updated version of the \"Weeks Start on Monday\" extension for newer Gnome Shells.", "link": "https://extensions.gnome.org/extension/1720/weeks-start-on-monday-again/", "shell_version_map": {
     "38": {"version": "14", "sha256": "1zavccgxfqnf19qab2iwrprh966bl19a5n912sxyd9k3aagp64b3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIi4uLiBvciBtYXliZSBub3QsIGFuZCB0aGF0J3Mgd2h5IHRoZSBzdGFydCBkYXkgaXMgY29uZmlndXJhYmxlIGluIHRoZSBwcmVmZXJlbmNlcy5cblxuVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFwiV2Vla3MgU3RhcnQgb24gTW9uZGF5XCIgZXh0ZW5zaW9uIGZvciBuZXdlciBHbm9tZSBTaGVsbHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAibmFtZSI6ICJXZWVrcyBTdGFydCBvbiBNb25kYXkgQWdhaW4uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjMzLjkwIiwKICAgICIzLjM2IiwKICAgICIzLjM1LjkyIiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi93ZWVrcy1zdGFydC1vbi1tb25kYXkiLAogICJ1dWlkIjogIndlZWtzLXN0YXJ0LW9uLW1vbmRheUBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxNC0wLWdjNGIxNzI2IiwKICAidmVyc2lvbiI6IDE0Cn0="},
@@ -1642,7 +1714,8 @@
     "42": {"version": "14", "sha256": "1zavccgxfqnf19qab2iwrprh966bl19a5n912sxyd9k3aagp64b3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIi4uLiBvciBtYXliZSBub3QsIGFuZCB0aGF0J3Mgd2h5IHRoZSBzdGFydCBkYXkgaXMgY29uZmlndXJhYmxlIGluIHRoZSBwcmVmZXJlbmNlcy5cblxuVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFwiV2Vla3MgU3RhcnQgb24gTW9uZGF5XCIgZXh0ZW5zaW9uIGZvciBuZXdlciBHbm9tZSBTaGVsbHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAibmFtZSI6ICJXZWVrcyBTdGFydCBvbiBNb25kYXkgQWdhaW4uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjMzLjkwIiwKICAgICIzLjM2IiwKICAgICIzLjM1LjkyIiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi93ZWVrcy1zdGFydC1vbi1tb25kYXkiLAogICJ1dWlkIjogIndlZWtzLXN0YXJ0LW9uLW1vbmRheUBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxNC0wLWdjNGIxNzI2IiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "43": {"version": "14", "sha256": "1zavccgxfqnf19qab2iwrprh966bl19a5n912sxyd9k3aagp64b3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIi4uLiBvciBtYXliZSBub3QsIGFuZCB0aGF0J3Mgd2h5IHRoZSBzdGFydCBkYXkgaXMgY29uZmlndXJhYmxlIGluIHRoZSBwcmVmZXJlbmNlcy5cblxuVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFwiV2Vla3MgU3RhcnQgb24gTW9uZGF5XCIgZXh0ZW5zaW9uIGZvciBuZXdlciBHbm9tZSBTaGVsbHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAibmFtZSI6ICJXZWVrcyBTdGFydCBvbiBNb25kYXkgQWdhaW4uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjMzLjkwIiwKICAgICIzLjM2IiwKICAgICIzLjM1LjkyIiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi93ZWVrcy1zdGFydC1vbi1tb25kYXkiLAogICJ1dWlkIjogIndlZWtzLXN0YXJ0LW9uLW1vbmRheUBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxNC0wLWdjNGIxNzI2IiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "44": {"version": "14", "sha256": "1zavccgxfqnf19qab2iwrprh966bl19a5n912sxyd9k3aagp64b3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIi4uLiBvciBtYXliZSBub3QsIGFuZCB0aGF0J3Mgd2h5IHRoZSBzdGFydCBkYXkgaXMgY29uZmlndXJhYmxlIGluIHRoZSBwcmVmZXJlbmNlcy5cblxuVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFwiV2Vla3MgU3RhcnQgb24gTW9uZGF5XCIgZXh0ZW5zaW9uIGZvciBuZXdlciBHbm9tZSBTaGVsbHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAibmFtZSI6ICJXZWVrcyBTdGFydCBvbiBNb25kYXkgQWdhaW4uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjMzLjkwIiwKICAgICIzLjM2IiwKICAgICIzLjM1LjkyIiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi93ZWVrcy1zdGFydC1vbi1tb25kYXkiLAogICJ1dWlkIjogIndlZWtzLXN0YXJ0LW9uLW1vbmRheUBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxNC0wLWdjNGIxNzI2IiwKICAidmVyc2lvbiI6IDE0Cn0="},
-    "45": {"version": "16", "sha256": "009g8qssa801s3hc5f8slpmm5fqv98iryvsh67g966wl8kj5p3av", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIi4uLiBvciBtYXliZSBub3QsIGFuZCB0aGF0J3Mgd2h5IHRoZSBzdGFydCBkYXkgaXMgY29uZmlndXJhYmxlIGluIHRoZSBwcmVmZXJlbmNlcy5cblxuVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFwiV2Vla3MgU3RhcnQgb24gTW9uZGF5XCIgZXh0ZW5zaW9uIGZvciBuZXdlciBHbm9tZSBTaGVsbHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAibmFtZSI6ICJXZWVrcyBTdGFydCBvbiBNb25kYXkgQWdhaW4uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0YtaS1mL3dlZWtzLXN0YXJ0LW9uLW1vbmRheSIsCiAgInV1aWQiOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5QGV4dGVuc2lvbnMuZ25vbWUtc2hlbGwuZmlmaS5vcmciLAogICJ2Y3NfcmV2aXNpb24iOiAidjE2LTAtZ2JjZWJiNDgiLAogICJ2ZXJzaW9uIjogMTYKfQ=="}
+    "45": {"version": "17", "sha256": "0h867ikg8gb8dam28c1mjhw16a8nknp7d83p7h2ipji008mg3kr0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIi4uLiBvciBtYXliZSBub3QsIGFuZCB0aGF0J3Mgd2h5IHRoZSBzdGFydCBkYXkgaXMgY29uZmlndXJhYmxlIGluIHRoZSBwcmVmZXJlbmNlcy5cblxuVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFwiV2Vla3MgU3RhcnQgb24gTW9uZGF5XCIgZXh0ZW5zaW9uIGZvciBuZXdlciBHbm9tZSBTaGVsbHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAibmFtZSI6ICJXZWVrcyBTdGFydCBvbiBNb25kYXkgQWdhaW4uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi93ZWVrcy1zdGFydC1vbi1tb25kYXkiLAogICJ1dWlkIjogIndlZWtzLXN0YXJ0LW9uLW1vbmRheUBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxNy0wLWdjYTFiYWRlIiwKICAidmVyc2lvbiI6IDE3Cn0="},
+    "46": {"version": "17", "sha256": "0h867ikg8gb8dam28c1mjhw16a8nknp7d83p7h2ipji008mg3kr0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIi4uLiBvciBtYXliZSBub3QsIGFuZCB0aGF0J3Mgd2h5IHRoZSBzdGFydCBkYXkgaXMgY29uZmlndXJhYmxlIGluIHRoZSBwcmVmZXJlbmNlcy5cblxuVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFwiV2Vla3MgU3RhcnQgb24gTW9uZGF5XCIgZXh0ZW5zaW9uIGZvciBuZXdlciBHbm9tZSBTaGVsbHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAid2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAibmFtZSI6ICJXZWVrcyBTdGFydCBvbiBNb25kYXkgQWdhaW4uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2Vla3Mtc3RhcnQtb24tbW9uZGF5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GLWktZi93ZWVrcy1zdGFydC1vbi1tb25kYXkiLAogICJ1dWlkIjogIndlZWtzLXN0YXJ0LW9uLW1vbmRheUBleHRlbnNpb25zLmdub21lLXNoZWxsLmZpZmkub3JnIiwKICAidmNzX3JldmlzaW9uIjogInYxNy0wLWdjYTFiYWRlIiwKICAidmVyc2lvbiI6IDE3Cn0="}
   }}
 , {"uuid": "wintile@nowsci.com", "name": "WinTile", "pname": "wintile-windows-10-window-tiling-for-gnome", "description": "WinTile is a hotkey driven window tiling system for GNOME that imitates the standard Win-Arrow keys of Windows 10, allowing you to maximize, maximize to sides, or 1/4 sized to corner across a single or multiple monitors using just Super+Arrow.\n\nAs of v14, WinTile also supports:\n- 2-5 columns and 1-4 rows for standard or ultrawide monitors\n- Top/bottom half support\n- Mouse preview and snapping for placing windows\n- 'Maximize' mode, which adds/removes GNOME animations\n- 'Ultrawide-only' mode, to allow standard screens to have different cols/row than ultrawides\n- Portrait screens will automatically swap columns and rows\n- Add gaps around tiles to avoid the 'crowded elevator' feeling'\n- Ctrl+Super+Arrow to grow a tile in that direction if space is available\n- Ctrl+drag to drop a tile in a specific spot\n- Ctrl+Super+drag to draw a grid for the new tile", "link": "https://extensions.gnome.org/extension/1723/wintile-windows-10-window-tiling-for-gnome/", "shell_version_map": {
     "38": {"version": "15", "sha256": "14phsrk15m0l7k01jbzxb5iyfxkq414zmgx8byj644wh99r7jx22", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldpblRpbGUgaXMgYSBob3RrZXkgZHJpdmVuIHdpbmRvdyB0aWxpbmcgc3lzdGVtIGZvciBHTk9NRSB0aGF0IGltaXRhdGVzIHRoZSBzdGFuZGFyZCBXaW4tQXJyb3cga2V5cyBvZiBXaW5kb3dzIDEwLCBhbGxvd2luZyB5b3UgdG8gbWF4aW1pemUsIG1heGltaXplIHRvIHNpZGVzLCBvciAxLzQgc2l6ZWQgdG8gY29ybmVyIGFjcm9zcyBhIHNpbmdsZSBvciBtdWx0aXBsZSBtb25pdG9ycyB1c2luZyBqdXN0IFN1cGVyK0Fycm93LlxuXG5BcyBvZiB2MTQsIFdpblRpbGUgYWxzbyBzdXBwb3J0czpcbi0gMi01IGNvbHVtbnMgYW5kIDEtNCByb3dzIGZvciBzdGFuZGFyZCBvciB1bHRyYXdpZGUgbW9uaXRvcnNcbi0gVG9wL2JvdHRvbSBoYWxmIHN1cHBvcnRcbi0gTW91c2UgcHJldmlldyBhbmQgc25hcHBpbmcgZm9yIHBsYWNpbmcgd2luZG93c1xuLSAnTWF4aW1pemUnIG1vZGUsIHdoaWNoIGFkZHMvcmVtb3ZlcyBHTk9NRSBhbmltYXRpb25zXG4tICdVbHRyYXdpZGUtb25seScgbW9kZSwgdG8gYWxsb3cgc3RhbmRhcmQgc2NyZWVucyB0byBoYXZlIGRpZmZlcmVudCBjb2xzL3JvdyB0aGFuIHVsdHJhd2lkZXNcbi0gUG9ydHJhaXQgc2NyZWVucyB3aWxsIGF1dG9tYXRpY2FsbHkgc3dhcCBjb2x1bW5zIGFuZCByb3dzXG4tIEFkZCBnYXBzIGFyb3VuZCB0aWxlcyB0byBhdm9pZCB0aGUgJ2Nyb3dkZWQgZWxldmF0b3InIGZlZWxpbmcnXG4tIEN0cmwrU3VwZXIrQXJyb3cgdG8gZ3JvdyBhIHRpbGUgaW4gdGhhdCBkaXJlY3Rpb24gaWYgc3BhY2UgaXMgYXZhaWxhYmxlXG4tIEN0cmwrZHJhZyB0byBkcm9wIGEgdGlsZSBpbiBhIHNwZWNpZmljIHNwb3Rcbi0gQ3RybCtTdXBlcitkcmFnIHRvIGRyYXcgYSBncmlkIGZvciB0aGUgbmV3IHRpbGUiLAogICJuYW1lIjogIldpblRpbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2ludGlsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZm1zdHJhdC93aW50aWxlIiwKICAidXVpZCI6ICJ3aW50aWxlQG5vd3NjaS5jb20iLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
@@ -1672,7 +1745,8 @@
     "42": {"version": "12", "sha256": "08ph5bjwka0vh912yhpb5zh2gvr2slvk9c46l09j5hwb93k8ki3p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgTEFOIElQIGFkZHJlc3Mgb24gR05PTUUgcGFuZWwuIERvIG5vdCBzaG93IGxvb3BiYWNrIGFkZHJlc3NlcyAoMTI3LjAuMC4wLzgpIG9yIERvY2tlciBuZXR3b3Jrcy4iLAogICJuYW1lIjogIkxBTiBJUCBBZGRyZXNzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Kb3Nob2xpdGgvZ25vbWUtZXh0ZW5zaW9uLWxhbi1pcC1hZGRyZXNzIiwKICAidXVpZCI6ICJsYW4taXAtYWRkcmVzc0Btcmh1YmVyLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "43": {"version": "12", "sha256": "08ph5bjwka0vh912yhpb5zh2gvr2slvk9c46l09j5hwb93k8ki3p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgTEFOIElQIGFkZHJlc3Mgb24gR05PTUUgcGFuZWwuIERvIG5vdCBzaG93IGxvb3BiYWNrIGFkZHJlc3NlcyAoMTI3LjAuMC4wLzgpIG9yIERvY2tlciBuZXR3b3Jrcy4iLAogICJuYW1lIjogIkxBTiBJUCBBZGRyZXNzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Kb3Nob2xpdGgvZ25vbWUtZXh0ZW5zaW9uLWxhbi1pcC1hZGRyZXNzIiwKICAidXVpZCI6ICJsYW4taXAtYWRkcmVzc0Btcmh1YmVyLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "08ph5bjwka0vh912yhpb5zh2gvr2slvk9c46l09j5hwb93k8ki3p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgTEFOIElQIGFkZHJlc3Mgb24gR05PTUUgcGFuZWwuIERvIG5vdCBzaG93IGxvb3BiYWNrIGFkZHJlc3NlcyAoMTI3LjAuMC4wLzgpIG9yIERvY2tlciBuZXR3b3Jrcy4iLAogICJuYW1lIjogIkxBTiBJUCBBZGRyZXNzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Kb3Nob2xpdGgvZ25vbWUtZXh0ZW5zaW9uLWxhbi1pcC1hZGRyZXNzIiwKICAidXVpZCI6ICJsYW4taXAtYWRkcmVzc0Btcmh1YmVyLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "13", "sha256": "1qhr92sb5nb72b9pz8bvzcrjsi58g3w306c4yjdjfp6l3aaqaszw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgTEFOIElQIGFkZHJlc3Mgb24gR05PTUUgcGFuZWwuIERvIG5vdCBzaG93IGxvb3BiYWNrIGFkZHJlc3NlcyAoMTI3LjAuMC4wLzgpIG9yIERvY2tlciBuZXR3b3Jrcy4iLAogICJuYW1lIjogIkxBTiBJUCBBZGRyZXNzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvc2hvbGl0aC9nbm9tZS1leHRlbnNpb24tbGFuLWlwLWFkZHJlc3MiLAogICJ1dWlkIjogImxhbi1pcC1hZGRyZXNzQG1yaHViZXIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="}
+    "45": {"version": "14", "sha256": "0k2wljqaq6sd9cdnl3fxvavj0d46dqrqh93y5ydyyz8kbbb4kchf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgTEFOIElQIGFkZHJlc3Mgb24gR05PTUUgcGFuZWwuIERvIG5vdCBzaG93IGxvb3BiYWNrIGFkZHJlc3NlcyAoMTI3LjAuMC4wLzgpIG9yIERvY2tlciBuZXR3b3Jrcy4iLAogICJuYW1lIjogIkxBTiBJUCBBZGRyZXNzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Kb3Nob2xpdGgvZ25vbWUtZXh0ZW5zaW9uLWxhbi1pcC1hZGRyZXNzIiwKICAidXVpZCI6ICJsYW4taXAtYWRkcmVzc0Btcmh1YmVyLmNvbSIsCiAgInZlcnNpb24iOiAxNAp9"},
+    "46": {"version": "14", "sha256": "0k2wljqaq6sd9cdnl3fxvavj0d46dqrqh93y5ydyyz8kbbb4kchf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgTEFOIElQIGFkZHJlc3Mgb24gR05PTUUgcGFuZWwuIERvIG5vdCBzaG93IGxvb3BiYWNrIGFkZHJlc3NlcyAoMTI3LjAuMC4wLzgpIG9yIERvY2tlciBuZXR3b3Jrcy4iLAogICJuYW1lIjogIkxBTiBJUCBBZGRyZXNzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Kb3Nob2xpdGgvZ25vbWUtZXh0ZW5zaW9uLWxhbi1pcC1hZGRyZXNzIiwKICAidXVpZCI6ICJsYW4taXAtYWRkcmVzc0Btcmh1YmVyLmNvbSIsCiAgInZlcnNpb24iOiAxNAp9"}
   }}
 , {"uuid": "TransparentTopbar@enrico.sorio.net", "name": "Transparent Topbar", "pname": "transparent-topbar", "description": "Transparent Topbar with Multi monitors support", "link": "https://extensions.gnome.org/extension/1765/transparent-topbar/", "shell_version_map": {
     "38": {"version": "4", "sha256": "1ps75ilgnlspimsxgwc0j1yfbfxp6qp8is4g9kg7k3c5n9dzlp8z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zcGFyZW50IFRvcGJhciB3aXRoIE11bHRpIG1vbml0b3JzIHN1cHBvcnQiLAogICJuYW1lIjogIlRyYW5zcGFyZW50IFRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZXNvcmlvL3RyYW5zcGFyZW50LXRvcGJhciIsCiAgInV1aWQiOiAiVHJhbnNwYXJlbnRUb3BiYXJAZW5yaWNvLnNvcmlvLm5ldCIsCiAgInZlcnNpb24iOiA0Cn0="},
@@ -1682,14 +1756,15 @@
     "43": {"version": "4", "sha256": "1ps75ilgnlspimsxgwc0j1yfbfxp6qp8is4g9kg7k3c5n9dzlp8z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zcGFyZW50IFRvcGJhciB3aXRoIE11bHRpIG1vbml0b3JzIHN1cHBvcnQiLAogICJuYW1lIjogIlRyYW5zcGFyZW50IFRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZXNvcmlvL3RyYW5zcGFyZW50LXRvcGJhciIsCiAgInV1aWQiOiAiVHJhbnNwYXJlbnRUb3BiYXJAZW5yaWNvLnNvcmlvLm5ldCIsCiAgInZlcnNpb24iOiA0Cn0="},
     "44": {"version": "4", "sha256": "1ps75ilgnlspimsxgwc0j1yfbfxp6qp8is4g9kg7k3c5n9dzlp8z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zcGFyZW50IFRvcGJhciB3aXRoIE11bHRpIG1vbml0b3JzIHN1cHBvcnQiLAogICJuYW1lIjogIlRyYW5zcGFyZW50IFRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZXNvcmlvL3RyYW5zcGFyZW50LXRvcGJhciIsCiAgInV1aWQiOiAiVHJhbnNwYXJlbnRUb3BiYXJAZW5yaWNvLnNvcmlvLm5ldCIsCiAgInZlcnNpb24iOiA0Cn0="}
   }}
-, {"uuid": "colortint@matt.serverus.co.uk", "name": "ColorTint", "pname": "colortint", "description": "Tint your desktop with a color of your choice to help with dyslexia, scopic sensitivity, and related conditions.\n\nPlease make feature requests and bug reports on GitHub\n", "link": "https://extensions.gnome.org/extension/1789/colortint/", "shell_version_map": {
+, {"uuid": "colortint@matt.serverus.co.uk", "name": "ColorTint", "pname": "colortint", "description": "Tint your desktop with a color of your choice to help with dyslexia, scopic sensitivity, and related conditions.", "link": "https://extensions.gnome.org/extension/1789/colortint/", "shell_version_map": {
     "38": {"version": "14", "sha256": "09ayk3xwywbisgazhfnzv0ka0xpakskjqa6g4awkwrjdlxd450rs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJuYW1lIjogIkNvbG9yVGludCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0QnlOYW1lL2NvbG9yLXRpbnQiLAogICJ1dWlkIjogImNvbG9ydGludEBtYXR0LnNlcnZlcnVzLmNvLnVrIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "40": {"version": "14", "sha256": "09ayk3xwywbisgazhfnzv0ka0xpakskjqa6g4awkwrjdlxd450rs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJuYW1lIjogIkNvbG9yVGludCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0QnlOYW1lL2NvbG9yLXRpbnQiLAogICJ1dWlkIjogImNvbG9ydGludEBtYXR0LnNlcnZlcnVzLmNvLnVrIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "41": {"version": "14", "sha256": "09ayk3xwywbisgazhfnzv0ka0xpakskjqa6g4awkwrjdlxd450rs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJuYW1lIjogIkNvbG9yVGludCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0QnlOYW1lL2NvbG9yLXRpbnQiLAogICJ1dWlkIjogImNvbG9ydGludEBtYXR0LnNlcnZlcnVzLmNvLnVrIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "42": {"version": "19", "sha256": "1rn5w2gf4s1wr2lwa65l4xf9kxk821f2nm956ava4ci4kamv7qnv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJtYXR0YnluYW1lIgogIH0sCiAgIm5hbWUiOiAiQ29sb3JUaW50IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9ydGludCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01hdHRCeU5hbWUvY29sb3ItdGludCIsCiAgInV1aWQiOiAiY29sb3J0aW50QG1hdHQuc2VydmVydXMuY28udWsiLAogICJ2ZXJzaW9uIjogMTkKfQ=="},
     "43": {"version": "19", "sha256": "1rn5w2gf4s1wr2lwa65l4xf9kxk821f2nm956ava4ci4kamv7qnv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJtYXR0YnluYW1lIgogIH0sCiAgIm5hbWUiOiAiQ29sb3JUaW50IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9ydGludCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01hdHRCeU5hbWUvY29sb3ItdGludCIsCiAgInV1aWQiOiAiY29sb3J0aW50QG1hdHQuc2VydmVydXMuY28udWsiLAogICJ2ZXJzaW9uIjogMTkKfQ=="},
     "44": {"version": "19", "sha256": "1rn5w2gf4s1wr2lwa65l4xf9kxk821f2nm956ava4ci4kamv7qnv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJtYXR0YnluYW1lIgogIH0sCiAgIm5hbWUiOiAiQ29sb3JUaW50IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9ydGludCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01hdHRCeU5hbWUvY29sb3ItdGludCIsCiAgInV1aWQiOiAiY29sb3J0aW50QG1hdHQuc2VydmVydXMuY28udWsiLAogICJ2ZXJzaW9uIjogMTkKfQ=="},
-    "45": {"version": "21", "sha256": "11cbfis71ya4zlpbvfwv23lbxhhvdq1xxk5f35zyr58y7wsjpl5d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJtYXR0YnluYW1lIgogIH0sCiAgIm5hbWUiOiAiQ29sb3JUaW50IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9ydGludCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0QnlOYW1lL2NvbG9yLXRpbnQiLAogICJ1dWlkIjogImNvbG9ydGludEBtYXR0LnNlcnZlcnVzLmNvLnVrIiwKICAidmVyc2lvbiI6IDIxCn0="}
+    "45": {"version": "23", "sha256": "1l16gc0q7i9qm9ziddklbfxbnrdmvwyqx92hqyxsi43cffap71sf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogIm1hdHRieW5hbWUiLAogICAgImtvZmkiOiAibWF0dGJ5bmFtZSIsCiAgICAibGliZXJhcGF5IjogIm1hdHRieW5hbWUiCiAgfSwKICAibmFtZSI6ICJDb2xvclRpbnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29sb3J0aW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0QnlOYW1lL2NvbG9yLXRpbnQiLAogICJ1dWlkIjogImNvbG9ydGludEBtYXR0LnNlcnZlcnVzLmNvLnVrIiwKICAidmVyc2lvbiI6IDIzCn0="},
+    "46": {"version": "23", "sha256": "1l16gc0q7i9qm9ziddklbfxbnrdmvwyqx92hqyxsi43cffap71sf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbnQgeW91ciBkZXNrdG9wIHdpdGggYSBjb2xvciBvZiB5b3VyIGNob2ljZSB0byBoZWxwIHdpdGggZHlzbGV4aWEsIHNjb3BpYyBzZW5zaXRpdml0eSwgYW5kIHJlbGF0ZWQgY29uZGl0aW9ucy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogIm1hdHRieW5hbWUiLAogICAgImtvZmkiOiAibWF0dGJ5bmFtZSIsCiAgICAibGliZXJhcGF5IjogIm1hdHRieW5hbWUiCiAgfSwKICAibmFtZSI6ICJDb2xvclRpbnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29sb3J0aW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXR0QnlOYW1lL2NvbG9yLXRpbnQiLAogICJ1dWlkIjogImNvbG9ydGludEBtYXR0LnNlcnZlcnVzLmNvLnVrIiwKICAidmVyc2lvbiI6IDIzCn0="}
   }}
 , {"uuid": "sermon@rovellipaolo-gmail.com", "name": "SerMon: Service Monitor", "pname": "sermon", "description": "SerMon: an extension for monitoring and managing systemd services, cron jobs, docker and podman containers", "link": "https://extensions.gnome.org/extension/1804/sermon/", "shell_version_map": {
     "38": {"version": "28", "sha256": "0vxvd4q5bysqmrbw6d169l3ww37j6cdk70n1gk4m35ydvq7cpp6k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlck1vbjogYW4gZXh0ZW5zaW9uIGZvciBtb25pdG9yaW5nIGFuZCBtYW5hZ2luZyBzeXN0ZW1kIHNlcnZpY2VzLCBjcm9uIGpvYnMsIGRvY2tlciBhbmQgcG9kbWFuIGNvbnRhaW5lcnMiLAogICJuYW1lIjogIlNlck1vbjogU2VydmljZSBNb25pdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNlcm1vbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcm92ZWxsaXBhb2xvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1zZXJtb24iLAogICJ1dWlkIjogInNlcm1vbkByb3ZlbGxpcGFvbG8tZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDI4Cn0="},
@@ -1707,7 +1782,8 @@
     "42": {"version": "39", "sha256": "1dgnx3vpqgmpl9vr7bli7aifyr367jifbqyxjdb0ygqd7j4fav5f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zbGF0ZSB3b3JkIG9uIHRoZSBzY3JlZW4uXG5EZWZhdWx0IHdlYiBhZGRyZXNzIGlzIHRyYW5zbGF0ZS5nb29nbGUuY29tLCB5b3UgY2FuIGFkZCB0aGUgd2ViIGFkZHJlc3MgZm9yIHlvdXIgb3duIGxhbmd1YWdlLiBBbHNvIHlvdSBjYW4gY29udHJpYnV0ZSB5b3VyIHdlYiBhZGRyZXNzIHRvIG15IGdpdGh1YiByZXBvLlxuVXNlIGhvdGtleSBDdHJsK0FsdCtqIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24uXG5Vc2UgaG90a2V5IEN0cmwrQWx0K28gdG8gc2hvdyBwb3B1cCB3aW5kb3ciLAogICJuYW1lIjogIlNjcmVlbiB3b3JkIHRyYW5zbGF0ZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRpY3QiLAogICJ1dWlkIjogImRpY3RAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzkKfQ=="},
     "43": {"version": "44", "sha256": "012cnqrlb2xbnj9swjzlgm21720v7zwj0lvx2ygy5xyclnk8dwic", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zbGF0ZSB3b3JkIG9uIHRoZSBzY3JlZW4uXG5EZWZhdWx0IHdlYiBhZGRyZXNzIGlzIHRyYW5zbGF0ZS5nb29nbGUuY29tLCB5b3UgY2FuIGFkZCB0aGUgd2ViIGFkZHJlc3MgZm9yIHlvdXIgb3duIGxhbmd1YWdlLiBBbHNvIHlvdSBjYW4gY29udHJpYnV0ZSB5b3VyIHdlYiBhZGRyZXNzIHRvIG15IGdpdGh1YiByZXBvLlxuVXNlIGhvdGtleSBDdHJsK0FsdCtqIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24uXG5Vc2UgaG90a2V5IEN0cmwrQWx0K28gdG8gc2hvdyBwb3B1cCB3aW5kb3ciLAogICJuYW1lIjogIlNjcmVlbiB3b3JkIHRyYW5zbGF0ZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGljdCIsCiAgInV1aWQiOiAiZGljdEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0NAp9"},
     "44": {"version": "44", "sha256": "012cnqrlb2xbnj9swjzlgm21720v7zwj0lvx2ygy5xyclnk8dwic", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zbGF0ZSB3b3JkIG9uIHRoZSBzY3JlZW4uXG5EZWZhdWx0IHdlYiBhZGRyZXNzIGlzIHRyYW5zbGF0ZS5nb29nbGUuY29tLCB5b3UgY2FuIGFkZCB0aGUgd2ViIGFkZHJlc3MgZm9yIHlvdXIgb3duIGxhbmd1YWdlLiBBbHNvIHlvdSBjYW4gY29udHJpYnV0ZSB5b3VyIHdlYiBhZGRyZXNzIHRvIG15IGdpdGh1YiByZXBvLlxuVXNlIGhvdGtleSBDdHJsK0FsdCtqIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24uXG5Vc2UgaG90a2V5IEN0cmwrQWx0K28gdG8gc2hvdyBwb3B1cCB3aW5kb3ciLAogICJuYW1lIjogIlNjcmVlbiB3b3JkIHRyYW5zbGF0ZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGljdCIsCiAgInV1aWQiOiAiZGljdEBzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA0NAp9"},
-    "45": {"version": "46", "sha256": "02nd0n6dpxn68a0f8ai3bjjpqq8s78hs5b1wim1bkzypq29gjcyx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zbGF0ZSB3b3JkIG9uIHRoZSBzY3JlZW4uXG5EZWZhdWx0IHdlYiBhZGRyZXNzIGlzIHRyYW5zbGF0ZS5nb29nbGUuY29tLCB5b3UgY2FuIGFkZCB0aGUgd2ViIGFkZHJlc3MgZm9yIHlvdXIgb3duIGxhbmd1YWdlLiBBbHNvIHlvdSBjYW4gY29udHJpYnV0ZSB5b3VyIHdlYiBhZGRyZXNzIHRvIG15IGdpdGh1YiByZXBvLlxuVXNlIGhvdGtleSBDdHJsK0FsdCtqIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24uXG5Vc2UgaG90a2V5IEN0cmwrQWx0K28gdG8gc2hvdyBwb3B1cCB3aW5kb3ciLAogICJleHRlbnNpb24taWQiOiAiZGljdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIlNjcmVlbiB3b3JkIHRyYW5zbGF0ZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGljdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRpY3QiLAogICJ1dWlkIjogImRpY3RAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNDYKfQ=="}
+    "45": {"version": "46", "sha256": "02nd0n6dpxn68a0f8ai3bjjpqq8s78hs5b1wim1bkzypq29gjcyx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zbGF0ZSB3b3JkIG9uIHRoZSBzY3JlZW4uXG5EZWZhdWx0IHdlYiBhZGRyZXNzIGlzIHRyYW5zbGF0ZS5nb29nbGUuY29tLCB5b3UgY2FuIGFkZCB0aGUgd2ViIGFkZHJlc3MgZm9yIHlvdXIgb3duIGxhbmd1YWdlLiBBbHNvIHlvdSBjYW4gY29udHJpYnV0ZSB5b3VyIHdlYiBhZGRyZXNzIHRvIG15IGdpdGh1YiByZXBvLlxuVXNlIGhvdGtleSBDdHJsK0FsdCtqIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24uXG5Vc2UgaG90a2V5IEN0cmwrQWx0K28gdG8gc2hvdyBwb3B1cCB3aW5kb3ciLAogICJleHRlbnNpb24taWQiOiAiZGljdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIlNjcmVlbiB3b3JkIHRyYW5zbGF0ZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGljdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRpY3QiLAogICJ1dWlkIjogImRpY3RAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNDYKfQ=="},
+    "46": {"version": "48", "sha256": "19wd655nw6v2i24az5jxm0s33ai7hc9ybibz6pmpyx4svw4x326d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYW5zbGF0ZSB3b3JkIG9uIHRoZSBzY3JlZW4uXG5EZWZhdWx0IHdlYiBhZGRyZXNzIGlzIHRyYW5zbGF0ZS5nb29nbGUuY29tLCB5b3UgY2FuIGFkZCB0aGUgd2ViIGFkZHJlc3MgZm9yIHlvdXIgb3duIGxhbmd1YWdlLiBBbHNvIHlvdSBjYW4gY29udHJpYnV0ZSB5b3VyIHdlYiBhZGRyZXNzIHRvIG15IGdpdGh1YiByZXBvLlxuVXNlIGhvdGtleSBDdHJsK0FsdCtqIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24uXG5Vc2UgaG90a2V5IEN0cmwrQWx0K28gdG8gc2hvdyBwb3B1cCB3aW5kb3ciLAogICJleHRlbnNpb24taWQiOiAiZGljdCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJuYW1lIjogIlNjcmVlbiB3b3JkIHRyYW5zbGF0ZSIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAic3VuLnd4Z0BnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGljdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdW53eGcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRpY3QiLAogICJ1dWlkIjogImRpY3RAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNDgKfQ=="}
   }}
 , {"uuid": "gamemode@christian.kellner.me", "name": "GameMode", "pname": "gamemode", "description": "Status indicator for GameMode", "link": "https://extensions.gnome.org/extension/1852/gamemode/", "shell_version_map": {
     "38": {"version": "7", "sha256": "1vkrwbdqgpbs5m6gq7awar53bflr59a1c3lgr3g642gswdnr2230", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBpbmRpY2F0b3IgZm9yIEdhbWVNb2RlIiwKICAiZXh0ZW5zaW9uLWlkIjogImdhbWVtb2RlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ2FtZW1vZGUtZXh0ZW5zaW9uIiwKICAibmFtZSI6ICJHYW1lTW9kZSIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJja2VsbG5lckByZWRoYXQuY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmdhbWVtb2RlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ2ljbW8vZ2FtZW1vZGUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJnYW1lbW9kZUBjaHJpc3RpYW4ua2VsbG5lci5tZSIsCiAgInZlcnNpb24iOiA3Cn0="},
@@ -1731,7 +1807,8 @@
     "42": {"version": "30", "sha256": "059x418ra9l1rcgfwy9zqm4gci7rbl7var99bnvzyvg0vhqfhdr7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIGV4dGVuc2lvbiB0byBkaXNwbGF5IGNyeXB0b2N1cnJlbmN5IHByaWNlcyIsCiAgIm5hbWUiOiAia3J5cHRvIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1rcnlwdG8iLAogICJ1dWlkIjogImtyeXB0b0BzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMwCn0="},
     "43": {"version": "30", "sha256": "059x418ra9l1rcgfwy9zqm4gci7rbl7var99bnvzyvg0vhqfhdr7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIGV4dGVuc2lvbiB0byBkaXNwbGF5IGNyeXB0b2N1cnJlbmN5IHByaWNlcyIsCiAgIm5hbWUiOiAia3J5cHRvIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1rcnlwdG8iLAogICJ1dWlkIjogImtyeXB0b0BzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMwCn0="},
     "44": {"version": "30", "sha256": "059x418ra9l1rcgfwy9zqm4gci7rbl7var99bnvzyvg0vhqfhdr7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIGV4dGVuc2lvbiB0byBkaXNwbGF5IGNyeXB0b2N1cnJlbmN5IHByaWNlcyIsCiAgIm5hbWUiOiAia3J5cHRvIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1rcnlwdG8iLAogICJ1dWlkIjogImtyeXB0b0BzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMwCn0="},
-    "45": {"version": "29", "sha256": "0a4d6gyc4myny0scycmga994f84dqn2iwzjv8spxkk638awdhk6h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIGV4dGVuc2lvbiB0byBkaXNwbGF5IGNyeXB0b2N1cnJlbmN5IHByaWNlcyIsCiAgIm5hbWUiOiAia3J5cHRvIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlcmVuZWJsdWUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWtyeXB0byIsCiAgInV1aWQiOiAia3J5cHRvQHNlcmVuZWJsdWUiLAogICJ2ZXJzaW9uIjogMjkKfQ=="}
+    "45": {"version": "32", "sha256": "1vwwaxx663gk0q22jcz48dv0fwd0a14xij9i71hgji5afihdhx26", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIGV4dGVuc2lvbiB0byBkaXNwbGF5IGNyeXB0b2N1cnJlbmN5IHByaWNlcyIsCiAgIm5hbWUiOiAia3J5cHRvIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1rcnlwdG8iLAogICJ1dWlkIjogImtyeXB0b0BzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMyCn0="},
+    "46": {"version": "32", "sha256": "1vwwaxx663gk0q22jcz48dv0fwd0a14xij9i71hgji5afihdhx26", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIGV4dGVuc2lvbiB0byBkaXNwbGF5IGNyeXB0b2N1cnJlbmN5IHByaWNlcyIsCiAgIm5hbWUiOiAia3J5cHRvIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1rcnlwdG8iLAogICJ1dWlkIjogImtyeXB0b0BzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMyCn0="}
   }}
 , {"uuid": "cmus-status@yagreg7.gmail.com", "name": "cmus status", "pname": "cmus-status", "description": "Shows cmus status", "link": "https://extensions.gnome.org/extension/1934/cmus-status/", "shell_version_map": {
     "38": {"version": "8", "sha256": "1a6b10kirzbjlllcnffznjlljicah172kpvs0p8rmwhcpn88i8hx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGNtdXMgc3RhdHVzIiwKICAibmFtZSI6ICJjbXVzIHN0YXR1cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbXVzLXN0YXR1cy5nc2NoZW1hLnhtbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyZWdUaGVNYWRNb25rL2dub21lLWNtdXMtc3RhdHVzIiwKICAidXVpZCI6ICJjbXVzLXN0YXR1c0B5YWdyZWc3LmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="},
@@ -1761,14 +1838,15 @@
     "43": {"version": "28", "sha256": "14c6l7d3jrjvk4q7hjy9i1h8isp4igyh8f3lcmfw8llq0lf4brny", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRhbmdlcm91cyI6IGZhbHNlLAogICJkZXNjcmlwdGlvbiI6ICJzaW1wbGUgZ25vbWUgZXh0ZW5zaW9uIGhlbHBzIHlvdSB0cmFja2luZyBnb2xkIHByaWNlIGluIHJlYWx0aW1lIiwKICAibmFtZSI6ICJHb2xkIFByaWNlIE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ29sZC1wcmljZS1tb25pdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93b3Rtc2h1YWlzaS9nb2xkcHJpY2Vtb25pdG9yIiwKICAidXVpZCI6ICJHb2xkX1ByaWNlX01vbml0b3JAd290bXNodWFpc2lfZ2l0aHViIiwKICAidmVyc2lvbiI6IDI4Cn0="},
     "44": {"version": "28", "sha256": "14c6l7d3jrjvk4q7hjy9i1h8isp4igyh8f3lcmfw8llq0lf4brny", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRhbmdlcm91cyI6IGZhbHNlLAogICJkZXNjcmlwdGlvbiI6ICJzaW1wbGUgZ25vbWUgZXh0ZW5zaW9uIGhlbHBzIHlvdSB0cmFja2luZyBnb2xkIHByaWNlIGluIHJlYWx0aW1lIiwKICAibmFtZSI6ICJHb2xkIFByaWNlIE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ29sZC1wcmljZS1tb25pdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93b3Rtc2h1YWlzaS9nb2xkcHJpY2Vtb25pdG9yIiwKICAidXVpZCI6ICJHb2xkX1ByaWNlX01vbml0b3JAd290bXNodWFpc2lfZ2l0aHViIiwKICAidmVyc2lvbiI6IDI4Cn0="}
   }}
-, {"uuid": "ding@rastersoft.com", "name": "Desktop Icons NG (DING)", "pname": "desktop-icons-ng-ding", "description": "Adds icons to the desktop. Fork of the original Desktop Icons extension, with several enhancements .", "link": "https://extensions.gnome.org/extension/2087/desktop-icons-ng-ding/", "shell_version_map": {
+, {"uuid": "ding@rastersoft.com", "name": "Desktop Icons NG (DING)", "pname": "desktop-icons-ng-ding", "description": "Adds icons to the desktop. Fork of the original Desktop Icons extension, with several enhancements . It requires libgnome-desktop-3-dev.", "link": "https://extensions.gnome.org/extension/2087/desktop-icons-ng-ding/", "shell_version_map": {
     "38": {"version": "63", "sha256": "0c1zlpkbs1a1vsnlvg7if29dmw535bgybm5glczdki2fgdzrchw5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
     "40": {"version": "63", "sha256": "0c1zlpkbs1a1vsnlvg7if29dmw535bgybm5glczdki2fgdzrchw5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
     "41": {"version": "63", "sha256": "0c1zlpkbs1a1vsnlvg7if29dmw535bgybm5glczdki2fgdzrchw5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
     "42": {"version": "63", "sha256": "0c1zlpkbs1a1vsnlvg7if29dmw535bgybm5glczdki2fgdzrchw5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
     "43": {"version": "63", "sha256": "0c1zlpkbs1a1vsnlvg7if29dmw535bgybm5glczdki2fgdzrchw5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
     "44": {"version": "63", "sha256": "0c1zlpkbs1a1vsnlvg7if29dmw535bgybm5glczdki2fgdzrchw5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjMKfQ=="},
-    "45": {"version": "67", "sha256": "02j0xw8zm7bfsg2dhp1d70x6fjz2psl1999bcbd83fsq88456n2q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjcKfQ=="}
+    "45": {"version": "67", "sha256": "02j0xw8zm7bfsg2dhp1d70x6fjz2psl1999bcbd83fsq88456n2q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjcKfQ=="},
+    "46": {"version": "67", "sha256": "02j0xw8zm7bfsg2dhp1d70x6fjz2psl1999bcbd83fsq88456n2q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgaWNvbnMgdG8gdGhlIGRlc2t0b3AuIEZvcmsgb2YgdGhlIG9yaWdpbmFsIERlc2t0b3AgSWNvbnMgZXh0ZW5zaW9uLCB3aXRoIHNldmVyYWwgZW5oYW5jZW1lbnRzIC4iLAogICJuYW1lIjogIkRlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9yYXN0ZXJzb2Z0L2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImRpbmdAcmFzdGVyc29mdC5jb20iLAogICJ2ZXJzaW9uIjogNjcKfQ=="}
   }}
 , {"uuid": "order-extensions@wa4557.github.com", "name": "Order Gnome Shell extensions", "pname": "order-gnome-shell-extensions", "description": "Fixes order of gnome-shell extensions", "link": "https://extensions.gnome.org/extension/2114/order-gnome-shell-extensions/", "shell_version_map": {
     "38": {"version": "6", "sha256": "0hcbjrhrg11f5p23bhss75nhc9sqlh6p1bmfq7p7m7d276ckdmkk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImF1dGhvciI6ICJBbmRyZWFzIEFuZ2VyZXIiLAogICJkZXNjcmlwdGlvbiI6ICJGaXhlcyBvcmRlciBvZiBnbm9tZS1zaGVsbCBleHRlbnNpb25zIiwKICAiZXh0ZW5zaW9uLWlkIjogIm9yZGVyLWV4dGVuc2lvbnMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmRlciBleHRlbnNpb25zIiwKICAibmFtZSI6ICJPcmRlciBHbm9tZSBTaGVsbCBleHRlbnNpb25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICIzLjQwIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIm9yZGVyLWV4dGVuc2lvbnNAd2E0NTU3LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNgp9"},
@@ -1798,7 +1876,8 @@
     "42": {"version": "22", "sha256": "02iz0p36naxg5hm0h5w84ic9rmsxz52sh7x9hh6sxfplw1hz09hp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJuYW1lIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL3Nwb3RpZnktYWQtYmxvY2tlciIsCiAgInV1aWQiOiAic3BvdGlmeS1hZC1ibG9ja0BkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDIyCn0="},
     "43": {"version": "22", "sha256": "02iz0p36naxg5hm0h5w84ic9rmsxz52sh7x9hh6sxfplw1hz09hp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJuYW1lIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL3Nwb3RpZnktYWQtYmxvY2tlciIsCiAgInV1aWQiOiAic3BvdGlmeS1hZC1ibG9ja0BkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDIyCn0="},
     "44": {"version": "22", "sha256": "02iz0p36naxg5hm0h5w84ic9rmsxz52sh7x9hh6sxfplw1hz09hp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJuYW1lIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL3Nwb3RpZnktYWQtYmxvY2tlciIsCiAgInV1aWQiOiAic3BvdGlmeS1hZC1ibG9ja0BkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDIyCn0="},
-    "45": {"version": "24", "sha256": "0ym30dj1hd5fj5sj944lscdsi5lc1b0rb083wy5622czsv5wi7cc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJuYW1lIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhbmlnbS9zcG90aWZ5LWFkLWJsb2NrZXIiLAogICJ1dWlkIjogInNwb3RpZnktYWQtYmxvY2tAZGFuaWdtLm5ldCIsCiAgInZlcnNpb24iOiAyNAp9"}
+    "45": {"version": "25", "sha256": "0iwbrlr6ym37mz0cwf18v0195hmfj4k47v1zqwqc60iamvnwqmwk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJuYW1lIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZ20vc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAidXVpZCI6ICJzcG90aWZ5LWFkLWJsb2NrQGRhbmlnbS5uZXQiLAogICJ2ZXJzaW9uIjogMjUKfQ=="},
+    "46": {"version": "25", "sha256": "0iwbrlr6ym37mz0cwf18v0195hmfj4k47v1zqwqc60iamvnwqmwk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJuYW1lIjogIk11dGUgc3BvdGlmeSBhZHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZ20vc3BvdGlmeS1hZC1ibG9ja2VyIiwKICAidXVpZCI6ICJzcG90aWZ5LWFkLWJsb2NrQGRhbmlnbS5uZXQiLAogICJ2ZXJzaW9uIjogMjUKfQ=="}
   }}
 , {"uuid": "noannoyance@daase.net", "name": "NoAnnoyance v2", "pname": "noannoyance", "description": "Another extension, that removes the 'Window is ready' notification and puts the window into focus. In contrast to all the other extensions, this uses ES6 syntax and is actively maintained.", "link": "https://extensions.gnome.org/extension/2182/noannoyance/", "shell_version_map": {
     "38": {"version": "12", "sha256": "1wr1wxmaxb569m3wsfdhs0jdpq1zqx3bkk6dgn9iswbbr060bnd0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZXh0ZW5zaW9uLCB0aGF0IHJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgcHV0cyB0aGUgd2luZG93IGludG8gZm9jdXMuIEluIGNvbnRyYXN0IHRvIGFsbCB0aGUgb3RoZXIgZXh0ZW5zaW9ucywgdGhpcyB1c2VzIEVTNiBzeW50YXggYW5kIGlzIGFjdGl2ZWx5IG1haW50YWluZWQuIiwKICAibmFtZSI6ICJOb0Fubm95YW5jZSB2MiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0Jqb2VybkRhYXNlL25vYW5ub3lhbmNlIiwKICAidXVpZCI6ICJub2Fubm95YW5jZUBkYWFzZS5uZXQiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
@@ -1823,7 +1902,8 @@
     "42": {"version": "20", "sha256": "0dh3km7fnl2wg5p13knp3kzwfm5sfx2rlw4hcmpplqarwc3xxfp9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgZXh0ZW5zaW9uIChHTk9NRSBQYW5lbCBhcHBsZXQpIHRvIGJlIGFibGUgdG8gZ2VuZXJhbGx5IGNvbnRyb2wgeW91ciBhdmFpbGFibGUgRG9ja2VyIGNvbnRhaW5lcnMuIiwKICAibmFtZSI6ICJFYXN5IERvY2tlciBDb250YWluZXJzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9SZWRTb2Z0d2FyZVN5c3RlbXMvZWFzeV9kb2NrZXJfY29udGFpbmVycyIsCiAgInV1aWQiOiAiZWFzeV9kb2NrZXJfY29udGFpbmVyc0ByZWQuc29mdHdhcmUuc3lzdGVtcyIsCiAgInZlcnNpb24iOiAyMAp9"},
     "43": {"version": "20", "sha256": "0dh3km7fnl2wg5p13knp3kzwfm5sfx2rlw4hcmpplqarwc3xxfp9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgZXh0ZW5zaW9uIChHTk9NRSBQYW5lbCBhcHBsZXQpIHRvIGJlIGFibGUgdG8gZ2VuZXJhbGx5IGNvbnRyb2wgeW91ciBhdmFpbGFibGUgRG9ja2VyIGNvbnRhaW5lcnMuIiwKICAibmFtZSI6ICJFYXN5IERvY2tlciBDb250YWluZXJzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9SZWRTb2Z0d2FyZVN5c3RlbXMvZWFzeV9kb2NrZXJfY29udGFpbmVycyIsCiAgInV1aWQiOiAiZWFzeV9kb2NrZXJfY29udGFpbmVyc0ByZWQuc29mdHdhcmUuc3lzdGVtcyIsCiAgInZlcnNpb24iOiAyMAp9"},
     "44": {"version": "20", "sha256": "0dh3km7fnl2wg5p13knp3kzwfm5sfx2rlw4hcmpplqarwc3xxfp9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgZXh0ZW5zaW9uIChHTk9NRSBQYW5lbCBhcHBsZXQpIHRvIGJlIGFibGUgdG8gZ2VuZXJhbGx5IGNvbnRyb2wgeW91ciBhdmFpbGFibGUgRG9ja2VyIGNvbnRhaW5lcnMuIiwKICAibmFtZSI6ICJFYXN5IERvY2tlciBDb250YWluZXJzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9SZWRTb2Z0d2FyZVN5c3RlbXMvZWFzeV9kb2NrZXJfY29udGFpbmVycyIsCiAgInV1aWQiOiAiZWFzeV9kb2NrZXJfY29udGFpbmVyc0ByZWQuc29mdHdhcmUuc3lzdGVtcyIsCiAgInZlcnNpb24iOiAyMAp9"},
-    "45": {"version": "21", "sha256": "11xdxd7z3802iw6qb99rfw1scg30c3gmdcwrl4blc2mlrjsba4sa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgZXh0ZW5zaW9uIChHTk9NRSBQYW5lbCBhcHBsZXQpIHRvIGJlIGFibGUgdG8gZ2VuZXJhbGx5IGNvbnRyb2wgeW91ciBhdmFpbGFibGUgRG9ja2VyIGNvbnRhaW5lcnMuIiwKICAibmFtZSI6ICJFYXN5IERvY2tlciBDb250YWluZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogInJlZC5zb2Z0d2FyZS5zeXN0ZW1zLmVhc3lfZG9ja2VyX2NvbnRhaW5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmVkU29mdHdhcmVTeXN0ZW1zL2Vhc3lfZG9ja2VyX2NvbnRhaW5lcnMiLAogICJ1dWlkIjogImVhc3lfZG9ja2VyX2NvbnRhaW5lcnNAcmVkLnNvZnR3YXJlLnN5c3RlbXMiLAogICJ2ZXJzaW9uIjogMjEKfQ=="}
+    "45": {"version": "23", "sha256": "06a4s1njlg1lkapgr5lh0vsw3c7ny63c24386ysz3rk9c3517gzv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgZXh0ZW5zaW9uIChHTk9NRSBQYW5lbCBhcHBsZXQpIHRvIGJlIGFibGUgdG8gZ2VuZXJhbGx5IGNvbnRyb2wgeW91ciBhdmFpbGFibGUgRG9ja2VyIGNvbnRhaW5lcnMuIiwKICAibmFtZSI6ICJFYXN5IERvY2tlciBDb250YWluZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogInJlZC5zb2Z0d2FyZS5zeXN0ZW1zLmVhc3lfZG9ja2VyX2NvbnRhaW5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JlZFNvZnR3YXJlU3lzdGVtcy9lYXN5X2RvY2tlcl9jb250YWluZXJzIiwKICAidXVpZCI6ICJlYXN5X2RvY2tlcl9jb250YWluZXJzQHJlZC5zb2Z0d2FyZS5zeXN0ZW1zIiwKICAidmVyc2lvbiI6IDIzCn0="},
+    "46": {"version": "23", "sha256": "06a4s1njlg1lkapgr5lh0vsw3c7ny63c24386ysz3rk9c3517gzv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgZXh0ZW5zaW9uIChHTk9NRSBQYW5lbCBhcHBsZXQpIHRvIGJlIGFibGUgdG8gZ2VuZXJhbGx5IGNvbnRyb2wgeW91ciBhdmFpbGFibGUgRG9ja2VyIGNvbnRhaW5lcnMuIiwKICAibmFtZSI6ICJFYXN5IERvY2tlciBDb250YWluZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogInJlZC5zb2Z0d2FyZS5zeXN0ZW1zLmVhc3lfZG9ja2VyX2NvbnRhaW5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JlZFNvZnR3YXJlU3lzdGVtcy9lYXN5X2RvY2tlcl9jb250YWluZXJzIiwKICAidXVpZCI6ICJlYXN5X2RvY2tlcl9jb250YWluZXJzQHJlZC5zb2Z0d2FyZS5zeXN0ZW1zIiwKICAidmVyc2lvbiI6IDIzCn0="}
   }}
 , {"uuid": "nightthemeswitcher@romainvigier.fr", "name": "Night Theme Switcher", "pname": "night-theme-switcher", "description": "Automatically toggle your desktop’s color scheme between light and dark, switch backgrounds and run custom commands at sunset and sunrise.\n\n⚠️ Ubuntu is not supported due to their heavily patched GNOME components that conflict with the extension ⚠️", "link": "https://extensions.gnome.org/extension/2236/night-theme-switcher/", "shell_version_map": {
     "38": {"version": "46", "sha256": "1mqan95pv7fjgr3bis9f1262i6nwwmp15lalh6c3aspn17pncp7w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdG9nZ2xlIHlvdXIgZGVza3RvcFx1MjAxOXMgY29sb3Igc2NoZW1lIGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHN3aXRjaCBiYWNrZ3JvdW5kcyBhbmQgcnVuIGN1c3RvbSBjb21tYW5kcyBhdCBzdW5zZXQgYW5kIHN1bnJpc2UuXG5cblx1MjZhMFx1ZmUwZiBVYnVudHUgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gdGhlaXIgaGVhdmlseSBwYXRjaGVkIEdOT01FIGNvbXBvbmVudHMgdGhhdCBjb25mbGljdCB3aXRoIHRoZSBleHRlbnNpb24gXHUyNmEwXHVmZTBmIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgIm5hbWUiOiAiTmlnaHQgVGhlbWUgU3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubmlnaHR0aGVtZXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL25pZ2h0dGhlbWVzd2l0Y2hlci5yb21haW52aWdpZXIuZnIiLAogICJ1dWlkIjogIm5pZ2h0dGhlbWVzd2l0Y2hlckByb21haW52aWdpZXIuZnIiLAogICJ2ZXJzaW9uIjogNDYKfQ=="},
@@ -1832,7 +1912,8 @@
     "42": {"version": "65", "sha256": "1crg4ggpxv0s6fj1nds461579wnf4a6j6llw4a9yqk479d6kfszv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdG9nZ2xlIHlvdXIgZGVza3RvcFx1MjAxOXMgY29sb3Igc2NoZW1lIGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHN3aXRjaCBiYWNrZ3JvdW5kcyBhbmQgcnVuIGN1c3RvbSBjb21tYW5kcyBhdCBzdW5zZXQgYW5kIHN1bnJpc2UuXG5cblx1MjZhMFx1ZmUwZiBVYnVudHUgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gdGhlaXIgaGVhdmlseSBwYXRjaGVkIEdOT01FIGNvbXBvbmVudHMgdGhhdCBjb25mbGljdCB3aXRoIHRoZSBleHRlbnNpb24gXHUyNmEwXHVmZTBmIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgIm5hbWUiOiAiTmlnaHQgVGhlbWUgU3dpdGNoZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0dGhlbWVzd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vbmlnaHR0aGVtZXN3aXRjaGVyLnJvbWFpbnZpZ2llci5mciIsCiAgInV1aWQiOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgInZlcnNpb24iOiA2NQp9"},
     "43": {"version": "73", "sha256": "1x845glwv6h4a5hf1dy1i6m37dj17nf3sdllzqvgdn1dgipb6212", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJ1aWxkLXR5cGUiOiAicmVsZWFzZSIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdG9nZ2xlIHlvdXIgZGVza3RvcFx1MjAxOXMgY29sb3Igc2NoZW1lIGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHN3aXRjaCBiYWNrZ3JvdW5kcyBhbmQgcnVuIGN1c3RvbSBjb21tYW5kcyBhdCBzdW5zZXQgYW5kIHN1bnJpc2UuXG5cblx1MjZhMFx1ZmUwZiBVYnVudHUgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gdGhlaXIgaGVhdmlseSBwYXRjaGVkIEdOT01FIGNvbXBvbmVudHMgdGhhdCBjb25mbGljdCB3aXRoIHRoZSBleHRlbnNpb24gXHUyNmEwXHVmZTBmIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgIm5hbWUiOiAiTmlnaHQgVGhlbWUgU3dpdGNoZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0dGhlbWVzd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vbmlnaHR0aGVtZXN3aXRjaGVyLnJvbWFpbnZpZ2llci5mciIsCiAgInV1aWQiOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgInZlcnNpb24iOiA3Mwp9"},
     "44": {"version": "74", "sha256": "1w3j973n598pqv011h858gai918j1f048ih74z964bym0axi44dp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJ1aWxkLXR5cGUiOiAicmVsZWFzZSIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdG9nZ2xlIHlvdXIgZGVza3RvcFx1MjAxOXMgY29sb3Igc2NoZW1lIGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHN3aXRjaCBiYWNrZ3JvdW5kcyBhbmQgcnVuIGN1c3RvbSBjb21tYW5kcyBhdCBzdW5zZXQgYW5kIHN1bnJpc2UuXG5cblx1MjZhMFx1ZmUwZiBVYnVudHUgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gdGhlaXIgaGVhdmlseSBwYXRjaGVkIEdOT01FIGNvbXBvbmVudHMgdGhhdCBjb25mbGljdCB3aXRoIHRoZSBleHRlbnNpb24gXHUyNmEwXHVmZTBmIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgIm5hbWUiOiAiTmlnaHQgVGhlbWUgU3dpdGNoZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0dGhlbWVzd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vbmlnaHR0aGVtZXN3aXRjaGVyLnJvbWFpbnZpZ2llci5mciIsCiAgInV1aWQiOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgInZlcnNpb24iOiA3NAp9"},
-    "45": {"version": "75", "sha256": "1ivhdg0kwn5v720jcgrm4d0ma98i8cbnl3xhynj552wzpd4bqf8h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJ1aWxkLXR5cGUiOiAicmVsZWFzZSIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdG9nZ2xlIHlvdXIgZGVza3RvcFx1MjAxOXMgY29sb3Igc2NoZW1lIGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHN3aXRjaCBiYWNrZ3JvdW5kcyBhbmQgcnVuIGN1c3RvbSBjb21tYW5kcyBhdCBzdW5zZXQgYW5kIHN1bnJpc2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgIm5hbWUiOiAiTmlnaHQgVGhlbWUgU3dpdGNoZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0dGhlbWVzd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vbmlnaHR0aGVtZXN3aXRjaGVyLnJvbWFpbnZpZ2llci5mciIsCiAgInV1aWQiOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgInZlcnNpb24iOiA3NQp9"}
+    "45": {"version": "75", "sha256": "1ivhdg0kwn5v720jcgrm4d0ma98i8cbnl3xhynj552wzpd4bqf8h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJ1aWxkLXR5cGUiOiAicmVsZWFzZSIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdG9nZ2xlIHlvdXIgZGVza3RvcFx1MjAxOXMgY29sb3Igc2NoZW1lIGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHN3aXRjaCBiYWNrZ3JvdW5kcyBhbmQgcnVuIGN1c3RvbSBjb21tYW5kcyBhdCBzdW5zZXQgYW5kIHN1bnJpc2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgIm5hbWUiOiAiTmlnaHQgVGhlbWUgU3dpdGNoZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0dGhlbWVzd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vbmlnaHR0aGVtZXN3aXRjaGVyLnJvbWFpbnZpZ2llci5mciIsCiAgInV1aWQiOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgInZlcnNpb24iOiA3NQp9"},
+    "46": {"version": "77", "sha256": "0bprqy4gq30nlkjm4x4vmr7ymknfa2325dzj9a6i4nqk37ai5igp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJ1aWxkLXR5cGUiOiAicmVsZWFzZSIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdG9nZ2xlIHlvdXIgZGVza3RvcFx1MjAxOXMgY29sb3Igc2NoZW1lIGJldHdlZW4gbGlnaHQgYW5kIGRhcmssIHN3aXRjaCBiYWNrZ3JvdW5kcyBhbmQgcnVuIGN1c3RvbSBjb21tYW5kcyBhdCBzdW5zZXQgYW5kIHN1bnJpc2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgIm5hbWUiOiAiTmlnaHQgVGhlbWUgU3dpdGNoZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0dGhlbWVzd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vbmlnaHR0aGVtZXN3aXRjaGVyLnJvbWFpbnZpZ2llci5mciIsCiAgInV1aWQiOiAibmlnaHR0aGVtZXN3aXRjaGVyQHJvbWFpbnZpZ2llci5mciIsCiAgInZlcnNpb24iOiA3Nwp9"}
   }}
 , {"uuid": "binaryclock@vancha.march", "name": "binaryclock", "pname": "binaryclock", "description": "adds a binary clock to the gnome bar", "link": "https://extensions.gnome.org/extension/2284/binaryclock/", "shell_version_map": {
     "38": {"version": "6", "sha256": "1bvzlqfhwlk1sh9q3538yipjwzgndd4wnn2l8wc3sshb93ggvpg6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImFkZHMgYSBiaW5hcnkgY2xvY2sgdG8gdGhlIGdub21lIGJhciIsCiAgIm5hbWUiOiAiYmluYXJ5Y2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzQiLAogICAgIjMuMzIuMiIsCiAgICAiMy4zOCIsCiAgICAiMy4zNi43IiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3ZhbmNoYS9nbm9tZVNoZWxsQmluYXJ5Q2xvY2svIiwKICAidXVpZCI6ICJiaW5hcnljbG9ja0B2YW5jaGEubWFyY2giLAogICJ2ZXJzaW9uIjogNgp9"},
@@ -1845,7 +1926,8 @@
     "42": {"version": "12", "sha256": "083h60v38xrqx88i6zisln318gfd12knzangl1x06crf3bk7xx06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgTG9va2luZyBHbGFzcyB2aXNpYmlsaXR5IGJ5IGNsaWNraW5nIG9uIGEgcGFuZWwgaWNvbi5cblxuQW5kIGZyb20gdmVyc2lvbiA0IGxlZnQgY2xpY2tpbmcgb24gdGhlIGljb24gc2hvdyBhIG1lbnUgd2l0aCBuZXcgZmVhdHVyZXMgbGlrZSBSZXN0YXJ0IEdub21lIFNoZWxsIChub3QgYXZhaWxhYmxlIG9uIFdheWxhbmQpLCBSZWxvYWQgVGhlbWUsIE9wZW4gRXh0ZW5zaW9uIEZvbGRlciBhbmQgT3BlbiBUaGVtZSBGb2xkZXIgKHRoZSBsYXN0IHR3byByZXF1aXJlIHRoYXQgeGRnLW9wZW4gaXMgaW5zdGFsbGVkKS5cblxuVmVyc2lvbiA0IGFsc28gZHJvcCB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIEdub21lIFNoZWxsIDMuMzAuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxnYnV0dG9uIiwKICAibmFtZSI6ICJMb29raW5nIEdsYXNzIEJ1dHRvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sZ2J1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sZ2J1dHRvbiIsCiAgInV1aWQiOiAibGdidXR0b25AZ2xlcnJvLmdub21lLmdpdGxhYi5pbyIsCiAgInZlcnNpb24iOiAxMgp9"},
     "43": {"version": "12", "sha256": "083h60v38xrqx88i6zisln318gfd12knzangl1x06crf3bk7xx06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgTG9va2luZyBHbGFzcyB2aXNpYmlsaXR5IGJ5IGNsaWNraW5nIG9uIGEgcGFuZWwgaWNvbi5cblxuQW5kIGZyb20gdmVyc2lvbiA0IGxlZnQgY2xpY2tpbmcgb24gdGhlIGljb24gc2hvdyBhIG1lbnUgd2l0aCBuZXcgZmVhdHVyZXMgbGlrZSBSZXN0YXJ0IEdub21lIFNoZWxsIChub3QgYXZhaWxhYmxlIG9uIFdheWxhbmQpLCBSZWxvYWQgVGhlbWUsIE9wZW4gRXh0ZW5zaW9uIEZvbGRlciBhbmQgT3BlbiBUaGVtZSBGb2xkZXIgKHRoZSBsYXN0IHR3byByZXF1aXJlIHRoYXQgeGRnLW9wZW4gaXMgaW5zdGFsbGVkKS5cblxuVmVyc2lvbiA0IGFsc28gZHJvcCB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIEdub21lIFNoZWxsIDMuMzAuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxnYnV0dG9uIiwKICAibmFtZSI6ICJMb29raW5nIEdsYXNzIEJ1dHRvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sZ2J1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sZ2J1dHRvbiIsCiAgInV1aWQiOiAibGdidXR0b25AZ2xlcnJvLmdub21lLmdpdGxhYi5pbyIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "083h60v38xrqx88i6zisln318gfd12knzangl1x06crf3bk7xx06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgTG9va2luZyBHbGFzcyB2aXNpYmlsaXR5IGJ5IGNsaWNraW5nIG9uIGEgcGFuZWwgaWNvbi5cblxuQW5kIGZyb20gdmVyc2lvbiA0IGxlZnQgY2xpY2tpbmcgb24gdGhlIGljb24gc2hvdyBhIG1lbnUgd2l0aCBuZXcgZmVhdHVyZXMgbGlrZSBSZXN0YXJ0IEdub21lIFNoZWxsIChub3QgYXZhaWxhYmxlIG9uIFdheWxhbmQpLCBSZWxvYWQgVGhlbWUsIE9wZW4gRXh0ZW5zaW9uIEZvbGRlciBhbmQgT3BlbiBUaGVtZSBGb2xkZXIgKHRoZSBsYXN0IHR3byByZXF1aXJlIHRoYXQgeGRnLW9wZW4gaXMgaW5zdGFsbGVkKS5cblxuVmVyc2lvbiA0IGFsc28gZHJvcCB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIEdub21lIFNoZWxsIDMuMzAuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxnYnV0dG9uIiwKICAibmFtZSI6ICJMb29raW5nIEdsYXNzIEJ1dHRvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sZ2J1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sZ2J1dHRvbiIsCiAgInV1aWQiOiAibGdidXR0b25AZ2xlcnJvLmdub21lLmdpdGxhYi5pbyIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "16", "sha256": "08jhraf4rdsd15974224v659s25500nq0fxsq6p04c994zc70bks", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgTG9va2luZyBHbGFzcyB2aXNpYmlsaXR5IGJ5IGNsaWNraW5nIG9uIGEgcGFuZWwgaWNvbi5cblxuQW5kIGZyb20gdmVyc2lvbiA0IGxlZnQgY2xpY2tpbmcgb24gdGhlIGljb24gc2hvdyBhIG1lbnUgd2l0aCBuZXcgZmVhdHVyZXMgbGlrZSBSZXN0YXJ0IEdub21lIFNoZWxsIChub3QgYXZhaWxhYmxlIG9uIFdheWxhbmQpLCBSZWxvYWQgVGhlbWUsIE9wZW4gRXh0ZW5zaW9uIEZvbGRlciBhbmQgT3BlbiBUaGVtZSBGb2xkZXIuXG5cblZlcnNpb24gNCBhbHNvIGRyb3AgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBHbm9tZSBTaGVsbCAzLjMwLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGdidXR0b24iLAogICJuYW1lIjogIkxvb2tpbmcgR2xhc3MgQnV0dG9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxnYnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9nbGVycm8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxnYnV0dG9uIiwKICAidXVpZCI6ICJsZ2J1dHRvbkBnbGVycm8uZ25vbWUuZ2l0bGFiLmlvIiwKICAidmVyc2lvbiI6IDE2Cn0="}
+    "45": {"version": "16", "sha256": "08jhraf4rdsd15974224v659s25500nq0fxsq6p04c994zc70bks", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgTG9va2luZyBHbGFzcyB2aXNpYmlsaXR5IGJ5IGNsaWNraW5nIG9uIGEgcGFuZWwgaWNvbi5cblxuQW5kIGZyb20gdmVyc2lvbiA0IGxlZnQgY2xpY2tpbmcgb24gdGhlIGljb24gc2hvdyBhIG1lbnUgd2l0aCBuZXcgZmVhdHVyZXMgbGlrZSBSZXN0YXJ0IEdub21lIFNoZWxsIChub3QgYXZhaWxhYmxlIG9uIFdheWxhbmQpLCBSZWxvYWQgVGhlbWUsIE9wZW4gRXh0ZW5zaW9uIEZvbGRlciBhbmQgT3BlbiBUaGVtZSBGb2xkZXIuXG5cblZlcnNpb24gNCBhbHNvIGRyb3AgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBHbm9tZSBTaGVsbCAzLjMwLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGdidXR0b24iLAogICJuYW1lIjogIkxvb2tpbmcgR2xhc3MgQnV0dG9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxnYnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9nbGVycm8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxnYnV0dG9uIiwKICAidXVpZCI6ICJsZ2J1dHRvbkBnbGVycm8uZ25vbWUuZ2l0bGFiLmlvIiwKICAidmVyc2lvbiI6IDE2Cn0="},
+    "46": {"version": "16", "sha256": "08jhraf4rdsd15974224v659s25500nq0fxsq6p04c994zc70bks", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgTG9va2luZyBHbGFzcyB2aXNpYmlsaXR5IGJ5IGNsaWNraW5nIG9uIGEgcGFuZWwgaWNvbi5cblxuQW5kIGZyb20gdmVyc2lvbiA0IGxlZnQgY2xpY2tpbmcgb24gdGhlIGljb24gc2hvdyBhIG1lbnUgd2l0aCBuZXcgZmVhdHVyZXMgbGlrZSBSZXN0YXJ0IEdub21lIFNoZWxsIChub3QgYXZhaWxhYmxlIG9uIFdheWxhbmQpLCBSZWxvYWQgVGhlbWUsIE9wZW4gRXh0ZW5zaW9uIEZvbGRlciBhbmQgT3BlbiBUaGVtZSBGb2xkZXIuXG5cblZlcnNpb24gNCBhbHNvIGRyb3AgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBHbm9tZSBTaGVsbCAzLjMwLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGdidXR0b24iLAogICJuYW1lIjogIkxvb2tpbmcgR2xhc3MgQnV0dG9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxnYnV0dG9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9nbGVycm8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxnYnV0dG9uIiwKICAidXVpZCI6ICJsZ2J1dHRvbkBnbGVycm8uZ25vbWUuZ2l0bGFiLmlvIiwKICAidmVyc2lvbiI6IDE2Cn0="}
   }}
 , {"uuid": "tp_wattmeter@gistart", "name": "tp_wattmeter", "pname": "tp_wattmeter", "description": "Shows battery power consumption of ThinkPad laptops. Now configurable!", "link": "https://extensions.gnome.org/extension/2308/tp_wattmeter/", "shell_version_map": {
     "40": {"version": "11", "sha256": "1sw6mq3fgzv1jl33yf08rgd1fzqb17c5qvq41gq5b6kgn1cs36ji", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGJhdHRlcnkgcG93ZXIgY29uc3VtcHRpb24gb2YgVGhpbmtQYWQgbGFwdG9wcy4gTm93IGNvbmZpZ3VyYWJsZSEiLAogICJuYW1lIjogInRwX3dhdHRtZXRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dpc3RhcnQvdHBfd2F0dG1ldGVyIiwKICAidXVpZCI6ICJ0cF93YXR0bWV0ZXJAZ2lzdGFydCIsCiAgInZlcnNpb24iOiAxMQp9"},
@@ -1865,7 +1947,8 @@
     "42": {"version": "13", "sha256": "1xw8i864lc2zvzphh3rdal6d8l4nj5xmjigknrmb4pd2npwh6i20", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyBpY29uIGZyb20gdGhlIHN0YXR1cyBiYXIiLAogICJuYW1lIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWtpaXJ1aS9oaWRlLXVuaXZlcnNhbC1hY2Nlc3MiLAogICJ1dWlkIjogImhpZGUtdW5pdmVyc2FsLWFjY2Vzc0Bha2lpcnVpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMwp9"},
     "43": {"version": "13", "sha256": "1xw8i864lc2zvzphh3rdal6d8l4nj5xmjigknrmb4pd2npwh6i20", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyBpY29uIGZyb20gdGhlIHN0YXR1cyBiYXIiLAogICJuYW1lIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWtpaXJ1aS9oaWRlLXVuaXZlcnNhbC1hY2Nlc3MiLAogICJ1dWlkIjogImhpZGUtdW5pdmVyc2FsLWFjY2Vzc0Bha2lpcnVpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMwp9"},
     "44": {"version": "13", "sha256": "1xw8i864lc2zvzphh3rdal6d8l4nj5xmjigknrmb4pd2npwh6i20", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyBpY29uIGZyb20gdGhlIHN0YXR1cyBiYXIiLAogICJuYW1lIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWtpaXJ1aS9oaWRlLXVuaXZlcnNhbC1hY2Nlc3MiLAogICJ1dWlkIjogImhpZGUtdW5pdmVyc2FsLWFjY2Vzc0Bha2lpcnVpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMwp9"},
-    "45": {"version": "16", "sha256": "11vwyvry553k1ffwmzy9mhracibn0nbwa3p4wnvi7czh55cq92ji", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyBpY29uIGZyb20gdGhlIHN0YXR1cyBiYXIiLAogICJuYW1lIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ha2lpcnVpL2hpZGUtdW5pdmVyc2FsLWFjY2VzcyIsCiAgInV1aWQiOiAiaGlkZS11bml2ZXJzYWwtYWNjZXNzQGFraWlydWkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDE2Cn0="}
+    "45": {"version": "16", "sha256": "11vwyvry553k1ffwmzy9mhracibn0nbwa3p4wnvi7czh55cq92ji", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyBpY29uIGZyb20gdGhlIHN0YXR1cyBiYXIiLAogICJuYW1lIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ha2lpcnVpL2hpZGUtdW5pdmVyc2FsLWFjY2VzcyIsCiAgInV1aWQiOiAiaGlkZS11bml2ZXJzYWwtYWNjZXNzQGFraWlydWkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDE2Cn0="},
+    "46": {"version": "17", "sha256": "03gbsi62h3p2z3b0c8kfyxvxlqm5cbajlqzbk0692hdw9cy7lqcx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyBpY29uIGZyb20gdGhlIHN0YXR1cyBiYXIiLAogICJuYW1lIjogIkhpZGUgVW5pdmVyc2FsIEFjY2VzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ha2lpcnVpL2hpZGUtdW5pdmVyc2FsLWFjY2VzcyIsCiAgInV1aWQiOiAiaGlkZS11bml2ZXJzYWwtYWNjZXNzQGFraWlydWkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDE3Cn0="}
   }}
 , {"uuid": "roundrobintaborder@scottworley.com", "name": "Round Robin Tab Order", "pname": "round-robin-tab-order", "description": "Window switch order becomes round-robin instead of most-recently-used", "link": "https://extensions.gnome.org/extension/2446/round-robin-tab-order/", "shell_version_map": {
     "40": {"version": "3", "sha256": "0p2qfv6i43pi0hjsyz8xzxkxijr06b0d20q618y8gfj4ar82glv7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldpbmRvdyBzd2l0Y2ggb3JkZXIgYmVjb21lcyByb3VuZC1yb2JpbiBpbnN0ZWFkIG9mIG1vc3QtcmVjZW50bHktdXNlZCIsCiAgIm5hbWUiOiAiUm91bmQgUm9iaW4gVGFiIE9yZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMyIiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2NodWNrL3JvdW5kLXJvYmluLXRhYi1vcmRlciIsCiAgInV1aWQiOiAicm91bmRyb2JpbnRhYm9yZGVyQHNjb3R0d29ybGV5LmNvbSIsCiAgInZlcnNpb24iOiAzCn0="}
@@ -1877,7 +1960,8 @@
     "42": {"version": "20", "sha256": "0yz3vcjrbhlpiy5wbnbyp4ns9dbp4cgjhn7v9n65vfxf2r0498i6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBmb3IgbmV3IGFuZCB1bnJlYWQgbWFpbCAoWWFob28sIEdtYWlsLCBNaWNyb3NvZnQsIE91dGxvb2ssIEFvbCwgSWNsb3VkLCBQcm90b25tYWlsLCBHbXguLi4pXG4gKiBNdWx0aXBsZSBhY2NvdW50cyBzdXBwb3J0XG4gKiBMb2NhbCBtYWlsIHN1cHBvcnQgZm9yIE1haWxkaXIgYW5kIE1ib3ggZm9ybWF0c1xuICogUmVtb3RlIG1haWwgc3VwcG9ydCBmb3IgUG9wMywgSW1hcCBhbmQgRXhjaGFuZ2UgcHJvdG9jb2xzXG4gKiBBdXRvbWF0aWMgaW1wb3J0cyBvZiBHbm9tZSBPbmxpbmUgQWNjb3VudHNcbiAqIFBsdWdpbiBzdXBwb3J0IHdpdGggZGVmYXVsdCBvbmVzIDogc3BhbSBmaWx0ZXIsIHNvdW5kIGFsZXJ0LCBsaWJub3RpZnksIHVzZXIgc2NyaXB0XG4gKiBBdmF0YXJzIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgb3IgZGVmYXVsdCBjb2xvcml6ZWQgb25lc1xuICogUmVwb3J0cyBmb3IgY29ubmVjdGlvbiBlcnJvcnMuXG5cbkJFIEFXQVJFIFRIQVQgVEhJUyBFWFRFTlNJT04gUkVRVUlSRVMgQlVCQkxFTUFJTCBTRVJWSUNFIElOU1RBTExBVElPTlxuQ2hlY2sgeW91ciBkaXN0cmlidXRpb24gcGFja2FnaW5nIHN5c3RlbSBmb3IgYXZhaWxhYmlsaXR5LlxuUGFja2FnZXMgZm9yIGRpc3RyaWJ1dGlvbnMgYW5kIHNvdXJjZSB0YXJiYWxscyBjYW4gYmUgZm91bmQgaGVyZSA6XG5odHRwOi8vYnViYmxlbWFpbC5mcmVlLmZyXG5cblBsZWFzZSByZXBvcnQgYW55IGlzc3VlIG9uIHRoZSBnaXRsYWIgcGFnZXMgb2YgdGhlIHByb2plY3QgOlxuaHR0cHM6Ly9mcmFtYWdpdC5vcmcvcmF6ZXIvYnViYmxlbWFpbC9pc3N1ZXNcbmh0dHBzOi8vZnJhbWFnaXQub3JnL3JhemVyL2J1YmJsZW1haWwtZ25vbWUtc2hlbGwvaXNzdWVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYnViYmxlbWFpbC1nbm9tZS1zaGVsbCIsCiAgIm5hbWUiOiAiQnViYmxlbWFpbCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAicmF6ZXJyYXpAZnJlZS5mciIsCiAgICAienVsdTk5QGdteC5uZXQiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJ1YmJsZW1haWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2J1YmJsZW1haWwuZnJlZS5mciIsCiAgInV1aWQiOiAiYnViYmxlbWFpbEByYXplci5mcmFtYWdpdC5vcmciLAogICJ2ZXJzaW9uIjogMjAKfQ=="},
     "43": {"version": "20", "sha256": "0yz3vcjrbhlpiy5wbnbyp4ns9dbp4cgjhn7v9n65vfxf2r0498i6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBmb3IgbmV3IGFuZCB1bnJlYWQgbWFpbCAoWWFob28sIEdtYWlsLCBNaWNyb3NvZnQsIE91dGxvb2ssIEFvbCwgSWNsb3VkLCBQcm90b25tYWlsLCBHbXguLi4pXG4gKiBNdWx0aXBsZSBhY2NvdW50cyBzdXBwb3J0XG4gKiBMb2NhbCBtYWlsIHN1cHBvcnQgZm9yIE1haWxkaXIgYW5kIE1ib3ggZm9ybWF0c1xuICogUmVtb3RlIG1haWwgc3VwcG9ydCBmb3IgUG9wMywgSW1hcCBhbmQgRXhjaGFuZ2UgcHJvdG9jb2xzXG4gKiBBdXRvbWF0aWMgaW1wb3J0cyBvZiBHbm9tZSBPbmxpbmUgQWNjb3VudHNcbiAqIFBsdWdpbiBzdXBwb3J0IHdpdGggZGVmYXVsdCBvbmVzIDogc3BhbSBmaWx0ZXIsIHNvdW5kIGFsZXJ0LCBsaWJub3RpZnksIHVzZXIgc2NyaXB0XG4gKiBBdmF0YXJzIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgb3IgZGVmYXVsdCBjb2xvcml6ZWQgb25lc1xuICogUmVwb3J0cyBmb3IgY29ubmVjdGlvbiBlcnJvcnMuXG5cbkJFIEFXQVJFIFRIQVQgVEhJUyBFWFRFTlNJT04gUkVRVUlSRVMgQlVCQkxFTUFJTCBTRVJWSUNFIElOU1RBTExBVElPTlxuQ2hlY2sgeW91ciBkaXN0cmlidXRpb24gcGFja2FnaW5nIHN5c3RlbSBmb3IgYXZhaWxhYmlsaXR5LlxuUGFja2FnZXMgZm9yIGRpc3RyaWJ1dGlvbnMgYW5kIHNvdXJjZSB0YXJiYWxscyBjYW4gYmUgZm91bmQgaGVyZSA6XG5odHRwOi8vYnViYmxlbWFpbC5mcmVlLmZyXG5cblBsZWFzZSByZXBvcnQgYW55IGlzc3VlIG9uIHRoZSBnaXRsYWIgcGFnZXMgb2YgdGhlIHByb2plY3QgOlxuaHR0cHM6Ly9mcmFtYWdpdC5vcmcvcmF6ZXIvYnViYmxlbWFpbC9pc3N1ZXNcbmh0dHBzOi8vZnJhbWFnaXQub3JnL3JhemVyL2J1YmJsZW1haWwtZ25vbWUtc2hlbGwvaXNzdWVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYnViYmxlbWFpbC1nbm9tZS1zaGVsbCIsCiAgIm5hbWUiOiAiQnViYmxlbWFpbCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAicmF6ZXJyYXpAZnJlZS5mciIsCiAgICAienVsdTk5QGdteC5uZXQiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJ1YmJsZW1haWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2J1YmJsZW1haWwuZnJlZS5mciIsCiAgInV1aWQiOiAiYnViYmxlbWFpbEByYXplci5mcmFtYWdpdC5vcmciLAogICJ2ZXJzaW9uIjogMjAKfQ=="},
     "44": {"version": "20", "sha256": "0yz3vcjrbhlpiy5wbnbyp4ns9dbp4cgjhn7v9n65vfxf2r0498i6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBmb3IgbmV3IGFuZCB1bnJlYWQgbWFpbCAoWWFob28sIEdtYWlsLCBNaWNyb3NvZnQsIE91dGxvb2ssIEFvbCwgSWNsb3VkLCBQcm90b25tYWlsLCBHbXguLi4pXG4gKiBNdWx0aXBsZSBhY2NvdW50cyBzdXBwb3J0XG4gKiBMb2NhbCBtYWlsIHN1cHBvcnQgZm9yIE1haWxkaXIgYW5kIE1ib3ggZm9ybWF0c1xuICogUmVtb3RlIG1haWwgc3VwcG9ydCBmb3IgUG9wMywgSW1hcCBhbmQgRXhjaGFuZ2UgcHJvdG9jb2xzXG4gKiBBdXRvbWF0aWMgaW1wb3J0cyBvZiBHbm9tZSBPbmxpbmUgQWNjb3VudHNcbiAqIFBsdWdpbiBzdXBwb3J0IHdpdGggZGVmYXVsdCBvbmVzIDogc3BhbSBmaWx0ZXIsIHNvdW5kIGFsZXJ0LCBsaWJub3RpZnksIHVzZXIgc2NyaXB0XG4gKiBBdmF0YXJzIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgb3IgZGVmYXVsdCBjb2xvcml6ZWQgb25lc1xuICogUmVwb3J0cyBmb3IgY29ubmVjdGlvbiBlcnJvcnMuXG5cbkJFIEFXQVJFIFRIQVQgVEhJUyBFWFRFTlNJT04gUkVRVUlSRVMgQlVCQkxFTUFJTCBTRVJWSUNFIElOU1RBTExBVElPTlxuQ2hlY2sgeW91ciBkaXN0cmlidXRpb24gcGFja2FnaW5nIHN5c3RlbSBmb3IgYXZhaWxhYmlsaXR5LlxuUGFja2FnZXMgZm9yIGRpc3RyaWJ1dGlvbnMgYW5kIHNvdXJjZSB0YXJiYWxscyBjYW4gYmUgZm91bmQgaGVyZSA6XG5odHRwOi8vYnViYmxlbWFpbC5mcmVlLmZyXG5cblBsZWFzZSByZXBvcnQgYW55IGlzc3VlIG9uIHRoZSBnaXRsYWIgcGFnZXMgb2YgdGhlIHByb2plY3QgOlxuaHR0cHM6Ly9mcmFtYWdpdC5vcmcvcmF6ZXIvYnViYmxlbWFpbC9pc3N1ZXNcbmh0dHBzOi8vZnJhbWFnaXQub3JnL3JhemVyL2J1YmJsZW1haWwtZ25vbWUtc2hlbGwvaXNzdWVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYnViYmxlbWFpbC1nbm9tZS1zaGVsbCIsCiAgIm5hbWUiOiAiQnViYmxlbWFpbCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAicmF6ZXJyYXpAZnJlZS5mciIsCiAgICAienVsdTk5QGdteC5uZXQiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJ1YmJsZW1haWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2J1YmJsZW1haWwuZnJlZS5mciIsCiAgInV1aWQiOiAiYnViYmxlbWFpbEByYXplci5mcmFtYWdpdC5vcmciLAogICJ2ZXJzaW9uIjogMjAKfQ=="},
-    "45": {"version": "22", "sha256": "16vdjsb4l4ap835f7msj6n51by5g8qcrmiqnvfkwivmzw3fk9sxb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBmb3IgbmV3IGFuZCB1bnJlYWQgbWFpbCAoWWFob28sIEdtYWlsLCBNaWNyb3NvZnQsIE91dGxvb2ssIEFvbCwgSWNsb3VkLCBQcm90b25tYWlsLCBHbXguLi4pXG4gKiBNdWx0aXBsZSBhY2NvdW50cyBzdXBwb3J0XG4gKiBMb2NhbCBtYWlsIHN1cHBvcnQgZm9yIE1haWxkaXIgYW5kIE1ib3ggZm9ybWF0c1xuICogUmVtb3RlIG1haWwgc3VwcG9ydCBmb3IgUG9wMywgSW1hcCBhbmQgRXhjaGFuZ2UgcHJvdG9jb2xzXG4gKiBBdXRvbWF0aWMgaW1wb3J0cyBvZiBHbm9tZSBPbmxpbmUgQWNjb3VudHNcbiAqIFBsdWdpbiBzdXBwb3J0IHdpdGggZGVmYXVsdCBvbmVzIDogc3BhbSBmaWx0ZXIsIHNvdW5kIGFsZXJ0LCBsaWJub3RpZnksIHVzZXIgc2NyaXB0XG4gKiBBdmF0YXJzIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgb3IgZGVmYXVsdCBjb2xvcml6ZWQgb25lc1xuICogUmVwb3J0cyBmb3IgY29ubmVjdGlvbiBlcnJvcnMuXG5cbkJFIEFXQVJFIFRIQVQgVEhJUyBFWFRFTlNJT04gUkVRVUlSRVMgQlVCQkxFTUFJTCBTRVJWSUNFIElOU1RBTExBVElPTlxuQ2hlY2sgeW91ciBkaXN0cmlidXRpb24gcGFja2FnaW5nIHN5c3RlbSBmb3IgYXZhaWxhYmlsaXR5LlxuUGFja2FnZXMgZm9yIGRpc3RyaWJ1dGlvbnMgYW5kIHNvdXJjZSB0YXJiYWxscyBjYW4gYmUgZm91bmQgaGVyZSA6XG5odHRwOi8vYnViYmxlbWFpbC5mcmVlLmZyXG5cblBsZWFzZSByZXBvcnQgYW55IGlzc3VlIG9uIHRoZSBnaXRsYWIgcGFnZXMgb2YgdGhlIHByb2plY3QgOlxuaHR0cHM6Ly9mcmFtYWdpdC5vcmcvcmF6ZXIvYnViYmxlbWFpbC9pc3N1ZXNcbmh0dHBzOi8vZnJhbWFnaXQub3JnL3JhemVyL2J1YmJsZW1haWwtZ25vbWUtc2hlbGwvaXNzdWVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYnViYmxlbWFpbC1nbm9tZS1zaGVsbCIsCiAgIm5hbWUiOiAiQnViYmxlbWFpbCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAicmF6ZXJyYXpAZnJlZS5mciIsCiAgICAienVsdTk5QGdteC5uZXQiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJ1YmJsZW1haWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwOi8vYnViYmxlbWFpbC5mcmVlLmZyIiwKICAidXVpZCI6ICJidWJibGVtYWlsQHJhemVyLmZyYW1hZ2l0Lm9yZyIsCiAgInZlcnNpb24iOiAyMgp9"}
+    "45": {"version": "23", "sha256": "00sksbyzis2jv06iaq4gmzjni269x2ygzlm6kipad3wkkg6y7g5r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBmb3IgbmV3IGFuZCB1bnJlYWQgbWFpbCAoWWFob28sIEdtYWlsLCBNaWNyb3NvZnQsIE91dGxvb2ssIEFvbCwgSWNsb3VkLCBQcm90b25tYWlsLCBHbXguLi4pXG4gKiBNdWx0aXBsZSBhY2NvdW50cyBzdXBwb3J0XG4gKiBMb2NhbCBtYWlsIHN1cHBvcnQgZm9yIE1haWxkaXIgYW5kIE1ib3ggZm9ybWF0c1xuICogUmVtb3RlIG1haWwgc3VwcG9ydCBmb3IgUG9wMywgSW1hcCBhbmQgRXhjaGFuZ2UgcHJvdG9jb2xzXG4gKiBBdXRvbWF0aWMgaW1wb3J0cyBvZiBHbm9tZSBPbmxpbmUgQWNjb3VudHNcbiAqIFBsdWdpbiBzdXBwb3J0IHdpdGggZGVmYXVsdCBvbmVzIDogc3BhbSBmaWx0ZXIsIHNvdW5kIGFsZXJ0LCBsaWJub3RpZnksIHVzZXIgc2NyaXB0XG4gKiBBdmF0YXJzIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgb3IgZGVmYXVsdCBjb2xvcml6ZWQgb25lc1xuICogUmVwb3J0cyBmb3IgY29ubmVjdGlvbiBlcnJvcnMuXG5cbkJFIEFXQVJFIFRIQVQgVEhJUyBFWFRFTlNJT04gUkVRVUlSRVMgQlVCQkxFTUFJTCBTRVJWSUNFIElOU1RBTExBVElPTlxuQ2hlY2sgeW91ciBkaXN0cmlidXRpb24gcGFja2FnaW5nIHN5c3RlbSBmb3IgYXZhaWxhYmlsaXR5LlxuUGFja2FnZXMgZm9yIGRpc3RyaWJ1dGlvbnMgYW5kIHNvdXJjZSB0YXJiYWxscyBjYW4gYmUgZm91bmQgaGVyZSA6XG5odHRwOi8vYnViYmxlbWFpbC5mcmVlLmZyXG5cblBsZWFzZSByZXBvcnQgYW55IGlzc3VlIG9uIHRoZSBnaXRsYWIgcGFnZXMgb2YgdGhlIHByb2plY3QgOlxuaHR0cHM6Ly9mcmFtYWdpdC5vcmcvcmF6ZXIvYnViYmxlbWFpbC9pc3N1ZXNcbmh0dHBzOi8vZnJhbWFnaXQub3JnL3JhemVyL2J1YmJsZW1haWwtZ25vbWUtc2hlbGwvaXNzdWVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYnViYmxlbWFpbC1nbm9tZS1zaGVsbCIsCiAgIm5hbWUiOiAiQnViYmxlbWFpbCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAicmF6ZXJyYXpAZnJlZS5mciIsCiAgICAienVsdTk5QGdteC5uZXQiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJ1YmJsZW1haWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cDovL2J1YmJsZW1haWwuZnJlZS5mciIsCiAgInV1aWQiOiAiYnViYmxlbWFpbEByYXplci5mcmFtYWdpdC5vcmciLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
+    "46": {"version": "23", "sha256": "00sksbyzis2jv06iaq4gmzjni269x2ygzlm6kipad3wkkg6y7g5r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBmb3IgbmV3IGFuZCB1bnJlYWQgbWFpbCAoWWFob28sIEdtYWlsLCBNaWNyb3NvZnQsIE91dGxvb2ssIEFvbCwgSWNsb3VkLCBQcm90b25tYWlsLCBHbXguLi4pXG4gKiBNdWx0aXBsZSBhY2NvdW50cyBzdXBwb3J0XG4gKiBMb2NhbCBtYWlsIHN1cHBvcnQgZm9yIE1haWxkaXIgYW5kIE1ib3ggZm9ybWF0c1xuICogUmVtb3RlIG1haWwgc3VwcG9ydCBmb3IgUG9wMywgSW1hcCBhbmQgRXhjaGFuZ2UgcHJvdG9jb2xzXG4gKiBBdXRvbWF0aWMgaW1wb3J0cyBvZiBHbm9tZSBPbmxpbmUgQWNjb3VudHNcbiAqIFBsdWdpbiBzdXBwb3J0IHdpdGggZGVmYXVsdCBvbmVzIDogc3BhbSBmaWx0ZXIsIHNvdW5kIGFsZXJ0LCBsaWJub3RpZnksIHVzZXIgc2NyaXB0XG4gKiBBdmF0YXJzIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgb3IgZGVmYXVsdCBjb2xvcml6ZWQgb25lc1xuICogUmVwb3J0cyBmb3IgY29ubmVjdGlvbiBlcnJvcnMuXG5cbkJFIEFXQVJFIFRIQVQgVEhJUyBFWFRFTlNJT04gUkVRVUlSRVMgQlVCQkxFTUFJTCBTRVJWSUNFIElOU1RBTExBVElPTlxuQ2hlY2sgeW91ciBkaXN0cmlidXRpb24gcGFja2FnaW5nIHN5c3RlbSBmb3IgYXZhaWxhYmlsaXR5LlxuUGFja2FnZXMgZm9yIGRpc3RyaWJ1dGlvbnMgYW5kIHNvdXJjZSB0YXJiYWxscyBjYW4gYmUgZm91bmQgaGVyZSA6XG5odHRwOi8vYnViYmxlbWFpbC5mcmVlLmZyXG5cblBsZWFzZSByZXBvcnQgYW55IGlzc3VlIG9uIHRoZSBnaXRsYWIgcGFnZXMgb2YgdGhlIHByb2plY3QgOlxuaHR0cHM6Ly9mcmFtYWdpdC5vcmcvcmF6ZXIvYnViYmxlbWFpbC9pc3N1ZXNcbmh0dHBzOi8vZnJhbWFnaXQub3JnL3JhemVyL2J1YmJsZW1haWwtZ25vbWUtc2hlbGwvaXNzdWVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYnViYmxlbWFpbC1nbm9tZS1zaGVsbCIsCiAgIm5hbWUiOiAiQnViYmxlbWFpbCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAicmF6ZXJyYXpAZnJlZS5mciIsCiAgICAienVsdTk5QGdteC5uZXQiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJ1YmJsZW1haWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cDovL2J1YmJsZW1haWwuZnJlZS5mciIsCiAgInV1aWQiOiAiYnViYmxlbWFpbEByYXplci5mcmFtYWdpdC5vcmciLAogICJ2ZXJzaW9uIjogMjMKfQ=="}
   }}
 , {"uuid": "keypadTiling@abakkk.framagit.org", "name": "Keypad Tiling", "pname": "keypad-tiling", "description": "", "link": "https://extensions.gnome.org/extension/2473/keypad-tiling/", "shell_version_map": {
     "38": {"version": "4", "sha256": "1v0hxg96l482wngrszh0xabgj95q7rmyimd2rxnbkddd2gascnya", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiIsCiAgImdldHRleHQtZG9tYWluIjogImtleXBhZC10aWxpbmciLAogICJuYW1lIjogIktleXBhZCBUaWxpbmciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua2V5cGFkLXRpbGluZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJrZXlwYWRUaWxpbmdAYWJha2trLmZyYW1hZ2l0Lm9yZyIsCiAgInZlcnNpb24iOiA0Cn0="}
@@ -1909,19 +1993,21 @@
     "42": {"version": "33", "sha256": "1rbbnrywlwxfag6k393mnm54fxl8wk86h8fsqc7iaryiqxkdqj27", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgZG9jayBhbnl3aGVyZSBvbiB0aGUgZGVza3RvcFxuXG5QcmVzcyBDdHJsK0FsdCtrIHRvIHZpIG1vZGVcblByZXNzIGxvd2VyY2FzZSBhbHBoYWJldCwgb3BlbiBuZXcgd2luZG93IG9yIGFjdGl2ZSB0aGUgd2luZG93XG5QcmVzcyB1cHBlcmNhc2UgYWxwaGFiZXQsIGZvcmNlIHRvIG9wZW4gbmV3IHdpbmRvd1xuXG5Qb2ludCBvbiB0aGUgbWFpbiBidXR0b24sIGNoYW5nZSB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsXG5SaWdodCBjbGljayB0aGUgbWFpbiBidXR0b24sIHNob3cgc29tZSBzZWxlY3Rpb25zIiwKICAibmFtZSI6ICJGbG9hdGluZyBEb2NrIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tZmxvYXRpbmdEb2NrIiwKICAidXVpZCI6ICJmbG9hdGluZ0RvY2tAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzMKfQ=="},
     "43": {"version": "33", "sha256": "1rbbnrywlwxfag6k393mnm54fxl8wk86h8fsqc7iaryiqxkdqj27", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgZG9jayBhbnl3aGVyZSBvbiB0aGUgZGVza3RvcFxuXG5QcmVzcyBDdHJsK0FsdCtrIHRvIHZpIG1vZGVcblByZXNzIGxvd2VyY2FzZSBhbHBoYWJldCwgb3BlbiBuZXcgd2luZG93IG9yIGFjdGl2ZSB0aGUgd2luZG93XG5QcmVzcyB1cHBlcmNhc2UgYWxwaGFiZXQsIGZvcmNlIHRvIG9wZW4gbmV3IHdpbmRvd1xuXG5Qb2ludCBvbiB0aGUgbWFpbiBidXR0b24sIGNoYW5nZSB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsXG5SaWdodCBjbGljayB0aGUgbWFpbiBidXR0b24sIHNob3cgc29tZSBzZWxlY3Rpb25zIiwKICAibmFtZSI6ICJGbG9hdGluZyBEb2NrIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tZmxvYXRpbmdEb2NrIiwKICAidXVpZCI6ICJmbG9hdGluZ0RvY2tAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzMKfQ=="},
     "44": {"version": "33", "sha256": "1rbbnrywlwxfag6k393mnm54fxl8wk86h8fsqc7iaryiqxkdqj27", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgZG9jayBhbnl3aGVyZSBvbiB0aGUgZGVza3RvcFxuXG5QcmVzcyBDdHJsK0FsdCtrIHRvIHZpIG1vZGVcblByZXNzIGxvd2VyY2FzZSBhbHBoYWJldCwgb3BlbiBuZXcgd2luZG93IG9yIGFjdGl2ZSB0aGUgd2luZG93XG5QcmVzcyB1cHBlcmNhc2UgYWxwaGFiZXQsIGZvcmNlIHRvIG9wZW4gbmV3IHdpbmRvd1xuXG5Qb2ludCBvbiB0aGUgbWFpbiBidXR0b24sIGNoYW5nZSB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsXG5SaWdodCBjbGljayB0aGUgbWFpbiBidXR0b24sIHNob3cgc29tZSBzZWxlY3Rpb25zIiwKICAibmFtZSI6ICJGbG9hdGluZyBEb2NrIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1bnd4Zy9nbm9tZS1zaGVsbC1leHRlbnNpb24tZmxvYXRpbmdEb2NrIiwKICAidXVpZCI6ICJmbG9hdGluZ0RvY2tAc3VuLnd4Z0BnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMzMKfQ=="},
-    "45": {"version": "35", "sha256": "1lamf55kfx2v0xwnlw5f1mjavyl3qf6cjrb77q0bim05zcd00dzj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgZG9jayBhbnl3aGVyZSBvbiB0aGUgZGVza3RvcFxuXG5QcmVzcyBDdHJsK0FsdCtrIHRvIHZpIG1vZGVcblByZXNzIGxvd2VyY2FzZSBhbHBoYWJldCwgb3BlbiBuZXcgd2luZG93IG9yIGFjdGl2ZSB0aGUgd2luZG93XG5QcmVzcyB1cHBlcmNhc2UgYWxwaGFiZXQsIGZvcmNlIHRvIG9wZW4gbmV3IHdpbmRvd1xuXG5Qb2ludCBvbiB0aGUgbWFpbiBidXR0b24sIGNoYW5nZSB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsXG5SaWdodCBjbGljayB0aGUgbWFpbiBidXR0b24sIHNob3cgc29tZSBzZWxlY3Rpb25zIiwKICAiZXh0ZW5zaW9uLWlkIjogImZsb2F0aW5nLWRvY2siLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJGbG9hdGluZyBEb2NrIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbG9hdGluZ0RvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1mbG9hdGluZ0RvY2siLAogICJ1dWlkIjogImZsb2F0aW5nRG9ja0BzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAzNQp9"}
+    "45": {"version": "35", "sha256": "1lamf55kfx2v0xwnlw5f1mjavyl3qf6cjrb77q0bim05zcd00dzj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgZG9jayBhbnl3aGVyZSBvbiB0aGUgZGVza3RvcFxuXG5QcmVzcyBDdHJsK0FsdCtrIHRvIHZpIG1vZGVcblByZXNzIGxvd2VyY2FzZSBhbHBoYWJldCwgb3BlbiBuZXcgd2luZG93IG9yIGFjdGl2ZSB0aGUgd2luZG93XG5QcmVzcyB1cHBlcmNhc2UgYWxwaGFiZXQsIGZvcmNlIHRvIG9wZW4gbmV3IHdpbmRvd1xuXG5Qb2ludCBvbiB0aGUgbWFpbiBidXR0b24sIGNoYW5nZSB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsXG5SaWdodCBjbGljayB0aGUgbWFpbiBidXR0b24sIHNob3cgc29tZSBzZWxlY3Rpb25zIiwKICAiZXh0ZW5zaW9uLWlkIjogImZsb2F0aW5nLWRvY2siLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJGbG9hdGluZyBEb2NrIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbG9hdGluZ0RvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1mbG9hdGluZ0RvY2siLAogICJ1dWlkIjogImZsb2F0aW5nRG9ja0BzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAzNQp9"},
+    "46": {"version": "36", "sha256": "18dwf6k6i742iq0mnh0in3jxl6ws29ik2v3wr93mk8p5vkcd9r4a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgZG9jayBhbnl3aGVyZSBvbiB0aGUgZGVza3RvcFxuXG5QcmVzcyBDdHJsK0FsdCtrIHRvIHZpIG1vZGVcblByZXNzIGxvd2VyY2FzZSBhbHBoYWJldCwgb3BlbiBuZXcgd2luZG93IG9yIGFjdGl2ZSB0aGUgd2luZG93XG5QcmVzcyB1cHBlcmNhc2UgYWxwaGFiZXQsIGZvcmNlIHRvIG9wZW4gbmV3IHdpbmRvd1xuXG5Qb2ludCBvbiB0aGUgbWFpbiBidXR0b24sIGNoYW5nZSB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsXG5SaWdodCBjbGljayB0aGUgbWFpbiBidXR0b24sIHNob3cgc29tZSBzZWxlY3Rpb25zIiwKICAiZXh0ZW5zaW9uLWlkIjogImZsb2F0aW5nLWRvY2siLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJGbG9hdGluZyBEb2NrIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbG9hdGluZ0RvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3Vud3hnL2dub21lLXNoZWxsLWV4dGVuc2lvbi1mbG9hdGluZ0RvY2siLAogICJ1dWlkIjogImZsb2F0aW5nRG9ja0BzdW4ud3hnQGdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAzNgp9"}
   }}
 , {"uuid": "maxi@darkretailer.github.com", "name": "Maxi", "pname": "maxi", "description": "Maximize your windows vertical and/or horizontal (based on https://github.com/aXe1/gnome-shell-extension-maximized-by-default)", "link": "https://extensions.gnome.org/extension/2554/maxi/", "shell_version_map": {
     "40": {"version": "5", "sha256": "121nd6ggr9id3yfsrkiza7rjq19638p156ym83i3j57ikz6r3ky5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1heGltaXplIHlvdXIgd2luZG93cyB2ZXJ0aWNhbCBhbmQvb3IgaG9yaXpvbnRhbCAoYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2FYZTEvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW1heGltaXplZC1ieS1kZWZhdWx0KSIsCiAgImV4dGVuc2lvbi1pZCI6ICJtYXhpIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiTWF4aSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5tYXhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RhcmtyZXRhaWxlci9nbm9tZS1zaGVsbC1leHRlbnNpb25fbWF4aSIsCiAgInV1aWQiOiAibWF4aUBkYXJrcmV0YWlsZXIuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="}
   }}
-, {"uuid": "gnordvpn-local@isopolito", "name": "gNordVPN-Local", "pname": "gnordvpn-local", "description": "The most complete NordVPN extension for gnome. It shows the NordVPN status in the top bar and provides the ability to configure certain aspects of the connection.\n\nThe extension is highly configurable in both how it operates and how it looks.", "link": "https://extensions.gnome.org/extension/2569/gnordvpn-local/", "shell_version_map": {
+, {"uuid": "gnordvpn-local@isopolito", "name": "gNordVPN-Local", "pname": "gnordvpn-local", "description": "A Gnome extension that shows the NordVPN status in the top bar and provides the ability to configure certain aspects of the connection.", "link": "https://extensions.gnome.org/extension/2569/gnordvpn-local/", "shell_version_map": {
     "38": {"version": "10", "sha256": "0xpw8n29y5j8vfb1fkxn8ph78m4bhi1k8q830g1zzpr3gmsabadi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzguMSIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiMy4zOC40IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSXNvcG9saXRvL2dOb3JkVlBOLUxvY2FsIiwKICAidXVpZCI6ICJnbm9yZHZwbi1sb2NhbEBpc29wb2xpdG8iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "40": {"version": "15", "sha256": "14prrydkkvyq6kmznapjq31abk55v04bxdp3cx30gsdi6bkbfqav", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Jc29wb2xpdG8vZ05vcmRWUE4tTG9jYWwiLAogICJ1dWlkIjogImdub3JkdnBuLWxvY2FsQGlzb3BvbGl0byIsCiAgInZlcnNpb24iOiAxNQp9"},
     "41": {"version": "15", "sha256": "14prrydkkvyq6kmznapjq31abk55v04bxdp3cx30gsdi6bkbfqav", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Jc29wb2xpdG8vZ05vcmRWUE4tTG9jYWwiLAogICJ1dWlkIjogImdub3JkdnBuLWxvY2FsQGlzb3BvbGl0byIsCiAgInZlcnNpb24iOiAxNQp9"},
     "42": {"version": "23", "sha256": "1h6mwfjaqv56mxbc3yjaw9d008wacly4qigz7532mjzirmgpiqds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Jc29wb2xpdG8vZ05vcmRWUE4tTG9jYWwiLAogICJ1dWlkIjogImdub3JkdnBuLWxvY2FsQGlzb3BvbGl0byIsCiAgInZlcnNpb24iOiAyMwp9"},
     "43": {"version": "23", "sha256": "1h6mwfjaqv56mxbc3yjaw9d008wacly4qigz7532mjzirmgpiqds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Jc29wb2xpdG8vZ05vcmRWUE4tTG9jYWwiLAogICJ1dWlkIjogImdub3JkdnBuLWxvY2FsQGlzb3BvbGl0byIsCiAgInZlcnNpb24iOiAyMwp9"},
     "44": {"version": "23", "sha256": "1h6mwfjaqv56mxbc3yjaw9d008wacly4qigz7532mjzirmgpiqds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Jc29wb2xpdG8vZ05vcmRWUE4tTG9jYWwiLAogICJ1dWlkIjogImdub3JkdnBuLWxvY2FsQGlzb3BvbGl0byIsCiAgInZlcnNpb24iOiAyMwp9"},
-    "45": {"version": "25", "sha256": "1djsf9hg2wpq3b6jyiqwr83bk8rx3nkarc512skl204wfib49gvj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSXNvcG9saXRvL2dOb3JkVlBOLUxvY2FsIiwKICAidXVpZCI6ICJnbm9yZHZwbi1sb2NhbEBpc29wb2xpdG8iLAogICJ2ZXJzaW9uIjogMjUKfQ=="}
+    "45": {"version": "26", "sha256": "1jaksr9ysszwvnqhz7sbsxjkkhmnbgpp7rrdshhqnns9xx251dpn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSXNvcG9saXRvL2dOb3JkVlBOLUxvY2FsIiwKICAidXVpZCI6ICJnbm9yZHZwbi1sb2NhbEBpc29wb2xpdG8iLAogICJ2ZXJzaW9uIjogMjYKfQ=="},
+    "46": {"version": "27", "sha256": "08g8wjsgr1q1gzigac6xdmzqp7iykqk7cw2gxgbwc07m8dn24665", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2hvd3MgdGhlIE5vcmRWUE4gc3RhdHVzIGluIHRoZSB0b3AgYmFyIGFuZCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBjb25uZWN0aW9uLiIsCiAgIm5hbWUiOiAiZ05vcmRWUE4tTG9jYWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSXNvcG9saXRvL2dOb3JkVlBOLUxvY2FsIiwKICAidXVpZCI6ICJnbm9yZHZwbi1sb2NhbEBpc29wb2xpdG8iLAogICJ2ZXJzaW9uIjogMjcKfQ=="}
   }}
 , {"uuid": "fully-transparent-top-bar@aunetx", "name": "Smart transparent topbar", "pname": "fully-transparent-top-bar", "description": "Permits to change topbar's look and feel when free-floating.\n\nIf you have issues or recommandations, you can tell me on github so I can see them!", "link": "https://extensions.gnome.org/extension/2588/fully-transparent-top-bar/", "shell_version_map": {
     "38": {"version": "11", "sha256": "1mksqaxw7jzzdghzii1bhhkbsccxb23qa69f3x6hg32ig9qi762x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlBlcm1pdHMgdG8gY2hhbmdlIHRvcGJhcidzIGxvb2sgYW5kIGZlZWwgd2hlbiBmcmVlLWZsb2F0aW5nLlxuXG5JZiB5b3UgaGF2ZSBpc3N1ZXMgb3IgcmVjb21tYW5kYXRpb25zLCB5b3UgY2FuIHRlbGwgbWUgb24gZ2l0aHViIHNvIEkgY2FuIHNlZSB0aGVtISIsCiAgIm5hbWUiOiAiU21hcnQgdHJhbnNwYXJlbnQgdG9wYmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXVuZXR4L2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC10b3AtYmFyIiwKICAidXVpZCI6ICJmdWxseS10cmFuc3BhcmVudC10b3AtYmFyQGF1bmV0eCIsCiAgInZlcnNpb24iOiAxMQp9"}
@@ -1946,14 +2032,15 @@
 , {"uuid": "nbfcindicator@mgokcaykdev.gmail.com", "name": "Nbfc Indicator", "pname": "nbfc-indicator", "description": "Notebook Fan Control Indicator for Gnome Shell", "link": "https://extensions.gnome.org/extension/2624/nbfc-indicator/", "shell_version_map": {
     "40": {"version": "7", "sha256": "0hp7giwdcsk8p442q0x9214dv59ziyjswli6mccyb8v814k3p8ic", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5vdGVib29rIEZhbiBDb250cm9sIEluZGljYXRvciBmb3IgR25vbWUgU2hlbGwiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJuYmZjaW5kaWNhdG9yIiwKICAibmFtZSI6ICJOYmZjIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uYmZjaW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01Hb2tjYXlLL2dub21lLXNoZWxsLWV4dGVuc2lvbnMtbmJmY2luZGljYXRvciIsCiAgInV1aWQiOiAibmJmY2luZGljYXRvckBtZ29rY2F5a2Rldi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
-, {"uuid": "user-id-in-top-panel@fthx", "name": "User id in top panel", "pname": "user-id-in-top-panel", "description": "Add ( user name :: user id @ host ) in top panel.", "link": "https://extensions.gnome.org/extension/2633/user-id-in-top-panel/", "shell_version_map": {
+, {"uuid": "user-id-in-top-panel@fthx", "name": "User id in top panel", "pname": "user-id-in-top-panel", "description": "Add ( user name :: user id @ host ) in top panel. Click to access users panel in control center.", "link": "https://extensions.gnome.org/extension/2633/user-id-in-top-panel/", "shell_version_map": {
     "38": {"version": "6", "sha256": "16s1782mzb5ckshsy86ac9xj5xfk15hwzvzk4cfiimphfvkkw8x4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4iLAogICJuYW1lIjogIlVzZXIgaWQgaW4gdG9wIHBhbmVsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJmdGh4IgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJ1c2VyLWlkLWluLXRvcC1wYW5lbEBmdGh4IiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "40": {"version": "8", "sha256": "1qzjh4gf6gry6xy6759bha3s3rsnfmizw32isap4j0rdsyl77j90", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4iLAogICJuYW1lIjogIlVzZXIgaWQgaW4gdG9wIHBhbmVsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJmdGh4IgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidXNlci1pZC1pbi10b3AtcGFuZWxAZnRoeCIsCiAgInZlcnNpb24iOiA4Cn0="},
     "41": {"version": "8", "sha256": "1qzjh4gf6gry6xy6759bha3s3rsnfmizw32isap4j0rdsyl77j90", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4iLAogICJuYW1lIjogIlVzZXIgaWQgaW4gdG9wIHBhbmVsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJmdGh4IgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidXNlci1pZC1pbi10b3AtcGFuZWxAZnRoeCIsCiAgInZlcnNpb24iOiA4Cn0="},
     "42": {"version": "8", "sha256": "1qzjh4gf6gry6xy6759bha3s3rsnfmizw32isap4j0rdsyl77j90", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4iLAogICJuYW1lIjogIlVzZXIgaWQgaW4gdG9wIHBhbmVsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJmdGh4IgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidXNlci1pZC1pbi10b3AtcGFuZWxAZnRoeCIsCiAgInZlcnNpb24iOiA4Cn0="},
     "43": {"version": "10", "sha256": "0w3xh2bdyc2x2scj70qvjpj39hjhsayfsy8065dp0qmlhfi7z9kz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4iLAogICJuYW1lIjogIlVzZXIgaWQgaW4gdG9wIHBhbmVsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJmdGh4IgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInVzZXItaWQtaW4tdG9wLXBhbmVsQGZ0aHgiLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "44": {"version": "10", "sha256": "0w3xh2bdyc2x2scj70qvjpj39hjhsayfsy8065dp0qmlhfi7z9kz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4iLAogICJuYW1lIjogIlVzZXIgaWQgaW4gdG9wIHBhbmVsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJmdGh4IgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInVzZXItaWQtaW4tdG9wLXBhbmVsQGZ0aHgiLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
-    "45": {"version": "12", "sha256": "11dyiygfzbqgpc5vgv7ai7hxjdzb9a64lwmrganl4dj2sr629r7p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4iLAogICJuYW1lIjogIlVzZXIgaWQgaW4gdG9wIHBhbmVsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJmdGh4IgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidXNlci1pZC1pbi10b3AtcGFuZWxAZnRoeCIsCiAgInZlcnNpb24iOiAxMgp9"}
+    "45": {"version": "13", "sha256": "102yl3xq7vzfp81dm5awa5qqh5ddzaw419q50dy7wfl567p8fya0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4gQ2xpY2sgdG8gYWNjZXNzIHVzZXJzIHBhbmVsIGluIGNvbnRyb2wgY2VudGVyLiIsCiAgIm5hbWUiOiAiVXNlciBpZCBpbiB0b3AgcGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImZ0aHgiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidXNlci1pZC1pbi10b3AtcGFuZWxAZnRoeCIsCiAgInZlcnNpb24iOiAxMwp9"},
+    "46": {"version": "13", "sha256": "102yl3xq7vzfp81dm5awa5qqh5ddzaw419q50dy7wfl567p8fya0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCAoIHVzZXIgbmFtZSA6OiB1c2VyIGlkIEAgaG9zdCApIGluIHRvcCBwYW5lbC4gQ2xpY2sgdG8gYWNjZXNzIHVzZXJzIHBhbmVsIGluIGNvbnRyb2wgY2VudGVyLiIsCiAgIm5hbWUiOiAiVXNlciBpZCBpbiB0b3AgcGFuZWwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImZ0aHgiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidXNlci1pZC1pbi10b3AtcGFuZWxAZnRoeCIsCiAgInZlcnNpb24iOiAxMwp9"}
   }}
 , {"uuid": "hide-minimized@danigm.net", "name": "Hide minimized", "pname": "hide-minimized", "description": "Hide minimized in overview", "link": "https://extensions.gnome.org/extension/2639/hide-minimized/", "shell_version_map": {
     "38": {"version": "8", "sha256": "1r39a9px28kwz1ndxrbgn1d5nyp8bcyl37ihg6p3y4fnzk5racab", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgbWluaW1pemVkIGluIG92ZXJ2aWV3IiwKICAibmFtZSI6ICJIaWRlIG1pbmltaXplZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL2hpZGUtbWluaW1pemVkIiwKICAidXVpZCI6ICJoaWRlLW1pbmltaXplZEBkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
@@ -1962,7 +2049,8 @@
     "42": {"version": "8", "sha256": "1r39a9px28kwz1ndxrbgn1d5nyp8bcyl37ihg6p3y4fnzk5racab", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgbWluaW1pemVkIGluIG92ZXJ2aWV3IiwKICAibmFtZSI6ICJIaWRlIG1pbmltaXplZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL2hpZGUtbWluaW1pemVkIiwKICAidXVpZCI6ICJoaWRlLW1pbmltaXplZEBkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "43": {"version": "8", "sha256": "1r39a9px28kwz1ndxrbgn1d5nyp8bcyl37ihg6p3y4fnzk5racab", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgbWluaW1pemVkIGluIG92ZXJ2aWV3IiwKICAibmFtZSI6ICJIaWRlIG1pbmltaXplZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL2hpZGUtbWluaW1pemVkIiwKICAidXVpZCI6ICJoaWRlLW1pbmltaXplZEBkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "44": {"version": "8", "sha256": "1r39a9px28kwz1ndxrbgn1d5nyp8bcyl37ihg6p3y4fnzk5racab", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgbWluaW1pemVkIGluIG92ZXJ2aWV3IiwKICAibmFtZSI6ICJIaWRlIG1pbmltaXplZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL2hpZGUtbWluaW1pemVkIiwKICAidXVpZCI6ICJoaWRlLW1pbmltaXplZEBkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "9", "sha256": "0b31flxz0sb36idji616b0dzzvvrr233gsba7lln77mi1c7a3vgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgbWluaW1pemVkIGluIG92ZXJ2aWV3IiwKICAibmFtZSI6ICJIaWRlIG1pbmltaXplZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZ20vaGlkZS1taW5pbWl6ZWQiLAogICJ1dWlkIjogImhpZGUtbWluaW1pemVkQGRhbmlnbS5uZXQiLAogICJ2ZXJzaW9uIjogOQp9"}
+    "45": {"version": "10", "sha256": "1hzxdim8w2shkyrivm4ws8sd63nci1j1fr8ykw2na9g0wkjjznnl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgbWluaW1pemVkIGluIG92ZXJ2aWV3IiwKICAibmFtZSI6ICJIaWRlIG1pbmltaXplZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL2hpZGUtbWluaW1pemVkIiwKICAidXVpZCI6ICJoaWRlLW1pbmltaXplZEBkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDEwCn0="},
+    "46": {"version": "10", "sha256": "1hzxdim8w2shkyrivm4ws8sd63nci1j1fr8ykw2na9g0wkjjznnl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgbWluaW1pemVkIGluIG92ZXJ2aWV3IiwKICAibmFtZSI6ICJIaWRlIG1pbmltaXplZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGFuaWdtL2hpZGUtbWluaW1pemVkIiwKICAidXVpZCI6ICJoaWRlLW1pbmltaXplZEBkYW5pZ20ubmV0IiwKICAidmVyc2lvbiI6IDEwCn0="}
   }}
 , {"uuid": "display-brightness-ddcutil@themightydeity.github.com", "name": "Brightness control using ddcutil", "pname": "brightness-control-using-ddcutil", "description": "Brightness control for all the monitors detected by ddcutil\nThis tool uses ddcutil as backend for communication with your display.\n\nRead setup instructions from: https://github.com/daitj/gnome-display-brightness-ddcutil/blob/master/README.md", "link": "https://extensions.gnome.org/extension/2645/brightness-control-using-ddcutil/", "shell_version_map": {
     "40": {"version": "30", "sha256": "121kw0impmq3vpaikngjxr7jm98dk54c0cfxkr6zzcbvz3ni0rrl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaWdodG5lc3MgY29udHJvbCBmb3IgYWxsIHRoZSBtb25pdG9ycyBkZXRlY3RlZCBieSBkZGN1dGlsXG5UaGlzIHRvb2wgdXNlcyBkZGN1dGlsIGFzIGJhY2tlbmQgZm9yIGNvbW11bmljYXRpb24gd2l0aCB5b3VyIGRpc3BsYXkuXG5cblJlYWQgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9kYWl0ai9nbm9tZS1kaXNwbGF5LWJyaWdodG5lc3MtZGRjdXRpbC9ibG9iL21hc3Rlci9SRUFETUUubWQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJkaXNwbGF5LWJyaWdodG5lc3MtZGRjdXRpbCIsCiAgIm5hbWUiOiAiQnJpZ2h0bmVzcyBjb250cm9sIHVzaW5nIGRkY3V0aWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGlzcGxheS1icmlnaHRuZXNzLWRkY3V0aWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kYWl0ai9nbm9tZS1kaXNwbGF5LWJyaWdodG5lc3MtZGRjdXRpbCIsCiAgInV1aWQiOiAiZGlzcGxheS1icmlnaHRuZXNzLWRkY3V0aWxAdGhlbWlnaHR5ZGVpdHkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzMAp9"},
@@ -2040,7 +2128,8 @@
     "41": {"version": "36", "sha256": "0f819v8n1rvvwrir7qf8fp0bvn5zk899lpc4dr8f9jk9g8w57q7d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrZXIgb2YgSUJ1cyBmb3Igb3JpZW50YXRpb24sIHRoZW1lLCBmb250LCBpbnB1dCBtb2RlIGFuZCBjbGlwYm9hcmQgaGlzdG9yeVxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24taWJ1cy10d2Vha2VyIiwKICAibmFtZSI6ICJJQnVzIFR3ZWFrZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWJ1cy10d2Vha2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvaWJ1cy10d2Vha2VyIiwKICAidXVpZCI6ICJpYnVzLXR3ZWFrZXJAdHViZXJyeS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM2Cn0="},
     "42": {"version": "38", "sha256": "0crdw1z2yan0mbc36v8vw0iinqbv4lyqzsvdyhz8zsi9q4asrlg6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrZXIgb2YgSUJ1cyBmb3Igb3JpZW50YXRpb24sIHRoZW1lLCBmb250LCBpbnB1dCBtb2RlIGFuZCBjbGlwYm9hcmQgaGlzdG9yeVxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24taWJ1cy10d2Vha2VyIiwKICAibmFtZSI6ICJJQnVzIFR3ZWFrZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWJ1cy10d2Vha2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvaWJ1cy10d2Vha2VyIiwKICAidXVpZCI6ICJpYnVzLXR3ZWFrZXJAdHViZXJyeS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM4Cn0="},
     "43": {"version": "40", "sha256": "0b807s4bfxmxf6131749gi3nil42dabmz2ndwwsblcpbj0cas7mv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrZXIgb2YgSUJ1cyBmb3Igb3JpZW50YXRpb24sIHRoZW1lLCBmb250LCBpbnB1dCBtb2RlIGFuZCBjbGlwYm9hcmQgaGlzdG9yeVxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24taWJ1cy10d2Vha2VyIiwKICAibmFtZSI6ICJJQnVzIFR3ZWFrZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWJ1cy10d2Vha2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvaWJ1cy10d2Vha2VyIiwKICAidXVpZCI6ICJpYnVzLXR3ZWFrZXJAdHViZXJyeS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQwCn0="},
-    "45": {"version": "44", "sha256": "1fk1mbsms1y4h08vrgaq4iqi995q849891n15j9a34xd31a3qcmk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrZXIgb2YgSUJ1cyBmb3Igb3JpZW50YXRpb24sIHRoZW1lLCBmb250LCBpbnB1dCBtb2RlIGFuZCBjbGlwYm9hcmQgaGlzdG9yeVxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24taWJ1cy10d2Vha2VyIiwKICAibmFtZSI6ICJJQnVzIFR3ZWFrZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWJ1cy10d2Vha2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvaWJ1cy10d2Vha2VyIiwKICAidXVpZCI6ICJpYnVzLXR3ZWFrZXJAdHViZXJyeS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQ0Cn0="}
+    "45": {"version": "44", "sha256": "1fk1mbsms1y4h08vrgaq4iqi995q849891n15j9a34xd31a3qcmk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrZXIgb2YgSUJ1cyBmb3Igb3JpZW50YXRpb24sIHRoZW1lLCBmb250LCBpbnB1dCBtb2RlIGFuZCBjbGlwYm9hcmQgaGlzdG9yeVxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24taWJ1cy10d2Vha2VyIiwKICAibmFtZSI6ICJJQnVzIFR3ZWFrZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWJ1cy10d2Vha2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvaWJ1cy10d2Vha2VyIiwKICAidXVpZCI6ICJpYnVzLXR3ZWFrZXJAdHViZXJyeS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQ0Cn0="},
+    "46": {"version": "45", "sha256": "1kjfn9ar07ir1nfqziwwkqid7fwrdhjrzbz282b09gq586s8bbhi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrZXIgb2YgSUJ1cyBmb3Igb3JpZW50YXRpb24sIHRoZW1lLCBmb250LCBpbnB1dCBtb2RlIGFuZCBjbGlwYm9hcmQgaGlzdG9yeVxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24taWJ1cy10d2Vha2VyIiwKICAibmFtZSI6ICJJQnVzIFR3ZWFrZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWJ1cy10d2Vha2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvaWJ1cy10d2Vha2VyIiwKICAidXVpZCI6ICJpYnVzLXR3ZWFrZXJAdHViZXJyeS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQ1Cn0="}
   }}
 , {"uuid": "generic-monitor@gnome-shell-extensions", "name": "Generic Monitor", "pname": "generic-monitor", "description": "Display text & icon on systray using DBUS", "link": "https://extensions.gnome.org/extension/2826/generic-monitor/", "shell_version_map": {
     "38": {"version": "10", "sha256": "0kvniacvxv57f6jfcrlrd7ggwj4h0bfs60r59p150m6nldm9zf23", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGV4dCAmIGljb24gb24gc3lzdHJheSB1c2luZyBEQlVTIiwKICAibmFtZSI6ICJHZW5lcmljIE1vbml0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHA6Ly9pbmRlZmVyby5zb3V0YWRlLmZyL3AvZ2VuZXJpY21vbml0b3IiLAogICJ1dWlkIjogImdlbmVyaWMtbW9uaXRvckBnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidmVyc2lvbiI6IDEwCn0="},
@@ -2057,7 +2146,8 @@
     "42": {"version": "6", "sha256": "10mk7fbm3bp9rz8xqmwkrc8ww587ia8r4v8zdcsp0ps0qwbdra1s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUga2V5Ym9hcmQgbGF5b3V0IGluZGljYXRvciBpbiBzdGF0dXMgYmFyIiwKICAibmFtZSI6ICJIaWRlIEtleWJvYXJkIExheW91dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWkvaGlkZS1rZXlib2FyZC1sYXlvdXQiLAogICJ1dWlkIjogImhpZGUta2V5Ym9hcmQtbGF5b3V0QHNpdG5pay5ydSIsCiAgInZlcnNpb24iOiA2Cn0="},
     "43": {"version": "6", "sha256": "10mk7fbm3bp9rz8xqmwkrc8ww587ia8r4v8zdcsp0ps0qwbdra1s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUga2V5Ym9hcmQgbGF5b3V0IGluZGljYXRvciBpbiBzdGF0dXMgYmFyIiwKICAibmFtZSI6ICJIaWRlIEtleWJvYXJkIExheW91dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWkvaGlkZS1rZXlib2FyZC1sYXlvdXQiLAogICJ1dWlkIjogImhpZGUta2V5Ym9hcmQtbGF5b3V0QHNpdG5pay5ydSIsCiAgInZlcnNpb24iOiA2Cn0="},
     "44": {"version": "6", "sha256": "10mk7fbm3bp9rz8xqmwkrc8ww587ia8r4v8zdcsp0ps0qwbdra1s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUga2V5Ym9hcmQgbGF5b3V0IGluZGljYXRvciBpbiBzdGF0dXMgYmFyIiwKICAibmFtZSI6ICJIaWRlIEtleWJvYXJkIExheW91dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWkvaGlkZS1rZXlib2FyZC1sYXlvdXQiLAogICJ1dWlkIjogImhpZGUta2V5Ym9hcmQtbGF5b3V0QHNpdG5pay5ydSIsCiAgInZlcnNpb24iOiA2Cn0="},
-    "45": {"version": "7", "sha256": "1x2z0aaa3d8ggc5b9n1xpx82ipi8m7j7qdpxxg7kvpfvgaw9ladn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUga2V5Ym9hcmQgbGF5b3V0IGluZGljYXRvciBpbiBzdGF0dXMgYmFyIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJhaSIKICB9LAogICJuYW1lIjogIkhpZGUgS2V5Ym9hcmQgTGF5b3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FpL2hpZGUta2V5Ym9hcmQtbGF5b3V0IiwKICAidXVpZCI6ICJoaWRlLWtleWJvYXJkLWxheW91dEBzaXRuaWsucnUiLAogICJ2ZXJzaW9uIjogNwp9"}
+    "45": {"version": "8", "sha256": "05vm7a94nysn8si3pgdcmn5r8242q6ikw1hkc4bwcpmf2lifbfbz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUga2V5Ym9hcmQgbGF5b3V0IGluZGljYXRvciBpbiBzdGF0dXMgYmFyIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJhaSIKICB9LAogICJuYW1lIjogIkhpZGUgS2V5Ym9hcmQgTGF5b3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9haS9oaWRlLWtleWJvYXJkLWxheW91dCIsCiAgInV1aWQiOiAiaGlkZS1rZXlib2FyZC1sYXlvdXRAc2l0bmlrLnJ1IiwKICAidmVyc2lvbiI6IDgKfQ=="},
+    "46": {"version": "8", "sha256": "05vm7a94nysn8si3pgdcmn5r8242q6ikw1hkc4bwcpmf2lifbfbz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUga2V5Ym9hcmQgbGF5b3V0IGluZGljYXRvciBpbiBzdGF0dXMgYmFyIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJhaSIKICB9LAogICJuYW1lIjogIkhpZGUgS2V5Ym9hcmQgTGF5b3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9haS9oaWRlLWtleWJvYXJkLWxheW91dCIsCiAgInV1aWQiOiAiaGlkZS1rZXlib2FyZC1sYXlvdXRAc2l0bmlrLnJ1IiwKICAidmVyc2lvbiI6IDgKfQ=="}
   }}
 , {"uuid": "poweroff-button-on-topbar@darknico.com", "name": "Poweroff Button on Topbar", "pname": "poweroff-button-on-topbar", "description": "Add poweroff button on topbar", "link": "https://extensions.gnome.org/extension/2851/poweroff-button-on-topbar/", "shell_version_map": {
     "38": {"version": "5", "sha256": "0wl9qhrrx1j1qwz7iczpn1zb2kzy7q895a1ar8178a58lddxhwzy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwb3dlcm9mZiBidXR0b24gb24gdG9wYmFyIiwKICAibmFtZSI6ICJQb3dlcm9mZiBCdXR0b24gb24gVG9wYmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRGFya25pY28vR05PTUUtU2hlbGwtRXh0ZW5zaW9ucyIsCiAgInV1aWQiOiAicG93ZXJvZmYtYnV0dG9uLW9uLXRvcGJhckBkYXJrbmljby5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
@@ -2095,7 +2185,8 @@
     "42": {"version": "25", "sha256": "0y3sks6idn9v2r54rb4i69gliip0c9na5q5kwl9vfc7irncgmqjr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYXkgSWNvbnMgUmVsb2FkZWQgaXMgYSBHTk9NRSBTaGVsbCBleHRlbnNpb24gd2hpY2ggYnJpbmcgYmFjayBUcmF5IEljb25zIHRvIHRvcCBwYW5lbCwgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLiIsCiAgIm5hbWUiOiAiVHJheSBJY29uczogUmVsb2FkZWQiLAogICJvcGVuLWJsYWNrbGlzdCI6IFsKICAgICJFbGVjdHJvbiIsCiAgICAiWWFkIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmF5SWNvbnNSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9UcmF5LUljb25zLVJlbG9hZGVkIiwKICAidXVpZCI6ICJ0cmF5SWNvbnNSZWxvYWRlZEBzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiAyNQp9"},
     "43": {"version": "26", "sha256": "1yx9w70ql13f0gnjbihkscyhi8mgapbl6p0hy0aqmnirhwn3fc31", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYXkgSWNvbnMgUmVsb2FkZWQgaXMgYSBHTk9NRSBTaGVsbCBleHRlbnNpb24gd2hpY2ggYnJpbmcgYmFjayBUcmF5IEljb25zIHRvIHRvcCBwYW5lbCwgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLiIsCiAgIm5hbWUiOiAiVHJheSBJY29uczogUmVsb2FkZWQiLAogICJvcGVuLWJsYWNrbGlzdCI6IFsKICAgICJFbGVjdHJvbiIsCiAgICAiWWFkIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmF5SWNvbnNSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9UcmF5LUljb25zLVJlbG9hZGVkIiwKICAidXVpZCI6ICJ0cmF5SWNvbnNSZWxvYWRlZEBzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiAyNgp9"},
     "44": {"version": "27", "sha256": "1jmbprslj0yk1hpdwlxs8qgg2r9djyp7wgz30jv0nylkg6y1api3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYXkgSWNvbnMgUmVsb2FkZWQgaXMgYSBHTk9NRSBTaGVsbCBleHRlbnNpb24gd2hpY2ggYnJpbmcgYmFjayBUcmF5IEljb25zIHRvIHRvcCBwYW5lbCwgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLiIsCiAgIm5hbWUiOiAiVHJheSBJY29uczogUmVsb2FkZWQiLAogICJvcGVuLWJsYWNrbGlzdCI6IFsKICAgICJFbGVjdHJvbiIsCiAgICAiWWFkIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmF5SWNvbnNSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9UcmF5LUljb25zLVJlbG9hZGVkIiwKICAidXVpZCI6ICJ0cmF5SWNvbnNSZWxvYWRlZEBzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiAyNwp9"},
-    "45": {"version": "29", "sha256": "1p87lk0rsrj8vr2kdckshcq1y72az2dyzckgy7gj83a2v2mhfghd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYXkgSWNvbnMgUmVsb2FkZWQgaXMgYSBHTk9NRSBTaGVsbCBleHRlbnNpb24gd2hpY2ggYnJpbmcgYmFjayBUcmF5IEljb25zIHRvIHRvcCBwYW5lbCwgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLiIsCiAgIm5hbWUiOiAiVHJheSBJY29uczogUmVsb2FkZWQiLAogICJvcGVuLWJsYWNrbGlzdCI6IFsKICAgICJFbGVjdHJvbiIsCiAgICAiWWFkIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmF5SWNvbnNSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9UcmF5LUljb25zLVJlbG9hZGVkIiwKICAidXVpZCI6ICJ0cmF5SWNvbnNSZWxvYWRlZEBzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiAyOQp9"}
+    "45": {"version": "29", "sha256": "1p87lk0rsrj8vr2kdckshcq1y72az2dyzckgy7gj83a2v2mhfghd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYXkgSWNvbnMgUmVsb2FkZWQgaXMgYSBHTk9NRSBTaGVsbCBleHRlbnNpb24gd2hpY2ggYnJpbmcgYmFjayBUcmF5IEljb25zIHRvIHRvcCBwYW5lbCwgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLiIsCiAgIm5hbWUiOiAiVHJheSBJY29uczogUmVsb2FkZWQiLAogICJvcGVuLWJsYWNrbGlzdCI6IFsKICAgICJFbGVjdHJvbiIsCiAgICAiWWFkIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmF5SWNvbnNSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9UcmF5LUljb25zLVJlbG9hZGVkIiwKICAidXVpZCI6ICJ0cmF5SWNvbnNSZWxvYWRlZEBzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiAyOQp9"},
+    "46": {"version": "30", "sha256": "0pjiyzn40zf6l0288jh8nh9nlz9v8919635mgjzf6l37m8mc4rwq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYXkgSWNvbnMgUmVsb2FkZWQgaXMgYSBHTk9NRSBTaGVsbCBleHRlbnNpb24gd2hpY2ggYnJpbmcgYmFjayBUcmF5IEljb25zIHRvIHRvcCBwYW5lbCwgd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzLiIsCiAgIm5hbWUiOiAiVHJheSBJY29uczogUmVsb2FkZWQiLAogICJvcGVuLWJsYWNrbGlzdCI6IFsKICAgICJFbGVjdHJvbiIsCiAgICAiWWFkIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cmF5SWNvbnNSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9UcmF5LUljb25zLVJlbG9hZGVkIiwKICAidXVpZCI6ICJ0cmF5SWNvbnNSZWxvYWRlZEBzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiAzMAp9"}
   }}
 , {"uuid": "messagingmenu@lauinger-clan.de", "name": "Messaging Menu", "pname": "messaging-menu", "description": "A Messaging Menu for the Gnome Shell. All Email and Chat Applications in one Place.", "link": "https://extensions.gnome.org/extension/2896/messaging-menu/", "shell_version_map": {
     "38": {"version": "4", "sha256": "1xa0hyvs2aw1z7kg5gcsgh2pjn7b13zhps98j4xpwfiv6zm0sa73", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTWVzc2FnaW5nIE1lbnUgZm9yIHRoZSBHbm9tZSBTaGVsbC4gQWxsIEVtYWlsIGFuZCBDaGF0IEFwcGxpY2F0aW9ucyBpbiBvbmUgUGxhY2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiTWVzc2FnaW5nIE1lbnUiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic2luaXN0ZXJzdHVmIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1lc3NhZ2luZ21lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvbWVzc2FnaW5nbWVudSIsCiAgInV1aWQiOiAibWVzc2FnaW5nbWVudUBsYXVpbmdlci1jbGFuLmRlIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -2104,7 +2195,8 @@
     "42": {"version": "27", "sha256": "1bssg2w71qinr2hhsyv0rpps7876y91azpqcl3dhdgipki4n7yvq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTWVzc2FnaW5nIE1lbnUgZm9yIHRoZSBHbm9tZSBTaGVsbC4gQWxsIEVtYWlsIGFuZCBDaGF0IEFwcGxpY2F0aW9ucyBpbiBvbmUgUGxhY2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWVzc2FnaW5nbWVudSIsCiAgIm5hbWUiOiAiTWVzc2FnaW5nIE1lbnUiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic2luaXN0ZXJzdHVmIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1lc3NhZ2luZ21lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NocmlzTGF1aW5nZXI3Ny9tZXNzYWdpbmdtZW51IiwKICAidXVpZCI6ICJtZXNzYWdpbmdtZW51QGxhdWluZ2VyLWNsYW4uZGUiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
     "43": {"version": "27", "sha256": "1bssg2w71qinr2hhsyv0rpps7876y91azpqcl3dhdgipki4n7yvq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTWVzc2FnaW5nIE1lbnUgZm9yIHRoZSBHbm9tZSBTaGVsbC4gQWxsIEVtYWlsIGFuZCBDaGF0IEFwcGxpY2F0aW9ucyBpbiBvbmUgUGxhY2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWVzc2FnaW5nbWVudSIsCiAgIm5hbWUiOiAiTWVzc2FnaW5nIE1lbnUiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic2luaXN0ZXJzdHVmIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1lc3NhZ2luZ21lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NocmlzTGF1aW5nZXI3Ny9tZXNzYWdpbmdtZW51IiwKICAidXVpZCI6ICJtZXNzYWdpbmdtZW51QGxhdWluZ2VyLWNsYW4uZGUiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
     "44": {"version": "27", "sha256": "1bssg2w71qinr2hhsyv0rpps7876y91azpqcl3dhdgipki4n7yvq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTWVzc2FnaW5nIE1lbnUgZm9yIHRoZSBHbm9tZSBTaGVsbC4gQWxsIEVtYWlsIGFuZCBDaGF0IEFwcGxpY2F0aW9ucyBpbiBvbmUgUGxhY2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWVzc2FnaW5nbWVudSIsCiAgIm5hbWUiOiAiTWVzc2FnaW5nIE1lbnUiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic2luaXN0ZXJzdHVmIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1lc3NhZ2luZ21lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NocmlzTGF1aW5nZXI3Ny9tZXNzYWdpbmdtZW51IiwKICAidXVpZCI6ICJtZXNzYWdpbmdtZW51QGxhdWluZ2VyLWNsYW4uZGUiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "45": {"version": "31", "sha256": "08vgzh2ph0i4xy57qyz233qdiiskhnr9y37x1s2dxkgg1ra8x8xf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTWVzc2FnaW5nIE1lbnUgZm9yIHRoZSBHbm9tZSBTaGVsbC4gQWxsIEVtYWlsIGFuZCBDaGF0IEFwcGxpY2F0aW9ucyBpbiBvbmUgUGxhY2UuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDaHJpc0xhdWluZ2VyNzciLAogICAgInBheXBhbCI6ICJDaHJpc0xhdWluZ2VyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm1lc3NhZ2luZ21lbnUiLAogICJuYW1lIjogIk1lc3NhZ2luZyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9yIjogInNpbmlzdGVyc3R1ZiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5tZXNzYWdpbmdtZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvbWVzc2FnaW5nbWVudSIsCiAgInV1aWQiOiAibWVzc2FnaW5nbWVudUBsYXVpbmdlci1jbGFuLmRlIiwKICAidmVyc2lvbiI6IDMxLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMCIKfQ=="}
+    "45": {"version": "33", "sha256": "05dx5x60cryyfffmpc1s4gcf5nqjf8r9sx9qrjlvsmr8gp878aa6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTWVzc2FnaW5nIE1lbnUgZm9yIHRoZSBHbm9tZSBTaGVsbC4gQWxsIEVtYWlsIGFuZCBDaGF0IEFwcGxpY2F0aW9ucyBpbiBvbmUgUGxhY2UuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDaHJpc0xhdWluZ2VyNzciLAogICAgInBheXBhbCI6ICJDaHJpc0xhdWluZ2VyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm1lc3NhZ2luZ21lbnUiLAogICJuYW1lIjogIk1lc3NhZ2luZyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9yIjogInNpbmlzdGVyc3R1ZiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5tZXNzYWdpbmdtZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW1lc3NhZ2luZ21lbnUiLAogICJ1dWlkIjogIm1lc3NhZ2luZ21lbnVAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAzMywKICAidmVyc2lvbi1uYW1lIjogIjQ2LjEiCn0="},
+    "46": {"version": "33", "sha256": "05dx5x60cryyfffmpc1s4gcf5nqjf8r9sx9qrjlvsmr8gp878aa6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTWVzc2FnaW5nIE1lbnUgZm9yIHRoZSBHbm9tZSBTaGVsbC4gQWxsIEVtYWlsIGFuZCBDaGF0IEFwcGxpY2F0aW9ucyBpbiBvbmUgUGxhY2UuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDaHJpc0xhdWluZ2VyNzciLAogICAgInBheXBhbCI6ICJDaHJpc0xhdWluZ2VyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm1lc3NhZ2luZ21lbnUiLAogICJuYW1lIjogIk1lc3NhZ2luZyBNZW51IiwKICAib3JpZ2luYWwtYXV0aG9yIjogInNpbmlzdGVyc3R1ZiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5tZXNzYWdpbmdtZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW1lc3NhZ2luZ21lbnUiLAogICJ1dWlkIjogIm1lc3NhZ2luZ21lbnVAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAzMywKICAidmVyc2lvbi1uYW1lIjogIjQ2LjEiCn0="}
   }}
 , {"uuid": "SettingsCenter@lauinger-clan.de", "name": "SettingsCenter", "pname": "settingscenter", "description": "Settings Center is a customizable drop-down menu for quickly launching frequently used apps in Gnome:Shell via the quicksettings. Originally created by XES.\n\nSettings shortcuts : gnome-tweak-tool, dconf-editor, gconf-editor, gnome-session-properties, gnome-shell-extension-prefs, seahorse and nvidia-settings. You can add your own\n\nOriginal source : http://svn.xesnet.fr/gnomeextensions", "link": "https://extensions.gnome.org/extension/2899/settingscenter/", "shell_version_map": {
     "38": {"version": "2", "sha256": "0sywdlmfgy4k5bkxmawcb7b8100g8wnpndmwvdzjq51xv5605gcs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldHRpbmdzIENlbnRlciBpcyBhIGN1c3RvbWl6YWJsZSBkcm9wLWRvd24gbWVudSBmb3IgcXVpY2tseSBsYXVuY2hpbmcgZnJlcXVlbnRseSB1c2VkIGFwcHMgaW4gR25vbWU6U2hlbGwgdmlhIHRoZSBxdWlja3NldHRpbmdzLiBPcmlnaW5hbGx5IGNyZWF0ZWQgYnkgWEVTLlxuXG5TZXR0aW5ncyBzaG9ydGN1dHMgOiBnbm9tZS10d2Vhay10b29sLCBkY29uZi1lZGl0b3IsIGdjb25mLWVkaXRvciwgZ25vbWUtc2Vzc2lvbi1wcm9wZXJ0aWVzLCBnbm9tZS1zaGVsbC1leHRlbnNpb24tcHJlZnMsIHNlYWhvcnNlIGFuZCBudmlkaWEtc2V0dGluZ3MuIFlvdSBjYW4gYWRkIHlvdXIgb3duXG5cbk9yaWdpbmFsIHNvdXJjZSA6IGh0dHA6Ly9zdm4ueGVzbmV0LmZyL2dub21lZXh0ZW5zaW9ucyIsCiAgImxvY2FsZSI6ICIvdXNyL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiU2V0dGluZ3NDZW50ZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiWGVzLCBsMzAwbHZsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjQiLAogICAgIjMuNiIsCiAgICAiMy41LjQiLAogICAgIjMuOCIsCiAgICAiMy4xMCIsCiAgICAiMy4xMiIsCiAgICAiMy4xNCIsCiAgICAiMy4xNiIsCiAgICAiMy4xOCIsCiAgICAiMy4yMCIsCiAgICAiMy4yMiIsCiAgICAiMy4yNCIsCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NocmlzTGF1aW5nZXI3Ny9YRVMtU2V0dGluZ3MtQ2VudGVyLUV4dGVuc2lvbiIsCiAgInV1aWQiOiAiU2V0dGluZ3NDZW50ZXJAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAyCn0="},
@@ -2113,7 +2205,8 @@
     "42": {"version": "11", "sha256": "17na0a5bm4qkh1lcch9frpmlxn44kg7d4lx96lmpx8v0zp4v0c2a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldHRpbmdzIENlbnRlciBpcyBhIGN1c3RvbWl6YWJsZSBkcm9wLWRvd24gbWVudSBmb3IgcXVpY2tseSBsYXVuY2hpbmcgZnJlcXVlbnRseSB1c2VkIGFwcHMgaW4gR25vbWU6U2hlbGwgdmlhIHRoZSBxdWlja3NldHRpbmdzLiBPcmlnaW5hbGx5IGNyZWF0ZWQgYnkgWEVTLlxuXG5TZXR0aW5ncyBzaG9ydGN1dHMgOiBnbm9tZS10d2Vhay10b29sLCBkY29uZi1lZGl0b3IsIGdjb25mLWVkaXRvciwgZ25vbWUtc2Vzc2lvbi1wcm9wZXJ0aWVzLCBnbm9tZS1zaGVsbC1leHRlbnNpb24tcHJlZnMsIHNlYWhvcnNlIGFuZCBudmlkaWEtc2V0dGluZ3MuIFlvdSBjYW4gYWRkIHlvdXIgb3duXG5cbk9yaWdpbmFsIHNvdXJjZSA6IGh0dHA6Ly9zdm4ueGVzbmV0LmZyL2dub21lZXh0ZW5zaW9ucyIsCiAgImxvY2FsZSI6ICIvdXNyL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiU2V0dGluZ3NDZW50ZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiWGVzLCBsMzAwbHZsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLlNldHRpbmdzQ2VudGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2hyaXNMYXVpbmdlcjc3L1hFUy1TZXR0aW5ncy1DZW50ZXItRXh0ZW5zaW9uIiwKICAidXVpZCI6ICJTZXR0aW5nc0NlbnRlckBsYXVpbmdlci1jbGFuLmRlIiwKICAidmVyc2lvbiI6IDExCn0="},
     "43": {"version": "22", "sha256": "0vpnp0w7h33p5as86a03i5sg6clfd61q7f4p40ab16i4fsyy0dyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldHRpbmdzIENlbnRlciBpcyBhIGN1c3RvbWl6YWJsZSBkcm9wLWRvd24gbWVudSBmb3IgcXVpY2tseSBsYXVuY2hpbmcgZnJlcXVlbnRseSB1c2VkIGFwcHMgaW4gR25vbWU6U2hlbGwgdmlhIHRoZSBxdWlja3NldHRpbmdzLiBPcmlnaW5hbGx5IGNyZWF0ZWQgYnkgWEVTLlxuXG5TZXR0aW5ncyBzaG9ydGN1dHMgOiBnbm9tZS10d2Vhay10b29sLCBkY29uZi1lZGl0b3IsIGdjb25mLWVkaXRvciwgZ25vbWUtc2Vzc2lvbi1wcm9wZXJ0aWVzLCBnbm9tZS1zaGVsbC1leHRlbnNpb24tcHJlZnMsIHNlYWhvcnNlIGFuZCBudmlkaWEtc2V0dGluZ3MuIFlvdSBjYW4gYWRkIHlvdXIgb3duXG5cbk9yaWdpbmFsIHNvdXJjZSA6IGh0dHA6Ly9zdm4ueGVzbmV0LmZyL2dub21lZXh0ZW5zaW9ucyIsCiAgImdldHRleHQtZG9tYWluIjogIlNldHRpbmdzQ2VudGVyIiwKICAibmFtZSI6ICJTZXR0aW5nc0NlbnRlciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJYZXMsIGwzMDBsdmwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuU2V0dGluZ3NDZW50ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NocmlzTGF1aW5nZXI3Ny9YRVMtU2V0dGluZ3MtQ2VudGVyLUV4dGVuc2lvbiIsCiAgInV1aWQiOiAiU2V0dGluZ3NDZW50ZXJAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAyMgp9"},
     "44": {"version": "22", "sha256": "0vpnp0w7h33p5as86a03i5sg6clfd61q7f4p40ab16i4fsyy0dyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldHRpbmdzIENlbnRlciBpcyBhIGN1c3RvbWl6YWJsZSBkcm9wLWRvd24gbWVudSBmb3IgcXVpY2tseSBsYXVuY2hpbmcgZnJlcXVlbnRseSB1c2VkIGFwcHMgaW4gR25vbWU6U2hlbGwgdmlhIHRoZSBxdWlja3NldHRpbmdzLiBPcmlnaW5hbGx5IGNyZWF0ZWQgYnkgWEVTLlxuXG5TZXR0aW5ncyBzaG9ydGN1dHMgOiBnbm9tZS10d2Vhay10b29sLCBkY29uZi1lZGl0b3IsIGdjb25mLWVkaXRvciwgZ25vbWUtc2Vzc2lvbi1wcm9wZXJ0aWVzLCBnbm9tZS1zaGVsbC1leHRlbnNpb24tcHJlZnMsIHNlYWhvcnNlIGFuZCBudmlkaWEtc2V0dGluZ3MuIFlvdSBjYW4gYWRkIHlvdXIgb3duXG5cbk9yaWdpbmFsIHNvdXJjZSA6IGh0dHA6Ly9zdm4ueGVzbmV0LmZyL2dub21lZXh0ZW5zaW9ucyIsCiAgImdldHRleHQtZG9tYWluIjogIlNldHRpbmdzQ2VudGVyIiwKICAibmFtZSI6ICJTZXR0aW5nc0NlbnRlciIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJYZXMsIGwzMDBsdmwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuU2V0dGluZ3NDZW50ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NocmlzTGF1aW5nZXI3Ny9YRVMtU2V0dGluZ3MtQ2VudGVyLUV4dGVuc2lvbiIsCiAgInV1aWQiOiAiU2V0dGluZ3NDZW50ZXJAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAyMgp9"},
-    "45": {"version": "27", "sha256": "1cpdrvqf66vvahwnmxrwk58kvc3wknb872v79xh6m1x7awxk0idj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldHRpbmdzIENlbnRlciBpcyBhIGN1c3RvbWl6YWJsZSBkcm9wLWRvd24gbWVudSBmb3IgcXVpY2tseSBsYXVuY2hpbmcgZnJlcXVlbnRseSB1c2VkIGFwcHMgaW4gR25vbWU6U2hlbGwgdmlhIHRoZSBxdWlja3NldHRpbmdzLiBPcmlnaW5hbGx5IGNyZWF0ZWQgYnkgWEVTLlxuXG5TZXR0aW5ncyBzaG9ydGN1dHMgOiBnbm9tZS10d2Vhay10b29sLCBkY29uZi1lZGl0b3IsIGdjb25mLWVkaXRvciwgZ25vbWUtc2Vzc2lvbi1wcm9wZXJ0aWVzLCBnbm9tZS1zaGVsbC1leHRlbnNpb24tcHJlZnMsIHNlYWhvcnNlIGFuZCBudmlkaWEtc2V0dGluZ3MuIFlvdSBjYW4gYWRkIHlvdXIgb3duXG5cbk9yaWdpbmFsIHNvdXJjZSA6IGh0dHA6Ly9zdm4ueGVzbmV0LmZyL2dub21lZXh0ZW5zaW9ucyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiQ2hyaXNMYXVpbmdlcjc3IiwKICAgICJwYXlwYWwiOiAiQ2hyaXNMYXVpbmdlciIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJTZXR0aW5nc0NlbnRlciIsCiAgIm5hbWUiOiAiU2V0dGluZ3NDZW50ZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiWGVzLCBsMzAwbHZsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLlNldHRpbmdzQ2VudGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvWEVTLVNldHRpbmdzLUNlbnRlci1FeHRlbnNpb24iLAogICJ1dWlkIjogIlNldHRpbmdzQ2VudGVyQGxhdWluZ2VyLWNsYW4uZGUiLAogICJ2ZXJzaW9uIjogMjcsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4wIgp9"}
+    "45": {"version": "30", "sha256": "0rrm7b0jsmdjixw28gahmkw1dmrgashqvr0f6fcj7nyqhj8glrc5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldHRpbmdzIENlbnRlciBpcyBhIGN1c3RvbWl6YWJsZSBkcm9wLWRvd24gbWVudSBmb3IgcXVpY2tseSBsYXVuY2hpbmcgZnJlcXVlbnRseSB1c2VkIGFwcHMgaW4gR25vbWU6U2hlbGwgdmlhIHRoZSBxdWlja3NldHRpbmdzLiBPcmlnaW5hbGx5IGNyZWF0ZWQgYnkgWEVTLlxuXG5TZXR0aW5ncyBzaG9ydGN1dHMgOiBnbm9tZS10d2Vhay10b29sLCBkY29uZi1lZGl0b3IsIGdjb25mLWVkaXRvciwgZ25vbWUtc2Vzc2lvbi1wcm9wZXJ0aWVzLCBnbm9tZS1zaGVsbC1leHRlbnNpb24tcHJlZnMsIHNlYWhvcnNlIGFuZCBudmlkaWEtc2V0dGluZ3MuIFlvdSBjYW4gYWRkIHlvdXIgb3duXG5cbk9yaWdpbmFsIHNvdXJjZSA6IGh0dHA6Ly9zdm4ueGVzbmV0LmZyL2dub21lZXh0ZW5zaW9ucyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiQ2hyaXNMYXVpbmdlcjc3IiwKICAgICJwYXlwYWwiOiAiQ2hyaXNMYXVpbmdlciIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJTZXR0aW5nc0NlbnRlciIsCiAgIm5hbWUiOiAiU2V0dGluZ3NDZW50ZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiWGVzLCBsMzAwbHZsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLlNldHRpbmdzQ2VudGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLVNldHRpbmdzQ2VudGVyIiwKICAidXVpZCI6ICJTZXR0aW5nc0NlbnRlckBsYXVpbmdlci1jbGFuLmRlIiwKICAidmVyc2lvbiI6IDMwLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMyIKfQ=="},
+    "46": {"version": "30", "sha256": "0rrm7b0jsmdjixw28gahmkw1dmrgashqvr0f6fcj7nyqhj8glrc5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldHRpbmdzIENlbnRlciBpcyBhIGN1c3RvbWl6YWJsZSBkcm9wLWRvd24gbWVudSBmb3IgcXVpY2tseSBsYXVuY2hpbmcgZnJlcXVlbnRseSB1c2VkIGFwcHMgaW4gR25vbWU6U2hlbGwgdmlhIHRoZSBxdWlja3NldHRpbmdzLiBPcmlnaW5hbGx5IGNyZWF0ZWQgYnkgWEVTLlxuXG5TZXR0aW5ncyBzaG9ydGN1dHMgOiBnbm9tZS10d2Vhay10b29sLCBkY29uZi1lZGl0b3IsIGdjb25mLWVkaXRvciwgZ25vbWUtc2Vzc2lvbi1wcm9wZXJ0aWVzLCBnbm9tZS1zaGVsbC1leHRlbnNpb24tcHJlZnMsIHNlYWhvcnNlIGFuZCBudmlkaWEtc2V0dGluZ3MuIFlvdSBjYW4gYWRkIHlvdXIgb3duXG5cbk9yaWdpbmFsIHNvdXJjZSA6IGh0dHA6Ly9zdm4ueGVzbmV0LmZyL2dub21lZXh0ZW5zaW9ucyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiQ2hyaXNMYXVpbmdlcjc3IiwKICAgICJwYXlwYWwiOiAiQ2hyaXNMYXVpbmdlciIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJTZXR0aW5nc0NlbnRlciIsCiAgIm5hbWUiOiAiU2V0dGluZ3NDZW50ZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiWGVzLCBsMzAwbHZsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLlNldHRpbmdzQ2VudGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLVNldHRpbmdzQ2VudGVyIiwKICAidXVpZCI6ICJTZXR0aW5nc0NlbnRlckBsYXVpbmdlci1jbGFuLmRlIiwKICAidmVyc2lvbiI6IDMwLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMyIKfQ=="}
   }}
 , {"uuid": "auto-mute-toggle@garotosopa.github.io", "name": "Auto-mute toggle", "pname": "auto-mute-toggle", "description": "Toggle whether to auto-mute speakers when headphones are plugged in.", "link": "https://extensions.gnome.org/extension/2905/auto-mute-toggle/", "shell_version_map": {
     "40": {"version": "6", "sha256": "1lyh51gvsh9ydip77vjj8rigjiah97lh8gp91jcpqblwx69fs3dk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB3aGV0aGVyIHRvIGF1dG8tbXV0ZSBzcGVha2VycyB3aGVuIGhlYWRwaG9uZXMgYXJlIHBsdWdnZWQgaW4uIiwKICAibmFtZSI6ICJBdXRvLW11dGUgdG9nZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dhcm90b3NvcGEvZ3NlLWF1dG8tbXV0ZS10b2dnbGUiLAogICJ1dWlkIjogImF1dG8tbXV0ZS10b2dnbGVAZ2Fyb3Rvc29wYS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNgp9"}
@@ -2129,7 +2222,8 @@
     "42": {"version": "29", "sha256": "18b945hcy8a13dm0s2d1x9dc6d8b2pxgmhaqshk8wbcmxjwiv866", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIE91dCBTdWJtZW51IE9mIFBvd2VyIE9mZi9Mb2dvdXQgQnV0dG9uIGFuZCBSZWFycmFuZ2UgdGhlIE9yZGVyIG9mIFN5c3RlbSBNZW51LiIsCiAgIm5hbWUiOiAiQnJpbmcgT3V0IFN1Ym1lbnUgT2YgUG93ZXIgT2ZmL0xvZ291dCBCdXR0b24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYnJuZ291dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1BSQVRBUC1LVU1BUi9CcmluZy1PdXQtU3VibWVudS1vZi1Qb3dlci1PZmYtTG9nb3V0IiwKICAidXVpZCI6ICJCcmluZ091dFN1Ym1lbnVPZlBvd2VyT2ZmTG9nb3V0QnV0dG9uQHByYXRhcC5mYXN0bWFpbC5mbSIsCiAgInZlcnNpb24iOiAyOQp9"},
     "43": {"version": "37", "sha256": "1v8mwc6sy99mnxqzpcgrnc06sdnnm6digwpn6yk7prsfgygpd00i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIE91dCBTdWJtZW51IE9mIFBvd2VyIE9mZi9Mb2dvdXQgQnV0dG9uIGFuZCBSZWFycmFuZ2UgdGhlIE9yZGVyIG9mIFN5c3RlbSBNZW51LiIsCiAgIm5hbWUiOiAiQnJpbmcgT3V0IFN1Ym1lbnUgT2YgUG93ZXIgT2ZmL0xvZ291dCBCdXR0b24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYnJuZ291dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQnJpbmctT3V0LVN1Ym1lbnUtb2YtUG93ZXItT2ZmLUxvZ291dCIsCiAgInV1aWQiOiAiQnJpbmdPdXRTdWJtZW51T2ZQb3dlck9mZkxvZ291dEJ1dHRvbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogMzcKfQ=="},
     "44": {"version": "43", "sha256": "1s49pdsab7qw4g14b3ghns2jlsi7h97zz9k9fiqpy4ff6mk41kni", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIE91dCBTdWJtZW51IE9mIFBvd2VyIE9mZi9Mb2dvdXQgQnV0dG9uIGFuZCBSZWFycmFuZ2UgdGhlIE9yZGVyIG9mIFN5c3RlbSBNZW51LiIsCiAgIm5hbWUiOiAiQnJpbmcgT3V0IFN1Ym1lbnUgT2YgUG93ZXIgT2ZmL0xvZ291dCBCdXR0b24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYnJuZ291dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQnJpbmctT3V0LVN1Ym1lbnUtb2YtUG93ZXItT2ZmLUxvZ291dCIsCiAgInV1aWQiOiAiQnJpbmdPdXRTdWJtZW51T2ZQb3dlck9mZkxvZ291dEJ1dHRvbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogNDMKfQ=="},
-    "45": {"version": "52", "sha256": "1hb3qabkyzglcswd1ilxzd7bjqwqj5b71nrzsali0l1bvhh3l64m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIE91dCBTdWJtZW51IE9mIFBvd2VyIE9mZiBCdXR0b24iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInByYXRhcHBhbmFiYWthIiwKICAgICJwYXlwYWwiOiAicHJhdGFwcGFuYWJha2EiCiAgfSwKICAibmFtZSI6ICJCcmluZyBPdXQgU3VibWVudSBPZiBQb3dlciBPZmYgQnV0dG9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJyaW5nLW91dC1zdWJtZW51LW9mLXBvd2VyLW9mZi1sb2dvdXQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUFJBVEFQLUtVTUFSL2JyaW5nLW91dC1zdWJtZW51LW9mLXBvd2VyLW9mZi1sb2dvdXQiLAogICJ1dWlkIjogIkJyaW5nT3V0U3VibWVudU9mUG93ZXJPZmZMb2dvdXRCdXR0b25AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDUyCn0="}
+    "45": {"version": "54", "sha256": "19bzisws267ddl1sx7mq2l4b68rw66ih1ds7fz3s3dllgrl9vvhp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIE91dCBTdWJtZW51IE9mIFBvd2VyIE9mZiBCdXR0b24iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInByYXRhcHBhbmFiYWthIgogIH0sCiAgIm5hbWUiOiAiQnJpbmcgT3V0IFN1Ym1lbnUgT2YgUG93ZXIgT2ZmIEJ1dHRvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5icmluZy1vdXQtc3VibWVudS1vZi1wb3dlci1vZmYtbG9nb3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvYnJpbmctb3V0LXN1Ym1lbnUtb2YtcG93ZXItb2ZmLWxvZ291dCIsCiAgInV1aWQiOiAiQnJpbmdPdXRTdWJtZW51T2ZQb3dlck9mZkxvZ291dEJ1dHRvbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogNTQKfQ=="},
+    "46": {"version": "54", "sha256": "19bzisws267ddl1sx7mq2l4b68rw66ih1ds7fz3s3dllgrl9vvhp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5nIE91dCBTdWJtZW51IE9mIFBvd2VyIE9mZiBCdXR0b24iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInByYXRhcHBhbmFiYWthIgogIH0sCiAgIm5hbWUiOiAiQnJpbmcgT3V0IFN1Ym1lbnUgT2YgUG93ZXIgT2ZmIEJ1dHRvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5icmluZy1vdXQtc3VibWVudS1vZi1wb3dlci1vZmYtbG9nb3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvYnJpbmctb3V0LXN1Ym1lbnUtb2YtcG93ZXItb2ZmLWxvZ291dCIsCiAgInV1aWQiOiAiQnJpbmdPdXRTdWJtZW51T2ZQb3dlck9mZkxvZ291dEJ1dHRvbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogNTQKfQ=="}
   }}
 , {"uuid": "batterytimepercentagecompact@sagrland.de", "name": "Battery Time (Percentage) Compact", "pname": "battery-time-percentage-compact", "description": "Show the remaining time until fully charged/discharged as well as percentage of battery charge in the panel.", "link": "https://extensions.gnome.org/extension/2929/battery-time-percentage-compact/", "shell_version_map": {
     "38": {"version": "8", "sha256": "143gj2xmi1hhma2fjggk6vaq3sx7p0glszayds1jbnz7003xc89q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIHJlbWFpbmluZyB0aW1lIHVudGlsIGZ1bGx5IGNoYXJnZWQvZGlzY2hhcmdlZCBhcyB3ZWxsIGFzIHBlcmNlbnRhZ2Ugb2YgYmF0dGVyeSBjaGFyZ2UgaW4gdGhlIHBhbmVsLiIsCiAgImdldHRleHQtZG9tYWluIjogImJhdHRlcnl0aW1lcGVyY2VudGFnZWNvbXBhY3QiLAogICJuYW1lIjogIkJhdHRlcnkgVGltZSAoUGVyY2VudGFnZSkgQ29tcGFjdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iYXR0ZXJ5dGltZXBlcmNlbnRhZ2Vjb21wYWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2FHckxhbmQvZ25vbWUtc2hlbGwtYmF0dGVyeS10aW1lLXBlcmNlbnRhZ2UtY29tcGFjdCIsCiAgInV1aWQiOiAiYmF0dGVyeXRpbWVwZXJjZW50YWdlY29tcGFjdEBzYWdybGFuZC5kZSIsCiAgInZlcnNpb24iOiA4Cn0="},
@@ -2144,16 +2238,18 @@
     "42": {"version": "23", "sha256": "137lcwg6c0xarz6px5z846cfpl1vaklh5m525a8p3793cxa24lbn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGUgbXVsdGlwbGUgc2hlbGwgY29tbWFuZHMgcGVyaW9kaWNhbGx5IHdpdGggc2VwYXJhdGUgaW50ZXJ2YWxzIGFuZCBkaXNwbGF5IHRoZSBvdXRwdXQgaW4gZ25vbWUgdG9wIGJhci4iLAogICJuYW1lIjogIkV4ZWN1dG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMwLjIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhdWpvbmFzL2V4ZWN1dG9yIiwKICAidXVpZCI6ICJleGVjdXRvckByYXVqb25hcy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
     "43": {"version": "23", "sha256": "137lcwg6c0xarz6px5z846cfpl1vaklh5m525a8p3793cxa24lbn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGUgbXVsdGlwbGUgc2hlbGwgY29tbWFuZHMgcGVyaW9kaWNhbGx5IHdpdGggc2VwYXJhdGUgaW50ZXJ2YWxzIGFuZCBkaXNwbGF5IHRoZSBvdXRwdXQgaW4gZ25vbWUgdG9wIGJhci4iLAogICJuYW1lIjogIkV4ZWN1dG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMwLjIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhdWpvbmFzL2V4ZWN1dG9yIiwKICAidXVpZCI6ICJleGVjdXRvckByYXVqb25hcy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
     "44": {"version": "23", "sha256": "137lcwg6c0xarz6px5z846cfpl1vaklh5m525a8p3793cxa24lbn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGUgbXVsdGlwbGUgc2hlbGwgY29tbWFuZHMgcGVyaW9kaWNhbGx5IHdpdGggc2VwYXJhdGUgaW50ZXJ2YWxzIGFuZCBkaXNwbGF5IHRoZSBvdXRwdXQgaW4gZ25vbWUgdG9wIGJhci4iLAogICJuYW1lIjogIkV4ZWN1dG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMwLjIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhdWpvbmFzL2V4ZWN1dG9yIiwKICAidXVpZCI6ICJleGVjdXRvckByYXVqb25hcy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
-    "45": {"version": "25", "sha256": "1d375pdhi44h7152401gan3p2j6x5i5m8lpi8bmszm52vhnsbaj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGUgbXVsdGlwbGUgc2hlbGwgY29tbWFuZHMgcGVyaW9kaWNhbGx5IHdpdGggc2VwYXJhdGUgaW50ZXJ2YWxzIGFuZCBkaXNwbGF5IHRoZSBvdXRwdXQgaW4gZ25vbWUgdG9wIGJhci4iLAogICJuYW1lIjogIkV4ZWN1dG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4ZWN1dG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhdWpvbmFzL2V4ZWN1dG9yIiwKICAidXVpZCI6ICJleGVjdXRvckByYXVqb25hcy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjUKfQ=="}
+    "45": {"version": "26", "sha256": "1b00a3r3656iln0blf0883riy6q4k3pybzzsdi9ymd6cifvkhrm6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGUgbXVsdGlwbGUgc2hlbGwgY29tbWFuZHMgcGVyaW9kaWNhbGx5IHdpdGggc2VwYXJhdGUgaW50ZXJ2YWxzIGFuZCBkaXNwbGF5IHRoZSBvdXRwdXQgaW4gZ25vbWUgdG9wIGJhci4iLAogICJuYW1lIjogIkV4ZWN1dG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4ZWN1dG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYXVqb25hcy9leGVjdXRvciIsCiAgInV1aWQiOiAiZXhlY3V0b3JAcmF1am9uYXMuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDI2Cn0="},
+    "46": {"version": "26", "sha256": "1b00a3r3656iln0blf0883riy6q4k3pybzzsdi9ymd6cifvkhrm6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGUgbXVsdGlwbGUgc2hlbGwgY29tbWFuZHMgcGVyaW9kaWNhbGx5IHdpdGggc2VwYXJhdGUgaW50ZXJ2YWxzIGFuZCBkaXNwbGF5IHRoZSBvdXRwdXQgaW4gZ25vbWUgdG9wIGJhci4iLAogICJuYW1lIjogIkV4ZWN1dG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4ZWN1dG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYXVqb25hcy9leGVjdXRvciIsCiAgInV1aWQiOiAiZXhlY3V0b3JAcmF1am9uYXMuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDI2Cn0="}
   }}
-, {"uuid": "ControlBlurEffectOnLockScreen@pratap.fastmail.fm", "name": "Control Blur Effect On Lock Screen", "pname": "control-blur-effect-on-lock-screen", "description": "Control the Blur Effect On Lock Screen.", "link": "https://extensions.gnome.org/extension/2935/control-blur-effect-on-lock-screen/", "shell_version_map": {
+, {"uuid": "ControlBlurEffectOnLockScreen@pratap.fastmail.fm", "name": "Control Blur Effect On Lockscreen", "pname": "control-blur-effect-on-lock-screen", "description": "Control the Blur Effect On Lockscreen.", "link": "https://extensions.gnome.org/extension/2935/control-blur-effect-on-lock-screen/", "shell_version_map": {
     "38": {"version": "14", "sha256": "176qxx2zykzzjq2xf8sf1c83r1skaxa2mzmp51v8bq3vbbxp0wij", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2sgU2NyZWVuLiIsCiAgIm5hbWUiOiAiQ29udHJvbCBCbHVyIEVmZmVjdCBPbiBMb2NrIFNjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1BSQVRBUC1LVU1BUi9Db250cm9sX0JsdXJfRWZmZWN0X09uX0xvY2tfU2NyZWVuIiwKICAidXVpZCI6ICJDb250cm9sQmx1ckVmZmVjdE9uTG9ja1NjcmVlbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
     "40": {"version": "19", "sha256": "1yl5qfx42vrc880wwjpr8miy10hlp7pnm0z0hsh4n6y79ld12yfg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2sgU2NyZWVuLiIsCiAgIm5hbWUiOiAiQ29udHJvbCBCbHVyIEVmZmVjdCBPbiBMb2NrIFNjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQ29udHJvbF9CbHVyX0VmZmVjdF9Pbl9Mb2NrX1NjcmVlbiIsCiAgInV1aWQiOiAiQ29udHJvbEJsdXJFZmZlY3RPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "41": {"version": "19", "sha256": "1yl5qfx42vrc880wwjpr8miy10hlp7pnm0z0hsh4n6y79ld12yfg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2sgU2NyZWVuLiIsCiAgIm5hbWUiOiAiQ29udHJvbCBCbHVyIEVmZmVjdCBPbiBMb2NrIFNjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQ29udHJvbF9CbHVyX0VmZmVjdF9Pbl9Mb2NrX1NjcmVlbiIsCiAgInV1aWQiOiAiQ29udHJvbEJsdXJFZmZlY3RPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "42": {"version": "19", "sha256": "1yl5qfx42vrc880wwjpr8miy10hlp7pnm0z0hsh4n6y79ld12yfg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2sgU2NyZWVuLiIsCiAgIm5hbWUiOiAiQ29udHJvbCBCbHVyIEVmZmVjdCBPbiBMb2NrIFNjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQ29udHJvbF9CbHVyX0VmZmVjdF9Pbl9Mb2NrX1NjcmVlbiIsCiAgInV1aWQiOiAiQ29udHJvbEJsdXJFZmZlY3RPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "43": {"version": "19", "sha256": "1yl5qfx42vrc880wwjpr8miy10hlp7pnm0z0hsh4n6y79ld12yfg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2sgU2NyZWVuLiIsCiAgIm5hbWUiOiAiQ29udHJvbCBCbHVyIEVmZmVjdCBPbiBMb2NrIFNjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQ29udHJvbF9CbHVyX0VmZmVjdF9Pbl9Mb2NrX1NjcmVlbiIsCiAgInV1aWQiOiAiQ29udHJvbEJsdXJFZmZlY3RPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDE5Cn0="},
     "44": {"version": "21", "sha256": "1vwbls2cnlgcbjspwnxadd8b8d34lisaddxhlfhymn6hnjyi7skx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2sgU2NyZWVuLiIsCiAgIm5hbWUiOiAiQ29udHJvbCBCbHVyIEVmZmVjdCBPbiBMb2NrIFNjcmVlbiIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1ciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQ29udHJvbF9CbHVyX0VmZmVjdF9Pbl9Mb2NrX1NjcmVlbiIsCiAgInV1aWQiOiAiQ29udHJvbEJsdXJFZmZlY3RPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDIxCn0="},
-    "45": {"version": "24", "sha256": "15a3z85xkpwqrw9dzi1dib0z5vajvfm21v2xlblxh55k8854s88q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2sgU2NyZWVuLiIsCiAgIm5hbWUiOiAiQ29udHJvbCBCbHVyIEVmZmVjdCBPbiBMb2NrIFNjcmVlbiIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1ciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvQ29udHJvbF9CbHVyX0VmZmVjdF9Pbl9Mb2NrX1NjcmVlbiIsCiAgInV1aWQiOiAiQ29udHJvbEJsdXJFZmZlY3RPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDI0Cn0="}
+    "45": {"version": "25", "sha256": "01167j6kp1jm238qs9lngqz137nlwaj4qc9lbfpxf8p325fc2qc3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2tzY3JlZW4uIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwcmF0YXBwYW5hYmFrYSIKICB9LAogICJuYW1lIjogIkNvbnRyb2wgQmx1ciBFZmZlY3QgT24gTG9ja3NjcmVlbiIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29udHJvbC1ibHVyLWVmZmVjdC1vbi1sb2Nrc2NyZWVuIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvY29udHJvbC1ibHVyLWVmZmVjdC1vbi1sb2Nrc2NyZWVuIiwKICAidXVpZCI6ICJDb250cm9sQmx1ckVmZmVjdE9uTG9ja1NjcmVlbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogMjUKfQ=="},
+    "46": {"version": "25", "sha256": "01167j6kp1jm238qs9lngqz137nlwaj4qc9lbfpxf8p325fc2qc3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIEJsdXIgRWZmZWN0IE9uIExvY2tzY3JlZW4uIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwcmF0YXBwYW5hYmFrYSIKICB9LAogICJuYW1lIjogIkNvbnRyb2wgQmx1ciBFZmZlY3QgT24gTG9ja3NjcmVlbiIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29udHJvbC1ibHVyLWVmZmVjdC1vbi1sb2Nrc2NyZWVuIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvY29udHJvbC1ibHVyLWVmZmVjdC1vbi1sb2Nrc2NyZWVuIiwKICAidXVpZCI6ICJDb250cm9sQmx1ckVmZmVjdE9uTG9ja1NjcmVlbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogMjUKfQ=="}
   }}
 , {"uuid": "light-dict@tuberry.github.io", "name": "Light Dict", "pname": "light-dict", "description": "Lightweight extension for on-the-fly manipulation to primary selections, especially optimized for Dictionary lookups\n\nFor support, please report any issues via the homepage link below.", "link": "https://extensions.gnome.org/extension/2959/light-dict/", "shell_version_map": {
     "38": {"version": "47", "sha256": "1m2cbi9vza162fvkp9lsmnxwg0j4ixp976pq5znzhxsik2l8r4nr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0d2VpZ2h0IGV4dGVuc2lvbiBmb3Igb24tdGhlLWZseSBtYW5pcHVsYXRpb24gdG8gcHJpbWFyeSBzZWxlY3Rpb25zLCBlc3BlY2lhbGx5IG9wdGltaXplZCBmb3IgRGljdGlvbmFyeSBsb29rdXBzIG9yIHRyYW5zbGF0aW9uc1xuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJsaWdodC1kaWN0IiwKICAibmFtZSI6ICJMaWdodCBEaWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxpZ2h0LWRpY3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2xpZ2h0LWRpY3QiLAogICJ1dWlkIjogImxpZ2h0LWRpY3RAdHViZXJyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNDcKfQ=="},
@@ -2161,7 +2257,8 @@
     "41": {"version": "65", "sha256": "1yxxscfl6bjmf8x0rh6pqg41yz9wlsivv33i12v8nlg0bnrk26ir", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0d2VpZ2h0IGV4dGVuc2lvbiBmb3Igb24tdGhlLWZseSBtYW5pcHVsYXRpb24gdG8gcHJpbWFyeSBzZWxlY3Rpb25zLCBlc3BlY2lhbGx5IG9wdGltaXplZCBmb3IgRGljdGlvbmFyeSBsb29rdXBzIG9yIHRyYW5zbGF0aW9uc1xuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGlnaHQtZGljdCIsCiAgIm5hbWUiOiAiTGlnaHQgRGljdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5saWdodC1kaWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvbGlnaHQtZGljdCIsCiAgInV1aWQiOiAibGlnaHQtZGljdEB0dWJlcnJ5LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA2NQp9"},
     "42": {"version": "67", "sha256": "0405yz8w5a1h56csh2xl9kn7bbxr7r8vmsslh9y4l16gxs2nmkrh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0d2VpZ2h0IGV4dGVuc2lvbiBmb3Igb24tdGhlLWZseSBtYW5pcHVsYXRpb24gdG8gcHJpbWFyeSBzZWxlY3Rpb25zLCBlc3BlY2lhbGx5IG9wdGltaXplZCBmb3IgRGljdGlvbmFyeSBsb29rdXBzIG9yIHRyYW5zbGF0aW9uc1xuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGlnaHQtZGljdCIsCiAgIm5hbWUiOiAiTGlnaHQgRGljdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5saWdodC1kaWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvbGlnaHQtZGljdCIsCiAgInV1aWQiOiAibGlnaHQtZGljdEB0dWJlcnJ5LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA2Nwp9"},
     "43": {"version": "71", "sha256": "01hmh278h8kjym6zvvqglfdg8qkfrz364p3srci137vwkc2rpd9x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0d2VpZ2h0IGV4dGVuc2lvbiBmb3Igb24tdGhlLWZseSBtYW5pcHVsYXRpb24gdG8gcHJpbWFyeSBzZWxlY3Rpb25zLCBlc3BlY2lhbGx5IG9wdGltaXplZCBmb3IgRGljdGlvbmFyeSBsb29rdXBzIG9yIHRyYW5zbGF0aW9uc1xuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbGlnaHQtZGljdCIsCiAgIm5hbWUiOiAiTGlnaHQgRGljdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5saWdodC1kaWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvbGlnaHQtZGljdCIsCiAgInV1aWQiOiAibGlnaHQtZGljdEB0dWJlcnJ5LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA3MQp9"},
-    "45": {"version": "76", "sha256": "1m4k6gkda7axddm6y16z6d10sv0awxp6vsa23sw10djzk211bgf0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0d2VpZ2h0IGV4dGVuc2lvbiBmb3Igb24tdGhlLWZseSBtYW5pcHVsYXRpb24gdG8gcHJpbWFyeSBzZWxlY3Rpb25zLCBlc3BlY2lhbGx5IG9wdGltaXplZCBmb3IgRGljdGlvbmFyeSBsb29rdXBzXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1saWdodC1kaWN0IiwKICAibmFtZSI6ICJMaWdodCBEaWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxpZ2h0LWRpY3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9saWdodC1kaWN0IiwKICAidXVpZCI6ICJsaWdodC1kaWN0QHR1YmVycnkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDc2Cn0="}
+    "45": {"version": "76", "sha256": "1m4k6gkda7axddm6y16z6d10sv0awxp6vsa23sw10djzk211bgf0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0d2VpZ2h0IGV4dGVuc2lvbiBmb3Igb24tdGhlLWZseSBtYW5pcHVsYXRpb24gdG8gcHJpbWFyeSBzZWxlY3Rpb25zLCBlc3BlY2lhbGx5IG9wdGltaXplZCBmb3IgRGljdGlvbmFyeSBsb29rdXBzXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1saWdodC1kaWN0IiwKICAibmFtZSI6ICJMaWdodCBEaWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxpZ2h0LWRpY3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9saWdodC1kaWN0IiwKICAidXVpZCI6ICJsaWdodC1kaWN0QHR1YmVycnkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDc2Cn0="},
+    "46": {"version": "77", "sha256": "0x0c429bgxy688dc3rncj50mlpizxj442gr2dhdmvl4d7pmz2d4n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0d2VpZ2h0IGV4dGVuc2lvbiBmb3Igb24tdGhlLWZseSBtYW5pcHVsYXRpb24gdG8gcHJpbWFyeSBzZWxlY3Rpb25zLCBlc3BlY2lhbGx5IG9wdGltaXplZCBmb3IgRGljdGlvbmFyeSBsb29rdXBzXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1saWdodC1kaWN0IiwKICAibmFtZSI6ICJMaWdodCBEaWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxpZ2h0LWRpY3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9saWdodC1kaWN0IiwKICAidXVpZCI6ICJsaWdodC1kaWN0QHR1YmVycnkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDc3Cn0="}
   }}
 , {"uuid": "InternetSpeedMeter@alshakib.dev", "name": "Internet Speed Meter", "pname": "internet-speed-meter", "description": "Simple and minimal internet speed meter extension for the Gnome Shell", "link": "https://extensions.gnome.org/extension/2980/internet-speed-meter/", "shell_version_map": {
     "38": {"version": "11", "sha256": "1y33l24q441nc147njjp4ylygmfr73br8adc8yfbp9p8dzh084f0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBhbmQgbWluaW1hbCBpbnRlcm5ldCBzcGVlZCBtZXRlciBleHRlbnNpb24gZm9yIHRoZSBHbm9tZSBTaGVsbCIsCiAgIm5hbWUiOiAiSW50ZXJuZXQgU3BlZWQgTWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjAiLAogICAgIjMuMjIiLAogICAgIjMuMjQiLAogICAgIjMuMjYiLAogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWxTaGFraWIvSW50ZXJuZXRTcGVlZE1ldGVyIiwKICAidXVpZCI6ICJJbnRlcm5ldFNwZWVkTWV0ZXJAYWxzaGFraWIuZGV2IiwKICAidmVyc2lvbiI6IDExCn0="},
@@ -2172,14 +2269,15 @@
     "44": {"version": "16", "sha256": "0zjrnixd5cld46vj1ibl70gn5223rp9kllsq6wy53cqhxmrizskg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBhbmQgbWluaW1hbCBpbnRlcm5ldCBzcGVlZCBtZXRlciBleHRlbnNpb24gZm9yIHRoZSBHbm9tZSBTaGVsbCIsCiAgIm5hbWUiOiAiSW50ZXJuZXQgU3BlZWQgTWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FsU2hha2liL0ludGVybmV0U3BlZWRNZXRlciIsCiAgInV1aWQiOiAiSW50ZXJuZXRTcGVlZE1ldGVyQGFsc2hha2liLmRldiIsCiAgInZlcnNpb24iOiAxNgp9"},
     "45": {"version": "17", "sha256": "1mvxlnfi4zj18zf742naxnnswpcvz11dn99nfr7a3h3dpclqgcd8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBhbmQgbWluaW1hbCBpbnRlcm5ldCBzcGVlZCBtZXRlciBleHRlbnNpb24gZm9yIHRoZSBHbm9tZSBTaGVsbCIsCiAgIm5hbWUiOiAiSW50ZXJuZXQgU3BlZWQgTWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWxTaGFraWIvSW50ZXJuZXRTcGVlZE1ldGVyIiwKICAidXVpZCI6ICJJbnRlcm5ldFNwZWVkTWV0ZXJAYWxzaGFraWIuZGV2IiwKICAidmVyc2lvbiI6IDE3Cn0="}
   }}
-, {"uuid": "IP-Finder@linxgem33.com", "name": "IP Finder", "pname": "ip-finder", "description": "Displays useful information about your public IP Address and VPN status.\n\nIP Finder displays information about your public IP address, hostname, country, AS Block, as well as  a map tile of your Geo-location and country flag,  this extension is Also Useful for informational purposes to monitor VPN changes and public network IP Addresses.\n\n== IP Finder can monitor in real time ==\n- Wireguard connections\n- OpenVPN connections\n- IPV4/6 connections\n- Proxy connections\n- VPN vendor applications\n- Manual static IP changes\n\n== Whats New.. v20 ==\n*Fixes bug where Colorize option no longer works \n*This extension is now using ip-api.com and ipinfo.io services for Geo-location data.\n*Flag icons now use Emoji flags instead of bundling over 200 png flag images.\n*Added translation support back.\n*Added GNOME 45 Support\n*Added map tile zoom setting\n*Added VPN connection types setting (manually set your own network connection)\n*Added ip-api.com as an API option.\n*Revamped IP-Finder settings (GTK4 compliant)", "link": "https://extensions.gnome.org/extension/2983/ip-finder/", "shell_version_map": {
+, {"uuid": "IP-Finder@linxgem33.com", "name": "IP Finder", "pname": "ip-finder", "description": "Displays useful information about your public IP Address and VPN status.\n\nIP Finder displays information about your public IP address, hostname, country, AS Block, as well as  a map tile of your Geolocation and country flag,  this extension is Also Useful for informational purposes to monitor VPN changes and public network IP Addresses.\n\nIP Finder can monitor in real time\n\n*Wireguard connections\n*OpenVPN connections\n*IPV4/6 connections\n*Proxy connections\n*VPN vendor applications\n*Manual static IP changes\n*Manually added connections", "link": "https://extensions.gnome.org/extension/2983/ip-finder/", "shell_version_map": {
     "38": {"version": "7", "sha256": "1g6xady411kx81crwnbgqh1afxlfjakgwdhbwznqvrjnbb98dh1r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJpcC1maW5kZXIiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpcC1maW5kZXIiLAogICJuYW1lIjogIklQIEZpbmRlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wdWJsaWMtaXAtYWRkcmVzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0xpbnhHZW0zMy9JUC1GaW5kZXIiLAogICJ1dWlkIjogIklQLUZpbmRlckBsaW54Z2VtMzMuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
     "40": {"version": "9", "sha256": "08m3cga2xxkfwk3divpisf5zpyibj899ayzhhvznf0yxg4dh2x79", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJpcC1maW5kZXIiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpcC1maW5kZXIiLAogICJuYW1lIjogIklQIEZpbmRlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wdWJsaWMtaXAtYWRkcmVzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vTGlueEdlbTMzL0lQLUZpbmRlciIsCiAgInV1aWQiOiAiSVAtRmluZGVyQGxpbnhnZW0zMy5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
     "41": {"version": "9", "sha256": "08m3cga2xxkfwk3divpisf5zpyibj899ayzhhvznf0yxg4dh2x79", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJpcC1maW5kZXIiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpcC1maW5kZXIiLAogICJuYW1lIjogIklQIEZpbmRlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wdWJsaWMtaXAtYWRkcmVzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vTGlueEdlbTMzL0lQLUZpbmRlciIsCiAgInV1aWQiOiAiSVAtRmluZGVyQGxpbnhnZW0zMy5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
     "42": {"version": "10", "sha256": "10fjnjgnjgps87v5gn0g2dn8bd15fm2qwc94snrizkcr78an1bfs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJpcC1maW5kZXIiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpcC1maW5kZXIiLAogICJuYW1lIjogIklQIEZpbmRlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wdWJsaWMtaXAtYWRkcmVzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9MaW54R2VtMzMvSVAtRmluZGVyIiwKICAidXVpZCI6ICJJUC1GaW5kZXJAbGlueGdlbTMzLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "43": {"version": "16", "sha256": "0rn17nx1awl85ldrbwqdcyiyflaqgin3wq178pwnwlwlh80jzl46", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImdldHRleHQtZG9tYWluIjogImlwLWZpbmRlciIsCiAgIm5hbWUiOiAiSVAgRmluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmlwLWZpbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vTGlueEdlbTMzL0lQLUZpbmRlciIsCiAgInV1aWQiOiAiSVAtRmluZGVyQGxpbnhnZW0zMy5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="},
     "44": {"version": "16", "sha256": "0rn17nx1awl85ldrbwqdcyiyflaqgin3wq178pwnwlwlh80jzl46", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImdldHRleHQtZG9tYWluIjogImlwLWZpbmRlciIsCiAgIm5hbWUiOiAiSVAgRmluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmlwLWZpbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vTGlueEdlbTMzL0lQLUZpbmRlciIsCiAgInV1aWQiOiAiSVAtRmluZGVyQGxpbnhnZW0zMy5jb20iLAogICJ2ZXJzaW9uIjogMTYKfQ=="},
-    "45": {"version": "20", "sha256": "17a2f11qa25lk3cq29kd2442hsi0csk2q120w1pfcy7m42dmp72l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImdldHRleHQtZG9tYWluIjogImlwLWZpbmRlciIsCiAgIm5hbWUiOiAiSVAgRmluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmlwLWZpbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9MaW54R2VtMzMvSVAtRmluZGVyIiwKICAidXVpZCI6ICJJUC1GaW5kZXJAbGlueGdlbTMzLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"}
+    "45": {"version": "20", "sha256": "17a2f11qa25lk3cq29kd2442hsi0csk2q120w1pfcy7m42dmp72l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImdldHRleHQtZG9tYWluIjogImlwLWZpbmRlciIsCiAgIm5hbWUiOiAiSVAgRmluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmlwLWZpbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9MaW54R2VtMzMvSVAtRmluZGVyIiwKICAidXVpZCI6ICJJUC1GaW5kZXJAbGlueGdlbTMzLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"},
+    "46": {"version": "21", "sha256": "0gmfiqvsl9nl219qvw6x9v0kjpk7xb7gzs5vjr88krhzzcvxbpgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIHB1YmxpYyBJUCBBZGRyZXNzIGFuZCBWUE4gc3RhdHVzLiIsCiAgImdldHRleHQtZG9tYWluIjogImlwLWZpbmRlciIsCiAgIm5hbWUiOiAiSVAgRmluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmlwLWZpbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9MaW54R2VtMzMvSVAtRmluZGVyIiwKICAidXVpZCI6ICJJUC1GaW5kZXJAbGlueGdlbTMzLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"}
   }}
 , {"uuid": "runcat@kolesnikov.se", "name": "RunCat", "pname": "runcat", "description": "The cat tells you the CPU usage by running speed", "link": "https://extensions.gnome.org/extension/2986/runcat/", "shell_version_map": {
     "38": {"version": "19", "sha256": "1l15bacj0rn9s4y3ksqqfk0jps12xvdajlvfllb1mjiijw4qdcx6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBjYXQgdGVsbHMgeW91IHRoZSBDUFUgdXNhZ2UgYnkgcnVubmluZyBzcGVlZCIsCiAgIm5hbWUiOiAiUnVuQ2F0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dpbjBlcnIvZ25vbWUtcnVuY2F0IiwKICAidXVpZCI6ICJydW5jYXRAa29sZXNuaWtvdi5zZSIsCiAgInZlcnNpb24iOiAxOQp9"},
@@ -2188,7 +2286,8 @@
     "42": {"version": "23", "sha256": "1hj57dm6a1ip664dxbqbv233viy0zwi3bcfsmlvn4h9x00ainc47", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBjYXQgdGVsbHMgeW91IHRoZSBDUFUgdXNhZ2UgYnkgcnVubmluZyBzcGVlZCIsCiAgImdldHRleHQtZG9tYWluIjogInJ1bmNhdEBrb2xlc25pa292LnNlIiwKICAibmFtZSI6ICJSdW5DYXQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93aW4wZXJyL2dub21lLXJ1bmNhdCIsCiAgInV1aWQiOiAicnVuY2F0QGtvbGVzbmlrb3Yuc2UiLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
     "43": {"version": "23", "sha256": "1hj57dm6a1ip664dxbqbv233viy0zwi3bcfsmlvn4h9x00ainc47", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBjYXQgdGVsbHMgeW91IHRoZSBDUFUgdXNhZ2UgYnkgcnVubmluZyBzcGVlZCIsCiAgImdldHRleHQtZG9tYWluIjogInJ1bmNhdEBrb2xlc25pa292LnNlIiwKICAibmFtZSI6ICJSdW5DYXQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93aW4wZXJyL2dub21lLXJ1bmNhdCIsCiAgInV1aWQiOiAicnVuY2F0QGtvbGVzbmlrb3Yuc2UiLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
     "44": {"version": "23", "sha256": "1hj57dm6a1ip664dxbqbv233viy0zwi3bcfsmlvn4h9x00ainc47", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBjYXQgdGVsbHMgeW91IHRoZSBDUFUgdXNhZ2UgYnkgcnVubmluZyBzcGVlZCIsCiAgImdldHRleHQtZG9tYWluIjogInJ1bmNhdEBrb2xlc25pa292LnNlIiwKICAibmFtZSI6ICJSdW5DYXQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93aW4wZXJyL2dub21lLXJ1bmNhdCIsCiAgInV1aWQiOiAicnVuY2F0QGtvbGVzbmlrb3Yuc2UiLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
-    "45": {"version": "26", "sha256": "1aifbphr5yrqk4lwlxz2lzvbhd6673p0p9jnl8w7xvimbhqgf8vv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBjYXQgdGVsbHMgeW91IHRoZSBDUFUgdXNhZ2UgYnkgcnVubmluZyBzcGVlZCIsCiAgImdldHRleHQtZG9tYWluIjogInJ1bmNhdEBrb2xlc25pa292LnNlIiwKICAibmFtZSI6ICJSdW5DYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuY2F0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dpbjBlcnIvZ25vbWUtcnVuY2F0IiwKICAidXVpZCI6ICJydW5jYXRAa29sZXNuaWtvdi5zZSIsCiAgInZlcnNpb24iOiAyNgp9"}
+    "45": {"version": "27", "sha256": "0apb33c415lqisr382zs2kci0mf43idb9gxj7ch35wql6clvxsxz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBjYXQgdGVsbHMgeW91IHRoZSBDUFUgdXNhZ2UgYnkgcnVubmluZyBzcGVlZCIsCiAgImdldHRleHQtZG9tYWluIjogInJ1bmNhdEBrb2xlc25pa292LnNlIiwKICAibmFtZSI6ICJSdW5DYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuY2F0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93aW4wZXJyL2dub21lLXJ1bmNhdCIsCiAgInV1aWQiOiAicnVuY2F0QGtvbGVzbmlrb3Yuc2UiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
+    "46": {"version": "27", "sha256": "0apb33c415lqisr382zs2kci0mf43idb9gxj7ch35wql6clvxsxz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBjYXQgdGVsbHMgeW91IHRoZSBDUFUgdXNhZ2UgYnkgcnVubmluZyBzcGVlZCIsCiAgImdldHRleHQtZG9tYWluIjogInJ1bmNhdEBrb2xlc25pa292LnNlIiwKICAibmFtZSI6ICJSdW5DYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucnVuY2F0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93aW4wZXJyL2dub21lLXJ1bmNhdCIsCiAgInV1aWQiOiAicnVuY2F0QGtvbGVzbmlrb3Yuc2UiLAogICJ2ZXJzaW9uIjogMjcKfQ=="}
   }}
 , {"uuid": "bowser-gnome@kronosoul.xyz", "name": "Bowser Gnome Extension", "pname": "bowser-gnome-extension", "description": "Create rules to open specific websites in specific web browsers for links clicked in any application on your computer. (emails, chat etc)", "link": "https://extensions.gnome.org/extension/2989/bowser-gnome-extension/", "shell_version_map": {
     "38": {"version": "13", "sha256": "1qh02pk4s8lni7rgsbbdv1hb1brh4sfqkr82f4a9lcll2s486hfr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImFwcGxpY2F0aW9uLWlkIjogIm9yZy5rcm9ub3NvdWwuQm93c2VyIiwKICAiZGVzY3JpcHRpb24iOiAiQ3JlYXRlIHJ1bGVzIHRvIG9wZW4gc3BlY2lmaWMgd2Vic2l0ZXMgaW4gc3BlY2lmaWMgd2ViIGJyb3dzZXJzIGZvciBsaW5rcyBjbGlja2VkIGluIGFueSBhcHBsaWNhdGlvbiBvbiB5b3VyIGNvbXB1dGVyLiAoZW1haWxzLCBjaGF0IGV0YykiLAogICJleHRlbnNpb24taWQiOiAiYm93c2VyLWdub21lIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYm93c2VyLWdub21lIiwKICAibmFtZSI6ICJCb3dzZXIgR25vbWUgRXh0ZW5zaW9uIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImFkbWluQGtyb25vc291bC54eXoiLAogICJyZXNvdXJjZS1wYXRoIjogIi9vcmcva3Jvbm9zb3VsL0Jvd3Nlci8iLAogICJzZXR0aW5ncy1wYXRoIjogIi9vcmcvZ25vbWUvc2hlbGwvZXh0ZW5zaW9ucy9Cb3dzZXIvIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkJvd3NlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ibGlway9ib3dzZXItZ25vbWUiLAogICJ1dWlkIjogImJvd3Nlci1nbm9tZUBrcm9ub3NvdWwueHl6IiwKICAidmVyc2lvbiI6IDEzCn0="},
@@ -2204,7 +2303,8 @@
     "42": {"version": "11", "sha256": "0p0crv91n0lals20hkrvivj00yhsadkwy9s2bfdyzmk6slwa35rb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxlbm92byBJZGVhUGFkIGdvb2RpZXMgZm9yIEdub21lIFNoZWxsXG5cbkF0IHRoZSBtb21lbnQgdGhlIGV4dGVuc2lvbiBvbmx5IHByb3ZpZGVzIGFuIGVhc3kgYW5kIHVzZXItZnJpZW5kbHkgd2F5IHRvIHRvZ2dsZSBiYXR0ZXJ5IGNvbnNlcnZhdGlvbiBtb2RlIGF2YWlsYWJsZSBvbiBMZXZvbm8gSWRlYXBhZCBsYXB0b3BzIGFuZCB2aXN1YWxseSBnZXQgaXRzIGN1cnJlbnQgc3RhdGUuXG5cbkNvbmZpZ3VyYXRpb24gbmVlZGVkISBQbGVhc2UgY2hlY2sgdGhlIGluc3RydWN0aW9uIG9uIHRoZSBob21lcGFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpZGVhcGFkIiwKICAibmFtZSI6ICJJZGVhUGFkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGF1cmVudG8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWlkZWFwYWQiLAogICJ1dWlkIjogImlkZWFwYWRAbGF1cmVudG8uZnJpdHRlbGxhIiwKICAidmVyc2lvbiI6IDExCn0="},
     "43": {"version": "12", "sha256": "1z9n3qfr129ismgzw7nwgmq0gwjwf7y7lzq7mcdw0dc227gkxww3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxlbm92byBJZGVhUGFkIGdvb2RpZXMgZm9yIEdub21lIFNoZWxsXG5cbkF0IHRoZSBtb21lbnQgdGhlIGV4dGVuc2lvbiBvbmx5IHByb3ZpZGVzIGFuIGVhc3kgYW5kIHVzZXItZnJpZW5kbHkgd2F5IHRvIHRvZ2dsZSBiYXR0ZXJ5IGNvbnNlcnZhdGlvbiBtb2RlIGF2YWlsYWJsZSBvbiBMZXZvbm8gSWRlYXBhZCBsYXB0b3BzIGFuZCB2aXN1YWxseSBnZXQgaXRzIGN1cnJlbnQgc3RhdGUuXG5cbkNvbmZpZ3VyYXRpb24gbmVlZGVkISBQbGVhc2UgY2hlY2sgdGhlIGluc3RydWN0aW9uIG9uIHRoZSBob21lcGFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpZGVhcGFkIiwKICAibmFtZSI6ICJJZGVhUGFkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xhdXJlbnRvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1pZGVhcGFkIiwKICAidXVpZCI6ICJpZGVhcGFkQGxhdXJlbnRvLmZyaXR0ZWxsYSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "14", "sha256": "1s5nzq74q4zvb3mmzrxkzlwb24m520c3yssddgwkqx956xi0h743", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxlbm92byBJZGVhUGFkIGdvb2RpZXMgZm9yIEdub21lIFNoZWxsXG5cbkF0IHRoZSBtb21lbnQgdGhlIGV4dGVuc2lvbiBvbmx5IHByb3ZpZGVzIGFuIGVhc3kgYW5kIHVzZXItZnJpZW5kbHkgd2F5IHRvIHRvZ2dsZSBiYXR0ZXJ5IGNvbnNlcnZhdGlvbiBtb2RlIGF2YWlsYWJsZSBvbiBMZXZvbm8gSWRlYXBhZCBsYXB0b3BzIGFuZCB2aXN1YWxseSBnZXQgaXRzIGN1cnJlbnQgc3RhdGUuXG5cbkNvbmZpZ3VyYXRpb24gbmVlZGVkISBQbGVhc2UgY2hlY2sgdGhlIGluc3RydWN0aW9uIG9uIHRoZSBob21lcGFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpZGVhcGFkIiwKICAibmFtZSI6ICJJZGVhUGFkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xhdXJlbnRvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1pZGVhcGFkIiwKICAidXVpZCI6ICJpZGVhcGFkQGxhdXJlbnRvLmZyaXR0ZWxsYSIsCiAgInZlcnNpb24iOiAxNAp9"},
-    "45": {"version": "17", "sha256": "1mxy3g0q16mhf18gc4yvxdmwrrrhg7rxis2ccabl6zb0sinskfkd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxlbm92byBJZGVhUGFkIGdvb2RpZXMgZm9yIEdub21lIFNoZWxsXG5cbkF0IHRoZSBtb21lbnQgdGhlIGV4dGVuc2lvbiBvbmx5IHByb3ZpZGVzIGFuIGVhc3kgYW5kIHVzZXItZnJpZW5kbHkgd2F5IHRvIHRvZ2dsZSBiYXR0ZXJ5IGNvbnNlcnZhdGlvbiBtb2RlIGF2YWlsYWJsZSBvbiBMZXZvbm8gSWRlYXBhZCBsYXB0b3BzIGFuZCB2aXN1YWxseSBnZXQgaXRzIGN1cnJlbnQgc3RhdGUuXG5cbkNvbmZpZ3VyYXRpb24gbmVlZGVkISBQbGVhc2UgY2hlY2sgdGhlIGluc3RydWN0aW9uIG9uIHRoZSBob21lcGFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpZGVhcGFkIiwKICAibmFtZSI6ICJJZGVhUGFkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xhdXJlbnRvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1pZGVhcGFkIiwKICAidXVpZCI6ICJpZGVhcGFkQGxhdXJlbnRvLmZyaXR0ZWxsYSIsCiAgInZlcnNpb24iOiAxNwp9"}
+    "45": {"version": "18", "sha256": "0jszd9hq7bjw6ai2s3j098mjwspj8pk72rd29sxamx63ydrxmy27", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxlbm92byBJZGVhUGFkIGdvb2RpZXMgZm9yIEdub21lIFNoZWxsXG5cbkF0IHRoZSBtb21lbnQgdGhlIGV4dGVuc2lvbiBvbmx5IHByb3ZpZGVzIGFuIGVhc3kgYW5kIHVzZXItZnJpZW5kbHkgd2F5IHRvIHRvZ2dsZSBiYXR0ZXJ5IGNvbnNlcnZhdGlvbiBtb2RlIGF2YWlsYWJsZSBvbiBMZXZvbm8gSWRlYXBhZCBsYXB0b3BzIGFuZCB2aXN1YWxseSBnZXQgaXRzIGN1cnJlbnQgc3RhdGUuXG5cbkNvbmZpZ3VyYXRpb24gbmVlZGVkISBQbGVhc2UgY2hlY2sgdGhlIGluc3RydWN0aW9uIG9uIHRoZSBob21lcGFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpZGVhcGFkIiwKICAibmFtZSI6ICJJZGVhUGFkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sYXVyZW50by9nbm9tZS1zaGVsbC1leHRlbnNpb24taWRlYXBhZCIsCiAgInV1aWQiOiAiaWRlYXBhZEBsYXVyZW50by5mcml0dGVsbGEiLAogICJ2ZXJzaW9uIjogMTgKfQ=="},
+    "46": {"version": "18", "sha256": "0jszd9hq7bjw6ai2s3j098mjwspj8pk72rd29sxamx63ydrxmy27", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxlbm92byBJZGVhUGFkIGdvb2RpZXMgZm9yIEdub21lIFNoZWxsXG5cbkF0IHRoZSBtb21lbnQgdGhlIGV4dGVuc2lvbiBvbmx5IHByb3ZpZGVzIGFuIGVhc3kgYW5kIHVzZXItZnJpZW5kbHkgd2F5IHRvIHRvZ2dsZSBiYXR0ZXJ5IGNvbnNlcnZhdGlvbiBtb2RlIGF2YWlsYWJsZSBvbiBMZXZvbm8gSWRlYXBhZCBsYXB0b3BzIGFuZCB2aXN1YWxseSBnZXQgaXRzIGN1cnJlbnQgc3RhdGUuXG5cbkNvbmZpZ3VyYXRpb24gbmVlZGVkISBQbGVhc2UgY2hlY2sgdGhlIGluc3RydWN0aW9uIG9uIHRoZSBob21lcGFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJpZGVhcGFkIiwKICAibmFtZSI6ICJJZGVhUGFkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sYXVyZW50by9nbm9tZS1zaGVsbC1leHRlbnNpb24taWRlYXBhZCIsCiAgInV1aWQiOiAiaWRlYXBhZEBsYXVyZW50by5mcml0dGVsbGEiLAogICJ2ZXJzaW9uIjogMTgKfQ=="}
   }}
 , {"uuid": "system-monitor-next@paradoxxx.zero.gmail.com", "name": "system-monitor-next", "pname": "system-monitor-next", "description": "Display system information in GNOME Shell status bar, such as memory, CPU, disk and battery usages, network rates…\n\nThis is a fork of the seemingly abandoned paradoxxxzero/gnome-shell-system-monitor-applet.\n\nIf you get an error after updating, try logging out and logging back in (this is a known issue that is being worked on).", "link": "https://extensions.gnome.org/extension/3010/system-monitor-next/", "shell_version_map": {
     "40": {"version": "55", "sha256": "0fwxj41ka95mxrjy3xbywqxm0fp00irypkwcg316pyy9cva4rk01", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgc3lzdGVtIGluZm9ybWF0aW9uIGluIEdOT01FIFNoZWxsIHN0YXR1cyBiYXIsIHN1Y2ggYXMgbWVtb3J5LCBDUFUsIGRpc2sgYW5kIGJhdHRlcnkgdXNhZ2VzLCBuZXR3b3JrIHJhdGVzXHUyMDI2XG5cblRoaXMgZm9yayBvZiBwYXJhZG94eHh6ZXJvL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCBpcyBmb3IgcGFja2FnaW5nIHB1cnBvc2VzIG9ubHkuIFRoaXMgZXh0ZW5zaW9uIGlzIGJ1aWx0IGFuZCB1cGRhdGVkIGNvbnRpbnVvdXNseSB3aXRoIHRoZSB1cHN0cmVhbSBtYXN0ZXIgYnJhbmNoLCBvY2Nhc2lvbmFsbHkgaW5jbHVkaW5nIHBhdGNoZXMgdGhhdCBoYXZlbid0IHlldCBtZXJnZWQgdXBzdHJlYW0uXG5cblRoaXMgaXMgcHJlZmVyYWJsZSBmb3IgdXNlcnMgb24gYmxlZWRpbmcgZWRnZSBkaXN0cmlidXRpb25zIHRoYXQgcHJlZmVyIG5vdCB0byB3YWl0IGZvciBhIHN0YWJsZSByZWxlYXNlIGZyb20gdGhlIG1haW4gcmVwby4gT2YgY291cnNlLCBzaW5jZSB3ZSdyZSByZWxlYXNpbmcgZGlyZWN0bHkgZnJvbSBtYXN0ZXIgc29tZSBpbnN0YWJpbGl0eSBpcyBpbmV2aXRhYmxlLlxuXG5JZiB5b3UgZ2V0IGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCB0cnkgcmVzdGFydGluZyBHbm9tZSBTaGVsbCB3aXRoIEFsdC1GMiB0aGVuICdyJy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzeXN0ZW0tbW9uaXRvciIsCiAgIm5hbWUiOiAic3lzdGVtLW1vbml0b3ItbmV4dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zeXN0ZW0tbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWdhbGdzL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItbmV4dEBwYXJhZG94eHguemVyby5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNTUKfQ=="},
@@ -2212,7 +2312,8 @@
     "42": {"version": "55", "sha256": "0fwxj41ka95mxrjy3xbywqxm0fp00irypkwcg316pyy9cva4rk01", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgc3lzdGVtIGluZm9ybWF0aW9uIGluIEdOT01FIFNoZWxsIHN0YXR1cyBiYXIsIHN1Y2ggYXMgbWVtb3J5LCBDUFUsIGRpc2sgYW5kIGJhdHRlcnkgdXNhZ2VzLCBuZXR3b3JrIHJhdGVzXHUyMDI2XG5cblRoaXMgZm9yayBvZiBwYXJhZG94eHh6ZXJvL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCBpcyBmb3IgcGFja2FnaW5nIHB1cnBvc2VzIG9ubHkuIFRoaXMgZXh0ZW5zaW9uIGlzIGJ1aWx0IGFuZCB1cGRhdGVkIGNvbnRpbnVvdXNseSB3aXRoIHRoZSB1cHN0cmVhbSBtYXN0ZXIgYnJhbmNoLCBvY2Nhc2lvbmFsbHkgaW5jbHVkaW5nIHBhdGNoZXMgdGhhdCBoYXZlbid0IHlldCBtZXJnZWQgdXBzdHJlYW0uXG5cblRoaXMgaXMgcHJlZmVyYWJsZSBmb3IgdXNlcnMgb24gYmxlZWRpbmcgZWRnZSBkaXN0cmlidXRpb25zIHRoYXQgcHJlZmVyIG5vdCB0byB3YWl0IGZvciBhIHN0YWJsZSByZWxlYXNlIGZyb20gdGhlIG1haW4gcmVwby4gT2YgY291cnNlLCBzaW5jZSB3ZSdyZSByZWxlYXNpbmcgZGlyZWN0bHkgZnJvbSBtYXN0ZXIgc29tZSBpbnN0YWJpbGl0eSBpcyBpbmV2aXRhYmxlLlxuXG5JZiB5b3UgZ2V0IGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCB0cnkgcmVzdGFydGluZyBHbm9tZSBTaGVsbCB3aXRoIEFsdC1GMiB0aGVuICdyJy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzeXN0ZW0tbW9uaXRvciIsCiAgIm5hbWUiOiAic3lzdGVtLW1vbml0b3ItbmV4dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zeXN0ZW0tbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWdhbGdzL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItbmV4dEBwYXJhZG94eHguemVyby5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNTUKfQ=="},
     "43": {"version": "55", "sha256": "0fwxj41ka95mxrjy3xbywqxm0fp00irypkwcg316pyy9cva4rk01", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgc3lzdGVtIGluZm9ybWF0aW9uIGluIEdOT01FIFNoZWxsIHN0YXR1cyBiYXIsIHN1Y2ggYXMgbWVtb3J5LCBDUFUsIGRpc2sgYW5kIGJhdHRlcnkgdXNhZ2VzLCBuZXR3b3JrIHJhdGVzXHUyMDI2XG5cblRoaXMgZm9yayBvZiBwYXJhZG94eHh6ZXJvL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCBpcyBmb3IgcGFja2FnaW5nIHB1cnBvc2VzIG9ubHkuIFRoaXMgZXh0ZW5zaW9uIGlzIGJ1aWx0IGFuZCB1cGRhdGVkIGNvbnRpbnVvdXNseSB3aXRoIHRoZSB1cHN0cmVhbSBtYXN0ZXIgYnJhbmNoLCBvY2Nhc2lvbmFsbHkgaW5jbHVkaW5nIHBhdGNoZXMgdGhhdCBoYXZlbid0IHlldCBtZXJnZWQgdXBzdHJlYW0uXG5cblRoaXMgaXMgcHJlZmVyYWJsZSBmb3IgdXNlcnMgb24gYmxlZWRpbmcgZWRnZSBkaXN0cmlidXRpb25zIHRoYXQgcHJlZmVyIG5vdCB0byB3YWl0IGZvciBhIHN0YWJsZSByZWxlYXNlIGZyb20gdGhlIG1haW4gcmVwby4gT2YgY291cnNlLCBzaW5jZSB3ZSdyZSByZWxlYXNpbmcgZGlyZWN0bHkgZnJvbSBtYXN0ZXIgc29tZSBpbnN0YWJpbGl0eSBpcyBpbmV2aXRhYmxlLlxuXG5JZiB5b3UgZ2V0IGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCB0cnkgcmVzdGFydGluZyBHbm9tZSBTaGVsbCB3aXRoIEFsdC1GMiB0aGVuICdyJy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzeXN0ZW0tbW9uaXRvciIsCiAgIm5hbWUiOiAic3lzdGVtLW1vbml0b3ItbmV4dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zeXN0ZW0tbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWdhbGdzL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItbmV4dEBwYXJhZG94eHguemVyby5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNTUKfQ=="},
     "44": {"version": "55", "sha256": "0fwxj41ka95mxrjy3xbywqxm0fp00irypkwcg316pyy9cva4rk01", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgc3lzdGVtIGluZm9ybWF0aW9uIGluIEdOT01FIFNoZWxsIHN0YXR1cyBiYXIsIHN1Y2ggYXMgbWVtb3J5LCBDUFUsIGRpc2sgYW5kIGJhdHRlcnkgdXNhZ2VzLCBuZXR3b3JrIHJhdGVzXHUyMDI2XG5cblRoaXMgZm9yayBvZiBwYXJhZG94eHh6ZXJvL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCBpcyBmb3IgcGFja2FnaW5nIHB1cnBvc2VzIG9ubHkuIFRoaXMgZXh0ZW5zaW9uIGlzIGJ1aWx0IGFuZCB1cGRhdGVkIGNvbnRpbnVvdXNseSB3aXRoIHRoZSB1cHN0cmVhbSBtYXN0ZXIgYnJhbmNoLCBvY2Nhc2lvbmFsbHkgaW5jbHVkaW5nIHBhdGNoZXMgdGhhdCBoYXZlbid0IHlldCBtZXJnZWQgdXBzdHJlYW0uXG5cblRoaXMgaXMgcHJlZmVyYWJsZSBmb3IgdXNlcnMgb24gYmxlZWRpbmcgZWRnZSBkaXN0cmlidXRpb25zIHRoYXQgcHJlZmVyIG5vdCB0byB3YWl0IGZvciBhIHN0YWJsZSByZWxlYXNlIGZyb20gdGhlIG1haW4gcmVwby4gT2YgY291cnNlLCBzaW5jZSB3ZSdyZSByZWxlYXNpbmcgZGlyZWN0bHkgZnJvbSBtYXN0ZXIgc29tZSBpbnN0YWJpbGl0eSBpcyBpbmV2aXRhYmxlLlxuXG5JZiB5b3UgZ2V0IGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCB0cnkgcmVzdGFydGluZyBHbm9tZSBTaGVsbCB3aXRoIEFsdC1GMiB0aGVuICdyJy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzeXN0ZW0tbW9uaXRvciIsCiAgIm5hbWUiOiAic3lzdGVtLW1vbml0b3ItbmV4dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zeXN0ZW0tbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yNiIsCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWdhbGdzL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItbmV4dEBwYXJhZG94eHguemVyby5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNTUKfQ=="},
-    "45": {"version": "65", "sha256": "0jzvq51p0y9rjq40fqz59l95r7bpsa0yp3yy5xmgssncimy4r5vx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgc3lzdGVtIGluZm9ybWF0aW9uIGluIEdOT01FIFNoZWxsIHN0YXR1cyBiYXIsIHN1Y2ggYXMgbWVtb3J5LCBDUFUsIGRpc2sgYW5kIGJhdHRlcnkgdXNhZ2VzLCBuZXR3b3JrIHJhdGVzXHUyMDI2XG5cblRoaXMgaXMgYSBmb3JrIG9mIHRoZSBzZWVtaW5nbHkgYWJhbmRvbmVkIHBhcmFkb3h4eHplcm8vZ25vbWUtc2hlbGwtc3lzdGVtLW1vbml0b3ItYXBwbGV0LlxuXG5JZiB5b3UgZ2V0IGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCB0cnkgbG9nZ2luZyBvdXQgYW5kIGxvZ2dpbmcgYmFjayBpbiAodGhpcyBpcyBhIGtub3duIGlzc3VlIHRoYXQgaXMgYmVpbmcgd29ya2VkIG9uKS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzeXN0ZW0tbW9uaXRvciIsCiAgIm5hbWUiOiAic3lzdGVtLW1vbml0b3ItbmV4dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zeXN0ZW0tbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tZ2FsZ3MvZ25vbWUtc2hlbGwtc3lzdGVtLW1vbml0b3ItYXBwbGV0IiwKICAidXVpZCI6ICJzeXN0ZW0tbW9uaXRvci1uZXh0QHBhcmFkb3h4eC56ZXJvLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA2NQp9"}
+    "45": {"version": "66", "sha256": "0b7pyj9hqilpvdcnkx6d05836322gnw1r4rkaggngbbhmgvazffx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgc3lzdGVtIGluZm9ybWF0aW9uIGluIEdOT01FIFNoZWxsIHN0YXR1cyBiYXIsIHN1Y2ggYXMgbWVtb3J5LCBDUFUsIGRpc2sgYW5kIGJhdHRlcnkgdXNhZ2VzLCBuZXR3b3JrIHJhdGVzXHUyMDI2XG5cblRoaXMgaXMgYSBmb3JrIG9mIHRoZSBzZWVtaW5nbHkgYWJhbmRvbmVkIHBhcmFkb3h4eHplcm8vZ25vbWUtc2hlbGwtc3lzdGVtLW1vbml0b3ItYXBwbGV0LlxuXG5JZiB5b3UgZ2V0IGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCB0cnkgbG9nZ2luZyBvdXQgYW5kIGxvZ2dpbmcgYmFjayBpbiAodGhpcyBpcyBhIGtub3duIGlzc3VlIHRoYXQgaXMgYmVpbmcgd29ya2VkIG9uKS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzeXN0ZW0tbW9uaXRvciIsCiAgIm5hbWUiOiAic3lzdGVtLW1vbml0b3ItbmV4dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zeXN0ZW0tbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWdhbGdzL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItbmV4dEBwYXJhZG94eHguemVyby5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNjYKfQ=="},
+    "46": {"version": "66", "sha256": "0b7pyj9hqilpvdcnkx6d05836322gnw1r4rkaggngbbhmgvazffx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgc3lzdGVtIGluZm9ybWF0aW9uIGluIEdOT01FIFNoZWxsIHN0YXR1cyBiYXIsIHN1Y2ggYXMgbWVtb3J5LCBDUFUsIGRpc2sgYW5kIGJhdHRlcnkgdXNhZ2VzLCBuZXR3b3JrIHJhdGVzXHUyMDI2XG5cblRoaXMgaXMgYSBmb3JrIG9mIHRoZSBzZWVtaW5nbHkgYWJhbmRvbmVkIHBhcmFkb3h4eHplcm8vZ25vbWUtc2hlbGwtc3lzdGVtLW1vbml0b3ItYXBwbGV0LlxuXG5JZiB5b3UgZ2V0IGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCB0cnkgbG9nZ2luZyBvdXQgYW5kIGxvZ2dpbmcgYmFjayBpbiAodGhpcyBpcyBhIGtub3duIGlzc3VlIHRoYXQgaXMgYmVpbmcgd29ya2VkIG9uKS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzeXN0ZW0tbW9uaXRvciIsCiAgIm5hbWUiOiAic3lzdGVtLW1vbml0b3ItbmV4dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zeXN0ZW0tbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWdhbGdzL2dub21lLXNoZWxsLXN5c3RlbS1tb25pdG9yLWFwcGxldCIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItbmV4dEBwYXJhZG94eHguemVyby5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNjYKfQ=="}
   }}
 , {"uuid": "user-theme-x@tuberry.github.io", "name": "User Theme X", "pname": "user-themes-x", "description": "Customizable user-theme with user stylesheet and dark theme auto-switch based on the Night Light\n\nFor support, please report any issues via the homepage link below.", "link": "https://extensions.gnome.org/extension/3019/user-themes-x/", "shell_version_map": {
     "38": {"version": "21", "sha256": "0qiahmg2nmrnlyablyava1488rvy0r2rq8pyv932lsx6vrn9gh6m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6YWJsZSB1c2VyLXRoZW1lIHdpdGggdXNlciBzdHlsZXNoZWV0IGFuZCBkYXJrIHRoZW1lIGF1dG8tc3dpdGNoIGJhc2VkIG9uIHRoZSBOaWdodCBMaWdodFxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJleHRlbnNpb24taWQiOiAidXNlci10aGVtZS14IiwKICAiZ2V0dGV4dC1kb21haW4iOiAidXNlci10aGVtZS14IiwKICAibmFtZSI6ICJVc2VyIFRoZW1lIFgiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImpvaG4uc3Rvd2Vyc0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzZXItdGhlbWUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L3VzZXItdGhlbWUteCIsCiAgInV1aWQiOiAidXNlci10aGVtZS14QHR1YmVycnkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDIxCn0="},
@@ -2221,7 +2322,8 @@
     "42": {"version": "28", "sha256": "0x1jcpf5x32bjffa6rpmvj6inkla3597b5qx3fn7kbjf5rb71w7l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6YWJsZSB1c2VyLXRoZW1lIHdpdGggdXNlciBzdHlsZXNoZWV0IGFuZCBkYXJrIHRoZW1lIGF1dG8tc3dpdGNoIGJhc2VkIG9uIHRoZSBOaWdodCBMaWdodFxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJleHRlbnNpb24taWQiOiAidXNlci10aGVtZS14IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVzZXItdGhlbWUteCIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZSBYIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJqb2huLnN0b3dlcnNAZ21haWwuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51c2VyLXRoZW1lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvdXNlci10aGVtZS14IiwKICAidXVpZCI6ICJ1c2VyLXRoZW1lLXhAdHViZXJyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjgKfQ=="},
     "43": {"version": "31", "sha256": "1aqni9lybrws04mz4k9ygpv2yqg0vs6867ga7k3ah6f92j8bin74", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6YWJsZSB1c2VyLXRoZW1lIHdpdGggdXNlciBzdHlsZXNoZWV0IGFuZCBkYXJrIHRoZW1lIGF1dG8tc3dpdGNoIGJhc2VkIG9uIHRoZSBOaWdodCBMaWdodFxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJleHRlbnNpb24taWQiOiAidXNlci10aGVtZS14IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVzZXItdGhlbWUteCIsCiAgIm5hbWUiOiAiVXNlciBUaGVtZSBYIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJqb2huLnN0b3dlcnNAZ21haWwuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51c2VyLXRoZW1lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvdXNlci10aGVtZS14IiwKICAidXVpZCI6ICJ1c2VyLXRoZW1lLXhAdHViZXJyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMzEKfQ=="},
     "44": {"version": "32", "sha256": "1i36lgx76p2fxa7kn0zaisc5jz6a2ky3dckxx2x3j3s91q5pn5ch", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6YWJsZSB1c2VyLXRoZW1lIHdpdGggdXNlciBzdHlsZXNoZWV0IGFuZCBkYXJrIHRoZW1lIGF1dG8tc3dpdGNoIGJhc2VkIG9uIHRoZSBOaWdodCBMaWdodFxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZS14IiwKICAibmFtZSI6ICJVc2VyIFRoZW1lIFgiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudXNlci10aGVtZS14IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvdXNlci10aGVtZS14IiwKICAidXVpZCI6ICJ1c2VyLXRoZW1lLXhAdHViZXJyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "45": {"version": "34", "sha256": "1hs8jdzal7jpw03fl3qppcvrdalhsy32hl2vchd5x92rfwamrm3q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6YWJsZSB1c2VyLXRoZW1lIHdpdGggdXNlciBzdHlsZXNoZWV0IGFuZCBkYXJrIHRoZW1lIGF1dG8tc3dpdGNoIGJhc2VkIG9uIHRoZSBOaWdodCBMaWdodFxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZS14IiwKICAibmFtZSI6ICJVc2VyIFRoZW1lIFgiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudXNlci10aGVtZS14IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvdXNlci10aGVtZS14IiwKICAidXVpZCI6ICJ1c2VyLXRoZW1lLXhAdHViZXJyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMzQKfQ=="}
+    "45": {"version": "34", "sha256": "1hs8jdzal7jpw03fl3qppcvrdalhsy32hl2vchd5x92rfwamrm3q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6YWJsZSB1c2VyLXRoZW1lIHdpdGggdXNlciBzdHlsZXNoZWV0IGFuZCBkYXJrIHRoZW1lIGF1dG8tc3dpdGNoIGJhc2VkIG9uIHRoZSBOaWdodCBMaWdodFxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZS14IiwKICAibmFtZSI6ICJVc2VyIFRoZW1lIFgiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudXNlci10aGVtZS14IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvdXNlci10aGVtZS14IiwKICAidXVpZCI6ICJ1c2VyLXRoZW1lLXhAdHViZXJyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
+    "46": {"version": "35", "sha256": "1fr7fzi57clvdm6cdb6wa9pdn8g88v979v3hmki8nvspwbqawyh1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6YWJsZSB1c2VyLXRoZW1lIHdpdGggdXNlciBzdHlsZXNoZWV0IGFuZCBkYXJrIHRoZW1lIGF1dG8tc3dpdGNoIGJhc2VkIG9uIHRoZSBOaWdodCBMaWdodFxuXG5Gb3Igc3VwcG9ydCwgcGxlYXNlIHJlcG9ydCBhbnkgaXNzdWVzIHZpYSB0aGUgaG9tZXBhZ2UgbGluayBiZWxvdy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdXNlci10aGVtZS14IiwKICAibmFtZSI6ICJVc2VyIFRoZW1lIFgiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudXNlci10aGVtZS14IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvdXNlci10aGVtZS14IiwKICAidXVpZCI6ICJ1c2VyLXRoZW1lLXhAdHViZXJyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMzUKfQ=="}
   }}
 , {"uuid": "app_view_text@fawtytoo", "name": "Application View Text", "pname": "application-view-text", "description": "The text in the Application view can be hard to read on a light coloured background. This extension makes the text bolder with a drop shadow.\nAlso improves the visibility of the app running dot.", "link": "https://extensions.gnome.org/extension/3028/application-view-text/", "shell_version_map": {
     "38": {"version": "7", "sha256": "1dnf1rqg27y1c50sfmqcnswac93lkgml1hdaalq6lfzm8pbnpx0d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSB0ZXh0IGluIHRoZSBBcHBsaWNhdGlvbiB2aWV3IGNhbiBiZSBoYXJkIHRvIHJlYWQgb24gYSBsaWdodCBjb2xvdXJlZCBiYWNrZ3JvdW5kLiBUaGlzIGV4dGVuc2lvbiBtYWtlcyB0aGUgdGV4dCBib2xkZXIgd2l0aCBhIGRyb3Agc2hhZG93LlxuQWxzbyBpbXByb3ZlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgYXBwIHJ1bm5pbmcgZG90LiIsCiAgIm5hbWUiOiAiQXBwbGljYXRpb24gVmlldyBUZXh0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiYXBwX3ZpZXdfdGV4dEBmYXd0eXRvbyIsCiAgInZlcnNpb24iOiA3Cn0="},
@@ -2252,7 +2354,8 @@
     "42": {"version": "30", "sha256": "1hnidb1f6cawfhmkql4y8kz3rq0ibqcfk678yz1n12l2gp3vvvz3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gbWFuYWdlciBpbiB0aGUgdG9wIHBhbmVsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1leHRlbnNpb24tbGlzdCIsCiAgIm5hbWUiOiAiRXh0ZW5zaW9uIExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZXh0ZW5zaW9uLWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9leHRlbnNpb24tbGlzdCIsCiAgInV1aWQiOiAiZXh0ZW5zaW9uLWxpc3RAdHUuYmVycnkiLAogICJ2ZXJzaW9uIjogMzAKfQ=="},
     "43": {"version": "34", "sha256": "0jq0c80y20d8rljn1478v537lch6klwir0gkzp35y03s1wj0ma36", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gbWFuYWdlciBpbiB0aGUgdG9wIHBhbmVsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1leHRlbnNpb24tbGlzdCIsCiAgIm5hbWUiOiAiRXh0ZW5zaW9uIExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZXh0ZW5zaW9uLWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9leHRlbnNpb24tbGlzdCIsCiAgInV1aWQiOiAiZXh0ZW5zaW9uLWxpc3RAdHUuYmVycnkiLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "44": {"version": "35", "sha256": "1py1lbb00f9kcylc96kk2lr9r8ka9liyxhxxz1nzggz3jzxphw06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gbWFuYWdlciBpbiB0aGUgdG9wIHBhbmVsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1leHRlbnNpb24tbGlzdCIsCiAgIm5hbWUiOiAiRXh0ZW5zaW9uIExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZXh0ZW5zaW9uLWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9leHRlbnNpb24tbGlzdCIsCiAgInV1aWQiOiAiZXh0ZW5zaW9uLWxpc3RAdHUuYmVycnkiLAogICJ2ZXJzaW9uIjogMzUKfQ=="},
-    "45": {"version": "37", "sha256": "0algkzsdha6996w760nnqmm70n96aymr6ipinq9h95pzf208qy20", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gbWFuYWdlciBpbiB0aGUgdG9wIHBhbmVsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1leHRlbnNpb24tbGlzdCIsCiAgIm5hbWUiOiAiRXh0ZW5zaW9uIExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZXh0ZW5zaW9uLWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9leHRlbnNpb24tbGlzdCIsCiAgInV1aWQiOiAiZXh0ZW5zaW9uLWxpc3RAdHUuYmVycnkiLAogICJ2ZXJzaW9uIjogMzcKfQ=="}
+    "45": {"version": "37", "sha256": "0algkzsdha6996w760nnqmm70n96aymr6ipinq9h95pzf208qy20", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gbWFuYWdlciBpbiB0aGUgdG9wIHBhbmVsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1leHRlbnNpb24tbGlzdCIsCiAgIm5hbWUiOiAiRXh0ZW5zaW9uIExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZXh0ZW5zaW9uLWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9leHRlbnNpb24tbGlzdCIsCiAgInV1aWQiOiAiZXh0ZW5zaW9uLWxpc3RAdHUuYmVycnkiLAogICJ2ZXJzaW9uIjogMzcKfQ=="},
+    "46": {"version": "38", "sha256": "1z4fscfzg06ddaczc88rw2ymjzv8mf0drbca6aqcpdxivsjkgqhy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gbWFuYWdlciBpbiB0aGUgdG9wIHBhbmVsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1leHRlbnNpb24tbGlzdCIsCiAgIm5hbWUiOiAiRXh0ZW5zaW9uIExpc3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZXh0ZW5zaW9uLWxpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9leHRlbnNpb24tbGlzdCIsCiAgInV1aWQiOiAiZXh0ZW5zaW9uLWxpc3RAdHUuYmVycnkiLAogICJ2ZXJzaW9uIjogMzgKfQ=="}
   }}
 , {"uuid": "MaximizeToEmptyWorkspace-extension@kaisersite.de", "name": "Maximize To Empty Workspace", "pname": "maximize-to-empty-workspace", "description": "New and maximized windows will be moved to empty workspaces.\nSupports multiple monitors.", "link": "https://extensions.gnome.org/extension/3100/maximize-to-empty-workspace/", "shell_version_map": {
     "38": {"version": "13", "sha256": "0bxanhx2ylpw0rh69lfdhkixsfggkp7b119ah3rrslx7w71qki6m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5ldyBhbmQgbWF4aW1pemVkIHdpbmRvd3Mgd2lsbCBiZSBtb3ZlZCB0byBlbXB0eSB3b3Jrc3BhY2VzLlxuU3VwcG9ydHMgbXVsdGlwbGUgbW9uaXRvcnMuIiwKICAibmFtZSI6ICJNYXhpbWl6ZSBUbyBFbXB0eSBXb3Jrc3BhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2thaXNlcmFjbS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbWF4aW1pemUtdG8tZW1wdHktd29ya3NwYWNlIiwKICAidXVpZCI6ICJNYXhpbWl6ZVRvRW1wdHlXb3Jrc3BhY2UtZXh0ZW5zaW9uQGthaXNlcnNpdGUuZGUiLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
@@ -2293,7 +2396,8 @@
     "42": {"version": "47", "sha256": "04h957nzzvblk8zxiyanzyw02czdk459ljq1kkkhgk929cqsc0b3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBibHVyIGxvb2sgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBHTk9NRSBTaGVsbCwgaW5jbHVkaW5nIHRoZSB0b3AgcGFuZWwsIGRhc2ggYW5kIG92ZXJ2aWV3LlxuXG5Zb3UgY2FuIHN1cHBvcnQgbXkgd29yayBieSBzcG9uc29yaW5nIG1lIG9uOlxuLSBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9hdW5ldHhcbi0ga28tZmk6IGh0dHBzOi8va28tZmkuY29tL2F1bmV0eFxuXG5Ob3RlOiBpZiB0aGUgZXh0ZW5zaW9uIHNob3dzIGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHJlc3RhcnQgeW91ciBzZXNzaW9uIHRvIHNlZSBpZiBpdCBwZXJzaXN0cy4gVGhpcyBpcyBkdWUgdG8gYSBidWcgaW4gZ25vbWUgc2hlbGwsIHdoaWNoIEkgY2FuJ3QgZml4IGJ5IG15c2VsZi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImF1bmV0eCIsCiAgICAia29maSI6ICJhdW5ldHgiCiAgfSwKICAibmFtZSI6ICJCbHVyIG15IFNoZWxsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJtZUBhdW5ldHguZGV2IgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ibHVyLW15LXNoZWxsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXVuZXR4L2dub21lLXNoZWxsLWV4dGVuc2lvbi1ibHVyLW15LXNoZWxsIiwKICAidXVpZCI6ICJibHVyLW15LXNoZWxsQGF1bmV0eCIsCiAgInZlcnNpb24iOiA0Nwp9"},
     "43": {"version": "47", "sha256": "04h957nzzvblk8zxiyanzyw02czdk459ljq1kkkhgk929cqsc0b3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBibHVyIGxvb2sgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBHTk9NRSBTaGVsbCwgaW5jbHVkaW5nIHRoZSB0b3AgcGFuZWwsIGRhc2ggYW5kIG92ZXJ2aWV3LlxuXG5Zb3UgY2FuIHN1cHBvcnQgbXkgd29yayBieSBzcG9uc29yaW5nIG1lIG9uOlxuLSBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9hdW5ldHhcbi0ga28tZmk6IGh0dHBzOi8va28tZmkuY29tL2F1bmV0eFxuXG5Ob3RlOiBpZiB0aGUgZXh0ZW5zaW9uIHNob3dzIGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHJlc3RhcnQgeW91ciBzZXNzaW9uIHRvIHNlZSBpZiBpdCBwZXJzaXN0cy4gVGhpcyBpcyBkdWUgdG8gYSBidWcgaW4gZ25vbWUgc2hlbGwsIHdoaWNoIEkgY2FuJ3QgZml4IGJ5IG15c2VsZi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImF1bmV0eCIsCiAgICAia29maSI6ICJhdW5ldHgiCiAgfSwKICAibmFtZSI6ICJCbHVyIG15IFNoZWxsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJtZUBhdW5ldHguZGV2IgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ibHVyLW15LXNoZWxsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXVuZXR4L2dub21lLXNoZWxsLWV4dGVuc2lvbi1ibHVyLW15LXNoZWxsIiwKICAidXVpZCI6ICJibHVyLW15LXNoZWxsQGF1bmV0eCIsCiAgInZlcnNpb24iOiA0Nwp9"},
     "44": {"version": "47", "sha256": "04h957nzzvblk8zxiyanzyw02czdk459ljq1kkkhgk929cqsc0b3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBibHVyIGxvb2sgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBHTk9NRSBTaGVsbCwgaW5jbHVkaW5nIHRoZSB0b3AgcGFuZWwsIGRhc2ggYW5kIG92ZXJ2aWV3LlxuXG5Zb3UgY2FuIHN1cHBvcnQgbXkgd29yayBieSBzcG9uc29yaW5nIG1lIG9uOlxuLSBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9hdW5ldHhcbi0ga28tZmk6IGh0dHBzOi8va28tZmkuY29tL2F1bmV0eFxuXG5Ob3RlOiBpZiB0aGUgZXh0ZW5zaW9uIHNob3dzIGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHJlc3RhcnQgeW91ciBzZXNzaW9uIHRvIHNlZSBpZiBpdCBwZXJzaXN0cy4gVGhpcyBpcyBkdWUgdG8gYSBidWcgaW4gZ25vbWUgc2hlbGwsIHdoaWNoIEkgY2FuJ3QgZml4IGJ5IG15c2VsZi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImF1bmV0eCIsCiAgICAia29maSI6ICJhdW5ldHgiCiAgfSwKICAibmFtZSI6ICJCbHVyIG15IFNoZWxsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJtZUBhdW5ldHguZGV2IgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ibHVyLW15LXNoZWxsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXVuZXR4L2dub21lLXNoZWxsLWV4dGVuc2lvbi1ibHVyLW15LXNoZWxsIiwKICAidXVpZCI6ICJibHVyLW15LXNoZWxsQGF1bmV0eCIsCiAgInZlcnNpb24iOiA0Nwp9"},
-    "45": {"version": "55", "sha256": "10ia4dadk10aj3xdrgqrrzpphwdrwb1880lsncains5z901nmixz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBibHVyIGxvb2sgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBHTk9NRSBTaGVsbCwgaW5jbHVkaW5nIHRoZSB0b3AgcGFuZWwsIGRhc2ggYW5kIG92ZXJ2aWV3LlxuXG5Zb3UgY2FuIHN1cHBvcnQgbXkgd29yayBieSBzcG9uc29yaW5nIG1lIG9uOlxuLSBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9hdW5ldHhcbi0ga28tZmk6IGh0dHBzOi8va28tZmkuY29tL2F1bmV0eFxuXG5Ob3RlOiBpZiB0aGUgZXh0ZW5zaW9uIHNob3dzIGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHJlc3RhcnQgeW91ciBzZXNzaW9uIHRvIHNlZSBpZiBpdCBwZXJzaXN0cy4gVGhpcyBpcyBkdWUgdG8gYSBidWcgaW4gZ25vbWUgc2hlbGwsIHdoaWNoIEkgY2FuJ3QgZml4IGJ5IG15c2VsZi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImF1bmV0eCIsCiAgICAia29maSI6ICJhdW5ldHgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ci1teS1zaGVsbCIsCiAgIm5hbWUiOiAiQmx1ciBteSBTaGVsbCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAibWVAYXVuZXR4LmRldiIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1ci1teS1zaGVsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hdW5ldHgvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWJsdXItbXktc2hlbGwiLAogICJ1dWlkIjogImJsdXItbXktc2hlbGxAYXVuZXR4IiwKICAidmVyc2lvbiI6IDU1Cn0="}
+    "45": {"version": "58", "sha256": "05f2v981nfmnrddb2pd0zdncyj5p76z4sz96xy8hyp9brskwv4wf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBibHVyIGxvb2sgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBHTk9NRSBTaGVsbCwgaW5jbHVkaW5nIHRoZSB0b3AgcGFuZWwsIGRhc2ggYW5kIG92ZXJ2aWV3LlxuXG5Zb3UgY2FuIHN1cHBvcnQgbXkgd29yayBieSBzcG9uc29yaW5nIG1lIG9uOlxuLSBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9hdW5ldHhcbi0ga28tZmk6IGh0dHBzOi8va28tZmkuY29tL2F1bmV0eFxuXG5Ob3RlOiBpZiB0aGUgZXh0ZW5zaW9uIHNob3dzIGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHJlc3RhcnQgeW91ciBzZXNzaW9uIHRvIHNlZSBpZiBpdCBwZXJzaXN0cy4gVGhpcyBpcyBkdWUgdG8gYSBidWcgaW4gZ25vbWUgc2hlbGwsIHdoaWNoIEkgY2FuJ3QgZml4IGJ5IG15c2VsZi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImF1bmV0eCIsCiAgICAia29maSI6ICJhdW5ldHgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ci1teS1zaGVsbEBhdW5ldHgiLAogICJuYW1lIjogIkJsdXIgbXkgU2hlbGwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIm1lQGF1bmV0eC5kZXYiCiAgXSwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ibHVyLW15LXNoZWxsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2F1bmV0eC9nbm9tZS1zaGVsbC1leHRlbnNpb24tYmx1ci1teS1zaGVsbCIsCiAgInV1aWQiOiAiYmx1ci1teS1zaGVsbEBhdW5ldHgiLAogICJ2ZXJzaW9uIjogNTgKfQ=="},
+    "46": {"version": "59", "sha256": "17s0i67bxalr8m1c60nfcqahpv0i3ivf3fwyw106izxrwy95g6z4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBibHVyIGxvb2sgdG8gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBHTk9NRSBTaGVsbCwgaW5jbHVkaW5nIHRoZSB0b3AgcGFuZWwsIGRhc2ggYW5kIG92ZXJ2aWV3LlxuXG5Zb3UgY2FuIHN1cHBvcnQgbXkgd29yayBieSBzcG9uc29yaW5nIG1lIG9uOlxuLSBnaXRodWI6IGh0dHBzOi8vZ2l0aHViLmNvbS9zcG9uc29ycy9hdW5ldHhcbi0ga28tZmk6IGh0dHBzOi8va28tZmkuY29tL2F1bmV0eFxuXG5Ob3RlOiBpZiB0aGUgZXh0ZW5zaW9uIHNob3dzIGFuIGVycm9yIGFmdGVyIHVwZGF0aW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHJlc3RhcnQgeW91ciBzZXNzaW9uIHRvIHNlZSBpZiBpdCBwZXJzaXN0cy4gVGhpcyBpcyBkdWUgdG8gYSBidWcgaW4gZ25vbWUgc2hlbGwsIHdoaWNoIEkgY2FuJ3QgZml4IGJ5IG15c2VsZi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImF1bmV0eCIsCiAgICAia29maSI6ICJhdW5ldHgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmx1ci1teS1zaGVsbEBhdW5ldHgiLAogICJuYW1lIjogIkJsdXIgbXkgU2hlbGwiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgIm1lQGF1bmV0eC5kZXYiCiAgXSwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ibHVyLW15LXNoZWxsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2F1bmV0eC9ibHVyLW15LXNoZWxsIiwKICAidXVpZCI6ICJibHVyLW15LXNoZWxsQGF1bmV0eCIsCiAgInZlcnNpb24iOiA1OQp9"}
   }}
 , {"uuid": "escape-overview@raelgc", "name": "ESCape Overview", "pname": "escape-overview", "description": "Close the Overview with a single ESC press when searchbox is empty.\n\nThe default gnome-shell behaviour is, during first ESC press, clean the searchbox, then second ESC press get back to Activities overview and then third ESC press will finally close the overview.", "link": "https://extensions.gnome.org/extension/3204/escape-overview/", "shell_version_map": {
     "38": {"version": "5", "sha256": "12jycfdlywlc2gf7hcpa1draqsy8jgb2dgr8sihh2f97b31dk1nh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBPdmVydmlldyB3aXRoIGEgc2luZ2xlIEVTQyBwcmVzcyB3aGVuIHNlYXJjaGJveCBpcyBlbXB0eS5cblxuVGhlIGRlZmF1bHQgZ25vbWUtc2hlbGwgYmVoYXZpb3VyIGlzLCBkdXJpbmcgZmlyc3QgRVNDIHByZXNzLCBjbGVhbiB0aGUgc2VhcmNoYm94LCB0aGVuIHNlY29uZCBFU0MgcHJlc3MgZ2V0IGJhY2sgdG8gQWN0aXZpdGllcyBvdmVydmlldyBhbmQgdGhlbiB0aGlyZCBFU0MgcHJlc3Mgd2lsbCBmaW5hbGx5IGNsb3NlIHRoZSBvdmVydmlldy4iLAogICJuYW1lIjogIkVTQ2FwZSBPdmVydmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhZWxnYy9lc2NhcGUtb3ZlcnZpZXciLAogICJ1dWlkIjogImVzY2FwZS1vdmVydmlld0ByYWVsZ2MiLAogICJ2ZXJzaW9uIjogNQp9"},
@@ -2308,11 +2412,14 @@
     "42": {"version": "21", "sha256": "173zaap7s35naqff1phs5rskgdlwfib415vxcnfxi8132627fxhs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbXBpeiB3b2JibHkgd2luZG93cyBlZmZlY3QgdGhhbmtzIHRvIGNvbXBpeiBwbHVnaW4gZW5naW5lLlxuXG5Eb2VzIE5PVCByZXF1aXJlcyBhbnkgZXh0ZXJuYWwgbGlicmFyeVxuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKVxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBWaWRlb1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmh0dHBzOi8veW91dHUuYmUvRzhiQVZJQjlBN0EiLAogICJuYW1lIjogIkNvbXBpeiB3aW5kb3dzIGVmZmVjdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVybWVzODMvY29tcGl6LXdpbmRvd3MtZWZmZWN0IiwKICAidXVpZCI6ICJjb21waXotd2luZG93cy1lZmZlY3RAaGVybWVzODMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"},
     "43": {"version": "21", "sha256": "173zaap7s35naqff1phs5rskgdlwfib415vxcnfxi8132627fxhs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbXBpeiB3b2JibHkgd2luZG93cyBlZmZlY3QgdGhhbmtzIHRvIGNvbXBpeiBwbHVnaW4gZW5naW5lLlxuXG5Eb2VzIE5PVCByZXF1aXJlcyBhbnkgZXh0ZXJuYWwgbGlicmFyeVxuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKVxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBWaWRlb1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmh0dHBzOi8veW91dHUuYmUvRzhiQVZJQjlBN0EiLAogICJuYW1lIjogIkNvbXBpeiB3aW5kb3dzIGVmZmVjdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVybWVzODMvY29tcGl6LXdpbmRvd3MtZWZmZWN0IiwKICAidXVpZCI6ICJjb21waXotd2luZG93cy1lZmZlY3RAaGVybWVzODMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"},
     "44": {"version": "21", "sha256": "173zaap7s35naqff1phs5rskgdlwfib415vxcnfxi8132627fxhs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbXBpeiB3b2JibHkgd2luZG93cyBlZmZlY3QgdGhhbmtzIHRvIGNvbXBpeiBwbHVnaW4gZW5naW5lLlxuXG5Eb2VzIE5PVCByZXF1aXJlcyBhbnkgZXh0ZXJuYWwgbGlicmFyeVxuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKVxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBWaWRlb1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmh0dHBzOi8veW91dHUuYmUvRzhiQVZJQjlBN0EiLAogICJuYW1lIjogIkNvbXBpeiB3aW5kb3dzIGVmZmVjdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4yOCIsCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVybWVzODMvY29tcGl6LXdpbmRvd3MtZWZmZWN0IiwKICAidXVpZCI6ICJjb21waXotd2luZG93cy1lZmZlY3RAaGVybWVzODMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"},
-    "45": {"version": "23", "sha256": "1sbhjayckzfizcscdqxf8b0fm2cwkph8xpkv04i3fhx4bjqg52vx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbXBpeiB3b2JibHkgd2luZG93cyBlZmZlY3QgdGhhbmtzIHRvIGNvbXBpeiBwbHVnaW4gZW5naW5lLlxuXG5Eb2VzIE5PVCByZXF1aXJlcyBhbnkgZXh0ZXJuYWwgbGlicmFyeVxuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKVxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBWaWRlb1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmh0dHBzOi8veW91dHUuYmUvRzhiQVZJQjlBN0EiLAogICJuYW1lIjogIkNvbXBpeiB3aW5kb3dzIGVmZmVjdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb20uZ2l0aHViLmhlcm1lczgzLmNvbXBpei13aW5kb3dzLWVmZmVjdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZXJtZXM4My9jb21waXotd2luZG93cy1lZmZlY3QiLAogICJ1dWlkIjogImNvbXBpei13aW5kb3dzLWVmZmVjdEBoZXJtZXM4My5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="}
+    "45": {"version": "24", "sha256": "0zj9m96bipm36m2gg80s29a9068602xyncmryv2zqf64ywmnbai1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbXBpeiB3b2JibHkgd2luZG93cyBlZmZlY3QgdGhhbmtzIHRvIGNvbXBpeiBwbHVnaW4gZW5naW5lLlxuXG5Eb2VzIE5PVCByZXF1aXJlcyBhbnkgZXh0ZXJuYWwgbGlicmFyeVxuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKVxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBWaWRlb1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmh0dHBzOi8veW91dHUuYmUvRzhiQVZJQjlBN0EiLAogICJuYW1lIjogIkNvbXBpeiB3aW5kb3dzIGVmZmVjdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb20uZ2l0aHViLmhlcm1lczgzLmNvbXBpei13aW5kb3dzLWVmZmVjdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVybWVzODMvY29tcGl6LXdpbmRvd3MtZWZmZWN0IiwKICAidXVpZCI6ICJjb21waXotd2luZG93cy1lZmZlY3RAaGVybWVzODMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNAp9"},
+    "46": {"version": "24", "sha256": "0zj9m96bipm36m2gg80s29a9068602xyncmryv2zqf64ywmnbai1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbXBpeiB3b2JibHkgd2luZG93cyBlZmZlY3QgdGhhbmtzIHRvIGNvbXBpeiBwbHVnaW4gZW5naW5lLlxuXG5Eb2VzIE5PVCByZXF1aXJlcyBhbnkgZXh0ZXJuYWwgbGlicmFyeVxuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKVxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBWaWRlb1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmh0dHBzOi8veW91dHUuYmUvRzhiQVZJQjlBN0EiLAogICJuYW1lIjogIkNvbXBpeiB3aW5kb3dzIGVmZmVjdCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb20uZ2l0aHViLmhlcm1lczgzLmNvbXBpei13aW5kb3dzLWVmZmVjdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVybWVzODMvY29tcGl6LXdpbmRvd3MtZWZmZWN0IiwKICAidXVpZCI6ICJjb21waXotd2luZG93cy1lZmZlY3RAaGVybWVzODMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNAp9"}
   }}
-, {"uuid": "EndSessionTimer@pratap.fastmail.fm", "name": "End Session Timer", "pname": "end-session-timer", "description": "Set End Session Timer between 5 to 60 Seconds", "link": "https://extensions.gnome.org/extension/3216/end-session-timer/", "shell_version_map": {
+, {"uuid": "EndSessionTimer@pratap.fastmail.fm", "name": "End Session Timer", "pname": "end-session-timer", "description": "Set end session timer in seconds", "link": "https://extensions.gnome.org/extension/3216/end-session-timer/", "shell_version_map": {
     "38": {"version": "7", "sha256": "0c3wfx1iksb67fq3hm8cprhwb2f6xykkr4fv4y4drf78f15sh5gm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBFbmQgU2Vzc2lvbiBUaW1lciBiZXR3ZWVuIDUgdG8gNjAgU2Vjb25kcyIsCiAgIm5hbWUiOiAiRW5kIFNlc3Npb24gVGltZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiRW5kU2Vzc2lvblRpbWVyQHByYXRhcC5mYXN0bWFpbC5mbSIsCiAgInZlcnNpb24iOiA3Cn0="},
-    "41": {"version": "8", "sha256": "0mm9g2ldl2lw52plx3hpbaniqlci1c10q9blkbdpwcmyv53z1dq4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBFbmQgU2Vzc2lvbiBUaW1lciBiZXR3ZWVuIDUgdG8gNjAgU2Vjb25kcyIsCiAgIm5hbWUiOiAiRW5kIFNlc3Npb24gVGltZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIkVuZFNlc3Npb25UaW1lckBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogOAp9"}
+    "41": {"version": "8", "sha256": "0mm9g2ldl2lw52plx3hpbaniqlci1c10q9blkbdpwcmyv53z1dq4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBFbmQgU2Vzc2lvbiBUaW1lciBiZXR3ZWVuIDUgdG8gNjAgU2Vjb25kcyIsCiAgIm5hbWUiOiAiRW5kIFNlc3Npb24gVGltZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIkVuZFNlc3Npb25UaW1lckBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogOAp9"},
+    "45": {"version": "12", "sha256": "15gb0jc3v9lmlkidnjprra4nyxlq7lvkhbldg38iji62v6ik18zj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBlbmQgc2Vzc2lvbiB0aW1lciBpbiBzZWNvbmRzIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwcmF0YXBwYW5hYmFrYSIKICB9LAogICJuYW1lIjogIkVuZCBTZXNzaW9uIFRpbWVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVuZC1zZXNzaW9uLXRpbWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvZW5kLXNlc3Npb24tdGltZXIiLAogICJ1dWlkIjogIkVuZFNlc3Npb25UaW1lckBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
+    "46": {"version": "12", "sha256": "15gb0jc3v9lmlkidnjprra4nyxlq7lvkhbldg38iji62v6ik18zj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBlbmQgc2Vzc2lvbiB0aW1lciBpbiBzZWNvbmRzIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwcmF0YXBwYW5hYmFrYSIKICB9LAogICJuYW1lIjogIkVuZCBTZXNzaW9uIFRpbWVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVuZC1zZXNzaW9uLXRpbWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvZW5kLXNlc3Npb24tdGltZXIiLAogICJ1dWlkIjogIkVuZFNlc3Npb25UaW1lckBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
   }}
 , {"uuid": "block-caribou-36@lxylxy123456.ercli.dev", "name": "Block Caribou 36", "pname": "block-caribou-36", "description": "Blocks caribou (the on screen keyboard) from popping up when you use a touchscreen. Even if it's disabled in the accessibility services menu. Continuation of keringar's work. Tested on GNOME Shell version 3.36 - 45 on Fedora 32 - 39. For a higher version see https://github.com/lxylxy123456/cariboublocker#installing-on-high-gnome-shell-version .", "link": "https://extensions.gnome.org/extension/3222/block-caribou-36/", "shell_version_map": {
     "38": {"version": "7", "sha256": "1zfb6kxdcagfpsdgfyqbms5zxc0saycfrz4rj09sk01ifnzkm3fv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJsb2NrcyBjYXJpYm91ICh0aGUgb24gc2NyZWVuIGtleWJvYXJkKSBmcm9tIHBvcHBpbmcgdXAgd2hlbiB5b3UgdXNlIGEgdG91Y2hzY3JlZW4uIEV2ZW4gaWYgaXQncyBkaXNhYmxlZCBpbiB0aGUgYWNjZXNzaWJpbGl0eSBzZXJ2aWNlcyBtZW51LiBDb250aW51YXRpb24gb2Yga2VyaW5nYXIncyB3b3JrLiBUZXN0ZWQgb24gR05PTUUgU2hlbGwgdmVyc2lvbiAzLjM2IC0gNDQgb24gRmVkb3JhIDMyIC0gMzguIEZvciBhIGhpZ2hlciB2ZXJzaW9uIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbHh5bHh5MTIzNDU2L2Nhcmlib3VibG9ja2VyI2luc3RhbGxpbmctb24taGlnaC1nbm9tZS1zaGVsbC12ZXJzaW9uIC4iLAogICJuYW1lIjogIkJsb2NrIENhcmlib3UgMzYiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2x4eWx4eTEyMzQ1Ni9jYXJpYm91YmxvY2tlciIsCiAgInV1aWQiOiAiYmxvY2stY2FyaWJvdS0zNkBseHlseHkxMjM0NTYuZXJjbGkuZGV2IiwKICAidmVyc2lvbiI6IDcKfQ=="},
@@ -2349,7 +2456,8 @@
     "42": {"version": "10", "sha256": "1x76p06ni4byl469hk0y3l5dkg2ad4khn5h02pgbyqxkfhf2y1il", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGVhc3kgd2F5IHRvIGNyZWF0ZSBkZXNrdG9wIGFwcCBzaG9ydGN1dCBpbiBnbm9tZSIsCiAgIm5hbWUiOiAiQWRkIHRvIERlc2t0b3AiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub21taW1vbi9hZGQtdG8tZGVza3RvcCIsCiAgInV1aWQiOiAiYWRkLXRvLWRlc2t0b3BAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "43": {"version": "10", "sha256": "1x76p06ni4byl469hk0y3l5dkg2ad4khn5h02pgbyqxkfhf2y1il", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGVhc3kgd2F5IHRvIGNyZWF0ZSBkZXNrdG9wIGFwcCBzaG9ydGN1dCBpbiBnbm9tZSIsCiAgIm5hbWUiOiAiQWRkIHRvIERlc2t0b3AiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub21taW1vbi9hZGQtdG8tZGVza3RvcCIsCiAgInV1aWQiOiAiYWRkLXRvLWRlc2t0b3BAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "44": {"version": "10", "sha256": "1x76p06ni4byl469hk0y3l5dkg2ad4khn5h02pgbyqxkfhf2y1il", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGVhc3kgd2F5IHRvIGNyZWF0ZSBkZXNrdG9wIGFwcCBzaG9ydGN1dCBpbiBnbm9tZSIsCiAgIm5hbWUiOiAiQWRkIHRvIERlc2t0b3AiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub21taW1vbi9hZGQtdG8tZGVza3RvcCIsCiAgInV1aWQiOiAiYWRkLXRvLWRlc2t0b3BAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
-    "45": {"version": "12", "sha256": "1gc8cdjckf662fnd1c1q4p1iva5wphk4b4hwji9hf7hjbh8c9rqf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGVhc3kgd2F5IHRvIGNyZWF0ZSBkZXNrdG9wIGFwcCBzaG9ydGN1dCBpbiBnbm9tZSIsCiAgImdldHRleHQtZG9tYWluIjogImFkZC10by1kZXNrdG9wIiwKICAibmFtZSI6ICJBZGQgdG8gRGVza3RvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2LmJldGEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub21taW1vbi9hZGQtdG8tZGVza3RvcCIsCiAgInV1aWQiOiAiYWRkLXRvLWRlc2t0b3BAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"}
+    "45": {"version": "12", "sha256": "1gc8cdjckf662fnd1c1q4p1iva5wphk4b4hwji9hf7hjbh8c9rqf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGVhc3kgd2F5IHRvIGNyZWF0ZSBkZXNrdG9wIGFwcCBzaG9ydGN1dCBpbiBnbm9tZSIsCiAgImdldHRleHQtZG9tYWluIjogImFkZC10by1kZXNrdG9wIiwKICAibmFtZSI6ICJBZGQgdG8gRGVza3RvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2LmJldGEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub21taW1vbi9hZGQtdG8tZGVza3RvcCIsCiAgInV1aWQiOiAiYWRkLXRvLWRlc2t0b3BAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
+    "46": {"version": "12", "sha256": "1gc8cdjckf662fnd1c1q4p1iva5wphk4b4hwji9hf7hjbh8c9rqf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGVhc3kgd2F5IHRvIGNyZWF0ZSBkZXNrdG9wIGFwcCBzaG9ydGN1dCBpbiBnbm9tZSIsCiAgImdldHRleHQtZG9tYWluIjogImFkZC10by1kZXNrdG9wIiwKICAibmFtZSI6ICJBZGQgdG8gRGVza3RvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2LmJldGEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub21taW1vbi9hZGQtdG8tZGVza3RvcCIsCiAgInV1aWQiOiAiYWRkLXRvLWRlc2t0b3BAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"}
   }}
 , {"uuid": "wifi-power-management-toggle@rthery", "name": "Wi-Fi Power Management Toggle", "pname": "wi-fi-power-management-toggle", "description": "Add a toggle to limit Wi-Fi power consumption (when supported by the card) in Gnome System Menu.", "link": "https://extensions.gnome.org/extension/3258/wi-fi-power-management-toggle/", "shell_version_map": {
     "38": {"version": "3", "sha256": "0w3w0wx6pdwr0ya69dkhjv10m0csjv2gsab98f57ycn8vi4zd7n5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHRvZ2dsZSB0byBsaW1pdCBXaS1GaSBwb3dlciBjb25zdW1wdGlvbiAod2hlbiBzdXBwb3J0ZWQgYnkgdGhlIGNhcmQpIGluIEdub21lIFN5c3RlbSBNZW51LiIsCiAgIm5hbWUiOiAiV2ktRmkgUG93ZXIgTWFuYWdlbWVudCBUb2dnbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9ydGhlcnkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZmktcG93ZXItbWFuYWdlbWVudC10b2dnbGUiLAogICJ1dWlkIjogIndpZmktcG93ZXItbWFuYWdlbWVudC10b2dnbGVAcnRoZXJ5IiwKICAidmVyc2lvbiI6IDMKfQ=="},
@@ -2387,14 +2495,15 @@
     "38": {"version": "6", "sha256": "0mi645cb0il5i13i64qdagalv91g4m7mv2mfza8hxhpks5r4pr81", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIGV4dGVuc2lvbiB0byBkaXNwbGF5IGEgYmF0dGVyeSBpbmRpY2F0b3IgZm9yIFNhbXN1bmcgR2FsYXh5IEJ1ZHMgZmFtaWx5LiBJbnNwaXJlZCBieSBrZXlib2FyZC1iYXR0ZXJ5IChodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8yMTcwL2tleWJvYXJkLWJhdHRlcnkvKVxuXG5Vc2VzIHRoZSBweXRob24gc2NyaXB0IGZvciBHYWxheHkgYnVkcyBmcm9tIFRoZVBCb25lIChodHRwczovL2dpdGh1Yi5jb20vVGhlUEJvbmUvR2FsYXh5QnVkcy1CYXR0ZXJ5TGV2ZWwpXG5JTlNUQUxMQVRJT05cblxuVGhpcyBleHRlbnNpb24gcmVxdWlyZXMgUHl0aG9uIDMueCFcblxuWW91IGFsc28gbmVlZCBCbHVleiBhbmQgUHlCbHVlejpcblxuRm9yIGRlYmlhbiBiYXNlZCBkaXN0cmlidXRpb25zIGluc3RhbGwgd2l0aDpcblxuc3VkbyBhcHQgaW5zdGFsbCBibHVleiBweXRob24zLWJsdWV6XG5cbkZvciBGZWRvcmEgaW5zdGFsbCB3aXRoOlxuXG5zdWRvIGRucyBpbnN0YWxsIGJsdWV6IHB5dGhvbjMtYmx1ZXoiLAogICJuYW1lIjogIkdhbGF4eSBCdWRzIEJhdHRlcnkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wZW1tb3VyYS9nYWxheHlidWRzLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZ2FsYXh5LWJ1ZHMtYmF0dGVyeUBwZW1tb3VyYSIsCiAgInZlcnNpb24iOiA2Cn0="},
     "42": {"version": "7", "sha256": "0wqx4wmxsfd2d3ssqddfmvaa7c3d6br5xfs0n17r76vmfmd09qkl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIGV4dGVuc2lvbiB0byBkaXNwbGF5IGEgYmF0dGVyeSBpbmRpY2F0b3IgZm9yIFNhbXN1bmcgR2FsYXh5IEJ1ZHMgZmFtaWx5LiBJbnNwaXJlZCBieSBrZXlib2FyZC1iYXR0ZXJ5IChodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8yMTcwL2tleWJvYXJkLWJhdHRlcnkvKVxuXG5Vc2VzIHRoZSBweXRob24gc2NyaXB0IGZvciBHYWxheHkgYnVkcyBmcm9tIFRoZVBCb25lIChodHRwczovL2dpdGh1Yi5jb20vVGhlUEJvbmUvR2FsYXh5QnVkcy1CYXR0ZXJ5TGV2ZWwpXG5JTlNUQUxMQVRJT05cblxuVGhpcyBleHRlbnNpb24gcmVxdWlyZXMgUHl0aG9uIDMueCFcblxuWW91IGFsc28gbmVlZCBCbHVleiBhbmQgUHlCbHVlejpcblxuRm9yIGRlYmlhbiBiYXNlZCBkaXN0cmlidXRpb25zIGluc3RhbGwgd2l0aDpcblxuc3VkbyBhcHQgaW5zdGFsbCBibHVleiBweXRob24zLWJsdWV6XG5cbkZvciBGZWRvcmEgaW5zdGFsbCB3aXRoOlxuXG5zdWRvIGRucyBpbnN0YWxsIGJsdWV6IHB5dGhvbjMtYmx1ZXoiLAogICJuYW1lIjogIkdhbGF4eSBCdWRzIEJhdHRlcnkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGVtbW91cmEvZ2FsYXh5YnVkcy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImdhbGF4eS1idWRzLWJhdHRlcnlAcGVtbW91cmEiLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
-, {"uuid": "color-picker@tuberry", "name": "Color Picker", "pname": "color-picker", "description": "Simple color picker for gnome shell\n\nFor support, please report any issues via the homepage link below.", "link": "https://extensions.gnome.org/extension/3396/color-picker/", "shell_version_map": {
+, {"uuid": "color-picker@tuberry", "name": "Color Picker", "pname": "color-picker", "description": "Simple color picker for GNOME Shell\n\nFor support, please report any issues via the homepage link below.", "link": "https://extensions.gnome.org/extension/3396/color-picker/", "shell_version_map": {
     "38": {"version": "20", "sha256": "1ss4r8dpa7smxbyz41rw3wl1gy20bvy89xdvwfz6zfhv3db5vl86", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yLXBpY2tlciIsCiAgIm5hbWUiOiAiQ29sb3IgUGlja2VyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yLXBpY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvY29sb3ItcGlja2VyIiwKICAidXVpZCI6ICJjb2xvci1waWNrZXJAdHViZXJyeSIsCiAgInZlcnNpb24iOiAyMAp9"},
     "40": {"version": "25", "sha256": "0lx4bs7yfqkphb5cwmakl6xjf14q89m0yn70a882drakfhzgnagw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yLXBpY2tlciIsCiAgIm5hbWUiOiAiQ29sb3IgUGlja2VyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yLXBpY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2NvbG9yLXBpY2tlciIsCiAgInV1aWQiOiAiY29sb3ItcGlja2VyQHR1YmVycnkiLAogICJ2ZXJzaW9uIjogMjUKfQ=="},
     "41": {"version": "27", "sha256": "1scc0cgdzrg9rmpr090myrsxhfgp03aqld9jh4grqbfza6lrz4jd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvci1waWNrZXIiLAogICJuYW1lIjogIkNvbG9yIFBpY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvci1waWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9jb2xvci1waWNrZXIiLAogICJ1dWlkIjogImNvbG9yLXBpY2tlckB0dWJlcnJ5IiwKICAidmVyc2lvbiI6IDI3Cn0="},
     "42": {"version": "30", "sha256": "04dagpvpb535nq4l9nd7wjiv8p1npbzlbw8zi3zkp0r1hy4qxbll", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvci1waWNrZXIiLAogICJuYW1lIjogIkNvbG9yIFBpY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvci1waWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvY29sb3ItcGlja2VyIiwKICAidXVpZCI6ICJjb2xvci1waWNrZXJAdHViZXJyeSIsCiAgInZlcnNpb24iOiAzMAp9"},
     "43": {"version": "34", "sha256": "00mpmx7yfzy9wram6abwm8m7dklk84m3z38r0p8zxp20p3rik660", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvci1waWNrZXIiLAogICJuYW1lIjogIkNvbG9yIFBpY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvci1waWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9jb2xvci1waWNrZXIiLAogICJ1dWlkIjogImNvbG9yLXBpY2tlckB0dWJlcnJ5IiwKICAidmVyc2lvbiI6IDM0Cn0="},
     "44": {"version": "36", "sha256": "0mc7lbw6rsb65i1ha7js1syhk0k5z0kg3l4gzhxprlv2h4dnchaz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvci1waWNrZXIiLAogICJuYW1lIjogIkNvbG9yIFBpY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvci1waWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9jb2xvci1waWNrZXIiLAogICJ1dWlkIjogImNvbG9yLXBpY2tlckB0dWJlcnJ5IiwKICAidmVyc2lvbiI6IDM2Cn0="},
-    "45": {"version": "40", "sha256": "0cpav8qrj8jj7zd1v1s4h7p5429gk8njr74zh0v7fk05ygb7skbg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvci1waWNrZXIiLAogICJuYW1lIjogIkNvbG9yIFBpY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvci1waWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9jb2xvci1waWNrZXIiLAogICJ1dWlkIjogImNvbG9yLXBpY2tlckB0dWJlcnJ5IiwKICAidmVyc2lvbiI6IDQwCn0="}
+    "45": {"version": "40", "sha256": "0cpav8qrj8jj7zd1v1s4h7p5429gk8njr74zh0v7fk05ygb7skbg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIGdub21lIHNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvci1waWNrZXIiLAogICJuYW1lIjogIkNvbG9yIFBpY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvci1waWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9jb2xvci1waWNrZXIiLAogICJ1dWlkIjogImNvbG9yLXBpY2tlckB0dWJlcnJ5IiwKICAidmVyc2lvbiI6IDQwCn0="},
+    "46": {"version": "41", "sha256": "15ibiiy6lzw4cv3xph50cbbizghxgivh3m4icwf8mqli39r747af", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBjb2xvciBwaWNrZXIgZm9yIEdOT01FIFNoZWxsXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvci1waWNrZXIiLAogICJuYW1lIjogIkNvbG9yIFBpY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvci1waWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdHViZXJyeS9jb2xvci1waWNrZXIiLAogICJ1dWlkIjogImNvbG9yLXBpY2tlckB0dWJlcnJ5IiwKICAidmVyc2lvbiI6IDQxCn0="}
   }}
 , {"uuid": "yaru-remix-theme-toggle@muqtxdir.me", "name": "Yaru remix theme toggle", "pname": "yaru-remix-theme-toggle", "description": "Switches GTK3, Gnome-shell, cursor and icon themes to Yaru-remix variants", "link": "https://extensions.gnome.org/extension/3402/yaru-remix-theme-toggle/", "shell_version_map": {
     "38": {"version": "2", "sha256": "04dh163dshjnq3fa1y5kbkgl94q4cifvffq6i2pr4zd1v7d4zrf6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImF1dGhvcnMiOiBbCiAgICAibXVxdGFkaXI1NTU1QGdtYWlsLmNvbSIKICBdLAogICJkZXNjcmlwdGlvbiI6ICJTd2l0Y2hlcyBHVEszLCBHbm9tZS1zaGVsbCwgY3Vyc29yIGFuZCBpY29uIHRoZW1lcyB0byBZYXJ1LXJlbWl4IHZhcmlhbnRzIiwKICAibmFtZSI6ICJZYXJ1IHJlbWl4IHRoZW1lIHRvZ2dsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL011cXR4ZGlyL3lhcnUtcmVtaXgtdGhlbWUtdG9nZ2xlIiwKICAidXVpZCI6ICJ5YXJ1LXJlbWl4LXRoZW1lLXRvZ2dsZUBtdXF0eGRpci5tZSIsCiAgInZlcnNpb24iOiAyCn0="}
@@ -2423,7 +2532,8 @@
     "42": {"version": "22", "sha256": "1y0gx662rhs32bjng5i5w3f6bkgc7i71rxki9qav4rp69fpnqnxg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgbWFya2luZyBtZW51IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMsIHNpbXVsYXRlIGhvdGtleXMsIG9wZW4gVVJMcyBhbmQgbXVjaCBtb3JlLiBPbmNlIGluc3RhbGxlZCwgcHJlc3MgQ3RybCtTcGFjZSB0byBvcGVuIHRoZSBkZWZhdWx0IG1lbnUuIE9wZW4gdGhlIHByZWZlcmVuY2VzIGRpYWxvZyBmb3IgYW4gaW50ZXJhY3RpdmUgdHV0b3JpYWwgYW5kIGZvciBjcmVhdGluZyBjdXN0b20gbWVudXMhIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzY2huZWVnYW5zIiwKICAgICJrb2ZpIjogInNjaG5lZWdhbnMiLAogICAgInBheXBhbCI6ICJzaW1vbnNjaG5lZWdhbnMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZmx5cGllIiwKICAibmFtZSI6ICJGbHktUGllIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZseXBpZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9GbHktUGllIiwKICAidXVpZCI6ICJmbHlwaWVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIyCn0="},
     "43": {"version": "22", "sha256": "1y0gx662rhs32bjng5i5w3f6bkgc7i71rxki9qav4rp69fpnqnxg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgbWFya2luZyBtZW51IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMsIHNpbXVsYXRlIGhvdGtleXMsIG9wZW4gVVJMcyBhbmQgbXVjaCBtb3JlLiBPbmNlIGluc3RhbGxlZCwgcHJlc3MgQ3RybCtTcGFjZSB0byBvcGVuIHRoZSBkZWZhdWx0IG1lbnUuIE9wZW4gdGhlIHByZWZlcmVuY2VzIGRpYWxvZyBmb3IgYW4gaW50ZXJhY3RpdmUgdHV0b3JpYWwgYW5kIGZvciBjcmVhdGluZyBjdXN0b20gbWVudXMhIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzY2huZWVnYW5zIiwKICAgICJrb2ZpIjogInNjaG5lZWdhbnMiLAogICAgInBheXBhbCI6ICJzaW1vbnNjaG5lZWdhbnMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZmx5cGllIiwKICAibmFtZSI6ICJGbHktUGllIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZseXBpZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9GbHktUGllIiwKICAidXVpZCI6ICJmbHlwaWVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIyCn0="},
     "44": {"version": "22", "sha256": "1y0gx662rhs32bjng5i5w3f6bkgc7i71rxki9qav4rp69fpnqnxg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgbWFya2luZyBtZW51IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMsIHNpbXVsYXRlIGhvdGtleXMsIG9wZW4gVVJMcyBhbmQgbXVjaCBtb3JlLiBPbmNlIGluc3RhbGxlZCwgcHJlc3MgQ3RybCtTcGFjZSB0byBvcGVuIHRoZSBkZWZhdWx0IG1lbnUuIE9wZW4gdGhlIHByZWZlcmVuY2VzIGRpYWxvZyBmb3IgYW4gaW50ZXJhY3RpdmUgdHV0b3JpYWwgYW5kIGZvciBjcmVhdGluZyBjdXN0b20gbWVudXMhIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzY2huZWVnYW5zIiwKICAgICJrb2ZpIjogInNjaG5lZWdhbnMiLAogICAgInBheXBhbCI6ICJzaW1vbnNjaG5lZWdhbnMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZmx5cGllIiwKICAibmFtZSI6ICJGbHktUGllIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZseXBpZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9GbHktUGllIiwKICAidXVpZCI6ICJmbHlwaWVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIyCn0="},
-    "45": {"version": "25", "sha256": "1rsdic4g09ab0jmdzj0p941pfpc3qazk7swb01vdiq1fcflpkyp0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgbWFya2luZyBtZW51IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMsIHNpbXVsYXRlIGhvdGtleXMsIG9wZW4gVVJMcyBhbmQgbXVjaCBtb3JlLiBPbmNlIGluc3RhbGxlZCwgcHJlc3MgQ3RybCtTcGFjZSB0byBvcGVuIHRoZSBkZWZhdWx0IG1lbnUuIE9wZW4gdGhlIHByZWZlcmVuY2VzIGRpYWxvZyBmb3IgYW4gaW50ZXJhY3RpdmUgdHV0b3JpYWwgYW5kIGZvciBjcmVhdGluZyBjdXN0b20gbWVudXMhIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzY2huZWVnYW5zIiwKICAgICJrb2ZpIjogInNjaG5lZWdhbnMiLAogICAgInBheXBhbCI6ICJzaW1vbnNjaG5lZWdhbnMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZmx5cGllIiwKICAibmFtZSI6ICJGbHktUGllIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZseXBpZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9GbHktUGllIiwKICAidXVpZCI6ICJmbHlwaWVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI1Cn0="}
+    "45": {"version": "25", "sha256": "1rsdic4g09ab0jmdzj0p941pfpc3qazk7swb01vdiq1fcflpkyp0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgbWFya2luZyBtZW51IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMsIHNpbXVsYXRlIGhvdGtleXMsIG9wZW4gVVJMcyBhbmQgbXVjaCBtb3JlLiBPbmNlIGluc3RhbGxlZCwgcHJlc3MgQ3RybCtTcGFjZSB0byBvcGVuIHRoZSBkZWZhdWx0IG1lbnUuIE9wZW4gdGhlIHByZWZlcmVuY2VzIGRpYWxvZyBmb3IgYW4gaW50ZXJhY3RpdmUgdHV0b3JpYWwgYW5kIGZvciBjcmVhdGluZyBjdXN0b20gbWVudXMhIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzY2huZWVnYW5zIiwKICAgICJrb2ZpIjogInNjaG5lZWdhbnMiLAogICAgInBheXBhbCI6ICJzaW1vbnNjaG5lZWdhbnMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZmx5cGllIiwKICAibmFtZSI6ICJGbHktUGllIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZseXBpZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9GbHktUGllIiwKICAidXVpZCI6ICJmbHlwaWVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI1Cn0="},
+    "46": {"version": "25", "sha256": "1rsdic4g09ab0jmdzj0p941pfpc3qazk7swb01vdiq1fcflpkyp0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgbWFya2luZyBtZW51IHdoaWNoIGNhbiBiZSB1c2VkIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMsIHNpbXVsYXRlIGhvdGtleXMsIG9wZW4gVVJMcyBhbmQgbXVjaCBtb3JlLiBPbmNlIGluc3RhbGxlZCwgcHJlc3MgQ3RybCtTcGFjZSB0byBvcGVuIHRoZSBkZWZhdWx0IG1lbnUuIE9wZW4gdGhlIHByZWZlcmVuY2VzIGRpYWxvZyBmb3IgYW4gaW50ZXJhY3RpdmUgdHV0b3JpYWwgYW5kIGZvciBjcmVhdGluZyBjdXN0b20gbWVudXMhIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzY2huZWVnYW5zIiwKICAgICJrb2ZpIjogInNjaG5lZWdhbnMiLAogICAgInBheXBhbCI6ICJzaW1vbnNjaG5lZWdhbnMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZmx5cGllIiwKICAibmFtZSI6ICJGbHktUGllIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZseXBpZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9GbHktUGllIiwKICAidXVpZCI6ICJmbHlwaWVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI1Cn0="}
   }}
 , {"uuid": "jiggle@jeffchannell.com", "name": "Jiggle", "pname": "jiggle", "description": "Jiggle is a Gnome Shell extension that highlights the cursor position when the mouse is moved rapidly.", "link": "https://extensions.gnome.org/extension/3438/jiggle/", "shell_version_map": {
     "38": {"version": "8", "sha256": "0f5zwvcqz648sn11nl49r0ki6zy5c2hp4imgba0dlc02fags7pxz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkppZ2dsZSBpcyBhIEdub21lIFNoZWxsIGV4dGVuc2lvbiB0aGF0IGhpZ2hsaWdodHMgdGhlIGN1cnNvciBwb3NpdGlvbiB3aGVuIHRoZSBtb3VzZSBpcyBtb3ZlZCByYXBpZGx5LiIsCiAgIm5hbWUiOiAiSmlnZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2LjMiLAogICAgIjMuMzguMSIsCiAgICAiNDAuMCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2plZmZjaGFubmVsbC9qaWdnbGUiLAogICJ1dWlkIjogImppZ2dsZUBqZWZmY2hhbm5lbGwuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
@@ -2496,7 +2606,8 @@
     "42": {"version": "24", "sha256": "18drfdz739l0nhac3qlxjsik5ixqb3v1y1s55f1bjgszh69kzc6p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRleHQgb2YgeW91ciBjaG9pY2UgYWNyb3NzIHRoZSBzY3JlZW4uIENhbiBzaW11bGF0ZSBsZWF2ZXMsIHNub3csIGZpcmV3b3JrcywgdWZvcywgYW5kIG1vcmUhIiwKICAibmFtZSI6ICJEb3duRmFsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b3JjdWx1cy9Eb3duRmFsbCIsCiAgInV1aWQiOiAiZG93bmZhbGxAdG9yY3VsdXMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNAp9"},
     "43": {"version": "24", "sha256": "18drfdz739l0nhac3qlxjsik5ixqb3v1y1s55f1bjgszh69kzc6p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRleHQgb2YgeW91ciBjaG9pY2UgYWNyb3NzIHRoZSBzY3JlZW4uIENhbiBzaW11bGF0ZSBsZWF2ZXMsIHNub3csIGZpcmV3b3JrcywgdWZvcywgYW5kIG1vcmUhIiwKICAibmFtZSI6ICJEb3duRmFsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b3JjdWx1cy9Eb3duRmFsbCIsCiAgInV1aWQiOiAiZG93bmZhbGxAdG9yY3VsdXMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNAp9"},
     "44": {"version": "24", "sha256": "18drfdz739l0nhac3qlxjsik5ixqb3v1y1s55f1bjgszh69kzc6p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRleHQgb2YgeW91ciBjaG9pY2UgYWNyb3NzIHRoZSBzY3JlZW4uIENhbiBzaW11bGF0ZSBsZWF2ZXMsIHNub3csIGZpcmV3b3JrcywgdWZvcywgYW5kIG1vcmUhIiwKICAibmFtZSI6ICJEb3duRmFsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b3JjdWx1cy9Eb3duRmFsbCIsCiAgInV1aWQiOiAiZG93bmZhbGxAdG9yY3VsdXMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNAp9"},
-    "45": {"version": "36", "sha256": "02bbx782bnd3vbiy7wnsjc02glhjkrg74zzll48qzkm1w7s3yll7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRleHQgb2YgeW91ciBjaG9pY2UgYWNyb3NzIHRoZSBzY3JlZW4uIENhbiBzaW11bGF0ZSBsZWF2ZXMsIHNub3csIGZpcmV3b3JrcywgdWZvcywgYW5kIG1vcmUhIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZG93bmZhbGxAdG9yY3VsdXMuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiRG93bkZhbGwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZG93bmZhbGwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdG9yY3VsdXMvRG93bkZhbGwiLAogICJ1dWlkIjogImRvd25mYWxsQHRvcmN1bHVzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzYKfQ=="}
+    "45": {"version": "37", "sha256": "0jlv4kkr0qfff8pxsy3yzvqfsljp2yz1598r5zf287bzyqxkvr7i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRleHQgb2YgeW91ciBjaG9pY2UgYWNyb3NzIHRoZSBzY3JlZW4uIENhbiBzaW11bGF0ZSBsZWF2ZXMsIHNub3csIGZpcmV3b3JrcywgdWZvcywgYW5kIG1vcmUhIiwKICAibmFtZSI6ICJEb3duRmFsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgNDYKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RvcmN1bHVzL0Rvd25GYWxsIiwKICAidXVpZCI6ICJkb3duZmFsbEB0b3JjdWx1cy5naXRodWIuY29tIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZG93bmZhbGxAdG9yY3VsdXMuZ2l0aHViLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kb3duZmFsbCIsCiAgInZlcnNpb24iOiAxMDAwMDAwMAp9Cg=="},
+    "46": {"version": "37", "sha256": "0jlv4kkr0qfff8pxsy3yzvqfsljp2yz1598r5zf287bzyqxkvr7i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRleHQgb2YgeW91ciBjaG9pY2UgYWNyb3NzIHRoZSBzY3JlZW4uIENhbiBzaW11bGF0ZSBsZWF2ZXMsIHNub3csIGZpcmV3b3JrcywgdWZvcywgYW5kIG1vcmUhIiwKICAibmFtZSI6ICJEb3duRmFsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgNDYKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RvcmN1bHVzL0Rvd25GYWxsIiwKICAidXVpZCI6ICJkb3duZmFsbEB0b3JjdWx1cy5naXRodWIuY29tIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZG93bmZhbGxAdG9yY3VsdXMuZ2l0aHViLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kb3duZmFsbCIsCiAgInZlcnNpb24iOiAxMDAwMDAwMAp9Cg=="}
   }}
 , {"uuid": "time-awareness@gnome-extensions.kapranoff.ru", "name": "Time Awareness", "pname": "time-awareness", "description": "Tracks the time you have been actively using your computer", "link": "https://extensions.gnome.org/extension/3556/time-awareness/", "shell_version_map": {
     "38": {"version": "9", "sha256": "0rsnkbl7snkym66sc2yd6sw3xlbq2fhk4iw1c1f56g7nklf3y48k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRyYWNrcyB0aGUgdGltZSB5b3UgaGF2ZSBiZWVuIGFjdGl2ZWx5IHVzaW5nIHlvdXIgY29tcHV0ZXIiLAogICJuYW1lIjogIlRpbWUgQXdhcmVuZXNzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vc3IuaHQvfmthcHBhL2dub21lLXNoZWxsLXRpbWUtYXdhcmVuZXNzLyIsCiAgInV1aWQiOiAidGltZS1hd2FyZW5lc3NAZ25vbWUtZXh0ZW5zaW9ucy5rYXByYW5vZmYucnUiLAogICJ2ZXJzaW9uIjogOQp9"},
@@ -2522,7 +2633,8 @@
     "42": {"version": "16", "sha256": "1i0gzrlqcjqgv0vmynxbkj84gsaacfrzgm0vzf26qgcjlblhz5lk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJhc2UiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudGFzay13aWRnZXQiLAogICJjb2ZmZWUiOiAiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9uYnh3ZnBtIiwKICAiZGVwZW5kZW5jaWVzIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9qbWlza2luaXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRhc2std2lkZ2V0L3dpa2lzL0luc3RhbGxhdGlvbiIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGFza3MgbmV4dCB0byB0aGUgY2FsZW5kYXIgd2lkZ2V0LlxuXG5WaXNpdCBvdXIgV2lraSBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcuIiwKICAiZXBhdGgiOiAiL29yZy9nbm9tZS9zaGVsbC9leHRlbnNpb25zL3Rhc2std2lkZ2V0IiwKICAiZ3Jlc291cmNlIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhc2std2lkZ2V0LmdyZXNvdXJjZSIsCiAgImxpYmVyYXBheSI6ICJodHRwczovL2xpYmVyYXBheS5jb20vam9hc2lzLyIsCiAgImxvY2FsZSI6ICJ1c2VyLXNwZWNpZmljIiwKICAibmFtZSI6ICJUYXNrIFdpZGdldCIsCiAgInBheXBhbCI6ICJodHRwczovL3BheXBhbC5tZS9qbWlza2luaXMiLAogICJzY2hlbWFzIjogInVzZXItc3BlY2lmaWMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQiLAogICJ1dWlkIjogInRhc2std2lkZ2V0QGp1b3phc21pc2tpbmlzLmdpdGxhYi5pbyIsCiAgInZlcnNpb24iOiAxNiwKICAid2lraSI6ICJodHRwczovL2dpdGxhYi5jb20vam1pc2tpbmlzL2dub21lLXNoZWxsLWV4dGVuc2lvbi10YXNrLXdpZGdldC93aWtpcyIKfQ=="},
     "43": {"version": "16", "sha256": "1i0gzrlqcjqgv0vmynxbkj84gsaacfrzgm0vzf26qgcjlblhz5lk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJhc2UiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudGFzay13aWRnZXQiLAogICJjb2ZmZWUiOiAiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9uYnh3ZnBtIiwKICAiZGVwZW5kZW5jaWVzIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9qbWlza2luaXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRhc2std2lkZ2V0L3dpa2lzL0luc3RhbGxhdGlvbiIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGFza3MgbmV4dCB0byB0aGUgY2FsZW5kYXIgd2lkZ2V0LlxuXG5WaXNpdCBvdXIgV2lraSBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcuIiwKICAiZXBhdGgiOiAiL29yZy9nbm9tZS9zaGVsbC9leHRlbnNpb25zL3Rhc2std2lkZ2V0IiwKICAiZ3Jlc291cmNlIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhc2std2lkZ2V0LmdyZXNvdXJjZSIsCiAgImxpYmVyYXBheSI6ICJodHRwczovL2xpYmVyYXBheS5jb20vam9hc2lzLyIsCiAgImxvY2FsZSI6ICJ1c2VyLXNwZWNpZmljIiwKICAibmFtZSI6ICJUYXNrIFdpZGdldCIsCiAgInBheXBhbCI6ICJodHRwczovL3BheXBhbC5tZS9qbWlza2luaXMiLAogICJzY2hlbWFzIjogInVzZXItc3BlY2lmaWMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQiLAogICJ1dWlkIjogInRhc2std2lkZ2V0QGp1b3phc21pc2tpbmlzLmdpdGxhYi5pbyIsCiAgInZlcnNpb24iOiAxNiwKICAid2lraSI6ICJodHRwczovL2dpdGxhYi5jb20vam1pc2tpbmlzL2dub21lLXNoZWxsLWV4dGVuc2lvbi10YXNrLXdpZGdldC93aWtpcyIKfQ=="},
     "44": {"version": "16", "sha256": "1i0gzrlqcjqgv0vmynxbkj84gsaacfrzgm0vzf26qgcjlblhz5lk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImJhc2UiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudGFzay13aWRnZXQiLAogICJjb2ZmZWUiOiAiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9uYnh3ZnBtIiwKICAiZGVwZW5kZW5jaWVzIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9qbWlza2luaXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRhc2std2lkZ2V0L3dpa2lzL0luc3RhbGxhdGlvbiIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGFza3MgbmV4dCB0byB0aGUgY2FsZW5kYXIgd2lkZ2V0LlxuXG5WaXNpdCBvdXIgV2lraSBwYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0cm91Ymxlc2hvb3RpbmcuIiwKICAiZXBhdGgiOiAiL29yZy9nbm9tZS9zaGVsbC9leHRlbnNpb25zL3Rhc2std2lkZ2V0IiwKICAiZ3Jlc291cmNlIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhc2std2lkZ2V0LmdyZXNvdXJjZSIsCiAgImxpYmVyYXBheSI6ICJodHRwczovL2xpYmVyYXBheS5jb20vam9hc2lzLyIsCiAgImxvY2FsZSI6ICJ1c2VyLXNwZWNpZmljIiwKICAibmFtZSI6ICJUYXNrIFdpZGdldCIsCiAgInBheXBhbCI6ICJodHRwczovL3BheXBhbC5tZS9qbWlza2luaXMiLAogICJzY2hlbWFzIjogInVzZXItc3BlY2lmaWMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQiLAogICJ1dWlkIjogInRhc2std2lkZ2V0QGp1b3phc21pc2tpbmlzLmdpdGxhYi5pbyIsCiAgInZlcnNpb24iOiAxNiwKICAid2lraSI6ICJodHRwczovL2dpdGxhYi5jb20vam1pc2tpbmlzL2dub21lLXNoZWxsLWV4dGVuc2lvbi10YXNrLXdpZGdldC93aWtpcyIKfQ=="},
-    "45": {"version": "19", "sha256": "0m1kxcjnr7j8cjb0h7i3vwjk5hf6izbgfhnka5rcjww1qw2fp07b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvZmZlZSI6ICJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL25ieHdmcG0iLAogICJkZXBlbmRlbmNpZXMiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQvd2lraXMvSW5zdGFsbGF0aW9uIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSB0YXNrcyBuZXh0IHRvIHRoZSBjYWxlbmRhciB3aWRnZXQuXG5cblZpc2l0IG91ciBXaWtpIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRyb3VibGVzaG9vdGluZy4iLAogICJlcGF0aCI6ICIvb3JnL2dub21lL3NoZWxsL2V4dGVuc2lvbnMvdGFzay13aWRnZXQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldCIsCiAgImdyZXNvdXJjZSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldC5ncmVzb3VyY2UiLAogICJsaWJlcmFwYXkiOiAiaHR0cHM6Ly9saWJlcmFwYXkuY29tL2pvYXNpcy8iLAogICJuYW1lIjogIlRhc2sgV2lkZ2V0IiwKICAicGF5cGFsIjogImh0dHBzOi8vcGF5cGFsLm1lL2ptaXNraW5pcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9qbWlza2luaXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRhc2std2lkZ2V0IiwKICAidXVpZCI6ICJ0YXNrLXdpZGdldEBqdW96YXNtaXNraW5pcy5naXRsYWIuaW8iLAogICJ2ZXJzaW9uIjogMTksCiAgIndpa2kiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQvd2lraXMiCn0="}
+    "45": {"version": "19", "sha256": "0m1kxcjnr7j8cjb0h7i3vwjk5hf6izbgfhnka5rcjww1qw2fp07b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvZmZlZSI6ICJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL25ieHdmcG0iLAogICJkZXBlbmRlbmNpZXMiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQvd2lraXMvSW5zdGFsbGF0aW9uIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSB0YXNrcyBuZXh0IHRvIHRoZSBjYWxlbmRhciB3aWRnZXQuXG5cblZpc2l0IG91ciBXaWtpIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRyb3VibGVzaG9vdGluZy4iLAogICJlcGF0aCI6ICIvb3JnL2dub21lL3NoZWxsL2V4dGVuc2lvbnMvdGFzay13aWRnZXQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldCIsCiAgImdyZXNvdXJjZSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldC5ncmVzb3VyY2UiLAogICJsaWJlcmFwYXkiOiAiaHR0cHM6Ly9saWJlcmFwYXkuY29tL2pvYXNpcy8iLAogICJuYW1lIjogIlRhc2sgV2lkZ2V0IiwKICAicGF5cGFsIjogImh0dHBzOi8vcGF5cGFsLm1lL2ptaXNraW5pcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9qbWlza2luaXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRhc2std2lkZ2V0IiwKICAidXVpZCI6ICJ0YXNrLXdpZGdldEBqdW96YXNtaXNraW5pcy5naXRsYWIuaW8iLAogICJ2ZXJzaW9uIjogMTksCiAgIndpa2kiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQvd2lraXMiCn0="},
+    "46": {"version": "20", "sha256": "05cly2d6iz71cvv8yb8c87miz5blf2sy1g4ayffcg4898kcdq6wh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvZmZlZSI6ICJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL25ieHdmcG0iLAogICJkZXBlbmRlbmNpZXMiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQvd2lraXMvSW5zdGFsbGF0aW9uIiwKICAiZGVzY3JpcHRpb24iOiAiRGlzcGxheSB0YXNrcyBuZXh0IHRvIHRoZSBjYWxlbmRhciB3aWRnZXQuXG5cblZpc2l0IG91ciBXaWtpIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRyb3VibGVzaG9vdGluZy4iLAogICJlcGF0aCI6ICIvb3JnL2dub21lL3NoZWxsL2V4dGVuc2lvbnMvdGFzay13aWRnZXQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldCIsCiAgImdyZXNvdXJjZSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldC5ncmVzb3VyY2UiLAogICJsaWJlcmFwYXkiOiAiaHR0cHM6Ly9saWJlcmFwYXkuY29tL2pvYXNpcy8iLAogICJuYW1lIjogIlRhc2sgV2lkZ2V0IiwKICAicGF5cGFsIjogImh0dHBzOi8vcGF5cGFsLm1lL2ptaXNraW5pcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50YXNrLXdpZGdldCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9qbWlza2luaXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRhc2std2lkZ2V0IiwKICAidXVpZCI6ICJ0YXNrLXdpZGdldEBqdW96YXNtaXNraW5pcy5naXRsYWIuaW8iLAogICJ2ZXJzaW9uIjogMjAsCiAgIndpa2kiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2ptaXNraW5pcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tdGFzay13aWRnZXQvd2lraXMiCn0="}
   }}
 , {"uuid": "air-quality@mcardillo55", "name": "Air Quality", "pname": "air-quality", "description": "View local air quality from PurpleAir in the top bar", "link": "https://extensions.gnome.org/extension/3574/air-quality/", "shell_version_map": {
     "40": {"version": "2", "sha256": "037hbbb6z3gj818hqxqq96yszd1hka57pn4gj9f5kps7ak5hca4l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgbG9jYWwgYWlyIHF1YWxpdHkgZnJvbSBQdXJwbGVBaXIgaW4gdGhlIHRvcCBiYXIiLAogICJuYW1lIjogIkFpciBRdWFsaXR5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21jYXJkaWxsbzU1L2dub21lLXNoZWxsLWV4dGVuc2lvbi1haXItcXVhbGl0eSIsCiAgInV1aWQiOiAiYWlyLXF1YWxpdHlAbWNhcmRpbGxvNTUiLAogICJ2ZXJzaW9uIjogMgp9"}
@@ -2563,14 +2675,17 @@
     "42": {"version": "48", "sha256": "0y7pbng3jvvpwnjbajh4qs5n9rlb42w5q4cm2is7s9znwc4n73zj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGxpY2F0aW9uIE1lbnUgRXh0ZW5zaW9uIGZvciBHTk9NRSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFyY21lbnUiLAogICJuYW1lIjogIkFyY01lbnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJjbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2FyY21lbnUvQXJjTWVudSIsCiAgInV1aWQiOiAiYXJjbWVudUBhcmNtZW51LmNvbSIsCiAgInZlcnNpb24iOiA0OAp9"},
     "43": {"version": "48", "sha256": "0y7pbng3jvvpwnjbajh4qs5n9rlb42w5q4cm2is7s9znwc4n73zj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGxpY2F0aW9uIE1lbnUgRXh0ZW5zaW9uIGZvciBHTk9NRSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFyY21lbnUiLAogICJuYW1lIjogIkFyY01lbnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJjbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2FyY21lbnUvQXJjTWVudSIsCiAgInV1aWQiOiAiYXJjbWVudUBhcmNtZW51LmNvbSIsCiAgInZlcnNpb24iOiA0OAp9"},
     "44": {"version": "48", "sha256": "0y7pbng3jvvpwnjbajh4qs5n9rlb42w5q4cm2is7s9znwc4n73zj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGxpY2F0aW9uIE1lbnUgRXh0ZW5zaW9uIGZvciBHTk9NRSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFyY21lbnUiLAogICJuYW1lIjogIkFyY01lbnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJjbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2FyY21lbnUvQXJjTWVudSIsCiAgInV1aWQiOiAiYXJjbWVudUBhcmNtZW51LmNvbSIsCiAgInZlcnNpb24iOiA0OAp9"},
-    "45": {"version": "55", "sha256": "0ggjf5avagpcrgljjkna2l662j78gfjh4maqkmfq4z1kj0vawliq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGxpY2F0aW9uIE1lbnUgRXh0ZW5zaW9uIGZvciBHTk9NRSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFyY21lbnUiLAogICJuYW1lIjogIkFyY01lbnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJjbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYXJjbWVudS9BcmNNZW51IiwKICAidXVpZCI6ICJhcmNtZW51QGFyY21lbnUuY29tIiwKICAidmVyc2lvbiI6IDU1LAogICJ2ZXJzaW9uLW5hbWUiOiAiNTUiCn0="}
+    "45": {"version": "55", "sha256": "0ggjf5avagpcrgljjkna2l662j78gfjh4maqkmfq4z1kj0vawliq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGxpY2F0aW9uIE1lbnUgRXh0ZW5zaW9uIGZvciBHTk9NRSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFyY21lbnUiLAogICJuYW1lIjogIkFyY01lbnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJjbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYXJjbWVudS9BcmNNZW51IiwKICAidXVpZCI6ICJhcmNtZW51QGFyY21lbnUuY29tIiwKICAidmVyc2lvbiI6IDU1LAogICJ2ZXJzaW9uLW5hbWUiOiAiNTUiCn0="},
+    "46": {"version": "55", "sha256": "0ggjf5avagpcrgljjkna2l662j78gfjh4maqkmfq4z1kj0vawliq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGxpY2F0aW9uIE1lbnUgRXh0ZW5zaW9uIGZvciBHTk9NRSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFyY21lbnUiLAogICJuYW1lIjogIkFyY01lbnUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXJjbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYXJjbWVudS9BcmNNZW51IiwKICAidXVpZCI6ICJhcmNtZW51QGFyY21lbnUuY29tIiwKICAidmVyc2lvbiI6IDU1LAogICJ2ZXJzaW9uLW5hbWUiOiAiNTUiCn0="}
   }}
-, {"uuid": "fixedimelist@alynx.one", "name": "Fixed IME List", "pname": "fixed-ime-list", "description": "Make the IME list in fixed sequence instead of MRU.", "link": "https://extensions.gnome.org/extension/3663/fixed-ime-list/", "shell_version_map": {
+, {"uuid": "fixedimelist@alynx.one", "name": "Fixed IME List", "pname": "fixed-ime-list", "description": "Prevent MRU re-sorting of IME list on switching input method so it will always be the same sequence as you set in Settings.", "link": "https://extensions.gnome.org/extension/3663/fixed-ime-list/", "shell_version_map": {
     "38": {"version": "7", "sha256": "18z9h0fcq6w3kmcc5v8swjn18nc9hkck54jfzyv2697py6cd83kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIElNRSBsaXN0IGluIGZpeGVkIHNlcXVlbmNlIGluc3RlYWQgb2YgTVJVLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWx5bnhaaG91L2dub21lLXNoZWxsLWV4dGVuc2lvbi1maXhlZC1pbWUtbGlzdC8iLAogICJ1dWlkIjogImZpeGVkaW1lbGlzdEBhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNwp9"},
     "40": {"version": "7", "sha256": "18z9h0fcq6w3kmcc5v8swjn18nc9hkck54jfzyv2697py6cd83kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIElNRSBsaXN0IGluIGZpeGVkIHNlcXVlbmNlIGluc3RlYWQgb2YgTVJVLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWx5bnhaaG91L2dub21lLXNoZWxsLWV4dGVuc2lvbi1maXhlZC1pbWUtbGlzdC8iLAogICJ1dWlkIjogImZpeGVkaW1lbGlzdEBhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNwp9"},
     "41": {"version": "7", "sha256": "18z9h0fcq6w3kmcc5v8swjn18nc9hkck54jfzyv2697py6cd83kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIElNRSBsaXN0IGluIGZpeGVkIHNlcXVlbmNlIGluc3RlYWQgb2YgTVJVLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWx5bnhaaG91L2dub21lLXNoZWxsLWV4dGVuc2lvbi1maXhlZC1pbWUtbGlzdC8iLAogICJ1dWlkIjogImZpeGVkaW1lbGlzdEBhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNwp9"},
     "42": {"version": "7", "sha256": "18z9h0fcq6w3kmcc5v8swjn18nc9hkck54jfzyv2697py6cd83kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIElNRSBsaXN0IGluIGZpeGVkIHNlcXVlbmNlIGluc3RlYWQgb2YgTVJVLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWx5bnhaaG91L2dub21lLXNoZWxsLWV4dGVuc2lvbi1maXhlZC1pbWUtbGlzdC8iLAogICJ1dWlkIjogImZpeGVkaW1lbGlzdEBhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNwp9"},
-    "43": {"version": "7", "sha256": "18z9h0fcq6w3kmcc5v8swjn18nc9hkck54jfzyv2697py6cd83kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIElNRSBsaXN0IGluIGZpeGVkIHNlcXVlbmNlIGluc3RlYWQgb2YgTVJVLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWx5bnhaaG91L2dub21lLXNoZWxsLWV4dGVuc2lvbi1maXhlZC1pbWUtbGlzdC8iLAogICJ1dWlkIjogImZpeGVkaW1lbGlzdEBhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNwp9"}
+    "43": {"version": "7", "sha256": "18z9h0fcq6w3kmcc5v8swjn18nc9hkck54jfzyv2697py6cd83kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIElNRSBsaXN0IGluIGZpeGVkIHNlcXVlbmNlIGluc3RlYWQgb2YgTVJVLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQWx5bnhaaG91L2dub21lLXNoZWxsLWV4dGVuc2lvbi1maXhlZC1pbWUtbGlzdC8iLAogICJ1dWlkIjogImZpeGVkaW1lbGlzdEBhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNwp9"},
+    "45": {"version": "11", "sha256": "1qpsvfnay7ri18p2mc1jgsfpfxnfhnj3v5k3k8msdwh4hfrsmzmp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByZXZlbnQgTVJVIHJlLXNvcnRpbmcgb2YgSU1FIGxpc3Qgb24gc3dpdGNoaW5nIGlucHV0IG1ldGhvZCBzbyBpdCB3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzZXF1ZW5jZSBhcyB5b3Ugc2V0IGluIFNldHRpbmdzLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9BbHlueFpob3UvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZpeGVkLWltZS1saXN0LyIsCiAgInV1aWQiOiAiZml4ZWRpbWVsaXN0QGFseW54Lm9uZSIsCiAgInZlcnNpb24iOiAxMQp9"},
+    "46": {"version": "11", "sha256": "1qpsvfnay7ri18p2mc1jgsfpfxnfhnj3v5k3k8msdwh4hfrsmzmp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByZXZlbnQgTVJVIHJlLXNvcnRpbmcgb2YgSU1FIGxpc3Qgb24gc3dpdGNoaW5nIGlucHV0IG1ldGhvZCBzbyBpdCB3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzZXF1ZW5jZSBhcyB5b3Ugc2V0IGluIFNldHRpbmdzLiIsCiAgIm5hbWUiOiAiRml4ZWQgSU1FIExpc3QiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9BbHlueFpob3UvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZpeGVkLWltZS1saXN0LyIsCiAgInV1aWQiOiAiZml4ZWRpbWVsaXN0QGFseW54Lm9uZSIsCiAgInZlcnNpb24iOiAxMQp9"}
   }}
 , {"uuid": "topindicatorapp@quiro9.com", "name": "Top Indicator App", "pname": "top-indicator-app", "description": "This extension is 'appindicators' from ubuntu, renamed 'top indicator app' under the terms of the GPL v2 +. it is the extension itself that Ubuntu offers as a native experience on your system, but so you can install it in other distros since the current one in gnome-extensions is empty.I will offer stable updates when possible.", "link": "https://extensions.gnome.org/extension/3681/top-indicator-app/", "shell_version_map": {
     "38": {"version": "2", "sha256": "12r4fxgsgd7jn001vlzqrsd86ci62zxk0b9p3bkdqh6g5hj3la35", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGlzICdhcHBpbmRpY2F0b3JzJyBmcm9tIHVidW50dSwgcmVuYW1lZCAndG9wIGluZGljYXRvciBhcHAnIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIHYyICsuIGl0IGlzIHRoZSBleHRlbnNpb24gaXRzZWxmIHRoYXQgVWJ1bnR1IG9mZmVycyBhcyBhIG5hdGl2ZSBleHBlcmllbmNlIG9uIHlvdXIgc3lzdGVtLCBidXQgc28geW91IGNhbiBpbnN0YWxsIGl0IGluIG90aGVyIGRpc3Ryb3Mgc2luY2UgdGhlIGN1cnJlbnQgb25lIGluIGdub21lLWV4dGVuc2lvbnMgaXMgZW1wdHkuSSB3aWxsIG9mZmVyIHN0YWJsZSB1cGRhdGVzIHdoZW4gcG9zc2libGUuIiwKICAibmFtZSI6ICJUb3AgSW5kaWNhdG9yIEFwcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3VidW50dS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYXBwaW5kaWNhdG9yIiwKICAidXVpZCI6ICJ0b3BpbmRpY2F0b3JhcHBAcXVpcm85LmNvbSIsCiAgInZlcnNpb24iOiAyCn0="}
@@ -2582,7 +2697,8 @@
     "42": {"version": "21", "sha256": "1yi0nqrkz6kl6cdcncxg1jdag4dkgxjkccknxmy9amzi9f4lj3f7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlb3JkZXIgd29ya3NwYWNlcyB3aXRoIEN0cmwrU3VwZXIrVXAvRG93biIsCiAgIm5hbWUiOiAiUmVvcmRlciBXb3Jrc3BhY2VzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnJlb3JkZXItd29ya3NwYWNlcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NtbXIwL2dub21lLXJlb3JkZXItd29ya3NwYWNlcyIsCiAgInV1aWQiOiAicmVvcmRlci13b3Jrc3BhY2VzQGplci5kZXYiLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
     "43": {"version": "21", "sha256": "1yi0nqrkz6kl6cdcncxg1jdag4dkgxjkccknxmy9amzi9f4lj3f7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlb3JkZXIgd29ya3NwYWNlcyB3aXRoIEN0cmwrU3VwZXIrVXAvRG93biIsCiAgIm5hbWUiOiAiUmVvcmRlciBXb3Jrc3BhY2VzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnJlb3JkZXItd29ya3NwYWNlcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NtbXIwL2dub21lLXJlb3JkZXItd29ya3NwYWNlcyIsCiAgInV1aWQiOiAicmVvcmRlci13b3Jrc3BhY2VzQGplci5kZXYiLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
     "44": {"version": "21", "sha256": "1yi0nqrkz6kl6cdcncxg1jdag4dkgxjkccknxmy9amzi9f4lj3f7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlb3JkZXIgd29ya3NwYWNlcyB3aXRoIEN0cmwrU3VwZXIrVXAvRG93biIsCiAgIm5hbWUiOiAiUmVvcmRlciBXb3Jrc3BhY2VzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnJlb3JkZXItd29ya3NwYWNlcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NtbXIwL2dub21lLXJlb3JkZXItd29ya3NwYWNlcyIsCiAgInV1aWQiOiAicmVvcmRlci13b3Jrc3BhY2VzQGplci5kZXYiLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
-    "45": {"version": "22", "sha256": "0mmvrszj6h8dlbwp3w3h568sg46pr7ra469h1djvq36w2bq14hi3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlb3JkZXIgd29ya3NwYWNlcyB3aXRoIEN0cmwrU3VwZXIrVXAvRG93biIsCiAgIm5hbWUiOiAiUmVvcmRlciBXb3Jrc3BhY2VzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnJlb3JkZXItd29ya3NwYWNlcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zbW1yMC9nbm9tZS1yZW9yZGVyLXdvcmtzcGFjZXMiLAogICJ1dWlkIjogInJlb3JkZXItd29ya3NwYWNlc0BqZXIuZGV2IiwKICAidmVyc2lvbiI6IDIyCn0="}
+    "45": {"version": "23", "sha256": "1si2p2fxh19azf9vrg7w263bk0r87iifg01vjskfw5lw04hiwxjx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlb3JkZXIgd29ya3NwYWNlcyB3aXRoIEN0cmwrU3VwZXIrVXAvRG93biIsCiAgIm5hbWUiOiAiUmVvcmRlciBXb3Jrc3BhY2VzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnJlb3JkZXItd29ya3NwYWNlcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc21tcjAvZ25vbWUtcmVvcmRlci13b3Jrc3BhY2VzIiwKICAidXVpZCI6ICJyZW9yZGVyLXdvcmtzcGFjZXNAamVyLmRldiIsCiAgInZlcnNpb24iOiAyMwp9"},
+    "46": {"version": "23", "sha256": "1si2p2fxh19azf9vrg7w263bk0r87iifg01vjskfw5lw04hiwxjx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlb3JkZXIgd29ya3NwYWNlcyB3aXRoIEN0cmwrU3VwZXIrVXAvRG93biIsCiAgIm5hbWUiOiAiUmVvcmRlciBXb3Jrc3BhY2VzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnJlb3JkZXItd29ya3NwYWNlcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc21tcjAvZ25vbWUtcmVvcmRlci13b3Jrc3BhY2VzIiwKICAidXVpZCI6ICJyZW9yZGVyLXdvcmtzcGFjZXNAamVyLmRldiIsCiAgInZlcnNpb24iOiAyMwp9"}
   }}
 , {"uuid": "eos-hack@endlessos.org", "name": "Hack", "pname": "hack", "description": "Add the Flip to Hack experience to the desktop", "link": "https://extensions.gnome.org/extension/3690/hack/", "shell_version_map": {
     "38": {"version": "11", "sha256": "1m45rylhv1lw7vh8zmpsfcs1fiv0ah770gk14x965mkalqgph2ha", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB0aGUgRmxpcCB0byBIYWNrIGV4cGVyaWVuY2UgdG8gdGhlIGRlc2t0b3AiLAogICJuYW1lIjogIkhhY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmVuZGxlc3Nvcy5oYWNrLWV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VuZGxlc3NtL2Vvcy1oYWNrLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZW9zLWhhY2tAZW5kbGVzc29zLm9yZyIsCiAgInZlcnNpb24iOiAxMQp9"},
@@ -2611,7 +2727,8 @@
     "42": {"version": "39", "sha256": "1imc5yiv2172m0j3v9isiq6cvpwh8dmqm1jiwfss22df6sy4anp1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTmV0IFNwZWVkIGV4dGVuc2lvbiBXaXRoIExvYWRzIG9mIEN1c3RvbWl6YXRpb24uIEZvcmsgb2Ygc2ltcGxlbmV0c3BlZWRcblxuRnVsbCBDSEFOR0VMT0cgY2FuIGJlIGZvdW5kIG9uIGdpdGh1YiByZWxlYXNlcyBwYWdlXG5cbkZlYXR1cmVzIFxuMS4gQ2xlYW4gVUkgXG4yLiBBZGp1c3RhYmxlIFJlZnJlc2ggcmF0ZSBcbjMuIFByZWZlcmVuY2VzIHRvIG1hbmFnZSBleHRlbnNpb24gXG40LiBWZXJ0aWNhbCBBbGlnbm1lbnQgU3VwcG9ydCBcbjUuIFR3byBJY29uIHNldHMgZm9yIEluZGljYXRvcnMgXG5cbkZlYXR1cmUgSGlnaGxpZ2h0cyBmb3IgUHJlZmVyZW5jZXMgXG4xLiBMb2NrIE1vdXNlIEFjdGlvbnMgb3B0aW9uIFxuMi4gQWR2YW5jZSBQb3NpdGlvbiBvcHRpb25zIHRvIHBpbnBvaW50IHdoZXJlIHRvIHBsYWNlIHRoZSBpbmRpY2F0b3Igb24gdGhlIFBhbmVsLiBcbjMuIFJlZnJlc2ggdGltZSBvcHRpb24gYnkgd2hpY2ggeW91IGNhbiBjaGFuZ2UgcmVmcmVzaCByYXRlIHZhbHVlIGJldHdlZW4gMS4wIGFuZCAxMC4wIHNlY29uZHMuIFxuNC4gT3B0aW9uIHRvIHNob3cgdXBsb2FkIHNwZWVkIGZpcnN0IFxuNS4gQ29sb3IgQ3VzdG9taXphdGlvbnMgZm9yIHNwZWVkIGluZGljYXRvcnMgXG42LiBPcHRpb24gdG8gSGlkZSB3aGVuIERpc2Nvbm5lY3RlZCBcbjcuIE9wdGlvbiB0byB1c2Ugc2hvcnRlciB1bml0cyBsaWtlIEsvcyBpbnN0ZWFkIG9mIEtCL3MgXG44LiBMaW1pdCBVbml0IG9wdGlvbiBhbmQgbW9yZS4uLiBcblxuTW9kZXMgXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuMi4gVG90YWwgbmV0IHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG4zLiBDb21iaW5lZCBVcCAmIGRvd24gc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuNC4gQ29tYmluZWQgVXAgJiBkb3duIHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG41LiBUb3RhbCB0cmFuc2ZlcnJlZCBkYXRhIGluIHRlcm1zIG9mIGJ5dGVzIChSaWdodCBjbGljayB0byByZXNldCBjb3VudGVyKSBcblxuTW91c2UgRXZlbnRzIFxuLSBMZWZ0IGNsaWNrIHRvIGNoYW5nZSBtb2RlcyBcbi0gUmlnaHQgY2xpY2soaW4gMS00IG1vZGVzKTogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBjbGljayhpbiA1dGggbW9kZSk6IFJlc2V0IHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBDbGljayhGb3VyIGNvbnNlY3V0aXZlIHRpbWVzKTogVG9nZ2xlIHRocm91Z2ggaG9yaXpvbnRhbC92ZXJ0aWNhbCBhbGlnbm1lbnQuIFxuLSBNaWRkbGUgY2xpY2s6IEN5Y2xlIHRocm91Z2ggdGhlIGZvbnQgc2l6ZXMuIiwKICAibmFtZSI6ICJOZXQgc3BlZWQgU2ltcGxpZmllZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcHJhdGVla21lZGlhL25ldHNwZWVkc2ltcGxpZmllZCIsCiAgInV1aWQiOiAibmV0c3BlZWRzaW1wbGlmaWVkQHByYXRlZWttZWRpYS5leHRlbnNpb24iLAogICJ2ZXJzaW9uIjogMzkKfQ=="},
     "43": {"version": "39", "sha256": "1imc5yiv2172m0j3v9isiq6cvpwh8dmqm1jiwfss22df6sy4anp1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTmV0IFNwZWVkIGV4dGVuc2lvbiBXaXRoIExvYWRzIG9mIEN1c3RvbWl6YXRpb24uIEZvcmsgb2Ygc2ltcGxlbmV0c3BlZWRcblxuRnVsbCBDSEFOR0VMT0cgY2FuIGJlIGZvdW5kIG9uIGdpdGh1YiByZWxlYXNlcyBwYWdlXG5cbkZlYXR1cmVzIFxuMS4gQ2xlYW4gVUkgXG4yLiBBZGp1c3RhYmxlIFJlZnJlc2ggcmF0ZSBcbjMuIFByZWZlcmVuY2VzIHRvIG1hbmFnZSBleHRlbnNpb24gXG40LiBWZXJ0aWNhbCBBbGlnbm1lbnQgU3VwcG9ydCBcbjUuIFR3byBJY29uIHNldHMgZm9yIEluZGljYXRvcnMgXG5cbkZlYXR1cmUgSGlnaGxpZ2h0cyBmb3IgUHJlZmVyZW5jZXMgXG4xLiBMb2NrIE1vdXNlIEFjdGlvbnMgb3B0aW9uIFxuMi4gQWR2YW5jZSBQb3NpdGlvbiBvcHRpb25zIHRvIHBpbnBvaW50IHdoZXJlIHRvIHBsYWNlIHRoZSBpbmRpY2F0b3Igb24gdGhlIFBhbmVsLiBcbjMuIFJlZnJlc2ggdGltZSBvcHRpb24gYnkgd2hpY2ggeW91IGNhbiBjaGFuZ2UgcmVmcmVzaCByYXRlIHZhbHVlIGJldHdlZW4gMS4wIGFuZCAxMC4wIHNlY29uZHMuIFxuNC4gT3B0aW9uIHRvIHNob3cgdXBsb2FkIHNwZWVkIGZpcnN0IFxuNS4gQ29sb3IgQ3VzdG9taXphdGlvbnMgZm9yIHNwZWVkIGluZGljYXRvcnMgXG42LiBPcHRpb24gdG8gSGlkZSB3aGVuIERpc2Nvbm5lY3RlZCBcbjcuIE9wdGlvbiB0byB1c2Ugc2hvcnRlciB1bml0cyBsaWtlIEsvcyBpbnN0ZWFkIG9mIEtCL3MgXG44LiBMaW1pdCBVbml0IG9wdGlvbiBhbmQgbW9yZS4uLiBcblxuTW9kZXMgXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuMi4gVG90YWwgbmV0IHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG4zLiBDb21iaW5lZCBVcCAmIGRvd24gc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuNC4gQ29tYmluZWQgVXAgJiBkb3duIHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG41LiBUb3RhbCB0cmFuc2ZlcnJlZCBkYXRhIGluIHRlcm1zIG9mIGJ5dGVzIChSaWdodCBjbGljayB0byByZXNldCBjb3VudGVyKSBcblxuTW91c2UgRXZlbnRzIFxuLSBMZWZ0IGNsaWNrIHRvIGNoYW5nZSBtb2RlcyBcbi0gUmlnaHQgY2xpY2soaW4gMS00IG1vZGVzKTogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBjbGljayhpbiA1dGggbW9kZSk6IFJlc2V0IHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBDbGljayhGb3VyIGNvbnNlY3V0aXZlIHRpbWVzKTogVG9nZ2xlIHRocm91Z2ggaG9yaXpvbnRhbC92ZXJ0aWNhbCBhbGlnbm1lbnQuIFxuLSBNaWRkbGUgY2xpY2s6IEN5Y2xlIHRocm91Z2ggdGhlIGZvbnQgc2l6ZXMuIiwKICAibmFtZSI6ICJOZXQgc3BlZWQgU2ltcGxpZmllZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcHJhdGVla21lZGlhL25ldHNwZWVkc2ltcGxpZmllZCIsCiAgInV1aWQiOiAibmV0c3BlZWRzaW1wbGlmaWVkQHByYXRlZWttZWRpYS5leHRlbnNpb24iLAogICJ2ZXJzaW9uIjogMzkKfQ=="},
     "44": {"version": "39", "sha256": "1imc5yiv2172m0j3v9isiq6cvpwh8dmqm1jiwfss22df6sy4anp1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTmV0IFNwZWVkIGV4dGVuc2lvbiBXaXRoIExvYWRzIG9mIEN1c3RvbWl6YXRpb24uIEZvcmsgb2Ygc2ltcGxlbmV0c3BlZWRcblxuRnVsbCBDSEFOR0VMT0cgY2FuIGJlIGZvdW5kIG9uIGdpdGh1YiByZWxlYXNlcyBwYWdlXG5cbkZlYXR1cmVzIFxuMS4gQ2xlYW4gVUkgXG4yLiBBZGp1c3RhYmxlIFJlZnJlc2ggcmF0ZSBcbjMuIFByZWZlcmVuY2VzIHRvIG1hbmFnZSBleHRlbnNpb24gXG40LiBWZXJ0aWNhbCBBbGlnbm1lbnQgU3VwcG9ydCBcbjUuIFR3byBJY29uIHNldHMgZm9yIEluZGljYXRvcnMgXG5cbkZlYXR1cmUgSGlnaGxpZ2h0cyBmb3IgUHJlZmVyZW5jZXMgXG4xLiBMb2NrIE1vdXNlIEFjdGlvbnMgb3B0aW9uIFxuMi4gQWR2YW5jZSBQb3NpdGlvbiBvcHRpb25zIHRvIHBpbnBvaW50IHdoZXJlIHRvIHBsYWNlIHRoZSBpbmRpY2F0b3Igb24gdGhlIFBhbmVsLiBcbjMuIFJlZnJlc2ggdGltZSBvcHRpb24gYnkgd2hpY2ggeW91IGNhbiBjaGFuZ2UgcmVmcmVzaCByYXRlIHZhbHVlIGJldHdlZW4gMS4wIGFuZCAxMC4wIHNlY29uZHMuIFxuNC4gT3B0aW9uIHRvIHNob3cgdXBsb2FkIHNwZWVkIGZpcnN0IFxuNS4gQ29sb3IgQ3VzdG9taXphdGlvbnMgZm9yIHNwZWVkIGluZGljYXRvcnMgXG42LiBPcHRpb24gdG8gSGlkZSB3aGVuIERpc2Nvbm5lY3RlZCBcbjcuIE9wdGlvbiB0byB1c2Ugc2hvcnRlciB1bml0cyBsaWtlIEsvcyBpbnN0ZWFkIG9mIEtCL3MgXG44LiBMaW1pdCBVbml0IG9wdGlvbiBhbmQgbW9yZS4uLiBcblxuTW9kZXMgXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuMi4gVG90YWwgbmV0IHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG4zLiBDb21iaW5lZCBVcCAmIGRvd24gc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuNC4gQ29tYmluZWQgVXAgJiBkb3duIHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG41LiBUb3RhbCB0cmFuc2ZlcnJlZCBkYXRhIGluIHRlcm1zIG9mIGJ5dGVzIChSaWdodCBjbGljayB0byByZXNldCBjb3VudGVyKSBcblxuTW91c2UgRXZlbnRzIFxuLSBMZWZ0IGNsaWNrIHRvIGNoYW5nZSBtb2RlcyBcbi0gUmlnaHQgY2xpY2soaW4gMS00IG1vZGVzKTogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBjbGljayhpbiA1dGggbW9kZSk6IFJlc2V0IHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBDbGljayhGb3VyIGNvbnNlY3V0aXZlIHRpbWVzKTogVG9nZ2xlIHRocm91Z2ggaG9yaXpvbnRhbC92ZXJ0aWNhbCBhbGlnbm1lbnQuIFxuLSBNaWRkbGUgY2xpY2s6IEN5Y2xlIHRocm91Z2ggdGhlIGZvbnQgc2l6ZXMuIiwKICAibmFtZSI6ICJOZXQgc3BlZWQgU2ltcGxpZmllZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcHJhdGVla21lZGlhL25ldHNwZWVkc2ltcGxpZmllZCIsCiAgInV1aWQiOiAibmV0c3BlZWRzaW1wbGlmaWVkQHByYXRlZWttZWRpYS5leHRlbnNpb24iLAogICJ2ZXJzaW9uIjogMzkKfQ=="},
-    "45": {"version": "41", "sha256": "02bwplsmgyxsc3dmpc211kzhylb8vklc36llih5n19jg3vablh4s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTmV0IFNwZWVkIGV4dGVuc2lvbiBXaXRoIExvYWRzIG9mIEN1c3RvbWl6YXRpb24uIEZvcmsgb2Ygc2ltcGxlbmV0c3BlZWRcblxuRnVsbCBDSEFOR0VMT0cgY2FuIGJlIGZvdW5kIG9uIGdpdGh1YiByZWxlYXNlcyBwYWdlXG5cbkZlYXR1cmVzIFxuMS4gQ2xlYW4gVUkgXG4yLiBBZGp1c3RhYmxlIFJlZnJlc2ggcmF0ZSBcbjMuIFByZWZlcmVuY2VzIHRvIG1hbmFnZSBleHRlbnNpb24gXG40LiBWZXJ0aWNhbCBBbGlnbm1lbnQgU3VwcG9ydCBcbjUuIFR3byBJY29uIHNldHMgZm9yIEluZGljYXRvcnMgXG5cbkZlYXR1cmUgSGlnaGxpZ2h0cyBmb3IgUHJlZmVyZW5jZXMgXG4xLiBMb2NrIE1vdXNlIEFjdGlvbnMgb3B0aW9uIFxuMi4gQWR2YW5jZSBQb3NpdGlvbiBvcHRpb25zIHRvIHBpbnBvaW50IHdoZXJlIHRvIHBsYWNlIHRoZSBpbmRpY2F0b3Igb24gdGhlIFBhbmVsLiBcbjMuIFJlZnJlc2ggdGltZSBvcHRpb24gYnkgd2hpY2ggeW91IGNhbiBjaGFuZ2UgcmVmcmVzaCByYXRlIHZhbHVlIGJldHdlZW4gMS4wIGFuZCAxMC4wIHNlY29uZHMuIFxuNC4gT3B0aW9uIHRvIHNob3cgdXBsb2FkIHNwZWVkIGZpcnN0IFxuNS4gQ29sb3IgQ3VzdG9taXphdGlvbnMgZm9yIHNwZWVkIGluZGljYXRvcnMgXG42LiBPcHRpb24gdG8gSGlkZSB3aGVuIERpc2Nvbm5lY3RlZCBcbjcuIE9wdGlvbiB0byB1c2Ugc2hvcnRlciB1bml0cyBsaWtlIEsvcyBpbnN0ZWFkIG9mIEtCL3MgXG44LiBMaW1pdCBVbml0IG9wdGlvbiBhbmQgbW9yZS4uLiBcblxuTW9kZXMgXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuMi4gVG90YWwgbmV0IHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG4zLiBDb21iaW5lZCBVcCAmIGRvd24gc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuNC4gQ29tYmluZWQgVXAgJiBkb3duIHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG41LiBUb3RhbCB0cmFuc2ZlcnJlZCBkYXRhIGluIHRlcm1zIG9mIGJ5dGVzIChSaWdodCBjbGljayB0byByZXNldCBjb3VudGVyKSBcblxuTW91c2UgRXZlbnRzIFxuLSBMZWZ0IGNsaWNrIHRvIGNoYW5nZSBtb2RlcyBcbi0gUmlnaHQgY2xpY2soaW4gMS00IG1vZGVzKTogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBjbGljayhpbiA1dGggbW9kZSk6IFJlc2V0IHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBDbGljayhGb3VyIGNvbnNlY3V0aXZlIHRpbWVzKTogVG9nZ2xlIHRocm91Z2ggaG9yaXpvbnRhbC92ZXJ0aWNhbCBhbGlnbm1lbnQuIFxuLSBNaWRkbGUgY2xpY2s6IEN5Y2xlIHRocm91Z2ggdGhlIGZvbnQgc2l6ZXMuIiwKICAibmFtZSI6ICJOZXQgc3BlZWQgU2ltcGxpZmllZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wcmF0ZWVrbWVkaWEvbmV0c3BlZWRzaW1wbGlmaWVkIiwKICAidXVpZCI6ICJuZXRzcGVlZHNpbXBsaWZpZWRAcHJhdGVla21lZGlhLmV4dGVuc2lvbiIsCiAgInZlcnNpb24iOiA0MQp9"}
+    "45": {"version": "42", "sha256": "06lh6lp86hrxi5bcymlfjqs8r337xgdayrxkig6khlm6l4mb2jwd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTmV0IFNwZWVkIGV4dGVuc2lvbiBXaXRoIExvYWRzIG9mIEN1c3RvbWl6YXRpb24uIEZvcmsgb2Ygc2ltcGxlbmV0c3BlZWRcblxuRnVsbCBDSEFOR0VMT0cgY2FuIGJlIGZvdW5kIG9uIGdpdGh1YiByZWxlYXNlcyBwYWdlXG5cbkZlYXR1cmVzIFxuMS4gQ2xlYW4gVUkgXG4yLiBBZGp1c3RhYmxlIFJlZnJlc2ggcmF0ZSBcbjMuIFByZWZlcmVuY2VzIHRvIG1hbmFnZSBleHRlbnNpb24gXG40LiBWZXJ0aWNhbCBBbGlnbm1lbnQgU3VwcG9ydCBcbjUuIFR3byBJY29uIHNldHMgZm9yIEluZGljYXRvcnMgXG5cbkZlYXR1cmUgSGlnaGxpZ2h0cyBmb3IgUHJlZmVyZW5jZXMgXG4xLiBMb2NrIE1vdXNlIEFjdGlvbnMgb3B0aW9uIFxuMi4gQWR2YW5jZSBQb3NpdGlvbiBvcHRpb25zIHRvIHBpbnBvaW50IHdoZXJlIHRvIHBsYWNlIHRoZSBpbmRpY2F0b3Igb24gdGhlIFBhbmVsLiBcbjMuIFJlZnJlc2ggdGltZSBvcHRpb24gYnkgd2hpY2ggeW91IGNhbiBjaGFuZ2UgcmVmcmVzaCByYXRlIHZhbHVlIGJldHdlZW4gMS4wIGFuZCAxMC4wIHNlY29uZHMuIFxuNC4gT3B0aW9uIHRvIHNob3cgdXBsb2FkIHNwZWVkIGZpcnN0IFxuNS4gQ29sb3IgQ3VzdG9taXphdGlvbnMgZm9yIHNwZWVkIGluZGljYXRvcnMgXG42LiBPcHRpb24gdG8gSGlkZSB3aGVuIERpc2Nvbm5lY3RlZCBcbjcuIE9wdGlvbiB0byB1c2Ugc2hvcnRlciB1bml0cyBsaWtlIEsvcyBpbnN0ZWFkIG9mIEtCL3MgXG44LiBMaW1pdCBVbml0IG9wdGlvbiBhbmQgbW9yZS4uLiBcblxuTW9kZXMgXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuMi4gVG90YWwgbmV0IHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG4zLiBDb21iaW5lZCBVcCAmIGRvd24gc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuNC4gQ29tYmluZWQgVXAgJiBkb3duIHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG41LiBUb3RhbCB0cmFuc2ZlcnJlZCBkYXRhIGluIHRlcm1zIG9mIGJ5dGVzIChSaWdodCBjbGljayB0byByZXNldCBjb3VudGVyKSBcblxuTW91c2UgRXZlbnRzIFxuLSBMZWZ0IGNsaWNrIHRvIGNoYW5nZSBtb2RlcyBcbi0gUmlnaHQgY2xpY2soaW4gMS00IG1vZGVzKTogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBjbGljayhpbiA1dGggbW9kZSk6IFJlc2V0IHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBDbGljayhGb3VyIGNvbnNlY3V0aXZlIHRpbWVzKTogVG9nZ2xlIHRocm91Z2ggaG9yaXpvbnRhbC92ZXJ0aWNhbCBhbGlnbm1lbnQuIFxuLSBNaWRkbGUgY2xpY2s6IEN5Y2xlIHRocm91Z2ggdGhlIGZvbnQgc2l6ZXMuIiwKICAibmFtZSI6ICJOZXQgc3BlZWQgU2ltcGxpZmllZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcHJhdGVla21lZGlhL25ldHNwZWVkc2ltcGxpZmllZCIsCiAgInV1aWQiOiAibmV0c3BlZWRzaW1wbGlmaWVkQHByYXRlZWttZWRpYS5leHRlbnNpb24iLAogICJ2ZXJzaW9uIjogNDIKfQ=="},
+    "46": {"version": "42", "sha256": "06lh6lp86hrxi5bcymlfjqs8r337xgdayrxkig6khlm6l4mb2jwd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgTmV0IFNwZWVkIGV4dGVuc2lvbiBXaXRoIExvYWRzIG9mIEN1c3RvbWl6YXRpb24uIEZvcmsgb2Ygc2ltcGxlbmV0c3BlZWRcblxuRnVsbCBDSEFOR0VMT0cgY2FuIGJlIGZvdW5kIG9uIGdpdGh1YiByZWxlYXNlcyBwYWdlXG5cbkZlYXR1cmVzIFxuMS4gQ2xlYW4gVUkgXG4yLiBBZGp1c3RhYmxlIFJlZnJlc2ggcmF0ZSBcbjMuIFByZWZlcmVuY2VzIHRvIG1hbmFnZSBleHRlbnNpb24gXG40LiBWZXJ0aWNhbCBBbGlnbm1lbnQgU3VwcG9ydCBcbjUuIFR3byBJY29uIHNldHMgZm9yIEluZGljYXRvcnMgXG5cbkZlYXR1cmUgSGlnaGxpZ2h0cyBmb3IgUHJlZmVyZW5jZXMgXG4xLiBMb2NrIE1vdXNlIEFjdGlvbnMgb3B0aW9uIFxuMi4gQWR2YW5jZSBQb3NpdGlvbiBvcHRpb25zIHRvIHBpbnBvaW50IHdoZXJlIHRvIHBsYWNlIHRoZSBpbmRpY2F0b3Igb24gdGhlIFBhbmVsLiBcbjMuIFJlZnJlc2ggdGltZSBvcHRpb24gYnkgd2hpY2ggeW91IGNhbiBjaGFuZ2UgcmVmcmVzaCByYXRlIHZhbHVlIGJldHdlZW4gMS4wIGFuZCAxMC4wIHNlY29uZHMuIFxuNC4gT3B0aW9uIHRvIHNob3cgdXBsb2FkIHNwZWVkIGZpcnN0IFxuNS4gQ29sb3IgQ3VzdG9taXphdGlvbnMgZm9yIHNwZWVkIGluZGljYXRvcnMgXG42LiBPcHRpb24gdG8gSGlkZSB3aGVuIERpc2Nvbm5lY3RlZCBcbjcuIE9wdGlvbiB0byB1c2Ugc2hvcnRlciB1bml0cyBsaWtlIEsvcyBpbnN0ZWFkIG9mIEtCL3MgXG44LiBMaW1pdCBVbml0IG9wdGlvbiBhbmQgbW9yZS4uLiBcblxuTW9kZXMgXG4xLiBUb3RhbCBuZXQgc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuMi4gVG90YWwgbmV0IHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG4zLiBDb21iaW5lZCBVcCAmIGRvd24gc3BlZWQgaW4gdGVybXMgb2YgYml0cyBwZXIgc2Vjb25kIFxuNC4gQ29tYmluZWQgVXAgJiBkb3duIHNwZWVkIGluIHRlcm1zIG9mIGJ5dGVzIHBlciBzZWNvbmQgXG41LiBUb3RhbCB0cmFuc2ZlcnJlZCBkYXRhIGluIHRlcm1zIG9mIGJ5dGVzIChSaWdodCBjbGljayB0byByZXNldCBjb3VudGVyKSBcblxuTW91c2UgRXZlbnRzIFxuLSBMZWZ0IGNsaWNrIHRvIGNoYW5nZSBtb2RlcyBcbi0gUmlnaHQgY2xpY2soaW4gMS00IG1vZGVzKTogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBjbGljayhpbiA1dGggbW9kZSk6IFJlc2V0IHRvdGFsIHRyYW5zZmVyIGRhdGEuIFxuLSBSaWdodCBDbGljayhGb3VyIGNvbnNlY3V0aXZlIHRpbWVzKTogVG9nZ2xlIHRocm91Z2ggaG9yaXpvbnRhbC92ZXJ0aWNhbCBhbGlnbm1lbnQuIFxuLSBNaWRkbGUgY2xpY2s6IEN5Y2xlIHRocm91Z2ggdGhlIGZvbnQgc2l6ZXMuIiwKICAibmFtZSI6ICJOZXQgc3BlZWQgU2ltcGxpZmllZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcHJhdGVla21lZGlhL25ldHNwZWVkc2ltcGxpZmllZCIsCiAgInV1aWQiOiAibmV0c3BlZWRzaW1wbGlmaWVkQHByYXRlZWttZWRpYS5leHRlbnNpb24iLAogICJ2ZXJzaW9uIjogNDIKfQ=="}
   }}
 , {"uuid": "cpupower-governors@icar.github.com", "name": "CPU Power Governor", "pname": "cpu-power-governor", "description": "Enables the ability to swap between kernel governors for the CPU useful for laptops.\n\nRequires: polkit, cpupower\nGithub: https://github.com/juxuanu/cpupower-governors", "link": "https://extensions.gnome.org/extension/3727/cpu-power-governor/", "shell_version_map": {
     "38": {"version": "2", "sha256": "1hb239w4cpz6yzs3pzd3hhrwswh6w5c5xw6dqn57m26cazh843qk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgdGhlIGFiaWxpdHkgdG8gc3dhcCBiZXR3ZWVuIGtlcm5lbCBnb3Zlcm5vcnMgZm9yIHRoZSBDUFUgdXNlZnVsIGZvciBsYXB0b3BzLlxuXG5SZXF1aXJlczogcG9sa2l0LCBjcHVwb3dlclxuR2l0aHViOiBodHRwczovL2dpdGh1Yi5jb20vanV4dWFudS9jcHVwb3dlci1nb3Zlcm5vcnMiLAogICJuYW1lIjogIkNQVSBQb3dlciBHb3Zlcm5vciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJjcHVwb3dlci1nb3Zlcm5vcnNAaWNhci5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
@@ -2628,7 +2745,8 @@
     "42": {"version": "36", "sha256": "1dj98am80c82mfw7cz9mzhqnahxqpkgm7lazd2s023rs0hfx825c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cGFuZCBHTk9NRSdzIDIgY29sdW1uIHRpbGluZyBhbmQgYWRkIGEgV2luZG93cy1zbmFwLWFzc2lzdC1pbnNwaXJlZCBwb3B1cC4uLiIsCiAgIm5hbWUiOiAiVGlsaW5nIEFzc2lzdGFudCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aWxpbmctYXNzaXN0YW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9MZWxlYXQvVGlsaW5nLUFzc2lzdGFudCIsCiAgInV1aWQiOiAidGlsaW5nLWFzc2lzdGFudEBsZWxlYXQtb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDM2Cn0="},
     "43": {"version": "45", "sha256": "1ghplv7qvdh1l2r7y9wnfbgmlq2js5sifyv6jhj20mc50j0dwd59", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cGFuZCBHTk9NRSdzIDIgY29sdW1uIHRpbGluZyBhbmQgYWRkIGEgV2luZG93cy1zbmFwLWFzc2lzdC1pbnNwaXJlZCBwb3B1cC4uLiIsCiAgIm5hbWUiOiAiVGlsaW5nIEFzc2lzdGFudCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aWxpbmctYXNzaXN0YW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9MZWxlYXQvVGlsaW5nLUFzc2lzdGFudCIsCiAgInV1aWQiOiAidGlsaW5nLWFzc2lzdGFudEBsZWxlYXQtb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDQ1Cn0="},
     "44": {"version": "45", "sha256": "1ghplv7qvdh1l2r7y9wnfbgmlq2js5sifyv6jhj20mc50j0dwd59", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cGFuZCBHTk9NRSdzIDIgY29sdW1uIHRpbGluZyBhbmQgYWRkIGEgV2luZG93cy1zbmFwLWFzc2lzdC1pbnNwaXJlZCBwb3B1cC4uLiIsCiAgIm5hbWUiOiAiVGlsaW5nIEFzc2lzdGFudCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aWxpbmctYXNzaXN0YW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9MZWxlYXQvVGlsaW5nLUFzc2lzdGFudCIsCiAgInV1aWQiOiAidGlsaW5nLWFzc2lzdGFudEBsZWxlYXQtb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDQ1Cn0="},
-    "45": {"version": "44", "sha256": "0xadrqgy1bpax0qxsgbmp98g8jylnxr3ay01ksiha4zf57cvbbvw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cGFuZCBHTk9NRSdzIDIgY29sdW1uIHRpbGluZyBhbmQgYWRkIGEgV2luZG93cy1zbmFwLWFzc2lzdC1pbnNwaXJlZCBwb3B1cC4uLiIsCiAgImdldHRleHQtZG9tYWluIjogInRpbGluZy1hc3Npc3RhbnRAbGVsZWF0LW9uLWdpdGh1YiIsCiAgIm5hbWUiOiAiVGlsaW5nIEFzc2lzdGFudCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aWxpbmctYXNzaXN0YW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0xlbGVhdC9UaWxpbmctQXNzaXN0YW50IiwKICAidXVpZCI6ICJ0aWxpbmctYXNzaXN0YW50QGxlbGVhdC1vbi1naXRodWIiLAogICJ2ZXJzaW9uIjogNDQKfQ=="}
+    "45": {"version": "46", "sha256": "0kwm0sw2c38yf1xiafrad4wy88anrwsf6wd703fdmzl6k9hllis1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cGFuZCBHTk9NRSdzIDIgY29sdW1uIHRpbGluZyBhbmQgYWRkIGEgV2luZG93cy1zbmFwLWFzc2lzdC1pbnNwaXJlZCBwb3B1cC4uLiIsCiAgImdldHRleHQtZG9tYWluIjogInRpbGluZy1hc3Npc3RhbnRAbGVsZWF0LW9uLWdpdGh1YiIsCiAgIm5hbWUiOiAiVGlsaW5nIEFzc2lzdGFudCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aWxpbmctYXNzaXN0YW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9MZWxlYXQvVGlsaW5nLUFzc2lzdGFudCIsCiAgInV1aWQiOiAidGlsaW5nLWFzc2lzdGFudEBsZWxlYXQtb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDQ2Cn0="},
+    "46": {"version": "46", "sha256": "0kwm0sw2c38yf1xiafrad4wy88anrwsf6wd703fdmzl6k9hllis1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cGFuZCBHTk9NRSdzIDIgY29sdW1uIHRpbGluZyBhbmQgYWRkIGEgV2luZG93cy1zbmFwLWFzc2lzdC1pbnNwaXJlZCBwb3B1cC4uLiIsCiAgImdldHRleHQtZG9tYWluIjogInRpbGluZy1hc3Npc3RhbnRAbGVsZWF0LW9uLWdpdGh1YiIsCiAgIm5hbWUiOiAiVGlsaW5nIEFzc2lzdGFudCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aWxpbmctYXNzaXN0YW50IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9MZWxlYXQvVGlsaW5nLUFzc2lzdGFudCIsCiAgInV1aWQiOiAidGlsaW5nLWFzc2lzdGFudEBsZWxlYXQtb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDQ2Cn0="}
   }}
 , {"uuid": "airpods-battery-status@ju.wtf", "name": "Airpods Battery status", "pname": "airpods-battery-status", "description": "Show Airpods battery level in top bar\n\n/!\\ Needs AirStatus to work: https://github.com/delphiki/AirStatus", "link": "https://extensions.gnome.org/extension/3736/airpods-battery-status/", "shell_version_map": {
     "38": {"version": "7", "sha256": "1dyiqinjzjlh89vas00q78dzalh5mgj7q1a3vp8k13xfki4l0gzd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgQWlycG9kcyBiYXR0ZXJ5IGxldmVsIGluIHRvcCBiYXJcblxuLyFcXCBOZWVkcyBBaXJTdGF0dXMgdG8gd29yazogaHR0cHM6Ly9naXRodWIuY29tL2RlbHBoaWtpL0FpclN0YXR1cyIsCiAgIm5hbWUiOiAiQWlycG9kcyBCYXR0ZXJ5IHN0YXR1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RlbHBoaWtpL2dub21lLWFpcnBvZHMtYmF0dGVyeS1zdGF0dXMiLAogICJ1dWlkIjogImFpcnBvZHMtYmF0dGVyeS1zdGF0dXNAanUud3RmIiwKICAidmVyc2lvbiI6IDcKfQ=="},
@@ -2645,7 +2763,8 @@
     "42": {"version": "30", "sha256": "1hzvimbdr6bd0a9ysynf5hsqlbkfnsgyqlphhnfgxa03wl6q8fk9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIFBoaWxpcHMgSHVlIGNvbXBhdGlibGUgbGlnaHRzIHVzaW5nIFBoaWxpcHMgSHVlIEJyaWRnZSBvbiB5b3VyIGxvY2FsIG5ldHdvcmssIGl0IGFsc28gYWxsb3dzIGNvbnRyb2xsaW5nIFBoaWxpcHMgSHVlIFN5bmMgQm94LiBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbiBlcnJvciBvbiB0aGUgdXBncmFkZSwgcGxlYXNlIGxvZyBvdXQgYW5kIGxvZyBpbiBhZ2Fpbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJodWUtbGlnaHRzIiwKICAibmFtZSI6ICJIdWUgTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL2h1ZS1saWdodHMiLAogICJ1dWlkIjogImh1ZS1saWdodHNAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMwCn0="},
     "43": {"version": "30", "sha256": "1hzvimbdr6bd0a9ysynf5hsqlbkfnsgyqlphhnfgxa03wl6q8fk9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIFBoaWxpcHMgSHVlIGNvbXBhdGlibGUgbGlnaHRzIHVzaW5nIFBoaWxpcHMgSHVlIEJyaWRnZSBvbiB5b3VyIGxvY2FsIG5ldHdvcmssIGl0IGFsc28gYWxsb3dzIGNvbnRyb2xsaW5nIFBoaWxpcHMgSHVlIFN5bmMgQm94LiBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbiBlcnJvciBvbiB0aGUgdXBncmFkZSwgcGxlYXNlIGxvZyBvdXQgYW5kIGxvZyBpbiBhZ2Fpbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJodWUtbGlnaHRzIiwKICAibmFtZSI6ICJIdWUgTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL2h1ZS1saWdodHMiLAogICJ1dWlkIjogImh1ZS1saWdodHNAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMwCn0="},
     "44": {"version": "30", "sha256": "1hzvimbdr6bd0a9ysynf5hsqlbkfnsgyqlphhnfgxa03wl6q8fk9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIFBoaWxpcHMgSHVlIGNvbXBhdGlibGUgbGlnaHRzIHVzaW5nIFBoaWxpcHMgSHVlIEJyaWRnZSBvbiB5b3VyIGxvY2FsIG5ldHdvcmssIGl0IGFsc28gYWxsb3dzIGNvbnRyb2xsaW5nIFBoaWxpcHMgSHVlIFN5bmMgQm94LiBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbiBlcnJvciBvbiB0aGUgdXBncmFkZSwgcGxlYXNlIGxvZyBvdXQgYW5kIGxvZyBpbiBhZ2Fpbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJodWUtbGlnaHRzIiwKICAibmFtZSI6ICJIdWUgTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL2h1ZS1saWdodHMiLAogICJ1dWlkIjogImh1ZS1saWdodHNAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMwCn0="},
-    "45": {"version": "35", "sha256": "0dl6zrr8nwrdycf9djn9dc4nznhp26iwcwhafw7ivkg0msz6a6gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIFBoaWxpcHMgSHVlIGNvbXBhdGlibGUgbGlnaHRzIHVzaW5nIFBoaWxpcHMgSHVlIEJyaWRnZSBvbiB5b3VyIGxvY2FsIG5ldHdvcmssIGl0IGFsc28gYWxsb3dzIGNvbnRyb2xsaW5nIFBoaWxpcHMgSHVlIFN5bmMgQm94LiBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbiBlcnJvciBvbiB0aGUgdXBncmFkZSwgcGxlYXNlIGxvZyBvdXQgYW5kIGxvZyBpbiBhZ2Fpbi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJ2Y2hsdW0iLAogICAgInBheXBhbCI6ICJ2Y2hsdW0iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiaHVlLWxpZ2h0cyIsCiAgIm5hbWUiOiAiSHVlIExpZ2h0cyIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaHVlLWxpZ2h0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL2h1ZS1saWdodHMiLAogICJ1dWlkIjogImh1ZS1saWdodHNAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM1Cn0="}
+    "45": {"version": "35", "sha256": "0dl6zrr8nwrdycf9djn9dc4nznhp26iwcwhafw7ivkg0msz6a6gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIFBoaWxpcHMgSHVlIGNvbXBhdGlibGUgbGlnaHRzIHVzaW5nIFBoaWxpcHMgSHVlIEJyaWRnZSBvbiB5b3VyIGxvY2FsIG5ldHdvcmssIGl0IGFsc28gYWxsb3dzIGNvbnRyb2xsaW5nIFBoaWxpcHMgSHVlIFN5bmMgQm94LiBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbiBlcnJvciBvbiB0aGUgdXBncmFkZSwgcGxlYXNlIGxvZyBvdXQgYW5kIGxvZyBpbiBhZ2Fpbi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJ2Y2hsdW0iLAogICAgInBheXBhbCI6ICJ2Y2hsdW0iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiaHVlLWxpZ2h0cyIsCiAgIm5hbWUiOiAiSHVlIExpZ2h0cyIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaHVlLWxpZ2h0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL2h1ZS1saWdodHMiLAogICJ1dWlkIjogImh1ZS1saWdodHNAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM1Cn0="},
+    "46": {"version": "35", "sha256": "0dl6zrr8nwrdycf9djn9dc4nznhp26iwcwhafw7ivkg0msz6a6gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIFBoaWxpcHMgSHVlIGNvbXBhdGlibGUgbGlnaHRzIHVzaW5nIFBoaWxpcHMgSHVlIEJyaWRnZSBvbiB5b3VyIGxvY2FsIG5ldHdvcmssIGl0IGFsc28gYWxsb3dzIGNvbnRyb2xsaW5nIFBoaWxpcHMgSHVlIFN5bmMgQm94LiBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbiBlcnJvciBvbiB0aGUgdXBncmFkZSwgcGxlYXNlIGxvZyBvdXQgYW5kIGxvZyBpbiBhZ2Fpbi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJ2Y2hsdW0iLAogICAgInBheXBhbCI6ICJ2Y2hsdW0iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiaHVlLWxpZ2h0cyIsCiAgIm5hbWUiOiAiSHVlIExpZ2h0cyIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaHVlLWxpZ2h0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL2h1ZS1saWdodHMiLAogICJ1dWlkIjogImh1ZS1saWdodHNAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDM1Cn0="}
   }}
 , {"uuid": "compiz-alike-magic-lamp-effect@hermes83.github.com", "name": "Compiz alike magic lamp effect", "pname": "compiz-alike-magic-lamp-effect", "description": "Magic lamp effect inspired by the Compiz ones\n\nNB:\nIn case of update error please restart Gnome Shell (on Xorg press ALT+F2 then write r and press enter, on Wayland end the session and log in again)", "link": "https://extensions.gnome.org/extension/3740/compiz-alike-magic-lamp-effect/", "shell_version_map": {
     "38": {"version": "17", "sha256": "0mv8glz3bxxs6gqms282ji8l375alqbwfszd6y7j0q6x9qhl6bz4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ2ljIGxhbXAgZWZmZWN0IGluc3BpcmVkIGJ5IHRoZSBDb21waXogb25lc1xuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKSIsCiAgIm5hbWUiOiAiQ29tcGl6IGFsaWtlIG1hZ2ljIGxhbXAgZWZmZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZXJtZXM4My9jb21waXotYWxpa2UtbWFnaWMtbGFtcC1lZmZlY3QiLAogICJ1dWlkIjogImNvbXBpei1hbGlrZS1tYWdpYy1sYW1wLWVmZmVjdEBoZXJtZXM4My5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
@@ -2654,7 +2773,8 @@
     "42": {"version": "17", "sha256": "0mv8glz3bxxs6gqms282ji8l375alqbwfszd6y7j0q6x9qhl6bz4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ2ljIGxhbXAgZWZmZWN0IGluc3BpcmVkIGJ5IHRoZSBDb21waXogb25lc1xuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKSIsCiAgIm5hbWUiOiAiQ29tcGl6IGFsaWtlIG1hZ2ljIGxhbXAgZWZmZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZXJtZXM4My9jb21waXotYWxpa2UtbWFnaWMtbGFtcC1lZmZlY3QiLAogICJ1dWlkIjogImNvbXBpei1hbGlrZS1tYWdpYy1sYW1wLWVmZmVjdEBoZXJtZXM4My5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
     "43": {"version": "17", "sha256": "0mv8glz3bxxs6gqms282ji8l375alqbwfszd6y7j0q6x9qhl6bz4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ2ljIGxhbXAgZWZmZWN0IGluc3BpcmVkIGJ5IHRoZSBDb21waXogb25lc1xuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKSIsCiAgIm5hbWUiOiAiQ29tcGl6IGFsaWtlIG1hZ2ljIGxhbXAgZWZmZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZXJtZXM4My9jb21waXotYWxpa2UtbWFnaWMtbGFtcC1lZmZlY3QiLAogICJ1dWlkIjogImNvbXBpei1hbGlrZS1tYWdpYy1sYW1wLWVmZmVjdEBoZXJtZXM4My5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
     "44": {"version": "17", "sha256": "0mv8glz3bxxs6gqms282ji8l375alqbwfszd6y7j0q6x9qhl6bz4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ2ljIGxhbXAgZWZmZWN0IGluc3BpcmVkIGJ5IHRoZSBDb21waXogb25lc1xuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKSIsCiAgIm5hbWUiOiAiQ29tcGl6IGFsaWtlIG1hZ2ljIGxhbXAgZWZmZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZXJtZXM4My9jb21waXotYWxpa2UtbWFnaWMtbGFtcC1lZmZlY3QiLAogICJ1dWlkIjogImNvbXBpei1hbGlrZS1tYWdpYy1sYW1wLWVmZmVjdEBoZXJtZXM4My5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
-    "45": {"version": "18", "sha256": "1c4s1hw85awsshqwj95z33n49acv02lkfm37z7pawdaq1n8iq92c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ2ljIGxhbXAgZWZmZWN0IGluc3BpcmVkIGJ5IHRoZSBDb21waXogb25lc1xuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKSIsCiAgIm5hbWUiOiAiQ29tcGl6IGFsaWtlIG1hZ2ljIGxhbXAgZWZmZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbS5naXRodWIuaGVybWVzODMuY29tcGl6LWFsaWtlLW1hZ2ljLWxhbXAtZWZmZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcm1lczgzL2NvbXBpei1hbGlrZS1tYWdpYy1sYW1wLWVmZmVjdCIsCiAgInV1aWQiOiAiY29tcGl6LWFsaWtlLW1hZ2ljLWxhbXAtZWZmZWN0QGhlcm1lczgzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTgKfQ=="}
+    "45": {"version": "19", "sha256": "1avklp4f10qdw2mzgy1pdimw7k9laqbx349ny5m3l3k3hd0l62lc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ2ljIGxhbXAgZWZmZWN0IGluc3BpcmVkIGJ5IHRoZSBDb21waXogb25lc1xuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKSIsCiAgIm5hbWUiOiAiQ29tcGl6IGFsaWtlIG1hZ2ljIGxhbXAgZWZmZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbS5naXRodWIuaGVybWVzODMuY29tcGl6LWFsaWtlLW1hZ2ljLWxhbXAtZWZmZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZXJtZXM4My9jb21waXotYWxpa2UtbWFnaWMtbGFtcC1lZmZlY3QiLAogICJ1dWlkIjogImNvbXBpei1hbGlrZS1tYWdpYy1sYW1wLWVmZmVjdEBoZXJtZXM4My5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE5Cn0="},
+    "46": {"version": "19", "sha256": "1avklp4f10qdw2mzgy1pdimw7k9laqbx349ny5m3l3k3hd0l62lc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ2ljIGxhbXAgZWZmZWN0IGluc3BpcmVkIGJ5IHRoZSBDb21waXogb25lc1xuXG5OQjpcbkluIGNhc2Ugb2YgdXBkYXRlIGVycm9yIHBsZWFzZSByZXN0YXJ0IEdub21lIFNoZWxsIChvbiBYb3JnIHByZXNzIEFMVCtGMiB0aGVuIHdyaXRlIHIgYW5kIHByZXNzIGVudGVyLCBvbiBXYXlsYW5kIGVuZCB0aGUgc2Vzc2lvbiBhbmQgbG9nIGluIGFnYWluKSIsCiAgIm5hbWUiOiAiQ29tcGl6IGFsaWtlIG1hZ2ljIGxhbXAgZWZmZWN0IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbS5naXRodWIuaGVybWVzODMuY29tcGl6LWFsaWtlLW1hZ2ljLWxhbXAtZWZmZWN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZXJtZXM4My9jb21waXotYWxpa2UtbWFnaWMtbGFtcC1lZmZlY3QiLAogICJ1dWlkIjogImNvbXBpei1hbGlrZS1tYWdpYy1sYW1wLWVmZmVjdEBoZXJtZXM4My5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE5Cn0="}
   }}
 , {"uuid": "latency-monitor@gitlab.labsatho.me", "name": "Latency Monitor", "pname": "latency-monitor", "description": "A simple extension for displaying latency information using pings in GNOME Shell.", "link": "https://extensions.gnome.org/extension/3746/latency-monitor/", "shell_version_map": {
     "38": {"version": "6", "sha256": "0k2y1qrq7irkn2c72pk4c5x4fwzaxkfp3jj7qvhzih6zmkifdzcd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGV4dGVuc2lvbiBmb3IgZGlzcGxheWluZyBsYXRlbmN5IGluZm9ybWF0aW9uIHVzaW5nIHBpbmdzIGluIEdOT01FIFNoZWxsLiIsCiAgIm5hbWUiOiAiTGF0ZW5jeSBNb25pdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxhdGVuY3ktbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3dhbGthZndhbGthL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sYXRlbmN5LW1vbml0b3IiLAogICJ1dWlkIjogImxhdGVuY3ktbW9uaXRvckBnaXRsYWIubGFic2F0aG8ubWUiLAogICJ2ZXJzaW9uIjogNgp9"}
@@ -2682,12 +2802,13 @@
   }}
 , {"uuid": "ddterm@amezin.github.com", "name": "ddterm", "pname": "ddterm", "description": "Another drop down terminal extension for GNOME Shell. With tabs. Works on Wayland natively", "link": "https://extensions.gnome.org/extension/3780/ddterm/", "shell_version_map": {
     "38": {"version": "43", "sha256": "1g5266vxl5k6m2fi86jsjpnlf2dd7vzp243y6bxrmipj7m602vlx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kZHRlcm0vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRkdGVybSIsCiAgInV1aWQiOiAiZGR0ZXJtQGFtZXppbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQzCn0="},
-    "40": {"version": "52", "sha256": "1krvwgyhm0arlxlkympc7flim5q3kcrsrf1mv7wi1d0p3y5xydby", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mgp9"},
-    "41": {"version": "52", "sha256": "1krvwgyhm0arlxlkympc7flim5q3kcrsrf1mv7wi1d0p3y5xydby", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mgp9"},
-    "42": {"version": "52", "sha256": "1krvwgyhm0arlxlkympc7flim5q3kcrsrf1mv7wi1d0p3y5xydby", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mgp9"},
-    "43": {"version": "52", "sha256": "1krvwgyhm0arlxlkympc7flim5q3kcrsrf1mv7wi1d0p3y5xydby", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mgp9"},
-    "44": {"version": "52", "sha256": "1krvwgyhm0arlxlkympc7flim5q3kcrsrf1mv7wi1d0p3y5xydby", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mgp9"},
-    "45": {"version": "51", "sha256": "1kddk47ywgnnw6q91sxss7vkymbljp9a8c8qh8rxayxdhvw9p4l6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kZHRlcm0vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRkdGVybSIsCiAgInV1aWQiOiAiZGR0ZXJtQGFtZXppbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUxCn0="}
+    "40": {"version": "54", "sha256": "0wflv80ayvs7hh7l6ic8if3c1fxjhc6wyii5vnz68hn505wki3p7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
+    "41": {"version": "54", "sha256": "0wflv80ayvs7hh7l6ic8if3c1fxjhc6wyii5vnz68hn505wki3p7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
+    "42": {"version": "54", "sha256": "0wflv80ayvs7hh7l6ic8if3c1fxjhc6wyii5vnz68hn505wki3p7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
+    "43": {"version": "54", "sha256": "0wflv80ayvs7hh7l6ic8if3c1fxjhc6wyii5vnz68hn505wki3p7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
+    "44": {"version": "54", "sha256": "0wflv80ayvs7hh7l6ic8if3c1fxjhc6wyii5vnz68hn505wki3p7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1NAp9"},
+    "45": {"version": "53", "sha256": "1lnapb61wd6aw3hkj714h8rl9jxvy840adwncjyh287jv7f5vqz2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mwp9"},
+    "46": {"version": "53", "sha256": "1lnapb61wd6aw3hkj714h8rl9jxvy840adwncjyh287jv7f5vqz2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZHJvcCBkb3duIHRlcm1pbmFsIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwuIFdpdGggdGFicy4gV29ya3Mgb24gV2F5bGFuZCBuYXRpdmVseSIsCiAgImdldHRleHQtZG9tYWluIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiZGR0ZXJtIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogImNvbS5naXRodWIuYW1lemluLmRkdGVybSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGR0ZXJtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZHRlcm0iLAogICJ1dWlkIjogImRkdGVybUBhbWV6aW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Mwp9"}
   }}
 , {"uuid": "favorites-only-dash@nahuelwexd.github.io", "name": "Favorites-only Dash", "pname": "favorites-only-dash", "description": "Show only favorite apps on Dash", "link": "https://extensions.gnome.org/extension/3789/favorites-only-dash/", "shell_version_map": {
     "38": {"version": "1", "sha256": "110h019563j33gksaq5fs0z71sz1mslq1sbsmhk9mj3qggd9vs65", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgb25seSBmYXZvcml0ZSBhcHBzIG9uIERhc2giLAogICJuYW1lIjogIkZhdm9yaXRlcy1vbmx5IERhc2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiZmF2b3JpdGVzLW9ubHktZGFzaEBuYWh1ZWx3ZXhkLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxCn0="}
@@ -2699,7 +2820,8 @@
     "42": {"version": "8", "sha256": "1jxhfrsyc2c1mp0965c9y1kjms768g3kv6ivnziw96i6dqppm8a1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBjb25maWd1cmluZyB0aGUgc2FtZSB0aW1lb3V0IGZvciBhbGwgbm90aWZpY2F0aW9ucy4gSXQgYWxzbyBhbGxvd3MgaWdub3JpbmcgdGhlIGlkbGUgc3RhdGUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibm90aWZpY2F0aW9uLXRpbWVvdXQiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBUaW1lb3V0IiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25vdGlmaWNhdGlvbi10aW1lb3V0IiwKICAidXVpZCI6ICJub3RpZmljYXRpb24tdGltZW91dEBjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogOAp9"},
     "43": {"version": "8", "sha256": "1jxhfrsyc2c1mp0965c9y1kjms768g3kv6ivnziw96i6dqppm8a1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBjb25maWd1cmluZyB0aGUgc2FtZSB0aW1lb3V0IGZvciBhbGwgbm90aWZpY2F0aW9ucy4gSXQgYWxzbyBhbGxvd3MgaWdub3JpbmcgdGhlIGlkbGUgc3RhdGUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibm90aWZpY2F0aW9uLXRpbWVvdXQiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBUaW1lb3V0IiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25vdGlmaWNhdGlvbi10aW1lb3V0IiwKICAidXVpZCI6ICJub3RpZmljYXRpb24tdGltZW91dEBjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogOAp9"},
     "44": {"version": "8", "sha256": "1jxhfrsyc2c1mp0965c9y1kjms768g3kv6ivnziw96i6dqppm8a1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBjb25maWd1cmluZyB0aGUgc2FtZSB0aW1lb3V0IGZvciBhbGwgbm90aWZpY2F0aW9ucy4gSXQgYWxzbyBhbGxvd3MgaWdub3JpbmcgdGhlIGlkbGUgc3RhdGUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibm90aWZpY2F0aW9uLXRpbWVvdXQiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBUaW1lb3V0IiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25vdGlmaWNhdGlvbi10aW1lb3V0IiwKICAidXVpZCI6ICJub3RpZmljYXRpb24tdGltZW91dEBjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogOAp9"},
-    "45": {"version": "10", "sha256": "0f3wck19p810gyh7warhak8frwkpv4h7z2gc7pyng0xj34b59b4d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBjb25maWd1cmluZyB0aGUgc2FtZSB0aW1lb3V0IGZvciBhbGwgbm90aWZpY2F0aW9ucy4gSXQgYWxzbyBhbGxvd3MgaWdub3JpbmcgdGhlIGlkbGUgc3RhdGUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibm90aWZpY2F0aW9uLXRpbWVvdXQiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBUaW1lb3V0IiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ub3RpZmljYXRpb24tdGltZW91dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92Y2hsdW0vbm90aWZpY2F0aW9uLXRpbWVvdXQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi10aW1lb3V0QGNobHVtc2t5dmFjbGF2LmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"}
+    "45": {"version": "11", "sha256": "0b43aw6m7ad1m11li10dmyxy8rnck5fk3y52x10qgrq1z4k1fdqd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBjb25maWd1cmluZyB0aGUgc2FtZSB0aW1lb3V0IGZvciBhbGwgbm90aWZpY2F0aW9ucy4gSXQgYWxzbyBhbGxvd3MgaWdub3JpbmcgdGhlIGlkbGUgc3RhdGUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibm90aWZpY2F0aW9uLXRpbWVvdXQiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBUaW1lb3V0IiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ub3RpZmljYXRpb24tdGltZW91dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25vdGlmaWNhdGlvbi10aW1lb3V0IiwKICAidXVpZCI6ICJub3RpZmljYXRpb24tdGltZW91dEBjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
+    "46": {"version": "11", "sha256": "0b43aw6m7ad1m11li10dmyxy8rnck5fk3y52x10qgrq1z4k1fdqd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBjb25maWd1cmluZyB0aGUgc2FtZSB0aW1lb3V0IGZvciBhbGwgbm90aWZpY2F0aW9ucy4gSXQgYWxzbyBhbGxvd3MgaWdub3JpbmcgdGhlIGlkbGUgc3RhdGUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibm90aWZpY2F0aW9uLXRpbWVvdXQiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBUaW1lb3V0IiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ub3RpZmljYXRpb24tdGltZW91dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25vdGlmaWNhdGlvbi10aW1lb3V0IiwKICAidXVpZCI6ICJub3RpZmljYXRpb24tdGltZW91dEBjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
   }}
 , {"uuid": "podman-as-docker@alberto.yomerengues.xyz", "name": "Podman and Docker", "pname": "podman-as-docker", "description": "podman extension as docker\nIn order to get it work on podman, you just need to create an alias\nSimply put: alias docker=podman\nand install podman-docker", "link": "https://extensions.gnome.org/extension/3799/podman-as-docker/", "shell_version_map": {
     "38": {"version": "1", "sha256": "18bkd6z5hm6zidh7xv8v3jvj36lmxzx4dar7nwa7nq3p51km6crz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogInBvZG1hbiBleHRlbnNpb24gYXMgZG9ja2VyXG5JbiBvcmRlciB0byBnZXQgaXQgd29yayBvbiBwb2RtYW4sIHlvdSBqdXN0IG5lZWQgdG8gY3JlYXRlIGFuIGFsaWFzXG5TaW1wbHkgcHV0OiBhbGlhcyBkb2NrZXI9cG9kbWFuXG5hbmQgaW5zdGFsbCBwb2RtYW4tZG9ja2VyIiwKICAibmFtZSI6ICJQb2RtYW4gYW5kIERvY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJwb2RtYW4tYXMtZG9ja2VyQGFsYmVydG8ueW9tZXJlbmd1ZXMueHl6IiwKICAidmVyc2lvbiI6IDEKfQ=="}
@@ -2721,16 +2843,18 @@
     "42": {"version": "8", "sha256": "00w2wbqqkfb38r2cnhbm08jmsjgk5q5pv9jgkwx3v15qprwi0z86", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBieSBjbGlja2luZyBlbXB0eSBzcGFjZS4iLAogICJuYW1lIjogIkNsaWNrIHRvIGNsb3NlIG92ZXJ2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sM25uNHJ0L2NsaWNrLXRvLWNsb3NlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJjbGljay10by1jbG9zZS1vdmVydmlld0BsM25uNHJ0LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA4Cn0="},
     "43": {"version": "8", "sha256": "00w2wbqqkfb38r2cnhbm08jmsjgk5q5pv9jgkwx3v15qprwi0z86", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBieSBjbGlja2luZyBlbXB0eSBzcGFjZS4iLAogICJuYW1lIjogIkNsaWNrIHRvIGNsb3NlIG92ZXJ2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sM25uNHJ0L2NsaWNrLXRvLWNsb3NlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJjbGljay10by1jbG9zZS1vdmVydmlld0BsM25uNHJ0LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA4Cn0="},
     "44": {"version": "8", "sha256": "00w2wbqqkfb38r2cnhbm08jmsjgk5q5pv9jgkwx3v15qprwi0z86", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBieSBjbGlja2luZyBlbXB0eSBzcGFjZS4iLAogICJuYW1lIjogIkNsaWNrIHRvIGNsb3NlIG92ZXJ2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sM25uNHJ0L2NsaWNrLXRvLWNsb3NlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJjbGljay10by1jbG9zZS1vdmVydmlld0BsM25uNHJ0LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA4Cn0="},
-    "45": {"version": "10", "sha256": "048cplbf4jarfpxagpq5p3b6z656ap06j5amjsc4vlwwfchn2wgc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBieSBjbGlja2luZyBlbXB0eSBzcGFjZS4iLAogICJuYW1lIjogIkNsaWNrIHRvIGNsb3NlIG92ZXJ2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2wzbm40cnQvY2xpY2stdG8tY2xvc2Utb3ZlcnZpZXciLAogICJ1dWlkIjogImNsaWNrLXRvLWNsb3NlLW92ZXJ2aWV3QGwzbm40cnQuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDEwCn0="}
+    "45": {"version": "11", "sha256": "1krfjciics6qbkx53z4a5px4yi9fxgsg9la2zkci2kwfp8by1psd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBieSBjbGlja2luZyBlbXB0eSBzcGFjZS4iLAogICJuYW1lIjogIkNsaWNrIHRvIGNsb3NlIG92ZXJ2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sM25uNHJ0L2NsaWNrLXRvLWNsb3NlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJjbGljay10by1jbG9zZS1vdmVydmlld0BsM25uNHJ0LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMQp9"},
+    "46": {"version": "11", "sha256": "1krfjciics6qbkx53z4a5px4yi9fxgsg9la2zkci2kwfp8by1psd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBieSBjbGlja2luZyBlbXB0eSBzcGFjZS4iLAogICJuYW1lIjogIkNsaWNrIHRvIGNsb3NlIG92ZXJ2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sM25uNHJ0L2NsaWNrLXRvLWNsb3NlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJjbGljay10by1jbG9zZS1vdmVydmlld0BsM25uNHJ0LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMQp9"}
   }}
-, {"uuid": "just-perfection-desktop@just-perfection", "name": "Just Perfection", "pname": "just-perfection", "description": "Tweak Tool to Customize GNOME Shell, Change the Behavior and Disable UI Elements\n\n- Accessibility Menu Visibility\n- Activities Button Icon (3.36-44)\n- Activities button Visibility\n- Alt Tab Icon Size\n- Alt Tab Window Preview Icon Size\n- Alt Tab Window Preview Size\n- Always Show Workspace Switcher on Dynamic Workspaces (40-45)\n- Animation Speed or Disable it\n- App Gesture (3.36, 3.38)\n- Applications Button Visibility\n- App Menu Icon Visibility\n- App Menu Label Visibility\n- App Menu Visibility (3.36-44)\n- Background Menu Visibility\n- Calendar Visibility\n- Clock Menu Position\n- Clock Menu Visibility\n- Dash Icon Size\n- Dash Separator Visibility (40-45)\n- Dash Visibility\n- Disable Overlay Key (40-42)\n- Disable Type to Search\n- Double Super Key to App Grid\n- Events in Clock Menu Visibility\n- GNOME Shell Theme Override\n- Hot Corner (3.36-40)\n- Keyboard Layout Visibility\n- Looking Glass Size\n- Notification Banner Position\n- OSD Position\n- OSD Visibility\n- Overview Spacing Size (40-45)\n- Panel Arrow Visibility (3.36, 3.38)\n- Panel Button Padding Size\n- Panel Height\n- Panel icon size \n- Panel Indicator Padding Size\n- Panel Notification icon Visibility\n- Panel Position\n- Panel Round Corner Size (3.36-41)\n- Panel Visibility\n- Panel Visibility in Overview\n- Power Icon Visibility\n- Quick Settings Menu Visibility (43-45)\n- Ripple Box\n- Search Visibility\n- Startup Status (40-44)\n- Switcher Popup Delay\n- System Menu (Aggregate Menu) Visibility (3.36-42)\n- Take Screenshot Button in Window Menu Visibility\n- Weather Visibility\n- Window Demands Attention Focus\n- Window Picker Caption Visibility\n- Window Picker Close Button Visibility\n- Window Picker Icon (40-44)\n- Workspace Background Corner Size in Overview (40-45)\n- Workspace Peek (42-44)\n- Workspace Popup Visibility\n- Workspaces in app grid Visibility (40-45)\n- Workspace Switcher Size (40-44)\n- Workspace Switcher Visibility\n- Workspace Wraparound\n- World Clock Visibility", "link": "https://extensions.gnome.org/extension/3843/just-perfection/", "shell_version_map": {
+, {"uuid": "just-perfection-desktop@just-perfection", "name": "Just Perfection", "pname": "just-perfection", "description": "Tweak Tool to Customize GNOME Shell, Change the Behavior and Disable UI Elements\n\n- Accessibility Menu Visibility\n- Activities Button Icon (3.36-44)\n- Activities button Visibility\n- Alt Tab Icon Size\n- Alt Tab Window Preview Icon Size\n- Alt Tab Window Preview Size\n- Always Show Workspace Switcher on Dynamic Workspaces (40 and higher)\n- Animation Speed or Disable it\n- App Gesture (3.36, 3.38)\n- Applications Button Visibility\n- App Menu Icon Visibility\n- App Menu Label Visibility\n- App Menu Visibility (3.36-44)\n- Background Menu Visibility\n- Calendar Visibility\n- Clock Menu Position\n- Clock Menu Visibility\n- Dash Icon Size\n- Dash Separator Visibility (40 and higher)\n- Dash Visibility\n- Disable Overlay Key (40-42)\n- Disable Type to Search\n- Double Super Key to App Grid\n- Events in Clock Menu Visibility\n- GNOME Shell Theme Override\n- Hot Corner (3.36-40)\n- Keyboard Layout Visibility\n- Looking Glass Size\n- Notification Banner Position\n- OSD Position\n- OSD Visibility\n- Overview Spacing Size (40 and higher)\n- Panel Arrow Visibility (3.36, 3.38)\n- Panel Button Padding Size\n- Panel Height\n- Panel icon size \n- Panel Indicator Padding Size\n- Panel Notification icon Visibility\n- Panel Position\n- Panel Round Corner Size (3.36-41)\n- Panel Visibility\n- Panel Visibility in Overview\n- Power Icon Visibility\n- Quick Settings Menu Visibility (43 and higher)\n- Ripple Box\n- Search Visibility\n- Startup Status (40-44)\n- Switcher Popup Delay\n- System Menu (Aggregate Menu) Visibility (3.36-42)\n- Take Screenshot Button in Window Menu Visibility\n- Weather Visibility\n- Window Demands Attention Focus\n- Window Maximized on Create (45 and higher)\n- Window Picker Caption Visibility\n- Window Picker Close Button Visibility\n- Window Picker Icon (40-44)\n- Workspace Background Corner Size in Overview (40 and higher)\n- Workspace Peek (42-44)\n- Workspace Popup Visibility\n- Workspaces in app grid Visibility (40 and higher)\n- Workspace Switcher Size (40-44)\n- Workspace Switcher Visibility\n- Workspace Wraparound\n- World Clock Visibility", "link": "https://extensions.gnome.org/extension/3843/just-perfection/", "shell_version_map": {
     "38": {"version": "24", "sha256": "12ns0pbg16flsv8clggwf9hs2w4wmcvp6hijg6bchy7g2ahszr3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzXG5cbi0gQWNjZXNzaWJpbGl0eSBNZW51IFZpc2liaWxpdHlcbi0gQWN0aXZpdGllcyBCdXR0b24gSWNvbiBWaXNpYmlsaXR5XG4tIEFjdGl2aXRpZXMgYnV0dG9uIFZpc2liaWxpdHlcbi0gQWx0IFRhYiBJY29uIFNpemVcbi0gQWx0IFRhYiBXaW5kb3cgUHJldmlldyBJY29uIFNpemVcbi0gQWx0IFRhYiBXaW5kb3cgUHJldmlldyBTaXplXG4tIEFsd2F5cyBTaG93IFdvcmtzcGFjZSBTd2l0Y2hlciBvbiBEeW5hbWljIFdvcmtzcGFjZXMgKDQwLTQ0KVxuLSBBbmltYXRpb24gU3BlZWQgb3IgRGlzYWJsZSBpdFxuLSBBcHAgR2VzdHVyZSAoMy4zNiwgMy4zOClcbi0gQXBwbGljYXRpb25zIEJ1dHRvbiBWaXNpYmlsaXR5XG4tIEFwcCBNZW51IEljb24gVmlzaWJpbGl0eVxuLSBBcHAgTWVudSBMYWJlbCBWaXNpYmlsaXR5XG4tIEFwcCBNZW51IFZpc2liaWxpdHlcbi0gQmFja2dyb3VuZCBNZW51IFZpc2liaWxpdHlcbi0gQ2FsZW5kYXIgVmlzaWJpbGl0eVxuLSBDbG9jayBNZW51IFBvc2l0aW9uXG4tIENsb2NrIE1lbnUgVmlzaWJpbGl0eVxuLSBEYXNoIEljb24gU2l6ZVxuLSBEYXNoIFNlcGFyYXRvciBWaXNpYmlsaXR5ICg0MC00NClcbi0gRGFzaCBWaXNpYmlsaXR5XG4tIERpc2FibGUgVHlwZSB0byBTZWFyY2hcbi0gRG91YmxlIFN1cGVyIEtleSB0byBBcHAgR3JpZFxuLSBFdmVudHMgaW4gQ2xvY2sgTWVudSBWaXNpYmlsaXR5XG4tIEdOT01FIFNoZWxsIFRoZW1lIE92ZXJyaWRlXG4tIEhvdCBDb3JuZXIgKDMuMzYtNDApXG4tIEtleWJvYXJkIExheW91dCBWaXNpYmlsaXR5XG4tIExvb2tpbmcgR2xhc3MgU2l6ZVxuLSBOb3RpZmljYXRpb24gQmFubmVyIFBvc2l0aW9uXG4tIE9TRCBQb3NpdGlvblxuLSBPU0QgVmlzaWJpbGl0eVxuLSBPdmVydmlldyBTcGFjaW5nIFNpemUgKDQwLTQ0KVxuLSBQYW5lbCBBcnJvdyBWaXNpYmlsaXR5ICgzLjM2LCAzLjM4KVxuLSBQYW5lbCBCdXR0b24gUGFkZGluZyBTaXplXG4tIFBhbmVsIEhlaWdodFxuLSBQYW5lbCBpY29uIHNpemUgXG4tIFBhbmVsIEluZGljYXRvciBQYWRkaW5nIFNpemVcbi0gUGFuZWwgTm90aWZpY2F0aW9uIGljb24gVmlzaWJpbGl0eVxuLSBQYW5lbCBQb3NpdGlvblxuLSBQYW5lbCBSb3VuZCBDb3JuZXIgU2l6ZSAoMy4zNi00MSlcbi0gUGFuZWwgVmlzaWJpbGl0eVxuLSBQYW5lbCBWaXNpYmlsaXR5IGluIE92ZXJ2aWV3XG4tIFBvd2VyIEljb24gVmlzaWJpbGl0eVxuLSBRdWljayBTZXR0aW5ncyBNZW51IFZpc2liaWxpdHkgKDQzLTQ0KVxuLSBSaXBwbGUgQm94XG4tIFNlYXJjaCBWaXNpYmlsaXR5XG4tIFN0YXJ0dXAgU3RhdHVzICg0MC00NClcbi0gU3dpdGNoZXIgUG9wdXAgRGVsYXlcbi0gU3lzdGVtIE1lbnUgKEFnZ3JlZ2F0ZSBNZW51KSBWaXNpYmlsaXR5ICgzLjM2LTQyKVxuLSBUYWtlIFNjcmVlbnNob3QgQnV0dG9uIGluIFdpbmRvdyBNZW51IFZpc2liaWxpdHlcbi0gV2VhdGhlciBWaXNpYmlsaXR5XG4tIFdpbmRvdyBEZW1hbmRzIEF0dGVudGlvbiBGb2N1c1xuLSBXaW5kb3cgUGlja2VyIENhcHRpb24gVmlzaWJpbGl0eVxuLSBXaW5kb3cgUGlja2VyIENsb3NlIEJ1dHRvbiBWaXNpYmlsaXR5XG4tIFdpbmRvdyBQaWNrZXIgSWNvbiAoNDAtNDQpXG4tIFdvcmtzcGFjZSBCYWNrZ3JvdW5kIENvcm5lciBTaXplIGluIE92ZXJ2aWV3ICg0MC00NClcbi0gV29ya3NwYWNlIFBvcHVwIFZpc2liaWxpdHlcbi0gV29ya3NwYWNlcyBpbiBhcHAgZ3JpZCBWaXNpYmlsaXR5ICg0MC00NClcbi0gV29ya3NwYWNlIFN3aXRjaGVyIFNpemUgKDQwLTQ0KVxuLSBXb3Jrc3BhY2UgU3dpdGNoZXIgVmlzaWJpbGl0eVxuLSBXb3Jrc3BhY2UgV3JhcGFyb3VuZFxuLSBXb3JsZCBDbG9jayBWaXNpYmlsaXR5IiwKICAiZ2V0dGV4dC1kb21haW4iOiAianVzdC1wZXJmZWN0aW9uIiwKICAibmFtZSI6ICJKdXN0IFBlcmZlY3Rpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuanVzdC1wZXJmZWN0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9qcmFobWF0emFkZWgvanVzdC1wZXJmZWN0aW9uIiwKICAidXVpZCI6ICJqdXN0LXBlcmZlY3Rpb24tZGVza3RvcEBqdXN0LXBlcmZlY3Rpb24iLAogICJ2ZXJzaW9uIjogMjQKfQ=="},
     "40": {"version": "24", "sha256": "12ns0pbg16flsv8clggwf9hs2w4wmcvp6hijg6bchy7g2ahszr3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzXG5cbi0gQWNjZXNzaWJpbGl0eSBNZW51IFZpc2liaWxpdHlcbi0gQWN0aXZpdGllcyBCdXR0b24gSWNvbiBWaXNpYmlsaXR5XG4tIEFjdGl2aXRpZXMgYnV0dG9uIFZpc2liaWxpdHlcbi0gQWx0IFRhYiBJY29uIFNpemVcbi0gQWx0IFRhYiBXaW5kb3cgUHJldmlldyBJY29uIFNpemVcbi0gQWx0IFRhYiBXaW5kb3cgUHJldmlldyBTaXplXG4tIEFsd2F5cyBTaG93IFdvcmtzcGFjZSBTd2l0Y2hlciBvbiBEeW5hbWljIFdvcmtzcGFjZXMgKDQwLTQ0KVxuLSBBbmltYXRpb24gU3BlZWQgb3IgRGlzYWJsZSBpdFxuLSBBcHAgR2VzdHVyZSAoMy4zNiwgMy4zOClcbi0gQXBwbGljYXRpb25zIEJ1dHRvbiBWaXNpYmlsaXR5XG4tIEFwcCBNZW51IEljb24gVmlzaWJpbGl0eVxuLSBBcHAgTWVudSBMYWJlbCBWaXNpYmlsaXR5XG4tIEFwcCBNZW51IFZpc2liaWxpdHlcbi0gQmFja2dyb3VuZCBNZW51IFZpc2liaWxpdHlcbi0gQ2FsZW5kYXIgVmlzaWJpbGl0eVxuLSBDbG9jayBNZW51IFBvc2l0aW9uXG4tIENsb2NrIE1lbnUgVmlzaWJpbGl0eVxuLSBEYXNoIEljb24gU2l6ZVxuLSBEYXNoIFNlcGFyYXRvciBWaXNpYmlsaXR5ICg0MC00NClcbi0gRGFzaCBWaXNpYmlsaXR5XG4tIERpc2FibGUgVHlwZSB0byBTZWFyY2hcbi0gRG91YmxlIFN1cGVyIEtleSB0byBBcHAgR3JpZFxuLSBFdmVudHMgaW4gQ2xvY2sgTWVudSBWaXNpYmlsaXR5XG4tIEdOT01FIFNoZWxsIFRoZW1lIE92ZXJyaWRlXG4tIEhvdCBDb3JuZXIgKDMuMzYtNDApXG4tIEtleWJvYXJkIExheW91dCBWaXNpYmlsaXR5XG4tIExvb2tpbmcgR2xhc3MgU2l6ZVxuLSBOb3RpZmljYXRpb24gQmFubmVyIFBvc2l0aW9uXG4tIE9TRCBQb3NpdGlvblxuLSBPU0QgVmlzaWJpbGl0eVxuLSBPdmVydmlldyBTcGFjaW5nIFNpemUgKDQwLTQ0KVxuLSBQYW5lbCBBcnJvdyBWaXNpYmlsaXR5ICgzLjM2LCAzLjM4KVxuLSBQYW5lbCBCdXR0b24gUGFkZGluZyBTaXplXG4tIFBhbmVsIEhlaWdodFxuLSBQYW5lbCBpY29uIHNpemUgXG4tIFBhbmVsIEluZGljYXRvciBQYWRkaW5nIFNpemVcbi0gUGFuZWwgTm90aWZpY2F0aW9uIGljb24gVmlzaWJpbGl0eVxuLSBQYW5lbCBQb3NpdGlvblxuLSBQYW5lbCBSb3VuZCBDb3JuZXIgU2l6ZSAoMy4zNi00MSlcbi0gUGFuZWwgVmlzaWJpbGl0eVxuLSBQYW5lbCBWaXNpYmlsaXR5IGluIE92ZXJ2aWV3XG4tIFBvd2VyIEljb24gVmlzaWJpbGl0eVxuLSBRdWljayBTZXR0aW5ncyBNZW51IFZpc2liaWxpdHkgKDQzLTQ0KVxuLSBSaXBwbGUgQm94XG4tIFNlYXJjaCBWaXNpYmlsaXR5XG4tIFN0YXJ0dXAgU3RhdHVzICg0MC00NClcbi0gU3dpdGNoZXIgUG9wdXAgRGVsYXlcbi0gU3lzdGVtIE1lbnUgKEFnZ3JlZ2F0ZSBNZW51KSBWaXNpYmlsaXR5ICgzLjM2LTQyKVxuLSBUYWtlIFNjcmVlbnNob3QgQnV0dG9uIGluIFdpbmRvdyBNZW51IFZpc2liaWxpdHlcbi0gV2VhdGhlciBWaXNpYmlsaXR5XG4tIFdpbmRvdyBEZW1hbmRzIEF0dGVudGlvbiBGb2N1c1xuLSBXaW5kb3cgUGlja2VyIENhcHRpb24gVmlzaWJpbGl0eVxuLSBXaW5kb3cgUGlja2VyIENsb3NlIEJ1dHRvbiBWaXNpYmlsaXR5XG4tIFdpbmRvdyBQaWNrZXIgSWNvbiAoNDAtNDQpXG4tIFdvcmtzcGFjZSBCYWNrZ3JvdW5kIENvcm5lciBTaXplIGluIE92ZXJ2aWV3ICg0MC00NClcbi0gV29ya3NwYWNlIFBvcHVwIFZpc2liaWxpdHlcbi0gV29ya3NwYWNlcyBpbiBhcHAgZ3JpZCBWaXNpYmlsaXR5ICg0MC00NClcbi0gV29ya3NwYWNlIFN3aXRjaGVyIFNpemUgKDQwLTQ0KVxuLSBXb3Jrc3BhY2UgU3dpdGNoZXIgVmlzaWJpbGl0eVxuLSBXb3Jrc3BhY2UgV3JhcGFyb3VuZFxuLSBXb3JsZCBDbG9jayBWaXNpYmlsaXR5IiwKICAiZ2V0dGV4dC1kb21haW4iOiAianVzdC1wZXJmZWN0aW9uIiwKICAibmFtZSI6ICJKdXN0IFBlcmZlY3Rpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuanVzdC1wZXJmZWN0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9qcmFobWF0emFkZWgvanVzdC1wZXJmZWN0aW9uIiwKICAidXVpZCI6ICJqdXN0LXBlcmZlY3Rpb24tZGVza3RvcEBqdXN0LXBlcmZlY3Rpb24iLAogICJ2ZXJzaW9uIjogMjQKfQ=="},
     "41": {"version": "24", "sha256": "12ns0pbg16flsv8clggwf9hs2w4wmcvp6hijg6bchy7g2ahszr3x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzXG5cbi0gQWNjZXNzaWJpbGl0eSBNZW51IFZpc2liaWxpdHlcbi0gQWN0aXZpdGllcyBCdXR0b24gSWNvbiBWaXNpYmlsaXR5XG4tIEFjdGl2aXRpZXMgYnV0dG9uIFZpc2liaWxpdHlcbi0gQWx0IFRhYiBJY29uIFNpemVcbi0gQWx0IFRhYiBXaW5kb3cgUHJldmlldyBJY29uIFNpemVcbi0gQWx0IFRhYiBXaW5kb3cgUHJldmlldyBTaXplXG4tIEFsd2F5cyBTaG93IFdvcmtzcGFjZSBTd2l0Y2hlciBvbiBEeW5hbWljIFdvcmtzcGFjZXMgKDQwLTQ0KVxuLSBBbmltYXRpb24gU3BlZWQgb3IgRGlzYWJsZSBpdFxuLSBBcHAgR2VzdHVyZSAoMy4zNiwgMy4zOClcbi0gQXBwbGljYXRpb25zIEJ1dHRvbiBWaXNpYmlsaXR5XG4tIEFwcCBNZW51IEljb24gVmlzaWJpbGl0eVxuLSBBcHAgTWVudSBMYWJlbCBWaXNpYmlsaXR5XG4tIEFwcCBNZW51IFZpc2liaWxpdHlcbi0gQmFja2dyb3VuZCBNZW51IFZpc2liaWxpdHlcbi0gQ2FsZW5kYXIgVmlzaWJpbGl0eVxuLSBDbG9jayBNZW51IFBvc2l0aW9uXG4tIENsb2NrIE1lbnUgVmlzaWJpbGl0eVxuLSBEYXNoIEljb24gU2l6ZVxuLSBEYXNoIFNlcGFyYXRvciBWaXNpYmlsaXR5ICg0MC00NClcbi0gRGFzaCBWaXNpYmlsaXR5XG4tIERpc2FibGUgVHlwZSB0byBTZWFyY2hcbi0gRG91YmxlIFN1cGVyIEtleSB0byBBcHAgR3JpZFxuLSBFdmVudHMgaW4gQ2xvY2sgTWVudSBWaXNpYmlsaXR5XG4tIEdOT01FIFNoZWxsIFRoZW1lIE92ZXJyaWRlXG4tIEhvdCBDb3JuZXIgKDMuMzYtNDApXG4tIEtleWJvYXJkIExheW91dCBWaXNpYmlsaXR5XG4tIExvb2tpbmcgR2xhc3MgU2l6ZVxuLSBOb3RpZmljYXRpb24gQmFubmVyIFBvc2l0aW9uXG4tIE9TRCBQb3NpdGlvblxuLSBPU0QgVmlzaWJpbGl0eVxuLSBPdmVydmlldyBTcGFjaW5nIFNpemUgKDQwLTQ0KVxuLSBQYW5lbCBBcnJvdyBWaXNpYmlsaXR5ICgzLjM2LCAzLjM4KVxuLSBQYW5lbCBCdXR0b24gUGFkZGluZyBTaXplXG4tIFBhbmVsIEhlaWdodFxuLSBQYW5lbCBpY29uIHNpemUgXG4tIFBhbmVsIEluZGljYXRvciBQYWRkaW5nIFNpemVcbi0gUGFuZWwgTm90aWZpY2F0aW9uIGljb24gVmlzaWJpbGl0eVxuLSBQYW5lbCBQb3NpdGlvblxuLSBQYW5lbCBSb3VuZCBDb3JuZXIgU2l6ZSAoMy4zNi00MSlcbi0gUGFuZWwgVmlzaWJpbGl0eVxuLSBQYW5lbCBWaXNpYmlsaXR5IGluIE92ZXJ2aWV3XG4tIFBvd2VyIEljb24gVmlzaWJpbGl0eVxuLSBRdWljayBTZXR0aW5ncyBNZW51IFZpc2liaWxpdHkgKDQzLTQ0KVxuLSBSaXBwbGUgQm94XG4tIFNlYXJjaCBWaXNpYmlsaXR5XG4tIFN0YXJ0dXAgU3RhdHVzICg0MC00NClcbi0gU3dpdGNoZXIgUG9wdXAgRGVsYXlcbi0gU3lzdGVtIE1lbnUgKEFnZ3JlZ2F0ZSBNZW51KSBWaXNpYmlsaXR5ICgzLjM2LTQyKVxuLSBUYWtlIFNjcmVlbnNob3QgQnV0dG9uIGluIFdpbmRvdyBNZW51IFZpc2liaWxpdHlcbi0gV2VhdGhlciBWaXNpYmlsaXR5XG4tIFdpbmRvdyBEZW1hbmRzIEF0dGVudGlvbiBGb2N1c1xuLSBXaW5kb3cgUGlja2VyIENhcHRpb24gVmlzaWJpbGl0eVxuLSBXaW5kb3cgUGlja2VyIENsb3NlIEJ1dHRvbiBWaXNpYmlsaXR5XG4tIFdpbmRvdyBQaWNrZXIgSWNvbiAoNDAtNDQpXG4tIFdvcmtzcGFjZSBCYWNrZ3JvdW5kIENvcm5lciBTaXplIGluIE92ZXJ2aWV3ICg0MC00NClcbi0gV29ya3NwYWNlIFBvcHVwIFZpc2liaWxpdHlcbi0gV29ya3NwYWNlcyBpbiBhcHAgZ3JpZCBWaXNpYmlsaXR5ICg0MC00NClcbi0gV29ya3NwYWNlIFN3aXRjaGVyIFNpemUgKDQwLTQ0KVxuLSBXb3Jrc3BhY2UgU3dpdGNoZXIgVmlzaWJpbGl0eVxuLSBXb3Jrc3BhY2UgV3JhcGFyb3VuZFxuLSBXb3JsZCBDbG9jayBWaXNpYmlsaXR5IiwKICAiZ2V0dGV4dC1kb21haW4iOiAianVzdC1wZXJmZWN0aW9uIiwKICAibmFtZSI6ICJKdXN0IFBlcmZlY3Rpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuanVzdC1wZXJmZWN0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9qcmFobWF0emFkZWgvanVzdC1wZXJmZWN0aW9uIiwKICAidXVpZCI6ICJqdXN0LXBlcmZlY3Rpb24tZGVza3RvcEBqdXN0LXBlcmZlY3Rpb24iLAogICJ2ZXJzaW9uIjogMjQKfQ=="},
     "42": {"version": "26", "sha256": "1afivr0y15fl8ilx07s09zqszlhyd70rg6j2vhwn8l8f3l8j5731", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzIiwKICAiZG9uYXRpb25zIjogewogICAgInBhdHJlb24iOiAianVzdHBlcmZlY3Rpb24iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAianVzdC1wZXJmZWN0aW9uIiwKICAibmFtZSI6ICJKdXN0IFBlcmZlY3Rpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuanVzdC1wZXJmZWN0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvanJhaG1hdHphZGVoL2p1c3QtcGVyZmVjdGlvbiIsCiAgInV1aWQiOiAianVzdC1wZXJmZWN0aW9uLWRlc2t0b3BAanVzdC1wZXJmZWN0aW9uIiwKICAidmVyc2lvbiI6IDI2Cn0="},
     "43": {"version": "26", "sha256": "1afivr0y15fl8ilx07s09zqszlhyd70rg6j2vhwn8l8f3l8j5731", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzIiwKICAiZG9uYXRpb25zIjogewogICAgInBhdHJlb24iOiAianVzdHBlcmZlY3Rpb24iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAianVzdC1wZXJmZWN0aW9uIiwKICAibmFtZSI6ICJKdXN0IFBlcmZlY3Rpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuanVzdC1wZXJmZWN0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvanJhaG1hdHphZGVoL2p1c3QtcGVyZmVjdGlvbiIsCiAgInV1aWQiOiAianVzdC1wZXJmZWN0aW9uLWRlc2t0b3BAanVzdC1wZXJmZWN0aW9uIiwKICAidmVyc2lvbiI6IDI2Cn0="},
     "44": {"version": "26", "sha256": "1afivr0y15fl8ilx07s09zqszlhyd70rg6j2vhwn8l8f3l8j5731", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzIiwKICAiZG9uYXRpb25zIjogewogICAgInBhdHJlb24iOiAianVzdHBlcmZlY3Rpb24iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAianVzdC1wZXJmZWN0aW9uIiwKICAibmFtZSI6ICJKdXN0IFBlcmZlY3Rpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuanVzdC1wZXJmZWN0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvanJhaG1hdHphZGVoL2p1c3QtcGVyZmVjdGlvbiIsCiAgInV1aWQiOiAianVzdC1wZXJmZWN0aW9uLWRlc2t0b3BAanVzdC1wZXJmZWN0aW9uIiwKICAidmVyc2lvbiI6IDI2Cn0="},
-    "45": {"version": "27", "sha256": "1ggwqgcyi0wqj7fi2km1xvxx0mhdqwxx1pl7ffkvm4f7y6pg4q01", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzIiwKICAiZG9uYXRpb25zIjogewogICAgInBhdHJlb24iOiAianVzdHBlcmZlY3Rpb24iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAianVzdC1wZXJmZWN0aW9uIiwKICAibmFtZSI6ICJKdXN0IFBlcmZlY3Rpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuanVzdC1wZXJmZWN0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2pyYWhtYXR6YWRlaC9qdXN0LXBlcmZlY3Rpb24iLAogICJ1dWlkIjogImp1c3QtcGVyZmVjdGlvbi1kZXNrdG9wQGp1c3QtcGVyZmVjdGlvbiIsCiAgInZlcnNpb24iOiAyNwp9"}
+    "45": {"version": "28", "sha256": "1byh0rikqj51vyi3al2ngch3nhm10pwf0pwcjsgk06qifq1bad01", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJqdXN0cGVyZmVjdGlvbiIsCiAgICAicGF0cmVvbiI6ICJqdXN0cGVyZmVjdGlvbiIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJqdXN0LXBlcmZlY3Rpb24iLAogICJuYW1lIjogIkp1c3QgUGVyZmVjdGlvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5qdXN0LXBlcmZlY3Rpb24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2pyYWhtYXR6YWRlaC9qdXN0LXBlcmZlY3Rpb24iLAogICJ1dWlkIjogImp1c3QtcGVyZmVjdGlvbi1kZXNrdG9wQGp1c3QtcGVyZmVjdGlvbiIsCiAgInZlcnNpb24iOiAyOAp9"},
+    "46": {"version": "28", "sha256": "1byh0rikqj51vyi3al2ngch3nhm10pwf0pwcjsgk06qifq1bad01", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR3ZWFrIFRvb2wgdG8gQ3VzdG9taXplIEdOT01FIFNoZWxsLCBDaGFuZ2UgdGhlIEJlaGF2aW9yIGFuZCBEaXNhYmxlIFVJIEVsZW1lbnRzIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJqdXN0cGVyZmVjdGlvbiIsCiAgICAicGF0cmVvbiI6ICJqdXN0cGVyZmVjdGlvbiIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJqdXN0LXBlcmZlY3Rpb24iLAogICJuYW1lIjogIkp1c3QgUGVyZmVjdGlvbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5qdXN0LXBlcmZlY3Rpb24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2pyYWhtYXR6YWRlaC9qdXN0LXBlcmZlY3Rpb24iLAogICJ1dWlkIjogImp1c3QtcGVyZmVjdGlvbi1kZXNrdG9wQGp1c3QtcGVyZmVjdGlvbiIsCiAgInZlcnNpb24iOiAyOAp9"}
   }}
 , {"uuid": "workspaces-bar@fthx", "name": "Workspaces Bar", "pname": "workspaces-bar", "description": "NOT MAINTAINED ANYMORE\n\nReplace 'Activities' button by all current workspaces buttons. Switch workspace or toggle overview by clicking on these buttons.\n\n You can use names for workspaces: there are two ways for that. 1) Edit the string array 'org.gnome.desktop.wm.preferences.workspace-names' gsettings key (through dconf editor, e.g.). 2) Use official GNOME extension Workspaces Indicator's settings. You don't have to write a long enough list: numbers are displayed if no workspace name is defined.", "link": "https://extensions.gnome.org/extension/3851/workspaces-bar/", "shell_version_map": {
     "38": {"version": "13", "sha256": "0vilcgm88sb6w3x3wyil92gdsf3bwyy2ichhw1x6xidm7ggkibqr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5PVCBNQUlOVEFJTkVEIEFOWU1PUkVcblxuUmVwbGFjZSAnQWN0aXZpdGllcycgYnV0dG9uIGJ5IGFsbCBjdXJyZW50IHdvcmtzcGFjZXMgYnV0dG9ucy4gU3dpdGNoIHdvcmtzcGFjZSBvciB0b2dnbGUgb3ZlcnZpZXcgYnkgY2xpY2tpbmcgb24gdGhlc2UgYnV0dG9ucy5cblxuIFlvdSBjYW4gdXNlIG5hbWVzIGZvciB3b3Jrc3BhY2VzOiB0aGVyZSBhcmUgdHdvIHdheXMgZm9yIHRoYXQuIDEpIEVkaXQgdGhlIHN0cmluZyBhcnJheSAnb3JnLmdub21lLmRlc2t0b3Aud20ucHJlZmVyZW5jZXMud29ya3NwYWNlLW5hbWVzJyBnc2V0dGluZ3Mga2V5ICh0aHJvdWdoIGRjb25mIGVkaXRvciwgZS5nLikuIDIpIFVzZSBvZmZpY2lhbCBHTk9NRSBleHRlbnNpb24gV29ya3NwYWNlcyBJbmRpY2F0b3IncyBzZXR0aW5ncy4gWW91IGRvbid0IGhhdmUgdG8gd3JpdGUgYSBsb25nIGVub3VnaCBsaXN0OiBudW1iZXJzIGFyZSBkaXNwbGF5ZWQgaWYgbm8gd29ya3NwYWNlIG5hbWUgaXMgZGVmaW5lZC4iLAogICJuYW1lIjogIldvcmtzcGFjZXMgQmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC93b3Jrc3BhY2VzLWJhciIsCiAgInV1aWQiOiAid29ya3NwYWNlcy1iYXJAZnRoeCIsCiAgInZlcnNpb24iOiAxMwp9"},
@@ -2831,13 +2955,14 @@
     "42": {"version": "6", "sha256": "03hz84zr05sjw20jvvhmawgi2acimlqzh3vrsp184j6d671yfv7m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgQWxhY3JpdHR5IHdpbmRvdyB2aWEgaG90a2V5OiBBbHQrelxuXG5JZiBBbGFjcml0dHkgaXMgbm90IGxhdW5jaGVkLCBhdHRlbXB0cyB0byBzdGFydCBpdCAoL3Vzci9iaW4vYWxhY3JpdHR5KVxuXG5Xb3JrcyB1bmRlciBib3RoIFdheWxhbmQgYW5kIFgxMVxuXG5UbyBjaGFuZ2UgaG90a2V5IHBsZWFzZSBmb2xsb3cgaW5zdHJ1Y3Rpb24gaW4gdGhlIFJFQURNRS5tZDoiLAogICJuYW1lIjogIlRvZ2dsZSBBbGFjcml0dHkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlLWFsYWNyaXR0eSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXh4YXB5L2dub21lLWFsYWNyaXR0eS10b2dnbGUiLAogICJ1dWlkIjogInRvZ2dsZS1hbGFjcml0dHlAaXRzdGltZS50ZWNoIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "43": {"version": "6", "sha256": "03hz84zr05sjw20jvvhmawgi2acimlqzh3vrsp184j6d671yfv7m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgQWxhY3JpdHR5IHdpbmRvdyB2aWEgaG90a2V5OiBBbHQrelxuXG5JZiBBbGFjcml0dHkgaXMgbm90IGxhdW5jaGVkLCBhdHRlbXB0cyB0byBzdGFydCBpdCAoL3Vzci9iaW4vYWxhY3JpdHR5KVxuXG5Xb3JrcyB1bmRlciBib3RoIFdheWxhbmQgYW5kIFgxMVxuXG5UbyBjaGFuZ2UgaG90a2V5IHBsZWFzZSBmb2xsb3cgaW5zdHJ1Y3Rpb24gaW4gdGhlIFJFQURNRS5tZDoiLAogICJuYW1lIjogIlRvZ2dsZSBBbGFjcml0dHkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlLWFsYWNyaXR0eSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXh4YXB5L2dub21lLWFsYWNyaXR0eS10b2dnbGUiLAogICJ1dWlkIjogInRvZ2dsZS1hbGFjcml0dHlAaXRzdGltZS50ZWNoIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "44": {"version": "6", "sha256": "03hz84zr05sjw20jvvhmawgi2acimlqzh3vrsp184j6d671yfv7m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgQWxhY3JpdHR5IHdpbmRvdyB2aWEgaG90a2V5OiBBbHQrelxuXG5JZiBBbGFjcml0dHkgaXMgbm90IGxhdW5jaGVkLCBhdHRlbXB0cyB0byBzdGFydCBpdCAoL3Vzci9iaW4vYWxhY3JpdHR5KVxuXG5Xb3JrcyB1bmRlciBib3RoIFdheWxhbmQgYW5kIFgxMVxuXG5UbyBjaGFuZ2UgaG90a2V5IHBsZWFzZSBmb2xsb3cgaW5zdHJ1Y3Rpb24gaW4gdGhlIFJFQURNRS5tZDoiLAogICJuYW1lIjogIlRvZ2dsZSBBbGFjcml0dHkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlLWFsYWNyaXR0eSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXh4YXB5L2dub21lLWFsYWNyaXR0eS10b2dnbGUiLAogICJ1dWlkIjogInRvZ2dsZS1hbGFjcml0dHlAaXRzdGltZS50ZWNoIiwKICAidmVyc2lvbiI6IDYKfQ=="},
-    "45": {"version": "7", "sha256": "1b82wjk91izvd4b0w7lz7cqkh8536wyj3biix59b8n8cg25wslai", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgQWxhY3JpdHR5IHdpbmRvdyB2aWEgaG90a2V5OiBBbHQrelxuXG5JZiBBbGFjcml0dHkgaXMgbm90IGxhdW5jaGVkLCBhdHRlbXB0cyB0byBzdGFydCBpdCAoL3Vzci9iaW4vYWxhY3JpdHR5KVxuXG5Xb3JrcyB1bmRlciBib3RoIFdheWxhbmQgYW5kIFgxMVxuXG5UbyBjaGFuZ2UgaG90a2V5IHBsZWFzZSBmb2xsb3cgaW5zdHJ1Y3Rpb24gaW4gdGhlIFJFQURNRS5tZDoiLAogICJuYW1lIjogIlRvZ2dsZSBBbGFjcml0dHkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlLWFsYWNyaXR0eSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9heHhhcHkvZ25vbWUtYWxhY3JpdHR5LXRvZ2dsZSIsCiAgInV1aWQiOiAidG9nZ2xlLWFsYWNyaXR0eUBpdHN0aW1lLnRlY2giLAogICJ2ZXJzaW9uIjogNwp9"}
+    "45": {"version": "10", "sha256": "0kbwdhsndfiic3g4ainhfgz5v1y4ipsqpxghgfpydvlp8phlg3sn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgQWxhY3JpdHR5IHdpbmRvdyB2aWEgaG90a2V5OiBBbHQrelxuXG5JZiBBbGFjcml0dHkgaXMgbm90IGxhdW5jaGVkLCBhdHRlbXB0cyB0byBzdGFydCBpdCAoL3Vzci9iaW4vYWxhY3JpdHR5KVxuXG5Xb3JrcyB1bmRlciBib3RoIFdheWxhbmQgYW5kIFgxMVxuXG5UbyBjaGFuZ2UgaG90a2V5IHBsZWFzZSBmb2xsb3cgaW5zdHJ1Y3Rpb24gaW4gdGhlIFJFQURNRS5tZDoiLAogICJuYW1lIjogIlRvZ2dsZSBBbGFjcml0dHkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlLWFsYWNyaXR0eSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXh4YXB5L2dub21lLWFsYWNyaXR0eS10b2dnbGUiLAogICJ1dWlkIjogInRvZ2dsZS1hbGFjcml0dHlAaXRzdGltZS50ZWNoIiwKICAidmVyc2lvbiI6IDEwCn0="},
+    "46": {"version": "10", "sha256": "0kbwdhsndfiic3g4ainhfgz5v1y4ipsqpxghgfpydvlp8phlg3sn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgQWxhY3JpdHR5IHdpbmRvdyB2aWEgaG90a2V5OiBBbHQrelxuXG5JZiBBbGFjcml0dHkgaXMgbm90IGxhdW5jaGVkLCBhdHRlbXB0cyB0byBzdGFydCBpdCAoL3Vzci9iaW4vYWxhY3JpdHR5KVxuXG5Xb3JrcyB1bmRlciBib3RoIFdheWxhbmQgYW5kIFgxMVxuXG5UbyBjaGFuZ2UgaG90a2V5IHBsZWFzZSBmb2xsb3cgaW5zdHJ1Y3Rpb24gaW4gdGhlIFJFQURNRS5tZDoiLAogICJuYW1lIjogIlRvZ2dsZSBBbGFjcml0dHkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlLWFsYWNyaXR0eSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXh4YXB5L2dub21lLWFsYWNyaXR0eS10b2dnbGUiLAogICJ1dWlkIjogInRvZ2dsZS1hbGFjcml0dHlAaXRzdGltZS50ZWNoIiwKICAidmVyc2lvbiI6IDEwCn0="}
   }}
 , {"uuid": "hide-panel@fthx", "name": "Hide Panel", "pname": "hide-panel", "description": "NOT MAINTAINED ANYMORE\n\nHide top panel except in overview. Switch button in panel.\n\nVery very light extension. There is a 1 pixel wide line at the top of the screen that allows to blindly use the panel menus. This is needed to keep the native hot corner active without having to recreate it.", "link": "https://extensions.gnome.org/extension/3948/hide-panel/", "shell_version_map": {
     "38": {"version": "8", "sha256": "0hrfjgl71m7x9d30c3arnpc4zmc9ndl5706nyv4cwki6h95vk13d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5PVCBNQUlOVEFJTkVEIEFOWU1PUkVcblxuSGlkZSB0b3AgcGFuZWwgZXhjZXB0IGluIG92ZXJ2aWV3LiBTd2l0Y2ggYnV0dG9uIGluIHBhbmVsLlxuXG5WZXJ5IHZlcnkgbGlnaHQgZXh0ZW5zaW9uLiBUaGVyZSBpcyBhIDEgcGl4ZWwgd2lkZSBsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbiB0aGF0IGFsbG93cyB0byBibGluZGx5IHVzZSB0aGUgcGFuZWwgbWVudXMuIFRoaXMgaXMgbmVlZGVkIHRvIGtlZXAgdGhlIG5hdGl2ZSBob3QgY29ybmVyIGFjdGl2ZSB3aXRob3V0IGhhdmluZyB0byByZWNyZWF0ZSBpdC4iLAogICJuYW1lIjogIkhpZGUgUGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9oaWRlLXBhbmVsIiwKICAidXVpZCI6ICJoaWRlLXBhbmVsQGZ0aHgiLAogICJ2ZXJzaW9uIjogOAp9"},
     "40": {"version": "8", "sha256": "0hrfjgl71m7x9d30c3arnpc4zmc9ndl5706nyv4cwki6h95vk13d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5PVCBNQUlOVEFJTkVEIEFOWU1PUkVcblxuSGlkZSB0b3AgcGFuZWwgZXhjZXB0IGluIG92ZXJ2aWV3LiBTd2l0Y2ggYnV0dG9uIGluIHBhbmVsLlxuXG5WZXJ5IHZlcnkgbGlnaHQgZXh0ZW5zaW9uLiBUaGVyZSBpcyBhIDEgcGl4ZWwgd2lkZSBsaW5lIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbiB0aGF0IGFsbG93cyB0byBibGluZGx5IHVzZSB0aGUgcGFuZWwgbWVudXMuIFRoaXMgaXMgbmVlZGVkIHRvIGtlZXAgdGhlIG5hdGl2ZSBob3QgY29ybmVyIGFjdGl2ZSB3aXRob3V0IGhhdmluZyB0byByZWNyZWF0ZSBpdC4iLAogICJuYW1lIjogIkhpZGUgUGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9oaWRlLXBhbmVsIiwKICAidXVpZCI6ICJoaWRlLXBhbmVsQGZ0aHgiLAogICJ2ZXJzaW9uIjogOAp9"}
   }}
-, {"uuid": "persistent-email-notifications@fthx", "name": "Persistent Email Notifications", "pname": "persistent-email-notifications", "description": "Never hide a new mail notification, except if you close it.\n\nVery very light extension. Email clients supported: Thunderbird, Evolution, Geary, Mailspring, TypeApp, BlueMail. Please ask for another email client if needed.", "link": "https://extensions.gnome.org/extension/3951/persistent-email-notifications/", "shell_version_map": {
+, {"uuid": "persistent-email-notifications@fthx", "name": "Persistent Email Notifications", "pname": "persistent-email-notifications", "description": "NOT MAINTAINED ANYMORE\n\nNever hide a new mail notification, except if you close it.\n\nVery very light extension. Email clients supported: Thunderbird, Evolution, Geary, Mailspring, TypeApp, BlueMail. Please ask for another email client if needed.", "link": "https://extensions.gnome.org/extension/3951/persistent-email-notifications/", "shell_version_map": {
     "38": {"version": "3", "sha256": "06m6fhs50vlrwkgdk6cvkcl5f155a1w8szs1g9pzryf8mmldgmdd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5ldmVyIGhpZGUgYSBuZXcgbWFpbCBub3RpZmljYXRpb24sIGV4Y2VwdCBpZiB5b3UgY2xvc2UgaXQuXG5cblZlcnkgdmVyeSBsaWdodCBleHRlbnNpb24uIEVtYWlsIGNsaWVudHMgc3VwcG9ydGVkOiBUaHVuZGVyYmlyZCwgRXZvbHV0aW9uLCBHZWFyeSwgTWFpbHNwcmluZywgVHlwZUFwcCwgQmx1ZU1haWwuIFBsZWFzZSBhc2sgZm9yIGFub3RoZXIgZW1haWwgY2xpZW50IGlmIG5lZWRlZC4iLAogICJuYW1lIjogIlBlcnNpc3RlbnQgRW1haWwgTm90aWZpY2F0aW9ucyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3BlcnNpc3RlbnQtZW1haWwtbm90aWZpY2F0aW9ucyIsCiAgInV1aWQiOiAicGVyc2lzdGVudC1lbWFpbC1ub3RpZmljYXRpb25zQGZ0aHgiLAogICJ2ZXJzaW9uIjogMwp9"},
     "40": {"version": "3", "sha256": "06m6fhs50vlrwkgdk6cvkcl5f155a1w8szs1g9pzryf8mmldgmdd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5ldmVyIGhpZGUgYSBuZXcgbWFpbCBub3RpZmljYXRpb24sIGV4Y2VwdCBpZiB5b3UgY2xvc2UgaXQuXG5cblZlcnkgdmVyeSBsaWdodCBleHRlbnNpb24uIEVtYWlsIGNsaWVudHMgc3VwcG9ydGVkOiBUaHVuZGVyYmlyZCwgRXZvbHV0aW9uLCBHZWFyeSwgTWFpbHNwcmluZywgVHlwZUFwcCwgQmx1ZU1haWwuIFBsZWFzZSBhc2sgZm9yIGFub3RoZXIgZW1haWwgY2xpZW50IGlmIG5lZWRlZC4iLAogICJuYW1lIjogIlBlcnNpc3RlbnQgRW1haWwgTm90aWZpY2F0aW9ucyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3BlcnNpc3RlbnQtZW1haWwtbm90aWZpY2F0aW9ucyIsCiAgInV1aWQiOiAicGVyc2lzdGVudC1lbWFpbC1ub3RpZmljYXRpb25zQGZ0aHgiLAogICJ2ZXJzaW9uIjogMwp9"}
   }}
@@ -2872,7 +2997,8 @@
     "42": {"version": "16", "sha256": "065kl2dzf09vsyzfqx3sg8x4wz18q2azvp5lir7lrad7af2d0m93", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2Y6IGh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhclxuXG5CcmluZyBiYWNrIHRoZSB0cmFuc3BhcmVudCB0b3AgYmFyIGluIEdOT01FIFNoZWxsIHdpdGggYWRqdXN0YWJsZSB0cmFuc3BhcmVuY3kuXG5cbkRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGN1c3RvbSBzaGVsbCB0aGVtZXMuIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIChBZGp1c3RhYmxlIHRyYW5zcGFyZW5jeSkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xhbWFyaW9zL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC10b3AtYmFyIiwKICAidXVpZCI6ICJ0cmFuc3BhcmVudC10b3AtYmFyQGZ0cGl4LmNvbSIsCiAgInZlcnNpb24iOiAxNgp9"},
     "43": {"version": "16", "sha256": "065kl2dzf09vsyzfqx3sg8x4wz18q2azvp5lir7lrad7af2d0m93", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2Y6IGh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhclxuXG5CcmluZyBiYWNrIHRoZSB0cmFuc3BhcmVudCB0b3AgYmFyIGluIEdOT01FIFNoZWxsIHdpdGggYWRqdXN0YWJsZSB0cmFuc3BhcmVuY3kuXG5cbkRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGN1c3RvbSBzaGVsbCB0aGVtZXMuIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIChBZGp1c3RhYmxlIHRyYW5zcGFyZW5jeSkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xhbWFyaW9zL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc3BhcmVudC10b3AtYmFyIiwKICAidXVpZCI6ICJ0cmFuc3BhcmVudC10b3AtYmFyQGZ0cGl4LmNvbSIsCiAgInZlcnNpb24iOiAxNgp9"},
     "44": {"version": "17", "sha256": "06f5f87xix758gbixg1h9gd9jiqbwgqniw51k9qhmrz4q7134q8g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2Y6IGh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhclxuXG5CcmluZyBiYWNrIHRoZSB0cmFuc3BhcmVudCB0b3AgYmFyIGluIEdOT01FIFNoZWxsIHdpdGggYWRqdXN0YWJsZSB0cmFuc3BhcmVuY3kuXG5cbkRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGN1c3RvbSBzaGVsbCB0aGVtZXMuIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIChBZGp1c3RhYmxlIHRyYW5zcGFyZW5jeSkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGFtYXJpb3MvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRyYW5zcGFyZW50LXRvcC1iYXIiLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXRvcC1iYXJAZnRwaXguY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
-    "45": {"version": "19", "sha256": "0nlvn85b4qzzkmi9rxvab48lcnj1x8kac9045pfzq8qv3r8vf898", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2Y6IGh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhclxuXG5CcmluZyBiYWNrIHRoZSB0cmFuc3BhcmVudCB0b3AgYmFyIGluIEdOT01FIFNoZWxsIHdpdGggYWRqdXN0YWJsZSB0cmFuc3BhcmVuY3kuXG5cbkRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGN1c3RvbSBzaGVsbCB0aGVtZXMuIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIChBZGp1c3RhYmxlIHRyYW5zcGFyZW5jeSkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGFtYXJpb3MvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRyYW5zcGFyZW50LXRvcC1iYXIiLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXRvcC1iYXJAZnRwaXguY29tIiwKICAidmVyc2lvbiI6IDE5Cn0="}
+    "45": {"version": "19", "sha256": "0nlvn85b4qzzkmi9rxvab48lcnj1x8kac9045pfzq8qv3r8vf898", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2Y6IGh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhclxuXG5CcmluZyBiYWNrIHRoZSB0cmFuc3BhcmVudCB0b3AgYmFyIGluIEdOT01FIFNoZWxsIHdpdGggYWRqdXN0YWJsZSB0cmFuc3BhcmVuY3kuXG5cbkRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGN1c3RvbSBzaGVsbCB0aGVtZXMuIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIChBZGp1c3RhYmxlIHRyYW5zcGFyZW5jeSkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGFtYXJpb3MvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRyYW5zcGFyZW50LXRvcC1iYXIiLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXRvcC1iYXJAZnRwaXguY29tIiwKICAidmVyc2lvbiI6IDE5Cn0="},
+    "46": {"version": "20", "sha256": "1rgikvjap3qy07i7dnirv01xsj9yqd887l09jq575k6bgc4sf07b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2Y6IGh0dHBzOi8vZ2l0aHViLmNvbS96aGFuZ2hhaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNwYXJlbnQtdG9wLWJhclxuXG5CcmluZyBiYWNrIHRoZSB0cmFuc3BhcmVudCB0b3AgYmFyIGluIEdOT01FIFNoZWxsIHdpdGggYWRqdXN0YWJsZSB0cmFuc3BhcmVuY3kuXG5cbkRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGN1c3RvbSBzaGVsbCB0aGVtZXMuIiwKICAibmFtZSI6ICJUcmFuc3BhcmVudCBUb3AgQmFyIChBZGp1c3RhYmxlIHRyYW5zcGFyZW5jeSkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGFtYXJpb3MvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRyYW5zcGFyZW50LXRvcC1iYXIiLAogICJ1dWlkIjogInRyYW5zcGFyZW50LXRvcC1iYXJAZnRwaXguY29tIiwKICAidmVyc2lvbiI6IDIwCn0="}
   }}
 , {"uuid": "improved-workspace-indicator@michaelaquilina.github.io", "name": "Improved Workspace Indicator", "pname": "improved-workspace-indicator", "description": "Slightly improved workspace indicator that shows both current and in use workspaces similar to i3/sway", "link": "https://extensions.gnome.org/extension/3968/improved-workspace-indicator/", "shell_version_map": {
     "38": {"version": "20", "sha256": "1lm2rvbyl7yh0cry3wrj5qn9069ka7681zgjj7nhkgizsf2xd7b0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNsaWdodGx5IGltcHJvdmVkIHdvcmtzcGFjZSBpbmRpY2F0b3IgdGhhdCBzaG93cyBib3RoIGN1cnJlbnQgYW5kIGluIHVzZSB3b3Jrc3BhY2VzIHNpbWlsYXIgdG8gaTMvc3dheSIsCiAgIm5hbWUiOiAiSW1wcm92ZWQgV29ya3NwYWNlIEluZGljYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAibWljaGFlbGFxdWlsaW5hQGdtYWlsLmNvbSIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW1wcm92ZWQtd29ya3NwYWNlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWljaGFlbEFxdWlsaW5hL2ltcHJvdmVkLXdvcmtzcGFjZS1pbmRpY2F0b3IiLAogICJ1dWlkIjogImltcHJvdmVkLXdvcmtzcGFjZS1pbmRpY2F0b3JAbWljaGFlbGFxdWlsaW5hLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAyMAp9"},
@@ -2885,7 +3011,7 @@
 , {"uuid": "gnome4synology@psasse.gmx.de", "name": "Movie Search provider for Synology®", "pname": "gnome-movie-search-provider-for-synology", "description": "search provider for movie titles on Synology® NAS including offline search (yet to come)", "link": "https://extensions.gnome.org/extension/3969/gnome-movie-search-provider-for-synology/", "shell_version_map": {
     "40": {"version": "14", "sha256": "133jgh7s8mdc4dbcwr623yyrpfb8nv96iggsk2kb18lkw2rcf3xi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogInNlYXJjaCBwcm92aWRlciBmb3IgbW92aWUgdGl0bGVzIG9uIFN5bm9sb2d5XHUwMGFlIE5BUyBpbmNsdWRpbmcgb2ZmbGluZSBzZWFyY2ggKHlldCB0byBjb21lKSIsCiAgIm5hbWUiOiAiTW92aWUgU2VhcmNoIHByb3ZpZGVyIGZvciBTeW5vbG9neVx1MDBhZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wc2Fzc2U3Mi9tb3ZpZXM0c3lub2xvZ3kiLAogICJ1dWlkIjogImdub21lNHN5bm9sb2d5QHBzYXNzZS5nbXguZGUiLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
   }}
-, {"uuid": "guillotine@fopdoodle.net", "name": "Guillotine", "pname": "guillotine", "description": "Guillotine is a gnome extension designed for efficiently carrying out executions of commands from a customizable menu. Simply speaking: it is a highly customizable menu that enables you to launch commands and toggle services.\n\nA documentation is available at the repository: https://gitlab.com/ente76/guillotine/. The repository may also contain an updated version that is not (yet) available on this site.", "link": "https://extensions.gnome.org/extension/3981/guillotine/", "shell_version_map": {
+, {"uuid": "guillotine@fopdoodle.net", "name": "Guillotine", "pname": "guillotine", "description": "Guillotine is a gnome extension designed for efficiently carrying out executions of commands from a customizable menu. Simply speaking: it is a highly customizable menu that enables you to launch commands and toggle services.\n\nFor the most recent version (including compatibility for gnome 46) head over to the extension repository. No new updates will be published on Gnome-extensions.\n", "link": "https://extensions.gnome.org/extension/3981/guillotine/", "shell_version_map": {
     "40": {"version": "17", "sha256": "0hf19mk627iwlawfl15lwjd5xvkxm7li8b1hn5hyd903al1cv399", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkd1aWxsb3RpbmUgaXMgYSBnbm9tZSBleHRlbnNpb24gZGVzaWduZWQgZm9yIGVmZmljaWVudGx5IGNhcnJ5aW5nIG91dCBleGVjdXRpb25zIG9mIGNvbW1hbmRzIGZyb20gYSBjdXN0b21pemFibGUgbWVudS4gU2ltcGx5IHNwZWFraW5nOiBpdCBpcyBhIGhpZ2hseSBjdXN0b21pemFibGUgbWVudSB0aGF0IGVuYWJsZXMgeW91IHRvIGxhdW5jaCBjb21tYW5kcyBhbmQgdG9nZ2xlIHNlcnZpY2VzLiIsCiAgIm5hbWUiOiAiR3VpbGxvdGluZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ndWlsbG90aW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9lbnRlNzYvZ3VpbGxvdGluZS8iLAogICJ1dWlkIjogImd1aWxsb3RpbmVAZm9wZG9vZGxlLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
     "41": {"version": "17", "sha256": "0hf19mk627iwlawfl15lwjd5xvkxm7li8b1hn5hyd903al1cv399", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkd1aWxsb3RpbmUgaXMgYSBnbm9tZSBleHRlbnNpb24gZGVzaWduZWQgZm9yIGVmZmljaWVudGx5IGNhcnJ5aW5nIG91dCBleGVjdXRpb25zIG9mIGNvbW1hbmRzIGZyb20gYSBjdXN0b21pemFibGUgbWVudS4gU2ltcGx5IHNwZWFraW5nOiBpdCBpcyBhIGhpZ2hseSBjdXN0b21pemFibGUgbWVudSB0aGF0IGVuYWJsZXMgeW91IHRvIGxhdW5jaCBjb21tYW5kcyBhbmQgdG9nZ2xlIHNlcnZpY2VzLiIsCiAgIm5hbWUiOiAiR3VpbGxvdGluZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ndWlsbG90aW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9lbnRlNzYvZ3VpbGxvdGluZS8iLAogICJ1dWlkIjogImd1aWxsb3RpbmVAZm9wZG9vZGxlLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
     "42": {"version": "17", "sha256": "0hf19mk627iwlawfl15lwjd5xvkxm7li8b1hn5hyd903al1cv399", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkd1aWxsb3RpbmUgaXMgYSBnbm9tZSBleHRlbnNpb24gZGVzaWduZWQgZm9yIGVmZmljaWVudGx5IGNhcnJ5aW5nIG91dCBleGVjdXRpb25zIG9mIGNvbW1hbmRzIGZyb20gYSBjdXN0b21pemFibGUgbWVudS4gU2ltcGx5IHNwZWFraW5nOiBpdCBpcyBhIGhpZ2hseSBjdXN0b21pemFibGUgbWVudSB0aGF0IGVuYWJsZXMgeW91IHRvIGxhdW5jaCBjb21tYW5kcyBhbmQgdG9nZ2xlIHNlcnZpY2VzLiIsCiAgIm5hbWUiOiAiR3VpbGxvdGluZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ndWlsbG90aW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9lbnRlNzYvZ3VpbGxvdGluZS8iLAogICJ1dWlkIjogImd1aWxsb3RpbmVAZm9wZG9vZGxlLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
@@ -2893,13 +3019,14 @@
     "44": {"version": "17", "sha256": "0hf19mk627iwlawfl15lwjd5xvkxm7li8b1hn5hyd903al1cv399", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkd1aWxsb3RpbmUgaXMgYSBnbm9tZSBleHRlbnNpb24gZGVzaWduZWQgZm9yIGVmZmljaWVudGx5IGNhcnJ5aW5nIG91dCBleGVjdXRpb25zIG9mIGNvbW1hbmRzIGZyb20gYSBjdXN0b21pemFibGUgbWVudS4gU2ltcGx5IHNwZWFraW5nOiBpdCBpcyBhIGhpZ2hseSBjdXN0b21pemFibGUgbWVudSB0aGF0IGVuYWJsZXMgeW91IHRvIGxhdW5jaCBjb21tYW5kcyBhbmQgdG9nZ2xlIHNlcnZpY2VzLiIsCiAgIm5hbWUiOiAiR3VpbGxvdGluZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ndWlsbG90aW5lIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9lbnRlNzYvZ3VpbGxvdGluZS8iLAogICJ1dWlkIjogImd1aWxsb3RpbmVAZm9wZG9vZGxlLm5ldCIsCiAgInZlcnNpb24iOiAxNwp9"},
     "45": {"version": "18", "sha256": "0g5s47s6icy2mii5hk25i2drw2j4hzpfas4j1l8ryiald9xwkswy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkd1aWxsb3RpbmUgaXMgYSBnbm9tZSBleHRlbnNpb24gZGVzaWduZWQgZm9yIGVmZmljaWVudGx5IGNhcnJ5aW5nIG91dCBleGVjdXRpb25zIG9mIGNvbW1hbmRzIGZyb20gYSBjdXN0b21pemFibGUgbWVudS4gU2ltcGx5IHNwZWFraW5nOiBpdCBpcyBhIGhpZ2hseSBjdXN0b21pemFibGUgbWVudSB0aGF0IGVuYWJsZXMgeW91IHRvIGxhdW5jaCBjb21tYW5kcyBhbmQgdG9nZ2xlIHNlcnZpY2VzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZW50ZSIKICB9LAogICJuYW1lIjogIkd1aWxsb3RpbmUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ3VpbGxvdGluZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9lbnRlNzYvZ3VpbGxvdGluZS8iLAogICJ1dWlkIjogImd1aWxsb3RpbmVAZm9wZG9vZGxlLm5ldCIsCiAgInZlcnNpb24iOiAxOAp9"}
   }}
-, {"uuid": "shuzhi@tuberry", "name": "Shu Zhi", "pname": "shu-zhi", "description": "Wallpaper generation extension for GNOME Shell, inspired by Jizhi\n\nFor support, please report any issues via the homepage link below.", "link": "https://extensions.gnome.org/extension/3985/shu-zhi/", "shell_version_map": {
+, {"uuid": "shuzhi@tuberry", "name": "Shu Zhi", "pname": "shu-zhi", "description": "Wallpaper generation extension for GNOME Shell, inspired by jizhi\n\nFor support, please report any issues via the homepage link below.", "link": "https://extensions.gnome.org/extension/3985/shu-zhi/", "shell_version_map": {
     "38": {"version": "7", "sha256": "1yk39q1ydv7kmb8shi4cp7pf5zvpmj99gjl9svack4773dj9rrwi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IEppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogInNodXpoaSIsCiAgIm5hbWUiOiAiU2h1IFpoaSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zaHV6aGkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L3NodXpoaSIsCiAgInV1aWQiOiAic2h1emhpQHR1YmVycnkiLAogICJ2ZXJzaW9uIjogNwp9"},
     "40": {"version": "17", "sha256": "1n0ajmm6d7y6kify6k9g3j2kc3ass9s7zyif5jhr1djzsi6knpq0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IEppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zaHV6aGkiLAogICJuYW1lIjogIlNodSBaaGkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1emhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvc2h1emhpIiwKICAidXVpZCI6ICJzaHV6aGlAdHViZXJyeSIsCiAgInZlcnNpb24iOiAxNwp9"},
     "41": {"version": "19", "sha256": "1ib82yf7gh97hygbrxccpsh75jpg65rp834vygi25kyf0b8fykff", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IEppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zaHV6aGkiLAogICJuYW1lIjogIlNodSBaaGkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1emhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvc2h1emhpIiwKICAidXVpZCI6ICJzaHV6aGlAdHViZXJyeSIsCiAgInZlcnNpb24iOiAxOQp9"},
     "42": {"version": "21", "sha256": "1pbldn51jjfq45d3bl7nfciff1mn3krl7dhiwp9hqrp3hchlassd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IEppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zaHV6aGkiLAogICJuYW1lIjogIlNodSBaaGkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1emhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvc2h1emhpIiwKICAidXVpZCI6ICJzaHV6aGlAdHViZXJyeSIsCiAgInZlcnNpb24iOiAyMQp9"},
     "43": {"version": "23", "sha256": "1nsjpjjsllrdh2k6v9h06xm656b5dbq2vpxs7kqn4p7l8b0ycav4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IEppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zaHV6aGkiLAogICJuYW1lIjogIlNodSBaaGkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1emhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvc2h1emhpIiwKICAidXVpZCI6ICJzaHV6aGlAdHViZXJyeSIsCiAgInZlcnNpb24iOiAyMwp9"},
-    "45": {"version": "30", "sha256": "0bswnas2jr58f995sd6317wvy14vq0w5y8fcmrn8n36jgpf3ik5v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IEppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zaHV6aGkiLAogICJuYW1lIjogIlNodSBaaGkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1emhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvc2h1emhpIiwKICAidXVpZCI6ICJzaHV6aGlAdHViZXJyeSIsCiAgInZlcnNpb24iOiAzMAp9"}
+    "45": {"version": "30", "sha256": "0bswnas2jr58f995sd6317wvy14vq0w5y8fcmrn8n36jgpf3ik5v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IEppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zaHV6aGkiLAogICJuYW1lIjogIlNodSBaaGkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1emhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvc2h1emhpIiwKICAidXVpZCI6ICJzaHV6aGlAdHViZXJyeSIsCiAgInZlcnNpb24iOiAzMAp9"},
+    "46": {"version": "31", "sha256": "06q32s44nf9y61hph8vkmxxpwfzfi58r32py67mxca9xmswc3g03", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBnZW5lcmF0aW9uIGV4dGVuc2lvbiBmb3IgR05PTUUgU2hlbGwsIGluc3BpcmVkIGJ5IGppemhpXG5cbkZvciBzdXBwb3J0LCBwbGVhc2UgcmVwb3J0IGFueSBpc3N1ZXMgdmlhIHRoZSBob21lcGFnZSBsaW5rIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zaHV6aGkiLAogICJuYW1lIjogIlNodSBaaGkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1emhpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3R1YmVycnkvc2h1emhpIiwKICAidXVpZCI6ICJzaHV6aGlAdHViZXJyeSIsCiAgInZlcnNpb24iOiAzMQp9"}
   }}
 , {"uuid": "zilence@apankowski.github.com", "name": "Zilence", "pname": "zilence", "description": "Turns off notifications while sharing screen during a Zoom call", "link": "https://extensions.gnome.org/extension/3988/zilence/", "shell_version_map": {
     "38": {"version": "4", "sha256": "18iy39i5i8ii2salpxnyin0bwfckl6kp2fzkkij3fqd0pga1frix", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvbW1pdCI6ICIyNTU1ZGNhYjYxZTZiODBhZGFiYjM2NDM5MzEwMmY5MGU3MzhiOTRmIiwKICAiZGVzY3JpcHRpb24iOiAiVHVybnMgb2ZmIG5vdGlmaWNhdGlvbnMgd2hpbGUgc2hhcmluZyBzY3JlZW4gZHVyaW5nIGEgWm9vbSBjYWxsIiwKICAibmFtZSI6ICJaaWxlbmNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcGFua293c2tpL3ppbGVuY2UiLAogICJ1dWlkIjogInppbGVuY2VAYXBhbmtvd3NraS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -2913,7 +3040,8 @@
     "42": {"version": "34", "sha256": "1g0w2z3zcbpl7ca4fnsdgl110hy3md54bc1nani7kvc323yn038f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJsdWV0b290aCBiYXR0ZXJ5IGluZGljYXRvciIsCiAgImdldHRleHQtZG9tYWluIjogImJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIGJhdHRlcnkgaW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01pY2hhbFcvZ25vbWUtYmx1ZXRvb3RoLWJhdHRlcnktaW5kaWNhdG9yIiwKICAidXVpZCI6ICJibHVldG9vdGgtYmF0dGVyeUBtaWNoYWx3LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "43": {"version": "34", "sha256": "1g0w2z3zcbpl7ca4fnsdgl110hy3md54bc1nani7kvc323yn038f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJsdWV0b290aCBiYXR0ZXJ5IGluZGljYXRvciIsCiAgImdldHRleHQtZG9tYWluIjogImJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIGJhdHRlcnkgaW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01pY2hhbFcvZ25vbWUtYmx1ZXRvb3RoLWJhdHRlcnktaW5kaWNhdG9yIiwKICAidXVpZCI6ICJibHVldG9vdGgtYmF0dGVyeUBtaWNoYWx3LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "44": {"version": "34", "sha256": "1g0w2z3zcbpl7ca4fnsdgl110hy3md54bc1nani7kvc323yn038f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJsdWV0b290aCBiYXR0ZXJ5IGluZGljYXRvciIsCiAgImdldHRleHQtZG9tYWluIjogImJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIGJhdHRlcnkgaW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01pY2hhbFcvZ25vbWUtYmx1ZXRvb3RoLWJhdHRlcnktaW5kaWNhdG9yIiwKICAidXVpZCI6ICJibHVldG9vdGgtYmF0dGVyeUBtaWNoYWx3LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
-    "45": {"version": "38", "sha256": "1vd87x9d8h6zdv2v8aqy7l1061yrv3zwbj0wgs6535alcbhp6dld", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJsdWV0b290aCBiYXR0ZXJ5IGluZGljYXRvciIsCiAgImdldHRleHQtZG9tYWluIjogImJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIGJhdHRlcnkgaW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaWNoYWxXL2dub21lLWJsdWV0b290aC1iYXR0ZXJ5LWluZGljYXRvciIsCiAgInV1aWQiOiAiYmx1ZXRvb3RoLWJhdHRlcnlAbWljaGFsdy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM4Cn0="}
+    "45": {"version": "39", "sha256": "0w7gs20x9iacal9dnvds91y9d7xi93lf8ps98aw2918yiq3gd0xm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJsdWV0b290aCBiYXR0ZXJ5IGluZGljYXRvciIsCiAgImdldHRleHQtZG9tYWluIjogImJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIGJhdHRlcnkgaW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWljaGFsVy9nbm9tZS1ibHVldG9vdGgtYmF0dGVyeS1pbmRpY2F0b3IiLAogICJ1dWlkIjogImJsdWV0b290aC1iYXR0ZXJ5QG1pY2hhbHcuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzOQp9"},
+    "46": {"version": "39", "sha256": "0w7gs20x9iacal9dnvds91y9d7xi93lf8ps98aw2918yiq3gd0xm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJsdWV0b290aCBiYXR0ZXJ5IGluZGljYXRvciIsCiAgImdldHRleHQtZG9tYWluIjogImJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIGJhdHRlcnkgaW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJsdWV0b290aF9iYXR0ZXJ5X2luZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWljaGFsVy9nbm9tZS1ibHVldG9vdGgtYmF0dGVyeS1pbmRpY2F0b3IiLAogICJ1dWlkIjogImJsdWV0b290aC1iYXR0ZXJ5QG1pY2hhbHcuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzOQp9"}
   }}
 , {"uuid": "gnome-extension-all-ip-addresses@havekes.eu", "name": "All IP Addresses", "pname": "all-ip-addresses", "description": "Show IP addresses for LAN, WAN IPv6 and VPN in the GNOME panel. Click on the address to cycle trough different interfaces.", "link": "https://extensions.gnome.org/extension/3994/all-ip-addresses/", "shell_version_map": {
     "38": {"version": "12", "sha256": "0sxw8igvjv2hx1d42cibxbrjdl61983s9054l0jbnvszr30jyf7k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgSVAgYWRkcmVzc2VzIGZvciBMQU4sIFdBTiBJUHY2IGFuZCBWUE4gaW4gdGhlIEdOT01FIHBhbmVsLiBDbGljayBvbiB0aGUgYWRkcmVzcyB0byBjeWNsZSB0cm91Z2ggZGlmZmVyZW50IGludGVyZmFjZXMuIiwKICAibmFtZSI6ICJBbGwgSVAgQWRkcmVzc2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waGF2ZWtlcy9nbm9tZS1leHRlbnNpb24tYWxsLWlwLWFkZHJlc3NlcyIsCiAgInV1aWQiOiAiZ25vbWUtZXh0ZW5zaW9uLWFsbC1pcC1hZGRyZXNzZXNAaGF2ZWtlcy5ldSIsCiAgInZlcnNpb24iOiAxMgp9"},
@@ -2949,7 +3077,8 @@
     "41": {"version": "12", "sha256": "056cdiw7rlqpxkmca3f1aic7wr9dppvhp1z7wfxl905xn21p9pqf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGx5cmljIG9mIHBsYXlpbmcgc29uZ3Mgb24gdGhlIGRlc2t0b3BcblxuRm9yIHN1cHBvcnQsIHBsZWFzZSByZXBvcnQgYW55IGlzc3VlcyB2aWEgdGhlIGhvbWVwYWdlIGxpbmsgYmVsb3cuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlc2t0b3AtbHlyaWMiLAogICJuYW1lIjogIkRlc2t0b3AgTHlyaWMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGVza3RvcC1seXJpYyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2Rlc2t0b3AtbHlyaWMiLAogICJ1dWlkIjogImRlc2t0b3AtbHlyaWNAdHViZXJyeSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "42": {"version": "13", "sha256": "0j23i2gl956r2wffqky5vg6ca24gn3hkibhrhsvkqd87g90cjdq6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGx5cmljIG9mIHBsYXlpbmcgc29uZ3Mgb24gdGhlIGRlc2t0b3BcblxuRm9yIHN1cHBvcnQsIHBsZWFzZSByZXBvcnQgYW55IGlzc3VlcyB2aWEgdGhlIGhvbWVwYWdlIGxpbmsgYmVsb3cuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlc2t0b3AtbHlyaWMiLAogICJuYW1lIjogIkRlc2t0b3AgTHlyaWMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGVza3RvcC1seXJpYyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2Rlc2t0b3AtbHlyaWMiLAogICJ1dWlkIjogImRlc2t0b3AtbHlyaWNAdHViZXJyeSIsCiAgInZlcnNpb24iOiAxMwp9"},
     "43": {"version": "16", "sha256": "1frahic00q1dqi27vbxw8y0dz1qcfd99m1kzha1r8pyfgwd22fqv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGx5cmljIG9mIHBsYXlpbmcgc29uZ3Mgb24gdGhlIGRlc2t0b3BcblxuRm9yIHN1cHBvcnQsIHBsZWFzZSByZXBvcnQgYW55IGlzc3VlcyB2aWEgdGhlIGhvbWVwYWdlIGxpbmsgYmVsb3cuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlc2t0b3AtbHlyaWMiLAogICJuYW1lIjogIkRlc2t0b3AgTHlyaWMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGVza3RvcC1seXJpYyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2Rlc2t0b3AtbHlyaWMiLAogICJ1dWlkIjogImRlc2t0b3AtbHlyaWNAdHViZXJyeSIsCiAgInZlcnNpb24iOiAxNgp9"},
-    "45": {"version": "19", "sha256": "0p8rfw2yvx7cdm43wgjgml5hisijxwjsl8d6cg1aad9m3lc8d0pl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGx5cmljIG9mIHBsYXlpbmcgc29uZ3Mgb24gdGhlIGRlc2t0b3BcblxuRm9yIHN1cHBvcnQsIHBsZWFzZSByZXBvcnQgYW55IGlzc3VlcyB2aWEgdGhlIGhvbWVwYWdlIGxpbmsgYmVsb3cuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlc2t0b3AtbHlyaWMiLAogICJuYW1lIjogIkRlc2t0b3AgTHlyaWMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGVza3RvcC1seXJpYyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2Rlc2t0b3AtbHlyaWMiLAogICJ1dWlkIjogImRlc2t0b3AtbHlyaWNAdHViZXJyeSIsCiAgInZlcnNpb24iOiAxOQp9"}
+    "45": {"version": "19", "sha256": "0p8rfw2yvx7cdm43wgjgml5hisijxwjsl8d6cg1aad9m3lc8d0pl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGx5cmljIG9mIHBsYXlpbmcgc29uZ3Mgb24gdGhlIGRlc2t0b3BcblxuRm9yIHN1cHBvcnQsIHBsZWFzZSByZXBvcnQgYW55IGlzc3VlcyB2aWEgdGhlIGhvbWVwYWdlIGxpbmsgYmVsb3cuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlc2t0b3AtbHlyaWMiLAogICJuYW1lIjogIkRlc2t0b3AgTHlyaWMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGVza3RvcC1seXJpYyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2Rlc2t0b3AtbHlyaWMiLAogICJ1dWlkIjogImRlc2t0b3AtbHlyaWNAdHViZXJyeSIsCiAgInZlcnNpb24iOiAxOQp9"},
+    "46": {"version": "20", "sha256": "0g4a3mfnmj81qhb90hyp9hrzr5vr4r8dr458nkvk28qh9l9vbzb3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGx5cmljIG9mIHBsYXlpbmcgc29uZ3Mgb24gdGhlIGRlc2t0b3BcblxuRm9yIHN1cHBvcnQsIHBsZWFzZSByZXBvcnQgYW55IGlzc3VlcyB2aWEgdGhlIGhvbWVwYWdlIGxpbmsgYmVsb3cuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlc2t0b3AtbHlyaWMiLAogICJuYW1lIjogIkRlc2t0b3AgTHlyaWMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGVza3RvcC1seXJpYyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90dWJlcnJ5L2Rlc2t0b3AtbHlyaWMiLAogICJ1dWlkIjogImRlc2t0b3AtbHlyaWNAdHViZXJyeSIsCiAgInZlcnNpb24iOiAyMAp9"}
   }}
 , {"uuid": "alttab-mod@leleat-on-github", "name": "AltTab Mod", "pname": "alttab-mod", "description": "Add some QoL changes to the App Switcher (Alt/Super+Tab)...\n- use `WASD`, `hjkl` or the arrow keys for navigation\n- `Q` only closes the selected window instead of the entire app\n- only raise the first window instead of every instance\n- optionally: only show windows from the current workspace\n- optionally: only show windows from the current monitor\n- optionally: remove the App Switcher's delayed appearance", "link": "https://extensions.gnome.org/extension/4007/alttab-mod/", "shell_version_map": {
     "38": {"version": "6", "sha256": "1010nmdyga6lqk78vlc9r02h3kcgimlvamb7xhp5vw7i71gay4jv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBzb21lIFFvTCBjaGFuZ2VzIHRvIHRoZSBBcHAgU3dpdGNoZXIgKEFsdC9TdXBlcitUYWIpLi4uXG4tIHVzZSBgV0FTRGAsIGBoamtsYCBvciB0aGUgYXJyb3cga2V5cyBmb3IgbmF2aWdhdGlvblxuLSBgUWAgb25seSBjbG9zZXMgdGhlIHNlbGVjdGVkIHdpbmRvdyBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUgYXBwXG4tIG9ubHkgcmFpc2UgdGhlIGZpcnN0IHdpbmRvdyBpbnN0ZWFkIG9mIGV2ZXJ5IGluc3RhbmNlXG4tIG9wdGlvbmFsbHk6IG9ubHkgc2hvdyB3aW5kb3dzIGZyb20gdGhlIGN1cnJlbnQgd29ya3NwYWNlXG4tIG9wdGlvbmFsbHk6IG9ubHkgc2hvdyB3aW5kb3dzIGZyb20gdGhlIGN1cnJlbnQgbW9uaXRvclxuLSBvcHRpb25hbGx5OiByZW1vdmUgdGhlIEFwcCBTd2l0Y2hlcidzIGRlbGF5ZWQgYXBwZWFyYW5jZSIsCiAgIm5hbWUiOiAiQWx0VGFiIE1vZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTGVsZWF0L0FsdFRhYi1Nb2QiLAogICJ1dWlkIjogImFsdHRhYi1tb2RAbGVsZWF0LW9uLWdpdGh1YiIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -2963,14 +3092,15 @@
 , {"uuid": "personalize@Selenium-H", "name": "Personalize", "pname": "personalize", "description": "Personalize the looks of GNOME Desktop.\n\nSet the theme variant, window corner curvature and select accent color.\nThe Colors section contains colors generated from the selected accent color.\nThe color generation is not accurate. However, individual colors can be customised.\n\nNot all settings are applied automatically.\nPress Refresh button on the left of the headerbar to reload the extension \n\nCurrently, only Adwaita theme is supported. Also, Adwaita and Adwaita-dark gtk-2 themes\nmust be installed for the extension to work properly. Not all widgets are themed perfectly.", "link": "https://extensions.gnome.org/extension/4010/personalize/", "shell_version_map": {
     "38": {"version": "1", "sha256": "1rgh2zq7086ymf0222pbrx5n8q11v3f45095w4x3ikw7k12j9s0n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvbW1lbnQiOiAiUGVyc29uYWxpemUgR05PTUUgdGhlbWUgYW5kIGN1c3RvbWl6ZSB0aGVtLiIsCiAgImRlc2NyaXB0aW9uIjogIlBlcnNvbmFsaXplIHRoZSBsb29rcyBvZiBHTk9NRSBEZXNrdG9wLlxuXG5TZXQgdGhlIHRoZW1lIHZhcmlhbnQsIHdpbmRvdyBjb3JuZXIgY3VydmF0dXJlIGFuZCBzZWxlY3QgYWNjZW50IGNvbG9yLlxuVGhlIENvbG9ycyBzZWN0aW9uIGNvbnRhaW5zIGNvbG9ycyBnZW5lcmF0ZWQgZnJvbSB0aGUgc2VsZWN0ZWQgYWNjZW50IGNvbG9yLlxuVGhlIGNvbG9yIGdlbmVyYXRpb24gaXMgbm90IGFjY3VyYXRlLiBIb3dldmVyLCBpbmRpdmlkdWFsIGNvbG9ycyBjYW4gYmUgY3VzdG9taXNlZC5cblxuTm90IGFsbCBzZXR0aW5ncyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5LlxuUHJlc3MgUmVmcmVzaCBidXR0b24gb24gdGhlIGxlZnQgb2YgdGhlIGhlYWRlcmJhciB0byByZWxvYWQgdGhlIGV4dGVuc2lvbiBcblxuQ3VycmVudGx5LCBvbmx5IEFkd2FpdGEgdGhlbWUgaXMgc3VwcG9ydGVkLiBBbHNvLCBBZHdhaXRhIGFuZCBBZHdhaXRhLWRhcmsgZ3RrLTIgdGhlbWVzXG5tdXN0IGJlIGluc3RhbGxlZCBmb3IgdGhlIGV4dGVuc2lvbiB0byB3b3JrIHByb3Blcmx5LiBOb3QgYWxsIHdpZGdldHMgYXJlIHRoZW1lZCBwZXJmZWN0bHkuIiwKICAibmFtZSI6ICJQZXJzb25hbGl6ZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJzb25hbGl6ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJzdGF0dXMiOiAiICIsCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2VsZW5pdW0tSC9QZXJzb25hbGl6ZSIsCiAgInV1aWQiOiAicGVyc29uYWxpemVAU2VsZW5pdW0tSCIsCiAgInZlcnNpb24iOiAxCn0="}
   }}
-, {"uuid": "gnomebedtime@ionutbortis.gmail.com", "name": "Bedtime Mode", "pname": "gnome-bedtime", "description": "Hey Gnome, it's bedtime! Converts to grayscale the entire Gnome workspace by using a smooth transition. Best to use during evening/night.\n\nThis behavior is similar to Android's bedtime mode which converts the phone screen to grayscale. It should somewhat make your device less appealing and limit the usage of it before bedtime. On my side, at least, it still requires a fair amount of self control in order to make that happen.\n\nThe extension has a nice Settings UI where you can customize it to your liking:\n- Set an automatic schedule for turning on/off the Bedtime Mode\n- Add an On Demand button to Top Bar or a Quick Settings toggle to manually enable/disable the mode\n- Control the On Demand button visibility, appearance and position in Top Bar\n- Choose another color preset and intensity, if you prefer a different color scheme\n- Change color intensity on the fly by scrolling over the On Demand button in Top Bar\n\nMulti language support is also available, please check the GitHub page if you want to help with the translations. So far, the extension is fully translated to Italian, Spanish, Dutch, German, Czech, Romanian and English.\n\nIf you want to use a keyboard shortcut in order to toggle the Bedtime Mode then you can use this command for the shortcut:\n\nbash -c 'schema_id=org.gnome.shell.extensions.bedtime-mode; schema_dir=~/.local/share/gnome-shell/extensions/gnomebedtime@ionutbortis.gmail.com/schemas/; if [[ $(gsettings --schemadir $schema_dir get $schema_id bedtime-mode-active) == true ]]; then turn_on=false; else turn_on=true; fi; gsettings --schemadir $schema_dir set $schema_id bedtime-mode-active $turn_on;'", "link": "https://extensions.gnome.org/extension/4012/gnome-bedtime/", "shell_version_map": {
+, {"uuid": "gnomebedtime@ionutbortis.gmail.com", "name": "Bedtime Mode", "pname": "gnome-bedtime", "description": "Hey Gnome, it's bedtime! Converts to grayscale the entire Gnome workspace by using a smooth transition. Best to use during evening/night.\n\nThis behavior is similar to Android's bedtime mode which converts the phone screen to grayscale. It should somewhat make your device less appealing and limit the usage of it before bedtime. On my side, at least, it still requires a fair amount of self control in order to make that happen.\n\nThe extension has a nice Settings UI where you can customize it to your liking:\n- Set an automatic schedule for turning on/off the Bedtime Mode\n- Add an On Demand button to Top Bar or a Quick Settings toggle to manually enable/disable the mode\n- Control the On Demand button visibility, appearance and position in Top Bar\n- Choose another color preset and intensity, if you prefer a different color scheme\n- Change color intensity on the fly by scrolling over the On Demand button in Top Bar\n\nMulti language support is also available, please check the GitHub page if you want to help with the translations. So far, the extension is fully translated to French, Italian, Spanish, Dutch, German, Czech, Romanian and English.\n\nIf you want to use a keyboard shortcut in order to toggle the Bedtime Mode then you can use this command for the shortcut:\n\nbash -c 'schema_id=org.gnome.shell.extensions.bedtime-mode; schema_dir=~/.local/share/gnome-shell/extensions/gnomebedtime@ionutbortis.gmail.com/schemas/; if [[ $(gsettings --schemadir $schema_dir get $schema_id bedtime-mode-active) == true ]]; then turn_on=false; else turn_on=true; fi; gsettings --schemadir $schema_dir set $schema_id bedtime-mode-active $turn_on;'\n", "link": "https://extensions.gnome.org/extension/4012/gnome-bedtime/", "shell_version_map": {
     "38": {"version": "12", "sha256": "05aja2agd5xz7cx2wfdzp2y5dajw8a4zgp8qpl17i6dbcz2vlrg9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBTcGFuaXNoLCBEdXRjaCwgR2VybWFuLCBDemVjaCwgUm9tYW5pYW4gYW5kIEVuZ2xpc2guXG5cbklmIHlvdSB3YW50IHRvIHVzZSBhIGtleWJvYXJkIHNob3J0Y3V0IGluIG9yZGVyIHRvIHRvZ2dsZSB0aGUgQmVkdGltZSBNb2RlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIGZvciB0aGUgc2hvcnRjdXQ6XG5cbmJhc2ggLWMgJ3NjaGVtYV9pZD1vcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGU7IHNjaGVtYV9kaXI9fi8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9nbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tL3NjaGVtYXMvOyBpZiBbWyAkKGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBnZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlKSA9PSBcInRydWVcIiBdXTsgdGhlbiB0dXJuX29uPWZhbHNlOyBlbHNlIHR1cm5fb249dHJ1ZTsgZmk7IGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBzZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlICR0dXJuX29uOyciLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiZWR0aW1lLW1vZGUiLAogICJuYW1lIjogIkJlZHRpbWUgTW9kZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pb251dGJvcnRpcy9nbm9tZS1iZWR0aW1lLW1vZGUiLAogICJ1dWlkIjogImdub21lYmVkdGltZUBpb251dGJvcnRpcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "40": {"version": "12", "sha256": "05aja2agd5xz7cx2wfdzp2y5dajw8a4zgp8qpl17i6dbcz2vlrg9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBTcGFuaXNoLCBEdXRjaCwgR2VybWFuLCBDemVjaCwgUm9tYW5pYW4gYW5kIEVuZ2xpc2guXG5cbklmIHlvdSB3YW50IHRvIHVzZSBhIGtleWJvYXJkIHNob3J0Y3V0IGluIG9yZGVyIHRvIHRvZ2dsZSB0aGUgQmVkdGltZSBNb2RlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIGZvciB0aGUgc2hvcnRjdXQ6XG5cbmJhc2ggLWMgJ3NjaGVtYV9pZD1vcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGU7IHNjaGVtYV9kaXI9fi8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9nbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tL3NjaGVtYXMvOyBpZiBbWyAkKGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBnZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlKSA9PSBcInRydWVcIiBdXTsgdGhlbiB0dXJuX29uPWZhbHNlOyBlbHNlIHR1cm5fb249dHJ1ZTsgZmk7IGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBzZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlICR0dXJuX29uOyciLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiZWR0aW1lLW1vZGUiLAogICJuYW1lIjogIkJlZHRpbWUgTW9kZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pb251dGJvcnRpcy9nbm9tZS1iZWR0aW1lLW1vZGUiLAogICJ1dWlkIjogImdub21lYmVkdGltZUBpb251dGJvcnRpcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "41": {"version": "12", "sha256": "05aja2agd5xz7cx2wfdzp2y5dajw8a4zgp8qpl17i6dbcz2vlrg9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBTcGFuaXNoLCBEdXRjaCwgR2VybWFuLCBDemVjaCwgUm9tYW5pYW4gYW5kIEVuZ2xpc2guXG5cbklmIHlvdSB3YW50IHRvIHVzZSBhIGtleWJvYXJkIHNob3J0Y3V0IGluIG9yZGVyIHRvIHRvZ2dsZSB0aGUgQmVkdGltZSBNb2RlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIGZvciB0aGUgc2hvcnRjdXQ6XG5cbmJhc2ggLWMgJ3NjaGVtYV9pZD1vcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGU7IHNjaGVtYV9kaXI9fi8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9nbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tL3NjaGVtYXMvOyBpZiBbWyAkKGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBnZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlKSA9PSBcInRydWVcIiBdXTsgdGhlbiB0dXJuX29uPWZhbHNlOyBlbHNlIHR1cm5fb249dHJ1ZTsgZmk7IGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBzZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlICR0dXJuX29uOyciLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiZWR0aW1lLW1vZGUiLAogICJuYW1lIjogIkJlZHRpbWUgTW9kZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pb251dGJvcnRpcy9nbm9tZS1iZWR0aW1lLW1vZGUiLAogICJ1dWlkIjogImdub21lYmVkdGltZUBpb251dGJvcnRpcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "42": {"version": "12", "sha256": "05aja2agd5xz7cx2wfdzp2y5dajw8a4zgp8qpl17i6dbcz2vlrg9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBTcGFuaXNoLCBEdXRjaCwgR2VybWFuLCBDemVjaCwgUm9tYW5pYW4gYW5kIEVuZ2xpc2guXG5cbklmIHlvdSB3YW50IHRvIHVzZSBhIGtleWJvYXJkIHNob3J0Y3V0IGluIG9yZGVyIHRvIHRvZ2dsZSB0aGUgQmVkdGltZSBNb2RlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIGZvciB0aGUgc2hvcnRjdXQ6XG5cbmJhc2ggLWMgJ3NjaGVtYV9pZD1vcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGU7IHNjaGVtYV9kaXI9fi8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9nbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tL3NjaGVtYXMvOyBpZiBbWyAkKGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBnZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlKSA9PSBcInRydWVcIiBdXTsgdGhlbiB0dXJuX29uPWZhbHNlOyBlbHNlIHR1cm5fb249dHJ1ZTsgZmk7IGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBzZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlICR0dXJuX29uOyciLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiZWR0aW1lLW1vZGUiLAogICJuYW1lIjogIkJlZHRpbWUgTW9kZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pb251dGJvcnRpcy9nbm9tZS1iZWR0aW1lLW1vZGUiLAogICJ1dWlkIjogImdub21lYmVkdGltZUBpb251dGJvcnRpcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "43": {"version": "17", "sha256": "1qm0z97gslbqjabf90smlzpmwb8vb4q1v8xxx3qm44218yqzj5gj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBJdGFsaWFuLCBTcGFuaXNoLCBEdXRjaCwgR2VybWFuLCBDemVjaCwgUm9tYW5pYW4gYW5kIEVuZ2xpc2guXG5cbklmIHlvdSB3YW50IHRvIHVzZSBhIGtleWJvYXJkIHNob3J0Y3V0IGluIG9yZGVyIHRvIHRvZ2dsZSB0aGUgQmVkdGltZSBNb2RlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIGZvciB0aGUgc2hvcnRjdXQ6XG5cbmJhc2ggLWMgJ3NjaGVtYV9pZD1vcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGU7IHNjaGVtYV9kaXI9fi8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9nbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tL3NjaGVtYXMvOyBpZiBbWyAkKGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBnZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlKSA9PSBcInRydWVcIiBdXTsgdGhlbiB0dXJuX29uPWZhbHNlOyBlbHNlIHR1cm5fb249dHJ1ZTsgZmk7IGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBzZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlICR0dXJuX29uOydcbiIsCiAgImdldHRleHQtZG9tYWluIjogImJlZHRpbWUtbW9kZSIsCiAgIm5hbWUiOiAiQmVkdGltZSBNb2RlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJlZHRpbWUtbW9kZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaW9udXRib3J0aXMvZ25vbWUtYmVkdGltZS1tb2RlIiwKICAidXVpZCI6ICJnbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
     "44": {"version": "17", "sha256": "1qm0z97gslbqjabf90smlzpmwb8vb4q1v8xxx3qm44218yqzj5gj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBJdGFsaWFuLCBTcGFuaXNoLCBEdXRjaCwgR2VybWFuLCBDemVjaCwgUm9tYW5pYW4gYW5kIEVuZ2xpc2guXG5cbklmIHlvdSB3YW50IHRvIHVzZSBhIGtleWJvYXJkIHNob3J0Y3V0IGluIG9yZGVyIHRvIHRvZ2dsZSB0aGUgQmVkdGltZSBNb2RlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIGZvciB0aGUgc2hvcnRjdXQ6XG5cbmJhc2ggLWMgJ3NjaGVtYV9pZD1vcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGU7IHNjaGVtYV9kaXI9fi8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9nbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tL3NjaGVtYXMvOyBpZiBbWyAkKGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBnZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlKSA9PSBcInRydWVcIiBdXTsgdGhlbiB0dXJuX29uPWZhbHNlOyBlbHNlIHR1cm5fb249dHJ1ZTsgZmk7IGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBzZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlICR0dXJuX29uOydcbiIsCiAgImdldHRleHQtZG9tYWluIjogImJlZHRpbWUtbW9kZSIsCiAgIm5hbWUiOiAiQmVkdGltZSBNb2RlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJlZHRpbWUtbW9kZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaW9udXRib3J0aXMvZ25vbWUtYmVkdGltZS1tb2RlIiwKICAidXVpZCI6ICJnbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
-    "45": {"version": "18", "sha256": "0i4k8k8nydi3i7fb1s61gyvhkq4xgq49dy44ywm4wq65xzwxz9sy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBJdGFsaWFuLCBTcGFuaXNoLCBEdXRjaCwgR2VybWFuLCBDemVjaCwgUm9tYW5pYW4gYW5kIEVuZ2xpc2guXG5cbklmIHlvdSB3YW50IHRvIHVzZSBhIGtleWJvYXJkIHNob3J0Y3V0IGluIG9yZGVyIHRvIHRvZ2dsZSB0aGUgQmVkdGltZSBNb2RlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIGZvciB0aGUgc2hvcnRjdXQ6XG5cbmJhc2ggLWMgJ3NjaGVtYV9pZD1vcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGU7IHNjaGVtYV9kaXI9fi8ubG9jYWwvc2hhcmUvZ25vbWUtc2hlbGwvZXh0ZW5zaW9ucy9nbm9tZWJlZHRpbWVAaW9udXRib3J0aXMuZ21haWwuY29tL3NjaGVtYXMvOyBpZiBbWyAkKGdzZXR0aW5ncyAtLXNjaGVtYWRpciAkc2NoZW1hX2RpciBnZXQgJHNjaGVtYV9pZCBiZWR0aW1lLW1vZGUtYWN0aXZlKSA9PSB0cnVlIF1dOyB0aGVuIHR1cm5fb249ZmFsc2U7IGVsc2UgdHVybl9vbj10cnVlOyBmaTsgZ3NldHRpbmdzIC0tc2NoZW1hZGlyICRzY2hlbWFfZGlyIHNldCAkc2NoZW1hX2lkIGJlZHRpbWUtbW9kZS1hY3RpdmUgJHR1cm5fb247J1xuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmVkdGltZS1tb2RlIiwKICAibmFtZSI6ICJCZWR0aW1lIE1vZGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmVkdGltZS1tb2RlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2lvbnV0Ym9ydGlzL2dub21lLWJlZHRpbWUtbW9kZSIsCiAgInV1aWQiOiAiZ25vbWViZWR0aW1lQGlvbnV0Ym9ydGlzLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxOAp9"}
+    "45": {"version": "19", "sha256": "1128sqzphs6ij4060gc931izh9axvg8vp3hh4kdpazkdy24vv0m9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBGcmVuY2gsIEl0YWxpYW4sIFNwYW5pc2gsIER1dGNoLCBHZXJtYW4sIEN6ZWNoLCBSb21hbmlhbiBhbmQgRW5nbGlzaC5cblxuSWYgeW91IHdhbnQgdG8gdXNlIGEga2V5Ym9hcmQgc2hvcnRjdXQgaW4gb3JkZXIgdG8gdG9nZ2xlIHRoZSBCZWR0aW1lIE1vZGUgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIGNvbW1hbmQgZm9yIHRoZSBzaG9ydGN1dDpcblxuYmFzaCAtYyAnc2NoZW1hX2lkPW9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJlZHRpbWUtbW9kZTsgc2NoZW1hX2Rpcj1+Ly5sb2NhbC9zaGFyZS9nbm9tZS1zaGVsbC9leHRlbnNpb25zL2dub21lYmVkdGltZUBpb251dGJvcnRpcy5nbWFpbC5jb20vc2NoZW1hcy87IGlmIFtbICQoZ3NldHRpbmdzIC0tc2NoZW1hZGlyICRzY2hlbWFfZGlyIGdldCAkc2NoZW1hX2lkIGJlZHRpbWUtbW9kZS1hY3RpdmUpID09IHRydWUgXV07IHRoZW4gdHVybl9vbj1mYWxzZTsgZWxzZSB0dXJuX29uPXRydWU7IGZpOyBnc2V0dGluZ3MgLS1zY2hlbWFkaXIgJHNjaGVtYV9kaXIgc2V0ICRzY2hlbWFfaWQgYmVkdGltZS1tb2RlLWFjdGl2ZSAkdHVybl9vbjsnXG4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiZWR0aW1lLW1vZGUiLAogICJuYW1lIjogIkJlZHRpbWUgTW9kZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2lvbnV0Ym9ydGlzL2dub21lLWJlZHRpbWUtbW9kZSIsCiAgInV1aWQiOiAiZ25vbWViZWR0aW1lQGlvbnV0Ym9ydGlzLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxOQp9"},
+    "46": {"version": "19", "sha256": "1128sqzphs6ij4060gc931izh9axvg8vp3hh4kdpazkdy24vv0m9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhleSBHbm9tZSwgaXQncyBiZWR0aW1lISBDb252ZXJ0cyB0byBncmF5c2NhbGUgdGhlIGVudGlyZSBHbm9tZSB3b3Jrc3BhY2UgYnkgdXNpbmcgYSBzbW9vdGggdHJhbnNpdGlvbi4gQmVzdCB0byB1c2UgZHVyaW5nIGV2ZW5pbmcvbmlnaHQuXG5cblRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byBBbmRyb2lkJ3MgYmVkdGltZSBtb2RlIHdoaWNoIGNvbnZlcnRzIHRoZSBwaG9uZSBzY3JlZW4gdG8gZ3JheXNjYWxlLiBJdCBzaG91bGQgc29tZXdoYXQgbWFrZSB5b3VyIGRldmljZSBsZXNzIGFwcGVhbGluZyBhbmQgbGltaXQgdGhlIHVzYWdlIG9mIGl0IGJlZm9yZSBiZWR0aW1lLiBPbiBteSBzaWRlLCBhdCBsZWFzdCwgaXQgc3RpbGwgcmVxdWlyZXMgYSBmYWlyIGFtb3VudCBvZiBzZWxmIGNvbnRyb2wgaW4gb3JkZXIgdG8gbWFrZSB0aGF0IGhhcHBlbi5cblxuVGhlIGV4dGVuc2lvbiBoYXMgYSBuaWNlIFNldHRpbmdzIFVJIHdoZXJlIHlvdSBjYW4gY3VzdG9taXplIGl0IHRvIHlvdXIgbGlraW5nOlxuLSBTZXQgYW4gYXV0b21hdGljIHNjaGVkdWxlIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgQmVkdGltZSBNb2RlXG4tIEFkZCBhbiBPbiBEZW1hbmQgYnV0dG9uIHRvIFRvcCBCYXIgb3IgYSBRdWljayBTZXR0aW5ncyB0b2dnbGUgdG8gbWFudWFsbHkgZW5hYmxlL2Rpc2FibGUgdGhlIG1vZGVcbi0gQ29udHJvbCB0aGUgT24gRGVtYW5kIGJ1dHRvbiB2aXNpYmlsaXR5LCBhcHBlYXJhbmNlIGFuZCBwb3NpdGlvbiBpbiBUb3AgQmFyXG4tIENob29zZSBhbm90aGVyIGNvbG9yIHByZXNldCBhbmQgaW50ZW5zaXR5LCBpZiB5b3UgcHJlZmVyIGEgZGlmZmVyZW50IGNvbG9yIHNjaGVtZVxuLSBDaGFuZ2UgY29sb3IgaW50ZW5zaXR5IG9uIHRoZSBmbHkgYnkgc2Nyb2xsaW5nIG92ZXIgdGhlIE9uIERlbWFuZCBidXR0b24gaW4gVG9wIEJhclxuXG5NdWx0aSBsYW5ndWFnZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLCBwbGVhc2UgY2hlY2sgdGhlIEdpdEh1YiBwYWdlIGlmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgdHJhbnNsYXRpb25zLiBTbyBmYXIsIHRoZSBleHRlbnNpb24gaXMgZnVsbHkgdHJhbnNsYXRlZCB0byBGcmVuY2gsIEl0YWxpYW4sIFNwYW5pc2gsIER1dGNoLCBHZXJtYW4sIEN6ZWNoLCBSb21hbmlhbiBhbmQgRW5nbGlzaC5cblxuSWYgeW91IHdhbnQgdG8gdXNlIGEga2V5Ym9hcmQgc2hvcnRjdXQgaW4gb3JkZXIgdG8gdG9nZ2xlIHRoZSBCZWR0aW1lIE1vZGUgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIGNvbW1hbmQgZm9yIHRoZSBzaG9ydGN1dDpcblxuYmFzaCAtYyAnc2NoZW1hX2lkPW9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmJlZHRpbWUtbW9kZTsgc2NoZW1hX2Rpcj1+Ly5sb2NhbC9zaGFyZS9nbm9tZS1zaGVsbC9leHRlbnNpb25zL2dub21lYmVkdGltZUBpb251dGJvcnRpcy5nbWFpbC5jb20vc2NoZW1hcy87IGlmIFtbICQoZ3NldHRpbmdzIC0tc2NoZW1hZGlyICRzY2hlbWFfZGlyIGdldCAkc2NoZW1hX2lkIGJlZHRpbWUtbW9kZS1hY3RpdmUpID09IHRydWUgXV07IHRoZW4gdHVybl9vbj1mYWxzZTsgZWxzZSB0dXJuX29uPXRydWU7IGZpOyBnc2V0dGluZ3MgLS1zY2hlbWFkaXIgJHNjaGVtYV9kaXIgc2V0ICRzY2hlbWFfaWQgYmVkdGltZS1tb2RlLWFjdGl2ZSAkdHVybl9vbjsnXG4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiZWR0aW1lLW1vZGUiLAogICJuYW1lIjogIkJlZHRpbWUgTW9kZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iZWR0aW1lLW1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2lvbnV0Ym9ydGlzL2dub21lLWJlZHRpbWUtbW9kZSIsCiAgInV1aWQiOiAiZ25vbWViZWR0aW1lQGlvbnV0Ym9ydGlzLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxOQp9"}
   }}
 , {"uuid": "spotify-controller@koolskateguy89", "name": "Spotify Controller", "pname": "spotify-controller", "description": "Control Spotify from the topbar!\n\nCredit to Marcus Heine (https://github.com/mheine) for most of the code in this extension.", "link": "https://extensions.gnome.org/extension/4013/spotify-controller/", "shell_version_map": {
     "38": {"version": "17", "sha256": "0ddhsdbichrm9wqqkb2d5ylpr1597vgfpd3rh2liil660kz72n7r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgU3BvdGlmeSBmcm9tIHRoZSB0b3BiYXIhXG5cbkNyZWRpdCB0byBNYXJjdXMgSGVpbmUgKGh0dHBzOi8vZ2l0aHViLmNvbS9taGVpbmUpIGZvciBtb3N0IG9mIHRoZSBjb2RlIGluIHRoaXMgZXh0ZW5zaW9uLiIsCiAgIm5hbWUiOiAiU3BvdGlmeSBDb250cm9sbGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNwb3RpZnktY29udHJvbGxlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20va29vbHNrYXRlZ3V5ODkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNwb3RpZnktY29udHJvbGxlciIsCiAgInV1aWQiOiAic3BvdGlmeS1jb250cm9sbGVyQGtvb2xza2F0ZWd1eTg5IiwKICAidmVyc2lvbiI6IDE3Cn0="},
@@ -3001,7 +3131,8 @@
     "42": {"version": "17", "sha256": "1c5lr1z8smm2hzfqjm0npn7rhihkdbgm6hlpbqg5mzvvsw3ikbpb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBHTk9NRSBTaGVsbCBtdWx0aS10b3VjaCBnZXN0dXJlcyBvbiBYMTEuXG5SZXF1aXJlcyBUb3VjaFx1MDBlOWdnIGh0dHBzOi8vZ2l0aHViLmNvbS9Kb3NlRXhwb3NpdG8vdG91Y2hlZ2cjcmVhZG1lIiwKICAibmFtZSI6ICJYMTEgR2VzdHVyZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvc2VFeHBvc2l0by9nbm9tZS1zaGVsbC1leHRlbnNpb24teDExZ2VzdHVyZXMiLAogICJ1dWlkIjogIngxMWdlc3R1cmVzQGpvc2VleHBvc2l0by5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "43": {"version": "17", "sha256": "1c5lr1z8smm2hzfqjm0npn7rhihkdbgm6hlpbqg5mzvvsw3ikbpb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBHTk9NRSBTaGVsbCBtdWx0aS10b3VjaCBnZXN0dXJlcyBvbiBYMTEuXG5SZXF1aXJlcyBUb3VjaFx1MDBlOWdnIGh0dHBzOi8vZ2l0aHViLmNvbS9Kb3NlRXhwb3NpdG8vdG91Y2hlZ2cjcmVhZG1lIiwKICAibmFtZSI6ICJYMTEgR2VzdHVyZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvc2VFeHBvc2l0by9nbm9tZS1zaGVsbC1leHRlbnNpb24teDExZ2VzdHVyZXMiLAogICJ1dWlkIjogIngxMWdlc3R1cmVzQGpvc2VleHBvc2l0by5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "44": {"version": "17", "sha256": "1c5lr1z8smm2hzfqjm0npn7rhihkdbgm6hlpbqg5mzvvsw3ikbpb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBHTk9NRSBTaGVsbCBtdWx0aS10b3VjaCBnZXN0dXJlcyBvbiBYMTEuXG5SZXF1aXJlcyBUb3VjaFx1MDBlOWdnIGh0dHBzOi8vZ2l0aHViLmNvbS9Kb3NlRXhwb3NpdG8vdG91Y2hlZ2cjcmVhZG1lIiwKICAibmFtZSI6ICJYMTEgR2VzdHVyZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvc2VFeHBvc2l0by9nbm9tZS1zaGVsbC1leHRlbnNpb24teDExZ2VzdHVyZXMiLAogICJ1dWlkIjogIngxMWdlc3R1cmVzQGpvc2VleHBvc2l0by5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
-    "45": {"version": "22", "sha256": "0yj5lpyi1cspcyl2g46gr18gny7kfj902k73jgfyds8nd214cipf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBHTk9NRSBTaGVsbCBtdWx0aS10b3VjaCBnZXN0dXJlcyBvbiBYMTEuXG5SZXF1aXJlcyBUb3VjaFx1MDBlOWdnIGh0dHBzOi8vZ2l0aHViLmNvbS9Kb3NlRXhwb3NpdG8vdG91Y2hlZ2cjcmVhZG1lIiwKICAibmFtZSI6ICJYMTEgR2VzdHVyZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSm9zZUV4cG9zaXRvL2dub21lLXNoZWxsLWV4dGVuc2lvbi14MTFnZXN0dXJlcyIsCiAgInV1aWQiOiAieDExZ2VzdHVyZXNAam9zZWV4cG9zaXRvLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAyMgp9"}
+    "45": {"version": "23", "sha256": "0hlcrbvmvn4khspdz1lmp8njqiqkd02wlw0scqfz8cxmj0qg2pl3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBHTk9NRSBTaGVsbCBtdWx0aS10b3VjaCBnZXN0dXJlcyBvbiBYMTEuXG5SZXF1aXJlcyBUb3VjaFx1MDBlOWdnIGh0dHBzOi8vZ2l0aHViLmNvbS9Kb3NlRXhwb3NpdG8vdG91Y2hlZ2cjcmVhZG1lIiwKICAibmFtZSI6ICJYMTEgR2VzdHVyZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvc2VFeHBvc2l0by9nbm9tZS1zaGVsbC1leHRlbnNpb24teDExZ2VzdHVyZXMiLAogICJ1dWlkIjogIngxMWdlc3R1cmVzQGpvc2VleHBvc2l0by5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
+    "46": {"version": "23", "sha256": "0hlcrbvmvn4khspdz1lmp8njqiqkd02wlw0scqfz8cxmj0qg2pl3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBHTk9NRSBTaGVsbCBtdWx0aS10b3VjaCBnZXN0dXJlcyBvbiBYMTEuXG5SZXF1aXJlcyBUb3VjaFx1MDBlOWdnIGh0dHBzOi8vZ2l0aHViLmNvbS9Kb3NlRXhwb3NpdG8vdG91Y2hlZ2cjcmVhZG1lIiwKICAibmFtZSI6ICJYMTEgR2VzdHVyZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvc2VFeHBvc2l0by9nbm9tZS1zaGVsbC1leHRlbnNpb24teDExZ2VzdHVyZXMiLAogICJ1dWlkIjogIngxMWdlc3R1cmVzQGpvc2VleHBvc2l0by5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjMKfQ=="}
   }}
 , {"uuid": "get-out-of-the-way@michaelmob.com", "name": "Get Out Of The Way!", "pname": "get-out-of-the-way", "description": "Push 'Always-on-Top' windows out of the way of the focused window.", "link": "https://extensions.gnome.org/extension/4034/get-out-of-the-way/", "shell_version_map": {
     "38": {"version": "1", "sha256": "1jpjqi2l6wjn9zbgpck04gm9vbspi066chby1j6k9km6dwljfbk7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1c2ggJ0Fsd2F5cy1vbi1Ub3AnIHdpbmRvd3Mgb3V0IG9mIHRoZSB3YXkgb2YgdGhlIGZvY3VzZWQgd2luZG93LiIsCiAgIm5hbWUiOiAiR2V0IE91dCBPZiBUaGUgV2F5ISIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJnZXQtb3V0LW9mLXRoZS13YXlAbWljaGFlbG1vYi5jb20iLAogICJ2ZXJzaW9uIjogMQp9"}
@@ -3027,14 +3158,15 @@
 , {"uuid": "notification-dismiss@kronosoul.xyz", "name": "Dismiss Notifications on Right Click", "pname": "dismiss-notifications-on-right-click", "description": "Simple extension that removes notification popups when they are right clicked.", "link": "https://extensions.gnome.org/extension/4048/dismiss-notifications-on-right-click/", "shell_version_map": {
     "38": {"version": "1", "sha256": "19pdz3lg1ybmgvpahfwzzhwk8fyhm1sr3wawddz5z66i22spcgjj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImFwcGxpY2F0aW9uLWlkIjogIm9yZy5rcm9ub3NvdWwubm90aWZpY2F0aW9uLWRpc21pc3MiLAogICJkZXNjcmlwdGlvbiI6ICJTaW1wbGUgZXh0ZW5zaW9uIHRoYXQgcmVtb3ZlcyBub3RpZmljYXRpb24gcG9wdXBzIHdoZW4gdGhleSBhcmUgcmlnaHQgY2xpY2tlZC4iLAogICJleHRlbnNpb24taWQiOiAiZ2R0b29scyIsCiAgImdldHRleHQtZG9tYWluIjogIndvcmtzZXRzIiwKICAibmFtZSI6ICJEaXNtaXNzIE5vdGlmaWNhdGlvbnMgb24gUmlnaHQgQ2xpY2siLAogICJvcmlnaW5hbC1hdXRob3IiOiAiYWRtaW5Aa3Jvbm9zb3VsLnh5eiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4wIiwKICAgICIzLjEwIiwKICAgICIzLjEyIiwKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYmxpcGsvIiwKICAidXVpZCI6ICJub3RpZmljYXRpb24tZGlzbWlzc0Brcm9ub3NvdWwueHl6IiwKICAidmVyc2lvbiI6IDEKfQ=="}
   }}
-, {"uuid": "disable-gestures-2021@verycrazydog.gmail.com", "name": "Disable Gestures 2021", "pname": "disable-gestures-2021", "description": "Disable all GNOME built-in gestures. Useful for kiosks and touch screen apps.", "link": "https://extensions.gnome.org/extension/4049/disable-gestures-2021/", "shell_version_map": {
+, {"uuid": "disable-gestures-2021@verycrazydog.gmail.com", "name": "Disable Gestures 2021", "pname": "disable-gestures-2021", "description": "Disable all GNOME built-in gestures. Useful for kiosks and touchscreen apps.", "link": "https://extensions.gnome.org/extension/4049/disable-gestures-2021/", "shell_version_map": {
     "38": {"version": "5", "sha256": "0w4xsa52l9fgf7bihq9gvr4lxvhn28d7jcdr9wb54zx8sf8gbflc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2ggc2NyZWVuIGFwcHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIEdlc3R1cmVzIDIwMjEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZlcnlDcmF6eURvZy9nbm9tZS1kaXNhYmxlLWdlc3R1cmVzIiwKICAidXVpZCI6ICJkaXNhYmxlLWdlc3R1cmVzLTIwMjFAdmVyeWNyYXp5ZG9nLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "40": {"version": "5", "sha256": "0w4xsa52l9fgf7bihq9gvr4lxvhn28d7jcdr9wb54zx8sf8gbflc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2ggc2NyZWVuIGFwcHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIEdlc3R1cmVzIDIwMjEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZlcnlDcmF6eURvZy9nbm9tZS1kaXNhYmxlLWdlc3R1cmVzIiwKICAidXVpZCI6ICJkaXNhYmxlLWdlc3R1cmVzLTIwMjFAdmVyeWNyYXp5ZG9nLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "41": {"version": "5", "sha256": "0w4xsa52l9fgf7bihq9gvr4lxvhn28d7jcdr9wb54zx8sf8gbflc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2ggc2NyZWVuIGFwcHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIEdlc3R1cmVzIDIwMjEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZlcnlDcmF6eURvZy9nbm9tZS1kaXNhYmxlLWdlc3R1cmVzIiwKICAidXVpZCI6ICJkaXNhYmxlLWdlc3R1cmVzLTIwMjFAdmVyeWNyYXp5ZG9nLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "42": {"version": "5", "sha256": "0w4xsa52l9fgf7bihq9gvr4lxvhn28d7jcdr9wb54zx8sf8gbflc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2ggc2NyZWVuIGFwcHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIEdlc3R1cmVzIDIwMjEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZlcnlDcmF6eURvZy9nbm9tZS1kaXNhYmxlLWdlc3R1cmVzIiwKICAidXVpZCI6ICJkaXNhYmxlLWdlc3R1cmVzLTIwMjFAdmVyeWNyYXp5ZG9nLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "43": {"version": "5", "sha256": "0w4xsa52l9fgf7bihq9gvr4lxvhn28d7jcdr9wb54zx8sf8gbflc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2ggc2NyZWVuIGFwcHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIEdlc3R1cmVzIDIwMjEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZlcnlDcmF6eURvZy9nbm9tZS1kaXNhYmxlLWdlc3R1cmVzIiwKICAidXVpZCI6ICJkaXNhYmxlLWdlc3R1cmVzLTIwMjFAdmVyeWNyYXp5ZG9nLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "44": {"version": "5", "sha256": "0w4xsa52l9fgf7bihq9gvr4lxvhn28d7jcdr9wb54zx8sf8gbflc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2ggc2NyZWVuIGFwcHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIEdlc3R1cmVzIDIwMjEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZlcnlDcmF6eURvZy9nbm9tZS1kaXNhYmxlLWdlc3R1cmVzIiwKICAidXVpZCI6ICJkaXNhYmxlLWdlc3R1cmVzLTIwMjFAdmVyeWNyYXp5ZG9nLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
-    "45": {"version": "7", "sha256": "1mzqrwn9x4m0hliv3gr1dj2ybl1cnnwnjxsm1168cwdxk55cvlbd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2ggc2NyZWVuIGFwcHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIEdlc3R1cmVzIDIwMjEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVmVyeUNyYXp5RG9nL2dub21lLWRpc2FibGUtZ2VzdHVyZXMiLAogICJ1dWlkIjogImRpc2FibGUtZ2VzdHVyZXMtMjAyMUB2ZXJ5Y3Jhenlkb2cuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="}
+    "45": {"version": "8", "sha256": "1zhvlzsqdr9gf6p6qgzriq746zxzh55gmr8ggvp2giibcal5l92z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2hzY3JlZW4gYXBwcy4iLAogICJuYW1lIjogIkRpc2FibGUgR2VzdHVyZXMgMjAyMSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVmVyeUNyYXp5RG9nL2dub21lLWRpc2FibGUtZ2VzdHVyZXMiLAogICJ1dWlkIjogImRpc2FibGUtZ2VzdHVyZXMtMjAyMUB2ZXJ5Y3Jhenlkb2cuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
+    "46": {"version": "8", "sha256": "1zhvlzsqdr9gf6p6qgzriq746zxzh55gmr8ggvp2giibcal5l92z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYWxsIEdOT01FIGJ1aWx0LWluIGdlc3R1cmVzLiBVc2VmdWwgZm9yIGtpb3NrcyBhbmQgdG91Y2hzY3JlZW4gYXBwcy4iLAogICJuYW1lIjogIkRpc2FibGUgR2VzdHVyZXMgMjAyMSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVmVyeUNyYXp5RG9nL2dub21lLWRpc2FibGUtZ2VzdHVyZXMiLAogICJ1dWlkIjogImRpc2FibGUtZ2VzdHVyZXMtMjAyMUB2ZXJ5Y3Jhenlkb2cuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="}
   }}
 , {"uuid": "pi-hole@fnxweb.com", "name": "pi-hole", "pname": "pi-hole", "description": "Status and basic controls of local Pi-Hole", "link": "https://extensions.gnome.org/extension/4051/pi-hole/", "shell_version_map": {
     "38": {"version": "1", "sha256": "0m19lv8zfhh8vqn0ln4a8g4g4hw9p6h98gb656vb0hblp5gsycfm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBhbmQgYmFzaWMgY29udHJvbHMgb2YgbG9jYWwgUGktSG9sZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1mbnh3ZWItcGktaG9sZSIsCiAgIm5hbWUiOiAicGktaG9sZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbnh3ZWItcGktaG9sZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZueHdlYi9nbm9tZS1zaGVsbC1waS1ob2xlIiwKICAidXVpZCI6ICJwaS1ob2xlQGZueHdlYi5jb20iLAogICJ2ZXJzaW9uIjogMQp9"},
@@ -3042,7 +3174,8 @@
     "42": {"version": "5", "sha256": "1dqa2bpigmycq6nsr04p8n91aj8pmzw5vn0d2za112mizzmb7xpc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBhbmQgYmFzaWMgY29udHJvbHMgb2YgbG9jYWwgUGktSG9sZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1mbnh3ZWItcGktaG9sZSIsCiAgIm5hbWUiOiAicGktaG9sZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbnh3ZWItcGktaG9sZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZm54d2ViL2dub21lLXNoZWxsLXBpLWhvbGUiLAogICJ1dWlkIjogInBpLWhvbGVAZm54d2ViLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "43": {"version": "6", "sha256": "0zk6hm4ynhy7cbnq225wymhw8na1n7rzpni6gyp6wr420mpidn6i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBhbmQgYmFzaWMgY29udHJvbHMgb2YgbG9jYWwgUGktSG9sZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1mbnh3ZWItcGktaG9sZSIsCiAgIm5hbWUiOiAicGktaG9sZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbnh3ZWItcGktaG9sZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mbnh3ZWIvZ25vbWUtc2hlbGwtcGktaG9sZSIsCiAgInV1aWQiOiAicGktaG9sZUBmbnh3ZWIuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "44": {"version": "8", "sha256": "1p2na9h7wd8r3g7yyz9qm42ivakmbzinmfnk2r3ch3kdsg6p9dw7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBhbmQgYmFzaWMgY29udHJvbHMgb2YgbG9jYWwgUGktSG9sZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1mbnh3ZWItcGktaG9sZSIsCiAgIm5hbWUiOiAicGktaG9sZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbnh3ZWItcGktaG9sZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mbnh3ZWIvZ25vbWUtc2hlbGwtcGktaG9sZSIsCiAgInV1aWQiOiAicGktaG9sZUBmbnh3ZWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "11", "sha256": "0c71jaqv42n4hw1xbzvn1fy9hhzl0kxx42jai2a35nqqhkjir01h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBhbmQgYmFzaWMgY29udHJvbHMgb2YgbG9jYWwgUGktSG9sZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1mbnh3ZWItcGktaG9sZSIsCiAgIm5hbWUiOiAicGktaG9sZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbnh3ZWItcGktaG9sZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mbnh3ZWIvZ25vbWUtc2hlbGwtcGktaG9sZSIsCiAgInV1aWQiOiAicGktaG9sZUBmbnh3ZWIuY29tIiwKICAidmVyc2lvbiI6IDExCn0="}
+    "45": {"version": "13", "sha256": "1l7zff2qxrlywsrcdg9h39ddr34n8yli589x6wx49x0zyg89a4k8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBhbmQgYmFzaWMgY29udHJvbHMgb2YgbG9jYWwgUGktSG9sZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1mbnh3ZWItcGktaG9sZSIsCiAgIm5hbWUiOiAicGktaG9sZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbnh3ZWItcGktaG9sZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZm54d2ViL2dub21lLXNoZWxsLXBpLWhvbGUiLAogICJ1dWlkIjogInBpLWhvbGVAZm54d2ViLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"},
+    "46": {"version": "13", "sha256": "1l7zff2qxrlywsrcdg9h39ddr34n8yli589x6wx49x0zyg89a4k8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBhbmQgYmFzaWMgY29udHJvbHMgb2YgbG9jYWwgUGktSG9sZSIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1mbnh3ZWItcGktaG9sZSIsCiAgIm5hbWUiOiAicGktaG9sZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mbnh3ZWItcGktaG9sZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZm54d2ViL2dub21lLXNoZWxsLXBpLWhvbGUiLAogICJ1dWlkIjogInBpLWhvbGVAZm54d2ViLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"}
   }}
 , {"uuid": "miniCal3@mtharpe", "name": "Minimalist Calendar 3", "pname": "minimalist-calendar-3", "description": "Remove event list and clock/calendar app buttons from the calendar window. This is just an updated version of v2 by breiq", "link": "https://extensions.gnome.org/extension/4052/minimalist-calendar-3/", "shell_version_map": {
     "38": {"version": "4", "sha256": "1g52av962qcq9rrw91h6d7xqgh61wkn87srr3vffclkmkgmns5xq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZSBldmVudCBsaXN0IGFuZCBjbG9jay9jYWxlbmRhciBhcHAgYnV0dG9ucyBmcm9tIHRoZSBjYWxlbmRhciB3aW5kb3cuIFRoaXMgaXMganVzdCBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdjIgYnkgYnJlaXEiLAogICJuYW1lIjogIk1pbmltYWxpc3QgQ2FsZW5kYXIgMyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQyLjEiLAogICAgIjQyLjIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGhhcnBlL2dub21lLW1pbkNhbDMtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJtaW5pQ2FsM0BtdGhhcnBlIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -3125,7 +3258,8 @@
     "42": {"version": "13", "sha256": "18v54y1a4qrpq2gm65z0l13p02grjzcqa1xskn1bhwdy35pdal3n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5vIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLiBGb3IgR05PTUUgU2hlbGwgNDArLiIsCiAgIm5hbWUiOiAiTm8gb3ZlcnZpZXcgYXQgc3RhcnQtdXAiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImZ0aHgiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L25vLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJuby1vdmVydmlld0BmdGh4IiwKICAidmVyc2lvbiI6IDEzCn0="},
     "43": {"version": "13", "sha256": "18v54y1a4qrpq2gm65z0l13p02grjzcqa1xskn1bhwdy35pdal3n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5vIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLiBGb3IgR05PTUUgU2hlbGwgNDArLiIsCiAgIm5hbWUiOiAiTm8gb3ZlcnZpZXcgYXQgc3RhcnQtdXAiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImZ0aHgiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L25vLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJuby1vdmVydmlld0BmdGh4IiwKICAidmVyc2lvbiI6IDEzCn0="},
     "44": {"version": "13", "sha256": "18v54y1a4qrpq2gm65z0l13p02grjzcqa1xskn1bhwdy35pdal3n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5vIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLiBGb3IgR05PTUUgU2hlbGwgNDArLiIsCiAgIm5hbWUiOiAiTm8gb3ZlcnZpZXcgYXQgc3RhcnQtdXAiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImZ0aHgiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L25vLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJuby1vdmVydmlld0BmdGh4IiwKICAidmVyc2lvbiI6IDEzCn0="},
-    "45": {"version": "16", "sha256": "0h28acslq5p10cz54bcydxrqbbx6rcrhnjnb35mgfq62qj1sih51", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5vIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLiBOb3RoaW5nIG1vcmUuIiwKICAibmFtZSI6ICJObyBvdmVydmlldyBhdCBzdGFydC11cCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZnRoeCIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9uby1vdmVydmlldyIsCiAgInV1aWQiOiAibm8tb3ZlcnZpZXdAZnRoeCIsCiAgInZlcnNpb24iOiAxNgp9"}
+    "45": {"version": "16", "sha256": "0h28acslq5p10cz54bcydxrqbbx6rcrhnjnb35mgfq62qj1sih51", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5vIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLiBOb3RoaW5nIG1vcmUuIiwKICAibmFtZSI6ICJObyBvdmVydmlldyBhdCBzdGFydC11cCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZnRoeCIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9uby1vdmVydmlldyIsCiAgInV1aWQiOiAibm8tb3ZlcnZpZXdAZnRoeCIsCiAgInZlcnNpb24iOiAxNgp9"},
+    "46": {"version": "17", "sha256": "0dhhpqfn423y9xh4418pvz1sfbjaqa2izq867kabkpab6zaxplyy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5vIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLiBOb3RoaW5nIG1vcmUuIiwKICAibmFtZSI6ICJObyBvdmVydmlldyBhdCBzdGFydC11cCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiZnRoeCIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9uby1vdmVydmlldyIsCiAgInV1aWQiOiAibm8tb3ZlcnZpZXdAZnRoeCIsCiAgInZlcnNpb24iOiAxNwp9"}
   }}
 , {"uuid": "notification-position@drugo.dev", "name": "Notification Banner Position", "pname": "notification-banner-position", "description": "Changes position of the notification banner from the default to the right side of the screen.", "link": "https://extensions.gnome.org/extension/4105/notification-banner-position/", "shell_version_map": {
     "38": {"version": "10", "sha256": "1z2pk42hr8p1n4949rw4avf319df4215c22rr7nqrm0cf0sa3iwx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZXMgcG9zaXRpb24gb2YgdGhlIG5vdGlmaWNhdGlvbiBiYW5uZXIgZnJvbSB0aGUgZGVmYXVsdCB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgc2NyZWVuLiIsCiAgIm5hbWUiOiAiTm90aWZpY2F0aW9uIEJhbm5lciBQb3NpdGlvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJ1bm9kcnVnb3dpY2svbm90aWZpY2F0aW9uLXBvc2l0aW9uLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAibm90aWZpY2F0aW9uLXBvc2l0aW9uQGRydWdvLmRldiIsCiAgInZlcnNpb24iOiAxMAp9"},
@@ -3154,7 +3288,8 @@
     "42": {"version": "86", "sha256": "0cbgfqjwn6q9ppy19bx5qiiz9mhpj0yxgsmb3ckxrlsd71s916w6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGwgY3VzdG9taXphdGlvbiBvZiBhcHBlYXJhbmNlLCBiZWhhdmlvciwgc3lzdGVtIHRyYXkgYW5kIGlucHV0IHNvdXJjZSBpbmRpY2F0b3IgZm9yIElCdXNcblxuU3VwcG9ydCBDdXN0b21pemF0aW9uIG9mOlxuKiBDYW5kaWRhdGUgQm94IE9yaWVudGF0aW9uXG4qIENhbmRpZGF0ZSBCb3ggQW5pbWF0aW9uXG4qIFJpZ2h0LWNsaWNrIENhbmRpZGF0ZSBCb3ggdG8gU3dpdGNoIHRoZSBJbnB1dCBNb2RlIG9yIE9wZW4gdGhlIFRyYXkgTWVudVxuKiBTY3JvbGwgb24gQ2FuZGlkYXRlIEJveCB0byBTd2l0Y2ggYW1vbmcgUGFnZXMgb3IgQ2FuZGlkYXRlc1xuKiBGaXggQ2FuZGlkYXRlIEJveCB0byBOb3QgRm9sbG93IHRoZSBDYXJldCBhbmQgU2V0IEZpeGVkIFBvc2l0aW9uXG4qIENhbmRpZGF0ZSBCb3ggRm9udFxuKiBJbnB1dCBNb2RlIFJlbWVtYmVyIGFuZCBBdXRvLXN3aXRjaCBieSBBUFBcbiogQ2hhbmdlIENhbmRpZGF0ZSBCb3ggT3BhY2l0eVxuKiBGaXggSU1FIExpc3QgT3JkZXJcbiogRHJhZyBDYW5kaWRhdGUgQm94IHRvIFJlcG9zaXRpb25cbiogU2hvdyBvciBIaWRlIENhbmRpZGF0ZSBCb3ggUGFnZSBCdXR0b25zXG4qIFN5c3RlbSBUcmF5IE1lbnVzIGFuZCBJbnRlcmFjdGlvbiBTZXR0aW5nc1xuKiAqIFNob3cgb3IgSGlkZSBUcmF5IEljb25cbiogKiBEaXJlY3RseSBDbGljayBUcmF5IEljb24gdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBBZGQgQWRkaXRpb25hbCBNZW51XG4qIElucHV0IFNvdXJjZSBJbmRpY2F0b3IgQXBwZWFyYW5jZSBhbmQgSW50ZXJhY3Rpb24gU2V0dGluZ3NcbiogKiBFbmFibGUgSW5kaWNhdG9yXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFN3aXRjaGluZyBJbnB1dCBNb2RlXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFVzaW5nIEFTQ0lJIElucHV0IE1vZGVcbiogKiBOb3QgSW5kaWNhdGUgd2hlbiBVc2luZyBTaW5nbGUgTW9kZSBJTUVcbiogKiBSaWdodC1jbGljayBJbmRpY2F0b3IgdG8gSGlkZVxuKiAqIFNjcm9sbCBvbiBJbmRpY2F0b3IgdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBJbmRpY2F0b3IgQW5pbWF0aW9uXG4qICogQ3VzdG9taXplIEZvbnRcbiogKiBMZWZ0LWNsaWNrIEluZGljYXRvciB0byBEcmFnIHRvIE1vdmUgSW5kaWNhdG9yIG9yIFN3aXRjaCBJbnB1dCBNb2RlXG4qICogQ2hhbmdlIE9wYWNpdHlcbiogKiBFbmFibGUgSW5kaWNhdG9yIFNob3cgRGVsYXkgYW5kIENvbmZpZ3VyZSBTaG93aW5nIFRpbWVvdXRcbiogKiBFbmFibGUgQXV0by1oaWRlIEluZGljYXRvciBhbmQgQ29uZmlndXJlIEF1dG8taGlkZSBUaW1lb3V0XG4qIFRoZW1lIChTdHlsZXNoZWV0IFByb3ZpZGVkIG9yIEV4dHJhY3RlZCBmcm9tIEdOT01FIFNoZWxsIFRoZW1lcywgUmVmZXIgdG8gSGVscCBJbnN0cnVjdGlvbnMgaW4gRXh0ZW5zaW9uIGZvciBNb3JlKVxuKiBDYW5kaWRhdGUgQm94IEJhY2tncm91bmQgYW5kIGl0cyBEaXNwbGF5aW5nIFN0eWxlXG4qIFRoZW1lIGFuZCBCYWNrZ3JvdW5kIFBpY3R1cmUgRm9sbG93IEdOT01FIE5pZ2h0IExpZ2h0IE1vZGVcblxuVXNlciBHdWlkZTogaHR0cHM6Ly9ob2xsb3dtYW5zYmxvZy53b3JkcHJlc3MuY29tLzIwMjEvMDgvMjEvY3VzdG9taXplLWlidXMtdXNlci1ndWlkZS9cblxuXHU2ZGYxXHU1ZWE2XHU1YjlhXHU1MjM2IElCdXMgXHU3Njg0XHU1OTE2XHU4OWMyXHUzMDAxXHU4ODRjXHU0ZTNhXHUzMDAxXHU3Y2ZiXHU3ZWRmXHU2MjU4XHU3NmQ4XHU0ZWU1XHU1M2NhXHU4ZjkzXHU1MTY1XHU2MzA3XHU3OTNhXG5cblx1NjUyZlx1NjMwMVx1ODFlYVx1NWI5YVx1NGU0OVx1ZmYxYVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTY1YjlcdTU0MTFcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU1MmE4XHU3NTNiXG4qIFx1NTNmM1x1OTUyZVx1NTM1NVx1NTFmYlx1NTAxOVx1OTAwOVx1Njg0Nlx1NGVlNVx1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFx1NjIxNlx1NjI1M1x1NWYwMFx1NGVmYlx1NTJhMVx1NjgwZlx1ODNkY1x1NTM1NVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTRlMGFcdTZlZGFcdTUyYThcdTRlZTVcdTUyMDdcdTYzNjJcdTk4NzVcdTk3NjJcdTYyMTZcdTUwMTlcdTkwMDlcdThiY2RcbiogXHU1NmZhXHU1YjlhXHU1MDE5XHU5MDA5XHU2ODQ2XHU0ZjdmXHU1MTc2XHU0ZTBkXHU4ZGRmXHU5NjhmXHU1MTQ5XHU2ODA3XHU0ZWU1XHU1M2NhXHU4YmJlXHU1YjlhXHU1NmZhXHU1YjlhXHU0ZjRkXHU3ZjZlXG4qIFx1NTAxOVx1OTAwOVx1Njg0Nlx1NWI1N1x1NGY1M1xuKiBcdThmOTNcdTUxNjVcdTZhMjFcdTVmMGZcdTY4MzlcdTYzNmVcdTVlOTRcdTc1MjhcdThiYjBcdTVmYzZcdTVlNzZcdTgxZWFcdTUyYThcdTUyMDdcdTYzNjJcbiogXHU2NmY0XHU2NTM5XHU1MDE5XHU5MDA5XHU2ODQ2XHU5MDBmXHU2NjBlXHU1ZWE2XG4qIFx1NTZmYVx1NWI5YVx1OGY5M1x1NTE2NVx1NmNkNVx1NTIxN1x1ODg2OFx1OTg3YVx1NWU4ZlxuKiBcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTUwMTlcdTkwMDlcdTY4NDZcbiogXHU2NjNlXHU3OTNhXHU2MjE2XHU5NjkwXHU4NWNmXHU1MDE5XHU5MDA5XHU2ODQ2XHU4YzAzXHU5ODc1XHU2MzA5XHU5NGFlXG4qIFx1N2NmYlx1N2VkZlx1NGVmYlx1NTJhMVx1NjgwZlx1NjI1OFx1NzZkOFx1NjYzZVx1NzkzYVx1NTQ4Y1x1NGVhNFx1NGU5Mlx1OGJiZVx1N2Y2ZVxuKiAqIFx1NjYzZVx1NzkzYVx1NjIxNlx1OTY5MFx1ODVjZlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1xuKiAqIFx1NzZmNFx1NjNhNVx1NzBiOVx1NTFmYlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1x1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFxuKiAqIFx1NmRmYlx1NTJhMFx1OTg5ZFx1NTkxNlx1ODNkY1x1NTM1NVxuKiBcdThmOTNcdTUxNjVcdTZlOTBcdTYzMDdcdTc5M2FcdTU2NjhcdTUzY2FcdTUxNzZcdTY2M2VcdTc5M2FcdTU0OGNcdTRlYTRcdTRlOTJcdThiYmVcdTdmNmVcbiogKiBcdTU0MmZcdTc1MjhcdTYzMDdcdTc5M2FcdTU2NjhcbiogKiBcdTRlYzVcdTU3MjhcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRlYzVcdTU3MjhcdTgyZjFcdTY1ODdcdThmOTNcdTUxNjVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRmN2ZcdTc1MjhcdTUzNTVcdTZhMjFcdTVmMGZcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTRlMGRcdTYzMDdcdTc5M2FcbiogKiBcdTUzZjNcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTY3NjVcdTVjMDZcdTUxNzZcdTk2OTBcdTg1Y2ZcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTRlMGFcdTZlZGFcdTUyYThcdTY3NjVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTY2M2VcdTc5M2FcdTUyYThcdTc1M2JcbiogKiBcdTgxZWFcdTViOWFcdTRlNDlcdTViNTdcdTRmNTNcbiogKiBcdTVkZTZcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTRlZTVcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTYyMTZcdTgwMDVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTY2ZjRcdTY1MzlcdTkwMGZcdTY2MGVcdTVlYTZcbiogKiBcdTU0MmZcdTc1MjhcdTVlZjZcdTY1ZjZcdTY2M2VcdTc5M2FcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTY2M2VcdTc5M2FcdTY1ZjZcdTVlZjZcbiogKiBcdTU0MmZcdTc1MjhcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTY1ZjZcdTVlZjZcbiogXHU3NmFlXHU4MGE0XHU2ODM3XHU1ZjBmXHU0ZTNiXHU5ODk4XHVmZjA4XHU2M2QwXHU0ZjliXHU3Njg0XHU2MjE2XHU4MDA1XHU0ZWNlR05PTUUgU2hlbGxcdTRlM2JcdTk4OThcdTRlMmRcdTYzZDBcdTUzZDZcdTc2ODRcdTY4MzdcdTVmMGZcdTg4NjhcdWZmMGNcdTUzYzJcdTg5YzFcdTYyNjlcdTVjNTVcdTc2ODRcdTVlMmVcdTUyYTlcdTkwZThcdTUyMDZcdTY3NjVcdTgzYjdcdTUzZDZcdTY2ZjRcdTU5MWFcdTYzMDdcdTViZmNcdWZmMDlcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU4MGNjXHU2NjZmXHU1NmZlXHU3MjQ3XHU1M2NhXHU1MTc2XHU2NjNlXHU3OTNhXHU2ODM3XHU1ZjBmXG4qIFx1NGUzYlx1OTg5OFx1NTQ4Y1x1ODBjY1x1NjY2Zlx1NTZmZVx1NzI0N1x1OGRkZlx1OTY4ZkdOT01FXHU1OTFjXHU3MDZmXG5cblx1NGY3Zlx1NzUyOFx1NjMwN1x1NTM1N1x1ZmYxYWh0dHBzOi8vYmxvZy5jc2RuLm5ldC9xcV8xODU3MjAyMy9hcnRpY2xlL2RldGFpbHMvMTE2MzMxNjAxIiwKICAiZXh0ZW5zaW9uLWlkIjogImN1c3RvbWl6ZS1pYnVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9taXplLWlidXMiLAogICJuYW1lIjogIkN1c3RvbWl6ZSBJQnVzIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJob2xsb3dtYW5Ab3BlbnN1c2Uub3JnIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b21pemUtaWJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAuMCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvQ3VzdG9taXplLUlCdXMiLAogICJ1dWlkIjogImN1c3RvbWl6ZS1pYnVzQGhvbGxvd21hbi5tbCIsCiAgInZlcnNpb24iOiA4Ngp9"},
     "43": {"version": "86", "sha256": "0cbgfqjwn6q9ppy19bx5qiiz9mhpj0yxgsmb3ckxrlsd71s916w6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGwgY3VzdG9taXphdGlvbiBvZiBhcHBlYXJhbmNlLCBiZWhhdmlvciwgc3lzdGVtIHRyYXkgYW5kIGlucHV0IHNvdXJjZSBpbmRpY2F0b3IgZm9yIElCdXNcblxuU3VwcG9ydCBDdXN0b21pemF0aW9uIG9mOlxuKiBDYW5kaWRhdGUgQm94IE9yaWVudGF0aW9uXG4qIENhbmRpZGF0ZSBCb3ggQW5pbWF0aW9uXG4qIFJpZ2h0LWNsaWNrIENhbmRpZGF0ZSBCb3ggdG8gU3dpdGNoIHRoZSBJbnB1dCBNb2RlIG9yIE9wZW4gdGhlIFRyYXkgTWVudVxuKiBTY3JvbGwgb24gQ2FuZGlkYXRlIEJveCB0byBTd2l0Y2ggYW1vbmcgUGFnZXMgb3IgQ2FuZGlkYXRlc1xuKiBGaXggQ2FuZGlkYXRlIEJveCB0byBOb3QgRm9sbG93IHRoZSBDYXJldCBhbmQgU2V0IEZpeGVkIFBvc2l0aW9uXG4qIENhbmRpZGF0ZSBCb3ggRm9udFxuKiBJbnB1dCBNb2RlIFJlbWVtYmVyIGFuZCBBdXRvLXN3aXRjaCBieSBBUFBcbiogQ2hhbmdlIENhbmRpZGF0ZSBCb3ggT3BhY2l0eVxuKiBGaXggSU1FIExpc3QgT3JkZXJcbiogRHJhZyBDYW5kaWRhdGUgQm94IHRvIFJlcG9zaXRpb25cbiogU2hvdyBvciBIaWRlIENhbmRpZGF0ZSBCb3ggUGFnZSBCdXR0b25zXG4qIFN5c3RlbSBUcmF5IE1lbnVzIGFuZCBJbnRlcmFjdGlvbiBTZXR0aW5nc1xuKiAqIFNob3cgb3IgSGlkZSBUcmF5IEljb25cbiogKiBEaXJlY3RseSBDbGljayBUcmF5IEljb24gdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBBZGQgQWRkaXRpb25hbCBNZW51XG4qIElucHV0IFNvdXJjZSBJbmRpY2F0b3IgQXBwZWFyYW5jZSBhbmQgSW50ZXJhY3Rpb24gU2V0dGluZ3NcbiogKiBFbmFibGUgSW5kaWNhdG9yXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFN3aXRjaGluZyBJbnB1dCBNb2RlXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFVzaW5nIEFTQ0lJIElucHV0IE1vZGVcbiogKiBOb3QgSW5kaWNhdGUgd2hlbiBVc2luZyBTaW5nbGUgTW9kZSBJTUVcbiogKiBSaWdodC1jbGljayBJbmRpY2F0b3IgdG8gSGlkZVxuKiAqIFNjcm9sbCBvbiBJbmRpY2F0b3IgdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBJbmRpY2F0b3IgQW5pbWF0aW9uXG4qICogQ3VzdG9taXplIEZvbnRcbiogKiBMZWZ0LWNsaWNrIEluZGljYXRvciB0byBEcmFnIHRvIE1vdmUgSW5kaWNhdG9yIG9yIFN3aXRjaCBJbnB1dCBNb2RlXG4qICogQ2hhbmdlIE9wYWNpdHlcbiogKiBFbmFibGUgSW5kaWNhdG9yIFNob3cgRGVsYXkgYW5kIENvbmZpZ3VyZSBTaG93aW5nIFRpbWVvdXRcbiogKiBFbmFibGUgQXV0by1oaWRlIEluZGljYXRvciBhbmQgQ29uZmlndXJlIEF1dG8taGlkZSBUaW1lb3V0XG4qIFRoZW1lIChTdHlsZXNoZWV0IFByb3ZpZGVkIG9yIEV4dHJhY3RlZCBmcm9tIEdOT01FIFNoZWxsIFRoZW1lcywgUmVmZXIgdG8gSGVscCBJbnN0cnVjdGlvbnMgaW4gRXh0ZW5zaW9uIGZvciBNb3JlKVxuKiBDYW5kaWRhdGUgQm94IEJhY2tncm91bmQgYW5kIGl0cyBEaXNwbGF5aW5nIFN0eWxlXG4qIFRoZW1lIGFuZCBCYWNrZ3JvdW5kIFBpY3R1cmUgRm9sbG93IEdOT01FIE5pZ2h0IExpZ2h0IE1vZGVcblxuVXNlciBHdWlkZTogaHR0cHM6Ly9ob2xsb3dtYW5zYmxvZy53b3JkcHJlc3MuY29tLzIwMjEvMDgvMjEvY3VzdG9taXplLWlidXMtdXNlci1ndWlkZS9cblxuXHU2ZGYxXHU1ZWE2XHU1YjlhXHU1MjM2IElCdXMgXHU3Njg0XHU1OTE2XHU4OWMyXHUzMDAxXHU4ODRjXHU0ZTNhXHUzMDAxXHU3Y2ZiXHU3ZWRmXHU2MjU4XHU3NmQ4XHU0ZWU1XHU1M2NhXHU4ZjkzXHU1MTY1XHU2MzA3XHU3OTNhXG5cblx1NjUyZlx1NjMwMVx1ODFlYVx1NWI5YVx1NGU0OVx1ZmYxYVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTY1YjlcdTU0MTFcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU1MmE4XHU3NTNiXG4qIFx1NTNmM1x1OTUyZVx1NTM1NVx1NTFmYlx1NTAxOVx1OTAwOVx1Njg0Nlx1NGVlNVx1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFx1NjIxNlx1NjI1M1x1NWYwMFx1NGVmYlx1NTJhMVx1NjgwZlx1ODNkY1x1NTM1NVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTRlMGFcdTZlZGFcdTUyYThcdTRlZTVcdTUyMDdcdTYzNjJcdTk4NzVcdTk3NjJcdTYyMTZcdTUwMTlcdTkwMDlcdThiY2RcbiogXHU1NmZhXHU1YjlhXHU1MDE5XHU5MDA5XHU2ODQ2XHU0ZjdmXHU1MTc2XHU0ZTBkXHU4ZGRmXHU5NjhmXHU1MTQ5XHU2ODA3XHU0ZWU1XHU1M2NhXHU4YmJlXHU1YjlhXHU1NmZhXHU1YjlhXHU0ZjRkXHU3ZjZlXG4qIFx1NTAxOVx1OTAwOVx1Njg0Nlx1NWI1N1x1NGY1M1xuKiBcdThmOTNcdTUxNjVcdTZhMjFcdTVmMGZcdTY4MzlcdTYzNmVcdTVlOTRcdTc1MjhcdThiYjBcdTVmYzZcdTVlNzZcdTgxZWFcdTUyYThcdTUyMDdcdTYzNjJcbiogXHU2NmY0XHU2NTM5XHU1MDE5XHU5MDA5XHU2ODQ2XHU5MDBmXHU2NjBlXHU1ZWE2XG4qIFx1NTZmYVx1NWI5YVx1OGY5M1x1NTE2NVx1NmNkNVx1NTIxN1x1ODg2OFx1OTg3YVx1NWU4ZlxuKiBcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTUwMTlcdTkwMDlcdTY4NDZcbiogXHU2NjNlXHU3OTNhXHU2MjE2XHU5NjkwXHU4NWNmXHU1MDE5XHU5MDA5XHU2ODQ2XHU4YzAzXHU5ODc1XHU2MzA5XHU5NGFlXG4qIFx1N2NmYlx1N2VkZlx1NGVmYlx1NTJhMVx1NjgwZlx1NjI1OFx1NzZkOFx1NjYzZVx1NzkzYVx1NTQ4Y1x1NGVhNFx1NGU5Mlx1OGJiZVx1N2Y2ZVxuKiAqIFx1NjYzZVx1NzkzYVx1NjIxNlx1OTY5MFx1ODVjZlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1xuKiAqIFx1NzZmNFx1NjNhNVx1NzBiOVx1NTFmYlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1x1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFxuKiAqIFx1NmRmYlx1NTJhMFx1OTg5ZFx1NTkxNlx1ODNkY1x1NTM1NVxuKiBcdThmOTNcdTUxNjVcdTZlOTBcdTYzMDdcdTc5M2FcdTU2NjhcdTUzY2FcdTUxNzZcdTY2M2VcdTc5M2FcdTU0OGNcdTRlYTRcdTRlOTJcdThiYmVcdTdmNmVcbiogKiBcdTU0MmZcdTc1MjhcdTYzMDdcdTc5M2FcdTU2NjhcbiogKiBcdTRlYzVcdTU3MjhcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRlYzVcdTU3MjhcdTgyZjFcdTY1ODdcdThmOTNcdTUxNjVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRmN2ZcdTc1MjhcdTUzNTVcdTZhMjFcdTVmMGZcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTRlMGRcdTYzMDdcdTc5M2FcbiogKiBcdTUzZjNcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTY3NjVcdTVjMDZcdTUxNzZcdTk2OTBcdTg1Y2ZcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTRlMGFcdTZlZGFcdTUyYThcdTY3NjVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTY2M2VcdTc5M2FcdTUyYThcdTc1M2JcbiogKiBcdTgxZWFcdTViOWFcdTRlNDlcdTViNTdcdTRmNTNcbiogKiBcdTVkZTZcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTRlZTVcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTYyMTZcdTgwMDVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTY2ZjRcdTY1MzlcdTkwMGZcdTY2MGVcdTVlYTZcbiogKiBcdTU0MmZcdTc1MjhcdTVlZjZcdTY1ZjZcdTY2M2VcdTc5M2FcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTY2M2VcdTc5M2FcdTY1ZjZcdTVlZjZcbiogKiBcdTU0MmZcdTc1MjhcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTY1ZjZcdTVlZjZcbiogXHU3NmFlXHU4MGE0XHU2ODM3XHU1ZjBmXHU0ZTNiXHU5ODk4XHVmZjA4XHU2M2QwXHU0ZjliXHU3Njg0XHU2MjE2XHU4MDA1XHU0ZWNlR05PTUUgU2hlbGxcdTRlM2JcdTk4OThcdTRlMmRcdTYzZDBcdTUzZDZcdTc2ODRcdTY4MzdcdTVmMGZcdTg4NjhcdWZmMGNcdTUzYzJcdTg5YzFcdTYyNjlcdTVjNTVcdTc2ODRcdTVlMmVcdTUyYTlcdTkwZThcdTUyMDZcdTY3NjVcdTgzYjdcdTUzZDZcdTY2ZjRcdTU5MWFcdTYzMDdcdTViZmNcdWZmMDlcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU4MGNjXHU2NjZmXHU1NmZlXHU3MjQ3XHU1M2NhXHU1MTc2XHU2NjNlXHU3OTNhXHU2ODM3XHU1ZjBmXG4qIFx1NGUzYlx1OTg5OFx1NTQ4Y1x1ODBjY1x1NjY2Zlx1NTZmZVx1NzI0N1x1OGRkZlx1OTY4ZkdOT01FXHU1OTFjXHU3MDZmXG5cblx1NGY3Zlx1NzUyOFx1NjMwN1x1NTM1N1x1ZmYxYWh0dHBzOi8vYmxvZy5jc2RuLm5ldC9xcV8xODU3MjAyMy9hcnRpY2xlL2RldGFpbHMvMTE2MzMxNjAxIiwKICAiZXh0ZW5zaW9uLWlkIjogImN1c3RvbWl6ZS1pYnVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9taXplLWlidXMiLAogICJuYW1lIjogIkN1c3RvbWl6ZSBJQnVzIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJob2xsb3dtYW5Ab3BlbnN1c2Uub3JnIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b21pemUtaWJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAuMCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvQ3VzdG9taXplLUlCdXMiLAogICJ1dWlkIjogImN1c3RvbWl6ZS1pYnVzQGhvbGxvd21hbi5tbCIsCiAgInZlcnNpb24iOiA4Ngp9"},
     "44": {"version": "86", "sha256": "0cbgfqjwn6q9ppy19bx5qiiz9mhpj0yxgsmb3ckxrlsd71s916w6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGwgY3VzdG9taXphdGlvbiBvZiBhcHBlYXJhbmNlLCBiZWhhdmlvciwgc3lzdGVtIHRyYXkgYW5kIGlucHV0IHNvdXJjZSBpbmRpY2F0b3IgZm9yIElCdXNcblxuU3VwcG9ydCBDdXN0b21pemF0aW9uIG9mOlxuKiBDYW5kaWRhdGUgQm94IE9yaWVudGF0aW9uXG4qIENhbmRpZGF0ZSBCb3ggQW5pbWF0aW9uXG4qIFJpZ2h0LWNsaWNrIENhbmRpZGF0ZSBCb3ggdG8gU3dpdGNoIHRoZSBJbnB1dCBNb2RlIG9yIE9wZW4gdGhlIFRyYXkgTWVudVxuKiBTY3JvbGwgb24gQ2FuZGlkYXRlIEJveCB0byBTd2l0Y2ggYW1vbmcgUGFnZXMgb3IgQ2FuZGlkYXRlc1xuKiBGaXggQ2FuZGlkYXRlIEJveCB0byBOb3QgRm9sbG93IHRoZSBDYXJldCBhbmQgU2V0IEZpeGVkIFBvc2l0aW9uXG4qIENhbmRpZGF0ZSBCb3ggRm9udFxuKiBJbnB1dCBNb2RlIFJlbWVtYmVyIGFuZCBBdXRvLXN3aXRjaCBieSBBUFBcbiogQ2hhbmdlIENhbmRpZGF0ZSBCb3ggT3BhY2l0eVxuKiBGaXggSU1FIExpc3QgT3JkZXJcbiogRHJhZyBDYW5kaWRhdGUgQm94IHRvIFJlcG9zaXRpb25cbiogU2hvdyBvciBIaWRlIENhbmRpZGF0ZSBCb3ggUGFnZSBCdXR0b25zXG4qIFN5c3RlbSBUcmF5IE1lbnVzIGFuZCBJbnRlcmFjdGlvbiBTZXR0aW5nc1xuKiAqIFNob3cgb3IgSGlkZSBUcmF5IEljb25cbiogKiBEaXJlY3RseSBDbGljayBUcmF5IEljb24gdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBBZGQgQWRkaXRpb25hbCBNZW51XG4qIElucHV0IFNvdXJjZSBJbmRpY2F0b3IgQXBwZWFyYW5jZSBhbmQgSW50ZXJhY3Rpb24gU2V0dGluZ3NcbiogKiBFbmFibGUgSW5kaWNhdG9yXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFN3aXRjaGluZyBJbnB1dCBNb2RlXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFVzaW5nIEFTQ0lJIElucHV0IE1vZGVcbiogKiBOb3QgSW5kaWNhdGUgd2hlbiBVc2luZyBTaW5nbGUgTW9kZSBJTUVcbiogKiBSaWdodC1jbGljayBJbmRpY2F0b3IgdG8gSGlkZVxuKiAqIFNjcm9sbCBvbiBJbmRpY2F0b3IgdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBJbmRpY2F0b3IgQW5pbWF0aW9uXG4qICogQ3VzdG9taXplIEZvbnRcbiogKiBMZWZ0LWNsaWNrIEluZGljYXRvciB0byBEcmFnIHRvIE1vdmUgSW5kaWNhdG9yIG9yIFN3aXRjaCBJbnB1dCBNb2RlXG4qICogQ2hhbmdlIE9wYWNpdHlcbiogKiBFbmFibGUgSW5kaWNhdG9yIFNob3cgRGVsYXkgYW5kIENvbmZpZ3VyZSBTaG93aW5nIFRpbWVvdXRcbiogKiBFbmFibGUgQXV0by1oaWRlIEluZGljYXRvciBhbmQgQ29uZmlndXJlIEF1dG8taGlkZSBUaW1lb3V0XG4qIFRoZW1lIChTdHlsZXNoZWV0IFByb3ZpZGVkIG9yIEV4dHJhY3RlZCBmcm9tIEdOT01FIFNoZWxsIFRoZW1lcywgUmVmZXIgdG8gSGVscCBJbnN0cnVjdGlvbnMgaW4gRXh0ZW5zaW9uIGZvciBNb3JlKVxuKiBDYW5kaWRhdGUgQm94IEJhY2tncm91bmQgYW5kIGl0cyBEaXNwbGF5aW5nIFN0eWxlXG4qIFRoZW1lIGFuZCBCYWNrZ3JvdW5kIFBpY3R1cmUgRm9sbG93IEdOT01FIE5pZ2h0IExpZ2h0IE1vZGVcblxuVXNlciBHdWlkZTogaHR0cHM6Ly9ob2xsb3dtYW5zYmxvZy53b3JkcHJlc3MuY29tLzIwMjEvMDgvMjEvY3VzdG9taXplLWlidXMtdXNlci1ndWlkZS9cblxuXHU2ZGYxXHU1ZWE2XHU1YjlhXHU1MjM2IElCdXMgXHU3Njg0XHU1OTE2XHU4OWMyXHUzMDAxXHU4ODRjXHU0ZTNhXHUzMDAxXHU3Y2ZiXHU3ZWRmXHU2MjU4XHU3NmQ4XHU0ZWU1XHU1M2NhXHU4ZjkzXHU1MTY1XHU2MzA3XHU3OTNhXG5cblx1NjUyZlx1NjMwMVx1ODFlYVx1NWI5YVx1NGU0OVx1ZmYxYVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTY1YjlcdTU0MTFcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU1MmE4XHU3NTNiXG4qIFx1NTNmM1x1OTUyZVx1NTM1NVx1NTFmYlx1NTAxOVx1OTAwOVx1Njg0Nlx1NGVlNVx1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFx1NjIxNlx1NjI1M1x1NWYwMFx1NGVmYlx1NTJhMVx1NjgwZlx1ODNkY1x1NTM1NVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTRlMGFcdTZlZGFcdTUyYThcdTRlZTVcdTUyMDdcdTYzNjJcdTk4NzVcdTk3NjJcdTYyMTZcdTUwMTlcdTkwMDlcdThiY2RcbiogXHU1NmZhXHU1YjlhXHU1MDE5XHU5MDA5XHU2ODQ2XHU0ZjdmXHU1MTc2XHU0ZTBkXHU4ZGRmXHU5NjhmXHU1MTQ5XHU2ODA3XHU0ZWU1XHU1M2NhXHU4YmJlXHU1YjlhXHU1NmZhXHU1YjlhXHU0ZjRkXHU3ZjZlXG4qIFx1NTAxOVx1OTAwOVx1Njg0Nlx1NWI1N1x1NGY1M1xuKiBcdThmOTNcdTUxNjVcdTZhMjFcdTVmMGZcdTY4MzlcdTYzNmVcdTVlOTRcdTc1MjhcdThiYjBcdTVmYzZcdTVlNzZcdTgxZWFcdTUyYThcdTUyMDdcdTYzNjJcbiogXHU2NmY0XHU2NTM5XHU1MDE5XHU5MDA5XHU2ODQ2XHU5MDBmXHU2NjBlXHU1ZWE2XG4qIFx1NTZmYVx1NWI5YVx1OGY5M1x1NTE2NVx1NmNkNVx1NTIxN1x1ODg2OFx1OTg3YVx1NWU4ZlxuKiBcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTUwMTlcdTkwMDlcdTY4NDZcbiogXHU2NjNlXHU3OTNhXHU2MjE2XHU5NjkwXHU4NWNmXHU1MDE5XHU5MDA5XHU2ODQ2XHU4YzAzXHU5ODc1XHU2MzA5XHU5NGFlXG4qIFx1N2NmYlx1N2VkZlx1NGVmYlx1NTJhMVx1NjgwZlx1NjI1OFx1NzZkOFx1NjYzZVx1NzkzYVx1NTQ4Y1x1NGVhNFx1NGU5Mlx1OGJiZVx1N2Y2ZVxuKiAqIFx1NjYzZVx1NzkzYVx1NjIxNlx1OTY5MFx1ODVjZlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1xuKiAqIFx1NzZmNFx1NjNhNVx1NzBiOVx1NTFmYlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1x1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFxuKiAqIFx1NmRmYlx1NTJhMFx1OTg5ZFx1NTkxNlx1ODNkY1x1NTM1NVxuKiBcdThmOTNcdTUxNjVcdTZlOTBcdTYzMDdcdTc5M2FcdTU2NjhcdTUzY2FcdTUxNzZcdTY2M2VcdTc5M2FcdTU0OGNcdTRlYTRcdTRlOTJcdThiYmVcdTdmNmVcbiogKiBcdTU0MmZcdTc1MjhcdTYzMDdcdTc5M2FcdTU2NjhcbiogKiBcdTRlYzVcdTU3MjhcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRlYzVcdTU3MjhcdTgyZjFcdTY1ODdcdThmOTNcdTUxNjVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRmN2ZcdTc1MjhcdTUzNTVcdTZhMjFcdTVmMGZcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTRlMGRcdTYzMDdcdTc5M2FcbiogKiBcdTUzZjNcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTY3NjVcdTVjMDZcdTUxNzZcdTk2OTBcdTg1Y2ZcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTRlMGFcdTZlZGFcdTUyYThcdTY3NjVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTY2M2VcdTc5M2FcdTUyYThcdTc1M2JcbiogKiBcdTgxZWFcdTViOWFcdTRlNDlcdTViNTdcdTRmNTNcbiogKiBcdTVkZTZcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTRlZTVcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTYyMTZcdTgwMDVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTY2ZjRcdTY1MzlcdTkwMGZcdTY2MGVcdTVlYTZcbiogKiBcdTU0MmZcdTc1MjhcdTVlZjZcdTY1ZjZcdTY2M2VcdTc5M2FcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTY2M2VcdTc5M2FcdTY1ZjZcdTVlZjZcbiogKiBcdTU0MmZcdTc1MjhcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTY1ZjZcdTVlZjZcbiogXHU3NmFlXHU4MGE0XHU2ODM3XHU1ZjBmXHU0ZTNiXHU5ODk4XHVmZjA4XHU2M2QwXHU0ZjliXHU3Njg0XHU2MjE2XHU4MDA1XHU0ZWNlR05PTUUgU2hlbGxcdTRlM2JcdTk4OThcdTRlMmRcdTYzZDBcdTUzZDZcdTc2ODRcdTY4MzdcdTVmMGZcdTg4NjhcdWZmMGNcdTUzYzJcdTg5YzFcdTYyNjlcdTVjNTVcdTc2ODRcdTVlMmVcdTUyYTlcdTkwZThcdTUyMDZcdTY3NjVcdTgzYjdcdTUzZDZcdTY2ZjRcdTU5MWFcdTYzMDdcdTViZmNcdWZmMDlcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU4MGNjXHU2NjZmXHU1NmZlXHU3MjQ3XHU1M2NhXHU1MTc2XHU2NjNlXHU3OTNhXHU2ODM3XHU1ZjBmXG4qIFx1NGUzYlx1OTg5OFx1NTQ4Y1x1ODBjY1x1NjY2Zlx1NTZmZVx1NzI0N1x1OGRkZlx1OTY4ZkdOT01FXHU1OTFjXHU3MDZmXG5cblx1NGY3Zlx1NzUyOFx1NjMwN1x1NTM1N1x1ZmYxYWh0dHBzOi8vYmxvZy5jc2RuLm5ldC9xcV8xODU3MjAyMy9hcnRpY2xlL2RldGFpbHMvMTE2MzMxNjAxIiwKICAiZXh0ZW5zaW9uLWlkIjogImN1c3RvbWl6ZS1pYnVzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9taXplLWlidXMiLAogICJuYW1lIjogIkN1c3RvbWl6ZSBJQnVzIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJob2xsb3dtYW5Ab3BlbnN1c2Uub3JnIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b21pemUtaWJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAuMCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvQ3VzdG9taXplLUlCdXMiLAogICJ1dWlkIjogImN1c3RvbWl6ZS1pYnVzQGhvbGxvd21hbi5tbCIsCiAgInZlcnNpb24iOiA4Ngp9"},
-    "45": {"version": "88", "sha256": "1z0m08lwgl6cibzawv6b4xlw2ll16jd90wlp5kmbhw17yfn4c64y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGwgY3VzdG9taXphdGlvbiBvZiBhcHBlYXJhbmNlLCBiZWhhdmlvciwgc3lzdGVtIHRyYXkgYW5kIGlucHV0IHNvdXJjZSBpbmRpY2F0b3IgZm9yIElCdXNcblxuU3VwcG9ydCBDdXN0b21pemF0aW9uIG9mOlxuKiBDYW5kaWRhdGUgQm94IE9yaWVudGF0aW9uXG4qIENhbmRpZGF0ZSBCb3ggQW5pbWF0aW9uXG4qIFJpZ2h0LWNsaWNrIENhbmRpZGF0ZSBCb3ggdG8gU3dpdGNoIHRoZSBJbnB1dCBNb2RlIG9yIE9wZW4gdGhlIFRyYXkgTWVudVxuKiBTY3JvbGwgb24gQ2FuZGlkYXRlIEJveCB0byBTd2l0Y2ggYW1vbmcgUGFnZXMgb3IgQ2FuZGlkYXRlc1xuKiBGaXggQ2FuZGlkYXRlIEJveCB0byBOb3QgRm9sbG93IHRoZSBDYXJldCBhbmQgU2V0IEZpeGVkIFBvc2l0aW9uXG4qIENhbmRpZGF0ZSBCb3ggRm9udFxuKiBJbnB1dCBNb2RlIFJlbWVtYmVyIGFuZCBBdXRvLXN3aXRjaCBieSBBUFBcbiogQ2hhbmdlIENhbmRpZGF0ZSBCb3ggT3BhY2l0eVxuKiBGaXggSU1FIExpc3QgT3JkZXJcbiogRHJhZyBDYW5kaWRhdGUgQm94IHRvIFJlcG9zaXRpb25cbiogU2hvdyBvciBIaWRlIENhbmRpZGF0ZSBCb3ggUGFnZSBCdXR0b25zXG4qIFN5c3RlbSBUcmF5IE1lbnVzIGFuZCBJbnRlcmFjdGlvbiBTZXR0aW5nc1xuKiAqIFNob3cgb3IgSGlkZSBUcmF5IEljb25cbiogKiBEaXJlY3RseSBDbGljayBUcmF5IEljb24gdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBBZGQgQWRkaXRpb25hbCBNZW51XG4qIElucHV0IFNvdXJjZSBJbmRpY2F0b3IgQXBwZWFyYW5jZSBhbmQgSW50ZXJhY3Rpb24gU2V0dGluZ3NcbiogKiBFbmFibGUgSW5kaWNhdG9yXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFN3aXRjaGluZyBJbnB1dCBNb2RlXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFVzaW5nIEFTQ0lJIElucHV0IE1vZGVcbiogKiBOb3QgSW5kaWNhdGUgd2hlbiBVc2luZyBTaW5nbGUgTW9kZSBJTUVcbiogKiBSaWdodC1jbGljayBJbmRpY2F0b3IgdG8gSGlkZVxuKiAqIFNjcm9sbCBvbiBJbmRpY2F0b3IgdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBJbmRpY2F0b3IgQW5pbWF0aW9uXG4qICogQ3VzdG9taXplIEZvbnRcbiogKiBMZWZ0LWNsaWNrIEluZGljYXRvciB0byBEcmFnIHRvIE1vdmUgSW5kaWNhdG9yIG9yIFN3aXRjaCBJbnB1dCBNb2RlXG4qICogQ2hhbmdlIE9wYWNpdHlcbiogKiBFbmFibGUgSW5kaWNhdG9yIFNob3cgRGVsYXkgYW5kIENvbmZpZ3VyZSBTaG93aW5nIFRpbWVvdXRcbiogKiBFbmFibGUgQXV0by1oaWRlIEluZGljYXRvciBhbmQgQ29uZmlndXJlIEF1dG8taGlkZSBUaW1lb3V0XG4qIFRoZW1lIChTdHlsZXNoZWV0IFByb3ZpZGVkIG9yIEV4dHJhY3RlZCBmcm9tIEdOT01FIFNoZWxsIFRoZW1lcywgUmVmZXIgdG8gSGVscCBJbnN0cnVjdGlvbnMgaW4gRXh0ZW5zaW9uIGZvciBNb3JlKVxuKiBDYW5kaWRhdGUgQm94IEJhY2tncm91bmQgYW5kIGl0cyBEaXNwbGF5aW5nIFN0eWxlXG4qIFRoZW1lIGFuZCBCYWNrZ3JvdW5kIFBpY3R1cmUgRm9sbG93IEdOT01FIE5pZ2h0IExpZ2h0IE1vZGVcblxuVXNlciBHdWlkZTogaHR0cHM6Ly9ob2xsb3dtYW5zYmxvZy53b3JkcHJlc3MuY29tLzIwMjEvMDgvMjEvY3VzdG9taXplLWlidXMtdXNlci1ndWlkZS9cblxuXHU2ZGYxXHU1ZWE2XHU1YjlhXHU1MjM2IElCdXMgXHU3Njg0XHU1OTE2XHU4OWMyXHUzMDAxXHU4ODRjXHU0ZTNhXHUzMDAxXHU3Y2ZiXHU3ZWRmXHU2MjU4XHU3NmQ4XHU0ZWU1XHU1M2NhXHU4ZjkzXHU1MTY1XHU2MzA3XHU3OTNhXG5cblx1NjUyZlx1NjMwMVx1ODFlYVx1NWI5YVx1NGU0OVx1ZmYxYVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTY1YjlcdTU0MTFcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU1MmE4XHU3NTNiXG4qIFx1NTNmM1x1OTUyZVx1NTM1NVx1NTFmYlx1NTAxOVx1OTAwOVx1Njg0Nlx1NGVlNVx1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFx1NjIxNlx1NjI1M1x1NWYwMFx1NGVmYlx1NTJhMVx1NjgwZlx1ODNkY1x1NTM1NVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTRlMGFcdTZlZGFcdTUyYThcdTRlZTVcdTUyMDdcdTYzNjJcdTk4NzVcdTk3NjJcdTYyMTZcdTUwMTlcdTkwMDlcdThiY2RcbiogXHU1NmZhXHU1YjlhXHU1MDE5XHU5MDA5XHU2ODQ2XHU0ZjdmXHU1MTc2XHU0ZTBkXHU4ZGRmXHU5NjhmXHU1MTQ5XHU2ODA3XHU0ZWU1XHU1M2NhXHU4YmJlXHU1YjlhXHU1NmZhXHU1YjlhXHU0ZjRkXHU3ZjZlXG4qIFx1NTAxOVx1OTAwOVx1Njg0Nlx1NWI1N1x1NGY1M1xuKiBcdThmOTNcdTUxNjVcdTZhMjFcdTVmMGZcdTY4MzlcdTYzNmVcdTVlOTRcdTc1MjhcdThiYjBcdTVmYzZcdTVlNzZcdTgxZWFcdTUyYThcdTUyMDdcdTYzNjJcbiogXHU2NmY0XHU2NTM5XHU1MDE5XHU5MDA5XHU2ODQ2XHU5MDBmXHU2NjBlXHU1ZWE2XG4qIFx1NTZmYVx1NWI5YVx1OGY5M1x1NTE2NVx1NmNkNVx1NTIxN1x1ODg2OFx1OTg3YVx1NWU4ZlxuKiBcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTUwMTlcdTkwMDlcdTY4NDZcbiogXHU2NjNlXHU3OTNhXHU2MjE2XHU5NjkwXHU4NWNmXHU1MDE5XHU5MDA5XHU2ODQ2XHU4YzAzXHU5ODc1XHU2MzA5XHU5NGFlXG4qIFx1N2NmYlx1N2VkZlx1NGVmYlx1NTJhMVx1NjgwZlx1NjI1OFx1NzZkOFx1NjYzZVx1NzkzYVx1NTQ4Y1x1NGVhNFx1NGU5Mlx1OGJiZVx1N2Y2ZVxuKiAqIFx1NjYzZVx1NzkzYVx1NjIxNlx1OTY5MFx1ODVjZlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1xuKiAqIFx1NzZmNFx1NjNhNVx1NzBiOVx1NTFmYlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1x1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFxuKiAqIFx1NmRmYlx1NTJhMFx1OTg5ZFx1NTkxNlx1ODNkY1x1NTM1NVxuKiBcdThmOTNcdTUxNjVcdTZlOTBcdTYzMDdcdTc5M2FcdTU2NjhcdTUzY2FcdTUxNzZcdTY2M2VcdTc5M2FcdTU0OGNcdTRlYTRcdTRlOTJcdThiYmVcdTdmNmVcbiogKiBcdTU0MmZcdTc1MjhcdTYzMDdcdTc5M2FcdTU2NjhcbiogKiBcdTRlYzVcdTU3MjhcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRlYzVcdTU3MjhcdTgyZjFcdTY1ODdcdThmOTNcdTUxNjVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRmN2ZcdTc1MjhcdTUzNTVcdTZhMjFcdTVmMGZcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTRlMGRcdTYzMDdcdTc5M2FcbiogKiBcdTUzZjNcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTY3NjVcdTVjMDZcdTUxNzZcdTk2OTBcdTg1Y2ZcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTRlMGFcdTZlZGFcdTUyYThcdTY3NjVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTY2M2VcdTc5M2FcdTUyYThcdTc1M2JcbiogKiBcdTgxZWFcdTViOWFcdTRlNDlcdTViNTdcdTRmNTNcbiogKiBcdTVkZTZcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTRlZTVcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTYyMTZcdTgwMDVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTY2ZjRcdTY1MzlcdTkwMGZcdTY2MGVcdTVlYTZcbiogKiBcdTU0MmZcdTc1MjhcdTVlZjZcdTY1ZjZcdTY2M2VcdTc5M2FcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTY2M2VcdTc5M2FcdTY1ZjZcdTVlZjZcbiogKiBcdTU0MmZcdTc1MjhcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTY1ZjZcdTVlZjZcbiogXHU3NmFlXHU4MGE0XHU2ODM3XHU1ZjBmXHU0ZTNiXHU5ODk4XHVmZjA4XHU2M2QwXHU0ZjliXHU3Njg0XHU2MjE2XHU4MDA1XHU0ZWNlR05PTUUgU2hlbGxcdTRlM2JcdTk4OThcdTRlMmRcdTYzZDBcdTUzZDZcdTc2ODRcdTY4MzdcdTVmMGZcdTg4NjhcdWZmMGNcdTUzYzJcdTg5YzFcdTYyNjlcdTVjNTVcdTc2ODRcdTVlMmVcdTUyYTlcdTkwZThcdTUyMDZcdTY3NjVcdTgzYjdcdTUzZDZcdTY2ZjRcdTU5MWFcdTYzMDdcdTViZmNcdWZmMDlcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU4MGNjXHU2NjZmXHU1NmZlXHU3MjQ3XHU1M2NhXHU1MTc2XHU2NjNlXHU3OTNhXHU2ODM3XHU1ZjBmXG4qIFx1NGUzYlx1OTg5OFx1NTQ4Y1x1ODBjY1x1NjY2Zlx1NTZmZVx1NzI0N1x1OGRkZlx1OTY4ZkdOT01FXHU1OTFjXHU3MDZmXG5cblx1NGY3Zlx1NzUyOFx1NjMwN1x1NTM1N1x1ZmYxYWh0dHBzOi8vYmxvZy5jc2RuLm5ldC9xcV8xODU3MjAyMy9hcnRpY2xlL2RldGFpbHMvMTE2MzMxNjAxIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJIb2xsb3dNYW42IgogIH0sCiAgImV4dGVuc2lvbi1pZCI6ICJjdXN0b21pemUtaWJ1cyIsCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbWl6ZS1pYnVzIiwKICAibmFtZSI6ICJDdXN0b21pemUgSUJ1cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiaG9sbG93bWFuQG9wZW5zdXNlLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9taXplLWlidXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvQ3VzdG9taXplLUlCdXMiLAogICJ1dWlkIjogImN1c3RvbWl6ZS1pYnVzQGhvbGxvd21hbi5tbCIsCiAgInZlcnNpb24iOiA4OAp9"}
+    "45": {"version": "88", "sha256": "1z0m08lwgl6cibzawv6b4xlw2ll16jd90wlp5kmbhw17yfn4c64y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGwgY3VzdG9taXphdGlvbiBvZiBhcHBlYXJhbmNlLCBiZWhhdmlvciwgc3lzdGVtIHRyYXkgYW5kIGlucHV0IHNvdXJjZSBpbmRpY2F0b3IgZm9yIElCdXNcblxuU3VwcG9ydCBDdXN0b21pemF0aW9uIG9mOlxuKiBDYW5kaWRhdGUgQm94IE9yaWVudGF0aW9uXG4qIENhbmRpZGF0ZSBCb3ggQW5pbWF0aW9uXG4qIFJpZ2h0LWNsaWNrIENhbmRpZGF0ZSBCb3ggdG8gU3dpdGNoIHRoZSBJbnB1dCBNb2RlIG9yIE9wZW4gdGhlIFRyYXkgTWVudVxuKiBTY3JvbGwgb24gQ2FuZGlkYXRlIEJveCB0byBTd2l0Y2ggYW1vbmcgUGFnZXMgb3IgQ2FuZGlkYXRlc1xuKiBGaXggQ2FuZGlkYXRlIEJveCB0byBOb3QgRm9sbG93IHRoZSBDYXJldCBhbmQgU2V0IEZpeGVkIFBvc2l0aW9uXG4qIENhbmRpZGF0ZSBCb3ggRm9udFxuKiBJbnB1dCBNb2RlIFJlbWVtYmVyIGFuZCBBdXRvLXN3aXRjaCBieSBBUFBcbiogQ2hhbmdlIENhbmRpZGF0ZSBCb3ggT3BhY2l0eVxuKiBGaXggSU1FIExpc3QgT3JkZXJcbiogRHJhZyBDYW5kaWRhdGUgQm94IHRvIFJlcG9zaXRpb25cbiogU2hvdyBvciBIaWRlIENhbmRpZGF0ZSBCb3ggUGFnZSBCdXR0b25zXG4qIFN5c3RlbSBUcmF5IE1lbnVzIGFuZCBJbnRlcmFjdGlvbiBTZXR0aW5nc1xuKiAqIFNob3cgb3IgSGlkZSBUcmF5IEljb25cbiogKiBEaXJlY3RseSBDbGljayBUcmF5IEljb24gdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBBZGQgQWRkaXRpb25hbCBNZW51XG4qIElucHV0IFNvdXJjZSBJbmRpY2F0b3IgQXBwZWFyYW5jZSBhbmQgSW50ZXJhY3Rpb24gU2V0dGluZ3NcbiogKiBFbmFibGUgSW5kaWNhdG9yXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFN3aXRjaGluZyBJbnB1dCBNb2RlXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFVzaW5nIEFTQ0lJIElucHV0IE1vZGVcbiogKiBOb3QgSW5kaWNhdGUgd2hlbiBVc2luZyBTaW5nbGUgTW9kZSBJTUVcbiogKiBSaWdodC1jbGljayBJbmRpY2F0b3IgdG8gSGlkZVxuKiAqIFNjcm9sbCBvbiBJbmRpY2F0b3IgdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBJbmRpY2F0b3IgQW5pbWF0aW9uXG4qICogQ3VzdG9taXplIEZvbnRcbiogKiBMZWZ0LWNsaWNrIEluZGljYXRvciB0byBEcmFnIHRvIE1vdmUgSW5kaWNhdG9yIG9yIFN3aXRjaCBJbnB1dCBNb2RlXG4qICogQ2hhbmdlIE9wYWNpdHlcbiogKiBFbmFibGUgSW5kaWNhdG9yIFNob3cgRGVsYXkgYW5kIENvbmZpZ3VyZSBTaG93aW5nIFRpbWVvdXRcbiogKiBFbmFibGUgQXV0by1oaWRlIEluZGljYXRvciBhbmQgQ29uZmlndXJlIEF1dG8taGlkZSBUaW1lb3V0XG4qIFRoZW1lIChTdHlsZXNoZWV0IFByb3ZpZGVkIG9yIEV4dHJhY3RlZCBmcm9tIEdOT01FIFNoZWxsIFRoZW1lcywgUmVmZXIgdG8gSGVscCBJbnN0cnVjdGlvbnMgaW4gRXh0ZW5zaW9uIGZvciBNb3JlKVxuKiBDYW5kaWRhdGUgQm94IEJhY2tncm91bmQgYW5kIGl0cyBEaXNwbGF5aW5nIFN0eWxlXG4qIFRoZW1lIGFuZCBCYWNrZ3JvdW5kIFBpY3R1cmUgRm9sbG93IEdOT01FIE5pZ2h0IExpZ2h0IE1vZGVcblxuVXNlciBHdWlkZTogaHR0cHM6Ly9ob2xsb3dtYW5zYmxvZy53b3JkcHJlc3MuY29tLzIwMjEvMDgvMjEvY3VzdG9taXplLWlidXMtdXNlci1ndWlkZS9cblxuXHU2ZGYxXHU1ZWE2XHU1YjlhXHU1MjM2IElCdXMgXHU3Njg0XHU1OTE2XHU4OWMyXHUzMDAxXHU4ODRjXHU0ZTNhXHUzMDAxXHU3Y2ZiXHU3ZWRmXHU2MjU4XHU3NmQ4XHU0ZWU1XHU1M2NhXHU4ZjkzXHU1MTY1XHU2MzA3XHU3OTNhXG5cblx1NjUyZlx1NjMwMVx1ODFlYVx1NWI5YVx1NGU0OVx1ZmYxYVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTY1YjlcdTU0MTFcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU1MmE4XHU3NTNiXG4qIFx1NTNmM1x1OTUyZVx1NTM1NVx1NTFmYlx1NTAxOVx1OTAwOVx1Njg0Nlx1NGVlNVx1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFx1NjIxNlx1NjI1M1x1NWYwMFx1NGVmYlx1NTJhMVx1NjgwZlx1ODNkY1x1NTM1NVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTRlMGFcdTZlZGFcdTUyYThcdTRlZTVcdTUyMDdcdTYzNjJcdTk4NzVcdTk3NjJcdTYyMTZcdTUwMTlcdTkwMDlcdThiY2RcbiogXHU1NmZhXHU1YjlhXHU1MDE5XHU5MDA5XHU2ODQ2XHU0ZjdmXHU1MTc2XHU0ZTBkXHU4ZGRmXHU5NjhmXHU1MTQ5XHU2ODA3XHU0ZWU1XHU1M2NhXHU4YmJlXHU1YjlhXHU1NmZhXHU1YjlhXHU0ZjRkXHU3ZjZlXG4qIFx1NTAxOVx1OTAwOVx1Njg0Nlx1NWI1N1x1NGY1M1xuKiBcdThmOTNcdTUxNjVcdTZhMjFcdTVmMGZcdTY4MzlcdTYzNmVcdTVlOTRcdTc1MjhcdThiYjBcdTVmYzZcdTVlNzZcdTgxZWFcdTUyYThcdTUyMDdcdTYzNjJcbiogXHU2NmY0XHU2NTM5XHU1MDE5XHU5MDA5XHU2ODQ2XHU5MDBmXHU2NjBlXHU1ZWE2XG4qIFx1NTZmYVx1NWI5YVx1OGY5M1x1NTE2NVx1NmNkNVx1NTIxN1x1ODg2OFx1OTg3YVx1NWU4ZlxuKiBcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTUwMTlcdTkwMDlcdTY4NDZcbiogXHU2NjNlXHU3OTNhXHU2MjE2XHU5NjkwXHU4NWNmXHU1MDE5XHU5MDA5XHU2ODQ2XHU4YzAzXHU5ODc1XHU2MzA5XHU5NGFlXG4qIFx1N2NmYlx1N2VkZlx1NGVmYlx1NTJhMVx1NjgwZlx1NjI1OFx1NzZkOFx1NjYzZVx1NzkzYVx1NTQ4Y1x1NGVhNFx1NGU5Mlx1OGJiZVx1N2Y2ZVxuKiAqIFx1NjYzZVx1NzkzYVx1NjIxNlx1OTY5MFx1ODVjZlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1xuKiAqIFx1NzZmNFx1NjNhNVx1NzBiOVx1NTFmYlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1x1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFxuKiAqIFx1NmRmYlx1NTJhMFx1OTg5ZFx1NTkxNlx1ODNkY1x1NTM1NVxuKiBcdThmOTNcdTUxNjVcdTZlOTBcdTYzMDdcdTc5M2FcdTU2NjhcdTUzY2FcdTUxNzZcdTY2M2VcdTc5M2FcdTU0OGNcdTRlYTRcdTRlOTJcdThiYmVcdTdmNmVcbiogKiBcdTU0MmZcdTc1MjhcdTYzMDdcdTc5M2FcdTU2NjhcbiogKiBcdTRlYzVcdTU3MjhcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRlYzVcdTU3MjhcdTgyZjFcdTY1ODdcdThmOTNcdTUxNjVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRmN2ZcdTc1MjhcdTUzNTVcdTZhMjFcdTVmMGZcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTRlMGRcdTYzMDdcdTc5M2FcbiogKiBcdTUzZjNcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTY3NjVcdTVjMDZcdTUxNzZcdTk2OTBcdTg1Y2ZcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTRlMGFcdTZlZGFcdTUyYThcdTY3NjVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTY2M2VcdTc5M2FcdTUyYThcdTc1M2JcbiogKiBcdTgxZWFcdTViOWFcdTRlNDlcdTViNTdcdTRmNTNcbiogKiBcdTVkZTZcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTRlZTVcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTYyMTZcdTgwMDVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTY2ZjRcdTY1MzlcdTkwMGZcdTY2MGVcdTVlYTZcbiogKiBcdTU0MmZcdTc1MjhcdTVlZjZcdTY1ZjZcdTY2M2VcdTc5M2FcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTY2M2VcdTc5M2FcdTY1ZjZcdTVlZjZcbiogKiBcdTU0MmZcdTc1MjhcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTY1ZjZcdTVlZjZcbiogXHU3NmFlXHU4MGE0XHU2ODM3XHU1ZjBmXHU0ZTNiXHU5ODk4XHVmZjA4XHU2M2QwXHU0ZjliXHU3Njg0XHU2MjE2XHU4MDA1XHU0ZWNlR05PTUUgU2hlbGxcdTRlM2JcdTk4OThcdTRlMmRcdTYzZDBcdTUzZDZcdTc2ODRcdTY4MzdcdTVmMGZcdTg4NjhcdWZmMGNcdTUzYzJcdTg5YzFcdTYyNjlcdTVjNTVcdTc2ODRcdTVlMmVcdTUyYTlcdTkwZThcdTUyMDZcdTY3NjVcdTgzYjdcdTUzZDZcdTY2ZjRcdTU5MWFcdTYzMDdcdTViZmNcdWZmMDlcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU4MGNjXHU2NjZmXHU1NmZlXHU3MjQ3XHU1M2NhXHU1MTc2XHU2NjNlXHU3OTNhXHU2ODM3XHU1ZjBmXG4qIFx1NGUzYlx1OTg5OFx1NTQ4Y1x1ODBjY1x1NjY2Zlx1NTZmZVx1NzI0N1x1OGRkZlx1OTY4ZkdOT01FXHU1OTFjXHU3MDZmXG5cblx1NGY3Zlx1NzUyOFx1NjMwN1x1NTM1N1x1ZmYxYWh0dHBzOi8vYmxvZy5jc2RuLm5ldC9xcV8xODU3MjAyMy9hcnRpY2xlL2RldGFpbHMvMTE2MzMxNjAxIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJIb2xsb3dNYW42IgogIH0sCiAgImV4dGVuc2lvbi1pZCI6ICJjdXN0b21pemUtaWJ1cyIsCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbWl6ZS1pYnVzIiwKICAibmFtZSI6ICJDdXN0b21pemUgSUJ1cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiaG9sbG93bWFuQG9wZW5zdXNlLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9taXplLWlidXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvQ3VzdG9taXplLUlCdXMiLAogICJ1dWlkIjogImN1c3RvbWl6ZS1pYnVzQGhvbGxvd21hbi5tbCIsCiAgInZlcnNpb24iOiA4OAp9"},
+    "46": {"version": "89", "sha256": "1dd26s2rgsn51gh75x2wp348s7mmfijvnyg6pli4sky9mfp22i6m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGwgY3VzdG9taXphdGlvbiBvZiBhcHBlYXJhbmNlLCBiZWhhdmlvciwgc3lzdGVtIHRyYXkgYW5kIGlucHV0IHNvdXJjZSBpbmRpY2F0b3IgZm9yIElCdXNcblxuU3VwcG9ydCBDdXN0b21pemF0aW9uIG9mOlxuKiBDYW5kaWRhdGUgQm94IE9yaWVudGF0aW9uXG4qIENhbmRpZGF0ZSBCb3ggQW5pbWF0aW9uXG4qIFJpZ2h0LWNsaWNrIENhbmRpZGF0ZSBCb3ggdG8gU3dpdGNoIHRoZSBJbnB1dCBNb2RlIG9yIE9wZW4gdGhlIFRyYXkgTWVudVxuKiBTY3JvbGwgb24gQ2FuZGlkYXRlIEJveCB0byBTd2l0Y2ggYW1vbmcgUGFnZXMgb3IgQ2FuZGlkYXRlc1xuKiBGaXggQ2FuZGlkYXRlIEJveCB0byBOb3QgRm9sbG93IHRoZSBDYXJldCBhbmQgU2V0IEZpeGVkIFBvc2l0aW9uXG4qIENhbmRpZGF0ZSBCb3ggRm9udFxuKiBJbnB1dCBNb2RlIFJlbWVtYmVyIGFuZCBBdXRvLXN3aXRjaCBieSBBUFBcbiogQ2hhbmdlIENhbmRpZGF0ZSBCb3ggT3BhY2l0eVxuKiBGaXggSU1FIExpc3QgT3JkZXJcbiogRHJhZyBDYW5kaWRhdGUgQm94IHRvIFJlcG9zaXRpb25cbiogU2hvdyBvciBIaWRlIENhbmRpZGF0ZSBCb3ggUGFnZSBCdXR0b25zXG4qIFN5c3RlbSBUcmF5IE1lbnVzIGFuZCBJbnRlcmFjdGlvbiBTZXR0aW5nc1xuKiAqIFNob3cgb3IgSGlkZSBUcmF5IEljb25cbiogKiBEaXJlY3RseSBDbGljayBUcmF5IEljb24gdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBBZGQgQWRkaXRpb25hbCBNZW51XG4qIElucHV0IFNvdXJjZSBJbmRpY2F0b3IgQXBwZWFyYW5jZSBhbmQgSW50ZXJhY3Rpb24gU2V0dGluZ3NcbiogKiBFbmFibGUgSW5kaWNhdG9yXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFN3aXRjaGluZyBJbnB1dCBNb2RlXG4qICogT25seSBJbmRpY2F0ZSB3aGVuIFVzaW5nIEFTQ0lJIElucHV0IE1vZGVcbiogKiBOb3QgSW5kaWNhdGUgd2hlbiBVc2luZyBTaW5nbGUgTW9kZSBJTUVcbiogKiBSaWdodC1jbGljayBJbmRpY2F0b3IgdG8gSGlkZVxuKiAqIFNjcm9sbCBvbiBJbmRpY2F0b3IgdG8gU3dpdGNoIElucHV0IE1vZGVcbiogKiBJbmRpY2F0b3IgQW5pbWF0aW9uXG4qICogQ3VzdG9taXplIEZvbnRcbiogKiBMZWZ0LWNsaWNrIEluZGljYXRvciB0byBEcmFnIHRvIE1vdmUgSW5kaWNhdG9yIG9yIFN3aXRjaCBJbnB1dCBNb2RlXG4qICogQ2hhbmdlIE9wYWNpdHlcbiogKiBFbmFibGUgSW5kaWNhdG9yIFNob3cgRGVsYXkgYW5kIENvbmZpZ3VyZSBTaG93aW5nIFRpbWVvdXRcbiogKiBFbmFibGUgQXV0by1oaWRlIEluZGljYXRvciBhbmQgQ29uZmlndXJlIEF1dG8taGlkZSBUaW1lb3V0XG4qIFRoZW1lIChTdHlsZXNoZWV0IFByb3ZpZGVkIG9yIEV4dHJhY3RlZCBmcm9tIEdOT01FIFNoZWxsIFRoZW1lcywgUmVmZXIgdG8gSGVscCBJbnN0cnVjdGlvbnMgaW4gRXh0ZW5zaW9uIGZvciBNb3JlKVxuKiBDYW5kaWRhdGUgQm94IEJhY2tncm91bmQgYW5kIGl0cyBEaXNwbGF5aW5nIFN0eWxlXG4qIFRoZW1lIGFuZCBCYWNrZ3JvdW5kIFBpY3R1cmUgRm9sbG93IEdOT01FIE5pZ2h0IExpZ2h0IE1vZGVcblxuVXNlciBHdWlkZTogaHR0cHM6Ly9ob2xsb3dtYW5zYmxvZy53b3JkcHJlc3MuY29tLzIwMjEvMDgvMjEvY3VzdG9taXplLWlidXMtdXNlci1ndWlkZS9cblxuXHU2ZGYxXHU1ZWE2XHU1YjlhXHU1MjM2IElCdXMgXHU3Njg0XHU1OTE2XHU4OWMyXHUzMDAxXHU4ODRjXHU0ZTNhXHUzMDAxXHU3Y2ZiXHU3ZWRmXHU2MjU4XHU3NmQ4XHU0ZWU1XHU1M2NhXHU4ZjkzXHU1MTY1XHU2MzA3XHU3OTNhXG5cblx1NjUyZlx1NjMwMVx1ODFlYVx1NWI5YVx1NGU0OVx1ZmYxYVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTY1YjlcdTU0MTFcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU1MmE4XHU3NTNiXG4qIFx1NTNmM1x1OTUyZVx1NTM1NVx1NTFmYlx1NTAxOVx1OTAwOVx1Njg0Nlx1NGVlNVx1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFx1NjIxNlx1NjI1M1x1NWYwMFx1NGVmYlx1NTJhMVx1NjgwZlx1ODNkY1x1NTM1NVxuKiBcdTUwMTlcdTkwMDlcdTY4NDZcdTRlMGFcdTZlZGFcdTUyYThcdTRlZTVcdTUyMDdcdTYzNjJcdTk4NzVcdTk3NjJcdTYyMTZcdTUwMTlcdTkwMDlcdThiY2RcbiogXHU1NmZhXHU1YjlhXHU1MDE5XHU5MDA5XHU2ODQ2XHU0ZjdmXHU1MTc2XHU0ZTBkXHU4ZGRmXHU5NjhmXHU1MTQ5XHU2ODA3XHU0ZWU1XHU1M2NhXHU4YmJlXHU1YjlhXHU1NmZhXHU1YjlhXHU0ZjRkXHU3ZjZlXG4qIFx1NTAxOVx1OTAwOVx1Njg0Nlx1NWI1N1x1NGY1M1xuKiBcdThmOTNcdTUxNjVcdTZhMjFcdTVmMGZcdTY4MzlcdTYzNmVcdTVlOTRcdTc1MjhcdThiYjBcdTVmYzZcdTVlNzZcdTgxZWFcdTUyYThcdTUyMDdcdTYzNjJcbiogXHU2NmY0XHU2NTM5XHU1MDE5XHU5MDA5XHU2ODQ2XHU5MDBmXHU2NjBlXHU1ZWE2XG4qIFx1NTZmYVx1NWI5YVx1OGY5M1x1NTE2NVx1NmNkNVx1NTIxN1x1ODg2OFx1OTg3YVx1NWU4ZlxuKiBcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTUwMTlcdTkwMDlcdTY4NDZcbiogXHU2NjNlXHU3OTNhXHU2MjE2XHU5NjkwXHU4NWNmXHU1MDE5XHU5MDA5XHU2ODQ2XHU4YzAzXHU5ODc1XHU2MzA5XHU5NGFlXG4qIFx1N2NmYlx1N2VkZlx1NGVmYlx1NTJhMVx1NjgwZlx1NjI1OFx1NzZkOFx1NjYzZVx1NzkzYVx1NTQ4Y1x1NGVhNFx1NGU5Mlx1OGJiZVx1N2Y2ZVxuKiAqIFx1NjYzZVx1NzkzYVx1NjIxNlx1OTY5MFx1ODVjZlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1xuKiAqIFx1NzZmNFx1NjNhNVx1NzBiOVx1NTFmYlx1NjI1OFx1NzZkOFx1NTZmZVx1NjgwN1x1NTIwN1x1NjM2Mlx1OGY5M1x1NTE2NVx1NmU5MFxuKiAqIFx1NmRmYlx1NTJhMFx1OTg5ZFx1NTkxNlx1ODNkY1x1NTM1NVxuKiBcdThmOTNcdTUxNjVcdTZlOTBcdTYzMDdcdTc5M2FcdTU2NjhcdTUzY2FcdTUxNzZcdTY2M2VcdTc5M2FcdTU0OGNcdTRlYTRcdTRlOTJcdThiYmVcdTdmNmVcbiogKiBcdTU0MmZcdTc1MjhcdTYzMDdcdTc5M2FcdTU2NjhcbiogKiBcdTRlYzVcdTU3MjhcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRlYzVcdTU3MjhcdTgyZjFcdTY1ODdcdThmOTNcdTUxNjVcdTY1ZjZcdTYzMDdcdTc5M2FcbiogKiBcdTRmN2ZcdTc1MjhcdTUzNTVcdTZhMjFcdTVmMGZcdThmOTNcdTUxNjVcdTZjZDVcdTY1ZjZcdTRlMGRcdTYzMDdcdTc5M2FcbiogKiBcdTUzZjNcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTY3NjVcdTVjMDZcdTUxNzZcdTk2OTBcdTg1Y2ZcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTRlMGFcdTZlZGFcdTUyYThcdTY3NjVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTYzMDdcdTc5M2FcdTU2NjhcdTY2M2VcdTc5M2FcdTUyYThcdTc1M2JcbiogKiBcdTgxZWFcdTViOWFcdTRlNDlcdTViNTdcdTRmNTNcbiogKiBcdTVkZTZcdTUxZmJcdTYzMDdcdTc5M2FcdTU2NjhcdTRlZTVcdTYyZDZcdTYyZmRcdTc5ZmJcdTUyYThcdTYyMTZcdTgwMDVcdTUyMDdcdTYzNjJcdThmOTNcdTUxNjVcdTZlOTBcbiogKiBcdTY2ZjRcdTY1MzlcdTkwMGZcdTY2MGVcdTVlYTZcbiogKiBcdTU0MmZcdTc1MjhcdTVlZjZcdTY1ZjZcdTY2M2VcdTc5M2FcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTY2M2VcdTc5M2FcdTY1ZjZcdTVlZjZcbiogKiBcdTU0MmZcdTc1MjhcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTRlZTVcdTUzY2FcdTkxNGRcdTdmNmVcdTgxZWFcdTUyYThcdTk2OTBcdTg1Y2ZcdTY1ZjZcdTVlZjZcbiogXHU3NmFlXHU4MGE0XHU2ODM3XHU1ZjBmXHU0ZTNiXHU5ODk4XHVmZjA4XHU2M2QwXHU0ZjliXHU3Njg0XHU2MjE2XHU4MDA1XHU0ZWNlR05PTUUgU2hlbGxcdTRlM2JcdTk4OThcdTRlMmRcdTYzZDBcdTUzZDZcdTc2ODRcdTY4MzdcdTVmMGZcdTg4NjhcdWZmMGNcdTUzYzJcdTg5YzFcdTYyNjlcdTVjNTVcdTc2ODRcdTVlMmVcdTUyYTlcdTkwZThcdTUyMDZcdTY3NjVcdTgzYjdcdTUzZDZcdTY2ZjRcdTU5MWFcdTYzMDdcdTViZmNcdWZmMDlcbiogXHU1MDE5XHU5MDA5XHU2ODQ2XHU4MGNjXHU2NjZmXHU1NmZlXHU3MjQ3XHU1M2NhXHU1MTc2XHU2NjNlXHU3OTNhXHU2ODM3XHU1ZjBmXG4qIFx1NGUzYlx1OTg5OFx1NTQ4Y1x1ODBjY1x1NjY2Zlx1NTZmZVx1NzI0N1x1OGRkZlx1OTY4ZkdOT01FXHU1OTFjXHU3MDZmXG5cblx1NGY3Zlx1NzUyOFx1NjMwN1x1NTM1N1x1ZmYxYWh0dHBzOi8vYmxvZy5jc2RuLm5ldC9xcV8xODU3MjAyMy9hcnRpY2xlL2RldGFpbHMvMTE2MzMxNjAxIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJIb2xsb3dNYW42IgogIH0sCiAgImV4dGVuc2lvbi1pZCI6ICJjdXN0b21pemUtaWJ1cyIsCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbWl6ZS1pYnVzIiwKICAibmFtZSI6ICJDdXN0b21pemUgSUJ1cyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiaG9sbG93bWFuQG9wZW5zdXNlLm9yZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9taXplLWlidXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvQ3VzdG9taXplLUlCdXMiLAogICJ1dWlkIjogImN1c3RvbWl6ZS1pYnVzQGhvbGxvd21hbi5tbCIsCiAgInZlcnNpb24iOiA4OQp9"}
   }}
 , {"uuid": "fildemGMenu@gonza.com", "name": "Fildem global menu", "pname": "fildem-global-menu", "description": "Global menu for Gnome", "link": "https://extensions.gnome.org/extension/4114/fildem-global-menu/", "shell_version_map": {
     "38": {"version": "2", "sha256": "0776vx09b1nxf6j5w9gmzg1gmzijh1mpsnfzv41svbfqyfc8zv2w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdsb2JhbCBtZW51IGZvciBHbm9tZSIsCiAgIm5hbWUiOiAiRmlsZGVtIGdsb2JhbCBtZW51IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZpbGRlbS1nbG9iYWwtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ29uemFhcmNyL0ZpbGRlbSIsCiAgInV1aWQiOiAiZmlsZGVtR01lbnVAZ29uemEuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
@@ -3181,7 +3316,8 @@
     "42": {"version": "5", "sha256": "03n6bkgz7ld1wm2kdjav6yy2apsdgn9pk4h242aq5sn4kyg9mydx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgY2hhbmdpbmcgbWVudSBvbiBob3ZlciBhbm90aGVyIHBhbmVsIGJ1dHRvbi4iLAogICJuYW1lIjogIkRpc2FibGUgTWVudSBTd2l0Y2hpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWFydGluUEwvRGlzYWJsZS1NZW51LVN3aXRjaGluZyIsCiAgInV1aWQiOiAiZGlzYWJsZS1tZW51LXN3aXRjaGluZ0BzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiA1Cn0="},
     "43": {"version": "6", "sha256": "18vb4h3g6qmxqhg9m5r895lbxmxmgif7irxzzrsnw2m7g2ls7hli", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgY2hhbmdpbmcgbWVudSBvbiBob3ZlciBhbm90aGVyIHBhbmVsIGJ1dHRvbi4iLAogICJuYW1lIjogIkRpc2FibGUgTWVudSBTd2l0Y2hpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWFydGluUEwvRGlzYWJsZS1NZW51LVN3aXRjaGluZyIsCiAgInV1aWQiOiAiZGlzYWJsZS1tZW51LXN3aXRjaGluZ0BzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiA2Cn0="},
     "44": {"version": "7", "sha256": "1qcllppvvyh09i20ml80v3gplgwqlhg5p6jc0r1cfcd9y91ylzh6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgY2hhbmdpbmcgbWVudSBvbiBob3ZlciBhbm90aGVyIHBhbmVsIGJ1dHRvbi4iLAogICJuYW1lIjogIkRpc2FibGUgTWVudSBTd2l0Y2hpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWFydGluUEwvRGlzYWJsZS1NZW51LVN3aXRjaGluZyIsCiAgInV1aWQiOiAiZGlzYWJsZS1tZW51LXN3aXRjaGluZ0BzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiA3Cn0="},
-    "45": {"version": "8", "sha256": "05ql0533q0h0j9rid34xd5miq7w3m5gxrvz84qjr9101marf3nkm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgY2hhbmdpbmcgbWVudSBvbiBob3ZlciBhbm90aGVyIHBhbmVsIGJ1dHRvbi4iLAogICJuYW1lIjogIkRpc2FibGUgTWVudSBTd2l0Y2hpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWFydGluUEwvRGlzYWJsZS1NZW51LVN3aXRjaGluZyIsCiAgInV1aWQiOiAiZGlzYWJsZS1tZW51LXN3aXRjaGluZ0BzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiA4Cn0="}
+    "45": {"version": "8", "sha256": "05ql0533q0h0j9rid34xd5miq7w3m5gxrvz84qjr9101marf3nkm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgY2hhbmdpbmcgbWVudSBvbiBob3ZlciBhbm90aGVyIHBhbmVsIGJ1dHRvbi4iLAogICJuYW1lIjogIkRpc2FibGUgTWVudSBTd2l0Y2hpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWFydGluUEwvRGlzYWJsZS1NZW51LVN3aXRjaGluZyIsCiAgInV1aWQiOiAiZGlzYWJsZS1tZW51LXN3aXRjaGluZ0BzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiA4Cn0="},
+    "46": {"version": "9", "sha256": "19211yv01a2iqlamh8kk9klg0xaaa6xj0z6gl5ijjpxr8gbsqx2z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgY2hhbmdpbmcgbWVudSBvbiBob3ZlciBhbm90aGVyIHBhbmVsIGJ1dHRvbi4iLAogICJuYW1lIjogIkRpc2FibGUgTWVudSBTd2l0Y2hpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWFydGluUEwvRGlzYWJsZS1NZW51LVN3aXRjaGluZyIsCiAgInV1aWQiOiAiZGlzYWJsZS1tZW51LXN3aXRjaGluZ0BzZWxmbWFkZS5wbCIsCiAgInZlcnNpb24iOiA5Cn0="}
   }}
 , {"uuid": "espresso@coadmunkee.github.com", "name": "Espresso", "pname": "espresso", "description": "Espresso disables the usual auto suspend and screensaver functionality and optionally Night Light with options to show an Espresso icon in the top panel, to enable Espresso when a fullscreen application is running, to restore state across reboots, to provide notifications, to enable Espresso when specific applications are running, or to pause Night Light when Espresso is enabled or only when specific applications are running. Espresso also provides some support for docking stations including options to enable Espresso when charging and/or when docked to external monitors and to allow temporarily overriding the docking support without affecting the stored state.\n\nEspresso is a fork of the Caffeine extension.\n\nPlease leave feedback or report issues through the Extension Homepage", "link": "https://extensions.gnome.org/extension/4135/espresso/", "shell_version_map": {
     "40": {"version": "8", "sha256": "1c21nzky2sfrq8wkz26rn2gcyr81y1zb3r14pflwhl56f9bgbh0c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVzcHJlc3NvIGRpc2FibGVzIHRoZSB1c3VhbCBhdXRvIHN1c3BlbmQgYW5kIHNjcmVlbnNhdmVyIGZ1bmN0aW9uYWxpdHkgYW5kIG9wdGlvbmFsbHkgTmlnaHQgTGlnaHQgd2l0aCBvcHRpb25zIHRvIHNob3cgYW4gRXNwcmVzc28gaWNvbiBpbiB0aGUgdG9wIHBhbmVsLCB0byBlbmFibGUgRXNwcmVzc28gd2hlbiBhIGZ1bGxzY3JlZW4gYXBwbGljYXRpb24gaXMgcnVubmluZywgdG8gcmVzdG9yZSBzdGF0ZSBhY3Jvc3MgcmVib290cywgdG8gcHJvdmlkZSBub3RpZmljYXRpb25zLCB0byBlbmFibGUgRXNwcmVzc28gd2hlbiBzcGVjaWZpYyBhcHBsaWNhdGlvbnMgYXJlIHJ1bm5pbmcsIG9yIHRvIHBhdXNlIE5pZ2h0IExpZ2h0IHdoZW4gRXNwcmVzc28gaXMgZW5hYmxlZCBvciBvbmx5IHdoZW4gc3BlY2lmaWMgYXBwbGljYXRpb25zIGFyZSBydW5uaW5nLiBFc3ByZXNzbyBhbHNvIHByb3ZpZGVzIHNvbWUgc3VwcG9ydCBmb3IgZG9ja2luZyBzdGF0aW9ucyBpbmNsdWRpbmcgb3B0aW9ucyB0byBlbmFibGUgRXNwcmVzc28gd2hlbiBjaGFyZ2luZyBhbmQvb3Igd2hlbiBkb2NrZWQgdG8gZXh0ZXJuYWwgbW9uaXRvcnMgYW5kIHRvIGFsbG93IHRlbXBvcmFyaWx5IG92ZXJyaWRpbmcgdGhlIGRvY2tpbmcgc3VwcG9ydCB3aXRob3V0IGFmZmVjdGluZyB0aGUgc3RvcmVkIHN0YXRlLlxuXG5Fc3ByZXNzbyBpcyBhIGZvcmsgb2YgdGhlIENhZmZlaW5lIGV4dGVuc2lvbi5cblxuUGxlYXNlIGxlYXZlIGZlZWRiYWNrIG9yIHJlcG9ydCBpc3N1ZXMgdGhyb3VnaCB0aGUgRXh0ZW5zaW9uIEhvbWVwYWdlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWVzcHJlc3NvIiwKICAibmFtZSI6ICJFc3ByZXNzbyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5lc3ByZXNzbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29hZG11bmtlZS9nbm9tZS1zaGVsbC1leHRlbnNpb24tZXNwcmVzc28iLAogICJ1dWlkIjogImVzcHJlc3NvQGNvYWRtdW5rZWUuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="},
@@ -3224,7 +3360,9 @@
     "41": {"version": "6", "sha256": "0h49kdqwbw8h21889bwg9nld4w4a903mpr91c6n1p3dps39861nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBzaG93IHdvcmtzcGFjZSB0aHVtYm5haWxzIGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiQWx3YXlzIFNob3cgV29ya3NwYWNlIFRodW1ibmFpbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx3YXlzLXNob3ctd29ya3NwYWNlLXRodW1ibmFpbHMvIiwKICAidXVpZCI6ICJhbHdheXNzaG93d29ya3NwYWNldGh1bWJuYWlsc0BhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNgp9"},
     "42": {"version": "6", "sha256": "0h49kdqwbw8h21889bwg9nld4w4a903mpr91c6n1p3dps39861nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBzaG93IHdvcmtzcGFjZSB0aHVtYm5haWxzIGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiQWx3YXlzIFNob3cgV29ya3NwYWNlIFRodW1ibmFpbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx3YXlzLXNob3ctd29ya3NwYWNlLXRodW1ibmFpbHMvIiwKICAidXVpZCI6ICJhbHdheXNzaG93d29ya3NwYWNldGh1bWJuYWlsc0BhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNgp9"},
     "43": {"version": "6", "sha256": "0h49kdqwbw8h21889bwg9nld4w4a903mpr91c6n1p3dps39861nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBzaG93IHdvcmtzcGFjZSB0aHVtYm5haWxzIGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiQWx3YXlzIFNob3cgV29ya3NwYWNlIFRodW1ibmFpbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx3YXlzLXNob3ctd29ya3NwYWNlLXRodW1ibmFpbHMvIiwKICAidXVpZCI6ICJhbHdheXNzaG93d29ya3NwYWNldGh1bWJuYWlsc0BhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNgp9"},
-    "44": {"version": "6", "sha256": "0h49kdqwbw8h21889bwg9nld4w4a903mpr91c6n1p3dps39861nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBzaG93IHdvcmtzcGFjZSB0aHVtYm5haWxzIGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiQWx3YXlzIFNob3cgV29ya3NwYWNlIFRodW1ibmFpbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx3YXlzLXNob3ctd29ya3NwYWNlLXRodW1ibmFpbHMvIiwKICAidXVpZCI6ICJhbHdheXNzaG93d29ya3NwYWNldGh1bWJuYWlsc0BhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNgp9"}
+    "44": {"version": "6", "sha256": "0h49kdqwbw8h21889bwg9nld4w4a903mpr91c6n1p3dps39861nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBzaG93IHdvcmtzcGFjZSB0aHVtYm5haWxzIGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiQWx3YXlzIFNob3cgV29ya3NwYWNlIFRodW1ibmFpbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx3YXlzLXNob3ctd29ya3NwYWNlLXRodW1ibmFpbHMvIiwKICAidXVpZCI6ICJhbHdheXNzaG93d29ya3NwYWNldGh1bWJuYWlsc0BhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogNgp9"},
+    "45": {"version": "9", "sha256": "0q65x82mai2ky8arbnsv1kv3xicynr5nd1r5i01b6jc5ii26pv4h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBzaG93IHdvcmtzcGFjZSB0aHVtYm5haWxzIGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiQWx3YXlzIFNob3cgV29ya3NwYWNlIFRodW1ibmFpbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx3YXlzLXNob3ctd29ya3NwYWNlLXRodW1ibmFpbHMvIiwKICAidXVpZCI6ICJhbHdheXNzaG93d29ya3NwYWNldGh1bWJuYWlsc0BhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogOQp9"},
+    "46": {"version": "9", "sha256": "0q65x82mai2ky8arbnsv1kv3xicynr5nd1r5i01b6jc5ii26pv4h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBzaG93IHdvcmtzcGFjZSB0aHVtYm5haWxzIGV2ZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiQWx3YXlzIFNob3cgV29ya3NwYWNlIFRodW1ibmFpbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx3YXlzLXNob3ctd29ya3NwYWNlLXRodW1ibmFpbHMvIiwKICAidXVpZCI6ICJhbHdheXNzaG93d29ya3NwYWNldGh1bWJuYWlsc0BhbHlueC5vbmUiLAogICJ2ZXJzaW9uIjogOQp9"}
   }}
 , {"uuid": "gnome-ui-tune@itstime.tech", "name": "Gnome 4x UI Improvements", "pname": "gnome-40-ui-improvements", "description": "Tunes gnome 4x Overview UI to make it more usable.\n\nChanges:\n- Search textbox is hidden by default and shown only when user begins to type-to-search\n- Scale of workspaces' thumbnails increased 2x\n- Restores wallpaper on workspaces' thumbnails. No more gray background\n- Show workspaces' thumbnails even when there is only one workspace\n- Firefox's PIP (picture in picture) window is now displayed on the overview screen\n\nAll modifications can be disabled in the extension's settings.\n\nATTENTION!\nAfter extension update, gnome-shell restart is required:\nX11: Alt+F2 => r\nWayland: logout => login", "link": "https://extensions.gnome.org/extension/4158/gnome-40-ui-improvements/", "shell_version_map": {
     "40": {"version": "13", "sha256": "07qb7fzgmjwm05g5s995c4yniyvbr57b8q4l78r09afrycldyma4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1bmVzIGdub21lIDQwLTQzIE92ZXJ2aWV3IFVJIHRvIG1ha2UgaXQgbW9yZSB1c2FibGUuXG5cbkNoYW5nZXM6XG4tIFNlYXJjaCB0ZXh0Ym94IGlzIGhpZGRlbiBieSBkZWZhdWx0IGFuZCBzaG93biBvbmx5IHdoZW4gdXNlciBiZWdpbnMgdG8gdHlwZS10by1zZWFyY2hcbi0gU2NhbGUgb2Ygd29ya3NwYWNlcycgdGh1bWJuYWlscyBpbmNyZWFzZWQgMnhcbi0gUmVzdG9yZXMgd2FsbHBhcGVyIG9uIHdvcmtzcGFjZXMnIHRodW1ibmFpbHMuIE5vIG1vcmUgZ3JheSBiYWNrZ3JvdW5kXG4tIFNob3cgd29ya3NwYWNlcycgdGh1bWJuYWlscyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlXG4tIEZpcmVmb3gncyBQSVAgKHBpY3R1cmUgaW4gcGljdHVyZSkgd2luZG93IGlzIG5vdyBkaXNwbGF5ZWQgb24gdGhlIG92ZXJ2aWV3IHNjcmVlblxuXG5BbGwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZGlzYWJsZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLlxuXG5BVFRFTlRJT04hXG5BZnRlciBleHRlbnNpb24gdXBkYXRlLCBnbm9tZS1zaGVsbCByZXN0YXJ0IGlzIHJlcXVpcmVkOlxuWDExOiBBbHQrRjIgPT4gclxuV2F5bGFuZDogbG9nb3V0ID0+IGxvZ2luIiwKICAibmFtZSI6ICJHbm9tZSA0eCBVSSBJbXByb3ZlbWVudHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ25vbWUtdWktdHVuZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2F4eGFweS9nbm9tZS11aS10dW5lIiwKICAidXVpZCI6ICJnbm9tZS11aS10dW5lQGl0c3RpbWUudGVjaCIsCiAgInZlcnNpb24iOiAxMwp9"},
@@ -3232,21 +3370,23 @@
     "42": {"version": "19", "sha256": "0yqrjmhh1zdmg0a64ri6fw7zxx6556qiv5k2gj4i8bqrmqsc7ij6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1bmVzIGdub21lIDQwLTQ0IE92ZXJ2aWV3IFVJIHRvIG1ha2UgaXQgbW9yZSB1c2FibGUuXG5cbkNoYW5nZXM6XG4tIFNlYXJjaCB0ZXh0Ym94IGlzIGhpZGRlbiBieSBkZWZhdWx0IGFuZCBzaG93biBvbmx5IHdoZW4gdXNlciBiZWdpbnMgdG8gdHlwZS10by1zZWFyY2hcbi0gU2NhbGUgb2Ygd29ya3NwYWNlcycgdGh1bWJuYWlscyBpbmNyZWFzZWQgMnhcbi0gUmVzdG9yZXMgd2FsbHBhcGVyIG9uIHdvcmtzcGFjZXMnIHRodW1ibmFpbHMuIE5vIG1vcmUgZ3JheSBiYWNrZ3JvdW5kXG4tIFNob3cgd29ya3NwYWNlcycgdGh1bWJuYWlscyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlXG4tIEZpcmVmb3gncyBQSVAgKHBpY3R1cmUgaW4gcGljdHVyZSkgd2luZG93IGlzIG5vdyBkaXNwbGF5ZWQgb24gdGhlIG92ZXJ2aWV3IHNjcmVlblxuXG5BbGwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZGlzYWJsZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLlxuXG5BVFRFTlRJT04hXG5BZnRlciBleHRlbnNpb24gdXBkYXRlLCBnbm9tZS1zaGVsbCByZXN0YXJ0IGlzIHJlcXVpcmVkOlxuWDExOiBBbHQrRjIgPT4gclxuV2F5bGFuZDogbG9nb3V0ID0+IGxvZ2luIiwKICAibmFtZSI6ICJHbm9tZSA0eCBVSSBJbXByb3ZlbWVudHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ25vbWUtdWktdHVuZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2F4eGFweS9nbm9tZS11aS10dW5lIiwKICAidXVpZCI6ICJnbm9tZS11aS10dW5lQGl0c3RpbWUudGVjaCIsCiAgInZlcnNpb24iOiAxOQp9"},
     "43": {"version": "19", "sha256": "0yqrjmhh1zdmg0a64ri6fw7zxx6556qiv5k2gj4i8bqrmqsc7ij6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1bmVzIGdub21lIDQwLTQ0IE92ZXJ2aWV3IFVJIHRvIG1ha2UgaXQgbW9yZSB1c2FibGUuXG5cbkNoYW5nZXM6XG4tIFNlYXJjaCB0ZXh0Ym94IGlzIGhpZGRlbiBieSBkZWZhdWx0IGFuZCBzaG93biBvbmx5IHdoZW4gdXNlciBiZWdpbnMgdG8gdHlwZS10by1zZWFyY2hcbi0gU2NhbGUgb2Ygd29ya3NwYWNlcycgdGh1bWJuYWlscyBpbmNyZWFzZWQgMnhcbi0gUmVzdG9yZXMgd2FsbHBhcGVyIG9uIHdvcmtzcGFjZXMnIHRodW1ibmFpbHMuIE5vIG1vcmUgZ3JheSBiYWNrZ3JvdW5kXG4tIFNob3cgd29ya3NwYWNlcycgdGh1bWJuYWlscyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlXG4tIEZpcmVmb3gncyBQSVAgKHBpY3R1cmUgaW4gcGljdHVyZSkgd2luZG93IGlzIG5vdyBkaXNwbGF5ZWQgb24gdGhlIG92ZXJ2aWV3IHNjcmVlblxuXG5BbGwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZGlzYWJsZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLlxuXG5BVFRFTlRJT04hXG5BZnRlciBleHRlbnNpb24gdXBkYXRlLCBnbm9tZS1zaGVsbCByZXN0YXJ0IGlzIHJlcXVpcmVkOlxuWDExOiBBbHQrRjIgPT4gclxuV2F5bGFuZDogbG9nb3V0ID0+IGxvZ2luIiwKICAibmFtZSI6ICJHbm9tZSA0eCBVSSBJbXByb3ZlbWVudHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ25vbWUtdWktdHVuZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2F4eGFweS9nbm9tZS11aS10dW5lIiwKICAidXVpZCI6ICJnbm9tZS11aS10dW5lQGl0c3RpbWUudGVjaCIsCiAgInZlcnNpb24iOiAxOQp9"},
     "44": {"version": "19", "sha256": "0yqrjmhh1zdmg0a64ri6fw7zxx6556qiv5k2gj4i8bqrmqsc7ij6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1bmVzIGdub21lIDQwLTQ0IE92ZXJ2aWV3IFVJIHRvIG1ha2UgaXQgbW9yZSB1c2FibGUuXG5cbkNoYW5nZXM6XG4tIFNlYXJjaCB0ZXh0Ym94IGlzIGhpZGRlbiBieSBkZWZhdWx0IGFuZCBzaG93biBvbmx5IHdoZW4gdXNlciBiZWdpbnMgdG8gdHlwZS10by1zZWFyY2hcbi0gU2NhbGUgb2Ygd29ya3NwYWNlcycgdGh1bWJuYWlscyBpbmNyZWFzZWQgMnhcbi0gUmVzdG9yZXMgd2FsbHBhcGVyIG9uIHdvcmtzcGFjZXMnIHRodW1ibmFpbHMuIE5vIG1vcmUgZ3JheSBiYWNrZ3JvdW5kXG4tIFNob3cgd29ya3NwYWNlcycgdGh1bWJuYWlscyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlXG4tIEZpcmVmb3gncyBQSVAgKHBpY3R1cmUgaW4gcGljdHVyZSkgd2luZG93IGlzIG5vdyBkaXNwbGF5ZWQgb24gdGhlIG92ZXJ2aWV3IHNjcmVlblxuXG5BbGwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZGlzYWJsZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLlxuXG5BVFRFTlRJT04hXG5BZnRlciBleHRlbnNpb24gdXBkYXRlLCBnbm9tZS1zaGVsbCByZXN0YXJ0IGlzIHJlcXVpcmVkOlxuWDExOiBBbHQrRjIgPT4gclxuV2F5bGFuZDogbG9nb3V0ID0+IGxvZ2luIiwKICAibmFtZSI6ICJHbm9tZSA0eCBVSSBJbXByb3ZlbWVudHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ25vbWUtdWktdHVuZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2F4eGFweS9nbm9tZS11aS10dW5lIiwKICAidXVpZCI6ICJnbm9tZS11aS10dW5lQGl0c3RpbWUudGVjaCIsCiAgInZlcnNpb24iOiAxOQp9"},
-    "45": {"version": "20", "sha256": "1z9788b1nh7cbhcc2npza97d2ac8pp6kh8qap6fgwmzmv8hpcpz1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1bmVzIGdub21lIDR4IE92ZXJ2aWV3IFVJIHRvIG1ha2UgaXQgbW9yZSB1c2FibGUuXG5cbkNoYW5nZXM6XG4tIFNlYXJjaCB0ZXh0Ym94IGlzIGhpZGRlbiBieSBkZWZhdWx0IGFuZCBzaG93biBvbmx5IHdoZW4gdXNlciBiZWdpbnMgdG8gdHlwZS10by1zZWFyY2hcbi0gU2NhbGUgb2Ygd29ya3NwYWNlcycgdGh1bWJuYWlscyBpbmNyZWFzZWQgMnhcbi0gUmVzdG9yZXMgd2FsbHBhcGVyIG9uIHdvcmtzcGFjZXMnIHRodW1ibmFpbHMuIE5vIG1vcmUgZ3JheSBiYWNrZ3JvdW5kXG4tIFNob3cgd29ya3NwYWNlcycgdGh1bWJuYWlscyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlXG4tIEZpcmVmb3gncyBQSVAgKHBpY3R1cmUgaW4gcGljdHVyZSkgd2luZG93IGlzIG5vdyBkaXNwbGF5ZWQgb24gdGhlIG92ZXJ2aWV3IHNjcmVlblxuXG5BbGwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZGlzYWJsZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLlxuXG5BVFRFTlRJT04hXG5BZnRlciBleHRlbnNpb24gdXBkYXRlLCBnbm9tZS1zaGVsbCByZXN0YXJ0IGlzIHJlcXVpcmVkOlxuWDExOiBBbHQrRjIgPT4gclxuV2F5bGFuZDogbG9nb3V0ID0+IGxvZ2luIiwKICAibmFtZSI6ICJHbm9tZSA0eCBVSSBJbXByb3ZlbWVudHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ25vbWUtdWktdHVuZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9heHhhcHkvZ25vbWUtdWktdHVuZSIsCiAgInV1aWQiOiAiZ25vbWUtdWktdHVuZUBpdHN0aW1lLnRlY2giLAogICJ2ZXJzaW9uIjogMjAKfQ=="}
+    "45": {"version": "21", "sha256": "05dk4jh3kagq08jmgqmkmn300mrbnw426z259pgj74r51iivfnf7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1bmVzIGdub21lIDR4IE92ZXJ2aWV3IFVJIHRvIG1ha2UgaXQgbW9yZSB1c2FibGUuXG5cbkNoYW5nZXM6XG4tIFNlYXJjaCB0ZXh0Ym94IGlzIGhpZGRlbiBieSBkZWZhdWx0IGFuZCBzaG93biBvbmx5IHdoZW4gdXNlciBiZWdpbnMgdG8gdHlwZS10by1zZWFyY2hcbi0gU2NhbGUgb2Ygd29ya3NwYWNlcycgdGh1bWJuYWlscyBpbmNyZWFzZWQgMnhcbi0gUmVzdG9yZXMgd2FsbHBhcGVyIG9uIHdvcmtzcGFjZXMnIHRodW1ibmFpbHMuIE5vIG1vcmUgZ3JheSBiYWNrZ3JvdW5kXG4tIFNob3cgd29ya3NwYWNlcycgdGh1bWJuYWlscyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlXG4tIEZpcmVmb3gncyBQSVAgKHBpY3R1cmUgaW4gcGljdHVyZSkgd2luZG93IGlzIG5vdyBkaXNwbGF5ZWQgb24gdGhlIG92ZXJ2aWV3IHNjcmVlblxuXG5BbGwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZGlzYWJsZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLlxuXG5BVFRFTlRJT04hXG5BZnRlciBleHRlbnNpb24gdXBkYXRlLCBnbm9tZS1zaGVsbCByZXN0YXJ0IGlzIHJlcXVpcmVkOlxuWDExOiBBbHQrRjIgPT4gclxuV2F5bGFuZDogbG9nb3V0ID0+IGxvZ2luIiwKICAibmFtZSI6ICJHbm9tZSA0eCBVSSBJbXByb3ZlbWVudHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ25vbWUtdWktdHVuZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXh4YXB5L2dub21lLXVpLXR1bmUiLAogICJ1dWlkIjogImdub21lLXVpLXR1bmVAaXRzdGltZS50ZWNoIiwKICAidmVyc2lvbiI6IDIxCn0="},
+    "46": {"version": "21", "sha256": "05dk4jh3kagq08jmgqmkmn300mrbnw426z259pgj74r51iivfnf7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1bmVzIGdub21lIDR4IE92ZXJ2aWV3IFVJIHRvIG1ha2UgaXQgbW9yZSB1c2FibGUuXG5cbkNoYW5nZXM6XG4tIFNlYXJjaCB0ZXh0Ym94IGlzIGhpZGRlbiBieSBkZWZhdWx0IGFuZCBzaG93biBvbmx5IHdoZW4gdXNlciBiZWdpbnMgdG8gdHlwZS10by1zZWFyY2hcbi0gU2NhbGUgb2Ygd29ya3NwYWNlcycgdGh1bWJuYWlscyBpbmNyZWFzZWQgMnhcbi0gUmVzdG9yZXMgd2FsbHBhcGVyIG9uIHdvcmtzcGFjZXMnIHRodW1ibmFpbHMuIE5vIG1vcmUgZ3JheSBiYWNrZ3JvdW5kXG4tIFNob3cgd29ya3NwYWNlcycgdGh1bWJuYWlscyBldmVuIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgd29ya3NwYWNlXG4tIEZpcmVmb3gncyBQSVAgKHBpY3R1cmUgaW4gcGljdHVyZSkgd2luZG93IGlzIG5vdyBkaXNwbGF5ZWQgb24gdGhlIG92ZXJ2aWV3IHNjcmVlblxuXG5BbGwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZGlzYWJsZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLlxuXG5BVFRFTlRJT04hXG5BZnRlciBleHRlbnNpb24gdXBkYXRlLCBnbm9tZS1zaGVsbCByZXN0YXJ0IGlzIHJlcXVpcmVkOlxuWDExOiBBbHQrRjIgPT4gclxuV2F5bGFuZDogbG9nb3V0ID0+IGxvZ2luIiwKICAibmFtZSI6ICJHbm9tZSA0eCBVSSBJbXByb3ZlbWVudHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ25vbWUtdWktdHVuZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXh4YXB5L2dub21lLXVpLXR1bmUiLAogICJ1dWlkIjogImdub21lLXVpLXR1bmVAaXRzdGltZS50ZWNoIiwKICAidmVyc2lvbiI6IDIxCn0="}
   }}
 , {"uuid": "monitor-window-switcher@thefungusrocket.com", "name": "Monitor window switcher", "pname": "monitor-window-switcher", "description": "Improves the window switcher on dual (or more) monitor setups", "link": "https://extensions.gnome.org/extension/4164/monitor-window-switcher/", "shell_version_map": {
     "38": {"version": "6", "sha256": "0pazjbi0aikpnvnfxyamqy70xi1xclydyxdkf908c6ybwnc5956z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkltcHJvdmVzIHRoZSB3aW5kb3cgc3dpdGNoZXIgb24gZHVhbCAob3IgbW9yZSkgbW9uaXRvciBzZXR1cHMiLAogICJuYW1lIjogIk1vbml0b3Igd2luZG93IHN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nZWR6ZXBwZWxpbi9tb25pdG9yLXdpbmRvdy1zd2l0Y2hlciIsCiAgInV1aWQiOiAibW9uaXRvci13aW5kb3ctc3dpdGNoZXJAdGhlZnVuZ3Vzcm9ja2V0LmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="},
     "40": {"version": "6", "sha256": "0pazjbi0aikpnvnfxyamqy70xi1xclydyxdkf908c6ybwnc5956z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkltcHJvdmVzIHRoZSB3aW5kb3cgc3dpdGNoZXIgb24gZHVhbCAob3IgbW9yZSkgbW9uaXRvciBzZXR1cHMiLAogICJuYW1lIjogIk1vbml0b3Igd2luZG93IHN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nZWR6ZXBwZWxpbi9tb25pdG9yLXdpbmRvdy1zd2l0Y2hlciIsCiAgInV1aWQiOiAibW9uaXRvci13aW5kb3ctc3dpdGNoZXJAdGhlZnVuZ3Vzcm9ja2V0LmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="},
     "41": {"version": "6", "sha256": "0pazjbi0aikpnvnfxyamqy70xi1xclydyxdkf908c6ybwnc5956z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkltcHJvdmVzIHRoZSB3aW5kb3cgc3dpdGNoZXIgb24gZHVhbCAob3IgbW9yZSkgbW9uaXRvciBzZXR1cHMiLAogICJuYW1lIjogIk1vbml0b3Igd2luZG93IHN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nZWR6ZXBwZWxpbi9tb25pdG9yLXdpbmRvdy1zd2l0Y2hlciIsCiAgInV1aWQiOiAibW9uaXRvci13aW5kb3ctc3dpdGNoZXJAdGhlZnVuZ3Vzcm9ja2V0LmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="}
   }}
-, {"uuid": "custom-hot-corners-extended@G-dH.github.com", "name": "CHC-E (Custom Hot Corners - Extended)", "pname": "custom-hot-corners-extended", "description": "Give a function to any corner or edge of your monitors and enhance your keyboard capabilities\n\nMouse pointer pressure, clicks, and scrolls over the monitor corners/edges, or custom keyboard shortcuts can trigger dozens of built-in actions that help you navigate and control your desktop environment or execute your own shell commands.\n\nA significant portion of available actions includes visual adjustments (contrast, brightness, opacity) and color filters (red, green, desaturation, lightness, color inversions) and also accessibility features.\n\nDo not update extensions from this site, GNOME Shell will do it automatically on the next session start.\n\nPlease report bugs on GitHub page linked below as Extension Homepage.\n\nkeywords: keyboard shortcut, switch windows, overview, app grid, command, brightness, contrast, transparent, opacity, color effect, invert lightness, color tint, color blind filter, simulation, desaturate, night lights, dark theme, volume, mute, magnifier, zoom, screen keyboard, reader, large text, force close, kill -9, show desktop, reorder workspace, window thumbnail, preview, looking glass, custom menu, window, workspace, switcher, hide panel", "link": "https://extensions.gnome.org/extension/4167/custom-hot-corners-extended/", "shell_version_map": {
+, {"uuid": "custom-hot-corners-extended@G-dH.github.com", "name": "Custom Hot Corners - Extended", "pname": "custom-hot-corners-extended", "description": "Give a function to any corner or edge of your monitors and enhance your keyboard capabilities\n\nMouse pointer pressure, clicks, and scrolls over the monitor corners/edges, or custom keyboard shortcuts can trigger dozens of built-in actions that help you navigate and control your desktop environment or execute your own shell commands.\n\nA significant portion of available actions includes visual adjustments (contrast, brightness, opacity) and color filters (red, green, desaturation, lightness, color inversions) and also accessibility features.\n\nDo not update extensions from this site, GNOME Shell will do it automatically on the next session start.\n\nPlease report bugs on GitHub page linked below as Extension Homepage.\n\nkeywords: keyboard shortcut, switch windows, overview, app grid, command, brightness, contrast, transparent, opacity, color effect, invert lightness, color tint, color blind filter, simulation, desaturate, night lights, dark theme, volume, mute, magnifier, zoom, screen keyboard, reader, large text, force close, kill -9, show desktop, reorder workspace, window thumbnail, preview, looking glass, custom menu, window, workspace, switcher, hide panel", "link": "https://extensions.gnome.org/extension/4167/custom-hot-corners-extended/", "shell_version_map": {
     "38": {"version": "37", "sha256": "0jsnvrics52wq50y4bslix8kbpiwbkj56mjqh6mvqxfpk2a4mx94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvY3VzdG9tLWhvdC1jb3JuZXJzIiwKICAidXVpZCI6ICJjdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWRARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM3LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMiIKfQ=="},
     "40": {"version": "37", "sha256": "0jsnvrics52wq50y4bslix8kbpiwbkj56mjqh6mvqxfpk2a4mx94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvY3VzdG9tLWhvdC1jb3JuZXJzIiwKICAidXVpZCI6ICJjdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWRARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM3LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMiIKfQ=="},
     "41": {"version": "37", "sha256": "0jsnvrics52wq50y4bslix8kbpiwbkj56mjqh6mvqxfpk2a4mx94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvY3VzdG9tLWhvdC1jb3JuZXJzIiwKICAidXVpZCI6ICJjdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWRARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM3LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMiIKfQ=="},
     "42": {"version": "37", "sha256": "0jsnvrics52wq50y4bslix8kbpiwbkj56mjqh6mvqxfpk2a4mx94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvY3VzdG9tLWhvdC1jb3JuZXJzIiwKICAidXVpZCI6ICJjdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWRARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM3LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMiIKfQ=="},
     "43": {"version": "37", "sha256": "0jsnvrics52wq50y4bslix8kbpiwbkj56mjqh6mvqxfpk2a4mx94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvY3VzdG9tLWhvdC1jb3JuZXJzIiwKICAidXVpZCI6ICJjdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWRARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM3LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMiIKfQ=="},
     "44": {"version": "37", "sha256": "0jsnvrics52wq50y4bslix8kbpiwbkj56mjqh6mvqxfpk2a4mx94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvY3VzdG9tLWhvdC1jb3JuZXJzIiwKICAidXVpZCI6ICJjdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWRARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDM3LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMiIKfQ=="},
-    "45": {"version": "38", "sha256": "0vrm5h0jjjw7axb73rhgklsv9fkqv7gxhk6jgxnmi4h1zznw4drj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9jdXN0b20taG90LWNvcm5lcnMiLAogICJ1dWlkIjogImN1c3RvbS1ob3QtY29ybmVycy1leHRlbmRlZEBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzgsCiAgInZlcnNpb24tbmFtZSI6ICI0NS4yIgp9"}
+    "45": {"version": "38", "sha256": "0vrm5h0jjjw7axb73rhgklsv9fkqv7gxhk6jgxnmi4h1zznw4drj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9jdXN0b20taG90LWNvcm5lcnMiLAogICJ1dWlkIjogImN1c3RvbS1ob3QtY29ybmVycy1leHRlbmRlZEBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzgsCiAgInZlcnNpb24tbmFtZSI6ICI0NS4yIgp9"},
+    "46": {"version": "40", "sha256": "19f0nqjh3f3863x1sfva62f6q0rgwq9f3d17bacdn7i3583n98qx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdpdmUgYSBmdW5jdGlvbiB0byBhbnkgY29ybmVyIG9yIGVkZ2Ugb2YgeW91ciBtb25pdG9ycyBhbmQgZXhwYW5kIHlvdXIga2V5Ym9hcmQgY2FwYWJpbGl0aWVzLlxuTW91c2UgcG9pbnRlciBwcmVzc3VyZSwgY2xpY2tzIGFuZCBzY3JvbGxzIG92ZXIgdGhlIG1vbml0b3IgY29ybmVycy9lZGdlcyBvciBjdXN0b20ga2V5Ym9hcmQgc2hvcnRjdXRzIGNhbiB0cmlnZ2VyIGFueSBvZiBkb3plbnMgYnVpbHQtaW4gYWN0aW9ucyB0aGF0IGhlbHBzIHlvdSBuYXZpZ2F0ZSBhbmQgY29udHJvbCB5b3VyIGRlc2t0b3AgZW52aXJvbm1lbnQsIG9yIHlvdXIgb3duIHNoZWxsIGNvbW1hbmRzLlxuXG5TaWduaWZpY2FudCBwYXJ0IG9mIGF2YWlsYWJsZSBhY3Rpb25zIGFyZSB2aXN1YWwgYWRqdXN0bWVudHMgKGNvbnRyYXN0LCBicmlnaHRuZXNzLCBvcGFjaXR5KSBhbmQgY29sb3IgZmlsdGVycyAocmVkLCBncmVlbiwgZGVzYXR1cmF0ZSwgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zKSAsIGluY2x1ZGluZyBjb3JyZWN0aW9uIGZpbHRlcnMgZm9yIGNvbG9yYmxpbmQgdXNlcnMgYW5kIGNiIHNpbXVsYXRpb24gZmlsdGVycyBmb3IgZGV2ZWxvcGVycy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY3VzdG9tLWhvdC1jb3JuZXJzLWV4dGVuZGVkIiwKICAibmFtZSI6ICJDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b20taG90LWNvcm5lcnMtZXh0ZW5kZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9jdXN0b20taG90LWNvcm5lcnMiLAogICJ1dWlkIjogImN1c3RvbS1ob3QtY29ybmVycy1leHRlbmRlZEBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNDAsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4wIgp9"}
   }}
 , {"uuid": "hass-gshell@geoph9-on-github", "name": "Home Assistant Extension", "pname": "home-assistant-extension", "description": "A simple gnome shell extension for Home Assistant. Check the README on github for additional help!\n\nMain points:\n- You need to provide the url of your hass, a long live access token obtained from your profile page (on your hass web instance) and the entity ids of the entities you want to have as togglable.\n- In order to add some local temperature/humidity sensor, you may also provide a temperature and/or a humidity entity id (which should match the corresponding ids of your hass instance).", "link": "https://extensions.gnome.org/extension/4170/home-assistant-extension/", "shell_version_map": {
     "38": {"version": "3", "sha256": "04p2hvxyyc1zv441sv0l1dcxbdvzqp46mii3zvw0nhq8jg5pz8rr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGdub21lIHNoZWxsIGV4dGVuc2lvbiBmb3IgSG9tZSBBc3Npc3RhbnQuIENoZWNrIHRoZSBSRUFETUUgb24gZ2l0aHViIGZvciBhZGRpdGlvbmFsIGhlbHAhXG5cbk1haW4gcG9pbnRzOlxuLSBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSB1cmwgb2YgeW91ciBoYXNzLCBhIGxvbmcgbGl2ZSBhY2Nlc3MgdG9rZW4gb2J0YWluZWQgZnJvbSB5b3VyIHByb2ZpbGUgcGFnZSAob24geW91ciBoYXNzIHdlYiBpbnN0YW5jZSkgYW5kIHRoZSBlbnRpdHkgaWRzIG9mIHRoZSBlbnRpdGllcyB5b3Ugd2FudCB0byBoYXZlIGFzIHRvZ2dsYWJsZS5cbi0gSW4gb3JkZXIgdG8gYWRkIHNvbWUgbG9jYWwgdGVtcGVyYXR1cmUvaHVtaWRpdHkgc2Vuc29yLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIHRlbXBlcmF0dXJlIGFuZC9vciBhIGh1bWlkaXR5IGVudGl0eSBpZCAod2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGlkcyBvZiB5b3VyIGhhc3MgaW5zdGFuY2UpLiIsCiAgIm5hbWUiOiAiSG9tZSBBc3Npc3RhbnQgRXh0ZW5zaW9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmhhc3MtZGF0YSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dlb3BoOS9oYXNzLWdzaGVsbC1leHRlbnNpb24iLAogICJ1dWlkIjogImhhc3MtZ3NoZWxsQGdlb3BoOS1vbi1naXRodWIiLAogICJ2ZXJzaW9uIjogMwp9"},
@@ -3255,7 +3395,8 @@
     "42": {"version": "11", "sha256": "0jjjzcqdhprlbxk2aacb339spf3svpqyx9sz38cpw2xvy3hy6cy5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGdub21lIHNoZWxsIGV4dGVuc2lvbiBmb3IgSG9tZSBBc3Npc3RhbnQuIENoZWNrIHRoZSBSRUFETUUgb24gZ2l0aHViIGZvciBhZGRpdGlvbmFsIGhlbHAhXG5cbk1haW4gcG9pbnRzOlxuLSBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSB1cmwgb2YgeW91ciBoYXNzLCBhIGxvbmcgbGl2ZSBhY2Nlc3MgdG9rZW4gb2J0YWluZWQgZnJvbSB5b3VyIHByb2ZpbGUgcGFnZSAob24geW91ciBoYXNzIHdlYiBpbnN0YW5jZSkgYW5kIHRoZSBlbnRpdHkgaWRzIG9mIHRoZSBlbnRpdGllcyB5b3Ugd2FudCB0byBoYXZlIGFzIHRvZ2dsYWJsZS5cbi0gSW4gb3JkZXIgdG8gYWRkIHNvbWUgbG9jYWwgdGVtcGVyYXR1cmUvaHVtaWRpdHkgc2Vuc29yLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIHRlbXBlcmF0dXJlIGFuZC9vciBhIGh1bWlkaXR5IGVudGl0eSBpZCAod2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGlkcyBvZiB5b3VyIGhhc3MgaW5zdGFuY2UpLiIsCiAgImdldHRleHQtZG9tYWluIjogImhhc3MtZ3NoZWxsIiwKICAibmFtZSI6ICJIb21lIEFzc2lzdGFudCBFeHRlbnNpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGFzcy1kYXRhIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ2VvcGg5L2hhc3MtZ3NoZWxsLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiaGFzcy1nc2hlbGxAZ2VvcGg5LW9uLWdpdGh1YiIsCiAgInZlcnNpb24iOiAxMQp9"},
     "43": {"version": "22", "sha256": "1hwq5rc6g611ah7ihx71bvck00z2pyczf0v6lqw6p62r3z4ylnkk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGdub21lIHNoZWxsIGV4dGVuc2lvbiBmb3IgSG9tZSBBc3Npc3RhbnQuIENoZWNrIHRoZSBSRUFETUUgb24gZ2l0aHViIGZvciBhZGRpdGlvbmFsIGhlbHAhXG5cbk1haW4gcG9pbnRzOlxuLSBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSB1cmwgb2YgeW91ciBoYXNzLCBhIGxvbmcgbGl2ZSBhY2Nlc3MgdG9rZW4gb2J0YWluZWQgZnJvbSB5b3VyIHByb2ZpbGUgcGFnZSAob24geW91ciBoYXNzIHdlYiBpbnN0YW5jZSkgYW5kIHRoZSBlbnRpdHkgaWRzIG9mIHRoZSBlbnRpdGllcyB5b3Ugd2FudCB0byBoYXZlIGFzIHRvZ2dsYWJsZS5cbi0gSW4gb3JkZXIgdG8gYWRkIHNvbWUgbG9jYWwgdGVtcGVyYXR1cmUvaHVtaWRpdHkgc2Vuc29yLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIHRlbXBlcmF0dXJlIGFuZC9vciBhIGh1bWlkaXR5IGVudGl0eSBpZCAod2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGlkcyBvZiB5b3VyIGhhc3MgaW5zdGFuY2UpLiIsCiAgImdldHRleHQtZG9tYWluIjogImhhc3MtZ3NoZWxsIiwKICAibmFtZSI6ICJIb21lIEFzc2lzdGFudCBFeHRlbnNpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGFzcy1kYXRhIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nZW9waDkvaGFzcy1nc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJoYXNzLWdzaGVsbEBnZW9waDktb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDIyCn0="},
     "44": {"version": "22", "sha256": "1hwq5rc6g611ah7ihx71bvck00z2pyczf0v6lqw6p62r3z4ylnkk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGdub21lIHNoZWxsIGV4dGVuc2lvbiBmb3IgSG9tZSBBc3Npc3RhbnQuIENoZWNrIHRoZSBSRUFETUUgb24gZ2l0aHViIGZvciBhZGRpdGlvbmFsIGhlbHAhXG5cbk1haW4gcG9pbnRzOlxuLSBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSB1cmwgb2YgeW91ciBoYXNzLCBhIGxvbmcgbGl2ZSBhY2Nlc3MgdG9rZW4gb2J0YWluZWQgZnJvbSB5b3VyIHByb2ZpbGUgcGFnZSAob24geW91ciBoYXNzIHdlYiBpbnN0YW5jZSkgYW5kIHRoZSBlbnRpdHkgaWRzIG9mIHRoZSBlbnRpdGllcyB5b3Ugd2FudCB0byBoYXZlIGFzIHRvZ2dsYWJsZS5cbi0gSW4gb3JkZXIgdG8gYWRkIHNvbWUgbG9jYWwgdGVtcGVyYXR1cmUvaHVtaWRpdHkgc2Vuc29yLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIHRlbXBlcmF0dXJlIGFuZC9vciBhIGh1bWlkaXR5IGVudGl0eSBpZCAod2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGlkcyBvZiB5b3VyIGhhc3MgaW5zdGFuY2UpLiIsCiAgImdldHRleHQtZG9tYWluIjogImhhc3MtZ3NoZWxsIiwKICAibmFtZSI6ICJIb21lIEFzc2lzdGFudCBFeHRlbnNpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGFzcy1kYXRhIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nZW9waDkvaGFzcy1nc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJoYXNzLWdzaGVsbEBnZW9waDktb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDIyCn0="},
-    "45": {"version": "23", "sha256": "128nv8avd8jfmdx6yc1lc413gqv208fp9aa9ljih3lr9b9r3bpf4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGdub21lIHNoZWxsIGV4dGVuc2lvbiBmb3IgSG9tZSBBc3Npc3RhbnQuIENoZWNrIHRoZSBSRUFETUUgb24gZ2l0aHViIGZvciBhZGRpdGlvbmFsIGhlbHAhXG5cbk1haW4gcG9pbnRzOlxuLSBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSB1cmwgb2YgeW91ciBoYXNzLCBhIGxvbmcgbGl2ZSBhY2Nlc3MgdG9rZW4gb2J0YWluZWQgZnJvbSB5b3VyIHByb2ZpbGUgcGFnZSAob24geW91ciBoYXNzIHdlYiBpbnN0YW5jZSkgYW5kIHRoZSBlbnRpdHkgaWRzIG9mIHRoZSBlbnRpdGllcyB5b3Ugd2FudCB0byBoYXZlIGFzIHRvZ2dsYWJsZS5cbi0gSW4gb3JkZXIgdG8gYWRkIHNvbWUgbG9jYWwgdGVtcGVyYXR1cmUvaHVtaWRpdHkgc2Vuc29yLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIHRlbXBlcmF0dXJlIGFuZC9vciBhIGh1bWlkaXR5IGVudGl0eSBpZCAod2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGlkcyBvZiB5b3VyIGhhc3MgaW5zdGFuY2UpLiIsCiAgImdldHRleHQtZG9tYWluIjogImhhc3MtZ3NoZWxsIiwKICAibmFtZSI6ICJIb21lIEFzc2lzdGFudCBFeHRlbnNpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGFzcy1kYXRhIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dlb3BoOS9oYXNzLWdzaGVsbC1leHRlbnNpb24iLAogICJ1dWlkIjogImhhc3MtZ3NoZWxsQGdlb3BoOS1vbi1naXRodWIiLAogICJ2ZXJzaW9uIjogMjMKfQ=="}
+    "45": {"version": "24", "sha256": "0ijsynnmhwrnbv9qcsph1xk5ygqgy9d104zscnzwcw26lk5b82b6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGdub21lIHNoZWxsIGV4dGVuc2lvbiBmb3IgSG9tZSBBc3Npc3RhbnQuIENoZWNrIHRoZSBSRUFETUUgb24gZ2l0aHViIGZvciBhZGRpdGlvbmFsIGhlbHAhXG5cbk1haW4gcG9pbnRzOlxuLSBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSB1cmwgb2YgeW91ciBoYXNzLCBhIGxvbmcgbGl2ZSBhY2Nlc3MgdG9rZW4gb2J0YWluZWQgZnJvbSB5b3VyIHByb2ZpbGUgcGFnZSAob24geW91ciBoYXNzIHdlYiBpbnN0YW5jZSkgYW5kIHRoZSBlbnRpdHkgaWRzIG9mIHRoZSBlbnRpdGllcyB5b3Ugd2FudCB0byBoYXZlIGFzIHRvZ2dsYWJsZS5cbi0gSW4gb3JkZXIgdG8gYWRkIHNvbWUgbG9jYWwgdGVtcGVyYXR1cmUvaHVtaWRpdHkgc2Vuc29yLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIHRlbXBlcmF0dXJlIGFuZC9vciBhIGh1bWlkaXR5IGVudGl0eSBpZCAod2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGlkcyBvZiB5b3VyIGhhc3MgaW5zdGFuY2UpLiIsCiAgImdldHRleHQtZG9tYWluIjogImhhc3MtZ3NoZWxsIiwKICAibmFtZSI6ICJIb21lIEFzc2lzdGFudCBFeHRlbnNpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGFzcy1kYXRhIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nZW9waDkvaGFzcy1nc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJoYXNzLWdzaGVsbEBnZW9waDktb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDI0Cn0="},
+    "46": {"version": "24", "sha256": "0ijsynnmhwrnbv9qcsph1xk5ygqgy9d104zscnzwcw26lk5b82b6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGdub21lIHNoZWxsIGV4dGVuc2lvbiBmb3IgSG9tZSBBc3Npc3RhbnQuIENoZWNrIHRoZSBSRUFETUUgb24gZ2l0aHViIGZvciBhZGRpdGlvbmFsIGhlbHAhXG5cbk1haW4gcG9pbnRzOlxuLSBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSB1cmwgb2YgeW91ciBoYXNzLCBhIGxvbmcgbGl2ZSBhY2Nlc3MgdG9rZW4gb2J0YWluZWQgZnJvbSB5b3VyIHByb2ZpbGUgcGFnZSAob24geW91ciBoYXNzIHdlYiBpbnN0YW5jZSkgYW5kIHRoZSBlbnRpdHkgaWRzIG9mIHRoZSBlbnRpdGllcyB5b3Ugd2FudCB0byBoYXZlIGFzIHRvZ2dsYWJsZS5cbi0gSW4gb3JkZXIgdG8gYWRkIHNvbWUgbG9jYWwgdGVtcGVyYXR1cmUvaHVtaWRpdHkgc2Vuc29yLCB5b3UgbWF5IGFsc28gcHJvdmlkZSBhIHRlbXBlcmF0dXJlIGFuZC9vciBhIGh1bWlkaXR5IGVudGl0eSBpZCAod2hpY2ggc2hvdWxkIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGlkcyBvZiB5b3VyIGhhc3MgaW5zdGFuY2UpLiIsCiAgImdldHRleHQtZG9tYWluIjogImhhc3MtZ3NoZWxsIiwKICAibmFtZSI6ICJIb21lIEFzc2lzdGFudCBFeHRlbnNpb24iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaGFzcy1kYXRhIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nZW9waDkvaGFzcy1nc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJoYXNzLWdzaGVsbEBnZW9waDktb24tZ2l0aHViIiwKICAidmVyc2lvbiI6IDI0Cn0="}
   }}
 , {"uuid": "clear-top-bar@superterran.net", "name": "Clear Top Bar", "pname": "clear-top-bar", "description": "Fully transparent topbar, pairs with the zhanghai transparent top bar extension to make bar opaque when window is maximized", "link": "https://extensions.gnome.org/extension/4173/clear-top-bar/", "shell_version_map": {
     "40": {"version": "6", "sha256": "1xfq9i816p0djfidimgci5xk1mjfrka0xrvxrs44lsqq109xf8pc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IHRyYW5zcGFyZW50IHRvcGJhciwgcGFpcnMgd2l0aCB0aGUgemhhbmdoYWkgdHJhbnNwYXJlbnQgdG9wIGJhciBleHRlbnNpb24gdG8gbWFrZSBiYXIgb3BhcXVlIHdoZW4gd2luZG93IGlzIG1heGltaXplZCIsCiAgIm5hbWUiOiAiQ2xlYXIgVG9wIEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N1cGVydGVycmFuL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jbGVhci10b3AtYmFyIiwKICAidXVpZCI6ICJjbGVhci10b3AtYmFyQHN1cGVydGVycmFuLm5ldCIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -3311,7 +3452,8 @@
     "42": {"version": "31", "sha256": "1c7753fyqqh8x3hnfahpqjwiqil8kirxcfkmm7z39pl7iairs0zs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgbGl2ZSBzY29yZXMgZm9yIHlvdXIgZmF2b3JpdGUgc3BvcnRzIHRlYW1zLiIsCiAgIm5hbWUiOiAiQ29sb3NzZXVtIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvc3NldW0iLAogICJ1dWlkIjogImNvbG9zc2V1bUBzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMxCn0="},
     "43": {"version": "31", "sha256": "1c7753fyqqh8x3hnfahpqjwiqil8kirxcfkmm7z39pl7iairs0zs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgbGl2ZSBzY29yZXMgZm9yIHlvdXIgZmF2b3JpdGUgc3BvcnRzIHRlYW1zLiIsCiAgIm5hbWUiOiAiQ29sb3NzZXVtIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvc3NldW0iLAogICJ1dWlkIjogImNvbG9zc2V1bUBzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMxCn0="},
     "44": {"version": "31", "sha256": "1c7753fyqqh8x3hnfahpqjwiqil8kirxcfkmm7z39pl7iairs0zs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgbGl2ZSBzY29yZXMgZm9yIHlvdXIgZmF2b3JpdGUgc3BvcnRzIHRlYW1zLiIsCiAgIm5hbWUiOiAiQ29sb3NzZXVtIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvc3NldW0iLAogICJ1dWlkIjogImNvbG9zc2V1bUBzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMxCn0="},
-    "45": {"version": "30", "sha256": "0bzj3b6v25s20wizyfgginzb4r8spj8hq6x5kp34paqq10ncjys2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgbGl2ZSBzY29yZXMgZm9yIHlvdXIgZmF2b3JpdGUgc3BvcnRzIHRlYW1zLiIsCiAgIm5hbWUiOiAiQ29sb3NzZXVtIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvc3NldW0iLAogICJ1dWlkIjogImNvbG9zc2V1bUBzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMwCn0="}
+    "45": {"version": "30", "sha256": "0bzj3b6v25s20wizyfgginzb4r8spj8hq6x5kp34paqq10ncjys2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgbGl2ZSBzY29yZXMgZm9yIHlvdXIgZmF2b3JpdGUgc3BvcnRzIHRlYW1zLiIsCiAgIm5hbWUiOiAiQ29sb3NzZXVtIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvc3NldW0iLAogICJ1dWlkIjogImNvbG9zc2V1bUBzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMwCn0="},
+    "46": {"version": "30", "sha256": "0bzj3b6v25s20wizyfgginzb4r8spj8hq6x5kp34paqq10ncjys2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgbGl2ZSBzY29yZXMgZm9yIHlvdXIgZmF2b3JpdGUgc3BvcnRzIHRlYW1zLiIsCiAgIm5hbWUiOiAiQ29sb3NzZXVtIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZXJlbmVibHVlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jb2xvc3NldW0iLAogICJ1dWlkIjogImNvbG9zc2V1bUBzZXJlbmVibHVlIiwKICAidmVyc2lvbiI6IDMwCn0="}
   }}
 , {"uuid": "gnome-plat-workspace@stonegate.me", "name": "Gnome 40 Flat Workspace", "pname": "gnome-40-plat-workspace", "description": "Remove shadow for workspace background in gnome 40.\nSource code https://github.com/stonega/gnome-extension-flat-workspace", "link": "https://extensions.gnome.org/extension/4215/gnome-40-plat-workspace/", "shell_version_map": {
     "40": {"version": "3", "sha256": "0ly2dab9c0l7w1axnqs7xk2szd5jm2ifgniz2snw5mwkr5pw76nb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZSBzaGFkb3cgZm9yIHdvcmtzcGFjZSBiYWNrZ3JvdW5kIGluIGdub21lIDQwLlxuU291cmNlIGNvZGUgaHR0cHM6Ly9naXRodWIuY29tL3N0b25lZ2EvZ25vbWUtZXh0ZW5zaW9uLWZsYXQtd29ya3NwYWNlIiwKICAibmFtZSI6ICJHbm9tZSA0MCBGbGF0IFdvcmtzcGFjZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5nbm9tZS1wbGF0LXdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiZ25vbWUtcGxhdC13b3Jrc3BhY2VAc3RvbmVnYXRlLm1lIiwKICAidmVyc2lvbiI6IDMKfQ=="}
@@ -3322,7 +3464,8 @@
     "42": {"version": "17", "sha256": "1k1yr4i438afqrm9m94a7y6qnxf38jcbjiq2m15v82ynrcknlzwv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGhvdCBlZGdlIHRoYXQgYWN0aXZhdGVzIHRoZSBvdmVydmlldyB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoaXMgbWluaW1pemVzIHRoZSBwb2ludGVyIHRyYXZlbCByZXF1aXJlZCB0byBhY2Nlc3MgdGhlIGRhc2ggd2hlbiB1c2luZyB0aGUgbmV3IEdOT01FIFNoZWxsIDQwIG92ZXJ2aWV3IGxheW91dC5cblxuTm93IHdpdGggcHJlZmVyZW5jZSBkaWFsb2chXG5cbllvdSBjYW4gZmluZCBtb3JlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UvYmxvYi9tYWluL1JFQURNRS5tZCBhbmQgcmVwb3J0IGlzc3VlcyBhdCBodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZS9pc3N1ZXMgLiIsCiAgIm5hbWUiOiAiSG90IEVkZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UiLAogICJ1dWlkIjogImhvdGVkZ2VAam9uYXRoYW4uamRvZGEuY2EiLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "43": {"version": "17", "sha256": "1k1yr4i438afqrm9m94a7y6qnxf38jcbjiq2m15v82ynrcknlzwv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGhvdCBlZGdlIHRoYXQgYWN0aXZhdGVzIHRoZSBvdmVydmlldyB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoaXMgbWluaW1pemVzIHRoZSBwb2ludGVyIHRyYXZlbCByZXF1aXJlZCB0byBhY2Nlc3MgdGhlIGRhc2ggd2hlbiB1c2luZyB0aGUgbmV3IEdOT01FIFNoZWxsIDQwIG92ZXJ2aWV3IGxheW91dC5cblxuTm93IHdpdGggcHJlZmVyZW5jZSBkaWFsb2chXG5cbllvdSBjYW4gZmluZCBtb3JlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UvYmxvYi9tYWluL1JFQURNRS5tZCBhbmQgcmVwb3J0IGlzc3VlcyBhdCBodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZS9pc3N1ZXMgLiIsCiAgIm5hbWUiOiAiSG90IEVkZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UiLAogICJ1dWlkIjogImhvdGVkZ2VAam9uYXRoYW4uamRvZGEuY2EiLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "44": {"version": "17", "sha256": "1k1yr4i438afqrm9m94a7y6qnxf38jcbjiq2m15v82ynrcknlzwv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGhvdCBlZGdlIHRoYXQgYWN0aXZhdGVzIHRoZSBvdmVydmlldyB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoaXMgbWluaW1pemVzIHRoZSBwb2ludGVyIHRyYXZlbCByZXF1aXJlZCB0byBhY2Nlc3MgdGhlIGRhc2ggd2hlbiB1c2luZyB0aGUgbmV3IEdOT01FIFNoZWxsIDQwIG92ZXJ2aWV3IGxheW91dC5cblxuTm93IHdpdGggcHJlZmVyZW5jZSBkaWFsb2chXG5cbllvdSBjYW4gZmluZCBtb3JlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UvYmxvYi9tYWluL1JFQURNRS5tZCBhbmQgcmVwb3J0IGlzc3VlcyBhdCBodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZS9pc3N1ZXMgLiIsCiAgIm5hbWUiOiAiSG90IEVkZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UiLAogICJ1dWlkIjogImhvdGVkZ2VAam9uYXRoYW4uamRvZGEuY2EiLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
-    "45": {"version": "22", "sha256": "12fyiasi8ajybsg8agapgm58xkgz5x7k1q8jyj9m7n97ns966gny", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGhvdCBlZGdlIHRoYXQgYWN0aXZhdGVzIHRoZSBvdmVydmlldyB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoaXMgbWluaW1pemVzIHRoZSBwb2ludGVyIHRyYXZlbCByZXF1aXJlZCB0byBhY2Nlc3MgdGhlIGRhc2ggd2hlbiB1c2luZyB0aGUgbmV3IEdOT01FIFNoZWxsIDQwIG92ZXJ2aWV3IGxheW91dC5cblxuTm93IHdpdGggcHJlZmVyZW5jZSBkaWFsb2chXG5cbllvdSBjYW4gZmluZCBtb3JlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UvYmxvYi9tYWluL1JFQURNRS5tZCBhbmQgcmVwb3J0IGlzc3VlcyBhdCBodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZS9pc3N1ZXMgLiIsCiAgIm5hbWUiOiAiSG90IEVkZ2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaG90ZWRnZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qZG9kYS9ob3RlZGdlIiwKICAidXVpZCI6ICJob3RlZGdlQGpvbmF0aGFuLmpkb2RhLmNhIiwKICAidmVyc2lvbiI6IDIyCn0="}
+    "45": {"version": "23", "sha256": "0s2f2a8slwl8w9387w1hq19fj19mjbb752nrwylfcg947afsv96g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGhvdCBlZGdlIHRoYXQgYWN0aXZhdGVzIHRoZSBvdmVydmlldyB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoaXMgbWluaW1pemVzIHRoZSBwb2ludGVyIHRyYXZlbCByZXF1aXJlZCB0byBhY2Nlc3MgdGhlIGRhc2ggd2hlbiB1c2luZyB0aGUgbmV3IEdOT01FIFNoZWxsIDQwIG92ZXJ2aWV3IGxheW91dC5cblxuTm93IHdpdGggcHJlZmVyZW5jZSBkaWFsb2chXG5cbllvdSBjYW4gZmluZCBtb3JlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UvYmxvYi9tYWluL1JFQURNRS5tZCBhbmQgcmVwb3J0IGlzc3VlcyBhdCBodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZS9pc3N1ZXMgLiIsCiAgIm5hbWUiOiAiSG90IEVkZ2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaG90ZWRnZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZSIsCiAgInV1aWQiOiAiaG90ZWRnZUBqb25hdGhhbi5qZG9kYS5jYSIsCiAgInZlcnNpb24iOiAyMwp9"},
+    "46": {"version": "23", "sha256": "0s2f2a8slwl8w9387w1hq19fj19mjbb752nrwylfcg947afsv96g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGhvdCBlZGdlIHRoYXQgYWN0aXZhdGVzIHRoZSBvdmVydmlldyB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIFRoaXMgbWluaW1pemVzIHRoZSBwb2ludGVyIHRyYXZlbCByZXF1aXJlZCB0byBhY2Nlc3MgdGhlIGRhc2ggd2hlbiB1c2luZyB0aGUgbmV3IEdOT01FIFNoZWxsIDQwIG92ZXJ2aWV3IGxheW91dC5cblxuTm93IHdpdGggcHJlZmVyZW5jZSBkaWFsb2chXG5cbllvdSBjYW4gZmluZCBtb3JlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2pkb2RhL2hvdGVkZ2UvYmxvYi9tYWluL1JFQURNRS5tZCBhbmQgcmVwb3J0IGlzc3VlcyBhdCBodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZS9pc3N1ZXMgLiIsCiAgIm5hbWUiOiAiSG90IEVkZ2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaG90ZWRnZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamRvZGEvaG90ZWRnZSIsCiAgInV1aWQiOiAiaG90ZWRnZUBqb25hdGhhbi5qZG9kYS5jYSIsCiAgInZlcnNpb24iOiAyMwp9"}
   }}
 , {"uuid": "gnome-citeurl-search-provider@raindrum.github.io", "name": "Legal Citation Search", "pname": "gnome-citeurl-search-provider", "description": "This extension lets you look up U.S. state and federal laws and court cases by typing citations (like \"42 USC 1983\" or \"U.S. Constitution Art. I, Sec. 3\") into the search bar.\nBy default, the search supports the U.S. Code and federal constitution, as well as nearly all codified state laws and constitutions, among other sources of law. You can also add more types of citation by following the instructions on the GitHub page.", "link": "https://extensions.gnome.org/extension/4225/gnome-citeurl-search-provider/", "shell_version_map": {
     "38": {"version": "6", "sha256": "024d98642smciv5n2vc4l2f8rglfrv180paj1g2rrq9k4pvg6yym", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGxldHMgeW91IGxvb2sgdXAgVS5TLiBzdGF0ZSBhbmQgZmVkZXJhbCBsYXdzIGFuZCBjb3VydCBjYXNlcyBieSB0eXBpbmcgY2l0YXRpb25zIChsaWtlIFwiNDIgVVNDIDE5ODNcIiBvciBcIlUuUy4gQ29uc3RpdHV0aW9uIEFydC4gSSwgU2VjLiAzXCIpIGludG8gdGhlIHNlYXJjaCBiYXIuXG5CeSBkZWZhdWx0LCB0aGUgc2VhcmNoIHN1cHBvcnRzIHRoZSBVLlMuIENvZGUgYW5kIGZlZGVyYWwgY29uc3RpdHV0aW9uLCBhcyB3ZWxsIGFzIG5lYXJseSBhbGwgY29kaWZpZWQgc3RhdGUgbGF3cyBhbmQgY29uc3RpdHV0aW9ucywgYW1vbmcgb3RoZXIgc291cmNlcyBvZiBsYXcuIFlvdSBjYW4gYWxzbyBhZGQgbW9yZSB0eXBlcyBvZiBjaXRhdGlvbiBieSBmb2xsb3dpbmcgdGhlIGluc3RydWN0aW9ucyBvbiB0aGUgR2l0SHViIHBhZ2UuIiwKICAibmFtZSI6ICJMZWdhbCBDaXRhdGlvbiBTZWFyY2giLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY2l0ZXVybC1zZWFyY2gtcHJvdmlkZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcmFpbmRydW0vZ25vbWUtY2l0ZXVybC1zZWFyY2gtcHJvdmlkZXIiLAogICJ1dWlkIjogImdub21lLWNpdGV1cmwtc2VhcmNoLXByb3ZpZGVyQHJhaW5kcnVtLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -3335,7 +3478,8 @@
     "42": {"version": "14", "sha256": "0i6qcfiv2q80161mm0fyb8xmfsc6pcjwsy1jagnxbzihqr6xpd2j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNob3dzIHRoZSBiYXR0ZXJ5IG9mIHRoZSB3aXJlbGVzcyBrZXlib2FyZHMsIG1pY2UsIGFuZCBnYW1lIGNvbnRyb2xsZXJzIGluIHBlcmNlbnRhZ2VzIGFuZCBjb2xvcnMuIE11bHRpcGxlIGRldmljZXMgYXJlIHN1cHBvcnRlZC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3aXJlbGVzcy1oaWQiLAogICJuYW1lIjogIldpcmVsZXNzIEhJRCIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2lyZWxlc3MtaGlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92Y2hsdW0vd2lyZWxlc3MtaGlkIiwKICAidXVpZCI6ICJ3aXJlbGVzcy1oaWRAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "43": {"version": "14", "sha256": "0i6qcfiv2q80161mm0fyb8xmfsc6pcjwsy1jagnxbzihqr6xpd2j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNob3dzIHRoZSBiYXR0ZXJ5IG9mIHRoZSB3aXJlbGVzcyBrZXlib2FyZHMsIG1pY2UsIGFuZCBnYW1lIGNvbnRyb2xsZXJzIGluIHBlcmNlbnRhZ2VzIGFuZCBjb2xvcnMuIE11bHRpcGxlIGRldmljZXMgYXJlIHN1cHBvcnRlZC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3aXJlbGVzcy1oaWQiLAogICJuYW1lIjogIldpcmVsZXNzIEhJRCIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2lyZWxlc3MtaGlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92Y2hsdW0vd2lyZWxlc3MtaGlkIiwKICAidXVpZCI6ICJ3aXJlbGVzcy1oaWRAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "44": {"version": "14", "sha256": "0i6qcfiv2q80161mm0fyb8xmfsc6pcjwsy1jagnxbzihqr6xpd2j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNob3dzIHRoZSBiYXR0ZXJ5IG9mIHRoZSB3aXJlbGVzcyBrZXlib2FyZHMsIG1pY2UsIGFuZCBnYW1lIGNvbnRyb2xsZXJzIGluIHBlcmNlbnRhZ2VzIGFuZCBjb2xvcnMuIE11bHRpcGxlIGRldmljZXMgYXJlIHN1cHBvcnRlZC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3aXJlbGVzcy1oaWQiLAogICJuYW1lIjogIldpcmVsZXNzIEhJRCIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2lyZWxlc3MtaGlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92Y2hsdW0vd2lyZWxlc3MtaGlkIiwKICAidXVpZCI6ICJ3aXJlbGVzcy1oaWRAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="},
-    "45": {"version": "17", "sha256": "07i480z5srfgzbn13vg4adxgd1k5rk2dnnd7fkpk8s8m779nzqvd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNob3dzIHRoZSBiYXR0ZXJ5IG9mIHRoZSB3aXJlbGVzcyBrZXlib2FyZHMsIG1pY2UsIGFuZCBnYW1lIGNvbnRyb2xsZXJzIGluIHBlcmNlbnRhZ2VzIGFuZCBjb2xvcnMuIE11bHRpcGxlIGRldmljZXMgYXJlIHN1cHBvcnRlZC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3aXJlbGVzcy1oaWQiLAogICJuYW1lIjogIldpcmVsZXNzIEhJRCIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2lyZWxlc3MtaGlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92Y2hsdW0vd2lyZWxlc3MtaGlkIiwKICAidXVpZCI6ICJ3aXJlbGVzcy1oaWRAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="}
+    "45": {"version": "17", "sha256": "07i480z5srfgzbn13vg4adxgd1k5rk2dnnd7fkpk8s8m779nzqvd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNob3dzIHRoZSBiYXR0ZXJ5IG9mIHRoZSB3aXJlbGVzcyBrZXlib2FyZHMsIG1pY2UsIGFuZCBnYW1lIGNvbnRyb2xsZXJzIGluIHBlcmNlbnRhZ2VzIGFuZCBjb2xvcnMuIE11bHRpcGxlIGRldmljZXMgYXJlIHN1cHBvcnRlZC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3aXJlbGVzcy1oaWQiLAogICJuYW1lIjogIldpcmVsZXNzIEhJRCIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2lyZWxlc3MtaGlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92Y2hsdW0vd2lyZWxlc3MtaGlkIiwKICAidXVpZCI6ICJ3aXJlbGVzcy1oaWRAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
+    "46": {"version": "17", "sha256": "07i480z5srfgzbn13vg4adxgd1k5rk2dnnd7fkpk8s8m779nzqvd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHNob3dzIHRoZSBiYXR0ZXJ5IG9mIHRoZSB3aXJlbGVzcyBrZXlib2FyZHMsIG1pY2UsIGFuZCBnYW1lIGNvbnRyb2xsZXJzIGluIHBlcmNlbnRhZ2VzIGFuZCBjb2xvcnMuIE11bHRpcGxlIGRldmljZXMgYXJlIHN1cHBvcnRlZC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3aXJlbGVzcy1oaWQiLAogICJuYW1lIjogIldpcmVsZXNzIEhJRCIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJjaGx1bXNreXZhY2xhdkBnbWFpbC5jb20iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2lyZWxlc3MtaGlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92Y2hsdW0vd2lyZWxlc3MtaGlkIiwKICAidXVpZCI6ICJ3aXJlbGVzcy1oaWRAY2hsdW1za3l2YWNsYXYuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="}
   }}
 , {"uuid": "better-osd@hllvc", "name": "Better OSD - Gnome 40", "pname": "better-osd-gnome-40", "description": "Customize your OSD popups. Move, resize, set delay and transparency!", "link": "https://extensions.gnome.org/extension/4231/better-osd-gnome-40/", "shell_version_map": {
     "40": {"version": "6", "sha256": "0945xh7a607x3f9796gi3l5zylqa8gj1pnw44hcaak5sc6zpahgv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIE9TRCBwb3B1cHMuIE1vdmUsIHJlc2l6ZSwgc2V0IGRlbGF5IGFuZCB0cmFuc3BhcmVuY3khIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYmV0dGVyLW9zZCIsCiAgIm5hbWUiOiAiQmV0dGVyIE9TRCAtIEdub21lIDQwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQxLjEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9obGx2Yy9iZXR0ZXItb3NkIiwKICAidXVpZCI6ICJiZXR0ZXItb3NkQGhsbHZjIiwKICAidmVyc2lvbiI6IDYKfQ=="},
@@ -3361,10 +3505,6 @@
     "38": {"version": "8", "sha256": "09j5f8p23m4v2bdad582497r194z05x4izc2wywp9nhv1nldcs3n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImVjbGlwc2UgY2xpcGJvYXJkIGludGVyZmFjZSB3aXRoIGl0ZW0gZW5jcnlwdGlvblxuXG5BZGRlZCBlbmNyeXB0aW9uIG9mIGNsaXBib2FyZCBpdGVtcy4gRW5jcnlwdGVkIGl0ZW1zIGNhbiBiZVxuc2F2ZWQgdG8gZGlzayBpbiBhIGZvbGRlciBvZiB5b3VyIGNob2ljZS4gVGhlc2UgaXRlbXMgYXJlIHBlcnNpc3RlZFxuYmV0d2VlbiBzZXNzaW9ucyB1c2luZyBvcGVuc3NsIHRvIGVuY3J5cHQgdGhlIGNvbnRlbnQuXG5cbkVjbGlwc2UgdXNlcyBkYnVzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGdwYXN0ZSBkYWVtb24uXG5cblRoZSBmb2xsb3dpbmcgdXRpbGl0aWVzIGFyZSByZXF1aXJlZCxcblxuIyBmb3IgZXhhbXBsZSwgb24gZmVkb3JhIChhZGQgZ3Bhc3RlLXVpIGZvciBncGFzdGUgc2V0dGluZ3MgZ3VpKVxuJCBzdWRvIGRuZiBpbnN0YWxsIGdwYXN0ZSBvcGVuc3NsXG4jIHVidW50dVxuJCBzdWRvIGFwdCBpbnN0YWxsIGdwYXN0ZSBvcGVuc3NsXG5cbk5vdyB3b3JrcyB3aXRoIEdwYXN0ZSAxIGFuZCBHcGFzdGUgMiBvbiBHUyAzLjM2LCAzLjM4IGFuZCA0MFxuXG5JZiB1cGRhdGluZyB0aGUgZXh0ZW5zaW9uIHJlcG9ydHMgYW4gRVJST1IgaXQgc2hvdWxkIHdvcmsgYWZ0ZXIgdGhlIG5leHQgcmVib290IG9yIGlmIHlvdSBsb2dvdXQgYW5kIGxvZ2luIGFnYWluLiBJZiB5b3UncmUgbm90IHJ1bm5pbmcgb24gV2F5bGFuZCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCByZXN0YXJ0IHRoZSBzaGVsbCAoQWx0K0YyLHIpLlxuXG5QbGVhc2UgcmVwb3J0IGlzc3VlcyBvbiBnaXRodWIuXG4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlY2xpcHNlLWJsYWNramFja3NoZWxsYWMiLAogICJuYW1lIjogImVjbGlwc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZWNsaXBzZS1ibGFja2phY2tzaGVsbGFjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JsYWNramFja3NoZWxsYWMvZWNsaXBzZSIsCiAgInV1aWQiOiAiZWNsaXBzZUBibGFja2phY2tzaGVsbGFjLmNhIiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "40": {"version": "8", "sha256": "09j5f8p23m4v2bdad582497r194z05x4izc2wywp9nhv1nldcs3n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImVjbGlwc2UgY2xpcGJvYXJkIGludGVyZmFjZSB3aXRoIGl0ZW0gZW5jcnlwdGlvblxuXG5BZGRlZCBlbmNyeXB0aW9uIG9mIGNsaXBib2FyZCBpdGVtcy4gRW5jcnlwdGVkIGl0ZW1zIGNhbiBiZVxuc2F2ZWQgdG8gZGlzayBpbiBhIGZvbGRlciBvZiB5b3VyIGNob2ljZS4gVGhlc2UgaXRlbXMgYXJlIHBlcnNpc3RlZFxuYmV0d2VlbiBzZXNzaW9ucyB1c2luZyBvcGVuc3NsIHRvIGVuY3J5cHQgdGhlIGNvbnRlbnQuXG5cbkVjbGlwc2UgdXNlcyBkYnVzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGdwYXN0ZSBkYWVtb24uXG5cblRoZSBmb2xsb3dpbmcgdXRpbGl0aWVzIGFyZSByZXF1aXJlZCxcblxuIyBmb3IgZXhhbXBsZSwgb24gZmVkb3JhIChhZGQgZ3Bhc3RlLXVpIGZvciBncGFzdGUgc2V0dGluZ3MgZ3VpKVxuJCBzdWRvIGRuZiBpbnN0YWxsIGdwYXN0ZSBvcGVuc3NsXG4jIHVidW50dVxuJCBzdWRvIGFwdCBpbnN0YWxsIGdwYXN0ZSBvcGVuc3NsXG5cbk5vdyB3b3JrcyB3aXRoIEdwYXN0ZSAxIGFuZCBHcGFzdGUgMiBvbiBHUyAzLjM2LCAzLjM4IGFuZCA0MFxuXG5JZiB1cGRhdGluZyB0aGUgZXh0ZW5zaW9uIHJlcG9ydHMgYW4gRVJST1IgaXQgc2hvdWxkIHdvcmsgYWZ0ZXIgdGhlIG5leHQgcmVib290IG9yIGlmIHlvdSBsb2dvdXQgYW5kIGxvZ2luIGFnYWluLiBJZiB5b3UncmUgbm90IHJ1bm5pbmcgb24gV2F5bGFuZCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCByZXN0YXJ0IHRoZSBzaGVsbCAoQWx0K0YyLHIpLlxuXG5QbGVhc2UgcmVwb3J0IGlzc3VlcyBvbiBnaXRodWIuXG4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlY2xpcHNlLWJsYWNramFja3NoZWxsYWMiLAogICJuYW1lIjogImVjbGlwc2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZWNsaXBzZS1ibGFja2phY2tzaGVsbGFjIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JsYWNramFja3NoZWxsYWMvZWNsaXBzZSIsCiAgInV1aWQiOiAiZWNsaXBzZUBibGFja2phY2tzaGVsbGFjLmNhIiwKICAidmVyc2lvbiI6IDgKfQ=="}
   }}
-, {"uuid": "audio-switcher@albertomosconi", "name": "Audio Switcher 40", "pname": "audio-switcher-40", "description": "Adds a switch for choosing audio input/output to the system menu in GNOME 40. (Makes InputSlider always visible)", "link": "https://extensions.gnome.org/extension/4248/audio-switcher-40/", "shell_version_map": {
-    "38": {"version": "4", "sha256": "0mvc4f6i7vsqijq8l4adcixdyycfxmd7kvw13d5h0vx4hg6vam1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBzd2l0Y2ggZm9yIGNob29zaW5nIGF1ZGlvIGlucHV0L291dHB1dCB0byB0aGUgc3lzdGVtIG1lbnUgaW4gR05PTUUgNDAuIChNYWtlcyBJbnB1dFNsaWRlciBhbHdheXMgdmlzaWJsZSkiLAogICJuYW1lIjogIkF1ZGlvIFN3aXRjaGVyIDQwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MC4xIiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vYWxiZXJ0b21vc2NvbmkvYXVkaW8tc3dpdGNoZXIiLAogICJ1dWlkIjogImF1ZGlvLXN3aXRjaGVyQGFsYmVydG9tb3Njb25pIiwKICAidmVyc2lvbiI6IDQKfQ=="},
-    "40": {"version": "4", "sha256": "0mvc4f6i7vsqijq8l4adcixdyycfxmd7kvw13d5h0vx4hg6vam1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBzd2l0Y2ggZm9yIGNob29zaW5nIGF1ZGlvIGlucHV0L291dHB1dCB0byB0aGUgc3lzdGVtIG1lbnUgaW4gR05PTUUgNDAuIChNYWtlcyBJbnB1dFNsaWRlciBhbHdheXMgdmlzaWJsZSkiLAogICJuYW1lIjogIkF1ZGlvIFN3aXRjaGVyIDQwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MC4xIiwKICAgICI0MCIKICBdLAogICJ1cmwiOiAiaHR0cDovL2dpdGh1Yi5jb20vYWxiZXJ0b21vc2NvbmkvYXVkaW8tc3dpdGNoZXIiLAogICJ1dWlkIjogImF1ZGlvLXN3aXRjaGVyQGFsYmVydG9tb3Njb25pIiwKICAidmVyc2lvbiI6IDQKfQ=="}
-  }}
 , {"uuid": "shell-configurator@adeswanta", "name": "Shell Configurator", "pname": "shell-configurator", "description": "Configure and customize GNOME Shell with advanced settings.", "link": "https://extensions.gnome.org/extension/4254/shell-configurator/", "shell_version_map": {
     "38": {"version": "5", "sha256": "08nsdp92q8xb5p5bbqws7727vxvifzyv015igz2z04z2mqr0xc9f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvZGVuYW1lIjogIldoaXRlc21va2UiLAogICJkZXNjcmlwdGlvbiI6ICJDb25maWd1cmUgYW5kIGN1c3RvbWl6ZSBHTk9NRSBTaGVsbCB3aXRoIGFkdmFuY2VkIHNldHRpbmdzLiIsCiAgImdldHRleHQtZG9tYWluIjogInNoZWxsLWNvbmZpZ3VyYXRvciIsCiAgImluc3RhbGwtdHlwZSI6ICJ1c2VyIiwKICAibmFtZSI6ICJTaGVsbCBDb25maWd1cmF0b3IiLAogICJyZWxlYXNlLXN0YXRlIjogInN0YWJsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2FkZXN3YW50YVRlY2hzL3NoZWxsLWNvbmZpZ3VyYXRvciIsCiAgInV1aWQiOiAic2hlbGwtY29uZmlndXJhdG9yQGFkZXN3YW50YSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "40": {"version": "5", "sha256": "08nsdp92q8xb5p5bbqws7727vxvifzyv015igz2z04z2mqr0xc9f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNvZGVuYW1lIjogIldoaXRlc21va2UiLAogICJkZXNjcmlwdGlvbiI6ICJDb25maWd1cmUgYW5kIGN1c3RvbWl6ZSBHTk9NRSBTaGVsbCB3aXRoIGFkdmFuY2VkIHNldHRpbmdzLiIsCiAgImdldHRleHQtZG9tYWluIjogInNoZWxsLWNvbmZpZ3VyYXRvciIsCiAgImluc3RhbGwtdHlwZSI6ICJ1c2VyIiwKICAibmFtZSI6ICJTaGVsbCBDb25maWd1cmF0b3IiLAogICJyZWxlYXNlLXN0YXRlIjogInN0YWJsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2FkZXN3YW50YVRlY2hzL3NoZWxsLWNvbmZpZ3VyYXRvciIsCiAgInV1aWQiOiAic2hlbGwtY29uZmlndXJhdG9yQGFkZXN3YW50YSIsCiAgInZlcnNpb24iOiA1Cn0="},
@@ -3394,14 +3534,15 @@
     "42": {"version": "5", "sha256": "162c77hgqh74vgk6lqlcd1p6ab943lssd7y966zdvn2i5msjgvri", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1pbmltaXplL3VubWluaW1pemUgYWxsIG9wZW4gd2luZG93cyB3aXRoIGEgc2luZ2xlIGNsaWNrLlxuXG5Gb3JrZWQgZnJvbSBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTk0L3Nob3ctZGVza3RvcC1idXR0b24vXG5cbkZlYXR1cmVzOlxuLSBXaW5kb3dzLWxpa2UgYmVoYXZpb3Jcbi0gQ2FuIGJlIHBsYWNlZCBhdCB0aGUgZW5kIG9mIHBhbmVsXG4tIEhvdGtleSBzdXBwb3J0IChjYW4gYmUgYWN0aXZhdGVkIGluIHNldHRpbmdzKSIsCiAgImV4dGVuc2lvbi1pZCI6ICJzaG93LWRlc2t0b3AtYXBwbGV0IiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2hvdy1kZXNrdG9wLWFwcGxldCIsCiAgImxvY2FsZWRpciI6ICIvdXNyL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiU2hvdyBEZXNrdG9wIEFwcGxldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zaG93LWRlc2t0b3AtYXBwbGV0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZhbGVudC1pbi9TaG93LURlc2t0b3AtQXBwbGV0IiwKICAidXVpZCI6ICJzaG93LWRlc2t0b3AtYXBwbGV0QHZhbGVudC1pbiIsCiAgInZlcnNpb24iOiA1Cn0="},
     "43": {"version": "5", "sha256": "162c77hgqh74vgk6lqlcd1p6ab943lssd7y966zdvn2i5msjgvri", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1pbmltaXplL3VubWluaW1pemUgYWxsIG9wZW4gd2luZG93cyB3aXRoIGEgc2luZ2xlIGNsaWNrLlxuXG5Gb3JrZWQgZnJvbSBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMTk0L3Nob3ctZGVza3RvcC1idXR0b24vXG5cbkZlYXR1cmVzOlxuLSBXaW5kb3dzLWxpa2UgYmVoYXZpb3Jcbi0gQ2FuIGJlIHBsYWNlZCBhdCB0aGUgZW5kIG9mIHBhbmVsXG4tIEhvdGtleSBzdXBwb3J0IChjYW4gYmUgYWN0aXZhdGVkIGluIHNldHRpbmdzKSIsCiAgImV4dGVuc2lvbi1pZCI6ICJzaG93LWRlc2t0b3AtYXBwbGV0IiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2hvdy1kZXNrdG9wLWFwcGxldCIsCiAgImxvY2FsZWRpciI6ICIvdXNyL3NoYXJlL2xvY2FsZSIsCiAgIm5hbWUiOiAiU2hvdyBEZXNrdG9wIEFwcGxldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zaG93LWRlc2t0b3AtYXBwbGV0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ZhbGVudC1pbi9TaG93LURlc2t0b3AtQXBwbGV0IiwKICAidXVpZCI6ICJzaG93LWRlc2t0b3AtYXBwbGV0QHZhbGVudC1pbiIsCiAgInZlcnNpb24iOiA1Cn0="}
   }}
-, {"uuid": "AlphabeticalAppGrid@stuarthayhurst", "name": "Alphabetical App Grid", "pname": "alphabetical-app-grid", "description": "Restore the alphabetical ordering of the app grid", "link": "https://extensions.gnome.org/extension/4269/alphabetical-app-grid/", "shell_version_map": {
+, {"uuid": "AlphabeticalAppGrid@stuarthayhurst", "name": "Alphabetical App Grid", "pname": "alphabetical-app-grid", "description": "Alphabetically order the app grid and folders", "link": "https://extensions.gnome.org/extension/4269/alphabetical-app-grid/", "shell_version_map": {
     "38": {"version": "32", "sha256": "1dvpl7va3gcv323i7l12jidbfmy93in1d1vr5aj6568m0gh7lxk5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlYnVnIjogZmFsc2UsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RvcmUgdGhlIGFscGhhYmV0aWNhbCBvcmRlcmluZyBvZiB0aGUgYXBwIGdyaWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInN0dWFydGhheWh1cnN0IiwKICAgICJwYXlwYWwiOiAic3R1YXJ0YWhheWh1cnN0IgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkFscGhhYmV0aWNhbEFwcEdyaWRAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIkFscGhhYmV0aWNhbCBBcHAgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hbHBoYWJldGljYWwtYXBwLWdyaWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L2FscGhhYmV0aWNhbC1ncmlkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAzMgp9"},
     "40": {"version": "32", "sha256": "1dvpl7va3gcv323i7l12jidbfmy93in1d1vr5aj6568m0gh7lxk5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlYnVnIjogZmFsc2UsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RvcmUgdGhlIGFscGhhYmV0aWNhbCBvcmRlcmluZyBvZiB0aGUgYXBwIGdyaWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInN0dWFydGhheWh1cnN0IiwKICAgICJwYXlwYWwiOiAic3R1YXJ0YWhheWh1cnN0IgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkFscGhhYmV0aWNhbEFwcEdyaWRAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIkFscGhhYmV0aWNhbCBBcHAgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hbHBoYWJldGljYWwtYXBwLWdyaWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L2FscGhhYmV0aWNhbC1ncmlkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAzMgp9"},
     "41": {"version": "32", "sha256": "1dvpl7va3gcv323i7l12jidbfmy93in1d1vr5aj6568m0gh7lxk5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlYnVnIjogZmFsc2UsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RvcmUgdGhlIGFscGhhYmV0aWNhbCBvcmRlcmluZyBvZiB0aGUgYXBwIGdyaWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInN0dWFydGhheWh1cnN0IiwKICAgICJwYXlwYWwiOiAic3R1YXJ0YWhheWh1cnN0IgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkFscGhhYmV0aWNhbEFwcEdyaWRAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIkFscGhhYmV0aWNhbCBBcHAgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hbHBoYWJldGljYWwtYXBwLWdyaWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L2FscGhhYmV0aWNhbC1ncmlkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAzMgp9"},
     "42": {"version": "32", "sha256": "1dvpl7va3gcv323i7l12jidbfmy93in1d1vr5aj6568m0gh7lxk5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlYnVnIjogZmFsc2UsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RvcmUgdGhlIGFscGhhYmV0aWNhbCBvcmRlcmluZyBvZiB0aGUgYXBwIGdyaWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInN0dWFydGhheWh1cnN0IiwKICAgICJwYXlwYWwiOiAic3R1YXJ0YWhheWh1cnN0IgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkFscGhhYmV0aWNhbEFwcEdyaWRAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIkFscGhhYmV0aWNhbCBBcHAgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hbHBoYWJldGljYWwtYXBwLWdyaWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L2FscGhhYmV0aWNhbC1ncmlkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAzMgp9"},
     "43": {"version": "32", "sha256": "1dvpl7va3gcv323i7l12jidbfmy93in1d1vr5aj6568m0gh7lxk5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlYnVnIjogZmFsc2UsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RvcmUgdGhlIGFscGhhYmV0aWNhbCBvcmRlcmluZyBvZiB0aGUgYXBwIGdyaWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInN0dWFydGhheWh1cnN0IiwKICAgICJwYXlwYWwiOiAic3R1YXJ0YWhheWh1cnN0IgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkFscGhhYmV0aWNhbEFwcEdyaWRAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIkFscGhhYmV0aWNhbCBBcHAgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hbHBoYWJldGljYWwtYXBwLWdyaWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L2FscGhhYmV0aWNhbC1ncmlkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAzMgp9"},
     "44": {"version": "32", "sha256": "1dvpl7va3gcv323i7l12jidbfmy93in1d1vr5aj6568m0gh7lxk5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlYnVnIjogZmFsc2UsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RvcmUgdGhlIGFscGhhYmV0aWNhbCBvcmRlcmluZyBvZiB0aGUgYXBwIGdyaWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInN0dWFydGhheWh1cnN0IiwKICAgICJwYXlwYWwiOiAic3R1YXJ0YWhheWh1cnN0IgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkFscGhhYmV0aWNhbEFwcEdyaWRAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIkFscGhhYmV0aWNhbCBBcHAgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hbHBoYWJldGljYWwtYXBwLWdyaWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L2FscGhhYmV0aWNhbC1ncmlkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAzMgp9"},
-    "45": {"version": "39", "sha256": "1rp3czq2ggmr71mwpn0dir0zmnycwridgxvpx8xz45r8h0ra4ynv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RvcmUgdGhlIGFscGhhYmV0aWNhbCBvcmRlcmluZyBvZiB0aGUgYXBwIGdyaWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInN0dWFydGhheWh1cnN0IiwKICAgICJwYXlwYWwiOiAic3R1YXJ0YWhheWh1cnN0IgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkFscGhhYmV0aWNhbEFwcEdyaWRAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIkFscGhhYmV0aWNhbCBBcHAgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hbHBoYWJldGljYWwtYXBwLWdyaWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L2FscGhhYmV0aWNhbC1ncmlkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAzOQp9"}
+    "45": {"version": "40", "sha256": "1kmjs7l4bwvj7qcq56dhxdcyciwjv41jvyfij9jpx8vcgv6lammj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFscGhhYmV0aWNhbGx5IG9yZGVyIHRoZSBhcHAgZ3JpZCBhbmQgZm9sZGVycyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic3R1YXJ0aGF5aHVyc3QiLAogICAgInBheXBhbCI6ICJzdHVhcnRhaGF5aHVyc3QiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgIm5hbWUiOiAiQWxwaGFiZXRpY2FsIEFwcCBHcmlkIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFscGhhYmV0aWNhbC1hcHAtZ3JpZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3R1YXJ0aGF5aHVyc3QvYWxwaGFiZXRpY2FsLWdyaWQtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJBbHBoYWJldGljYWxBcHBHcmlkQHN0dWFydGhheWh1cnN0IiwKICAidmVyc2lvbiI6IDQwCn0="},
+    "46": {"version": "40", "sha256": "1kmjs7l4bwvj7qcq56dhxdcyciwjv41jvyfij9jpx8vcgv6lammj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFscGhhYmV0aWNhbGx5IG9yZGVyIHRoZSBhcHAgZ3JpZCBhbmQgZm9sZGVycyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic3R1YXJ0aGF5aHVyc3QiLAogICAgInBheXBhbCI6ICJzdHVhcnRhaGF5aHVyc3QiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiQWxwaGFiZXRpY2FsQXBwR3JpZEBzdHVhcnRoYXlodXJzdCIsCiAgIm5hbWUiOiAiQWxwaGFiZXRpY2FsIEFwcCBHcmlkIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFscGhhYmV0aWNhbC1hcHAtZ3JpZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3R1YXJ0aGF5aHVyc3QvYWxwaGFiZXRpY2FsLWdyaWQtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJBbHBoYWJldGljYWxBcHBHcmlkQHN0dWFydGhheWh1cnN0IiwKICAidmVyc2lvbiI6IDQwCn0="}
   }}
 , {"uuid": "tofumenu@tofu", "name": "Tofu Menu", "pname": "tofu-menu", "description": "Quick access menu for the GNOME panel with options that help ease the workflow for newcomers and power users alike.\n\nhttps://github.com/tofutech/tofumenu", "link": "https://extensions.gnome.org/extension/4272/tofu-menu/", "shell_version_map": {
     "40": {"version": "2", "sha256": "05ndbjvvz0v1y8iq6ngqylz4z1ld6q5ibhkr5dh24wqc4wiky30v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGFjY2VzcyBtZW51IGZvciB0aGUgR05PTUUgcGFuZWwgd2l0aCBvcHRpb25zIHRoYXQgaGVscCBlYXNlIHRoZSB3b3JrZmxvdyBmb3IgbmV3Y29tZXJzIGFuZCBwb3dlciB1c2VycyBhbGlrZS5cblxuaHR0cHM6Ly9naXRodWIuY29tL3RvZnV0ZWNoL3RvZnVtZW51IiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZmVkb3JhLW1lbnUiLAogICJuYW1lIjogIlRvZnUgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcudG9mdS5mZWRvcmEtbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiNDAiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAidG9mdW1lbnVAdG9mdSIsCiAgInZlcnNpb24iOiAyCn0="}
@@ -3421,7 +3562,8 @@
     "41": {"version": "7", "sha256": "0mfqhg3d4iq4k7av8y5k780jb65qrqpb3mr6g090cr2vlk3ngw13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoIGFuaW1hdGlvbiB3aGlsZSBwcmVzZXJ2aW5nIGFsbCBvdGhlciBhbmltYXRpb25zIC0gaW5zdGFudGx5IHN3aXRjaCBiZXR3ZWVuIHdvcmtzcGFjZXMgd2l0aCBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIFdvcmtzcGFjZSBTd2l0Y2ggQW5pbWF0aW9uIGZvciBHTk9NRSA0MCsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FtYWxhbnRvbnkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWluc3RhbnQtd29ya3NwYWNlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJpbnN0YW50d29ya3NwYWNlc3dpdGNoZXJAYW1hbGFudG9ueS5uZXQiLAogICJ2ZXJzaW9uIjogNwp9"},
     "42": {"version": "7", "sha256": "0mfqhg3d4iq4k7av8y5k780jb65qrqpb3mr6g090cr2vlk3ngw13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoIGFuaW1hdGlvbiB3aGlsZSBwcmVzZXJ2aW5nIGFsbCBvdGhlciBhbmltYXRpb25zIC0gaW5zdGFudGx5IHN3aXRjaCBiZXR3ZWVuIHdvcmtzcGFjZXMgd2l0aCBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIFdvcmtzcGFjZSBTd2l0Y2ggQW5pbWF0aW9uIGZvciBHTk9NRSA0MCsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FtYWxhbnRvbnkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWluc3RhbnQtd29ya3NwYWNlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJpbnN0YW50d29ya3NwYWNlc3dpdGNoZXJAYW1hbGFudG9ueS5uZXQiLAogICJ2ZXJzaW9uIjogNwp9"},
     "43": {"version": "7", "sha256": "0mfqhg3d4iq4k7av8y5k780jb65qrqpb3mr6g090cr2vlk3ngw13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoIGFuaW1hdGlvbiB3aGlsZSBwcmVzZXJ2aW5nIGFsbCBvdGhlciBhbmltYXRpb25zIC0gaW5zdGFudGx5IHN3aXRjaCBiZXR3ZWVuIHdvcmtzcGFjZXMgd2l0aCBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIFdvcmtzcGFjZSBTd2l0Y2ggQW5pbWF0aW9uIGZvciBHTk9NRSA0MCsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FtYWxhbnRvbnkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWluc3RhbnQtd29ya3NwYWNlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJpbnN0YW50d29ya3NwYWNlc3dpdGNoZXJAYW1hbGFudG9ueS5uZXQiLAogICJ2ZXJzaW9uIjogNwp9"},
-    "44": {"version": "7", "sha256": "0mfqhg3d4iq4k7av8y5k780jb65qrqpb3mr6g090cr2vlk3ngw13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoIGFuaW1hdGlvbiB3aGlsZSBwcmVzZXJ2aW5nIGFsbCBvdGhlciBhbmltYXRpb25zIC0gaW5zdGFudGx5IHN3aXRjaCBiZXR3ZWVuIHdvcmtzcGFjZXMgd2l0aCBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIFdvcmtzcGFjZSBTd2l0Y2ggQW5pbWF0aW9uIGZvciBHTk9NRSA0MCsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FtYWxhbnRvbnkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWluc3RhbnQtd29ya3NwYWNlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJpbnN0YW50d29ya3NwYWNlc3dpdGNoZXJAYW1hbGFudG9ueS5uZXQiLAogICJ2ZXJzaW9uIjogNwp9"}
+    "44": {"version": "7", "sha256": "0mfqhg3d4iq4k7av8y5k780jb65qrqpb3mr6g090cr2vlk3ngw13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoIGFuaW1hdGlvbiB3aGlsZSBwcmVzZXJ2aW5nIGFsbCBvdGhlciBhbmltYXRpb25zIC0gaW5zdGFudGx5IHN3aXRjaCBiZXR3ZWVuIHdvcmtzcGFjZXMgd2l0aCBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIFdvcmtzcGFjZSBTd2l0Y2ggQW5pbWF0aW9uIGZvciBHTk9NRSA0MCsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FtYWxhbnRvbnkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWluc3RhbnQtd29ya3NwYWNlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJpbnN0YW50d29ya3NwYWNlc3dpdGNoZXJAYW1hbGFudG9ueS5uZXQiLAogICJ2ZXJzaW9uIjogNwp9"},
+    "45": {"version": "8", "sha256": "01clb2n3mabilkhflxjfb32qdgf0gcqfg2121yxgmfw5xrngxasx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoIGFuaW1hdGlvbiB3aGlsZSBwcmVzZXJ2aW5nIGFsbCBvdGhlciBhbmltYXRpb25zIC0gaW5zdGFudGx5IHN3aXRjaCBiZXR3ZWVuIHdvcmtzcGFjZXMgd2l0aCBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJEaXNhYmxlIFdvcmtzcGFjZSBTd2l0Y2ggQW5pbWF0aW9uIGZvciBHTk9NRSA0MCsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYW1hbGFudG9ueS9nbm9tZS1zaGVsbC1leHRlbnNpb24taW5zdGFudC13b3Jrc3BhY2Utc3dpdGNoZXIiLAogICJ1dWlkIjogImluc3RhbnR3b3Jrc3BhY2Vzd2l0Y2hlckBhbWFsYW50b255Lm5ldCIsCiAgInZlcnNpb24iOiA4Cn0="}
   }}
 , {"uuid": "top-panel-notification-icons@5th0.github.com", "name": "Top Panel Notification Icons", "pname": "top-panel-notification-icons", "description": "Display notification icons in the Top", "link": "https://extensions.gnome.org/extension/4293/top-panel-notification-icons/", "shell_version_map": {
     "38": {"version": "1", "sha256": "0s84r45nc1kyv6sc6a9jbxv981f1ih8g2nfdzrzd33n3032f30px", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgbm90aWZpY2F0aW9uIGljb25zIGluIHRoZSBUb3AiLAogICJuYW1lIjogIlRvcCBQYW5lbCBOb3RpZmljYXRpb24gSWNvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInRvcC1wYW5lbC1ub3RpZmljYXRpb24taWNvbnNANXRoMC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEKfQ=="},
@@ -3493,7 +3635,8 @@
     "42": {"version": "9", "sha256": "187rhyb4nd881v2silq6jbl7q2yjimjpx2qaajsgfrfzwd0jxy1w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHJlbW90ZSBkZXNrdG9wIGNvbm5lY3Rpb25zIHdoZW4gdGhlIHNjcmVlbiBpcyBsb2NrZWQiLAogICJuYW1lIjogIkFsbG93IExvY2tlZCBSZW1vdGUgRGVza3RvcCIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiYWxsb3dsb2NrZWRyZW1vdGVkZXNrdG9wQGthbWVucy51cyIsCiAgInZlcnNpb24iOiA5Cn0="},
     "43": {"version": "9", "sha256": "187rhyb4nd881v2silq6jbl7q2yjimjpx2qaajsgfrfzwd0jxy1w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHJlbW90ZSBkZXNrdG9wIGNvbm5lY3Rpb25zIHdoZW4gdGhlIHNjcmVlbiBpcyBsb2NrZWQiLAogICJuYW1lIjogIkFsbG93IExvY2tlZCBSZW1vdGUgRGVza3RvcCIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiYWxsb3dsb2NrZWRyZW1vdGVkZXNrdG9wQGthbWVucy51cyIsCiAgInZlcnNpb24iOiA5Cn0="},
     "44": {"version": "9", "sha256": "187rhyb4nd881v2silq6jbl7q2yjimjpx2qaajsgfrfzwd0jxy1w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHJlbW90ZSBkZXNrdG9wIGNvbm5lY3Rpb25zIHdoZW4gdGhlIHNjcmVlbiBpcyBsb2NrZWQiLAogICJuYW1lIjogIkFsbG93IExvY2tlZCBSZW1vdGUgRGVza3RvcCIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiYWxsb3dsb2NrZWRyZW1vdGVkZXNrdG9wQGthbWVucy51cyIsCiAgInZlcnNpb24iOiA5Cn0="},
-    "45": {"version": "11", "sha256": "07chczxz26c8xdxlmsn83wpcnyy5x822cfg7ni07vdzfgdy88fly", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHJlbW90ZSBkZXNrdG9wIGNvbm5lY3Rpb25zIHdoZW4gdGhlIHNjcmVlbiBpcyBsb2NrZWQiLAogICJuYW1lIjogIkFsbG93IExvY2tlZCBSZW1vdGUgRGVza3RvcCIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamlrYW1lbnMvYWxsb3ctbG9ja2VkLXJlbW90ZS1kZXNrdG9wLyIsCiAgInV1aWQiOiAiYWxsb3dsb2NrZWRyZW1vdGVkZXNrdG9wQGthbWVucy51cyIsCiAgInZlcnNpb24iOiAxMQp9"}
+    "45": {"version": "12", "sha256": "06wwc4jlmbl5k1ygj9n1767753sa9x2msrzjfcygshgxnv97d4lr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHJlbW90ZSBkZXNrdG9wIGNvbm5lY3Rpb25zIHdoZW4gdGhlIHNjcmVlbiBpcyBsb2NrZWQiLAogICJuYW1lIjogIkFsbG93IExvY2tlZCBSZW1vdGUgRGVza3RvcCIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJhbGxvd2xvY2tlZHJlbW90ZWRlc2t0b3BAa2FtZW5zLnVzIiwKICAidmVyc2lvbiI6IDEyCn0="},
+    "46": {"version": "12", "sha256": "06wwc4jlmbl5k1ygj9n1767753sa9x2msrzjfcygshgxnv97d4lr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHJlbW90ZSBkZXNrdG9wIGNvbm5lY3Rpb25zIHdoZW4gdGhlIHNjcmVlbiBpcyBsb2NrZWQiLAogICJuYW1lIjogIkFsbG93IExvY2tlZCBSZW1vdGUgRGVza3RvcCIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJhbGxvd2xvY2tlZHJlbW90ZWRlc2t0b3BAa2FtZW5zLnVzIiwKICAidmVyc2lvbiI6IDEyCn0="}
   }}
 , {"uuid": "mumble-ping@maweil.github.com", "name": "MumblePing", "pname": "mumbleping", "description": "Displays how many users are currently online on a mumble server", "link": "https://extensions.gnome.org/extension/4341/mumbleping/", "shell_version_map": {
     "38": {"version": "5", "sha256": "0hp3c7sq1kaxagiw88gm4rsqvi9mw83r3584sh8i7chrchjzdxxg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGhvdyBtYW55IHVzZXJzIGFyZSBjdXJyZW50bHkgb25saW5lIG9uIGEgbXVtYmxlIHNlcnZlciIsCiAgImdldHRleHQtZG9tYWluIjogIm11bWJsZS1waW5nIiwKICAibmFtZSI6ICJNdW1ibGVQaW5nIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm11bWJsZS1waW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXdlaWwvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW11bWJsZS1waW5nIiwKICAidXVpZCI6ICJtdW1ibGUtcGluZ0BtYXdlaWwuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="},
@@ -3535,7 +3678,8 @@
     "42": {"version": "9", "sha256": "04xzhd69585vyif73pkn8aw4xw2kzj5w5fwj2r6lczi81i6vxaky", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB0b3AgcGFuZWwgdG8gdGhlIHNlY29uZGFyeSBtb25pdG9yIGlmIHRoZSBwcmltYXJ5IGlzIGluIGZ1bGxzY3JlZW4iLAogICJleHRlbnNpb24taWQiOiAiZnVsbHNjcmVlbi1hdm9pZGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiRnVsbHNjcmVlbiBBdm9pZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZ1bGxzY3JlZW4tYXZvaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTm9vYnNhaS9mdWxsc2NyZWVuLWF2b2lkZXIiLAogICJ1dWlkIjogImZ1bGxzY3JlZW4tYXZvaWRlckBub29ic2FpLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
     "43": {"version": "9", "sha256": "04xzhd69585vyif73pkn8aw4xw2kzj5w5fwj2r6lczi81i6vxaky", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB0b3AgcGFuZWwgdG8gdGhlIHNlY29uZGFyeSBtb25pdG9yIGlmIHRoZSBwcmltYXJ5IGlzIGluIGZ1bGxzY3JlZW4iLAogICJleHRlbnNpb24taWQiOiAiZnVsbHNjcmVlbi1hdm9pZGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiRnVsbHNjcmVlbiBBdm9pZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZ1bGxzY3JlZW4tYXZvaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTm9vYnNhaS9mdWxsc2NyZWVuLWF2b2lkZXIiLAogICJ1dWlkIjogImZ1bGxzY3JlZW4tYXZvaWRlckBub29ic2FpLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
     "44": {"version": "9", "sha256": "04xzhd69585vyif73pkn8aw4xw2kzj5w5fwj2r6lczi81i6vxaky", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB0b3AgcGFuZWwgdG8gdGhlIHNlY29uZGFyeSBtb25pdG9yIGlmIHRoZSBwcmltYXJ5IGlzIGluIGZ1bGxzY3JlZW4iLAogICJleHRlbnNpb24taWQiOiAiZnVsbHNjcmVlbi1hdm9pZGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiRnVsbHNjcmVlbiBBdm9pZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZ1bGxzY3JlZW4tYXZvaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTm9vYnNhaS9mdWxsc2NyZWVuLWF2b2lkZXIiLAogICJ1dWlkIjogImZ1bGxzY3JlZW4tYXZvaWRlckBub29ic2FpLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
-    "45": {"version": "11", "sha256": "1lxa8bjkzvzi2m3yv1mfnz9118cxmw8lm7vm4shn9wk2w25ybqrp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB0b3AgcGFuZWwgdG8gdGhlIHNlY29uZGFyeSBtb25pdG9yIGlmIHRoZSBwcmltYXJ5IGlzIGluIGZ1bGxzY3JlZW4iLAogICJleHRlbnNpb24taWQiOiAiZnVsbHNjcmVlbi1hdm9pZGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiRnVsbHNjcmVlbiBBdm9pZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZ1bGxzY3JlZW4tYXZvaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ob29ic2FpL2Z1bGxzY3JlZW4tYXZvaWRlciIsCiAgInV1aWQiOiAiZnVsbHNjcmVlbi1hdm9pZGVyQG5vb2JzYWkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMQp9"}
+    "45": {"version": "12", "sha256": "1iq3wjmaczwl1l0px7i6cflhxdq8601ia02xcj8h78l28f020yis", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB0b3AgcGFuZWwgdG8gdGhlIHNlY29uZGFyeSBtb25pdG9yIGlmIHRoZSBwcmltYXJ5IGlzIGluIGZ1bGxzY3JlZW4iLAogICJleHRlbnNpb24taWQiOiAiZnVsbHNjcmVlbi1hdm9pZGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiRnVsbHNjcmVlbiBBdm9pZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZ1bGxzY3JlZW4tYXZvaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTm9vYnNhaS9mdWxsc2NyZWVuLWF2b2lkZXIiLAogICJ1dWlkIjogImZ1bGxzY3JlZW4tYXZvaWRlckBub29ic2FpLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
+    "46": {"version": "12", "sha256": "1iq3wjmaczwl1l0px7i6cflhxdq8601ia02xcj8h78l28f020yis", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB0b3AgcGFuZWwgdG8gdGhlIHNlY29uZGFyeSBtb25pdG9yIGlmIHRoZSBwcmltYXJ5IGlzIGluIGZ1bGxzY3JlZW4iLAogICJleHRlbnNpb24taWQiOiAiZnVsbHNjcmVlbi1hdm9pZGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiRnVsbHNjcmVlbiBBdm9pZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZ1bGxzY3JlZW4tYXZvaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTm9vYnNhaS9mdWxsc2NyZWVuLWF2b2lkZXIiLAogICJ1dWlkIjogImZ1bGxzY3JlZW4tYXZvaWRlckBub29ic2FpLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
   }}
 , {"uuid": "shell-isw@zamraky.cz", "name": "MSI Fan Control", "pname": "msi-fan-control", "description": "Use isw to change MSI laptop fan settings", "link": "https://extensions.gnome.org/extension/4363/msi-fan-control/", "shell_version_map": {
     "38": {"version": "1", "sha256": "0pl9dxwkw47r4c0f5sxjhh8bxl82r0sjlwsji7pwypkb6m0hh342", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSBpc3cgdG8gY2hhbmdlIE1TSSBsYXB0b3AgZmFuIHNldHRpbmdzIiwKICAibmFtZSI6ICJNU0kgRmFuIENvbnRyb2wiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAic2hlbGwtaXN3QHphbXJha3kuY3oiLAogICJ2ZXJzaW9uIjogMQp9"}
@@ -3558,7 +3702,8 @@
     "42": {"version": "31", "sha256": "1w0l81g1l21f9f6ga53dlp7y1wg5s1nxz67y990ywh9sp0n4dkac", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNodXRkb3duL3JlYm9vdC9zdXNwZW5kIHRoZSBkZXZpY2UgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lIG9yIHdha2Ugd2l0aCBhIHJ0YyBhbGFybS5cblxuVGhlIHNjcmVlbi1zYXZlciB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIHRpbWVyLiBBIHByaXZpbGVnZWQgY29udHJvbCBzY3JpcHQgbWF5IGJlIGluc3RhbGxlZCB0byBjb250cm9sIHNodXRkb3duIGFuZCBydGN3YWtlIGFzIHVzZXIuIEFkZGl0aW9uYWxseSwgYSBjaGVjayBjb21tYW5kIG1heSBiZSBjb25maWd1cmVkIGJlZm9yZSBzaHV0ZG93bi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJTaHV0ZG93blRpbWVyIiwKICAibmFtZSI6ICJTaHV0ZG93biBUaW1lciIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1dGRvd250aW1lci1kZW1pbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EZW1pbmRlci9TaHV0ZG93blRpbWVyIiwKICAidXVpZCI6ICJTaHV0ZG93blRpbWVyQGRlbWluZGVyIiwKICAidmVyc2lvbiI6IDMxCn0="},
     "43": {"version": "36", "sha256": "0f71payq0dvyyprrpl7yfzd5zq48kw26fd2vr36cjzcwrp9v6viz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNodXRkb3duL3JlYm9vdC9zdXNwZW5kIHRoZSBkZXZpY2UgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lIG9yIHdha2Ugd2l0aCBhIHJ0YyBhbGFybS5cblxuVGhlIHNjcmVlbi1zYXZlciB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIHRpbWVyLiBBIHByaXZpbGVnZWQgY29udHJvbCBzY3JpcHQgbWF5IGJlIGluc3RhbGxlZCB0byBjb250cm9sIHNodXRkb3duIGFuZCBydGN3YWtlIGFzIHVzZXIuIEFkZGl0aW9uYWxseSwgYSBjaGVjayBjb21tYW5kIG1heSBiZSBjb25maWd1cmVkIGJlZm9yZSBzaHV0ZG93bi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJTaHV0ZG93blRpbWVyIiwKICAibmFtZSI6ICJTaHV0ZG93biBUaW1lciIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1dGRvd250aW1lci1kZW1pbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRGVtaW5kZXIvU2h1dGRvd25UaW1lciIsCiAgInV1aWQiOiAiU2h1dGRvd25UaW1lckBkZW1pbmRlciIsCiAgInZlcnNpb24iOiAzNgp9"},
     "44": {"version": "36", "sha256": "0f71payq0dvyyprrpl7yfzd5zq48kw26fd2vr36cjzcwrp9v6viz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNodXRkb3duL3JlYm9vdC9zdXNwZW5kIHRoZSBkZXZpY2UgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lIG9yIHdha2Ugd2l0aCBhIHJ0YyBhbGFybS5cblxuVGhlIHNjcmVlbi1zYXZlciB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIHRpbWVyLiBBIHByaXZpbGVnZWQgY29udHJvbCBzY3JpcHQgbWF5IGJlIGluc3RhbGxlZCB0byBjb250cm9sIHNodXRkb3duIGFuZCBydGN3YWtlIGFzIHVzZXIuIEFkZGl0aW9uYWxseSwgYSBjaGVjayBjb21tYW5kIG1heSBiZSBjb25maWd1cmVkIGJlZm9yZSBzaHV0ZG93bi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJTaHV0ZG93blRpbWVyIiwKICAibmFtZSI6ICJTaHV0ZG93biBUaW1lciIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2h1dGRvd250aW1lci1kZW1pbmRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRGVtaW5kZXIvU2h1dGRvd25UaW1lciIsCiAgInV1aWQiOiAiU2h1dGRvd25UaW1lckBkZW1pbmRlciIsCiAgInZlcnNpb24iOiAzNgp9"},
-    "45": {"version": "42", "sha256": "0z0yws84gcl8bkiz3d6kxzvgilcaaxp7safwnail5f9n53b8kjl5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNodXRkb3duL3JlYm9vdC9zdXNwZW5kIHRoZSBkZXZpY2UgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lIG9yIHdha2Ugd2l0aCBhIHJ0YyBhbGFybS5cblxuVGhlIHNjcmVlbi1zYXZlciB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIHRpbWVyLiBBIHByaXZpbGVnZWQgY29udHJvbCBzY3JpcHQgbWF5IGJlIGluc3RhbGxlZCB0byBjb250cm9sIHNodXRkb3duIGFuZCBydGN3YWtlIGFzIHVzZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiU2h1dGRvd25UaW1lciIsCiAgIm5hbWUiOiAiU2h1dGRvd24gVGltZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNodXRkb3dudGltZXItZGVtaW5kZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRGVtaW5kZXIvU2h1dGRvd25UaW1lciIsCiAgInV1aWQiOiAiU2h1dGRvd25UaW1lckBkZW1pbmRlciIsCiAgInZlcnNpb24iOiA0Mgp9"}
+    "45": {"version": "43", "sha256": "1yaj9rbkg4ijp4ki0x4qycfd28lmp4hjiyvgl71ldfsqqqaaqdbs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNodXRkb3duL3JlYm9vdC9zdXNwZW5kIHRoZSBkZXZpY2UgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lIG9yIHdha2Ugd2l0aCBhIHJ0YyBhbGFybS5cblxuVGhlIHNjcmVlbi1zYXZlciB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIHRpbWVyLiBBIHByaXZpbGVnZWQgY29udHJvbCBzY3JpcHQgbWF5IGJlIGluc3RhbGxlZCB0byBjb250cm9sIHNodXRkb3duIGFuZCBydGN3YWtlIGFzIHVzZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiU2h1dGRvd25UaW1lciIsCiAgIm5hbWUiOiAiU2h1dGRvd24gVGltZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNodXRkb3dudGltZXItZGVtaW5kZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0RlbWluZGVyL1NodXRkb3duVGltZXIiLAogICJ1dWlkIjogIlNodXRkb3duVGltZXJAZGVtaW5kZXIiLAogICJ2ZXJzaW9uIjogNDMKfQ=="},
+    "46": {"version": "43", "sha256": "1yaj9rbkg4ijp4ki0x4qycfd28lmp4hjiyvgl71ldfsqqqaaqdbs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNodXRkb3duL3JlYm9vdC9zdXNwZW5kIHRoZSBkZXZpY2UgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lIG9yIHdha2Ugd2l0aCBhIHJ0YyBhbGFybS5cblxuVGhlIHNjcmVlbi1zYXZlciB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIHRpbWVyLiBBIHByaXZpbGVnZWQgY29udHJvbCBzY3JpcHQgbWF5IGJlIGluc3RhbGxlZCB0byBjb250cm9sIHNodXRkb3duIGFuZCBydGN3YWtlIGFzIHVzZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiU2h1dGRvd25UaW1lciIsCiAgIm5hbWUiOiAiU2h1dGRvd24gVGltZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNodXRkb3dudGltZXItZGVtaW5kZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0RlbWluZGVyL1NodXRkb3duVGltZXIiLAogICJ1dWlkIjogIlNodXRkb3duVGltZXJAZGVtaW5kZXIiLAogICJ2ZXJzaW9uIjogNDMKfQ=="}
   }}
 , {"uuid": "docker_status2@gpouilloux", "name": "Docker Integration", "pname": "docker-integration", "description": "A status menu for managing docker containers.", "link": "https://extensions.gnome.org/extension/4374/docker-integration/", "shell_version_map": {
     "40": {"version": "1", "sha256": "1ia763h3wbc3d3p9ddb1b9rg5f486y5x3m2k4pblq9f9ca9cjrdy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc3RhdHVzIG1lbnUgZm9yIG1hbmFnaW5nIGRvY2tlciBjb250YWluZXJzLiIsCiAgIm5hbWUiOiAiRG9ja2VyIEludGVncmF0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjE0IiwKICAgICIzLjE2IiwKICAgICIzLjE4IiwKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICIzLjI2IiwKICAgICIzLjI4IiwKICAgICIzLjMwIiwKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICI0MC4wIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3BvdWlsbG91eC9nbm9tZS1zaGVsbC1leHRlbnNpb24tZG9ja2VyIiwKICAidXVpZCI6ICJkb2NrZXJfc3RhdHVzMkBncG91aWxsb3V4IiwKICAidmVyc2lvbiI6IDEKfQ=="}
@@ -3584,7 +3729,7 @@
 , {"uuid": "icon-area-horizontal-spacing-fixed@trblwlf.tk", "name": "Icon Area Horizontal Spacing Fixed", "pname": "icon-area-horizontal-spacing-fixed", "description": "Reduce the horizontal spacing between icons in the top-left icon area.\nFork of the \"Status Area Horizontal Spacing\" extension, but for the LEFT side. \nThank you to the original author: mathematical.coffee", "link": "https://extensions.gnome.org/extension/4387/icon-area-horizontal-spacing-fixed/", "shell_version_map": {
     "38": {"version": "1", "sha256": "07pnz6w2hmjhc9x5nbj1cvir169hfva16igik1f8fm08qg4rrv03", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlZHVjZSB0aGUgaG9yaXpvbnRhbCBzcGFjaW5nIGJldHdlZW4gaWNvbnMgaW4gdGhlIHRvcC1sZWZ0IGljb24gYXJlYS5cbkZvcmsgb2YgdGhlIFwiU3RhdHVzIEFyZWEgSG9yaXpvbnRhbCBTcGFjaW5nXCIgZXh0ZW5zaW9uLCBidXQgZm9yIHRoZSBMRUZUIHNpZGUuIFxuVGhhbmsgeW91IHRvIHRoZSBvcmlnaW5hbCBhdXRob3I6IG1hdGhlbWF0aWNhbC5jb2ZmZWUiLAogICJkZXYtdmVyc2lvbiI6ICIyLjEiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJJY29uIEFyZWEgSG9yaXpvbnRhbCBTcGFjaW5nIEZpeGVkIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmljb24tYXJlYS1ob3Jpem9udGFsLXNwYWNpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuNCIsCiAgICAiMy42IiwKICAgICIzLjgiLAogICAgIjMuMTAiLAogICAgIjMuMTIiLAogICAgIjMuMTQiLAogICAgIjMuMTYiLAogICAgIjMuMTgiLAogICAgIjMuMjAiLAogICAgIjMuMjIiLAogICAgIjMuMjQiLAogICAgIjMuMjYiLAogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiaWNvbi1hcmVhLWhvcml6b250YWwtc3BhY2luZy1maXhlZEB0cmJsd2xmLnRrIiwKICAidmVyc2lvbiI6IDEKfQ=="}
   }}
-, {"uuid": "move-ws-switcher-popup@G-dH.github.com", "name": "Move WS Switcher Popup", "pname": "move-ws-switcher-popup", "description": "Moves the workspace switcher popup out of the screen center - down for horizontal layout (Gnome 40), to the right for vertical (Gnome 3)", "link": "https://extensions.gnome.org/extension/4396/move-ws-switcher-popup/", "shell_version_map": {
+, {"uuid": "move-ws-switcher-popup@G-dH.github.com", "name": "Move WS Switcher Popup", "pname": "move-ws-switcher-popup", "description": "Moves the workspace switcher popup out of the screen center\nDown for horizontal layout (Gnome 40), to the right for vertical (Gnome 3)", "link": "https://extensions.gnome.org/extension/4396/move-ws-switcher-popup/", "shell_version_map": {
     "38": {"version": "1", "sha256": "1i2bbvc4y0ml0j2hgr400nkgn8lmj0dml1rj0rwmf4k2v0s3x0qm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoZXIgcG9wdXAgb3V0IG9mIHRoZSBzY3JlZW4gY2VudGVyIC0gZG93biBmb3IgaG9yaXpvbnRhbCBsYXlvdXQgKEdub21lIDQwKSwgdG8gdGhlIHJpZ2h0IGZvciB2ZXJ0aWNhbCAoR25vbWUgMykiLAogICJuYW1lIjogIk1vdmUgV1MgU3dpdGNoZXIgUG9wdXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIm1vdmUtd3Mtc3dpdGNoZXItcG9wdXBARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEKfQ=="},
     "40": {"version": "1", "sha256": "1i2bbvc4y0ml0j2hgr400nkgn8lmj0dml1rj0rwmf4k2v0s3x0qm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmVzIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoZXIgcG9wdXAgb3V0IG9mIHRoZSBzY3JlZW4gY2VudGVyIC0gZG93biBmb3IgaG9yaXpvbnRhbCBsYXlvdXQgKEdub21lIDQwKSwgdG8gdGhlIHJpZ2h0IGZvciB2ZXJ0aWNhbCAoR25vbWUgMykiLAogICJuYW1lIjogIk1vdmUgV1MgU3dpdGNoZXIgUG9wdXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogIm1vdmUtd3Mtc3dpdGNoZXItcG9wdXBARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEKfQ=="}
   }}
@@ -3618,14 +3763,15 @@
     "41": {"version": "11", "sha256": "18x42bx758gpxq8w72yjajg05wmj8fc57qgrk2zl9hppvp5h321r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ25vbWUgc2hlbGwgZXh0ZW5zaW9uIHRvIG1hbmFnZSB5b3VyIGhvbWUgdHJhc2guIFlvdSBjYW4gbWFuYWdlIHRyYXNoIGl0ZW1zIGZyb20gdGhlIHBhbmVsIGFuZCBvcGVuIG9yIGVtcHR5IHRoZSB0cmFzaC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS10cmFzaCIsCiAgIm5hbWUiOiAiR25vbWUgVHJhc2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iMDBmL2dub21lLXRyYXNoIiwKICAidXVpZCI6ICJnbm9tZS10cmFzaEBiMDBmLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMQp9"},
     "42": {"version": "11", "sha256": "18x42bx758gpxq8w72yjajg05wmj8fc57qgrk2zl9hppvp5h321r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ25vbWUgc2hlbGwgZXh0ZW5zaW9uIHRvIG1hbmFnZSB5b3VyIGhvbWUgdHJhc2guIFlvdSBjYW4gbWFuYWdlIHRyYXNoIGl0ZW1zIGZyb20gdGhlIHBhbmVsIGFuZCBvcGVuIG9yIGVtcHR5IHRoZSB0cmFzaC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS10cmFzaCIsCiAgIm5hbWUiOiAiR25vbWUgVHJhc2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iMDBmL2dub21lLXRyYXNoIiwKICAidXVpZCI6ICJnbm9tZS10cmFzaEBiMDBmLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMQp9"}
   }}
-, {"uuid": "advanced-alt-tab@G-dH.github.com", "name": "AATWS - Advanced Alt-Tab Window Switcher", "pname": "advanced-alttab-window-switcher", "description": "A highly customizable replacement for Alt/Super+Tab window/app switchers that offers a 'type to search' mode, various filtering and sorting options, workspace and monitor navigation, configurable hotkeys for navigation and window/app control, and an app launcher.\n\nAATWS allows configuring any mouse button and scroll wheel and can be used as a mouse-controlled 'dock'.\n\nPlease note that GNOME has three built-in window switcher popups, and this extension replaces all of them. The first one groups windows by applications and is used as the default in vanilla GNOME distributions. The second one offers a window list, and the third one displays windows of the currently focused application. You can set keyboard shortcuts for all the switchers in GNOME Settings application.\n\nFor more information and bug reports, please follow the link below.\n\nKeywords: alttab, search, find, window search, popup delay, applications, apps, dock, monitor, thumbnail, preview, move windows, launch app, switch, VIM.", "link": "https://extensions.gnome.org/extension/4412/advanced-alttab-window-switcher/", "shell_version_map": {
+, {"uuid": "advanced-alt-tab@G-dH.github.com", "name": "AATWS (Advanced Alt-Tab Window Switcher)", "pname": "advanced-alttab-window-switcher", "description": "A highly customizable replacement for Alt/Super+Tab window/app switchers that offers a 'type to search' mode, various filtering and sorting options, workspace and monitor navigation, configurable hotkeys for navigation and window/app control, and an app launcher.\n\nAATWS allows configuring any mouse button and scroll wheel and can be used as a mouse-controlled 'dock'.\n\nPlease note that GNOME has three built-in window switcher popups, and this extension replaces all of them. The first one groups windows by applications and is used as the default in vanilla GNOME distributions. The second one offers a window list, and the third one displays windows of the currently focused application. You can set keyboard shortcuts for all the switchers in GNOME Settings application.\n\nFor more information and bug reports, please follow the link below.\n\nKeywords: alttab, search, find, window search, popup delay, applications, apps, dock, monitor, thumbnail, preview, move windows, launch app, switch, VIM.", "link": "https://extensions.gnome.org/extension/4412/advanced-alttab-window-switcher/", "shell_version_map": {
     "38": {"version": "52", "sha256": "1dc9rn040l1hxs9ihb5644cfajan6ksadrl713yfxk4cvjal74hm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuXG5cbkZvbGxvdyB0aGUgbGluayBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgYnVnIHJlcG9ydHMuXG5cbktleXdvcmRzOiBhbHR0YWIsIHNlYXJjaCwgZmluZCwgd2luZG93IHNlYXJjaCwgcG9wdXAgZGVsYXksIGFwcGxpY2F0aW9ucywgYXBwcywgZG9jaywgbW9uaXRvciwgdGh1bWJuYWlsLCBwcmV2aWV3LCBtb3ZlIHdpbmRvd3MsIGxhdW5jaCBhcHAsIHN3aXRjaCwgVklNLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiQUFUV1MgLSBBZHZhbmNlZCBBbHQtVGFiIFdpbmRvdyBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9hZHZhbmNlZC1hbHR0YWItd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJhZHZhbmNlZC1hbHQtdGFiQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MiwKICAidmVyc2lvbi1uYW1lIjogIjQ0LjkiCn0="},
     "40": {"version": "52", "sha256": "1dc9rn040l1hxs9ihb5644cfajan6ksadrl713yfxk4cvjal74hm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuXG5cbkZvbGxvdyB0aGUgbGluayBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgYnVnIHJlcG9ydHMuXG5cbktleXdvcmRzOiBhbHR0YWIsIHNlYXJjaCwgZmluZCwgd2luZG93IHNlYXJjaCwgcG9wdXAgZGVsYXksIGFwcGxpY2F0aW9ucywgYXBwcywgZG9jaywgbW9uaXRvciwgdGh1bWJuYWlsLCBwcmV2aWV3LCBtb3ZlIHdpbmRvd3MsIGxhdW5jaCBhcHAsIHN3aXRjaCwgVklNLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiQUFUV1MgLSBBZHZhbmNlZCBBbHQtVGFiIFdpbmRvdyBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9hZHZhbmNlZC1hbHR0YWItd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJhZHZhbmNlZC1hbHQtdGFiQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MiwKICAidmVyc2lvbi1uYW1lIjogIjQ0LjkiCn0="},
     "41": {"version": "52", "sha256": "1dc9rn040l1hxs9ihb5644cfajan6ksadrl713yfxk4cvjal74hm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuXG5cbkZvbGxvdyB0aGUgbGluayBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgYnVnIHJlcG9ydHMuXG5cbktleXdvcmRzOiBhbHR0YWIsIHNlYXJjaCwgZmluZCwgd2luZG93IHNlYXJjaCwgcG9wdXAgZGVsYXksIGFwcGxpY2F0aW9ucywgYXBwcywgZG9jaywgbW9uaXRvciwgdGh1bWJuYWlsLCBwcmV2aWV3LCBtb3ZlIHdpbmRvd3MsIGxhdW5jaCBhcHAsIHN3aXRjaCwgVklNLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiQUFUV1MgLSBBZHZhbmNlZCBBbHQtVGFiIFdpbmRvdyBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9hZHZhbmNlZC1hbHR0YWItd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJhZHZhbmNlZC1hbHQtdGFiQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MiwKICAidmVyc2lvbi1uYW1lIjogIjQ0LjkiCn0="},
     "42": {"version": "52", "sha256": "1dc9rn040l1hxs9ihb5644cfajan6ksadrl713yfxk4cvjal74hm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuXG5cbkZvbGxvdyB0aGUgbGluayBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgYnVnIHJlcG9ydHMuXG5cbktleXdvcmRzOiBhbHR0YWIsIHNlYXJjaCwgZmluZCwgd2luZG93IHNlYXJjaCwgcG9wdXAgZGVsYXksIGFwcGxpY2F0aW9ucywgYXBwcywgZG9jaywgbW9uaXRvciwgdGh1bWJuYWlsLCBwcmV2aWV3LCBtb3ZlIHdpbmRvd3MsIGxhdW5jaCBhcHAsIHN3aXRjaCwgVklNLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiQUFUV1MgLSBBZHZhbmNlZCBBbHQtVGFiIFdpbmRvdyBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9hZHZhbmNlZC1hbHR0YWItd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJhZHZhbmNlZC1hbHQtdGFiQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MiwKICAidmVyc2lvbi1uYW1lIjogIjQ0LjkiCn0="},
     "43": {"version": "52", "sha256": "1dc9rn040l1hxs9ihb5644cfajan6ksadrl713yfxk4cvjal74hm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuXG5cbkZvbGxvdyB0aGUgbGluayBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgYnVnIHJlcG9ydHMuXG5cbktleXdvcmRzOiBhbHR0YWIsIHNlYXJjaCwgZmluZCwgd2luZG93IHNlYXJjaCwgcG9wdXAgZGVsYXksIGFwcGxpY2F0aW9ucywgYXBwcywgZG9jaywgbW9uaXRvciwgdGh1bWJuYWlsLCBwcmV2aWV3LCBtb3ZlIHdpbmRvd3MsIGxhdW5jaCBhcHAsIHN3aXRjaCwgVklNLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiQUFUV1MgLSBBZHZhbmNlZCBBbHQtVGFiIFdpbmRvdyBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9hZHZhbmNlZC1hbHR0YWItd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJhZHZhbmNlZC1hbHQtdGFiQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MiwKICAidmVyc2lvbi1uYW1lIjogIjQ0LjkiCn0="},
     "44": {"version": "52", "sha256": "1dc9rn040l1hxs9ihb5644cfajan6ksadrl713yfxk4cvjal74hm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuXG5cbkZvbGxvdyB0aGUgbGluayBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgYnVnIHJlcG9ydHMuXG5cbktleXdvcmRzOiBhbHR0YWIsIHNlYXJjaCwgZmluZCwgd2luZG93IHNlYXJjaCwgcG9wdXAgZGVsYXksIGFwcGxpY2F0aW9ucywgYXBwcywgZG9jaywgbW9uaXRvciwgdGh1bWJuYWlsLCBwcmV2aWV3LCBtb3ZlIHdpbmRvd3MsIGxhdW5jaCBhcHAsIHN3aXRjaCwgVklNLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiQUFUV1MgLSBBZHZhbmNlZCBBbHQtVGFiIFdpbmRvdyBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hZHZhbmNlZC1hbHQtdGFiLXdpbmRvdy1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9hZHZhbmNlZC1hbHR0YWItd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJhZHZhbmNlZC1hbHQtdGFiQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MiwKICAidmVyc2lvbi1uYW1lIjogIjQ0LjkiCn0="},
-    "45": {"version": "51", "sha256": "1q8cprsgj77si84mwp0pzjc1cqx9jfj2qv0gp67y7qq5kgxwr7fs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFkdmFuY2VkLWFsdC10YWItd2luZG93LXN3aXRjaGVyIiwKICAibmFtZSI6ICJBQVRXUyAoQWR2YW5jZWQgQWx0LVRhYiBXaW5kb3cgU3dpdGNoZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFkdmFuY2VkLWFsdC10YWItd2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2FkdmFuY2VkLWFsdHRhYi13aW5kb3ctc3dpdGNoZXIiLAogICJ1dWlkIjogImFkdmFuY2VkLWFsdC10YWJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUxLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMCIKfQ=="}
+    "45": {"version": "54", "sha256": "1n5qkfw1xp2gxq0x21869405wm619nl9w7dd6p24hjnl6szgx6vg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFkdmFuY2VkLWFsdC10YWItd2luZG93LXN3aXRjaGVyIiwKICAibmFtZSI6ICJBQVRXUyAoQWR2YW5jZWQgQWx0LVRhYiBXaW5kb3cgU3dpdGNoZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFkdmFuY2VkLWFsdC10YWItd2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2FkdmFuY2VkLWFsdHRhYi13aW5kb3ctc3dpdGNoZXIiLAogICJ1dWlkIjogImFkdmFuY2VkLWFsdC10YWJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMSIKfQ=="},
+    "46": {"version": "54", "sha256": "1n5qkfw1xp2gxq0x21869405wm619nl9w7dd6p24hjnl6szgx6vg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZ2hseSBjdXN0b21pemFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBBbHQvU3VwZXIrVGFiIHdpbmRvdy9hcHAgc3dpdGNoZXJzIHRoYXQgb2ZmZXJzICd0eXBlIHRvIHNlYXJjaCcgbW9kZSwgdmFyaW91cyBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgb3B0aW9ucywgd29ya3NwYWNlIGFuZCBtb25pdG9yIG5hdmlnYXRpb24sIGNvbmZpZ3VyYWJsZSBob3RrZXlzIGZvciBuYXZpZ2F0aW9uIGFuZCB3aW5kb3cvYXBwIGNvbnRyb2wgYW5kIGFuIGFwcCBsYXVuY2hlci5cbkFBVFdTIGlzIGNvbXBhdGlibGUgd2l0aCBDdXN0b20gSG90IENvcm5lcnMgLSBFeHRlbmRlZCBleHRlbnNpb24sIGFsbG93cyB0byBjb25maWd1cmUgYW55IG1vdXNlIGJ1dHRvbiBhbmQgc2Nyb2xsIHdoZWVsIGFuZCBjYW4gYmUgdXNlZCBhcyBhIG1vdXNlIGNvbnRyb2xsZWQgJ2RvY2snLlxuXG5Ob3RlIHRoYXQgR05PTUUgaGFzIDMgYnVpbHQtaW4gd2luZG93IHN3aXRjaGVyIHBvcHVwcyBhbmQgdGhpcyBleHRlbnNpb24gcmVwbGFjZXMgYWxsIG9mIHRoZW0uIFRoZSBmaXJzdCBvbmUgaXMgZ3JvdXBpbmcgd2luZG93cyBieSBhcHBsaWNhdGlvbnMgYW5kIGlzIHVzZWQgYXMgZGVmYXVsdCBpbiB2YW5pbGxhIEdOT01FIGRpc3RyaWJ1dGlvbnMuIFRoZSBzZWNvbmQgb25lIG9mZmVycyB3aW5kb3cgbGlzdCBhbmQgdGhlIHRoaXJkIG9uZSB3aW5kb3dzIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBhcHBsaWNhdGlvbi4gWW91IGNhbiBzZXQga2V5Ym9hcmQgc2hvcnRjdXRzIGZvciBhbGwgdGhlIHN3aXRjaGVycyBpbiB0aGUgR25vbWUgU2V0dGluZ3MuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFkdmFuY2VkLWFsdC10YWItd2luZG93LXN3aXRjaGVyIiwKICAibmFtZSI6ICJBQVRXUyAoQWR2YW5jZWQgQWx0LVRhYiBXaW5kb3cgU3dpdGNoZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFkdmFuY2VkLWFsdC10YWItd2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2FkdmFuY2VkLWFsdHRhYi13aW5kb3ctc3dpdGNoZXIiLAogICJ1dWlkIjogImFkdmFuY2VkLWFsdC10YWJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMSIKfQ=="}
   }}
 , {"uuid": "improvedosk@nick-shmyrev.dev", "name": "Improved OSK", "pname": "improved-osk", "description": "Makes Gnome's OnScreen Keyboard more usable.\n\nFeatures:\n* Includes additional buttons: Arrow keys, Esc, Tab, Ctrl, Alt, Super, F1-12\n* Supports key combinations like `Ctrl + C`, `Alt + Tab`, `Ctrl + Shift + C`, `Super + A` etc.\n* Configurable keyboard size (landscape/portrait)\n* Statusbar indicator to toggle keyboard\n* Works in Gnome password modals\n* Works on Lock screen (see README for instructions)\n* Works on Login screen (see README for instructions)\n\nThis extension is a fork of https://extensions.gnome.org/extension/3330/improved-onscreen-keyboard/ by SebastianLuebke.", "link": "https://extensions.gnome.org/extension/4413/improved-osk/", "shell_version_map": {
     "38": {"version": "9", "sha256": "15wr4p47fyp5940zwk8mzxks76z56ykyzm6zrhd2pyhkxynl9cid", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdub21lJ3MgT25TY3JlZW4gS2V5Ym9hcmQgbW9yZSB1c2FibGUuXG5cbkZlYXR1cmVzOlxuKiBJbmNsdWRlcyBhZGRpdGlvbmFsIGJ1dHRvbnM6IEFycm93IGtleXMsIEVzYywgVGFiLCBDdHJsLCBBbHQsIFN1cGVyLCBGMS0xMlxuKiBTdXBwb3J0cyBrZXkgY29tYmluYXRpb25zIGxpa2UgYEN0cmwgKyBDYCwgYEFsdCArIFRhYmAsIGBDdHJsICsgU2hpZnQgKyBDYCwgYFN1cGVyICsgQWAgZXRjLlxuKiBDb25maWd1cmFibGUga2V5Ym9hcmQgc2l6ZSAobGFuZHNjYXBlL3BvcnRyYWl0KVxuKiBTdGF0dXNiYXIgaW5kaWNhdG9yIHRvIHRvZ2dsZSBrZXlib2FyZFxuKiBXb3JrcyBpbiBHbm9tZSBwYXNzd29yZCBtb2RhbHNcbiogV29ya3Mgb24gTG9jayBzY3JlZW4gKHNlZSBSRUFETUUgZm9yIGluc3RydWN0aW9ucylcbiogV29ya3Mgb24gTG9naW4gc2NyZWVuIChzZWUgUkVBRE1FIGZvciBpbnN0cnVjdGlvbnMpXG5cblRoaXMgZXh0ZW5zaW9uIGlzIGEgZm9yayBvZiBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8zMzMwL2ltcHJvdmVkLW9uc2NyZWVuLWtleWJvYXJkLyBieSBTZWJhc3RpYW5MdWVia2UuIiwKICAibmFtZSI6ICJJbXByb3ZlZCBPU0siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrLXNobXlyZXYvaW1wcm92ZWQtb3NrLWdub21lLWV4dCIsCiAgInV1aWQiOiAiaW1wcm92ZWRvc2tAbmljay1zaG15cmV2LmRldiIsCiAgInZlcnNpb24iOiA5Cn0="},
@@ -3640,13 +3786,13 @@
     "41": {"version": "5", "sha256": "1j6q1mgl75mjbr53z88vj2ablnrp4nx0q2a416wdgbiiwdazidbw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEZlZG9yYSBMaW51eCBhbmQgR05PTUUgU2hlbGwuIiwKICAibmFtZSI6ICJGZWRvcmEgTGludXggVXBkYXRlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wZXBlMzg2L2ZlZG9yYS11cGRhdGUiLAogICJ1dWlkIjogImZlZG9yYS11cGRhdGVAcGVwZTM4NiIsCiAgInZlcnNpb24iOiA1Cn0="},
     "42": {"version": "5", "sha256": "1j6q1mgl75mjbr53z88vj2ablnrp4nx0q2a416wdgbiiwdazidbw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEZlZG9yYSBMaW51eCBhbmQgR05PTUUgU2hlbGwuIiwKICAibmFtZSI6ICJGZWRvcmEgTGludXggVXBkYXRlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wZXBlMzg2L2ZlZG9yYS11cGRhdGUiLAogICJ1dWlkIjogImZlZG9yYS11cGRhdGVAcGVwZTM4NiIsCiAgInZlcnNpb24iOiA1Cn0="}
   }}
-, {"uuid": "readingstrip@lupantano.gihthub", "name": "Reading Strip", "pname": "reading-strip", "description": "It’s an extension for Gnome-Shell. It works as a reading guide for computer and this is really useful for people affected by dyslexia. It works great in helping children focusing to read very well, it marks the sentence that they are reading and hides the previous and the next one. It's already used in education projects at schools, it puts the attention on screen but it's also really useful for programmers and graphic designers who want to check their works.", "link": "https://extensions.gnome.org/extension/4419/reading-strip/", "shell_version_map": {
-    "38": {"version": "27", "sha256": "131cfb1kccq3sc098iayjlhkh76bpckgn2w6bjslnxam5xvpm863", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0XHUyMDE5cyBhbiBleHRlbnNpb24gZm9yIEdub21lLVNoZWxsLiBJdCB3b3JrcyBhcyBhIHJlYWRpbmcgZ3VpZGUgZm9yIGNvbXB1dGVyIGFuZCB0aGlzIGlzIHJlYWxseSB1c2VmdWwgZm9yIHBlb3BsZSBhZmZlY3RlZCBieSBkeXNsZXhpYS4gSXQgd29ya3MgZ3JlYXQgaW4gaGVscGluZyBjaGlsZHJlbiBmb2N1c2luZyB0byByZWFkIHZlcnkgd2VsbCwgaXQgbWFya3MgdGhlIHNlbnRlbmNlIHRoYXQgdGhleSBhcmUgcmVhZGluZyBhbmQgaGlkZXMgdGhlIHByZXZpb3VzIGFuZCB0aGUgbmV4dCBvbmUuIEl0J3MgYWxyZWFkeSB1c2VkIGluIGVkdWNhdGlvbiBwcm9qZWN0cyBhdCBzY2hvb2xzLCBpdCBwdXRzIHRoZSBhdHRlbnRpb24gb24gc2NyZWVuIGJ1dCBpdCdzIGFsc28gcmVhbGx5IHVzZWZ1bCBmb3IgcHJvZ3JhbW1lcnMgYW5kIGdyYXBoaWMgZGVzaWduZXJzIHdobyB3YW50IHRvIGNoZWNrIHRoZWlyIHdvcmtzLiIsCiAgImdldHRleHQtZG9tYWluIjogInJlYWRpbmctc3RyaXAiLAogICJuYW1lIjogIlJlYWRpbmcgU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "40": {"version": "27", "sha256": "131cfb1kccq3sc098iayjlhkh76bpckgn2w6bjslnxam5xvpm863", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0XHUyMDE5cyBhbiBleHRlbnNpb24gZm9yIEdub21lLVNoZWxsLiBJdCB3b3JrcyBhcyBhIHJlYWRpbmcgZ3VpZGUgZm9yIGNvbXB1dGVyIGFuZCB0aGlzIGlzIHJlYWxseSB1c2VmdWwgZm9yIHBlb3BsZSBhZmZlY3RlZCBieSBkeXNsZXhpYS4gSXQgd29ya3MgZ3JlYXQgaW4gaGVscGluZyBjaGlsZHJlbiBmb2N1c2luZyB0byByZWFkIHZlcnkgd2VsbCwgaXQgbWFya3MgdGhlIHNlbnRlbmNlIHRoYXQgdGhleSBhcmUgcmVhZGluZyBhbmQgaGlkZXMgdGhlIHByZXZpb3VzIGFuZCB0aGUgbmV4dCBvbmUuIEl0J3MgYWxyZWFkeSB1c2VkIGluIGVkdWNhdGlvbiBwcm9qZWN0cyBhdCBzY2hvb2xzLCBpdCBwdXRzIHRoZSBhdHRlbnRpb24gb24gc2NyZWVuIGJ1dCBpdCdzIGFsc28gcmVhbGx5IHVzZWZ1bCBmb3IgcHJvZ3JhbW1lcnMgYW5kIGdyYXBoaWMgZGVzaWduZXJzIHdobyB3YW50IHRvIGNoZWNrIHRoZWlyIHdvcmtzLiIsCiAgImdldHRleHQtZG9tYWluIjogInJlYWRpbmctc3RyaXAiLAogICJuYW1lIjogIlJlYWRpbmcgU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "41": {"version": "27", "sha256": "131cfb1kccq3sc098iayjlhkh76bpckgn2w6bjslnxam5xvpm863", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0XHUyMDE5cyBhbiBleHRlbnNpb24gZm9yIEdub21lLVNoZWxsLiBJdCB3b3JrcyBhcyBhIHJlYWRpbmcgZ3VpZGUgZm9yIGNvbXB1dGVyIGFuZCB0aGlzIGlzIHJlYWxseSB1c2VmdWwgZm9yIHBlb3BsZSBhZmZlY3RlZCBieSBkeXNsZXhpYS4gSXQgd29ya3MgZ3JlYXQgaW4gaGVscGluZyBjaGlsZHJlbiBmb2N1c2luZyB0byByZWFkIHZlcnkgd2VsbCwgaXQgbWFya3MgdGhlIHNlbnRlbmNlIHRoYXQgdGhleSBhcmUgcmVhZGluZyBhbmQgaGlkZXMgdGhlIHByZXZpb3VzIGFuZCB0aGUgbmV4dCBvbmUuIEl0J3MgYWxyZWFkeSB1c2VkIGluIGVkdWNhdGlvbiBwcm9qZWN0cyBhdCBzY2hvb2xzLCBpdCBwdXRzIHRoZSBhdHRlbnRpb24gb24gc2NyZWVuIGJ1dCBpdCdzIGFsc28gcmVhbGx5IHVzZWZ1bCBmb3IgcHJvZ3JhbW1lcnMgYW5kIGdyYXBoaWMgZGVzaWduZXJzIHdobyB3YW50IHRvIGNoZWNrIHRoZWlyIHdvcmtzLiIsCiAgImdldHRleHQtZG9tYWluIjogInJlYWRpbmctc3RyaXAiLAogICJuYW1lIjogIlJlYWRpbmcgU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "42": {"version": "27", "sha256": "131cfb1kccq3sc098iayjlhkh76bpckgn2w6bjslnxam5xvpm863", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0XHUyMDE5cyBhbiBleHRlbnNpb24gZm9yIEdub21lLVNoZWxsLiBJdCB3b3JrcyBhcyBhIHJlYWRpbmcgZ3VpZGUgZm9yIGNvbXB1dGVyIGFuZCB0aGlzIGlzIHJlYWxseSB1c2VmdWwgZm9yIHBlb3BsZSBhZmZlY3RlZCBieSBkeXNsZXhpYS4gSXQgd29ya3MgZ3JlYXQgaW4gaGVscGluZyBjaGlsZHJlbiBmb2N1c2luZyB0byByZWFkIHZlcnkgd2VsbCwgaXQgbWFya3MgdGhlIHNlbnRlbmNlIHRoYXQgdGhleSBhcmUgcmVhZGluZyBhbmQgaGlkZXMgdGhlIHByZXZpb3VzIGFuZCB0aGUgbmV4dCBvbmUuIEl0J3MgYWxyZWFkeSB1c2VkIGluIGVkdWNhdGlvbiBwcm9qZWN0cyBhdCBzY2hvb2xzLCBpdCBwdXRzIHRoZSBhdHRlbnRpb24gb24gc2NyZWVuIGJ1dCBpdCdzIGFsc28gcmVhbGx5IHVzZWZ1bCBmb3IgcHJvZ3JhbW1lcnMgYW5kIGdyYXBoaWMgZGVzaWduZXJzIHdobyB3YW50IHRvIGNoZWNrIHRoZWlyIHdvcmtzLiIsCiAgImdldHRleHQtZG9tYWluIjogInJlYWRpbmctc3RyaXAiLAogICJuYW1lIjogIlJlYWRpbmcgU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "43": {"version": "27", "sha256": "131cfb1kccq3sc098iayjlhkh76bpckgn2w6bjslnxam5xvpm863", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0XHUyMDE5cyBhbiBleHRlbnNpb24gZm9yIEdub21lLVNoZWxsLiBJdCB3b3JrcyBhcyBhIHJlYWRpbmcgZ3VpZGUgZm9yIGNvbXB1dGVyIGFuZCB0aGlzIGlzIHJlYWxseSB1c2VmdWwgZm9yIHBlb3BsZSBhZmZlY3RlZCBieSBkeXNsZXhpYS4gSXQgd29ya3MgZ3JlYXQgaW4gaGVscGluZyBjaGlsZHJlbiBmb2N1c2luZyB0byByZWFkIHZlcnkgd2VsbCwgaXQgbWFya3MgdGhlIHNlbnRlbmNlIHRoYXQgdGhleSBhcmUgcmVhZGluZyBhbmQgaGlkZXMgdGhlIHByZXZpb3VzIGFuZCB0aGUgbmV4dCBvbmUuIEl0J3MgYWxyZWFkeSB1c2VkIGluIGVkdWNhdGlvbiBwcm9qZWN0cyBhdCBzY2hvb2xzLCBpdCBwdXRzIHRoZSBhdHRlbnRpb24gb24gc2NyZWVuIGJ1dCBpdCdzIGFsc28gcmVhbGx5IHVzZWZ1bCBmb3IgcHJvZ3JhbW1lcnMgYW5kIGdyYXBoaWMgZGVzaWduZXJzIHdobyB3YW50IHRvIGNoZWNrIHRoZWlyIHdvcmtzLiIsCiAgImdldHRleHQtZG9tYWluIjogInJlYWRpbmctc3RyaXAiLAogICJuYW1lIjogIlJlYWRpbmcgU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "44": {"version": "27", "sha256": "131cfb1kccq3sc098iayjlhkh76bpckgn2w6bjslnxam5xvpm863", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0XHUyMDE5cyBhbiBleHRlbnNpb24gZm9yIEdub21lLVNoZWxsLiBJdCB3b3JrcyBhcyBhIHJlYWRpbmcgZ3VpZGUgZm9yIGNvbXB1dGVyIGFuZCB0aGlzIGlzIHJlYWxseSB1c2VmdWwgZm9yIHBlb3BsZSBhZmZlY3RlZCBieSBkeXNsZXhpYS4gSXQgd29ya3MgZ3JlYXQgaW4gaGVscGluZyBjaGlsZHJlbiBmb2N1c2luZyB0byByZWFkIHZlcnkgd2VsbCwgaXQgbWFya3MgdGhlIHNlbnRlbmNlIHRoYXQgdGhleSBhcmUgcmVhZGluZyBhbmQgaGlkZXMgdGhlIHByZXZpb3VzIGFuZCB0aGUgbmV4dCBvbmUuIEl0J3MgYWxyZWFkeSB1c2VkIGluIGVkdWNhdGlvbiBwcm9qZWN0cyBhdCBzY2hvb2xzLCBpdCBwdXRzIHRoZSBhdHRlbnRpb24gb24gc2NyZWVuIGJ1dCBpdCdzIGFsc28gcmVhbGx5IHVzZWZ1bCBmb3IgcHJvZ3JhbW1lcnMgYW5kIGdyYXBoaWMgZGVzaWduZXJzIHdobyB3YW50IHRvIGNoZWNrIHRoZWlyIHdvcmtzLiIsCiAgImdldHRleHQtZG9tYWluIjogInJlYWRpbmctc3RyaXAiLAogICJuYW1lIjogIlJlYWRpbmcgU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjcKfQ=="}
+, {"uuid": "readingstrip@lupantano.gihthub", "name": "ReadingStrip", "pname": "reading-strip", "description": "It's an extension for Gnome-Shell. It works as a reading guide for computer and this is really useful for people affected by dyslexia. It works great in helping children focusing to read very well, it marks the sentence that they are reading and hides the previous and the next one. It's already used in education projects at schools, it puts the attention on screen but it's also really useful for programmers and graphic designers who want to check their works.", "link": "https://extensions.gnome.org/extension/4419/reading-strip/", "shell_version_map": {
+    "38": {"version": "29", "sha256": "1m6wbcmd47yg7p62pg1clh731h4wg5j4fzl39qcji2dgwkyqw0qa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgYW4gZXh0ZW5zaW9uIGZvciBHbm9tZS1TaGVsbC4gSXQgd29ya3MgYXMgYSByZWFkaW5nIGd1aWRlIGZvciBjb21wdXRlciBhbmQgdGhpcyBpcyByZWFsbHkgdXNlZnVsIGZvciBwZW9wbGUgYWZmZWN0ZWQgYnkgZHlzbGV4aWEuIEl0IHdvcmtzIGdyZWF0IGluIGhlbHBpbmcgY2hpbGRyZW4gZm9jdXNpbmcgdG8gcmVhZCB2ZXJ5IHdlbGwsIGl0IG1hcmtzIHRoZSBzZW50ZW5jZSB0aGF0IHRoZXkgYXJlIHJlYWRpbmcgYW5kIGhpZGVzIHRoZSBwcmV2aW91cyBhbmQgdGhlIG5leHQgb25lLiBJdCdzIGFscmVhZHkgdXNlZCBpbiBlZHVjYXRpb24gcHJvamVjdHMgYXQgc2Nob29scywgaXQgcHV0cyB0aGUgYXR0ZW50aW9uIG9uIHNjcmVlbiBidXQgaXQncyBhbHNvIHJlYWxseSB1c2VmdWwgZm9yIHByb2dyYW1tZXJzIGFuZCBncmFwaGljIGRlc2lnbmVycyB3aG8gd2FudCB0byBjaGVjayB0aGVpciB3b3Jrcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyZWFkaW5nLXN0cmlwIiwKICAibmFtZSI6ICJSZWFkaW5nU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "40": {"version": "29", "sha256": "1m6wbcmd47yg7p62pg1clh731h4wg5j4fzl39qcji2dgwkyqw0qa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgYW4gZXh0ZW5zaW9uIGZvciBHbm9tZS1TaGVsbC4gSXQgd29ya3MgYXMgYSByZWFkaW5nIGd1aWRlIGZvciBjb21wdXRlciBhbmQgdGhpcyBpcyByZWFsbHkgdXNlZnVsIGZvciBwZW9wbGUgYWZmZWN0ZWQgYnkgZHlzbGV4aWEuIEl0IHdvcmtzIGdyZWF0IGluIGhlbHBpbmcgY2hpbGRyZW4gZm9jdXNpbmcgdG8gcmVhZCB2ZXJ5IHdlbGwsIGl0IG1hcmtzIHRoZSBzZW50ZW5jZSB0aGF0IHRoZXkgYXJlIHJlYWRpbmcgYW5kIGhpZGVzIHRoZSBwcmV2aW91cyBhbmQgdGhlIG5leHQgb25lLiBJdCdzIGFscmVhZHkgdXNlZCBpbiBlZHVjYXRpb24gcHJvamVjdHMgYXQgc2Nob29scywgaXQgcHV0cyB0aGUgYXR0ZW50aW9uIG9uIHNjcmVlbiBidXQgaXQncyBhbHNvIHJlYWxseSB1c2VmdWwgZm9yIHByb2dyYW1tZXJzIGFuZCBncmFwaGljIGRlc2lnbmVycyB3aG8gd2FudCB0byBjaGVjayB0aGVpciB3b3Jrcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyZWFkaW5nLXN0cmlwIiwKICAibmFtZSI6ICJSZWFkaW5nU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "41": {"version": "29", "sha256": "1m6wbcmd47yg7p62pg1clh731h4wg5j4fzl39qcji2dgwkyqw0qa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgYW4gZXh0ZW5zaW9uIGZvciBHbm9tZS1TaGVsbC4gSXQgd29ya3MgYXMgYSByZWFkaW5nIGd1aWRlIGZvciBjb21wdXRlciBhbmQgdGhpcyBpcyByZWFsbHkgdXNlZnVsIGZvciBwZW9wbGUgYWZmZWN0ZWQgYnkgZHlzbGV4aWEuIEl0IHdvcmtzIGdyZWF0IGluIGhlbHBpbmcgY2hpbGRyZW4gZm9jdXNpbmcgdG8gcmVhZCB2ZXJ5IHdlbGwsIGl0IG1hcmtzIHRoZSBzZW50ZW5jZSB0aGF0IHRoZXkgYXJlIHJlYWRpbmcgYW5kIGhpZGVzIHRoZSBwcmV2aW91cyBhbmQgdGhlIG5leHQgb25lLiBJdCdzIGFscmVhZHkgdXNlZCBpbiBlZHVjYXRpb24gcHJvamVjdHMgYXQgc2Nob29scywgaXQgcHV0cyB0aGUgYXR0ZW50aW9uIG9uIHNjcmVlbiBidXQgaXQncyBhbHNvIHJlYWxseSB1c2VmdWwgZm9yIHByb2dyYW1tZXJzIGFuZCBncmFwaGljIGRlc2lnbmVycyB3aG8gd2FudCB0byBjaGVjayB0aGVpciB3b3Jrcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyZWFkaW5nLXN0cmlwIiwKICAibmFtZSI6ICJSZWFkaW5nU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "42": {"version": "29", "sha256": "1m6wbcmd47yg7p62pg1clh731h4wg5j4fzl39qcji2dgwkyqw0qa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgYW4gZXh0ZW5zaW9uIGZvciBHbm9tZS1TaGVsbC4gSXQgd29ya3MgYXMgYSByZWFkaW5nIGd1aWRlIGZvciBjb21wdXRlciBhbmQgdGhpcyBpcyByZWFsbHkgdXNlZnVsIGZvciBwZW9wbGUgYWZmZWN0ZWQgYnkgZHlzbGV4aWEuIEl0IHdvcmtzIGdyZWF0IGluIGhlbHBpbmcgY2hpbGRyZW4gZm9jdXNpbmcgdG8gcmVhZCB2ZXJ5IHdlbGwsIGl0IG1hcmtzIHRoZSBzZW50ZW5jZSB0aGF0IHRoZXkgYXJlIHJlYWRpbmcgYW5kIGhpZGVzIHRoZSBwcmV2aW91cyBhbmQgdGhlIG5leHQgb25lLiBJdCdzIGFscmVhZHkgdXNlZCBpbiBlZHVjYXRpb24gcHJvamVjdHMgYXQgc2Nob29scywgaXQgcHV0cyB0aGUgYXR0ZW50aW9uIG9uIHNjcmVlbiBidXQgaXQncyBhbHNvIHJlYWxseSB1c2VmdWwgZm9yIHByb2dyYW1tZXJzIGFuZCBncmFwaGljIGRlc2lnbmVycyB3aG8gd2FudCB0byBjaGVjayB0aGVpciB3b3Jrcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyZWFkaW5nLXN0cmlwIiwKICAibmFtZSI6ICJSZWFkaW5nU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "43": {"version": "29", "sha256": "1m6wbcmd47yg7p62pg1clh731h4wg5j4fzl39qcji2dgwkyqw0qa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgYW4gZXh0ZW5zaW9uIGZvciBHbm9tZS1TaGVsbC4gSXQgd29ya3MgYXMgYSByZWFkaW5nIGd1aWRlIGZvciBjb21wdXRlciBhbmQgdGhpcyBpcyByZWFsbHkgdXNlZnVsIGZvciBwZW9wbGUgYWZmZWN0ZWQgYnkgZHlzbGV4aWEuIEl0IHdvcmtzIGdyZWF0IGluIGhlbHBpbmcgY2hpbGRyZW4gZm9jdXNpbmcgdG8gcmVhZCB2ZXJ5IHdlbGwsIGl0IG1hcmtzIHRoZSBzZW50ZW5jZSB0aGF0IHRoZXkgYXJlIHJlYWRpbmcgYW5kIGhpZGVzIHRoZSBwcmV2aW91cyBhbmQgdGhlIG5leHQgb25lLiBJdCdzIGFscmVhZHkgdXNlZCBpbiBlZHVjYXRpb24gcHJvamVjdHMgYXQgc2Nob29scywgaXQgcHV0cyB0aGUgYXR0ZW50aW9uIG9uIHNjcmVlbiBidXQgaXQncyBhbHNvIHJlYWxseSB1c2VmdWwgZm9yIHByb2dyYW1tZXJzIGFuZCBncmFwaGljIGRlc2lnbmVycyB3aG8gd2FudCB0byBjaGVjayB0aGVpciB3b3Jrcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyZWFkaW5nLXN0cmlwIiwKICAibmFtZSI6ICJSZWFkaW5nU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "44": {"version": "29", "sha256": "1m6wbcmd47yg7p62pg1clh731h4wg5j4fzl39qcji2dgwkyqw0qa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgYW4gZXh0ZW5zaW9uIGZvciBHbm9tZS1TaGVsbC4gSXQgd29ya3MgYXMgYSByZWFkaW5nIGd1aWRlIGZvciBjb21wdXRlciBhbmQgdGhpcyBpcyByZWFsbHkgdXNlZnVsIGZvciBwZW9wbGUgYWZmZWN0ZWQgYnkgZHlzbGV4aWEuIEl0IHdvcmtzIGdyZWF0IGluIGhlbHBpbmcgY2hpbGRyZW4gZm9jdXNpbmcgdG8gcmVhZCB2ZXJ5IHdlbGwsIGl0IG1hcmtzIHRoZSBzZW50ZW5jZSB0aGF0IHRoZXkgYXJlIHJlYWRpbmcgYW5kIGhpZGVzIHRoZSBwcmV2aW91cyBhbmQgdGhlIG5leHQgb25lLiBJdCdzIGFscmVhZHkgdXNlZCBpbiBlZHVjYXRpb24gcHJvamVjdHMgYXQgc2Nob29scywgaXQgcHV0cyB0aGUgYXR0ZW50aW9uIG9uIHNjcmVlbiBidXQgaXQncyBhbHNvIHJlYWxseSB1c2VmdWwgZm9yIHByb2dyYW1tZXJzIGFuZCBncmFwaGljIGRlc2lnbmVycyB3aG8gd2FudCB0byBjaGVjayB0aGVpciB3b3Jrcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyZWFkaW5nLXN0cmlwIiwKICAibmFtZSI6ICJSZWFkaW5nU3RyaXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVhZGluZ3N0cmlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdXBhbnRhbm8vcmVhZGluZ3N0cmlwIiwKICAidXVpZCI6ICJyZWFkaW5nc3RyaXBAbHVwYW50YW5vLmdpaHRodWIiLAogICJ2ZXJzaW9uIjogMjkKfQ=="}
   }}
 , {"uuid": "gnome-clipboard@b00f.github.io", "name": "Gnome Clipboard", "pname": "gnome-clipboard", "description": "A gnome shell extension to manage your clipboard.", "link": "https://extensions.gnome.org/extension/4422/gnome-clipboard/", "shell_version_map": {
     "38": {"version": "8", "sha256": "1zgymry549c6pmj1c0f6gvpyyfj0z93fwbhhxa67fx3nf95gb3kv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgZ25vbWUgc2hlbGwgZXh0ZW5zaW9uIHRvIG1hbmFnZSB5b3VyIGNsaXBib2FyZC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1jbGlwYm9hcmQiLAogICJuYW1lIjogIkdub21lIENsaXBib2FyZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2IwMGYvZ25vbWUtY2xpcGJvYXJkIiwKICAidXVpZCI6ICJnbm9tZS1jbGlwYm9hcmRAYjAwZi5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOAp9"},
@@ -3691,7 +3837,8 @@
     "42": {"version": "24", "sha256": "007yp741jl5n6bf1zi4h5w9zhbbm1gavzdgklmrwjj114r49dx2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvZ28gTWVudSAtIE1lbnUgc2ltaWxhciB0byBBcHBsZSdzIG1hY09TIG1lbnUgZm9yIHRoZSBHTk9NRSBEZXNrdG9wXG5UaGlzIGV4dGVuc2lvbiBnaXZlcyBhIHNpbXBsZSBtZW51IGFsb25nIHdpdGggdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBpY29uIG9mIHlvdXIgZGlzdHJvIG9uIHRvcCBsZWZ0IHBhcnQgb2YgdGhlIHBhbmVsIGZvciBhIGdyZWF0IGxvb2suXG5UaGUgSWNvbiBjYW4gYmUgY3VzdG9taXplZCB0aHJvdWdoIHNldHRpbmdzLCBpdCBoYXMgYm90aCBMaW51eCBhbmQgQlNEIGxvZ29zLlxuZm9yIG1vcmUgc2NyZWVuc2hvdHMsIHZpc2l0IEdpdEh1Yi5cblxuVGhlIGRlZmF1bHQgVGVybWluYWwgYW5kIFNvZnR3YXJlIGNlbnRlciBjYW4gYWxzbyBiZSBjaGFuZ2VkLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgLSBodHRwczovL2dpdGh1Yi5jb20vdG9mdXRlY2gvdG9mdW1lbnVcblxuVGhlIG9yaWdpbmFsIHByb2plY3QgaXMgbm8gbW9yZSBzdXBwb3J0ZWQgdGh1cyBJIG1hZGUgdGhpcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJsb2dvLW1lbnUiLAogICJuYW1lIjogIkxvZ28gTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sb2dvLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FyeWFuMjAvTG9nb21lbnUiLAogICJ1dWlkIjogImxvZ29tZW51QGFyeWFuX2siLAogICJ2ZXJzaW9uIjogMjQsCiAgInZlcnNpb24tbmFtZSI6ICIyMC5sZWdhY3kiCn0="},
     "43": {"version": "24", "sha256": "007yp741jl5n6bf1zi4h5w9zhbbm1gavzdgklmrwjj114r49dx2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvZ28gTWVudSAtIE1lbnUgc2ltaWxhciB0byBBcHBsZSdzIG1hY09TIG1lbnUgZm9yIHRoZSBHTk9NRSBEZXNrdG9wXG5UaGlzIGV4dGVuc2lvbiBnaXZlcyBhIHNpbXBsZSBtZW51IGFsb25nIHdpdGggdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBpY29uIG9mIHlvdXIgZGlzdHJvIG9uIHRvcCBsZWZ0IHBhcnQgb2YgdGhlIHBhbmVsIGZvciBhIGdyZWF0IGxvb2suXG5UaGUgSWNvbiBjYW4gYmUgY3VzdG9taXplZCB0aHJvdWdoIHNldHRpbmdzLCBpdCBoYXMgYm90aCBMaW51eCBhbmQgQlNEIGxvZ29zLlxuZm9yIG1vcmUgc2NyZWVuc2hvdHMsIHZpc2l0IEdpdEh1Yi5cblxuVGhlIGRlZmF1bHQgVGVybWluYWwgYW5kIFNvZnR3YXJlIGNlbnRlciBjYW4gYWxzbyBiZSBjaGFuZ2VkLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgLSBodHRwczovL2dpdGh1Yi5jb20vdG9mdXRlY2gvdG9mdW1lbnVcblxuVGhlIG9yaWdpbmFsIHByb2plY3QgaXMgbm8gbW9yZSBzdXBwb3J0ZWQgdGh1cyBJIG1hZGUgdGhpcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJsb2dvLW1lbnUiLAogICJuYW1lIjogIkxvZ28gTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sb2dvLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FyeWFuMjAvTG9nb21lbnUiLAogICJ1dWlkIjogImxvZ29tZW51QGFyeWFuX2siLAogICJ2ZXJzaW9uIjogMjQsCiAgInZlcnNpb24tbmFtZSI6ICIyMC5sZWdhY3kiCn0="},
     "44": {"version": "24", "sha256": "007yp741jl5n6bf1zi4h5w9zhbbm1gavzdgklmrwjj114r49dx2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvZ28gTWVudSAtIE1lbnUgc2ltaWxhciB0byBBcHBsZSdzIG1hY09TIG1lbnUgZm9yIHRoZSBHTk9NRSBEZXNrdG9wXG5UaGlzIGV4dGVuc2lvbiBnaXZlcyBhIHNpbXBsZSBtZW51IGFsb25nIHdpdGggdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBpY29uIG9mIHlvdXIgZGlzdHJvIG9uIHRvcCBsZWZ0IHBhcnQgb2YgdGhlIHBhbmVsIGZvciBhIGdyZWF0IGxvb2suXG5UaGUgSWNvbiBjYW4gYmUgY3VzdG9taXplZCB0aHJvdWdoIHNldHRpbmdzLCBpdCBoYXMgYm90aCBMaW51eCBhbmQgQlNEIGxvZ29zLlxuZm9yIG1vcmUgc2NyZWVuc2hvdHMsIHZpc2l0IEdpdEh1Yi5cblxuVGhlIGRlZmF1bHQgVGVybWluYWwgYW5kIFNvZnR3YXJlIGNlbnRlciBjYW4gYWxzbyBiZSBjaGFuZ2VkLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgLSBodHRwczovL2dpdGh1Yi5jb20vdG9mdXRlY2gvdG9mdW1lbnVcblxuVGhlIG9yaWdpbmFsIHByb2plY3QgaXMgbm8gbW9yZSBzdXBwb3J0ZWQgdGh1cyBJIG1hZGUgdGhpcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJsb2dvLW1lbnUiLAogICJuYW1lIjogIkxvZ28gTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sb2dvLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FyeWFuMjAvTG9nb21lbnUiLAogICJ1dWlkIjogImxvZ29tZW51QGFyeWFuX2siLAogICJ2ZXJzaW9uIjogMjQsCiAgInZlcnNpb24tbmFtZSI6ICIyMC5sZWdhY3kiCn0="},
-    "45": {"version": "29", "sha256": "06ws3pv2yw9vb2qc97b7pd622a7dvamflvd19pr5633wsagd8sza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvZ28gTWVudSAtIE1lbnUgc2ltaWxhciB0byBBcHBsZSdzIG1hY09TIG1lbnUgZm9yIHRoZSBHTk9NRSBEZXNrdG9wXG5UaGlzIGV4dGVuc2lvbiBnaXZlcyBhIHNpbXBsZSBtZW51IGFsb25nIHdpdGggdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBpY29uIG9mIHlvdXIgZGlzdHJvIG9uIHRvcCBsZWZ0IHBhcnQgb2YgdGhlIHBhbmVsIGZvciBhIGdyZWF0IGxvb2suXG5UaGUgSWNvbiBjYW4gYmUgY3VzdG9taXNlZCB0aHJvdWdoIHNldHRpbmdzLCBpdCBoYXMgYm90aCBMaW51eCBhbmQgQlNEIGxvZ29zLlxuRm9yIG1vcmUgc2NyZWVuc2hvdHMsIHZpc2l0IEdpdEh1Yi5cblxuVGhlICdBY3Rpdml0aWVzJyBpbmRpY2F0b3IgaXMgaGlkZGVuIGJ5IGRlZmF1bHQgYnV0IGNhbiBiZSBlbmFibGVkIHRocm91Z2ggc2V0dGluZ3MuXG5cblRoZSBkZWZhdWx0IFRlcm1pbmFsIGFuZCBTb2Z0d2FyZSBjZW50cmUgY2FuIGFsc28gYmUgY2hhbmdlZC5cblxuIEZvcmNlIFF1aXQgd29ya3Mgb24gV2F5bGFuZCBhbmQgWG9yZyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiYXJ5YW4yMCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJsb2dvLW1lbnUiLAogICJuYW1lIjogIkxvZ28gTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sb2dvLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FyeWFuMjAvTG9nb21lbnUiLAogICJ1dWlkIjogImxvZ29tZW51QGFyeWFuX2siLAogICJ2ZXJzaW9uIjogMjksCiAgInZlcnNpb24tbmFtZSI6ICIyMi40Igp9"}
+    "45": {"version": "29", "sha256": "06ws3pv2yw9vb2qc97b7pd622a7dvamflvd19pr5633wsagd8sza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvZ28gTWVudSAtIE1lbnUgc2ltaWxhciB0byBBcHBsZSdzIG1hY09TIG1lbnUgZm9yIHRoZSBHTk9NRSBEZXNrdG9wXG5UaGlzIGV4dGVuc2lvbiBnaXZlcyBhIHNpbXBsZSBtZW51IGFsb25nIHdpdGggdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBpY29uIG9mIHlvdXIgZGlzdHJvIG9uIHRvcCBsZWZ0IHBhcnQgb2YgdGhlIHBhbmVsIGZvciBhIGdyZWF0IGxvb2suXG5UaGUgSWNvbiBjYW4gYmUgY3VzdG9taXNlZCB0aHJvdWdoIHNldHRpbmdzLCBpdCBoYXMgYm90aCBMaW51eCBhbmQgQlNEIGxvZ29zLlxuRm9yIG1vcmUgc2NyZWVuc2hvdHMsIHZpc2l0IEdpdEh1Yi5cblxuVGhlICdBY3Rpdml0aWVzJyBpbmRpY2F0b3IgaXMgaGlkZGVuIGJ5IGRlZmF1bHQgYnV0IGNhbiBiZSBlbmFibGVkIHRocm91Z2ggc2V0dGluZ3MuXG5cblRoZSBkZWZhdWx0IFRlcm1pbmFsIGFuZCBTb2Z0d2FyZSBjZW50cmUgY2FuIGFsc28gYmUgY2hhbmdlZC5cblxuIEZvcmNlIFF1aXQgd29ya3Mgb24gV2F5bGFuZCBhbmQgWG9yZyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiYXJ5YW4yMCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJsb2dvLW1lbnUiLAogICJuYW1lIjogIkxvZ28gTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sb2dvLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FyeWFuMjAvTG9nb21lbnUiLAogICJ1dWlkIjogImxvZ29tZW51QGFyeWFuX2siLAogICJ2ZXJzaW9uIjogMjksCiAgInZlcnNpb24tbmFtZSI6ICIyMi40Igp9"},
+    "46": {"version": "29", "sha256": "06ws3pv2yw9vb2qc97b7pd622a7dvamflvd19pr5633wsagd8sza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvZ28gTWVudSAtIE1lbnUgc2ltaWxhciB0byBBcHBsZSdzIG1hY09TIG1lbnUgZm9yIHRoZSBHTk9NRSBEZXNrdG9wXG5UaGlzIGV4dGVuc2lvbiBnaXZlcyBhIHNpbXBsZSBtZW51IGFsb25nIHdpdGggdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBpY29uIG9mIHlvdXIgZGlzdHJvIG9uIHRvcCBsZWZ0IHBhcnQgb2YgdGhlIHBhbmVsIGZvciBhIGdyZWF0IGxvb2suXG5UaGUgSWNvbiBjYW4gYmUgY3VzdG9taXNlZCB0aHJvdWdoIHNldHRpbmdzLCBpdCBoYXMgYm90aCBMaW51eCBhbmQgQlNEIGxvZ29zLlxuRm9yIG1vcmUgc2NyZWVuc2hvdHMsIHZpc2l0IEdpdEh1Yi5cblxuVGhlICdBY3Rpdml0aWVzJyBpbmRpY2F0b3IgaXMgaGlkZGVuIGJ5IGRlZmF1bHQgYnV0IGNhbiBiZSBlbmFibGVkIHRocm91Z2ggc2V0dGluZ3MuXG5cblRoZSBkZWZhdWx0IFRlcm1pbmFsIGFuZCBTb2Z0d2FyZSBjZW50cmUgY2FuIGFsc28gYmUgY2hhbmdlZC5cblxuIEZvcmNlIFF1aXQgd29ya3Mgb24gV2F5bGFuZCBhbmQgWG9yZyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAiYXJ5YW4yMCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJsb2dvLW1lbnUiLAogICJuYW1lIjogIkxvZ28gTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sb2dvLW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FyeWFuMjAvTG9nb21lbnUiLAogICJ1dWlkIjogImxvZ29tZW51QGFyeWFuX2siLAogICJ2ZXJzaW9uIjogMjksCiAgInZlcnNpb24tbmFtZSI6ICIyMi40Igp9"}
   }}
 , {"uuid": "rog-manager@rog", "name": "Rog Asus Manager", "pname": "rog-asus-manager", "description": "Asus ROG manager", "link": "https://extensions.gnome.org/extension/4452/rog-asus-manager/", "shell_version_map": {
     "38": {"version": "4", "sha256": "194k3qzjd05rki20ww0nv8001aiyp4ih9abv82g64058x8rmnff5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFzdXMgUk9HIG1hbmFnZXIiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJyb2ctbWFuYWdlciIsCiAgIm5hbWUiOiAiUm9nIEFzdXMgTWFuYWdlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5yb2dtYW5hZ2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxlamFuZHJvLW1vdXJhcy9yb2ctbWFuYWdlciIsCiAgInV1aWQiOiAicm9nLW1hbmFnZXJAcm9nIiwKICAidmVyc2lvbiI6IDQKfQ=="}
@@ -3743,7 +3890,9 @@
     "41": {"version": "6", "sha256": "07960zspgcaq986zbq7q428m5gl58yhfz5y6iv3sby6lfzwg9c4p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBuZXQgc3BlZWQgb24gcGFuZWwuIiwKICAibmFtZSI6ICJOZXQgU3BlZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmV0LXNwZWVkLyIsCiAgInV1aWQiOiAibmV0c3BlZWRAYWx5bngub25lIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "42": {"version": "6", "sha256": "07960zspgcaq986zbq7q428m5gl58yhfz5y6iv3sby6lfzwg9c4p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBuZXQgc3BlZWQgb24gcGFuZWwuIiwKICAibmFtZSI6ICJOZXQgU3BlZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmV0LXNwZWVkLyIsCiAgInV1aWQiOiAibmV0c3BlZWRAYWx5bngub25lIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "43": {"version": "6", "sha256": "07960zspgcaq986zbq7q428m5gl58yhfz5y6iv3sby6lfzwg9c4p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBuZXQgc3BlZWQgb24gcGFuZWwuIiwKICAibmFtZSI6ICJOZXQgU3BlZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmV0LXNwZWVkLyIsCiAgInV1aWQiOiAibmV0c3BlZWRAYWx5bngub25lIiwKICAidmVyc2lvbiI6IDYKfQ=="},
-    "44": {"version": "6", "sha256": "07960zspgcaq986zbq7q428m5gl58yhfz5y6iv3sby6lfzwg9c4p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBuZXQgc3BlZWQgb24gcGFuZWwuIiwKICAibmFtZSI6ICJOZXQgU3BlZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmV0LXNwZWVkLyIsCiAgInV1aWQiOiAibmV0c3BlZWRAYWx5bngub25lIiwKICAidmVyc2lvbiI6IDYKfQ=="}
+    "44": {"version": "6", "sha256": "07960zspgcaq986zbq7q428m5gl58yhfz5y6iv3sby6lfzwg9c4p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBuZXQgc3BlZWQgb24gcGFuZWwuIiwKICAibmFtZSI6ICJOZXQgU3BlZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmV0LXNwZWVkLyIsCiAgInV1aWQiOiAibmV0c3BlZWRAYWx5bngub25lIiwKICAidmVyc2lvbiI6IDYKfQ=="},
+    "45": {"version": "9", "sha256": "0z27cirg06bffc92zia7rn763sfz86f4qs3pagf8djvr1hryf33m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBuZXQgc3BlZWQgb24gcGFuZWwuIiwKICAibmFtZSI6ICJOZXQgU3BlZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmV0LXNwZWVkLyIsCiAgInV1aWQiOiAibmV0c3BlZWRAYWx5bngub25lIiwKICAidmVyc2lvbiI6IDkKfQ=="},
+    "46": {"version": "9", "sha256": "0z27cirg06bffc92zia7rn763sfz86f4qs3pagf8djvr1hryf33m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBuZXQgc3BlZWQgb24gcGFuZWwuIiwKICAibmFtZSI6ICJOZXQgU3BlZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FseW54WmhvdS9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmV0LXNwZWVkLyIsCiAgInV1aWQiOiAibmV0c3BlZWRAYWx5bngub25lIiwKICAidmVyc2lvbiI6IDkKfQ=="}
   }}
 , {"uuid": "forge@jmmaranan.com", "name": "Forge", "pname": "forge", "description": "Tiling and window manager for GNOME\n\nPlease report bugs/issues on https://github.com/forge-ext/forge/issues", "link": "https://extensions.gnome.org/extension/4481/forge/", "shell_version_map": {
     "38": {"version": "38", "sha256": "0nnbwf2fy3clzv9hyhrnlqawl05bd0qn4lrr3a1zjmc5rjpxcd0r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyBhbmQgd2luZG93IG1hbmFnZXIgZm9yIEdOT01FXG5cblBsZWFzZSByZXBvcnQgYnVncy9pc3N1ZXMgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZS9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb3JnZSIsCiAgIm5hbWUiOiAiRm9yZ2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZm9yZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mb3JnZS1leHQvZm9yZ2UiLAogICJ1dWlkIjogImZvcmdlQGptbWFyYW5hbi5jb20iLAogICJ2ZXJzaW9uIjogMzgKfQ=="},
@@ -3752,7 +3901,8 @@
     "42": {"version": "68", "sha256": "19rv67nmhbx58n38srmns34hsbjm7kb47kri7lv17c3ik9h0r3zm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyBhbmQgd2luZG93IG1hbmFnZXIgZm9yIEdOT01FXG5cblBsZWFzZSByZXBvcnQgYnVncy9pc3N1ZXMgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZS9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb3JnZSIsCiAgIm5hbWUiOiAiRm9yZ2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZm9yZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZSIsCiAgInV1aWQiOiAiZm9yZ2VAam1tYXJhbmFuLmNvbSIsCiAgInZlcnNpb24iOiA2OAp9"},
     "43": {"version": "72", "sha256": "00v2bclgr8fg8x8fz3pbdlwrdm2nfd403qvclk1px22gqf3527xy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyBhbmQgd2luZG93IG1hbmFnZXIgZm9yIEdOT01FXG5cblBsZWFzZSByZXBvcnQgYnVncy9pc3N1ZXMgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZS9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb3JnZSIsCiAgIm5hbWUiOiAiRm9yZ2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZm9yZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZSIsCiAgInV1aWQiOiAiZm9yZ2VAam1tYXJhbmFuLmNvbSIsCiAgInZlcnNpb24iOiA3Mgp9"},
     "44": {"version": "72", "sha256": "00v2bclgr8fg8x8fz3pbdlwrdm2nfd403qvclk1px22gqf3527xy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyBhbmQgd2luZG93IG1hbmFnZXIgZm9yIEdOT01FXG5cblBsZWFzZSByZXBvcnQgYnVncy9pc3N1ZXMgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZS9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb3JnZSIsCiAgIm5hbWUiOiAiRm9yZ2UiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZm9yZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZSIsCiAgInV1aWQiOiAiZm9yZ2VAam1tYXJhbmFuLmNvbSIsCiAgInZlcnNpb24iOiA3Mgp9"},
-    "45": {"version": "77", "sha256": "085d31xrfcgw9ykdln9nd8373d22dd3ym1jd4hyhnq4jk1awbpbk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyBhbmQgd2luZG93IG1hbmFnZXIgZm9yIEdOT01FXG5cblBsZWFzZSByZXBvcnQgYnVncy9pc3N1ZXMgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZS9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb3JnZSIsCiAgIm5hbWUiOiAiRm9yZ2UiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZvcmdlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZSIsCiAgInV1aWQiOiAiZm9yZ2VAam1tYXJhbmFuLmNvbSIsCiAgInZlcnNpb24iOiA3Nwp9"}
+    "45": {"version": "78", "sha256": "0biz3iw2a030l5ngnsg4w65i0zgmj3djh0ns85q6kz8ic3y2q65h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyBhbmQgd2luZG93IG1hbmFnZXIgZm9yIEdOT01FXG5cblBsZWFzZSByZXBvcnQgYnVncy9pc3N1ZXMgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZS9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb3JnZSIsCiAgIm5hbWUiOiAiRm9yZ2UiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZvcmdlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mb3JnZS1leHQvZm9yZ2UiLAogICJ1dWlkIjogImZvcmdlQGptbWFyYW5hbi5jb20iLAogICJ2ZXJzaW9uIjogNzgKfQ=="},
+    "46": {"version": "78", "sha256": "0biz3iw2a030l5ngnsg4w65i0zgmj3djh0ns85q6kz8ic3y2q65h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyBhbmQgd2luZG93IG1hbmFnZXIgZm9yIEdOT01FXG5cblBsZWFzZSByZXBvcnQgYnVncy9pc3N1ZXMgb24gaHR0cHM6Ly9naXRodWIuY29tL2ZvcmdlLWV4dC9mb3JnZS9pc3N1ZXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb3JnZSIsCiAgIm5hbWUiOiAiRm9yZ2UiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZvcmdlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mb3JnZS1leHQvZm9yZ2UiLAogICJ1dWlkIjogImZvcmdlQGptbWFyYW5hbi5jb20iLAogICJ2ZXJzaW9uIjogNzgKfQ=="}
   }}
 , {"uuid": "autonightlight@zefty.github.io", "name": "Auto Night Light", "pname": "auto-night-light", "description": "Automatically adjust night light", "link": "https://extensions.gnome.org/extension/4482/auto-night-light/", "shell_version_map": {
     "38": {"version": "7", "sha256": "0v76v4z82agn1ay8c0mb2jgnzjf1h9kcp13jhvypcigalfq9qp4n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgYWRqdXN0IG5pZ2h0IGxpZ2h0IiwKICAibmFtZSI6ICJBdXRvIE5pZ2h0IExpZ2h0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9aZWZ0eS9BdXRvTmlnaHRMaWdodCIsCiAgInV1aWQiOiAiYXV0b25pZ2h0bGlnaHRAemVmdHkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDcKfQ=="},
@@ -3782,7 +3932,8 @@
     "42": {"version": "18", "sha256": "0dsr7437fnbgyz3mhdqgjz4c6cs69c4zlx18z4ibqbfjib47z1mn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwcml2YWN5IHNldHRpbmdzIHRvZ2dsZXMgdG8gdGhlIEdOT01FIHN5c3RlbSBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzdHVhcnRoYXlodXJzdCIsCiAgICAicGF5cGFsIjogInN0dWFydGFoYXlodXJzdCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJQcml2YWN5TWVudUBzdHVhcnRoYXlodXJzdCIsCiAgIm5hbWUiOiAiUHJpdmFjeSBRdWljayBTZXR0aW5ncyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wcml2YWN5LW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L3ByaXZhY3ktbWVudS1leHRlbnNpb24iLAogICJ1dWlkIjogIlByaXZhY3lNZW51QHN0dWFydGhheWh1cnN0IiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "43": {"version": "18", "sha256": "0dsr7437fnbgyz3mhdqgjz4c6cs69c4zlx18z4ibqbfjib47z1mn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwcml2YWN5IHNldHRpbmdzIHRvZ2dsZXMgdG8gdGhlIEdOT01FIHN5c3RlbSBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzdHVhcnRoYXlodXJzdCIsCiAgICAicGF5cGFsIjogInN0dWFydGFoYXlodXJzdCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJQcml2YWN5TWVudUBzdHVhcnRoYXlodXJzdCIsCiAgIm5hbWUiOiAiUHJpdmFjeSBRdWljayBTZXR0aW5ncyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wcml2YWN5LW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L3ByaXZhY3ktbWVudS1leHRlbnNpb24iLAogICJ1dWlkIjogIlByaXZhY3lNZW51QHN0dWFydGhheWh1cnN0IiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "44": {"version": "18", "sha256": "0dsr7437fnbgyz3mhdqgjz4c6cs69c4zlx18z4ibqbfjib47z1mn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwcml2YWN5IHNldHRpbmdzIHRvZ2dsZXMgdG8gdGhlIEdOT01FIHN5c3RlbSBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJzdHVhcnRoYXlodXJzdCIsCiAgICAicGF5cGFsIjogInN0dWFydGFoYXlodXJzdCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJQcml2YWN5TWVudUBzdHVhcnRoYXlodXJzdCIsCiAgIm5hbWUiOiAiUHJpdmFjeSBRdWljayBTZXR0aW5ncyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wcml2YWN5LW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0dWFydGhheWh1cnN0L3ByaXZhY3ktbWVudS1leHRlbnNpb24iLAogICJ1dWlkIjogIlByaXZhY3lNZW51QHN0dWFydGhheWh1cnN0IiwKICAidmVyc2lvbiI6IDE4Cn0="},
-    "45": {"version": "24", "sha256": "1w3p959rv31mv44pzjsnbai8jj2s3ldjr7366mvfpgkfw4n4fi7v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwcml2YWN5IHNldHRpbmdzIHRvZ2dsZXMgdG8gdGhlIEdOT01FIHN5c3RlbSBtZW51XG5OT1RFOiBUaGlzIG9ubHkgcHJvdmlkZXMgcXVpY2sgYWNjZXNzIHRvIHNldHRpbmdzLCBpdCBkb2Vzbid0IGRpcmVjdGx5IGFjY2VzcyBoYXJkd2FyZSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic3R1YXJ0aGF5aHVyc3QiLAogICAgInBheXBhbCI6ICJzdHVhcnRhaGF5aHVyc3QiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiUHJpdmFjeU1lbnVAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIlByaXZhY3kgUXVpY2sgU2V0dGluZ3MiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucHJpdmFjeS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdHVhcnRoYXlodXJzdC9wcml2YWN5LW1lbnUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJQcml2YWN5TWVudUBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAyNAp9"}
+    "45": {"version": "24", "sha256": "1w3p959rv31mv44pzjsnbai8jj2s3ldjr7366mvfpgkfw4n4fi7v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwcml2YWN5IHNldHRpbmdzIHRvZ2dsZXMgdG8gdGhlIEdOT01FIHN5c3RlbSBtZW51XG5OT1RFOiBUaGlzIG9ubHkgcHJvdmlkZXMgcXVpY2sgYWNjZXNzIHRvIHNldHRpbmdzLCBpdCBkb2Vzbid0IGRpcmVjdGx5IGFjY2VzcyBoYXJkd2FyZSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic3R1YXJ0aGF5aHVyc3QiLAogICAgInBheXBhbCI6ICJzdHVhcnRhaGF5aHVyc3QiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiUHJpdmFjeU1lbnVAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIlByaXZhY3kgUXVpY2sgU2V0dGluZ3MiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucHJpdmFjeS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdHVhcnRoYXlodXJzdC9wcml2YWN5LW1lbnUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJQcml2YWN5TWVudUBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAyNAp9"},
+    "46": {"version": "24", "sha256": "1w3p959rv31mv44pzjsnbai8jj2s3ldjr7366mvfpgkfw4n4fi7v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwcml2YWN5IHNldHRpbmdzIHRvZ2dsZXMgdG8gdGhlIEdOT01FIHN5c3RlbSBtZW51XG5OT1RFOiBUaGlzIG9ubHkgcHJvdmlkZXMgcXVpY2sgYWNjZXNzIHRvIHNldHRpbmdzLCBpdCBkb2Vzbid0IGRpcmVjdGx5IGFjY2VzcyBoYXJkd2FyZSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic3R1YXJ0aGF5aHVyc3QiLAogICAgInBheXBhbCI6ICJzdHVhcnRhaGF5aHVyc3QiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiUHJpdmFjeU1lbnVAc3R1YXJ0aGF5aHVyc3QiLAogICJuYW1lIjogIlByaXZhY3kgUXVpY2sgU2V0dGluZ3MiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucHJpdmFjeS1tZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zdHVhcnRoYXlodXJzdC9wcml2YWN5LW1lbnUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJQcml2YWN5TWVudUBzdHVhcnRoYXlodXJzdCIsCiAgInZlcnNpb24iOiAyNAp9"}
   }}
 , {"uuid": "hide-panel-lite@fthx", "name": "Hide Panel Lite", "pname": "hide-panel-light-version-without-hot-corner", "description": "Hide top panel except in overview.\n\nFor those who don't need a hot corner (e.g. running GNOME 40+ with three fingers gestures). Very very light extension. No options, no bugs. ;-)", "link": "https://extensions.gnome.org/extension/4496/hide-panel-light-version-without-hot-corner/", "shell_version_map": {
     "38": {"version": "2", "sha256": "13kwd7sh0w34881wwaqvv0mchd7ym7av5s658jcrq2n8n2zma4xi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdG9wIHBhbmVsIGV4Y2VwdCBpbiBvdmVydmlldy5cblxuRm9yIHRob3NlIHdobyBkb24ndCBuZWVkIGEgaG90IGNvcm5lciAoZS5nLiBydW5uaW5nIEdOT01FIDQwKyB3aXRoIHRocmVlIGZpbmdlcnMgZ2VzdHVyZXMpLiBWZXJ5IHZlcnkgbGlnaHQgZXh0ZW5zaW9uLiBObyBvcHRpb25zLCBubyBidWdzLiA7LSkiLAogICJuYW1lIjogIkhpZGUgUGFuZWwgTGl0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvaGlkZS1wYW5lbC1saXRlIiwKICAidXVpZCI6ICJoaWRlLXBhbmVsLWxpdGVAZnRoeCIsCiAgInZlcnNpb24iOiAyCn0="},
@@ -3856,7 +4007,8 @@
     "42": {"version": "27", "sha256": "0mh69mrrnc59njmzm1l4rcznw4ixcp8y4d5k9m7ckkk861lm0k1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGN1c3RvbSBncmlkIHVzaW5nIHlvdXIga2V5Ym9hcmQuIFR5cGUgU3VwZXItVCB0byBzaG93IHRoZSBncmlkLCB0aGVuIHR5cGUgdHdvIHRpbGVzIChvciB0aGUgc2FtZSB0aWxlIHR3aWNlKSB0byBtb3ZlIHRoZSBhY3RpdmUgd2luZG93LlxuXG5UaGUgZ3JpZCBjYW4gYmUgdXAgdG8gNHgzIChjb3JyZXNwb25kaW5nIHRvIG9uZSBoYW5kIG9uIHRoZSBrZXlib2FyZCkgYW5kIGVhY2ggcm93L2NvbHVtbiBjYW4gYmUgd2VpZ2h0ZWQgdG8gdGFrZSB1cCBtb3JlIG9yIGxlc3Mgc3BhY2UuIiwKICAibmFtZSI6ICJUYWN0aWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhY3RpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2x1bmRhbC90YWN0aWxlIiwKICAidXVpZCI6ICJ0YWN0aWxlQGx1bmRhbC5pbyIsCiAgInZlcnNpb24iOiAyNwp9"},
     "43": {"version": "27", "sha256": "0mh69mrrnc59njmzm1l4rcznw4ixcp8y4d5k9m7ckkk861lm0k1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGN1c3RvbSBncmlkIHVzaW5nIHlvdXIga2V5Ym9hcmQuIFR5cGUgU3VwZXItVCB0byBzaG93IHRoZSBncmlkLCB0aGVuIHR5cGUgdHdvIHRpbGVzIChvciB0aGUgc2FtZSB0aWxlIHR3aWNlKSB0byBtb3ZlIHRoZSBhY3RpdmUgd2luZG93LlxuXG5UaGUgZ3JpZCBjYW4gYmUgdXAgdG8gNHgzIChjb3JyZXNwb25kaW5nIHRvIG9uZSBoYW5kIG9uIHRoZSBrZXlib2FyZCkgYW5kIGVhY2ggcm93L2NvbHVtbiBjYW4gYmUgd2VpZ2h0ZWQgdG8gdGFrZSB1cCBtb3JlIG9yIGxlc3Mgc3BhY2UuIiwKICAibmFtZSI6ICJUYWN0aWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhY3RpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2x1bmRhbC90YWN0aWxlIiwKICAidXVpZCI6ICJ0YWN0aWxlQGx1bmRhbC5pbyIsCiAgInZlcnNpb24iOiAyNwp9"},
     "44": {"version": "27", "sha256": "0mh69mrrnc59njmzm1l4rcznw4ixcp8y4d5k9m7ckkk861lm0k1g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGN1c3RvbSBncmlkIHVzaW5nIHlvdXIga2V5Ym9hcmQuIFR5cGUgU3VwZXItVCB0byBzaG93IHRoZSBncmlkLCB0aGVuIHR5cGUgdHdvIHRpbGVzIChvciB0aGUgc2FtZSB0aWxlIHR3aWNlKSB0byBtb3ZlIHRoZSBhY3RpdmUgd2luZG93LlxuXG5UaGUgZ3JpZCBjYW4gYmUgdXAgdG8gNHgzIChjb3JyZXNwb25kaW5nIHRvIG9uZSBoYW5kIG9uIHRoZSBrZXlib2FyZCkgYW5kIGVhY2ggcm93L2NvbHVtbiBjYW4gYmUgd2VpZ2h0ZWQgdG8gdGFrZSB1cCBtb3JlIG9yIGxlc3Mgc3BhY2UuIiwKICAibmFtZSI6ICJUYWN0aWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhY3RpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2x1bmRhbC90YWN0aWxlIiwKICAidXVpZCI6ICJ0YWN0aWxlQGx1bmRhbC5pbyIsCiAgInZlcnNpb24iOiAyNwp9"},
-    "45": {"version": "30", "sha256": "06ys92waii3id1fxl4c3v17335h06l938a69vmdhx2p354y4r1aq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGN1c3RvbSBncmlkIHVzaW5nIHlvdXIga2V5Ym9hcmQuIFR5cGUgU3VwZXItVCB0byBzaG93IHRoZSBncmlkLCB0aGVuIHR5cGUgdHdvIHRpbGVzIChvciB0aGUgc2FtZSB0aWxlIHR3aWNlKSB0byBtb3ZlIHRoZSBhY3RpdmUgd2luZG93LlxuXG5UaGUgZ3JpZCBjYW4gYmUgdXAgdG8gNHgzIChjb3JyZXNwb25kaW5nIHRvIG9uZSBoYW5kIG9uIHRoZSBrZXlib2FyZCkgYW5kIGVhY2ggcm93L2NvbHVtbiBjYW4gYmUgd2VpZ2h0ZWQgdG8gdGFrZSB1cCBtb3JlIG9yIGxlc3Mgc3BhY2UuIiwKICAibmFtZSI6ICJUYWN0aWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhY3RpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbHVuZGFsL3RhY3RpbGUiLAogICJ1dWlkIjogInRhY3RpbGVAbHVuZGFsLmlvIiwKICAidmVyc2lvbiI6IDMwCn0="}
+    "45": {"version": "32", "sha256": "1am7657h8plcg0vvv41gps0zbfwmx8rw7khjnknn0jzyx8r8ni0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGN1c3RvbSBncmlkIHVzaW5nIHlvdXIga2V5Ym9hcmQuIFR5cGUgU3VwZXItVCB0byBzaG93IHRoZSBncmlkLCB0aGVuIHR5cGUgdHdvIHRpbGVzIChvciB0aGUgc2FtZSB0aWxlIHR3aWNlKSB0byBtb3ZlIHRoZSBhY3RpdmUgd2luZG93LlxuXG5UaGUgZ3JpZCBjYW4gYmUgdXAgdG8gNHgzIChjb3JyZXNwb25kaW5nIHRvIG9uZSBoYW5kIG9uIHRoZSBrZXlib2FyZCkgYW5kIGVhY2ggcm93L2NvbHVtbiBjYW4gYmUgd2VpZ2h0ZWQgdG8gdGFrZSB1cCBtb3JlIG9yIGxlc3Mgc3BhY2UuIiwKICAibmFtZSI6ICJUYWN0aWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhY3RpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2x1bmRhbC90YWN0aWxlIiwKICAidXVpZCI6ICJ0YWN0aWxlQGx1bmRhbC5pbyIsCiAgInZlcnNpb24iOiAzMgp9"},
+    "46": {"version": "32", "sha256": "1am7657h8plcg0vvv41gps0zbfwmx8rw7khjnknn0jzyx8r8ni0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyBvbiBhIGN1c3RvbSBncmlkIHVzaW5nIHlvdXIga2V5Ym9hcmQuIFR5cGUgU3VwZXItVCB0byBzaG93IHRoZSBncmlkLCB0aGVuIHR5cGUgdHdvIHRpbGVzIChvciB0aGUgc2FtZSB0aWxlIHR3aWNlKSB0byBtb3ZlIHRoZSBhY3RpdmUgd2luZG93LlxuXG5UaGUgZ3JpZCBjYW4gYmUgdXAgdG8gNHgzIChjb3JyZXNwb25kaW5nIHRvIG9uZSBoYW5kIG9uIHRoZSBrZXlib2FyZCkgYW5kIGVhY2ggcm93L2NvbHVtbiBjYW4gYmUgd2VpZ2h0ZWQgdG8gdGFrZSB1cCBtb3JlIG9yIGxlc3Mgc3BhY2UuIiwKICAibmFtZSI6ICJUYWN0aWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhY3RpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2x1bmRhbC90YWN0aWxlIiwKICAidXVpZCI6ICJ0YWN0aWxlQGx1bmRhbC5pbyIsCiAgInZlcnNpb24iOiAzMgp9"}
   }}
 , {"uuid": "killapp@adam.gadmz", "name": "Kill App", "pname": "kill-app", "description": "Force quit or kill application", "link": "https://extensions.gnome.org/extension/4551/kill-app/", "shell_version_map": {
     "38": {"version": "5", "sha256": "1d768xi63z8917p0m67wdy5vmv514yq6p3m84qyzk5lv084h5x0y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImF1dGhvciI6ICJBZGFtIiwKICAiZGVzY3JpcHRpb24iOiAiRm9yY2UgcXVpdCBvciBraWxsIGFwcGxpY2F0aW9uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWtpbGxhcHAiLAogICJuYW1lIjogIktpbGwgQXBwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZHVvbmdnaWFraGFuaGIvS2lsbGFwcF9HTk9NRV9FeHRlbnNpb24iLAogICJ1dWlkIjogImtpbGxhcHBAYWRhbS5nYWRteiIsCiAgInZlcnNpb24iOiA1Cn0="},
@@ -3902,7 +4054,8 @@
     "42": {"version": "9", "sha256": "0ajv1mw03pjbyyimmgbzsi4wvpfns9vb8x4w79kbwymcs0l9bh9h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIEFjdGl2YXRlIEdOT01FIHdhdGVybWFyayBvbiB5b3VyIHNjcmVlbi4gTWlncmF0aW5nIGZyb20gV2luZG93cyBoYXMgbmV2ZXIgYmVlbiBlYXNpZXIhIiwKICAibmFtZSI6ICJBY3RpdmF0ZSBHTk9NRSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hY3RpdmF0ZV9nbm9tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaXNqZXJyeXhpYW8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFjdGl2YXRlLWdub21lIiwKICAidXVpZCI6ICJhY3RpdmF0ZV9nbm9tZUBpc2plcnJ5eGlhbyIsCiAgInZlcnNpb24iOiA5Cn0="},
     "43": {"version": "9", "sha256": "0ajv1mw03pjbyyimmgbzsi4wvpfns9vb8x4w79kbwymcs0l9bh9h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIEFjdGl2YXRlIEdOT01FIHdhdGVybWFyayBvbiB5b3VyIHNjcmVlbi4gTWlncmF0aW5nIGZyb20gV2luZG93cyBoYXMgbmV2ZXIgYmVlbiBlYXNpZXIhIiwKICAibmFtZSI6ICJBY3RpdmF0ZSBHTk9NRSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hY3RpdmF0ZV9nbm9tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaXNqZXJyeXhpYW8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFjdGl2YXRlLWdub21lIiwKICAidXVpZCI6ICJhY3RpdmF0ZV9nbm9tZUBpc2plcnJ5eGlhbyIsCiAgInZlcnNpb24iOiA5Cn0="},
     "44": {"version": "9", "sha256": "0ajv1mw03pjbyyimmgbzsi4wvpfns9vb8x4w79kbwymcs0l9bh9h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIEFjdGl2YXRlIEdOT01FIHdhdGVybWFyayBvbiB5b3VyIHNjcmVlbi4gTWlncmF0aW5nIGZyb20gV2luZG93cyBoYXMgbmV2ZXIgYmVlbiBlYXNpZXIhIiwKICAibmFtZSI6ICJBY3RpdmF0ZSBHTk9NRSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hY3RpdmF0ZV9nbm9tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaXNqZXJyeXhpYW8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFjdGl2YXRlLWdub21lIiwKICAidXVpZCI6ICJhY3RpdmF0ZV9nbm9tZUBpc2plcnJ5eGlhbyIsCiAgInZlcnNpb24iOiA5Cn0="},
-    "45": {"version": "10", "sha256": "19mkkrvrxar6s3ggdziii7aq6r783qaisjff4dplmyg4qwx3d4mp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIEFjdGl2YXRlIEdOT01FIHdhdGVybWFyayBvbiB5b3VyIHNjcmVlbi4gTWlncmF0aW5nIGZyb20gV2luZG93cyBoYXMgbmV2ZXIgYmVlbiBlYXNpZXIhIiwKICAibmFtZSI6ICJBY3RpdmF0ZSBHTk9NRSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hY3RpdmF0ZV9nbm9tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pc2plcnJ5eGlhby9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWN0aXZhdGUtZ25vbWUiLAogICJ1dWlkIjogImFjdGl2YXRlX2dub21lQGlzamVycnl4aWFvIiwKICAidmVyc2lvbiI6IDEwCn0="}
+    "45": {"version": "11", "sha256": "19x8511xpjsarz31kpy4nm4kfvlfny77avn150x19cjy9rlcx4l6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIEFjdGl2YXRlIEdOT01FIHdhdGVybWFyayBvbiB5b3VyIHNjcmVlbi4gTWlncmF0aW5nIGZyb20gV2luZG93cyBoYXMgbmV2ZXIgYmVlbiBlYXNpZXIhIiwKICAibmFtZSI6ICJBY3RpdmF0ZSBHTk9NRSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hY3RpdmF0ZV9nbm9tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaXNqZXJyeXhpYW8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFjdGl2YXRlLWdub21lIiwKICAidXVpZCI6ICJhY3RpdmF0ZV9nbm9tZUBpc2plcnJ5eGlhbyIsCiAgInZlcnNpb24iOiAxMQp9"},
+    "46": {"version": "11", "sha256": "19x8511xpjsarz31kpy4nm4kfvlfny77avn150x19cjy9rlcx4l6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIEFjdGl2YXRlIEdOT01FIHdhdGVybWFyayBvbiB5b3VyIHNjcmVlbi4gTWlncmF0aW5nIGZyb20gV2luZG93cyBoYXMgbmV2ZXIgYmVlbiBlYXNpZXIhIiwKICAibmFtZSI6ICJBY3RpdmF0ZSBHTk9NRSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hY3RpdmF0ZV9nbm9tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaXNqZXJyeXhpYW8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFjdGl2YXRlLWdub21lIiwKICAidXVpZCI6ICJhY3RpdmF0ZV9nbm9tZUBpc2plcnJ5eGlhbyIsCiAgInZlcnNpb24iOiAxMQp9"}
   }}
 , {"uuid": "huawei-wmi@apps.sdore.me", "name": "Huawei WMI controls", "pname": "huawei-wmi-controls", "description": "Control various Huawei and Honor laptops WMI functions, such as battery protection, Fn-lock, power unlock and keyboard backlight.", "link": "https://extensions.gnome.org/extension/4580/huawei-wmi-controls/", "shell_version_map": {
     "40": {"version": "11", "sha256": "1id2glrzcb2ppk1kfjldpdcz0v88az6nqi6vkms3r4cgnjyy88b0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdmFyaW91cyBIdWF3ZWkgYW5kIEhvbm9yIGxhcHRvcHMgV01JIGZ1bmN0aW9ucywgc3VjaCBhcyBiYXR0ZXJ5IHByb3RlY3Rpb24sIEZuLWxvY2ssIHBvd2VyIHVubG9jayBhbmQga2V5Ym9hcmQgYmFja2xpZ2h0LiIsCiAgIm5hbWUiOiAiSHVhd2VpIFdNSSBjb250cm9scyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2FwcHMuc2RvcmUubWUvZ25vbWUtZXh0ZW5zaW9uLWh1YXdlaS13bWkiLAogICJ1dWlkIjogImh1YXdlaS13bWlAYXBwcy5zZG9yZS5tZSIsCiAgInZlcnNpb24iOiAxMQp9"},
@@ -3935,12 +4088,13 @@
     "44": {"version": "10", "sha256": "18cs5lix4bws201vqbcrgv0icc57njqp85f66k75sqlai7jqxawf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXVsYXRlcyBzd2l0Y2hpbmcgdGhlIHdvcmtzcGFjZSBvbiB0aGUgYWN0aXZlIG1vbml0b3Igb25seS4gQ3RybCtBbHQrcSBzd2l0Y2hlcyB0byB0aGUgcHJldmlvdXMgd29ya3NwYWNlLCBDdHJsK0FsdCthIHN3aXRjaGVzIHRvIHRoZSBuZXh0IiwKICAibmFtZSI6ICJTd2l0Y2ggd29ya3NwYWNlcyBvbiBhY3RpdmUgbW9uaXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiZGFyb3NtaWNAZ21haWwuY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNpbXVsYXRlLXN3aXRjaGluZy13b3Jrc3BhY2VzLW9uLWFjdGl2ZS1tb25pdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9taWNoZWxlZGFyb3MvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNpbXVsYXRlLXN3aXRjaGluZy13b3Jrc3BhY2VzLW9uLWFjdGl2ZS1tb25pdG9yIiwKICAidXVpZCI6ICJzaW11bGF0ZS1zd2l0Y2hpbmctd29ya3NwYWNlcy1vbi1hY3RpdmUtbW9uaXRvckBtaWNoZWxlZGFyb3MuY29tIiwKICAidmVyc2lvbiI6IDEwCn0="},
     "45": {"version": "15", "sha256": "1dl2pg1zdb02cbvdk05x9xl78fgrfla0vfdb80zh5fxcfnw5w915", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXVsYXRlcyBzd2l0Y2hpbmcgdGhlIHdvcmtzcGFjZSBvbiB0aGUgYWN0aXZlIG1vbml0b3Igb25seS4gQ3RybCtBbHQrcSBzd2l0Y2hlcyB0byB0aGUgcHJldmlvdXMgd29ya3NwYWNlLCBDdHJsK0FsdCthIHN3aXRjaGVzIHRvIHRoZSBuZXh0IiwKICAibmFtZSI6ICJTd2l0Y2ggd29ya3NwYWNlcyBvbiBhY3RpdmUgbW9uaXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiZGFyb3NtaWNAZ21haWwuY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNpbXVsYXRlLXN3aXRjaGluZy13b3Jrc3BhY2VzLW9uLWFjdGl2ZS1tb25pdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21pY2hlbGVkYXJvcy9nbm9tZS1zaGVsbC1leHRlbnNpb24tc2ltdWxhdGUtc3dpdGNoaW5nLXdvcmtzcGFjZXMtb24tYWN0aXZlLW1vbml0b3IiLAogICJ1dWlkIjogInNpbXVsYXRlLXN3aXRjaGluZy13b3Jrc3BhY2VzLW9uLWFjdGl2ZS1tb25pdG9yQG1pY2hlbGVkYXJvcy5jb20iLAogICJ2ZXJzaW9uIjogMTUKfQ=="}
   }}
-, {"uuid": "newworkspaceshortcut@barnix.io", "name": "New Workspace Shortcut", "pname": "new-workspace-shortcut", "description": "Use a shortcut to insert a new workspace to the right of your current workspace. Use a second shortcut to change the location of your workspace.", "link": "https://extensions.gnome.org/extension/4597/new-workspace-shortcut/", "shell_version_map": {
+, {"uuid": "newworkspaceshortcut@barnix.io", "name": "New Workspace Shortcut", "pname": "new-workspace-shortcut", "description": "Shortcuts to (1) insert a new workspace, (2) reorder workspaces and (3) window-mangement assitant for minimal tiling.", "link": "https://extensions.gnome.org/extension/4597/new-workspace-shortcut/", "shell_version_map": {
     "41": {"version": "9", "sha256": "1vnraf73wvsq5kmw78gjiyn7ix4mzvfq803fhmk2781v9j5f4jgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHdpbGwgZW5hYmxlIHRoZSBmb2xsb3dpbmc6XG5cbk1vdmUtd2luZG93LXRvLW5ldy13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgdGhlIGluLWZvY3VzIHdpbmRvdyB0byBhIG5ldyB3b3Jrc3BhY2Ugb24gdGhlIHJpZ2h0IG9mIHlvdXIgY3VycmVudCB3b3Jrc3BhY2U6IEN0bCArIFN1cGVyICsgU2hpZnQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIFNoaWZ0ICsgTGVmdFxuXG5OZXctZW1wdHktd29ya3NwYWNlIFNob3J0Y3V0OlxuICAgICAgICBVc2UgYSBzaG9ydGN1dCB0byBjcmVhdGUgYW4gZW1wdHkgd29ya3NwYWNlIG9uIHRoZSByaWdodDogQ3RsICsgU3VwZXIgKyBBbHQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIEFsdCArIExlZnRcblxuUmVvcmRlci13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgYW4gZW50aXJlIHdvcmtzcGFjZSBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBjdXJyZW50IHdvcmtzcGFjZTogQ3RsICsgU3VwZXIgKyBMZWZ0IG9yIEN0bCArIFN1cGVyICsgUmlnaHRcbiAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBzaG9ydGN1dCB3aXRoIGF1dG9tYXRpY2FsbHkgdHJpZ2dlciB0aGUgT3ZlcnZpZXcgdG8gcHJvdmlkZSBhIGxpbWl0ZWQgZm9ybSBvZiB2aXN1YWwgZmVlZGJhY2suIEhvd2V2ZXIsIHRoaXMgcHJlZmVyZW5jZSBjYW4gYmUgY2hhbmdlZCB2aWEgdGhlIGV4dGVuc2lvbidzIFNldHRpbmdzIHBhbmVsLiIsCiAgIm5hbWUiOiAiTmV3IFdvcmtzcGFjZSBTaG9ydGN1dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uZXd3b3Jrc3BhY2VzaG9ydGN1dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Jhcm5zY290dC9uZXd3b3Jrc3BhY2VzaG9ydGN1dC1iYXJuaXguaW8iLAogICJ1dWlkIjogIm5ld3dvcmtzcGFjZXNob3J0Y3V0QGJhcm5peC5pbyIsCiAgInZlcnNpb24iOiA5Cn0="},
     "42": {"version": "9", "sha256": "1vnraf73wvsq5kmw78gjiyn7ix4mzvfq803fhmk2781v9j5f4jgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHdpbGwgZW5hYmxlIHRoZSBmb2xsb3dpbmc6XG5cbk1vdmUtd2luZG93LXRvLW5ldy13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgdGhlIGluLWZvY3VzIHdpbmRvdyB0byBhIG5ldyB3b3Jrc3BhY2Ugb24gdGhlIHJpZ2h0IG9mIHlvdXIgY3VycmVudCB3b3Jrc3BhY2U6IEN0bCArIFN1cGVyICsgU2hpZnQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIFNoaWZ0ICsgTGVmdFxuXG5OZXctZW1wdHktd29ya3NwYWNlIFNob3J0Y3V0OlxuICAgICAgICBVc2UgYSBzaG9ydGN1dCB0byBjcmVhdGUgYW4gZW1wdHkgd29ya3NwYWNlIG9uIHRoZSByaWdodDogQ3RsICsgU3VwZXIgKyBBbHQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIEFsdCArIExlZnRcblxuUmVvcmRlci13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgYW4gZW50aXJlIHdvcmtzcGFjZSBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBjdXJyZW50IHdvcmtzcGFjZTogQ3RsICsgU3VwZXIgKyBMZWZ0IG9yIEN0bCArIFN1cGVyICsgUmlnaHRcbiAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBzaG9ydGN1dCB3aXRoIGF1dG9tYXRpY2FsbHkgdHJpZ2dlciB0aGUgT3ZlcnZpZXcgdG8gcHJvdmlkZSBhIGxpbWl0ZWQgZm9ybSBvZiB2aXN1YWwgZmVlZGJhY2suIEhvd2V2ZXIsIHRoaXMgcHJlZmVyZW5jZSBjYW4gYmUgY2hhbmdlZCB2aWEgdGhlIGV4dGVuc2lvbidzIFNldHRpbmdzIHBhbmVsLiIsCiAgIm5hbWUiOiAiTmV3IFdvcmtzcGFjZSBTaG9ydGN1dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uZXd3b3Jrc3BhY2VzaG9ydGN1dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Jhcm5zY290dC9uZXd3b3Jrc3BhY2VzaG9ydGN1dC1iYXJuaXguaW8iLAogICJ1dWlkIjogIm5ld3dvcmtzcGFjZXNob3J0Y3V0QGJhcm5peC5pbyIsCiAgInZlcnNpb24iOiA5Cn0="},
     "43": {"version": "9", "sha256": "1vnraf73wvsq5kmw78gjiyn7ix4mzvfq803fhmk2781v9j5f4jgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHdpbGwgZW5hYmxlIHRoZSBmb2xsb3dpbmc6XG5cbk1vdmUtd2luZG93LXRvLW5ldy13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgdGhlIGluLWZvY3VzIHdpbmRvdyB0byBhIG5ldyB3b3Jrc3BhY2Ugb24gdGhlIHJpZ2h0IG9mIHlvdXIgY3VycmVudCB3b3Jrc3BhY2U6IEN0bCArIFN1cGVyICsgU2hpZnQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIFNoaWZ0ICsgTGVmdFxuXG5OZXctZW1wdHktd29ya3NwYWNlIFNob3J0Y3V0OlxuICAgICAgICBVc2UgYSBzaG9ydGN1dCB0byBjcmVhdGUgYW4gZW1wdHkgd29ya3NwYWNlIG9uIHRoZSByaWdodDogQ3RsICsgU3VwZXIgKyBBbHQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIEFsdCArIExlZnRcblxuUmVvcmRlci13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgYW4gZW50aXJlIHdvcmtzcGFjZSBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBjdXJyZW50IHdvcmtzcGFjZTogQ3RsICsgU3VwZXIgKyBMZWZ0IG9yIEN0bCArIFN1cGVyICsgUmlnaHRcbiAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBzaG9ydGN1dCB3aXRoIGF1dG9tYXRpY2FsbHkgdHJpZ2dlciB0aGUgT3ZlcnZpZXcgdG8gcHJvdmlkZSBhIGxpbWl0ZWQgZm9ybSBvZiB2aXN1YWwgZmVlZGJhY2suIEhvd2V2ZXIsIHRoaXMgcHJlZmVyZW5jZSBjYW4gYmUgY2hhbmdlZCB2aWEgdGhlIGV4dGVuc2lvbidzIFNldHRpbmdzIHBhbmVsLiIsCiAgIm5hbWUiOiAiTmV3IFdvcmtzcGFjZSBTaG9ydGN1dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uZXd3b3Jrc3BhY2VzaG9ydGN1dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Jhcm5zY290dC9uZXd3b3Jrc3BhY2VzaG9ydGN1dC1iYXJuaXguaW8iLAogICJ1dWlkIjogIm5ld3dvcmtzcGFjZXNob3J0Y3V0QGJhcm5peC5pbyIsCiAgInZlcnNpb24iOiA5Cn0="},
     "44": {"version": "10", "sha256": "02mkarap1bzj3znnfc2wbkjm8g1zidifbm1lcf12wxvi7b5db8i0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIHdpbGwgZW5hYmxlIHRoZSBmb2xsb3dpbmc6XG5cbk1vdmUtd2luZG93LXRvLW5ldy13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgdGhlIGluLWZvY3VzIHdpbmRvdyB0byBhIG5ldyB3b3Jrc3BhY2Ugb24gdGhlIHJpZ2h0IG9mIHlvdXIgY3VycmVudCB3b3Jrc3BhY2U6IEN0bCArIFN1cGVyICsgU2hpZnQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIFNoaWZ0ICsgTGVmdFxuXG5OZXctZW1wdHktd29ya3NwYWNlIFNob3J0Y3V0OlxuICAgICAgICBVc2UgYSBzaG9ydGN1dCB0byBjcmVhdGUgYW4gZW1wdHkgd29ya3NwYWNlIG9uIHRoZSByaWdodDogQ3RsICsgU3VwZXIgKyBBbHQgKyBSaWdodFxuICAgICAgICBPciB0byB0aGUgbGVmdCAvIGJhY2t3YXJkOiBDdGwgKyBTdXBlciArIEFsdCArIExlZnRcblxuUmVvcmRlci13b3Jrc3BhY2UgU2hvcnRjdXQ6XG4gICAgICAgIFVzZSBhIHNob3J0Y3V0IHRvIG1vdmUgYW4gZW50aXJlIHdvcmtzcGFjZSBsZWZ0IG9yIHJpZ2h0IG9mIHRoZSBjdXJyZW50IHdvcmtzcGFjZTogQ3RsICsgU3VwZXIgKyBMZWZ0IG9yIEN0bCArIFN1cGVyICsgUmlnaHRcbiAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBzaG9ydGN1dCB3aXRoIGF1dG9tYXRpY2FsbHkgdHJpZ2dlciB0aGUgT3ZlcnZpZXcgdG8gcHJvdmlkZSBhIGxpbWl0ZWQgZm9ybSBvZiB2aXN1YWwgZmVlZGJhY2suIEhvd2V2ZXIsIHRoaXMgcHJlZmVyZW5jZSBjYW4gYmUgY2hhbmdlZCB2aWEgdGhlIGV4dGVuc2lvbidzIFNldHRpbmdzIHBhbmVsLiIsCiAgIm5hbWUiOiAiTmV3IFdvcmtzcGFjZSBTaG9ydGN1dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uZXd3b3Jrc3BhY2VzaG9ydGN1dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iYXJuc2NvdHQvbmV3d29ya3NwYWNlc2hvcnRjdXQtYmFybml4LmlvIiwKICAidXVpZCI6ICJuZXd3b3Jrc3BhY2VzaG9ydGN1dEBiYXJuaXguaW8iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
-    "45": {"version": "13", "sha256": "1dgx94gm9mrmyqp4bb0gnjb8mlpqy3qvbhs0q5zg1ls1c0nairz9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSBhIHNob3J0Y3V0IHRvIGluc2VydCBhIG5ldyB3b3Jrc3BhY2UgdG8gdGhlIHJpZ2h0IG9mIHlvdXIgY3VycmVudCB3b3Jrc3BhY2UuIFVzZSBhIHNlY29uZCBzaG9ydGN1dCB0byBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHlvdXIgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiTmV3IFdvcmtzcGFjZSBTaG9ydGN1dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uZXd3b3Jrc3BhY2VzaG9ydGN1dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iYXJuc2NvdHQvbmV3d29ya3NwYWNlc2hvcnRjdXQtYmFybml4LmlvIiwKICAidXVpZCI6ICJuZXd3b3Jrc3BhY2VzaG9ydGN1dEBiYXJuaXguaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="}
+    "45": {"version": "16", "sha256": "19rvv5rgyj65k7xgd0sn345kqdg24f17g2czf05vmkgkqilqac2g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3J0Y3V0cyB0byAoMSkgaW5zZXJ0IGEgbmV3IHdvcmtzcGFjZSwgKDIpIHJlb3JkZXIgd29ya3NwYWNlcyBhbmQgKDMpIHdpbmRvdy1tYW5nZW1lbnQgYXNzaXRhbnQgZm9yIG1pbmltYWwgdGlsaW5nLiIsCiAgIm5hbWUiOiAiTmV3IFdvcmtzcGFjZSBTaG9ydGN1dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uZXd3b3Jrc3BhY2VzaG9ydGN1dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYmFybnNjb3R0L25ld3dvcmtzcGFjZXNob3J0Y3V0LWJhcm5peC5pbyIsCiAgInV1aWQiOiAibmV3d29ya3NwYWNlc2hvcnRjdXRAYmFybml4LmlvIiwKICAidmVyc2lvbiI6IDE2Cn0="},
+    "46": {"version": "16", "sha256": "19rvv5rgyj65k7xgd0sn345kqdg24f17g2czf05vmkgkqilqac2g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3J0Y3V0cyB0byAoMSkgaW5zZXJ0IGEgbmV3IHdvcmtzcGFjZSwgKDIpIHJlb3JkZXIgd29ya3NwYWNlcyBhbmQgKDMpIHdpbmRvdy1tYW5nZW1lbnQgYXNzaXRhbnQgZm9yIG1pbmltYWwgdGlsaW5nLiIsCiAgIm5hbWUiOiAiTmV3IFdvcmtzcGFjZSBTaG9ydGN1dCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uZXd3b3Jrc3BhY2VzaG9ydGN1dCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYmFybnNjb3R0L25ld3dvcmtzcGFjZXNob3J0Y3V0LWJhcm5peC5pbyIsCiAgInV1aWQiOiAibmV3d29ya3NwYWNlc2hvcnRjdXRAYmFybml4LmlvIiwKICAidmVyc2lvbiI6IDE2Cn0="}
   }}
 , {"uuid": "p.stonham@switcheroo.org", "name": "Switcheroo", "pname": "switcheroo", "description": "Switch to the first window with the title x\n\nA very small extension to allow you to switch windows via gdbus. This is particularly useful if you are using wayland as utilities such as wmctrl won't work.\n\nSince Gnome 41 removed org.gnome.Shell.Eval for security reasons, if you ever used a command such as:\n\ngdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval\"var mw = global.get_window_actors().map(w=&gt;w.meta_window).find(mw=&gt;mw.get_title().includes('Firefox'));mw &amp;&amp; mw.activate(0)\"\n\nthis can now be replaced with:\n\ngdbus call --session --dest org.gnome.Shell --object-path /org/switcheroo/Switcheroo --method org.switcheroo.Switcheroo.Set Firefox\n\nThis can then be assigned to a shortcut key in Gnome settings or called programmatically.", "link": "https://extensions.gnome.org/extension/4600/switcheroo/", "shell_version_map": {
     "41": {"version": "3", "sha256": "0pfjhx8pm26zpizazd2pbpfqsr8vwc6znrm1cbf4ydcyvfxsnwwh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB0byB0aGUgZmlyc3Qgd2luZG93IHdpdGggdGhlIHRpdGxlIHhcblxuQSB2ZXJ5IHNtYWxsIGV4dGVuc2lvbiB0byBhbGxvdyB5b3UgdG8gc3dpdGNoIHdpbmRvd3MgdmlhIGdkYnVzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyB3YXlsYW5kIGFzIHV0aWxpdGllcyBzdWNoIGFzIHdtY3RybCB3b24ndCB3b3JrLlxuXG5TaW5jZSBHbm9tZSA0MSByZW1vdmVkIG9yZy5nbm9tZS5TaGVsbC5FdmFsIGZvciBzZWN1cml0eSByZWFzb25zLCBpZiB5b3UgZXZlciB1c2VkIGEgY29tbWFuZCBzdWNoIGFzOlxuXG5nZGJ1cyBjYWxsIC0tc2Vzc2lvbiAtLWRlc3Qgb3JnLmdub21lLlNoZWxsIC0tb2JqZWN0LXBhdGggL29yZy9nbm9tZS9TaGVsbCAtLW1ldGhvZCBvcmcuZ25vbWUuU2hlbGwuRXZhbFwidmFyIG13ID0gZ2xvYmFsLmdldF93aW5kb3dfYWN0b3JzKCkubWFwKHc9Jmd0O3cubWV0YV93aW5kb3cpLmZpbmQobXc9Jmd0O213LmdldF90aXRsZSgpLmluY2x1ZGVzKCdGaXJlZm94JykpO213ICZhbXA7JmFtcDsgbXcuYWN0aXZhdGUoMClcIlxuXG50aGlzIGNhbiBub3cgYmUgcmVwbGFjZWQgd2l0aDpcblxuZ2RidXMgY2FsbCAtLXNlc3Npb24gLS1kZXN0IG9yZy5nbm9tZS5TaGVsbCAtLW9iamVjdC1wYXRoIC9vcmcvc3dpdGNoZXJvby9Td2l0Y2hlcm9vIC0tbWV0aG9kIG9yZy5zd2l0Y2hlcm9vLlN3aXRjaGVyb28uU2V0IEZpcmVmb3hcblxuVGhpcyBjYW4gdGhlbiBiZSBhc3NpZ25lZCB0byBhIHNob3J0Y3V0IGtleSBpbiBHbm9tZSBzZXR0aW5ncyBvciBjYWxsZWQgcHJvZ3JhbW1hdGljYWxseS4iLAogICJuYW1lIjogIlN3aXRjaGVyb28iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInAuc3RvbmhhbUBzd2l0Y2hlcm9vLm9yZyIsCiAgInZlcnNpb24iOiAzCn0="}
@@ -3952,7 +4106,8 @@
     "42": {"version": "12", "sha256": "1yl96vx8mi60avp710fqwkd8c51d47ddc3vkdwq5l73frib22gg6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgYWlycGxhbmUgbW9kZSBzYW5lIGFnYWluISBUaGlzIGV4dGVuc2lvbiBnaXZlcyB5b3UgYmV0dGVyIGNvbnRyb2wgb3ZlciB0aGUgYWlycGxhbmUgbW9kZSBhbmQgbGV0cyB5b3UgdHVybiBvZmYgdGhlIGFubm95aW5nIFwiQmx1ZXRvb3RoIGdldHMgdHVybmVkIG9uIHdoZW4gSSBkaXNhYmxlIGFpcnBsYW5lIG1vZGVcIiBiZWhhdmlvdXIuIiwKICAibmFtZSI6ICJTYW5lIEFpcnBsYW5lIE1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3hLaXBwaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tc2FuZS1haXJwbGFuZS1tb2RlIiwKICAidXVpZCI6ICJzYW5lLWFpcnBsYW5lLW1vZGVAa2lwcGkiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "43": {"version": "12", "sha256": "1yl96vx8mi60avp710fqwkd8c51d47ddc3vkdwq5l73frib22gg6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgYWlycGxhbmUgbW9kZSBzYW5lIGFnYWluISBUaGlzIGV4dGVuc2lvbiBnaXZlcyB5b3UgYmV0dGVyIGNvbnRyb2wgb3ZlciB0aGUgYWlycGxhbmUgbW9kZSBhbmQgbGV0cyB5b3UgdHVybiBvZmYgdGhlIGFubm95aW5nIFwiQmx1ZXRvb3RoIGdldHMgdHVybmVkIG9uIHdoZW4gSSBkaXNhYmxlIGFpcnBsYW5lIG1vZGVcIiBiZWhhdmlvdXIuIiwKICAibmFtZSI6ICJTYW5lIEFpcnBsYW5lIE1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3hLaXBwaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tc2FuZS1haXJwbGFuZS1tb2RlIiwKICAidXVpZCI6ICJzYW5lLWFpcnBsYW5lLW1vZGVAa2lwcGkiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "44": {"version": "12", "sha256": "1yl96vx8mi60avp710fqwkd8c51d47ddc3vkdwq5l73frib22gg6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgYWlycGxhbmUgbW9kZSBzYW5lIGFnYWluISBUaGlzIGV4dGVuc2lvbiBnaXZlcyB5b3UgYmV0dGVyIGNvbnRyb2wgb3ZlciB0aGUgYWlycGxhbmUgbW9kZSBhbmQgbGV0cyB5b3UgdHVybiBvZmYgdGhlIGFubm95aW5nIFwiQmx1ZXRvb3RoIGdldHMgdHVybmVkIG9uIHdoZW4gSSBkaXNhYmxlIGFpcnBsYW5lIG1vZGVcIiBiZWhhdmlvdXIuIiwKICAibmFtZSI6ICJTYW5lIEFpcnBsYW5lIE1vZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3hLaXBwaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tc2FuZS1haXJwbGFuZS1tb2RlIiwKICAidXVpZCI6ICJzYW5lLWFpcnBsYW5lLW1vZGVAa2lwcGkiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
-    "45": {"version": "13", "sha256": "0fciqv67rfahdhq3qi58lgng5d12s5vabipqqzlz19zkljh5hgr2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgYWlycGxhbmUgbW9kZSBzYW5lIGFnYWluISBUaGlzIGV4dGVuc2lvbiBnaXZlcyB5b3UgYmV0dGVyIGNvbnRyb2wgb3ZlciB0aGUgYWlycGxhbmUgbW9kZSBhbmQgbGV0cyB5b3UgdHVybiBvZmYgdGhlIGFubm95aW5nIFwiQmx1ZXRvb3RoIGdldHMgdHVybmVkIG9uIHdoZW4gSSBkaXNhYmxlIGFpcnBsYW5lIG1vZGVcIiBiZWhhdmlvdXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2FuZS1haXJwbGFuZS1tb2RlIiwKICAibmFtZSI6ICJTYW5lIEFpcnBsYW5lIE1vZGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2FuZS1haXJwbGFuZS1tb2RlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0FudGlLaXBwaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tc2FuZS1haXJwbGFuZS1tb2RlIiwKICAidXVpZCI6ICJzYW5lLWFpcnBsYW5lLW1vZGVAa2lwcGkiLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICIyLjAuMCIKfQ=="}
+    "45": {"version": "14", "sha256": "1kfp5zm206xx3nfxcvhpzbqsspyqmp3mxdq4j0lvpgfaw78vv4a3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgYWlycGxhbmUgbW9kZSBzYW5lIGFnYWluISBUaGlzIGV4dGVuc2lvbiBnaXZlcyB5b3UgYmV0dGVyIGNvbnRyb2wgb3ZlciB0aGUgYWlycGxhbmUgbW9kZSBhbmQgbGV0cyB5b3UgdHVybiBvZmYgdGhlIGFubm95aW5nIFwiQmx1ZXRvb3RoIGdldHMgdHVybmVkIG9uIHdoZW4gSSBkaXNhYmxlIGFpcnBsYW5lIG1vZGVcIiBiZWhhdmlvdXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2FuZS1haXJwbGFuZS1tb2RlIiwKICAibmFtZSI6ICJTYW5lIEFpcnBsYW5lIE1vZGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2FuZS1haXJwbGFuZS1tb2RlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9BbnRpS2lwcGkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNhbmUtYWlycGxhbmUtbW9kZSIsCiAgInV1aWQiOiAic2FuZS1haXJwbGFuZS1tb2RlQGtpcHBpIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiMi4wLjEiCn0="},
+    "46": {"version": "14", "sha256": "1kfp5zm206xx3nfxcvhpzbqsspyqmp3mxdq4j0lvpgfaw78vv4a3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgYWlycGxhbmUgbW9kZSBzYW5lIGFnYWluISBUaGlzIGV4dGVuc2lvbiBnaXZlcyB5b3UgYmV0dGVyIGNvbnRyb2wgb3ZlciB0aGUgYWlycGxhbmUgbW9kZSBhbmQgbGV0cyB5b3UgdHVybiBvZmYgdGhlIGFubm95aW5nIFwiQmx1ZXRvb3RoIGdldHMgdHVybmVkIG9uIHdoZW4gSSBkaXNhYmxlIGFpcnBsYW5lIG1vZGVcIiBiZWhhdmlvdXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2FuZS1haXJwbGFuZS1tb2RlIiwKICAibmFtZSI6ICJTYW5lIEFpcnBsYW5lIE1vZGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2FuZS1haXJwbGFuZS1tb2RlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9BbnRpS2lwcGkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNhbmUtYWlycGxhbmUtbW9kZSIsCiAgInV1aWQiOiAic2FuZS1haXJwbGFuZS1tb2RlQGtpcHBpIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiMi4wLjEiCn0="}
   }}
 , {"uuid": "undecorate@tabdeveloper.com", "name": "Undecorate Window for Wayland", "pname": "undecorate-window-for-wayland", "description": "Adds undecorate option to window menu to toggle window decoration.", "link": "https://extensions.gnome.org/extension/4606/undecorate-window-for-wayland/", "shell_version_map": {
     "40": {"version": "4", "sha256": "11a93rd1vnnfhlqlb0j9ninx6ziqbbfbpqhi319zlx185358vfq0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgdW5kZWNvcmF0ZSBvcHRpb24gdG8gd2luZG93IG1lbnUgdG8gdG9nZ2xlIHdpbmRvdyBkZWNvcmF0aW9uLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi11bmRlY29yYXRlIiwKICAibmFtZSI6ICJVbmRlY29yYXRlIFdpbmRvdyBmb3IgV2F5bGFuZCIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAic3VuLnd4Z0BnbWFpbC5jb20iLAogICAgInRpbUB0YWJkZXZlbG9wZXIuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy51bmRlY29yYXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjIwIiwKICAgICIzLjIyIiwKICAgICIzLjI0IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YnJhbnllbi9nbm9tZS1zaGVsbC1leHRlbnNpb24tdW5kZWNvcmF0ZSIsCiAgInV1aWQiOiAidW5kZWNvcmF0ZUB0YWJkZXZlbG9wZXIuY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -3998,14 +4153,16 @@
     "42": {"version": "14", "sha256": "1f9qpw8hy5lppnm15jga5ka5qb4a175aqq6a5n5jm0fwn6w2v84m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBmb2N1cyBiZXR3ZWVuIHdpbmRvd3MgaW4gYWxsIGRpcmVjdGlvbnMuXG5cblRoZSBleHRlbnNpb24gd2lsbCBmaXJzdCB0cnkgdG8gZmluZCBhIHN1aXRhYmxlIHdpbmRvdyB3aXRoaW4gdGhlIHNhbWUgbW9uaXRvci4gSWYgdGhlcmUgaXMgbm9uZSwgaXQgd2lsbCB0cnkgdG8gZmluZCBvbmUgb24gdGhlIG5leHQgbW9uaXRvciBpbiB0aGF0IGRpcmVjdGlvbiAoaW4gYSBtdWx0aS1tb25pdG9yIHNldHVwKS5cblxuRGVmYXVsdCBzaG9ydGN1dHMgKGNhbiBiZSBjaGFuZ2VkIGluIHByZWZlcmVuY2VzKTpcbjxTdXBlcj4raCA9IEZvY3VzIGxlZnRcbjxTdXBlcj4raiA9IEZvY3VzIGRvd25cbjxTdXBlcj4rayA9IEZvY3VzIHVwXG48U3VwZXI+K2wgPSBGb2N1cyByaWdodCIsCiAgIm5hbWUiOiAiRm9jdXMgY2hhbmdlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFydGluaGphcnRteXIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZvY3VzLWNoYW5nZXIiLAogICJ1dWlkIjogImZvY3VzLWNoYW5nZXJAaGVhcnRtaXJlIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "43": {"version": "14", "sha256": "1f9qpw8hy5lppnm15jga5ka5qb4a175aqq6a5n5jm0fwn6w2v84m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBmb2N1cyBiZXR3ZWVuIHdpbmRvd3MgaW4gYWxsIGRpcmVjdGlvbnMuXG5cblRoZSBleHRlbnNpb24gd2lsbCBmaXJzdCB0cnkgdG8gZmluZCBhIHN1aXRhYmxlIHdpbmRvdyB3aXRoaW4gdGhlIHNhbWUgbW9uaXRvci4gSWYgdGhlcmUgaXMgbm9uZSwgaXQgd2lsbCB0cnkgdG8gZmluZCBvbmUgb24gdGhlIG5leHQgbW9uaXRvciBpbiB0aGF0IGRpcmVjdGlvbiAoaW4gYSBtdWx0aS1tb25pdG9yIHNldHVwKS5cblxuRGVmYXVsdCBzaG9ydGN1dHMgKGNhbiBiZSBjaGFuZ2VkIGluIHByZWZlcmVuY2VzKTpcbjxTdXBlcj4raCA9IEZvY3VzIGxlZnRcbjxTdXBlcj4raiA9IEZvY3VzIGRvd25cbjxTdXBlcj4rayA9IEZvY3VzIHVwXG48U3VwZXI+K2wgPSBGb2N1cyByaWdodCIsCiAgIm5hbWUiOiAiRm9jdXMgY2hhbmdlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFydGluaGphcnRteXIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZvY3VzLWNoYW5nZXIiLAogICJ1dWlkIjogImZvY3VzLWNoYW5nZXJAaGVhcnRtaXJlIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "44": {"version": "14", "sha256": "1f9qpw8hy5lppnm15jga5ka5qb4a175aqq6a5n5jm0fwn6w2v84m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBmb2N1cyBiZXR3ZWVuIHdpbmRvd3MgaW4gYWxsIGRpcmVjdGlvbnMuXG5cblRoZSBleHRlbnNpb24gd2lsbCBmaXJzdCB0cnkgdG8gZmluZCBhIHN1aXRhYmxlIHdpbmRvdyB3aXRoaW4gdGhlIHNhbWUgbW9uaXRvci4gSWYgdGhlcmUgaXMgbm9uZSwgaXQgd2lsbCB0cnkgdG8gZmluZCBvbmUgb24gdGhlIG5leHQgbW9uaXRvciBpbiB0aGF0IGRpcmVjdGlvbiAoaW4gYSBtdWx0aS1tb25pdG9yIHNldHVwKS5cblxuRGVmYXVsdCBzaG9ydGN1dHMgKGNhbiBiZSBjaGFuZ2VkIGluIHByZWZlcmVuY2VzKTpcbjxTdXBlcj4raCA9IEZvY3VzIGxlZnRcbjxTdXBlcj4raiA9IEZvY3VzIGRvd25cbjxTdXBlcj4rayA9IEZvY3VzIHVwXG48U3VwZXI+K2wgPSBGb2N1cyByaWdodCIsCiAgIm5hbWUiOiAiRm9jdXMgY2hhbmdlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFydGluaGphcnRteXIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWZvY3VzLWNoYW5nZXIiLAogICJ1dWlkIjogImZvY3VzLWNoYW5nZXJAaGVhcnRtaXJlIiwKICAidmVyc2lvbiI6IDE0Cn0="},
-    "45": {"version": "17", "sha256": "1rxy7y8f29bznkzryaqilpmmh3agxmg752zbgvqfwa7hcbps84an", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBmb2N1cyBiZXR3ZWVuIHdpbmRvd3MgaW4gYWxsIGRpcmVjdGlvbnMuXG5cblRoZSBleHRlbnNpb24gd2lsbCBmaXJzdCB0cnkgdG8gZmluZCBhIHN1aXRhYmxlIHdpbmRvdyB3aXRoaW4gdGhlIHNhbWUgbW9uaXRvci4gSWYgdGhlcmUgaXMgbm9uZSwgaXQgd2lsbCB0cnkgdG8gZmluZCBvbmUgb24gdGhlIG5leHQgbW9uaXRvciBpbiB0aGF0IGRpcmVjdGlvbiAoaW4gYSBtdWx0aS1tb25pdG9yIHNldHVwKS5cblxuRGVmYXVsdCBzaG9ydGN1dHMgKGNhbiBiZSBjaGFuZ2VkIGluIHByZWZlcmVuY2VzKTpcbjxTdXBlcj4raCA9IEZvY3VzIGxlZnRcbjxTdXBlcj4raiA9IEZvY3VzIGRvd25cbjxTdXBlcj4rayA9IEZvY3VzIHVwXG48U3VwZXI+K2wgPSBGb2N1cyByaWdodCIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImhlYXJ0bWlyZSIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb2N1cy1jaGFuZ2VyQGhlYXJ0bWlyZSIsCiAgIm5hbWUiOiAiRm9jdXMgY2hhbmdlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mb2N1cy1jaGFuZ2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcnRpbmhqYXJ0bXlyL2dub21lLXNoZWxsLWV4dGVuc2lvbi1mb2N1cy1jaGFuZ2VyIiwKICAidXVpZCI6ICJmb2N1cy1jaGFuZ2VyQGhlYXJ0bWlyZSIsCiAgInZlcnNpb24iOiAxNwp9"}
+    "45": {"version": "19", "sha256": "1d6p10cgvn7afc7cg1g2bfhw2n9gjirjfddk04nc6s47wj557rwl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBmb2N1cyBiZXR3ZWVuIHdpbmRvd3MgaW4gYWxsIGRpcmVjdGlvbnMuXG5cblRoZSBleHRlbnNpb24gd2lsbCBmaXJzdCB0cnkgdG8gZmluZCBhIHN1aXRhYmxlIHdpbmRvdyB3aXRoaW4gdGhlIHNhbWUgbW9uaXRvci4gSWYgdGhlcmUgaXMgbm9uZSwgaXQgd2lsbCB0cnkgdG8gZmluZCBvbmUgb24gdGhlIG5leHQgbW9uaXRvciBpbiB0aGF0IGRpcmVjdGlvbiAoaW4gYSBtdWx0aS1tb25pdG9yIHNldHVwKS5cblxuRGVmYXVsdCBzaG9ydGN1dHMgKGNhbiBiZSBjaGFuZ2VkIGluIHByZWZlcmVuY2VzKTpcbjxTdXBlcj4raCA9IEZvY3VzIGxlZnRcbjxTdXBlcj4raiA9IEZvY3VzIGRvd25cbjxTdXBlcj4rayA9IEZvY3VzIHVwXG48U3VwZXI+K2wgPSBGb2N1cyByaWdodCIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImhlYXJ0bWlyZSIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb2N1cy1jaGFuZ2VyQGhlYXJ0bWlyZSIsCiAgIm5hbWUiOiAiRm9jdXMgY2hhbmdlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mb2N1cy1jaGFuZ2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ0aW5oamFydG15ci9nbm9tZS1zaGVsbC1leHRlbnNpb24tZm9jdXMtY2hhbmdlciIsCiAgInV1aWQiOiAiZm9jdXMtY2hhbmdlckBoZWFydG1pcmUiLAogICJ2ZXJzaW9uIjogMTkKfQ=="},
+    "46": {"version": "19", "sha256": "1d6p10cgvn7afc7cg1g2bfhw2n9gjirjfddk04nc6s47wj557rwl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSBmb2N1cyBiZXR3ZWVuIHdpbmRvd3MgaW4gYWxsIGRpcmVjdGlvbnMuXG5cblRoZSBleHRlbnNpb24gd2lsbCBmaXJzdCB0cnkgdG8gZmluZCBhIHN1aXRhYmxlIHdpbmRvdyB3aXRoaW4gdGhlIHNhbWUgbW9uaXRvci4gSWYgdGhlcmUgaXMgbm9uZSwgaXQgd2lsbCB0cnkgdG8gZmluZCBvbmUgb24gdGhlIG5leHQgbW9uaXRvciBpbiB0aGF0IGRpcmVjdGlvbiAoaW4gYSBtdWx0aS1tb25pdG9yIHNldHVwKS5cblxuRGVmYXVsdCBzaG9ydGN1dHMgKGNhbiBiZSBjaGFuZ2VkIGluIHByZWZlcmVuY2VzKTpcbjxTdXBlcj4raCA9IEZvY3VzIGxlZnRcbjxTdXBlcj4raiA9IEZvY3VzIGRvd25cbjxTdXBlcj4rayA9IEZvY3VzIHVwXG48U3VwZXI+K2wgPSBGb2N1cyByaWdodCIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImhlYXJ0bWlyZSIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJmb2N1cy1jaGFuZ2VyQGhlYXJ0bWlyZSIsCiAgIm5hbWUiOiAiRm9jdXMgY2hhbmdlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mb2N1cy1jaGFuZ2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ0aW5oamFydG15ci9nbm9tZS1zaGVsbC1leHRlbnNpb24tZm9jdXMtY2hhbmdlciIsCiAgInV1aWQiOiAiZm9jdXMtY2hhbmdlckBoZWFydG1pcmUiLAogICJ2ZXJzaW9uIjogMTkKfQ=="}
   }}
 , {"uuid": "no-titlebar-when-maximized@alec.ninja", "name": "No Titlebar When Maximized", "pname": "no-titlebar-when-maximized", "description": "Hides the classic title bar of maximized X.Org windows", "link": "https://extensions.gnome.org/extension/4630/no-titlebar-when-maximized/", "shell_version_map": {
     "41": {"version": "11", "sha256": "0ai3fz37ij5k6s5mjhh9934bmwxs2m3fnir26sjrdsk5b3pgrygz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBjbGFzc2ljIHRpdGxlIGJhciBvZiBtYXhpbWl6ZWQgWC5Pcmcgd2luZG93cyIsCiAgIm5hbWUiOiAiTm8gVGl0bGViYXIgV2hlbiBNYXhpbWl6ZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxlY2RvdG5pbmphL25vLXRpdGxlYmFyLXdoZW4tbWF4aW1pemVkIiwKICAidXVpZCI6ICJuby10aXRsZWJhci13aGVuLW1heGltaXplZEBhbGVjLm5pbmphIiwKICAidmVyc2lvbiI6IDExCn0="},
     "42": {"version": "11", "sha256": "0ai3fz37ij5k6s5mjhh9934bmwxs2m3fnir26sjrdsk5b3pgrygz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBjbGFzc2ljIHRpdGxlIGJhciBvZiBtYXhpbWl6ZWQgWC5Pcmcgd2luZG93cyIsCiAgIm5hbWUiOiAiTm8gVGl0bGViYXIgV2hlbiBNYXhpbWl6ZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxlY2RvdG5pbmphL25vLXRpdGxlYmFyLXdoZW4tbWF4aW1pemVkIiwKICAidXVpZCI6ICJuby10aXRsZWJhci13aGVuLW1heGltaXplZEBhbGVjLm5pbmphIiwKICAidmVyc2lvbiI6IDExCn0="},
     "43": {"version": "11", "sha256": "0ai3fz37ij5k6s5mjhh9934bmwxs2m3fnir26sjrdsk5b3pgrygz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBjbGFzc2ljIHRpdGxlIGJhciBvZiBtYXhpbWl6ZWQgWC5Pcmcgd2luZG93cyIsCiAgIm5hbWUiOiAiTm8gVGl0bGViYXIgV2hlbiBNYXhpbWl6ZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxlY2RvdG5pbmphL25vLXRpdGxlYmFyLXdoZW4tbWF4aW1pemVkIiwKICAidXVpZCI6ICJuby10aXRsZWJhci13aGVuLW1heGltaXplZEBhbGVjLm5pbmphIiwKICAidmVyc2lvbiI6IDExCn0="},
     "44": {"version": "11", "sha256": "0ai3fz37ij5k6s5mjhh9934bmwxs2m3fnir26sjrdsk5b3pgrygz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBjbGFzc2ljIHRpdGxlIGJhciBvZiBtYXhpbWl6ZWQgWC5Pcmcgd2luZG93cyIsCiAgIm5hbWUiOiAiTm8gVGl0bGViYXIgV2hlbiBNYXhpbWl6ZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxlY2RvdG5pbmphL25vLXRpdGxlYmFyLXdoZW4tbWF4aW1pemVkIiwKICAidXVpZCI6ICJuby10aXRsZWJhci13aGVuLW1heGltaXplZEBhbGVjLm5pbmphIiwKICAidmVyc2lvbiI6IDExCn0="},
-    "45": {"version": "14", "sha256": "07q32416kk7iilq2ifkll6ql583bavmcy68n9vcxlxxkakv0xfn4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBjbGFzc2ljIHRpdGxlIGJhciBvZiBtYXhpbWl6ZWQgWC5Pcmcgd2luZG93cyIsCiAgIm5hbWUiOiAiTm8gVGl0bGViYXIgV2hlbiBNYXhpbWl6ZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxlY2RvdG5pbmphL25vLXRpdGxlYmFyLXdoZW4tbWF4aW1pemVkIiwKICAidXVpZCI6ICJuby10aXRsZWJhci13aGVuLW1heGltaXplZEBhbGVjLm5pbmphIiwKICAidmVyc2lvbiI6IDE0Cn0="}
+    "45": {"version": "15", "sha256": "1xh6if7d5zl9rkzvjgg0fns3pizw02404dmdwdc7gbbir03nvnd8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBjbGFzc2ljIHRpdGxlIGJhciBvZiBtYXhpbWl6ZWQgWC5Pcmcgd2luZG93cyIsCiAgIm5hbWUiOiAiTm8gVGl0bGViYXIgV2hlbiBNYXhpbWl6ZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsZWNkb3RuaW5qYS9uby10aXRsZWJhci13aGVuLW1heGltaXplZCIsCiAgInV1aWQiOiAibm8tdGl0bGViYXItd2hlbi1tYXhpbWl6ZWRAYWxlYy5uaW5qYSIsCiAgInZlcnNpb24iOiAxNQp9"},
+    "46": {"version": "15", "sha256": "1xh6if7d5zl9rkzvjgg0fns3pizw02404dmdwdc7gbbir03nvnd8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBjbGFzc2ljIHRpdGxlIGJhciBvZiBtYXhpbWl6ZWQgWC5Pcmcgd2luZG93cyIsCiAgIm5hbWUiOiAiTm8gVGl0bGViYXIgV2hlbiBNYXhpbWl6ZWQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsZWNkb3RuaW5qYS9uby10aXRsZWJhci13aGVuLW1heGltaXplZCIsCiAgInV1aWQiOiAibm8tdGl0bGViYXItd2hlbi1tYXhpbWl6ZWRAYWxlYy5uaW5qYSIsCiAgInZlcnNpb24iOiAxNQp9"}
   }}
 , {"uuid": "cryptowatch@d0x2f.github.com", "name": "CryptoWatch", "pname": "cryptowatch", "description": "Display live crypto portfolio balances.", "link": "https://extensions.gnome.org/extension/4633/cryptowatch/", "shell_version_map": {
     "40": {"version": "10", "sha256": "1q980xnrarcvzfpvdkn1pwz436k296g7l9d813zrl40hq7dwjzh3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgbGl2ZSBjcnlwdG8gcG9ydGZvbGlvIGJhbGFuY2VzLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJjcnlwdG93YXRjaCIsCiAgImdldHRleHQtZG9tYWluIjogImNyeXB0b3dhdGNoIiwKICAibmFtZSI6ICJDcnlwdG9XYXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jcnlwdG93YXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kMHgyZi9DcnlwdG9XYXRjaCIsCiAgInV1aWQiOiAiY3J5cHRvd2F0Y2hAZDB4MmYuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
@@ -4029,7 +4186,8 @@
     "42": {"version": "23", "sha256": "02kgp6ihg8gkkhxprxd7m9i186i0l3sy954lp6s3aq23v2ya0yn0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZHVsZ2UgaW4gbm9zdGFsZ2lhIHdpdGggdXNlbGVzcyAzRCBlZmZlY3RzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic2NobmVlZ2FucyIsCiAgICAia29maSI6ICJzY2huZWVnYW5zIiwKICAgICJwYXlwYWwiOiAic2ltb25zY2huZWVnYW5zIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRlc2t0b3AtY3ViZSIsCiAgIm5hbWUiOiAiRGVza3RvcCBDdWJlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlc2t0b3AtY3ViZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvRGVza3RvcC1DdWJlIiwKICAidXVpZCI6ICJkZXNrdG9wLWN1YmVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="},
     "43": {"version": "23", "sha256": "02kgp6ihg8gkkhxprxd7m9i186i0l3sy954lp6s3aq23v2ya0yn0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZHVsZ2UgaW4gbm9zdGFsZ2lhIHdpdGggdXNlbGVzcyAzRCBlZmZlY3RzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic2NobmVlZ2FucyIsCiAgICAia29maSI6ICJzY2huZWVnYW5zIiwKICAgICJwYXlwYWwiOiAic2ltb25zY2huZWVnYW5zIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRlc2t0b3AtY3ViZSIsCiAgIm5hbWUiOiAiRGVza3RvcCBDdWJlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlc2t0b3AtY3ViZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvRGVza3RvcC1DdWJlIiwKICAidXVpZCI6ICJkZXNrdG9wLWN1YmVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="},
     "44": {"version": "23", "sha256": "02kgp6ihg8gkkhxprxd7m9i186i0l3sy954lp6s3aq23v2ya0yn0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZHVsZ2UgaW4gbm9zdGFsZ2lhIHdpdGggdXNlbGVzcyAzRCBlZmZlY3RzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic2NobmVlZ2FucyIsCiAgICAia29maSI6ICJzY2huZWVnYW5zIiwKICAgICJwYXlwYWwiOiAic2ltb25zY2huZWVnYW5zIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRlc2t0b3AtY3ViZSIsCiAgIm5hbWUiOiAiRGVza3RvcCBDdWJlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlc2t0b3AtY3ViZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvRGVza3RvcC1DdWJlIiwKICAidXVpZCI6ICJkZXNrdG9wLWN1YmVAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="},
-    "45": {"version": "22", "sha256": "08hlrhm82y69wbdyms1xmp1sk4kq7jpk46kkqjj2y674484wc9m3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZHVsZ2UgaW4gbm9zdGFsZ2lhIHdpdGggdXNlbGVzcyAzRCBlZmZlY3RzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic2NobmVlZ2FucyIsCiAgICAia29maSI6ICJzY2huZWVnYW5zIiwKICAgICJwYXlwYWwiOiAic2ltb25zY2huZWVnYW5zIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRlc2t0b3AtY3ViZSIsCiAgIm5hbWUiOiAiRGVza3RvcCBDdWJlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlc2t0b3AtY3ViZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9EZXNrdG9wLUN1YmUiLAogICJ1dWlkIjogImRlc2t0b3AtY3ViZUBzY2huZWVnYW5zLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjIKfQ=="}
+    "45": {"version": "22", "sha256": "08hlrhm82y69wbdyms1xmp1sk4kq7jpk46kkqjj2y674484wc9m3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZHVsZ2UgaW4gbm9zdGFsZ2lhIHdpdGggdXNlbGVzcyAzRCBlZmZlY3RzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic2NobmVlZ2FucyIsCiAgICAia29maSI6ICJzY2huZWVnYW5zIiwKICAgICJwYXlwYWwiOiAic2ltb25zY2huZWVnYW5zIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRlc2t0b3AtY3ViZSIsCiAgIm5hbWUiOiAiRGVza3RvcCBDdWJlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlc2t0b3AtY3ViZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9EZXNrdG9wLUN1YmUiLAogICJ1dWlkIjogImRlc2t0b3AtY3ViZUBzY2huZWVnYW5zLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjIKfQ=="},
+    "46": {"version": "22", "sha256": "08hlrhm82y69wbdyms1xmp1sk4kq7jpk46kkqjj2y674484wc9m3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZHVsZ2UgaW4gbm9zdGFsZ2lhIHdpdGggdXNlbGVzcyAzRCBlZmZlY3RzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic2NobmVlZ2FucyIsCiAgICAia29maSI6ICJzY2huZWVnYW5zIiwKICAgICJwYXlwYWwiOiAic2ltb25zY2huZWVnYW5zIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRlc2t0b3AtY3ViZSIsCiAgIm5hbWUiOiAiRGVza3RvcCBDdWJlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlc2t0b3AtY3ViZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU2NobmVlZ2Fucy9EZXNrdG9wLUN1YmUiLAogICJ1dWlkIjogImRlc2t0b3AtY3ViZUBzY2huZWVnYW5zLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjIKfQ=="}
   }}
 , {"uuid": "notification-banner-reloaded@marcinjakubowski.github.com", "name": "Notification Banner Reloaded", "pname": "notification-banner-reloaded", "description": "Configure notification banner position and animation to your liking.\nVersion 9: Gnome 45 changes by mannjani@github\nVersion 10: mannjani@github added a test button inside prefs", "link": "https://extensions.gnome.org/extension/4651/notification-banner-reloaded/", "shell_version_map": {
     "40": {"version": "8", "sha256": "1g0aa6xclyfbcaa4rccv5cgqmc6jr41yz821wvpa2rww64djl0jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ3VyZSBub3RpZmljYXRpb24gYmFubmVyIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gdG8geW91ciBsaWtpbmciLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBCYW5uZXIgUmVsb2FkZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9ub3RpZmljYXRpb24tcG9zaXRpb24tcmVsb2FkZWQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1iYW5uZXItcmVsb2FkZWRAbWFyY2luamFrdWJvd3NraS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
@@ -4037,7 +4195,8 @@
     "42": {"version": "8", "sha256": "1g0aa6xclyfbcaa4rccv5cgqmc6jr41yz821wvpa2rww64djl0jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ3VyZSBub3RpZmljYXRpb24gYmFubmVyIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gdG8geW91ciBsaWtpbmciLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBCYW5uZXIgUmVsb2FkZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9ub3RpZmljYXRpb24tcG9zaXRpb24tcmVsb2FkZWQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1iYW5uZXItcmVsb2FkZWRAbWFyY2luamFrdWJvd3NraS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "43": {"version": "8", "sha256": "1g0aa6xclyfbcaa4rccv5cgqmc6jr41yz821wvpa2rww64djl0jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ3VyZSBub3RpZmljYXRpb24gYmFubmVyIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gdG8geW91ciBsaWtpbmciLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBCYW5uZXIgUmVsb2FkZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9ub3RpZmljYXRpb24tcG9zaXRpb24tcmVsb2FkZWQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1iYW5uZXItcmVsb2FkZWRAbWFyY2luamFrdWJvd3NraS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "44": {"version": "8", "sha256": "1g0aa6xclyfbcaa4rccv5cgqmc6jr41yz821wvpa2rww64djl0jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ3VyZSBub3RpZmljYXRpb24gYmFubmVyIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gdG8geW91ciBsaWtpbmciLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBCYW5uZXIgUmVsb2FkZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9ub3RpZmljYXRpb24tcG9zaXRpb24tcmVsb2FkZWQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1iYW5uZXItcmVsb2FkZWRAbWFyY2luamFrdWJvd3NraS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "10", "sha256": "1zr0jvripjvbqjmj6d5nknyn9r3zipabv1rq6x352n43rk2h14rv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ3VyZSBub3RpZmljYXRpb24gYmFubmVyIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gdG8geW91ciBsaWtpbmcuXG5WZXJzaW9uIDk6IEdub21lIDQ1IGNoYW5nZXMgYnkgbWFubmphbmlAZ2l0aHViXG5WZXJzaW9uIDEwOiBtYW5uamFuaUBnaXRodWIgYWRkZWQgYSB0ZXN0IGJ1dHRvbiBpbnNpZGUgcHJlZnMiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBCYW5uZXIgUmVsb2FkZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjaW5qYWt1Ym93c2tpL25vdGlmaWNhdGlvbi1wb3NpdGlvbi1yZWxvYWRlZCIsCiAgInV1aWQiOiAibm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZEBtYXJjaW5qYWt1Ym93c2tpLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="}
+    "45": {"version": "11", "sha256": "0sj7q82n5bm1iq72han5zlc7p4m9xp8v2665g8h5r50wi99ydljm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ3VyZSBub3RpZmljYXRpb24gYmFubmVyIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gdG8geW91ciBsaWtpbmcuXG5WZXJzaW9uIDk6IEdub21lIDQ1IGNoYW5nZXMgYnkgbWFubmphbmlAZ2l0aHViXG5WZXJzaW9uIDEwOiBtYW5uamFuaUBnaXRodWIgYWRkZWQgYSB0ZXN0IGJ1dHRvbiBpbnNpZGUgcHJlZnMiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBCYW5uZXIgUmVsb2FkZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9ub3RpZmljYXRpb24tcG9zaXRpb24tcmVsb2FkZWQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1iYW5uZXItcmVsb2FkZWRAbWFyY2luamFrdWJvd3NraS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
+    "46": {"version": "11", "sha256": "0sj7q82n5bm1iq72han5zlc7p4m9xp8v2665g8h5r50wi99ydljm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ3VyZSBub3RpZmljYXRpb24gYmFubmVyIHBvc2l0aW9uIGFuZCBhbmltYXRpb24gdG8geW91ciBsaWtpbmcuXG5WZXJzaW9uIDk6IEdub21lIDQ1IGNoYW5nZXMgYnkgbWFubmphbmlAZ2l0aHViXG5WZXJzaW9uIDEwOiBtYW5uamFuaUBnaXRodWIgYWRkZWQgYSB0ZXN0IGJ1dHRvbiBpbnNpZGUgcHJlZnMiLAogICJuYW1lIjogIk5vdGlmaWNhdGlvbiBCYW5uZXIgUmVsb2FkZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90aWZpY2F0aW9uLWJhbm5lci1yZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9ub3RpZmljYXRpb24tcG9zaXRpb24tcmVsb2FkZWQiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1iYW5uZXItcmVsb2FkZWRAbWFyY2luamFrdWJvd3NraS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDExCn0="}
   }}
 , {"uuid": "gnome-extension-brightness@bruno.englert.gitlab.com", "name": "Adjust Display Brightness", "pname": "adjust-display-brightness", "description": "Simple GNOME extension to control displays' brightness via DDC. It requires ddcutil to be installed, I2C permissions for non-root users configured.", "link": "https://extensions.gnome.org/extension/4652/adjust-display-brightness/", "shell_version_map": {
     "40": {"version": "27", "sha256": "1sdq0wlnj6dib9lgjilk8xrxzh5lk63s8n5hcgky0jqbp9qvb5s7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBleHRlbnNpb24gdG8gY29udHJvbCBkaXNwbGF5cycgYnJpZ2h0bmVzcyB2aWEgRERDLiBJdCByZXF1aXJlcyBkZGN1dGlsIHRvIGJlIGluc3RhbGxlZCwgSTJDIHBlcm1pc3Npb25zIGZvciBub24tcm9vdCB1c2VycyBjb25maWd1cmVkLiIsCiAgIm5hbWUiOiAiQWRqdXN0IERpc3BsYXkgQnJpZ2h0bmVzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYnJ1bm8uZW5nbGVydC9nbm9tZS1leHRlbnNpb24tYnJpZ2h0bmVzcyIsCiAgInV1aWQiOiAiZ25vbWUtZXh0ZW5zaW9uLWJyaWdodG5lc3NAYnJ1bm8uZW5nbGVydC5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDI3Cn0="},
@@ -4046,12 +4205,14 @@
     "43": {"version": "27", "sha256": "1sdq0wlnj6dib9lgjilk8xrxzh5lk63s8n5hcgky0jqbp9qvb5s7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBleHRlbnNpb24gdG8gY29udHJvbCBkaXNwbGF5cycgYnJpZ2h0bmVzcyB2aWEgRERDLiBJdCByZXF1aXJlcyBkZGN1dGlsIHRvIGJlIGluc3RhbGxlZCwgSTJDIHBlcm1pc3Npb25zIGZvciBub24tcm9vdCB1c2VycyBjb25maWd1cmVkLiIsCiAgIm5hbWUiOiAiQWRqdXN0IERpc3BsYXkgQnJpZ2h0bmVzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYnJ1bm8uZW5nbGVydC9nbm9tZS1leHRlbnNpb24tYnJpZ2h0bmVzcyIsCiAgInV1aWQiOiAiZ25vbWUtZXh0ZW5zaW9uLWJyaWdodG5lc3NAYnJ1bm8uZW5nbGVydC5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDI3Cn0="},
     "44": {"version": "27", "sha256": "1sdq0wlnj6dib9lgjilk8xrxzh5lk63s8n5hcgky0jqbp9qvb5s7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBleHRlbnNpb24gdG8gY29udHJvbCBkaXNwbGF5cycgYnJpZ2h0bmVzcyB2aWEgRERDLiBJdCByZXF1aXJlcyBkZGN1dGlsIHRvIGJlIGluc3RhbGxlZCwgSTJDIHBlcm1pc3Npb25zIGZvciBub24tcm9vdCB1c2VycyBjb25maWd1cmVkLiIsCiAgIm5hbWUiOiAiQWRqdXN0IERpc3BsYXkgQnJpZ2h0bmVzcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYnJ1bm8uZW5nbGVydC9nbm9tZS1leHRlbnNpb24tYnJpZ2h0bmVzcyIsCiAgInV1aWQiOiAiZ25vbWUtZXh0ZW5zaW9uLWJyaWdodG5lc3NAYnJ1bm8uZW5nbGVydC5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDI3Cn0="}
   }}
-, {"uuid": "date-menu-formatter@marcinjakubowski.github.com", "name": "Date Menu Formatter", "pname": "date-menu-formatter", "description": "Allows customization of the date display in the panel.\n\nMight be especially useful if you're using a horizontal panel which does not at all work well with the default date display.\n\nCHANGELOG\nVersion 5: added support for multiple Dash To Panel panels\nVersion 6: fixed issues on earlier Gnome Shell versions\nVersion 10: fixed clock hover style (by bomdia)\nVersion 11: Gnome 45 update by andyholmes@github\nVersion 12: added support for advanced formatters by bomdia@github", "link": "https://extensions.gnome.org/extension/4655/date-menu-formatter/", "shell_version_map": {
+, {"uuid": "date-menu-formatter@marcinjakubowski.github.com", "name": "Date Menu Formatter", "pname": "date-menu-formatter", "description": "Allows customization of the date display in the panel.\n\nMight be especially useful if you're using a horizontal panel which does not at all work well with the default date display.\n\nCHANGELOG\nVersion 5: added support for multiple Dash To Panel panels\nVersion 6: fixed issues on earlier Gnome Shell versions\nVersion 10: fixed clock hover style (by bomdia)\nVersion 11: Gnome 45 update by andyholmes@github\nVersion 12: added support for advanced formatters by bomdia@github\nVersion 15: added text alignment choice by bomdia@github", "link": "https://extensions.gnome.org/extension/4655/date-menu-formatter/", "shell_version_map": {
     "40": {"version": "10", "sha256": "0scppmfd13xdzd3bs1jsl4hbihvpp25p4gn30ji8fx40rd28w662", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSkiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "41": {"version": "10", "sha256": "0scppmfd13xdzd3bs1jsl4hbihvpp25p4gn30ji8fx40rd28w662", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSkiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "42": {"version": "10", "sha256": "0scppmfd13xdzd3bs1jsl4hbihvpp25p4gn30ji8fx40rd28w662", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSkiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "43": {"version": "10", "sha256": "0scppmfd13xdzd3bs1jsl4hbihvpp25p4gn30ji8fx40rd28w662", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSkiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
-    "44": {"version": "10", "sha256": "0scppmfd13xdzd3bs1jsl4hbihvpp25p4gn30ji8fx40rd28w662", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSkiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"}
+    "44": {"version": "10", "sha256": "0scppmfd13xdzd3bs1jsl4hbihvpp25p4gn30ji8fx40rd28w662", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSkiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
+    "45": {"version": "15", "sha256": "06h2i65r15migijh5sgdyrsmsln4k0sfi7848a048jrdas2v85ga", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSlcblZlcnNpb24gMTE6IEdub21lIDQ1IHVwZGF0ZSBieSBhbmR5aG9sbWVzQGdpdGh1YlxuVmVyc2lvbiAxMjogYWRkZWQgc3VwcG9ydCBmb3IgYWR2YW5jZWQgZm9ybWF0dGVycyBieSBib21kaWFAZ2l0aHViXG5WZXJzaW9uIDE1OiBhZGRlZCB0ZXh0IGFsaWdubWVudCBjaG9pY2UgYnkgYm9tZGlhQGdpdGh1YiIsCiAgImdldHRleHQtZG9tYWluIjogImRhdGUtbWVudS1mb3JtYXR0ZXIiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"},
+    "46": {"version": "15", "sha256": "06h2i65r15migijh5sgdyrsmsln4k0sfi7848a048jrdas2v85ga", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyBjdXN0b21pemF0aW9uIG9mIHRoZSBkYXRlIGRpc3BsYXkgaW4gdGhlIHBhbmVsLlxuXG5NaWdodCBiZSBlc3BlY2lhbGx5IHVzZWZ1bCBpZiB5b3UncmUgdXNpbmcgYSBob3Jpem9udGFsIHBhbmVsIHdoaWNoIGRvZXMgbm90IGF0IGFsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdCBkYXRlIGRpc3BsYXkuXG5cbkNIQU5HRUxPR1xuVmVyc2lvbiA1OiBhZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBEYXNoIFRvIFBhbmVsIHBhbmVsc1xuVmVyc2lvbiA2OiBmaXhlZCBpc3N1ZXMgb24gZWFybGllciBHbm9tZSBTaGVsbCB2ZXJzaW9uc1xuVmVyc2lvbiAxMDogZml4ZWQgY2xvY2sgaG92ZXIgc3R5bGUgKGJ5IGJvbWRpYSlcblZlcnNpb24gMTE6IEdub21lIDQ1IHVwZGF0ZSBieSBhbmR5aG9sbWVzQGdpdGh1YlxuVmVyc2lvbiAxMjogYWRkZWQgc3VwcG9ydCBmb3IgYWR2YW5jZWQgZm9ybWF0dGVycyBieSBib21kaWFAZ2l0aHViXG5WZXJzaW9uIDE1OiBhZGRlZCB0ZXh0IGFsaWdubWVudCBjaG9pY2UgYnkgYm9tZGlhQGdpdGh1YiIsCiAgImdldHRleHQtZG9tYWluIjogImRhdGUtbWVudS1mb3JtYXR0ZXIiLAogICJuYW1lIjogIkRhdGUgTWVudSBGb3JtYXR0ZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGF0ZS1tZW51LWZvcm1hdHRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFrdWJvd3NraS9kYXRlLW1lbnUtZm9ybWF0dGVyIiwKICAidXVpZCI6ICJkYXRlLW1lbnUtZm9ybWF0dGVyQG1hcmNpbmpha3Vib3dza2kuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"}
   }}
 , {"uuid": "surf@diegonz.github.io", "name": "Surf", "pname": "surf", "description": "Visit URL or perform a web search with the terms provided directly from GNOME Shell", "link": "https://extensions.gnome.org/extension/4661/surf/", "shell_version_map": {
     "38": {"version": "2", "sha256": "04rs32jzy89vr2fyw44vmjx47l2kkdhqklqms9fqckf8ii3l4h56", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpc2l0IFVSTCBvciBwZXJmb3JtIGEgd2ViIHNlYXJjaCB3aXRoIHRoZSB0ZXJtcyBwcm92aWRlZCBkaXJlY3RseSBmcm9tIEdOT01FIFNoZWxsIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXN1cmYiLAogICJuYW1lIjogIlN1cmYiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3VyZiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGllZ29uei9nbm9tZS1zaGVsbC1leHRlbnNpb24tc3VyZiIsCiAgInV1aWQiOiAic3VyZkBkaWVnb256LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAyCn0="},
@@ -4063,7 +4224,8 @@
     "42": {"version": "5", "sha256": "1nnkyvppbga65dpmszv066hps12p0b5rcaimhn489x2bzhyiycn1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbi4iLAogICJuYW1lIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUFJBVEFQLUtVTUFSL2N1c3RvbWl6ZS1jbG9jay1vbi1sb2NrLXNjcmVlbiIsCiAgInV1aWQiOiAiQ3VzdG9taXplQ2xvY2tPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDUKfQ=="},
     "43": {"version": "9", "sha256": "14rmr9f3ln60v2p5zq02ji3k1zrxyb51sh3nhpri88rc5s3wld7f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbi4iLAogICJuYW1lIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbiIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubG9ja3NjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvY3VzdG9taXplLWNsb2NrLW9uLWxvY2stc2NyZWVuIiwKICAidXVpZCI6ICJDdXN0b21pemVDbG9ja09uTG9ja1NjcmVlbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogOQp9"},
     "44": {"version": "7", "sha256": "0c9c08c61jm54sv80i3ffqaja1l0ji0dvw8vp774qnqfs5zih33r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbi4iLAogICJuYW1lIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbiIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubG9ja3NjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvY3VzdG9taXplLWNsb2NrLW9uLWxvY2stc2NyZWVuIiwKICAidXVpZCI6ICJDdXN0b21pemVDbG9ja09uTG9ja1NjcmVlbkBwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogNwp9"},
-    "45": {"version": "13", "sha256": "00szs1dmpc486pqy6ndvq934fililqrlv1ac183d5vh5qsaqxgvs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbi4iLAogICJuYW1lIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbiIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9taXplLWNsb2NrLW9uLWxvY2tzY3JlZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUFJBVEFQLUtVTUFSL2N1c3RvbWl6ZS1jbG9jay1vbi1sb2NrLXNjcmVlbiIsCiAgInV1aWQiOiAiQ3VzdG9taXplQ2xvY2tPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDEzCn0="}
+    "45": {"version": "15", "sha256": "0fc1s3amkhp5xl6jim9lwhlbvqdfgw4n22brrwhg1340394zsyrq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInByYXRhcHBhbmFiYWthIgogIH0sCiAgIm5hbWUiOiAiQ3VzdG9taXplIENsb2NrIG9uIExvY2sgU2NyZWVuIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b21pemUtY2xvY2stb24tbG9ja3NjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUFJBVEFQLUtVTUFSL2N1c3RvbWl6ZS1jbG9jay1vbi1sb2NrLXNjcmVlbiIsCiAgInV1aWQiOiAiQ3VzdG9taXplQ2xvY2tPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDE1Cn0="},
+    "46": {"version": "15", "sha256": "0fc1s3amkhp5xl6jim9lwhlbvqdfgw4n22brrwhg1340394zsyrq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSBDbG9jayBvbiBMb2NrIFNjcmVlbi4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInByYXRhcHBhbmFiYWthIgogIH0sCiAgIm5hbWUiOiAiQ3VzdG9taXplIENsb2NrIG9uIExvY2sgU2NyZWVuIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jdXN0b21pemUtY2xvY2stb24tbG9ja3NjcmVlbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUFJBVEFQLUtVTUFSL2N1c3RvbWl6ZS1jbG9jay1vbi1sb2NrLXNjcmVlbiIsCiAgInV1aWQiOiAiQ3VzdG9taXplQ2xvY2tPbkxvY2tTY3JlZW5AcHJhdGFwLmZhc3RtYWlsLmZtIiwKICAidmVyc2lvbiI6IDE1Cn0="}
   }}
 , {"uuid": "LeftClock@adityashrivastava.tk", "name": "Left Clock", "pname": "left-clock", "description": "Replaces the activity button with clock and moves it to left side of top bar.", "link": "https://extensions.gnome.org/extension/4667/left-clock/", "shell_version_map": {
     "40": {"version": "12", "sha256": "02fv3jdmmjvyf4cyna1p7jdg3q8n5604i4ng8jq4y6ljn7insvyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBhY3Rpdml0eSBidXR0b24gd2l0aCBjbG9jayBhbmQgbW92ZXMgaXQgdG8gbGVmdCBzaWRlIG9mIHRvcCBiYXIuIiwKICAibmFtZSI6ICJMZWZ0IENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hZGl0eWEtc2hyaS9MZWZ0LUNsb2NrIiwKICAidXVpZCI6ICJMZWZ0Q2xvY2tAYWRpdHlhc2hyaXZhc3RhdmEudGsiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
@@ -4071,7 +4233,8 @@
     "42": {"version": "12", "sha256": "02fv3jdmmjvyf4cyna1p7jdg3q8n5604i4ng8jq4y6ljn7insvyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBhY3Rpdml0eSBidXR0b24gd2l0aCBjbG9jayBhbmQgbW92ZXMgaXQgdG8gbGVmdCBzaWRlIG9mIHRvcCBiYXIuIiwKICAibmFtZSI6ICJMZWZ0IENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hZGl0eWEtc2hyaS9MZWZ0LUNsb2NrIiwKICAidXVpZCI6ICJMZWZ0Q2xvY2tAYWRpdHlhc2hyaXZhc3RhdmEudGsiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "43": {"version": "12", "sha256": "02fv3jdmmjvyf4cyna1p7jdg3q8n5604i4ng8jq4y6ljn7insvyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBhY3Rpdml0eSBidXR0b24gd2l0aCBjbG9jayBhbmQgbW92ZXMgaXQgdG8gbGVmdCBzaWRlIG9mIHRvcCBiYXIuIiwKICAibmFtZSI6ICJMZWZ0IENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hZGl0eWEtc2hyaS9MZWZ0LUNsb2NrIiwKICAidXVpZCI6ICJMZWZ0Q2xvY2tAYWRpdHlhc2hyaXZhc3RhdmEudGsiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "44": {"version": "12", "sha256": "02fv3jdmmjvyf4cyna1p7jdg3q8n5604i4ng8jq4y6ljn7insvyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBhY3Rpdml0eSBidXR0b24gd2l0aCBjbG9jayBhbmQgbW92ZXMgaXQgdG8gbGVmdCBzaWRlIG9mIHRvcCBiYXIuIiwKICAibmFtZSI6ICJMZWZ0IENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hZGl0eWEtc2hyaS9MZWZ0LUNsb2NrIiwKICAidXVpZCI6ICJMZWZ0Q2xvY2tAYWRpdHlhc2hyaXZhc3RhdmEudGsiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
-    "45": {"version": "14", "sha256": "1j6923i23sr466z9kb7kl5cmay1kdfwm04zd4p97mljbs51c4ha2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBhY3Rpdml0eSBidXR0b24gd2l0aCBjbG9jayBhbmQgbW92ZXMgaXQgdG8gbGVmdCBzaWRlIG9mIHRvcCBiYXIuIiwKICAibmFtZSI6ICJMZWZ0IENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hZGl0eWEtc2hyaS9MZWZ0LUNsb2NrIiwKICAidXVpZCI6ICJMZWZ0Q2xvY2tAYWRpdHlhc2hyaXZhc3RhdmEudGsiLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
+    "45": {"version": "14", "sha256": "1j6923i23sr466z9kb7kl5cmay1kdfwm04zd4p97mljbs51c4ha2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBhY3Rpdml0eSBidXR0b24gd2l0aCBjbG9jayBhbmQgbW92ZXMgaXQgdG8gbGVmdCBzaWRlIG9mIHRvcCBiYXIuIiwKICAibmFtZSI6ICJMZWZ0IENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hZGl0eWEtc2hyaS9MZWZ0LUNsb2NrIiwKICAidXVpZCI6ICJMZWZ0Q2xvY2tAYWRpdHlhc2hyaXZhc3RhdmEudGsiLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
+    "46": {"version": "14", "sha256": "1j6923i23sr466z9kb7kl5cmay1kdfwm04zd4p97mljbs51c4ha2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSBhY3Rpdml0eSBidXR0b24gd2l0aCBjbG9jayBhbmQgbW92ZXMgaXQgdG8gbGVmdCBzaWRlIG9mIHRvcCBiYXIuIiwKICAibmFtZSI6ICJMZWZ0IENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hZGl0eWEtc2hyaS9MZWZ0LUNsb2NrIiwKICAidXVpZCI6ICJMZWZ0Q2xvY2tAYWRpdHlhc2hyaXZhc3RhdmEudGsiLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
   }}
 , {"uuid": "keyboard-backlight-menu@ophir.dev", "name": "Keyboard Backlight Slider", "pname": "keyboard-backlight-slider", "description": "Allow setting the keyboard backlight brightness with a slider in the main menu", "link": "https://extensions.gnome.org/extension/4669/keyboard-backlight-slider/", "shell_version_map": {
     "40": {"version": "5", "sha256": "06sp86ffvplyc1k937mg5lmfggbakr7fks74b4klxxg9595lg91q", "metadata": "ewogICJ2ZXJzaW9uIjogMiwKICAibmFtZSI6ICJLZXlib2FyZCBCYWNrbGlnaHQgU2xpZGVyIiwKICAiZGVzY3JpcHRpb24iOiAiQWxsb3cgc2V0dGluZyB0aGUga2V5Ym9hcmQgYmFja2xpZ2h0IGJyaWdodG5lc3Mgd2l0aCBhIHNsaWRlciBpbiB0aGUgbWFpbiBtZW51IiwKICAidXVpZCI6ICJrZXlib2FyZC1iYWNrbGlnaHQtbWVudUBvcGhpci5kZXYiLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xvdmFzb2EvZ25vbWUta2V5Ym9hcmQtYmFja2xpZ2h0LW1lbnUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXQp9Cg=="},
@@ -4101,7 +4264,8 @@
     "42": {"version": "42", "sha256": "1xyfpgdnl2fhvx0pw4f53h54smw6lj7w6pmxdp93wpz1h0mjh0ym", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2ludGVncmF0ZSB5b3VyIHdpbmRvd3Mgd2l0aCBzdHlsZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInNjaG5lZWdhbnMiLAogICAgImtvZmkiOiAic2NobmVlZ2FucyIsCiAgICAicGF5cGFsIjogInNpbW9uc2NobmVlZ2FucyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJidXJuLW15LXdpbmRvd3MiLAogICJuYW1lIjogIkJ1cm4gTXkgV2luZG93cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5idXJuLW15LXdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvQnVybi1NeS1XaW5kb3dzIiwKICAidXVpZCI6ICJidXJuLW15LXdpbmRvd3NAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQyCn0="},
     "43": {"version": "42", "sha256": "1xyfpgdnl2fhvx0pw4f53h54smw6lj7w6pmxdp93wpz1h0mjh0ym", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2ludGVncmF0ZSB5b3VyIHdpbmRvd3Mgd2l0aCBzdHlsZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInNjaG5lZWdhbnMiLAogICAgImtvZmkiOiAic2NobmVlZ2FucyIsCiAgICAicGF5cGFsIjogInNpbW9uc2NobmVlZ2FucyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJidXJuLW15LXdpbmRvd3MiLAogICJuYW1lIjogIkJ1cm4gTXkgV2luZG93cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5idXJuLW15LXdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvQnVybi1NeS1XaW5kb3dzIiwKICAidXVpZCI6ICJidXJuLW15LXdpbmRvd3NAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQyCn0="},
     "44": {"version": "42", "sha256": "1xyfpgdnl2fhvx0pw4f53h54smw6lj7w6pmxdp93wpz1h0mjh0ym", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2ludGVncmF0ZSB5b3VyIHdpbmRvd3Mgd2l0aCBzdHlsZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInNjaG5lZWdhbnMiLAogICAgImtvZmkiOiAic2NobmVlZ2FucyIsCiAgICAicGF5cGFsIjogInNpbW9uc2NobmVlZ2FucyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJidXJuLW15LXdpbmRvd3MiLAogICJuYW1lIjogIkJ1cm4gTXkgV2luZG93cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5idXJuLW15LXdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvQnVybi1NeS1XaW5kb3dzIiwKICAidXVpZCI6ICJidXJuLW15LXdpbmRvd3NAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQyCn0="},
-    "45": {"version": "41", "sha256": "0sbdsxs0i8yasrrzqyyc69jjc2f67ilkhqgvcmmy4cb7k1dm7idh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2ludGVncmF0ZSB5b3VyIHdpbmRvd3Mgd2l0aCBzdHlsZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInNjaG5lZWdhbnMiLAogICAgImtvZmkiOiAic2NobmVlZ2FucyIsCiAgICAicGF5cGFsIjogInNpbW9uc2NobmVlZ2FucyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJidXJuLW15LXdpbmRvd3MiLAogICJuYW1lIjogIkJ1cm4gTXkgV2luZG93cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5idXJuLW15LXdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvQnVybi1NeS1XaW5kb3dzIiwKICAidXVpZCI6ICJidXJuLW15LXdpbmRvd3NAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQxCn0="}
+    "45": {"version": "41", "sha256": "0sbdsxs0i8yasrrzqyyc69jjc2f67ilkhqgvcmmy4cb7k1dm7idh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2ludGVncmF0ZSB5b3VyIHdpbmRvd3Mgd2l0aCBzdHlsZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInNjaG5lZWdhbnMiLAogICAgImtvZmkiOiAic2NobmVlZ2FucyIsCiAgICAicGF5cGFsIjogInNpbW9uc2NobmVlZ2FucyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJidXJuLW15LXdpbmRvd3MiLAogICJuYW1lIjogIkJ1cm4gTXkgV2luZG93cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5idXJuLW15LXdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvQnVybi1NeS1XaW5kb3dzIiwKICAidXVpZCI6ICJidXJuLW15LXdpbmRvd3NAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQxCn0="},
+    "46": {"version": "41", "sha256": "0sbdsxs0i8yasrrzqyyc69jjc2f67ilkhqgvcmmy4cb7k1dm7idh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2ludGVncmF0ZSB5b3VyIHdpbmRvd3Mgd2l0aCBzdHlsZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogInNjaG5lZWdhbnMiLAogICAgImtvZmkiOiAic2NobmVlZ2FucyIsCiAgICAicGF5cGFsIjogInNpbW9uc2NobmVlZ2FucyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJidXJuLW15LXdpbmRvd3MiLAogICJuYW1lIjogIkJ1cm4gTXkgV2luZG93cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5idXJuLW15LXdpbmRvd3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NjaG5lZWdhbnMvQnVybi1NeS1XaW5kb3dzIiwKICAidXVpZCI6ICJidXJuLW15LXdpbmRvd3NAc2NobmVlZ2Fucy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQxCn0="}
   }}
 , {"uuid": "babar-lite@fthx", "name": "BaBar Lite", "pname": "babar-task-bar-lite-for-gnome-40", "description": "NOT MAINTAINED ANYMORE\nPLEASE USE:\nhttps://extensions.gnome.org/extension/6556/task-up/ (Babar-like)\nOR\nhttps://extensions.gnome.org/extension/5143/dashbar/ (Dash-like)\n\nTask bar. App grid, favorites, workspaces and tasks in panel. Light extension.\n\n Replace 'Activities' button by all current workspaces and apps buttons. Switch workspace/app or toggle overview by clicking on these buttons. Drag and drop favorite, task, dash item or app grid item to any workspace (you cannot reorder tasks inside a workspace). Change 'Places' label to an icon. No settings, use BaBar classic for that.\n\n You can use names for workspaces: there are two ways for that. 1) Edit the string array 'org.gnome.desktop.wm.preferences.workspace-names' gsettings key (through dconf editor, e.g.). 2) Use official GNOME extension Workspaces Indicator's settings. You don't have to write a long enough list: numbers are displayed if no workspace name is defined.", "link": "https://extensions.gnome.org/extension/4681/babar-task-bar-lite-for-gnome-40/", "shell_version_map": {
     "40": {"version": "2", "sha256": "163g6mabkcmf05ja4bpj7kkc0c7rs4hsf5xyfm2z4npiscjha8n7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5PVCBNQUlOVEFJTkVEIEFOWU1PUkVcblxuVGFzayBiYXIuIEFwcCBncmlkLCBmYXZvcml0ZXMsIHdvcmtzcGFjZXMgYW5kIHRhc2tzIGluIHBhbmVsLiBMaWdodCBleHRlbnNpb24uXG5cbiBSZXBsYWNlICdBY3Rpdml0aWVzJyBidXR0b24gYnkgYWxsIGN1cnJlbnQgd29ya3NwYWNlcyBhbmQgYXBwcyBidXR0b25zLiBTd2l0Y2ggd29ya3NwYWNlL2FwcCBvciB0b2dnbGUgb3ZlcnZpZXcgYnkgY2xpY2tpbmcgb24gdGhlc2UgYnV0dG9ucy4gRHJhZyBhbmQgZHJvcCBmYXZvcml0ZSwgdGFzaywgZGFzaCBpdGVtIG9yIGFwcCBncmlkIGl0ZW0gdG8gYW55IHdvcmtzcGFjZSAoeW91IGNhbm5vdCByZW9yZGVyIHRhc2tzIGluc2lkZSBhIHdvcmtzcGFjZSkuIENoYW5nZSAnUGxhY2VzJyBsYWJlbCB0byBhbiBpY29uLiBObyBzZXR0aW5ncywgdXNlIEJhQmFyIGNsYXNzaWMgZm9yIHRoYXQuXG5cbiBZb3UgY2FuIHVzZSBuYW1lcyBmb3Igd29ya3NwYWNlczogdGhlcmUgYXJlIHR3byB3YXlzIGZvciB0aGF0LiAxKSBFZGl0IHRoZSBzdHJpbmcgYXJyYXkgJ29yZy5nbm9tZS5kZXNrdG9wLndtLnByZWZlcmVuY2VzLndvcmtzcGFjZS1uYW1lcycgZ3NldHRpbmdzIGtleSAodGhyb3VnaCBkY29uZiBlZGl0b3IsIGUuZy4pLiAyKSBVc2Ugb2ZmaWNpYWwgR05PTUUgZXh0ZW5zaW9uIFdvcmtzcGFjZXMgSW5kaWNhdG9yJ3Mgc2V0dGluZ3MuIFlvdSBkb24ndCBoYXZlIHRvIHdyaXRlIGEgbG9uZyBlbm91Z2ggbGlzdDogbnVtYmVycyBhcmUgZGlzcGxheWVkIGlmIG5vIHdvcmtzcGFjZSBuYW1lIGlzIGRlZmluZWQuIiwKICAibmFtZSI6ICJCYUJhciBMaXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9iYWJhci1saXRlIiwKICAidXVpZCI6ICJiYWJhci1saXRlQGZ0aHgiLAogICJ2ZXJzaW9uIjogMgp9"},
@@ -4122,7 +4286,8 @@
     "42": {"version": "8", "sha256": "1mm2b6fwx58yvcq8fkxrkcb5bcm4ak8al5jw0939mwr8fjhgd13s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBkaXNwbGF5aW5nIHN0YXR1cyBvZiBlbnRlcmVkIHdlYiBzZXJ2ZXIgdXJscywgZ3JlZW4gZm9yIHVwLCByZWQgZm9yIGRvd24uIiwKICAibmFtZSI6ICJTZXJ2ZXIgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zZXJ2ZXJzdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NyYWlnRm9vdGUvY2EuZm9vdGV3YXJlLmdub21lc2hlbGwuc2VydmVyc3RhdHVzLmdpdCIsCiAgInV1aWQiOiAic2VydmVyc3RhdHVzQGZvb3Rld2FyZS5jYSIsCiAgInZlcnNpb24iOiA4Cn0="},
     "43": {"version": "12", "sha256": "137wbizi57gpdp5dk38mxsi82ndrh11axj6h34spwyag000rlili", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBkaXNwbGF5aW5nIHN0YXR1cyBvZiBlbnRlcmVkIHdlYiBzZXJ2ZXIgdXJscywgZ3JlZW4gZm9yIHVwLCByZWQgZm9yIGRvd24uIiwKICAibmFtZSI6ICJTZXJ2ZXIgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zZXJ2ZXJzdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NyYWlnRm9vdGUvY2EuZm9vdGV3YXJlLmdub21lc2hlbGwuc2VydmVyc3RhdHVzLmdpdCIsCiAgInV1aWQiOiAic2VydmVyc3RhdHVzQGZvb3Rld2FyZS5jYSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "137wbizi57gpdp5dk38mxsi82ndrh11axj6h34spwyag000rlili", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBkaXNwbGF5aW5nIHN0YXR1cyBvZiBlbnRlcmVkIHdlYiBzZXJ2ZXIgdXJscywgZ3JlZW4gZm9yIHVwLCByZWQgZm9yIGRvd24uIiwKICAibmFtZSI6ICJTZXJ2ZXIgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zZXJ2ZXJzdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NyYWlnRm9vdGUvY2EuZm9vdGV3YXJlLmdub21lc2hlbGwuc2VydmVyc3RhdHVzLmdpdCIsCiAgInV1aWQiOiAic2VydmVyc3RhdHVzQGZvb3Rld2FyZS5jYSIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "23", "sha256": "1lbfs3xfsmijyfdxmjy0vw9iy96z97cwx3c9n85jnxf4rcvj5yg7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBkaXNwbGF5aW5nIHN0YXR1cyBvZiBlbnRlcmVkIHdlYiBzZXJ2ZXIgdXJscywgZ3JlZW4gZm9yIHVwLCByZWQgZm9yIGRvd24uIiwKICAibmFtZSI6ICJTZXJ2ZXIgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zZXJ2ZXJzdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NyYWlnRm9vdGUvY2EuZm9vdGV3YXJlLmdub21lc2hlbGwuc2VydmVyc3RhdHVzLmdpdCIsCiAgInV1aWQiOiAic2VydmVyc3RhdHVzQGZvb3Rld2FyZS5jYSIsCiAgInZlcnNpb24iOiAyMwp9"}
+    "45": {"version": "23", "sha256": "1lbfs3xfsmijyfdxmjy0vw9iy96z97cwx3c9n85jnxf4rcvj5yg7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBkaXNwbGF5aW5nIHN0YXR1cyBvZiBlbnRlcmVkIHdlYiBzZXJ2ZXIgdXJscywgZ3JlZW4gZm9yIHVwLCByZWQgZm9yIGRvd24uIiwKICAibmFtZSI6ICJTZXJ2ZXIgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zZXJ2ZXJzdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NyYWlnRm9vdGUvY2EuZm9vdGV3YXJlLmdub21lc2hlbGwuc2VydmVyc3RhdHVzLmdpdCIsCiAgInV1aWQiOiAic2VydmVyc3RhdHVzQGZvb3Rld2FyZS5jYSIsCiAgInZlcnNpb24iOiAyMwp9"},
+    "46": {"version": "23", "sha256": "1lbfs3xfsmijyfdxmjy0vw9iy96z97cwx3c9n85jnxf4rcvj5yg7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRvciBkaXNwbGF5aW5nIHN0YXR1cyBvZiBlbnRlcmVkIHdlYiBzZXJ2ZXIgdXJscywgZ3JlZW4gZm9yIHVwLCByZWQgZm9yIGRvd24uIiwKICAibmFtZSI6ICJTZXJ2ZXIgU3RhdHVzIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zZXJ2ZXJzdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NyYWlnRm9vdGUvY2EuZm9vdGV3YXJlLmdub21lc2hlbGwuc2VydmVyc3RhdHVzLmdpdCIsCiAgInV1aWQiOiAic2VydmVyc3RhdHVzQGZvb3Rld2FyZS5jYSIsCiAgInZlcnNpb24iOiAyMwp9"}
   }}
 , {"uuid": "focus-follows-workspace@christopher.luebbemeier.gmail.com", "name": "Focus Follows Workspace", "pname": "focus-follows-workspace", "description": "Focus the primary monitor after switching workspaces via keyboard", "link": "https://extensions.gnome.org/extension/4688/focus-follows-workspace/", "shell_version_map": {
     "41": {"version": "7", "sha256": "0bi73fpvkfj3y6f440fw5xv1294szhisa2qyzz4rwh7n4n49xhqf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvY3VzIHRoZSBwcmltYXJ5IG1vbml0b3IgYWZ0ZXIgc3dpdGNoaW5nIHdvcmtzcGFjZXMgdmlhIGtleWJvYXJkIiwKICAibmFtZSI6ICJGb2N1cyBGb2xsb3dzIFdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RvcGhlci1sL2ZvY3VzLWZvbGxvd3Mtd29ya3NwYWNlIiwKICAidXVpZCI6ICJmb2N1cy1mb2xsb3dzLXdvcmtzcGFjZUBjaHJpc3RvcGhlci5sdWViYmVtZWllci5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNwp9"},
@@ -4166,15 +4331,17 @@
     "42": {"version": "10", "sha256": "1q1y7ldiay5frw52fhfz7fs3jx3f23jkcir8ilji2hmkj64p0vkh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyB1c2luZyBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJBd2Vzb21lIFRpbGVzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF3ZXNvbWUtdGlsZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3ZlbGl0YXNhbGkvZ25vbWUtYXdlc29tZS10aWxlcy1leHRlbnNpb24iLAogICJ1dWlkIjogImF3ZXNvbWUtdGlsZXNAdmVsaXRhc2FsaS5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "43": {"version": "10", "sha256": "1q1y7ldiay5frw52fhfz7fs3jx3f23jkcir8ilji2hmkj64p0vkh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyB1c2luZyBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJBd2Vzb21lIFRpbGVzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF3ZXNvbWUtdGlsZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3ZlbGl0YXNhbGkvZ25vbWUtYXdlc29tZS10aWxlcy1leHRlbnNpb24iLAogICJ1dWlkIjogImF3ZXNvbWUtdGlsZXNAdmVsaXRhc2FsaS5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "44": {"version": "10", "sha256": "1q1y7ldiay5frw52fhfz7fs3jx3f23jkcir8ilji2hmkj64p0vkh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyB1c2luZyBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAibmFtZSI6ICJBd2Vzb21lIFRpbGVzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF3ZXNvbWUtdGlsZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3ZlbGl0YXNhbGkvZ25vbWUtYXdlc29tZS10aWxlcy1leHRlbnNpb24iLAogICJ1dWlkIjogImF3ZXNvbWUtdGlsZXNAdmVsaXRhc2FsaS5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
-    "45": {"version": "12", "sha256": "0j1b7wlgr7iwb54lh4sr79rwpvd14z61czvplmgddacsgfah5wmg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyB1c2luZyBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXdlc29tZS10aWxlc0B2ZWxpdGFzYWxpLmNvbSIsCiAgIm5hbWUiOiAiQXdlc29tZSBUaWxlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hd2Vzb21lLXRpbGVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3ZlbGl0YXNhbGkvZ25vbWUtYXdlc29tZS10aWxlcy1leHRlbnNpb24iLAogICJ1dWlkIjogImF3ZXNvbWUtdGlsZXNAdmVsaXRhc2FsaS5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
+    "45": {"version": "13", "sha256": "0mcllban855ccm2sy9cyqgfcpgqpi5yha55fq3rdj9y8p9srfsm2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyB1c2luZyBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXdlc29tZS10aWxlc0B2ZWxpdGFzYWxpLmNvbSIsCiAgIm5hbWUiOiAiQXdlc29tZSBUaWxlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hd2Vzb21lLXRpbGVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92ZWxpdGFzYWxpL2dub21lLWF3ZXNvbWUtdGlsZXMtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJhd2Vzb21lLXRpbGVzQHZlbGl0YXNhbGkuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
+    "46": {"version": "13", "sha256": "0mcllban855ccm2sy9cyqgfcpgqpi5yha55fq3rdj9y8p9srfsm2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGUgd2luZG93cyB1c2luZyBrZXlib2FyZCBzaG9ydGN1dHMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXdlc29tZS10aWxlc0B2ZWxpdGFzYWxpLmNvbSIsCiAgIm5hbWUiOiAiQXdlc29tZSBUaWxlcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hd2Vzb21lLXRpbGVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS92ZWxpdGFzYWxpL2dub21lLWF3ZXNvbWUtdGlsZXMtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJhd2Vzb21lLXRpbGVzQHZlbGl0YXNhbGkuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="}
   }}
-, {"uuid": "dock-from-dash@fthx", "name": "Dock from Dash", "pname": "dock-from-dash", "description": "Dock.\n\n New version and no prefs for 45+ (maybe coming soon).\n\n Does use native GNOME Shell Dash. Very light extension.\n\n Hover the bottom of your screen and GNOME Shell dash will appear without overview and will hide when you leave the dash. Native GNOME Shell click behavior is modified: minimize if one window is open, overview if many windows are open. Scroll on the dock to change workspace.\n\n I'm not notified of messages here, please report bugs only through GitHub.", "link": "https://extensions.gnome.org/extension/4703/dock-from-dash/", "shell_version_map": {
+, {"uuid": "dock-from-dash@fthx", "name": "Dock from Dash", "pname": "dock-from-dash", "description": "Dock.\n\n New version and no prefs for 45+ (maybe coming soon).\n\n Does use native GNOME Shell Dash. Very light extension.\n\n Hover the bottom of your screen and GNOME Shell dash will appear without overview and will hide when you leave the dash. Native GNOME Shell click behavior is modified: minimize if one window is open, overview if many windows are open. Scroll on the dock to change workspace. Some preferences in UI (thanks @rastersoft).\n\n I'm not notified of messages here, please report bugs only through GitHub.", "link": "https://extensions.gnome.org/extension/4703/dock-from-dash/", "shell_version_map": {
     "40": {"version": "63", "sha256": "0wli9j79g06yw68b2zhljgnkvpdgvbqsb4lqwyfa4z9kgig4sjsx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2sgZm9yIEdOT01FIFNoZWxsIDQwKy4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2RvY2stZnJvbS1kYXNoIiwKICAidXVpZCI6ICJkb2NrLWZyb20tZGFzaEBmdGh4IiwKICAidmVyc2lvbiI6IDYzCn0="},
     "41": {"version": "63", "sha256": "0wli9j79g06yw68b2zhljgnkvpdgvbqsb4lqwyfa4z9kgig4sjsx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2sgZm9yIEdOT01FIFNoZWxsIDQwKy4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2RvY2stZnJvbS1kYXNoIiwKICAidXVpZCI6ICJkb2NrLWZyb20tZGFzaEBmdGh4IiwKICAidmVyc2lvbiI6IDYzCn0="},
     "42": {"version": "63", "sha256": "0wli9j79g06yw68b2zhljgnkvpdgvbqsb4lqwyfa4z9kgig4sjsx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2sgZm9yIEdOT01FIFNoZWxsIDQwKy4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2RvY2stZnJvbS1kYXNoIiwKICAidXVpZCI6ICJkb2NrLWZyb20tZGFzaEBmdGh4IiwKICAidmVyc2lvbiI6IDYzCn0="},
     "43": {"version": "63", "sha256": "0wli9j79g06yw68b2zhljgnkvpdgvbqsb4lqwyfa4z9kgig4sjsx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2sgZm9yIEdOT01FIFNoZWxsIDQwKy4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2RvY2stZnJvbS1kYXNoIiwKICAidXVpZCI6ICJkb2NrLWZyb20tZGFzaEBmdGh4IiwKICAidmVyc2lvbiI6IDYzCn0="},
     "44": {"version": "63", "sha256": "0wli9j79g06yw68b2zhljgnkvpdgvbqsb4lqwyfa4z9kgig4sjsx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2sgZm9yIEdOT01FIFNoZWxsIDQwKy4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2RvY2stZnJvbS1kYXNoIiwKICAidXVpZCI6ICJkb2NrLWZyb20tZGFzaEBmdGh4IiwKICAidmVyc2lvbiI6IDYzCn0="},
-    "45": {"version": "67", "sha256": "1clq49mzpar76kccfl4yz445jpdkbz7fib1r8vbcvsl7cbvfranf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2suXG5cbiBOZXcgdmVyc2lvbiBhbmQgbm8gcHJlZnMgZm9yIDQ1KyAobWF5YmUgY29taW5nIHNvb24pLlxuXG4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvZG9jay1mcm9tLWRhc2giLAogICJ1dWlkIjogImRvY2stZnJvbS1kYXNoQGZ0aHgiLAogICJ2ZXJzaW9uIjogNjcKfQ=="}
+    "45": {"version": "67", "sha256": "1clq49mzpar76kccfl4yz445jpdkbz7fib1r8vbcvsl7cbvfranf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2suXG5cbiBOZXcgdmVyc2lvbiBhbmQgbm8gcHJlZnMgZm9yIDQ1KyAobWF5YmUgY29taW5nIHNvb24pLlxuXG4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvZG9jay1mcm9tLWRhc2giLAogICJ1dWlkIjogImRvY2stZnJvbS1kYXNoQGZ0aHgiLAogICJ2ZXJzaW9uIjogNjcKfQ=="},
+    "46": {"version": "71", "sha256": "15fs0aiwck73pkxxyzk6vgigjpcmy8r3awdiiik5c37lc0swx82y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRvY2suXG5cbiBOZXcgdmVyc2lvbiBhbmQgbm8gcHJlZnMgZm9yIDQ1KyAobWF5YmUgY29taW5nIHNvb24pLlxuXG4gRG9lcyB1c2UgbmF0aXZlIEdOT01FIFNoZWxsIERhc2guIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gSG92ZXIgdGhlIGJvdHRvbSBvZiB5b3VyIHNjcmVlbiBhbmQgR05PTUUgU2hlbGwgZGFzaCB3aWxsIGFwcGVhciB3aXRob3V0IG92ZXJ2aWV3IGFuZCB3aWxsIGhpZGUgd2hlbiB5b3UgbGVhdmUgdGhlIGRhc2guIE5hdGl2ZSBHTk9NRSBTaGVsbCBjbGljayBiZWhhdmlvciBpcyBtb2RpZmllZDogbWluaW1pemUgaWYgb25lIHdpbmRvdyBpcyBvcGVuLCBvdmVydmlldyBpZiBtYW55IHdpbmRvd3MgYXJlIG9wZW4uIFNjcm9sbCBvbiB0aGUgZG9jayB0byBjaGFuZ2Ugd29ya3NwYWNlLiBTb21lIHByZWZlcmVuY2VzIGluIFVJICh0aGFua3MgQHJhc3RlcnNvZnQpLlxuXG4gSSdtIG5vdCBub3RpZmllZCBvZiBtZXNzYWdlcyBoZXJlLCBwbGVhc2UgcmVwb3J0IGJ1Z3Mgb25seSB0aHJvdWdoIEdpdEh1Yi4iLAogICJuYW1lIjogIkRvY2sgZnJvbSBEYXNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvZG9jay1mcm9tLWRhc2giLAogICJ1dWlkIjogImRvY2stZnJvbS1kYXNoQGZ0aHgiLAogICJ2ZXJzaW9uIjogNzEKfQ=="}
   }}
 , {"uuid": "another-window-session-manager@gmail.com", "name": "Another Window Session Manager", "pname": "another-window-session-manager", "description": "Close open windows gracefully and save them as a session. And you can restore them when necessary manually or automatically at startup. Most importantly, it supports both X11 and Wayland!\n\nMain features:\n- Restore the previous session at startup. disabled by default.\n- Save running apps and windows automatically when necessary, this will be used to restore the previous session at startup.\n- Close running apps and windows automatically before Log Out, Restart, Power Off. disabled by default.\n- Close running windows gracefully\n- Close apps with multiple windows gracefully via ydotool so you don't lose sessions of this app (See also: How to make Close by rules work)\n- Save running apps and windows manually\n- Restore a selected session at startup (See also: #9). disabled by default.\n- Restore a saved session manually\n- Restore window state, including Always on Top, Always on Visible Workspace and maximization\n- Restore window workspace, size and position\n- Restore 2 column window tiling\n- Stash all supported window states so that those states will be restored after gnome shell restarts via Alt+F2 -> r or killall -3 gnome-shell.\n- Move windows to their own workspace according to a saved session\n- Support multi-monitor\n- Remove saved session to trash\n- Search saved session by the session name fuzzily\n\nFor more information, please visit https://github.com/nlpsuge/gnome-shell-extension-another-window-session-manager/blob/feature-close-save-session-while-logout/README.md.\n\nPlease report issues on Github.", "link": "https://extensions.gnome.org/extension/4709/another-window-session-manager/", "shell_version_map": {
     "40": {"version": "41", "sha256": "09pvlskx2z4dh7wnyf934dyfs8vkp6qfyshqi5j03i7nmfxipwkl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIG9wZW4gd2luZG93cyBncmFjZWZ1bGx5IGFuZCBzYXZlIHRoZW0gYXMgYSBzZXNzaW9uLiBBbmQgeW91IGNhbiByZXN0b3JlIHRoZW0gd2hlbiBuZWNlc3NhcnkgbWFudWFsbHkgb3IgYXV0b21hdGljYWxseSBhdCBzdGFydHVwLiBNb3N0IGltcG9ydGFudGx5LCBpdCBzdXBwb3J0cyBib3RoIFgxMSBhbmQgV2F5bGFuZCFcblxuTWFpbiBmZWF0dXJlczpcbi0gUmVzdG9yZSB0aGUgcHJldmlvdXMgc2Vzc2lvbiBhdCBzdGFydHVwLiBkaXNhYmxlZCBieSBkZWZhdWx0LlxuLSBTYXZlIHJ1bm5pbmcgYXBwcyBhbmQgd2luZG93cyBhdXRvbWF0aWNhbGx5IHdoZW4gbmVjZXNzYXJ5LCB0aGlzIHdpbGwgYmUgdXNlZCB0byByZXN0b3JlIHRoZSBwcmV2aW91cyBzZXNzaW9uIGF0IHN0YXJ0dXAuXG4tIENsb3NlIHJ1bm5pbmcgYXBwcyBhbmQgd2luZG93cyBhdXRvbWF0aWNhbGx5IGJlZm9yZSBMb2cgT3V0LCBSZXN0YXJ0LCBQb3dlciBPZmYuIGRpc2FibGVkIGJ5IGRlZmF1bHQuXG4tIENsb3NlIHJ1bm5pbmcgd2luZG93cyBncmFjZWZ1bGx5XG4tIENsb3NlIGFwcHMgd2l0aCBtdWx0aXBsZSB3aW5kb3dzIGdyYWNlZnVsbHkgdmlhIHlkb3Rvb2wgc28geW91IGRvbid0IGxvc2Ugc2Vzc2lvbnMgb2YgdGhpcyBhcHAgKFNlZSBhbHNvOiBIb3cgdG8gbWFrZSBDbG9zZSBieSBydWxlcyB3b3JrKVxuLSBTYXZlIHJ1bm5pbmcgYXBwcyBhbmQgd2luZG93cyBtYW51YWxseVxuLSBSZXN0b3JlIGEgc2VsZWN0ZWQgc2Vzc2lvbiBhdCBzdGFydHVwIChTZWUgYWxzbzogIzkpLiBkaXNhYmxlZCBieSBkZWZhdWx0LlxuLSBSZXN0b3JlIGEgc2F2ZWQgc2Vzc2lvbiBtYW51YWxseVxuLSBSZXN0b3JlIHdpbmRvdyBzdGF0ZSwgaW5jbHVkaW5nIEFsd2F5cyBvbiBUb3AsIEFsd2F5cyBvbiBWaXNpYmxlIFdvcmtzcGFjZSBhbmQgbWF4aW1pemF0aW9uXG4tIFJlc3RvcmUgd2luZG93IHdvcmtzcGFjZSwgc2l6ZSBhbmQgcG9zaXRpb25cbi0gUmVzdG9yZSAyIGNvbHVtbiB3aW5kb3cgdGlsaW5nXG4tIFN0YXNoIGFsbCBzdXBwb3J0ZWQgd2luZG93IHN0YXRlcyBzbyB0aGF0IHRob3NlIHN0YXRlcyB3aWxsIGJlIHJlc3RvcmVkIGFmdGVyIGdub21lIHNoZWxsIHJlc3RhcnRzIHZpYSBBbHQrRjIgLT4gciBvciBraWxsYWxsIC0zIGdub21lLXNoZWxsLlxuLSBNb3ZlIHdpbmRvd3MgdG8gdGhlaXIgb3duIHdvcmtzcGFjZSBhY2NvcmRpbmcgdG8gYSBzYXZlZCBzZXNzaW9uXG4tIFN1cHBvcnQgbXVsdGktbW9uaXRvclxuLSBSZW1vdmUgc2F2ZWQgc2Vzc2lvbiB0byB0cmFzaFxuLSBTZWFyY2ggc2F2ZWQgc2Vzc2lvbiBieSB0aGUgc2Vzc2lvbiBuYW1lIGZ1enppbHlcblxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vbmxwc3VnZS9nbm9tZS1zaGVsbC1leHRlbnNpb24tYW5vdGhlci13aW5kb3ctc2Vzc2lvbi1tYW5hZ2VyL2Jsb2IvZmVhdHVyZS1jbG9zZS1zYXZlLXNlc3Npb24td2hpbGUtbG9nb3V0L1JFQURNRS5tZC5cblxuUGxlYXNlIHJlcG9ydCBpc3N1ZXMgb24gR2l0aHViLiIsCiAgIm5hbWUiOiAiQW5vdGhlciBXaW5kb3cgU2Vzc2lvbiBNYW5hZ2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ubHBzdWdlL2dub21lLXNoZWxsLWV4dGVuc2lvbi1hbm90aGVyLXdpbmRvdy1zZXNzaW9uLW1hbmFnZXIiLAogICJ1dWlkIjogImFub3RoZXItd2luZG93LXNlc3Npb24tbWFuYWdlckBnbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNDEKfQ=="},
@@ -4219,7 +4386,8 @@
     "42": {"version": "14", "sha256": "0a4c72r83hjdl0bp8f1m9zb3ns9rvi0wfdrw7w1lqkcmrk0zyhl2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgZGJ1cyBjYWxscyB3aGljaCBjYW4gcmV0dXJuIGxpc3Qgb2Ygd2luZG93cywgbW92ZSwgcmVzaXplLCBjbG9zZSB0aGVtIGV0YyIsCiAgIm5hbWUiOiAiV2luZG93IENhbGxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2t5aWNreS93aW5kb3ctY2FsbHMiLAogICJ1dWlkIjogIndpbmRvdy1jYWxsc0Bkb21hbmRvbWFuLnh5eiIsCiAgInZlcnNpb24iOiAxNAp9"},
     "43": {"version": "14", "sha256": "0a4c72r83hjdl0bp8f1m9zb3ns9rvi0wfdrw7w1lqkcmrk0zyhl2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgZGJ1cyBjYWxscyB3aGljaCBjYW4gcmV0dXJuIGxpc3Qgb2Ygd2luZG93cywgbW92ZSwgcmVzaXplLCBjbG9zZSB0aGVtIGV0YyIsCiAgIm5hbWUiOiAiV2luZG93IENhbGxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2t5aWNreS93aW5kb3ctY2FsbHMiLAogICJ1dWlkIjogIndpbmRvdy1jYWxsc0Bkb21hbmRvbWFuLnh5eiIsCiAgInZlcnNpb24iOiAxNAp9"},
     "44": {"version": "14", "sha256": "0a4c72r83hjdl0bp8f1m9zb3ns9rvi0wfdrw7w1lqkcmrk0zyhl2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgZGJ1cyBjYWxscyB3aGljaCBjYW4gcmV0dXJuIGxpc3Qgb2Ygd2luZG93cywgbW92ZSwgcmVzaXplLCBjbG9zZSB0aGVtIGV0YyIsCiAgIm5hbWUiOiAiV2luZG93IENhbGxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2t5aWNreS93aW5kb3ctY2FsbHMiLAogICJ1dWlkIjogIndpbmRvdy1jYWxsc0Bkb21hbmRvbWFuLnh5eiIsCiAgInZlcnNpb24iOiAxNAp9"},
-    "45": {"version": "15", "sha256": "16pr05j7y67dlp5217mm511d6a16fcl232zb8ra2vj6rawr9k9qp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgZGJ1cyBjYWxscyB3aGljaCBjYW4gcmV0dXJuIGxpc3Qgb2Ygd2luZG93cywgbW92ZSwgcmVzaXplLCBjbG9zZSB0aGVtIGV0YyIsCiAgIm5hbWUiOiAiV2luZG93IENhbGxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2lja3lpY2t5L3dpbmRvdy1jYWxscyIsCiAgInV1aWQiOiAid2luZG93LWNhbGxzQGRvbWFuZG9tYW4ueHl6IiwKICAidmVyc2lvbiI6IDE1Cn0="}
+    "45": {"version": "16", "sha256": "0lzwxa9grzzrspngs0h3nkrwx4xw8lv20fvp2nayhwfvlqv8s92s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgZGJ1cyBjYWxscyB3aGljaCBjYW4gcmV0dXJuIGxpc3Qgb2Ygd2luZG93cywgbW92ZSwgcmVzaXplLCBjbG9zZSB0aGVtIGV0YyIsCiAgIm5hbWUiOiAiV2luZG93IENhbGxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2t5aWNreS93aW5kb3ctY2FsbHMiLAogICJ1dWlkIjogIndpbmRvdy1jYWxsc0Bkb21hbmRvbWFuLnh5eiIsCiAgInZlcnNpb24iOiAxNgp9"},
+    "46": {"version": "16", "sha256": "0lzwxa9grzzrspngs0h3nkrwx4xw8lv20fvp2nayhwfvlqv8s92s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgZGJ1cyBjYWxscyB3aGljaCBjYW4gcmV0dXJuIGxpc3Qgb2Ygd2luZG93cywgbW92ZSwgcmVzaXplLCBjbG9zZSB0aGVtIGV0YyIsCiAgIm5hbWUiOiAiV2luZG93IENhbGxzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2t5aWNreS93aW5kb3ctY2FsbHMiLAogICJ1dWlkIjogIndpbmRvdy1jYWxsc0Bkb21hbmRvbWFuLnh5eiIsCiAgInZlcnNpb24iOiAxNgp9"}
   }}
 , {"uuid": "primary_input_on_lockscreen@sagidayan.com", "name": "Primary Input on LockScreen", "pname": "primary-input-on-lockscreen", "description": "Automatically change the keyboard layout on the lock screen to the primary one.\n\nThis is a small, simple extension that solves an annoying issue for users with several keyboard layouts (until it gets solved upstream).\n\nWhenever the lock screen kicks in, this extension checks for the currently selected keyboard layout and switches it to the primary one (the first one in your list of keyboard layouts in Settings).", "link": "https://extensions.gnome.org/extension/4727/primary-input-on-lockscreen/", "shell_version_map": {
     "40": {"version": "6", "sha256": "07jrp8likl7jqzhmyr1bi1kjnmqmj5qpfl07dxncz8sfligiiq1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgY2hhbmdlIGlucHV0IGxheW91dCB0byBwcmltYXJ5IG9uIGxvY2sgc2NyZWVuIiwKICAibmFtZSI6ICJQcmltYXJ5IElucHV0IG9uIExvY2tTY3JlZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NhZ2lkYXlhbi9wcmltYXJ5LWlucHV0LW9uLWxvY2tzY3JlZW4iLAogICJ1dWlkIjogInByaW1hcnlfaW5wdXRfb25fbG9ja3NjcmVlbkBzYWdpZGF5YW4uY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
@@ -4227,7 +4395,8 @@
     "42": {"version": "6", "sha256": "07jrp8likl7jqzhmyr1bi1kjnmqmj5qpfl07dxncz8sfligiiq1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgY2hhbmdlIGlucHV0IGxheW91dCB0byBwcmltYXJ5IG9uIGxvY2sgc2NyZWVuIiwKICAibmFtZSI6ICJQcmltYXJ5IElucHV0IG9uIExvY2tTY3JlZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NhZ2lkYXlhbi9wcmltYXJ5LWlucHV0LW9uLWxvY2tzY3JlZW4iLAogICJ1dWlkIjogInByaW1hcnlfaW5wdXRfb25fbG9ja3NjcmVlbkBzYWdpZGF5YW4uY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "43": {"version": "6", "sha256": "07jrp8likl7jqzhmyr1bi1kjnmqmj5qpfl07dxncz8sfligiiq1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgY2hhbmdlIGlucHV0IGxheW91dCB0byBwcmltYXJ5IG9uIGxvY2sgc2NyZWVuIiwKICAibmFtZSI6ICJQcmltYXJ5IElucHV0IG9uIExvY2tTY3JlZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NhZ2lkYXlhbi9wcmltYXJ5LWlucHV0LW9uLWxvY2tzY3JlZW4iLAogICJ1dWlkIjogInByaW1hcnlfaW5wdXRfb25fbG9ja3NjcmVlbkBzYWdpZGF5YW4uY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "44": {"version": "6", "sha256": "07jrp8likl7jqzhmyr1bi1kjnmqmj5qpfl07dxncz8sfligiiq1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgY2hhbmdlIGlucHV0IGxheW91dCB0byBwcmltYXJ5IG9uIGxvY2sgc2NyZWVuIiwKICAibmFtZSI6ICJQcmltYXJ5IElucHV0IG9uIExvY2tTY3JlZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NhZ2lkYXlhbi9wcmltYXJ5LWlucHV0LW9uLWxvY2tzY3JlZW4iLAogICJ1dWlkIjogInByaW1hcnlfaW5wdXRfb25fbG9ja3NjcmVlbkBzYWdpZGF5YW4uY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
-    "45": {"version": "7", "sha256": "1dpmrpr7p6xphc6gnpknajrlsfiryblsxl3vrqqh87qgnck5i462", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgY2hhbmdlIHRoZSBrZXlib2FyZCBsYXlvdXQgb24gdGhlIGxvY2sgc2NyZWVuIHRvIHRoZSBwcmltYXJ5IG9uZS5cblxuVGhpcyBpcyBhIHNtYWxsLCBzaW1wbGUgZXh0ZW5zaW9uIHRoYXQgc29sdmVzIGFuIGFubm95aW5nIGlzc3VlIGZvciB1c2VycyB3aXRoIHNldmVyYWwga2V5Ym9hcmQgbGF5b3V0cyAodW50aWwgaXQgZ2V0cyBzb2x2ZWQgdXBzdHJlYW0pLlxuXG5XaGVuZXZlciB0aGUgbG9jayBzY3JlZW4ga2lja3MgaW4sIHRoaXMgZXh0ZW5zaW9uIGNoZWNrcyBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBrZXlib2FyZCBsYXlvdXQgYW5kIHN3aXRjaGVzIGl0IHRvIHRoZSBwcmltYXJ5IG9uZSAodGhlIGZpcnN0IG9uZSBpbiB5b3VyIGxpc3Qgb2Yga2V5Ym9hcmQgbGF5b3V0cyBpbiBTZXR0aW5ncykuIiwKICAibmFtZSI6ICJQcmltYXJ5IElucHV0IG9uIExvY2tTY3JlZW4iLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NhZ2lkYXlhbi9wcmltYXJ5LWlucHV0LW9uLWxvY2tzY3JlZW4iLAogICJ1dWlkIjogInByaW1hcnlfaW5wdXRfb25fbG9ja3NjcmVlbkBzYWdpZGF5YW4uY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="}
+    "45": {"version": "8", "sha256": "0bynqyh2iknfdbq9q4r5bqi2mdi85v6zn793hbm8i582hlag4i8p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgY2hhbmdlIHRoZSBrZXlib2FyZCBsYXlvdXQgb24gdGhlIGxvY2sgc2NyZWVuIHRvIHRoZSBwcmltYXJ5IG9uZS5cblxuVGhpcyBpcyBhIHNtYWxsLCBzaW1wbGUgZXh0ZW5zaW9uIHRoYXQgc29sdmVzIGFuIGFubm95aW5nIGlzc3VlIGZvciB1c2VycyB3aXRoIHNldmVyYWwga2V5Ym9hcmQgbGF5b3V0cyAodW50aWwgaXQgZ2V0cyBzb2x2ZWQgdXBzdHJlYW0pLlxuXG5XaGVuZXZlciB0aGUgbG9jayBzY3JlZW4ga2lja3MgaW4sIHRoaXMgZXh0ZW5zaW9uIGNoZWNrcyBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBrZXlib2FyZCBsYXlvdXQgYW5kIHN3aXRjaGVzIGl0IHRvIHRoZSBwcmltYXJ5IG9uZSAodGhlIGZpcnN0IG9uZSBpbiB5b3VyIGxpc3Qgb2Yga2V5Ym9hcmQgbGF5b3V0cyBpbiBTZXR0aW5ncykuIiwKICAibmFtZSI6ICJQcmltYXJ5IElucHV0IG9uIExvY2tTY3JlZW4iLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9zYWdpZGF5YW4vcHJpbWFyeS1pbnB1dC1vbi1sb2Nrc2NyZWVuIiwKICAidXVpZCI6ICJwcmltYXJ5X2lucHV0X29uX2xvY2tzY3JlZW5Ac2FnaWRheWFuLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="},
+    "46": {"version": "8", "sha256": "0bynqyh2iknfdbq9q4r5bqi2mdi85v6zn793hbm8i582hlag4i8p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgY2hhbmdlIHRoZSBrZXlib2FyZCBsYXlvdXQgb24gdGhlIGxvY2sgc2NyZWVuIHRvIHRoZSBwcmltYXJ5IG9uZS5cblxuVGhpcyBpcyBhIHNtYWxsLCBzaW1wbGUgZXh0ZW5zaW9uIHRoYXQgc29sdmVzIGFuIGFubm95aW5nIGlzc3VlIGZvciB1c2VycyB3aXRoIHNldmVyYWwga2V5Ym9hcmQgbGF5b3V0cyAodW50aWwgaXQgZ2V0cyBzb2x2ZWQgdXBzdHJlYW0pLlxuXG5XaGVuZXZlciB0aGUgbG9jayBzY3JlZW4ga2lja3MgaW4sIHRoaXMgZXh0ZW5zaW9uIGNoZWNrcyBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBrZXlib2FyZCBsYXlvdXQgYW5kIHN3aXRjaGVzIGl0IHRvIHRoZSBwcmltYXJ5IG9uZSAodGhlIGZpcnN0IG9uZSBpbiB5b3VyIGxpc3Qgb2Yga2V5Ym9hcmQgbGF5b3V0cyBpbiBTZXR0aW5ncykuIiwKICAibmFtZSI6ICJQcmltYXJ5IElucHV0IG9uIExvY2tTY3JlZW4iLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9zYWdpZGF5YW4vcHJpbWFyeS1pbnB1dC1vbi1sb2Nrc2NyZWVuIiwKICAidXVpZCI6ICJwcmltYXJ5X2lucHV0X29uX2xvY2tzY3JlZW5Ac2FnaWRheWFuLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="}
   }}
 , {"uuid": "browser-tabs@com.github.harshadgavali", "name": "Browser tabs", "pname": "browser-tabs", "description": "Search and switch to browser tabs using GNOME overview/ArcMenu\n\nSee following github link for installing necessary browser extension and host app!", "link": "https://extensions.gnome.org/extension/4733/browser-tabs/", "shell_version_map": {
     "40": {"version": "4", "sha256": "1r1m6cfi9pv0sz651b95ji2rk40rhwmdnivq2jaf030w3qrkwysf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgc3dpdGNoIHRvIGJyb3dzZXIgdGFicyB1c2luZyBHTk9NRSBvdmVydmlldy9BcmNNZW51XG5cblNlZSBmb2xsb3dpbmcgZ2l0aHViIGxpbmsgZm9yIGluc3RhbGxpbmcgbmVjZXNzYXJ5IGJyb3dzZXIgZXh0ZW5zaW9uIGFuZCBob3N0IGFwcCEiLAogICJuYW1lIjogIkJyb3dzZXIgdGFicyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hhcnNoYWRnYXZhbGkvc2VhcmNocHJvdmlkZXItZm9yLWJyb3dzZXItdGFicy5naXQvIiwKICAidXVpZCI6ICJicm93c2VyLXRhYnNAY29tLmdpdGh1Yi5oYXJzaGFkZ2F2YWxpIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -4333,7 +4502,8 @@
     "42": {"version": "4", "sha256": "07pycv9wkri4qk1nkrqrxykrcjfd0pqj525z74kcjy8ji85n63vn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgd29ya3NwYWNlIG9uIGxvZ2luLlxuVXNlZnVsIGZvciBmaXhlZCBudW1iZXIgb2Ygd29ya3NwYWNlIHNldHVwcyB3aGVyZSB0aGUgZmlyc3Qgd29ya3NwYWNlIGlzbid0IHRoZSBtYWluIG9uZS4iLAogICJuYW1lIjogIkRlZmF1bHQgV29ya3NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXRldXNSb2RDb3N0YS9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGVmYXVsdC13b3Jrc3BhY2UiLAogICJ1dWlkIjogImRlZmF1bHQtd29ya3NwYWNlQG1hdGV1c3JvZGNvc3RhLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
     "43": {"version": "4", "sha256": "07pycv9wkri4qk1nkrqrxykrcjfd0pqj525z74kcjy8ji85n63vn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgd29ya3NwYWNlIG9uIGxvZ2luLlxuVXNlZnVsIGZvciBmaXhlZCBudW1iZXIgb2Ygd29ya3NwYWNlIHNldHVwcyB3aGVyZSB0aGUgZmlyc3Qgd29ya3NwYWNlIGlzbid0IHRoZSBtYWluIG9uZS4iLAogICJuYW1lIjogIkRlZmF1bHQgV29ya3NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXRldXNSb2RDb3N0YS9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGVmYXVsdC13b3Jrc3BhY2UiLAogICJ1dWlkIjogImRlZmF1bHQtd29ya3NwYWNlQG1hdGV1c3JvZGNvc3RhLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
     "44": {"version": "4", "sha256": "07pycv9wkri4qk1nkrqrxykrcjfd0pqj525z74kcjy8ji85n63vn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgd29ya3NwYWNlIG9uIGxvZ2luLlxuVXNlZnVsIGZvciBmaXhlZCBudW1iZXIgb2Ygd29ya3NwYWNlIHNldHVwcyB3aGVyZSB0aGUgZmlyc3Qgd29ya3NwYWNlIGlzbid0IHRoZSBtYWluIG9uZS4iLAogICJuYW1lIjogIkRlZmF1bHQgV29ya3NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXRldXNSb2RDb3N0YS9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGVmYXVsdC13b3Jrc3BhY2UiLAogICJ1dWlkIjogImRlZmF1bHQtd29ya3NwYWNlQG1hdGV1c3JvZGNvc3RhLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
-    "45": {"version": "6", "sha256": "0wwg8wb3pggpwkr582qxyc8w0lir5lsspdxx36pj5y29mdypcmnd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgd29ya3NwYWNlIG9uIGxvZ2luLlxuVXNlZnVsIGZvciBmaXhlZCBudW1iZXIgb2Ygd29ya3NwYWNlIHNldHVwcyB3aGVyZSB0aGUgZmlyc3Qgd29ya3NwYWNlIGlzbid0IHRoZSBtYWluIG9uZS4iLAogICJuYW1lIjogIkRlZmF1bHQgV29ya3NwYWNlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlZmF1bHQtd29ya3NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01hdGV1c1JvZENvc3RhL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZWZhdWx0LXdvcmtzcGFjZSIsCiAgInV1aWQiOiAiZGVmYXVsdC13b3Jrc3BhY2VAbWF0ZXVzcm9kY29zdGEuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="}
+    "45": {"version": "7", "sha256": "0f6fy2zwcz8i19bpmswy09ajs30m5cg17q8s78qr879g4184x3za", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgd29ya3NwYWNlIG9uIGxvZ2luLlxuVXNlZnVsIGZvciBmaXhlZCBudW1iZXIgb2Ygd29ya3NwYWNlIHNldHVwcyB3aGVyZSB0aGUgZmlyc3Qgd29ya3NwYWNlIGlzbid0IHRoZSBtYWluIG9uZS4iLAogICJuYW1lIjogIkRlZmF1bHQgV29ya3NwYWNlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlZmF1bHQtd29ya3NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXRldXNSb2RDb3N0YS9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGVmYXVsdC13b3Jrc3BhY2UiLAogICJ1dWlkIjogImRlZmF1bHQtd29ya3NwYWNlQG1hdGV1c3JvZGNvc3RhLmNvbSIsCiAgInZlcnNpb24iOiA3Cn0="},
+    "46": {"version": "7", "sha256": "0f6fy2zwcz8i19bpmswy09ajs30m5cg17q8s78qr879g4184x3za", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgd29ya3NwYWNlIG9uIGxvZ2luLlxuVXNlZnVsIGZvciBmaXhlZCBudW1iZXIgb2Ygd29ya3NwYWNlIHNldHVwcyB3aGVyZSB0aGUgZmlyc3Qgd29ya3NwYWNlIGlzbid0IHRoZSBtYWluIG9uZS4iLAogICJuYW1lIjogIkRlZmF1bHQgV29ya3NwYWNlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlZmF1bHQtd29ya3NwYWNlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXRldXNSb2RDb3N0YS9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGVmYXVsdC13b3Jrc3BhY2UiLAogICJ1dWlkIjogImRlZmF1bHQtd29ya3NwYWNlQG1hdGV1c3JvZGNvc3RhLmNvbSIsCiAgInZlcnNpb24iOiA3Cn0="}
   }}
 , {"uuid": "alt-mouse@eexpss.gmail.com", "name": "Alt Mouse", "pname": "alt-mouse", "description": "* Alt + Mouse control window\nDetailed instructions are on the home page and in config interface. \nDisable desktop BackgroundMenu, Disable Panel dragMode. \nAdd a gap at right screen edge. \nAdd Top-Left and Top-Right corner as hot coner.", "link": "https://extensions.gnome.org/extension/4786/alt-mouse/", "shell_version_map": {
     "40": {"version": "12", "sha256": "1kcsbvvm6wigw0h2d23rx4vsqdawa7m5gfynjdc9xzxn3q8sxx0b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiogQWx0ICsgTW91c2UgY29udHJvbCB3aW5kb3dcbkRldGFpbGVkIGluc3RydWN0aW9ucyBhcmUgb24gdGhlIGhvbWUgcGFnZSBhbmQgaW4gY29uZmlnIGludGVyZmFjZS4gXG5EaXNhYmxlIGRlc2t0b3AgQmFja2dyb3VuZE1lbnUsIERpc2FibGUgUGFuZWwgZHJhZ01vZGUuIFxuQWRkIGEgZ2FwIGF0IHJpZ2h0IHNjcmVlbiBlZGdlLiBcbkFkZCBUb3AtTGVmdCBhbmQgVG9wLVJpZ2h0IGNvcm5lciBhcyBob3QgY29uZXIuIiwKICAibmFtZSI6ICJBbHQgTW91c2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9lZXhwcmVzcy9ncy1hbHQtbW91c2UiLAogICJ1dWlkIjogImFsdC1tb3VzZUBlZXhwc3MuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDEyCn0="},
@@ -4346,10 +4516,11 @@
     "38": {"version": "9", "sha256": "1pd5a520rfnf4hcpdqxq7z5c7691qh07685as6s9ssvfdzhxxf61", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgYXQgb25lIHBsYWNlXG4tIGFsbG93cyB0byBzd2l0Y2ggd29ya3NwYWNlcyBvcmllbnRhdGlvbiB0byBob3Jpem9udGFsIG9yIHZlcnRpY2FsXG4tIGFkZHMgd29ya3NwYWNlIHN3aXRjaGVyICdXcmFwYXJvdWQnIGFuZCAnSWdub3JlIExhc3QgKGVtcHR5KSBXb3Jrc3BhY2UnIG9wdGlvbnNcbi0gYWxsb3dzIHRvIGRpc2FibGUgb3IgY3VzdG9taXplIHN3aXRjaGVyIHBvcHVwXG4tIGFsbG93cyBhZGRpbmcgY29udGVudCB0byB0aGUgd29ya3NwYWNlIHN3aXRjaGVyIHBvcHVwIC0gV29ya3NwYWNlIE5hbWUsIEN1cnJlbnQgQXBwbGljYXRpb24gTmFtZSwgV29ya3NwYWNlIEluZGV4XG4tIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbi5cblxuUGxlYXNlLCByZXBvcnQgYnVncyBvbiB0aGUgR2l0SHViIHBhZ2UgbGlua2VkIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogIndvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAibmFtZSI6ICJXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
     "40": {"version": "9", "sha256": "1pd5a520rfnf4hcpdqxq7z5c7691qh07685as6s9ssvfdzhxxf61", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgYXQgb25lIHBsYWNlXG4tIGFsbG93cyB0byBzd2l0Y2ggd29ya3NwYWNlcyBvcmllbnRhdGlvbiB0byBob3Jpem9udGFsIG9yIHZlcnRpY2FsXG4tIGFkZHMgd29ya3NwYWNlIHN3aXRjaGVyICdXcmFwYXJvdWQnIGFuZCAnSWdub3JlIExhc3QgKGVtcHR5KSBXb3Jrc3BhY2UnIG9wdGlvbnNcbi0gYWxsb3dzIHRvIGRpc2FibGUgb3IgY3VzdG9taXplIHN3aXRjaGVyIHBvcHVwXG4tIGFsbG93cyBhZGRpbmcgY29udGVudCB0byB0aGUgd29ya3NwYWNlIHN3aXRjaGVyIHBvcHVwIC0gV29ya3NwYWNlIE5hbWUsIEN1cnJlbnQgQXBwbGljYXRpb24gTmFtZSwgV29ya3NwYWNlIEluZGV4XG4tIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbi5cblxuUGxlYXNlLCByZXBvcnQgYnVncyBvbiB0aGUgR2l0SHViIHBhZ2UgbGlua2VkIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogIndvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAibmFtZSI6ICJXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
     "41": {"version": "9", "sha256": "1pd5a520rfnf4hcpdqxq7z5c7691qh07685as6s9ssvfdzhxxf61", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgYXQgb25lIHBsYWNlXG4tIGFsbG93cyB0byBzd2l0Y2ggd29ya3NwYWNlcyBvcmllbnRhdGlvbiB0byBob3Jpem9udGFsIG9yIHZlcnRpY2FsXG4tIGFkZHMgd29ya3NwYWNlIHN3aXRjaGVyICdXcmFwYXJvdWQnIGFuZCAnSWdub3JlIExhc3QgKGVtcHR5KSBXb3Jrc3BhY2UnIG9wdGlvbnNcbi0gYWxsb3dzIHRvIGRpc2FibGUgb3IgY3VzdG9taXplIHN3aXRjaGVyIHBvcHVwXG4tIGFsbG93cyBhZGRpbmcgY29udGVudCB0byB0aGUgd29ya3NwYWNlIHN3aXRjaGVyIHBvcHVwIC0gV29ya3NwYWNlIE5hbWUsIEN1cnJlbnQgQXBwbGljYXRpb24gTmFtZSwgV29ya3NwYWNlIEluZGV4XG4tIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbi5cblxuUGxlYXNlLCByZXBvcnQgYnVncyBvbiB0aGUgR2l0SHViIHBhZ2UgbGlua2VkIGJlbG93LiIsCiAgImdldHRleHQtZG9tYWluIjogIndvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAibmFtZSI6ICJXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
-    "42": {"version": "13", "sha256": "0kx6q83x540w4drv07rivbbz8liv8n1mi4vaygi330hqannsy6ds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIFN3aXRjaGVyIE1hbmFnZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4xIgp9"},
-    "43": {"version": "13", "sha256": "0kx6q83x540w4drv07rivbbz8liv8n1mi4vaygi330hqannsy6ds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIFN3aXRjaGVyIE1hbmFnZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4xIgp9"},
-    "44": {"version": "13", "sha256": "0kx6q83x540w4drv07rivbbz8liv8n1mi4vaygi330hqannsy6ds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIFN3aXRjaGVyIE1hbmFnZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4xIgp9"},
-    "45": {"version": "12", "sha256": "15548k8jk4mkchp869fxbdnw7wpxfsq8sphgx3cf2b7dyw3rx1v6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV29ya3NwYWNlIFN3aXRjaGVyIE1hbmFnZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvd29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJ1dWlkIjogIndvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMiwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjEiCn0="}
+    "42": {"version": "15", "sha256": "1xmni6cpab37cr5sfv1bcra8nmyjm2ajrk40jfc4872skxh5axxf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV1NNIChXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlcikiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTUsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4yIgp9"},
+    "43": {"version": "15", "sha256": "1xmni6cpab37cr5sfv1bcra8nmyjm2ajrk40jfc4872skxh5axxf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV1NNIChXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlcikiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTUsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4yIgp9"},
+    "44": {"version": "15", "sha256": "1xmni6cpab37cr5sfv1bcra8nmyjm2ajrk40jfc4872skxh5axxf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV1NNIChXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlcikiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTUsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4yIgp9"},
+    "45": {"version": "14", "sha256": "0gsq0ggfjdpk814iacan8q54cm3w4h0dfngwpj5z100jy8ir24v9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV1NNIChXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlcikiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvd29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJ1dWlkIjogIndvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNCwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjIiCn0="},
+    "46": {"version": "14", "sha256": "0gsq0ggfjdpk814iacan8q54cm3w4h0dfngwpj5z100jy8ir24v9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCB1c2VmdWwhIEN1c3RvbWl6ZSB5b3VyIHdvcmtzcGFjZSBzd2l0Y2hlciBiZWhhdmlvciBhbmQgdGhlIGNvbnRlbnQsIGRpbWVuc2lvbnMsIHBvc2l0aW9uLCBvcmllbnRhdGlvbiBhbmQgY29sb3JzIG9mIGl0cyBwb3B1cCBpbmRpY2F0b3IuXG5cbi0gYWxsIEdOT01FIHdvcmtzcGFjZSByZWxhdGVkIG9wdGlvbnMgaW4gb25lIHBsYWNlXG4tIGFkZHMgd3Mgc3dpdGNoZXIgV3JhcGFyb3VkIGFuZCBJZ25vcmUgTGFzdCAoZW1wdHkpIFdvcmtzcGFjZSBvcHRpb25zXG4tIGFsbG93cyB0byBkaXNhYmxlIG9yIGN1c3RvbWl6ZSBzd2l0Y2hlciBwb3B1cFxuLSBhbGxvd3MgYWRkaW5nIGNvbnRlbnQgdG8gdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAtIFdvcmtzcGFjZSBOYW1lLCBDdXJyZW50IEFwcGxpY2F0aW9uIE5hbWUsIFdvcmtzcGFjZSBJbmRleFxuLSB3cyBzd2l0Y2hlciBwb3B1cCBhcHBlYXJhbmNlIGN1c3RvbWl6YXRpb24gaW5jbHVkZXMgcG9zaXRpb24gb24gc2NyZWVuLCB0aW1pbmdzLCBzaXplLCBjb2xvcnMgLCBvcmllbnRhdGlvbiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3b3Jrc3BhY2Utc3dpdGNoZXItbWFuYWdlciIsCiAgIm5hbWUiOiAiV1NNIChXb3Jrc3BhY2UgU3dpdGNoZXIgTWFuYWdlcikiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvd29ya3NwYWNlLXN3aXRjaGVyLW1hbmFnZXIiLAogICJ1dWlkIjogIndvcmtzcGFjZS1zd2l0Y2hlci1tYW5hZ2VyQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNCwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjIiCn0="}
   }}
 , {"uuid": "compare@eexpss.gmail.com", "name": "Compare or Open", "pname": "compare-filedir-from-clip", "description": "Copy/Select two Dirs/Files from anywhere such as `nautilus` or `gnome-terminal`, and then compare them (use `meld`) or open with Ctrl-O or open with context-menu.", "link": "https://extensions.gnome.org/extension/4789/compare-filedir-from-clip/", "shell_version_map": {
     "40": {"version": "15", "sha256": "0is8y6cs3qfaljlmyfhjpp71fbd98bizldf0rhrblm91mjfhqi3a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvcHkvU2VsZWN0IHR3byBEaXJzL0ZpbGVzIGZyb20gYW55d2hlcmUgc3VjaCBhcyBgbmF1dGlsdXNgIG9yIGBnbm9tZS10ZXJtaW5hbGAsIGFuZCB0aGVuIGNvbXBhcmUgdGhlbSAodXNlIGBtZWxkYCkgb3Igb3BlbiB3aXRoIEN0cmwtTyBvciBvcGVuIHdpdGggY29udGV4dC1tZW51LiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbXBhcmUiLAogICJuYW1lIjogIkNvbXBhcmUgb3IgT3BlbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb21wYXJlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWV4cHJlc3MvZ25vbWUtc2hlbGwtY29tcGFyZSIsCiAgInV1aWQiOiAiY29tcGFyZUBlZXhwc3MuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE1Cn0="},
@@ -4361,7 +4532,8 @@
     "42": {"version": "8", "sha256": "0ldkfawgpdzzicr7ja1v1lyjg38pw0mh2i91gm3bdf9wxln4d6j7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHRvZ2dsZSB0byBlbmFibGUvZGlzYWJsZSBDUFUgZnJlcXVlbmN5IGJvb3N0IGluIEdub21lIFBvd2VyIFByb2ZpbGVzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnJlcS1ib29zdC1zd2l0Y2hAbWV0YWwwMzMyNiIsCiAgIm5hbWUiOiAiRnJlcXVlbmN5IEJvb3N0IFN3aXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVxLWJvb3N0LXN3aXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9tZXRhbDAzMzI2L2dub21lLWZyZXF1ZW5jeS1ib29zdC1zd2l0Y2giLAogICJ1dWlkIjogImZyZXEtYm9vc3Qtc3dpdGNoQG1ldGFsMDMzMjYiLAogICJ2ZXJzaW9uIjogOAp9"},
     "43": {"version": "9", "sha256": "0fj1bc209l2zz8cwllxm5nadd0hmvikf9d1ydfwc25l201czl68m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHRvZ2dsZSB0byBlbmFibGUvZGlzYWJsZSBDUFUgZnJlcXVlbmN5IGJvb3N0IGluIEdub21lIFBvd2VyIFByb2ZpbGVzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnJlcS1ib29zdC1zd2l0Y2hAbWV0YWwwMzMyNiIsCiAgIm5hbWUiOiAiRnJlcXVlbmN5IEJvb3N0IFN3aXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVxLWJvb3N0LXN3aXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9tZXRhbDAzMzI2L2dub21lLWZyZXF1ZW5jeS1ib29zdC1zd2l0Y2giLAogICJ1dWlkIjogImZyZXEtYm9vc3Qtc3dpdGNoQG1ldGFsMDMzMjYiLAogICJ2ZXJzaW9uIjogOQp9"},
     "44": {"version": "12", "sha256": "14kxvp230ls2g657yl4zxnsz1f3rn9m20ykrmqmvsjkhcmgkkq30", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHRvZ2dsZSB0byBlbmFibGUvZGlzYWJsZSBDUFUgZnJlcXVlbmN5IGJvb3N0IGluIEdub21lIFBvd2VyIFByb2ZpbGVzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnJlcS1ib29zdC1zd2l0Y2hAbWV0YWwwMzMyNiIsCiAgIm5hbWUiOiAiRnJlcXVlbmN5IEJvb3N0IFN3aXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVxLWJvb3N0LXN3aXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9tZXRhbDAzMzI2L2dub21lLWZyZXF1ZW5jeS1ib29zdC1zd2l0Y2giLAogICJ1dWlkIjogImZyZXEtYm9vc3Qtc3dpdGNoQG1ldGFsMDMzMjYiLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
-    "45": {"version": "19", "sha256": "08dy68x4g4i84lkns2hnbrax4y7d8m8z6k9qqhb120wjkz7x03vk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHRvZ2dsZSB0byBlbmFibGUvZGlzYWJsZSBDUFUgZnJlcXVlbmN5IGJvb3N0IGluIEdub21lIFF1aWNrIFNldHRpbmdzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnJlcS1ib29zdC1zd2l0Y2hAbWV0YWwwMzMyNiIsCiAgIm5hbWUiOiAiRnJlcXVlbmN5IEJvb3N0IFN3aXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVxLWJvb3N0LXN3aXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9tZXRhbDAzMzI2L2dub21lLWZyZXF1ZW5jeS1ib29zdC1zd2l0Y2giLAogICJ1dWlkIjogImZyZXEtYm9vc3Qtc3dpdGNoQG1ldGFsMDMzMjYiLAogICJ2ZXJzaW9uIjogMTkKfQ=="}
+    "45": {"version": "20", "sha256": "0ykmczg7n5rbp84ldl385ia7x88r47i7vbgpc3gy66pah7l23fih", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHRvZ2dsZSB0byBlbmFibGUvZGlzYWJsZSBDUFUgZnJlcXVlbmN5IGJvb3N0IGluIEdub21lIFF1aWNrIFNldHRpbmdzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnJlcS1ib29zdC1zd2l0Y2hAbWV0YWwwMzMyNiIsCiAgIm5hbWUiOiAiRnJlcXVlbmN5IEJvb3N0IFN3aXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVxLWJvb3N0LXN3aXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbWV0YWwwMzMyNi9nbm9tZS1mcmVxdWVuY3ktYm9vc3Qtc3dpdGNoIiwKICAidXVpZCI6ICJmcmVxLWJvb3N0LXN3aXRjaEBtZXRhbDAzMzI2IiwKICAidmVyc2lvbiI6IDIwCn0="},
+    "46": {"version": "20", "sha256": "0ykmczg7n5rbp84ldl385ia7x88r47i7vbgpc3gy66pah7l23fih", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHRvZ2dsZSB0byBlbmFibGUvZGlzYWJsZSBDUFUgZnJlcXVlbmN5IGJvb3N0IGluIEdub21lIFF1aWNrIFNldHRpbmdzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZnJlcS1ib29zdC1zd2l0Y2hAbWV0YWwwMzMyNiIsCiAgIm5hbWUiOiAiRnJlcXVlbmN5IEJvb3N0IFN3aXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5mcmVxLWJvb3N0LXN3aXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbWV0YWwwMzMyNi9nbm9tZS1mcmVxdWVuY3ktYm9vc3Qtc3dpdGNoIiwKICAidXVpZCI6ICJmcmVxLWJvb3N0LXN3aXRjaEBtZXRhbDAzMzI2IiwKICAidmVyc2lvbiI6IDIwCn0="}
   }}
 , {"uuid": "pop-launcher-super-key@ManeLippert", "name": "Pop Launcher Super-Key", "pname": "pop-launcher-super-key", "description": "Fork of Pop COSMIC: Binds Pop Launcher on Super-Key when Pop COSMIC Extension is disabled. \n\nSince Pop!_OS moves to its own desktop enviroment (COSMIC DE) and I left linux behind me this extension will not get continued. If someone is willing to port the extension to Gnome 45, get in touch with me on the repository page on GitHub.\n\nIf you want to change the support manually, modify '~/.local/share/gnome-shell/extensions/pop-launcher-super-key@ManeLippert/metadata.json' under 'shell-version' add the desired version (e.g '44' for GNOME 44).", "link": "https://extensions.gnome.org/extension/4797/pop-launcher-super-key/", "shell_version_map": {
     "38": {"version": "10", "sha256": "05qdfqiscminv560finl4qy6747n9r1n54h1yx7k648wwxb31s9s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgUG9wIENPU01JQzogQmluZHMgUG9wIExhdW5jaGVyIG9uIFN1cGVyLUtleSB3aGVuIFBvcCBDT1NNSUMgRXh0ZW5zaW9uIGlzIGRpc2FibGVkLiBcblxuU2luY2UgUG9wIV9PUyBtb3ZlcyB0byBpdHMgb3duIGRlc2t0b3AgZW52aXJvbWVudCAoQ09TTUlDIERFKSBhbmQgSSBsZWZ0IGxpbnV4IGJlaGluZCBtZSB0aGlzIGV4dGVuc2lvbiB3aWxsIG5vdCBnZXQgY29udGludWVkLiBcblxuSWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSBzdXBwb3J0IG1hbnVhbGx5LCBtb2RpZnkgJ34vLmxvY2FsL3NoYXJlL2dub21lLXNoZWxsL2V4dGVuc2lvbnMvcG9wLWxhdW5jaGVyLXN1cGVyLWtleUBNYW5lTGlwcGVydC9tZXRhZGF0YS5qc29uJyB1bmRlciAnc2hlbGwtdmVyc2lvbicgYWRkIHRoZSBkZXNpcmVkIHZlcnNpb24gKGUuZyAnNDQnIGZvciBHTk9NRSA0NCkuIiwKICAibmFtZSI6ICJQb3AgTGF1bmNoZXIgU3VwZXItS2V5IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJTeXN0ZW03NiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wb3AtbGF1bmNoZXItc3VwZXIta2V5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYW5lTGlwcGVydC9wb3AtbGF1bmNoZXItc3VwZXIta2V5IiwKICAidXVpZCI6ICJwb3AtbGF1bmNoZXItc3VwZXIta2V5QE1hbmVMaXBwZXJ0IiwKICAidmVyc2lvbiI6IDEwCn0="},
@@ -4376,20 +4548,22 @@
     "42": {"version": "13", "sha256": "07l1vgv9zhyh8q2h0gnn69x7h8gfn8x9q34p9lab7w08s4zn2rnb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIGJhdHRlcnkgdGhyZXNob2xkIG9uIExlbm92byBUaGlua3BhZCBsYXB0b3BzLlxuXG5JZiB5b3UgbWFpbmx5IHVzZSB0aGUgc3lzdGVtIHdpdGggdGhlIEFDIHBvd2VyIGFkYXB0ZXIgY29ubmVjdGVkIGFuZCBvbmx5IHVzZSB0aGUgYmF0dGVyeSBzcG9yYWRpY2FsbHksIHlvdSBjYW4gaW5jcmVhc2UgYmF0dGVyeSBsaWZlIGJ5IHNldHRpbmcgdGhlIG1heGltdW0gY2hhcmdlIHZhbHVlIHRvIGxlc3MgdGhhbiAxMDAlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGJhdHRlcmllcyB0aGF0IGFyZSB1c2VkIHNwb3JhZGljYWxseSBoYXZlIGEgbG9uZ2VyIGxpZmVzcGFuIHdoZW4ga2VwdCBhdCBsZXNzIHRoYW4gZnVsbCBjaGFyZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGRAbWFyY29zZGFsdmFyZXoub3JnIiwKICAibmFtZSI6ICJUaGlua3BhZCBCYXR0ZXJ5IFRocmVzaG9sZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL21hcmNvc2RhbHZhcmV6L3RoaW5rcGFkLWJhdHRlcnktdGhyZXNob2xkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAidGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGRAbWFyY29zZGFsdmFyZXoub3JnIiwKICAidmVyc2lvbiI6IDEzCn0="},
     "43": {"version": "34", "sha256": "0ii1pxbnfjjli8jj0fq1g1rlhzpbn1j9088jp0sjrxvdlrmksdzv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIGJhdHRlcnkgdGhyZXNob2xkIG9uIExlbm92byBUaGlua3BhZCBsYXB0b3BzLlxuXG5JZiB5b3UgbWFpbmx5IHVzZSB0aGUgc3lzdGVtIHdpdGggdGhlIEFDIHBvd2VyIGFkYXB0ZXIgY29ubmVjdGVkIGFuZCBvbmx5IHVzZSB0aGUgYmF0dGVyeSBzcG9yYWRpY2FsbHksIHlvdSBjYW4gaW5jcmVhc2UgYmF0dGVyeSBsaWZlIGJ5IHNldHRpbmcgdGhlIG1heGltdW0gY2hhcmdlIHZhbHVlIHRvIGxlc3MgdGhhbiAxMDAlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGJhdHRlcmllcyB0aGF0IGFyZSB1c2VkIHNwb3JhZGljYWxseSBoYXZlIGEgbG9uZ2VyIGxpZmVzcGFuIHdoZW4ga2VwdCBhdCBsZXNzIHRoYW4gZnVsbCBjaGFyZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGRAbWFyY29zZGFsdmFyZXoub3JnIiwKICAibmFtZSI6ICJUaGlua3BhZCBCYXR0ZXJ5IFRocmVzaG9sZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbWFyY29zZGFsdmFyZXovdGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGQtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJ0aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZEBtYXJjb3NkYWx2YXJlei5vcmciLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
     "44": {"version": "34", "sha256": "0ii1pxbnfjjli8jj0fq1g1rlhzpbn1j9088jp0sjrxvdlrmksdzv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIGJhdHRlcnkgdGhyZXNob2xkIG9uIExlbm92byBUaGlua3BhZCBsYXB0b3BzLlxuXG5JZiB5b3UgbWFpbmx5IHVzZSB0aGUgc3lzdGVtIHdpdGggdGhlIEFDIHBvd2VyIGFkYXB0ZXIgY29ubmVjdGVkIGFuZCBvbmx5IHVzZSB0aGUgYmF0dGVyeSBzcG9yYWRpY2FsbHksIHlvdSBjYW4gaW5jcmVhc2UgYmF0dGVyeSBsaWZlIGJ5IHNldHRpbmcgdGhlIG1heGltdW0gY2hhcmdlIHZhbHVlIHRvIGxlc3MgdGhhbiAxMDAlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGJhdHRlcmllcyB0aGF0IGFyZSB1c2VkIHNwb3JhZGljYWxseSBoYXZlIGEgbG9uZ2VyIGxpZmVzcGFuIHdoZW4ga2VwdCBhdCBsZXNzIHRoYW4gZnVsbCBjaGFyZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGRAbWFyY29zZGFsdmFyZXoub3JnIiwKICAibmFtZSI6ICJUaGlua3BhZCBCYXR0ZXJ5IFRocmVzaG9sZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbWFyY29zZGFsdmFyZXovdGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGQtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJ0aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZEBtYXJjb3NkYWx2YXJlei5vcmciLAogICJ2ZXJzaW9uIjogMzQKfQ=="},
-    "45": {"version": "43", "sha256": "1hk6l2w1n56n406inl7q9phlggpsxy6sgqsqw7j9nm76snkhd582", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIGJhdHRlcnkgdGhyZXNob2xkIG9uIExlbm92byBUaGlua3BhZCBsYXB0b3BzLlxuXG5JZiB5b3UgbWFpbmx5IHVzZSB0aGUgc3lzdGVtIHdpdGggdGhlIEFDIHBvd2VyIGFkYXB0ZXIgY29ubmVjdGVkIGFuZCBvbmx5IHVzZSB0aGUgYmF0dGVyeSBzcG9yYWRpY2FsbHksIHlvdSBjYW4gaW5jcmVhc2UgYmF0dGVyeSBsaWZlIGJ5IHNldHRpbmcgdGhlIG1heGltdW0gY2hhcmdlIHZhbHVlIHRvIGxlc3MgdGhhbiAxMDAlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGJhdHRlcmllcyB0aGF0IGFyZSB1c2VkIHNwb3JhZGljYWxseSBoYXZlIGEgbG9uZ2VyIGxpZmVzcGFuIHdoZW4ga2VwdCBhdCBsZXNzIHRoYW4gZnVsbCBjaGFyZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGRAbWFyY29zZGFsdmFyZXoub3JnIiwKICAibmFtZSI6ICJUaGlua3BhZCBCYXR0ZXJ5IFRocmVzaG9sZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9tYXJjb3NkYWx2YXJlei90aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZC1leHRlbnNpb24iLAogICJ1dWlkIjogInRoaW5rcGFkLWJhdHRlcnktdGhyZXNob2xkQG1hcmNvc2RhbHZhcmV6Lm9yZyIsCiAgInZlcnNpb24iOiA0Mwp9"}
+    "45": {"version": "44", "sha256": "16dmvzvvhf0yi20bi9a82q3nhmpnzv1qzi8hlk0v76zjn2q4fvs8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIGJhdHRlcnkgdGhyZXNob2xkIG9uIExlbm92byBUaGlua3BhZCBsYXB0b3BzLlxuXG5JZiB5b3UgbWFpbmx5IHVzZSB0aGUgc3lzdGVtIHdpdGggdGhlIEFDIHBvd2VyIGFkYXB0ZXIgY29ubmVjdGVkIGFuZCBvbmx5IHVzZSB0aGUgYmF0dGVyeSBzcG9yYWRpY2FsbHksIHlvdSBjYW4gaW5jcmVhc2UgYmF0dGVyeSBsaWZlIGJ5IHNldHRpbmcgdGhlIG1heGltdW0gY2hhcmdlIHZhbHVlIHRvIGxlc3MgdGhhbiAxMDAlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGJhdHRlcmllcyB0aGF0IGFyZSB1c2VkIHNwb3JhZGljYWxseSBoYXZlIGEgbG9uZ2VyIGxpZmVzcGFuIHdoZW4ga2VwdCBhdCBsZXNzIHRoYW4gZnVsbCBjaGFyZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGRAbWFyY29zZGFsdmFyZXoub3JnIiwKICAibmFtZSI6ICJUaGlua3BhZCBCYXR0ZXJ5IFRocmVzaG9sZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbWFyY29zZGFsdmFyZXovdGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGQtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJ0aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZEBtYXJjb3NkYWx2YXJlei5vcmciLAogICJ2ZXJzaW9uIjogNDQKfQ=="},
+    "46": {"version": "44", "sha256": "16dmvzvvhf0yi20bi9a82q3nhmpnzv1qzi8hlk0v76zjn2q4fvs8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIGJhdHRlcnkgdGhyZXNob2xkIG9uIExlbm92byBUaGlua3BhZCBsYXB0b3BzLlxuXG5JZiB5b3UgbWFpbmx5IHVzZSB0aGUgc3lzdGVtIHdpdGggdGhlIEFDIHBvd2VyIGFkYXB0ZXIgY29ubmVjdGVkIGFuZCBvbmx5IHVzZSB0aGUgYmF0dGVyeSBzcG9yYWRpY2FsbHksIHlvdSBjYW4gaW5jcmVhc2UgYmF0dGVyeSBsaWZlIGJ5IHNldHRpbmcgdGhlIG1heGltdW0gY2hhcmdlIHZhbHVlIHRvIGxlc3MgdGhhbiAxMDAlLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGJhdHRlcmllcyB0aGF0IGFyZSB1c2VkIHNwb3JhZGljYWxseSBoYXZlIGEgbG9uZ2VyIGxpZmVzcGFuIHdoZW4ga2VwdCBhdCBsZXNzIHRoYW4gZnVsbCBjaGFyZ2UuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGRAbWFyY29zZGFsdmFyZXoub3JnIiwKICAibmFtZSI6ICJUaGlua3BhZCBCYXR0ZXJ5IFRocmVzaG9sZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbWFyY29zZGFsdmFyZXovdGhpbmtwYWQtYmF0dGVyeS10aHJlc2hvbGQtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJ0aGlua3BhZC1iYXR0ZXJ5LXRocmVzaG9sZEBtYXJjb3NkYWx2YXJlei5vcmciLAogICJ2ZXJzaW9uIjogNDQKfQ=="}
   }}
 , {"uuid": "lock-screen-message@advendradeswanta.gitlab.com", "name": "Lock Screen Message", "pname": "lock-screen-message", "description": "Simple extension that let's you add your message to the lock screen (unlockDialog)", "link": "https://extensions.gnome.org/extension/4801/lock-screen-message/", "shell_version_map": {
     "40": {"version": "3", "sha256": "0hkr6gm7kr69fc4zjb8rddwj75jpbpvqz4wpkfl659wjn4980s3c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdGhhdCBsZXQncyB5b3UgYWRkIHlvdXIgbWVzc2FnZSB0byB0aGUgbG9jayBzY3JlZW4gKHVubG9ja0RpYWxvZykiLAogICJuYW1lIjogIkxvY2sgU2NyZWVuIE1lc3NhZ2UiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVzZXIiLAogICAgInVubG9jay1kaWFsb2ciCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxvY2stc2NyZWVuLW1lc3NhZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9BZHZlbmRyYURlc3dhbnRhL2xvY2stc2NyZWVuLW1lc3NhZ2UiLAogICJ1dWlkIjogImxvY2stc2NyZWVuLW1lc3NhZ2VAYWR2ZW5kcmFkZXN3YW50YS5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
     "41": {"version": "3", "sha256": "0hkr6gm7kr69fc4zjb8rddwj75jpbpvqz4wpkfl659wjn4980s3c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdGhhdCBsZXQncyB5b3UgYWRkIHlvdXIgbWVzc2FnZSB0byB0aGUgbG9jayBzY3JlZW4gKHVubG9ja0RpYWxvZykiLAogICJuYW1lIjogIkxvY2sgU2NyZWVuIE1lc3NhZ2UiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVzZXIiLAogICAgInVubG9jay1kaWFsb2ciCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxvY2stc2NyZWVuLW1lc3NhZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9BZHZlbmRyYURlc3dhbnRhL2xvY2stc2NyZWVuLW1lc3NhZ2UiLAogICJ1dWlkIjogImxvY2stc2NyZWVuLW1lc3NhZ2VAYWR2ZW5kcmFkZXN3YW50YS5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
     "42": {"version": "3", "sha256": "0hkr6gm7kr69fc4zjb8rddwj75jpbpvqz4wpkfl659wjn4980s3c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdGhhdCBsZXQncyB5b3UgYWRkIHlvdXIgbWVzc2FnZSB0byB0aGUgbG9jayBzY3JlZW4gKHVubG9ja0RpYWxvZykiLAogICJuYW1lIjogIkxvY2sgU2NyZWVuIE1lc3NhZ2UiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVzZXIiLAogICAgInVubG9jay1kaWFsb2ciCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxvY2stc2NyZWVuLW1lc3NhZ2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9BZHZlbmRyYURlc3dhbnRhL2xvY2stc2NyZWVuLW1lc3NhZ2UiLAogICJ1dWlkIjogImxvY2stc2NyZWVuLW1lc3NhZ2VAYWR2ZW5kcmFkZXN3YW50YS5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
-, {"uuid": "panel-corners@aunetx", "name": "Panel corners", "pname": "panel-corners", "description": "A GNOME shell extension to keep the old topbar corners, which were removed for GNOME 42. It also allows you to customize the rounded corners, even if you use GNOME 40 or 41.\n\nIt also permits you to use screen corners, in order to have your monitors rounded!\n\nIt is widely based on already existing gnome-shell code, and on a merge request by Alexander Mikhaylenko: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1328", "link": "https://extensions.gnome.org/extension/4805/panel-corners/", "shell_version_map": {
+, {"uuid": "panel-corners@aunetx", "name": "Panel corners", "pname": "panel-corners", "description": "A GNOME shell extension to keep the old topbar corners, which were removed for GNOME 42. It also allows you to customize the rounded corners, even if you use GNOME 40 or 41.\n\nIt is widely based on already existing gnome-shell code, and on a merge request by Alice Mikhaylenko: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1328", "link": "https://extensions.gnome.org/extension/4805/panel-corners/", "shell_version_map": {
     "40": {"version": "3", "sha256": "0piacfxwa5ca5cnvrz0s8pqykfixynmvvdmh1rznfsh407v1kw1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxleGFuZGVyIE1pa2hheWxlbmtvOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvLS9tZXJnZV9yZXF1ZXN0cy8xMzI4IiwKICAibmFtZSI6ICJQYW5lbCBjb3JuZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWNvcm5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hdW5ldHgvcGFuZWwtY29ybmVycyIsCiAgInV1aWQiOiAicGFuZWwtY29ybmVyc0BhdW5ldHgiLAogICJ2ZXJzaW9uIjogMwp9"},
     "41": {"version": "3", "sha256": "0piacfxwa5ca5cnvrz0s8pqykfixynmvvdmh1rznfsh407v1kw1v", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxleGFuZGVyIE1pa2hheWxlbmtvOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvLS9tZXJnZV9yZXF1ZXN0cy8xMzI4IiwKICAibmFtZSI6ICJQYW5lbCBjb3JuZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWNvcm5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hdW5ldHgvcGFuZWwtY29ybmVycyIsCiAgInV1aWQiOiAicGFuZWwtY29ybmVyc0BhdW5ldHgiLAogICJ2ZXJzaW9uIjogMwp9"},
     "42": {"version": "7", "sha256": "1waws1iwsk0li6x3c9l9w80kijsmfynrlp506hmq8zqqqxrh5npy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxleGFuZGVyIE1pa2hheWxlbmtvOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvLS9tZXJnZV9yZXF1ZXN0cy8xMzI4IiwKICAibmFtZSI6ICJQYW5lbCBjb3JuZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWNvcm5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hdW5ldHgvcGFuZWwtY29ybmVycyIsCiAgInV1aWQiOiAicGFuZWwtY29ybmVyc0BhdW5ldHgiLAogICJ2ZXJzaW9uIjogNwp9"},
     "43": {"version": "7", "sha256": "1waws1iwsk0li6x3c9l9w80kijsmfynrlp506hmq8zqqqxrh5npy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxleGFuZGVyIE1pa2hheWxlbmtvOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvLS9tZXJnZV9yZXF1ZXN0cy8xMzI4IiwKICAibmFtZSI6ICJQYW5lbCBjb3JuZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWNvcm5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hdW5ldHgvcGFuZWwtY29ybmVycyIsCiAgInV1aWQiOiAicGFuZWwtY29ybmVyc0BhdW5ldHgiLAogICJ2ZXJzaW9uIjogNwp9"},
     "44": {"version": "7", "sha256": "1waws1iwsk0li6x3c9l9w80kijsmfynrlp506hmq8zqqqxrh5npy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxleGFuZGVyIE1pa2hheWxlbmtvOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvLS9tZXJnZV9yZXF1ZXN0cy8xMzI4IiwKICAibmFtZSI6ICJQYW5lbCBjb3JuZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWNvcm5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hdW5ldHgvcGFuZWwtY29ybmVycyIsCiAgInV1aWQiOiAicGFuZWwtY29ybmVyc0BhdW5ldHgiLAogICJ2ZXJzaW9uIjogNwp9"},
-    "45": {"version": "9", "sha256": "12i81s9yxrv9apb4w2bllyaaqscfvwd8cc1z7l94axqj7mhpyapp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxleGFuZGVyIE1pa2hheWxlbmtvOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvLS9tZXJnZV9yZXF1ZXN0cy8xMzI4IiwKICAibmFtZSI6ICJQYW5lbCBjb3JuZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhbmVsLWNvcm5lcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXVuZXR4L3BhbmVsLWNvcm5lcnMiLAogICJ1dWlkIjogInBhbmVsLWNvcm5lcnNAYXVuZXR4IiwKICAidmVyc2lvbiI6IDkKfQ=="}
+    "45": {"version": "11", "sha256": "1r65y95rvp4a7hmbc88ggx3bhb2zlbb6mllqsq2lqb7zi6z6mm7q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxpY2UgTWlraGF5bGVua286IGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC8tL21lcmdlX3JlcXVlc3RzLzEzMjgiLAogICJuYW1lIjogIlBhbmVsIGNvcm5lcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucGFuZWwtY29ybmVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hdW5ldHgvcGFuZWwtY29ybmVycyIsCiAgInV1aWQiOiAicGFuZWwtY29ybmVyc0BhdW5ldHgiLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
+    "46": {"version": "10", "sha256": "1cvx9g1z54d6n70v98f3icdvk64xdj38vilprinysq8s7rfzn2if", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgc2hlbGwgZXh0ZW5zaW9uIHRvIGtlZXAgdGhlIG9sZCB0b3BiYXIgY29ybmVycywgd2hpY2ggd2VyZSByZW1vdmVkIGZvciBHTk9NRSA0Mi4gSXQgYWxzbyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgcm91bmRlZCBjb3JuZXJzLCBldmVuIGlmIHlvdSB1c2UgR05PTUUgNDAgb3IgNDEuXG5cbkl0IGlzIHdpZGVseSBiYXNlZCBvbiBhbHJlYWR5IGV4aXN0aW5nIGdub21lLXNoZWxsIGNvZGUsIGFuZCBvbiBhIG1lcmdlIHJlcXVlc3QgYnkgQWxpY2UgTWlraGF5bGVua286IGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC8tL21lcmdlX3JlcXVlc3RzLzEzMjgiLAogICJuYW1lIjogIlBhbmVsIGNvcm5lcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucGFuZWwtY29ybmVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXVuZXR4L3BhbmVsLWNvcm5lcnMiLAogICJ1dWlkIjogInBhbmVsLWNvcm5lcnNAYXVuZXR4IiwKICAidmVyc2lvbiI6IDEwCn0="}
   }}
 , {"uuid": "WhatWatch@Zappo-II.github.io", "name": "What Watch", "pname": "what-watch", "description": "Shows a customizeable analog desktop clock.\nPlease visit the GitHub repository for documentation and to report any issues.", "link": "https://extensions.gnome.org/extension/4806/what-watch/", "shell_version_map": {
     "38": {"version": "7", "sha256": "0k5i38dp5lgmvhpi73d6ahndz31hm9alixbr3jz1sd1j0xh95mcm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGEgY3VzdG9taXplYWJsZSBhbmFsb2cgZGVza3RvcCBjbG9jay5cblBsZWFzZSB2aXNpdCB0aGUgR2l0SHViIHJlcG9zaXRvcnkgZm9yIGRvY3VtZW50YXRpb24gYW5kIHRvIHJlcG9ydCBhbnkgaXNzdWVzLiIsCiAgIm5hbWUiOiAiV2hhdCBXYXRjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy56YXBwb2lpLndoYXR3YXRjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vWmFwcG8tSUkvV2hhdFdhdGNoIiwKICAidXVpZCI6ICJXaGF0V2F0Y2hAWmFwcG8tSUkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDcKfQ=="},
@@ -4445,7 +4619,7 @@
     "41": {"version": "3", "sha256": "12shbvqdj6834lvw23s9z4f3ayhvma363yvzga0m85x0fzs6bna5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImFkZCBjb25maWd1cmFibGUtd2lkdGggZ2FwcyBhcm91bmQgdGhlIGVkZ2Ugb2YgeW91ciBzY3JlZW4iLAogICJuYW1lIjogIkVkZ2UgR2FwIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmdub21lLWVkZ2UtZ2FwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmVjcm9wb2xpbmEvZ25vbWUtZWRnZS1nYXAiLAogICJ1dWlkIjogImdub21lLWVkZ2UtZ2FwQG5lY3JvcG9saW5hIiwKICAidmVyc2lvbiI6IDMKfQ=="},
     "42": {"version": "3", "sha256": "12shbvqdj6834lvw23s9z4f3ayhvma363yvzga0m85x0fzs6bna5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImFkZCBjb25maWd1cmFibGUtd2lkdGggZ2FwcyBhcm91bmQgdGhlIGVkZ2Ugb2YgeW91ciBzY3JlZW4iLAogICJuYW1lIjogIkVkZ2UgR2FwIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmdub21lLWVkZ2UtZ2FwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmVjcm9wb2xpbmEvZ25vbWUtZWRnZS1nYXAiLAogICJ1dWlkIjogImdub21lLWVkZ2UtZ2FwQG5lY3JvcG9saW5hIiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
-, {"uuid": "overview-keyboard-navigation@G-dH.github.com", "name": "Overview Keyboard Navigation Fix", "pname": "overview-keyboard-navigation-fix", "description": "Fix for GNOME Shell 40 and 41 that initiates keyboard navigation in the Activities overview and App Grid by pressing Tab or Arrow keys. It also changes Esc key behavior in the App Grid view - Esc closes the Overview instead of activating Windows Overview.", "link": "https://extensions.gnome.org/extension/4830/overview-keyboard-navigation-fix/", "shell_version_map": {
+, {"uuid": "overview-keyboard-navigation@G-dH.github.com", "name": "Overview Keyboard Navigation Fix", "pname": "overview-keyboard-navigation-fix", "description": "Fix for GNOME Shell 40 and 41.\nInitiates keyboard navigation in the Activities overview and App Grid by pressing Tab or Arrow keys. It also changes Esc key behavior in the App Grid view - Esc closes the Overview instead of activating Windows Overview.", "link": "https://extensions.gnome.org/extension/4830/overview-keyboard-navigation-fix/", "shell_version_map": {
     "40": {"version": "2", "sha256": "12l9j8rcs61j1l375nm7dxbhhs3qw4y5i0hsdxcpq9jn7880y4f3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZpeCBmb3IgR05PTUUgU2hlbGwgNDAgYW5kIDQxIHRoYXQgaW5pdGlhdGVzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXcgYW5kIEFwcCBHcmlkIGJ5IHByZXNzaW5nIFRhYiBvciBBcnJvdyBrZXlzLiBJdCBhbHNvIGNoYW5nZXMgRXNjIGtleSBiZWhhdmlvciBpbiB0aGUgQXBwIEdyaWQgdmlldyAtIEVzYyBjbG9zZXMgdGhlIE92ZXJ2aWV3IGluc3RlYWQgb2YgYWN0aXZhdGluZyBXaW5kb3dzIE92ZXJ2aWV3LiIsCiAgImdldHRleHQtZG9tYWluIjogIm92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb24tZml4IiwKICAibmFtZSI6ICJPdmVydmlldyBLZXlib2FyZCBOYXZpZ2F0aW9uIEZpeCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb24iLAogICJ1dWlkIjogIm92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb25ARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
     "41": {"version": "2", "sha256": "12l9j8rcs61j1l375nm7dxbhhs3qw4y5i0hsdxcpq9jn7880y4f3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZpeCBmb3IgR05PTUUgU2hlbGwgNDAgYW5kIDQxIHRoYXQgaW5pdGlhdGVzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXcgYW5kIEFwcCBHcmlkIGJ5IHByZXNzaW5nIFRhYiBvciBBcnJvdyBrZXlzLiBJdCBhbHNvIGNoYW5nZXMgRXNjIGtleSBiZWhhdmlvciBpbiB0aGUgQXBwIEdyaWQgdmlldyAtIEVzYyBjbG9zZXMgdGhlIE92ZXJ2aWV3IGluc3RlYWQgb2YgYWN0aXZhdGluZyBXaW5kb3dzIE92ZXJ2aWV3LiIsCiAgImdldHRleHQtZG9tYWluIjogIm92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb24tZml4IiwKICAibmFtZSI6ICJPdmVydmlldyBLZXlib2FyZCBOYXZpZ2F0aW9uIEZpeCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb24iLAogICJ1dWlkIjogIm92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb25ARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
     "42": {"version": "2", "sha256": "12l9j8rcs61j1l375nm7dxbhhs3qw4y5i0hsdxcpq9jn7880y4f3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZpeCBmb3IgR05PTUUgU2hlbGwgNDAgYW5kIDQxIHRoYXQgaW5pdGlhdGVzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXcgYW5kIEFwcCBHcmlkIGJ5IHByZXNzaW5nIFRhYiBvciBBcnJvdyBrZXlzLiBJdCBhbHNvIGNoYW5nZXMgRXNjIGtleSBiZWhhdmlvciBpbiB0aGUgQXBwIEdyaWQgdmlldyAtIEVzYyBjbG9zZXMgdGhlIE92ZXJ2aWV3IGluc3RlYWQgb2YgYWN0aXZhdGluZyBXaW5kb3dzIE92ZXJ2aWV3LiIsCiAgImdldHRleHQtZG9tYWluIjogIm92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb24tZml4IiwKICAibmFtZSI6ICJPdmVydmlldyBLZXlib2FyZCBOYXZpZ2F0aW9uIEZpeCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLW92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb24iLAogICJ1dWlkIjogIm92ZXJ2aWV3LWtleWJvYXJkLW5hdmlnYXRpb25ARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
@@ -4455,13 +4629,14 @@
     "40": {"version": "2", "sha256": "0yzdj0d7rkmbrvgw0d8qsfh43339mmi1dkqnrcb82jh8lwg82psc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3Qgb3BlbiB3aW5kb3dzIG9mIGFsbCB3b3Jrc3BhY2VzLCBwbHVzIFNhdmUvUmVzdG9yZSB3aW5kb3cgcG9zaXRpb25zIChydW4gYXV0b21hdGljYWxseSBvbiBTdXNwZW5kL1Jlc3VtZSwgYSB3b3JrYXJvdW5kIGZvciBVYnVudHUgYnVnICMxNzc4OTgzKS4iLAogICJuYW1lIjogIkFsbCBXaW5kb3dzICsgU2F2ZS9SZXN0b3JlIFdpbmRvdyBQb3NpdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2prYXZlcnkvYWxsLXdpbmRvd3MiLAogICJ1dWlkIjogImFsbC13aW5kb3dzLXNyd3BAamthdmVyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMgp9"},
     "42": {"version": "2", "sha256": "0yzdj0d7rkmbrvgw0d8qsfh43339mmi1dkqnrcb82jh8lwg82psc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpc3Qgb3BlbiB3aW5kb3dzIG9mIGFsbCB3b3Jrc3BhY2VzLCBwbHVzIFNhdmUvUmVzdG9yZSB3aW5kb3cgcG9zaXRpb25zIChydW4gYXV0b21hdGljYWxseSBvbiBTdXNwZW5kL1Jlc3VtZSwgYSB3b3JrYXJvdW5kIGZvciBVYnVudHUgYnVnICMxNzc4OTgzKS4iLAogICJuYW1lIjogIkFsbCBXaW5kb3dzICsgU2F2ZS9SZXN0b3JlIFdpbmRvdyBQb3NpdGlvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2prYXZlcnkvYWxsLXdpbmRvd3MiLAogICJ1dWlkIjogImFsbC13aW5kb3dzLXNyd3BAamthdmVyeS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMgp9"}
   }}
-, {"uuid": "clipboard-history@alexsaveau.dev", "name": "Clipboard History", "pname": "clipboard-history", "description": "Gnome Clipboard History is a clipboard manager Gnome extension that saves items you've copied into an easily accessible, searchable history panel.", "link": "https://extensions.gnome.org/extension/4839/clipboard-history/", "shell_version_map": {
-    "40": {"version": "32", "sha256": "1s0qv996m7fq8wfhivhb9j6gmfcr5j19y5vjlpj9ls59nd34zi8k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "41": {"version": "32", "sha256": "1s0qv996m7fq8wfhivhb9j6gmfcr5j19y5vjlpj9ls59nd34zi8k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "42": {"version": "32", "sha256": "1s0qv996m7fq8wfhivhb9j6gmfcr5j19y5vjlpj9ls59nd34zi8k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "43": {"version": "32", "sha256": "1s0qv996m7fq8wfhivhb9j6gmfcr5j19y5vjlpj9ls59nd34zi8k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "44": {"version": "32", "sha256": "1s0qv996m7fq8wfhivhb9j6gmfcr5j19y5vjlpj9ls59nd34zi8k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "45": {"version": "34", "sha256": "031ch3ivlzsc9fbd3d44bf8nnxgp64n383d0a3qskniw2f35nmdx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgR25vbWUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJuYW1lIjogIkNsaXBib2FyZCBIaXN0b3J5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNsaXBib2FyZC1oaXN0b3J5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NVUEVSQ0lMRVgvZ25vbWUtY2xpcGJvYXJkLWhpc3RvcnkiLAogICJ1dWlkIjogImNsaXBib2FyZC1oaXN0b3J5QGFsZXhzYXZlYXUuZGV2IiwKICAidmVyc2lvbiI6IDM0Cn0="}
+, {"uuid": "clipboard-history@alexsaveau.dev", "name": "Clipboard History", "pname": "clipboard-history", "description": "Gnome Clipboard History is a clipboard manager GNOME extension that saves items you've copied into an easily accessible, searchable history panel.", "link": "https://extensions.gnome.org/extension/4839/clipboard-history/", "shell_version_map": {
+    "40": {"version": "41", "sha256": "1kpwdir0rs086iky86c2gdfk3n9aja4xcg8s46kd7f2gv12l1sl7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgR05PTUUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogNDEKfQ=="},
+    "41": {"version": "41", "sha256": "1kpwdir0rs086iky86c2gdfk3n9aja4xcg8s46kd7f2gv12l1sl7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgR05PTUUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogNDEKfQ=="},
+    "42": {"version": "41", "sha256": "1kpwdir0rs086iky86c2gdfk3n9aja4xcg8s46kd7f2gv12l1sl7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgR05PTUUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogNDEKfQ=="},
+    "43": {"version": "41", "sha256": "1kpwdir0rs086iky86c2gdfk3n9aja4xcg8s46kd7f2gv12l1sl7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgR05PTUUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogNDEKfQ=="},
+    "44": {"version": "41", "sha256": "1kpwdir0rs086iky86c2gdfk3n9aja4xcg8s46kd7f2gv12l1sl7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgR05PTUUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAibmFtZSI6ICJDbGlwYm9hcmQgSGlzdG9yeSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU1VQRVJDSUxFWC9nbm9tZS1jbGlwYm9hcmQtaGlzdG9yeSIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJ2ZXJzaW9uIjogNDEKfQ=="},
+    "45": {"version": "40", "sha256": "0yjm2py35rlsrdcpayaak0jqdnnpmdg6jp44fklg1ds06mnn7q4s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgR05PTUUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJuYW1lIjogIkNsaXBib2FyZCBIaXN0b3J5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNsaXBib2FyZC1oaXN0b3J5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NVUEVSQ0lMRVgvZ25vbWUtY2xpcGJvYXJkLWhpc3RvcnkiLAogICJ1dWlkIjogImNsaXBib2FyZC1oaXN0b3J5QGFsZXhzYXZlYXUuZGV2IiwKICAidmVyc2lvbiI6IDQwCn0="},
+    "46": {"version": "39", "sha256": "1b6y8yda9sibjgyz2vm2v23d8fk6rdnk7mdsgl098sqklfy683v9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIENsaXBib2FyZCBIaXN0b3J5IGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgR05PTUUgZXh0ZW5zaW9uIHRoYXQgc2F2ZXMgaXRlbXMgeW91J3ZlIGNvcGllZCBpbnRvIGFuIGVhc2lseSBhY2Nlc3NpYmxlLCBzZWFyY2hhYmxlIGhpc3RvcnkgcGFuZWwuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiY2xpcGJvYXJkLWhpc3RvcnlAYWxleHNhdmVhdS5kZXYiLAogICJuYW1lIjogIkNsaXBib2FyZCBIaXN0b3J5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNsaXBib2FyZC1oaXN0b3J5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NVUEVSQ0lMRVgvZ25vbWUtY2xpcGJvYXJkLWhpc3RvcnkiLAogICJ1dWlkIjogImNsaXBib2FyZC1oaXN0b3J5QGFsZXhzYXZlYXUuZGV2IiwKICAidmVyc2lvbiI6IDM5Cn0="}
   }}
 , {"uuid": "strongdm@andybrown668.github.com", "name": "StrongDM", "pname": "strongdm", "description": "Access StrongDM resources", "link": "https://extensions.gnome.org/extension/4841/strongdm/", "shell_version_map": {
     "40": {"version": "3", "sha256": "02dfs597cs8zz7wwl3kqb8i9kxdi9p7ywvk22kvmy5p4gkc181j7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFjY2VzcyBTdHJvbmdETSByZXNvdXJjZXMiLAogICJuYW1lIjogIlN0cm9uZ0RNIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbmR5YnJvd242Njgvc3Ryb25nZG0tZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLmdpdCIsCiAgInV1aWQiOiAic3Ryb25nZG1AYW5keWJyb3duNjY4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMwp9"},
@@ -4551,12 +4726,8 @@
     "41": {"version": "3", "sha256": "1cp0gyj8kms59p9l5wn2z0p4g9rfyn79wxv806gllqmwql6xrm4x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJpZ2h0IGNsaWNrIGF0IHRvcCBsZWZ0IGNvcm5lciB0byBicmluZyB1cCBhcHBzIG1lbnUuIiwKICAibmFtZSI6ICJVc2FibGUgT3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVjaHRpZnMvdXNhYmxlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJ1c2FibGUtb3ZlcnZpZXdAbWVjaHRpZnMiLAogICJ2ZXJzaW9uIjogMwp9"},
     "42": {"version": "3", "sha256": "1cp0gyj8kms59p9l5wn2z0p4g9rfyn79wxv806gllqmwql6xrm4x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJpZ2h0IGNsaWNrIGF0IHRvcCBsZWZ0IGNvcm5lciB0byBicmluZyB1cCBhcHBzIG1lbnUuIiwKICAibmFtZSI6ICJVc2FibGUgT3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVjaHRpZnMvdXNhYmxlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJ1c2FibGUtb3ZlcnZpZXdAbWVjaHRpZnMiLAogICJ2ZXJzaW9uIjogMwp9"},
     "43": {"version": "3", "sha256": "1cp0gyj8kms59p9l5wn2z0p4g9rfyn79wxv806gllqmwql6xrm4x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJpZ2h0IGNsaWNrIGF0IHRvcCBsZWZ0IGNvcm5lciB0byBicmluZyB1cCBhcHBzIG1lbnUuIiwKICAibmFtZSI6ICJVc2FibGUgT3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVjaHRpZnMvdXNhYmxlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJ1c2FibGUtb3ZlcnZpZXdAbWVjaHRpZnMiLAogICJ2ZXJzaW9uIjogMwp9"},
-    "45": {"version": "6", "sha256": "0hg06924jh6aqma2dlnfnj7hrrxlzwf9njrxbxr473ddqp4sxi76", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJpZ2h0IGNsaWNrIGF0IHRvcCBsZWZ0IGNvcm5lciB0byBicmluZyB1cCBhcHBzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVzYWJsZS1vdmVydmlldyIsCiAgIm5hbWUiOiAiVXNhYmxlIE92ZXJ2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzYWJsZS1vdmVydmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVjaHRpZnMvdXNhYmxlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJ1c2FibGUtb3ZlcnZpZXdAbWVjaHRpZnMiLAogICJ2ZXJzaW9uIjogNgp9"}
-  }}
-, {"uuid": "overview-clicking@mechtifs", "name": "Overview Clicking", "pname": "overview-clicking", "description": "Close the overview or show up application grid by left/right clicking empty space. Forked from click-to-close-overview@l3nn4rt.github.io.", "link": "https://extensions.gnome.org/extension/4898/overview-clicking/", "shell_version_map": {
-    "40": {"version": "1", "sha256": "10f08rn9m66ynrs5jsgxg4qzrimcjdslgs36s8fgcblr5r31kw8i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBvciBzaG93IHVwIGFwcGxpY2F0aW9uIGdyaWQgYnkgbGVmdC9yaWdodCBjbGlja2luZyBlbXB0eSBzcGFjZS4gRm9ya2VkIGZyb20gY2xpY2stdG8tY2xvc2Utb3ZlcnZpZXdAbDNubjRydC5naXRodWIuaW8uIiwKICAibmFtZSI6ICJPdmVydmlldyBDbGlja2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21lY2h0aWZzL292ZXJ2aWV3LWNsaWNraW5nIiwKICAidXVpZCI6ICJvdmVydmlldy1jbGlja2luZ0BtZWNodGlmcyIsCiAgInZlcnNpb24iOiAxCn0="},
-    "41": {"version": "1", "sha256": "10f08rn9m66ynrs5jsgxg4qzrimcjdslgs36s8fgcblr5r31kw8i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBvciBzaG93IHVwIGFwcGxpY2F0aW9uIGdyaWQgYnkgbGVmdC9yaWdodCBjbGlja2luZyBlbXB0eSBzcGFjZS4gRm9ya2VkIGZyb20gY2xpY2stdG8tY2xvc2Utb3ZlcnZpZXdAbDNubjRydC5naXRodWIuaW8uIiwKICAibmFtZSI6ICJPdmVydmlldyBDbGlja2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21lY2h0aWZzL292ZXJ2aWV3LWNsaWNraW5nIiwKICAidXVpZCI6ICJvdmVydmlldy1jbGlja2luZ0BtZWNodGlmcyIsCiAgInZlcnNpb24iOiAxCn0="},
-    "42": {"version": "1", "sha256": "10f08rn9m66ynrs5jsgxg4qzrimcjdslgs36s8fgcblr5r31kw8i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNsb3NlIHRoZSBvdmVydmlldyBvciBzaG93IHVwIGFwcGxpY2F0aW9uIGdyaWQgYnkgbGVmdC9yaWdodCBjbGlja2luZyBlbXB0eSBzcGFjZS4gRm9ya2VkIGZyb20gY2xpY2stdG8tY2xvc2Utb3ZlcnZpZXdAbDNubjRydC5naXRodWIuaW8uIiwKICAibmFtZSI6ICJPdmVydmlldyBDbGlja2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21lY2h0aWZzL292ZXJ2aWV3LWNsaWNraW5nIiwKICAidXVpZCI6ICJvdmVydmlldy1jbGlja2luZ0BtZWNodGlmcyIsCiAgInZlcnNpb24iOiAxCn0="}
+    "45": {"version": "6", "sha256": "0hg06924jh6aqma2dlnfnj7hrrxlzwf9njrxbxr473ddqp4sxi76", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJpZ2h0IGNsaWNrIGF0IHRvcCBsZWZ0IGNvcm5lciB0byBicmluZyB1cCBhcHBzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVzYWJsZS1vdmVydmlldyIsCiAgIm5hbWUiOiAiVXNhYmxlIE92ZXJ2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzYWJsZS1vdmVydmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVjaHRpZnMvdXNhYmxlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJ1c2FibGUtb3ZlcnZpZXdAbWVjaHRpZnMiLAogICJ2ZXJzaW9uIjogNgp9"},
+    "46": {"version": "6", "sha256": "0hg06924jh6aqma2dlnfnj7hrrxlzwf9njrxbxr473ddqp4sxi76", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJpZ2h0IGNsaWNrIGF0IHRvcCBsZWZ0IGNvcm5lciB0byBicmluZyB1cCBhcHBzIG1lbnUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXVzYWJsZS1vdmVydmlldyIsCiAgIm5hbWUiOiAiVXNhYmxlIE92ZXJ2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnVzYWJsZS1vdmVydmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWVjaHRpZnMvdXNhYmxlLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJ1c2FibGUtb3ZlcnZpZXdAbWVjaHRpZnMiLAogICJ2ZXJzaW9uIjogNgp9"}
   }}
 , {"uuid": "speed@eexpss.gmail.com", "name": "Screen Net Speed", "pname": "screen-net-speed", "description": "* Animation net speed show on the screen. You can click it to have fun and pass the time. Can be turned on / off at any time.\nScroll Mouse on panel icon, can change the shape.", "link": "https://extensions.gnome.org/extension/4901/screen-net-speed/", "shell_version_map": {
     "40": {"version": "8", "sha256": "050w37i0w0b5wl0x1q2r9grlhn3ly2rjlmz85i6kz1wzhcphs1a8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiogQW5pbWF0aW9uIG5ldCBzcGVlZCBzaG93IG9uIHRoZSBzY3JlZW4uIFlvdSBjYW4gY2xpY2sgaXQgdG8gaGF2ZSBmdW4gYW5kIHBhc3MgdGhlIHRpbWUuIENhbiBiZSB0dXJuZWQgb24gLyBvZmYgYXQgYW55IHRpbWUuXG5TY3JvbGwgTW91c2Ugb24gcGFuZWwgaWNvbiwgY2FuIGNoYW5nZSB0aGUgc2hhcGUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic2NyZWVuLW5ldC1zcGVlZCIsCiAgIm5hbWUiOiAiU2NyZWVuIE5ldCBTcGVlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWV4cHJlc3MvZ3Mtc3BlZWQiLAogICJ1dWlkIjogInNwZWVkQGVleHBzcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogOAp9"},
@@ -4576,7 +4747,8 @@
     "42": {"version": "17", "sha256": "1m6103r9hlamd5nzxqvcavssnacjxrjypby52gpgngp3aj8698sz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgc2hvdyBhbmQgbG9hZCBFYXN5RWZmZWN0cyBQcmVzZXRzIiwKICAiZ2V0dGV4dF9kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWVlcHJlc2V0c2VsZWN0b3IiLAogICJuYW1lIjogIkVhc3lFZmZlY3RzIFByZXNldCBTZWxlY3RvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5lZXByZXNldHNlbGVjdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS91bHZpbGxlL2VlcHJlc2V0c2VsZWN0b3IiLAogICJ1dWlkIjogImVlcHJlc2V0c2VsZWN0b3JAdWx2aWxsZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "43": {"version": "17", "sha256": "1m6103r9hlamd5nzxqvcavssnacjxrjypby52gpgngp3aj8698sz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgc2hvdyBhbmQgbG9hZCBFYXN5RWZmZWN0cyBQcmVzZXRzIiwKICAiZ2V0dGV4dF9kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWVlcHJlc2V0c2VsZWN0b3IiLAogICJuYW1lIjogIkVhc3lFZmZlY3RzIFByZXNldCBTZWxlY3RvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5lZXByZXNldHNlbGVjdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS91bHZpbGxlL2VlcHJlc2V0c2VsZWN0b3IiLAogICJ1dWlkIjogImVlcHJlc2V0c2VsZWN0b3JAdWx2aWxsZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "44": {"version": "17", "sha256": "1m6103r9hlamd5nzxqvcavssnacjxrjypby52gpgngp3aj8698sz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgc2hvdyBhbmQgbG9hZCBFYXN5RWZmZWN0cyBQcmVzZXRzIiwKICAiZ2V0dGV4dF9kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWVlcHJlc2V0c2VsZWN0b3IiLAogICJuYW1lIjogIkVhc3lFZmZlY3RzIFByZXNldCBTZWxlY3RvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5lZXByZXNldHNlbGVjdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS91bHZpbGxlL2VlcHJlc2V0c2VsZWN0b3IiLAogICJ1dWlkIjogImVlcHJlc2V0c2VsZWN0b3JAdWx2aWxsZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
-    "45": {"version": "20", "sha256": "1wqmqsi2z3snnrdlbxymdqvzllcvgda7674ma17zchmnas2sqlzx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgc2hvdyBhbmQgbG9hZCBFYXN5RWZmZWN0cyBQcmVzZXRzIiwKICAiZ2V0dGV4dF9kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWVlcHJlc2V0c2VsZWN0b3IiLAogICJuYW1lIjogIkVhc3lFZmZlY3RzIFByZXNldCBTZWxlY3RvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5lZXByZXNldHNlbGVjdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3VsdmlsbGUvZWVwcmVzZXRzZWxlY3RvciIsCiAgInV1aWQiOiAiZWVwcmVzZXRzZWxlY3RvckB1bHZpbGxlLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAyMAp9"}
+    "45": {"version": "21", "sha256": "18yi2nv1fb1hqjrd8y3zkv8xgf8d16hcxf63qvbr2dsb1nci3pf7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgc2hvdyBhbmQgbG9hZCBFYXN5RWZmZWN0cyBQcmVzZXRzIiwKICAiZ2V0dGV4dF9kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWVlcHJlc2V0c2VsZWN0b3IiLAogICJuYW1lIjogIkVhc3lFZmZlY3RzIFByZXNldCBTZWxlY3RvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5lZXByZXNldHNlbGVjdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS91bHZpbGxlL2VlcHJlc2V0c2VsZWN0b3IiLAogICJ1dWlkIjogImVlcHJlc2V0c2VsZWN0b3JAdWx2aWxsZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
+    "46": {"version": "21", "sha256": "18yi2nv1fb1hqjrd8y3zkv8xgf8d16hcxf63qvbr2dsb1nci3pf7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgc2hvdyBhbmQgbG9hZCBFYXN5RWZmZWN0cyBQcmVzZXRzIiwKICAiZ2V0dGV4dF9kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWVlcHJlc2V0c2VsZWN0b3IiLAogICJuYW1lIjogIkVhc3lFZmZlY3RzIFByZXNldCBTZWxlY3RvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5lZXByZXNldHNlbGVjdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS91bHZpbGxlL2VlcHJlc2V0c2VsZWN0b3IiLAogICJ1dWlkIjogImVlcHJlc2V0c2VsZWN0b3JAdWx2aWxsZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjEKfQ=="}
   }}
 , {"uuid": "gnomehub@gnome-hub.github.io", "name": "gnomehub", "pname": "gnomehub", "description": "An all in one extension which catagorizes notifications and displays system information", "link": "https://extensions.gnome.org/extension/4913/gnomehub/", "shell_version_map": {
     "38": {"version": "6", "sha256": "15dgj0jbfhsa0p87gi0ai6c55kj4nj9yz5ydpzamwy69k9jjjcd0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGFsbCBpbiBvbmUgZXh0ZW5zaW9uIHdoaWNoIGNhdGFnb3JpemVzIG5vdGlmaWNhdGlvbnMgYW5kIGRpc3BsYXlzIHN5c3RlbSBpbmZvcm1hdGlvbiIsCiAgIm5hbWUiOiAiZ25vbWVodWIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIgogIF0sCiAgInVybCI6ICJodHRwczovL2dub21lLWh1Yi5naXRodWIuaW8vIiwKICAidXVpZCI6ICJnbm9tZWh1YkBnbm9tZS1odWIuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDYKfQ=="},
@@ -4601,14 +4773,15 @@
     "43": {"version": "10", "sha256": "12hnxf90z6vc4clr2h9sp3zy764fda3rqrnzry00l1waydzcw83d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiMjIG1vbml0b3IgZ2l0IGRpcmVjdG9yeSBmb3IgY2hhbmdlcy5cbj4gV29ya2luZyB3aXRoIGEgbG90IG9mIGdpdCBkaXJlY3RvcmllcywgSSBhbHdheXMgZm9yZ290IGNvbW1pdC5cbiMjIyBQYW5lbCBJY29uXG4tIE1vdXNlIDIsIGZvcmNlIHJlZnJlc2ggKHJlLXJlYWQgY29uZmlnIGZpbGUsIGNoZWNrIGdpdCBkaXJzLCByZWZyZXNoIG1lbnUpLlxuLSBNb3VzZSAzLCBvcGVuIGNvbmZpZ2ZpbGUuIGNvbmZpZyBmaWxlIGlzIGB+Ly5jb25maWcvZ2l0LW1vbml0b3IuanNvbmAuXG4jIyMgTWVudSBJdGVtXG4tIERpcmVjdG9yeSBhbmQgRmlsZXM6IE1vdXNlIDEsIG9wZW5lZCB3aXRoIGBnaXQgZGlmZnRvb2xgLCBlZyBgbWVsZGAuIE1vdXNlIDMsIHN5c3RlbSBvcGVuLiIsCiAgIm5hbWUiOiAiR2l0IE1vbml0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VleHByZXNzL2dzLWdpdCIsCiAgInV1aWQiOiAiZ2l0QGVleHBzcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "44": {"version": "10", "sha256": "12hnxf90z6vc4clr2h9sp3zy764fda3rqrnzry00l1waydzcw83d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiMjIG1vbml0b3IgZ2l0IGRpcmVjdG9yeSBmb3IgY2hhbmdlcy5cbj4gV29ya2luZyB3aXRoIGEgbG90IG9mIGdpdCBkaXJlY3RvcmllcywgSSBhbHdheXMgZm9yZ290IGNvbW1pdC5cbiMjIyBQYW5lbCBJY29uXG4tIE1vdXNlIDIsIGZvcmNlIHJlZnJlc2ggKHJlLXJlYWQgY29uZmlnIGZpbGUsIGNoZWNrIGdpdCBkaXJzLCByZWZyZXNoIG1lbnUpLlxuLSBNb3VzZSAzLCBvcGVuIGNvbmZpZ2ZpbGUuIGNvbmZpZyBmaWxlIGlzIGB+Ly5jb25maWcvZ2l0LW1vbml0b3IuanNvbmAuXG4jIyMgTWVudSBJdGVtXG4tIERpcmVjdG9yeSBhbmQgRmlsZXM6IE1vdXNlIDEsIG9wZW5lZCB3aXRoIGBnaXQgZGlmZnRvb2xgLCBlZyBgbWVsZGAuIE1vdXNlIDMsIHN5c3RlbSBvcGVuLiIsCiAgIm5hbWUiOiAiR2l0IE1vbml0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VleHByZXNzL2dzLWdpdCIsCiAgInV1aWQiOiAiZ2l0QGVleHBzcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="}
   }}
-, {"uuid": "mprisLabel@moon-0xff.github.com", "name": "Media Label and Controls (Mpris Label)", "pname": "mpris-label", "description": "Display a label in your panel with the song/title/album/artist information available from an mpris compatible player. You can also control the player, raise/lower its volume, customize the label, and a lot more! This extension works with Spotify, Vlc, Rhythmbox, Firefox, Chromium, and (probably) any MPRIS compatible player.\n\nThe newest update (for GNOME 43,44 and 45):\n- Solves various problems triggered by an empty `Identity` field on a player\n- Allows binding the action 'Next/Prev track' to scroll up/down\n- Allows different font colors for the label text\nNote: Version 26 for GNOME 45 users already included the `Identity` fixes", "link": "https://extensions.gnome.org/extension/4928/mpris-label/", "shell_version_map": {
+, {"uuid": "mprisLabel@moon-0xff.github.com", "name": "Media Label and Controls (Mpris Label)", "pname": "mpris-label", "description": "Display a label in your panel with the song/title/album/artist information available from an mpris compatible player. You can also control the player, raise/lower its volume, customize the label, and a lot more! This extension works with Spotify, Vlc, Rhythmbox, Firefox, Chromium, and (probably) any MPRIS compatible player.", "link": "https://extensions.gnome.org/extension/4928/mpris-label/", "shell_version_map": {
     "38": {"version": "18", "sha256": "1wbmzrkx8vjnr4jdgrqp2i3i7qs0dqb8nww15vh4q91f99f89cp0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgaW4geW91ciBwYW5lbCB0aGUgKHNvbmcpdGl0bGUsIGFsYnVtIGFuZC9vciBhcnRpc3QgbmFtZSBhdmFpbGFibGUgZnJvbSBhbiBtcHJpcyBjb21wYXRpYmxlIG1lZGlhIHBsYXllciwgc3VjaCBhcyBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0gYW5kIG1hbnkgbW9yZS4gTG90cyBvZiBmZWF0dXJlcyBhbmQgdmVyeSBjdXN0b21pemFibGUhIiwKICAibmFtZSI6ICJNcHJpcyBMYWJlbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTW9vbi0weGZmL2dub21lLW1wcmlzLWxhYmVsIiwKICAidXVpZCI6ICJtcHJpc0xhYmVsQG1vb24tMHhmZi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "40": {"version": "18", "sha256": "1wbmzrkx8vjnr4jdgrqp2i3i7qs0dqb8nww15vh4q91f99f89cp0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgaW4geW91ciBwYW5lbCB0aGUgKHNvbmcpdGl0bGUsIGFsYnVtIGFuZC9vciBhcnRpc3QgbmFtZSBhdmFpbGFibGUgZnJvbSBhbiBtcHJpcyBjb21wYXRpYmxlIG1lZGlhIHBsYXllciwgc3VjaCBhcyBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0gYW5kIG1hbnkgbW9yZS4gTG90cyBvZiBmZWF0dXJlcyBhbmQgdmVyeSBjdXN0b21pemFibGUhIiwKICAibmFtZSI6ICJNcHJpcyBMYWJlbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTW9vbi0weGZmL2dub21lLW1wcmlzLWxhYmVsIiwKICAidXVpZCI6ICJtcHJpc0xhYmVsQG1vb24tMHhmZi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "41": {"version": "18", "sha256": "1wbmzrkx8vjnr4jdgrqp2i3i7qs0dqb8nww15vh4q91f99f89cp0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgaW4geW91ciBwYW5lbCB0aGUgKHNvbmcpdGl0bGUsIGFsYnVtIGFuZC9vciBhcnRpc3QgbmFtZSBhdmFpbGFibGUgZnJvbSBhbiBtcHJpcyBjb21wYXRpYmxlIG1lZGlhIHBsYXllciwgc3VjaCBhcyBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0gYW5kIG1hbnkgbW9yZS4gTG90cyBvZiBmZWF0dXJlcyBhbmQgdmVyeSBjdXN0b21pemFibGUhIiwKICAibmFtZSI6ICJNcHJpcyBMYWJlbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTW9vbi0weGZmL2dub21lLW1wcmlzLWxhYmVsIiwKICAidXVpZCI6ICJtcHJpc0xhYmVsQG1vb24tMHhmZi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "42": {"version": "18", "sha256": "1wbmzrkx8vjnr4jdgrqp2i3i7qs0dqb8nww15vh4q91f99f89cp0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgaW4geW91ciBwYW5lbCB0aGUgKHNvbmcpdGl0bGUsIGFsYnVtIGFuZC9vciBhcnRpc3QgbmFtZSBhdmFpbGFibGUgZnJvbSBhbiBtcHJpcyBjb21wYXRpYmxlIG1lZGlhIHBsYXllciwgc3VjaCBhcyBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0gYW5kIG1hbnkgbW9yZS4gTG90cyBvZiBmZWF0dXJlcyBhbmQgdmVyeSBjdXN0b21pemFibGUhIiwKICAibmFtZSI6ICJNcHJpcyBMYWJlbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTW9vbi0weGZmL2dub21lLW1wcmlzLWxhYmVsIiwKICAidXVpZCI6ICJtcHJpc0xhYmVsQG1vb24tMHhmZi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE4Cn0="},
-    "43": {"version": "27", "sha256": "0q93cphymsxqzhli6v7gd0kh90n4kmkhihd3ms5nl7amacs0a0bg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBsYWJlbCBpbiB5b3VyIHBhbmVsIHdpdGggdGhlIHNvbmcvdGl0bGUvYWxidW0vYXJ0aXN0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmcm9tIGFuIG1wcmlzIGNvbXBhdGlibGUgcGxheWVyLiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgcGxheWVyLCByYWlzZS9sb3dlciBpdHMgdm9sdW1lLCBjdXN0b21pemUgdGhlIGxhYmVsLCBhbmQgYSBsb3QgbW9yZSEgVGhpcyBleHRlbnNpb24gd29ya3Mgd2l0aCBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0sIGFuZCAocHJvYmFibHkpIGFueSBNUFJJUyBjb21wYXRpYmxlIHBsYXllci4iLAogICJuYW1lIjogIk1lZGlhIExhYmVsIGFuZCBDb250cm9scyAoTXByaXMgTGFiZWwpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1wcmlzLWxhYmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Nb29uLTB4ZmYvZ25vbWUtbXByaXMtbGFiZWwiLAogICJ1dWlkIjogIm1wcmlzTGFiZWxAbW9vbi0weGZmLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "44": {"version": "27", "sha256": "0q93cphymsxqzhli6v7gd0kh90n4kmkhihd3ms5nl7amacs0a0bg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBsYWJlbCBpbiB5b3VyIHBhbmVsIHdpdGggdGhlIHNvbmcvdGl0bGUvYWxidW0vYXJ0aXN0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmcm9tIGFuIG1wcmlzIGNvbXBhdGlibGUgcGxheWVyLiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgcGxheWVyLCByYWlzZS9sb3dlciBpdHMgdm9sdW1lLCBjdXN0b21pemUgdGhlIGxhYmVsLCBhbmQgYSBsb3QgbW9yZSEgVGhpcyBleHRlbnNpb24gd29ya3Mgd2l0aCBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0sIGFuZCAocHJvYmFibHkpIGFueSBNUFJJUyBjb21wYXRpYmxlIHBsYXllci4iLAogICJuYW1lIjogIk1lZGlhIExhYmVsIGFuZCBDb250cm9scyAoTXByaXMgTGFiZWwpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1wcmlzLWxhYmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Nb29uLTB4ZmYvZ25vbWUtbXByaXMtbGFiZWwiLAogICJ1dWlkIjogIm1wcmlzTGFiZWxAbW9vbi0weGZmLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjcKfQ=="},
-    "45": {"version": "28", "sha256": "11gzrrk7hswd8h588jylxn5wxxxniwpmp6lgpxd2vaff0sab8l98", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBsYWJlbCBpbiB5b3VyIHBhbmVsIHdpdGggdGhlIHNvbmcvdGl0bGUvYWxidW0vYXJ0aXN0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmcm9tIGFuIG1wcmlzIGNvbXBhdGlibGUgcGxheWVyLiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgcGxheWVyLCByYWlzZS9sb3dlciBpdHMgdm9sdW1lLCBjdXN0b21pemUgdGhlIGxhYmVsLCBhbmQgYSBsb3QgbW9yZSEgVGhpcyBleHRlbnNpb24gd29ya3Mgd2l0aCBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0sIGFuZCAocHJvYmFibHkpIGFueSBNUFJJUyBjb21wYXRpYmxlIHBsYXllci4iLAogICJuYW1lIjogIk1lZGlhIExhYmVsIGFuZCBDb250cm9scyAoTXByaXMgTGFiZWwpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1wcmlzLWxhYmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01vb24tMHhmZi9nbm9tZS1tcHJpcy1sYWJlbCIsCiAgInV1aWQiOiAibXByaXNMYWJlbEBtb29uLTB4ZmYuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyOAp9"}
+    "43": {"version": "29", "sha256": "1qsjnjscwcs3zrshybcl88p8k8gnn21g15z7ijk7mh6b45kiydr4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBsYWJlbCBpbiB5b3VyIHBhbmVsIHdpdGggdGhlIHNvbmcvdGl0bGUvYWxidW0vYXJ0aXN0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmcm9tIGFuIG1wcmlzIGNvbXBhdGlibGUgcGxheWVyLiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgcGxheWVyLCByYWlzZS9sb3dlciBpdHMgdm9sdW1lLCBjdXN0b21pemUgdGhlIGxhYmVsLCBhbmQgYSBsb3QgbW9yZSEgVGhpcyBleHRlbnNpb24gd29ya3Mgd2l0aCBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0sIGFuZCAocHJvYmFibHkpIGFueSBNUFJJUyBjb21wYXRpYmxlIHBsYXllci4iLAogICJuYW1lIjogIk1lZGlhIExhYmVsIGFuZCBDb250cm9scyAoTXByaXMgTGFiZWwpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1wcmlzLWxhYmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Nb29uLTB4ZmYvZ25vbWUtbXByaXMtbGFiZWwiLAogICJ1dWlkIjogIm1wcmlzTGFiZWxAbW9vbi0weGZmLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "44": {"version": "29", "sha256": "1qsjnjscwcs3zrshybcl88p8k8gnn21g15z7ijk7mh6b45kiydr4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBsYWJlbCBpbiB5b3VyIHBhbmVsIHdpdGggdGhlIHNvbmcvdGl0bGUvYWxidW0vYXJ0aXN0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmcm9tIGFuIG1wcmlzIGNvbXBhdGlibGUgcGxheWVyLiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgcGxheWVyLCByYWlzZS9sb3dlciBpdHMgdm9sdW1lLCBjdXN0b21pemUgdGhlIGxhYmVsLCBhbmQgYSBsb3QgbW9yZSEgVGhpcyBleHRlbnNpb24gd29ya3Mgd2l0aCBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0sIGFuZCAocHJvYmFibHkpIGFueSBNUFJJUyBjb21wYXRpYmxlIHBsYXllci4iLAogICJuYW1lIjogIk1lZGlhIExhYmVsIGFuZCBDb250cm9scyAoTXByaXMgTGFiZWwpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1wcmlzLWxhYmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Nb29uLTB4ZmYvZ25vbWUtbXByaXMtbGFiZWwiLAogICJ1dWlkIjogIm1wcmlzTGFiZWxAbW9vbi0weGZmLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjkKfQ=="},
+    "45": {"version": "30", "sha256": "0xcq37sfz1rnvckprc9r96mli7rb73ll4ja16jgnx1safh4z4hfn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBsYWJlbCBpbiB5b3VyIHBhbmVsIHdpdGggdGhlIHNvbmcvdGl0bGUvYWxidW0vYXJ0aXN0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmcm9tIGFuIG1wcmlzIGNvbXBhdGlibGUgcGxheWVyLiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgcGxheWVyLCByYWlzZS9sb3dlciBpdHMgdm9sdW1lLCBjdXN0b21pemUgdGhlIGxhYmVsLCBhbmQgYSBsb3QgbW9yZSEgVGhpcyBleHRlbnNpb24gd29ya3Mgd2l0aCBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0sIGFuZCAocHJvYmFibHkpIGFueSBNUFJJUyBjb21wYXRpYmxlIHBsYXllci4iLAogICJuYW1lIjogIk1lZGlhIExhYmVsIGFuZCBDb250cm9scyAoTXByaXMgTGFiZWwpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1wcmlzLWxhYmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Nb29uLTB4ZmYvZ25vbWUtbXByaXMtbGFiZWwiLAogICJ1dWlkIjogIm1wcmlzTGFiZWxAbW9vbi0weGZmLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzAKfQ=="},
+    "46": {"version": "30", "sha256": "0xcq37sfz1rnvckprc9r96mli7rb73ll4ja16jgnx1safh4z4hfn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBsYWJlbCBpbiB5b3VyIHBhbmVsIHdpdGggdGhlIHNvbmcvdGl0bGUvYWxidW0vYXJ0aXN0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmcm9tIGFuIG1wcmlzIGNvbXBhdGlibGUgcGxheWVyLiBZb3UgY2FuIGFsc28gY29udHJvbCB0aGUgcGxheWVyLCByYWlzZS9sb3dlciBpdHMgdm9sdW1lLCBjdXN0b21pemUgdGhlIGxhYmVsLCBhbmQgYSBsb3QgbW9yZSEgVGhpcyBleHRlbnNpb24gd29ya3Mgd2l0aCBTcG90aWZ5LCBWbGMsIFJoeXRobWJveCwgRmlyZWZveCwgQ2hyb21pdW0sIGFuZCAocHJvYmFibHkpIGFueSBNUFJJUyBjb21wYXRpYmxlIHBsYXllci4iLAogICJuYW1lIjogIk1lZGlhIExhYmVsIGFuZCBDb250cm9scyAoTXByaXMgTGFiZWwpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1wcmlzLWxhYmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Nb29uLTB4ZmYvZ25vbWUtbXByaXMtbGFiZWwiLAogICJ1dWlkIjogIm1wcmlzTGFiZWxAbW9vbi0weGZmLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzAKfQ=="}
   }}
 , {"uuid": "captivate@rensoliemans.nl", "name": "Captivate", "pname": "captivate", "description": "Activate your CapsLock button.\nUsing gnome-tweaks, remap your CapsLock to a Menu key, and then this extension works perfectly. Alternatively, choose a different key in the extension settings.\n\nDon't forget to log out and in again if you're updating the extension manually.", "link": "https://extensions.gnome.org/extension/4932/captivate/", "shell_version_map": {
     "40": {"version": "6", "sha256": "1lpaq3pbhg0c90xbvhwi9hz8m5nzvfgw14g61wg7f8fc17a7s77i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFjdGl2YXRlIHlvdXIgQ2Fwc0xvY2sgYnV0dG9uLlxuVXNpbmcgZ25vbWUtdHdlYWtzLCByZW1hcCB5b3VyIENhcHNMb2NrIHRvIGEgTWVudSBrZXksIGFuZCB0aGVuIHRoaXMgZXh0ZW5zaW9uIHdvcmtzIHBlcmZlY3RseS4gQWx0ZXJuYXRpdmVseSwgY2hvb3NlIGEgZGlmZmVyZW50IGtleSBpbiB0aGUgZXh0ZW5zaW9uIHNldHRpbmdzLlxuXG5Eb24ndCBmb3JnZXQgdG8gbG9nIG91dCBhbmQgaW4gYWdhaW4gaWYgeW91J3JlIHVwZGF0aW5nIHRoZSBleHRlbnNpb24gbWFudWFsbHkuIiwKICAibmFtZSI6ICJDYXB0aXZhdGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY2FwdGl2YXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vcmVuc29saWVtYW5zL2NhcHRpdmF0ZSIsCiAgInV1aWQiOiAiY2FwdGl2YXRlQHJlbnNvbGllbWFucy5ubCIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -4626,7 +4799,8 @@
     "42": {"version": "18", "sha256": "0mklxqybxnlw8jpfljyg2hapw8zgi732162ris96li0440a8h616", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGFwcCBpY29uIHRhc2tiYXIuIFNob3cgcnVubmluZyBhcHBzIGFuZCBmYXZvcml0ZXMgb24gdGhlIG1haW4gcGFuZWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp0YXNrYmFyIiwKICAibmFtZSI6ICJBcHAgSWNvbnMgVGFza2JhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5henRhc2tiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9BbmRyZXdaYWVjaC9henRhc2tiYXIiLAogICJ1dWlkIjogImF6dGFza2JhckBhenRhc2tiYXIuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiAxOAp9"},
     "43": {"version": "18", "sha256": "0mklxqybxnlw8jpfljyg2hapw8zgi732162ris96li0440a8h616", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGFwcCBpY29uIHRhc2tiYXIuIFNob3cgcnVubmluZyBhcHBzIGFuZCBmYXZvcml0ZXMgb24gdGhlIG1haW4gcGFuZWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp0YXNrYmFyIiwKICAibmFtZSI6ICJBcHAgSWNvbnMgVGFza2JhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5henRhc2tiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9BbmRyZXdaYWVjaC9henRhc2tiYXIiLAogICJ1dWlkIjogImF6dGFza2JhckBhenRhc2tiYXIuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiAxOAp9"},
     "44": {"version": "18", "sha256": "0mklxqybxnlw8jpfljyg2hapw8zgi732162ris96li0440a8h616", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGFwcCBpY29uIHRhc2tiYXIuIFNob3cgcnVubmluZyBhcHBzIGFuZCBmYXZvcml0ZXMgb24gdGhlIG1haW4gcGFuZWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp0YXNrYmFyIiwKICAibmFtZSI6ICJBcHAgSWNvbnMgVGFza2JhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5henRhc2tiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9BbmRyZXdaYWVjaC9henRhc2tiYXIiLAogICJ1dWlkIjogImF6dGFza2JhckBhenRhc2tiYXIuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiAxOAp9"},
-    "45": {"version": "22", "sha256": "1zcb26wb96xif8swywgb9f9nkvbgmgl2hiy0bbj19xwfdbvjdvp2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGFwcCBpY29uIHRhc2tiYXIuIFNob3cgcnVubmluZyBhcHBzIGFuZCBmYXZvcml0ZXMgb24gdGhlIG1haW4gcGFuZWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp0YXNrYmFyIiwKICAibmFtZSI6ICJBcHAgSWNvbnMgVGFza2JhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5henRhc2tiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6dGFza2JhciIsCiAgInV1aWQiOiAiYXp0YXNrYmFyQGF6dGFza2Jhci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDIyCn0="}
+    "45": {"version": "22", "sha256": "1zcb26wb96xif8swywgb9f9nkvbgmgl2hiy0bbj19xwfdbvjdvp2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGFwcCBpY29uIHRhc2tiYXIuIFNob3cgcnVubmluZyBhcHBzIGFuZCBmYXZvcml0ZXMgb24gdGhlIG1haW4gcGFuZWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp0YXNrYmFyIiwKICAibmFtZSI6ICJBcHAgSWNvbnMgVGFza2JhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5henRhc2tiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6dGFza2JhciIsCiAgInV1aWQiOiAiYXp0YXNrYmFyQGF6dGFza2Jhci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDIyCn0="},
+    "46": {"version": "22", "sha256": "1zcb26wb96xif8swywgb9f9nkvbgmgl2hiy0bbj19xwfdbvjdvp2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGFwcCBpY29uIHRhc2tiYXIuIFNob3cgcnVubmluZyBhcHBzIGFuZCBmYXZvcml0ZXMgb24gdGhlIG1haW4gcGFuZWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp0YXNrYmFyIiwKICAibmFtZSI6ICJBcHAgSWNvbnMgVGFza2JhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5henRhc2tiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6dGFza2JhciIsCiAgInV1aWQiOiAiYXp0YXNrYmFyQGF6dGFza2Jhci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDIyCn0="}
   }}
 , {"uuid": "netSpeedMonitor@nidyran.github.io", "name": "Network Speed Tracker", "pname": "net-speed-monitor", "description": "Network Speed Tracker \nUsage instructions:\n1 - Right-click to easily switch between available network sources.\n2 - Left-click to toggle display modes.\n3 - Middle-click to adjust the refresh rate.", "link": "https://extensions.gnome.org/extension/4947/net-speed-monitor/", "shell_version_map": {
     "38": {"version": "5", "sha256": "1zvp8zx82kqbf9ck55csgcysld3z1gr3cigkl5y73s5rvqj3ks5n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGhlbHBzIHRyYWNraW5nIGFuZCBtb25pdG9yaW5nIG5ldHdvcmsgc3BlZWQuIFxuVGhlcmUgYXJlIGZpdmUgbW9kZXM6IFxuMSAtIGRvd25sb2FkIHNwZWVkIG9ubHkuIFxuMiAtIHVwbG9hZCBzcGVlZCBvbmx5LiBcbjMgLSBkb3dubG9hZCBzcGVlZCBhbmQgdXBsb2FkIHNwZWVkIHRvZ2V0aGVyLiBcbjQgLSBkb3dubG9hZCBzcGVlZCBhbmQgdXBsb2FkIHNwZWVkIHN1bW1lZC4gXG41IC0gdG90YWwgZGF0YSB1c2FnZSBcblRvIHN3aXRjaCBiZXR3ZWVuIG1vZGVzLCB1c2UgbGVmdCBtb3VzZSBjbGljay4gXG5UbyBzd2l0Y2ggYmV0d2VlbiBhdmFpbGFibGUgc291cmNlcywgdXNlIHJpZ2h0IG1vdXNlIGNsaWNrLiBcblRvIGNoYW5nZSByZWZyZXNoIHRpbWUgMjAwIC0gMTAwMCB1c2UgbWlkZGxlIG1vdXNlIGNsaWNrLiBcblRoZSBmaXJzdCBzb3VyY2Ugd2l0aCB1c2FnZSBoaWdoZXIgdGhhbiB6ZXJvIHdpbGwgYmUgcGlja2VkIGJ5IGRlZmF1bHQuIFxuVGhlIGV4dGVuc2lvbiB3aWxsIHBpY2sgdGhlIGZpcnN0IHNvdXJjZSBieSBkZWZhdWx0LCBhbmQgaWYgbm8gdHJhZmZpYyBpcyBlc3RhYmxpc2hlZCBpdCB3aWxsIHN3aXRjaCB0byB0aGUgbmV4dCBvbmUgYW5kIHNvIG9uXG5UaGUgc291cmNlIGNvZGUgaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rIGJlbG93LCB1cGRhdGUgcmVxdWVzdHMgYXJlIHdlbGNvbWUuIiwKICAibmFtZSI6ICJuZXQgc3BlZWQgbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmlkeXJhbi9uZXRTcGVlZE1vbml0b3IvIiwKICAidXVpZCI6ICJuZXRTcGVlZE1vbml0b3JAbmlkeXJhbi5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNQp9"},
@@ -4640,7 +4814,8 @@
     "42": {"version": "4", "sha256": "004m77f5hkg9bq9lk2cf79x9va7np37q7yv474bwg165v7a0s8v1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdOT01FJ3MgdG9wYmFyJ3MgYmFja2dyb3VuZCBncmFkaWVudC4gWW91IGNhbiBlZGl0IHRoZSBjb2xvdXIgc2NoZW1lIGZyb20gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLiIsCiAgIm5hbWUiOiAiR3JhZGllbnQgVG9wIEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGV0YXItdi9ncmFkaWVudHRvcGJhciIsCiAgInV1aWQiOiAiZ3JhZGllbnR0b3BiYXJAcHNob3cub3JnIiwKICAidmVyc2lvbiI6IDQKfQ=="},
     "43": {"version": "11", "sha256": "0nb4jcxhx994kgmsv0aksrjwxnw58bjw0hsijkg6bb8idm32s1pp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdOT01FJ3MgdG9wYmFyJ3MgYmFja2dyb3VuZCBncmFkaWVudC4gWW91IGNhbiBlZGl0IHRoZSBjb2xvdXIgc2NoZW1lIGZyb20gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5wc2hvdy5ncmFkaWVudHRvcGJhciIsCiAgImhhc1ByZWZzIjogdHJ1ZSwKICAiaWNvbiI6ICIuL2Fzc2V0cy9sb2dvLnBuZyIsCiAgIm5hbWUiOiAiR3JhZGllbnQgVG9wIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5vcmcucHNob3cuZ3JhZGllbnR0b3BiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BldGFyLXYvZ3JhZGllbnR0b3BiYXIiLAogICJ1dWlkIjogImdyYWRpZW50dG9wYmFyQHBzaG93Lm9yZyIsCiAgInZlcnNpb24iOiAxMQp9"},
     "44": {"version": "11", "sha256": "0nb4jcxhx994kgmsv0aksrjwxnw58bjw0hsijkg6bb8idm32s1pp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdOT01FJ3MgdG9wYmFyJ3MgYmFja2dyb3VuZCBncmFkaWVudC4gWW91IGNhbiBlZGl0IHRoZSBjb2xvdXIgc2NoZW1lIGZyb20gdGhlIGV4dGVuc2lvbidzIHNldHRpbmdzLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5wc2hvdy5ncmFkaWVudHRvcGJhciIsCiAgImhhc1ByZWZzIjogdHJ1ZSwKICAiaWNvbiI6ICIuL2Fzc2V0cy9sb2dvLnBuZyIsCiAgIm5hbWUiOiAiR3JhZGllbnQgVG9wIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5vcmcucHNob3cuZ3JhZGllbnR0b3BiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BldGFyLXYvZ3JhZGllbnR0b3BiYXIiLAogICJ1dWlkIjogImdyYWRpZW50dG9wYmFyQHBzaG93Lm9yZyIsCiAgInZlcnNpb24iOiAxMQp9"},
-    "45": {"version": "19", "sha256": "0afh1cjy27srrdbr9b7lj1d25a06w1sixy3j14lw251rp461dvnx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdOT01FJ3MgcGFuZWwncyBiYWNrZ3JvdW5kIGdyYWRpZW50LiBZb3UgY2FuIGVkaXQgdGhlIGNvbG91ciBzY2hlbWUgZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2V0dGluZ3MgaW4gR25vbWUgNDUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJwZXRhci12IiwKICAgICJwYXlwYWwiOiAicGV0YXJ2NzMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLnBzaG93LmdyYWRpZW50dG9wYmFyIiwKICAiaGFzUHJlZnMiOiB0cnVlLAogICJpY29uIjogIi4vYXNzZXRzL2xvZ28ucG5nIiwKICAibmFtZSI6ICJHcmFkaWVudCBUb3AgQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9yZy5wc2hvdy5ncmFkaWVudHRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGV0YXItdi9ncmFkaWVudHRvcGJhciIsCiAgInV1aWQiOiAiZ3JhZGllbnR0b3BiYXJAcHNob3cub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="}
+    "45": {"version": "19", "sha256": "0afh1cjy27srrdbr9b7lj1d25a06w1sixy3j14lw251rp461dvnx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdOT01FJ3MgcGFuZWwncyBiYWNrZ3JvdW5kIGdyYWRpZW50LiBZb3UgY2FuIGVkaXQgdGhlIGNvbG91ciBzY2hlbWUgZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2V0dGluZ3MgaW4gR25vbWUgNDUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJwZXRhci12IiwKICAgICJwYXlwYWwiOiAicGV0YXJ2NzMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLnBzaG93LmdyYWRpZW50dG9wYmFyIiwKICAiaGFzUHJlZnMiOiB0cnVlLAogICJpY29uIjogIi4vYXNzZXRzL2xvZ28ucG5nIiwKICAibmFtZSI6ICJHcmFkaWVudCBUb3AgQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9yZy5wc2hvdy5ncmFkaWVudHRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGV0YXItdi9ncmFkaWVudHRvcGJhciIsCiAgInV1aWQiOiAiZ3JhZGllbnR0b3BiYXJAcHNob3cub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="},
+    "46": {"version": "19", "sha256": "0afh1cjy27srrdbr9b7lj1d25a06w1sixy3j14lw251rp461dvnx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdOT01FJ3MgcGFuZWwncyBiYWNrZ3JvdW5kIGdyYWRpZW50LiBZb3UgY2FuIGVkaXQgdGhlIGNvbG91ciBzY2hlbWUgZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2V0dGluZ3MgaW4gR25vbWUgNDUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJwZXRhci12IiwKICAgICJwYXlwYWwiOiAicGV0YXJ2NzMiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAib3JnLnBzaG93LmdyYWRpZW50dG9wYmFyIiwKICAiaGFzUHJlZnMiOiB0cnVlLAogICJpY29uIjogIi4vYXNzZXRzL2xvZ28ucG5nIiwKICAibmFtZSI6ICJHcmFkaWVudCBUb3AgQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9yZy5wc2hvdy5ncmFkaWVudHRvcGJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGV0YXItdi9ncmFkaWVudHRvcGJhciIsCiAgInV1aWQiOiAiZ3JhZGllbnR0b3BiYXJAcHNob3cub3JnIiwKICAidmVyc2lvbiI6IDE5Cn0="}
   }}
 , {"uuid": "note@eexpss.gmail.com", "name": "note", "pname": "note", "description": "Add selected text to Note.\n- Notes automatic recognition and sort as 'Directory' 'Command' 'Clipboard'.\n- 'Directory': Mouse 1/2/3 act as 'Open in Files/Open in termianl/Paste dir'. It can be used as a temporary bookmark. And any click will change the working diretory in real time.\n- 'Command': Mouse 1/3 as 'Excute command in Terminal/Paste cmd'.\n- 'Clipboard': Mouse act as 'Paste to Clipboard(PRIMARY)'.\n- Terminal support kgx(new gnome-console) and gnome-terminal.", "link": "https://extensions.gnome.org/extension/4962/note/", "shell_version_map": {
     "42": {"version": "7", "sha256": "1niwlhls41l92g0bcllp4y4bdhn7k310514xkd36rn61pqz9b7q6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBzZWxlY3RlZCB0ZXh0IHRvIE5vdGUuXG4tIE5vdGVzIGF1dG9tYXRpYyByZWNvZ25pdGlvbiBhbmQgc29ydCBhcyAnRGlyZWN0b3J5JyAnQ29tbWFuZCcgJ0NsaXBib2FyZCcuXG4tICdEaXJlY3RvcnknOiBNb3VzZSAxLzIvMyBhY3QgYXMgJ09wZW4gaW4gRmlsZXMvT3BlbiBpbiB0ZXJtaWFubC9QYXN0ZSBkaXInLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHRlbXBvcmFyeSBib29rbWFyay4gQW5kIGFueSBjbGljayB3aWxsIGNoYW5nZSB0aGUgd29ya2luZyBkaXJldG9yeSBpbiByZWFsIHRpbWUuXG4tICdDb21tYW5kJzogTW91c2UgMS8zIGFzICdFeGN1dGUgY29tbWFuZCBpbiBUZXJtaW5hbC9QYXN0ZSBjbWQnLlxuLSAnQ2xpcGJvYXJkJzogTW91c2UgYWN0IGFzICdQYXN0ZSB0byBDbGlwYm9hcmQoUFJJTUFSWSknLlxuLSBUZXJtaW5hbCBzdXBwb3J0IGtneChuZXcgZ25vbWUtY29uc29sZSkgYW5kIGdub21lLXRlcm1pbmFsLiIsCiAgImdldHRleHQtZG9tYWluIjogIm5vdGUiLAogICJuYW1lIjogIm5vdGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubm90ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9lZXhwcmVzcy9ncy1ub3RlIiwKICAidXVpZCI6ICJub3RlQGVleHBzcy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNwp9"}
@@ -4699,10 +4874,11 @@
 , {"uuid": "dash2dock-lite@icedman.github.com", "name": "Dash2Dock Animated", "pname": "dash2dock-lite", "description": "The Animated & Effectful Dock", "link": "https://extensions.gnome.org/extension/4994/dash2dock-lite/", "shell_version_map": {
     "40": {"version": "28", "sha256": "00c5fjb6s40y7fzndvmxb8ni0hlbd3gmypx262jjk7gwa0yvq99d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZGFzaDJkb2NrLWxpdGUiLAogICJuYW1lIjogIkRhc2gyRG9jayBMaXRlIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJpY2VkbWFuIgogIF0sCiAgInNjaGVtYS1pZCI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kYXNoMmRvY2stbGl0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9kYXNoMmRvY2stbGl0ZSIsCiAgInV1aWQiOiAiZGFzaDJkb2NrLWxpdGVAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI4Cn0="},
     "41": {"version": "28", "sha256": "00c5fjb6s40y7fzndvmxb8ni0hlbd3gmypx262jjk7gwa0yvq99d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZGFzaDJkb2NrLWxpdGUiLAogICJuYW1lIjogIkRhc2gyRG9jayBMaXRlIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJpY2VkbWFuIgogIF0sCiAgInNjaGVtYS1pZCI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kYXNoMmRvY2stbGl0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9kYXNoMmRvY2stbGl0ZSIsCiAgInV1aWQiOiAiZGFzaDJkb2NrLWxpdGVAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI4Cn0="},
-    "42": {"version": "34", "sha256": "1f1mlyh4588ajnnxavxfhkwh2qds1zrcmskv1dxi0si0k8dsyzg4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZGFzaDJkb2NrLWxpdGUiLAogICJuYW1lIjogIkRhc2gyRG9jayBMaXRlIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJpY2VkbWFuIgogIF0sCiAgInNjaGVtYS1pZCI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kYXNoMmRvY2stbGl0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vZGFzaDJkb2NrLWxpdGUiLAogICJ1dWlkIjogImRhc2gyZG9jay1saXRlQGljZWRtYW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzNAp9"},
-    "43": {"version": "34", "sha256": "1f1mlyh4588ajnnxavxfhkwh2qds1zrcmskv1dxi0si0k8dsyzg4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZGFzaDJkb2NrLWxpdGUiLAogICJuYW1lIjogIkRhc2gyRG9jayBMaXRlIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJpY2VkbWFuIgogIF0sCiAgInNjaGVtYS1pZCI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kYXNoMmRvY2stbGl0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vZGFzaDJkb2NrLWxpdGUiLAogICJ1dWlkIjogImRhc2gyZG9jay1saXRlQGljZWRtYW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzNAp9"},
-    "44": {"version": "34", "sha256": "1f1mlyh4588ajnnxavxfhkwh2qds1zrcmskv1dxi0si0k8dsyzg4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZGFzaDJkb2NrLWxpdGUiLAogICJuYW1lIjogIkRhc2gyRG9jayBMaXRlIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJpY2VkbWFuIgogIF0sCiAgInNjaGVtYS1pZCI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kYXNoMmRvY2stbGl0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vZGFzaDJkb2NrLWxpdGUiLAogICJ1dWlkIjogImRhc2gyZG9jay1saXRlQGljZWRtYW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzNAp9"},
-    "45": {"version": "43", "sha256": "1z7w5h5j3y6ygbs76an2d103f9sa3f0w638ddc7hicxxddlbgldz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJpY2VkbWFuIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRhc2gyZG9jay1saXRlIiwKICAibmFtZSI6ICJEYXNoMkRvY2sgQW5pbWF0ZWQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImljZWRtYW4iCiAgXSwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gyZG9jay1saXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vZGFzaDJkb2NrLWxpdGUiLAogICJ1dWlkIjogImRhc2gyZG9jay1saXRlQGljZWRtYW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0Mwp9"}
+    "42": {"version": "57", "sha256": "0z4mkp2hxy9ihzdnj42b8hqkc7l322a847v2l1ac4dvz11x38cwp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJpY2VkbWFuIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRhc2gyZG9jay1saXRlIiwKICAibmFtZSI6ICJEYXNoMkRvY2sgQW5pbWF0ZWQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImljZWRtYW4iCiAgXSwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gyZG9jay1saXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9kYXNoMmRvY2stbGl0ZSIsCiAgInV1aWQiOiAiZGFzaDJkb2NrLWxpdGVAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU3Cn0="},
+    "43": {"version": "57", "sha256": "0z4mkp2hxy9ihzdnj42b8hqkc7l322a847v2l1ac4dvz11x38cwp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJpY2VkbWFuIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRhc2gyZG9jay1saXRlIiwKICAibmFtZSI6ICJEYXNoMkRvY2sgQW5pbWF0ZWQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImljZWRtYW4iCiAgXSwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gyZG9jay1saXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9kYXNoMmRvY2stbGl0ZSIsCiAgInV1aWQiOiAiZGFzaDJkb2NrLWxpdGVAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU3Cn0="},
+    "44": {"version": "57", "sha256": "0z4mkp2hxy9ihzdnj42b8hqkc7l322a847v2l1ac4dvz11x38cwp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJpY2VkbWFuIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRhc2gyZG9jay1saXRlIiwKICAibmFtZSI6ICJEYXNoMkRvY2sgQW5pbWF0ZWQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImljZWRtYW4iCiAgXSwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gyZG9jay1saXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9kYXNoMmRvY2stbGl0ZSIsCiAgInV1aWQiOiAiZGFzaDJkb2NrLWxpdGVAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDU3Cn0="},
+    "45": {"version": "54", "sha256": "10wlbfpay3aj8g2rqf06b8igphmk89avdjqw0vxz08ngc8r150wb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJpY2VkbWFuIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRhc2gyZG9jay1saXRlIiwKICAibmFtZSI6ICJEYXNoMkRvY2sgQW5pbWF0ZWQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImljZWRtYW4iCiAgXSwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gyZG9jay1saXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2VkbWFuL2Rhc2gyZG9jay1saXRlIiwKICAidXVpZCI6ICJkYXNoMmRvY2stbGl0ZUBpY2VkbWFuLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTQKfQ=="},
+    "46": {"version": "54", "sha256": "10wlbfpay3aj8g2rqf06b8igphmk89avdjqw0vxz08ngc8r150wb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBBbmltYXRlZCAmIEVmZmVjdGZ1bCBEb2NrIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJpY2VkbWFuIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImRhc2gyZG9jay1saXRlIiwKICAibmFtZSI6ICJEYXNoMkRvY2sgQW5pbWF0ZWQiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImljZWRtYW4iCiAgXSwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gyZG9jay1saXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2VkbWFuL2Rhc2gyZG9jay1saXRlIiwKICAidXVpZCI6ICJkYXNoMmRvY2stbGl0ZUBpY2VkbWFuLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTQKfQ=="}
   }}
 , {"uuid": "animate@eexpss.gmail.com", "name": "animate", "pname": "animate", "description": "Animated small man run through the screen. Scroll mouse can change deferent character. You can use your PNG characters instead of the original ones.", "link": "https://extensions.gnome.org/extension/4995/animate/", "shell_version_map": {
     "40": {"version": "4", "sha256": "1p110wz7wdr51z2fsn6z72lcnln13h8lfbw9a00hs9qb0y71qf5q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuaW1hdGVkIHNtYWxsIG1hbiBydW4gdGhyb3VnaCB0aGUgc2NyZWVuLiBTY3JvbGwgbW91c2UgY2FuIGNoYW5nZSBkZWZlcmVudCBjaGFyYWN0ZXIuIFlvdSBjYW4gdXNlIHlvdXIgUE5HIGNoYXJhY3RlcnMgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgb25lcy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJhbmltYXRlIiwKICAibmFtZSI6ICJhbmltYXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWV4cHJlc3MvZ3MtYW5pbWF0ZSIsCiAgInV1aWQiOiAiYW5pbWF0ZUBlZXhwc3MuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -4713,7 +4889,8 @@
     "42": {"version": "5", "sha256": "1k1nlcpwsdmvy95y6ch40df67lgsqn3ja5qf1i2z4mw3rff3jsi5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgR1RLMyB0aGVtZSB0byBsaWdodC9kYXJrIHZhcmlhbnQgYmFzZWQgb24gdGhlIHN5c3RlbSBjb2xvciBzY2hlbWUgb24gR25vbWUgNDIiLAogICJuYW1lIjogIkxlZ2FjeSAoR1RLMykgVGhlbWUgU2NoZW1lIEF1dG8gU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdWt1bDI5L2xlZ2FjeS10aGVtZS1hdXRvLXN3aXRjaGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAibGVnYWN5c2NoZW1lYXV0b3N3aXRjaGVyQGpvc2hpbXVrdWwyOS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
     "43": {"version": "5", "sha256": "1k1nlcpwsdmvy95y6ch40df67lgsqn3ja5qf1i2z4mw3rff3jsi5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgR1RLMyB0aGVtZSB0byBsaWdodC9kYXJrIHZhcmlhbnQgYmFzZWQgb24gdGhlIHN5c3RlbSBjb2xvciBzY2hlbWUgb24gR25vbWUgNDIiLAogICJuYW1lIjogIkxlZ2FjeSAoR1RLMykgVGhlbWUgU2NoZW1lIEF1dG8gU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdWt1bDI5L2xlZ2FjeS10aGVtZS1hdXRvLXN3aXRjaGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAibGVnYWN5c2NoZW1lYXV0b3N3aXRjaGVyQGpvc2hpbXVrdWwyOS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
     "44": {"version": "5", "sha256": "1k1nlcpwsdmvy95y6ch40df67lgsqn3ja5qf1i2z4mw3rff3jsi5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgR1RLMyB0aGVtZSB0byBsaWdodC9kYXJrIHZhcmlhbnQgYmFzZWQgb24gdGhlIHN5c3RlbSBjb2xvciBzY2hlbWUgb24gR25vbWUgNDIiLAogICJuYW1lIjogIkxlZ2FjeSAoR1RLMykgVGhlbWUgU2NoZW1lIEF1dG8gU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdWt1bDI5L2xlZ2FjeS10aGVtZS1hdXRvLXN3aXRjaGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAibGVnYWN5c2NoZW1lYXV0b3N3aXRjaGVyQGpvc2hpbXVrdWwyOS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
-    "45": {"version": "7", "sha256": "1jflfx32gcl6kik3qzlbv606q8ijlm3p2x6g5jgg9x50jjbfvjq2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgR1RLMyB0aGVtZSB0byBsaWdodC9kYXJrIHZhcmlhbnQgYmFzZWQgb24gdGhlIHN5c3RlbSBjb2xvciBzY2hlbWUiLAogICJuYW1lIjogIkxlZ2FjeSAoR1RLMykgVGhlbWUgU2NoZW1lIEF1dG8gU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbXVrdWwyOS9sZWdhY3ktdGhlbWUtYXV0by1zd2l0Y2hlci1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImxlZ2FjeXNjaGVtZWF1dG9zd2l0Y2hlckBqb3NoaW11a3VsMjkuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="}
+    "45": {"version": "8", "sha256": "0lm3gi33w697jd37jl9prhv4ls8plsnbk4b4pm4pza7krg12h7sp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgR1RLMyB0aGVtZSB0byBsaWdodC9kYXJrIHZhcmlhbnQgYmFzZWQgb24gdGhlIHN5c3RlbSBjb2xvciBzY2hlbWUiLAogICJuYW1lIjogIkxlZ2FjeSAoR1RLMykgVGhlbWUgU2NoZW1lIEF1dG8gU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL211a3VsMjkvbGVnYWN5LXRoZW1lLWF1dG8tc3dpdGNoZXItZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJsZWdhY3lzY2hlbWVhdXRvc3dpdGNoZXJAam9zaGltdWt1bDI5LmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="},
+    "46": {"version": "8", "sha256": "0lm3gi33w697jd37jl9prhv4ls8plsnbk4b4pm4pza7krg12h7sp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNoYW5nZSB0aGUgR1RLMyB0aGVtZSB0byBsaWdodC9kYXJrIHZhcmlhbnQgYmFzZWQgb24gdGhlIHN5c3RlbSBjb2xvciBzY2hlbWUiLAogICJuYW1lIjogIkxlZ2FjeSAoR1RLMykgVGhlbWUgU2NoZW1lIEF1dG8gU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL211a3VsMjkvbGVnYWN5LXRoZW1lLWF1dG8tc3dpdGNoZXItZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJsZWdhY3lzY2hlbWVhdXRvc3dpdGNoZXJAam9zaGltdWt1bDI5LmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="}
   }}
 , {"uuid": "dash-to-dock-cosmic-@halfmexicanhalfamazing@gmail.com", "name": "Dash to Dock for COSMIC", "pname": "dash-to-dock-for-cosmic", "description": "A Dash to Dock fork for the COSMIC/GNOME Shell, fixes conflicts with Cosmic Workspace.  It prevents Cosmic Workspaces from breaking after suspend. \n\nAdded Features:\nBorder Radius \nBorder Margins\n Icon Alignment\nEtc.", "link": "https://extensions.gnome.org/extension/5004/dash-to-dock-for-cosmic/", "shell_version_map": {
     "40": {"version": "23", "sha256": "1780c6zjfyl7ansicd370nf1l42xqsifp2qpyll26mhjnzyzmlqr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgRGFzaCB0byBEb2NrIGZvcmsgZm9yIHRoZSBDT1NNSUMvR05PTUUgU2hlbGwsIGZpeGVzIGNvbmZsaWN0cyB3aXRoIENvc21pYyBXb3Jrc3BhY2UuICBJdCBwcmV2ZW50cyBDb3NtaWMgV29ya3NwYWNlcyBmcm9tIGJyZWFraW5nIGFmdGVyIHN1c3BlbmQuIFxuXG5BZGRlZCBGZWF0dXJlczpcbkJvcmRlciBSYWRpdXMgXG5Cb3JkZXIgTWFyZ2luc1xuRG9jayAmYW1wO2FtcDsgSWNvbiBBbGlnbm1lbnRcbkV0Yy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJkYXNodG9kb2NrIiwKICAibmFtZSI6ICJEYXNoIHRvIERvY2sgZm9yIENPU01JQyIsCiAgIm9yaWdpbmFsLWF1dGhvciI6ICJoYWxmbWV4aWNhbmhhbGZhbWF6aW5nQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oYWxmbWV4aWNhbi9kYXNoLXRvLWRvY2stcG9wL3RyZWUvdWJ1bnR1LWRvY2siLAogICJ1dWlkIjogImRhc2gtdG8tZG9jay1jb3NtaWMtQGhhbGZtZXhpY2FuaGFsZmFtYXppbmdAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDIzCn0="},
@@ -4760,7 +4937,8 @@
     "42": {"version": "5", "sha256": "1hqm9znczhw9iq4zx8nzy5cm8wr8lwsryk4l6g634fxqs1bxny5n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZSBhIEQtQnVzIGludGVyZmFjZSB0byBhY3RpdmF0ZSBhIHdpbmRvdyBieSBpdHMgdGl0bGUgb3IgV01fQ0xBU1MiLAogICJuYW1lIjogIkFjdGl2YXRlIFdpbmRvdyBCeSBUaXRsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2x1Y2Fzd2Vya21laXN0ZXIvYWN0aXZhdGUtd2luZG93LWJ5LXRpdGxlIiwKICAidXVpZCI6ICJhY3RpdmF0ZS13aW5kb3ctYnktdGl0bGVAbHVjYXN3ZXJrbWVpc3Rlci5kZSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "43": {"version": "6", "sha256": "14sy0l2nwc7lr5h08q3kcjbvlmddiqdi7kqi4s15ma80hhz35mqb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZSBhIEQtQnVzIGludGVyZmFjZSB0byBhY3RpdmF0ZSBhIHdpbmRvdyBieSBpdHMgdGl0bGUgb3IgV01fQ0xBU1MiLAogICJuYW1lIjogIkFjdGl2YXRlIFdpbmRvdyBCeSBUaXRsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbHVjYXN3ZXJrbWVpc3Rlci9hY3RpdmF0ZS13aW5kb3ctYnktdGl0bGUiLAogICJ1dWlkIjogImFjdGl2YXRlLXdpbmRvdy1ieS10aXRsZUBsdWNhc3dlcmttZWlzdGVyLmRlIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "44": {"version": "6", "sha256": "14sy0l2nwc7lr5h08q3kcjbvlmddiqdi7kqi4s15ma80hhz35mqb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZSBhIEQtQnVzIGludGVyZmFjZSB0byBhY3RpdmF0ZSBhIHdpbmRvdyBieSBpdHMgdGl0bGUgb3IgV01fQ0xBU1MiLAogICJuYW1lIjogIkFjdGl2YXRlIFdpbmRvdyBCeSBUaXRsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbHVjYXN3ZXJrbWVpc3Rlci9hY3RpdmF0ZS13aW5kb3ctYnktdGl0bGUiLAogICJ1dWlkIjogImFjdGl2YXRlLXdpbmRvdy1ieS10aXRsZUBsdWNhc3dlcmttZWlzdGVyLmRlIiwKICAidmVyc2lvbiI6IDYKfQ=="},
-    "45": {"version": "7", "sha256": "1v25d1mrv4hdcidf27hg20nym3adhc7nr6x429g5mzrpmxss57c7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZSBhIEQtQnVzIGludGVyZmFjZSB0byBhY3RpdmF0ZSBhIHdpbmRvdyBieSBpdHMgdGl0bGUgb3IgV01fQ0xBU1MiLAogICJuYW1lIjogIkFjdGl2YXRlIFdpbmRvdyBCeSBUaXRsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9sdWNhc3dlcmttZWlzdGVyL2FjdGl2YXRlLXdpbmRvdy1ieS10aXRsZSIsCiAgInV1aWQiOiAiYWN0aXZhdGUtd2luZG93LWJ5LXRpdGxlQGx1Y2Fzd2Vya21laXN0ZXIuZGUiLAogICJ2ZXJzaW9uIjogNwp9"}
+    "45": {"version": "8", "sha256": "042lfzp736zany63hrvsvzcisgljnkpgz9w87w17vd3b82ls5w54", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZSBhIEQtQnVzIGludGVyZmFjZSB0byBhY3RpdmF0ZSBhIHdpbmRvdyBieSBpdHMgdGl0bGUgb3IgV01fQ0xBU1MiLAogICJuYW1lIjogIkFjdGl2YXRlIFdpbmRvdyBCeSBUaXRsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbHVjYXN3ZXJrbWVpc3Rlci9hY3RpdmF0ZS13aW5kb3ctYnktdGl0bGUiLAogICJ1dWlkIjogImFjdGl2YXRlLXdpbmRvdy1ieS10aXRsZUBsdWNhc3dlcmttZWlzdGVyLmRlIiwKICAidmVyc2lvbiI6IDgKfQ=="},
+    "46": {"version": "8", "sha256": "042lfzp736zany63hrvsvzcisgljnkpgz9w87w17vd3b82ls5w54", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZSBhIEQtQnVzIGludGVyZmFjZSB0byBhY3RpdmF0ZSBhIHdpbmRvdyBieSBpdHMgdGl0bGUgb3IgV01fQ0xBU1MiLAogICJuYW1lIjogIkFjdGl2YXRlIFdpbmRvdyBCeSBUaXRsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbHVjYXN3ZXJrbWVpc3Rlci9hY3RpdmF0ZS13aW5kb3ctYnktdGl0bGUiLAogICJ1dWlkIjogImFjdGl2YXRlLXdpbmRvdy1ieS10aXRsZUBsdWNhc3dlcmttZWlzdGVyLmRlIiwKICAidmVyc2lvbiI6IDgKfQ=="}
   }}
 , {"uuid": "nano-system-monitor@eeeeeio", "name": "Nano System Monitor", "pname": "nano-system-monitor", "description": "Show current status on GNOME Shell panel\n\nbar shows CPU|memory|swap usages,then the download|upload speed and CPU temperature and fan speed\n\nDifferent colors represent different percentage states and CPU temperature\n\nplease use monospaced font for best experience", "link": "https://extensions.gnome.org/extension/5037/nano-system-monitor/", "shell_version_map": {
     "38": {"version": "6", "sha256": "1kd3c9bml1qh6djjmd4qr393z4zp7il0p3sz9bb7qv2smsg582lf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3VycmVudCBzdGF0dXMgb24gR05PTUUgU2hlbGwgcGFuZWxcblxuYmFyIHNob3dzIENQVXxtZW1vcnl8c3dhcCB1c2FnZXMsdGhlbiB0aGUgZG93bmxvYWR8dXBsb2FkIHNwZWVkIGFuZCBDUFUgdGVtcGVyYXR1cmUgYW5kIGZhbiBzcGVlZFxuXG5EaWZmZXJlbnQgY29sb3JzIHJlcHJlc2VudCBkaWZmZXJlbnQgcGVyY2VudGFnZSBzdGF0ZXMgYW5kIENQVSB0ZW1wZXJhdHVyZVxuXG5wbGVhc2UgdXNlIG1vbm9zcGFjZWQgZm9udCBmb3IgYmVzdCBleHBlcmllbmNlIiwKICAibmFtZSI6ICJOYW5vIFN5c3RlbSBNb25pdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWVlZWVpby9nbm9tZS1zaGVsbC1leHRlbnNpb24tbmFuby1zeXN0ZW0tbW9uaXRvciIsCiAgInV1aWQiOiAibmFuby1zeXN0ZW0tbW9uaXRvckBlZWVlZWlvIiwKICAidmVyc2lvbiI6IDYKfQ=="},
@@ -4795,7 +4973,8 @@
     "42": {"version": "5", "sha256": "0q8x7fz5mc03dff4gx18vszsqbhcaryi9c9a1krmcm5djqnkhrq5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHhyZW1hcCB0byBmZXRjaCB0aGUgZm9jdXNlZCBhcHAgbmFtZSB1c2luZyBELUJ1cyIsCiAgIm5hbWUiOiAiWHJlbWFwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS94cmVtYXAveHJlbWFwLWdub21lIiwKICAidXVpZCI6ICJ4cmVtYXBAazBrdWJ1bi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
     "43": {"version": "5", "sha256": "0q8x7fz5mc03dff4gx18vszsqbhcaryi9c9a1krmcm5djqnkhrq5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHhyZW1hcCB0byBmZXRjaCB0aGUgZm9jdXNlZCBhcHAgbmFtZSB1c2luZyBELUJ1cyIsCiAgIm5hbWUiOiAiWHJlbWFwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS94cmVtYXAveHJlbWFwLWdub21lIiwKICAidXVpZCI6ICJ4cmVtYXBAazBrdWJ1bi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
     "44": {"version": "5", "sha256": "0q8x7fz5mc03dff4gx18vszsqbhcaryi9c9a1krmcm5djqnkhrq5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHhyZW1hcCB0byBmZXRjaCB0aGUgZm9jdXNlZCBhcHAgbmFtZSB1c2luZyBELUJ1cyIsCiAgIm5hbWUiOiAiWHJlbWFwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS94cmVtYXAveHJlbWFwLWdub21lIiwKICAidXVpZCI6ICJ4cmVtYXBAazBrdWJ1bi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
-    "45": {"version": "6", "sha256": "0yd3lywzyi2rl20j0k0ddfr9zwh2b04qgbcrpkjjni2q9vhd9n7g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHhyZW1hcCB0byBmZXRjaCB0aGUgZm9jdXNlZCBhcHAgbmFtZSB1c2luZyBELUJ1cyIsCiAgIm5hbWUiOiAiWHJlbWFwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3hyZW1hcC94cmVtYXAtZ25vbWUiLAogICJ1dWlkIjogInhyZW1hcEBrMGt1YnVuLmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="}
+    "45": {"version": "7", "sha256": "1fix56jmvh0924vrk9sqi9ynz841zlag255paiz7b7fi61dijy1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHhyZW1hcCB0byBmZXRjaCB0aGUgZm9jdXNlZCBhcHAgbmFtZSB1c2luZyBELUJ1cyIsCiAgIm5hbWUiOiAiWHJlbWFwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS94cmVtYXAveHJlbWFwLWdub21lIiwKICAidXVpZCI6ICJ4cmVtYXBAazBrdWJ1bi5jb20iLAogICJ2ZXJzaW9uIjogNwp9"},
+    "46": {"version": "7", "sha256": "1fix56jmvh0924vrk9sqi9ynz841zlag255paiz7b7fi61dijy1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHhyZW1hcCB0byBmZXRjaCB0aGUgZm9jdXNlZCBhcHAgbmFtZSB1c2luZyBELUJ1cyIsCiAgIm5hbWUiOiAiWHJlbWFwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS94cmVtYXAveHJlbWFwLWdub21lIiwKICAidXVpZCI6ICJ4cmVtYXBAazBrdWJ1bi5jb20iLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
 , {"uuid": "dollar-clp@albolea.github.com", "name": "Dollar-CLP", "pname": "dollar-clp", "description": "(USD US Dollar) converted to (CLP Peso Chileno). Updates are received every 30 seconds and are based on information provided by AwesomeAPI API, which can be consulted directly by accessing the address https://docs.awesomeapi.com.br. (based on michael.mattos's Dollar https://extensions.gnome.org/extension/4573/dollar/)", "link": "https://extensions.gnome.org/extension/5066/dollar-clp/", "shell_version_map": {
     "38": {"version": "2", "sha256": "0lc7mx77qvxx2q04bljza8pv1p98sv5qyi7rpbmr572yalxmsyv7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIihVU0QgVVMgRG9sbGFyKSBjb252ZXJ0ZWQgdG8gKENMUCBQZXNvIENoaWxlbm8pLiBVcGRhdGVzIGFyZSByZWNlaXZlZCBldmVyeSAzMCBzZWNvbmRzIGFuZCBhcmUgYmFzZWQgb24gaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgQXdlc29tZUFQSSBBUEksIHdoaWNoIGNhbiBiZSBjb25zdWx0ZWQgZGlyZWN0bHkgYnkgYWNjZXNzaW5nIHRoZSBhZGRyZXNzIGh0dHBzOi8vZG9jcy5hd2Vzb21lYXBpLmNvbS5ici4gKGJhc2VkIG9uIG1pY2hhZWwubWF0dG9zJ3MgRG9sbGFyIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzQ1NzMvZG9sbGFyLykiLAogICJuYW1lIjogIkRvbGxhci1DTFAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGJvbGVhL2RvbGxhci1jbHAiLAogICJ1dWlkIjogImRvbGxhci1jbHBAYWxib2xlYS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
@@ -4849,13 +5028,15 @@
     "42": {"version": "12", "sha256": "0cn0jlnspcsly11y7f0nizz719v2kw0p7yymp6kx927a5lsgg43x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBtdXRpbmcvdW5tdXRpbmcgYXVkaW8gYnkgbWlkZGxlLWNsaWNraW5nIHRoZSBzcGVha2VyIGljb24gb24gdGhlIG1lbnUgYmFyLiBJdCBhbHNvIHBvcnRzIG9uIEdub21lIDQzIGFuZCBwcmVjZWRlbnQgdmVyc2lvbnMgdGhlIHNhbWUgYmVoYXZpb3VyIG9mIEdub21lIDQ0OiBtdXRlL3VubXV0ZSBhdWRpbyBieSBjbGlja2luZyB0aGUgYXVkaW8gb3V0cHV0IGljb24gbmV4dCB0byB0aGUgdm9sdW1lIHNsaWRlci4gVGhpcyBleHRlbnNpb24gdXNlcyBtdXRlL3VubXV0ZSBBUEkgaW4gb3JkZXIgdG8gcmVzdG9yZSBwcmV2aW91cyB2b2x1bWUgbGV2ZWwgYWZ0ZXIgdW5tdXRpbmcuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJNQ2FzdGFsZG8iCiAgfSwKICAibmFtZSI6ICJNdXRlL1VubXV0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWhwbGVkL211dGUtdW5tdXRlIiwKICAidXVpZCI6ICJtdXRlLXVubXV0ZUBtY2FzdC5nbm9tZXh0LmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "43": {"version": "12", "sha256": "0cn0jlnspcsly11y7f0nizz719v2kw0p7yymp6kx927a5lsgg43x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBtdXRpbmcvdW5tdXRpbmcgYXVkaW8gYnkgbWlkZGxlLWNsaWNraW5nIHRoZSBzcGVha2VyIGljb24gb24gdGhlIG1lbnUgYmFyLiBJdCBhbHNvIHBvcnRzIG9uIEdub21lIDQzIGFuZCBwcmVjZWRlbnQgdmVyc2lvbnMgdGhlIHNhbWUgYmVoYXZpb3VyIG9mIEdub21lIDQ0OiBtdXRlL3VubXV0ZSBhdWRpbyBieSBjbGlja2luZyB0aGUgYXVkaW8gb3V0cHV0IGljb24gbmV4dCB0byB0aGUgdm9sdW1lIHNsaWRlci4gVGhpcyBleHRlbnNpb24gdXNlcyBtdXRlL3VubXV0ZSBBUEkgaW4gb3JkZXIgdG8gcmVzdG9yZSBwcmV2aW91cyB2b2x1bWUgbGV2ZWwgYWZ0ZXIgdW5tdXRpbmcuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJNQ2FzdGFsZG8iCiAgfSwKICAibmFtZSI6ICJNdXRlL1VubXV0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWhwbGVkL211dGUtdW5tdXRlIiwKICAidXVpZCI6ICJtdXRlLXVubXV0ZUBtY2FzdC5nbm9tZXh0LmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "0cn0jlnspcsly11y7f0nizz719v2kw0p7yymp6kx927a5lsgg43x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBtdXRpbmcvdW5tdXRpbmcgYXVkaW8gYnkgbWlkZGxlLWNsaWNraW5nIHRoZSBzcGVha2VyIGljb24gb24gdGhlIG1lbnUgYmFyLiBJdCBhbHNvIHBvcnRzIG9uIEdub21lIDQzIGFuZCBwcmVjZWRlbnQgdmVyc2lvbnMgdGhlIHNhbWUgYmVoYXZpb3VyIG9mIEdub21lIDQ0OiBtdXRlL3VubXV0ZSBhdWRpbyBieSBjbGlja2luZyB0aGUgYXVkaW8gb3V0cHV0IGljb24gbmV4dCB0byB0aGUgdm9sdW1lIHNsaWRlci4gVGhpcyBleHRlbnNpb24gdXNlcyBtdXRlL3VubXV0ZSBBUEkgaW4gb3JkZXIgdG8gcmVzdG9yZSBwcmV2aW91cyB2b2x1bWUgbGV2ZWwgYWZ0ZXIgdW5tdXRpbmcuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJNQ2FzdGFsZG8iCiAgfSwKICAibmFtZSI6ICJNdXRlL1VubXV0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWhwbGVkL211dGUtdW5tdXRlIiwKICAidXVpZCI6ICJtdXRlLXVubXV0ZUBtY2FzdC5nbm9tZXh0LmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "17", "sha256": "066q2jphrwq6pqzfyb0ls0rrghwmahg84d91xy4svn567wb3awld", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBtdXRpbmcvdW5tdXRpbmcgYXVkaW8gYnkgbWlkZGxlLWNsaWNraW5nIHRoZSBzcGVha2VyIGljb24gb24gdGhlIG1lbnUgYmFyLiBJdCBhbHNvIHBvcnRzIG9uIEdub21lIDQzIGFuZCBwcmV2aW91cyB2ZXJzaW9ucyB0aGUgc2FtZSBiZWhhdmlvdXIgb2YgR25vbWUgNDQgYW5kIGxhdGVyIHZlcnNpb25zOiBtdXRlL3VubXV0ZSBhdWRpbyBieSBjbGlja2luZyB0aGUgYXVkaW8gb3V0cHV0IGljb24gbmV4dCB0byB0aGUgdm9sdW1lIHNsaWRlci4gVGhpcyBleHRlbnNpb24gdXNlcyBtdXRlL3VubXV0ZSBBUEkgaW4gb3JkZXIgdG8gcmVzdG9yZSBwcmV2aW91cyB2b2x1bWUgbGV2ZWwgYWZ0ZXIgdW5tdXRpbmcuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJNQ2FzdGFsZG8iCiAgfSwKICAibmFtZSI6ICJNdXRlL1VubXV0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9paHBsZWQvbXV0ZS11bm11dGUiLAogICJ1dWlkIjogIm11dGUtdW5tdXRlQG1jYXN0Lmdub21leHQuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="}
+    "45": {"version": "18", "sha256": "1yx5pnx2pryhzvly3d4yxcamdj69z2dzdw54dq1jszw9yr611kz1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBtdXRpbmcvdW5tdXRpbmcgYXVkaW8gYnkgbWlkZGxlLWNsaWNraW5nIHRoZSBzcGVha2VyIGljb24gb24gdGhlIG1lbnUgYmFyLiBJdCBhbHNvIHBvcnRzIG9uIEdub21lIDQzIGFuZCBwcmV2aW91cyB2ZXJzaW9ucyB0aGUgc2FtZSBiZWhhdmlvdXIgb2YgR25vbWUgNDQgYW5kIGxhdGVyIHZlcnNpb25zOiBtdXRlL3VubXV0ZSBhdWRpbyBieSBjbGlja2luZyB0aGUgYXVkaW8gb3V0cHV0IGljb24gbmV4dCB0byB0aGUgdm9sdW1lIHNsaWRlci4gVGhpcyBleHRlbnNpb24gdXNlcyBtdXRlL3VubXV0ZSBBUEkgaW4gb3JkZXIgdG8gcmVzdG9yZSBwcmV2aW91cyB2b2x1bWUgbGV2ZWwgYWZ0ZXIgdW5tdXRpbmcuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJNQ2FzdGFsZG8iCiAgfSwKICAibmFtZSI6ICJNdXRlL1VubXV0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWhwbGVkL211dGUtdW5tdXRlIiwKICAidXVpZCI6ICJtdXRlLXVubXV0ZUBtY2FzdC5nbm9tZXh0LmNvbSIsCiAgInZlcnNpb24iOiAxOAp9"},
+    "46": {"version": "18", "sha256": "1yx5pnx2pryhzvly3d4yxcamdj69z2dzdw54dq1jszw9yr611kz1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFsbG93cyBtdXRpbmcvdW5tdXRpbmcgYXVkaW8gYnkgbWlkZGxlLWNsaWNraW5nIHRoZSBzcGVha2VyIGljb24gb24gdGhlIG1lbnUgYmFyLiBJdCBhbHNvIHBvcnRzIG9uIEdub21lIDQzIGFuZCBwcmV2aW91cyB2ZXJzaW9ucyB0aGUgc2FtZSBiZWhhdmlvdXIgb2YgR25vbWUgNDQgYW5kIGxhdGVyIHZlcnNpb25zOiBtdXRlL3VubXV0ZSBhdWRpbyBieSBjbGlja2luZyB0aGUgYXVkaW8gb3V0cHV0IGljb24gbmV4dCB0byB0aGUgdm9sdW1lIHNsaWRlci4gVGhpcyBleHRlbnNpb24gdXNlcyBtdXRlL3VubXV0ZSBBUEkgaW4gb3JkZXIgdG8gcmVzdG9yZSBwcmV2aW91cyB2b2x1bWUgbGV2ZWwgYWZ0ZXIgdW5tdXRpbmcuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJNQ2FzdGFsZG8iCiAgfSwKICAibmFtZSI6ICJNdXRlL1VubXV0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWhwbGVkL211dGUtdW5tdXRlIiwKICAidXVpZCI6ICJtdXRlLXVubXV0ZUBtY2FzdC5nbm9tZXh0LmNvbSIsCiAgInZlcnNpb24iOiAxOAp9"}
   }}
 , {"uuid": "space-bar@luchrioh", "name": "Space Bar", "pname": "space-bar", "description": "Replaces the top-panel workspace indicator with an i3-like workspaces bar.\n\nOriginally a fork of the extension Workspaces Bar by fthx, this extension grew into a more comprehensive set of features to support a workspace-based workflow.\n\nFeatures:\n-   First class support for static and dynamic workspaces as well as multi-monitor setups\n-   Add, remove, and rename workspaces\n-   Rearrange workspaces via drag and drop\n-   Automatically assign workspace names based on started applications\n-   Keyboard shortcuts extend and refine system shortcuts\n-   Scroll through workspaces by mouse wheel over the panel\n-   Customize the appearance", "link": "https://extensions.gnome.org/extension/5090/space-bar/", "shell_version_map": {
     "42": {"version": "22", "sha256": "16bsn3mpd66p3p7yz56zr0ghglj8y8cmlrvn8q8fdvvrj2srkjvf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSAnQWN0aXZpdGllcycgYnV0dG9uIHdpdGggYW4gaTMtbGlrZSB3b3Jrc3BhY2VzIGJhci5cblxuT3JpZ2luYWxseSBhIGZvcmsgb2YgdGhlIGV4dGVuc2lvbiBXb3Jrc3BhY2VzIEJhciBieSBmdGh4LCB0aGlzIGV4dGVuc2lvbiBncmV3IGludG8gYSBtb3JlIGNvbXByZWhlbnNpdmUgc2V0IG9mIGZlYXR1cmVzIHRvIHN1cHBvcnQgYSB3b3Jrc3BhY2UtYmFzZWQgd29ya2Zsb3cuXG5cbkZlYXR1cmVzOlxuLSAgIEZpcnN0IGNsYXNzIHN1cHBvcnQgZm9yIHN0YXRpYyBhbmQgZHluYW1pYyB3b3Jrc3BhY2VzIGFzIHdlbGwgYXMgbXVsdGktbW9uaXRvciBzZXR1cHNcbi0gICBBZGQsIHJlbW92ZSwgYW5kIHJlbmFtZSB3b3Jrc3BhY2VzXG4tICAgUmVhcnJhbmdlIHdvcmtzcGFjZXMgdmlhIGRyYWcgYW5kIGRyb3Bcbi0gICBBdXRvbWF0aWNhbGx5IGFzc2lnbiB3b3Jrc3BhY2UgbmFtZXMgYmFzZWQgb24gc3RhcnRlZCBhcHBsaWNhdGlvbnNcbi0gICBLZXlib2FyZCBzaG9ydGN1dHMgZXh0ZW5kIGFuZCByZWZpbmUgc3lzdGVtIHNob3J0Y3V0c1xuLSAgIFNjcm9sbCB0aHJvdWdoIHdvcmtzcGFjZXMgYnkgbW91c2Ugd2hlZWwgb3ZlciB0aGUgcGFuZWxcbi0gICBDdXN0b21pemUgdGhlIGFwcGVhcmFuY2UiLAogICJuYW1lIjogIlNwYWNlIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zcGFjZS1iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RvcGhlci1sL3NwYWNlLWJhciIsCiAgInV1aWQiOiAic3BhY2UtYmFyQGx1Y2hyaW9oIiwKICAidmVyc2lvbiI6IDIyCn0="},
     "43": {"version": "22", "sha256": "16bsn3mpd66p3p7yz56zr0ghglj8y8cmlrvn8q8fdvvrj2srkjvf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSAnQWN0aXZpdGllcycgYnV0dG9uIHdpdGggYW4gaTMtbGlrZSB3b3Jrc3BhY2VzIGJhci5cblxuT3JpZ2luYWxseSBhIGZvcmsgb2YgdGhlIGV4dGVuc2lvbiBXb3Jrc3BhY2VzIEJhciBieSBmdGh4LCB0aGlzIGV4dGVuc2lvbiBncmV3IGludG8gYSBtb3JlIGNvbXByZWhlbnNpdmUgc2V0IG9mIGZlYXR1cmVzIHRvIHN1cHBvcnQgYSB3b3Jrc3BhY2UtYmFzZWQgd29ya2Zsb3cuXG5cbkZlYXR1cmVzOlxuLSAgIEZpcnN0IGNsYXNzIHN1cHBvcnQgZm9yIHN0YXRpYyBhbmQgZHluYW1pYyB3b3Jrc3BhY2VzIGFzIHdlbGwgYXMgbXVsdGktbW9uaXRvciBzZXR1cHNcbi0gICBBZGQsIHJlbW92ZSwgYW5kIHJlbmFtZSB3b3Jrc3BhY2VzXG4tICAgUmVhcnJhbmdlIHdvcmtzcGFjZXMgdmlhIGRyYWcgYW5kIGRyb3Bcbi0gICBBdXRvbWF0aWNhbGx5IGFzc2lnbiB3b3Jrc3BhY2UgbmFtZXMgYmFzZWQgb24gc3RhcnRlZCBhcHBsaWNhdGlvbnNcbi0gICBLZXlib2FyZCBzaG9ydGN1dHMgZXh0ZW5kIGFuZCByZWZpbmUgc3lzdGVtIHNob3J0Y3V0c1xuLSAgIFNjcm9sbCB0aHJvdWdoIHdvcmtzcGFjZXMgYnkgbW91c2Ugd2hlZWwgb3ZlciB0aGUgcGFuZWxcbi0gICBDdXN0b21pemUgdGhlIGFwcGVhcmFuY2UiLAogICJuYW1lIjogIlNwYWNlIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zcGFjZS1iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RvcGhlci1sL3NwYWNlLWJhciIsCiAgInV1aWQiOiAic3BhY2UtYmFyQGx1Y2hyaW9oIiwKICAidmVyc2lvbiI6IDIyCn0="},
     "44": {"version": "22", "sha256": "16bsn3mpd66p3p7yz56zr0ghglj8y8cmlrvn8q8fdvvrj2srkjvf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSAnQWN0aXZpdGllcycgYnV0dG9uIHdpdGggYW4gaTMtbGlrZSB3b3Jrc3BhY2VzIGJhci5cblxuT3JpZ2luYWxseSBhIGZvcmsgb2YgdGhlIGV4dGVuc2lvbiBXb3Jrc3BhY2VzIEJhciBieSBmdGh4LCB0aGlzIGV4dGVuc2lvbiBncmV3IGludG8gYSBtb3JlIGNvbXByZWhlbnNpdmUgc2V0IG9mIGZlYXR1cmVzIHRvIHN1cHBvcnQgYSB3b3Jrc3BhY2UtYmFzZWQgd29ya2Zsb3cuXG5cbkZlYXR1cmVzOlxuLSAgIEZpcnN0IGNsYXNzIHN1cHBvcnQgZm9yIHN0YXRpYyBhbmQgZHluYW1pYyB3b3Jrc3BhY2VzIGFzIHdlbGwgYXMgbXVsdGktbW9uaXRvciBzZXR1cHNcbi0gICBBZGQsIHJlbW92ZSwgYW5kIHJlbmFtZSB3b3Jrc3BhY2VzXG4tICAgUmVhcnJhbmdlIHdvcmtzcGFjZXMgdmlhIGRyYWcgYW5kIGRyb3Bcbi0gICBBdXRvbWF0aWNhbGx5IGFzc2lnbiB3b3Jrc3BhY2UgbmFtZXMgYmFzZWQgb24gc3RhcnRlZCBhcHBsaWNhdGlvbnNcbi0gICBLZXlib2FyZCBzaG9ydGN1dHMgZXh0ZW5kIGFuZCByZWZpbmUgc3lzdGVtIHNob3J0Y3V0c1xuLSAgIFNjcm9sbCB0aHJvdWdoIHdvcmtzcGFjZXMgYnkgbW91c2Ugd2hlZWwgb3ZlciB0aGUgcGFuZWxcbi0gICBDdXN0b21pemUgdGhlIGFwcGVhcmFuY2UiLAogICJuYW1lIjogIlNwYWNlIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zcGFjZS1iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RvcGhlci1sL3NwYWNlLWJhciIsCiAgInV1aWQiOiAic3BhY2UtYmFyQGx1Y2hyaW9oIiwKICAidmVyc2lvbiI6IDIyCn0="},
-    "45": {"version": "24", "sha256": "1xmcp6292vadgwn90j4c21gid8vzq1s5h1lvspr4a78b2bb73q93", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSB0b3AtcGFuZWwgd29ya3NwYWNlIGluZGljYXRvciB3aXRoIGFuIGkzLWxpa2Ugd29ya3NwYWNlcyBiYXIuXG5cbk9yaWdpbmFsbHkgYSBmb3JrIG9mIHRoZSBleHRlbnNpb24gV29ya3NwYWNlcyBCYXIgYnkgZnRoeCwgdGhpcyBleHRlbnNpb24gZ3JldyBpbnRvIGEgbW9yZSBjb21wcmVoZW5zaXZlIHNldCBvZiBmZWF0dXJlcyB0byBzdXBwb3J0IGEgd29ya3NwYWNlLWJhc2VkIHdvcmtmbG93LlxuXG5GZWF0dXJlczpcbi0gICBGaXJzdCBjbGFzcyBzdXBwb3J0IGZvciBzdGF0aWMgYW5kIGR5bmFtaWMgd29ya3NwYWNlcyBhcyB3ZWxsIGFzIG11bHRpLW1vbml0b3Igc2V0dXBzXG4tICAgQWRkLCByZW1vdmUsIGFuZCByZW5hbWUgd29ya3NwYWNlc1xuLSAgIFJlYXJyYW5nZSB3b3Jrc3BhY2VzIHZpYSBkcmFnIGFuZCBkcm9wXG4tICAgQXV0b21hdGljYWxseSBhc3NpZ24gd29ya3NwYWNlIG5hbWVzIGJhc2VkIG9uIHN0YXJ0ZWQgYXBwbGljYXRpb25zXG4tICAgS2V5Ym9hcmQgc2hvcnRjdXRzIGV4dGVuZCBhbmQgcmVmaW5lIHN5c3RlbSBzaG9ydGN1dHNcbi0gICBTY3JvbGwgdGhyb3VnaCB3b3Jrc3BhY2VzIGJ5IG1vdXNlIHdoZWVsIG92ZXIgdGhlIHBhbmVsXG4tICAgQ3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIiwKICAibmFtZSI6ICJTcGFjZSBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BhY2UtYmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdG9waGVyLWwvc3BhY2UtYmFyIiwKICAidXVpZCI6ICJzcGFjZS1iYXJAbHVjaHJpb2giLAogICJ2ZXJzaW9uIjogMjQKfQ=="}
+    "45": {"version": "24", "sha256": "1xmcp6292vadgwn90j4c21gid8vzq1s5h1lvspr4a78b2bb73q93", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSB0b3AtcGFuZWwgd29ya3NwYWNlIGluZGljYXRvciB3aXRoIGFuIGkzLWxpa2Ugd29ya3NwYWNlcyBiYXIuXG5cbk9yaWdpbmFsbHkgYSBmb3JrIG9mIHRoZSBleHRlbnNpb24gV29ya3NwYWNlcyBCYXIgYnkgZnRoeCwgdGhpcyBleHRlbnNpb24gZ3JldyBpbnRvIGEgbW9yZSBjb21wcmVoZW5zaXZlIHNldCBvZiBmZWF0dXJlcyB0byBzdXBwb3J0IGEgd29ya3NwYWNlLWJhc2VkIHdvcmtmbG93LlxuXG5GZWF0dXJlczpcbi0gICBGaXJzdCBjbGFzcyBzdXBwb3J0IGZvciBzdGF0aWMgYW5kIGR5bmFtaWMgd29ya3NwYWNlcyBhcyB3ZWxsIGFzIG11bHRpLW1vbml0b3Igc2V0dXBzXG4tICAgQWRkLCByZW1vdmUsIGFuZCByZW5hbWUgd29ya3NwYWNlc1xuLSAgIFJlYXJyYW5nZSB3b3Jrc3BhY2VzIHZpYSBkcmFnIGFuZCBkcm9wXG4tICAgQXV0b21hdGljYWxseSBhc3NpZ24gd29ya3NwYWNlIG5hbWVzIGJhc2VkIG9uIHN0YXJ0ZWQgYXBwbGljYXRpb25zXG4tICAgS2V5Ym9hcmQgc2hvcnRjdXRzIGV4dGVuZCBhbmQgcmVmaW5lIHN5c3RlbSBzaG9ydGN1dHNcbi0gICBTY3JvbGwgdGhyb3VnaCB3b3Jrc3BhY2VzIGJ5IG1vdXNlIHdoZWVsIG92ZXIgdGhlIHBhbmVsXG4tICAgQ3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIiwKICAibmFtZSI6ICJTcGFjZSBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BhY2UtYmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdG9waGVyLWwvc3BhY2UtYmFyIiwKICAidXVpZCI6ICJzcGFjZS1iYXJAbHVjaHJpb2giLAogICJ2ZXJzaW9uIjogMjQKfQ=="},
+    "46": {"version": "25", "sha256": "03gh9r9nakdc8zdmdhn0dq8c46qfi0hhmbnf1wj0r0dr3csp8v1f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2VzIHRoZSB0b3AtcGFuZWwgd29ya3NwYWNlIGluZGljYXRvciB3aXRoIGFuIGkzLWxpa2Ugd29ya3NwYWNlcyBiYXIuXG5cbk9yaWdpbmFsbHkgYSBmb3JrIG9mIHRoZSBleHRlbnNpb24gV29ya3NwYWNlcyBCYXIgYnkgZnRoeCwgdGhpcyBleHRlbnNpb24gZ3JldyBpbnRvIGEgbW9yZSBjb21wcmVoZW5zaXZlIHNldCBvZiBmZWF0dXJlcyB0byBzdXBwb3J0IGEgd29ya3NwYWNlLWJhc2VkIHdvcmtmbG93LlxuXG5GZWF0dXJlczpcbi0gICBGaXJzdCBjbGFzcyBzdXBwb3J0IGZvciBzdGF0aWMgYW5kIGR5bmFtaWMgd29ya3NwYWNlcyBhcyB3ZWxsIGFzIG11bHRpLW1vbml0b3Igc2V0dXBzXG4tICAgQWRkLCByZW1vdmUsIGFuZCByZW5hbWUgd29ya3NwYWNlc1xuLSAgIFJlYXJyYW5nZSB3b3Jrc3BhY2VzIHZpYSBkcmFnIGFuZCBkcm9wXG4tICAgQXV0b21hdGljYWxseSBhc3NpZ24gd29ya3NwYWNlIG5hbWVzIGJhc2VkIG9uIHN0YXJ0ZWQgYXBwbGljYXRpb25zXG4tICAgS2V5Ym9hcmQgc2hvcnRjdXRzIGV4dGVuZCBhbmQgcmVmaW5lIHN5c3RlbSBzaG9ydGN1dHNcbi0gICBTY3JvbGwgdGhyb3VnaCB3b3Jrc3BhY2VzIGJ5IG1vdXNlIHdoZWVsIG92ZXIgdGhlIHBhbmVsXG4tICAgQ3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIiwKICAibmFtZSI6ICJTcGFjZSBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3BhY2UtYmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdG9waGVyLWwvc3BhY2UtYmFyIiwKICAidXVpZCI6ICJzcGFjZS1iYXJAbHVjaHJpb2giLAogICJ2ZXJzaW9uIjogMjUKfQ=="}
   }}
 , {"uuid": "gnome-shellext-hide-lock@adyrosebrigg", "name": "Hide Lock item in System Menu", "pname": "hide-lock-item-in-system-menu", "description": "Hides the \"Lock\" option from the system menu dropdown in the top right.", "link": "https://extensions.gnome.org/extension/5091/hide-lock-item-in-system-menu/", "shell_version_map": {
     "42": {"version": "2", "sha256": "0ab3yc5z9yhvp21145cfgh88sby4x464argy12c80anyhf55zm79", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGVzIHRoZSBcIkxvY2tcIiBvcHRpb24gZnJvbSB0aGUgc3lzdGVtIG1lbnUgZHJvcGRvd24gaW4gdGhlIHRvcCByaWdodC4iLAogICJuYW1lIjogIkhpZGUgTG9jayBpdGVtIGluIFN5c3RlbSBNZW51IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FkeXJvc2VicmlnZy9nbm9tZS1zaGVsbGV4dC1oaWRlLWxvY2siLAogICJ1dWlkIjogImdub21lLXNoZWxsZXh0LWhpZGUtbG9ja0BhZHlyb3NlYnJpZ2ciLAogICJ2ZXJzaW9uIjogMgp9"}
@@ -4874,13 +5055,15 @@
     "42": {"version": "21", "sha256": "06hfl07q9v6r6igys09c2bk7r1jdv588nl6m1br382fl8b6g5bgg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGFjY2VzcyB0byBEb2NrZXIgYW5kIERvY2tlciBDb21wb3NlLiIsCiAgIm5hbWUiOiAiRG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc3RpY2ttYW5fMHgwMC9nbm9tZV9zaGVsbF9leHRlbnNpb25fZG9ja2VyIiwKICAidXVpZCI6ICJkb2NrZXJAc3RpY2ttYW5fMHgwMC5jb20iLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
     "43": {"version": "21", "sha256": "06hfl07q9v6r6igys09c2bk7r1jdv588nl6m1br382fl8b6g5bgg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGFjY2VzcyB0byBEb2NrZXIgYW5kIERvY2tlciBDb21wb3NlLiIsCiAgIm5hbWUiOiAiRG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc3RpY2ttYW5fMHgwMC9nbm9tZV9zaGVsbF9leHRlbnNpb25fZG9ja2VyIiwKICAidXVpZCI6ICJkb2NrZXJAc3RpY2ttYW5fMHgwMC5jb20iLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
     "44": {"version": "21", "sha256": "06hfl07q9v6r6igys09c2bk7r1jdv588nl6m1br382fl8b6g5bgg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGFjY2VzcyB0byBEb2NrZXIgYW5kIERvY2tlciBDb21wb3NlLiIsCiAgIm5hbWUiOiAiRG9ja2VyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc3RpY2ttYW5fMHgwMC9nbm9tZV9zaGVsbF9leHRlbnNpb25fZG9ja2VyIiwKICAidXVpZCI6ICJkb2NrZXJAc3RpY2ttYW5fMHgwMC5jb20iLAogICJ2ZXJzaW9uIjogMjEKfQ=="},
-    "45": {"version": "31", "sha256": "02vkhxs5nm0jap716gbqzyyznmldy87lfgbn512x448y5h8v9fgd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGFjY2VzcyB0byBEb2NrZXIgYW5kIERvY2tlciBDb21wb3NlLiIsCiAgImdldHRleHQtZG9tYWluIjogImRvY2tlckBzdGlja21hbl8weDAwLmNvbSIsCiAgIm5hbWUiOiAiRG9ja2VyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRvY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc3RpY2ttYW5fMHgwMC9nbm9tZV9zaGVsbF9leHRlbnNpb25fZG9ja2VyIiwKICAidXVpZCI6ICJkb2NrZXJAc3RpY2ttYW5fMHgwMC5jb20iLAogICJ2ZXJzaW9uIjogMzEKfQ=="}
+    "45": {"version": "31", "sha256": "02vkhxs5nm0jap716gbqzyyznmldy87lfgbn512x448y5h8v9fgd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGFjY2VzcyB0byBEb2NrZXIgYW5kIERvY2tlciBDb21wb3NlLiIsCiAgImdldHRleHQtZG9tYWluIjogImRvY2tlckBzdGlja21hbl8weDAwLmNvbSIsCiAgIm5hbWUiOiAiRG9ja2VyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRvY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc3RpY2ttYW5fMHgwMC9nbm9tZV9zaGVsbF9leHRlbnNpb25fZG9ja2VyIiwKICAidXVpZCI6ICJkb2NrZXJAc3RpY2ttYW5fMHgwMC5jb20iLAogICJ2ZXJzaW9uIjogMzEKfQ=="},
+    "46": {"version": "31", "sha256": "02vkhxs5nm0jap716gbqzyyznmldy87lfgbn512x448y5h8v9fgd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGFjY2VzcyB0byBEb2NrZXIgYW5kIERvY2tlciBDb21wb3NlLiIsCiAgImdldHRleHQtZG9tYWluIjogImRvY2tlckBzdGlja21hbl8weDAwLmNvbSIsCiAgIm5hbWUiOiAiRG9ja2VyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRvY2tlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc3RpY2ttYW5fMHgwMC9nbm9tZV9zaGVsbF9leHRlbnNpb25fZG9ja2VyIiwKICAidXVpZCI6ICJkb2NrZXJAc3RpY2ttYW5fMHgwMC5jb20iLAogICJ2ZXJzaW9uIjogMzEKfQ=="}
   }}
 , {"uuid": "reboottouefi@ubaygd.com", "name": "RebootToUEFI", "pname": "reboottouefi", "description": "Reboot system into UEFI", "link": "https://extensions.gnome.org/extension/5105/reboottouefi/", "shell_version_map": {
     "42": {"version": "14", "sha256": "1yqp2hhmcymzjyq3shwh1cld423iah9s8s3caqmjrln7vjh4syrw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBzeXN0ZW0gaW50byBVRUZJIiwKICAibGljZW5zZSI6ICJHUEx2MyIsCiAgIm5hbWUiOiAiUmVib290VG9VRUZJIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVWJheUdEL3JlYm9vdHRvdWVmaSIsCiAgInV1aWQiOiAicmVib290dG91ZWZpQHViYXlnZC5jb20iLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
     "43": {"version": "14", "sha256": "1yqp2hhmcymzjyq3shwh1cld423iah9s8s3caqmjrln7vjh4syrw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBzeXN0ZW0gaW50byBVRUZJIiwKICAibGljZW5zZSI6ICJHUEx2MyIsCiAgIm5hbWUiOiAiUmVib290VG9VRUZJIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVWJheUdEL3JlYm9vdHRvdWVmaSIsCiAgInV1aWQiOiAicmVib290dG91ZWZpQHViYXlnZC5jb20iLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
     "44": {"version": "14", "sha256": "1yqp2hhmcymzjyq3shwh1cld423iah9s8s3caqmjrln7vjh4syrw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBzeXN0ZW0gaW50byBVRUZJIiwKICAibGljZW5zZSI6ICJHUEx2MyIsCiAgIm5hbWUiOiAiUmVib290VG9VRUZJIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVWJheUdEL3JlYm9vdHRvdWVmaSIsCiAgInV1aWQiOiAicmVib290dG91ZWZpQHViYXlnZC5jb20iLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
-    "45": {"version": "17", "sha256": "0dmdnxbb7wjhks12gvpx49d7xj5574mk3mnhysgr2cjc2s9fcf4b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBzeXN0ZW0gaW50byBVRUZJIiwKICAiZ2V0dGV4dC1kb21haW4iOiAicmVib290dG91ZWZpQHViYXlnZC5jb20iLAogICJsaWNlbnNlIjogIkdQTHYzIiwKICAibmFtZSI6ICJSZWJvb3RUb1VFRkkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vVWJheUdEL3JlYm9vdHRvdWVmaSIsCiAgInV1aWQiOiAicmVib290dG91ZWZpQHViYXlnZC5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="}
+    "45": {"version": "20", "sha256": "0rxxhqqnwnbnrvivv2ink3vm2f8c9139mbjpn7gn0rmvqaggyi0m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBzeXN0ZW0gaW50byBVRUZJIiwKICAiZ2V0dGV4dC1kb21haW4iOiAicmVib290dG91ZWZpQHViYXlnZC5jb20iLAogICJsaWNlbnNlIjogIkdQTHYzIiwKICAibmFtZSI6ICJSZWJvb3RUb1VFRkkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ViYXlHRC9yZWJvb3R0b3VlZmkiLAogICJ1dWlkIjogInJlYm9vdHRvdWVmaUB1YmF5Z2QuY29tIiwKICAidmVyc2lvbiI6IDIwCn0="},
+    "46": {"version": "20", "sha256": "0rxxhqqnwnbnrvivv2ink3vm2f8c9139mbjpn7gn0rmvqaggyi0m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBzeXN0ZW0gaW50byBVRUZJIiwKICAiZ2V0dGV4dC1kb21haW4iOiAicmVib290dG91ZWZpQHViYXlnZC5jb20iLAogICJsaWNlbnNlIjogIkdQTHYzIiwKICAibmFtZSI6ICJSZWJvb3RUb1VFRkkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1ViYXlHRC9yZWJvb3R0b3VlZmkiLAogICJ1dWlkIjogInJlYm9vdHRvdWVmaUB1YmF5Z2QuY29tIiwKICAidmVyc2lvbiI6IDIwCn0="}
   }}
 , {"uuid": "touch-ux@dblandford.com", "name": "Touch-UX", "pname": "touch-ux", "description": "Provides a swipe up gesture bar and a status bar shortcut to force the on screen keyboard to show in scenarios that it does not automatically show when expected.", "link": "https://extensions.gnome.org/extension/5108/touch-ux/", "shell_version_map": {
     "42": {"version": "3", "sha256": "1vjchsz0jml0qaj2mz0khsagacxz1m60ypcjnymh3swrx9lj765m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGEgc3dpcGUgdXAgZ2VzdHVyZSBiYXIgYW5kIGEgc3RhdHVzIGJhciBzaG9ydGN1dCB0byBmb3JjZSB0aGUgb24gc2NyZWVuIGtleWJvYXJkIHRvIHNob3cgaW4gc2NlbmFyaW9zIHRoYXQgaXQgZG9lcyBub3QgYXV0b21hdGljYWxseSBzaG93IHdoZW4gZXhwZWN0ZWQuIiwKICAibmFtZSI6ICJUb3VjaC1VWCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EYW5pZWwtQmxhbmRmb3JkL1RvdWNoLVVYIiwKICAidXVpZCI6ICJ0b3VjaC11eEBkYmxhbmRmb3JkLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="}
@@ -4889,13 +5072,15 @@
     "42": {"version": "1", "sha256": "14yd0xzgqvqxq1s11pbspqn1y1sqjsdgq2giqkwf8r1n2rn1wc94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2hhbmdlIHRoZSBkaXNwbGF5IHNjYWxpbmcgZmFjdG9yIGZyb20gdGhlIHN5c3RlbSBtZW51LiIsCiAgIm5hbWUiOiAiRGlzcGxheSBTY2FsZSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9rbm9rZWxtYWF0L2Rpc3BsYXktc2NhbGUtc3dpdGNoZXItZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJkaXNwbGF5LXNjYWxlLXN3aXRjaGVyQGtub2tlbG1hYXQuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiAxCn0="},
     "43": {"version": "3", "sha256": "0lkyfzks9l7y784rswadfg831rfqk5jknzzg5pvbjqhyk6v22cc7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2hhbmdlIHRoZSBkaXNwbGF5IHNjYWxpbmcgZmFjdG9yIGZyb20gdGhlIHN5c3RlbSBtZW51LiIsCiAgIm5hbWUiOiAiRGlzcGxheSBTY2FsZSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9rbm9rZWxtYWF0L2Rpc3BsYXktc2NhbGUtc3dpdGNoZXItZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJkaXNwbGF5LXNjYWxlLXN3aXRjaGVyQGtub2tlbG1hYXQuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="},
     "44": {"version": "4", "sha256": "0psqqzb033nb3d296r42cxhgz5a1z7x2kr058nn71lk2x0vd26k5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2hhbmdlIHRoZSBkaXNwbGF5IHNjYWxpbmcgZmFjdG9yIGZyb20gdGhlIHN5c3RlbSBtZW51LiIsCiAgIm5hbWUiOiAiRGlzcGxheSBTY2FsZSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9rbm9rZWxtYWF0L2Rpc3BsYXktc2NhbGUtc3dpdGNoZXItZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJkaXNwbGF5LXNjYWxlLXN3aXRjaGVyQGtub2tlbG1hYXQuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
-    "45": {"version": "6", "sha256": "09gaividimnbgpgmi6k2a47jzhmpggn0bsvvsq6fhk43mmbpqfp3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2hhbmdlIHRoZSBkaXNwbGF5IHNjYWxpbmcgZmFjdG9yIGZyb20gdGhlIHN5c3RlbSBtZW51LiIsCiAgIm5hbWUiOiAiRGlzcGxheSBTY2FsZSBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kaXNwbGF5LXNjYWxlLXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2tub2tlbG1hYXQvZGlzcGxheS1zY2FsZS1zd2l0Y2hlci1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImRpc3BsYXktc2NhbGUtc3dpdGNoZXJAa25va2VsbWFhdC5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="}
+    "45": {"version": "6", "sha256": "09gaividimnbgpgmi6k2a47jzhmpggn0bsvvsq6fhk43mmbpqfp3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2hhbmdlIHRoZSBkaXNwbGF5IHNjYWxpbmcgZmFjdG9yIGZyb20gdGhlIHN5c3RlbSBtZW51LiIsCiAgIm5hbWUiOiAiRGlzcGxheSBTY2FsZSBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kaXNwbGF5LXNjYWxlLXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2tub2tlbG1hYXQvZGlzcGxheS1zY2FsZS1zd2l0Y2hlci1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImRpc3BsYXktc2NhbGUtc3dpdGNoZXJAa25va2VsbWFhdC5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
+    "46": {"version": "7", "sha256": "12r93ax9djhxfjkv0w60f65i0d4rmndqj604fbyq621j8nk92yd7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2hhbmdlIHRoZSBkaXNwbGF5IHNjYWxpbmcgZmFjdG9yIGZyb20gdGhlIHN5c3RlbSBtZW51LiIsCiAgIm5hbWUiOiAiRGlzcGxheSBTY2FsZSBTd2l0Y2hlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kaXNwbGF5LXNjYWxlLXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2tub2tlbG1hYXQvZGlzcGxheS1zY2FsZS1zd2l0Y2hlci1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImRpc3BsYXktc2NhbGUtc3dpdGNoZXJAa25va2VsbWFhdC5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="}
   }}
 , {"uuid": "tailscale-status@maxgallup.github.com", "name": "Tailscale Status", "pname": "tailscale-status", "description": "Manage Tailscale connections and check status from desktop read more at https://github.com/maxgallup/tailscale-status/blob/main/README.md", "link": "https://extensions.gnome.org/extension/5112/tailscale-status/", "shell_version_map": {
     "42": {"version": "32", "sha256": "1gma0x3mwyz5hdqhabk1f9x3b05ialmlxfgwjismih8b13gw2kcb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBUYWlsc2NhbGUgY29ubmVjdGlvbnMgYW5kIGNoZWNrIHN0YXR1cyBmcm9tIGRlc2t0b3AgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhnYWxsdXAvdGFpbHNjYWxlLXN0YXR1cy9ibG9iL21haW4vUkVBRE1FLm1kIiwKICAibmFtZSI6ICJUYWlsc2NhbGUgU3RhdHVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWF4Z2FsbHVwL3RhaWxzY2FsZS1zdGF0dXMiLAogICJ1dWlkIjogInRhaWxzY2FsZS1zdGF0dXNAbWF4Z2FsbHVwLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
     "43": {"version": "32", "sha256": "1gma0x3mwyz5hdqhabk1f9x3b05ialmlxfgwjismih8b13gw2kcb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBUYWlsc2NhbGUgY29ubmVjdGlvbnMgYW5kIGNoZWNrIHN0YXR1cyBmcm9tIGRlc2t0b3AgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhnYWxsdXAvdGFpbHNjYWxlLXN0YXR1cy9ibG9iL21haW4vUkVBRE1FLm1kIiwKICAibmFtZSI6ICJUYWlsc2NhbGUgU3RhdHVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWF4Z2FsbHVwL3RhaWxzY2FsZS1zdGF0dXMiLAogICJ1dWlkIjogInRhaWxzY2FsZS1zdGF0dXNAbWF4Z2FsbHVwLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
     "44": {"version": "32", "sha256": "1gma0x3mwyz5hdqhabk1f9x3b05ialmlxfgwjismih8b13gw2kcb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBUYWlsc2NhbGUgY29ubmVjdGlvbnMgYW5kIGNoZWNrIHN0YXR1cyBmcm9tIGRlc2t0b3AgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhnYWxsdXAvdGFpbHNjYWxlLXN0YXR1cy9ibG9iL21haW4vUkVBRE1FLm1kIiwKICAibmFtZSI6ICJUYWlsc2NhbGUgU3RhdHVzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWF4Z2FsbHVwL3RhaWxzY2FsZS1zdGF0dXMiLAogICJ1dWlkIjogInRhaWxzY2FsZS1zdGF0dXNAbWF4Z2FsbHVwLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzIKfQ=="},
-    "45": {"version": "31", "sha256": "04nyr8inchjip825pyry8afy9y4lp69lx7pf5a6sjz3fzhwxiwfw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBUYWlsc2NhbGUgY29ubmVjdGlvbnMgYW5kIGNoZWNrIHN0YXR1cyBmcm9tIGRlc2t0b3AgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhnYWxsdXAvdGFpbHNjYWxlLXN0YXR1cy9ibG9iL21haW4vUkVBRE1FLm1kIiwKICAibmFtZSI6ICJUYWlsc2NhbGUgU3RhdHVzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhaWxzY2FsZS1zdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWF4Z2FsbHVwL3RhaWxzY2FsZS1zdGF0dXMiLAogICJ1dWlkIjogInRhaWxzY2FsZS1zdGF0dXNAbWF4Z2FsbHVwLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMzEKfQ=="}
+    "45": {"version": "33", "sha256": "04phm7kfzrbn7f303cfpwd434vxszwplhjmzglscy0zg7701facs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBUYWlsc2NhbGUgY29ubmVjdGlvbnMgYW5kIGNoZWNrIHN0YXR1cyBmcm9tIGRlc2t0b3AgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhnYWxsdXAvdGFpbHNjYWxlLXN0YXR1cy9ibG9iL21haW4vUkVBRE1FLm1kIiwKICAibmFtZSI6ICJUYWlsc2NhbGUgU3RhdHVzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhaWxzY2FsZS1zdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21heGdhbGx1cC90YWlsc2NhbGUtc3RhdHVzIiwKICAidXVpZCI6ICJ0YWlsc2NhbGUtc3RhdHVzQG1heGdhbGx1cC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMzCn0="},
+    "46": {"version": "33", "sha256": "04phm7kfzrbn7f303cfpwd434vxszwplhjmzglscy0zg7701facs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hbmFnZSBUYWlsc2NhbGUgY29ubmVjdGlvbnMgYW5kIGNoZWNrIHN0YXR1cyBmcm9tIGRlc2t0b3AgcmVhZCBtb3JlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXhnYWxsdXAvdGFpbHNjYWxlLXN0YXR1cy9ibG9iL21haW4vUkVBRE1FLm1kIiwKICAibmFtZSI6ICJUYWlsc2NhbGUgU3RhdHVzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhaWxzY2FsZS1zdGF0dXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21heGdhbGx1cC90YWlsc2NhbGUtc3RhdHVzIiwKICAidXVpZCI6ICJ0YWlsc2NhbGUtc3RhdHVzQG1heGdhbGx1cC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMzCn0="}
   }}
 , {"uuid": "simple-timer@majortomvr.github.com", "name": "Simple Timer", "pname": "simple-timer", "description": "Simple Timer is a Gnome Shell Extension that adds a Timer to the Panel.", "link": "https://extensions.gnome.org/extension/5115/simple-timer/", "shell_version_map": {
     "41": {"version": "1", "sha256": "1rmrw8nl96jficz5lmrbqxj3bama9a9q165jcz4099150brs5k6c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBUaW1lciBtYWtlcyBpdCBlYXN5IHRvIHNldCB1cCBhIGNvdW50ZG93bi4gV2l0aCBqdXN0IGEgZmV3IGNsaWNrcywgeW91IGNhbiBzdGFydCBhIHRpbWVyIGFuZCBiZSBub3RpZmllZCB3aGVuIGl0IGhhcyBydW4gb3V0LlxuXG5UbyBzZXQgdXAgYSB0aW1lciwgc2ltcGx5IGVudGVyIHRoZSBkZXNpcmVkIHRpbWUgaW4gdGhlIGZvcm1hdCAnMDA6MDA6MDAnIG9yICcwaCAwbSAwcycuIElmIHlvdSB1c2UgdGhlIGZpcnN0IGZvcm1hdCwgdGhlIGRvdWJsZSBwb2ludHMgd2lsbCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5LiIsCiAgIm5hbWUiOiAiU2ltcGxlIFRpbWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MSIsCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYWpvcnRvbVZSL3NpbXBsZS10aW1lci1leHRlbnNpb24iLAogICJ1dWlkIjogInNpbXBsZS10aW1lckBtYWpvcnRvbXZyLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMQp9"},
@@ -4918,11 +5103,12 @@
 , {"uuid": "audio-selector@harald65.simon.gmail.com", "name": "Audio Selector", "pname": "audio-selector", "description": "Select audio output and/or input port", "link": "https://extensions.gnome.org/extension/5135/audio-selector/", "shell_version_map": {
     "42": {"version": "5", "sha256": "00ww12j34fpbrqlxkc6d47s0i542byz6r39yrshyf8xrcs8r7ifm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlbGVjdCBhdWRpbyBvdXRwdXQgYW5kL29yIGlucHV0IHBvcnQiLAogICJuYW1lIjogIkF1ZGlvIFNlbGVjdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hzNjUvR25vbWUtU2hlbGwtRXh0ZW5zaW9uLUF1ZGlvLVNlbGVjdG9yLmdpdCIsCiAgInV1aWQiOiAiYXVkaW8tc2VsZWN0b3JAaGFyYWxkNjUuc2ltb24uZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
-, {"uuid": "dashbar@fthx", "name": "DashBar task bar", "pname": "dashbar", "description": "Task bar. Very light extension. Some limited settings.\n\n Features:\n\n - Hide overview at start-up.\n\n - Scroll on taskbar or activities to change workspace.\n\n - Show apps button.\n\n - GNOME Shell dash items in top bar (left click to toggle or cycle, right click to show app menu, middle click to open new window).\n\n - Drag'n'drop favorites.\n\n - Change 'Places' extension label to an icon.\n\n ----------\n\n Please report any bug only through GitHub, I'm not notified here.", "link": "https://extensions.gnome.org/extension/5143/dashbar/", "shell_version_map": {
+, {"uuid": "dashbar@fthx", "name": "DashBar task bar", "pname": "dashbar", "description": "Task bar. Very light extension. Some settings.\n\n Features:\n\n - Hide overview at start-up.\n\n - Scroll on taskbar or activities to change workspace.\n\n - Show apps button.\n\n - GNOME Shell dash items in top bar (left click to toggle or cycle, right click to show app menu, middle click to open new window).\n\n - Drag'n'drop favorites.\n\n - Change 'Places' extension label to an icon.\n\n ----------\n\n Please report any bug only through GitHub, I'm not notified here.", "link": "https://extensions.gnome.org/extension/5143/dashbar/", "shell_version_map": {
     "42": {"version": "13", "sha256": "0pp6fiza9wq170r95fasb97qw9jxd606q958xxnb9r23zrnsijnh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBWZXJ5IGxpZ2h0IGV4dGVuc2lvbi5cblxuIEZlYXR1cmVzOlxuXG4gLSBIaWRlIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLlxuXG4gLSBTY3JvbGwgb24gdGFza2JhciB0byBjaGFuZ2Ugd29ya3NwYWNlLlxuXG4gLSBTaG93IGFwcHMgYnV0dG9uIChsZWZ0IGNsaWNrIHRvIGVudGVyIG92ZXJ2aWV3LCByaWdodCBjbGljayB0byBzaG93IGFwcHMgb3ZlcnZpZXcpLlxuXG4gLSBHTk9NRSBTaGVsbCBkYXNoIGl0ZW1zIGluIHRvcCBiYXIgKGxlZnQgY2xpY2sgdG8gdG9nZ2xlIG9yIGN5Y2xlLCByaWdodCBjbGljayB0byBzaG93IGFwcCBtZW51LCBtaWRkbGUgY2xpY2sgdG8gb3BlbiBuZXcgd2luZG93KS5cblxuIC0gRHJhZyduJ2Ryb3AgZmF2b3JpdGVzLlxuXG4gLSBSZW1vdmUgJ0FjdGl2aXRpZXMnIGJ1dHRvbi5cblxuIC0gQ2hhbmdlICdQbGFjZXMnIGV4dGVuc2lvbiBsYWJlbCB0byBhbiBpY29uLlxuXG4gTm8gc2V0dGluZ3MuIElmIHlvdSB3YW50IGN1c3RvbWl6YXRpb24gdGhyb3VnaCBwcmVmZXJlbmNlcyBVSSwgcGxlYXNlIGNvbnNpZGVyIEJhQmFyIG9yIERhc2ggdG8gUGFuZWwuXG5cbiAtLS0tLS0tLS0tXG5cbiBQbGVhc2UgcmVwb3J0IGFueSBidWcgb25seSB0aHJvdWdoIEdpdEh1YiwgSSdtIG5vdCBub3RpZmllZCBoZXJlLiIsCiAgIm5hbWUiOiAiRGFzaEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9kYXNoYmFyIiwKICAidXVpZCI6ICJkYXNoYmFyQGZ0aHgiLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "43": {"version": "13", "sha256": "0pp6fiza9wq170r95fasb97qw9jxd606q958xxnb9r23zrnsijnh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBWZXJ5IGxpZ2h0IGV4dGVuc2lvbi5cblxuIEZlYXR1cmVzOlxuXG4gLSBIaWRlIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLlxuXG4gLSBTY3JvbGwgb24gdGFza2JhciB0byBjaGFuZ2Ugd29ya3NwYWNlLlxuXG4gLSBTaG93IGFwcHMgYnV0dG9uIChsZWZ0IGNsaWNrIHRvIGVudGVyIG92ZXJ2aWV3LCByaWdodCBjbGljayB0byBzaG93IGFwcHMgb3ZlcnZpZXcpLlxuXG4gLSBHTk9NRSBTaGVsbCBkYXNoIGl0ZW1zIGluIHRvcCBiYXIgKGxlZnQgY2xpY2sgdG8gdG9nZ2xlIG9yIGN5Y2xlLCByaWdodCBjbGljayB0byBzaG93IGFwcCBtZW51LCBtaWRkbGUgY2xpY2sgdG8gb3BlbiBuZXcgd2luZG93KS5cblxuIC0gRHJhZyduJ2Ryb3AgZmF2b3JpdGVzLlxuXG4gLSBSZW1vdmUgJ0FjdGl2aXRpZXMnIGJ1dHRvbi5cblxuIC0gQ2hhbmdlICdQbGFjZXMnIGV4dGVuc2lvbiBsYWJlbCB0byBhbiBpY29uLlxuXG4gTm8gc2V0dGluZ3MuIElmIHlvdSB3YW50IGN1c3RvbWl6YXRpb24gdGhyb3VnaCBwcmVmZXJlbmNlcyBVSSwgcGxlYXNlIGNvbnNpZGVyIEJhQmFyIG9yIERhc2ggdG8gUGFuZWwuXG5cbiAtLS0tLS0tLS0tXG5cbiBQbGVhc2UgcmVwb3J0IGFueSBidWcgb25seSB0aHJvdWdoIEdpdEh1YiwgSSdtIG5vdCBub3RpZmllZCBoZXJlLiIsCiAgIm5hbWUiOiAiRGFzaEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9kYXNoYmFyIiwKICAidXVpZCI6ICJkYXNoYmFyQGZ0aHgiLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "44": {"version": "14", "sha256": "0d11h4agppa4f2xwz52hjy4s03p712dgivznhk72sywi4p7rz1dj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBWZXJ5IGxpZ2h0IGV4dGVuc2lvbi5cblxuIEZlYXR1cmVzOlxuXG4gLSBIaWRlIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLlxuXG4gLSBTY3JvbGwgb24gdGFza2JhciB0byBjaGFuZ2Ugd29ya3NwYWNlLlxuXG4gLSBTaG93IGFwcHMgYnV0dG9uIChsZWZ0IGNsaWNrIHRvIGVudGVyIG92ZXJ2aWV3LCByaWdodCBjbGljayB0byBzaG93IGFwcHMgb3ZlcnZpZXcpLlxuXG4gLSBHTk9NRSBTaGVsbCBkYXNoIGl0ZW1zIGluIHRvcCBiYXIgKGxlZnQgY2xpY2sgdG8gdG9nZ2xlIG9yIGN5Y2xlLCByaWdodCBjbGljayB0byBzaG93IGFwcCBtZW51LCBtaWRkbGUgY2xpY2sgdG8gb3BlbiBuZXcgd2luZG93KS5cblxuIC0gRHJhZyduJ2Ryb3AgZmF2b3JpdGVzLlxuXG4gLSBSZW1vdmUgJ0FjdGl2aXRpZXMnIGJ1dHRvbi5cblxuIC0gQ2hhbmdlICdQbGFjZXMnIGV4dGVuc2lvbiBsYWJlbCB0byBhbiBpY29uLlxuXG4gTm8gc2V0dGluZ3MuIElmIHlvdSB3YW50IGN1c3RvbWl6YXRpb24gdGhyb3VnaCBwcmVmZXJlbmNlcyBVSSwgcGxlYXNlIGNvbnNpZGVyIEJhQmFyIG9yIERhc2ggdG8gUGFuZWwuXG5cbiAtLS0tLS0tLS0tXG5cbiBQbGVhc2UgcmVwb3J0IGFueSBidWcgb25seSB0aHJvdWdoIEdpdEh1YiwgSSdtIG5vdCBub3RpZmllZCBoZXJlLiIsCiAgIm5hbWUiOiAiRGFzaEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2Rhc2hiYXIiLAogICJ1dWlkIjogImRhc2hiYXJAZnRoeCIsCiAgInZlcnNpb24iOiAxNAp9"},
-    "45": {"version": "23", "sha256": "00p3s5bqqj8g9rjd8pcp059n6gf7hkpka4sfchp9pmlsr90yki5p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBWZXJ5IGxpZ2h0IGV4dGVuc2lvbi4gU29tZSBsaW1pdGVkIHNldHRpbmdzLlxuXG4gRmVhdHVyZXM6XG5cbiAtIEhpZGUgb3ZlcnZpZXcgYXQgc3RhcnQtdXAuXG5cbiAtIFNjcm9sbCBvbiB0YXNrYmFyIG9yIGFjdGl2aXRpZXMgdG8gY2hhbmdlIHdvcmtzcGFjZS5cblxuIC0gU2hvdyBhcHBzIGJ1dHRvbi5cblxuIC0gR05PTUUgU2hlbGwgZGFzaCBpdGVtcyBpbiB0b3AgYmFyIChsZWZ0IGNsaWNrIHRvIHRvZ2dsZSBvciBjeWNsZSwgcmlnaHQgY2xpY2sgdG8gc2hvdyBhcHAgbWVudSwgbWlkZGxlIGNsaWNrIHRvIG9wZW4gbmV3IHdpbmRvdykuXG5cbiAtIERyYWcnbidkcm9wIGZhdm9yaXRlcy5cblxuIC0gQ2hhbmdlICdQbGFjZXMnIGV4dGVuc2lvbiBsYWJlbCB0byBhbiBpY29uLlxuXG4gLS0tLS0tLS0tLVxuXG4gUGxlYXNlIHJlcG9ydCBhbnkgYnVnIG9ubHkgdGhyb3VnaCBHaXRIdWIsIEknbSBub3Qgbm90aWZpZWQgaGVyZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJEYXNoQmFyIHRhc2sgYmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2hiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9kYXNoYmFyIiwKICAidXVpZCI6ICJkYXNoYmFyQGZ0aHgiLAogICJ2ZXJzaW9uIjogMjMKfQ=="}
+    "45": {"version": "23", "sha256": "00p3s5bqqj8g9rjd8pcp059n6gf7hkpka4sfchp9pmlsr90yki5p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBWZXJ5IGxpZ2h0IGV4dGVuc2lvbi4gU29tZSBsaW1pdGVkIHNldHRpbmdzLlxuXG4gRmVhdHVyZXM6XG5cbiAtIEhpZGUgb3ZlcnZpZXcgYXQgc3RhcnQtdXAuXG5cbiAtIFNjcm9sbCBvbiB0YXNrYmFyIG9yIGFjdGl2aXRpZXMgdG8gY2hhbmdlIHdvcmtzcGFjZS5cblxuIC0gU2hvdyBhcHBzIGJ1dHRvbi5cblxuIC0gR05PTUUgU2hlbGwgZGFzaCBpdGVtcyBpbiB0b3AgYmFyIChsZWZ0IGNsaWNrIHRvIHRvZ2dsZSBvciBjeWNsZSwgcmlnaHQgY2xpY2sgdG8gc2hvdyBhcHAgbWVudSwgbWlkZGxlIGNsaWNrIHRvIG9wZW4gbmV3IHdpbmRvdykuXG5cbiAtIERyYWcnbidkcm9wIGZhdm9yaXRlcy5cblxuIC0gQ2hhbmdlICdQbGFjZXMnIGV4dGVuc2lvbiBsYWJlbCB0byBhbiBpY29uLlxuXG4gLS0tLS0tLS0tLVxuXG4gUGxlYXNlIHJlcG9ydCBhbnkgYnVnIG9ubHkgdGhyb3VnaCBHaXRIdWIsIEknbSBub3Qgbm90aWZpZWQgaGVyZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJEYXNoQmFyIHRhc2sgYmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2hiYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9kYXNoYmFyIiwKICAidXVpZCI6ICJkYXNoYmFyQGZ0aHgiLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
+    "46": {"version": "24", "sha256": "1kvmhfnkfcgn0jj9393h3yzj2wgv3d165ai9vcssvpp3i9ssjmb3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBWZXJ5IGxpZ2h0IGV4dGVuc2lvbi4gU29tZSBzZXR0aW5ncy5cblxuIEZlYXR1cmVzOlxuXG4gLSBIaWRlIG92ZXJ2aWV3IGF0IHN0YXJ0LXVwLlxuXG4gLSBTY3JvbGwgb24gdGFza2JhciBvciBhY3Rpdml0aWVzIHRvIGNoYW5nZSB3b3Jrc3BhY2UuXG5cbiAtIFNob3cgYXBwcyBidXR0b24uXG5cbiAtIEdOT01FIFNoZWxsIGRhc2ggaXRlbXMgaW4gdG9wIGJhciAobGVmdCBjbGljayB0byB0b2dnbGUgb3IgY3ljbGUsIHJpZ2h0IGNsaWNrIHRvIHNob3cgYXBwIG1lbnUsIG1pZGRsZSBjbGljayB0byBvcGVuIG5ldyB3aW5kb3cpLlxuXG4gLSBEcmFnJ24nZHJvcCBmYXZvcml0ZXMuXG5cbiAtIENoYW5nZSAnUGxhY2VzJyBleHRlbnNpb24gbGFiZWwgdG8gYW4gaWNvbi5cblxuIC0tLS0tLS0tLS1cblxuIFBsZWFzZSByZXBvcnQgYW55IGJ1ZyBvbmx5IHRocm91Z2ggR2l0SHViLCBJJ20gbm90IG5vdGlmaWVkIGhlcmUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9ucyIsCiAgIm5hbWUiOiAiRGFzaEJhciB0YXNrIGJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5kYXNoYmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvZGFzaGJhciIsCiAgInV1aWQiOiAiZGFzaGJhckBmdGh4IiwKICAidmVyc2lvbiI6IDI0Cn0="}
   }}
 , {"uuid": "extended-screen@free-bots.github.io", "name": "Extended Screen", "pname": "extended-screen", "description": "Enables Gnome's hidden extending screen feature. Available at version 42+.", "link": "https://extensions.gnome.org/extension/5146/extended-screen/", "shell_version_map": {
     "42": {"version": "3", "sha256": "0d9svp0wqawkxvaikj6jhrqjzhs3xc7w6wml57x82036b9krmv6y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgR25vbWUncyBoaWRkZW4gZXh0ZW5kaW5nIHNjcmVlbiBmZWF0dXJlLiBBdmFpbGFibGUgYXQgdmVyc2lvbiA0MisuIiwKICAibmFtZSI6ICJFeHRlbmRlZCBTY3JlZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZyZWUtYm90cy9leHRlbmRlZC1zY3JlZW4iLAogICJ1dWlkIjogImV4dGVuZGVkLXNjcmVlbkBmcmVlLWJvdHMuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDMKfQ=="},
@@ -4934,13 +5120,15 @@
     "42": {"version": "11", "sha256": "099cgy134jh8k8sdm0g5hb5r6hmfm1vw0wlqvq850kp0nza2xpzz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFtIEkgdXNpbmcgV2F5bGFuZCBvciBYMTE/IiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJpbmpjcmlzdGlhbnJvamFzIgogIH0sCiAgIm5hbWUiOiAiV2F5bGFuZCBvciBYMTEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2luamNyaXN0aWFucm9qYXMvd2F5bGFuZG9yeDExIiwKICAidXVpZCI6ICJ3YXlsYW5kb3J4MTFAaW5qY3Jpc3RpYW5yb2phcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
     "43": {"version": "11", "sha256": "099cgy134jh8k8sdm0g5hb5r6hmfm1vw0wlqvq850kp0nza2xpzz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFtIEkgdXNpbmcgV2F5bGFuZCBvciBYMTE/IiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJpbmpjcmlzdGlhbnJvamFzIgogIH0sCiAgIm5hbWUiOiAiV2F5bGFuZCBvciBYMTEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2luamNyaXN0aWFucm9qYXMvd2F5bGFuZG9yeDExIiwKICAidXVpZCI6ICJ3YXlsYW5kb3J4MTFAaW5qY3Jpc3RpYW5yb2phcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
     "44": {"version": "11", "sha256": "099cgy134jh8k8sdm0g5hb5r6hmfm1vw0wlqvq850kp0nza2xpzz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFtIEkgdXNpbmcgV2F5bGFuZCBvciBYMTE/IiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJpbmpjcmlzdGlhbnJvamFzIgogIH0sCiAgIm5hbWUiOiAiV2F5bGFuZCBvciBYMTEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2luamNyaXN0aWFucm9qYXMvd2F5bGFuZG9yeDExIiwKICAidXVpZCI6ICJ3YXlsYW5kb3J4MTFAaW5qY3Jpc3RpYW5yb2phcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDExCn0="},
-    "45": {"version": "13", "sha256": "1x9vnqi7k5prncxax1kr31rx6ai42bw0df1na06y5xv2iri4v8dy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFtIEkgdXNpbmcgV2F5bGFuZCBvciBYMTE/IiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJpbmpjcmlzdGlhbnJvamFzIgogIH0sCiAgIm5hbWUiOiAiV2F5bGFuZCBvciBYMTEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaW5qY3Jpc3RpYW5yb2phcy93YXlsYW5kb3J4MTEiLAogICJ1dWlkIjogIndheWxhbmRvcngxMUBpbmpjcmlzdGlhbnJvamFzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTMKfQ=="}
+    "45": {"version": "14", "sha256": "115m60y12gnycabcvi8ivy94yk4jd92iwvxrpmgq3fcyzy4cz4zc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFtIEkgdXNpbmcgV2F5bGFuZCBvciBYMTE/IiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJpbmpjcmlzdGlhbnJvamFzIgogIH0sCiAgIm5hbWUiOiAiV2F5bGFuZCBvciBYMTEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2luamNyaXN0aWFucm9qYXMvd2F5bGFuZG9yeDExIiwKICAidXVpZCI6ICJ3YXlsYW5kb3J4MTFAaW5qY3Jpc3RpYW5yb2phcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="},
+    "46": {"version": "14", "sha256": "115m60y12gnycabcvi8ivy94yk4jd92iwvxrpmgq3fcyzy4cz4zc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFtIEkgdXNpbmcgV2F5bGFuZCBvciBYMTE/IiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJpbmpjcmlzdGlhbnJvamFzIgogIH0sCiAgIm5hbWUiOiAiV2F5bGFuZCBvciBYMTEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2luamNyaXN0aWFucm9qYXMvd2F5bGFuZG9yeDExIiwKICAidXVpZCI6ICJ3YXlsYW5kb3J4MTFAaW5qY3Jpc3RpYW5yb2phcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="}
   }}
 , {"uuid": "azclock@azclock.gitlab.com", "name": "Desktop Clock", "pname": "desktop-clock", "description": "Add a clock to the desktop!\n\nNote: The clock can be moved to your desired location by dragging it around, however Desktop Icons extension does interfere with this feature. Temporarily turn off Desktop Icons to move the clock.", "link": "https://extensions.gnome.org/extension/5156/desktop-clock/", "shell_version_map": {
     "42": {"version": "7", "sha256": "0ws6q5hdgygqp9x2jrhjklidyvc7miqs4h34fll7d1947scqw6lv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNsb2NrIHRvIHRoZSBkZXNrdG9wISIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF6Y2xvY2siLAogICJuYW1lIjogIkRlc2t0b3AgQ2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXpjbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6Y2xvY2siLAogICJ1dWlkIjogImF6Y2xvY2tAYXpjbG9jay5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
     "43": {"version": "7", "sha256": "0ws6q5hdgygqp9x2jrhjklidyvc7miqs4h34fll7d1947scqw6lv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNsb2NrIHRvIHRoZSBkZXNrdG9wISIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF6Y2xvY2siLAogICJuYW1lIjogIkRlc2t0b3AgQ2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXpjbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6Y2xvY2siLAogICJ1dWlkIjogImF6Y2xvY2tAYXpjbG9jay5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
     "44": {"version": "7", "sha256": "0ws6q5hdgygqp9x2jrhjklidyvc7miqs4h34fll7d1947scqw6lv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNsb2NrIHRvIHRoZSBkZXNrdG9wISIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF6Y2xvY2siLAogICJuYW1lIjogIkRlc2t0b3AgQ2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXpjbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6Y2xvY2siLAogICJ1dWlkIjogImF6Y2xvY2tAYXpjbG9jay5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
-    "45": {"version": "11", "sha256": "1wgzgs9ch93kh1xgb2j8ahbrklkgfwnfg6ridjxbw0hld6znxsqy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNsb2NrIHRvIHRoZSBkZXNrdG9wISIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF6Y2xvY2siLAogICJuYW1lIjogIkRlc2t0b3AgQ2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXpjbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vQW5kcmV3WmFlY2gvYXpjbG9jayIsCiAgInV1aWQiOiAiYXpjbG9ja0BhemNsb2NrLmdpdGxhYi5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
+    "45": {"version": "11", "sha256": "1wgzgs9ch93kh1xgb2j8ahbrklkgfwnfg6ridjxbw0hld6znxsqy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNsb2NrIHRvIHRoZSBkZXNrdG9wISIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF6Y2xvY2siLAogICJuYW1lIjogIkRlc2t0b3AgQ2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXpjbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vQW5kcmV3WmFlY2gvYXpjbG9jayIsCiAgInV1aWQiOiAiYXpjbG9ja0BhemNsb2NrLmdpdGxhYi5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
+    "46": {"version": "11", "sha256": "1wgzgs9ch93kh1xgb2j8ahbrklkgfwnfg6ridjxbw0hld6znxsqy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGNsb2NrIHRvIHRoZSBkZXNrdG9wISIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAiYXphZWNoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF6Y2xvY2siLAogICJuYW1lIjogIkRlc2t0b3AgQ2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXpjbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vQW5kcmV3WmFlY2gvYXpjbG9jayIsCiAgInV1aWQiOiAiYXpjbG9ja0BhemNsb2NrLmdpdGxhYi5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
   }}
 , {"uuid": "since-indicator@atareao.es", "name": "Since Indicator", "pname": "since-indicator", "description": "A simple menubar app for GNOME Shell that tracks how long you've been using your computer uninterruptedly", "link": "https://extensions.gnome.org/extension/5158/since-indicator/", "shell_version_map": {
     "40": {"version": "4", "sha256": "009g178nkrpwhmvwwaamch3mjby03fiby7qvr0d5mp1dfrzsk3c5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImF1dG9yIjogIkxvcmVuem8gQ2FyYm9uZWxsIiwKICAiY29weXJpZ2h0IjogIjIwMjIiLAogICJkZXNjcmlwdGlvbiI6ICJBIHNpbXBsZSBtZW51YmFyIGFwcCBmb3IgR05PTUUgU2hlbGwgdGhhdCB0cmFja3MgaG93IGxvbmcgeW91J3ZlIGJlZW4gdXNpbmcgeW91ciBjb21wdXRlciB1bmludGVycnVwdGVkbHkiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzaW5jZS1pbmRpY2F0b3JAYXRhcmVhby5lcyIsCiAgImljb24iOiAic2luY2UtaW5kaWNhdG9yIiwKICAibmFtZSI6ICJTaW5jZSBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc2luY2UtaW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vd3d3LmF0YXJlYW8uZXMvYXBsaWNhY2lvbi9zaW5jZS1pbmRpY2F0b3IiLAogICJ1dWlkIjogInNpbmNlLWluZGljYXRvckBhdGFyZWFvLmVzIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -4959,19 +5147,23 @@
     "42": {"version": "8", "sha256": "15aw65xryddic62gil18wg2v6wnbr03ccpq5rwrs5vihvp1wh8fl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIGFjY2Vzc2liaWxpdHkgYnV0dG9uIG9uIHRoZSB0b3AgYmFyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicG9wb3Y4OTVhIgogIH0sCiAgIm5hbWUiOiAiTm8gYTExeSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bvdjg5NS9ub2ExMXkiLAogICJ1dWlkIjogIm5vYTExeUBwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "43": {"version": "8", "sha256": "15aw65xryddic62gil18wg2v6wnbr03ccpq5rwrs5vihvp1wh8fl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIGFjY2Vzc2liaWxpdHkgYnV0dG9uIG9uIHRoZSB0b3AgYmFyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicG9wb3Y4OTVhIgogIH0sCiAgIm5hbWUiOiAiTm8gYTExeSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bvdjg5NS9ub2ExMXkiLAogICJ1dWlkIjogIm5vYTExeUBwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "44": {"version": "8", "sha256": "15aw65xryddic62gil18wg2v6wnbr03ccpq5rwrs5vihvp1wh8fl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIGFjY2Vzc2liaWxpdHkgYnV0dG9uIG9uIHRoZSB0b3AgYmFyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicG9wb3Y4OTVhIgogIH0sCiAgIm5hbWUiOiAiTm8gYTExeSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bvdjg5NS9ub2ExMXkiLAogICJ1dWlkIjogIm5vYTExeUBwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "9", "sha256": "0yqnyf86s71hfrplagd42z99xw3w189lxmmz45x28mvk33x1bbdn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIGFjY2Vzc2liaWxpdHkgYnV0dG9uIG9uIHRoZSB0b3AgYmFyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicG9wb3Y4OTVhIgogIH0sCiAgIm5hbWUiOiAiTm8gYTExeSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvbm9hMTF5IiwKICAidXVpZCI6ICJub2ExMXlAcG9wb3Y4OTUudWtyLm5ldCIsCiAgInZlcnNpb24iOiA5Cn0="}
+    "45": {"version": "10", "sha256": "0gs9i278p458ypir0z75vdbl8bm1f4q038vhjrs09q83n00rk448", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIGFjY2Vzc2liaWxpdHkgYnV0dG9uIG9uIHRoZSB0b3AgYmFyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicG9wb3Y4OTVhIgogIH0sCiAgIm5hbWUiOiAiTm8gYTExeSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BvcG92ODk1L25vYTExeSIsCiAgInV1aWQiOiAibm9hMTF5QHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
+    "46": {"version": "10", "sha256": "0gs9i278p458ypir0z75vdbl8bm1f4q038vhjrs09q83n00rk448", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIGFjY2Vzc2liaWxpdHkgYnV0dG9uIG9uIHRoZSB0b3AgYmFyLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicG9wb3Y4OTVhIgogIH0sCiAgIm5hbWUiOiAiTm8gYTExeSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BvcG92ODk1L25vYTExeSIsCiAgInV1aWQiOiAibm9hMTF5QHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogMTAKfQ=="}
   }}
 , {"uuid": "upower-battery@codilia.com", "name": "UPower Battery", "pname": "upower-battery", "description": "UPower Battery Indicator.", "link": "https://extensions.gnome.org/extension/5165/upower-battery/", "shell_version_map": {
     "42": {"version": "10", "sha256": "0ca4nlss4j5rmq8xaqvjxxacdhb1vlmydqp4cal77mgzk79q63nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVQb3dlciBCYXR0ZXJ5IEluZGljYXRvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cG93ZXJfYmF0dGVyeV9pbmRpY2F0b3IiLAogICJuYW1lIjogIlVQb3dlciBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29kaWxpYS91cG93ZXItYmF0dGVyeSIsCiAgInV1aWQiOiAidXBvd2VyLWJhdHRlcnlAY29kaWxpYS5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "43": {"version": "10", "sha256": "0ca4nlss4j5rmq8xaqvjxxacdhb1vlmydqp4cal77mgzk79q63nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVQb3dlciBCYXR0ZXJ5IEluZGljYXRvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cG93ZXJfYmF0dGVyeV9pbmRpY2F0b3IiLAogICJuYW1lIjogIlVQb3dlciBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29kaWxpYS91cG93ZXItYmF0dGVyeSIsCiAgInV1aWQiOiAidXBvd2VyLWJhdHRlcnlAY29kaWxpYS5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "44": {"version": "10", "sha256": "0ca4nlss4j5rmq8xaqvjxxacdhb1vlmydqp4cal77mgzk79q63nk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVQb3dlciBCYXR0ZXJ5IEluZGljYXRvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cG93ZXJfYmF0dGVyeV9pbmRpY2F0b3IiLAogICJuYW1lIjogIlVQb3dlciBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29kaWxpYS91cG93ZXItYmF0dGVyeSIsCiAgInV1aWQiOiAidXBvd2VyLWJhdHRlcnlAY29kaWxpYS5jb20iLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
-    "45": {"version": "15", "sha256": "1zcssp721cj5lal8a6x054qnyx45949vjkkd1disjs09z4p99xpc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVQb3dlciBCYXR0ZXJ5IEluZGljYXRvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cG93ZXJfYmF0dGVyeV9pbmRpY2F0b3IiLAogICJuYW1lIjogIlVQb3dlciBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NvZGlsaWEvdXBvd2VyLWJhdHRlcnkiLAogICJ1dWlkIjogInVwb3dlci1iYXR0ZXJ5QGNvZGlsaWEuY29tIiwKICAidmVyc2lvbiI6IDE1Cn0="}
+    "45": {"version": "16", "sha256": "09hxl6scc3jslfjxl4dsy76fkj8sjb0rhbs4y3d9id6n3gszgqny", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVQb3dlciBCYXR0ZXJ5IEluZGljYXRvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cG93ZXJfYmF0dGVyeV9pbmRpY2F0b3IiLAogICJuYW1lIjogIlVQb3dlciBCYXR0ZXJ5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NvZGlsaWEvdXBvd2VyLWJhdHRlcnkiLAogICJ1dWlkIjogInVwb3dlci1iYXR0ZXJ5QGNvZGlsaWEuY29tIiwKICAidmVyc2lvbiI6IDE2Cn0="}
   }}
-, {"uuid": "vertical-workspaces@G-dH.github.com", "name": "V-Shell (Vertical Workspaces)", "pname": "vertical-workspaces", "description": "Customize your GNOME Shell UX to fit your workflow, whether you like horizontally or vertically stacked workspaces. Originally Vertical Workspaces.\n\nDear users, the reliability and stability of this extension is my priority, but V-Shell is an extension to default GNOME Shell and cannot be compatible with all available extensions. If you encounter any problem, first check for conflicts with other extensions and then open an issue on the Github page linked below.\n\nV-Shell includes many workarounds to survive conflicts and work with Dash to Dock / Ubuntu Dock extensions and other popular extensions, but issues may occur. The patched Dash to Dock for V-Shell is already available in my GitHub repository.\n\nAny feedback is greatly appreciated!\n\nV-Shell features:\n- vertical or horizontal orientation of workspaces\n- customize the overview layout, dimensions and contents\n- alternative overview modes with static workspace preview that reduces unnecessary movement on the screen\n- 4 predefined profiles with different layout and behavior that can be overwritten by your settings\n- wallpaper background with adjustable blur effect in the overview\n- dash icon size, content, icon click and scroll behavior\n- app grid dimensions, icon size, contents and behavior\n- active icons in the folder preview\n- close workspace button on workspace thumbnail\n- main panel position and visibility\n- hot corner/edge position and behavior\n- notifications, OSD and workspace switcher popup position\n- custom window attention handler behavior\n- improved app search provider with custom icon size\n- window search provider for quick navigation between windows\n- recent files search provider\n- extensions search provider\n- static background in the workspace switcher animation outside of the overview\n- independent workspace switching for each monitor (workaround)\n- workspace switcher popup appears even when switching workspace with a gesture\n- workspace isolated Dash\n- fixes (works around) several upstream bugs (known and reported)\n- modular structure of the V-Shell allows you to disable modules that you don't need or conflict with other extension that you like better for the task", "link": "https://extensions.gnome.org/extension/5177/vertical-workspaces/", "shell_version_map": {
+, {"uuid": "vertical-workspaces@G-dH.github.com", "name": "V-Shell (Vertical Workspaces)", "pname": "vertical-workspaces", "description": "Customize your GNOME Shell UX to fit your workflow, whether you like horizontally or vertically stacked workspaces. Originally Vertical Workspaces.\n\nDear users, the reliability and stability of this extension is my priority, but V-Shell is an extension to default GNOME Shell and cannot be compatible with all available extensions. If you encounter any problem, first check for conflicts with other extensions and then open an issue on the Github page linked below.\n\nV-Shell includes many workarounds to survive conflicts and work with Dash to Dock / Ubuntu Dock extensions and other popular extensions, but issues may occur. The patched Dash to Dock for V-Shell is already available in my GitHub repository.\n\nAny feedback is greatly appreciated!\n\nV-Shell features:\n- vertical or horizontal orientation of workspaces\n- customize the overview layout, dimensions and contents\n- alternative overview modes with static workspace preview that reduces unnecessary movement on the screen\n- 4 predefined profiles with different layout and behavior that can be overwritten by your settings\n- wallpaper background with adjustable blur effect in the overview\n- dash icon size, content, icon click and scroll behavior\n- app grid dimensions, icon size, contents and behavior\n- active icons in the folder preview\n- close workspace button on workspace thumbnail\n- main panel position and visibility\n- hot corner/edge position and behavior\n- notifications, OSD and workspace switcher popup position\n- custom window attention handler behavior\n- improved app search provider with custom icon size\n- recent files search provider\n- static background in the workspace switcher animation outside of the overview\n- independent workspace switching for each monitor (workaround)\n- workspace switcher popup appears even when switching workspace with a gesture\n- workspace isolated Dash\n- fixes (works around) several upstream bugs (known and reported)\n- modular structure of the V-Shell allows you to disable modules that you don't need or conflict with other extension that you like better for the task", "link": "https://extensions.gnome.org/extension/5177/vertical-workspaces/", "shell_version_map": {
+    "40": {"version": "23", "sha256": "0dp7qbbcs46w1lc2v46cvhfx7r8h1jrp95mhd8wip8c7npmnr66q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuXG5cbkRlYXIgdXNlcnMsIHRoZSByZWxpYWJpbGl0eSBhbmQgc3RhYmlsaXR5IG9mIHRoaXMgZXh0ZW5zaW9uIGlzIG15IHByaW9yaXR5LCBpZiB5b3UgZW5jb3VudGVyIGFueSBwcm9ibGVtLCBmaXJzdCBjaGVjayBmb3IgY29uZmxpY3RzIHdpdGggb3RoZXIgZXh0ZW5zaW9ucyBhbmQgdGhlbiBvcGVuIGFuIGlzc3VlIG9uIHRoZSBHaXRodWIgcGFnZSBsaW5rZWQgYmVsb3cuXG5cblYtU2hlbGwgaW5jbHVkZXMgbWFueSB3b3JrYXJvdW5kcyB0byBzdXJ2aXZlIGNvbmZsaWN0cyBhbmQgd29yayB3aXRoIERhc2ggdG8gRG9jayAvIFVidW50dSBEb2NrIGV4dGVuc2lvbnMsIGJ1dCBpc3N1ZXMgbWF5IG9jY3VyLiBJbiBhbnkgY2FzZSwgVi1TaGVsbCB3b3JrcyBiZXR0ZXIgd2l0aG91dCBEYXNoIHRvIERvY2suXG5cbkFueSBmZWVkYmFjayBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBidXQgZG9uJ3QgZm9yZ2V0IC0gaWYgeW91IHdhbnQgbWUgdG8gd29yayBmb3IgeW91LCBiZSBuaWNlIDspXG5cblYtU2hlbGwgZmVhdHVyZXM6XG4tIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb3JpZW50YXRpb24gb2Ygd29ya3NwYWNlc1xuLSBjdXN0b21pemUgdGhlIG92ZXJ2aWV3IGxheW91dCwgZGltZW5zaW9ucyBhbmQgY29udGVudHNcbi0gYWx0ZXJuYXRpdmUgb3ZlcnZpZXcgbW9kZXMgd2l0aCBzdGF0aWMgd29ya3NwYWNlIHByZXZpZXcgdGhhdCByZWR1Y2VzIHVubmVjZXNzYXJ5IG1vdmVtZW50IG9uIHRoZSBzY3JlZW5cbi0gd2FsbHBhcGVyIGJhY2tncm91bmQgd2l0aCBhZGp1c3RhYmxlIGJsdXIgZWZmZWN0IGluIHRoZSBvdmVydmlld1xuLSBkYXNoIGljb24gc2l6ZSwgY29udGVudCwgaWNvbiBjbGljayBhbmQgc2Nyb2xsIGJlaGF2aW9yXG4tIGFwcCBncmlkIGRpbWVuc2lvbnMsIGljb25zIHNpemUsIGNvbnRlbnRzIGFuZCBiZWhhdmlvclxuLSBhY3RpdmUgaWNvbnMgaW4gdGhlIGZvbGRlciBwcmV2aWV3XG4tIGNsb3NlIHdvcmtzcGFjZSBidXR0b24gb24gd29ya3NwYWNlIHRodW1ibmFpbFxuLSBtYWluIHBhbmVsIHBvc2l0aW9uIGFuZCB2aXNpYmlsaXR5XG4tIGhvdCBjb3JuZXIvZWRnZSBwb3NpdGlvbiBhbmQgYmVoYXZpb3Jcbi0gbm90aWZpY2F0aW9ucywgT1NEIGFuZCB3b3Jrc3BhY2Ugc3dpdGNoZXIgcG9wdXAgcG9zaXRpb25cbi0gY3VzdG9tIHdpbmRvdyBhdHRlbnRpb24gaGFuZGxlciBiZWhhdmlvclxuLSBpbXByb3ZlZCBhcHAgc2VhcmNoIHByb3ZpZGVyIHdpdGggY3VzdG9tIGljb24gc2l6ZVxuLSB3aW5kb3cgc2VhcmNoIHByb3ZpZGVyIGZvciBxdWljayBuYXZpZ2F0aW9uIGJldHdlZW4gd2luZG93c1xuLSByZWNlbnQgZmlsZXMgc2VhcmNoIHByb3ZpZGVyXG4tIHN0YXRpYyBiYWNrZ3JvdW5kIGluIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoZXIgYW5pbWF0aW9uIG91dHNpZGUgb2YgdGhlIG92ZXJ2aWV3XG4tIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCBhcHBlYXJzIGV2ZW4gd2hlbiBzd2l0Y2hpbmcgd29ya3NwYWNlIHdpdGggYSBnZXN0dXJlXG4tIDQgcHJlZGVmaW5lZCBwcm9maWxlcyB3aXRoIGRpZmZlcmVudCBsYXlvdXQgYW5kIGJlaGF2aW9yIHRoYXQgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IHlvdXIgc2V0dGluZ3Ncbi0gZml4ZXMgKHdvcmtzIGFyb3VuZCkgc2V2ZXJhbCB1cHN0cmVhbSBidWdzIChrbm93biBhbmQgcmVwb3J0ZWQpXG4tIG1vZHVsYXIgc3RydWN0dXJlIG9mIHRoZSBWLVNoZWxsIGFsbG93cyB5b3UgdG8gZGlzYWJsZSBtb2R1bGVzIHRoYXQgeW91IGRvbid0IG5lZWQgb3IgY29uZmxpY3RzIHdpdGggb3RoZXIgZXh0ZW5zaW9uIHRoYXQgeW91IGxpa2UgYmV0dGVyIGZvciB0aGUgdGFzayIsCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC92ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAidXVpZCI6ICJ2ZXJ0aWNhbC13b3Jrc3BhY2VzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMwp9"},
+    "41": {"version": "23", "sha256": "0dp7qbbcs46w1lc2v46cvhfx7r8h1jrp95mhd8wip8c7npmnr66q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuXG5cbkRlYXIgdXNlcnMsIHRoZSByZWxpYWJpbGl0eSBhbmQgc3RhYmlsaXR5IG9mIHRoaXMgZXh0ZW5zaW9uIGlzIG15IHByaW9yaXR5LCBpZiB5b3UgZW5jb3VudGVyIGFueSBwcm9ibGVtLCBmaXJzdCBjaGVjayBmb3IgY29uZmxpY3RzIHdpdGggb3RoZXIgZXh0ZW5zaW9ucyBhbmQgdGhlbiBvcGVuIGFuIGlzc3VlIG9uIHRoZSBHaXRodWIgcGFnZSBsaW5rZWQgYmVsb3cuXG5cblYtU2hlbGwgaW5jbHVkZXMgbWFueSB3b3JrYXJvdW5kcyB0byBzdXJ2aXZlIGNvbmZsaWN0cyBhbmQgd29yayB3aXRoIERhc2ggdG8gRG9jayAvIFVidW50dSBEb2NrIGV4dGVuc2lvbnMsIGJ1dCBpc3N1ZXMgbWF5IG9jY3VyLiBJbiBhbnkgY2FzZSwgVi1TaGVsbCB3b3JrcyBiZXR0ZXIgd2l0aG91dCBEYXNoIHRvIERvY2suXG5cbkFueSBmZWVkYmFjayBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBidXQgZG9uJ3QgZm9yZ2V0IC0gaWYgeW91IHdhbnQgbWUgdG8gd29yayBmb3IgeW91LCBiZSBuaWNlIDspXG5cblYtU2hlbGwgZmVhdHVyZXM6XG4tIHZlcnRpY2FsIG9yIGhvcml6b250YWwgb3JpZW50YXRpb24gb2Ygd29ya3NwYWNlc1xuLSBjdXN0b21pemUgdGhlIG92ZXJ2aWV3IGxheW91dCwgZGltZW5zaW9ucyBhbmQgY29udGVudHNcbi0gYWx0ZXJuYXRpdmUgb3ZlcnZpZXcgbW9kZXMgd2l0aCBzdGF0aWMgd29ya3NwYWNlIHByZXZpZXcgdGhhdCByZWR1Y2VzIHVubmVjZXNzYXJ5IG1vdmVtZW50IG9uIHRoZSBzY3JlZW5cbi0gd2FsbHBhcGVyIGJhY2tncm91bmQgd2l0aCBhZGp1c3RhYmxlIGJsdXIgZWZmZWN0IGluIHRoZSBvdmVydmlld1xuLSBkYXNoIGljb24gc2l6ZSwgY29udGVudCwgaWNvbiBjbGljayBhbmQgc2Nyb2xsIGJlaGF2aW9yXG4tIGFwcCBncmlkIGRpbWVuc2lvbnMsIGljb25zIHNpemUsIGNvbnRlbnRzIGFuZCBiZWhhdmlvclxuLSBhY3RpdmUgaWNvbnMgaW4gdGhlIGZvbGRlciBwcmV2aWV3XG4tIGNsb3NlIHdvcmtzcGFjZSBidXR0b24gb24gd29ya3NwYWNlIHRodW1ibmFpbFxuLSBtYWluIHBhbmVsIHBvc2l0aW9uIGFuZCB2aXNpYmlsaXR5XG4tIGhvdCBjb3JuZXIvZWRnZSBwb3NpdGlvbiBhbmQgYmVoYXZpb3Jcbi0gbm90aWZpY2F0aW9ucywgT1NEIGFuZCB3b3Jrc3BhY2Ugc3dpdGNoZXIgcG9wdXAgcG9zaXRpb25cbi0gY3VzdG9tIHdpbmRvdyBhdHRlbnRpb24gaGFuZGxlciBiZWhhdmlvclxuLSBpbXByb3ZlZCBhcHAgc2VhcmNoIHByb3ZpZGVyIHdpdGggY3VzdG9tIGljb24gc2l6ZVxuLSB3aW5kb3cgc2VhcmNoIHByb3ZpZGVyIGZvciBxdWljayBuYXZpZ2F0aW9uIGJldHdlZW4gd2luZG93c1xuLSByZWNlbnQgZmlsZXMgc2VhcmNoIHByb3ZpZGVyXG4tIHN0YXRpYyBiYWNrZ3JvdW5kIGluIHRoZSB3b3Jrc3BhY2Ugc3dpdGNoZXIgYW5pbWF0aW9uIG91dHNpZGUgb2YgdGhlIG92ZXJ2aWV3XG4tIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCBhcHBlYXJzIGV2ZW4gd2hlbiBzd2l0Y2hpbmcgd29ya3NwYWNlIHdpdGggYSBnZXN0dXJlXG4tIDQgcHJlZGVmaW5lZCBwcm9maWxlcyB3aXRoIGRpZmZlcmVudCBsYXlvdXQgYW5kIGJlaGF2aW9yIHRoYXQgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IHlvdXIgc2V0dGluZ3Ncbi0gZml4ZXMgKHdvcmtzIGFyb3VuZCkgc2V2ZXJhbCB1cHN0cmVhbSBidWdzIChrbm93biBhbmQgcmVwb3J0ZWQpXG4tIG1vZHVsYXIgc3RydWN0dXJlIG9mIHRoZSBWLVNoZWxsIGFsbG93cyB5b3UgdG8gZGlzYWJsZSBtb2R1bGVzIHRoYXQgeW91IGRvbid0IG5lZWQgb3IgY29uZmxpY3RzIHdpdGggb3RoZXIgZXh0ZW5zaW9uIHRoYXQgeW91IGxpa2UgYmV0dGVyIGZvciB0aGUgdGFzayIsCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC92ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAidXVpZCI6ICJ2ZXJ0aWNhbC13b3Jrc3BhY2VzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMwp9"},
     "42": {"version": "53", "sha256": "14jva97bd3shc3skz348pw41h9slxrkz6zd7s3x9snf4rv5xj59r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC92ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAidXVpZCI6ICJ2ZXJ0aWNhbC13b3Jrc3BhY2VzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MywKICAidmVyc2lvbi1uYW1lIjogIjQ0LjExIgp9"},
     "43": {"version": "53", "sha256": "14jva97bd3shc3skz348pw41h9slxrkz6zd7s3x9snf4rv5xj59r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC92ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAidXVpZCI6ICJ2ZXJ0aWNhbC13b3Jrc3BhY2VzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MywKICAidmVyc2lvbi1uYW1lIjogIjQ0LjExIgp9"},
     "44": {"version": "53", "sha256": "14jva97bd3shc3skz348pw41h9slxrkz6zd7s3x9snf4rv5xj59r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC92ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAidXVpZCI6ICJ2ZXJ0aWNhbC13b3Jrc3BhY2VzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1MywKICAidmVyc2lvbi1uYW1lIjogIjQ0LjExIgp9"},
-    "45": {"version": "52", "sha256": "172b9qzq2a6gp0qi1fv3nvnv4i3cvfwbklaa5z7n6gkx71nib400", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvdmVydGljYWwtd29ya3NwYWNlcyIsCiAgInV1aWQiOiAidmVydGljYWwtd29ya3NwYWNlc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTIsCiAgInZlcnNpb24tbmFtZSI6ICI0NS4zIgp9"}
+    "45": {"version": "52", "sha256": "172b9qzq2a6gp0qi1fv3nvnv4i3cvfwbklaa5z7n6gkx71nib400", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvdmVydGljYWwtd29ya3NwYWNlcyIsCiAgInV1aWQiOiAidmVydGljYWwtd29ya3NwYWNlc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTIsCiAgInZlcnNpb24tbmFtZSI6ICI0NS4zIgp9"},
+    "46": {"version": "56", "sha256": "06lyz527877ax08hbsr1f57vyfmcxcqgbwcs12bcmzypv1kww43f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1c3RvbWl6ZSB5b3VyIEdOT01FIFNoZWxsIFVYIHRvIHN1aXQgeW91ciB3b3JrZmxvdywgd2hldGhlciB5b3UgbGlrZSBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBzdGFja2VkIHdvcmtzcGFjZXMuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJnZW9yZ2RoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInZlcnRpY2FsLXdvcmtzcGFjZXMiLAogICJuYW1lIjogIlYtU2hlbGwgKFZlcnRpY2FsIFdvcmtzcGFjZXMpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52ZXJ0aWNhbC13b3Jrc3BhY2VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvdmVydGljYWwtd29ya3NwYWNlcyIsCiAgInV1aWQiOiAidmVydGljYWwtd29ya3NwYWNlc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNTYsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4wIgp9"}
   }}
 , {"uuid": "rocketbar@chepkun.github.com", "name": "Rocketbar", "pname": "rocketbar", "description": "Taskbar and misc additions for the GNOME Shell.", "link": "https://extensions.gnome.org/extension/5180/rocketbar/", "shell_version_map": {
     "42": {"version": "8", "sha256": "0p8msiyqpic8d0cv65j97gqp03vgi935rqgs2gjrffq3cg7wy2iq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2tiYXIgYW5kIG1pc2MgYWRkaXRpb25zIGZvciB0aGUgR05PTUUgU2hlbGwuXG5cbkEgbmV3IG1ham9yIHJlbGVhc2Ugd2lsbCBiZSBvdXQgbGF0ZXIgdGhpcyB5ZWFyLi4uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAicm9ja2V0YmFyIiwKICAibmFtZSI6ICJSb2NrZXRiYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucm9ja2V0YmFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGludXgtaXMtYXdlc29tZS9nbm9tZV9leHRlbnNpb25fcm9ja2V0YmFyIiwKICAidXVpZCI6ICJyb2NrZXRiYXJAY2hlcGt1bi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
@@ -4991,7 +5183,8 @@
     "42": {"version": "4", "sha256": "02zh6hqv3l7r9m4im864hjpyhjsyblvvclinl817q6vmbbniq5f2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgUG9wIExhdW5jaGVyIFN1cGVyLUtleTogQmluZCB0aGUgU3VwZXItS2V5IHRvIGEgY3VzdG9tIGFjdGlvbiIsCiAgIm5hbWUiOiAiU3VwZXIgS2V5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN1cGVyLWtleSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RvbW1pbW9uIiwKICAidXVpZCI6ICJzdXBlci1rZXlAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
     "43": {"version": "4", "sha256": "02zh6hqv3l7r9m4im864hjpyhjsyblvvclinl817q6vmbbniq5f2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgUG9wIExhdW5jaGVyIFN1cGVyLUtleTogQmluZCB0aGUgU3VwZXItS2V5IHRvIGEgY3VzdG9tIGFjdGlvbiIsCiAgIm5hbWUiOiAiU3VwZXIgS2V5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN1cGVyLWtleSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RvbW1pbW9uIiwKICAidXVpZCI6ICJzdXBlci1rZXlAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
     "44": {"version": "4", "sha256": "02zh6hqv3l7r9m4im864hjpyhjsyblvvclinl817q6vmbbniq5f2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgUG9wIExhdW5jaGVyIFN1cGVyLUtleTogQmluZCB0aGUgU3VwZXItS2V5IHRvIGEgY3VzdG9tIGFjdGlvbiIsCiAgIm5hbWUiOiAiU3VwZXIgS2V5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN1cGVyLWtleSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RvbW1pbW9uIiwKICAidXVpZCI6ICJzdXBlci1rZXlAdG9tbWltb24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
-    "45": {"version": "6", "sha256": "0baab2h9bd6qqwpcciwvk6j93aifpmnwlz03xp4ryib13hkwpsx7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgUG9wIExhdW5jaGVyIFN1cGVyLUtleTogQmluZCB0aGUgU3VwZXItS2V5IHRvIGEgY3VzdG9tIGFjdGlvbiIsCiAgIm5hbWUiOiAiU3VwZXIgS2V5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN1cGVyLWtleSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2LmJldGEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b21taW1vbiIsCiAgInV1aWQiOiAic3VwZXIta2V5QHRvbW1pbW9uLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNgp9"}
+    "45": {"version": "6", "sha256": "0baab2h9bd6qqwpcciwvk6j93aifpmnwlz03xp4ryib13hkwpsx7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgUG9wIExhdW5jaGVyIFN1cGVyLUtleTogQmluZCB0aGUgU3VwZXItS2V5IHRvIGEgY3VzdG9tIGFjdGlvbiIsCiAgIm5hbWUiOiAiU3VwZXIgS2V5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN1cGVyLWtleSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2LmJldGEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b21taW1vbiIsCiAgInV1aWQiOiAic3VwZXIta2V5QHRvbW1pbW9uLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNgp9"},
+    "46": {"version": "6", "sha256": "0baab2h9bd6qqwpcciwvk6j93aifpmnwlz03xp4ryib13hkwpsx7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgUG9wIExhdW5jaGVyIFN1cGVyLUtleTogQmluZCB0aGUgU3VwZXItS2V5IHRvIGEgY3VzdG9tIGFjdGlvbiIsCiAgIm5hbWUiOiAiU3VwZXIgS2V5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN1cGVyLWtleSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2LmJldGEiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90b21taW1vbiIsCiAgInV1aWQiOiAic3VwZXIta2V5QHRvbW1pbW9uLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNgp9"}
   }}
 , {"uuid": "quick-google-meet@gmail.com", "name": "Quick Google Meet", "pname": "quick-google-meet", "description": "Quick open your personal google meet conference. This extension is not affiliated with Google", "link": "https://extensions.gnome.org/extension/5189/quick-google-meet/", "shell_version_map": {
     "42": {"version": "2", "sha256": "17c0yrnwfanfp8jmmzwk87si5g93bchp7rhf6k2srf788pcbiifr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIG9wZW4geW91ciBwZXJzb25hbCBnb29nbGUgbWVldCBjb25mZXJlbmNlLiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCB3aXRoIEdvb2dsZSIsCiAgIm5hbWUiOiAiUXVpY2sgR29vZ2xlIE1lZXQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTWlzY2VsbGlhbi9xdWljay1nb29nbGUtbWVldCIsCiAgInV1aWQiOiAicXVpY2stZ29vZ2xlLW1lZXRAZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
@@ -5031,7 +5224,8 @@
     "42": {"version": "11", "sha256": "1567wwlz3lnw48vr86q7phigdp1gyqysk7p270lnwhb7d03maqj0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcEhhdCBhaW1zIHRvIGJlIGFuIGVsZWdhbnQgc3lzdGVtIHJlc291cmNlIG1vbml0b3IgZm9yIHRoZSBHTk9NRSBzaGVsbC4gSXQgZGlzcGxheXMgQ1BVLCBtZW1vcnksIGRpc2ssIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGluIHRoZSBHTk9NRSB0b3AgYmFyLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvcGhhdEBmZmxld2RkdXIuZ2l0aHViLmlvIiwKICAibmFtZSI6ICJUb3BIYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9waGF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZmxld2RkdXIvdG9waGF0IiwKICAidXVpZCI6ICJ0b3BoYXRAZmZsZXdkZHVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMQp9"},
     "43": {"version": "11", "sha256": "1567wwlz3lnw48vr86q7phigdp1gyqysk7p270lnwhb7d03maqj0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcEhhdCBhaW1zIHRvIGJlIGFuIGVsZWdhbnQgc3lzdGVtIHJlc291cmNlIG1vbml0b3IgZm9yIHRoZSBHTk9NRSBzaGVsbC4gSXQgZGlzcGxheXMgQ1BVLCBtZW1vcnksIGRpc2ssIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGluIHRoZSBHTk9NRSB0b3AgYmFyLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvcGhhdEBmZmxld2RkdXIuZ2l0aHViLmlvIiwKICAibmFtZSI6ICJUb3BIYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9waGF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZmxld2RkdXIvdG9waGF0IiwKICAidXVpZCI6ICJ0b3BoYXRAZmZsZXdkZHVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMQp9"},
     "44": {"version": "11", "sha256": "1567wwlz3lnw48vr86q7phigdp1gyqysk7p270lnwhb7d03maqj0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcEhhdCBhaW1zIHRvIGJlIGFuIGVsZWdhbnQgc3lzdGVtIHJlc291cmNlIG1vbml0b3IgZm9yIHRoZSBHTk9NRSBzaGVsbC4gSXQgZGlzcGxheXMgQ1BVLCBtZW1vcnksIGRpc2ssIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGluIHRoZSBHTk9NRSB0b3AgYmFyLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvcGhhdEBmZmxld2RkdXIuZ2l0aHViLmlvIiwKICAibmFtZSI6ICJUb3BIYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9waGF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM0IiwKICAgICIzLjMyIiwKICAgICIzLjM2IiwKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZmxld2RkdXIvdG9waGF0IiwKICAidXVpZCI6ICJ0b3BoYXRAZmZsZXdkZHVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMQp9"},
-    "45": {"version": "13", "sha256": "1i8sa2gqyrwqxbd9y9hb3s2j2v7rlvdhxy069v1rk1slzx24wc1n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgQ1BVLCBtZW1vcnksIGRpc2ssIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGluIHRoZSBHTk9NRSB0b3AgYmFyLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvcGhhdEBmZmxld2RkdXIuZ2l0aHViLmlvIiwKICAibmFtZSI6ICJUb3BIYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9waGF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZmbGV3ZGR1ci90b3BoYXQiLAogICJ1dWlkIjogInRvcGhhdEBmZmxld2RkdXIuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDEzCn0="}
+    "45": {"version": "14", "sha256": "09x6kmz7a5ral965cl5anxh64sbj23vkd7vng8zzsp6gv2bq6m1d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgQ1BVLCBtZW1vcnksIGRpc2ssIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGluIHRoZSBHTk9NRSB0b3AgYmFyLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvcGhhdEBmZmxld2RkdXIuZ2l0aHViLmlvIiwKICAibmFtZSI6ICJUb3BIYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9waGF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZmxld2RkdXIvdG9waGF0IiwKICAidXVpZCI6ICJ0b3BoYXRAZmZsZXdkZHVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxNAp9"},
+    "46": {"version": "14", "sha256": "09x6kmz7a5ral965cl5anxh64sbj23vkd7vng8zzsp6gv2bq6m1d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZpZXcgQ1BVLCBtZW1vcnksIGRpc2ssIGFuZCBuZXR3b3JrIGFjdGl2aXR5IGluIHRoZSBHTk9NRSB0b3AgYmFyLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvcGhhdEBmZmxld2RkdXIuZ2l0aHViLmlvIiwKICAibmFtZSI6ICJUb3BIYXQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9waGF0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZmxld2RkdXIvdG9waGF0IiwKICAidXVpZCI6ICJ0b3BoYXRAZmZsZXdkZHVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxNAp9"}
   }}
 , {"uuid": "dash-animator@icedman.github.com", "name": "Dash Animator", "pname": "dash-to-dock-animator", "description": "Animate the icons of dash to dock", "link": "https://extensions.gnome.org/extension/5222/dash-to-dock-animator/", "shell_version_map": {
     "40": {"version": "5", "sha256": "1630470pa0zr9mvl2dmnc3mnwx17pkwfll0ibas148yvxf0hj0fp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuaW1hdGUgdGhlIGljb25zIG9mIGRhc2ggdG8gZG9jayIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtYW5pbWF0b3IiLAogICJuYW1lIjogIkRhc2ggdG8gRG9jayBBbmltYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiaWNlZG1hbiIKICBdLAogICJzY2hlbWEtaWQiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGFzaC1hbmltYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2VkbWFuL2Rhc2gtYW5pbWF0b3IiLAogICJ1dWlkIjogImRhc2gtYW5pbWF0b3JAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="},
@@ -5039,9 +5233,6 @@
     "42": {"version": "5", "sha256": "1630470pa0zr9mvl2dmnc3mnwx17pkwfll0ibas148yvxf0hj0fp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuaW1hdGUgdGhlIGljb25zIG9mIGRhc2ggdG8gZG9jayIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtYW5pbWF0b3IiLAogICJuYW1lIjogIkRhc2ggdG8gRG9jayBBbmltYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiaWNlZG1hbiIKICBdLAogICJzY2hlbWEtaWQiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGFzaC1hbmltYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2VkbWFuL2Rhc2gtYW5pbWF0b3IiLAogICJ1dWlkIjogImRhc2gtYW5pbWF0b3JAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="},
     "43": {"version": "5", "sha256": "1630470pa0zr9mvl2dmnc3mnwx17pkwfll0ibas148yvxf0hj0fp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuaW1hdGUgdGhlIGljb25zIG9mIGRhc2ggdG8gZG9jayIsCiAgImdldHRleHQtZG9tYWluIjogImRhc2gtYW5pbWF0b3IiLAogICJuYW1lIjogIkRhc2ggdG8gRG9jayBBbmltYXRvciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiaWNlZG1hbiIKICBdLAogICJzY2hlbWEtaWQiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGFzaC1hbmltYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2VkbWFuL2Rhc2gtYW5pbWF0b3IiLAogICJ1dWlkIjogImRhc2gtYW5pbWF0b3JAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
-, {"uuid": "suppress-startup-animation@icedman.github.com", "name": "Suppress Startup Animation", "pname": "suppress-startup-animation", "description": "Suppress the overview startup animation", "link": "https://extensions.gnome.org/extension/5230/suppress-startup-animation/", "shell_version_map": {
-    "45": {"version": "5", "sha256": "11ddss5qhm0a2s8ncvcc3fcjas83nmplrhy1b99j6nhsv7kx7lwr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN1cHByZXNzIHRoZSBvdmVydmlldyBzdGFydHVwIGFuaW1hdGlvbiIsCiAgIm5hbWUiOiAiU3VwcHJlc3MgU3RhcnR1cCBBbmltYXRpb24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9zdXBwcmVzcy1zdGFydHVwLWFuaW1hdGlvbiIsCiAgInV1aWQiOiAic3VwcHJlc3Mtc3RhcnR1cC1hbmltYXRpb25AaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="}
-  }}
 , {"uuid": "swap-finger-gestures-3-4@icedman.github.com", "name": "Swap Finger Gestures (3 to 4)", "pname": "swap-finger-gestures-3-to-4", "description": "Use 4 fingers swipe to change workspace instead of 3.", "link": "https://extensions.gnome.org/extension/5233/swap-finger-gestures-3-to-4/", "shell_version_map": {
     "42": {"version": "4", "sha256": "0rigsyz6174fgzqkmygb53clavxldhvnrc0gapl8fs31pvrvm1q8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSA0IGZpbmdlcnMgc3dpcGUgdG8gY2hhbmdlIHdvcmtzcGFjZSBpbnN0ZWFkIG9mIDMuIiwKICAibmFtZSI6ICJTd2FwIEZpbmdlciBHZXN0dXJlcyAoMyB0byA0KSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vc3dhcC1maW5nZXItZ2VzdHVyZXMtMy00IiwKICAidXVpZCI6ICJzd2FwLWZpbmdlci1nZXN0dXJlcy0zLTRAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="},
     "43": {"version": "4", "sha256": "0rigsyz6174fgzqkmygb53clavxldhvnrc0gapl8fs31pvrvm1q8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSA0IGZpbmdlcnMgc3dpcGUgdG8gY2hhbmdlIHdvcmtzcGFjZSBpbnN0ZWFkIG9mIDMuIiwKICAibmFtZSI6ICJTd2FwIEZpbmdlciBHZXN0dXJlcyAoMyB0byA0KSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vc3dhcC1maW5nZXItZ2VzdHVyZXMtMy00IiwKICAidXVpZCI6ICJzd2FwLWZpbmdlci1nZXN0dXJlcy0zLTRAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="},
@@ -5065,13 +5256,14 @@
     "43": {"version": "14", "sha256": "0s73v3m8xb641hha7rbs4dfy944zmddi428hvaf6li6fjq81z6wf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgTGVub3ZvIElkZWFQYWQgbGFwdG9wcyBvcHRpb25zOiBDb25zZXJ2YXRpb24gTW9kZSwgQ2FtZXJhIExvY2ssIEZuIExvY2ssIFRvdWNocGFkIExvY2ssIFVTQiBjaGFyZ2luZyIsCiAgIm5hbWUiOiAiSWRlYVBhZCBDb250cm9scyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pZGVhcGFkLWNvbnRyb2xzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQXp6YW1BbHNoYXJhZmkvaWRlYXBhZC1jb250cm9scy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImlkZWFwYWQtY29udHJvbHNAYXp6YW1hbHNoYXJhZmkuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="},
     "44": {"version": "14", "sha256": "0s73v3m8xb641hha7rbs4dfy944zmddi428hvaf6li6fjq81z6wf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgTGVub3ZvIElkZWFQYWQgbGFwdG9wcyBvcHRpb25zOiBDb25zZXJ2YXRpb24gTW9kZSwgQ2FtZXJhIExvY2ssIEZuIExvY2ssIFRvdWNocGFkIExvY2ssIFVTQiBjaGFyZ2luZyIsCiAgIm5hbWUiOiAiSWRlYVBhZCBDb250cm9scyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pZGVhcGFkLWNvbnRyb2xzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQXp6YW1BbHNoYXJhZmkvaWRlYXBhZC1jb250cm9scy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImlkZWFwYWQtY29udHJvbHNAYXp6YW1hbHNoYXJhZmkuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="}
   }}
-, {"uuid": "gtk4-ding@smedius.gitlab.com", "name": "Gtk4 Desktop Icons NG (DING)", "pname": "gtk4-desktop-icons-ng-ding", "description": "Libadwaita/Gtk4 port of Desktop Icons NG with GSconnect Integration, Drag and Drop on to Dock or Dash.\n\nUpdated and modified code base, uses gio menus, all translations on Weblate. All functions are async where possible. Ported to ESM modules, supports Gnome 45.\n\nMultiple fixes and new features-\n\n* New - show the correct file manager in the right click menu and give the user the option to change the file manager.\n* Fix - prevent jumping icons and keep icons in the correct position on dock resizing and desktopgrid resizing.\n* new - add accessibility support with screen readers\n* New - Icons on background on overview.\n* New - Rectangular icons and highlighting like Nautilus. Can be changed in Settings, tweaks.\n* New - will mail folders by zipping them.\n* New - default terminal can be set following specs for xdg-terminal-exec and gtk4-ding will execute it even if xdg-terminal-exec is not installed.\n* Fix - will not launch Nemo if not installed.\n* New - Use mutter make_desktop() if available. With Gnome 45.3, now sets window_type DESKTOP even on Wayland.\n* Fix - Gnome shortcut could hide window on X11\n* New - Sets correct hovering behaviour during drag and drop on the Dock, enables scrolling to icons when they are hidden.\n* Fix - DING window could be dragged and dropped in workspace indicators to show icons on only one workspace, fixes done to prevent.\n* Fix - unlimited workspaces, now works correctly even with auto-move-windows. More optimal and minimal shell overrides.\n* New - Help with translation link in about pane of preferences. Multiple other fixes, including using old libAdwaita on Ubuntu Jammy.\n* New - tool tips are now positioned correctly to not go under the dash or make it autohide, or go over any gnome shell actors on the edge of the screen.\n* New - About panel preferences page that shows the correct version of the extension and weblinks to gitlab website.\n* New Drag Navigation on Dock - dragging an icon over the Gnome Files icon on the dock or mounted drives, and hovering over it for 1/2 seconds will open a Gnome Files Window.\n* New - Set the correct cursor with proposed action on drop on dock, improve drop detection.\n* New - Drag Navigation - dragging an icon over a folder icon or a drive icon, and then hovering over it for 1/2 seconds will open that location in Gnome Files.\n* New - Drag Icon now forms a bunch of icons if multiple icons are dragged. Code from Nautilus, translated to files.\n* New - Now deals correctly with appimage files on desktop.\n* Now uses libadwaita.\n* Make Links on Desktop with Alt button on Wayland. Does not work with X11.\n* Copied/dropped/pasted files retain dropped position.\n* Right Click Menus will not go under the dock.\n* Better multi monitor support, preference to place icons on non primary monitor.\n* GSconnect extension integration, can send files from desktop directly to mobile device.\n* Drag and drop Favorite apps from Dash to Dock, Dash to Panel directly to Desktop or remove from favorites.\n* Improved gesture switching of workspaces, icons appear to be on all workspaces in moving windows.\n* Support for dragging icons onto the dock - Drag icons from desktop to and drop over application icon to open them with the app. Works with Dash to Dock and Dash to Panel.\n* Support for dragging icons from desktop directly to Trash on Dash to Dock or to mounted volumes to copy them directly.\n* Display GIMP thumbnails, even for snap and flatpack installs.\n\nPlease see Readme for full details of new features. Works best on Wayland. There is a bug in GJS on X11, please see Readme. This extension now works with some hacks, even on X11. However your mileage may vary and use with caution on X11 and report any issues.\n\nPlease report all issues on the gitlab link below, this page is not monitored. All known issues are detailed there.", "link": "https://extensions.gnome.org/extension/5263/gtk4-desktop-icons-ng-ding/", "shell_version_map": {
+, {"uuid": "gtk4-ding@smedius.gitlab.com", "name": "Gtk4 Desktop Icons NG (DING)", "pname": "gtk4-desktop-icons-ng-ding", "description": "Libadwaita/Gtk4 port of Desktop Icons NG with multiple fixes and new features.\n\nIcons can be positioned anywhere on desktop or are snapped to a grid. Can make links on the Desktop. GSconnect Integration, can send files to connected devices. Drag and Drop support on to Dock, Dash, or from Dock, Dash to the Desktop.\n\nUpdated and modified code base, uses Gio menus, all translations on Weblate. All functions are asynchronous where possible. It is ported to ESM modules, supports Gnome 45 and higher.\n\nMultiple fixes and new features-\n\n* New - Icons can be placed on any arbitrary position. Make a mess! - icons can overlap each other etc. Neat people can keep the default behavior and have the icons always snapped to a grid. Controlled in preferences, tweaks, 'Snap to grid'. Affects the shape of icons and drag and drop behavior as well. Free positioning has trapezoidal icons, drop only works with direct overlap. Grid positioning has rectangular icons, and drag and drop works on overlap with the grid holding the icon. This behavior is consistent with other desktop environments.\n* Icons on background on overview, improved gesture switching icons appear to be on all work spaces on the background with workspace switching, with no flashing.\n* Support for dragging icons onto the dock - Drag icons from desktop to and drop over application icon to open them with the app. Works with Dash to Dock and Dash to Panel.\n* Support for dragging icons from desktop directly to Trash on Dash to Dock, or to mounted volumes on the dock, to copy them directly.\n* Set the correct cursor with proposed action on drop on dock.\n* Drag Navigation on Dock - dragging an icon over the Gnome Files icon on the dock or mounted drives, and hovering over it for 1/2 seconds will open a Gnome Files Window. Behavior can be changed in preferences.\n* Drag Navigation - dragging an icon over a folder icon or a drive icon, and then hovering over it for 1/2 seconds will open that location in Gnome Files.\n* Sets correct hovering behavior during drag and drop on the Dock, enables scrolling in the dock to icons when they are hidden.\n* Drag and drop Favorite apps from Dash to Dock, Dash to Panel directly to Desktop. Pressing shift, ctr or alt while doing this will copy or move the app to Desktop, allowing launching from the desktop. Just dropping an app from the dock to the desktop will remove from Dash/Dock.\n* Follows xdg-terminal-exec to display the correct terminal in right click menus, and will launch the correct terminal, even if xdg-terminal-exec is not installed.\n* Shows the correct file manager in the right click menu and give the user the option to change the file manager.\n* Gio menus, menus display all keyboard shortcuts.\n* Uses Gtk4 AlertDialog, uses asynchronous promises for dialog's, shows button to launch URL for help and troubleshooting information.\n* Automatically zip Folders if mailing them.\n* Tool tips are now positioned correctly to not go under the dash or make it auto hide, or go over/under any gnome shell actors on the edge of the screen.\n* Right Click Menus will not go under the dock.\n* Make Links on Desktop with Alt button on Wayland. Shift, Ctr or Alt button control the effect, move, copy, drop or link. (Linking may not work on X11)\n* Copied/dropped/pasted files retain dropped position. Undo action after trashing or moving files puts icons back in the old position.\n* Better multi monitor support, preference to place icons on non primary monitor.\n* GSconnect extension integration, can send files from desktop directly to connected mobile device.\n* Accessibility support with screen readers\n* Deals correctly with appimage files on desktop.\n* Display GIMP thumbnails, even for snap and flatpack installs.\n\nPlease see Readme for full details of new features. Works best on Wayland. However your mileage may vary on X11. Multiple bugs fixed on X11.\n\nPlease report all issues on the Gitlab link below, this page is not monitored. All known issues as well as all the features are detailed there.", "link": "https://extensions.gnome.org/extension/5263/gtk4-desktop-icons-ng-ding/", "shell_version_map": {
     "40": {"version": "17", "sha256": "1d1xpjypmim6yzsscrkv1n9p7b141k9xi3mab1sz8cqic5v8401z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpYmFkd2FpdGEvR3RrNCBQb3J0IG9mIERlc2t0b3AgSWNvbnMgTkcgd2l0aCB1cGRhdGVkIGFuZCBtb2RpZmllZCBjb2RlIGJhc2UsIHVzZXMgZ2lvIG1lbnVzLCBhbGwgZnVuY3Rpb25zIGFyZSBhc3luYyB3aGVyZSBwb3NzaWJsZSwgbXVsdGlwbGUgZml4ZXMgYW5kIG5ldyBmZWF0dXJlcy1cblxuKiBOZXcgRHJhZyBOYXZpZ2F0aW9uIG9uIERvY2sgLSBkcmFnZ2luZyBhbiBpY29uIG92ZXIgdGhlIEdub21lIEZpbGVzIGljb24gb24gdGhlIGRvY2sgb3IgbW91bnRlZCBkcml2ZXMsIGFuZCBob3ZlcmluZyBvdmVyIGl0IGZvciAxLzIgc2Vjb25kIHdpbGwgb3BlbiBhIEdub21lIEZpbGVzIFdpbmRvdy5cbiogTmV3IC0gU2V0IHRoZSBjb3JyZWN0IGN1cnNvciB3aXRoIHByb3Bvc2VkIGFjdGlvbiBvbiBkcm9wIG9uIGRvY2ssIGltcHJvdmUgZHJvcCBkZXRlY3Rpb24uXG4qIE5ldyAtIERyYWcgTmF2aWdhdGlvbiAtIGRyYWdnaW5nIGFuIGljb24gb3ZlciBhIGZvbGRlciBpY29uIG9yIGEgZHJpdmUgaWNvbiwgYW5kIHRoZW4gaG92ZXJpbmcgb3ZlciBpdCBmb3IgMS8yIHNlY29uZCB3aWxsIG9wZW4gdGhhdCBsb2NhdGlvbiBpbiBHbm9tZSBGaWxlcy5cbiogTmV3IC0gRHJhZyBJY29uIG5vdyBmb3JtcyBhIGJ1bmNoIG9mIGljb25zIGlmIG11bHRpcGxlIGljb25zIGFyZSBkcmFnZ2VkLiBDb2RlIGZyb20gTmF1dGlsdXMsIHRyYW5zbGF0ZWQgdG8gZmlsZXMuXG4qIE5ldyAtIE5vdyBkZWFscyBjb3JyZWN0bHkgd2l0aCBhcHBpbWFnZSBmaWxlcyBvbiBkZXNrdG9wLlxuKiBOb3cgdXNlcyBsaWJhZHdhaXRhLlxuKiBNYWtlIExpbmtzIG9uIERlc2t0b3Agd2l0aCBBbHQgYnV0dG9uIG9uIFdheWxhbmQuIERvZXMgbm90IHdvcmsgd2l0aCBYMTEuXG4qIENvcGllZC9kcm9wcGVkL3Bhc3RlZCBmaWxlcyByZXRhaW4gZHJvcHBlZCBwb3NpdGlvbi5cbiogUmlnaHQgQ2xpY2sgTWVudXMgd2lsbCBub3QgZ28gdW5kZXIgdGhlIGRvY2suXG4qIEJldHRlciBtdWx0aSBtb25pdG9yIHN1cHBvcnQsIHByZWZlcmVuY2UgdG8gcGxhY2UgaWNvbnMgb24gbm9uIHByaW1hcnkgbW9uaXRvci5cbiogR1Njb25uZWN0IGV4dGVuc2lvbiBpbnRlZ3JhdGlvbiwgY2FuIHNlbmQgZmlsZXMgZnJvbSBkZXNrdG9wIGRpcmVjdGx5IHRvIG1vYmlsZSBkZXZpY2UuXG4qIERyYWcgYW5kIGRyb3AgRmF2b3JpdGUgYXBwcyBmcm9tIERhc2ggdG8gRG9jaywgRGFzaCB0byBQYW5lbCBkaXJlY3RseSB0byBEZXNrdG9wIG9yIHJlbW92ZSBmcm9tIGZhdm9yaXRlcy5cbiogSW1wcm92ZWQgZ2VzdHVyZSBzd2l0Y2hpbmcgb2Ygd29ya3NwYWNlcywgaWNvbnMgYXBwZWFyIHRvIGJlIG9uIGFsbCB3b3Jrc3BhY2VzIGluIG1vdmluZyB3aW5kb3dzLlxuKiBTdXBwb3J0IGZvciBkcmFnZ2luZyBpY29ucyBvbnRvIHRoZSBkb2NrIC0gRHJhZyBpY29ucyBmcm9tIGRlc2t0b3AgdG8gYW5kIGRyb3Agb3ZlciBhcHBsaWNhdGlvbiBpY29uIHRvIG9wZW4gdGhlbSB3aXRoIHRoZSBhcHAuIFdvcmtzIHdpdGggRGFzaCB0byBEb2NrIGFuZCBEYXNoIHRvIFBhbmVsLlxuKiBTdXBwb3J0IGZvciBkcmFnZ2luZyBpY29ucyBmcm9tIGRlc2t0b3AgZGlyZWN0bHkgdG8gVHJhc2ggb24gRGFzaCB0byBEb2NrIG9yIHRvIG1vdW50ZWQgdm9sdW1lcyB0byBjb3B5IHRoZW0gZGlyZWN0bHkuXG4qIERpc3BsYXkgR0lNUCB0aHVtYm5haWxzLCBldmVuIGZvciBzbmFwIGFuZCBmbGF0cGFjayBpbnN0YWxscy5cblxuUGxlYXNlIHNlZSBSZWFkbWUgZm9yIGZ1bGwgZGV0YWlscyBvZiBuZXcgZmVhdHVyZXMuIFdvcmtzIGJlc3Qgb24gV2F5bGFuZC4gVGhlcmUgaXMgYSBidWcgaW4gR0pTIG9uIFgxMSwgcGxlYXNlIHNlZSBSZWFkbWUuIFRoaXMgZXh0ZW5zaW9uIG5vdyB3b3JrcyB3aXRoIHNvbWUgaGFja3MsIGV2ZW4gb24gWDExLiBIb3dldmVyIHlvdXIgbWlsZWFnZSBtYXkgdmFyeSBhbmQgdXNlIHdpdGggY2F1dGlvbiBvbiBYMTEgYW5kIHJlcG9ydCBhbnkgaXNzdWVzLlxuXG5QbGVhc2UgcmVwb3J0IGFsbCBpc3N1ZXMgb24gdGhlIGdpdGxhYiBsaW5rIGJlbG93LCB0aGlzIHBhZ2UgaXMgbm90IG1vbml0b3JlZC4gQWxsIGtub3duIGlzc3VlcyBhcmUgZGV0YWlsZWQgdGhlcmUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ3RrNC1kaW5nQHNtZWRpdXMuZ2l0bGFiLmNvbSIsCiAgIm5hbWUiOiAiTGliYWR3YWl0YSwgR3RrNCBEZXNrdG9wIEljb25zIE5HIHdpdGggR1Njb25uZWN0IEludGVncmF0aW9uLCBEcmFnIGFuZCBEcm9wIG9udG8gRG9jayAoR3RrNC1ESU5HKSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ3RrNC1kaW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NtZWRpdXMvZGVza3RvcC1pY29ucy1uZyIsCiAgInV1aWQiOiAiZ3RrNC1kaW5nQHNtZWRpdXMuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiAxNwp9"},
     "41": {"version": "17", "sha256": "1d1xpjypmim6yzsscrkv1n9p7b141k9xi3mab1sz8cqic5v8401z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpYmFkd2FpdGEvR3RrNCBQb3J0IG9mIERlc2t0b3AgSWNvbnMgTkcgd2l0aCB1cGRhdGVkIGFuZCBtb2RpZmllZCBjb2RlIGJhc2UsIHVzZXMgZ2lvIG1lbnVzLCBhbGwgZnVuY3Rpb25zIGFyZSBhc3luYyB3aGVyZSBwb3NzaWJsZSwgbXVsdGlwbGUgZml4ZXMgYW5kIG5ldyBmZWF0dXJlcy1cblxuKiBOZXcgRHJhZyBOYXZpZ2F0aW9uIG9uIERvY2sgLSBkcmFnZ2luZyBhbiBpY29uIG92ZXIgdGhlIEdub21lIEZpbGVzIGljb24gb24gdGhlIGRvY2sgb3IgbW91bnRlZCBkcml2ZXMsIGFuZCBob3ZlcmluZyBvdmVyIGl0IGZvciAxLzIgc2Vjb25kIHdpbGwgb3BlbiBhIEdub21lIEZpbGVzIFdpbmRvdy5cbiogTmV3IC0gU2V0IHRoZSBjb3JyZWN0IGN1cnNvciB3aXRoIHByb3Bvc2VkIGFjdGlvbiBvbiBkcm9wIG9uIGRvY2ssIGltcHJvdmUgZHJvcCBkZXRlY3Rpb24uXG4qIE5ldyAtIERyYWcgTmF2aWdhdGlvbiAtIGRyYWdnaW5nIGFuIGljb24gb3ZlciBhIGZvbGRlciBpY29uIG9yIGEgZHJpdmUgaWNvbiwgYW5kIHRoZW4gaG92ZXJpbmcgb3ZlciBpdCBmb3IgMS8yIHNlY29uZCB3aWxsIG9wZW4gdGhhdCBsb2NhdGlvbiBpbiBHbm9tZSBGaWxlcy5cbiogTmV3IC0gRHJhZyBJY29uIG5vdyBmb3JtcyBhIGJ1bmNoIG9mIGljb25zIGlmIG11bHRpcGxlIGljb25zIGFyZSBkcmFnZ2VkLiBDb2RlIGZyb20gTmF1dGlsdXMsIHRyYW5zbGF0ZWQgdG8gZmlsZXMuXG4qIE5ldyAtIE5vdyBkZWFscyBjb3JyZWN0bHkgd2l0aCBhcHBpbWFnZSBmaWxlcyBvbiBkZXNrdG9wLlxuKiBOb3cgdXNlcyBsaWJhZHdhaXRhLlxuKiBNYWtlIExpbmtzIG9uIERlc2t0b3Agd2l0aCBBbHQgYnV0dG9uIG9uIFdheWxhbmQuIERvZXMgbm90IHdvcmsgd2l0aCBYMTEuXG4qIENvcGllZC9kcm9wcGVkL3Bhc3RlZCBmaWxlcyByZXRhaW4gZHJvcHBlZCBwb3NpdGlvbi5cbiogUmlnaHQgQ2xpY2sgTWVudXMgd2lsbCBub3QgZ28gdW5kZXIgdGhlIGRvY2suXG4qIEJldHRlciBtdWx0aSBtb25pdG9yIHN1cHBvcnQsIHByZWZlcmVuY2UgdG8gcGxhY2UgaWNvbnMgb24gbm9uIHByaW1hcnkgbW9uaXRvci5cbiogR1Njb25uZWN0IGV4dGVuc2lvbiBpbnRlZ3JhdGlvbiwgY2FuIHNlbmQgZmlsZXMgZnJvbSBkZXNrdG9wIGRpcmVjdGx5IHRvIG1vYmlsZSBkZXZpY2UuXG4qIERyYWcgYW5kIGRyb3AgRmF2b3JpdGUgYXBwcyBmcm9tIERhc2ggdG8gRG9jaywgRGFzaCB0byBQYW5lbCBkaXJlY3RseSB0byBEZXNrdG9wIG9yIHJlbW92ZSBmcm9tIGZhdm9yaXRlcy5cbiogSW1wcm92ZWQgZ2VzdHVyZSBzd2l0Y2hpbmcgb2Ygd29ya3NwYWNlcywgaWNvbnMgYXBwZWFyIHRvIGJlIG9uIGFsbCB3b3Jrc3BhY2VzIGluIG1vdmluZyB3aW5kb3dzLlxuKiBTdXBwb3J0IGZvciBkcmFnZ2luZyBpY29ucyBvbnRvIHRoZSBkb2NrIC0gRHJhZyBpY29ucyBmcm9tIGRlc2t0b3AgdG8gYW5kIGRyb3Agb3ZlciBhcHBsaWNhdGlvbiBpY29uIHRvIG9wZW4gdGhlbSB3aXRoIHRoZSBhcHAuIFdvcmtzIHdpdGggRGFzaCB0byBEb2NrIGFuZCBEYXNoIHRvIFBhbmVsLlxuKiBTdXBwb3J0IGZvciBkcmFnZ2luZyBpY29ucyBmcm9tIGRlc2t0b3AgZGlyZWN0bHkgdG8gVHJhc2ggb24gRGFzaCB0byBEb2NrIG9yIHRvIG1vdW50ZWQgdm9sdW1lcyB0byBjb3B5IHRoZW0gZGlyZWN0bHkuXG4qIERpc3BsYXkgR0lNUCB0aHVtYm5haWxzLCBldmVuIGZvciBzbmFwIGFuZCBmbGF0cGFjayBpbnN0YWxscy5cblxuUGxlYXNlIHNlZSBSZWFkbWUgZm9yIGZ1bGwgZGV0YWlscyBvZiBuZXcgZmVhdHVyZXMuIFdvcmtzIGJlc3Qgb24gV2F5bGFuZC4gVGhlcmUgaXMgYSBidWcgaW4gR0pTIG9uIFgxMSwgcGxlYXNlIHNlZSBSZWFkbWUuIFRoaXMgZXh0ZW5zaW9uIG5vdyB3b3JrcyB3aXRoIHNvbWUgaGFja3MsIGV2ZW4gb24gWDExLiBIb3dldmVyIHlvdXIgbWlsZWFnZSBtYXkgdmFyeSBhbmQgdXNlIHdpdGggY2F1dGlvbiBvbiBYMTEgYW5kIHJlcG9ydCBhbnkgaXNzdWVzLlxuXG5QbGVhc2UgcmVwb3J0IGFsbCBpc3N1ZXMgb24gdGhlIGdpdGxhYiBsaW5rIGJlbG93LCB0aGlzIHBhZ2UgaXMgbm90IG1vbml0b3JlZC4gQWxsIGtub3duIGlzc3VlcyBhcmUgZGV0YWlsZWQgdGhlcmUuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ3RrNC1kaW5nQHNtZWRpdXMuZ2l0bGFiLmNvbSIsCiAgIm5hbWUiOiAiTGliYWR3YWl0YSwgR3RrNCBEZXNrdG9wIEljb25zIE5HIHdpdGggR1Njb25uZWN0IEludGVncmF0aW9uLCBEcmFnIGFuZCBEcm9wIG9udG8gRG9jayAoR3RrNC1ESU5HKSIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidXNlciIsCiAgICAidW5sb2NrLWRpYWxvZyIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ3RrNC1kaW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL3NtZWRpdXMvZGVza3RvcC1pY29ucy1uZyIsCiAgInV1aWQiOiAiZ3RrNC1kaW5nQHNtZWRpdXMuZ2l0bGFiLmNvbSIsCiAgInZlcnNpb24iOiAxNwp9"},
     "42": {"version": "60", "sha256": "0gxn065ls150nj88zslng8lkhqfzba8lkhxyi74rpqn477ss6y9q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgR3RrNCBpY29ucyB0byB0aGUgR25vbWUgZGVza3RvcC4gR3RrNCBGb3JrIG9mIHRoZSBvcmlnaW5hbCBEZXNrdG9wIEljb25zIGV4dGVuc2lvbiwgd2l0aCBzZXZlcmFsIGVuaGFuY2VtZW50cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJndGs0LWRpbmdAc21lZGl1cy5naXRsYWIuY29tIiwKICAibmFtZSI6ICJHdGs0IERlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ndGs0LWRpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9zbWVkaXVzL2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImd0azQtZGluZ0BzbWVkaXVzLmdpdGxhYi5jb20iLAogICJ2ZXJzaW9uIjogNjAKfQ=="},
     "43": {"version": "60", "sha256": "0gxn065ls150nj88zslng8lkhqfzba8lkhxyi74rpqn477ss6y9q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgR3RrNCBpY29ucyB0byB0aGUgR25vbWUgZGVza3RvcC4gR3RrNCBGb3JrIG9mIHRoZSBvcmlnaW5hbCBEZXNrdG9wIEljb25zIGV4dGVuc2lvbiwgd2l0aCBzZXZlcmFsIGVuaGFuY2VtZW50cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJndGs0LWRpbmdAc21lZGl1cy5naXRsYWIuY29tIiwKICAibmFtZSI6ICJHdGs0IERlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ndGs0LWRpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9zbWVkaXVzL2Rlc2t0b3AtaWNvbnMtbmciLAogICJ1dWlkIjogImd0azQtZGluZ0BzbWVkaXVzLmdpdGxhYi5jb20iLAogICJ2ZXJzaW9uIjogNjAKfQ=="},
     "44": {"version": "67", "sha256": "1bz5bs2llbklzn0wvqn300gd1g39qgdsgl5hwi1ndwd2wdl1mdbq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgR3RrNCBpY29ucyB0byB0aGUgR25vbWUgZGVza3RvcC4gR3RrNCBGb3JrIG9mIHRoZSBvcmlnaW5hbCBEZXNrdG9wIEljb25zIGV4dGVuc2lvbiwgd2l0aCBzZXZlcmFsIGVuaGFuY2VtZW50cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJndGs0LWRpbmdAc21lZGl1cy5naXRsYWIuY29tIiwKICAibmFtZSI6ICJHdGs0IERlc2t0b3AgSWNvbnMgTkcgKERJTkcpIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ndGs0LWRpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc21lZGl1cy9kZXNrdG9wLWljb25zLW5nIiwKICAidXVpZCI6ICJndGs0LWRpbmdAc21lZGl1cy5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDY3Cn0="},
-    "45": {"version": "71", "sha256": "1jaj1p79c16lwfnavr9z68pza60xqrh6qlkccydbw19sx0c774b7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgR3RrNCBpY29ucyB0byB0aGUgR25vbWUgZGVza3RvcC4gR3RrNCBGb3JrIG9mIHRoZSBvcmlnaW5hbCBEZXNrdG9wIEljb25zIGV4dGVuc2lvbiwgd2l0aCBzZXZlcmFsIGVuaGFuY2VtZW50cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJndGs0LWRpbmciLAogICJuYW1lIjogIkd0azQgRGVza3RvcCBJY29ucyBORyAoRElORykiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0azQtZGluZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc21lZGl1cy9kZXNrdG9wLWljb25zLW5nIiwKICAidXVpZCI6ICJndGs0LWRpbmdAc21lZGl1cy5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDcxLAogICJ2ZXJzaW9uLW5hbWUiOiAiNzEiCn0="}
+    "45": {"version": "73", "sha256": "1q4372ki5x89v7fk3cgnvbjxzknn0plqj741ynbjnsjcchzc44vn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgR3RrNCBpY29ucyB0byB0aGUgR25vbWUgZGVza3RvcC4gR3RrNCBGb3JrIG9mIHRoZSBvcmlnaW5hbCBEZXNrdG9wIEljb25zIGV4dGVuc2lvbiwgd2l0aCBzZXZlcmFsIGVuaGFuY2VtZW50cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJndGs0LWRpbmciLAogICJuYW1lIjogIkd0azQgRGVza3RvcCBJY29ucyBORyAoRElORykiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0azQtZGluZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc21lZGl1cy9kZXNrdG9wLWljb25zLW5nIiwKICAidXVpZCI6ICJndGs0LWRpbmdAc21lZGl1cy5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDczLAogICJ2ZXJzaW9uLW5hbWUiOiAiNzMiCn0="},
+    "46": {"version": "73", "sha256": "1q4372ki5x89v7fk3cgnvbjxzknn0plqj741ynbjnsjcchzc44vn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgR3RrNCBpY29ucyB0byB0aGUgR25vbWUgZGVza3RvcC4gR3RrNCBGb3JrIG9mIHRoZSBvcmlnaW5hbCBEZXNrdG9wIEljb25zIGV4dGVuc2lvbiwgd2l0aCBzZXZlcmFsIGVuaGFuY2VtZW50cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJndGs0LWRpbmciLAogICJuYW1lIjogIkd0azQgRGVza3RvcCBJY29ucyBORyAoRElORykiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmd0azQtZGluZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vc21lZGl1cy9kZXNrdG9wLWljb25zLW5nIiwKICAidXVpZCI6ICJndGs0LWRpbmdAc21lZGl1cy5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDczLAogICJ2ZXJzaW9uLW5hbWUiOiAiNzMiCn0="}
   }}
 , {"uuid": "fig-gnome-integration@fig.io", "name": "Fig GNOME Integration", "pname": "fig-gnome-integration", "description": "Tightly integrates Fig with GNOME shell", "link": "https://extensions.gnome.org/extension/5266/fig-gnome-integration/", "shell_version_map": {
     "41": {"version": "6", "sha256": "1j5wy8zb5jnm4gh0y3brr6663ykjh56ximygkchns8ahyjmba85p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpZ2h0bHkgaW50ZWdyYXRlcyBGaWcgd2l0aCBHTk9NRSBzaGVsbCIsCiAgImdldHRleHQtZG9tYWluIjogImZpZy1nbm9tZS1pbnRlZ3JhdGlvbiIsCiAgIm5hbWUiOiAiRmlnIEdOT01FIEludGVncmF0aW9uIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmZpZy1nbm9tZS1pbnRlZ3JhdGlvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dpdGhmaWcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJmaWctZ25vbWUtaW50ZWdyYXRpb25AZmlnLmlvIiwKICAidmVyc2lvbiI6IDYKfQ=="},
@@ -5085,7 +5277,8 @@
     "42": {"version": "2", "sha256": "0519w9m6i3zfc6vq58fwyrgl6vswhkrvsbqch0ajqa3b111gz064", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZldyB0d2Vha3MgZm9yIEdOT01FIERvY2s6IFxuIC0gbW92ZXMgaXQgdG9wIFxuIC0gYXV0b2hpZGUgICEhcmV2ZWFscyB1bmRlciBjdXJzb3IgcHJlc3N1cmUhISBcbiAtIHNob3dzIG9ubHkgZmF2b3JpdGVzIGFwcHMiLAogICJuYW1lIjogIkRvY2s6IFJlbG9hZGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01hcnRpblBML0RvY2stUmVsb2FkZWQiLAogICJ1dWlkIjogImRvY2stcmVsb2FkZWRAc2VsZm1hZGUucGwiLAogICJ2ZXJzaW9uIjogMgp9"},
     "43": {"version": "3", "sha256": "0zmdaqb880c3az388pc9j76pgy3yk97akps3lqib93jfbhx6302r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZldyB0d2Vha3MgZm9yIEdOT01FIERvY2s6IFxuIC0gbW92ZXMgaXQgdG9wIFxuIC0gYXV0b2hpZGUgICEhcmV2ZWFscyB1bmRlciBjdXJzb3IgcHJlc3N1cmUhISBcbiAtIHNob3dzIG9ubHkgZmF2b3JpdGVzIGFwcHMiLAogICJuYW1lIjogIkRvY2s6IFJlbG9hZGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01hcnRpblBML0RvY2stUmVsb2FkZWQiLAogICJ1dWlkIjogImRvY2stcmVsb2FkZWRAc2VsZm1hZGUucGwiLAogICJ2ZXJzaW9uIjogMwp9"},
     "44": {"version": "4", "sha256": "1pqc7hhpxiwvd2a2b5fj1rcd887z2a7mvxb2w8w5y8rfd15wcvpc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZldyB0d2Vha3MgZm9yIEdOT01FIERvY2s6IFxuIC0gbW92ZXMgaXQgdG9wIFxuIC0gYXV0b2hpZGUgICEhcmV2ZWFscyB1bmRlciBjdXJzb3IgcHJlc3N1cmUhISBcbiAtIHNob3dzIG9ubHkgZmF2b3JpdGVzIGFwcHMiLAogICJuYW1lIjogIkRvY2s6IFJlbG9hZGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL01hcnRpblBML0RvY2stUmVsb2FkZWQiLAogICJ1dWlkIjogImRvY2stcmVsb2FkZWRAc2VsZm1hZGUucGwiLAogICJ2ZXJzaW9uIjogNAp9"},
-    "45": {"version": "5", "sha256": "0pvwm1s7zadkznrrw3n0gaym5j3kwr8c6wxgk6gnhyq40k1kgyh0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZldyB0d2Vha3MgZm9yIEdOT01FIERvY2s6IFxuIC0gbW92ZXMgaXQgdG9wIFxuIC0gYXV0b2hpZGUgLS0tPiAhcmV2ZWFscyB1bmRlciBjdXJzb3IgcHJlc3N1cmUhIDwtLS0gXG4gLSBzaG93cyBvbmx5IGZhdm9yaXRlcyBhcHBzIiwKICAibmFtZSI6ICJEb2NrOiBSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9Eb2NrLVJlbG9hZGVkIiwKICAidXVpZCI6ICJkb2NrLXJlbG9hZGVkQHNlbGZtYWRlLnBsIiwKICAidmVyc2lvbiI6IDUKfQ=="}
+    "45": {"version": "5", "sha256": "0pvwm1s7zadkznrrw3n0gaym5j3kwr8c6wxgk6gnhyq40k1kgyh0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZldyB0d2Vha3MgZm9yIEdOT01FIERvY2s6IFxuIC0gbW92ZXMgaXQgdG9wIFxuIC0gYXV0b2hpZGUgLS0tPiAhcmV2ZWFscyB1bmRlciBjdXJzb3IgcHJlc3N1cmUhIDwtLS0gXG4gLSBzaG93cyBvbmx5IGZhdm9yaXRlcyBhcHBzIiwKICAibmFtZSI6ICJEb2NrOiBSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9Eb2NrLVJlbG9hZGVkIiwKICAidXVpZCI6ICJkb2NrLXJlbG9hZGVkQHNlbGZtYWRlLnBsIiwKICAidmVyc2lvbiI6IDUKfQ=="},
+    "46": {"version": "6", "sha256": "04lakwk8k4flpl05dz8dihpwg7mbg9k6i02fczy0gzb5bnr7l95l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZldyB0d2Vha3MgZm9yIEdOT01FIERvY2s6IFxuIC0gbW92ZXMgaXQgdG9wIFxuIC0gYXV0b2hpZGUgLS0tPiAhcmV2ZWFscyB1bmRlciBjdXJzb3IgcHJlc3N1cmUhIDwtLS0gXG4gLSBzaG93cyBvbmx5IGZhdm9yaXRlcyBhcHBzIiwKICAibmFtZSI6ICJEb2NrOiBSZWxvYWRlZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5QTC9Eb2NrLVJlbG9hZGVkIiwKICAidXVpZCI6ICJkb2NrLXJlbG9hZGVkQHNlbGZtYWRlLnBsIiwKICAidmVyc2lvbiI6IDYKfQ=="}
   }}
 , {"uuid": "shutdownbutton@asr-webdesign.fr", "name": "Add a Shutdown Button", "pname": "add-a-shutdown-button", "description": "Add power off button", "link": "https://extensions.gnome.org/extension/5272/add-a-shutdown-button/", "shell_version_map": {
     "40": {"version": "1", "sha256": "0kav86za1i9vkliwrbp86rnmvjn9pgvn1wdkqxbsxmmqhsn5awb9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBwb3dlciBvZmYgYnV0dG9uIiwKICAibmFtZSI6ICJBZGQgYSBTaHV0ZG93biBCdXR0b24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiIiwKICAidXVpZCI6ICJzaHV0ZG93bmJ1dHRvbkBhc3Itd2ViZGVzaWduLmZyIiwKICAidmVyc2lvbiI6IDEKfQ=="},
@@ -5134,7 +5327,8 @@
     "42": {"version": "4", "sha256": "1wqdvla5nm0v80h9df6js8cbwkwn3qv26n7gmq46f3in3zmjm73x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgXCJkaXNhYmxlIHRvdWNocGFkIHdoaWxlIHR5cGluZ1wiIHNldHRpbmcgbW9yZSBlYXNpbHkuIiwKICAibmFtZSI6ICJRdWljayBUb3VjaHBhZCBUb2dnbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20va3JhLW1vL3F1aWNrLXRvdWNocGFkLXRvZ2dsZS8iLAogICJ1dWlkIjogInF1aWNrLXRvdWNocGFkLXRvZ2dsZUBrcmFtby5odSIsCiAgInZlcnNpb24iOiA0Cn0="},
     "43": {"version": "7", "sha256": "0v28vyw6x9sy9d0gr86qqik0ywsk8bai68hy49f82jyfp39qw5qp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgXCJkaXNhYmxlIHRvdWNocGFkIHdoaWxlIHR5cGluZ1wiIHNldHRpbmcgbW9yZSBlYXNpbHkuIiwKICAibmFtZSI6ICJRdWljayBUb3VjaHBhZCBUb2dnbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2tyYS1tby9xdWljay10b3VjaHBhZC10b2dnbGUvIiwKICAidXVpZCI6ICJxdWljay10b3VjaHBhZC10b2dnbGVAa3JhbW8uaHUiLAogICJ2ZXJzaW9uIjogNwp9"},
     "44": {"version": "7", "sha256": "0v28vyw6x9sy9d0gr86qqik0ywsk8bai68hy49f82jyfp39qw5qp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgXCJkaXNhYmxlIHRvdWNocGFkIHdoaWxlIHR5cGluZ1wiIHNldHRpbmcgbW9yZSBlYXNpbHkuIiwKICAibmFtZSI6ICJRdWljayBUb3VjaHBhZCBUb2dnbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2tyYS1tby9xdWljay10b3VjaHBhZC10b2dnbGUvIiwKICAidXVpZCI6ICJxdWljay10b3VjaHBhZC10b2dnbGVAa3JhbW8uaHUiLAogICJ2ZXJzaW9uIjogNwp9"},
-    "45": {"version": "10", "sha256": "0349r8s4vriyi8apy2y8pdhjglcxh9ffjlyk96s2ijxjxfdpbmx3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgXCJkaXNhYmxlIHRvdWNocGFkIHdoaWxlIHR5cGluZ1wiIHNldHRpbmcgbW9yZSBlYXNpbHkuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJrcmEtbW8iCiAgfSwKICAibmFtZSI6ICJRdWljayBUb3VjaHBhZCBUb2dnbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20va3JhLW1vL3F1aWNrLXRvdWNocGFkLXRvZ2dsZS8iLAogICJ1dWlkIjogInF1aWNrLXRvdWNocGFkLXRvZ2dsZUBrcmFtby5odSIsCiAgInZlcnNpb24iOiAxMAp9"}
+    "45": {"version": "11", "sha256": "0yylhyv9rzwnb14qq41akywl3ddwi4x6rl4bpl0zc96iz7j0kzhn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgXCJkaXNhYmxlIHRvdWNocGFkIHdoaWxlIHR5cGluZ1wiIHNldHRpbmcgbW9yZSBlYXNpbHkuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJrcmEtbW8iCiAgfSwKICAibmFtZSI6ICJRdWljayBUb3VjaHBhZCBUb2dnbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2tyYS1tby9xdWljay10b3VjaHBhZC10b2dnbGUvIiwKICAidXVpZCI6ICJxdWljay10b3VjaHBhZC10b2dnbGVAa3JhbW8uaHUiLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
+    "46": {"version": "11", "sha256": "0yylhyv9rzwnb14qq41akywl3ddwi4x6rl4bpl0zc96iz7j0kzhn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0aGUgXCJkaXNhYmxlIHRvdWNocGFkIHdoaWxlIHR5cGluZ1wiIHNldHRpbmcgbW9yZSBlYXNpbHkuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJrcmEtbW8iCiAgfSwKICAibmFtZSI6ICJRdWljayBUb3VjaHBhZCBUb2dnbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2tyYS1tby9xdWljay10b3VjaHBhZC10b2dnbGUvIiwKICAidXVpZCI6ICJxdWljay10b3VjaHBhZC10b2dnbGVAa3JhbW8uaHUiLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
   }}
 , {"uuid": "desktop-zoom@colin.kinlo.ch", "name": "Desktop Zoom", "pname": "desktop-zoom", "description": "Scroll to zoom gnome desktop.\n\nUsage: Hold Alt and Scroll\n\nCursor must not be over a window (must be over background or top bar).\nMagnifier / zoom must be enabled in accessibility.\n\nTo disable zoom after removing the extension, disable zoom in gnomes accessibility settings:\nhttps://help.gnome.org/users/gnome-help/stable/a11y-mag.html.en\n\nReport issues on GITHUB.COM", "link": "https://extensions.gnome.org/extension/5297/desktop-zoom/", "shell_version_map": {
     "42": {"version": "6", "sha256": "14vi9jzdcnc9srsf8r4x38ymcjjxjl8xyb49rndcb3ldbr60wxpj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNjcm9sbCB0byB6b29tIGdub21lIGRlc2t0b3AuXG5cblVzYWdlOiBIb2xkIEFsdCBhbmQgU2Nyb2xsXG5cbkN1cnNvciBtdXN0IG5vdCBiZSBvdmVyIGEgd2luZG93IChtdXN0IGJlIG92ZXIgYmFja2dyb3VuZCBvciB0b3AgYmFyKS5cbk1hZ25pZmllciAvIHpvb20gbXVzdCBiZSBlbmFibGVkIGluIGFjY2Vzc2liaWxpdHkuXG5cblRvIGRpc2FibGUgem9vbSBhZnRlciByZW1vdmluZyB0aGUgZXh0ZW5zaW9uLCBkaXNhYmxlIHpvb20gaW4gZ25vbWVzIGFjY2Vzc2liaWxpdHkgc2V0dGluZ3M6XG5odHRwczovL2hlbHAuZ25vbWUub3JnL3VzZXJzL2dub21lLWhlbHAvc3RhYmxlL2ExMXktbWFnLmh0bWwuZW5cblxuUmVwb3J0IGlzc3VlcyBvbiBHSVRIVUIuQ09NIiwKICAibmFtZSI6ICJEZXNrdG9wIFpvb20iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NvbGluS2lubG9jaC9kZXNrdG9wLXpvb20tZ25vbWUtc2hlbGwiLAogICJ1dWlkIjogImRlc2t0b3Atem9vbUBjb2xpbi5raW5sby5jaCIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -5162,11 +5356,13 @@
     "42": {"version": "3", "sha256": "0f4kgq5qagv39s98bdyncfs9jwcd6lm5bnjb1qcfhr3364rd0yab", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogInNob3cgbmV0d29yayBwaW5nIGRlbGF5IiwKICAibmFtZSI6ICJQaW5nSW5kaWMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3h5bml1bS9waW5naW5kaWMiLAogICJ1dWlkIjogInBpbmdpbmRpY0B4eW5pdW0uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="},
     "43": {"version": "3", "sha256": "0f4kgq5qagv39s98bdyncfs9jwcd6lm5bnjb1qcfhr3364rd0yab", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogInNob3cgbmV0d29yayBwaW5nIGRlbGF5IiwKICAibmFtZSI6ICJQaW5nSW5kaWMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3h5bml1bS9waW5naW5kaWMiLAogICJ1dWlkIjogInBpbmdpbmRpY0B4eW5pdW0uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="}
   }}
-, {"uuid": "power-profile-indicator@laux.wtf", "name": "Power Profiles Indicator", "pname": "power-profile-indicator", "description": "a simple indicator in the system icons area of the top panel that represent the current power profile", "link": "https://extensions.gnome.org/extension/5335/power-profile-indicator/", "shell_version_map": {
+, {"uuid": "power-profile-indicator@laux.wtf", "name": "power-profile-indicator", "pname": "power-profile-indicator", "description": "a simple indicator in the system icons area of the top panel that represent the current power profile", "link": "https://extensions.gnome.org/extension/5335/power-profile-indicator/", "shell_version_map": {
     "40": {"version": "9", "sha256": "0011yqa1v2ymfczzmd2vckmqdpk1wapdzhg6l7453fnd25v7xxa9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImEgc2ltcGxlIGluZGljYXRvciBpbiB0aGUgc3lzdGVtIGljb25zIGFyZWEgb2YgdGhlIHRvcCBwYW5lbCB0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCBwb3dlciBwcm9maWxlIiwKICAibmFtZSI6ICJQb3dlciBQcm9maWxlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtaW5kaWNhdG9yQGxhdXgud3RmIiwKICAidXVpZC1kZXYiOiAicG93ZXItcHJvZmlsZS1pbmRpY2F0b3ItZGV2QGxhdXgud3RmIiwKICAidmVyc2lvbiI6IDkKfQ=="},
     "41": {"version": "9", "sha256": "0011yqa1v2ymfczzmd2vckmqdpk1wapdzhg6l7453fnd25v7xxa9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImEgc2ltcGxlIGluZGljYXRvciBpbiB0aGUgc3lzdGVtIGljb25zIGFyZWEgb2YgdGhlIHRvcCBwYW5lbCB0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCBwb3dlciBwcm9maWxlIiwKICAibmFtZSI6ICJQb3dlciBQcm9maWxlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtaW5kaWNhdG9yQGxhdXgud3RmIiwKICAidXVpZC1kZXYiOiAicG93ZXItcHJvZmlsZS1pbmRpY2F0b3ItZGV2QGxhdXgud3RmIiwKICAidmVyc2lvbiI6IDkKfQ=="},
     "42": {"version": "9", "sha256": "0011yqa1v2ymfczzmd2vckmqdpk1wapdzhg6l7453fnd25v7xxa9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImEgc2ltcGxlIGluZGljYXRvciBpbiB0aGUgc3lzdGVtIGljb25zIGFyZWEgb2YgdGhlIHRvcCBwYW5lbCB0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCBwb3dlciBwcm9maWxlIiwKICAibmFtZSI6ICJQb3dlciBQcm9maWxlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtaW5kaWNhdG9yQGxhdXgud3RmIiwKICAidXVpZC1kZXYiOiAicG93ZXItcHJvZmlsZS1pbmRpY2F0b3ItZGV2QGxhdXgud3RmIiwKICAidmVyc2lvbiI6IDkKfQ=="},
-    "43": {"version": "9", "sha256": "0011yqa1v2ymfczzmd2vckmqdpk1wapdzhg6l7453fnd25v7xxa9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImEgc2ltcGxlIGluZGljYXRvciBpbiB0aGUgc3lzdGVtIGljb25zIGFyZWEgb2YgdGhlIHRvcCBwYW5lbCB0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCBwb3dlciBwcm9maWxlIiwKICAibmFtZSI6ICJQb3dlciBQcm9maWxlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtaW5kaWNhdG9yQGxhdXgud3RmIiwKICAidXVpZC1kZXYiOiAicG93ZXItcHJvZmlsZS1pbmRpY2F0b3ItZGV2QGxhdXgud3RmIiwKICAidmVyc2lvbiI6IDkKfQ=="}
+    "43": {"version": "9", "sha256": "0011yqa1v2ymfczzmd2vckmqdpk1wapdzhg6l7453fnd25v7xxa9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImEgc2ltcGxlIGluZGljYXRvciBpbiB0aGUgc3lzdGVtIGljb25zIGFyZWEgb2YgdGhlIHRvcCBwYW5lbCB0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCBwb3dlciBwcm9maWxlIiwKICAibmFtZSI6ICJQb3dlciBQcm9maWxlcyBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtaW5kaWNhdG9yQGxhdXgud3RmIiwKICAidXVpZC1kZXYiOiAicG93ZXItcHJvZmlsZS1pbmRpY2F0b3ItZGV2QGxhdXgud3RmIiwKICAidmVyc2lvbiI6IDkKfQ=="},
+    "45": {"version": "10", "sha256": "0b9xq4gd6hc0h1ravsymh9vh9ggylx3f13br8916ddrilq43lv7d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImEgc2ltcGxlIGluZGljYXRvciBpbiB0aGUgc3lzdGVtIGljb25zIGFyZWEgb2YgdGhlIHRvcCBwYW5lbCB0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCBwb3dlciBwcm9maWxlIiwKICAibmFtZSI6ICJwb3dlci1wcm9maWxlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtaW5kaWNhdG9yQGxhdXgud3RmIiwKICAidXVpZC1kZXYiOiAicG93ZXItcHJvZmlsZS1pbmRpY2F0b3ItZGV2QGxhdXgud3RmIiwKICAidmVyc2lvbiI6IDEwCn0="},
+    "46": {"version": "10", "sha256": "0b9xq4gd6hc0h1ravsymh9vh9ggylx3f13br8916ddrilq43lv7d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImEgc2ltcGxlIGluZGljYXRvciBpbiB0aGUgc3lzdGVtIGljb25zIGFyZWEgb2YgdGhlIHRvcCBwYW5lbCB0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCBwb3dlciBwcm9maWxlIiwKICAibmFtZSI6ICJwb3dlci1wcm9maWxlLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtaW5kaWNhdG9yQGxhdXgud3RmIiwKICAidXVpZC1kZXYiOiAicG93ZXItcHJvZmlsZS1pbmRpY2F0b3ItZGV2QGxhdXgud3RmIiwKICAidmVyc2lvbiI6IDEwCn0="}
   }}
 , {"uuid": "widgets@aylur", "name": "Aylur's Widgets", "pname": "aylurs-widgets", "description": "My set of extensions: Battery Bar, Dash Board, DateMenu Mod, Media Player, Power Menu, Workspace Indicator, Notification Indicator, Modified Quick Settings, Background Clock.\n Disclaimer: this extension contains copyrighted icons.", "link": "https://extensions.gnome.org/extension/5338/aylurs-widgets/", "shell_version_map": {
     "42": {"version": "20", "sha256": "1b0hx9h04b04ih58zk4jmj4w18gifnbhhwmmrfwc2rvnagg63mhv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk15IHNldCBvZiBleHRlbnNpb25zOiBCYXR0ZXJ5IEJhciwgRGFzaCBCb2FyZCwgRGF0ZU1lbnUgTW9kLCBNZWRpYSBQbGF5ZXIsIFBvd2VyIE1lbnUsIFdvcmtzcGFjZSBJbmRpY2F0b3IsIE5vdGlmaWNhdGlvbiBJbmRpY2F0b3IsIE1vZGlmaWVkIFF1aWNrIFNldHRpbmdzLCBCYWNrZ3JvdW5kIENsb2NrLlxuIERpc2NsYWltZXI6IHRoaXMgZXh0ZW5zaW9uIGNvbnRhaW5zIGNvcHlyaWdodGVkIGljb25zLiIsCiAgIm5hbWUiOiAiQXlsdXIncyBXaWRnZXRzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmF5bHVycy13aWRnZXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9BeWx1ci9nbm9tZS1leHRlbnNpb25zIiwKICAidXVpZCI6ICJ3aWRnZXRzQGF5bHVyIiwKICAidmVyc2lvbiI6IDIwCn0="},
@@ -5206,13 +5402,15 @@
     "42": {"version": "11", "sha256": "0jj0354bc23944svvymlq97g0fr8m1h8i1q8mrmni2ifqqq4i2p5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIFdpcmVndWFyZCB0dW5uZWxzIiwKICAibmFtZSI6ICJXaXJlR3VhcmQtVlBOLWV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NKQkVSVFJBTkQvZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbkBTSkJFUlRSQU5ELmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
     "43": {"version": "11", "sha256": "0jj0354bc23944svvymlq97g0fr8m1h8i1q8mrmni2ifqqq4i2p5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIFdpcmVndWFyZCB0dW5uZWxzIiwKICAibmFtZSI6ICJXaXJlR3VhcmQtVlBOLWV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NKQkVSVFJBTkQvZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbkBTSkJFUlRSQU5ELmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
     "44": {"version": "11", "sha256": "0jj0354bc23944svvymlq97g0fr8m1h8i1q8mrmni2ifqqq4i2p5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIFdpcmVndWFyZCB0dW5uZWxzIiwKICAibmFtZSI6ICJXaXJlR3VhcmQtVlBOLWV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NKQkVSVFJBTkQvZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbkBTSkJFUlRSQU5ELmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
-    "45": {"version": "12", "sha256": "0d4icc9hrwcwk78s3bpbl6dm417m3avv2h7kq7pg057d4s526pza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIFdpcmVndWFyZCB0dW5uZWxzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbkBTSkJFUlRSQU5ELmdpdGh1Yi5jb20iLAogICJuYW1lIjogIldpcmVHdWFyZC1WUE4tZXh0ZW5zaW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1NKQkVSVFJBTkQvZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbkBTSkJFUlRSQU5ELmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
+    "45": {"version": "13", "sha256": "0i8v949w3bv88fnvgx9i0gflmf728y3q4sp24i74n8mzh5qfj6j2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIFdpcmVndWFyZCB0dW5uZWxzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbkBTSkJFUlRSQU5ELmdpdGh1Yi5jb20iLAogICJuYW1lIjogIldpcmVHdWFyZC1WUE4tZXh0ZW5zaW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TSkJFUlRSQU5EL2dub21lLXdpcmVndWFyZC1leHRlbnNpb24iLAogICJ1dWlkIjogImdub21lLXdpcmVndWFyZC1leHRlbnNpb25AU0pCRVJUUkFORC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
+    "46": {"version": "13", "sha256": "0i8v949w3bv88fnvgx9i0gflmf728y3q4sp24i74n8mzh5qfj6j2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZS9EaXNhYmxlIFdpcmVndWFyZCB0dW5uZWxzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtd2lyZWd1YXJkLWV4dGVuc2lvbkBTSkJFUlRSQU5ELmdpdGh1Yi5jb20iLAogICJuYW1lIjogIldpcmVHdWFyZC1WUE4tZXh0ZW5zaW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TSkJFUlRSQU5EL2dub21lLXdpcmVndWFyZC1leHRlbnNpb24iLAogICJ1dWlkIjogImdub21lLXdpcmVndWFyZC1leHRlbnNpb25AU0pCRVJUUkFORC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="}
   }}
 , {"uuid": "memento-mori@paveloom", "name": "Memento Mori", "pname": "memento-mori", "description": "Make every second of your life count. Literally!\n\nThis extension adds a counter to the panel which counts down the time you have left based on your birthday and life expectancy.", "link": "https://extensions.gnome.org/extension/5365/memento-mori/", "shell_version_map": {
     "42": {"version": "7", "sha256": "1h60dmipyc7xhryccal3rc0hhv872k1ikivzw1n792scksg89zjg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgZXZlcnkgc2Vjb25kIG9mIHlvdXIgbGlmZSBjb3VudC4gTGl0ZXJhbGx5IVxuXG5UaGlzIGV4dGVuc2lvbiBhZGRzIGEgY291bnRlciB0byB0aGUgcGFuZWwgd2hpY2ggY291bnRzIGRvd24gdGhlIHRpbWUgeW91IGhhdmUgbGVmdCBiYXNlZCBvbiB5b3VyIGJpcnRoZGF5IGFuZCBsaWZlIGV4cGVjdGFuY3kuIiwKICAibmFtZSI6ICJNZW1lbnRvIE1vcmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWVtZW50by1tb3JpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGF2ZWxvb20tdC9nbm9tZS1zaGVsbC1tZW1lbnRvLW1vcmkiLAogICJ1dWlkIjogIm1lbWVudG8tbW9yaUBwYXZlbG9vbSIsCiAgInZlcnNpb24iOiA3Cn0="},
     "43": {"version": "7", "sha256": "1h60dmipyc7xhryccal3rc0hhv872k1ikivzw1n792scksg89zjg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgZXZlcnkgc2Vjb25kIG9mIHlvdXIgbGlmZSBjb3VudC4gTGl0ZXJhbGx5IVxuXG5UaGlzIGV4dGVuc2lvbiBhZGRzIGEgY291bnRlciB0byB0aGUgcGFuZWwgd2hpY2ggY291bnRzIGRvd24gdGhlIHRpbWUgeW91IGhhdmUgbGVmdCBiYXNlZCBvbiB5b3VyIGJpcnRoZGF5IGFuZCBsaWZlIGV4cGVjdGFuY3kuIiwKICAibmFtZSI6ICJNZW1lbnRvIE1vcmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWVtZW50by1tb3JpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGF2ZWxvb20tdC9nbm9tZS1zaGVsbC1tZW1lbnRvLW1vcmkiLAogICJ1dWlkIjogIm1lbWVudG8tbW9yaUBwYXZlbG9vbSIsCiAgInZlcnNpb24iOiA3Cn0="},
     "44": {"version": "7", "sha256": "1h60dmipyc7xhryccal3rc0hhv872k1ikivzw1n792scksg89zjg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgZXZlcnkgc2Vjb25kIG9mIHlvdXIgbGlmZSBjb3VudC4gTGl0ZXJhbGx5IVxuXG5UaGlzIGV4dGVuc2lvbiBhZGRzIGEgY291bnRlciB0byB0aGUgcGFuZWwgd2hpY2ggY291bnRzIGRvd24gdGhlIHRpbWUgeW91IGhhdmUgbGVmdCBiYXNlZCBvbiB5b3VyIGJpcnRoZGF5IGFuZCBsaWZlIGV4cGVjdGFuY3kuIiwKICAibmFtZSI6ICJNZW1lbnRvIE1vcmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWVtZW50by1tb3JpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGF2ZWxvb20tdC9nbm9tZS1zaGVsbC1tZW1lbnRvLW1vcmkiLAogICJ1dWlkIjogIm1lbWVudG8tbW9yaUBwYXZlbG9vbSIsCiAgInZlcnNpb24iOiA3Cn0="},
-    "45": {"version": "9", "sha256": "1f5115widiwbsgnnfaq8jkm4rdsl561vh2phbj5iiik3sb0q4p29", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgZXZlcnkgc2Vjb25kIG9mIHlvdXIgbGlmZSBjb3VudC4gTGl0ZXJhbGx5IVxuXG5UaGlzIGV4dGVuc2lvbiBhZGRzIGEgY291bnRlciB0byB0aGUgcGFuZWwgd2hpY2ggY291bnRzIGRvd24gdGhlIHRpbWUgeW91IGhhdmUgbGVmdCBiYXNlZCBvbiB5b3VyIGJpcnRoZGF5IGFuZCBsaWZlIGV4cGVjdGFuY3kuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWVtZW50by1tb3JpQHBhdmVsb29tIiwKICAibmFtZSI6ICJNZW1lbnRvIE1vcmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWVtZW50by1tb3JpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhdmVsb29tLXQvZ25vbWUtc2hlbGwtbWVtZW50by1tb3JpIiwKICAidXVpZCI6ICJtZW1lbnRvLW1vcmlAcGF2ZWxvb20iLAogICJ2ZXJzaW9uIjogOQp9"}
+    "45": {"version": "10", "sha256": "02bj2vhxy18p81wbypkbkxwx96g40c7ws9spkqmmv3dlmwm6ynqg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgZXZlcnkgc2Vjb25kIG9mIHlvdXIgbGlmZSBjb3VudC4gTGl0ZXJhbGx5IVxuXG5UaGlzIGV4dGVuc2lvbiBhZGRzIGEgY291bnRlciB0byB0aGUgcGFuZWwgd2hpY2ggY291bnRzIGRvd24gdGhlIHRpbWUgeW91IGhhdmUgbGVmdCBiYXNlZCBvbiB5b3VyIGJpcnRoZGF5IGFuZCBsaWZlIGV4cGVjdGFuY3kuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWVtZW50by1tb3JpQHBhdmVsb29tIiwKICAibmFtZSI6ICJNZW1lbnRvIE1vcmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWVtZW50by1tb3JpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wYXZlbG9vbS10L2dub21lLXNoZWxsLW1lbWVudG8tbW9yaSIsCiAgInV1aWQiOiAibWVtZW50by1tb3JpQHBhdmVsb29tIiwKICAidmVyc2lvbiI6IDEwCn0="},
+    "46": {"version": "10", "sha256": "02bj2vhxy18p81wbypkbkxwx96g40c7ws9spkqmmv3dlmwm6ynqg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2UgZXZlcnkgc2Vjb25kIG9mIHlvdXIgbGlmZSBjb3VudC4gTGl0ZXJhbGx5IVxuXG5UaGlzIGV4dGVuc2lvbiBhZGRzIGEgY291bnRlciB0byB0aGUgcGFuZWwgd2hpY2ggY291bnRzIGRvd24gdGhlIHRpbWUgeW91IGhhdmUgbGVmdCBiYXNlZCBvbiB5b3VyIGJpcnRoZGF5IGFuZCBsaWZlIGV4cGVjdGFuY3kuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibWVtZW50by1tb3JpQHBhdmVsb29tIiwKICAibmFtZSI6ICJNZW1lbnRvIE1vcmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubWVtZW50by1tb3JpIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wYXZlbG9vbS10L2dub21lLXNoZWxsLW1lbWVudG8tbW9yaSIsCiAgInV1aWQiOiAibWVtZW50by1tb3JpQHBhdmVsb29tIiwKICAidmVyc2lvbiI6IDEwCn0="}
   }}
 , {"uuid": "external-ip-extension@ipcan.cyou", "name": "Show External IP", "pname": "show-external-ip-thisipcancyou", "description": "Displays your external IP in the Toolbar and sends a system notification if changed. \n\nThis extension is handy for those work at different locations or with different VPNs to quickly see your public IP and country. It uses the free thisipcan.cyou service to check at regular intervals and whenever computer network events occur (like switching networks or locations).", "link": "https://extensions.gnome.org/extension/5368/show-external-ip-thisipcancyou/", "shell_version_map": {
     "40": {"version": "15", "sha256": "0k4jlhdhfv46f12wa112yw81kp4fmz2g2mj772vjbqb7cid7gdf1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHlvdXIgZXh0ZXJuYWwgSVAgaW4gdGhlIFRvb2xiYXIgYW5kIHNlbmRzIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBpZiBjaGFuZ2VkLiBcblxuVGhpcyBleHRlbnNpb24gaXMgaGFuZHkgZm9yIHRob3NlIHdvcmsgYXQgZGlmZmVyZW50IGxvY2F0aW9ucyBvciB3aXRoIGRpZmZlcmVudCBWUE5zIHRvIHF1aWNrbHkgc2VlIHlvdXIgcHVibGljIElQIGFuZCBjb3VudHJ5LiBJdCB1c2VzIHRoZSBmcmVlIHRoaXNpcGNhbi5jeW91IHNlcnZpY2UgdG8gY2hlY2sgYXQgcmVndWxhciBpbnRlcnZhbHMgYW5kIHdoZW5ldmVyIGNvbXB1dGVyIG5ldHdvcmsgZXZlbnRzIG9jY3VyIChsaWtlIHN3aXRjaGluZyBuZXR3b3JrcyBvciBsb2NhdGlvbnMpLiIsCiAgImdldHRleHQtZG9tYWluIjogImV4dGVybmFsLWlwLW5vdGlmaWNhdGlvbiIsCiAgIm5hbWUiOiAiU2hvdyBFeHRlcm5hbCBJUCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jd2l0dGVuYmVyZy90aGlzaXBjYW4uY3lvdSIsCiAgInV1aWQiOiAiZXh0ZXJuYWwtaXAtZXh0ZW5zaW9uQGlwY2FuLmN5b3UiLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
@@ -5246,7 +5444,8 @@
     "42": {"version": "13", "sha256": "0677akxfj5jwl1i75srkr1ylb69hydkzafim42xbq6ask7y9d19x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBzY3JlZW4gcm90YXRpb24gcmVnYXJkbGVzcyBvZiB0b3VjaCBtb2RlLiBGb3JrIG9mIFNjcmVlbiBBdXRvcm90YXRlIGJ5IEtvc21vc3ByZWRhbmllLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW4tcm90YXRlIiwKICAibmFtZSI6ICJTY3JlZW4gUm90YXRlIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zY3JlZW4tcm90YXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zaHl6dXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNjcmVlbi1hdXRvcm90YXRlIiwKICAidXVpZCI6ICJzY3JlZW4tcm90YXRlQHNoeXp1cy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "43": {"version": "13", "sha256": "0677akxfj5jwl1i75srkr1ylb69hydkzafim42xbq6ask7y9d19x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBzY3JlZW4gcm90YXRpb24gcmVnYXJkbGVzcyBvZiB0b3VjaCBtb2RlLiBGb3JrIG9mIFNjcmVlbiBBdXRvcm90YXRlIGJ5IEtvc21vc3ByZWRhbmllLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW4tcm90YXRlIiwKICAibmFtZSI6ICJTY3JlZW4gUm90YXRlIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zY3JlZW4tcm90YXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zaHl6dXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNjcmVlbi1hdXRvcm90YXRlIiwKICAidXVpZCI6ICJzY3JlZW4tcm90YXRlQHNoeXp1cy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
     "44": {"version": "13", "sha256": "0677akxfj5jwl1i75srkr1ylb69hydkzafim42xbq6ask7y9d19x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBzY3JlZW4gcm90YXRpb24gcmVnYXJkbGVzcyBvZiB0b3VjaCBtb2RlLiBGb3JrIG9mIFNjcmVlbiBBdXRvcm90YXRlIGJ5IEtvc21vc3ByZWRhbmllLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW4tcm90YXRlIiwKICAibmFtZSI6ICJTY3JlZW4gUm90YXRlIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zY3JlZW4tcm90YXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zaHl6dXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNjcmVlbi1hdXRvcm90YXRlIiwKICAidXVpZCI6ICJzY3JlZW4tcm90YXRlQHNoeXp1cy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
-    "45": {"version": "15", "sha256": "0gqci96jcigk2ax16fngqn0k86fx4xwhmn2iamnbi9y0ir7s3gla", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBzY3JlZW4gcm90YXRpb24gcmVnYXJkbGVzcyBvZiB0b3VjaCBtb2RlLiBGb3JrIG9mIFNjcmVlbiBBdXRvcm90YXRlIGJ5IEtvc21vc3ByZWRhbmllLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW4tcm90YXRlIiwKICAibmFtZSI6ICJTY3JlZW4gUm90YXRlIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zY3JlZW4tcm90YXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NoeXp1cy9nbm9tZS1zaGVsbC1leHRlbnNpb24tc2NyZWVuLWF1dG9yb3RhdGUiLAogICJ1dWlkIjogInNjcmVlbi1yb3RhdGVAc2h5enVzLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxNQp9"}
+    "45": {"version": "19", "sha256": "0ilkks5wjzxv3nahb0vjm1xq61kyiwk7zr246jl7kwdsfyrnxq69", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBzY3JlZW4gcm90YXRpb24gcmVnYXJkbGVzcyBvZiB0b3VjaCBtb2RlLiBGb3JrIG9mIFNjcmVlbiBBdXRvcm90YXRlIGJ5IEtvc21vc3ByZWRhbmllLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW4tcm90YXRlIiwKICAibmFtZSI6ICJTY3JlZW4gUm90YXRlIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zY3JlZW4tcm90YXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zaHl6dXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNjcmVlbi1hdXRvcm90YXRlIiwKICAidXVpZCI6ICJzY3JlZW4tcm90YXRlQHNoeXp1cy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTkKfQ=="},
+    "46": {"version": "19", "sha256": "0ilkks5wjzxv3nahb0vjm1xq61kyiwk7zr246jl7kwdsfyrnxq69", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBzY3JlZW4gcm90YXRpb24gcmVnYXJkbGVzcyBvZiB0b3VjaCBtb2RlLiBGb3JrIG9mIFNjcmVlbiBBdXRvcm90YXRlIGJ5IEtvc21vc3ByZWRhbmllLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1zY3JlZW4tcm90YXRlIiwKICAibmFtZSI6ICJTY3JlZW4gUm90YXRlIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zY3JlZW4tcm90YXRlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zaHl6dXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXNjcmVlbi1hdXRvcm90YXRlIiwKICAidXVpZCI6ICJzY3JlZW4tcm90YXRlQHNoeXp1cy5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTkKfQ=="}
   }}
 , {"uuid": "devtools@romix.ch", "name": "Dev Tools", "pname": "dev-tools", "description": "Generate random UUID and some timestamp and base64 conversions.", "link": "https://extensions.gnome.org/extension/5393/dev-tools/", "shell_version_map": {
     "42": {"version": "11", "sha256": "10w3yl0x69nxp0ad4wkfniqav2k005sfmf6c9v87ys7qad8gp1zm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdlbmVyYXRlIHJhbmRvbSBVVUlEIGFuZCBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzIGFzIGEgc2hlbGwgZXh0ZW5zaW9uLiIsCiAgIm5hbWUiOiAiRGV2IFRvb2xzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcm9taXhjaC9nbm9tZS1zaGVsbC1leHRlbnNpb24tZGV2LXRvb2xzIiwKICAidXVpZCI6ICJkZXZ0b29sc0Byb21peC5jaCIsCiAgInZlcnNpb24iOiAxMQp9"},
@@ -5268,7 +5467,8 @@
     "42": {"version": "3", "sha256": "0ryfg286b995zi2r1y1h91jq2xxw4ss5brjzxi2bsh97lij74cyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgYnJpbmdzIHRoZSB3aW5kb3cgaW50byBmb2N1cyBpbnN0ZWFkLiIsCiAgImxpY2Vuc2UiOiAiR1BMdjMiLAogICJuYW1lIjogIkdyYW5kIFRoZWZ0IEZvY3VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96YWxja29zL0dyYW5kVGhlZnRGb2N1cyIsCiAgInV1aWQiOiAiZ3JhbmQtdGhlZnQtZm9jdXNAemFsY2tvcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
     "43": {"version": "3", "sha256": "0ryfg286b995zi2r1y1h91jq2xxw4ss5brjzxi2bsh97lij74cyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgYnJpbmdzIHRoZSB3aW5kb3cgaW50byBmb2N1cyBpbnN0ZWFkLiIsCiAgImxpY2Vuc2UiOiAiR1BMdjMiLAogICJuYW1lIjogIkdyYW5kIFRoZWZ0IEZvY3VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96YWxja29zL0dyYW5kVGhlZnRGb2N1cyIsCiAgInV1aWQiOiAiZ3JhbmQtdGhlZnQtZm9jdXNAemFsY2tvcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
     "44": {"version": "3", "sha256": "0ryfg286b995zi2r1y1h91jq2xxw4ss5brjzxi2bsh97lij74cyn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgYnJpbmdzIHRoZSB3aW5kb3cgaW50byBmb2N1cyBpbnN0ZWFkLiIsCiAgImxpY2Vuc2UiOiAiR1BMdjMiLAogICJuYW1lIjogIkdyYW5kIFRoZWZ0IEZvY3VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96YWxja29zL0dyYW5kVGhlZnRGb2N1cyIsCiAgInV1aWQiOiAiZ3JhbmQtdGhlZnQtZm9jdXNAemFsY2tvcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
-    "45": {"version": "5", "sha256": "019pc037l4drys4irm9ivm3p2k3hmq3cb1p51jwawyb4dpzxx1ha", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgYnJpbmdzIHRoZSB3aW5kb3cgaW50byBmb2N1cyBpbnN0ZWFkLiIsCiAgImxpY2Vuc2UiOiAiR1BMdjMiLAogICJuYW1lIjogIkdyYW5kIFRoZWZ0IEZvY3VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3phbGNrb3MvR3JhbmRUaGVmdEZvY3VzIiwKICAidXVpZCI6ICJncmFuZC10aGVmdC1mb2N1c0B6YWxja29zLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"}
+    "45": {"version": "6", "sha256": "147yzh20brw8pwacm0lvhz2kaqz321xigyx44dcd5fxrxwgd4y62", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgYnJpbmdzIHRoZSB3aW5kb3cgaW50byBmb2N1cyBpbnN0ZWFkLiIsCiAgImxpY2Vuc2UiOiAiR1BMdjMiLAogICJuYW1lIjogIkdyYW5kIFRoZWZ0IEZvY3VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96YWxja29zL0dyYW5kVGhlZnRGb2N1cyIsCiAgInV1aWQiOiAiZ3JhbmQtdGhlZnQtZm9jdXNAemFsY2tvcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
+    "46": {"version": "6", "sha256": "147yzh20brw8pwacm0lvhz2kaqz321xigyx44dcd5fxrxwgd4y62", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgYnJpbmdzIHRoZSB3aW5kb3cgaW50byBmb2N1cyBpbnN0ZWFkLiIsCiAgImxpY2Vuc2UiOiAiR1BMdjMiLAogICJuYW1lIjogIkdyYW5kIFRoZWZ0IEZvY3VzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96YWxja29zL0dyYW5kVGhlZnRGb2N1cyIsCiAgInV1aWQiOiAiZ3JhbmQtdGhlZnQtZm9jdXNAemFsY2tvcy5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="}
   }}
 , {"uuid": "wifiqrcode@glerro.pm.me", "name": "Wifi QR Code", "pname": "wifi-qrcode", "description": "This extension add a switch to the WiFi menu, in the GNOME system menu, that show a QR Code of the active connection.\n\nThis can be useful for quickly connecting devices capable of reading QR Code and applying the settings to the system, without having to type in the name and the password of the WiFi. (e.g. Android Smartphone). \n\nFrom version 4 added a functionality to copy the QR Code to clipboard with right click on it.", "link": "https://extensions.gnome.org/extension/5416/wifi-qrcode/", "shell_version_map": {
     "40": {"version": "10", "sha256": "0sga40ixfj8wcxm66wm2rvcyzgbdfzl7ji8hjwqa0hx1s125nv60", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZCBhIHN3aXRjaCB0byB0aGUgV2lGaSBtZW51LCBpbiB0aGUgR05PTUUgc3lzdGVtIG1lbnUsIHRoYXQgc2hvdyBhIFFSIENvZGUgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLlxuXG5UaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHF1aWNrbHkgY29ubmVjdGluZyBkZXZpY2VzIGNhcGFibGUgb2YgcmVhZGluZyBRUiBDb2RlIGFuZCBhcHBseWluZyB0aGUgc2V0dGluZ3MgdG8gdGhlIHN5c3RlbSwgd2l0aG91dCBoYXZpbmcgdG8gdHlwZSBpbiB0aGUgbmFtZSBhbmQgdGhlIHBhc3N3b3JkIG9mIHRoZSBXaUZpLiAoZS5nLiBBbmRyb2lkIFNtYXJ0cGhvbmUpLiBcblxuRnJvbSB2ZXJzaW9uIDQgYWRkZWQgYSBmdW5jdGlvbmFsaXR5IHRvIGNvcHkgdGhlIFFSIENvZGUgdG8gY2xpcGJvYXJkIHdpdGggcmlnaHQgY2xpY2sgb24gaXQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZmlxcmNvZGUiLAogICJuYW1lIjogIldpZmkgUVIgQ29kZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi13aWZpcXJjb2RlIiwKICAidXVpZCI6ICJ3aWZpcXJjb2RlQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiAxMAp9"},
@@ -5276,7 +5476,8 @@
     "42": {"version": "10", "sha256": "0sga40ixfj8wcxm66wm2rvcyzgbdfzl7ji8hjwqa0hx1s125nv60", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZCBhIHN3aXRjaCB0byB0aGUgV2lGaSBtZW51LCBpbiB0aGUgR05PTUUgc3lzdGVtIG1lbnUsIHRoYXQgc2hvdyBhIFFSIENvZGUgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLlxuXG5UaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHF1aWNrbHkgY29ubmVjdGluZyBkZXZpY2VzIGNhcGFibGUgb2YgcmVhZGluZyBRUiBDb2RlIGFuZCBhcHBseWluZyB0aGUgc2V0dGluZ3MgdG8gdGhlIHN5c3RlbSwgd2l0aG91dCBoYXZpbmcgdG8gdHlwZSBpbiB0aGUgbmFtZSBhbmQgdGhlIHBhc3N3b3JkIG9mIHRoZSBXaUZpLiAoZS5nLiBBbmRyb2lkIFNtYXJ0cGhvbmUpLiBcblxuRnJvbSB2ZXJzaW9uIDQgYWRkZWQgYSBmdW5jdGlvbmFsaXR5IHRvIGNvcHkgdGhlIFFSIENvZGUgdG8gY2xpcGJvYXJkIHdpdGggcmlnaHQgY2xpY2sgb24gaXQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZmlxcmNvZGUiLAogICJuYW1lIjogIldpZmkgUVIgQ29kZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi13aWZpcXJjb2RlIiwKICAidXVpZCI6ICJ3aWZpcXJjb2RlQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "43": {"version": "10", "sha256": "0sga40ixfj8wcxm66wm2rvcyzgbdfzl7ji8hjwqa0hx1s125nv60", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZCBhIHN3aXRjaCB0byB0aGUgV2lGaSBtZW51LCBpbiB0aGUgR05PTUUgc3lzdGVtIG1lbnUsIHRoYXQgc2hvdyBhIFFSIENvZGUgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLlxuXG5UaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHF1aWNrbHkgY29ubmVjdGluZyBkZXZpY2VzIGNhcGFibGUgb2YgcmVhZGluZyBRUiBDb2RlIGFuZCBhcHBseWluZyB0aGUgc2V0dGluZ3MgdG8gdGhlIHN5c3RlbSwgd2l0aG91dCBoYXZpbmcgdG8gdHlwZSBpbiB0aGUgbmFtZSBhbmQgdGhlIHBhc3N3b3JkIG9mIHRoZSBXaUZpLiAoZS5nLiBBbmRyb2lkIFNtYXJ0cGhvbmUpLiBcblxuRnJvbSB2ZXJzaW9uIDQgYWRkZWQgYSBmdW5jdGlvbmFsaXR5IHRvIGNvcHkgdGhlIFFSIENvZGUgdG8gY2xpcGJvYXJkIHdpdGggcmlnaHQgY2xpY2sgb24gaXQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZmlxcmNvZGUiLAogICJuYW1lIjogIldpZmkgUVIgQ29kZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi13aWZpcXJjb2RlIiwKICAidXVpZCI6ICJ3aWZpcXJjb2RlQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "44": {"version": "10", "sha256": "0sga40ixfj8wcxm66wm2rvcyzgbdfzl7ji8hjwqa0hx1s125nv60", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZCBhIHN3aXRjaCB0byB0aGUgV2lGaSBtZW51LCBpbiB0aGUgR05PTUUgc3lzdGVtIG1lbnUsIHRoYXQgc2hvdyBhIFFSIENvZGUgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLlxuXG5UaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHF1aWNrbHkgY29ubmVjdGluZyBkZXZpY2VzIGNhcGFibGUgb2YgcmVhZGluZyBRUiBDb2RlIGFuZCBhcHBseWluZyB0aGUgc2V0dGluZ3MgdG8gdGhlIHN5c3RlbSwgd2l0aG91dCBoYXZpbmcgdG8gdHlwZSBpbiB0aGUgbmFtZSBhbmQgdGhlIHBhc3N3b3JkIG9mIHRoZSBXaUZpLiAoZS5nLiBBbmRyb2lkIFNtYXJ0cGhvbmUpLiBcblxuRnJvbSB2ZXJzaW9uIDQgYWRkZWQgYSBmdW5jdGlvbmFsaXR5IHRvIGNvcHkgdGhlIFFSIENvZGUgdG8gY2xpcGJvYXJkIHdpdGggcmlnaHQgY2xpY2sgb24gaXQuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZmlxcmNvZGUiLAogICJuYW1lIjogIldpZmkgUVIgQ29kZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi13aWZpcXJjb2RlIiwKICAidXVpZCI6ICJ3aWZpcXJjb2RlQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiAxMAp9"},
-    "45": {"version": "14", "sha256": "167lllr4fy8xl8fdc3sn3b2gl66n4qmmxdd5wj6ra061cp1kz3ky", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZCBhIHN3aXRjaCB0byB0aGUgV2lGaSBtZW51LCBpbiB0aGUgR05PTUUgc3lzdGVtIG1lbnUsIHRoYXQgc2hvdyBhIFFSIENvZGUgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLlxuXG5UaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHF1aWNrbHkgY29ubmVjdGluZyBkZXZpY2VzIGNhcGFibGUgb2YgcmVhZGluZyBRUiBDb2RlIGFuZCBhcHBseWluZyB0aGUgc2V0dGluZ3MgdG8gdGhlIHN5c3RlbSwgd2l0aG91dCBoYXZpbmcgdG8gdHlwZSBpbiB0aGUgbmFtZSBhbmQgdGhlIHBhc3N3b3JkIG9mIHRoZSBXaUZpLiAoZS5nLiBBbmRyb2lkIFNtYXJ0cGhvbmUpLiBcblxuRnJvbSB2ZXJzaW9uIDQgYWRkZWQgYSBmdW5jdGlvbmFsaXR5IHRvIGNvcHkgdGhlIFFSIENvZGUgdG8gY2xpcGJvYXJkIHdpdGggcmlnaHQgY2xpY2sgb24gaXQuIiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAiZ2xlcnJvIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aWZpcXJjb2RlIiwKICAibmFtZSI6ICJXaWZpIFFSIENvZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2dsZXJyby9nbm9tZS1zaGVsbC1leHRlbnNpb24td2lmaXFyY29kZSIsCiAgInV1aWQiOiAid2lmaXFyY29kZUBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
+    "45": {"version": "14", "sha256": "167lllr4fy8xl8fdc3sn3b2gl66n4qmmxdd5wj6ra061cp1kz3ky", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZCBhIHN3aXRjaCB0byB0aGUgV2lGaSBtZW51LCBpbiB0aGUgR05PTUUgc3lzdGVtIG1lbnUsIHRoYXQgc2hvdyBhIFFSIENvZGUgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLlxuXG5UaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHF1aWNrbHkgY29ubmVjdGluZyBkZXZpY2VzIGNhcGFibGUgb2YgcmVhZGluZyBRUiBDb2RlIGFuZCBhcHBseWluZyB0aGUgc2V0dGluZ3MgdG8gdGhlIHN5c3RlbSwgd2l0aG91dCBoYXZpbmcgdG8gdHlwZSBpbiB0aGUgbmFtZSBhbmQgdGhlIHBhc3N3b3JkIG9mIHRoZSBXaUZpLiAoZS5nLiBBbmRyb2lkIFNtYXJ0cGhvbmUpLiBcblxuRnJvbSB2ZXJzaW9uIDQgYWRkZWQgYSBmdW5jdGlvbmFsaXR5IHRvIGNvcHkgdGhlIFFSIENvZGUgdG8gY2xpcGJvYXJkIHdpdGggcmlnaHQgY2xpY2sgb24gaXQuIiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAiZ2xlcnJvIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aWZpcXJjb2RlIiwKICAibmFtZSI6ICJXaWZpIFFSIENvZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2dsZXJyby9nbm9tZS1zaGVsbC1leHRlbnNpb24td2lmaXFyY29kZSIsCiAgInV1aWQiOiAid2lmaXFyY29kZUBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
+    "46": {"version": "14", "sha256": "167lllr4fy8xl8fdc3sn3b2gl66n4qmmxdd5wj6ra061cp1kz3ky", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZCBhIHN3aXRjaCB0byB0aGUgV2lGaSBtZW51LCBpbiB0aGUgR05PTUUgc3lzdGVtIG1lbnUsIHRoYXQgc2hvdyBhIFFSIENvZGUgb2YgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLlxuXG5UaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHF1aWNrbHkgY29ubmVjdGluZyBkZXZpY2VzIGNhcGFibGUgb2YgcmVhZGluZyBRUiBDb2RlIGFuZCBhcHBseWluZyB0aGUgc2V0dGluZ3MgdG8gdGhlIHN5c3RlbSwgd2l0aG91dCBoYXZpbmcgdG8gdHlwZSBpbiB0aGUgbmFtZSBhbmQgdGhlIHBhc3N3b3JkIG9mIHRoZSBXaUZpLiAoZS5nLiBBbmRyb2lkIFNtYXJ0cGhvbmUpLiBcblxuRnJvbSB2ZXJzaW9uIDQgYWRkZWQgYSBmdW5jdGlvbmFsaXR5IHRvIGNvcHkgdGhlIFFSIENvZGUgdG8gY2xpcGJvYXJkIHdpdGggcmlnaHQgY2xpY2sgb24gaXQuIiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAiZ2xlcnJvIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi13aWZpcXJjb2RlIiwKICAibmFtZSI6ICJXaWZpIFFSIENvZGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2dsZXJyby9nbm9tZS1zaGVsbC1leHRlbnNpb24td2lmaXFyY29kZSIsCiAgInV1aWQiOiAid2lmaXFyY29kZUBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
   }}
 , {"uuid": "eos-desktop@endlessm.com", "name": "Endless Desktop", "pname": "endless-desktop", "description": "Endless OS signature desktop", "link": "https://extensions.gnome.org/extension/5419/endless-desktop/", "shell_version_map": {
     "41": {"version": "2", "sha256": "07wg7nab34bvhqnlfdni622c5r3pvlq04dly8spk53nxdwvisckr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuZGxlc3MgT1Mgc2lnbmF0dXJlIGRlc2t0b3AiLAogICJuYW1lIjogIkVuZGxlc3MgRGVza3RvcCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJjb20uZW5kbGVzc20uZGVza3RvcC1leHRlbnNpb24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VuZGxlc3NtL2Vvcy1kZXNrdG9wLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZW9zLWRlc2t0b3BAZW5kbGVzc20uY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
@@ -5308,7 +5509,8 @@
     "42": {"version": "6", "sha256": "0c3l0j88bmc5lhif0jwxy0mch1wafmbk6hysyxdnf2qlkiha50ds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIG9uLXNjcmVlbi1kaXNwbGF5IHZvbHVtZSBsZXZlbCBpY29uIHdpdGggYSBudW1iZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3NkLXZvbHVtZS1udW1iZXIiLAogICJuYW1lIjogIk9TRCBWb2x1bWUgTnVtYmVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9zZC12b2x1bWUtbnVtYmVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRGVtaW5kZXIvb3NkLXZvbHVtZS1udW1iZXIiLAogICJ1dWlkIjogIm9zZC12b2x1bWUtbnVtYmVyQGRlbWluZGVyIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "43": {"version": "6", "sha256": "0c3l0j88bmc5lhif0jwxy0mch1wafmbk6hysyxdnf2qlkiha50ds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIG9uLXNjcmVlbi1kaXNwbGF5IHZvbHVtZSBsZXZlbCBpY29uIHdpdGggYSBudW1iZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3NkLXZvbHVtZS1udW1iZXIiLAogICJuYW1lIjogIk9TRCBWb2x1bWUgTnVtYmVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9zZC12b2x1bWUtbnVtYmVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRGVtaW5kZXIvb3NkLXZvbHVtZS1udW1iZXIiLAogICJ1dWlkIjogIm9zZC12b2x1bWUtbnVtYmVyQGRlbWluZGVyIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "44": {"version": "6", "sha256": "0c3l0j88bmc5lhif0jwxy0mch1wafmbk6hysyxdnf2qlkiha50ds", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIG9uLXNjcmVlbi1kaXNwbGF5IHZvbHVtZSBsZXZlbCBpY29uIHdpdGggYSBudW1iZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3NkLXZvbHVtZS1udW1iZXIiLAogICJuYW1lIjogIk9TRCBWb2x1bWUgTnVtYmVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9zZC12b2x1bWUtbnVtYmVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRGVtaW5kZXIvb3NkLXZvbHVtZS1udW1iZXIiLAogICJ1dWlkIjogIm9zZC12b2x1bWUtbnVtYmVyQGRlbWluZGVyIiwKICAidmVyc2lvbiI6IDYKfQ=="},
-    "45": {"version": "8", "sha256": "01xvfmg44xbb9iilznpcpmrpim61b5pywmagc27iaz29n5ix1wi5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIG9uLXNjcmVlbi1kaXNwbGF5IHZvbHVtZSBsZXZlbCBpY29uIHdpdGggYSBudW1iZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3NkLXZvbHVtZS1udW1iZXIiLAogICJuYW1lIjogIk9TRCBWb2x1bWUgTnVtYmVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9zZC12b2x1bWUtbnVtYmVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0RlbWluZGVyL29zZC12b2x1bWUtbnVtYmVyIiwKICAidXVpZCI6ICJvc2Qtdm9sdW1lLW51bWJlckBkZW1pbmRlciIsCiAgInZlcnNpb24iOiA4Cn0="}
+    "45": {"version": "10", "sha256": "05ilkqaz58i7q438gysahzbmf3qaf37y1db4bq6j419n09bdmz2y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIG9uLXNjcmVlbi1kaXNwbGF5IHZvbHVtZSBsZXZlbCBpY29uIHdpdGggYSBudW1iZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3NkLXZvbHVtZS1udW1iZXIiLAogICJuYW1lIjogIk9TRCBWb2x1bWUgTnVtYmVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9zZC12b2x1bWUtbnVtYmVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EZW1pbmRlci9vc2Qtdm9sdW1lLW51bWJlciIsCiAgInV1aWQiOiAib3NkLXZvbHVtZS1udW1iZXJAZGVtaW5kZXIiLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
+    "46": {"version": "10", "sha256": "05ilkqaz58i7q438gysahzbmf3qaf37y1db4bq6j419n09bdmz2y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIG9uLXNjcmVlbi1kaXNwbGF5IHZvbHVtZSBsZXZlbCBpY29uIHdpdGggYSBudW1iZXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAib3NkLXZvbHVtZS1udW1iZXIiLAogICJuYW1lIjogIk9TRCBWb2x1bWUgTnVtYmVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9zZC12b2x1bWUtbnVtYmVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EZW1pbmRlci9vc2Qtdm9sdW1lLW51bWJlciIsCiAgInV1aWQiOiAib3NkLXZvbHVtZS1udW1iZXJAZGVtaW5kZXIiLAogICJ2ZXJzaW9uIjogMTAKfQ=="}
   }}
 , {"uuid": "next-up@artisticat1.github.com", "name": "Next Up", "pname": "next-up", "description": "Show your next calendar event in the status bar", "link": "https://extensions.gnome.org/extension/5465/next-up/", "shell_version_map": {
     "42": {"version": "5", "sha256": "1wcz3n15gzd9dqjv85q46r1zls87sc9sscq83qaswl7h9hxa1dq9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgeW91ciBuZXh0IGNhbGVuZGFyIGV2ZW50IGluIHRoZSBzdGF0dXMgYmFyIiwKICAibmFtZSI6ICJOZXh0IFVwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJ0aXN0aWNhdDEvZ25vbWUtbmV4dC11cCIsCiAgInV1aWQiOiAibmV4dC11cEBhcnRpc3RpY2F0MS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="},
@@ -5319,7 +5521,8 @@
     "42": {"version": "8", "sha256": "0fs7kdffbvip03k6xqhw8y7jdqxlg6rs30zx915rr83hdkx5df37", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbnNpZGUgdGhlIHBpbGwgbmV4dCB0byB0aGUgY2xvY2suIEdOT01FIFdlYXRoZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIHdvcmsuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgIm5hbWUiOiAiV2VhdGhlciBPJ0Nsb2NrIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIkphc29uTEcxOTc5QGdpdGh1Yi5pbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvd2VhdGhlci1vY2xvY2siLAogICJ1dWlkIjogIndlYXRoZXJvY2xvY2tAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOAp9"},
     "43": {"version": "8", "sha256": "0fs7kdffbvip03k6xqhw8y7jdqxlg6rs30zx915rr83hdkx5df37", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbnNpZGUgdGhlIHBpbGwgbmV4dCB0byB0aGUgY2xvY2suIEdOT01FIFdlYXRoZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIHdvcmsuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgIm5hbWUiOiAiV2VhdGhlciBPJ0Nsb2NrIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIkphc29uTEcxOTc5QGdpdGh1Yi5pbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvd2VhdGhlci1vY2xvY2siLAogICJ1dWlkIjogIndlYXRoZXJvY2xvY2tAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOAp9"},
     "44": {"version": "8", "sha256": "0fs7kdffbvip03k6xqhw8y7jdqxlg6rs30zx915rr83hdkx5df37", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbnNpZGUgdGhlIHBpbGwgbmV4dCB0byB0aGUgY2xvY2suIEdOT01FIFdlYXRoZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIHdvcmsuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgIm5hbWUiOiAiV2VhdGhlciBPJ0Nsb2NrIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIkphc29uTEcxOTc5QGdpdGh1Yi5pbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvd2VhdGhlci1vY2xvY2siLAogICJ1dWlkIjogIndlYXRoZXJvY2xvY2tAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOAp9"},
-    "45": {"version": "11", "sha256": "0yh6z5704vjzxbgwx1avh04z70j486c0jcl5zswral93vbd1swnq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbnNpZGUgdGhlIHBpbGwgbmV4dCB0byB0aGUgY2xvY2suIEdOT01FIFdlYXRoZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIHdvcmsuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgIm5hbWUiOiAiV2VhdGhlciBPJ0Nsb2NrIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIkphc29uTEcxOTc5QGdpdGh1Yi5pbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DbGVvTWVuZXplc0pyL3dlYXRoZXItb2Nsb2NrIiwKICAidXVpZCI6ICJ3ZWF0aGVyb2Nsb2NrQENsZW9NZW5lemVzSnIuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDExCn0="}
+    "45": {"version": "11", "sha256": "0yh6z5704vjzxbgwx1avh04z70j486c0jcl5zswral93vbd1swnq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbnNpZGUgdGhlIHBpbGwgbmV4dCB0byB0aGUgY2xvY2suIEdOT01FIFdlYXRoZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIHdvcmsuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgIm5hbWUiOiAiV2VhdGhlciBPJ0Nsb2NrIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIkphc29uTEcxOTc5QGdpdGh1Yi5pbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DbGVvTWVuZXplc0pyL3dlYXRoZXItb2Nsb2NrIiwKICAidXVpZCI6ICJ3ZWF0aGVyb2Nsb2NrQENsZW9NZW5lemVzSnIuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDExCn0="},
+    "46": {"version": "13", "sha256": "03l5aca5wklbcpy9bnhhmnkqky7mn9s7w4g1kq72qia11k048rnq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbnNpZGUgdGhlIHBpbGwgbmV4dCB0byB0aGUgY2xvY2suIEdOT01FIFdlYXRoZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIHdvcmsuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgIm5hbWUiOiAiV2VhdGhlciBPJ0Nsb2NrIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIkphc29uTEcxOTc5QGdpdGh1Yi5pbyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DbGVvTWVuZXplc0pyL3dlYXRoZXItb2Nsb2NrIiwKICAidXVpZCI6ICJ3ZWF0aGVyb2Nsb2NrQENsZW9NZW5lemVzSnIuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDEzLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMiIKfQ=="}
   }}
 , {"uuid": "appmenu-color-icon@arahiko-ayami.github.com", "name": "Color App Menu Icon for GNOME 40+", "pname": "color-app-menu-icon-for-gnome-40", "description": "Replace the symbolic application menu icon with the regular one. An alternative version of yanbab's extension that supports GNOME 40 and higher", "link": "https://extensions.gnome.org/extension/5473/color-app-menu-icon-for-gnome-40/", "shell_version_map": {
     "38": {"version": "3", "sha256": "1alr3q7zdlhzl1ra4rmvmzfqb0n0fxwisbnfg68yk9nix5d6kpay", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIHN5bWJvbGljIGFwcGxpY2F0aW9uIG1lbnUgaWNvbiB3aXRoIHRoZSByZWd1bGFyIG9uZS4gQW4gYWx0ZXJuYXRpdmUgdmVyc2lvbiBvZiB5YW5iYWIncyBleHRlbnNpb24gdGhhdCBzdXBwb3J0cyBHTk9NRSA0MCBhbmQgaGlnaGVyIiwKICAibmFtZSI6ICJDb2xvciBBcHAgTWVudSBJY29uIGZvciBHTk9NRSA0MCsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FyYWhpa28tYXlhbWkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXJlZ3VsYXItYXBwbWVudS1pY29uIiwKICAidXVpZCI6ICJhcHBtZW51LWNvbG9yLWljb25AYXJhaGlrby1heWFtaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
@@ -5332,27 +5535,32 @@
 , {"uuid": "toggle-workspace-span@arngo.github.com", "name": "Toggle workspace span", "pname": "toggle-workspace-span", "description": "Toggle workspaces spanning displays.", "link": "https://extensions.gnome.org/extension/5482/toggle-workspace-span/", "shell_version_map": {
     "43": {"version": "2", "sha256": "0a3hmppplizljqvq72mp6ycrswxmrg5f64wxs3jbf7prhll90y7z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB3b3Jrc3BhY2VzIHNwYW5uaW5nIGRpc3BsYXlzLiIsCiAgIm5hbWUiOiAiVG9nZ2xlIHdvcmtzcGFjZSBzcGFuIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FybmdvL2dub21lLXNoZWxsLWV4dGVuc2lvbi10b2dnbGUtd29ya3NwYWNlLXNwYW4iLAogICJ1dWlkIjogInRvZ2dsZS13b3Jrc3BhY2Utc3BhbkBhcm5nby5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
     "44": {"version": "3", "sha256": "0imjfsy1cs2d41gnwi5981mn1ap1avm6dqbgd39zvnd320rnskiz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB3b3Jrc3BhY2VzIHNwYW5uaW5nIGRpc3BsYXlzLiIsCiAgIm5hbWUiOiAiVG9nZ2xlIHdvcmtzcGFjZSBzcGFuIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FybmdvL2dub21lLXNoZWxsLWV4dGVuc2lvbi10b2dnbGUtd29ya3NwYWNlLXNwYW4iLAogICJ1dWlkIjogInRvZ2dsZS13b3Jrc3BhY2Utc3BhbkBhcm5nby5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
-    "45": {"version": "4", "sha256": "1x5w0n2mbw8b8vkzhxnrsx8rp1ydczk8jkzx5babz48lafkjdya5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB3b3Jrc3BhY2VzIHNwYW5uaW5nIGRpc3BsYXlzLiIsCiAgIm5hbWUiOiAiVG9nZ2xlIHdvcmtzcGFjZSBzcGFuIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRvZ2dsZS13b3Jrc3BhY2Utc3BhbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcm5nby9nbm9tZS1zaGVsbC1leHRlbnNpb24tdG9nZ2xlLXdvcmtzcGFjZS1zcGFuIiwKICAidXVpZCI6ICJ0b2dnbGUtd29ya3NwYWNlLXNwYW5AYXJuZ28uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="}
+    "45": {"version": "5", "sha256": "14v0q6msfpkl3aqspwzjrczjc9ja6d969xrlmql00c29cczmsxzx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB3b3Jrc3BhY2VzIHNwYW5uaW5nIGRpc3BsYXlzLiIsCiAgIm5hbWUiOiAiVG9nZ2xlIHdvcmtzcGFjZSBzcGFuIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRvZ2dsZS13b3Jrc3BhY2Utc3BhbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJuZ28vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRvZ2dsZS13b3Jrc3BhY2Utc3BhbiIsCiAgInV1aWQiOiAidG9nZ2xlLXdvcmtzcGFjZS1zcGFuQGFybmdvLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"},
+    "46": {"version": "5", "sha256": "14v0q6msfpkl3aqspwzjrczjc9ja6d969xrlmql00c29cczmsxzx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB3b3Jrc3BhY2VzIHNwYW5uaW5nIGRpc3BsYXlzLiIsCiAgIm5hbWUiOiAiVG9nZ2xlIHdvcmtzcGFjZSBzcGFuIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRvZ2dsZS13b3Jrc3BhY2Utc3BhbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJuZ28vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRvZ2dsZS13b3Jrc3BhY2Utc3BhbiIsCiAgInV1aWQiOiAidG9nZ2xlLXdvcmtzcGFjZS1zcGFuQGFybmdvLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"}
   }}
 , {"uuid": "search-light@icedman.github.com", "name": "Search Light", "pname": "search-light", "description": "Take the apps search out of overview", "link": "https://extensions.gnome.org/extension/5489/search-light/", "shell_version_map": {
     "42": {"version": "17", "sha256": "054k5q694ssm937qfxximg2qh5zx4m2qzcffdxjm4xd39qn4bi85", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRha2UgdGhlIGFwcHMgc2VhcmNoIG91dCBvZiBvdmVydmlldyIsCiAgImdldHRleHQtZG9tYWluIjogInNlYXJjaC1saWdodCIsCiAgIm5hbWUiOiAiU2VhcmNoIExpZ2h0IiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNlYXJjaC1saWdodCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vc2VhcmNoLWxpZ2h0IiwKICAidXVpZCI6ICJzZWFyY2gtbGlnaHRAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
     "43": {"version": "17", "sha256": "054k5q694ssm937qfxximg2qh5zx4m2qzcffdxjm4xd39qn4bi85", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRha2UgdGhlIGFwcHMgc2VhcmNoIG91dCBvZiBvdmVydmlldyIsCiAgImdldHRleHQtZG9tYWluIjogInNlYXJjaC1saWdodCIsCiAgIm5hbWUiOiAiU2VhcmNoIExpZ2h0IiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNlYXJjaC1saWdodCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vc2VhcmNoLWxpZ2h0IiwKICAidXVpZCI6ICJzZWFyY2gtbGlnaHRAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
     "44": {"version": "17", "sha256": "054k5q694ssm937qfxximg2qh5zx4m2qzcffdxjm4xd39qn4bi85", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRha2UgdGhlIGFwcHMgc2VhcmNoIG91dCBvZiBvdmVydmlldyIsCiAgImdldHRleHQtZG9tYWluIjogInNlYXJjaC1saWdodCIsCiAgIm5hbWUiOiAiU2VhcmNoIExpZ2h0IiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNlYXJjaC1saWdodCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ljZWRtYW4vc2VhcmNoLWxpZ2h0IiwKICAidXVpZCI6ICJzZWFyY2gtbGlnaHRAaWNlZG1hbi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE3Cn0="},
-    "45": {"version": "20", "sha256": "1hy73br84dp9gz37jvnqyf680g2xn3gj4fbj03bddrzgbwq6hpj8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRha2UgdGhlIGFwcHMgc2VhcmNoIG91dCBvZiBvdmVydmlldyIsCiAgImdldHRleHQtZG9tYWluIjogInNlYXJjaC1saWdodCIsCiAgIm5hbWUiOiAiU2VhcmNoIExpZ2h0IiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNlYXJjaC1saWdodCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pY2VkbWFuL3NlYXJjaC1saWdodCIsCiAgInV1aWQiOiAic2VhcmNoLWxpZ2h0QGljZWRtYW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"}
+    "45": {"version": "22", "sha256": "0qjlaka6p38jsrif8v52b8cb1hiw97a9ipx3dssw87i1jzhwcc2z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRha2UgdGhlIGFwcHMgc2VhcmNoIG91dCBvZiBvdmVydmlldyIsCiAgImdldHRleHQtZG9tYWluIjogInNlYXJjaC1saWdodCIsCiAgIm5hbWUiOiAiU2VhcmNoIExpZ2h0IiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNlYXJjaC1saWdodCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9zZWFyY2gtbGlnaHQiLAogICJ1dWlkIjogInNlYXJjaC1saWdodEBpY2VkbWFuLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjIKfQ=="},
+    "46": {"version": "22", "sha256": "0qjlaka6p38jsrif8v52b8cb1hiw97a9ipx3dssw87i1jzhwcc2z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRha2UgdGhlIGFwcHMgc2VhcmNoIG91dCBvZiBvdmVydmlldyIsCiAgImdldHRleHQtZG9tYWluIjogInNlYXJjaC1saWdodCIsCiAgIm5hbWUiOiAiU2VhcmNoIExpZ2h0IiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNlYXJjaC1saWdodCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9zZWFyY2gtbGlnaHQiLAogICJ1dWlkIjogInNlYXJjaC1saWdodEBpY2VkbWFuLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMjIKfQ=="}
   }}
 , {"uuid": "ibus-switcher@kevinhwang91.github.com", "name": "IBus Switcher", "pname": "ibus-switcher", "description": "Use d-bus to switch ibus source", "link": "https://extensions.gnome.org/extension/5497/ibus-switcher/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "0cdbqrla0n3a82q1nvlyxx1a521c4xgc8b1rawc7qrbp6yjasi85", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSBkLWJ1cyB0byBzd2l0Y2ggaWJ1cyBzb3VyY2UiLAogICJuYW1lIjogIklCdXMgU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20va2V2aW5od2FuZzkxL2dub21lLXNoZWxsLWlidXMtc3dpdGNoZXIiLAogICJ1dWlkIjogImlidXMtc3dpdGNoZXJAa2V2aW5od2FuZzkxLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMwp9"}
+    "45": {"version": "4", "sha256": "1na3cncy9kkdqbvhwzckbf3axrcpz1apidxvsv4s5qmg2vrjccgv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSBkLWJ1cyB0byBzd2l0Y2ggaWJ1cyBzb3VyY2UiLAogICJuYW1lIjogIklCdXMgU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2tldmluaHdhbmc5MS9nbm9tZS1zaGVsbC1pYnVzLXN3aXRjaGVyIiwKICAidXVpZCI6ICJpYnVzLXN3aXRjaGVyQGtldmluaHdhbmc5MS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="},
+    "46": {"version": "4", "sha256": "1na3cncy9kkdqbvhwzckbf3axrcpz1apidxvsv4s5qmg2vrjccgv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSBkLWJ1cyB0byBzd2l0Y2ggaWJ1cyBzb3VyY2UiLAogICJuYW1lIjogIklCdXMgU3dpdGNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2tldmluaHdhbmc5MS9nbm9tZS1zaGVsbC1pYnVzLXN3aXRjaGVyIiwKICAidXVpZCI6ICJpYnVzLXN3aXRjaGVyQGtldmluaHdhbmc5MS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="}
   }}
 , {"uuid": "auto-activities@CleoMenezesJr.github.io", "name": "Auto Activities", "pname": "auto-activities", "description": "Show activities overview when there are no windows, or hide it when there are new windows.\n\nThis extension is a fork of the Auto Activities extension, its former owner transferred its repository to me.", "link": "https://extensions.gnome.org/extension/5500/auto-activities/", "shell_version_map": {
     "42": {"version": "11", "sha256": "13ck2dnx68ab9nw4lkzbq9jvxdivl1qvlf7dw58dr69s0wbrvlm1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYWN0aXZpdGllcyBvdmVydmlldyB3aGVuIHRoZXJlIGFyZSBubyB3aW5kb3dzLCBvciBoaWRlIGl0IHdoZW4gdGhlcmUgYXJlIG5ldyB3aW5kb3dzLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgdGhlIEF1dG8gQWN0aXZpdGllcyBleHRlbnNpb24sIGl0cyBmb3JtZXIgb3duZXIgdHJhbnNmZXJyZWQgaXRzIHJlcG9zaXRvcnkgdG8gbWUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG8tYWN0aXZpdGllcyIsCiAgIm5hbWUiOiAiQXV0byBBY3Rpdml0aWVzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIm1pLWphbi1zZW5hQHByb3Rvbi5tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvYXV0by1hY3Rpdml0aWVzIiwKICAidXVpZCI6ICJhdXRvLWFjdGl2aXRpZXNAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
     "43": {"version": "11", "sha256": "13ck2dnx68ab9nw4lkzbq9jvxdivl1qvlf7dw58dr69s0wbrvlm1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYWN0aXZpdGllcyBvdmVydmlldyB3aGVuIHRoZXJlIGFyZSBubyB3aW5kb3dzLCBvciBoaWRlIGl0IHdoZW4gdGhlcmUgYXJlIG5ldyB3aW5kb3dzLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgdGhlIEF1dG8gQWN0aXZpdGllcyBleHRlbnNpb24sIGl0cyBmb3JtZXIgb3duZXIgdHJhbnNmZXJyZWQgaXRzIHJlcG9zaXRvcnkgdG8gbWUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG8tYWN0aXZpdGllcyIsCiAgIm5hbWUiOiAiQXV0byBBY3Rpdml0aWVzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIm1pLWphbi1zZW5hQHByb3Rvbi5tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvYXV0by1hY3Rpdml0aWVzIiwKICAidXVpZCI6ICJhdXRvLWFjdGl2aXRpZXNAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
     "44": {"version": "11", "sha256": "13ck2dnx68ab9nw4lkzbq9jvxdivl1qvlf7dw58dr69s0wbrvlm1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYWN0aXZpdGllcyBvdmVydmlldyB3aGVuIHRoZXJlIGFyZSBubyB3aW5kb3dzLCBvciBoaWRlIGl0IHdoZW4gdGhlcmUgYXJlIG5ldyB3aW5kb3dzLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgdGhlIEF1dG8gQWN0aXZpdGllcyBleHRlbnNpb24sIGl0cyBmb3JtZXIgb3duZXIgdHJhbnNmZXJyZWQgaXRzIHJlcG9zaXRvcnkgdG8gbWUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG8tYWN0aXZpdGllcyIsCiAgIm5hbWUiOiAiQXV0byBBY3Rpdml0aWVzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIm1pLWphbi1zZW5hQHByb3Rvbi5tZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvYXV0by1hY3Rpdml0aWVzIiwKICAidXVpZCI6ICJhdXRvLWFjdGl2aXRpZXNAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
-    "45": {"version": "12", "sha256": "0dwy9k6hx4dslq6sq7wpilbgbq99b7lsxpnn8s1i0fksc0k6d3ia", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYWN0aXZpdGllcyBvdmVydmlldyB3aGVuIHRoZXJlIGFyZSBubyB3aW5kb3dzLCBvciBoaWRlIGl0IHdoZW4gdGhlcmUgYXJlIG5ldyB3aW5kb3dzLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgdGhlIEF1dG8gQWN0aXZpdGllcyBleHRlbnNpb24sIGl0cyBmb3JtZXIgb3duZXIgdHJhbnNmZXJyZWQgaXRzIHJlcG9zaXRvcnkgdG8gbWUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG8tYWN0aXZpdGllcyIsCiAgIm5hbWUiOiAiQXV0byBBY3Rpdml0aWVzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIm1pLWphbi1zZW5hQHByb3Rvbi5tZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLWFjdGl2aXRpZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2xlb01lbmV6ZXNKci9hdXRvLWFjdGl2aXRpZXMiLAogICJ1dWlkIjogImF1dG8tYWN0aXZpdGllc0BDbGVvTWVuZXplc0pyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMgp9"}
+    "45": {"version": "13", "sha256": "10bkl19knlg90mnkn3xiy0xr2knf6405chypn30jc9d0vdl5j87x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYWN0aXZpdGllcyBvdmVydmlldyB3aGVuIHRoZXJlIGFyZSBubyB3aW5kb3dzLCBvciBoaWRlIGl0IHdoZW4gdGhlcmUgYXJlIG5ldyB3aW5kb3dzLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgdGhlIEF1dG8gQWN0aXZpdGllcyBleHRlbnNpb24sIGl0cyBmb3JtZXIgb3duZXIgdHJhbnNmZXJyZWQgaXRzIHJlcG9zaXRvcnkgdG8gbWUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG8tYWN0aXZpdGllcyIsCiAgIm5hbWUiOiAiQXV0byBBY3Rpdml0aWVzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIm1pLWphbi1zZW5hQHByb3Rvbi5tZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLWFjdGl2aXRpZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvYXV0by1hY3Rpdml0aWVzIiwKICAidXVpZCI6ICJhdXRvLWFjdGl2aXRpZXNAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4xIgp9"},
+    "46": {"version": "13", "sha256": "10bkl19knlg90mnkn3xiy0xr2knf6405chypn30jc9d0vdl5j87x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYWN0aXZpdGllcyBvdmVydmlldyB3aGVuIHRoZXJlIGFyZSBubyB3aW5kb3dzLCBvciBoaWRlIGl0IHdoZW4gdGhlcmUgYXJlIG5ldyB3aW5kb3dzLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBhIGZvcmsgb2YgdGhlIEF1dG8gQWN0aXZpdGllcyBleHRlbnNpb24sIGl0cyBmb3JtZXIgb3duZXIgdHJhbnNmZXJyZWQgaXRzIHJlcG9zaXRvcnkgdG8gbWUuIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDbGVvTWVuZXplc0pyIiwKICAgICJrb2ZpIjogImNsZW9tZW5lemVzanIiLAogICAgInBheXBhbCI6ICJDbGVvTWVuZXplc0pyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImF1dG8tYWN0aXZpdGllcyIsCiAgIm5hbWUiOiAiQXV0byBBY3Rpdml0aWVzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogIm1pLWphbi1zZW5hQHByb3Rvbi5tZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLWFjdGl2aXRpZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NsZW9NZW5lemVzSnIvYXV0by1hY3Rpdml0aWVzIiwKICAidXVpZCI6ICJhdXRvLWFjdGl2aXRpZXNAQ2xlb01lbmV6ZXNKci5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4xIgp9"}
   }}
 , {"uuid": "quick-settings-avatar@d-go", "name": "User Avatar In Quick Settings", "pname": "user-avatar-in-quick-settings", "description": "Display the user avatar in the Quick Settings menu, part of the \"System\" settings", "link": "https://extensions.gnome.org/extension/5506/user-avatar-in-quick-settings/", "shell_version_map": {
     "43": {"version": "4", "sha256": "04khkpjilgrbqfrsd11d3f8psmqlhavjmbwp02mpa36qk9g79vvm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIHVzZXIgYXZhdGFyIGluIHRoZSBRdWljayBTZXR0aW5ncyBtZW51LCBwYXJ0IG9mIHRoZSBcIlN5c3RlbVwiIHNldHRpbmdzIiwKICAibmFtZSI6ICJVc2VyIEF2YXRhciBJbiBRdWljayBTZXR0aW5ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZC1nby9xdWljay1zZXR0aW5ncy1hdmF0YXIiLAogICJ1dWlkIjogInF1aWNrLXNldHRpbmdzLWF2YXRhckBkLWdvIiwKICAidmVyc2lvbiI6IDQKfQ=="},
     "44": {"version": "4", "sha256": "04khkpjilgrbqfrsd11d3f8psmqlhavjmbwp02mpa36qk9g79vvm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIHVzZXIgYXZhdGFyIGluIHRoZSBRdWljayBTZXR0aW5ncyBtZW51LCBwYXJ0IG9mIHRoZSBcIlN5c3RlbVwiIHNldHRpbmdzIiwKICAibmFtZSI6ICJVc2VyIEF2YXRhciBJbiBRdWljayBTZXR0aW5ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZC1nby9xdWljay1zZXR0aW5ncy1hdmF0YXIiLAogICJ1dWlkIjogInF1aWNrLXNldHRpbmdzLWF2YXRhckBkLWdvIiwKICAidmVyc2lvbiI6IDQKfQ=="},
-    "45": {"version": "6", "sha256": "1zn8ggzsmjdmxx8p6rx55pbnxsal59mmqwlb8xyiwr631l6sfcaw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIHVzZXIgYXZhdGFyIGluIHRoZSBRdWljayBTZXR0aW5ncyBtZW51LCBwYXJ0IG9mIHRoZSBcIlN5c3RlbVwiIHNldHRpbmdzIiwKICAibmFtZSI6ICJVc2VyIEF2YXRhciBJbiBRdWljayBTZXR0aW5ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kLWdvL3F1aWNrLXNldHRpbmdzLWF2YXRhciIsCiAgInV1aWQiOiAicXVpY2stc2V0dGluZ3MtYXZhdGFyQGQtZ28iLAogICJ2ZXJzaW9uIjogNgp9"}
+    "45": {"version": "7", "sha256": "0v8s5j0fm1dcw40qkcq3m8sbi7kilm7v5mccgfa4bw0hv5r21gps", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIHVzZXIgYXZhdGFyIGluIHRoZSBRdWljayBTZXR0aW5ncyBtZW51LCBwYXJ0IG9mIHRoZSBcIlN5c3RlbVwiIHNldHRpbmdzIiwKICAibmFtZSI6ICJVc2VyIEF2YXRhciBJbiBRdWljayBTZXR0aW5ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZC1nby9xdWljay1zZXR0aW5ncy1hdmF0YXIiLAogICJ1dWlkIjogInF1aWNrLXNldHRpbmdzLWF2YXRhckBkLWdvIiwKICAidmVyc2lvbiI6IDcKfQ=="},
+    "46": {"version": "7", "sha256": "0v8s5j0fm1dcw40qkcq3m8sbi7kilm7v5mccgfa4bw0hv5r21gps", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIHVzZXIgYXZhdGFyIGluIHRoZSBRdWljayBTZXR0aW5ncyBtZW51LCBwYXJ0IG9mIHRoZSBcIlN5c3RlbVwiIHNldHRpbmdzIiwKICAibmFtZSI6ICJVc2VyIEF2YXRhciBJbiBRdWljayBTZXR0aW5ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZC1nby9xdWljay1zZXR0aW5ncy1hdmF0YXIiLAogICJ1dWlkIjogInF1aWNrLXNldHRpbmdzLWF2YXRhckBkLWdvIiwKICAidmVyc2lvbiI6IDcKfQ=="}
   }}
 , {"uuid": "eur-brl@jcanabarro.github.com", "name": "EUR-BRL", "pname": "eur-brl", "description": "Gnome Extension that shows the current conversion of Euro to Brazilian Reals.\n\nIt is a fork of USD-BRL https://extensions.gnome.org/extension/5371/usd-bra/", "link": "https://extensions.gnome.org/extension/5510/eur-brl/", "shell_version_map": {
     "42": {"version": "2", "sha256": "0j5wx3dawlxdal6rw7ijh17wbpakdy3qwh634ns9q65a7axqalkz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIEV4dGVuc2lvbiB0aGF0IHNob3dzIHRoZSBjdXJyZW50IGNvbnZlcnNpb24gb2YgRXVybyB0byBCcmF6aWxpYW4gUmVhbHMuXG5cbkl0IGlzIGEgZm9yayBvZiBVU0QtQlJMIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzUzNzEvdXNkLWJyYS8iLAogICJuYW1lIjogIkVVUi1CUkwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamNhbmFiYXJyby9FVVItQlJMIiwKICAidXVpZCI6ICJldXItYnJsQGpjYW5hYmFycm8uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyCn0="}
@@ -5372,12 +5580,14 @@
 , {"uuid": "nano-lights@chlumskyvaclav.gmail.com", "name": "Nano Lights", "pname": "nano-lights", "description": "This extension controls Nanoleaf shapes and possibly others Nanoleaf devices on your local (wifi) network. If you are experiencing an error on the upgrade, please log out and log in again.", "link": "https://extensions.gnome.org/extension/5519/nano-lights/", "shell_version_map": {
     "43": {"version": "4", "sha256": "0w0092hhra27d59842xgc6r01v4sfbl5p1ipvf3gbq6pam9955b0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIE5hbm9sZWFmIHNoYXBlcyBhbmQgcG9zc2libHkgb3RoZXJzIE5hbm9sZWFmIGRldmljZXMgb24geW91ciBsb2NhbCAod2lmaSkgbmV0d29yay4gSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW4gZXJyb3Igb24gdGhlIHVwZ3JhZGUsIHBsZWFzZSBsb2cgb3V0IGFuZCBsb2cgaW4gYWdhaW4uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmFuby1saWdodHMiLAogICJuYW1lIjogIk5hbm8gTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25hbm8tbGlnaHRzIiwKICAidXVpZCI6ICJuYW5vLWxpZ2h0c0BjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNAp9"},
     "44": {"version": "4", "sha256": "0w0092hhra27d59842xgc6r01v4sfbl5p1ipvf3gbq6pam9955b0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIE5hbm9sZWFmIHNoYXBlcyBhbmQgcG9zc2libHkgb3RoZXJzIE5hbm9sZWFmIGRldmljZXMgb24geW91ciBsb2NhbCAod2lmaSkgbmV0d29yay4gSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW4gZXJyb3Igb24gdGhlIHVwZ3JhZGUsIHBsZWFzZSBsb2cgb3V0IGFuZCBsb2cgaW4gYWdhaW4uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmFuby1saWdodHMiLAogICJuYW1lIjogIk5hbm8gTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25hbm8tbGlnaHRzIiwKICAidXVpZCI6ICJuYW5vLWxpZ2h0c0BjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNAp9"},
-    "45": {"version": "7", "sha256": "1ayij5spshhnj711dhppv4ql2gzpck5f9dsq9y8qybz7h15r0nj9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIE5hbm9sZWFmIHNoYXBlcyBhbmQgcG9zc2libHkgb3RoZXJzIE5hbm9sZWFmIGRldmljZXMgb24geW91ciBsb2NhbCAod2lmaSkgbmV0d29yay4gSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW4gZXJyb3Igb24gdGhlIHVwZ3JhZGUsIHBsZWFzZSBsb2cgb3V0IGFuZCBsb2cgaW4gYWdhaW4uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmFuby1saWdodHMiLAogICJuYW1lIjogIk5hbm8gTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uYW5vLWxpZ2h0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25hbm8tbGlnaHRzIiwKICAidXVpZCI6ICJuYW5vLWxpZ2h0c0BjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNwp9"}
+    "45": {"version": "7", "sha256": "1ayij5spshhnj711dhppv4ql2gzpck5f9dsq9y8qybz7h15r0nj9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIE5hbm9sZWFmIHNoYXBlcyBhbmQgcG9zc2libHkgb3RoZXJzIE5hbm9sZWFmIGRldmljZXMgb24geW91ciBsb2NhbCAod2lmaSkgbmV0d29yay4gSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW4gZXJyb3Igb24gdGhlIHVwZ3JhZGUsIHBsZWFzZSBsb2cgb3V0IGFuZCBsb2cgaW4gYWdhaW4uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmFuby1saWdodHMiLAogICJuYW1lIjogIk5hbm8gTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uYW5vLWxpZ2h0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25hbm8tbGlnaHRzIiwKICAidXVpZCI6ICJuYW5vLWxpZ2h0c0BjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNwp9"},
+    "46": {"version": "7", "sha256": "1ayij5spshhnj711dhppv4ql2gzpck5f9dsq9y8qybz7h15r0nj9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGNvbnRyb2xzIE5hbm9sZWFmIHNoYXBlcyBhbmQgcG9zc2libHkgb3RoZXJzIE5hbm9sZWFmIGRldmljZXMgb24geW91ciBsb2NhbCAod2lmaSkgbmV0d29yay4gSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW4gZXJyb3Igb24gdGhlIHVwZ3JhZGUsIHBsZWFzZSBsb2cgb3V0IGFuZCBsb2cgaW4gYWdhaW4uIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmFuby1saWdodHMiLAogICJuYW1lIjogIk5hbm8gTGlnaHRzIiwKICAib3JpZ2luYWwtYXV0aG9yIjogImNobHVtc2t5dmFjbGF2QGdtYWlsLmNvbSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5uYW5vLWxpZ2h0cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdmNobHVtL25hbm8tbGlnaHRzIiwKICAidXVpZCI6ICJuYW5vLWxpZ2h0c0BjaGx1bXNreXZhY2xhdi5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
 , {"uuid": "just-another-search-bar@xelad0m", "name": "Just Another Search Bar", "pname": "just-another-search-bar", "description": "Simple GNOME Shell extension for performing search queries\nfrom desktop. Some search engines are added as examples, you can add your own,\nincluding local search tools with suitable CLI", "link": "https://extensions.gnome.org/extension/5522/just-another-search-bar/", "shell_version_map": {
     "43": {"version": "9", "sha256": "1p934bgds2d5sg4a7hqrdlm9l9psrg2bjfasv0h1k46nj0dpryzs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gZm9yIHBlcmZvcm1pbmcgc2VhcmNoIHF1ZXJpZXNcbmZyb20gZGVza3RvcC4gU29tZSBzZWFyY2ggZW5naW5lcyBhcmUgYWRkZWQgYXMgZXhhbXBsZXMsIHlvdSBjYW4gYWRkIHlvdXIgb3duLFxuaW5jbHVkaW5nIGxvY2FsIHNlYXJjaCB0b29scyB3aXRoIHN1aXRhYmxlIENMSSIsCiAgIm5hbWUiOiAiSnVzdCBBbm90aGVyIFNlYXJjaCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLXNoZWxsLmV4dGVuc2lvbnMuanVzdC1hbm90aGVyLXNlYXJjaC1iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3hlbGFkMG0vanVzdC1hbm90aGVyLXNlYXJjaC1iYXIiLAogICJ1dWlkIjogImp1c3QtYW5vdGhlci1zZWFyY2gtYmFyQHhlbGFkMG0iLAogICJ2ZXJzaW9uIjogOQp9"},
     "44": {"version": "9", "sha256": "1p934bgds2d5sg4a7hqrdlm9l9psrg2bjfasv0h1k46nj0dpryzs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gZm9yIHBlcmZvcm1pbmcgc2VhcmNoIHF1ZXJpZXNcbmZyb20gZGVza3RvcC4gU29tZSBzZWFyY2ggZW5naW5lcyBhcmUgYWRkZWQgYXMgZXhhbXBsZXMsIHlvdSBjYW4gYWRkIHlvdXIgb3duLFxuaW5jbHVkaW5nIGxvY2FsIHNlYXJjaCB0b29scyB3aXRoIHN1aXRhYmxlIENMSSIsCiAgIm5hbWUiOiAiSnVzdCBBbm90aGVyIFNlYXJjaCBCYXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLXNoZWxsLmV4dGVuc2lvbnMuanVzdC1hbm90aGVyLXNlYXJjaC1iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3hlbGFkMG0vanVzdC1hbm90aGVyLXNlYXJjaC1iYXIiLAogICJ1dWlkIjogImp1c3QtYW5vdGhlci1zZWFyY2gtYmFyQHhlbGFkMG0iLAogICJ2ZXJzaW9uIjogOQp9"},
-    "45": {"version": "10", "sha256": "1b4cxhdpm93s48jf7hcmjmkw8ih308gv3y2w9m2rrx79d2sdvgvs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gZm9yIHBlcmZvcm1pbmcgc2VhcmNoIHF1ZXJpZXNcbmZyb20gZGVza3RvcC4gU29tZSBzZWFyY2ggZW5naW5lcyBhcmUgYWRkZWQgYXMgZXhhbXBsZXMsIHlvdSBjYW4gYWRkIHlvdXIgb3duLFxuaW5jbHVkaW5nIGxvY2FsIHNlYXJjaCB0b29scyB3aXRoIHN1aXRhYmxlIENMSSIsCiAgImdldHRleHQtZG9tYWluIjogImp1c3QtYW5vdGhlci1zZWFyY2gtYmFyIiwKICAibmFtZSI6ICJKdXN0IEFub3RoZXIgU2VhcmNoIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUtc2hlbGwuZXh0ZW5zaW9ucy5qdXN0LWFub3RoZXItc2VhcmNoLWJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS94ZWxhZDBtL2p1c3QtYW5vdGhlci1zZWFyY2gtYmFyIiwKICAidXVpZCI6ICJqdXN0LWFub3RoZXItc2VhcmNoLWJhckB4ZWxhZDBtIiwKICAidmVyc2lvbiI6IDEwCn0="}
+    "45": {"version": "11", "sha256": "0xxdahjl56jkdx40s5imd6v3hvcshpayy7qk5vr0ha79vqmxg888", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gZm9yIHBlcmZvcm1pbmcgc2VhcmNoIHF1ZXJpZXNcbmZyb20gZGVza3RvcC4gU29tZSBzZWFyY2ggZW5naW5lcyBhcmUgYWRkZWQgYXMgZXhhbXBsZXMsIHlvdSBjYW4gYWRkIHlvdXIgb3duLFxuaW5jbHVkaW5nIGxvY2FsIHNlYXJjaCB0b29scyB3aXRoIHN1aXRhYmxlIENMSSIsCiAgImdldHRleHQtZG9tYWluIjogImp1c3QtYW5vdGhlci1zZWFyY2gtYmFyIiwKICAibmFtZSI6ICJKdXN0IEFub3RoZXIgU2VhcmNoIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5qdXN0LWFub3RoZXItc2VhcmNoLWJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20veGVsYWQwbS9qdXN0LWFub3RoZXItc2VhcmNoLWJhciIsCiAgInV1aWQiOiAianVzdC1hbm90aGVyLXNlYXJjaC1iYXJAeGVsYWQwbSIsCiAgInZlcnNpb24iOiAxMQp9"},
+    "46": {"version": "11", "sha256": "0xxdahjl56jkdx40s5imd6v3hvcshpayy7qk5vr0ha79vqmxg888", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBHTk9NRSBTaGVsbCBleHRlbnNpb24gZm9yIHBlcmZvcm1pbmcgc2VhcmNoIHF1ZXJpZXNcbmZyb20gZGVza3RvcC4gU29tZSBzZWFyY2ggZW5naW5lcyBhcmUgYWRkZWQgYXMgZXhhbXBsZXMsIHlvdSBjYW4gYWRkIHlvdXIgb3duLFxuaW5jbHVkaW5nIGxvY2FsIHNlYXJjaCB0b29scyB3aXRoIHN1aXRhYmxlIENMSSIsCiAgImdldHRleHQtZG9tYWluIjogImp1c3QtYW5vdGhlci1zZWFyY2gtYmFyIiwKICAibmFtZSI6ICJKdXN0IEFub3RoZXIgU2VhcmNoIEJhciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5qdXN0LWFub3RoZXItc2VhcmNoLWJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20veGVsYWQwbS9qdXN0LWFub3RoZXItc2VhcmNoLWJhciIsCiAgInV1aWQiOiAianVzdC1hbm90aGVyLXNlYXJjaC1iYXJAeGVsYWQwbSIsCiAgInZlcnNpb24iOiAxMQp9"}
   }}
 , {"uuid": "compact-quick-settings@gnome-shell-extensions.mariospr.org", "name": "Compact Quick Settings", "pname": "compact-quick-settings", "description": "Compact quick settings menu for GNOME 43 and newer", "link": "https://extensions.gnome.org/extension/5527/compact-quick-settings/", "shell_version_map": {
     "43": {"version": "3", "sha256": "04ffksmfc27gya24x2fj0zpax3yj1kwjdwn33a99rxpypmicvpwf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbXBhY3QgcXVpY2sgc2V0dGluZ3MgbWVudSBmb3IgR05PTUUgNDMgYW5kIG5ld2VyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiIiwKICAibmFtZSI6ICJDb21wYWN0IFF1aWNrIFNldHRpbmdzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmlvc3ByL2NvbXBhY3QtcXVpY2stc2V0dGluZ3MtZ25vbWUtc2hlbGwtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJjb21wYWN0LXF1aWNrLXNldHRpbmdzQGdub21lLXNoZWxsLWV4dGVuc2lvbnMubWFyaW9zcHIub3JnIiwKICAidmVyc2lvbiI6IDMKfQ=="},
@@ -5398,10 +5608,11 @@
     "44": {"version": "7", "sha256": "1xj7b97z0y5ryb5zikawlzsknk3l1zhb2xflpf28gvfbrk1gc642", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBpbnRvIGFub3RoZXIgT1MgZGlyZWN0bHkgZnJvbSBHTk9NRS5cbkEgZXhwYW5zaW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2NxdWFudHVtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jdXN0b21yZWJvb3QiLAogICJuYW1lIjogIkN1c3RvbSBSZWJvb3QiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiTm92YTE1NDUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL05vdmExNTQ1L2dub21lLXNoZWxsLWV4dGVuc2lvbi1jdXN0b21yZWJvb3QiLAogICJ1dWlkIjogImN1c3RvbXJlYm9vdEBub3ZhMTU0NSIsCiAgInZlcnNpb24iOiA3Cn0="},
     "45": {"version": "9", "sha256": "0pgzmin2d7jni530spf2b0yf8m99qhas59n2al6nkn44lg4iwv03", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlYm9vdCBpbnRvIGFub3RoZXIgT1MgZGlyZWN0bHkgZnJvbSBHTk9NRS5cbkEgZXhwYW5zaW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2NxdWFudHVtL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jdXN0b21yZWJvb3QiLAogICJuYW1lIjogIkN1c3RvbSBSZWJvb3QiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiTm92YTE1NDUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTm92YTE1NDUvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWN1c3RvbXJlYm9vdCIsCiAgInV1aWQiOiAiY3VzdG9tcmVib290QG5vdmExNTQ1IiwKICAidmVyc2lvbiI6IDkKfQ=="}
   }}
-, {"uuid": "custom-accent-colors@demiskp", "name": "Custom Accent Colors", "pname": "custom-accent-colors", "description": "Allows the user to choose between 9 Custom Accent Colors. The Accent Color can be applied to GTK4/GTK3 apps and the Gnome Shell.", "link": "https://extensions.gnome.org/extension/5547/custom-accent-colors/", "shell_version_map": {
+, {"uuid": "custom-accent-colors@demiskp", "name": "Custom Accent Colors", "pname": "custom-accent-colors", "description": "A GNOME Shell Extension that provides 7 Custom Accent Colors. The selected Accent Color can be applied to GTK4/GTK3 apps and the Gnome Shell.", "link": "https://extensions.gnome.org/extension/5547/custom-accent-colors/", "shell_version_map": {
     "43": {"version": "6", "sha256": "1cfmqp524m3zkw5vj6msr9pjjwwwys3mcvjipfdl875lkwdb3xg6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgdXNlciB0byBjaG9vc2UgYmV0d2VlbiA5IEN1c3RvbSBBY2NlbnQgQ29sb3JzLiBUaGUgQWNjZW50IENvbG9yIGNhbiBiZSBhcHBsaWVkIHRvIEdUSzQvR1RLMyBhcHBzIGFuZCB0aGUgR25vbWUgU2hlbGwuIiwKICAibmFtZSI6ICJDdXN0b20gQWNjZW50IENvbG9ycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGVtaXNrcC9jdXN0b20tYWNjZW50LWNvbG9ycyIsCiAgInV1aWQiOiAiY3VzdG9tLWFjY2VudC1jb2xvcnNAZGVtaXNrcCIsCiAgInZlcnNpb24iOiA2Cn0="},
     "44": {"version": "6", "sha256": "1cfmqp524m3zkw5vj6msr9pjjwwwys3mcvjipfdl875lkwdb3xg6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgdXNlciB0byBjaG9vc2UgYmV0d2VlbiA5IEN1c3RvbSBBY2NlbnQgQ29sb3JzLiBUaGUgQWNjZW50IENvbG9yIGNhbiBiZSBhcHBsaWVkIHRvIEdUSzQvR1RLMyBhcHBzIGFuZCB0aGUgR25vbWUgU2hlbGwuIiwKICAibmFtZSI6ICJDdXN0b20gQWNjZW50IENvbG9ycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGVtaXNrcC9jdXN0b20tYWNjZW50LWNvbG9ycyIsCiAgInV1aWQiOiAiY3VzdG9tLWFjY2VudC1jb2xvcnNAZGVtaXNrcCIsCiAgInZlcnNpb24iOiA2Cn0="},
-    "45": {"version": "9", "sha256": "1bwz5bib4ancd0pq1vf8qbwm04p9n61lznp51izfcnf8nag5s0fv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgdXNlciB0byBjaG9vc2UgYmV0d2VlbiA5IEN1c3RvbSBBY2NlbnQgQ29sb3JzLiBUaGUgQWNjZW50IENvbG9yIGNhbiBiZSBhcHBsaWVkIHRvIEdUSzQvR1RLMyBhcHBzIGFuZCB0aGUgR25vbWUgU2hlbGwuIiwKICAibmFtZSI6ICJDdXN0b20gQWNjZW50IENvbG9ycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kZW1pc2twL2N1c3RvbS1hY2NlbnQtY29sb3JzIiwKICAidXVpZCI6ICJjdXN0b20tYWNjZW50LWNvbG9yc0BkZW1pc2twIiwKICAidmVyc2lvbiI6IDkKfQ=="}
+    "45": {"version": "9", "sha256": "1bwz5bib4ancd0pq1vf8qbwm04p9n61lznp51izfcnf8nag5s0fv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgdXNlciB0byBjaG9vc2UgYmV0d2VlbiA5IEN1c3RvbSBBY2NlbnQgQ29sb3JzLiBUaGUgQWNjZW50IENvbG9yIGNhbiBiZSBhcHBsaWVkIHRvIEdUSzQvR1RLMyBhcHBzIGFuZCB0aGUgR25vbWUgU2hlbGwuIiwKICAibmFtZSI6ICJDdXN0b20gQWNjZW50IENvbG9ycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kZW1pc2twL2N1c3RvbS1hY2NlbnQtY29sb3JzIiwKICAidXVpZCI6ICJjdXN0b20tYWNjZW50LWNvbG9yc0BkZW1pc2twIiwKICAidmVyc2lvbiI6IDkKfQ=="},
+    "46": {"version": "10", "sha256": "0wbsqffa4v0pfrw5qw3aanrhqqv8a2sjnq364ch6p5j728nxq60s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgRXh0ZW5zaW9uIHRoYXQgcHJvdmlkZXMgNyBDdXN0b20gQWNjZW50IENvbG9ycy4gVGhlIHNlbGVjdGVkIEFjY2VudCBDb2xvciBjYW4gYmUgYXBwbGllZCB0byBHVEs0L0dUSzMgYXBwcyBhbmQgdGhlIEdub21lIFNoZWxsLiIsCiAgIm5hbWUiOiAiQ3VzdG9tIEFjY2VudCBDb2xvcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGVtaXNrcC9jdXN0b20tYWNjZW50LWNvbG9ycyIsCiAgInV1aWQiOiAiY3VzdG9tLWFjY2VudC1jb2xvcnNAZGVtaXNrcCIsCiAgInZlcnNpb24iOiAxMAp9"}
   }}
 , {"uuid": "dynamic-calendar-and-clocks-icons@fcusr.github.com", "name": "Dynamic Calendar, Clocks and Weather Icons", "pname": "dynamic-calendar-and-clocks-icons", "description": "Let Calendar, Clocks and Weather icons show current date, time and weather.", "link": "https://extensions.gnome.org/extension/5550/dynamic-calendar-and-clocks-icons/", "shell_version_map": {
     "43": {"version": "7", "sha256": "06z2r443n2c17s6xc4aahchyqvw765gi19pl8v9pb0w1gyywnlhz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxldCBDYWxlbmRhciwgQ2xvY2tzIGFuZCBXZWF0aGVyIGljb25zIHNob3cgY3VycmVudCBkYXRlLCB0aW1lIGFuZCB3ZWF0aGVyLiIsCiAgIm5hbWUiOiAiRHluYW1pYyBDYWxlbmRhciwgQ2xvY2tzIGFuZCBXZWF0aGVyIEljb25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mY3Vzci9keW5hbWljLWNhbGVuZGFyLWFuZC1jbG9ja3MtaWNvbnMiLAogICJ1dWlkIjogImR5bmFtaWMtY2FsZW5kYXItYW5kLWNsb2Nrcy1pY29uc0BmY3Vzci5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
@@ -5435,21 +5646,24 @@
     "42": {"version": "12", "sha256": "0whfsm0a3jfj5srb9qc87w9v2y4z68cjciz142njh89j3fs2wcv6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBwZXJjZW50YWdlLiIsCiAgIm5hbWUiOiAiUG93ZXIgUHJvZmlsZSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VsaWFwYXNxdWFsaS9wb3dlci1wcm9maWxlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJwb3dlci1wcm9maWxlLXN3aXRjaGVyQGVsaWFwYXNxdWFsaS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "43": {"version": "12", "sha256": "0whfsm0a3jfj5srb9qc87w9v2y4z68cjciz142njh89j3fs2wcv6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBwZXJjZW50YWdlLiIsCiAgIm5hbWUiOiAiUG93ZXIgUHJvZmlsZSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VsaWFwYXNxdWFsaS9wb3dlci1wcm9maWxlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJwb3dlci1wcm9maWxlLXN3aXRjaGVyQGVsaWFwYXNxdWFsaS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
     "44": {"version": "12", "sha256": "0whfsm0a3jfj5srb9qc87w9v2y4z68cjciz142njh89j3fs2wcv6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBwZXJjZW50YWdlLiIsCiAgIm5hbWUiOiAiUG93ZXIgUHJvZmlsZSBTd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2VsaWFwYXNxdWFsaS9wb3dlci1wcm9maWxlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJwb3dlci1wcm9maWxlLXN3aXRjaGVyQGVsaWFwYXNxdWFsaS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
-    "45": {"version": "18", "sha256": "013j9ckbkcg7af8pyfwdaxrrvkm8lizn7g0n39hmyxd44yz8hmsn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBwZXJjZW50YWdlLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBvd2VyLXByb2ZpbGUtc3dpdGNoZXIiLAogICJuYW1lIjogIlBvd2VyIFByb2ZpbGUgU3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucG93ZXItcHJvZmlsZS1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9lbGlhcGFzcXVhbGkvcG93ZXItcHJvZmlsZS1zd2l0Y2hlciIsCiAgInV1aWQiOiAicG93ZXItcHJvZmlsZS1zd2l0Y2hlckBlbGlhcGFzcXVhbGkuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDE4Cn0="}
+    "45": {"version": "19", "sha256": "0r9yg02rzfgbhm7mgahpdi7x28lix59d5kyd65ibmydyl94chb5p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBwZXJjZW50YWdlLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBvd2VyLXByb2ZpbGUtc3dpdGNoZXIiLAogICJuYW1lIjogIlBvd2VyIFByb2ZpbGUgU3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucG93ZXItcHJvZmlsZS1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWxpYXBhc3F1YWxpL3Bvd2VyLXByb2ZpbGUtc3dpdGNoZXIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtc3dpdGNoZXJAZWxpYXBhc3F1YWxpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxOQp9"},
+    "46": {"version": "19", "sha256": "0r9yg02rzfgbhm7mgahpdi7x28lix59d5kyd65ibmydyl94chb5p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBwZXJjZW50YWdlLiIsCiAgImdldHRleHQtZG9tYWluIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBvd2VyLXByb2ZpbGUtc3dpdGNoZXIiLAogICJuYW1lIjogIlBvd2VyIFByb2ZpbGUgU3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucG93ZXItcHJvZmlsZS1zd2l0Y2hlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWxpYXBhc3F1YWxpL3Bvd2VyLXByb2ZpbGUtc3dpdGNoZXIiLAogICJ1dWlkIjogInBvd2VyLXByb2ZpbGUtc3dpdGNoZXJAZWxpYXBhc3F1YWxpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxOQp9"}
   }}
-, {"uuid": "colorblind-filters@G-dH.github.com", "name": "Colorblind Filters", "pname": "colorblind-filters", "description": "Color filters that should help color-blind users and also developers.\nThe menu includes correction filters and also simulation filters that can show you what color-blind people see. Included are filters for Protanopia, Deuteranopia and Tritanopia, filter strength is adjustable. Available are also filters for desaturation, channel mix, and lightness and color inversions.\n\nPrimary mouse button click on the panel button toggles active filter, secondary click opens configuration menu, middle click toggles high-contrast correction if available and scroll switches filters.\n\nDiscussions and bug reports on the GitHub page linked below, please.", "link": "https://extensions.gnome.org/extension/5589/colorblind-filters/", "shell_version_map": {
+, {"uuid": "colorblind-filters@G-dH.github.com", "name": "Colorblind Filters", "pname": "colorblind-filters", "description": "Color filters are designed to assist both color-blind users and developers. The menu offers correction filters as well as simulation filters that demonstrate how color-blind individuals perceive colors. Included are filters for Protanopia, Deuteranopia, and Tritanopia, with adjustable strength. Additionally, filters for desaturation, channel mix, and lightness and color inversions are available.\n\nPrimary mouse button click on the panel button toggles active filter, secondary click opens configuration menu, middle click toggles high-contrast correction if available and scroll switches filters.\n\nDiscussions and bug reports on the GitHub page linked below, please.", "link": "https://extensions.gnome.org/extension/5589/colorblind-filters/", "shell_version_map": {
     "38": {"version": "17", "sha256": "0lgdx717xzm8fhszfvx9hqjx1kjkzlx8hs5jwrzrslif32vwjsbr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgdGhhdCBzaG91bGQgaGVscCBjb2xvci1ibGluZCB1c2VycyBhbmQgYWxzbyBkZXZlbG9wZXJzLlxuVGhlIG1lbnUgaW5jbHVkZXMgY29ycmVjdGlvbiBmaWx0ZXJzIGFuZCBhbHNvIHNpbXVsYXRpb24gZmlsdGVycyB0aGF0IGNhbiBzaG93IHlvdSB3aGF0IGNvbG9yLWJsaW5kIHBlb3BsZSBzZWUuIEluY2x1ZGVkIGFyZSBmaWx0ZXJzIGZvciBQcm90YW5vcGlhLCBEZXV0ZXJhbm9waWEgYW5kIFRyaXRhbm9waWEsIGZpbHRlciBzdHJlbmd0aCBpcyBhZGp1c3RhYmxlLiBBdmFpbGFibGUgYXJlIGFsc28gZmlsdGVycyBmb3IgZGVzYXR1cmF0aW9uLCBjaGFubmVsIG1peCwgYW5kIGxpZ2h0bmVzcyBhbmQgY29sb3IgaW52ZXJzaW9ucy5cblxuUHJpbWFyeSBtb3VzZSBidXR0b24gY2xpY2sgb24gdGhlIHBhbmVsIGJ1dHRvbiB0b2dnbGVzIGFjdGl2ZSBmaWx0ZXIsIHNlY29uZGFyeSBjbGljayBvcGVucyBjb25maWd1cmF0aW9uIG1lbnUsIG1pZGRsZSBjbGljayB0b2dnbGVzIGhpZ2gtY29udHJhc3QgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUgYW5kIHNjcm9sbCBzd2l0Y2hlcyBmaWx0ZXJzLlxuXG5EaXNjdXNzaW9ucyBhbmQgYnVnIHJlcG9ydHMgb24gdGhlIEdpdEh1YiBwYWdlIGxpbmtlZCBiZWxvdywgcGxlYXNlLiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yYmxpbmQtZmlsdGVycyIsCiAgIm5hbWUiOiAiQ29sb3JibGluZCBGaWx0ZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9nbm9tZS1jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJ1dWlkIjogImNvbG9yYmxpbmQtZmlsdGVyc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "40": {"version": "17", "sha256": "0lgdx717xzm8fhszfvx9hqjx1kjkzlx8hs5jwrzrslif32vwjsbr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgdGhhdCBzaG91bGQgaGVscCBjb2xvci1ibGluZCB1c2VycyBhbmQgYWxzbyBkZXZlbG9wZXJzLlxuVGhlIG1lbnUgaW5jbHVkZXMgY29ycmVjdGlvbiBmaWx0ZXJzIGFuZCBhbHNvIHNpbXVsYXRpb24gZmlsdGVycyB0aGF0IGNhbiBzaG93IHlvdSB3aGF0IGNvbG9yLWJsaW5kIHBlb3BsZSBzZWUuIEluY2x1ZGVkIGFyZSBmaWx0ZXJzIGZvciBQcm90YW5vcGlhLCBEZXV0ZXJhbm9waWEgYW5kIFRyaXRhbm9waWEsIGZpbHRlciBzdHJlbmd0aCBpcyBhZGp1c3RhYmxlLiBBdmFpbGFibGUgYXJlIGFsc28gZmlsdGVycyBmb3IgZGVzYXR1cmF0aW9uLCBjaGFubmVsIG1peCwgYW5kIGxpZ2h0bmVzcyBhbmQgY29sb3IgaW52ZXJzaW9ucy5cblxuUHJpbWFyeSBtb3VzZSBidXR0b24gY2xpY2sgb24gdGhlIHBhbmVsIGJ1dHRvbiB0b2dnbGVzIGFjdGl2ZSBmaWx0ZXIsIHNlY29uZGFyeSBjbGljayBvcGVucyBjb25maWd1cmF0aW9uIG1lbnUsIG1pZGRsZSBjbGljayB0b2dnbGVzIGhpZ2gtY29udHJhc3QgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUgYW5kIHNjcm9sbCBzd2l0Y2hlcyBmaWx0ZXJzLlxuXG5EaXNjdXNzaW9ucyBhbmQgYnVnIHJlcG9ydHMgb24gdGhlIEdpdEh1YiBwYWdlIGxpbmtlZCBiZWxvdywgcGxlYXNlLiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yYmxpbmQtZmlsdGVycyIsCiAgIm5hbWUiOiAiQ29sb3JibGluZCBGaWx0ZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9nbm9tZS1jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJ1dWlkIjogImNvbG9yYmxpbmQtZmlsdGVyc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "41": {"version": "17", "sha256": "0lgdx717xzm8fhszfvx9hqjx1kjkzlx8hs5jwrzrslif32vwjsbr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgdGhhdCBzaG91bGQgaGVscCBjb2xvci1ibGluZCB1c2VycyBhbmQgYWxzbyBkZXZlbG9wZXJzLlxuVGhlIG1lbnUgaW5jbHVkZXMgY29ycmVjdGlvbiBmaWx0ZXJzIGFuZCBhbHNvIHNpbXVsYXRpb24gZmlsdGVycyB0aGF0IGNhbiBzaG93IHlvdSB3aGF0IGNvbG9yLWJsaW5kIHBlb3BsZSBzZWUuIEluY2x1ZGVkIGFyZSBmaWx0ZXJzIGZvciBQcm90YW5vcGlhLCBEZXV0ZXJhbm9waWEgYW5kIFRyaXRhbm9waWEsIGZpbHRlciBzdHJlbmd0aCBpcyBhZGp1c3RhYmxlLiBBdmFpbGFibGUgYXJlIGFsc28gZmlsdGVycyBmb3IgZGVzYXR1cmF0aW9uLCBjaGFubmVsIG1peCwgYW5kIGxpZ2h0bmVzcyBhbmQgY29sb3IgaW52ZXJzaW9ucy5cblxuUHJpbWFyeSBtb3VzZSBidXR0b24gY2xpY2sgb24gdGhlIHBhbmVsIGJ1dHRvbiB0b2dnbGVzIGFjdGl2ZSBmaWx0ZXIsIHNlY29uZGFyeSBjbGljayBvcGVucyBjb25maWd1cmF0aW9uIG1lbnUsIG1pZGRsZSBjbGljayB0b2dnbGVzIGhpZ2gtY29udHJhc3QgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUgYW5kIHNjcm9sbCBzd2l0Y2hlcyBmaWx0ZXJzLlxuXG5EaXNjdXNzaW9ucyBhbmQgYnVnIHJlcG9ydHMgb24gdGhlIEdpdEh1YiBwYWdlIGxpbmtlZCBiZWxvdywgcGxlYXNlLiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yYmxpbmQtZmlsdGVycyIsCiAgIm5hbWUiOiAiQ29sb3JibGluZCBGaWx0ZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9nbm9tZS1jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJ1dWlkIjogImNvbG9yYmxpbmQtZmlsdGVyc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "42": {"version": "17", "sha256": "0lgdx717xzm8fhszfvx9hqjx1kjkzlx8hs5jwrzrslif32vwjsbr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgdGhhdCBzaG91bGQgaGVscCBjb2xvci1ibGluZCB1c2VycyBhbmQgYWxzbyBkZXZlbG9wZXJzLlxuVGhlIG1lbnUgaW5jbHVkZXMgY29ycmVjdGlvbiBmaWx0ZXJzIGFuZCBhbHNvIHNpbXVsYXRpb24gZmlsdGVycyB0aGF0IGNhbiBzaG93IHlvdSB3aGF0IGNvbG9yLWJsaW5kIHBlb3BsZSBzZWUuIEluY2x1ZGVkIGFyZSBmaWx0ZXJzIGZvciBQcm90YW5vcGlhLCBEZXV0ZXJhbm9waWEgYW5kIFRyaXRhbm9waWEsIGZpbHRlciBzdHJlbmd0aCBpcyBhZGp1c3RhYmxlLiBBdmFpbGFibGUgYXJlIGFsc28gZmlsdGVycyBmb3IgZGVzYXR1cmF0aW9uLCBjaGFubmVsIG1peCwgYW5kIGxpZ2h0bmVzcyBhbmQgY29sb3IgaW52ZXJzaW9ucy5cblxuUHJpbWFyeSBtb3VzZSBidXR0b24gY2xpY2sgb24gdGhlIHBhbmVsIGJ1dHRvbiB0b2dnbGVzIGFjdGl2ZSBmaWx0ZXIsIHNlY29uZGFyeSBjbGljayBvcGVucyBjb25maWd1cmF0aW9uIG1lbnUsIG1pZGRsZSBjbGljayB0b2dnbGVzIGhpZ2gtY29udHJhc3QgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUgYW5kIHNjcm9sbCBzd2l0Y2hlcyBmaWx0ZXJzLlxuXG5EaXNjdXNzaW9ucyBhbmQgYnVnIHJlcG9ydHMgb24gdGhlIEdpdEh1YiBwYWdlIGxpbmtlZCBiZWxvdywgcGxlYXNlLiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yYmxpbmQtZmlsdGVycyIsCiAgIm5hbWUiOiAiQ29sb3JibGluZCBGaWx0ZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9nbm9tZS1jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJ1dWlkIjogImNvbG9yYmxpbmQtZmlsdGVyc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "43": {"version": "17", "sha256": "0lgdx717xzm8fhszfvx9hqjx1kjkzlx8hs5jwrzrslif32vwjsbr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgdGhhdCBzaG91bGQgaGVscCBjb2xvci1ibGluZCB1c2VycyBhbmQgYWxzbyBkZXZlbG9wZXJzLlxuVGhlIG1lbnUgaW5jbHVkZXMgY29ycmVjdGlvbiBmaWx0ZXJzIGFuZCBhbHNvIHNpbXVsYXRpb24gZmlsdGVycyB0aGF0IGNhbiBzaG93IHlvdSB3aGF0IGNvbG9yLWJsaW5kIHBlb3BsZSBzZWUuIEluY2x1ZGVkIGFyZSBmaWx0ZXJzIGZvciBQcm90YW5vcGlhLCBEZXV0ZXJhbm9waWEgYW5kIFRyaXRhbm9waWEsIGZpbHRlciBzdHJlbmd0aCBpcyBhZGp1c3RhYmxlLiBBdmFpbGFibGUgYXJlIGFsc28gZmlsdGVycyBmb3IgZGVzYXR1cmF0aW9uLCBjaGFubmVsIG1peCwgYW5kIGxpZ2h0bmVzcyBhbmQgY29sb3IgaW52ZXJzaW9ucy5cblxuUHJpbWFyeSBtb3VzZSBidXR0b24gY2xpY2sgb24gdGhlIHBhbmVsIGJ1dHRvbiB0b2dnbGVzIGFjdGl2ZSBmaWx0ZXIsIHNlY29uZGFyeSBjbGljayBvcGVucyBjb25maWd1cmF0aW9uIG1lbnUsIG1pZGRsZSBjbGljayB0b2dnbGVzIGhpZ2gtY29udHJhc3QgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUgYW5kIHNjcm9sbCBzd2l0Y2hlcyBmaWx0ZXJzLlxuXG5EaXNjdXNzaW9ucyBhbmQgYnVnIHJlcG9ydHMgb24gdGhlIEdpdEh1YiBwYWdlIGxpbmtlZCBiZWxvdywgcGxlYXNlLiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yYmxpbmQtZmlsdGVycyIsCiAgIm5hbWUiOiAiQ29sb3JibGluZCBGaWx0ZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9nbm9tZS1jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJ1dWlkIjogImNvbG9yYmxpbmQtZmlsdGVyc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
     "44": {"version": "17", "sha256": "0lgdx717xzm8fhszfvx9hqjx1kjkzlx8hs5jwrzrslif32vwjsbr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgdGhhdCBzaG91bGQgaGVscCBjb2xvci1ibGluZCB1c2VycyBhbmQgYWxzbyBkZXZlbG9wZXJzLlxuVGhlIG1lbnUgaW5jbHVkZXMgY29ycmVjdGlvbiBmaWx0ZXJzIGFuZCBhbHNvIHNpbXVsYXRpb24gZmlsdGVycyB0aGF0IGNhbiBzaG93IHlvdSB3aGF0IGNvbG9yLWJsaW5kIHBlb3BsZSBzZWUuIEluY2x1ZGVkIGFyZSBmaWx0ZXJzIGZvciBQcm90YW5vcGlhLCBEZXV0ZXJhbm9waWEgYW5kIFRyaXRhbm9waWEsIGZpbHRlciBzdHJlbmd0aCBpcyBhZGp1c3RhYmxlLiBBdmFpbGFibGUgYXJlIGFsc28gZmlsdGVycyBmb3IgZGVzYXR1cmF0aW9uLCBjaGFubmVsIG1peCwgYW5kIGxpZ2h0bmVzcyBhbmQgY29sb3IgaW52ZXJzaW9ucy5cblxuUHJpbWFyeSBtb3VzZSBidXR0b24gY2xpY2sgb24gdGhlIHBhbmVsIGJ1dHRvbiB0b2dnbGVzIGFjdGl2ZSBmaWx0ZXIsIHNlY29uZGFyeSBjbGljayBvcGVucyBjb25maWd1cmF0aW9uIG1lbnUsIG1pZGRsZSBjbGljayB0b2dnbGVzIGhpZ2gtY29udHJhc3QgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUgYW5kIHNjcm9sbCBzd2l0Y2hlcyBmaWx0ZXJzLlxuXG5EaXNjdXNzaW9ucyBhbmQgYnVnIHJlcG9ydHMgb24gdGhlIEdpdEh1YiBwYWdlIGxpbmtlZCBiZWxvdywgcGxlYXNlLiIsCiAgImdldHRleHQtZG9tYWluIjogImNvbG9yYmxpbmQtZmlsdGVycyIsCiAgIm5hbWUiOiAiQ29sb3JibGluZCBGaWx0ZXJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9nbm9tZS1jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJ1dWlkIjogImNvbG9yYmxpbmQtZmlsdGVyc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcKfQ=="},
-    "45": {"version": "18", "sha256": "1ri9gwj4mpv66w811p1mn3cvf5yl2ff3lzjpc70b4qv1a9dbayvv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgdGhhdCBzaG91bGQgaGVscCBjb2xvci1ibGluZCB1c2VycyBhbmQgYWxzbyBkZXZlbG9wZXJzLlxuVGhlIG1lbnUgaW5jbHVkZXMgY29ycmVjdGlvbiBmaWx0ZXJzIGFuZCBhbHNvIHNpbXVsYXRpb24gZmlsdGVycyB0aGF0IGNhbiBzaG93IHlvdSB3aGF0IGNvbG9yLWJsaW5kIHBlb3BsZSBzZWUuIEluY2x1ZGVkIGFyZSBmaWx0ZXJzIGZvciBQcm90YW5vcGlhLCBEZXV0ZXJhbm9waWEgYW5kIFRyaXRhbm9waWEsIGZpbHRlciBzdHJlbmd0aCBpcyBhZGp1c3RhYmxlLiBBdmFpbGFibGUgYXJlIGFsc28gZmlsdGVycyBmb3IgZGVzYXR1cmF0aW9uLCBjaGFubmVsIG1peCwgYW5kIGxpZ2h0bmVzcyBhbmQgY29sb3IgaW52ZXJzaW9ucy5cblxuUHJpbWFyeSBtb3VzZSBidXR0b24gY2xpY2sgb24gdGhlIHBhbmVsIGJ1dHRvbiB0b2dnbGVzIGFjdGl2ZSBmaWx0ZXIsIHNlY29uZGFyeSBjbGljayBvcGVucyBjb25maWd1cmF0aW9uIG1lbnUsIG1pZGRsZSBjbGljayB0b2dnbGVzIGhpZ2gtY29udHJhc3QgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUgYW5kIHNjcm9sbCBzd2l0Y2hlcyBmaWx0ZXJzLlxuXG5EaXNjdXNzaW9ucyBhbmQgYnVnIHJlcG9ydHMgb24gdGhlIEdpdEh1YiBwYWdlIGxpbmtlZCBiZWxvdywgcGxlYXNlLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZ2VvcmdkaCIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJjb2xvcmJsaW5kLWZpbHRlcnMiLAogICJuYW1lIjogIkNvbG9yYmxpbmQgRmlsdGVycyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9nbm9tZS1jb2xvcmJsaW5kLWZpbHRlcnMiLAogICJ1dWlkIjogImNvbG9yYmxpbmQtZmlsdGVyc0BHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTgKfQ=="}
+    "45": {"version": "19", "sha256": "047vk0csxn4xrvb3nmcr7c68kx8p77wx51v2gbk36sglvw4p1gcj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgYXJlIGRlc2lnbmVkIHRvIGFzc2lzdCBib3RoIGNvbG9yLWJsaW5kIHVzZXJzIGFuZCBkZXZlbG9wZXJzLiBUaGUgbWVudSBvZmZlcnMgY29ycmVjdGlvbiBmaWx0ZXJzIGFzIHdlbGwgYXMgc2ltdWxhdGlvbiBmaWx0ZXJzIHRoYXQgZGVtb25zdHJhdGUgaG93IGNvbG9yLWJsaW5kIGluZGl2aWR1YWxzIHBlcmNlaXZlIGNvbG9ycy4gSW5jbHVkZWQgYXJlIGZpbHRlcnMgZm9yIFByb3Rhbm9waWEsIERldXRlcmFub3BpYSwgYW5kIFRyaXRhbm9waWEsIHdpdGggYWRqdXN0YWJsZSBzdHJlbmd0aC4gQWRkaXRpb25hbGx5LCBmaWx0ZXJzIGZvciBkZXNhdHVyYXRpb24sIGNoYW5uZWwgbWl4LCBhbmQgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zIGFyZSBhdmFpbGFibGUuXG5cblByaW1hcnkgbW91c2UgYnV0dG9uIGNsaWNrIG9uIHRoZSBwYW5lbCBidXR0b24gdG9nZ2xlcyBhY3RpdmUgZmlsdGVyLCBzZWNvbmRhcnkgY2xpY2sgb3BlbnMgY29uZmlndXJhdGlvbiBtZW51LCBtaWRkbGUgY2xpY2sgdG9nZ2xlcyBoaWdoLWNvbnRyYXN0IGNvcnJlY3Rpb24gaWYgYXZhaWxhYmxlIGFuZCBzY3JvbGwgc3dpdGNoZXMgZmlsdGVycy5cblxuRGlzY3Vzc2lvbnMgYW5kIGJ1ZyByZXBvcnRzIG9uIHRoZSBHaXRIdWIgcGFnZSBsaW5rZWQgYmVsb3csIHBsZWFzZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY29sb3JibGluZC1maWx0ZXJzIiwKICAibmFtZSI6ICJDb2xvcmJsaW5kIEZpbHRlcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29sb3JibGluZC1maWx0ZXJzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2dub21lLWNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInV1aWQiOiAiY29sb3JibGluZC1maWx0ZXJzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxOSwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjAiCn0="},
+    "46": {"version": "19", "sha256": "047vk0csxn4xrvb3nmcr7c68kx8p77wx51v2gbk36sglvw4p1gcj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbG9yIGZpbHRlcnMgYXJlIGRlc2lnbmVkIHRvIGFzc2lzdCBib3RoIGNvbG9yLWJsaW5kIHVzZXJzIGFuZCBkZXZlbG9wZXJzLiBUaGUgbWVudSBvZmZlcnMgY29ycmVjdGlvbiBmaWx0ZXJzIGFzIHdlbGwgYXMgc2ltdWxhdGlvbiBmaWx0ZXJzIHRoYXQgZGVtb25zdHJhdGUgaG93IGNvbG9yLWJsaW5kIGluZGl2aWR1YWxzIHBlcmNlaXZlIGNvbG9ycy4gSW5jbHVkZWQgYXJlIGZpbHRlcnMgZm9yIFByb3Rhbm9waWEsIERldXRlcmFub3BpYSwgYW5kIFRyaXRhbm9waWEsIHdpdGggYWRqdXN0YWJsZSBzdHJlbmd0aC4gQWRkaXRpb25hbGx5LCBmaWx0ZXJzIGZvciBkZXNhdHVyYXRpb24sIGNoYW5uZWwgbWl4LCBhbmQgbGlnaHRuZXNzIGFuZCBjb2xvciBpbnZlcnNpb25zIGFyZSBhdmFpbGFibGUuXG5cblByaW1hcnkgbW91c2UgYnV0dG9uIGNsaWNrIG9uIHRoZSBwYW5lbCBidXR0b24gdG9nZ2xlcyBhY3RpdmUgZmlsdGVyLCBzZWNvbmRhcnkgY2xpY2sgb3BlbnMgY29uZmlndXJhdGlvbiBtZW51LCBtaWRkbGUgY2xpY2sgdG9nZ2xlcyBoaWdoLWNvbnRyYXN0IGNvcnJlY3Rpb24gaWYgYXZhaWxhYmxlIGFuZCBzY3JvbGwgc3dpdGNoZXMgZmlsdGVycy5cblxuRGlzY3Vzc2lvbnMgYW5kIGJ1ZyByZXBvcnRzIG9uIHRoZSBHaXRIdWIgcGFnZSBsaW5rZWQgYmVsb3csIHBsZWFzZS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiY29sb3JibGluZC1maWx0ZXJzIiwKICAibmFtZSI6ICJDb2xvcmJsaW5kIEZpbHRlcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29sb3JibGluZC1maWx0ZXJzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2dub21lLWNvbG9yYmxpbmQtZmlsdGVycyIsCiAgInV1aWQiOiAiY29sb3JibGluZC1maWx0ZXJzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxOSwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjAiCn0="}
   }}
 , {"uuid": "focused-window-dbus@flexagoon.com", "name": "Focused Window D-Bus", "pname": "focused-window-d-bus", "description": "Exposes a D-Bus method to get active window title and class", "link": "https://extensions.gnome.org/extension/5592/focused-window-d-bus/", "shell_version_map": {
     "43": {"version": "3", "sha256": "01g2a82r7rmc9d5mavd8i2x63ridf1w8pm4s32wzq8k83jdq5khr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZXMgYSBELUJ1cyBtZXRob2QgdG8gZ2V0IGFjdGl2ZSB3aW5kb3cgdGl0bGUgYW5kIGNsYXNzIiwKICAibmFtZSI6ICJGb2N1c2VkIFdpbmRvdyBELUJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmxleGFnb29uL2ZvY3VzZWQtd2luZG93LWRidXMiLAogICJ1dWlkIjogImZvY3VzZWQtd2luZG93LWRidXNAZmxleGFnb29uLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="},
     "44": {"version": "3", "sha256": "01g2a82r7rmc9d5mavd8i2x63ridf1w8pm4s32wzq8k83jdq5khr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZXMgYSBELUJ1cyBtZXRob2QgdG8gZ2V0IGFjdGl2ZSB3aW5kb3cgdGl0bGUgYW5kIGNsYXNzIiwKICAibmFtZSI6ICJGb2N1c2VkIFdpbmRvdyBELUJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmxleGFnb29uL2ZvY3VzZWQtd2luZG93LWRidXMiLAogICJ1dWlkIjogImZvY3VzZWQtd2luZG93LWRidXNAZmxleGFnb29uLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="},
-    "45": {"version": "5", "sha256": "1l9if986wkf9vr4z0qnh0k7mxai92jr13h05igf6qr17sfa69792", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZXMgYSBELUJ1cyBtZXRob2QgdG8gZ2V0IGFjdGl2ZSB3aW5kb3cgdGl0bGUgYW5kIGNsYXNzIiwKICAibmFtZSI6ICJGb2N1c2VkIFdpbmRvdyBELUJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mbGV4YWdvb24vZm9jdXNlZC13aW5kb3ctZGJ1cyIsCiAgInV1aWQiOiAiZm9jdXNlZC13aW5kb3ctZGJ1c0BmbGV4YWdvb24uY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="}
+    "45": {"version": "6", "sha256": "0ha0d6iyy11y7qx2xb71dv4p927hx65jzp01w48sfbvfjf3rk3s0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZXMgYSBELUJ1cyBtZXRob2QgdG8gZ2V0IGFjdGl2ZSB3aW5kb3cgdGl0bGUgYW5kIGNsYXNzIiwKICAibmFtZSI6ICJGb2N1c2VkIFdpbmRvdyBELUJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmxleGFnb29uL2ZvY3VzZWQtd2luZG93LWRidXMiLAogICJ1dWlkIjogImZvY3VzZWQtd2luZG93LWRidXNAZmxleGFnb29uLmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="},
+    "46": {"version": "6", "sha256": "0ha0d6iyy11y7qx2xb71dv4p927hx65jzp01w48sfbvfjf3rk3s0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV4cG9zZXMgYSBELUJ1cyBtZXRob2QgdG8gZ2V0IGFjdGl2ZSB3aW5kb3cgdGl0bGUgYW5kIGNsYXNzIiwKICAibmFtZSI6ICJGb2N1c2VkIFdpbmRvdyBELUJ1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmxleGFnb29uL2ZvY3VzZWQtd2luZG93LWRidXMiLAogICJ1dWlkIjogImZvY3VzZWQtd2luZG93LWRidXNAZmxleGFnb29uLmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="}
   }}
 , {"uuid": "multimonitorswap@dvrlabs.tv", "name": "Multi Monitor Swap ", "pname": "multi-monitor-swap", "description": "Swap windows between monitors.", "link": "https://extensions.gnome.org/extension/5597/multi-monitor-swap/", "shell_version_map": {
     "40": {"version": "12", "sha256": "03izg1r7zszz2cs2q1qq92r7kqha9wkgbh1ggii011lpdyryarqb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3YXAgd2luZG93cyBiZXR3ZWVuIG1vbml0b3JzLiIsCiAgIm5hbWUiOiAiTXVsdGkgTW9uaXRvciBTd2FwICIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kdnJsYWJzL211bHRpbW9uaXRvcnN3YXAiLAogICJ1dWlkIjogIm11bHRpbW9uaXRvcnN3YXBAZHZybGFicy50diIsCiAgInZlcnNpb24iOiAxMgp9"},
@@ -5504,7 +5718,8 @@
     "42": {"version": "5", "sha256": "1c8brmjzcgwqqz7zgim8v3dvxq7r34wwvrz1v9il59c4vsyxsn36", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBiZXNpZGUgdGhlIGNsb2NrICh3aGlsZSBhbHNvIGtlZXBpbmcgaXQgY2VudGVyZWQpIGFuZCBjbGljayB0aGUgaW5kaWNhdG9yIHRvIG9wZW4gR05PTUUgV2VhdGhlciwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgV2VhdGhlciBPJ0Nsb2NrIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIldlYXRoZXIgb3IgTm90IiwKICAib3JpZ2luYWwtYXV0aG9yIjogInNvbWVwYXVsb0BkdWNrLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NvbWVwYXVsby9nbm9tZS1zaGVsbC1leHRlbnNpb24td2VhdGhlci1vci1ub3QiLAogICJ1dWlkIjogIndlYXRoZXJvcm5vdEBzb21lcGF1bG8uZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDUKfQ=="},
     "43": {"version": "5", "sha256": "1c8brmjzcgwqqz7zgim8v3dvxq7r34wwvrz1v9il59c4vsyxsn36", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBiZXNpZGUgdGhlIGNsb2NrICh3aGlsZSBhbHNvIGtlZXBpbmcgaXQgY2VudGVyZWQpIGFuZCBjbGljayB0aGUgaW5kaWNhdG9yIHRvIG9wZW4gR05PTUUgV2VhdGhlciwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgV2VhdGhlciBPJ0Nsb2NrIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIldlYXRoZXIgb3IgTm90IiwKICAib3JpZ2luYWwtYXV0aG9yIjogInNvbWVwYXVsb0BkdWNrLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NvbWVwYXVsby9nbm9tZS1zaGVsbC1leHRlbnNpb24td2VhdGhlci1vci1ub3QiLAogICJ1dWlkIjogIndlYXRoZXJvcm5vdEBzb21lcGF1bG8uZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDUKfQ=="},
     "44": {"version": "5", "sha256": "1c8brmjzcgwqqz7zgim8v3dvxq7r34wwvrz1v9il59c4vsyxsn36", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBiZXNpZGUgdGhlIGNsb2NrICh3aGlsZSBhbHNvIGtlZXBpbmcgaXQgY2VudGVyZWQpIGFuZCBjbGljayB0aGUgaW5kaWNhdG9yIHRvIG9wZW4gR05PTUUgV2VhdGhlciwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5LlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgV2VhdGhlciBPJ0Nsb2NrIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIldlYXRoZXIgb3IgTm90IiwKICAib3JpZ2luYWwtYXV0aG9yIjogInNvbWVwYXVsb0BkdWNrLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NvbWVwYXVsby9nbm9tZS1zaGVsbC1leHRlbnNpb24td2VhdGhlci1vci1ub3QiLAogICJ1dWlkIjogIndlYXRoZXJvcm5vdEBzb21lcGF1bG8uZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDUKfQ=="},
-    "45": {"version": "13", "sha256": "0h20qba10g6swwqih7d763234nxghid1jv84kr2wili2mx12q95i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbiB0aGUgcGFuZWwgYW5kIGNsaWNrIHRoZSBpbmRpY2F0b3IgdG8gb3BlbiBHTk9NRSBXZWF0aGVyLiBUaGUgaW5kaWNhdG9yIHBvc2l0aW9uIGNhbiBiZSBhZGp1c3RlZCBpbiBwcmVmZXJlbmNlcyAob24gR05PTUUgNDUrKS5cblxuWW91IG5lZWQgR05PTUUgV2VhdGhlciBpbnN0YWxsZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5IGFuZCBhbiBhY3RpdmUgaW50ZXJuZXQgY29ubmVjdGlvbiB0byByZXRyaWV2ZSBhbmQgZGlzcGxheSB3ZWF0aGVyIGluZm9ybWF0aW9uLlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgV2VhdGhlciBPJ0Nsb2NrIGV4dGVuc2lvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3ZWF0aGVyb3Jub3RAc29tZXBhdWxvLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiV2VhdGhlciBvciBOb3QiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic29tZXBhdWxvQGR1Y2suY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndlYXRoZXJvcm5vdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zb21lcGF1bG8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdlYXRoZXItb3Itbm90IiwKICAidXVpZCI6ICJ3ZWF0aGVyb3Jub3RAc29tZXBhdWxvLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMywKICAidmVyc2lvbi1uYW1lIjogIjQ1LjEiCn0="}
+    "45": {"version": "14", "sha256": "19f0j3hiavwq87qvm6c4cryj8h3zqs9wx2sqn0jhlyb2jh2zz0rr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbiB0aGUgcGFuZWwgYW5kIGNsaWNrIHRoZSBpbmRpY2F0b3IgdG8gb3BlbiBHTk9NRSBXZWF0aGVyLiBUaGUgaW5kaWNhdG9yIHBvc2l0aW9uIGNhbiBiZSBhZGp1c3RlZCBpbiBwcmVmZXJlbmNlcyAob24gR05PTUUgNDUrKS5cblxuWW91IG5lZWQgR05PTUUgV2VhdGhlciBpbnN0YWxsZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5IGFuZCBhbiBhY3RpdmUgaW50ZXJuZXQgY29ubmVjdGlvbiB0byByZXRyaWV2ZSBhbmQgZGlzcGxheSB3ZWF0aGVyIGluZm9ybWF0aW9uLlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgV2VhdGhlciBPJ0Nsb2NrIGV4dGVuc2lvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3ZWF0aGVyb3Jub3RAc29tZXBhdWxvLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiV2VhdGhlciBvciBOb3QiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic29tZXBhdWxvQGR1Y2suY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndlYXRoZXJvcm5vdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29tZXBhdWxvL2dub21lLXNoZWxsLWV4dGVuc2lvbi13ZWF0aGVyLW9yLW5vdCIsCiAgInV1aWQiOiAid2VhdGhlcm9ybm90QHNvbWVwYXVsby5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTQsCiAgInZlcnNpb24tbmFtZSI6ICI0NiIKfQ=="},
+    "46": {"version": "14", "sha256": "19f0j3hiavwq87qvm6c4cryj8h3zqs9wx2sqn0jhlyb2jh2zz0rr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGN1cnJlbnQgd2VhdGhlciBpbiB0aGUgcGFuZWwgYW5kIGNsaWNrIHRoZSBpbmRpY2F0b3IgdG8gb3BlbiBHTk9NRSBXZWF0aGVyLiBUaGUgaW5kaWNhdG9yIHBvc2l0aW9uIGNhbiBiZSBhZGp1c3RlZCBpbiBwcmVmZXJlbmNlcyAob24gR05PTUUgNDUrKS5cblxuWW91IG5lZWQgR05PTUUgV2VhdGhlciBpbnN0YWxsZWQgZm9yIHRoaXMgZXh0ZW5zaW9uIHRvIGZ1bmN0aW9uIHByb3Blcmx5IGFuZCBhbiBhY3RpdmUgaW50ZXJuZXQgY29ubmVjdGlvbiB0byByZXRyaWV2ZSBhbmQgZGlzcGxheSB3ZWF0aGVyIGluZm9ybWF0aW9uLlxuXG5UaGlzIGlzIGEgZm9yayBvZiB0aGUgV2VhdGhlciBPJ0Nsb2NrIGV4dGVuc2lvbi4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3ZWF0aGVyb3Jub3RAc29tZXBhdWxvLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiV2VhdGhlciBvciBOb3QiLAogICJvcmlnaW5hbC1hdXRob3IiOiAic29tZXBhdWxvQGR1Y2suY29tIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndlYXRoZXJvcm5vdCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc29tZXBhdWxvL2dub21lLXNoZWxsLWV4dGVuc2lvbi13ZWF0aGVyLW9yLW5vdCIsCiAgInV1aWQiOiAid2VhdGhlcm9ybm90QHNvbWVwYXVsby5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTQsCiAgInZlcnNpb24tbmFtZSI6ICI0NiIKfQ=="}
   }}
 , {"uuid": "cscotun0-ip-address@cjthedj97.github.com", "name": "cscotun0 IP Address", "pname": "cscotun0-ip-address", "description": "Show cscotun0 IP address on GNOME panel. Do not show loopback addresses (127.0.0.0/8) or other network interface IP addresses. Please install moreutils package as a dependency. Forked from https://github.com/AdamantisSpinae/gnome-extension-tun0-ip-address and modified tunnel interface it looks at.", "link": "https://extensions.gnome.org/extension/5663/cscotun0-ip-address/", "shell_version_map": {
     "40": {"version": "1", "sha256": "10rfpikf5m3ch39ki44x0vs85jwf9rdj6d1jdr5wwr5jhplz09af", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY3Njb3R1bjAgSVAgYWRkcmVzcyBvbiBHTk9NRSBwYW5lbC4gRG8gbm90IHNob3cgbG9vcGJhY2sgYWRkcmVzc2VzICgxMjcuMC4wLjAvOCkgb3Igb3RoZXIgbmV0d29yayBpbnRlcmZhY2UgSVAgYWRkcmVzc2VzLiBQbGVhc2UgaW5zdGFsbCBtb3JldXRpbHMgcGFja2FnZSBhcyBhIGRlcGVuZGVuY3kuIEZvcmtlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9BZGFtYW50aXNTcGluYWUvZ25vbWUtZXh0ZW5zaW9uLXR1bjAtaXAtYWRkcmVzcyBhbmQgbW9kaWZpZWQgdHVubmVsIGludGVyZmFjZSBpdCBsb29rcyBhdC4iLAogICJuYW1lIjogImNzY290dW4wIElQIEFkZHJlc3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY2p0aGVkajk3L2dub21lLWV4dGVuc2lvbi1jc2NvdHVuMC1pcC1hZGRyZXNzLyIsCiAgInV1aWQiOiAiY3Njb3R1bjAtaXAtYWRkcmVzc0BjanRoZWRqOTcuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxCn0="},
@@ -5537,7 +5752,8 @@
     "42": {"version": "21", "sha256": "1a94fmqg8rgrz0fz7m3millh9hgfa3vbw22ivffa31ifssr52a13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYW5kIGNvcHkgb3RwIGtleXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvdHAta2V5cyIsCiAgIm5hbWUiOiAiT1RQIGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3RwLWtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9vc21hbmszL290cC1rZXlzIiwKICAidXVpZCI6ICJvdHAta2V5c0Bvc21hbmszLm5ldCIsCiAgInZlcnNpb24iOiAyMQp9"},
     "43": {"version": "21", "sha256": "1a94fmqg8rgrz0fz7m3millh9hgfa3vbw22ivffa31ifssr52a13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYW5kIGNvcHkgb3RwIGtleXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvdHAta2V5cyIsCiAgIm5hbWUiOiAiT1RQIGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3RwLWtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9vc21hbmszL290cC1rZXlzIiwKICAidXVpZCI6ICJvdHAta2V5c0Bvc21hbmszLm5ldCIsCiAgInZlcnNpb24iOiAyMQp9"},
     "44": {"version": "21", "sha256": "1a94fmqg8rgrz0fz7m3millh9hgfa3vbw22ivffa31ifssr52a13", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYW5kIGNvcHkgb3RwIGtleXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvdHAta2V5cyIsCiAgIm5hbWUiOiAiT1RQIGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3RwLWtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9vc21hbmszL290cC1rZXlzIiwKICAidXVpZCI6ICJvdHAta2V5c0Bvc21hbmszLm5ldCIsCiAgInZlcnNpb24iOiAyMQp9"},
-    "45": {"version": "22", "sha256": "1snbrz8fwxd15i65w7932z8am7dcbl4jhwxydsf9qp922nf01ng8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYW5kIGNvcHkgb3RwIGtleXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvdHAta2V5cyIsCiAgIm5hbWUiOiAiT1RQIGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3RwLWtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3NtYW5rMy9vdHAta2V5cyIsCiAgInV1aWQiOiAib3RwLWtleXNAb3NtYW5rMy5uZXQiLAogICJ2ZXJzaW9uIjogMjIKfQ=="}
+    "45": {"version": "23", "sha256": "07walzz7pqk8c5zh88qflq01wxvgr19bc3941x0b3mmgajgjxff1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYW5kIGNvcHkgb3RwIGtleXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvdHAta2V5cyIsCiAgIm5hbWUiOiAiT1RQIGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3RwLWtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL29zbWFuazMvb3RwLWtleXMiLAogICJ1dWlkIjogIm90cC1rZXlzQG9zbWFuazMubmV0IiwKICAidmVyc2lvbiI6IDIzCn0="},
+    "46": {"version": "23", "sha256": "07walzz7pqk8c5zh88qflq01wxvgr19bc3941x0b3mmgajgjxff1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYW5kIGNvcHkgb3RwIGtleXMiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvdHAta2V5cyIsCiAgIm5hbWUiOiAiT1RQIGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3RwLWtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL29zbWFuazMvb3RwLWtleXMiLAogICJ1dWlkIjogIm90cC1rZXlzQG9zbWFuazMubmV0IiwKICAidmVyc2lvbiI6IDIzCn0="}
   }}
 , {"uuid": "pin-app-folders-to-dash@fcusr.github.com", "name": "Pin App Folders to Dash", "pname": "pin-app-folders-to-dash", "description": "Allow to pin app folders to dash.", "link": "https://extensions.gnome.org/extension/5709/pin-app-folders-to-dash/", "shell_version_map": {
     "43": {"version": "2", "sha256": "0wpcgr5mmh5h412an9l91xg2y0p679aa2civc3zygkvvw38zpm77", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IHRvIHBpbiBhcHAgZm9sZGVycyB0byBkYXNoLiIsCiAgIm5hbWUiOiAiUGluIEFwcCBGb2xkZXJzIHRvIERhc2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmN1c3IvcGluLWFwcC1mb2xkZXJzLXRvLWRhc2giLAogICJ1dWlkIjogInBpbi1hcHAtZm9sZGVycy10by1kYXNoQGZjdXNyLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMgp9"}
@@ -5559,7 +5775,8 @@
 , {"uuid": "battery-indicator-icon@Deminder", "name": "Battery Indicator Icon", "pname": "battery-indicator-icon", "description": "Replace the battery indicator icon with a circle or portrait.", "link": "https://extensions.gnome.org/extension/5718/battery-indicator-icon/", "shell_version_map": {
     "43": {"version": "8", "sha256": "18nqax5gs2nrkjgndj7ikvl6hhxbpxgv355krzz36dsmw2mvzqa4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIGJhdHRlcnkgaW5kaWNhdG9yIGljb24gd2l0aCBhIGNpcmNsZSBvciBwb3J0cmFpdC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAibmFtZSI6ICJCYXR0ZXJ5IEluZGljYXRvciBJY29uIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EZW1pbmRlci9iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAidXVpZCI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uQERlbWluZGVyIiwKICAidmVyc2lvbiI6IDgKfQ=="},
     "44": {"version": "8", "sha256": "18nqax5gs2nrkjgndj7ikvl6hhxbpxgv355krzz36dsmw2mvzqa4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIGJhdHRlcnkgaW5kaWNhdG9yIGljb24gd2l0aCBhIGNpcmNsZSBvciBwb3J0cmFpdC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAibmFtZSI6ICJCYXR0ZXJ5IEluZGljYXRvciBJY29uIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EZW1pbmRlci9iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAidXVpZCI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uQERlbWluZGVyIiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "10", "sha256": "036hf7f1gkkikd0crzgq8sfcax6ax7x84hmbi95p78mqwm5wzfgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIGJhdHRlcnkgaW5kaWNhdG9yIGljb24gd2l0aCBhIGNpcmNsZSBvciBwb3J0cmFpdC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAibmFtZSI6ICJCYXR0ZXJ5IEluZGljYXRvciBJY29uIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0RlbWluZGVyL2JhdHRlcnktaW5kaWNhdG9yLWljb24iLAogICJ1dWlkIjogImJhdHRlcnktaW5kaWNhdG9yLWljb25ARGVtaW5kZXIiLAogICJ2ZXJzaW9uIjogMTAKfQ=="}
+    "45": {"version": "14", "sha256": "1fqdxvddahmgpb6am4i4gmizbxjwgvb8m2r7fiicb8q90fzr17dp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIGJhdHRlcnkgaW5kaWNhdG9yIGljb24gd2l0aCBhIGNpcmNsZSBvciBwb3J0cmFpdC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAibmFtZSI6ICJCYXR0ZXJ5IEluZGljYXRvciBJY29uIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EZW1pbmRlci9iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAidXVpZCI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uQERlbWluZGVyIiwKICAidmVyc2lvbiI6IDE0Cn0="},
+    "46": {"version": "14", "sha256": "1fqdxvddahmgpb6am4i4gmizbxjwgvb8m2r7fiicb8q90fzr17dp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgdGhlIGJhdHRlcnkgaW5kaWNhdG9yIGljb24gd2l0aCBhIGNpcmNsZSBvciBwb3J0cmFpdC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAibmFtZSI6ICJCYXR0ZXJ5IEluZGljYXRvciBJY29uIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9EZW1pbmRlci9iYXR0ZXJ5LWluZGljYXRvci1pY29uIiwKICAidXVpZCI6ICJiYXR0ZXJ5LWluZGljYXRvci1pY29uQERlbWluZGVyIiwKICAidmVyc2lvbiI6IDE0Cn0="}
   }}
 , {"uuid": "clipboard-indicator@Dieg0Js.github.io", "name": "Clipboard Indicator", "pname": "clipboard-indicator", "description": "A minimal clipboard indicator for the gnome shell. Fork of Clipman by popov895.", "link": "https://extensions.gnome.org/extension/5721/clipboard-indicator/", "shell_version_map": {
     "40": {"version": "4", "sha256": "0jszkq48sac8i7pgdgyfcyyqpc4jq3shaj0ghm9hwahs9qd040h3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgbWluaW1hbCBjbGlwYm9hcmQgaW5kaWNhdG9yIGZvciB0aGUgZ25vbWUgc2hlbGwiLAogICJuYW1lIjogIkNsaXBib2FyZCBJbmRpY2F0b3IiLAogICJvcmlnaW5hbC1hdXRob3JzIjogIkRpZWcwSnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0RpZWcwSnMvZ25vbWUtY2xpcGJvYXJkLWluZGljYXRvciIsCiAgInV1aWQiOiAiY2xpcGJvYXJkLWluZGljYXRvckBEaWVnMEpzLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA0Cn0="},
@@ -5572,7 +5789,8 @@
     "42": {"version": "59", "sha256": "01c1a7k20cnwi18sklvwzsbmdlqfjaph3np2gs7syjy087cff4j6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBiYXR0ZXJ5IGNoYXJnaW5nIHRocmVzaG9sZCAvIGNoYXJnaW5nIGxpbWl0IC8gY2hhcmdpbmcgbW9kZVxuQmF0dGVyeSBIZWFsdGggQ2hhcmdpbmc6IEFuIGV4dGVuc2lvbiB0byBtYXhpbWl6ZSB0aGUgYmF0dGVyeSBsaWZlIG9mIGxhcHRvcHMgYnkgc2V0dGluZyB0aGVpciBjaGFyZ2luZyB0aHJlc2hvbGQgb3IgbW9kZXMuXG5cbkNvbXBhdGlibGUgd2l0aFxuLSBBc3VzXG4tIExHXG4tIFNhbXN1bmdcbi0gU29ueVxuLSBIdWF3ZWlcbi0gVG9zaGliYVxuLSBTeXN0ZW03NlxuLSBMZW5vdm8gKElkZWFwYWQsIExlZ2lvbilcbi0gVGhpbmtwYWRcbi0gUGFuYXNvbmljXG4tIEFjZXIgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gTVNJIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFR1eGVkbyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBTbGltYm9vayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBUdXhlZG8gSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFhNRyBJbnRlbFFDNzEgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gRWx1a3Ryb25pY3MgSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFB1cmlzbSBMaWJyZW0gKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gR2lnYWJ5dGUgQWVyby9Bb3J1cyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBEZWxsIChkZXBlbmRlbmNpZXM6IGN1c3RvbSBwYWNrYWdlIGxpYnNtYmlvcylcbi0gRGVsbCAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSBEZWxsIENvbW1hbmQgQ2VudGVyKVxuLSBBcHBsZSBNYWNib29rIEludGVsLXNlcmllcyBjaGlwIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIEFwcGxlIE1hY2Jvb2sgTS1zZXJpZXMgY2hpcCAoZGVwZW5kZW5jaWVzOiBjdXN0b20ga2VybmVsKVxuLSBSYXplciAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSByYXplci1jbGkpXG4tIEZyYW1ld29yayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuXG5Ob3QgYWxsIG1vZGVscyBhcmUgY29tYXB0aWJsZS4gUGxlYXNlIHJlYWQgYWJvdXQgdGhlIGNvbXBhdGliaWxpdHkgYW5kIGRlcGVuZGVuY2llcyBvZiB5b3VyIGRldmljZSBvbiBnaXRodWIgbGluayBiZWxvdy5cblxuaHR0cHM6Ly9tYW5pYWN4LmdpdGh1Yi5pby9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZy8iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZ0BtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkJhdHRlcnkgSGVhbHRoIENoYXJnaW5nIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hbmlhY3gvQmF0dGVyeS1IZWFsdGgtQ2hhcmdpbmciLAogICJ1dWlkIjogIkJhdHRlcnktSGVhbHRoLUNoYXJnaW5nQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1OQp9"},
     "43": {"version": "59", "sha256": "01c1a7k20cnwi18sklvwzsbmdlqfjaph3np2gs7syjy087cff4j6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBiYXR0ZXJ5IGNoYXJnaW5nIHRocmVzaG9sZCAvIGNoYXJnaW5nIGxpbWl0IC8gY2hhcmdpbmcgbW9kZVxuQmF0dGVyeSBIZWFsdGggQ2hhcmdpbmc6IEFuIGV4dGVuc2lvbiB0byBtYXhpbWl6ZSB0aGUgYmF0dGVyeSBsaWZlIG9mIGxhcHRvcHMgYnkgc2V0dGluZyB0aGVpciBjaGFyZ2luZyB0aHJlc2hvbGQgb3IgbW9kZXMuXG5cbkNvbXBhdGlibGUgd2l0aFxuLSBBc3VzXG4tIExHXG4tIFNhbXN1bmdcbi0gU29ueVxuLSBIdWF3ZWlcbi0gVG9zaGliYVxuLSBTeXN0ZW03NlxuLSBMZW5vdm8gKElkZWFwYWQsIExlZ2lvbilcbi0gVGhpbmtwYWRcbi0gUGFuYXNvbmljXG4tIEFjZXIgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gTVNJIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFR1eGVkbyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBTbGltYm9vayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBUdXhlZG8gSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFhNRyBJbnRlbFFDNzEgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gRWx1a3Ryb25pY3MgSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFB1cmlzbSBMaWJyZW0gKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gR2lnYWJ5dGUgQWVyby9Bb3J1cyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBEZWxsIChkZXBlbmRlbmNpZXM6IGN1c3RvbSBwYWNrYWdlIGxpYnNtYmlvcylcbi0gRGVsbCAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSBEZWxsIENvbW1hbmQgQ2VudGVyKVxuLSBBcHBsZSBNYWNib29rIEludGVsLXNlcmllcyBjaGlwIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIEFwcGxlIE1hY2Jvb2sgTS1zZXJpZXMgY2hpcCAoZGVwZW5kZW5jaWVzOiBjdXN0b20ga2VybmVsKVxuLSBSYXplciAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSByYXplci1jbGkpXG4tIEZyYW1ld29yayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuXG5Ob3QgYWxsIG1vZGVscyBhcmUgY29tYXB0aWJsZS4gUGxlYXNlIHJlYWQgYWJvdXQgdGhlIGNvbXBhdGliaWxpdHkgYW5kIGRlcGVuZGVuY2llcyBvZiB5b3VyIGRldmljZSBvbiBnaXRodWIgbGluayBiZWxvdy5cblxuaHR0cHM6Ly9tYW5pYWN4LmdpdGh1Yi5pby9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZy8iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZ0BtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkJhdHRlcnkgSGVhbHRoIENoYXJnaW5nIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hbmlhY3gvQmF0dGVyeS1IZWFsdGgtQ2hhcmdpbmciLAogICJ1dWlkIjogIkJhdHRlcnktSGVhbHRoLUNoYXJnaW5nQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1OQp9"},
     "44": {"version": "59", "sha256": "01c1a7k20cnwi18sklvwzsbmdlqfjaph3np2gs7syjy087cff4j6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBiYXR0ZXJ5IGNoYXJnaW5nIHRocmVzaG9sZCAvIGNoYXJnaW5nIGxpbWl0IC8gY2hhcmdpbmcgbW9kZVxuQmF0dGVyeSBIZWFsdGggQ2hhcmdpbmc6IEFuIGV4dGVuc2lvbiB0byBtYXhpbWl6ZSB0aGUgYmF0dGVyeSBsaWZlIG9mIGxhcHRvcHMgYnkgc2V0dGluZyB0aGVpciBjaGFyZ2luZyB0aHJlc2hvbGQgb3IgbW9kZXMuXG5cbkNvbXBhdGlibGUgd2l0aFxuLSBBc3VzXG4tIExHXG4tIFNhbXN1bmdcbi0gU29ueVxuLSBIdWF3ZWlcbi0gVG9zaGliYVxuLSBTeXN0ZW03NlxuLSBMZW5vdm8gKElkZWFwYWQsIExlZ2lvbilcbi0gVGhpbmtwYWRcbi0gUGFuYXNvbmljXG4tIEFjZXIgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gTVNJIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFR1eGVkbyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBTbGltYm9vayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBUdXhlZG8gSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFhNRyBJbnRlbFFDNzEgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gRWx1a3Ryb25pY3MgSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFB1cmlzbSBMaWJyZW0gKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gR2lnYWJ5dGUgQWVyby9Bb3J1cyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBEZWxsIChkZXBlbmRlbmNpZXM6IGN1c3RvbSBwYWNrYWdlIGxpYnNtYmlvcylcbi0gRGVsbCAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSBEZWxsIENvbW1hbmQgQ2VudGVyKVxuLSBBcHBsZSBNYWNib29rIEludGVsLXNlcmllcyBjaGlwIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIEFwcGxlIE1hY2Jvb2sgTS1zZXJpZXMgY2hpcCAoZGVwZW5kZW5jaWVzOiBjdXN0b20ga2VybmVsKVxuLSBSYXplciAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSByYXplci1jbGkpXG4tIEZyYW1ld29yayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuXG5Ob3QgYWxsIG1vZGVscyBhcmUgY29tYXB0aWJsZS4gUGxlYXNlIHJlYWQgYWJvdXQgdGhlIGNvbXBhdGliaWxpdHkgYW5kIGRlcGVuZGVuY2llcyBvZiB5b3VyIGRldmljZSBvbiBnaXRodWIgbGluayBiZWxvdy5cblxuaHR0cHM6Ly9tYW5pYWN4LmdpdGh1Yi5pby9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZy8iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZ0BtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkJhdHRlcnkgSGVhbHRoIENoYXJnaW5nIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hbmlhY3gvQmF0dGVyeS1IZWFsdGgtQ2hhcmdpbmciLAogICJ1dWlkIjogIkJhdHRlcnktSGVhbHRoLUNoYXJnaW5nQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1OQp9"},
-    "45": {"version": "60", "sha256": "07h72vpc949z50fhhkn86mq2qcdibgl5263wi29l136260nsiv9p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBiYXR0ZXJ5IGNoYXJnaW5nIHRocmVzaG9sZCAvIGNoYXJnaW5nIGxpbWl0IC8gY2hhcmdpbmcgbW9kZVxuQmF0dGVyeSBIZWFsdGggQ2hhcmdpbmc6IEFuIGV4dGVuc2lvbiB0byBtYXhpbWl6ZSB0aGUgYmF0dGVyeSBsaWZlIG9mIGxhcHRvcHMgYnkgc2V0dGluZyB0aGVpciBjaGFyZ2luZyB0aHJlc2hvbGQgb3IgbW9kZXMuXG5cbkNvbXBhdGlibGUgd2l0aFxuLSBBc3VzXG4tIExHXG4tIFNhbXN1bmdcbi0gU29ueVxuLSBIdWF3ZWlcbi0gVG9zaGliYVxuLSBTeXN0ZW03NlxuLSBMZW5vdm8gKElkZWFwYWQsIExlZ2lvbilcbi0gVGhpbmtwYWRcbi0gUGFuYXNvbmljXG4tIEFjZXIgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gTVNJIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFR1eGVkbyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBTbGltYm9vayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBUdXhlZG8gSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFhNRyBJbnRlbFFDNzEgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gRWx1a3Ryb25pY3MgSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFB1cmlzbSBMaWJyZW0gKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gR2lnYWJ5dGUgQWVyby9Bb3J1cyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBEZWxsIChkZXBlbmRlbmNpZXM6IGN1c3RvbSBwYWNrYWdlIGxpYnNtYmlvcylcbi0gRGVsbCAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSBEZWxsIENvbW1hbmQgQ2VudGVyKVxuLSBBcHBsZSBNYWNib29rIEludGVsLXNlcmllcyBjaGlwIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIEFwcGxlIE1hY2Jvb2sgTS1zZXJpZXMgY2hpcCAoZGVwZW5kZW5jaWVzOiBjdXN0b20ga2VybmVsKVxuLSBSYXplciAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSByYXplci1jbGkpXG4tIEZyYW1ld29yayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuXG5Ob3QgYWxsIG1vZGVscyBhcmUgY29tYXB0aWJsZS4gUGxlYXNlIHJlYWQgYWJvdXQgdGhlIGNvbXBhdGliaWxpdHkgYW5kIGRlcGVuZGVuY2llcyBvZiB5b3VyIGRldmljZSBvbiBnaXRodWIgbGluayBiZWxvdy5cblxuaHR0cHM6Ly9tYW5pYWN4LmdpdGh1Yi5pby9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZy8iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZ0BtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkJhdHRlcnkgSGVhbHRoIENoYXJnaW5nIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInV1aWQiOiAiQmF0dGVyeS1IZWFsdGgtQ2hhcmdpbmdAbWFuaWFjeC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYwCn0="}
+    "45": {"version": "60", "sha256": "07h72vpc949z50fhhkn86mq2qcdibgl5263wi29l136260nsiv9p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBiYXR0ZXJ5IGNoYXJnaW5nIHRocmVzaG9sZCAvIGNoYXJnaW5nIGxpbWl0IC8gY2hhcmdpbmcgbW9kZVxuQmF0dGVyeSBIZWFsdGggQ2hhcmdpbmc6IEFuIGV4dGVuc2lvbiB0byBtYXhpbWl6ZSB0aGUgYmF0dGVyeSBsaWZlIG9mIGxhcHRvcHMgYnkgc2V0dGluZyB0aGVpciBjaGFyZ2luZyB0aHJlc2hvbGQgb3IgbW9kZXMuXG5cbkNvbXBhdGlibGUgd2l0aFxuLSBBc3VzXG4tIExHXG4tIFNhbXN1bmdcbi0gU29ueVxuLSBIdWF3ZWlcbi0gVG9zaGliYVxuLSBTeXN0ZW03NlxuLSBMZW5vdm8gKElkZWFwYWQsIExlZ2lvbilcbi0gVGhpbmtwYWRcbi0gUGFuYXNvbmljXG4tIEFjZXIgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gTVNJIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFR1eGVkbyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBTbGltYm9vayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBUdXhlZG8gSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFhNRyBJbnRlbFFDNzEgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gRWx1a3Ryb25pY3MgSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFB1cmlzbSBMaWJyZW0gKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gR2lnYWJ5dGUgQWVyby9Bb3J1cyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBEZWxsIChkZXBlbmRlbmNpZXM6IGN1c3RvbSBwYWNrYWdlIGxpYnNtYmlvcylcbi0gRGVsbCAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSBEZWxsIENvbW1hbmQgQ2VudGVyKVxuLSBBcHBsZSBNYWNib29rIEludGVsLXNlcmllcyBjaGlwIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIEFwcGxlIE1hY2Jvb2sgTS1zZXJpZXMgY2hpcCAoZGVwZW5kZW5jaWVzOiBjdXN0b20ga2VybmVsKVxuLSBSYXplciAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSByYXplci1jbGkpXG4tIEZyYW1ld29yayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuXG5Ob3QgYWxsIG1vZGVscyBhcmUgY29tYXB0aWJsZS4gUGxlYXNlIHJlYWQgYWJvdXQgdGhlIGNvbXBhdGliaWxpdHkgYW5kIGRlcGVuZGVuY2llcyBvZiB5b3VyIGRldmljZSBvbiBnaXRodWIgbGluayBiZWxvdy5cblxuaHR0cHM6Ly9tYW5pYWN4LmdpdGh1Yi5pby9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZy8iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZ0BtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkJhdHRlcnkgSGVhbHRoIENoYXJnaW5nIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInV1aWQiOiAiQmF0dGVyeS1IZWFsdGgtQ2hhcmdpbmdAbWFuaWFjeC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYwCn0="},
+    "46": {"version": "60", "sha256": "07h72vpc949z50fhhkn86mq2qcdibgl5263wi29l136260nsiv9p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCBiYXR0ZXJ5IGNoYXJnaW5nIHRocmVzaG9sZCAvIGNoYXJnaW5nIGxpbWl0IC8gY2hhcmdpbmcgbW9kZVxuQmF0dGVyeSBIZWFsdGggQ2hhcmdpbmc6IEFuIGV4dGVuc2lvbiB0byBtYXhpbWl6ZSB0aGUgYmF0dGVyeSBsaWZlIG9mIGxhcHRvcHMgYnkgc2V0dGluZyB0aGVpciBjaGFyZ2luZyB0aHJlc2hvbGQgb3IgbW9kZXMuXG5cbkNvbXBhdGlibGUgd2l0aFxuLSBBc3VzXG4tIExHXG4tIFNhbXN1bmdcbi0gU29ueVxuLSBIdWF3ZWlcbi0gVG9zaGliYVxuLSBTeXN0ZW03NlxuLSBMZW5vdm8gKElkZWFwYWQsIExlZ2lvbilcbi0gVGhpbmtwYWRcbi0gUGFuYXNvbmljXG4tIEFjZXIgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gTVNJIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFR1eGVkbyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBTbGltYm9vayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBUdXhlZG8gSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFhNRyBJbnRlbFFDNzEgKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gRWx1a3Ryb25pY3MgSW50ZWxRQzcxIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIFB1cmlzbSBMaWJyZW0gKGRlcGVuZGVuY2llczoga2VybmVsIG1vZHVsZSlcbi0gR2lnYWJ5dGUgQWVyby9Bb3J1cyAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuLSBEZWxsIChkZXBlbmRlbmNpZXM6IGN1c3RvbSBwYWNrYWdlIGxpYnNtYmlvcylcbi0gRGVsbCAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSBEZWxsIENvbW1hbmQgQ2VudGVyKVxuLSBBcHBsZSBNYWNib29rIEludGVsLXNlcmllcyBjaGlwIChkZXBlbmRlbmNpZXM6IGtlcm5lbCBtb2R1bGUpXG4tIEFwcGxlIE1hY2Jvb2sgTS1zZXJpZXMgY2hpcCAoZGVwZW5kZW5jaWVzOiBjdXN0b20ga2VybmVsKVxuLSBSYXplciAoZGVwZW5kZW5jaWVzOiBjdXN0b20gcGFja2FnZSByYXplci1jbGkpXG4tIEZyYW1ld29yayAoZGVwZW5kZW5jaWVzOiBrZXJuZWwgbW9kdWxlKVxuXG5Ob3QgYWxsIG1vZGVscyBhcmUgY29tYXB0aWJsZS4gUGxlYXNlIHJlYWQgYWJvdXQgdGhlIGNvbXBhdGliaWxpdHkgYW5kIGRlcGVuZGVuY2llcyBvZiB5b3VyIGRldmljZSBvbiBnaXRodWIgbGluayBiZWxvdy5cblxuaHR0cHM6Ly9tYW5pYWN4LmdpdGh1Yi5pby9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZy8iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJCYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZ0BtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkJhdHRlcnkgSGVhbHRoIENoYXJnaW5nIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1bmxvY2stZGlhbG9nIiwKICAgICJ1c2VyIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9CYXR0ZXJ5LUhlYWx0aC1DaGFyZ2luZyIsCiAgInV1aWQiOiAiQmF0dGVyeS1IZWFsdGgtQ2hhcmdpbmdAbWFuaWFjeC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYwCn0="}
   }}
 , {"uuid": "oneclickbios@sao.studio", "name": "One-Click BIOS", "pname": "one-click-bios", "description": "Restart into firmware settings directly from OS\n\nHold Shift and click the power menu button to trigger restart into firmware settings.\n\nAny suggestion is appreciated on GitHub!", "link": "https://extensions.gnome.org/extension/5733/one-click-bios/", "shell_version_map": {
     "43": {"version": "5", "sha256": "07r9vspq35s632j0pzywrhb8islb9fq49dv0a1s6yvp23d7bzni7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlc3RhcnQgaW50byBmaXJtd2FyZSBzZXR0aW5ncyBkaXJlY3RseSBmcm9tIE9TXG5cbkhvbGQgU2hpZnQgYW5kIGNsaWNrIHRoZSBwb3dlciBtZW51IGJ1dHRvbiB0byB0cmlnZ2VyIHJlc3RhcnQgaW50byBmaXJtd2FyZSBzZXR0aW5ncy5cblxuQW55IHN1Z2dlc3Rpb24gaXMgYXBwcmVjaWF0ZWQgb24gR2l0SHViISIsCiAgIm5hbWUiOiAiT25lLUNsaWNrIEJJT1MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbTFuaWNydXNoZXIvb25lLWNsaWNrLWJpb3MiLAogICJ1dWlkIjogIm9uZWNsaWNrYmlvc0BzYW8uc3R1ZGlvIiwKICAidmVyc2lvbiI6IDUKfQ=="}
@@ -5631,7 +5849,8 @@
     "42": {"version": "2", "sha256": "09qd9997jdwwbi6c5jis8949k9y6s49z4yk7gqi5v7r7k3171m6q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIGZvciBMaXZlIENhcHRpb25zIiwKICAibmFtZSI6ICJMaXZlIENhcHRpb25zIEFzc2lzdGFudCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWJiMTI4L2dub21lLWxpdmUtY2FwdGlvbnMtYXNzaXN0YW50IiwKICAidXVpZCI6ICJsaXZlY2FwdGlvbnNAc2FwcGxlcy5uZXQiLAogICJ2ZXJzaW9uIjogMgp9"},
     "43": {"version": "2", "sha256": "09qd9997jdwwbi6c5jis8949k9y6s49z4yk7gqi5v7r7k3171m6q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIGZvciBMaXZlIENhcHRpb25zIiwKICAibmFtZSI6ICJMaXZlIENhcHRpb25zIEFzc2lzdGFudCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWJiMTI4L2dub21lLWxpdmUtY2FwdGlvbnMtYXNzaXN0YW50IiwKICAidXVpZCI6ICJsaXZlY2FwdGlvbnNAc2FwcGxlcy5uZXQiLAogICJ2ZXJzaW9uIjogMgp9"},
     "44": {"version": "2", "sha256": "09qd9997jdwwbi6c5jis8949k9y6s49z4yk7gqi5v7r7k3171m6q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIGZvciBMaXZlIENhcHRpb25zIiwKICAibmFtZSI6ICJMaXZlIENhcHRpb25zIEFzc2lzdGFudCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWJiMTI4L2dub21lLWxpdmUtY2FwdGlvbnMtYXNzaXN0YW50IiwKICAidXVpZCI6ICJsaXZlY2FwdGlvbnNAc2FwcGxlcy5uZXQiLAogICJ2ZXJzaW9uIjogMgp9"},
-    "45": {"version": "3", "sha256": "05clk1glhh80w82zxsn1k3wnzhc9ih3rkhgsdqinixsx0dmjnb2j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIGZvciBMaXZlIENhcHRpb25zIiwKICAibmFtZSI6ICJMaXZlIENhcHRpb25zIEFzc2lzdGFudCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hYmIxMjgvZ25vbWUtbGl2ZS1jYXB0aW9ucy1hc3Npc3RhbnQiLAogICJ1dWlkIjogImxpdmVjYXB0aW9uc0BzYXBwbGVzLm5ldCIsCiAgInZlcnNpb24iOiAzCn0="}
+    "45": {"version": "4", "sha256": "1cgdsqd79ssm1q8wajbfrylbx64vqzfdkjnvv1kmz86k9zcnzwni", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIGZvciBMaXZlIENhcHRpb25zIiwKICAibmFtZSI6ICJMaXZlIENhcHRpb25zIEFzc2lzdGFudCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWJiMTI4L2dub21lLWxpdmUtY2FwdGlvbnMtYXNzaXN0YW50IiwKICAidXVpZCI6ICJsaXZlY2FwdGlvbnNAc2FwcGxlcy5uZXQiLAogICJ2ZXJzaW9uIjogNAp9"},
+    "46": {"version": "4", "sha256": "1cgdsqd79ssm1q8wajbfrylbx64vqzfdkjnvv1kmz86k9zcnzwni", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGJldHRlciBkZXNrdG9wIGludGVncmF0aW9uIGZvciBMaXZlIENhcHRpb25zIiwKICAibmFtZSI6ICJMaXZlIENhcHRpb25zIEFzc2lzdGFudCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWJiMTI4L2dub21lLWxpdmUtY2FwdGlvbnMtYXNzaXN0YW50IiwKICAidXVpZCI6ICJsaXZlY2FwdGlvbnNAc2FwcGxlcy5uZXQiLAogICJ2ZXJzaW9uIjogNAp9"}
   }}
 , {"uuid": "extension-poweroff-button@InkaAlicja", "name": "Poweroff and Suspend Buttons", "pname": "poweroff-and-suspend-buttons", "description": "Poweroff and suspend buttons for GNOME desktop environment", "link": "https://extensions.gnome.org/extension/5787/poweroff-and-suspend-buttons/", "shell_version_map": {
     "42": {"version": "2", "sha256": "039wpmsrzk75pc62fw2hfgjy5dv85f54fa2w76hxacc08qkqq4y1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlBvd2Vyb2ZmIGFuZCBzdXNwZW5kIGJ1dHRvbnMgZm9yIEdOT01FIGRlc2t0b3AgZW52aXJvbm1lbnQiLAogICJuYW1lIjogIlBvd2Vyb2ZmIGFuZCBTdXNwZW5kIEJ1dHRvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSW5rYUFsaWNqYS9nbm9tZS1leHRlbnNpb24tcG93ZXItYnV0dG9ucyIsCiAgInV1aWQiOiAiZXh0ZW5zaW9uLXBvd2Vyb2ZmLWJ1dHRvbkBJbmthQWxpY2phIiwKICAidmVyc2lvbiI6IDIKfQ=="}
@@ -5645,7 +5864,8 @@
     "42": {"version": "4", "sha256": "0p6n5rmvd4iibzqrak1azq60yf708i1dh4db0r3a5br22gzkvbaf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gbWVhc3VyZSB0aW1lLiBQcmltYXJ5IGJ1dHRvbiBjbGljayBzdGFydHMvcGF1c2VzIHRoZSB3YXRjaCwgc2Vjb25kYXJ5IGJ1dHRvbiByZXNldHMgaXQuXG5BdXRvbWF0aWNhbGx5IHBhdXNlcyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkLiIsCiAgIm5hbWUiOiAiU3RvcHdhdGNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGlha3NlaXovc3RvcHdhdGNoIiwKICAidXVpZCI6ICJzdG9wd2F0Y2hAYWxpYWtzZWl6LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNAp9"},
     "43": {"version": "4", "sha256": "0p6n5rmvd4iibzqrak1azq60yf708i1dh4db0r3a5br22gzkvbaf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gbWVhc3VyZSB0aW1lLiBQcmltYXJ5IGJ1dHRvbiBjbGljayBzdGFydHMvcGF1c2VzIHRoZSB3YXRjaCwgc2Vjb25kYXJ5IGJ1dHRvbiByZXNldHMgaXQuXG5BdXRvbWF0aWNhbGx5IHBhdXNlcyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkLiIsCiAgIm5hbWUiOiAiU3RvcHdhdGNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGlha3NlaXovc3RvcHdhdGNoIiwKICAidXVpZCI6ICJzdG9wd2F0Y2hAYWxpYWtzZWl6LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNAp9"},
     "44": {"version": "4", "sha256": "0p6n5rmvd4iibzqrak1azq60yf708i1dh4db0r3a5br22gzkvbaf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gbWVhc3VyZSB0aW1lLiBQcmltYXJ5IGJ1dHRvbiBjbGljayBzdGFydHMvcGF1c2VzIHRoZSB3YXRjaCwgc2Vjb25kYXJ5IGJ1dHRvbiByZXNldHMgaXQuXG5BdXRvbWF0aWNhbGx5IHBhdXNlcyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkLiIsCiAgIm5hbWUiOiAiU3RvcHdhdGNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGlha3NlaXovc3RvcHdhdGNoIiwKICAidXVpZCI6ICJzdG9wd2F0Y2hAYWxpYWtzZWl6LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNAp9"},
-    "45": {"version": "6", "sha256": "0l5bhdhdbzn77x8pyn33qf962ixfmb6a4hj2l2baa0w4c4f5c4ff", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gbWVhc3VyZSB0aW1lLiBQcmltYXJ5IGJ1dHRvbiBjbGljayBzdGFydHMvcGF1c2VzIHRoZSB3YXRjaCwgc2Vjb25kYXJ5IGJ1dHRvbiByZXNldHMgaXQuIiwKICAibmFtZSI6ICJTdG9wd2F0Y2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWxpYWtzZWl6L3N0b3B3YXRjaCIsCiAgInV1aWQiOiAic3RvcHdhdGNoQGFsaWFrc2Vpei5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="}
+    "45": {"version": "8", "sha256": "0dqqkiqzhy1463vwg46a98fl9q32994rl892533x5kh7cxz6irly", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gbWVhc3VyZSB0aW1lLiBQcmltYXJ5IGJ1dHRvbiBjbGljayBzdGFydHMvcGF1c2VzIHRoZSB3YXRjaCwgc2Vjb25kYXJ5IGJ1dHRvbiByZXNldHMgaXQuIiwKICAibmFtZSI6ICJTdG9wd2F0Y2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsaWFrc2Vpei9zdG9wd2F0Y2giLAogICJ1dWlkIjogInN0b3B3YXRjaEBhbGlha3NlaXouZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="},
+    "46": {"version": "8", "sha256": "0dqqkiqzhy1463vwg46a98fl9q32994rl892533x5kh7cxz6irly", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBleHRlbnNpb24gdG8gbWVhc3VyZSB0aW1lLiBQcmltYXJ5IGJ1dHRvbiBjbGljayBzdGFydHMvcGF1c2VzIHRoZSB3YXRjaCwgc2Vjb25kYXJ5IGJ1dHRvbiByZXNldHMgaXQuIiwKICAibmFtZSI6ICJTdG9wd2F0Y2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FsaWFrc2Vpei9zdG9wd2F0Y2giLAogICJ1dWlkIjogInN0b3B3YXRjaEBhbGlha3NlaXouZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA4Cn0="}
   }}
 , {"uuid": "vbox-applet@buba98", "name": "VirtualBox applet", "pname": "virtualbox-applet", "description": "Provide menu to run VirtualBox machines and switch between running VMs.\nIt provides options for detachable head and headless mode.\nThis is a fork of https://extensions.gnome.org/extension/1415/virtualbox-applet/ extension.", "link": "https://extensions.gnome.org/extension/5799/virtualbox-applet/", "shell_version_map": {
     "38": {"version": "4", "sha256": "0a7gmvn7lp1k89ylk1s5sl4pkzsyjkk99fm5r8khckgrxancsbdf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgbWVudSB0byBydW4gVmlydHVhbEJveCBtYWNoaW5lcyBhbmQgc3dpdGNoIGJldHdlZW4gcnVubmluZyBWTXMuXG5JdCBwcm92aWRlcyBvcHRpb25zIGZvciBkZXRhY2hhYmxlIGhlYWQgYW5kIGhlYWRsZXNzIG1vZGUuXG5UaGlzIGlzIGEgZm9yayBvZiBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xNDE1L3ZpcnR1YWxib3gtYXBwbGV0LyBleHRlbnNpb24uIiwKICAibmFtZSI6ICJWaXJ0dWFsQm94IGFwcGxldCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52Ym94LWFwcGxldCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQnViYTk4L3Zib3gtYXBwbGV0IiwKICAidXVpZCI6ICJ2Ym94LWFwcGxldEBidWJhOTgiLAogICJ2ZXJzaW9uIjogNAp9"},
@@ -5669,19 +5889,22 @@
 , {"uuid": "snx-vpn-indicator@diegodario88.github.io", "name": "SNX VPN Indicator", "pname": "snx-vpn-indicator", "description": "This extension adds VPN functionality to the quickSettings by integrating the SSL Network Extender (SNX CLI) client", "link": "https://extensions.gnome.org/extension/5808/snx-vpn-indicator/", "shell_version_map": {
     "43": {"version": "4", "sha256": "01kar4qn20z7a5vzhw52ypkrbgdn23lq4drm0xnj4cgkg6n1qmya", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZHMgVlBOIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHF1aWNrU2V0dGluZ3MgYnkgaW50ZWdyYXRpbmcgdGhlIFNTTCBOZXR3b3JrIEV4dGVuZGVyIChTTlggQ0xJKSBjbGllbnQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzbngtaW5kaWNhdG9yIiwKICAibmFtZSI6ICJTTlggVlBOIEluZGljYXRvciIsCiAgInNjcmlwdHMiOiBbCiAgICAic2NyaXB0cy9icmlkZ2Utc254LWNsaS5zaCIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc254LWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGllZ29kYXJpbzg4L3NueC12cG4taW5kaWNhdG9yIiwKICAidXVpZCI6ICJzbngtdnBuLWluZGljYXRvckBkaWVnb2RhcmlvODguZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQKfQ=="},
     "44": {"version": "4", "sha256": "01kar4qn20z7a5vzhw52ypkrbgdn23lq4drm0xnj4cgkg6n1qmya", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZHMgVlBOIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHF1aWNrU2V0dGluZ3MgYnkgaW50ZWdyYXRpbmcgdGhlIFNTTCBOZXR3b3JrIEV4dGVuZGVyIChTTlggQ0xJKSBjbGllbnQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJzbngtaW5kaWNhdG9yIiwKICAibmFtZSI6ICJTTlggVlBOIEluZGljYXRvciIsCiAgInNjcmlwdHMiOiBbCiAgICAic2NyaXB0cy9icmlkZ2Utc254LWNsaS5zaCIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc254LWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGllZ29kYXJpbzg4L3NueC12cG4taW5kaWNhdG9yIiwKICAidXVpZCI6ICJzbngtdnBuLWluZGljYXRvckBkaWVnb2RhcmlvODguZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQKfQ=="},
-    "45": {"version": "6", "sha256": "0d2h987944c1pcv5ywy2qkalsh3qwzpj9hka70s44s30v8g2f6f6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZHMgVlBOIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHF1aWNrU2V0dGluZ3MgYnkgaW50ZWdyYXRpbmcgdGhlIFNTTCBOZXR3b3JrIEV4dGVuZGVyIChTTlggQ0xJKSBjbGllbnQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImRpZWdvZGFyaW84OCIsCiAgICAia29maSI6ICJkaWVnb2RhcmlvIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInNueC1pbmRpY2F0b3IiLAogICJuYW1lIjogIlNOWCBWUE4gSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RpZWdvZGFyaW84OC9zbngtdnBuLWluZGljYXRvciIsCiAgInV1aWQiOiAic254LXZwbi1pbmRpY2F0b3JAZGllZ29kYXJpbzg4LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA2Cn0="}
+    "45": {"version": "8", "sha256": "13h05y0f4ay8c63g0xb2zvr1r94dqhhdnlz7c3y1xn5d3rlpvbln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZHMgVlBOIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHF1aWNrU2V0dGluZ3MgYnkgaW50ZWdyYXRpbmcgdGhlIFNTTCBOZXR3b3JrIEV4dGVuZGVyIChTTlggQ0xJKSBjbGllbnQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImRpZWdvZGFyaW84OCIsCiAgICAia29maSI6ICJkaWVnb2RhcmlvIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInNueC1pbmRpY2F0b3IiLAogICJuYW1lIjogIlNOWCBWUE4gSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kaWVnb2RhcmlvODgvc254LXZwbi1pbmRpY2F0b3IiLAogICJ1dWlkIjogInNueC12cG4taW5kaWNhdG9yQGRpZWdvZGFyaW84OC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOCwKICAidmVyc2lvbi1uYW1lIjogIjEuNi4yIgp9"},
+    "46": {"version": "8", "sha256": "13h05y0f4ay8c63g0xb2zvr1r94dqhhdnlz7c3y1xn5d3rlpvbln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZHMgVlBOIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHF1aWNrU2V0dGluZ3MgYnkgaW50ZWdyYXRpbmcgdGhlIFNTTCBOZXR3b3JrIEV4dGVuZGVyIChTTlggQ0xJKSBjbGllbnQiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImRpZWdvZGFyaW84OCIsCiAgICAia29maSI6ICJkaWVnb2RhcmlvIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogInNueC1pbmRpY2F0b3IiLAogICJuYW1lIjogIlNOWCBWUE4gSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kaWVnb2RhcmlvODgvc254LXZwbi1pbmRpY2F0b3IiLAogICJ1dWlkIjogInNueC12cG4taW5kaWNhdG9yQGRpZWdvZGFyaW84OC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOCwKICAidmVyc2lvbi1uYW1lIjogIjEuNi4yIgp9"}
   }}
 , {"uuid": "persian-calendar@iamrezamousavi.gmail.com", "name": "Persian Calendar", "pname": "persian-calendar", "description": "Fork of Gnome Calendar extension with Persian taste", "link": "https://extensions.gnome.org/extension/5814/persian-calendar/", "shell_version_map": {
     "42": {"version": "21", "sha256": "0x3sax20l5g2za1ys9kqqjc5izsh9mqmal8vnlqnqncq6wwkg8s0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgR25vbWUgQ2FsZW5kYXIgZXh0ZW5zaW9uIHdpdGggUGVyc2lhbiB0YXN0ZSIsCiAgIm5hbWUiOiAiUGVyc2lhbiBDYWxlbmRhciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiUmV6YSBNb3VzYXZpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLlBlcnNpYW5DYWxlbmRhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0lhbVJlemFNb3VzYXZpL3BlcnNpYW4tZ25vbWUtY2FsZW5kYXItZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJwZXJzaWFuLWNhbGVuZGFyQGlhbXJlemFtb3VzYXZpLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"},
     "43": {"version": "21", "sha256": "0x3sax20l5g2za1ys9kqqjc5izsh9mqmal8vnlqnqncq6wwkg8s0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgR25vbWUgQ2FsZW5kYXIgZXh0ZW5zaW9uIHdpdGggUGVyc2lhbiB0YXN0ZSIsCiAgIm5hbWUiOiAiUGVyc2lhbiBDYWxlbmRhciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiUmV6YSBNb3VzYXZpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLlBlcnNpYW5DYWxlbmRhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0lhbVJlemFNb3VzYXZpL3BlcnNpYW4tZ25vbWUtY2FsZW5kYXItZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJwZXJzaWFuLWNhbGVuZGFyQGlhbXJlemFtb3VzYXZpLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"},
     "44": {"version": "21", "sha256": "0x3sax20l5g2za1ys9kqqjc5izsh9mqmal8vnlqnqncq6wwkg8s0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgR25vbWUgQ2FsZW5kYXIgZXh0ZW5zaW9uIHdpdGggUGVyc2lhbiB0YXN0ZSIsCiAgIm5hbWUiOiAiUGVyc2lhbiBDYWxlbmRhciIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiUmV6YSBNb3VzYXZpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLlBlcnNpYW5DYWxlbmRhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0lhbVJlemFNb3VzYXZpL3BlcnNpYW4tZ25vbWUtY2FsZW5kYXItZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJwZXJzaWFuLWNhbGVuZGFyQGlhbXJlemFtb3VzYXZpLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyMQp9"},
-    "45": {"version": "22", "sha256": "1kgv37as354z8i1xzi3x82vsi6ihawavrxa8ln2aw873y6ha4ixa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgR25vbWUgQ2FsZW5kYXIgZXh0ZW5zaW9uIHdpdGggUGVyc2lhbiB0YXN0ZSIsCiAgImdldHRleHQtZG9tYWluIjogInBlcnNpYW4tY2FsZW5kYXJAaWFtcmV6YW1vdXNhdmkuZ21haWwuY29tIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJSZXphIE1vdXNhdmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuUGVyc2lhbkNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0lhbVJlemFNb3VzYXZpL3BlcnNpYW4tZ25vbWUtY2FsZW5kYXItZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJwZXJzaWFuLWNhbGVuZGFyQGlhbXJlemFtb3VzYXZpLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAyMgp9"}
+    "45": {"version": "25", "sha256": "00561cizh7d9xipyga5c09ah7y05b7f72shj1lnbk9h92kh5092w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgR25vbWUgQ2FsZW5kYXIgZXh0ZW5zaW9uIHdpdGggUGVyc2lhbiB0YXN0ZSIsCiAgImdldHRleHQtZG9tYWluIjogInBlcnNpYW4tY2FsZW5kYXJAaWFtcmV6YW1vdXNhdmkuZ21haWwuY29tIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJSZXphIE1vdXNhdmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuUGVyc2lhbkNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9JYW1SZXphTW91c2F2aS9wZXJzaWFuLWdub21lLWNhbGVuZGFyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAicGVyc2lhbi1jYWxlbmRhckBpYW1yZXphbW91c2F2aS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjUKfQ=="},
+    "46": {"version": "25", "sha256": "00561cizh7d9xipyga5c09ah7y05b7f72shj1lnbk9h92kh5092w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmsgb2YgR25vbWUgQ2FsZW5kYXIgZXh0ZW5zaW9uIHdpdGggUGVyc2lhbiB0YXN0ZSIsCiAgImdldHRleHQtZG9tYWluIjogInBlcnNpYW4tY2FsZW5kYXJAaWFtcmV6YW1vdXNhdmkuZ21haWwuY29tIiwKICAibmFtZSI6ICJQZXJzaWFuIENhbGVuZGFyIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJSZXphIE1vdXNhdmkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuUGVyc2lhbkNhbGVuZGFyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9JYW1SZXphTW91c2F2aS9wZXJzaWFuLWdub21lLWNhbGVuZGFyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAicGVyc2lhbi1jYWxlbmRhckBpYW1yZXphbW91c2F2aS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMjUKfQ=="}
   }}
 , {"uuid": "HeadsetControl@lauinger-clan.de", "name": "HeadsetControl", "pname": "headsetcontrol", "description": "Gnome Shell Extension to visualize headset status from HeadsetControl (https://github.com/Sapd/HeadsetControl) command line tool", "link": "https://extensions.gnome.org/extension/5823/headsetcontrol/", "shell_version_map": {
     "42": {"version": "6", "sha256": "1mdyigd5dn324ivb5bgypiq4gibjsbzm0rkcml9hi699a609736k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIFNoZWxsIEV4dGVuc2lvbiB0byB2aXN1YWxpemUgaGVhZHNldCBzdGF0dXMgZnJvbSBIZWFkc2V0Q29udHJvbCAoaHR0cHM6Ly9naXRodWIuY29tL1NhcGQvSGVhZHNldENvbnRyb2wpIGNvbW1hbmQgbGluZSB0b29sIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiSGVhZHNldENvbnRyb2wiLAogICJuYW1lIjogIkhlYWRzZXRDb250cm9sIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkhlYWRzZXRDb250cm9sIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2hyaXNMYXVpbmdlcjc3L2dub21lLXNoZWxsLWV4dGVuc2lvbi1IZWFkc2V0Q29udHJvbCIsCiAgInV1aWQiOiAiSGVhZHNldENvbnRyb2xAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiA2Cn0="},
     "43": {"version": "15", "sha256": "04as61msjqq359r1qm0d7dw7df2bcngx67pmwva8flyvzi62iavi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIFNoZWxsIEV4dGVuc2lvbiB0byB2aXN1YWxpemUgaGVhZHNldCBzdGF0dXMgZnJvbSBIZWFkc2V0Q29udHJvbCAoaHR0cHM6Ly9naXRodWIuY29tL1NhcGQvSGVhZHNldENvbnRyb2wpIGNvbW1hbmQgbGluZSB0b29sIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiSGVhZHNldENvbnRyb2wiLAogICJuYW1lIjogIkhlYWRzZXRDb250cm9sIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkhlYWRzZXRDb250cm9sIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9DaHJpc0xhdWluZ2VyNzcvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLUhlYWRzZXRDb250cm9sIiwKICAidXVpZCI6ICJIZWFkc2V0Q29udHJvbEBsYXVpbmdlci1jbGFuLmRlIiwKICAidmVyc2lvbiI6IDE1Cn0="},
     "44": {"version": "23", "sha256": "00clk8w8p1sxsqpmwsmlgki2vvx9cjlvnzsrn9j69n1img4vbiwh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIFNoZWxsIEV4dGVuc2lvbiB0byB2aXN1YWxpemUgaGVhZHNldCBzdGF0dXMgZnJvbSBIZWFkc2V0Q29udHJvbCAoaHR0cHM6Ly9naXRodWIuY29tL1NhcGQvSGVhZHNldENvbnRyb2wpIGNvbW1hbmQgbGluZSB0b29sIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiSGVhZHNldENvbnRyb2wiLAogICJuYW1lIjogIkhlYWRzZXRDb250cm9sIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkhlYWRzZXRDb250cm9sIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0NocmlzTGF1aW5nZXI3Ny9nbm9tZS1zaGVsbC1leHRlbnNpb24tSGVhZHNldENvbnRyb2wiLAogICJ1dWlkIjogIkhlYWRzZXRDb250cm9sQGxhdWluZ2VyLWNsYW4uZGUiLAogICJ2ZXJzaW9uIjogMjMKfQ=="},
-    "45": {"version": "27", "sha256": "0cjadripkp234a0qps382yqjg4a2mpgrsz8j2pc9j571mg8ypj4h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIFNoZWxsIEV4dGVuc2lvbiB0byB2aXN1YWxpemUgaGVhZHNldCBzdGF0dXMgZnJvbSBIZWFkc2V0Q29udHJvbCAoaHR0cHM6Ly9naXRodWIuY29tL1NhcGQvSGVhZHNldENvbnRyb2wpIGNvbW1hbmQgbGluZSB0b29sIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDaHJpc0xhdWluZ2VyNzciLAogICAgInBheXBhbCI6ICJDaHJpc0xhdWluZ2VyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkhlYWRzZXRDb250cm9sIiwKICAibmFtZSI6ICJIZWFkc2V0Q29udHJvbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5IZWFkc2V0Q29udHJvbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2hyaXNMYXVpbmdlcjc3L2dub21lLXNoZWxsLWV4dGVuc2lvbi1IZWFkc2V0Q29udHJvbCIsCiAgInV1aWQiOiAiSGVhZHNldENvbnRyb2xAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAyNywKICAidmVyc2lvbi1uYW1lIjogIjQ2LjEiCn0="}
+    "45": {"version": "28", "sha256": "0pb004pskirvndwmlhvaz7zv6n32q0fflq47fgill3f48vn57xh8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIFNoZWxsIEV4dGVuc2lvbiB0byB2aXN1YWxpemUgaGVhZHNldCBzdGF0dXMgZnJvbSBIZWFkc2V0Q29udHJvbCAoaHR0cHM6Ly9naXRodWIuY29tL1NhcGQvSGVhZHNldENvbnRyb2wpIGNvbW1hbmQgbGluZSB0b29sIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDaHJpc0xhdWluZ2VyNzciLAogICAgInBheXBhbCI6ICJDaHJpc0xhdWluZ2VyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkhlYWRzZXRDb250cm9sIiwKICAibmFtZSI6ICJIZWFkc2V0Q29udHJvbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5IZWFkc2V0Q29udHJvbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2hyaXNMYXVpbmdlcjc3L2dub21lLXNoZWxsLWV4dGVuc2lvbi1IZWFkc2V0Q29udHJvbCIsCiAgInV1aWQiOiAiSGVhZHNldENvbnRyb2xAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAyOCwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjIiCn0="},
+    "46": {"version": "28", "sha256": "0pb004pskirvndwmlhvaz7zv6n32q0fflq47fgill3f48vn57xh8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdub21lIFNoZWxsIEV4dGVuc2lvbiB0byB2aXN1YWxpemUgaGVhZHNldCBzdGF0dXMgZnJvbSBIZWFkc2V0Q29udHJvbCAoaHR0cHM6Ly9naXRodWIuY29tL1NhcGQvSGVhZHNldENvbnRyb2wpIGNvbW1hbmQgbGluZSB0b29sIiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJDaHJpc0xhdWluZ2VyNzciLAogICAgInBheXBhbCI6ICJDaHJpc0xhdWluZ2VyIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIkhlYWRzZXRDb250cm9sIiwKICAibmFtZSI6ICJIZWFkc2V0Q29udHJvbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5IZWFkc2V0Q29udHJvbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2hyaXNMYXVpbmdlcjc3L2dub21lLXNoZWxsLWV4dGVuc2lvbi1IZWFkc2V0Q29udHJvbCIsCiAgInV1aWQiOiAiSGVhZHNldENvbnRyb2xAbGF1aW5nZXItY2xhbi5kZSIsCiAgInZlcnNpb24iOiAyOCwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjIiCn0="}
   }}
 , {"uuid": "true-color-window-invert@lynet101", "name": "True Color Window Invert", "pname": "true-color-invert", "description": "Inverts the color of individual windows so they are hue-preserved.\nDefault shortcut is Super+I (Fork from JackKenney, due to 2+ years of inactivity)\n\n!!!IMPORTANT!!!\nDue to changes in personal and professional life, developer lynet_101 will no longer be able to maintain this project, and the extension, as a result, is from December the 5th 2023 orphaned\n\npatch notes v3:\nFixed an issue where windows would occasionally disappear upon inversion\n\nAbout Gnome 45:\nThere will be made an effort to port this extension to gnome 45, but gnome has decided to revamp large parts of the framework used for these sorts of extensions, and as I'm a solo developer, don't expect it to be ported immediately .\n\nI apologize for any inconvenience this may cause ;(", "link": "https://extensions.gnome.org/extension/5829/true-color-invert/", "shell_version_map": {
     "38": {"version": "3", "sha256": "01hsx7mrd0z8fy797x3xn8jqjjw8a34dxj4vvf9w43zdixj5i6z4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkludmVydHMgdGhlIGNvbG9yIG9mIGluZGl2aWR1YWwgd2luZG93cyBzbyB0aGV5IGFyZSBodWUtcHJlc2VydmVkLlxuRGVmYXVsdCBzaG9ydGN1dCBpcyBTdXBlcitJIChGb3JrIGZyb20gSmFja0tlbm5leSwgZHVlIHRvIDIrIHllYXJzIG9mIGluYWN0aXZpdHlcblxucGF0Y2ggbm90ZXMgdjM6XG5GaXhlZCBhbiBpc3N1ZSB3aGVyZSB3aW5kb3dzIHdvdWxkIG9jY2FzaW9uYWxseSBkaXNhcHBlYXIgdXBvbiBpbnZlcnNpb25cblxuTm90ZXM6XG5BcyB0aGlzIGlzIGEgZmFpcmx5IG5ldyBhZG9wdGlvbiwgb2YgYSBmYWlybHkgb2xkIHByb2plY3QsIGV4cGVjdCBmcmVxdWVudCB1cGRhdGVzIGFuZCBidWcgcGF0Y2hlcyBpbiB0aGUgYmVnaW5uaW5nLiB0aGFuayB5b3UgZm9yIHVuZGVyc3RhbmRpbmciLAogICJuYW1lIjogIlRydWUgQ29sb3IgV2luZG93IEludmVydCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50cnVlLWNvbG9yLXdpbmRvdy1pbnZlcnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0x5bmV0MTAxL2dub21lLXRydWUtY29sb3ItaW52ZXJ0IiwKICAidXVpZCI6ICJ0cnVlLWNvbG9yLXdpbmRvdy1pbnZlcnRAbHluZXQxMDEiLAogICJ2ZXJzaW9uIjogMwp9"},
@@ -5719,9 +5942,8 @@
     "44": {"version": "9", "sha256": "15bl13jhxnrr1q64d9p0rh2scy3fx4bwh36n6p0dpry8dgzp8qk9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhbiBpY29uIHRvIHRoZSBBY3Rpdml0aWVzIGJ1dHRvbi4gIFxuYmFzZWQgb24gR05PTUUgZ25vbWUtc2hlbGwgYW5kIFJIRUwgZ25vbWUtc2hlbGwgcGF0Y2giLAogICJuYW1lIjogIkFjdGl2aXRpZXMgSWNvbiAmICBMYWJlbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3JiaXRjb3JyZWN0b24vZW5odW5jZS1hY3Rpdml0ZXMvdHJlZS9leHBlcmltZW50YWwiLAogICJ1dWlkIjogImVuaHVuY2VhY3Rpdml0aWVzZUBnaXRodWIuY29tLm9yYml0Y29ycmVjdGlvbiIsCiAgInZlcnNpb24iOiA5Cn0="}
   }}
 , {"uuid": "dejaview@hedgie.tech", "name": "Dejaview", "pname": "dejaview", "description": "Show a notification with a chosen frequency", "link": "https://extensions.gnome.org/extension/5850/dejaview/", "shell_version_map": {
-    "43": {"version": "8", "sha256": "1i7svmc72mazrm3sqricb8ys53gj2axzgwwx152x22fd8x372g2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYSBub3RpZmljYXRpb24gd2l0aCBhIGNob3NlbiBmcmVxdWVuY3kiLAogICJuYW1lIjogIkRlamF2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlamF2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2RlamF2aWV3IiwKICAidXVpZCI6ICJkZWphdmlld0BoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA4Cn0="},
-    "44": {"version": "8", "sha256": "1i7svmc72mazrm3sqricb8ys53gj2axzgwwx152x22fd8x372g2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYSBub3RpZmljYXRpb24gd2l0aCBhIGNob3NlbiBmcmVxdWVuY3kiLAogICJuYW1lIjogIkRlamF2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlamF2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2RlamF2aWV3IiwKICAidXVpZCI6ICJkZWphdmlld0BoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA4Cn0="},
-    "45": {"version": "10", "sha256": "0waqx2pgrwqj9s9p2q126f5srwrvqf7qfikbijwvcfwqhr61hxx2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYSBub3RpZmljYXRpb24gd2l0aCBhIGNob3NlbiBmcmVxdWVuY3kiLAogICJuYW1lIjogIkRlamF2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlamF2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGdpZWluc29ja3MvZGVqYXZpZXciLAogICJ1dWlkIjogImRlamF2aWV3QGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDEwCn0="}
+    "45": {"version": "11", "sha256": "16q7x64mnd2nlg6sy8v4hxmqihzsz2gyanll11rdf7jk6rwd03h7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYSBub3RpZmljYXRpb24gd2l0aCBhIGNob3NlbiBmcmVxdWVuY3kiLAogICJuYW1lIjogIkRlamF2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlamF2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1kZWphdmlldyIsCiAgInV1aWQiOiAiZGVqYXZpZXdAaGVkZ2llLnRlY2giLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
+    "46": {"version": "11", "sha256": "16q7x64mnd2nlg6sy8v4hxmqihzsz2gyanll11rdf7jk6rwd03h7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgYSBub3RpZmljYXRpb24gd2l0aCBhIGNob3NlbiBmcmVxdWVuY3kiLAogICJuYW1lIjogIkRlamF2aWV3IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlamF2aWV3IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1kZWphdmlldyIsCiAgInV1aWQiOiAiZGVqYXZpZXdAaGVkZ2llLnRlY2giLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
   }}
 , {"uuid": "showappsattop@github.com.orbitcorrection", "name": "Apps at Top", "pname": "show-apps-at-top", "description": "Put show apps icon at top in Gnome default dash", "link": "https://extensions.gnome.org/extension/5853/show-apps-at-top/", "shell_version_map": {
     "40": {"version": "4", "sha256": "0h1dglr1zc4rn75hklf4h4r808683dqpwl6zp7rrg52xrb3cp1bd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlB1dCBzaG93IGFwcHMgaWNvbiBhdCB0b3Agb2YgZGFzaCIsCiAgIm5hbWUiOiAiU2hvdyBBcHBzIGF0IFRvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3JiaXRjb3JyZWN0b24vc2hvdy1hcHBzLWF0LXRvcCIsCiAgInV1aWQiOiAic2hvd2FwcHNhdHRvcEBnaXRodWIuY29tLm9yYml0Y29ycmVjdGlvbiIsCiAgInZlcnNpb24iOiA0Cn0="},
@@ -5743,14 +5965,12 @@
     "43": {"version": "1", "sha256": "15v4d6kxnlnbayqryliy67s35zbvr6j8g1w2x6wm0w909gcwi0px", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvZ291dCBidXR0b24gZWFzaWx5IGFjY2Vzc2libGUgaW4gdGhlIHRvcCBwYW5lbC4gSXQgY291bGQgYmUgdXNlZnVsIGFzIGl0IHJlc3RhcnQgZ25vbWUgZXZlcnl0aW1lIHlvdSBjbGljayBpdC4iLAogICJuYW1lIjogIkxvZ291dCBCdXR0b24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vMENUMFBVQ0UtTE9HL2dub21lLXNoZWxsLWV4dGVuc2lvbi1sb2dvdXQtYnV0dG9uIiwKICAidXVpZCI6ICJsb2dvdXQtYnV0dG9uQDBjdDBwdWNlLmNvbSIsCiAgInZlcnNpb24iOiAxCn0="}
   }}
 , {"uuid": "trimmer@hedgie.tech", "name": "Trimmer", "pname": "trimmer", "description": "Automatically trim the text stored in your clipboard", "link": "https://extensions.gnome.org/extension/5871/trimmer/", "shell_version_map": {
-    "43": {"version": "2", "sha256": "09zs0wj59pqcandf2v0kbwa1y7ggpqz7gz53xyslr0n6jdg30qhw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdHJpbSB0aGUgdGV4dCBzdG9yZWQgaW4geW91ciBjbGlwYm9hcmRcblxuSWYgeW91IGhhdmUgZmFjZWQgYW4gaXNzdWUsIHBsZWFzZSByZXBvcnQgaXQgb24gdGhlIEdpdEh1YiBwYWdlIiwKICAibmFtZSI6ICJUcmltbWVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRyaW1tZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGdpZWluc29ja3MvdHJpbW1lciIsCiAgInV1aWQiOiAidHJpbW1lckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAyCn0="},
-    "44": {"version": "2", "sha256": "09zs0wj59pqcandf2v0kbwa1y7ggpqz7gz53xyslr0n6jdg30qhw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdHJpbSB0aGUgdGV4dCBzdG9yZWQgaW4geW91ciBjbGlwYm9hcmRcblxuSWYgeW91IGhhdmUgZmFjZWQgYW4gaXNzdWUsIHBsZWFzZSByZXBvcnQgaXQgb24gdGhlIEdpdEh1YiBwYWdlIiwKICAibmFtZSI6ICJUcmltbWVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRyaW1tZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGdpZWluc29ja3MvdHJpbW1lciIsCiAgInV1aWQiOiAidHJpbW1lckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAyCn0="},
-    "45": {"version": "3", "sha256": "0dz29yn3rx9ids6wnjpm5gcf06h7w9nqbhhidjz22wy6hrizi7vv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdHJpbSB0aGUgdGV4dCBzdG9yZWQgaW4geW91ciBjbGlwYm9hcmQiLAogICJuYW1lIjogIlRyaW1tZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJpbW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL3RyaW1tZXIiLAogICJ1dWlkIjogInRyaW1tZXJAaGVkZ2llLnRlY2giLAogICJ2ZXJzaW9uIjogMwp9"}
+    "45": {"version": "4", "sha256": "10xvxc124wrpdh9vbav3h4nzadrj9k3vap9gykl5xn8s3y01s43n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdHJpbSB0aGUgdGV4dCBzdG9yZWQgaW4geW91ciBjbGlwYm9hcmQiLAogICJuYW1lIjogIlRyaW1tZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJpbW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy9nbm9tZS1leHRlbnNpb24tdHJpbW1lciIsCiAgInV1aWQiOiAidHJpbW1lckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA0Cn0="},
+    "46": {"version": "4", "sha256": "10xvxc124wrpdh9vbav3h4nzadrj9k3vap9gykl5xn8s3y01s43n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgdHJpbSB0aGUgdGV4dCBzdG9yZWQgaW4geW91ciBjbGlwYm9hcmQiLAogICJuYW1lIjogIlRyaW1tZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJpbW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy9nbm9tZS1leHRlbnNpb24tdHJpbW1lciIsCiAgInV1aWQiOiAidHJpbW1lckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA0Cn0="}
   }}
-, {"uuid": "launcher@hedgie.tech", "name": "Launcher", "pname": "launcher", "description": "Launch scripts from a Panel Indicator", "link": "https://extensions.gnome.org/extension/5874/launcher/", "shell_version_map": {
-    "43": {"version": "8", "sha256": "1k6dlhd4bbb6kcmq1hninz0lsgcdb1ys2krnfgqyc1zs2dccqs2d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBzY3JpcHRzIGZyb20gYSBQYW5lbCBJbmRpY2F0b3IiLAogICJuYW1lIjogIkxhdW5jaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxhdW5jaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2xhdW5jaGVyIiwKICAidXVpZCI6ICJsYXVuY2hlckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA4Cn0="},
-    "44": {"version": "8", "sha256": "1k6dlhd4bbb6kcmq1hninz0lsgcdb1ys2krnfgqyc1zs2dccqs2d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBzY3JpcHRzIGZyb20gYSBQYW5lbCBJbmRpY2F0b3IiLAogICJuYW1lIjogIkxhdW5jaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxhdW5jaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2xhdW5jaGVyIiwKICAidXVpZCI6ICJsYXVuY2hlckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA4Cn0="},
-    "45": {"version": "10", "sha256": "0zphryl8k8sqwaqyif4xhn75dcyag9av9sjr17zr851c31k2zdda", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBzY3JpcHRzIGZyb20gYSBQYW5lbCBJbmRpY2F0b3IiLAogICJuYW1lIjogIkxhdW5jaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxhdW5jaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGdpZWluc29ja3MvbGF1bmNoZXIiLAogICJ1dWlkIjogImxhdW5jaGVyQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDEwCn0="}
+, {"uuid": "launcher@hedgie.tech", "name": "Launcher", "pname": "launcher", "description": "Launch scripts from a panel indicator", "link": "https://extensions.gnome.org/extension/5874/launcher/", "shell_version_map": {
+    "45": {"version": "11", "sha256": "036px47sphr958pm00hi7dw9xgc7km36rp17bmj2j82n30g6ya8a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBzY3JpcHRzIGZyb20gYSBwYW5lbCBpbmRpY2F0b3IiLAogICJuYW1lIjogIkxhdW5jaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxhdW5jaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1sYXVuY2hlciIsCiAgInV1aWQiOiAibGF1bmNoZXJAaGVkZ2llLnRlY2giLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
+    "46": {"version": "11", "sha256": "036px47sphr958pm00hi7dw9xgc7km36rp17bmj2j82n30g6ya8a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBzY3JpcHRzIGZyb20gYSBwYW5lbCBpbmRpY2F0b3IiLAogICJuYW1lIjogIkxhdW5jaGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmxhdW5jaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1sYXVuY2hlciIsCiAgInV1aWQiOiAibGF1bmNoZXJAaGVkZ2llLnRlY2giLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
   }}
 , {"uuid": "just_shows_memory_usage@troizet.github.com", "name": "Just shows memory usage", "pname": "just-shows-memory-usage", "description": "Just shows memory usage", "link": "https://extensions.gnome.org/extension/5877/just-shows-memory-usage/", "shell_version_map": {
     "38": {"version": "2", "sha256": "1smj4fsfskdrzzh4q1hqhdwaa8bdh21x82sfmdw4gpvfwx9cpgcw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkp1c3Qgc2hvd3MgbWVtb3J5IHVzYWdlIiwKICAibmFtZSI6ICJKdXN0IHNob3dzIG1lbW9yeSB1c2FnZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Ryb2l6ZXQvanVzdC1zaG93cy1tZW1vcnktdXNhZ2UiLAogICJ1dWlkIjogImp1c3Rfc2hvd3NfbWVtb3J5X3VzYWdlQHRyb2l6ZXQuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyCn0="},
@@ -5758,20 +5978,21 @@
     "41": {"version": "2", "sha256": "1smj4fsfskdrzzh4q1hqhdwaa8bdh21x82sfmdw4gpvfwx9cpgcw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkp1c3Qgc2hvd3MgbWVtb3J5IHVzYWdlIiwKICAibmFtZSI6ICJKdXN0IHNob3dzIG1lbW9yeSB1c2FnZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Ryb2l6ZXQvanVzdC1zaG93cy1tZW1vcnktdXNhZ2UiLAogICJ1dWlkIjogImp1c3Rfc2hvd3NfbWVtb3J5X3VzYWdlQHRyb2l6ZXQuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyCn0="},
     "42": {"version": "2", "sha256": "1smj4fsfskdrzzh4q1hqhdwaa8bdh21x82sfmdw4gpvfwx9cpgcw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkp1c3Qgc2hvd3MgbWVtb3J5IHVzYWdlIiwKICAibmFtZSI6ICJKdXN0IHNob3dzIG1lbW9yeSB1c2FnZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zMCIsCiAgICAiMy4zNCIsCiAgICAiMy4zMiIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Ryb2l6ZXQvanVzdC1zaG93cy1tZW1vcnktdXNhZ2UiLAogICJ1dWlkIjogImp1c3Rfc2hvd3NfbWVtb3J5X3VzYWdlQHRyb2l6ZXQuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyCn0="}
   }}
-, {"uuid": "copier@hedgie.tech", "name": "Copier", "pname": "copier", "description": "Navigate and copy text notes to clipboard from a Panel Indicator", "link": "https://extensions.gnome.org/extension/5883/copier/", "shell_version_map": {
-    "43": {"version": "2", "sha256": "0czac27h8fdywwzr5vsfhp7jll2m7ikfb6ivlrnm9193a52gx9i3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5hdmlnYXRlIGFuZCBjb3B5IHRleHQgbm90ZXMgdG8gY2xpcGJvYXJkIGZyb20gYSBQYW5lbCBJbmRpY2F0b3JcblxuSWYgeW91IGhhdmUgZmFjZWQgYW4gaXNzdWUsIHBsZWFzZSByZXBvcnQgaXQgb24gdGhlIEdpdEh1YiBwYWdlIiwKICAibmFtZSI6ICJDb3BpZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29waWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2NvcGllciIsCiAgInV1aWQiOiAiY29waWVyQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDIKfQ=="},
-    "44": {"version": "2", "sha256": "0czac27h8fdywwzr5vsfhp7jll2m7ikfb6ivlrnm9193a52gx9i3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5hdmlnYXRlIGFuZCBjb3B5IHRleHQgbm90ZXMgdG8gY2xpcGJvYXJkIGZyb20gYSBQYW5lbCBJbmRpY2F0b3JcblxuSWYgeW91IGhhdmUgZmFjZWQgYW4gaXNzdWUsIHBsZWFzZSByZXBvcnQgaXQgb24gdGhlIEdpdEh1YiBwYWdlIiwKICAibmFtZSI6ICJDb3BpZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29waWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2NvcGllciIsCiAgInV1aWQiOiAiY29waWVyQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDIKfQ=="},
-    "45": {"version": "5", "sha256": "1cshw3980cg44259k3jhbjbk1jzra26rlwjcb5mi14zfgn2y1ibv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5hdmlnYXRlIGFuZCBjb3B5IHRleHQgbm90ZXMgdG8gY2xpcGJvYXJkIGZyb20gYSBQYW5lbCBJbmRpY2F0b3IiLAogICJuYW1lIjogIkNvcGllciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb3BpZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy9jb3BpZXIiLAogICJ1dWlkIjogImNvcGllckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA1Cn0="}
+, {"uuid": "copier@hedgie.tech", "name": "Copier", "pname": "copier", "description": "Copy text notes to clipboard via a panel indicator", "link": "https://extensions.gnome.org/extension/5883/copier/", "shell_version_map": {
+    "45": {"version": "6", "sha256": "1rn3k90ik135ib8vmz2jpmdrd38z85agkgg5nvz55zhq4dxyik75", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvcHkgdGV4dCBub3RlcyB0byBjbGlwYm9hcmQgdmlhIGEgcGFuZWwgaW5kaWNhdG9yIiwKICAibmFtZSI6ICJDb3BpZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29waWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1jb3BpZXIiLAogICJ1dWlkIjogImNvcGllckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA2Cn0="},
+    "46": {"version": "6", "sha256": "1rn3k90ik135ib8vmz2jpmdrd38z85agkgg5nvz55zhq4dxyik75", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvcHkgdGV4dCBub3RlcyB0byBjbGlwYm9hcmQgdmlhIGEgcGFuZWwgaW5kaWNhdG9yIiwKICAibmFtZSI6ICJDb3BpZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY29waWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1jb3BpZXIiLAogICJ1dWlkIjogImNvcGllckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiA2Cn0="}
   }}
 , {"uuid": "quicktext@brainstormtrooper.github.io", "name": "Quick Text", "pname": "quick-text", "description": "Quickly capture text snippets and ideas, then convert them to tasks or events", "link": "https://extensions.gnome.org/extension/5892/quick-text/", "shell_version_map": {
     "44": {"version": "8", "sha256": "09ybjnfgf4pnyj4q9xck5cs5yi0mwin47d3mbq55m25mk8sd8grm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2FwdHVyZSB0ZXh0IHNuaXBwZXRzIGFuZCBpZGVhcywgdGhlbiBjb252ZXJ0IHRoZW0gdG8gdGFza3Mgb3IgZXZlbnRzIiwKICAibmFtZSI6ICJRdWljayBUZXh0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JyYWluc3Rvcm10cm9vcGVyL3F1aWNrdGV4dCIsCiAgInV1aWQiOiAicXVpY2t0ZXh0QGJyYWluc3Rvcm10cm9vcGVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA4Cn0="},
-    "45": {"version": "12", "sha256": "0g9vyxvjsn0wbkmwdnj1dx1qja6ny98hq6yc05yj3kr13nh3ynx3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2FwdHVyZSB0ZXh0IHNuaXBwZXRzIGFuZCBpZGVhcywgdGhlbiBjb252ZXJ0IHRoZW0gdG8gdGFza3Mgb3IgZXZlbnRzIiwKICAibmFtZSI6ICJRdWljayBUZXh0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JyYWluc3Rvcm10cm9vcGVyL3F1aWNrdGV4dCIsCiAgInV1aWQiOiAicXVpY2t0ZXh0QGJyYWluc3Rvcm10cm9vcGVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMgp9"}
+    "45": {"version": "12", "sha256": "0g9vyxvjsn0wbkmwdnj1dx1qja6ny98hq6yc05yj3kr13nh3ynx3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2FwdHVyZSB0ZXh0IHNuaXBwZXRzIGFuZCBpZGVhcywgdGhlbiBjb252ZXJ0IHRoZW0gdG8gdGFza3Mgb3IgZXZlbnRzIiwKICAibmFtZSI6ICJRdWljayBUZXh0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JyYWluc3Rvcm10cm9vcGVyL3F1aWNrdGV4dCIsCiAgInV1aWQiOiAicXVpY2t0ZXh0QGJyYWluc3Rvcm10cm9vcGVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMgp9"},
+    "46": {"version": "13", "sha256": "0vsx3ha17hzc67z1jif1xw275gv461lmvyi2z5hkcsgikrqafksc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgY2FwdHVyZSB0ZXh0IHNuaXBwZXRzIGFuZCBpZGVhcywgdGhlbiBjb252ZXJ0IHRoZW0gdG8gdGFza3Mgb3IgZXZlbnRzIiwKICAibmFtZSI6ICJRdWljayBUZXh0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JyYWluc3Rvcm10cm9vcGVyL3F1aWNrdGV4dCIsCiAgInV1aWQiOiAicXVpY2t0ZXh0QGJyYWluc3Rvcm10cm9vcGVyLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMwp9"}
   }}
-, {"uuid": "app-hider@lynith.dev", "name": "App Hider", "pname": "app-hider", "description": "Hide apps in GNOME's app menu or global search.", "link": "https://extensions.gnome.org/extension/5895/app-hider/", "shell_version_map": {
+, {"uuid": "app-hider@lynith.dev", "name": "App Hider", "pname": "app-hider", "description": "Hide apps in GNOME's app menu", "link": "https://extensions.gnome.org/extension/5895/app-hider/", "shell_version_map": {
     "42": {"version": "18", "sha256": "1cqwwynvnqpgzip4v1r52yl66x8rqd15xyjabplb9i19dibwh67a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYXBwcyBpbiBHTk9NRSdzIGFwcCBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAibHluaXRoIgogIH0sCiAgIm5hbWUiOiAiQXBwIEhpZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFwcC1oaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0x5bml0aERldi9nbm9tZS1hcHAtaGlkZXIiLAogICJ1dWlkIjogImFwcC1oaWRlckBseW5pdGguZGV2IiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "43": {"version": "18", "sha256": "1cqwwynvnqpgzip4v1r52yl66x8rqd15xyjabplb9i19dibwh67a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYXBwcyBpbiBHTk9NRSdzIGFwcCBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAibHluaXRoIgogIH0sCiAgIm5hbWUiOiAiQXBwIEhpZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFwcC1oaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0x5bml0aERldi9nbm9tZS1hcHAtaGlkZXIiLAogICJ1dWlkIjogImFwcC1oaWRlckBseW5pdGguZGV2IiwKICAidmVyc2lvbiI6IDE4Cn0="},
     "44": {"version": "18", "sha256": "1cqwwynvnqpgzip4v1r52yl66x8rqd15xyjabplb9i19dibwh67a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYXBwcyBpbiBHTk9NRSdzIGFwcCBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAibHluaXRoIgogIH0sCiAgIm5hbWUiOiAiQXBwIEhpZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFwcC1oaWRlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0x5bml0aERldi9nbm9tZS1hcHAtaGlkZXIiLAogICJ1dWlkIjogImFwcC1oaWRlckBseW5pdGguZGV2IiwKICAidmVyc2lvbiI6IDE4Cn0="},
-    "45": {"version": "19", "sha256": "11l9cnig1ns187qjldynaxa5w1psa2wff3vdfcw10900wlakyl2i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYXBwcyBpbiBHTk9NRSdzIGFwcCBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAibHluaXRoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFwcC1oaWRlckBseW5pdGguZGV2IiwKICAibmFtZSI6ICJBcHAgSGlkZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwLWhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0x5bml0aERldi9nbm9tZS1hcHAtaGlkZXIiLAogICJ1dWlkIjogImFwcC1oaWRlckBseW5pdGguZGV2IiwKICAidmVyc2lvbiI6IDE5Cn0="}
+    "45": {"version": "20", "sha256": "1phx5bf82a0fqcm3c4savhbw0nnarbx5d0y5f2php9wwnvy92wpg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYXBwcyBpbiBHTk9NRSdzIGFwcCBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAibHluaXRoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFwcC1oaWRlckBseW5pdGguZGV2IiwKICAibmFtZSI6ICJBcHAgSGlkZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwLWhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9MeW5pdGhEZXYvZ25vbWUtYXBwLWhpZGVyIiwKICAidXVpZCI6ICJhcHAtaGlkZXJAbHluaXRoLmRldiIsCiAgInZlcnNpb24iOiAyMAp9"},
+    "46": {"version": "20", "sha256": "1phx5bf82a0fqcm3c4savhbw0nnarbx5d0y5f2php9wwnvy92wpg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgYXBwcyBpbiBHTk9NRSdzIGFwcCBtZW51IiwKICAiZG9uYXRpb25zIjogewogICAgImtvZmkiOiAibHluaXRoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImFwcC1oaWRlckBseW5pdGguZGV2IiwKICAibmFtZSI6ICJBcHAgSGlkZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXBwLWhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9MeW5pdGhEZXYvZ25vbWUtYXBwLWhpZGVyIiwKICAidXVpZCI6ICJhcHAtaGlkZXJAbHluaXRoLmRldiIsCiAgInZlcnNpb24iOiAyMAp9"}
   }}
 , {"uuid": "smartcard-lock@1407.org", "name": "Smartcard Lock", "pname": "smartcard-lock", "description": "This extension just locks the screen whenever a smartcard token recognized by GNOME as used for login is removed.\n\nIf nothing happens, check the FAQ available at the extension's homepage in the link below.", "link": "https://extensions.gnome.org/extension/5901/smartcard-lock/", "shell_version_map": {
     "43": {"version": "2", "sha256": "1bb6r2c9lqjx4xa6n8qj9n1pzq8v7gdxx5fsmrhd6bi60a388nm3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlYnVnIjogZmFsc2UsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGp1c3QgbG9ja3MgdGhlIHNjcmVlbiB3aGVuZXZlciBhIHNtYXJ0Y2FyZCB0b2tlbiByZWNvZ25pemVkIGJ5IEdOT01FIGFzIHVzZWQgZm9yIGxvZ2luIGlzIHJlbW92ZWQuXG5cbklmIG5vdGhpbmcgaGFwcGVucywgY2hlY2sgdGhlIEZBUSBhdmFpbGFibGUgYXQgdGhlIGV4dGVuc2lvbidzIGhvbWVwYWdlIGluIHRoZSBsaW5rIGJlbG93LiIsCiAgIm5hbWUiOiAiU21hcnRjYXJkIExvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JzZWFicmEvc21hcnRjYXJkLWxvY2svIiwKICAidXVpZCI6ICJzbWFydGNhcmQtbG9ja0AxNDA3Lm9yZyIsCiAgInZlcnNpb24iOiAyCn0="},
@@ -5784,7 +6005,8 @@
     "42": {"version": "4", "sha256": "1wfxismfsq8wc9clysfrsnv5qkvvq85m7j6p283962p29qcaln0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNjcm9sbCB1cCBvciBkb3duIGluIHRoZSBUb3AgQmFyIHRvIGFkanVzdCB2b2x1bWUuXG5cblRoaXMgaXMgYSBmb3JrIG9mIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzQxMDkvdm9sdW1lLXNjcm9sbGVyLyB3aGljaCBpcyBub3cgdW5mb3J0dW5hdGVseSB1bm1haW50YWluZWQvYXJjaGl2ZWQuIiwKICAibmFtZSI6ICJWb2x1bWUgU2Nyb2xsZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiZnJhbmNpc2xhdm9pZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52b2x1bWUtc2Nyb2xsZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZyYW5jaXNsYXZvaWUvZ25vbWUtc2hlbGwtdm9sdW1lLXNjcm9sbGVyIiwKICAidXVpZCI6ICJ2b2x1bWVfc2Nyb2xsZXJAZnJhbmNpc2xhdm9pZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNAp9"},
     "43": {"version": "4", "sha256": "1wfxismfsq8wc9clysfrsnv5qkvvq85m7j6p283962p29qcaln0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNjcm9sbCB1cCBvciBkb3duIGluIHRoZSBUb3AgQmFyIHRvIGFkanVzdCB2b2x1bWUuXG5cblRoaXMgaXMgYSBmb3JrIG9mIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzQxMDkvdm9sdW1lLXNjcm9sbGVyLyB3aGljaCBpcyBub3cgdW5mb3J0dW5hdGVseSB1bm1haW50YWluZWQvYXJjaGl2ZWQuIiwKICAibmFtZSI6ICJWb2x1bWUgU2Nyb2xsZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiZnJhbmNpc2xhdm9pZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52b2x1bWUtc2Nyb2xsZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZyYW5jaXNsYXZvaWUvZ25vbWUtc2hlbGwtdm9sdW1lLXNjcm9sbGVyIiwKICAidXVpZCI6ICJ2b2x1bWVfc2Nyb2xsZXJAZnJhbmNpc2xhdm9pZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNAp9"},
     "44": {"version": "4", "sha256": "1wfxismfsq8wc9clysfrsnv5qkvvq85m7j6p283962p29qcaln0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNjcm9sbCB1cCBvciBkb3duIGluIHRoZSBUb3AgQmFyIHRvIGFkanVzdCB2b2x1bWUuXG5cblRoaXMgaXMgYSBmb3JrIG9mIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzQxMDkvdm9sdW1lLXNjcm9sbGVyLyB3aGljaCBpcyBub3cgdW5mb3J0dW5hdGVseSB1bm1haW50YWluZWQvYXJjaGl2ZWQuIiwKICAibmFtZSI6ICJWb2x1bWUgU2Nyb2xsZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiZnJhbmNpc2xhdm9pZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52b2x1bWUtc2Nyb2xsZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZyYW5jaXNsYXZvaWUvZ25vbWUtc2hlbGwtdm9sdW1lLXNjcm9sbGVyIiwKICAidXVpZCI6ICJ2b2x1bWVfc2Nyb2xsZXJAZnJhbmNpc2xhdm9pZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNAp9"},
-    "45": {"version": "6", "sha256": "0n2mzbryzca50dp1fikmaqw4gpmniz7jjkx8g0hhym8bp4rr2y0c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNjcm9sbCB1cCBvciBkb3duIGluIHRoZSBUb3AgQmFyIHRvIGFkanVzdCB2b2x1bWUuIFN1cHBvcnRzIGNvbmZpZ3VyaW5nIGdyYW51bGFyaXR5IChkZWZhdWx0IHN0ZXAgb2YgNSUpXG5cblRoaXMgaXMgYSBmb3JrIG9mIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzQxMDkvdm9sdW1lLXNjcm9sbGVyLyB3aGljaCBpcyBub3cgdW5mb3J0dW5hdGVseSB1bm1haW50YWluZWQvYXJjaGl2ZWQuIiwKICAibmFtZSI6ICJWb2x1bWUgU2Nyb2xsZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiZnJhbmNpc2xhdm9pZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52b2x1bWUtc2Nyb2xsZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnJhbmNpc2xhdm9pZS9nbm9tZS1zaGVsbC12b2x1bWUtc2Nyb2xsZXIiLAogICJ1dWlkIjogInZvbHVtZV9zY3JvbGxlckBmcmFuY2lzbGF2b2llLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA2Cn0="}
+    "45": {"version": "9", "sha256": "05qz9q2prqp0a4jmfpkh3lhckl504pl9s6mr7af2avm8v8r883qd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNjcm9sbCB1cCBvciBkb3duIGluIHRoZSBUb3AgQmFyIHRvIGFkanVzdCB2b2x1bWUuIFN1cHBvcnRzIGNvbmZpZ3VyaW5nIGdyYW51bGFyaXR5IChkZWZhdWx0IHN0ZXAgb2YgNSUpXG5cblRoaXMgaXMgYSBmb3JrIG9mIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzQxMDkvdm9sdW1lLXNjcm9sbGVyLyB3aGljaCBpcyBub3cgdW5mb3J0dW5hdGVseSB1bm1haW50YWluZWQvYXJjaGl2ZWQuIiwKICAibmFtZSI6ICJWb2x1bWUgU2Nyb2xsZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiZnJhbmNpc2xhdm9pZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52b2x1bWUtc2Nyb2xsZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZyYW5jaXNsYXZvaWUvZ25vbWUtc2hlbGwtdm9sdW1lLXNjcm9sbGVyIiwKICAidXVpZCI6ICJ2b2x1bWVfc2Nyb2xsZXJAZnJhbmNpc2xhdm9pZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOQp9"},
+    "46": {"version": "9", "sha256": "05qz9q2prqp0a4jmfpkh3lhckl504pl9s6mr7af2avm8v8r883qd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNjcm9sbCB1cCBvciBkb3duIGluIHRoZSBUb3AgQmFyIHRvIGFkanVzdCB2b2x1bWUuIFN1cHBvcnRzIGNvbmZpZ3VyaW5nIGdyYW51bGFyaXR5IChkZWZhdWx0IHN0ZXAgb2YgNSUpXG5cblRoaXMgaXMgYSBmb3JrIG9mIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzQxMDkvdm9sdW1lLXNjcm9sbGVyLyB3aGljaCBpcyBub3cgdW5mb3J0dW5hdGVseSB1bm1haW50YWluZWQvYXJjaGl2ZWQuIiwKICAibmFtZSI6ICJWb2x1bWUgU2Nyb2xsZXIiLAogICJvcmlnaW5hbC1hdXRob3IiOiAiZnJhbmNpc2xhdm9pZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52b2x1bWUtc2Nyb2xsZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZyYW5jaXNsYXZvaWUvZ25vbWUtc2hlbGwtdm9sdW1lLXNjcm9sbGVyIiwKICAidXVpZCI6ICJ2b2x1bWVfc2Nyb2xsZXJAZnJhbmNpc2xhdm9pZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOQp9"}
   }}
 , {"uuid": "yks_timer@ysfsvm", "name": "YKS Timer", "pname": "yks-timer", "description": "YKS Timer extension for Gnome Shell / Fork of https://github.com/patwork/deadline-timer", "link": "https://extensions.gnome.org/extension/5910/yks-timer/", "shell_version_map": {
     "38": {"version": "5", "sha256": "04w44hicic0gv4pc1v2h17flz7g6fq85yfsj7qvff8lw6vhg26gn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIllLUyBUaW1lciBleHRlbnNpb24gZm9yIEdub21lIFNoZWxsIC8gRm9yayBvZiBodHRwczovL2dpdGh1Yi5jb20vcGF0d29yay9kZWFkbGluZS10aW1lciIsCiAgIm5hbWUiOiAiWUtTIFRpbWVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IiwKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS95c2Zzdm0veWtzLXRpbWVyIiwKICAidXVpZCI6ICJ5a3NfdGltZXJAeXNmc3ZtIiwKICAidmVyc2lvbiI6IDUKfQ=="},
@@ -5822,7 +6044,8 @@
 , {"uuid": "quick-settings-audio-panel@rayzeq.github.io", "name": "Quick Settings Audio Panel", "pname": "quick-settings-audio-panel", "description": "Create a new panel containing volumes and media control in the quick settings", "link": "https://extensions.gnome.org/extension/5940/quick-settings-audio-panel/", "shell_version_map": {
     "43": {"version": "45", "sha256": "00d8j387483znvsigd0cjm8kgzb7z4paipavpdilmdv5k14iv0wn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZSBhIG5ldyBwYW5lbCBjb250YWluaW5nIHZvbHVtZXMgYW5kIG1lZGlhIGNvbnRyb2wgaW4gdGhlIHF1aWNrIHNldHRpbmdzIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5xdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmF5emVxL3F1aWNrLXNldHRpbmdzLWF1ZGlvLXBhbmVsIiwKICAidXVpZCI6ICJxdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbEByYXl6ZXEuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQ1Cn0="},
     "44": {"version": "45", "sha256": "00d8j387483znvsigd0cjm8kgzb7z4paipavpdilmdv5k14iv0wn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZSBhIG5ldyBwYW5lbCBjb250YWluaW5nIHZvbHVtZXMgYW5kIG1lZGlhIGNvbnRyb2wgaW4gdGhlIHF1aWNrIHNldHRpbmdzIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5xdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmF5emVxL3F1aWNrLXNldHRpbmdzLWF1ZGlvLXBhbmVsIiwKICAidXVpZCI6ICJxdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbEByYXl6ZXEuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQ1Cn0="},
-    "45": {"version": "44", "sha256": "0xkwz2mkchvy2mym5a05p4b3wdzpv14kvcgwyywzxwmlmxxcxg74", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZSBhIG5ldyBwYW5lbCBjb250YWluaW5nIHZvbHVtZXMgYW5kIG1lZGlhIGNvbnRyb2wgaW4gdGhlIHF1aWNrIHNldHRpbmdzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAicXVpY2stc2V0dGluZ3MtYXVkaW8tcGFuZWxAcmF5emVxLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiUXVpY2sgU2V0dGluZ3MgQXVkaW8gUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucXVpY2stc2V0dGluZ3MtYXVkaW8tcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmF5emVxL3F1aWNrLXNldHRpbmdzLWF1ZGlvLXBhbmVsIiwKICAidXVpZCI6ICJxdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbEByYXl6ZXEuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQ0Cn0="}
+    "45": {"version": "44", "sha256": "0xkwz2mkchvy2mym5a05p4b3wdzpv14kvcgwyywzxwmlmxxcxg74", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZSBhIG5ldyBwYW5lbCBjb250YWluaW5nIHZvbHVtZXMgYW5kIG1lZGlhIGNvbnRyb2wgaW4gdGhlIHF1aWNrIHNldHRpbmdzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAicXVpY2stc2V0dGluZ3MtYXVkaW8tcGFuZWxAcmF5emVxLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiUXVpY2sgU2V0dGluZ3MgQXVkaW8gUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucXVpY2stc2V0dGluZ3MtYXVkaW8tcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmF5emVxL3F1aWNrLXNldHRpbmdzLWF1ZGlvLXBhbmVsIiwKICAidXVpZCI6ICJxdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbEByYXl6ZXEuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQ0Cn0="},
+    "46": {"version": "46", "sha256": "1rh86y2yk2da8avknc08y2bsn3k1dr65dfc928n55ywx4gaqlr7j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNyZWF0ZSBhIG5ldyBwYW5lbCBjb250YWluaW5nIHZvbHVtZXMgYW5kIG1lZGlhIGNvbnRyb2wgaW4gdGhlIHF1aWNrIHNldHRpbmdzIiwKICAiZ2V0dGV4dC1kb21haW4iOiAicXVpY2stc2V0dGluZ3MtYXVkaW8tcGFuZWxAcmF5emVxLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiUXVpY2sgU2V0dGluZ3MgQXVkaW8gUGFuZWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucXVpY2stc2V0dGluZ3MtYXVkaW8tcGFuZWwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUmF5emVxL3F1aWNrLXNldHRpbmdzLWF1ZGlvLXBhbmVsIiwKICAidXVpZCI6ICJxdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbEByYXl6ZXEuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQ2Cn0="}
   }}
 , {"uuid": "soft-brightness-plus@joelkitching.com", "name": "Soft Brightness Plus", "pname": "soft-brightness-plus", "description": "Add or override the brightness slider to change the brightness via an alpha layer (and optionally stop using or cooperate with the exising backlight, if present).\nEither internal, external or all monitors can be dimmed.\nSee the GitHub page for details.\n\nNote that this extension will keep running on the lock screen, as you'd also want the brightness setting to apply to the lock screen as well. Please report on GitHub if this gives you any trouble.\n\nThis extension is a fork of the original 'Soft brightness' extension, and maintains support for new GNOME releases.", "link": "https://extensions.gnome.org/extension/5943/soft-brightness-plus/", "shell_version_map": {
     "38": {"version": "5", "sha256": "08i7qzs1c9ifpa9z5xdiif31jp10g4jxr0ijnn18vmcgv2pkfyln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS5cblxuVGhpcyBleHRlbnNpb24gaXMgYSBmb3JrIG9mIHRoZSBvcmlnaW5hbCAnU29mdCBicmlnaHRuZXNzJyBleHRlbnNpb24sIGFuZCBpbmNsdWRlcyBzdXBwb3J0IGZvciBHTk9NRSA0MysuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic29mdC1icmlnaHRuZXNzLXBsdXMiLAogICJuYW1lIjogIlNvZnQgQnJpZ2h0bmVzcyBQbHVzIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1c2VyIiwKICAgICJ1bmxvY2stZGlhbG9nIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zb2Z0LWJyaWdodG5lc3MtcGx1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamtpdGNoaW5nL3NvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAidXVpZCI6ICJzb2Z0LWJyaWdodG5lc3MtcGx1c0Bqb2Vsa2l0Y2hpbmcuY29tIiwKICAidmNzX3JldmlzaW9uIjogIjc3YjVmOTIiLAogICJ2ZXJzaW9uIjogNQp9"},
@@ -5831,7 +6054,8 @@
     "42": {"version": "5", "sha256": "08i7qzs1c9ifpa9z5xdiif31jp10g4jxr0ijnn18vmcgv2pkfyln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS5cblxuVGhpcyBleHRlbnNpb24gaXMgYSBmb3JrIG9mIHRoZSBvcmlnaW5hbCAnU29mdCBicmlnaHRuZXNzJyBleHRlbnNpb24sIGFuZCBpbmNsdWRlcyBzdXBwb3J0IGZvciBHTk9NRSA0MysuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic29mdC1icmlnaHRuZXNzLXBsdXMiLAogICJuYW1lIjogIlNvZnQgQnJpZ2h0bmVzcyBQbHVzIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1c2VyIiwKICAgICJ1bmxvY2stZGlhbG9nIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zb2Z0LWJyaWdodG5lc3MtcGx1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamtpdGNoaW5nL3NvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAidXVpZCI6ICJzb2Z0LWJyaWdodG5lc3MtcGx1c0Bqb2Vsa2l0Y2hpbmcuY29tIiwKICAidmNzX3JldmlzaW9uIjogIjc3YjVmOTIiLAogICJ2ZXJzaW9uIjogNQp9"},
     "43": {"version": "5", "sha256": "08i7qzs1c9ifpa9z5xdiif31jp10g4jxr0ijnn18vmcgv2pkfyln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS5cblxuVGhpcyBleHRlbnNpb24gaXMgYSBmb3JrIG9mIHRoZSBvcmlnaW5hbCAnU29mdCBicmlnaHRuZXNzJyBleHRlbnNpb24sIGFuZCBpbmNsdWRlcyBzdXBwb3J0IGZvciBHTk9NRSA0MysuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic29mdC1icmlnaHRuZXNzLXBsdXMiLAogICJuYW1lIjogIlNvZnQgQnJpZ2h0bmVzcyBQbHVzIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1c2VyIiwKICAgICJ1bmxvY2stZGlhbG9nIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zb2Z0LWJyaWdodG5lc3MtcGx1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamtpdGNoaW5nL3NvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAidXVpZCI6ICJzb2Z0LWJyaWdodG5lc3MtcGx1c0Bqb2Vsa2l0Y2hpbmcuY29tIiwKICAidmNzX3JldmlzaW9uIjogIjc3YjVmOTIiLAogICJ2ZXJzaW9uIjogNQp9"},
     "44": {"version": "5", "sha256": "08i7qzs1c9ifpa9z5xdiif31jp10g4jxr0ijnn18vmcgv2pkfyln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS5cblxuVGhpcyBleHRlbnNpb24gaXMgYSBmb3JrIG9mIHRoZSBvcmlnaW5hbCAnU29mdCBicmlnaHRuZXNzJyBleHRlbnNpb24sIGFuZCBpbmNsdWRlcyBzdXBwb3J0IGZvciBHTk9NRSA0MysuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic29mdC1icmlnaHRuZXNzLXBsdXMiLAogICJuYW1lIjogIlNvZnQgQnJpZ2h0bmVzcyBQbHVzIiwKICAic2Vzc2lvbi1tb2RlcyI6IFsKICAgICJ1c2VyIiwKICAgICJ1bmxvY2stZGlhbG9nIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zb2Z0LWJyaWdodG5lc3MtcGx1cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zNCIsCiAgICAiMy4zNiIsCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamtpdGNoaW5nL3NvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAidXVpZCI6ICJzb2Z0LWJyaWdodG5lc3MtcGx1c0Bqb2Vsa2l0Y2hpbmcuY29tIiwKICAidmNzX3JldmlzaW9uIjogIjc3YjVmOTIiLAogICJ2ZXJzaW9uIjogNQp9"},
-    "45": {"version": "14", "sha256": "0jr1092ksdskfbzarwjjbq5ibqr26423msyz1n7d7bknqfb2a8p2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS5cblxuVGhpcyBleHRlbnNpb24gaXMgYSBmb3JrIG9mIHRoZSBvcmlnaW5hbCAnU29mdCBicmlnaHRuZXNzJyBleHRlbnNpb24sIGFuZCBtYWludGFpbnMgc3VwcG9ydCBmb3IgbmV3IEdOT01FIHJlbGVhc2VzLiIsCiAgImdldHRleHQtZG9tYWluIjogInNvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAibmFtZSI6ICJTb2Z0IEJyaWdodG5lc3MgUGx1cyIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc29mdC1icmlnaHRuZXNzLXBsdXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamtpdGNoaW5nL3NvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAidXVpZCI6ICJzb2Z0LWJyaWdodG5lc3MtcGx1c0Bqb2Vsa2l0Y2hpbmcuY29tIiwKICAidmNzX3JldmlzaW9uIjogImQ1NTQ0ZTgiLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
+    "45": {"version": "16", "sha256": "1kabp7xm4qjnbr1wrmzdy20v6h3i3yiy8ni87apc48bb5hnzj127", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS5cblxuVGhpcyBleHRlbnNpb24gaXMgYSBmb3JrIG9mIHRoZSBvcmlnaW5hbCAnU29mdCBicmlnaHRuZXNzJyBleHRlbnNpb24sIGFuZCBtYWludGFpbnMgc3VwcG9ydCBmb3IgbmV3IEdOT01FIHJlbGVhc2VzLiIsCiAgImdldHRleHQtZG9tYWluIjogInNvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAibmFtZSI6ICJTb2Z0IEJyaWdodG5lc3MgUGx1cyIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc29mdC1icmlnaHRuZXNzLXBsdXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2praXRjaGluZy9zb2Z0LWJyaWdodG5lc3MtcGx1cyIsCiAgInV1aWQiOiAic29mdC1icmlnaHRuZXNzLXBsdXNAam9lbGtpdGNoaW5nLmNvbSIsCiAgInZjc19yZXZpc2lvbiI6ICJhZmMxZjUxIiwKICAidmVyc2lvbiI6IDE2Cn0="},
+    "46": {"version": "16", "sha256": "1kabp7xm4qjnbr1wrmzdy20v6h3i3yiy8ni87apc48bb5hnzj127", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBvciBvdmVycmlkZSB0aGUgYnJpZ2h0bmVzcyBzbGlkZXIgdG8gY2hhbmdlIHRoZSBicmlnaHRuZXNzIHZpYSBhbiBhbHBoYSBsYXllciAoYW5kIG9wdGlvbmFsbHkgc3RvcCB1c2luZyBvciBjb29wZXJhdGUgd2l0aCB0aGUgZXhpc2luZyBiYWNrbGlnaHQsIGlmIHByZXNlbnQpLlxuRWl0aGVyIGludGVybmFsLCBleHRlcm5hbCBvciBhbGwgbW9uaXRvcnMgY2FuIGJlIGRpbW1lZC5cblNlZSB0aGUgR2l0SHViIHBhZ2UgZm9yIGRldGFpbHMuXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiB3aWxsIGtlZXAgcnVubmluZyBvbiB0aGUgbG9jayBzY3JlZW4sIGFzIHlvdSdkIGFsc28gd2FudCB0aGUgYnJpZ2h0bmVzcyBzZXR0aW5nIHRvIGFwcGx5IHRvIHRoZSBsb2NrIHNjcmVlbiBhcyB3ZWxsLiBQbGVhc2UgcmVwb3J0IG9uIEdpdEh1YiBpZiB0aGlzIGdpdmVzIHlvdSBhbnkgdHJvdWJsZS5cblxuVGhpcyBleHRlbnNpb24gaXMgYSBmb3JrIG9mIHRoZSBvcmlnaW5hbCAnU29mdCBicmlnaHRuZXNzJyBleHRlbnNpb24sIGFuZCBtYWludGFpbnMgc3VwcG9ydCBmb3IgbmV3IEdOT01FIHJlbGVhc2VzLiIsCiAgImdldHRleHQtZG9tYWluIjogInNvZnQtYnJpZ2h0bmVzcy1wbHVzIiwKICAibmFtZSI6ICJTb2Z0IEJyaWdodG5lc3MgUGx1cyIsCiAgInNlc3Npb24tbW9kZXMiOiBbCiAgICAidW5sb2NrLWRpYWxvZyIsCiAgICAidXNlciIKICBdLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc29mdC1icmlnaHRuZXNzLXBsdXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2praXRjaGluZy9zb2Z0LWJyaWdodG5lc3MtcGx1cyIsCiAgInV1aWQiOiAic29mdC1icmlnaHRuZXNzLXBsdXNAam9lbGtpdGNoaW5nLmNvbSIsCiAgInZjc19yZXZpc2lvbiI6ICJhZmMxZjUxIiwKICAidmVyc2lvbiI6IDE2Cn0="}
   }}
 , {"uuid": "swatch-clock@okatotf.github.io", "name": "Swatch Clock", "pname": "swatch-clock", "description": "An extension which displays the Swatch Internet Time on the panel.", "link": "https://extensions.gnome.org/extension/5946/swatch-clock/", "shell_version_map": {
     "44": {"version": "2", "sha256": "131rlf6q1w6jxz95j8yf3vpi40y80p1rjax5b2mapm6ppasdlkl2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFuIGV4dGVuc2lvbiB3aGljaCBkaXNwbGF5cyB0aGUgU3dhdGNoIEludGVybmV0IFRpbWUgb24gdGhlIHBhbmVsLiIsCiAgIm5hbWUiOiAiU3dhdGNoIENsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL29rYXRvdGYvc3dhdGNoLWNsb2NrIiwKICAidXVpZCI6ICJzd2F0Y2gtY2xvY2tAb2thdG90Zi5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMgp9"}
@@ -5847,15 +6071,15 @@
     "43": {"version": "1", "sha256": "13ydi8pwnaqsjv3dqjycpfv2zqz71zawqaj3rdkwdzhkn8q9ra4r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV2YWx1YXRlIEdKUyBzY3JpcHQgdGhyb3VnaCBEQnVzIiwKICAibmFtZSI6ICJFdmFsIEdKUyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYW1vdHRhbWFkby9ldmFsLWdqcyIsCiAgInV1aWQiOiAiZXZhbC1nanNAcmFtb3R0YW1hZG8uZGV2IiwKICAidmVyc2lvbiI6IDEKfQ=="},
     "44": {"version": "1", "sha256": "13ydi8pwnaqsjv3dqjycpfv2zqz71zawqaj3rdkwdzhkn8q9ra4r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkV2YWx1YXRlIEdKUyBzY3JpcHQgdGhyb3VnaCBEQnVzIiwKICAibmFtZSI6ICJFdmFsIEdKUyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYW1vdHRhbWFkby9ldmFsLWdqcyIsCiAgInV1aWQiOiAiZXZhbC1nanNAcmFtb3R0YW1hZG8uZGV2IiwKICAidmVyc2lvbiI6IDEKfQ=="}
   }}
-, {"uuid": "lineup@hedgie.tech", "name": "Lineup", "pname": "lineup", "description": "Force right-side Panel Indicators to have the same width to ensure consistent spacing", "link": "https://extensions.gnome.org/extension/5955/lineup/", "shell_version_map": {
-    "43": {"version": "8", "sha256": "0gdw82w0lqlq48ka8nq3yvz9l6p3xdkpx8z4d7s1r9m0j9f3a78d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmNlIHJpZ2h0LXNpZGUgUGFuZWwgSW5kaWNhdG9ycyB0byBoYXZlIHRoZSBzYW1lIHdpZHRoIHRvIGVuc3VyZSBjb25zaXN0ZW50IHNwYWNpbmdcblxuSWYgeW91IGhhdmUgZmFjZWQgYW4gaXNzdWUsIHBsZWFzZSByZXBvcnQgaXQgb24gdGhlIEdpdEh1YiBwYWdlIiwKICAibmFtZSI6ICJMaW5ldXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubGluZXVwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2xpbmV1cCIsCiAgInV1aWQiOiAibGluZXVwQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "44": {"version": "8", "sha256": "0gdw82w0lqlq48ka8nq3yvz9l6p3xdkpx8z4d7s1r9m0j9f3a78d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmNlIHJpZ2h0LXNpZGUgUGFuZWwgSW5kaWNhdG9ycyB0byBoYXZlIHRoZSBzYW1lIHdpZHRoIHRvIGVuc3VyZSBjb25zaXN0ZW50IHNwYWNpbmdcblxuSWYgeW91IGhhdmUgZmFjZWQgYW4gaXNzdWUsIHBsZWFzZSByZXBvcnQgaXQgb24gdGhlIEdpdEh1YiBwYWdlIiwKICAibmFtZSI6ICJMaW5ldXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubGluZXVwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2xpbmV1cCIsCiAgInV1aWQiOiAibGluZXVwQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDgKfQ=="},
-    "45": {"version": "10", "sha256": "06nnz7cy4jvcc9vz1lyvbb1n59n34728vl99rakm2psxryawl8ax", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvcmNlIHJpZ2h0LXNpZGUgUGFuZWwgSW5kaWNhdG9ycyB0byBoYXZlIHRoZSBzYW1lIHdpZHRoIHRvIGVuc3VyZSBjb25zaXN0ZW50IHNwYWNpbmciLAogICJuYW1lIjogIkxpbmV1cCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5saW5ldXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy9saW5ldXAiLAogICJ1dWlkIjogImxpbmV1cEBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAxMAp9"}
+, {"uuid": "lineup@hedgie.tech", "name": "Lineup", "pname": "lineup", "description": "Set width for right-side panel indicators", "link": "https://extensions.gnome.org/extension/5955/lineup/", "shell_version_map": {
+    "45": {"version": "14", "sha256": "0vrnzs8981k9559jphjj50gc4jvwxlmxhh0plsx58cmmzdswpvia", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCB3aWR0aCBmb3IgcmlnaHQtc2lkZSBwYW5lbCBpbmRpY2F0b3JzIiwKICAibmFtZSI6ICJMaW5ldXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubGluZXVwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1saW5ldXAiLAogICJ1dWlkIjogImxpbmV1cEBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAxNAp9"},
+    "46": {"version": "14", "sha256": "0vrnzs8981k9559jphjj50gc4jvwxlmxhh0plsx58cmmzdswpvia", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNldCB3aWR0aCBmb3IgcmlnaHQtc2lkZSBwYW5lbCBpbmRpY2F0b3JzIiwKICAibmFtZSI6ICJMaW5ldXAiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubGluZXVwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi1saW5ldXAiLAogICJ1dWlkIjogImxpbmV1cEBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAxNAp9"}
   }}
 , {"uuid": "quicksettings-audio-devices-hider@marcinjahn.com", "name": "Quick Settings Audio Devices Hider", "pname": "quick-settings-audio-devices-hider", "description": "A Gnome Shell extension that allows you to hide selected output/input devices from the Quick Settings audio devices panel.\nThanks to it, your Quick Settings panel will list only those devices that you actually use making it easier to quickly switch between them.\n\nNote that this extension does not play well with the https://extensions.gnome.org/extension/5940/quick-settings-audio-panel/ extension. Its option to\"Always show microphone volume slider\" might not work when Quick Settings Audio Devices Hider is enabled. A workaround could be to install https://extensions.gnome.org/extension/5446/quick-settings-tweaker/, which has a similar functinality under the toggle \"Always show input\" under \"Input/Output\" tab.\n\nCheck out the https://extensions.gnome.org/extension/6000/quick-settings-audio-devices-renamer/ if you'd rather want to rename some device than hide it.", "link": "https://extensions.gnome.org/extension/5964/quick-settings-audio-devices-hider/", "shell_version_map": {
     "43": {"version": "10", "sha256": "0v3cg0la8hr52pwpaxpaa4jkv5b2jw101dva78gvnqc04k4hgf7g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgU2hlbGwgZXh0ZW5zaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBoaWRlIHNlbGVjdGVkIG91dHB1dC9pbnB1dCBkZXZpY2VzIGZyb20gdGhlIFF1aWNrIFNldHRpbmdzIGF1ZGlvIGRldmljZXMgcGFuZWwuXG5UaGFua3MgdG8gaXQsIHlvdXIgUXVpY2sgU2V0dGluZ3MgcGFuZWwgd2lsbCBsaXN0IG9ubHkgdGhvc2UgZGV2aWNlcyB0aGF0IHlvdSBhY3R1YWxseSB1c2UgbWFraW5nIGl0IGVhc2llciB0byBxdWlja2x5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiBkb2VzIG5vdCBwbGF5IHdlbGwgd2l0aCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTk0MC9xdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbC8gZXh0ZW5zaW9uLiBJdHMgb3B0aW9uIHRvXCJBbHdheXMgc2hvdyBtaWNyb3Bob25lIHZvbHVtZSBzbGlkZXJcIiBtaWdodCBub3Qgd29yayB3aGVuIFF1aWNrIFNldHRpbmdzIEF1ZGlvIERldmljZXMgSGlkZXIgaXMgZW5hYmxlZC4gQSB3b3JrYXJvdW5kIGNvdWxkIGJlIHRvIGluc3RhbGwgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTQ0Ni9xdWljay1zZXR0aW5ncy10d2Vha2VyLywgd2hpY2ggaGFzIGEgc2ltaWxhciBmdW5jdGluYWxpdHkgdW5kZXIgdGhlIHRvZ2dsZSBcIkFsd2F5cyBzaG93IGlucHV0XCIgdW5kZXIgXCJJbnB1dC9PdXRwdXRcIiB0YWIuXG5cbkNoZWNrIG91dCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNjAwMC9xdWljay1zZXR0aW5ncy1hdWRpby1kZXZpY2VzLXJlbmFtZXIvIGlmIHlvdSdkIHJhdGhlciB3YW50IHRvIHJlbmFtZSBzb21lIGRldmljZSB0aGFuIGhpZGUgaXQuIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIEhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjaW5qYWhuL2dub21lLXF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlci1leHRlbnNpb24iLAogICJ1dWlkIjogInF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlckBtYXJjaW5qYWhuLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
     "44": {"version": "10", "sha256": "0v3cg0la8hr52pwpaxpaa4jkv5b2jw101dva78gvnqc04k4hgf7g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgU2hlbGwgZXh0ZW5zaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBoaWRlIHNlbGVjdGVkIG91dHB1dC9pbnB1dCBkZXZpY2VzIGZyb20gdGhlIFF1aWNrIFNldHRpbmdzIGF1ZGlvIGRldmljZXMgcGFuZWwuXG5UaGFua3MgdG8gaXQsIHlvdXIgUXVpY2sgU2V0dGluZ3MgcGFuZWwgd2lsbCBsaXN0IG9ubHkgdGhvc2UgZGV2aWNlcyB0aGF0IHlvdSBhY3R1YWxseSB1c2UgbWFraW5nIGl0IGVhc2llciB0byBxdWlja2x5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiBkb2VzIG5vdCBwbGF5IHdlbGwgd2l0aCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTk0MC9xdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbC8gZXh0ZW5zaW9uLiBJdHMgb3B0aW9uIHRvXCJBbHdheXMgc2hvdyBtaWNyb3Bob25lIHZvbHVtZSBzbGlkZXJcIiBtaWdodCBub3Qgd29yayB3aGVuIFF1aWNrIFNldHRpbmdzIEF1ZGlvIERldmljZXMgSGlkZXIgaXMgZW5hYmxlZC4gQSB3b3JrYXJvdW5kIGNvdWxkIGJlIHRvIGluc3RhbGwgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTQ0Ni9xdWljay1zZXR0aW5ncy10d2Vha2VyLywgd2hpY2ggaGFzIGEgc2ltaWxhciBmdW5jdGluYWxpdHkgdW5kZXIgdGhlIHRvZ2dsZSBcIkFsd2F5cyBzaG93IGlucHV0XCIgdW5kZXIgXCJJbnB1dC9PdXRwdXRcIiB0YWIuXG5cbkNoZWNrIG91dCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNjAwMC9xdWljay1zZXR0aW5ncy1hdWRpby1kZXZpY2VzLXJlbmFtZXIvIGlmIHlvdSdkIHJhdGhlciB3YW50IHRvIHJlbmFtZSBzb21lIGRldmljZSB0aGFuIGhpZGUgaXQuIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIEhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjaW5qYWhuL2dub21lLXF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlci1leHRlbnNpb24iLAogICJ1dWlkIjogInF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlckBtYXJjaW5qYWhuLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
-    "45": {"version": "12", "sha256": "13pjpn6kvz4ml07j7b0029kx6jaqd62qsyaywk4p69y2xakx279k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgU2hlbGwgZXh0ZW5zaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBoaWRlIHNlbGVjdGVkIG91dHB1dC9pbnB1dCBkZXZpY2VzIGZyb20gdGhlIFF1aWNrIFNldHRpbmdzIGF1ZGlvIGRldmljZXMgcGFuZWwuXG5UaGFua3MgdG8gaXQsIHlvdXIgUXVpY2sgU2V0dGluZ3MgcGFuZWwgd2lsbCBsaXN0IG9ubHkgdGhvc2UgZGV2aWNlcyB0aGF0IHlvdSBhY3R1YWxseSB1c2UgbWFraW5nIGl0IGVhc2llciB0byBxdWlja2x5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiBkb2VzIG5vdCBwbGF5IHdlbGwgd2l0aCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTk0MC9xdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbC8gZXh0ZW5zaW9uLiBJdHMgb3B0aW9uIHRvXCJBbHdheXMgc2hvdyBtaWNyb3Bob25lIHZvbHVtZSBzbGlkZXJcIiBtaWdodCBub3Qgd29yayB3aGVuIFF1aWNrIFNldHRpbmdzIEF1ZGlvIERldmljZXMgSGlkZXIgaXMgZW5hYmxlZC4gQSB3b3JrYXJvdW5kIGNvdWxkIGJlIHRvIGluc3RhbGwgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTQ0Ni9xdWljay1zZXR0aW5ncy10d2Vha2VyLywgd2hpY2ggaGFzIGEgc2ltaWxhciBmdW5jdGluYWxpdHkgdW5kZXIgdGhlIHRvZ2dsZSBcIkFsd2F5cyBzaG93IGlucHV0XCIgdW5kZXIgXCJJbnB1dC9PdXRwdXRcIiB0YWIuXG5cbkNoZWNrIG91dCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNjAwMC9xdWljay1zZXR0aW5ncy1hdWRpby1kZXZpY2VzLXJlbmFtZXIvIGlmIHlvdSdkIHJhdGhlciB3YW50IHRvIHJlbmFtZSBzb21lIGRldmljZSB0aGFuIGhpZGUgaXQuIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIEhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmNpbmphaG4vZ25vbWUtcXVpY2tzZXR0aW5ncy1hdWRpby1kZXZpY2VzLWhpZGVyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAicXVpY2tzZXR0aW5ncy1hdWRpby1kZXZpY2VzLWhpZGVyQG1hcmNpbmphaG4uY29tIiwKICAidmVyc2lvbiI6IDEyCn0="}
+    "45": {"version": "12", "sha256": "13pjpn6kvz4ml07j7b0029kx6jaqd62qsyaywk4p69y2xakx279k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgU2hlbGwgZXh0ZW5zaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBoaWRlIHNlbGVjdGVkIG91dHB1dC9pbnB1dCBkZXZpY2VzIGZyb20gdGhlIFF1aWNrIFNldHRpbmdzIGF1ZGlvIGRldmljZXMgcGFuZWwuXG5UaGFua3MgdG8gaXQsIHlvdXIgUXVpY2sgU2V0dGluZ3MgcGFuZWwgd2lsbCBsaXN0IG9ubHkgdGhvc2UgZGV2aWNlcyB0aGF0IHlvdSBhY3R1YWxseSB1c2UgbWFraW5nIGl0IGVhc2llciB0byBxdWlja2x5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiBkb2VzIG5vdCBwbGF5IHdlbGwgd2l0aCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTk0MC9xdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbC8gZXh0ZW5zaW9uLiBJdHMgb3B0aW9uIHRvXCJBbHdheXMgc2hvdyBtaWNyb3Bob25lIHZvbHVtZSBzbGlkZXJcIiBtaWdodCBub3Qgd29yayB3aGVuIFF1aWNrIFNldHRpbmdzIEF1ZGlvIERldmljZXMgSGlkZXIgaXMgZW5hYmxlZC4gQSB3b3JrYXJvdW5kIGNvdWxkIGJlIHRvIGluc3RhbGwgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTQ0Ni9xdWljay1zZXR0aW5ncy10d2Vha2VyLywgd2hpY2ggaGFzIGEgc2ltaWxhciBmdW5jdGluYWxpdHkgdW5kZXIgdGhlIHRvZ2dsZSBcIkFsd2F5cyBzaG93IGlucHV0XCIgdW5kZXIgXCJJbnB1dC9PdXRwdXRcIiB0YWIuXG5cbkNoZWNrIG91dCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNjAwMC9xdWljay1zZXR0aW5ncy1hdWRpby1kZXZpY2VzLXJlbmFtZXIvIGlmIHlvdSdkIHJhdGhlciB3YW50IHRvIHJlbmFtZSBzb21lIGRldmljZSB0aGFuIGhpZGUgaXQuIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIEhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmNpbmphaG4vZ25vbWUtcXVpY2tzZXR0aW5ncy1hdWRpby1kZXZpY2VzLWhpZGVyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAicXVpY2tzZXR0aW5ncy1hdWRpby1kZXZpY2VzLWhpZGVyQG1hcmNpbmphaG4uY29tIiwKICAidmVyc2lvbiI6IDEyCn0="},
+    "46": {"version": "13", "sha256": "1zl8bg98v1ll88fv7sv8gicryhzg2pgfylba3z9gsllwh4dcb565", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgU2hlbGwgZXh0ZW5zaW9uIHRoYXQgYWxsb3dzIHlvdSB0byBoaWRlIHNlbGVjdGVkIG91dHB1dC9pbnB1dCBkZXZpY2VzIGZyb20gdGhlIFF1aWNrIFNldHRpbmdzIGF1ZGlvIGRldmljZXMgcGFuZWwuXG5UaGFua3MgdG8gaXQsIHlvdXIgUXVpY2sgU2V0dGluZ3MgcGFuZWwgd2lsbCBsaXN0IG9ubHkgdGhvc2UgZGV2aWNlcyB0aGF0IHlvdSBhY3R1YWxseSB1c2UgbWFraW5nIGl0IGVhc2llciB0byBxdWlja2x5IHN3aXRjaCBiZXR3ZWVuIHRoZW0uXG5cbk5vdGUgdGhhdCB0aGlzIGV4dGVuc2lvbiBkb2VzIG5vdCBwbGF5IHdlbGwgd2l0aCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTk0MC9xdWljay1zZXR0aW5ncy1hdWRpby1wYW5lbC8gZXh0ZW5zaW9uLiBJdHMgb3B0aW9uIHRvXCJBbHdheXMgc2hvdyBtaWNyb3Bob25lIHZvbHVtZSBzbGlkZXJcIiBtaWdodCBub3Qgd29yayB3aGVuIFF1aWNrIFNldHRpbmdzIEF1ZGlvIERldmljZXMgSGlkZXIgaXMgZW5hYmxlZC4gQSB3b3JrYXJvdW5kIGNvdWxkIGJlIHRvIGluc3RhbGwgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNTQ0Ni9xdWljay1zZXR0aW5ncy10d2Vha2VyLywgd2hpY2ggaGFzIGEgc2ltaWxhciBmdW5jdGluYWxpdHkgdW5kZXIgdGhlIHRvZ2dsZSBcIkFsd2F5cyBzaG93IGlucHV0XCIgdW5kZXIgXCJJbnB1dC9PdXRwdXRcIiB0YWIuXG5cbkNoZWNrIG91dCB0aGUgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vNjAwMC9xdWljay1zZXR0aW5ncy1hdWRpby1kZXZpY2VzLXJlbmFtZXIvIGlmIHlvdSdkIHJhdGhlciB3YW50IHRvIHJlbmFtZSBzb21lIGRldmljZSB0aGFuIGhpZGUgaXQuIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIEhpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmNpbmphaG4vZ25vbWUtcXVpY2tzZXR0aW5ncy1hdWRpby1kZXZpY2VzLWhpZGVyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAicXVpY2tzZXR0aW5ncy1hdWRpby1kZXZpY2VzLWhpZGVyQG1hcmNpbmphaG4uY29tIiwKICAidmVyc2lvbiI6IDEzCn0="}
   }}
 , {"uuid": "workspaces-by-open-apps@favo02.github.com", "name": "Workspaces indicator by open apps", "pname": "workspaces-indicator-by-open-apps", "description": "Display a simple workspace indicator showing icons of apps open in it.\n\nFeatures:\n\n- Show a simple indicator to display workspaces and apps open in it\n- Support for drag and drop: change an application workspace just dragging its icon\n- Right/Left click to focus/minimize application, Middle click to close\n- Workspaces scrolling: change active workspace scrolling hover the indicator\n- Support for multiple monitor (for both static and dynamic workspaces)\n- Rename workspaces directly from the extension (activate in settings)\n- Hide/show GNOME default workspace indicator (former activities button)\n\nCustomization:\n\n- Indicator position\n- Mouse scroll direction (normal or inverse)\n- Activate/deactivate 'middle click to close app'\n- Activate/deactivate 'click on active workspace to overview'\n- Activate/deactivate 'click on focused application to minimize'\n- Activate/deactivate 'workspace indicator'\n- Activate/deactivate 'app indicator'\n- Customize indicator color\n- Activate/deactivate 'round borders'\n- Show/Hide workspaces names\n- Show/Hide empty workspaces\n- Customize apps on all workspaces text indicator\n- Desaturate all icons\n- No effect/Reduce opacity/Desaturate for both minimized and inactive apps\n- Limit icons per workspace\n- Group icons of same application\n- Ignore applications (with regex)", "link": "https://extensions.gnome.org/extension/5967/workspaces-indicator-by-open-apps/", "shell_version_map": {
     "40": {"version": "8", "sha256": "1iimby4wglgyrfx20la0kp9wdnfz3y6868n2044qvda2fbwxdx5c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBzaW1wbGUgd29ya3NwYWNlIGluZGljYXRvciBzaG93aW5nIGljb25zIG9mIGFwcHMgb3BlbiBpbiBpdC5cblxuVXNhZ2UgYW5kIGN1c3RvbWl6YXRpb246XG4tIFN1cHBvcnQgZm9yIGRyYWcgYW5kIGRyb3A6IGNoYW5nZSBhbiBhcHBsaWNhdGlvbiB3b3Jrc3BhY2UganVzdCBkcmFnZ2luZyBpdHMgaWNvblxuLSBSaWdodC9MZWZ0IGNsaWNrIHRvIGZvY3VzIGFwcGxpY2F0aW9uLCBNaWRkbGUgY2xpY2sgdG8gY2xvc2Vcbi0gV29ya3NwYWNlcyBzY3JvbGxpbmc6IGNoYW5nZSBhY3RpdmUgd29ya3NwYWNlIHNjcm9sbGluZyBob3ZlciB0aGUgaW5kaWNhdG9yXG4tIFRvZ2dsZSBhcHBsaWNhdGlvbiBpY29ucyBkZXNhdHVyYXRpb25cbi0gU2hvdy9IaWRlIHdvcmtzcGFjZXMgaW5kZXggbGFiZWxcbi0gU2hvdy9IaWRlIGFjdGl2ZSB3b3Jrc3BhY2UgYW5kIGZvY3VzZWQgYXBwIGluZGljYXRvclxuLSBDaGFuZ2UgaW5kaWNhdG9yIHN0eWxlIGFuZCBjb2xvclxuLSBTdXBwb3J0IGZvciBtdWx0aXBsZSBtb25pdG9yIChmb3IgYm90aCBzdGF0aWMgYW5kIGR5bmFtaWMgd29ya3NwYWNlcylcbi0gW05FVyFdIEhpZGUgZW1wdHkgd29ya3NwYWNlc1xuLSBbTkVXIV0gUmVuYW1lIHdvcmtzcGFjZXMgZGlyZWN0bHkgZnJvbSB0aGUgZXh0ZW5zaW9uIChzd2l0Y2ggd29ya3NwYWNlIHRvIGFwcGx5IG5ldyBuYW1lKVxuIiwKICAibmFtZSI6ICJXb3Jrc3BhY2VzIGluZGljYXRvciBieSBvcGVuIGFwcHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0Zhdm8wMi93b3Jrc3BhY2VzLWJ5LW9wZW4tYXBwcyIsCiAgInV1aWQiOiAid29ya3NwYWNlcy1ieS1vcGVuLWFwcHNAZmF2bzAyLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOAp9"},
@@ -5863,7 +6087,8 @@
     "42": {"version": "13", "sha256": "1qmwvsv7g5lh7yri6m8c3r18zhvr6bh2wcchlgydyzfdkdsvjpid", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBzaW1wbGUgd29ya3NwYWNlIGluZGljYXRvciBzaG93aW5nIGljb25zIG9mIGFwcHMgb3BlbiBpbiBpdC5cblxuRmVhdHVyZXM6XG5cbi0gU2hvdyBhIHNpbXBsZSBpbmRpY2F0b3IgdG8gZGlzcGxheSB3b3Jrc3BhY2VzIGFuZCBhcHBzIG9wZW4gaW4gaXRcbi0gU3VwcG9ydCBmb3IgZHJhZyBhbmQgZHJvcDogY2hhbmdlIGFuIGFwcGxpY2F0aW9uIHdvcmtzcGFjZSBqdXN0IGRyYWdnaW5nIGl0cyBpY29uXG4tIFJpZ2h0L0xlZnQgY2xpY2sgdG8gZm9jdXMgYXBwbGljYXRpb24sIE1pZGRsZSBjbGljayB0byBjbG9zZVxuLSBXb3Jrc3BhY2VzIHNjcm9sbGluZzogY2hhbmdlIGFjdGl2ZSB3b3Jrc3BhY2Ugc2Nyb2xsaW5nIGhvdmVyIHRoZSBpbmRpY2F0b3Jcbi0gU3VwcG9ydCBmb3IgbXVsdGlwbGUgbW9uaXRvciAoZm9yIGJvdGggc3RhdGljIGFuZCBkeW5hbWljIHdvcmtzcGFjZXMpXG4tIFJlbmFtZSB3b3Jrc3BhY2VzIGRpcmVjdGx5IGZyb20gdGhlIGV4dGVuc2lvbiAoYWN0aXZhdGUgaW4gc2V0dGluZ3MpXG5cbkN1c3RvbWl6YXRpb246XG5cbi0gSW5kaWNhdG9yIHBvc2l0aW9uXG4tIFNjcm9sbCBkaXJlY3Rpb24gKG5vcm1hbCBvciBpbnZlcnNlKVxuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdtaWRkbGUgY2xpY2sgdG8gY2xvc2UgYXBwJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICd3b3Jrc3BhY2UgaW5kaWNhdG9yJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdhcHAgaW5kaWNhdG9yJ1xuLSBDdXN0b21pemUgaW5kaWNhdG9yIGNvbG9yXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ3JvdW5kIGJvcmRlcnMnXG4tIFNob3cvSGlkZSB3b3Jrc3BhY2VzIG5hbWVzXG4tIFNob3cvSGlkZSBlbXB0eSB3b3Jrc3BhY2VzXG4tIEN1c3RvbWl6ZSBhcHBzIG9uIGFsbCB3b3Jrc3BhY2VzIHRleHQgaW5kaWNhdG9yXG4tIERlc2F0dXJhdGUgYWxsIGljb25zXG4tIE5vIGVmZmVjdC9SZWR1Y2Ugb3BhY2l0eS9EZXNhdHVyYXRlIGZvciBib3RoIG1pbmltaXplZCBhbmQgaW5hY3RpdmUgYXBwc1xuLSBMaW1pdCBpY29ucyBwZXIgd29ya3NwYWNlXG4tIEdyb3VwIGljb25zIG9mIHNhbWUgYXBwbGljYXRpb25cbiIsCiAgIm5hbWUiOiAiV29ya3NwYWNlcyBpbmRpY2F0b3IgYnkgb3BlbiBhcHBzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRmF2bzAyL3dvcmtzcGFjZXMtYnktb3Blbi1hcHBzIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2VzLWJ5LW9wZW4tYXBwc0BmYXZvMDIuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"},
     "43": {"version": "13", "sha256": "1qmwvsv7g5lh7yri6m8c3r18zhvr6bh2wcchlgydyzfdkdsvjpid", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBzaW1wbGUgd29ya3NwYWNlIGluZGljYXRvciBzaG93aW5nIGljb25zIG9mIGFwcHMgb3BlbiBpbiBpdC5cblxuRmVhdHVyZXM6XG5cbi0gU2hvdyBhIHNpbXBsZSBpbmRpY2F0b3IgdG8gZGlzcGxheSB3b3Jrc3BhY2VzIGFuZCBhcHBzIG9wZW4gaW4gaXRcbi0gU3VwcG9ydCBmb3IgZHJhZyBhbmQgZHJvcDogY2hhbmdlIGFuIGFwcGxpY2F0aW9uIHdvcmtzcGFjZSBqdXN0IGRyYWdnaW5nIGl0cyBpY29uXG4tIFJpZ2h0L0xlZnQgY2xpY2sgdG8gZm9jdXMgYXBwbGljYXRpb24sIE1pZGRsZSBjbGljayB0byBjbG9zZVxuLSBXb3Jrc3BhY2VzIHNjcm9sbGluZzogY2hhbmdlIGFjdGl2ZSB3b3Jrc3BhY2Ugc2Nyb2xsaW5nIGhvdmVyIHRoZSBpbmRpY2F0b3Jcbi0gU3VwcG9ydCBmb3IgbXVsdGlwbGUgbW9uaXRvciAoZm9yIGJvdGggc3RhdGljIGFuZCBkeW5hbWljIHdvcmtzcGFjZXMpXG4tIFJlbmFtZSB3b3Jrc3BhY2VzIGRpcmVjdGx5IGZyb20gdGhlIGV4dGVuc2lvbiAoYWN0aXZhdGUgaW4gc2V0dGluZ3MpXG5cbkN1c3RvbWl6YXRpb246XG5cbi0gSW5kaWNhdG9yIHBvc2l0aW9uXG4tIFNjcm9sbCBkaXJlY3Rpb24gKG5vcm1hbCBvciBpbnZlcnNlKVxuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdtaWRkbGUgY2xpY2sgdG8gY2xvc2UgYXBwJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICd3b3Jrc3BhY2UgaW5kaWNhdG9yJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdhcHAgaW5kaWNhdG9yJ1xuLSBDdXN0b21pemUgaW5kaWNhdG9yIGNvbG9yXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ3JvdW5kIGJvcmRlcnMnXG4tIFNob3cvSGlkZSB3b3Jrc3BhY2VzIG5hbWVzXG4tIFNob3cvSGlkZSBlbXB0eSB3b3Jrc3BhY2VzXG4tIEN1c3RvbWl6ZSBhcHBzIG9uIGFsbCB3b3Jrc3BhY2VzIHRleHQgaW5kaWNhdG9yXG4tIERlc2F0dXJhdGUgYWxsIGljb25zXG4tIE5vIGVmZmVjdC9SZWR1Y2Ugb3BhY2l0eS9EZXNhdHVyYXRlIGZvciBib3RoIG1pbmltaXplZCBhbmQgaW5hY3RpdmUgYXBwc1xuLSBMaW1pdCBpY29ucyBwZXIgd29ya3NwYWNlXG4tIEdyb3VwIGljb25zIG9mIHNhbWUgYXBwbGljYXRpb25cbiIsCiAgIm5hbWUiOiAiV29ya3NwYWNlcyBpbmRpY2F0b3IgYnkgb3BlbiBhcHBzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRmF2bzAyL3dvcmtzcGFjZXMtYnktb3Blbi1hcHBzIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2VzLWJ5LW9wZW4tYXBwc0BmYXZvMDIuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"},
     "44": {"version": "13", "sha256": "1qmwvsv7g5lh7yri6m8c3r18zhvr6bh2wcchlgydyzfdkdsvjpid", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBzaW1wbGUgd29ya3NwYWNlIGluZGljYXRvciBzaG93aW5nIGljb25zIG9mIGFwcHMgb3BlbiBpbiBpdC5cblxuRmVhdHVyZXM6XG5cbi0gU2hvdyBhIHNpbXBsZSBpbmRpY2F0b3IgdG8gZGlzcGxheSB3b3Jrc3BhY2VzIGFuZCBhcHBzIG9wZW4gaW4gaXRcbi0gU3VwcG9ydCBmb3IgZHJhZyBhbmQgZHJvcDogY2hhbmdlIGFuIGFwcGxpY2F0aW9uIHdvcmtzcGFjZSBqdXN0IGRyYWdnaW5nIGl0cyBpY29uXG4tIFJpZ2h0L0xlZnQgY2xpY2sgdG8gZm9jdXMgYXBwbGljYXRpb24sIE1pZGRsZSBjbGljayB0byBjbG9zZVxuLSBXb3Jrc3BhY2VzIHNjcm9sbGluZzogY2hhbmdlIGFjdGl2ZSB3b3Jrc3BhY2Ugc2Nyb2xsaW5nIGhvdmVyIHRoZSBpbmRpY2F0b3Jcbi0gU3VwcG9ydCBmb3IgbXVsdGlwbGUgbW9uaXRvciAoZm9yIGJvdGggc3RhdGljIGFuZCBkeW5hbWljIHdvcmtzcGFjZXMpXG4tIFJlbmFtZSB3b3Jrc3BhY2VzIGRpcmVjdGx5IGZyb20gdGhlIGV4dGVuc2lvbiAoYWN0aXZhdGUgaW4gc2V0dGluZ3MpXG5cbkN1c3RvbWl6YXRpb246XG5cbi0gSW5kaWNhdG9yIHBvc2l0aW9uXG4tIFNjcm9sbCBkaXJlY3Rpb24gKG5vcm1hbCBvciBpbnZlcnNlKVxuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdtaWRkbGUgY2xpY2sgdG8gY2xvc2UgYXBwJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICd3b3Jrc3BhY2UgaW5kaWNhdG9yJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdhcHAgaW5kaWNhdG9yJ1xuLSBDdXN0b21pemUgaW5kaWNhdG9yIGNvbG9yXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ3JvdW5kIGJvcmRlcnMnXG4tIFNob3cvSGlkZSB3b3Jrc3BhY2VzIG5hbWVzXG4tIFNob3cvSGlkZSBlbXB0eSB3b3Jrc3BhY2VzXG4tIEN1c3RvbWl6ZSBhcHBzIG9uIGFsbCB3b3Jrc3BhY2VzIHRleHQgaW5kaWNhdG9yXG4tIERlc2F0dXJhdGUgYWxsIGljb25zXG4tIE5vIGVmZmVjdC9SZWR1Y2Ugb3BhY2l0eS9EZXNhdHVyYXRlIGZvciBib3RoIG1pbmltaXplZCBhbmQgaW5hY3RpdmUgYXBwc1xuLSBMaW1pdCBpY29ucyBwZXIgd29ya3NwYWNlXG4tIEdyb3VwIGljb25zIG9mIHNhbWUgYXBwbGljYXRpb25cbiIsCiAgIm5hbWUiOiAiV29ya3NwYWNlcyBpbmRpY2F0b3IgYnkgb3BlbiBhcHBzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRmF2bzAyL3dvcmtzcGFjZXMtYnktb3Blbi1hcHBzIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2VzLWJ5LW9wZW4tYXBwc0BmYXZvMDIuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"},
-    "45": {"version": "14", "sha256": "1grasnfra2ni3mkdib6sr9h8rj23x5fdly99c03i49vsw05qd614", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBzaW1wbGUgd29ya3NwYWNlIGluZGljYXRvciBzaG93aW5nIGljb25zIG9mIGFwcHMgb3BlbiBpbiBpdC5cblxuRmVhdHVyZXM6XG5cbi0gU2hvdyBhIHNpbXBsZSBpbmRpY2F0b3IgdG8gZGlzcGxheSB3b3Jrc3BhY2VzIGFuZCBhcHBzIG9wZW4gaW4gaXRcbi0gU3VwcG9ydCBmb3IgZHJhZyBhbmQgZHJvcDogY2hhbmdlIGFuIGFwcGxpY2F0aW9uIHdvcmtzcGFjZSBqdXN0IGRyYWdnaW5nIGl0cyBpY29uXG4tIFJpZ2h0L0xlZnQgY2xpY2sgdG8gZm9jdXMvbWluaW1pemUgYXBwbGljYXRpb24sIE1pZGRsZSBjbGljayB0byBjbG9zZVxuLSBXb3Jrc3BhY2VzIHNjcm9sbGluZzogY2hhbmdlIGFjdGl2ZSB3b3Jrc3BhY2Ugc2Nyb2xsaW5nIGhvdmVyIHRoZSBpbmRpY2F0b3Jcbi0gU3VwcG9ydCBmb3IgbXVsdGlwbGUgbW9uaXRvciBfKGZvciBib3RoIHN0YXRpYyBhbmQgZHluYW1pYyB3b3Jrc3BhY2VzKV9cbi0gUmVuYW1lIHdvcmtzcGFjZXMgZGlyZWN0bHkgZnJvbSB0aGUgZXh0ZW5zaW9uIF8oYWN0aXZhdGUgaW4gc2V0dGluZ3MpX1xuLSBIaWRlL3Nob3cgR05PTUUgZGVmYXVsdCB3b3Jrc3BhY2UgaW5kaWNhdG9yIChmb3JtZXIgYWN0aXZpdGllcyBidXR0b24pXG5cbkN1c3RvbWl6YXRpb246XG5cbi0gSW5kaWNhdG9yIHBvc2l0aW9uXG4tIE1vdXNlIHNjcm9sbCBkaXJlY3Rpb24gKG5vcm1hbCBvciBpbnZlcnNlKVxuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdtaWRkbGUgY2xpY2sgdG8gY2xvc2UgYXBwJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdjbGljayBvbiBhY3RpdmUgd29ya3NwYWNlIHRvIG92ZXJ2aWV3J1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdjbGljayBvbiBmb2N1c2VkIGFwcGxpY2F0aW9uIHRvIG1pbmltaXplJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICd3b3Jrc3BhY2UgaW5kaWNhdG9yJ1xuLSBBY3RpdmF0ZS9kZWFjdGl2YXRlICdhcHAgaW5kaWNhdG9yJ1xuLSBDdXN0b21pemUgaW5kaWNhdG9yIGNvbG9yXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ3JvdW5kIGJvcmRlcnMnXG4tIFNob3cvSGlkZSB3b3Jrc3BhY2VzIG5hbWVzXG4tIFNob3cvSGlkZSBlbXB0eSB3b3Jrc3BhY2VzXG4tIEN1c3RvbWl6ZSBhcHBzIG9uIGFsbCB3b3Jrc3BhY2VzIHRleHQgaW5kaWNhdG9yXG4tIERlc2F0dXJhdGUgYWxsIGljb25zXG4tIE5vIGVmZmVjdC9SZWR1Y2Ugb3BhY2l0eS9EZXNhdHVyYXRlIGZvciBib3RoIG1pbmltaXplZCBhbmQgaW5hY3RpdmUgYXBwc1xuLSBMaW1pdCBpY29ucyBwZXIgd29ya3NwYWNlXG4tIEdyb3VwIGljb25zIG9mIHNhbWUgYXBwbGljYXRpb25cbi0gSWdub3JlIGFwcGxpY2F0aW9ucyAod2l0aCByZWdleCkiLAogICJuYW1lIjogIldvcmtzcGFjZXMgaW5kaWNhdG9yIGJ5IG9wZW4gYXBwcyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53b3Jrc3BhY2VzLWluZGljYXRvci1ieS1vcGVuLWFwcHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRmF2bzAyL3dvcmtzcGFjZXMtYnktb3Blbi1hcHBzIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2VzLWJ5LW9wZW4tYXBwc0BmYXZvMDIuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNAp9"}
+    "45": {"version": "15", "sha256": "1z248a0rd5zj623brc1lb3c9al3yp7ph9yzx091pcgq6hs0by49x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBzaW1wbGUgd29ya3NwYWNlIGluZGljYXRvciBzaG93aW5nIGljb25zIG9mIGFwcHMgb3BlbiBpbiBpdC5cblxuRmVhdHVyZXM6XG5cbi0gU2hvdyBhIHNpbXBsZSBpbmRpY2F0b3IgdG8gZGlzcGxheSB3b3Jrc3BhY2VzIGFuZCBhcHBzIG9wZW4gaW4gaXRcbi0gU3VwcG9ydCBmb3IgZHJhZyBhbmQgZHJvcDogY2hhbmdlIGFuIGFwcGxpY2F0aW9uIHdvcmtzcGFjZSBqdXN0IGRyYWdnaW5nIGl0cyBpY29uXG4tIFJpZ2h0L0xlZnQgY2xpY2sgdG8gZm9jdXMvbWluaW1pemUgYXBwbGljYXRpb24sIE1pZGRsZSBjbGljayB0byBjbG9zZVxuLSBXb3Jrc3BhY2VzIHNjcm9sbGluZzogY2hhbmdlIGFjdGl2ZSB3b3Jrc3BhY2Ugc2Nyb2xsaW5nIGhvdmVyIHRoZSBpbmRpY2F0b3Jcbi0gU3VwcG9ydCBmb3IgbXVsdGlwbGUgbW9uaXRvciAoZm9yIGJvdGggc3RhdGljIGFuZCBkeW5hbWljIHdvcmtzcGFjZXMpXG4tIFJlbmFtZSB3b3Jrc3BhY2VzIGRpcmVjdGx5IGZyb20gdGhlIGV4dGVuc2lvbiAoYWN0aXZhdGUgaW4gc2V0dGluZ3MpXG4tIEhpZGUvc2hvdyBHTk9NRSBkZWZhdWx0IHdvcmtzcGFjZSBpbmRpY2F0b3IgKGZvcm1lciBhY3Rpdml0aWVzIGJ1dHRvbilcblxuQ3VzdG9taXphdGlvbjpcblxuLSBJbmRpY2F0b3IgcG9zaXRpb25cbi0gTW91c2Ugc2Nyb2xsIGRpcmVjdGlvbiAobm9ybWFsIG9yIGludmVyc2UpXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ21pZGRsZSBjbGljayB0byBjbG9zZSBhcHAnXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ2NsaWNrIG9uIGFjdGl2ZSB3b3Jrc3BhY2UgdG8gb3ZlcnZpZXcnXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ2NsaWNrIG9uIGZvY3VzZWQgYXBwbGljYXRpb24gdG8gbWluaW1pemUnXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ3dvcmtzcGFjZSBpbmRpY2F0b3InXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ2FwcCBpbmRpY2F0b3InXG4tIEN1c3RvbWl6ZSBpbmRpY2F0b3IgY29sb3Jcbi0gQWN0aXZhdGUvZGVhY3RpdmF0ZSAncm91bmQgYm9yZGVycydcbi0gU2hvdy9IaWRlIHdvcmtzcGFjZXMgbmFtZXNcbi0gU2hvdy9IaWRlIGVtcHR5IHdvcmtzcGFjZXNcbi0gQ3VzdG9taXplIGFwcHMgb24gYWxsIHdvcmtzcGFjZXMgdGV4dCBpbmRpY2F0b3Jcbi0gRGVzYXR1cmF0ZSBhbGwgaWNvbnNcbi0gTm8gZWZmZWN0L1JlZHVjZSBvcGFjaXR5L0Rlc2F0dXJhdGUgZm9yIGJvdGggbWluaW1pemVkIGFuZCBpbmFjdGl2ZSBhcHBzXG4tIExpbWl0IGljb25zIHBlciB3b3Jrc3BhY2Vcbi0gR3JvdXAgaWNvbnMgb2Ygc2FtZSBhcHBsaWNhdGlvblxuLSBJZ25vcmUgYXBwbGljYXRpb25zICh3aXRoIHJlZ2V4KSIsCiAgIm5hbWUiOiAiV29ya3NwYWNlcyBpbmRpY2F0b3IgYnkgb3BlbiBhcHBzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndvcmtzcGFjZXMtaW5kaWNhdG9yLWJ5LW9wZW4tYXBwcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRmF2bzAyL3dvcmtzcGFjZXMtYnktb3Blbi1hcHBzIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2VzLWJ5LW9wZW4tYXBwc0BmYXZvMDIuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"},
+    "46": {"version": "15", "sha256": "1z248a0rd5zj623brc1lb3c9al3yp7ph9yzx091pcgq6hs0by49x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgYSBzaW1wbGUgd29ya3NwYWNlIGluZGljYXRvciBzaG93aW5nIGljb25zIG9mIGFwcHMgb3BlbiBpbiBpdC5cblxuRmVhdHVyZXM6XG5cbi0gU2hvdyBhIHNpbXBsZSBpbmRpY2F0b3IgdG8gZGlzcGxheSB3b3Jrc3BhY2VzIGFuZCBhcHBzIG9wZW4gaW4gaXRcbi0gU3VwcG9ydCBmb3IgZHJhZyBhbmQgZHJvcDogY2hhbmdlIGFuIGFwcGxpY2F0aW9uIHdvcmtzcGFjZSBqdXN0IGRyYWdnaW5nIGl0cyBpY29uXG4tIFJpZ2h0L0xlZnQgY2xpY2sgdG8gZm9jdXMvbWluaW1pemUgYXBwbGljYXRpb24sIE1pZGRsZSBjbGljayB0byBjbG9zZVxuLSBXb3Jrc3BhY2VzIHNjcm9sbGluZzogY2hhbmdlIGFjdGl2ZSB3b3Jrc3BhY2Ugc2Nyb2xsaW5nIGhvdmVyIHRoZSBpbmRpY2F0b3Jcbi0gU3VwcG9ydCBmb3IgbXVsdGlwbGUgbW9uaXRvciAoZm9yIGJvdGggc3RhdGljIGFuZCBkeW5hbWljIHdvcmtzcGFjZXMpXG4tIFJlbmFtZSB3b3Jrc3BhY2VzIGRpcmVjdGx5IGZyb20gdGhlIGV4dGVuc2lvbiAoYWN0aXZhdGUgaW4gc2V0dGluZ3MpXG4tIEhpZGUvc2hvdyBHTk9NRSBkZWZhdWx0IHdvcmtzcGFjZSBpbmRpY2F0b3IgKGZvcm1lciBhY3Rpdml0aWVzIGJ1dHRvbilcblxuQ3VzdG9taXphdGlvbjpcblxuLSBJbmRpY2F0b3IgcG9zaXRpb25cbi0gTW91c2Ugc2Nyb2xsIGRpcmVjdGlvbiAobm9ybWFsIG9yIGludmVyc2UpXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ21pZGRsZSBjbGljayB0byBjbG9zZSBhcHAnXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ2NsaWNrIG9uIGFjdGl2ZSB3b3Jrc3BhY2UgdG8gb3ZlcnZpZXcnXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ2NsaWNrIG9uIGZvY3VzZWQgYXBwbGljYXRpb24gdG8gbWluaW1pemUnXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ3dvcmtzcGFjZSBpbmRpY2F0b3InXG4tIEFjdGl2YXRlL2RlYWN0aXZhdGUgJ2FwcCBpbmRpY2F0b3InXG4tIEN1c3RvbWl6ZSBpbmRpY2F0b3IgY29sb3Jcbi0gQWN0aXZhdGUvZGVhY3RpdmF0ZSAncm91bmQgYm9yZGVycydcbi0gU2hvdy9IaWRlIHdvcmtzcGFjZXMgbmFtZXNcbi0gU2hvdy9IaWRlIGVtcHR5IHdvcmtzcGFjZXNcbi0gQ3VzdG9taXplIGFwcHMgb24gYWxsIHdvcmtzcGFjZXMgdGV4dCBpbmRpY2F0b3Jcbi0gRGVzYXR1cmF0ZSBhbGwgaWNvbnNcbi0gTm8gZWZmZWN0L1JlZHVjZSBvcGFjaXR5L0Rlc2F0dXJhdGUgZm9yIGJvdGggbWluaW1pemVkIGFuZCBpbmFjdGl2ZSBhcHBzXG4tIExpbWl0IGljb25zIHBlciB3b3Jrc3BhY2Vcbi0gR3JvdXAgaWNvbnMgb2Ygc2FtZSBhcHBsaWNhdGlvblxuLSBJZ25vcmUgYXBwbGljYXRpb25zICh3aXRoIHJlZ2V4KSIsCiAgIm5hbWUiOiAiV29ya3NwYWNlcyBpbmRpY2F0b3IgYnkgb3BlbiBhcHBzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndvcmtzcGFjZXMtaW5kaWNhdG9yLWJ5LW9wZW4tYXBwcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRmF2bzAyL3dvcmtzcGFjZXMtYnktb3Blbi1hcHBzIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2VzLWJ5LW9wZW4tYXBwc0BmYXZvMDIuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"}
   }}
 , {"uuid": "fshyperlinks@nuclear.polygon", "name": "FS Hyperlinks", "pname": "fs-hyperlinks", "description": "Select a path to jump there (When Ctrl is down)\nAlt+J to open file or directory with default app (when its path is in clipboard)", "link": "https://extensions.gnome.org/extension/5970/fs-hyperlinks/", "shell_version_map": {
     "38": {"version": "5", "sha256": "0q6gsl75vivslv9yw8ik5pfapdz4ivvr9bmai2pjy2ls7cw9zf9k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlbGVjdCBhIHBhdGggdG8ganVtcCB0aGVyZSAoV2hlbiBDdHJsIGlzIGRvd24pXG5BbHQrSiB0byBvcGVuIGZpbGUgb3IgZGlyZWN0b3J5IHdpdGggZGVmYXVsdCBhcHAgKHdoZW4gaXRzIHBhdGggaXMgaW4gY2xpcGJvYXJkKSIsCiAgIm5hbWUiOiAiRlMgSHlwZXJsaW5rcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiMy4zOCIsCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbnVjbGVhcnBvbHlnb24vZnNfaHlwZXJsaW5rc19nbm9tZV9leHRlbnNpb24iLAogICJ1dWlkIjogImZzaHlwZXJsaW5rc0BudWNsZWFyLnBvbHlnb24iLAogICJ2ZXJzaW9uIjogNQp9"},
@@ -5879,20 +6104,24 @@
     "42": {"version": "95", "sha256": "0myj4g5351fi04w3iwpshjhy9a5vgq85nwd186ymlvnjby12d6fh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvb2wgdG8gU2hvdyBHaXRodWIgQWN0aW9ucyBzdGF0dXMgb24gR25vbWUgRGVza3RvcC5cblxuQ2hlY2sgb24gZ2l0aHViIGhvdyB0byBpbnN0YWxsLlxuaWYgeW91IGxpa2UgaXQgZ2l2ZSBtZSBhIHN0YXIgb24gZ2l0aHViICFcblxuQWZ0ZXIgdXBkYXRpbmcsIGlmIHlvdSBnZXQgYW4gZXJyb3IsIHBsZWFzZSByZWxvZ2luLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNaWNyb3NvZnQgYW5kIEdpdEh1Yi4iLAogICJuYW1lIjogIkdpdGh1YiBBY3Rpb25zIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJhcm9ub25ha0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmdpdGh1Yi1hY3Rpb25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcm9ub25hay9naXRodWItYWN0aW9ucy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImdpdGh1Yi1hY3Rpb25zQGFyb25vbmFrLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA5NQp9"},
     "43": {"version": "95", "sha256": "0myj4g5351fi04w3iwpshjhy9a5vgq85nwd186ymlvnjby12d6fh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvb2wgdG8gU2hvdyBHaXRodWIgQWN0aW9ucyBzdGF0dXMgb24gR25vbWUgRGVza3RvcC5cblxuQ2hlY2sgb24gZ2l0aHViIGhvdyB0byBpbnN0YWxsLlxuaWYgeW91IGxpa2UgaXQgZ2l2ZSBtZSBhIHN0YXIgb24gZ2l0aHViICFcblxuQWZ0ZXIgdXBkYXRpbmcsIGlmIHlvdSBnZXQgYW4gZXJyb3IsIHBsZWFzZSByZWxvZ2luLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNaWNyb3NvZnQgYW5kIEdpdEh1Yi4iLAogICJuYW1lIjogIkdpdGh1YiBBY3Rpb25zIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJhcm9ub25ha0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmdpdGh1Yi1hY3Rpb25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcm9ub25hay9naXRodWItYWN0aW9ucy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImdpdGh1Yi1hY3Rpb25zQGFyb25vbmFrLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA5NQp9"},
     "44": {"version": "95", "sha256": "0myj4g5351fi04w3iwpshjhy9a5vgq85nwd186ymlvnjby12d6fh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvb2wgdG8gU2hvdyBHaXRodWIgQWN0aW9ucyBzdGF0dXMgb24gR25vbWUgRGVza3RvcC5cblxuQ2hlY2sgb24gZ2l0aHViIGhvdyB0byBpbnN0YWxsLlxuaWYgeW91IGxpa2UgaXQgZ2l2ZSBtZSBhIHN0YXIgb24gZ2l0aHViICFcblxuQWZ0ZXIgdXBkYXRpbmcsIGlmIHlvdSBnZXQgYW4gZXJyb3IsIHBsZWFzZSByZWxvZ2luLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNaWNyb3NvZnQgYW5kIEdpdEh1Yi4iLAogICJuYW1lIjogIkdpdGh1YiBBY3Rpb25zIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJhcm9ub25ha0BnbWFpbC5jb20iCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmdpdGh1Yi1hY3Rpb25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcm9ub25hay9naXRodWItYWN0aW9ucy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImdpdGh1Yi1hY3Rpb25zQGFyb25vbmFrLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA5NQp9"},
-    "45": {"version": "125", "sha256": "0knil479fizsnafm6vmslh9mwm987y09s9jaxs1qcq2hhr391l3w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvb2wgdG8gU2hvdyBHaXRodWIgQWN0aW9ucyBzdGF0dXMgb24gR25vbWUgRGVza3RvcC5cblxuQ2hlY2sgb24gZ2l0aHViIGhvdyB0byBpbnN0YWxsLlxuaWYgeW91IGxpa2UgaXQgZ2l2ZSBtZSBhIHN0YXIgb24gZ2l0aHViICFcblxuQWZ0ZXIgdXBkYXRpbmcsIGlmIHlvdSBnZXQgYW4gZXJyb3IsIHBsZWFzZSByZWxvZ2luLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNaWNyb3NvZnQgYW5kIEdpdEh1Yi5cblxuVmVyc2lvbnMgYmVsb3cgZ25vbWUgNDUgd2lsbCBubyBsb25nZXIgYmUgc3VwcG9ydGVkIDovIiwKICAibmFtZSI6ICJHaXRodWIgQWN0aW9ucyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiYXJvbm9uYWtAZ21haWwuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5naXRodWItYWN0aW9ucyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcm9ub25hay9naXRodWItYWN0aW9ucy1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogImdpdGh1Yi1hY3Rpb25zQGFyb25vbmFrLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxMjUKfQ=="}
+    "45": {"version": "132", "sha256": "1q3xan9sr06ymkp2ywwwfk4xkhz2gqvylqxc5njch89n4gjwg5kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvb2wgdG8gU2hvdyBHaXRodWIgQWN0aW9ucyBzdGF0dXMgb24gR25vbWUgRGVza3RvcC5cblxuQ2hlY2sgb24gZ2l0aHViIGhvdyB0byBpbnN0YWxsLlxuaWYgeW91IGxpa2UgaXQgZ2l2ZSBtZSBhIHN0YXIgb24gZ2l0aHViICFcblxuQWZ0ZXIgdXBkYXRpbmcsIGlmIHlvdSBnZXQgYW4gZXJyb3IsIHBsZWFzZSByZWxvZ2luLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNaWNyb3NvZnQgYW5kIEdpdEh1Yi5cblxuVmVyc2lvbnMgYmVsb3cgZ25vbWUgNDUgd2lsbCBubyBsb25nZXIgYmUgc3VwcG9ydGVkIDovIiwKICAibmFtZSI6ICJHaXRodWIgQWN0aW9ucyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiYXJvbm9uYWtAZ21haWwuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5naXRodWItYWN0aW9ucyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJvbm9uYWsvZ2l0aHViLWFjdGlvbnMtZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJnaXRodWItYWN0aW9uc0Bhcm9ub25hay5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMyCn0="},
+    "46": {"version": "132", "sha256": "1q3xan9sr06ymkp2ywwwfk4xkhz2gqvylqxc5njch89n4gjwg5kf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvb2wgdG8gU2hvdyBHaXRodWIgQWN0aW9ucyBzdGF0dXMgb24gR25vbWUgRGVza3RvcC5cblxuQ2hlY2sgb24gZ2l0aHViIGhvdyB0byBpbnN0YWxsLlxuaWYgeW91IGxpa2UgaXQgZ2l2ZSBtZSBhIHN0YXIgb24gZ2l0aHViICFcblxuQWZ0ZXIgdXBkYXRpbmcsIGlmIHlvdSBnZXQgYW4gZXJyb3IsIHBsZWFzZSByZWxvZ2luLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNaWNyb3NvZnQgYW5kIEdpdEh1Yi5cblxuVmVyc2lvbnMgYmVsb3cgZ25vbWUgNDUgd2lsbCBubyBsb25nZXIgYmUgc3VwcG9ydGVkIDovIiwKICAibmFtZSI6ICJHaXRodWIgQWN0aW9ucyIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiBbCiAgICAiYXJvbm9uYWtAZ21haWwuY29tIgogIF0sCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5naXRodWItYWN0aW9ucyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJvbm9uYWsvZ2l0aHViLWFjdGlvbnMtZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJnaXRodWItYWN0aW9uc0Bhcm9ub25hay5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMyCn0="}
   }}
 , {"uuid": "dim-completed-calendar-events@marcinjahn.com", "name": "Dim Completed Calendar Events", "pname": "dim-completed-calendar-events", "description": "Dim completed events in the top panel menu to easily distinguish between upcoming and past events. You can also highlight events that are ongoing.", "link": "https://extensions.gnome.org/extension/5979/dim-completed-calendar-events/", "shell_version_map": {
     "44": {"version": "3", "sha256": "0dpyrhdc70f77wv8hx7d6xnpxx13c2qfp7dbx716mqq90raij39f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpbSBjb21wbGV0ZWQgZXZlbnRzIGluIHRoZSB0b3AgcGFuZWwgbWVudSB0byBlYXNpbHkgZGlzdGluZ3Vpc2ggYmV0d2VlbiB1cGNvbWluZyBhbmQgcGFzdCBldmVudHMuIFlvdSBjYW4gYWxzbyBoaWdobGlnaHQgZXZlbnRzIHRoYXQgYXJlIG9uZ29pbmcuIiwKICAibmFtZSI6ICJEaW0gQ29tcGxldGVkIENhbGVuZGFyIEV2ZW50cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjaW5qYWhuL2dub21lLWRpbS1jb21wbGV0ZWQtY2FsZW5kYXItZXZlbnRzLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZGltLWNvbXBsZXRlZC1jYWxlbmRhci1ldmVudHNAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogMwp9"},
-    "45": {"version": "4", "sha256": "0lrqbzbrw99r758armm7gikja4jzi6wfqzsnan01lj15qbzgf64h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpbSBjb21wbGV0ZWQgZXZlbnRzIGluIHRoZSB0b3AgcGFuZWwgbWVudSB0byBlYXNpbHkgZGlzdGluZ3Vpc2ggYmV0d2VlbiB1cGNvbWluZyBhbmQgcGFzdCBldmVudHMuIFlvdSBjYW4gYWxzbyBoaWdobGlnaHQgZXZlbnRzIHRoYXQgYXJlIG9uZ29pbmcuIiwKICAibmFtZSI6ICJEaW0gQ29tcGxldGVkIENhbGVuZGFyIEV2ZW50cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjaW5qYWhuL2dub21lLWRpbS1jb21wbGV0ZWQtY2FsZW5kYXItZXZlbnRzLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZGltLWNvbXBsZXRlZC1jYWxlbmRhci1ldmVudHNAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogNAp9"}
+    "45": {"version": "4", "sha256": "0lrqbzbrw99r758armm7gikja4jzi6wfqzsnan01lj15qbzgf64h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpbSBjb21wbGV0ZWQgZXZlbnRzIGluIHRoZSB0b3AgcGFuZWwgbWVudSB0byBlYXNpbHkgZGlzdGluZ3Vpc2ggYmV0d2VlbiB1cGNvbWluZyBhbmQgcGFzdCBldmVudHMuIFlvdSBjYW4gYWxzbyBoaWdobGlnaHQgZXZlbnRzIHRoYXQgYXJlIG9uZ29pbmcuIiwKICAibmFtZSI6ICJEaW0gQ29tcGxldGVkIENhbGVuZGFyIEV2ZW50cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjaW5qYWhuL2dub21lLWRpbS1jb21wbGV0ZWQtY2FsZW5kYXItZXZlbnRzLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZGltLWNvbXBsZXRlZC1jYWxlbmRhci1ldmVudHNAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogNAp9"},
+    "46": {"version": "5", "sha256": "0rdp7fx18my7rdxgq35v285kzzhzrc30dyfd05i6nq3nzjpz7a08", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpbSBjb21wbGV0ZWQgZXZlbnRzIGluIHRoZSB0b3AgcGFuZWwgbWVudSB0byBlYXNpbHkgZGlzdGluZ3Vpc2ggYmV0d2VlbiB1cGNvbWluZyBhbmQgcGFzdCBldmVudHMuIFlvdSBjYW4gYWxzbyBoaWdobGlnaHQgZXZlbnRzIHRoYXQgYXJlIG9uZ29pbmcuIiwKICAibmFtZSI6ICJEaW0gQ29tcGxldGVkIENhbGVuZGFyIEV2ZW50cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjaW5qYWhuL2dub21lLWRpbS1jb21wbGV0ZWQtY2FsZW5kYXItZXZlbnRzLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiZGltLWNvbXBsZXRlZC1jYWxlbmRhci1ldmVudHNAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"}
   }}
 , {"uuid": "cloudflare-warp-toggle@khaled.is-a.dev", "name": "Cloudflare Warp Toggle", "pname": "cloudflare-warp-toggle", "description": "Toggle cloudflare warp in quick settings.\nThis extension depends on warp-cli parsing. To quickly get started, Read the Docs: https://github.com/khaled-0/gnome-cloudflare-warp-toggle#readme  \n\nThis extension is not affiliated, funded, or in any way associated with Cloudflare.\nTo Setup warp-cli, follow the official guide: https://developers.cloudflare.com/warp-client/get-started/linux/", "link": "https://extensions.gnome.org/extension/5982/cloudflare-warp-toggle/", "shell_version_map": {
     "43": {"version": "11", "sha256": "0mb6rxl2qq4lajj02kkl8rjl6zwa2bx9iq5lp09iwypavxc192ng", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBjbG91ZGZsYXJlIHdhcnAgaW4gcXVpY2sgc2V0dGluZ3MuXG5UaGlzIGV4dGVuc2lvbiBkZXBlbmRzIG9uIHdhcnAtY2xpIHBhcnNpbmcuIFRvIHF1aWNrbHkgZ2V0IHN0YXJ0ZWQsIFJlYWQgdGhlIERvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9raGFsZWQtMC9nbm9tZS1jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlI3JlYWRtZSAgXG5cblRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIENsb3VkZmxhcmUuXG5UbyBTZXR1cCB3YXJwLWNsaSwgZm9sbG93IHRoZSBvZmZpY2lhbCBndWlkZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dhcnAtY2xpZW50L2dldC1zdGFydGVkL2xpbnV4LyIsCiAgIm5hbWUiOiAiQ2xvdWRmbGFyZSBXYXJwIFRvZ2dsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlLmdzY2hlbWEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2toYWxlZC0wL2dub21lLWNsb3VkZmxhcmUtd2FycC10b2dnbGUiLAogICJ1dWlkIjogImNsb3VkZmxhcmUtd2FycC10b2dnbGVAa2hhbGVkLmlzLWEuZGV2IiwKICAidmVyc2lvbiI6IDExCn0="},
     "44": {"version": "11", "sha256": "0mb6rxl2qq4lajj02kkl8rjl6zwa2bx9iq5lp09iwypavxc192ng", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBjbG91ZGZsYXJlIHdhcnAgaW4gcXVpY2sgc2V0dGluZ3MuXG5UaGlzIGV4dGVuc2lvbiBkZXBlbmRzIG9uIHdhcnAtY2xpIHBhcnNpbmcuIFRvIHF1aWNrbHkgZ2V0IHN0YXJ0ZWQsIFJlYWQgdGhlIERvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9raGFsZWQtMC9nbm9tZS1jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlI3JlYWRtZSAgXG5cblRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIENsb3VkZmxhcmUuXG5UbyBTZXR1cCB3YXJwLWNsaSwgZm9sbG93IHRoZSBvZmZpY2lhbCBndWlkZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dhcnAtY2xpZW50L2dldC1zdGFydGVkL2xpbnV4LyIsCiAgIm5hbWUiOiAiQ2xvdWRmbGFyZSBXYXJwIFRvZ2dsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlLmdzY2hlbWEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2toYWxlZC0wL2dub21lLWNsb3VkZmxhcmUtd2FycC10b2dnbGUiLAogICJ1dWlkIjogImNsb3VkZmxhcmUtd2FycC10b2dnbGVAa2hhbGVkLmlzLWEuZGV2IiwKICAidmVyc2lvbiI6IDExCn0="},
-    "45": {"version": "12", "sha256": "0wwxyq7n3l9d44qlg3yrfhqdz7c6kzyscvvy110hcscizhrqwqd2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBjbG91ZGZsYXJlIHdhcnAgaW4gcXVpY2sgc2V0dGluZ3MuXG5UaGlzIGV4dGVuc2lvbiBkZXBlbmRzIG9uIHdhcnAtY2xpIHBhcnNpbmcuIFRvIHF1aWNrbHkgZ2V0IHN0YXJ0ZWQsIFJlYWQgdGhlIERvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9raGFsZWQtMC9nbm9tZS1jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlI3JlYWRtZSAgXG5cblRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIENsb3VkZmxhcmUuXG5UbyBTZXR1cCB3YXJwLWNsaSwgZm9sbG93IHRoZSBvZmZpY2lhbCBndWlkZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dhcnAtY2xpZW50L2dldC1zdGFydGVkL2xpbnV4LyIsCiAgIm5hbWUiOiAiQ2xvdWRmbGFyZSBXYXJwIFRvZ2dsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlLmdzY2hlbWEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20va2hhbGVkLTAvZ25vbWUtY2xvdWRmbGFyZS13YXJwLXRvZ2dsZSIsCiAgInV1aWQiOiAiY2xvdWRmbGFyZS13YXJwLXRvZ2dsZUBraGFsZWQuaXMtYS5kZXYiLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
+    "45": {"version": "13", "sha256": "18s2gag3h9dsh93464n35dh746w2865417yca7pxqhcawasvswsa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBjbG91ZGZsYXJlIHdhcnAgaW4gcXVpY2sgc2V0dGluZ3MuXG5UaGlzIGV4dGVuc2lvbiBkZXBlbmRzIG9uIHdhcnAtY2xpIHBhcnNpbmcuIFRvIHF1aWNrbHkgZ2V0IHN0YXJ0ZWQsIFJlYWQgdGhlIERvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9raGFsZWQtMC9nbm9tZS1jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlI3JlYWRtZSAgXG5cblRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIENsb3VkZmxhcmUuXG5UbyBTZXR1cCB3YXJwLWNsaSwgZm9sbG93IHRoZSBvZmZpY2lhbCBndWlkZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dhcnAtY2xpZW50L2dldC1zdGFydGVkL2xpbnV4LyIsCiAgIm5hbWUiOiAiQ2xvdWRmbGFyZSBXYXJwIFRvZ2dsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlLmdzY2hlbWEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2toYWxlZC0wL2dub21lLWNsb3VkZmxhcmUtd2FycC10b2dnbGUiLAogICJ1dWlkIjogImNsb3VkZmxhcmUtd2FycC10b2dnbGVAa2hhbGVkLmlzLWEuZGV2IiwKICAidmVyc2lvbiI6IDEzCn0="},
+    "46": {"version": "13", "sha256": "18s2gag3h9dsh93464n35dh746w2865417yca7pxqhcawasvswsa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBjbG91ZGZsYXJlIHdhcnAgaW4gcXVpY2sgc2V0dGluZ3MuXG5UaGlzIGV4dGVuc2lvbiBkZXBlbmRzIG9uIHdhcnAtY2xpIHBhcnNpbmcuIFRvIHF1aWNrbHkgZ2V0IHN0YXJ0ZWQsIFJlYWQgdGhlIERvY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9raGFsZWQtMC9nbm9tZS1jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlI3JlYWRtZSAgXG5cblRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIENsb3VkZmxhcmUuXG5UbyBTZXR1cCB3YXJwLWNsaSwgZm9sbG93IHRoZSBvZmZpY2lhbCBndWlkZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmNsb3VkZmxhcmUuY29tL3dhcnAtY2xpZW50L2dldC1zdGFydGVkL2xpbnV4LyIsCiAgIm5hbWUiOiAiQ2xvdWRmbGFyZSBXYXJwIFRvZ2dsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jbG91ZGZsYXJlLXdhcnAtdG9nZ2xlLmdzY2hlbWEiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2toYWxlZC0wL2dub21lLWNsb3VkZmxhcmUtd2FycC10b2dnbGUiLAogICJ1dWlkIjogImNsb3VkZmxhcmUtd2FycC10b2dnbGVAa2hhbGVkLmlzLWEuZGV2IiwKICAidmVyc2lvbiI6IDEzCn0="}
   }}
 , {"uuid": "do-not-disturb-while-screen-sharing-or-recording@marcinjahn.com", "name": "Do Not Disturb While Screen Sharing Or Recording", "pname": "do-not-disturb-while-screen-sharing-or-recording", "description": "Automatically switches on the \"Do Not Disturb\" mode while screen sharing or screen recording. As soon as screen sharing/recording is over, \"Do Not Disturb\" mode will be switched back off.\nDo Not Disturb mode stops notifications from appearing on your screen to let you focus on your work. Notifications may contain sensitive content that you might not want to show to everyone while you're screen-sharing.\nNote that screen sharing will toogle \"Do Not Disturb\" only on Wayland sessions. X11 is not supported! However, screen recording toggle will work on both Wayland and X11.\nIt is likely that not all screen recording apps will trigger the extension to do its job. The extension was tested with the Gnome built-in screen recorder.", "link": "https://extensions.gnome.org/extension/5985/do-not-disturb-while-screen-sharing-or-recording/", "shell_version_map": {
     "44": {"version": "1", "sha256": "1yinlydss8zk4sk018q1jj19v9smvqg1p564p9r6m3lcf7z714bd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoZXMgb24gdGhlIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdoaWxlIHNjcmVlbiBzaGFyaW5nIG9yIHNjcmVlbiByZWNvcmRpbmcuIEFzIHNvb24gYXMgc2NyZWVuIHNoYXJpbmcvcmVjb3JkaW5nIGlzIG92ZXIsIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdpbGwgYmUgc3dpdGNoZWQgYmFjayBvZmYuXG5EbyBOb3QgRGlzdHVyYiBtb2RlIHN0b3BzIG5vdGlmaWNhdGlvbnMgZnJvbSBhcHBlYXJpbmcgb24geW91ciBzY3JlZW4gdG8gbGV0IHlvdSBmb2N1cyBvbiB5b3VyIHdvcmsuIE5vdGlmaWNhdGlvbnMgbWF5IGNvbnRhaW4gc2Vuc2l0aXZlIGNvbnRlbnQgdGhhdCB5b3UgbWlnaHQgbm90IHdhbnQgdG8gc2hvdyB0byBldmVyeW9uZSB3aGlsZSB5b3UncmUgc2NyZWVuLXNoYXJpbmcuXG5Ob3RlIHRoYXQgc2NyZWVuIHNoYXJpbmcgd2lsbCB0b29nbGUgXCJEbyBOb3QgRGlzdHVyYlwiIG9ubHkgb24gV2F5bGFuZCBzZXNzaW9ucy4gWDExIGlzIG5vdCBzdXBwb3J0ZWQhIEhvd2V2ZXIsIHNjcmVlbiByZWNvcmRpbmcgdG9nZ2xlIHdpbGwgd29yayBvbiBib3RoIFdheWxhbmQgYW5kIFgxMS5cbkl0IGlzIGxpa2VseSB0aGF0IG5vdCBhbGwgc2NyZWVuIHJlY29yZGluZyBhcHBzIHdpbGwgdHJpZ2dlciB0aGUgZXh0ZW5zaW9uIHRvIGRvIGl0cyBqb2IuIFRoZSBleHRlbnNpb24gd2FzIHRlc3RlZCB3aXRoIHRoZSBHbm9tZSBidWlsdC1pbiBzY3JlZW4gcmVjb3JkZXIuIiwKICAibmFtZSI6ICJEbyBOb3QgRGlzdHVyYiBXaGlsZSBTY3JlZW4gU2hhcmluZyBPciBSZWNvcmRpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1kby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmctZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJkby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmdAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogMQp9"},
-    "45": {"version": "2", "sha256": "119cfrskbycr0gm1yabj574dmhldcxgpw8g6vyxcvx9sxxqshf74", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoZXMgb24gdGhlIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdoaWxlIHNjcmVlbiBzaGFyaW5nIG9yIHNjcmVlbiByZWNvcmRpbmcuIEFzIHNvb24gYXMgc2NyZWVuIHNoYXJpbmcvcmVjb3JkaW5nIGlzIG92ZXIsIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdpbGwgYmUgc3dpdGNoZWQgYmFjayBvZmYuXG5EbyBOb3QgRGlzdHVyYiBtb2RlIHN0b3BzIG5vdGlmaWNhdGlvbnMgZnJvbSBhcHBlYXJpbmcgb24geW91ciBzY3JlZW4gdG8gbGV0IHlvdSBmb2N1cyBvbiB5b3VyIHdvcmsuIE5vdGlmaWNhdGlvbnMgbWF5IGNvbnRhaW4gc2Vuc2l0aXZlIGNvbnRlbnQgdGhhdCB5b3UgbWlnaHQgbm90IHdhbnQgdG8gc2hvdyB0byBldmVyeW9uZSB3aGlsZSB5b3UncmUgc2NyZWVuLXNoYXJpbmcuXG5Ob3RlIHRoYXQgc2NyZWVuIHNoYXJpbmcgd2lsbCB0b29nbGUgXCJEbyBOb3QgRGlzdHVyYlwiIG9ubHkgb24gV2F5bGFuZCBzZXNzaW9ucy4gWDExIGlzIG5vdCBzdXBwb3J0ZWQhIEhvd2V2ZXIsIHNjcmVlbiByZWNvcmRpbmcgdG9nZ2xlIHdpbGwgd29yayBvbiBib3RoIFdheWxhbmQgYW5kIFgxMS5cbkl0IGlzIGxpa2VseSB0aGF0IG5vdCBhbGwgc2NyZWVuIHJlY29yZGluZyBhcHBzIHdpbGwgdHJpZ2dlciB0aGUgZXh0ZW5zaW9uIHRvIGRvIGl0cyBqb2IuIFRoZSBleHRlbnNpb24gd2FzIHRlc3RlZCB3aXRoIHRoZSBHbm9tZSBidWlsdC1pbiBzY3JlZW4gcmVjb3JkZXIuIiwKICAibmFtZSI6ICJEbyBOb3QgRGlzdHVyYiBXaGlsZSBTY3JlZW4gU2hhcmluZyBPciBSZWNvcmRpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1kby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmctZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJkby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmdAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogMgp9"}
+    "45": {"version": "2", "sha256": "119cfrskbycr0gm1yabj574dmhldcxgpw8g6vyxcvx9sxxqshf74", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoZXMgb24gdGhlIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdoaWxlIHNjcmVlbiBzaGFyaW5nIG9yIHNjcmVlbiByZWNvcmRpbmcuIEFzIHNvb24gYXMgc2NyZWVuIHNoYXJpbmcvcmVjb3JkaW5nIGlzIG92ZXIsIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdpbGwgYmUgc3dpdGNoZWQgYmFjayBvZmYuXG5EbyBOb3QgRGlzdHVyYiBtb2RlIHN0b3BzIG5vdGlmaWNhdGlvbnMgZnJvbSBhcHBlYXJpbmcgb24geW91ciBzY3JlZW4gdG8gbGV0IHlvdSBmb2N1cyBvbiB5b3VyIHdvcmsuIE5vdGlmaWNhdGlvbnMgbWF5IGNvbnRhaW4gc2Vuc2l0aXZlIGNvbnRlbnQgdGhhdCB5b3UgbWlnaHQgbm90IHdhbnQgdG8gc2hvdyB0byBldmVyeW9uZSB3aGlsZSB5b3UncmUgc2NyZWVuLXNoYXJpbmcuXG5Ob3RlIHRoYXQgc2NyZWVuIHNoYXJpbmcgd2lsbCB0b29nbGUgXCJEbyBOb3QgRGlzdHVyYlwiIG9ubHkgb24gV2F5bGFuZCBzZXNzaW9ucy4gWDExIGlzIG5vdCBzdXBwb3J0ZWQhIEhvd2V2ZXIsIHNjcmVlbiByZWNvcmRpbmcgdG9nZ2xlIHdpbGwgd29yayBvbiBib3RoIFdheWxhbmQgYW5kIFgxMS5cbkl0IGlzIGxpa2VseSB0aGF0IG5vdCBhbGwgc2NyZWVuIHJlY29yZGluZyBhcHBzIHdpbGwgdHJpZ2dlciB0aGUgZXh0ZW5zaW9uIHRvIGRvIGl0cyBqb2IuIFRoZSBleHRlbnNpb24gd2FzIHRlc3RlZCB3aXRoIHRoZSBHbm9tZSBidWlsdC1pbiBzY3JlZW4gcmVjb3JkZXIuIiwKICAibmFtZSI6ICJEbyBOb3QgRGlzdHVyYiBXaGlsZSBTY3JlZW4gU2hhcmluZyBPciBSZWNvcmRpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1kby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmctZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJkby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmdAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogMgp9"},
+    "46": {"version": "3", "sha256": "0n3qndni29pm2r957w9a6dxknwbjkhq0ria1srfhpcsvrjcyxvrv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoZXMgb24gdGhlIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdoaWxlIHNjcmVlbiBzaGFyaW5nIG9yIHNjcmVlbiByZWNvcmRpbmcuIEFzIHNvb24gYXMgc2NyZWVuIHNoYXJpbmcvcmVjb3JkaW5nIGlzIG92ZXIsIFwiRG8gTm90IERpc3R1cmJcIiBtb2RlIHdpbGwgYmUgc3dpdGNoZWQgYmFjayBvZmYuXG5EbyBOb3QgRGlzdHVyYiBtb2RlIHN0b3BzIG5vdGlmaWNhdGlvbnMgZnJvbSBhcHBlYXJpbmcgb24geW91ciBzY3JlZW4gdG8gbGV0IHlvdSBmb2N1cyBvbiB5b3VyIHdvcmsuIE5vdGlmaWNhdGlvbnMgbWF5IGNvbnRhaW4gc2Vuc2l0aXZlIGNvbnRlbnQgdGhhdCB5b3UgbWlnaHQgbm90IHdhbnQgdG8gc2hvdyB0byBldmVyeW9uZSB3aGlsZSB5b3UncmUgc2NyZWVuLXNoYXJpbmcuXG5Ob3RlIHRoYXQgc2NyZWVuIHNoYXJpbmcgd2lsbCB0b29nbGUgXCJEbyBOb3QgRGlzdHVyYlwiIG9ubHkgb24gV2F5bGFuZCBzZXNzaW9ucy4gWDExIGlzIG5vdCBzdXBwb3J0ZWQhIEhvd2V2ZXIsIHNjcmVlbiByZWNvcmRpbmcgdG9nZ2xlIHdpbGwgd29yayBvbiBib3RoIFdheWxhbmQgYW5kIFgxMS5cbkl0IGlzIGxpa2VseSB0aGF0IG5vdCBhbGwgc2NyZWVuIHJlY29yZGluZyBhcHBzIHdpbGwgdHJpZ2dlciB0aGUgZXh0ZW5zaW9uIHRvIGRvIGl0cyBqb2IuIFRoZSBleHRlbnNpb24gd2FzIHRlc3RlZCB3aXRoIHRoZSBHbm9tZSBidWlsdC1pbiBzY3JlZW4gcmVjb3JkZXIuIiwKICAibmFtZSI6ICJEbyBOb3QgRGlzdHVyYiBXaGlsZSBTY3JlZW4gU2hhcmluZyBPciBSZWNvcmRpbmciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1kby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmctZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJkby1ub3QtZGlzdHVyYi13aGlsZS1zY3JlZW4tc2hhcmluZy1vci1yZWNvcmRpbmdAbWFyY2luamFobi5jb20iLAogICJ2ZXJzaW9uIjogMwp9"}
   }}
 , {"uuid": "magfix@andrej.gricenko", "name": "Magfix", "pname": "magfix", "description": "Magnifier cursor shift fix.", "link": "https://extensions.gnome.org/extension/5988/magfix/", "shell_version_map": {
     "38": {"version": "3", "sha256": "1s9ril86dbbf296zi2ayflvzgvvz6r8xgj6j2k0wfmi4v2g09607", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ25pZmllciBjdXJzb3Igc2hpZnQgZml4LiIsCiAgIm5hbWUiOiAiTWFnZml4IiwKICAib3JpZ2luYWwtYXV0aG9ycyI6IFsKICAgICJhbmRyZWouZ3JpY2Vua29AZ21haWwuY29tIgogIF0sCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjMuMzguNiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FuZHJlamdyaWNlbmtvL21hZ2ZpeCIsCiAgInV1aWQiOiAibWFnZml4QGFuZHJlai5ncmljZW5rbyIsCiAgInZlcnNpb24iOiAzCn0="},
@@ -5913,7 +6142,8 @@
   }}
 , {"uuid": "quicksettings-audio-devices-renamer@marcinjahn.com", "name": "Quick Settings Audio Devices Renamer", "pname": "quick-settings-audio-devices-renamer", "description": "It lets you change the names of your audio devices in the Quick Settings Audio Panel. This works for both speakers and microphones. It's useful when you need to switch quickly between different audio devices and their default names aren't very clear or they're a bit too explicit. This extension makes it easy to customize devices names so that, e.g. \"Speaker - Family 17h/19h HD Audio Controller\" could become just \"Laptop Speakers\". Emojis are supported as well!\n\nCheck out the https://extensions.gnome.org/extension/5964/quick-settings-audio-devices-hider/ if some device should rather be hidden than renamed", "link": "https://extensions.gnome.org/extension/6000/quick-settings-audio-devices-renamer/", "shell_version_map": {
     "44": {"version": "2", "sha256": "1gnlzgxm67iyc41vqs2scc991b3df57b9z2mfg914c5d83a2nl94", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0IGxldHMgeW91IGNoYW5nZSB0aGUgbmFtZXMgb2YgeW91ciBhdWRpbyBkZXZpY2VzIGluIHRoZSBRdWljayBTZXR0aW5ncyBBdWRpbyBQYW5lbC4gVGhpcyB3b3JrcyBmb3IgYm90aCBzcGVha2VycyBhbmQgbWljcm9waG9uZXMuIEl0J3MgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gc3dpdGNoIHF1aWNrbHkgYmV0d2VlbiBkaWZmZXJlbnQgYXVkaW8gZGV2aWNlcyBhbmQgdGhlaXIgZGVmYXVsdCBuYW1lcyBhcmVuJ3QgdmVyeSBjbGVhciBvciB0aGV5J3JlIGEgYml0IHRvbyBleHBsaWNpdC4gVGhpcyBleHRlbnNpb24gbWFrZXMgaXQgZWFzeSB0byBjdXN0b21pemUgZGV2aWNlcyBuYW1lcyBzbyB0aGF0LCBlLmcuIFwiU3BlYWtlciAtIEZhbWlseSAxN2gvMTloIEhEIEF1ZGlvIENvbnRyb2xsZXJcIiBjb3VsZCBiZWNvbWUganVzdCBcIkxhcHRvcCBTcGVha2Vyc1wiLiBFbW9qaXMgYXJlIHN1cHBvcnRlZCBhcyB3ZWxsIVxuXG5DaGVjayBvdXQgdGhlIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzU5NjQvcXVpY2stc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlci8gaWYgc29tZSBkZXZpY2Ugc2hvdWxkIHJhdGhlciBiZSBoaWRkZW4gdGhhbiByZW5hbWVkIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIFJlbmFtZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1xdWlja3NldHRpbmdzLWF1ZGlvLWRldmljZXMtcmVuYW1lci1leHRlbnNpb24iLAogICJ1dWlkIjogInF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1yZW5hbWVyQG1hcmNpbmphaG4uY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
-    "45": {"version": "3", "sha256": "1dwbkk655a4zsd13pniprpl660qmn3mgw3zw967qzg9pr6jfi0fk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0IGxldHMgeW91IGNoYW5nZSB0aGUgbmFtZXMgb2YgeW91ciBhdWRpbyBkZXZpY2VzIGluIHRoZSBRdWljayBTZXR0aW5ncyBBdWRpbyBQYW5lbC4gVGhpcyB3b3JrcyBmb3IgYm90aCBzcGVha2VycyBhbmQgbWljcm9waG9uZXMuIEl0J3MgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gc3dpdGNoIHF1aWNrbHkgYmV0d2VlbiBkaWZmZXJlbnQgYXVkaW8gZGV2aWNlcyBhbmQgdGhlaXIgZGVmYXVsdCBuYW1lcyBhcmVuJ3QgdmVyeSBjbGVhciBvciB0aGV5J3JlIGEgYml0IHRvbyBleHBsaWNpdC4gVGhpcyBleHRlbnNpb24gbWFrZXMgaXQgZWFzeSB0byBjdXN0b21pemUgZGV2aWNlcyBuYW1lcyBzbyB0aGF0LCBlLmcuIFwiU3BlYWtlciAtIEZhbWlseSAxN2gvMTloIEhEIEF1ZGlvIENvbnRyb2xsZXJcIiBjb3VsZCBiZWNvbWUganVzdCBcIkxhcHRvcCBTcGVha2Vyc1wiLiBFbW9qaXMgYXJlIHN1cHBvcnRlZCBhcyB3ZWxsIVxuXG5DaGVjayBvdXQgdGhlIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzU5NjQvcXVpY2stc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlci8gaWYgc29tZSBkZXZpY2Ugc2hvdWxkIHJhdGhlciBiZSBoaWRkZW4gdGhhbiByZW5hbWVkIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIFJlbmFtZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1xdWlja3NldHRpbmdzLWF1ZGlvLWRldmljZXMtcmVuYW1lci1leHRlbnNpb24iLAogICJ1dWlkIjogInF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1yZW5hbWVyQG1hcmNpbmphaG4uY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="}
+    "45": {"version": "3", "sha256": "1dwbkk655a4zsd13pniprpl660qmn3mgw3zw967qzg9pr6jfi0fk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0IGxldHMgeW91IGNoYW5nZSB0aGUgbmFtZXMgb2YgeW91ciBhdWRpbyBkZXZpY2VzIGluIHRoZSBRdWljayBTZXR0aW5ncyBBdWRpbyBQYW5lbC4gVGhpcyB3b3JrcyBmb3IgYm90aCBzcGVha2VycyBhbmQgbWljcm9waG9uZXMuIEl0J3MgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gc3dpdGNoIHF1aWNrbHkgYmV0d2VlbiBkaWZmZXJlbnQgYXVkaW8gZGV2aWNlcyBhbmQgdGhlaXIgZGVmYXVsdCBuYW1lcyBhcmVuJ3QgdmVyeSBjbGVhciBvciB0aGV5J3JlIGEgYml0IHRvbyBleHBsaWNpdC4gVGhpcyBleHRlbnNpb24gbWFrZXMgaXQgZWFzeSB0byBjdXN0b21pemUgZGV2aWNlcyBuYW1lcyBzbyB0aGF0LCBlLmcuIFwiU3BlYWtlciAtIEZhbWlseSAxN2gvMTloIEhEIEF1ZGlvIENvbnRyb2xsZXJcIiBjb3VsZCBiZWNvbWUganVzdCBcIkxhcHRvcCBTcGVha2Vyc1wiLiBFbW9qaXMgYXJlIHN1cHBvcnRlZCBhcyB3ZWxsIVxuXG5DaGVjayBvdXQgdGhlIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzU5NjQvcXVpY2stc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlci8gaWYgc29tZSBkZXZpY2Ugc2hvdWxkIHJhdGhlciBiZSBoaWRkZW4gdGhhbiByZW5hbWVkIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIFJlbmFtZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1xdWlja3NldHRpbmdzLWF1ZGlvLWRldmljZXMtcmVuYW1lci1leHRlbnNpb24iLAogICJ1dWlkIjogInF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1yZW5hbWVyQG1hcmNpbmphaG4uY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
+    "46": {"version": "4", "sha256": "1zwbbf27x2b25gizp7gp01x37xz5crpjqd8y4qzxq4rp5q6qlj0c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0IGxldHMgeW91IGNoYW5nZSB0aGUgbmFtZXMgb2YgeW91ciBhdWRpbyBkZXZpY2VzIGluIHRoZSBRdWljayBTZXR0aW5ncyBBdWRpbyBQYW5lbC4gVGhpcyB3b3JrcyBmb3IgYm90aCBzcGVha2VycyBhbmQgbWljcm9waG9uZXMuIEl0J3MgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gc3dpdGNoIHF1aWNrbHkgYmV0d2VlbiBkaWZmZXJlbnQgYXVkaW8gZGV2aWNlcyBhbmQgdGhlaXIgZGVmYXVsdCBuYW1lcyBhcmVuJ3QgdmVyeSBjbGVhciBvciB0aGV5J3JlIGEgYml0IHRvbyBleHBsaWNpdC4gVGhpcyBleHRlbnNpb24gbWFrZXMgaXQgZWFzeSB0byBjdXN0b21pemUgZGV2aWNlcyBuYW1lcyBzbyB0aGF0LCBlLmcuIFwiU3BlYWtlciAtIEZhbWlseSAxN2gvMTloIEhEIEF1ZGlvIENvbnRyb2xsZXJcIiBjb3VsZCBiZWNvbWUganVzdCBcIkxhcHRvcCBTcGVha2Vyc1wiLiBFbW9qaXMgYXJlIHN1cHBvcnRlZCBhcyB3ZWxsIVxuXG5DaGVjayBvdXQgdGhlIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzU5NjQvcXVpY2stc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1oaWRlci8gaWYgc29tZSBkZXZpY2Ugc2hvdWxkIHJhdGhlciBiZSBoaWRkZW4gdGhhbiByZW5hbWVkIiwKICAibmFtZSI6ICJRdWljayBTZXR0aW5ncyBBdWRpbyBEZXZpY2VzIFJlbmFtZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFyY2luamFobi9nbm9tZS1xdWlja3NldHRpbmdzLWF1ZGlvLWRldmljZXMtcmVuYW1lci1leHRlbnNpb24iLAogICJ1dWlkIjogInF1aWNrc2V0dGluZ3MtYXVkaW8tZGV2aWNlcy1yZW5hbWVyQG1hcmNpbmphaG4uY29tIiwKICAidmVyc2lvbiI6IDQKfQ=="}
   }}
 , {"uuid": "cronomix@zagortenay333", "name": "Cronomix", "pname": "cronomix", "description": "All-in-one timer, stopwatch, pomodoro, alarms and todos", "link": "https://extensions.gnome.org/extension/6003/cronomix/", "shell_version_map": {
     "42": {"version": "6", "sha256": "10izaph3dg2dcqrzk4ffw10fdv41gvrggidnb236zc89437pp91j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbC1pbi1vbmUgdGltZXIsIHN0b3B3YXRjaCwgcG9tb2Rvcm8sIGFsYXJtcyBhbmQgdG9kb3MiLAogICJuYW1lIjogIkNyb25vbWl4IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vemFnb3J0ZW5heTMzMy9jcm9ub21peCIsCiAgInV1aWQiOiAiY3Jvbm9taXhAemFnb3J0ZW5heTMzMyIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -5967,20 +6197,20 @@
     "44": {"version": "6", "sha256": "12ddv7zi5pa034rz15m9yy03npf2lnh7mkrsfxawzp7z90wdnr30", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgYnJvd3NlIHRoZSB3ZWIgdGhyb3VnaCBHbm9tZSBTaGVsbC4gU2ltcGxlIHR5cGUgdGhlIFN1cGVyIGtleSwgZW50ZXIgeW91ciBzZWFyY2ggYW5kIHNlbGVjdCAnV2ViIFNlYXJjaCcuIFlvdXIgc2VhcmNoIHdpbGwgYXBwZWFyIGluIHlvdXIgZGVmYXVsdCBicm93c2VyIGFuZCBzZWxlY3RlZCBzZWFyY2ggZW5naW5lLiBZb3UgY2FuIHNlbGVjdCB0aGUgc2VhcmNoIGVuZ2luZSB0byB1c2UgaW4gdGhlIGV4dGVuc2lvbiBzZXR0aW5ncy4gQnkgZGVmYXVsdCBEdWNrRHVja0dvLCBHb29nbGUgYW5kIFF3YW50IGFyZSBhdmFpbGFibGUuIERvbid0IGZpbmQgeW91ciBkZXNpcmVkIHNlYXJjaCBlbmdpbmU/IFNpbXBsZSBhZGQgaXQgdG8gc2VhcmNoLWVuZ2luZS5qc29uLiIsCiAgIm5hbWUiOiAiUXVpY2sgV2ViIFNlYXJjaCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5xdWlja3dlYnNlYXJjaCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vY2hldC1idWRkeS9xdWljay13ZWItc2VhcmNoIiwKICAidXVpZCI6ICJxdWlja0B3ZWIuc2VhcmNoIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "45": {"version": "9", "sha256": "0xy7xsnvk399wgj3qbb2rn7zfxcwqzb28cx0zldakjiph5a8w5l8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVzZSBTdXBlciBrZXkgZm9yIHF1aWNrIHdlYiBzZWFyY2giLAogICJuYW1lIjogIlF1aWNrIFdlYiBTZWFyY2giLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucXVpY2t3ZWJzZWFyY2giLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vY2hldC1idWRkeS9xdWljay13ZWItc2VhcmNoIiwKICAidXVpZCI6ICJxdWlja0B3ZWIuc2VhcmNoIiwKICAidmVyc2lvbiI6IDkKfQ=="}
   }}
-, {"uuid": "happy-appy-hotkey@jqno.nl", "name": "Happy Appy Hotkey", "pname": "happy-appy-hotkey", "description": "Assign hotkeys to applications to give them focus or launch them\n\nFeatures:\n- Assign a hotkey to an app to:\n-- Give it focus if it's already running, or\n-- Launch it if it's not.\n- Assign a hotkey to cycle through all the apps that don't have a hotkey\n- Supports Wayland", "link": "https://extensions.gnome.org/extension/6057/happy-appy-hotkey/", "shell_version_map": {
+, {"uuid": "happy-appy-hotkey@jqno.nl", "name": "Happy Appy Hotkey", "pname": "happy-appy-hotkey", "description": "Assign hotkeys to applications to give them focus or launch them\n\nFeatures:\n- Assign a hotkey to an app to:\n-- Give it focus if it's already running, or\n-- Launch it if it's not.\n- Assign a hotkey to cycle through all the apps that don't have a hotkey\n- Optionally restrict hotkeys to current workspace\n- Supports Wayland", "link": "https://extensions.gnome.org/extension/6057/happy-appy-hotkey/", "shell_version_map": {
     "44": {"version": "3", "sha256": "0fg9967jwsp24pphv1bdiz6fns2kslrg3dx4xq4q894aiwxzagrv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFzc2lnbiBob3RrZXlzIHRvIGFwcGxpY2F0aW9ucyB0byBnaXZlIHRoZW0gZm9jdXMgb3IgbGF1bmNoIHRoZW1cblxuRmVhdHVyZXM6XG4tIEFzc2lnbiBhIGhvdGtleSB0byBhbiBhcHAgdG86XG4tLSBHaXZlIGl0IGZvY3VzIGlmIGl0J3MgYWxyZWFkeSBydW5uaW5nLCBvclxuLS0gTGF1bmNoIGl0IGlmIGl0J3Mgbm90LlxuLSBBc3NpZ24gYSBob3RrZXkgdG8gY3ljbGUgdGhyb3VnaCBhbGwgdGhlIGFwcHMgdGhhdCBkb24ndCBoYXZlIGEgaG90a2V5XG4tIFN1cHBvcnRzIFdheWxhbmQiLAogICJuYW1lIjogIkhhcHB5IEFwcHkgSG90a2V5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2pxbm8vZ25vbWUtaGFwcHktYXBweS1ob3RrZXkvIiwKICAidXVpZCI6ICJoYXBweS1hcHB5LWhvdGtleUBqcW5vLm5sIiwKICAidmVyc2lvbiI6IDMKfQ=="},
-    "45": {"version": "6", "sha256": "0jnlyswviwg9bab8y8vss7rgyz499119yhzjinqq6qh1v7wc6b9r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFzc2lnbiBob3RrZXlzIHRvIGFwcGxpY2F0aW9ucyB0byBnaXZlIHRoZW0gZm9jdXMgb3IgbGF1bmNoIHRoZW1cblxuRmVhdHVyZXM6XG4tIEFzc2lnbiBhIGhvdGtleSB0byBhbiBhcHAgdG86XG4tLSBHaXZlIGl0IGZvY3VzIGlmIGl0J3MgYWxyZWFkeSBydW5uaW5nLCBvclxuLS0gTGF1bmNoIGl0IGlmIGl0J3Mgbm90LlxuLSBBc3NpZ24gYSBob3RrZXkgdG8gY3ljbGUgdGhyb3VnaCBhbGwgdGhlIGFwcHMgdGhhdCBkb24ndCBoYXZlIGEgaG90a2V5XG4tIFN1cHBvcnRzIFdheWxhbmQiLAogICJuYW1lIjogIkhhcHB5IEFwcHkgSG90a2V5IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2pxbm8vZ25vbWUtaGFwcHktYXBweS1ob3RrZXkvIiwKICAidXVpZCI6ICJoYXBweS1hcHB5LWhvdGtleUBqcW5vLm5sIiwKICAidmVyc2lvbiI6IDYKfQ=="}
+    "45": {"version": "7", "sha256": "06fsmszy4mg1x89w578mc5hsm9hnfgmyls0hl2nzp2fh1dqdpbmf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFzc2lnbiBob3RrZXlzIHRvIGFwcGxpY2F0aW9ucyB0byBnaXZlIHRoZW0gZm9jdXMgb3IgbGF1bmNoIHRoZW1cblxuRmVhdHVyZXM6XG4tIEFzc2lnbiBhIGhvdGtleSB0byBhbiBhcHAgdG86XG4tLSBHaXZlIGl0IGZvY3VzIGlmIGl0J3MgYWxyZWFkeSBydW5uaW5nLCBvclxuLS0gTGF1bmNoIGl0IGlmIGl0J3Mgbm90LlxuLSBBc3NpZ24gYSBob3RrZXkgdG8gY3ljbGUgdGhyb3VnaCBhbGwgdGhlIGFwcHMgdGhhdCBkb24ndCBoYXZlIGEgaG90a2V5XG4tIE9wdGlvbmFsbHkgcmVzdHJpY3QgaG90a2V5cyB0byBjdXJyZW50IHdvcmtzcGFjZVxuLSBTdXBwb3J0cyBXYXlsYW5kIiwKICAibmFtZSI6ICJIYXBweSBBcHB5IEhvdGtleSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qcW5vL2dub21lLWhhcHB5LWFwcHktaG90a2V5LyIsCiAgInV1aWQiOiAiaGFwcHktYXBweS1ob3RrZXlAanFuby5ubCIsCiAgInZlcnNpb24iOiA3Cn0="}
   }}
 , {"uuid": "window-switcher@tbepdb", "name": "WindowSwitcher", "pname": "windowswitcher", "description": "One windows circle with Alt+tab. Another one with Super+tab(in my case instant messangers).", "link": "https://extensions.gnome.org/extension/6060/windowswitcher/", "shell_version_map": {
     "42": {"version": "2", "sha256": "1lgs3mr9384az7ybjbxpxz4dndwypz98awyg1qz8k7sfl631w3n7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgbXVsdGlwbGUgd2luZG93IGJhc2VkIHN3aXRjaGVycy4iLAogICJleHRlbnNpb24taWQiOiAid2luZG93LXN3aXRjaGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiV2luZG93U3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGJlcGRiL3dpbmRvdy1zd2l0Y2hlciIsCiAgInV1aWQiOiAid2luZG93LXN3aXRjaGVyQHRiZXBkYiIsCiAgInZlcnNpb24iOiAyCn0="},
     "43": {"version": "2", "sha256": "1lgs3mr9384az7ybjbxpxz4dndwypz98awyg1qz8k7sfl631w3n7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgbXVsdGlwbGUgd2luZG93IGJhc2VkIHN3aXRjaGVycy4iLAogICJleHRlbnNpb24taWQiOiAid2luZG93LXN3aXRjaGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiV2luZG93U3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGJlcGRiL3dpbmRvdy1zd2l0Y2hlciIsCiAgInV1aWQiOiAid2luZG93LXN3aXRjaGVyQHRiZXBkYiIsCiAgInZlcnNpb24iOiAyCn0="},
     "44": {"version": "2", "sha256": "1lgs3mr9384az7ybjbxpxz4dndwypz98awyg1qz8k7sfl631w3n7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgbXVsdGlwbGUgd2luZG93IGJhc2VkIHN3aXRjaGVycy4iLAogICJleHRlbnNpb24taWQiOiAid2luZG93LXN3aXRjaGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiV2luZG93U3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdGJlcGRiL3dpbmRvdy1zd2l0Y2hlciIsCiAgInV1aWQiOiAid2luZG93LXN3aXRjaGVyQHRiZXBkYiIsCiAgInZlcnNpb24iOiAyCn0="},
-    "45": {"version": "7", "sha256": "1w779n3da56wdigwg29ww0zryldmiaxldvwjy0bl8h7pn42c9yxn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGUgbXVsdGlwbGUgd2luZG93IGJhc2VkIHN3aXRjaGVycy4iLAogICJleHRlbnNpb24taWQiOiAid2luZG93LXN3aXRjaGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiV2luZG93U3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RiZXBkYi93aW5kb3ctc3dpdGNoZXIiLAogICJ1dWlkIjogIndpbmRvdy1zd2l0Y2hlckB0YmVwZGIiLAogICJ2ZXJzaW9uIjogNwp9"}
+    "45": {"version": "9", "sha256": "1ggmhcq0m968d4jg75z4c88wszf5m9jkz8p4jwf5zr5jzwn3kcin", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9uZSB3aW5kb3dzIGNpcmNsZSB3aXRoIEFsdCt0YWIuIEFub3RoZXIgb25lIHdpdGggU3VwZXIrdGFiKGluIG15IGNhc2UgaW5zdGFudCBtZXNzYW5nZXJzKS4iLAogICJleHRlbnNpb24taWQiOiAid2luZG93LXN3aXRjaGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiV2luZG93U3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YmVwZGIvd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJ3aW5kb3ctc3dpdGNoZXJAdGJlcGRiIiwKICAidmVyc2lvbiI6IDkKfQ=="},
+    "46": {"version": "9", "sha256": "1ggmhcq0m968d4jg75z4c88wszf5m9jkz8p4jwf5zr5jzwn3kcin", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9uZSB3aW5kb3dzIGNpcmNsZSB3aXRoIEFsdCt0YWIuIEFub3RoZXIgb25lIHdpdGggU3VwZXIrdGFiKGluIG15IGNhc2UgaW5zdGFudCBtZXNzYW5nZXJzKS4iLAogICJleHRlbnNpb24taWQiOiAid2luZG93LXN3aXRjaGVyIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpbmRvdy1zd2l0Y2hlciIsCiAgIm5hbWUiOiAiV2luZG93U3dpdGNoZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2luZG93LXN3aXRjaGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90YmVwZGIvd2luZG93LXN3aXRjaGVyIiwKICAidXVpZCI6ICJ3aW5kb3ctc3dpdGNoZXJAdGJlcGRiIiwKICAidmVyc2lvbiI6IDkKfQ=="}
   }}
 , {"uuid": "toggler@hedgie.tech", "name": "Toggler", "pname": "toggler", "description": "Toggle GNOME Terminal via a keyboard shortcut", "link": "https://extensions.gnome.org/extension/6063/toggler/", "shell_version_map": {
-    "43": {"version": "2", "sha256": "08qsr783yfj17hb61kwfirxkmx3k8r62844q2k11i08q8lsmd6k9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBHTk9NRSBUZXJtaW5hbCB2aWEgYSBrZXlib2FyZCBzaG9ydGN1dFxuXG5JdCBpcyBiYXNlZCBvbiB0aGUgY29kZSBvZiAnRm9jdXMgV2luZG93JyBleHRlbnNpb24iLAogICJuYW1lIjogIlRvZ2dsZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy90b2dnbGVyIiwKICAidXVpZCI6ICJ0b2dnbGVyQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDIKfQ=="},
-    "44": {"version": "2", "sha256": "08qsr783yfj17hb61kwfirxkmx3k8r62844q2k11i08q8lsmd6k9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBHTk9NRSBUZXJtaW5hbCB2aWEgYSBrZXlib2FyZCBzaG9ydGN1dFxuXG5JdCBpcyBiYXNlZCBvbiB0aGUgY29kZSBvZiAnRm9jdXMgV2luZG93JyBleHRlbnNpb24iLAogICJuYW1lIjogIlRvZ2dsZXIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudG9nZ2xlciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy90b2dnbGVyIiwKICAidXVpZCI6ICJ0b2dnbGVyQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDIKfQ=="},
-    "45": {"version": "3", "sha256": "1ss0mivz0wzqhxdjhk03i1vm263i16mxl16qszgp4cywrhkrik40", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBHTk9NRSBUZXJtaW5hbCB2aWEgYSBrZXlib2FyZCBzaG9ydGN1dCIsCiAgIm5hbWUiOiAiVG9nZ2xlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b2dnbGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGdpZWluc29ja3MvdG9nZ2xlciIsCiAgInV1aWQiOiAidG9nZ2xlckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAzCn0="}
+    "45": {"version": "4", "sha256": "1kg1jj5dbxknq0685gnn7s46z5bdgzxjip2a7yq771yg7kw7qgyg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBHTk9NRSBUZXJtaW5hbCB2aWEgYSBrZXlib2FyZCBzaG9ydGN1dCIsCiAgIm5hbWUiOiAiVG9nZ2xlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b2dnbGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi10b2dnbGVyIiwKICAidXVpZCI6ICJ0b2dnbGVyQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDQKfQ=="},
+    "46": {"version": "4", "sha256": "1kg1jj5dbxknq0685gnn7s46z5bdgzxjip2a7yq771yg7kw7qgyg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSBHTk9NRSBUZXJtaW5hbCB2aWEgYSBrZXlib2FyZCBzaG9ydGN1dCIsCiAgIm5hbWUiOiAiVG9nZ2xlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b2dnbGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oZWRnaWVpbnNvY2tzL2dub21lLWV4dGVuc2lvbi10b2dnbGVyIiwKICAidXVpZCI6ICJ0b2dnbGVyQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDQKfQ=="}
   }}
 , {"uuid": "inputmethod-shortcuts@osamu.debian.org", "name": "Input method and touchpad shortcuts", "pname": "shortcuts-to-activate-input-methods", "description": "Quick switching of input method and touchpad with user configurable shortcut binding", "link": "https://extensions.gnome.org/extension/6066/shortcuts-to-activate-input-methods/", "shell_version_map": {
     "40": {"version": "20", "sha256": "0xn4jlqg16xq61wx3nkr13k1sadm1fskixlp0qgh875pk043ly84", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIHN3aXRjaGluZyBvZiBpbnB1dCBtZXRob2QgYW5kIHRvdWNocGFkIHdpdGggdXNlciBjb25maWd1cmFibGUgc2hvcnRjdXQgYmluZGluZyIsCiAgIm5hbWUiOiAiSW5wdXQgbWV0aG9kIGFuZCB0b3VjaHBhZCBzaG9ydGN1dHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3NhbXVhb2tpL2lucHV0bWV0aG9kLXNob3J0Y3V0cyIsCiAgInV1aWQiOiAiaW5wdXRtZXRob2Qtc2hvcnRjdXRzQG9zYW11LmRlYmlhbi5vcmciLAogICJ2ZXJzaW9uIjogMjAKfQ=="},
@@ -5988,9 +6218,10 @@
     "42": {"version": "20", "sha256": "0xn4jlqg16xq61wx3nkr13k1sadm1fskixlp0qgh875pk043ly84", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIHN3aXRjaGluZyBvZiBpbnB1dCBtZXRob2QgYW5kIHRvdWNocGFkIHdpdGggdXNlciBjb25maWd1cmFibGUgc2hvcnRjdXQgYmluZGluZyIsCiAgIm5hbWUiOiAiSW5wdXQgbWV0aG9kIGFuZCB0b3VjaHBhZCBzaG9ydGN1dHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3NhbXVhb2tpL2lucHV0bWV0aG9kLXNob3J0Y3V0cyIsCiAgInV1aWQiOiAiaW5wdXRtZXRob2Qtc2hvcnRjdXRzQG9zYW11LmRlYmlhbi5vcmciLAogICJ2ZXJzaW9uIjogMjAKfQ=="},
     "43": {"version": "21", "sha256": "0p25gn4s9w33v82qpz00fg2hgafp65ckrq0q4in6j7qxs03qi2n8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIHN3aXRjaGluZyBvZiBpbnB1dCBtZXRob2QgYW5kIHRvdWNocGFkIHdpdGggdXNlciBjb25maWd1cmFibGUgc2hvcnRjdXQgYmluZGluZyIsCiAgIm5hbWUiOiAiSW5wdXQgbWV0aG9kIGFuZCB0b3VjaHBhZCBzaG9ydGN1dHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9vc2FtdWFva2kvaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAidXVpZCI6ICJpbnB1dG1ldGhvZC1zaG9ydGN1dHNAb3NhbXUuZGViaWFuLm9yZyIsCiAgInZlcnNpb24iOiAyMQp9"},
     "44": {"version": "21", "sha256": "0p25gn4s9w33v82qpz00fg2hgafp65ckrq0q4in6j7qxs03qi2n8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIHN3aXRjaGluZyBvZiBpbnB1dCBtZXRob2QgYW5kIHRvdWNocGFkIHdpdGggdXNlciBjb25maWd1cmFibGUgc2hvcnRjdXQgYmluZGluZyIsCiAgIm5hbWUiOiAiSW5wdXQgbWV0aG9kIGFuZCB0b3VjaHBhZCBzaG9ydGN1dHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9vc2FtdWFva2kvaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAidXVpZCI6ICJpbnB1dG1ldGhvZC1zaG9ydGN1dHNAb3NhbXUuZGViaWFuLm9yZyIsCiAgInZlcnNpb24iOiAyMQp9"},
-    "45": {"version": "22", "sha256": "1v92fdmxvva7q5qarv6ic9s86ignrpp5aflyghcwqjv4jvygi25a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIHN3aXRjaGluZyBvZiBpbnB1dCBtZXRob2QgYW5kIHRvdWNocGFkIHdpdGggdXNlciBjb25maWd1cmFibGUgc2hvcnRjdXQgYmluZGluZyIsCiAgIm5hbWUiOiAiSW5wdXQgbWV0aG9kIGFuZCB0b3VjaHBhZCBzaG9ydGN1dHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL29zYW11YW9raS9pbnB1dG1ldGhvZC1zaG9ydGN1dHMiLAogICJ1dWlkIjogImlucHV0bWV0aG9kLXNob3J0Y3V0c0Bvc2FtdS5kZWJpYW4ub3JnIiwKICAidmVyc2lvbiI6IDIyCn0="}
+    "45": {"version": "23", "sha256": "0nm9jy3f7ryyylwrgwxrbmk5ffj680adrpb1dkwy3y2px1fdmhk6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIHN3aXRjaGluZyBvZiBpbnB1dCBtZXRob2QgYW5kIHRvdWNocGFkIHdpdGggdXNlciBjb25maWd1cmFibGUgc2hvcnRjdXQgYmluZGluZyIsCiAgIm5hbWUiOiAiSW5wdXQgbWV0aG9kIGFuZCB0b3VjaHBhZCBzaG9ydGN1dHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9vc2FtdWFva2kvaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAidXVpZCI6ICJpbnB1dG1ldGhvZC1zaG9ydGN1dHNAb3NhbXUuZGViaWFuLm9yZyIsCiAgInZlcnNpb24iOiAyMwp9"},
+    "46": {"version": "23", "sha256": "0nm9jy3f7ryyylwrgwxrbmk5ffj680adrpb1dkwy3y2px1fdmhk6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIHN3aXRjaGluZyBvZiBpbnB1dCBtZXRob2QgYW5kIHRvdWNocGFkIHdpdGggdXNlciBjb25maWd1cmFibGUgc2hvcnRjdXQgYmluZGluZyIsCiAgIm5hbWUiOiAiSW5wdXQgbWV0aG9kIGFuZCB0b3VjaHBhZCBzaG9ydGN1dHMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9vc2FtdWFva2kvaW5wdXRtZXRob2Qtc2hvcnRjdXRzIiwKICAidXVpZCI6ICJpbnB1dG1ldGhvZC1zaG9ydGN1dHNAb3NhbXUuZGViaWFuLm9yZyIsCiAgInZlcnNpb24iOiAyMwp9"}
   }}
-, {"uuid": "kmonad-toggle@jurf.github.io", "name": "KMonad Toggle", "pname": "kmonad-toggle", "description": "Control KMonad directly from GNOME Shell!\n\nThis extension allows you to:\n • Autostart KMonad on login\n • Quickly check if KMonad is running from the top bar\n • Toggle KMonad on or off with a quick setting\n • Easily configure the KMonad launch command\n\nDo you miss any functionality in this extension? Feel free to open an issue on GitHub!\n\nNote: This extension does not manage the KMonad installation. See the installation guide and FAQ in the KMonad repo for instructions on how to set it up. https://github.com/kmonad/kmonad", "link": "https://extensions.gnome.org/extension/6069/kmonad-toggle/", "shell_version_map": {
+, {"uuid": "kmonad-toggle@jurf.github.io", "name": "KMonad Toggle", "pname": "kmonad-toggle", "description": "Quickly turn your programmable keyboard into a normal one if someone else needs to use your computer!\n\nThis extension allows you to:\n • Toggle KMonad on or off with a quick setting\n • Autostart KMonad on login\n • Quickly check if KMonad is running from the top bar\n • Easily configure the KMonad launch command\n\nDo you miss any functionality in this extension? Feel free to open an issue on GitHub!\n\nNote: This extension does not manage the KMonad installation. See the installation guide and FAQ in the KMonad repo for instructions on how to set it up. https://github.com/kmonad/kmonad", "link": "https://extensions.gnome.org/extension/6069/kmonad-toggle/", "shell_version_map": {
     "44": {"version": "6", "sha256": "12d7zh3mrxjaippm0n1dwfwhai88iwdy3pb34m24km73g7nwln97", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgS01vbmFkIGRpcmVjdGx5IGZyb20gR05PTUUgU2hlbGwhXG5cblRoaXMgZXh0ZW5zaW9uIGFsbG93cyB5b3UgdG86XG4gXHUyMDIyIEF1dG9zdGFydCBLTW9uYWQgb24gbG9naW5cbiBcdTIwMjIgUXVpY2tseSBjaGVjayBpZiBLTW9uYWQgaXMgcnVubmluZyBmcm9tIHRoZSB0b3AgYmFyXG4gXHUyMDIyIFRvZ2dsZSBLTW9uYWQgb24gb3Igb2ZmIHdpdGggYSBxdWljayBzZXR0aW5nXG4gXHUyMDIyIEVhc2lseSBjb25maWd1cmUgdGhlIEtNb25hZCBsYXVuY2ggY29tbWFuZFxuXG5Ob3RlOiBUaGlzIGV4dGVuc2lvbiBkb2VzIG5vdCBtYW5hZ2UgdGhlIEtNb25hZCBpbnN0YWxsYXRpb24uIFNlZSB0aGUgaW5zdGFsbGF0aW9uIGd1aWRlIGFuZCBGQVEgaW4gdGhlIEtNb25hZCByZXBvIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHNldCBpdCB1cC4gaHR0cHM6Ly9naXRodWIuY29tL2ttb25hZC9rbW9uYWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJqdXJhamZpYWxhIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImttb25hZC10b2dnbGUiLAogICJuYW1lIjogIktNb25hZCBUb2dnbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua21vbmFkLXRvZ2dsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qdXJmL2dub21lLWttb25hZC10b2dnbGUiLAogICJ1dWlkIjogImttb25hZC10b2dnbGVAanVyZi5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNgp9"},
     "45": {"version": "8", "sha256": "07nfl4ndvkp58q7c1z5yy3cj9ffxxkzgrq41zs4bp213qz20192j", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgS01vbmFkIGRpcmVjdGx5IGZyb20gR05PTUUgU2hlbGwhXG5cblRoaXMgZXh0ZW5zaW9uIGFsbG93cyB5b3UgdG86XG4gXHUyMDIyIEF1dG9zdGFydCBLTW9uYWQgb24gbG9naW5cbiBcdTIwMjIgUXVpY2tseSBjaGVjayBpZiBLTW9uYWQgaXMgcnVubmluZyBmcm9tIHRoZSB0b3AgYmFyXG4gXHUyMDIyIFRvZ2dsZSBLTW9uYWQgb24gb3Igb2ZmIHdpdGggYSBxdWljayBzZXR0aW5nXG4gXHUyMDIyIEVhc2lseSBjb25maWd1cmUgdGhlIEtNb25hZCBsYXVuY2ggY29tbWFuZFxuXG5Ob3RlOiBUaGlzIGV4dGVuc2lvbiBkb2VzIG5vdCBtYW5hZ2UgdGhlIEtNb25hZCBpbnN0YWxsYXRpb24uIFNlZSB0aGUgaW5zdGFsbGF0aW9uIGd1aWRlIGFuZCBGQVEgaW4gdGhlIEtNb25hZCByZXBvIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHNldCBpdCB1cC4gaHR0cHM6Ly9naXRodWIuY29tL2ttb25hZC9rbW9uYWQiLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJqdXJhamZpYWxhIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImttb25hZC10b2dnbGUiLAogICJuYW1lIjogIktNb25hZCBUb2dnbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMua21vbmFkLXRvZ2dsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qdXJmL2dub21lLWttb25hZC10b2dnbGUiLAogICJ1dWlkIjogImttb25hZC10b2dnbGVAanVyZi5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOAp9"}
   }}
@@ -6022,15 +6253,17 @@
     "42": {"version": "4", "sha256": "1nzzsm6ai8b0l8c5xvx83cspm4gzx1n6wfdrbik3g7xam06hr861", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgcGFzdGUgRW1vamlzIGZyb20gdGhlIFNtaWxlIGVtb2ppIHBpY2tlciIsCiAgIm5hbWUiOiAiU21pbGUgLSBjb21wbGVtZW50YXJ5IGV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21pam9ydXMvc21pbGUtZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJzbWlsZS1leHRlbnNpb25AbWlqb3J1cy5pdCIsCiAgInZlcnNpb24iOiA0Cn0="},
     "43": {"version": "4", "sha256": "1nzzsm6ai8b0l8c5xvx83cspm4gzx1n6wfdrbik3g7xam06hr861", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgcGFzdGUgRW1vamlzIGZyb20gdGhlIFNtaWxlIGVtb2ppIHBpY2tlciIsCiAgIm5hbWUiOiAiU21pbGUgLSBjb21wbGVtZW50YXJ5IGV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21pam9ydXMvc21pbGUtZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJzbWlsZS1leHRlbnNpb25AbWlqb3J1cy5pdCIsCiAgInZlcnNpb24iOiA0Cn0="},
     "44": {"version": "4", "sha256": "1nzzsm6ai8b0l8c5xvx83cspm4gzx1n6wfdrbik3g7xam06hr861", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgcGFzdGUgRW1vamlzIGZyb20gdGhlIFNtaWxlIGVtb2ppIHBpY2tlciIsCiAgIm5hbWUiOiAiU21pbGUgLSBjb21wbGVtZW50YXJ5IGV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21pam9ydXMvc21pbGUtZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJzbWlsZS1leHRlbnNpb25AbWlqb3J1cy5pdCIsCiAgInZlcnNpb24iOiA0Cn0="},
-    "45": {"version": "7", "sha256": "1fjcwgifggnckk0p7mskpgaz3wm71nz4qgcc1f1jqynwdbidds7l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgcGFzdGUgRW1vamlzIGZyb20gdGhlIFNtaWxlIGVtb2ppIHBpY2tlciIsCiAgIm5hbWUiOiAiU21pbGUgLSBjb21wbGVtZW50YXJ5IGV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9taWpvcnVzL3NtaWxlLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAic21pbGUtZXh0ZW5zaW9uQG1pam9ydXMuaXQiLAogICJ2ZXJzaW9uIjogNwp9"}
+    "45": {"version": "8", "sha256": "1r2w9hdzp1d0x55wf6w1dwwn80cda9fg0y0adxk37qx083hkmj0g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgcGFzdGUgRW1vamlzIGZyb20gdGhlIFNtaWxlIGVtb2ppIHBpY2tlciIsCiAgIm5hbWUiOiAiU21pbGUgLSBjb21wbGVtZW50YXJ5IGV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWlqb3J1cy9zbWlsZS1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogInNtaWxlLWV4dGVuc2lvbkBtaWpvcnVzLml0IiwKICAidmVyc2lvbiI6IDgKfQ=="},
+    "46": {"version": "8", "sha256": "1r2w9hdzp1d0x55wf6w1dwwn80cda9fg0y0adxk37qx083hkmj0g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgcGFzdGUgRW1vamlzIGZyb20gdGhlIFNtaWxlIGVtb2ppIHBpY2tlciIsCiAgIm5hbWUiOiAiU21pbGUgLSBjb21wbGVtZW50YXJ5IGV4dGVuc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWlqb3J1cy9zbWlsZS1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogInNtaWxlLWV4dGVuc2lvbkBtaWpvcnVzLml0IiwKICAidmVyc2lvbiI6IDgKfQ=="}
   }}
-, {"uuid": "paperwm@paperwm.github.com", "name": "PaperWM", "pname": "paperwm", "description": "Tiling window manager with a twist!\n\nPaperWM is a Gnome Shell extension which provides scrollable tiling of windows and per monitor workspaces. It's inspired by paper notebooks and tiling window managers.\n\nPlease see our github page to report issues, understand features, and learn how to configure PaperWM to your liking.", "link": "https://extensions.gnome.org/extension/6099/paperwm/", "shell_version_map": {
+, {"uuid": "paperwm@paperwm.github.com", "name": "PaperWM", "pname": "paperwm", "description": "Tiling window manager with a twist!\n\n PaperWM is a Gnome Shell extension which provides scrollable tiling of windows and per monitor workspaces. It's inspired by paper notebooks and tiling window managers.\n\nPlease see our github page to report issues, understand features, and learn how to configure PaperWM to your liking.", "link": "https://extensions.gnome.org/extension/6099/paperwm/", "shell_version_map": {
     "42": {"version": "71", "sha256": "1w626hadaskid3dn39ab4nm9d3sky852rjng4vy4l62a46xvrn7k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyB3aW5kb3cgbWFuYWdlciB3aXRoIGEgdHdpc3QiLAogICJuYW1lIjogIlBhcGVyV00iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucGFwZXJ3bSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyd20vUGFwZXJXTSIsCiAgInV1aWQiOiAicGFwZXJ3bUBwYXBlcndtLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNzEsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4xNy4wIgp9"},
     "43": {"version": "71", "sha256": "1w626hadaskid3dn39ab4nm9d3sky852rjng4vy4l62a46xvrn7k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyB3aW5kb3cgbWFuYWdlciB3aXRoIGEgdHdpc3QiLAogICJuYW1lIjogIlBhcGVyV00iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucGFwZXJ3bSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyd20vUGFwZXJXTSIsCiAgInV1aWQiOiAicGFwZXJ3bUBwYXBlcndtLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNzEsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4xNy4wIgp9"},
     "44": {"version": "71", "sha256": "1w626hadaskid3dn39ab4nm9d3sky852rjng4vy4l62a46xvrn7k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyB3aW5kb3cgbWFuYWdlciB3aXRoIGEgdHdpc3QiLAogICJuYW1lIjogIlBhcGVyV00iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucGFwZXJ3bSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyd20vUGFwZXJXTSIsCiAgInV1aWQiOiAicGFwZXJ3bUBwYXBlcndtLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNzEsCiAgInZlcnNpb24tbmFtZSI6ICI0NC4xNy4wIgp9"},
-    "45": {"version": "79", "sha256": "0mwd9dwqmi0jbg61fx3r7sxzdw25kvnvxccl5y98w1dxx33x0bqj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyB3aW5kb3cgbWFuYWdlciB3aXRoIGEgdHdpc3QiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImpheXRhYWxhIgogIH0sCiAgIm5hbWUiOiAiUGFwZXJXTSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wYXBlcndtIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyd20vUGFwZXJXTSIsCiAgInV1aWQiOiAicGFwZXJ3bUBwYXBlcndtLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNzksCiAgInZlcnNpb24tbmFtZSI6ICI0NS4xMS4wIgp9"}
+    "45": {"version": "93", "sha256": "192kmjrnbah8nwa1z733yjl10j4gqb99m9i87qkyg6z0w2dk2kml", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyB3aW5kb3cgbWFuYWdlciB3aXRoIGEgdHdpc3QiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImpheXRhYWxhIiwKICAgICJwYXRyZW9uIjogInZhbHBhY2tldHQiCiAgfSwKICAibmFtZSI6ICJQYXBlcldNIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhcGVyd20iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyd20vUGFwZXJXTSIsCiAgInV1aWQiOiAicGFwZXJ3bUBwYXBlcndtLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOTMsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni40LjEiCn0="},
+    "46": {"version": "93", "sha256": "192kmjrnbah8nwa1z733yjl10j4gqb99m9i87qkyg6z0w2dk2kml", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbGluZyB3aW5kb3cgbWFuYWdlciB3aXRoIGEgdHdpc3QiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImpheXRhYWxhIiwKICAgICJwYXRyZW9uIjogInZhbHBhY2tldHQiCiAgfSwKICAibmFtZSI6ICJQYXBlcldNIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnBhcGVyd20iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyd20vUGFwZXJXTSIsCiAgInV1aWQiOiAicGFwZXJ3bUBwYXBlcndtLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogOTMsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni40LjEiCn0="}
   }}
-, {"uuid": "lightshell@dikasp.gitlab", "name": "Light Shell", "pname": "light-shell", "description": "the missing full light style gnome shell theme you had been looking for :D\n\nNOTE: later release are merged and continue within Luminus extension. brings various improvement and dark mode integration.\n\nvisit my gitlab to report issue, feature, or just have a look on some nice light style desktop screenshots.", "link": "https://extensions.gnome.org/extension/6102/light-shell/", "shell_version_map": {
+, {"uuid": "lightshell@dikasp.gitlab", "name": "Light Shell", "pname": "light-shell", "description": "the missing full light style gnome shell theme you had been looking for :D\n\nNOTE: later release are merged and continue within Luminus extension. brings various improvement and dark mode integration.", "link": "https://extensions.gnome.org/extension/6102/light-shell/", "shell_version_map": {
     "42": {"version": "11", "sha256": "0fqshl06w2amy8d3gw2car4rab6zqpi79dg5dr05d5swggq1vm8n", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGx5IGZ1bGwgbGlnaHQgdGhlbWUgaW50byBkZWZhdWx0IGdub21lIHNoZWxsLCBpbmNsdWRpbmcgbGlnaHQgb3ZlcnZpZXcuIiwKICAibmFtZSI6ICJMaWdodCBTaGVsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9kaWthc2V0eWFwcmF5b2dpL2xpZ2h0LXNoZWxsIiwKICAidXVpZCI6ICJsaWdodHNoZWxsQGRpa2FzcC5naXRsYWIiLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
     "43": {"version": "10", "sha256": "09hyrcg6y1269z7fzix72g09kvvdmy40z57m8yvib8hvl9wxarfc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGx5IGZ1bGwgbGlnaHQgdGhlbWUgaW50byBkZWZhdWx0IGdub21lIHNoZWxsLCBpbmNsdWRpbmcgbGlnaHQgb3ZlcnZpZXcuIiwKICAibmFtZSI6ICJMaWdodCBTaGVsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9kaWthc2V0eWFwcmF5b2dpL2xpZ2h0LXNoZWxsIiwKICAidXVpZCI6ICJsaWdodHNoZWxsQGRpa2FzcC5naXRsYWIiLAogICJ2ZXJzaW9uIjogMTAKfQ=="},
     "44": {"version": "13", "sha256": "0c8prbldkrylv1mkkmkcj606sllksvdan57bf11yw1abwgqy7idm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFwcGx5IGZ1bGwgbGlnaHQgdGhlbWUgaW50byBkZWZhdWx0IEdOT01FIFNoZWxsLCBpbmNsdWRpbmcgbGlnaHQgb3ZlcnZpZXciLAogICJuYW1lIjogIkxpZ2h0IFNoZWxsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2Rpa2FzZXR5YXByYXlvZ2kvbGlnaHQtc2hlbGwiLAogICJ1dWlkIjogImxpZ2h0c2hlbGxAZGlrYXNwLmdpdGxhYiIsCiAgInZlcnNpb24iOiAxMwp9"},
@@ -6047,7 +6280,7 @@
     "44": {"version": "1", "sha256": "1194s4jh78appiqqyiyh3vilw21f5c0pyl1v9vsfsi5lhgv63h88", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZXh0ZW5zaW9uLCB0aGF0IHJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgcHV0cyB0aGUgd2luZG93IGludG8gZm9jdXMuIEluIGNvbnRyYXN0IHRvIGFsbCB0aGUgb3RoZXIgZXh0ZW5zaW9ucywgdGhpcyB1c2VzIEVTNiBzeW50YXggYW5kIGlzIGFjdGl2ZWx5IG1haW50YWluZWQuIFRoaXMgZXh0ZW5zaW9uIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgd2l0aCBzdXBwb3J0IGZvciBHTk9NRSA0NC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbm9hbm5veWFuY2UtZm9yayIsCiAgIm5hbWUiOiAiTm9Bbm5veWFuY2UgKGZvcmspIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vYW5ub3lhbmNlLWZvcmsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIsCiAgICAiNDQuMiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ppcmthdnJiYS9ub2Fubm95YW5jZSIsCiAgInV1aWQiOiAibm9hbm5veWFuY2UtZm9ya0B2cmJhLmRldiIsCiAgInZlcnNpb24iOiAxCn0="},
     "45": {"version": "3", "sha256": "06zz9gpy1v4cx9fzdwhmzh2ihm49vi1641gngd341lcf4m0g4syl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFub3RoZXIgZXh0ZW5zaW9uLCB0aGF0IHJlbW92ZXMgdGhlICdXaW5kb3cgaXMgcmVhZHknIG5vdGlmaWNhdGlvbiBhbmQgcHV0cyB0aGUgd2luZG93IGludG8gZm9jdXMuIEluIGNvbnRyYXN0IHRvIGFsbCB0aGUgb3RoZXIgZXh0ZW5zaW9ucywgdGhpcyB1c2VzIEVTNiBzeW50YXggYW5kIGlzIGFjdGl2ZWx5IG1haW50YWluZWQuIFRoaXMgZXh0ZW5zaW9uIGlzIGEgZm9yayBvZiB0aGUgb3JpZ2luYWwgd2l0aCBzdXBwb3J0IGZvciBHTk9NRSA0NS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tbm9hbm5veWFuY2UtZm9yayIsCiAgIm5hbWUiOiAiTm9Bbm5veWFuY2UgKGZvcmspIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5vYW5ub3lhbmNlLWZvcmsiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamlya2F2cmJhL25vYW5ub3lhbmNlIiwKICAidXVpZCI6ICJub2Fubm95YW5jZS1mb3JrQHZyYmEuZGV2IiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
-, {"uuid": "lightshellmanjaro@dikasp.gitlab", "name": "Light Shell Manjaro", "pname": "light-shell-manjaro", "description": "Unofficial Light Shell theme port for use with Manjaro's default GNOME Shell.\n\nCurrently unmaintained! visit my gitlab for simple tutorial on making your own custom Light Shell with accent color and more.", "link": "https://extensions.gnome.org/extension/6115/light-shell-manjaro/", "shell_version_map": {
+, {"uuid": "lightshellmanjaro@dikasp.gitlab", "name": "Light Shell Manjaro", "pname": "light-shell-manjaro", "description": "Unofficial Light Shell theme port for use with Manjaro's default GNOME Shell.\n\nCurrently unmaintained. Visit my gitlab for some tutorial on making your own custom Light Shell with accent color and more.", "link": "https://extensions.gnome.org/extension/6115/light-shell-manjaro/", "shell_version_map": {
     "42": {"version": "8", "sha256": "12qwv0lmy7v3q9cmfqw40mwyk78wl1aavlp374dg2jdsk3hh887f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVub2ZmaWNpYWwgbGlnaHQgc2hlbGwgcG9ydCBmb3IgTWFuamFybyBtYWlhIHRoZW1lICh0aGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNYW5qYXJvKS4iLAogICJuYW1lIjogIkxpZ2h0IFNoZWxsIE1hbmphcm8iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9saWdodC1zaGVsbCIsCiAgInV1aWQiOiAibGlnaHRzaGVsbG1hbmphcm9AZGlrYXNwLmdpdGxhYiIsCiAgInZlcnNpb24iOiA4Cn0="},
     "43": {"version": "7", "sha256": "1993r6niyymypkj87fszci8yqs2z8y6q8kc3zrsaldyizs19dxkk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVub2ZmaWNpYWwgbGlnaHQgc2hlbGwgcG9ydCBmb3IgTWFuamFybyBtYWlhIHRoZW1lICh0aGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBNYW5qYXJvKS4iLAogICJuYW1lIjogIkxpZ2h0IFNoZWxsIE1hbmphcm8iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9saWdodC1zaGVsbCIsCiAgInV1aWQiOiAibGlnaHRzaGVsbG1hbmphcm9AZGlrYXNwLmdpdGxhYiIsCiAgInZlcnNpb24iOiA3Cn0="},
     "44": {"version": "12", "sha256": "0vy8ki1xpjg87f65psp9q76rcw9crij1dq46f1ka19n088vggx6a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1cnJlbnRseSB1bm1haW50YWluZWQhIHZpc2l0IG15IGdpdGxhYiBmb3Igc2ltcGxlIHR1dG9yaWFsIG9uIG1ha2luZyB5b3VyIG93biBjdXN0b20gTGlnaHQgU2hlbGwgd2l0aCBhY2NlbnQgY29sb3IgYW5kIG1vcmUuIiwKICAibmFtZSI6ICJMaWdodCBTaGVsbCBNYW5qYXJvIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL2Rpa2FzZXR5YXByYXlvZ2kvbGlnaHQtc2hlbGwiLAogICJ1dWlkIjogImxpZ2h0c2hlbGxtYW5qYXJvQGRpa2FzcC5naXRsYWIiLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
@@ -6055,7 +6288,7 @@
 , {"uuid": "lightshellubuntu@dikasp.gitlab", "name": "Light Shell Ubuntu", "pname": "light-shell-ubuntu", "description": "Unofficial Light Shell theme port for use with Ubuntu's default GNOME Shell.\n\nCurrently unmaintained! visit my gitlab for simple tutorial on making your own custom Light Shell with accent color and more.", "link": "https://extensions.gnome.org/extension/6118/light-shell-ubuntu/", "shell_version_map": {
     "44": {"version": "4", "sha256": "1fhw7fqnaqyc8zkshrs6kwjzzqni289lq83gg70yrmib452w7b6d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkN1cnJlbnRseSB1bm1haW50YWluZWQhIHZpc2l0IG15IGdpdGxhYiBmb3Igc2ltcGxlIHR1dG9yaWFsIG9uIG1ha2luZyB5b3VyIG93biBjdXN0b20gTGlnaHQgU2hlbGwgd2l0aCBhY2NlbnQgY29sb3IgYW5kIG1vcmUuIiwKICAibmFtZSI6ICJMaWdodCBTaGVsbCBVYnVudHUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9saWdodC1zaGVsbCIsCiAgInV1aWQiOiAibGlnaHRzaGVsbHVidW50dUBkaWthc3AuZ2l0bGFiIiwKICAidmVyc2lvbiI6IDQKfQ=="}
   }}
-, {"uuid": "blurmylightshell@dikasp.gitlab", "name": "Blur my Light Shell", "pname": "blur-my-light-shell", "description": "Light Shell version for use with Blur my Shell extension.\n\nNOTE: later release are merged and continue within Luminus extension. brings various improvement and dark mode integration.\n\nvisit my gitlab to report issue, feature, or just have a look on some nice light style desktop screenshots :D", "link": "https://extensions.gnome.org/extension/6121/blur-my-light-shell/", "shell_version_map": {
+, {"uuid": "blurmylightshell@dikasp.gitlab", "name": "Blur my Light Shell", "pname": "blur-my-light-shell", "description": "Light Shell version for use with Blur my Shell extension.\n\nNOTE: later release are merged and continue within Luminus extension. brings various improvement and dark mode integration.", "link": "https://extensions.gnome.org/extension/6121/blur-my-light-shell/", "shell_version_map": {
     "44": {"version": "4", "sha256": "19rh1137rqdlyfj309kdy21ry9dyl5apr5h2qwylf6wg7m1qa5pw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxpZ2h0IHNoZWxsIHBvcnQgZm9yIHVzZSB3aXRoIGJsdXIgbXkgc2hlbGwgZXh0ZW5zaW9uIChubyBuZWVkIHRvIGN1c3RvbWl6ZSBhbnl0aGluZywganVzdCBoaXQgYmx1ciBteSBzaGVsbCByZXNldCBwcmVmZXJlbmNlcyBidXR0b24gYW5kIGVuam95KS4iLAogICJuYW1lIjogIkJsdXIgbXkgTGlnaHQgU2hlbGwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9saWdodC1zaGVsbCIsCiAgInV1aWQiOiAiYmx1cm15bGlnaHRzaGVsbEBkaWthc3AuZ2l0bGFiIiwKICAidmVyc2lvbiI6IDQKfQ=="},
     "45": {"version": "11", "sha256": "0x2asdav5b2jd9b4rngcq26yrv39kgvlyhscr8h4h284xd4k11gm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk5PVEU6IGxhdGVyIHJlbGVhc2UgYXJlIG1lcmdlZCBhbmQgY29udGludWUgd2l0aGluIEx1bWludXMgZXh0ZW5zaW9uLiBicmluZ3MgdmFyaW91cyBpbXByb3ZlbWVudCBhbmQgZGFyayBtb2RlIGludGVncmF0aW9uLiIsCiAgIm5hbWUiOiAiQmx1ciBteSBMaWdodCBTaGVsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9kaWthc2V0eWFwcmF5b2dpL2xpZ2h0LXNoZWxsIiwKICAidXVpZCI6ICJibHVybXlsaWdodHNoZWxsQGRpa2FzcC5naXRsYWIiLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
   }}
@@ -6069,18 +6302,21 @@
     "42": {"version": "6", "sha256": "1i11c6bq3m2hn6992lvf4kzcy8q55gs1w94li0mnvsjyr5qkdq5r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9wZW4gdGFicyBvbiBhY3RpdmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiT3BlbiBCcm93c2VyIFRhYnMgb24gQWN0aXZlIFdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamFuaG91c2UvdGFiLWluLXdvcmtzcGFjZSIsCiAgInV1aWQiOiAidGFiLWluLXdvcmtzcGFjZUBqYW5ob3VzZS5sdiIsCiAgInZlcnNpb24iOiA2Cn0="},
     "43": {"version": "6", "sha256": "1i11c6bq3m2hn6992lvf4kzcy8q55gs1w94li0mnvsjyr5qkdq5r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9wZW4gdGFicyBvbiBhY3RpdmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiT3BlbiBCcm93c2VyIFRhYnMgb24gQWN0aXZlIFdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamFuaG91c2UvdGFiLWluLXdvcmtzcGFjZSIsCiAgInV1aWQiOiAidGFiLWluLXdvcmtzcGFjZUBqYW5ob3VzZS5sdiIsCiAgInZlcnNpb24iOiA2Cn0="},
     "44": {"version": "6", "sha256": "1i11c6bq3m2hn6992lvf4kzcy8q55gs1w94li0mnvsjyr5qkdq5r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9wZW4gdGFicyBvbiBhY3RpdmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiT3BlbiBCcm93c2VyIFRhYnMgb24gQWN0aXZlIFdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamFuaG91c2UvdGFiLWluLXdvcmtzcGFjZSIsCiAgInV1aWQiOiAidGFiLWluLXdvcmtzcGFjZUBqYW5ob3VzZS5sdiIsCiAgInZlcnNpb24iOiA2Cn0="},
-    "45": {"version": "5", "sha256": "02sfg7dlbiwxqfzi45klk172v4559xpdl3rzysnk93rqc9pdwxza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9wZW4gdGFicyBvbiBhY3RpdmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiT3BlbiBCcm93c2VyIFRhYnMgb24gQWN0aXZlIFdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qYW5ob3VzZS90YWItaW4td29ya3NwYWNlIiwKICAidXVpZCI6ICJ0YWItaW4td29ya3NwYWNlQGphbmhvdXNlLmx2IiwKICAidmVyc2lvbiI6IDUKfQ=="}
+    "45": {"version": "7", "sha256": "0ci7zjpkmphwp09n9wdbh54d3w1jzfp4k7rzbqj4l77gsaxpbz2x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9wZW4gdGFicyBvbiBhY3RpdmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiT3BlbiBCcm93c2VyIFRhYnMgb24gQWN0aXZlIFdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamFuaG91c2UvdGFiLWluLXdvcmtzcGFjZSIsCiAgInV1aWQiOiAidGFiLWluLXdvcmtzcGFjZUBqYW5ob3VzZS5sdiIsCiAgInZlcnNpb24iOiA3Cn0="},
+    "46": {"version": "7", "sha256": "0ci7zjpkmphwp09n9wdbh54d3w1jzfp4k7rzbqj4l77gsaxpbz2x", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk9wZW4gdGFicyBvbiBhY3RpdmUgd29ya3NwYWNlLiIsCiAgIm5hbWUiOiAiT3BlbiBCcm93c2VyIFRhYnMgb24gQWN0aXZlIFdvcmtzcGFjZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamFuaG91c2UvdGFiLWluLXdvcmtzcGFjZSIsCiAgInV1aWQiOiAidGFiLWluLXdvcmtzcGFjZUBqYW5ob3VzZS5sdiIsCiAgInZlcnNpb24iOiA3Cn0="}
   }}
 , {"uuid": "tailscale@joaophi.github.com", "name": "Tailscale QS", "pname": "tailscale-qs", "description": "Add Tailscale to GNOME quick settings\n\nMake sure you set your user as tailscale operator:\nsudo tailscale set --operator=$USER", "link": "https://extensions.gnome.org/extension/6139/tailscale-qs/", "shell_version_map": {
     "43": {"version": "12", "sha256": "01s2y7r7h5j2wmbqmclqsy59kdsa24zdiif9lm4c7vsb5crpm7c1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBUYWlsc2NhbGUgdG8gR05PTUUgcXVpY2sgc2V0dGluZ3NcblxuTWFrZSBzdXJlIHlvdSBzZXQgeW91ciB1c2VyIGFzIHRhaWxzY2FsZSBvcGVyYXRvcjpcbnN1ZG8gdGFpbHNjYWxlIHNldCAtLW9wZXJhdG9yPSRVU0VSIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVGFpbHNjYWxlIFFTIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvcGhpL3RhaWxzY2FsZS1nbm9tZS1xcyIsCiAgInV1aWQiOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "01s2y7r7h5j2wmbqmclqsy59kdsa24zdiif9lm4c7vsb5crpm7c1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBUYWlsc2NhbGUgdG8gR05PTUUgcXVpY2sgc2V0dGluZ3NcblxuTWFrZSBzdXJlIHlvdSBzZXQgeW91ciB1c2VyIGFzIHRhaWxzY2FsZSBvcGVyYXRvcjpcbnN1ZG8gdGFpbHNjYWxlIHNldCAtLW9wZXJhdG9yPSRVU0VSIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVGFpbHNjYWxlIFFTIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvcGhpL3RhaWxzY2FsZS1nbm9tZS1xcyIsCiAgInV1aWQiOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "14", "sha256": "1261nzr9p5nl1ksjzr11w6693jjx87nnx74mxfzhrl0f04a88rfw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBUYWlsc2NhbGUgdG8gR05PTUUgcXVpY2sgc2V0dGluZ3NcblxuTWFrZSBzdXJlIHlvdSBzZXQgeW91ciB1c2VyIGFzIHRhaWxzY2FsZSBvcGVyYXRvcjpcbnN1ZG8gdGFpbHNjYWxlIHNldCAtLW9wZXJhdG9yPSRVU0VSIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVGFpbHNjYWxlIFFTIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2pvYW9waGkvdGFpbHNjYWxlLWdub21lLXFzIiwKICAidXVpZCI6ICJ0YWlsc2NhbGVAam9hb3BoaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0Cn0="}
+    "45": {"version": "15", "sha256": "1h52pb4w7fay8cgr0iywdj4isd82bf2c693f855sa95c1hamqdxv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBUYWlsc2NhbGUgdG8gR05PTUUgcXVpY2sgc2V0dGluZ3NcblxuTWFrZSBzdXJlIHlvdSBzZXQgeW91ciB1c2VyIGFzIHRhaWxzY2FsZSBvcGVyYXRvcjpcbnN1ZG8gdGFpbHNjYWxlIHNldCAtLW9wZXJhdG9yPSRVU0VSIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVGFpbHNjYWxlIFFTIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvcGhpL3RhaWxzY2FsZS1nbm9tZS1xcyIsCiAgInV1aWQiOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"},
+    "46": {"version": "15", "sha256": "1h52pb4w7fay8cgr0iywdj4isd82bf2c693f855sa95c1hamqdxv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBUYWlsc2NhbGUgdG8gR05PTUUgcXVpY2sgc2V0dGluZ3NcblxuTWFrZSBzdXJlIHlvdSBzZXQgeW91ciB1c2VyIGFzIHRhaWxzY2FsZSBvcGVyYXRvcjpcbnN1ZG8gdGFpbHNjYWxlIHNldCAtLW9wZXJhdG9yPSRVU0VSIiwKICAiZ2V0dGV4dC1kb21haW4iOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVGFpbHNjYWxlIFFTIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvcGhpL3RhaWxzY2FsZS1nbm9tZS1xcyIsCiAgInV1aWQiOiAidGFpbHNjYWxlQGpvYW9waGkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxNQp9"}
   }}
-, {"uuid": "custom-osd@neuromorph", "name": "Custom OSD", "pname": "custom-osd", "description": "Fully customize your OSD ( On Screen Display ) pop ups like Volume , Brightness or Caffeine , Lock Keys etc. \n\n- Move, orient, resize, show numeric %, choose monitor, set hide-delay and style to match your theme and liking. \n- Select any combination of components to display: icon, text-label, level-bar, numeric %.\n- OSD components can be turned On/Off based on OSD types.\n- Background effects like Gradient, Blur, Psuedo Glass etc\n- Clock OSD to show current date/time on a hotkey (default none. set hotkey in settings).\n\nUpdate: \n- Save multiple Settings profiles and choose one to apply.\n- Import / Export settings profiles.\n- Share / get profile presets in github.\n- Translations : Spanish and Indonesian (thanks to contributors)\n\nOther extensions: https://extensions.gnome.org/accounts/profile/neuromorph\n", "link": "https://extensions.gnome.org/extension/6142/custom-osd/", "shell_version_map": {
-    "42": {"version": "24", "sha256": "1cgl2lbk8sigzly5bb79fx7q1adb29aq5sm757kyd74n8i0v50ai", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvY3VzdG9tLW9zZCIsCiAgInV1aWQiOiAiY3VzdG9tLW9zZEBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDI0Cn0="},
-    "43": {"version": "24", "sha256": "1cgl2lbk8sigzly5bb79fx7q1adb29aq5sm757kyd74n8i0v50ai", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvY3VzdG9tLW9zZCIsCiAgInV1aWQiOiAiY3VzdG9tLW9zZEBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDI0Cn0="},
-    "44": {"version": "24", "sha256": "1cgl2lbk8sigzly5bb79fx7q1adb29aq5sm757kyd74n8i0v50ai", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvY3VzdG9tLW9zZCIsCiAgInV1aWQiOiAiY3VzdG9tLW9zZEBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDI0Cn0="},
-    "45": {"version": "23", "sha256": "0h9g45nq1mv90xqj8vivvl3jg8qzkx0pgscaj0rn0zvnqad7752p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZXVyb21vcnBoL2N1c3RvbS1vc2QiLAogICJ1dWlkIjogImN1c3RvbS1vc2RAbmV1cm9tb3JwaCIsCiAgInZlcnNpb24iOiAyMwp9"}
+, {"uuid": "custom-osd@neuromorph", "name": "Custom OSD", "pname": "custom-osd", "description": "Fully customize your OSD ( On Screen Display ) pop ups like Volume , Brightness or Caffeine , Lock Keys etc. \n\nUPDATE (v25, v26):\n- Profiles: New default profiles added for new users to get started\n- Vertical Position: Please note vertical position convention is changed: +50 is Top and -50 is Bottom of screen\n- Size also changed a bit so you may need to resize existing OSDs in settings\n- Square/Circle toggle option allows to get squarish/circlish shapes (as you vary Shape Shift)\n- New Special Effects: Progress Ring and Background Image (see below)\n- Gradient: New radial gradient direction and option to set end color opacity\n- Level: New level color, opacity and thickness options\n- Border: New border color, opacity and thickness options\n- Padding: New horizontal and vertical padding options\n- Shadow: New shadow color option\n- Font: Improved implementation of font attributes (font style, stretch, weight)\n- Trigger custom OSDs from command line (e.g. from a script) (see ReadMe on GitHub: https://github.com/neuromorph/custom-osd?tab=readme-ov-file#trigger-custom-osds-from-command-line)\n\nProgress Ring / Disk:\n- Select Special Effect 'Progress Ring' in settings\n- Set 'Ring Gap from Border' and 'Level Thickness' to get a Progress Ring or Progress Disk\n- For Disk, set Gap to 100 and adjust Level. For Ring reduce Gap say 40-50 and adjust Level.\n- Set Square / Circle On to get that shape.\n- Combine with Shape Shift and color / opacity styles for fg, bg, level and border\n\nBackground Image:\n- Set any image as OSD background (smaller size preferred)\n- Select Special Effect 'Background Image'\n- In 'Background Image File', provide path to a local file e.g. Pictures/myOsdImage.png\n\nFeatures:\n- Customize OSD position, orientation, size, numeric %,  monitor to show on, hide-delay and style \n- Select any combination of components to display: icon, text-label, level-bar, numeric %.\n- OSD components can be turned On/Off based on OSD types.\n- Special effects like Progress Ring, Gradient, Blur, Background Image etc\n- Clock OSD to show current date/time on a hotkey (default none. set hotkey in settings).\n- Create and Save multiple Settings profiles and choose one to apply (Profiles page in settings).\n- Import / Export settings profiles.\n- Share / get profile presets in GitHub.\n\n\nTranslations : Spanish and Indonesian (thanks to contributors)", "link": "https://extensions.gnome.org/extension/6142/custom-osd/", "shell_version_map": {
+    "42": {"version": "25", "sha256": "1mwpxiskdp34m1zqls3df7awwd34kmbl09g57fir54cwrddf3knn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvY3VzdG9tLW9zZCIsCiAgInV1aWQiOiAiY3VzdG9tLW9zZEBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDI1Cn0="},
+    "43": {"version": "25", "sha256": "1mwpxiskdp34m1zqls3df7awwd34kmbl09g57fir54cwrddf3knn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvY3VzdG9tLW9zZCIsCiAgInV1aWQiOiAiY3VzdG9tLW9zZEBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDI1Cn0="},
+    "44": {"version": "25", "sha256": "1mwpxiskdp34m1zqls3df7awwd34kmbl09g57fir54cwrddf3knn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvY3VzdG9tLW9zZCIsCiAgInV1aWQiOiAiY3VzdG9tLW9zZEBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDI1Cn0="},
+    "45": {"version": "26", "sha256": "1hhlsgapr8ha79c5hx8rmhp7kzkv5frn5fxbzks9iz1v5inpj7x7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmV1cm9tb3JwaC9jdXN0b20tb3NkIiwKICAidXVpZCI6ICJjdXN0b20tb3NkQG5ldXJvbW9ycGgiLAogICJ2ZXJzaW9uIjogMjYKfQ=="},
+    "46": {"version": "26", "sha256": "1hhlsgapr8ha79c5hx8rmhp7kzkv5frn5fxbzks9iz1v5inpj7x7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZ1bGx5IGN1c3RvbWl6ZSB5b3VyIE9TRCAoIE9uIFNjcmVlbiBEaXNwbGF5ICkgcG9wIHVwcyBsaWtlIFZvbHVtZSAsIEJyaWdodG5lc3Mgb3IgQ2FmZmVpbmUgLCBMb2NrIEtleXMgZXRjLiBNb3ZlLCBvcmllbnQsIHJlc2l6ZSwgbnVtZXJpYyAlLCBjaG9vc2UgbW9uaXRvciwgc2V0IGhpZGUtZGVsYXkgYW5kIHN0eWxlIHRvIG1hdGNoIHlvdXIgdGhlbWUgYW5kIGxpa2luZy4gWW91IGNhbiBhbHNvIHNlbGVjdCBhbnkgY29tYmluYXRpb24gb2YgY29tcG9uZW50cyB0byBkaXNwbGF5OiBpY29uLCB0ZXh0LWxhYmVsLCBsZXZlbC1iYXIsIG51bWVyaWMgJS4gIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImN1c3RvbS1vc2QiLAogICJuYW1lIjogIkN1c3RvbSBPU0QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuY3VzdG9tLW9zZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmV1cm9tb3JwaC9jdXN0b20tb3NkIiwKICAidXVpZCI6ICJjdXN0b20tb3NkQG5ldXJvbW9ycGgiLAogICJ2ZXJzaW9uIjogMjYKfQ=="}
   }}
 , {"uuid": "switch-x11-wayland@prasanthc41m.github.com", "name": "Switch X11 Wayland Default Session", "pname": "switch-x11-wayland-default-session", "description": "A GNOME Shell extension that adds a X11 or Wayland session indicator to the top panel and allows the user to switch default session between X11 and Wayland.", "link": "https://extensions.gnome.org/extension/6145/switch-x11-wayland-default-session/", "shell_version_map": {
     "44": {"version": "5", "sha256": "1kscrxpxj1nij6336fdjidp7ff3n8yd5lyz34mbrs5gqnzzy7fm9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgZXh0ZW5zaW9uIHRoYXQgYWRkcyBhIFgxMSBvciBXYXlsYW5kIHNlc3Npb24gaW5kaWNhdG9yIHRvIHRoZSB0b3AgcGFuZWwgYW5kIGFsbG93cyB0aGUgdXNlciB0byBzd2l0Y2ggZGVmYXVsdCBzZXNzaW9uIGJldHdlZW4gWDExIGFuZCBXYXlsYW5kLiIsCiAgIm5hbWUiOiAiU3dpdGNoIFgxMSBXYXlsYW5kIERlZmF1bHQgU2Vzc2lvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wcmFzYW50aGM0MW0vc3dpdGNoLXgxMS13YXlsYW5kIiwKICAidXVpZCI6ICJzd2l0Y2gteDExLXdheWxhbmRAcHJhc2FudGhjNDFtLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"}
@@ -6128,17 +6364,19 @@
     "45": {"version": "7", "sha256": "0045lld30k30425scg2f686isnh2sqvwq41n62p9jc2lx4kvh5kg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVTRCAoVVMgRG9sbGFyKSBjb252ZXJ0ZWQgdG8gVFJZIChUdXJraXNoIExpcmEpLiBVcGRhdGVzIGFyZSByZWNlaXZlZCBldmVyeSAzMCBzZWNvbmRzLlxuXG5JdCBpcyBhIGZvcmsgb2YgRG9sbGFyLVBLUi4gVGhpcyBleHRlbnNpb24gdXNlcyBlY29ub21pYS5hd2Vzb21lYXBpLmNvbS5iciIsCiAgIm5hbWUiOiAiVVNELVRSWSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hcmlmZXNhdC9VU0QtVFJZLUdTaGVsbCIsCiAgInV1aWQiOiAidXNkLXRyeS1nc2hlbGxAYXJpZmVzYXQuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA3Cn0="}
   }}
 , {"uuid": "hide-dock-in-overview@roslax", "name": "Hide the dock in overview", "pname": "hide-the-dock-in-overview", "description": "hides the dock in overview mode", "link": "https://extensions.gnome.org/extension/6195/hide-the-dock-in-overview/", "shell_version_map": {
-    "43": {"version": "7", "sha256": "1qfjnfgx6vdq1xp5f6j7jf818993xpa2h4lg9y4dnfndclh0yazl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImhpZGVzIHRoZSBkb2NrIGluIG92ZXJ2aWV3IG1vZGUiLAogICJuYW1lIjogIkhpZGUgdGhlIGRvY2sgaW4gb3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm9zR3RIdWIvSGlkZS1kb2NrLWluLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJoaWRlLWRvY2staW4tb3ZlcnZpZXdAcm9zbGF4IiwKICAidmVyc2lvbiI6IDcKfQ=="},
-    "44": {"version": "3", "sha256": "12f1qrc9hahjrqxvdviqz99pkgzs75f9k6qnnz4fh9v61bqwi31d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImhpZGVzIHRoZSBkb2NrIGluIG92ZXJ2aWV3IG1vZGUiLAogICJuYW1lIjogIkhpZGUgdGhlIGRvY2sgaW4gb3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm9zR3RIdWIvSGlkZS1kb2NrLWluLW92ZXJ2aWV3L3RyZWUvbWFpbiIsCiAgInV1aWQiOiAiaGlkZS1kb2NrLWluLW92ZXJ2aWV3QHJvc2xheCIsCiAgInZlcnNpb24iOiAzCn0="},
-    "45": {"version": "6", "sha256": "07bpr6xfpcbyx1braaada0n257fcgyisfpif42c6w9cann6ffq6m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImhpZGVzIHRoZSBkb2NrIGluIG92ZXJ2aWV3IG1vZGUiLAogICJuYW1lIjogIkhpZGUgdGhlIGRvY2sgaW4gb3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm9zR3RIdWIvSGlkZS1kb2NrLWluLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJoaWRlLWRvY2staW4tb3ZlcnZpZXdAcm9zbGF4IiwKICAidmVyc2lvbiI6IDYKfQ=="}
+    "43": {"version": "16", "sha256": "1gbwm8gwcrk2qslxgcb65jqgbcnlpsp4wbl655dg7wj8fa88l6ns", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImhpZGVzIHRoZSBkb2NrIGluIG92ZXJ2aWV3IG1vZGUiLAogICJuYW1lIjogIkhpZGUgdGhlIGRvY2sgaW4gb3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm9zR3RIdWIvSGlkZS1kb2NrLWluLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJoaWRlLWRvY2staW4tb3ZlcnZpZXdAcm9zbGF4IiwKICAidmVyc2lvbiI6IDE2Cn0="},
+    "44": {"version": "15", "sha256": "1b998f73j74q48fwmih5cl8g7kf0015vgnns265yadws96cz2pk8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImhpZGVzIHRoZSBkb2NrIGluIG92ZXJ2aWV3IG1vZGUiLAogICJuYW1lIjogIkhpZGUgdGhlIGRvY2sgaW4gb3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm9zR3RIdWIvSGlkZS1kb2NrLWluLW92ZXJ2aWV3L3RyZWUvbWFpbiIsCiAgInV1aWQiOiAiaGlkZS1kb2NrLWluLW92ZXJ2aWV3QHJvc2xheCIsCiAgInZlcnNpb24iOiAxNQp9"},
+    "45": {"version": "14", "sha256": "13kcvmnq41f0i8kxm8kpd3w880hq84w0ixza1sj1fv6vc8k80rhn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogImhpZGVzIHRoZSBkb2NrIGluIG92ZXJ2aWV3IG1vZGUiLAogICJuYW1lIjogIkhpZGUgdGhlIGRvY2sgaW4gb3ZlcnZpZXciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm9zR3RIdWIvSGlkZS1kb2NrLWluLW92ZXJ2aWV3IiwKICAidXVpZCI6ICJoaWRlLWRvY2staW4tb3ZlcnZpZXdAcm9zbGF4IiwKICAidmVyc2lvbiI6IDE0Cn0="}
   }}
 , {"uuid": "light-style@gnome-shell-extensions.gcampax.github.com", "name": "Light Style", "pname": "light-style", "description": "Switch default to light style", "link": "https://extensions.gnome.org/extension/6198/light-style/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "1x846d9s4knv36g0wh3zmkmpkvv14jbb15qh9pa5xwmysbpbawh7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCBkZWZhdWx0IHRvIGxpZ2h0IHN0eWxlIiwKICAiZXh0ZW5zaW9uLWlkIjogImxpZ2h0LXN0eWxlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxpZ2h0LXN0eWxlIiwKICAibmFtZSI6ICJMaWdodCBTdHlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5saWdodC1zdHlsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJsaWdodC1zdHlsZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="}
+    "45": {"version": "3", "sha256": "1x846d9s4knv36g0wh3zmkmpkvv14jbb15qh9pa5xwmysbpbawh7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCBkZWZhdWx0IHRvIGxpZ2h0IHN0eWxlIiwKICAiZXh0ZW5zaW9uLWlkIjogImxpZ2h0LXN0eWxlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxpZ2h0LXN0eWxlIiwKICAibmFtZSI6ICJMaWdodCBTdHlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5saWdodC1zdHlsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJsaWdodC1zdHlsZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="},
+    "46": {"version": "5", "sha256": "1ms18x61w2vx2yl399871haav4iklyxlv91xfljanlkig6mmbq0g", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCBkZWZhdWx0IHRvIGxpZ2h0IHN0eWxlIiwKICAiZXh0ZW5zaW9uLWlkIjogImxpZ2h0LXN0eWxlIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWxpZ2h0LXN0eWxlIiwKICAibmFtZSI6ICJMaWdodCBTdHlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5saWdodC1zdHlsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAidXVpZCI6ICJsaWdodC1zdHlsZUBnbm9tZS1zaGVsbC1leHRlbnNpb25zLmdjYW1wYXguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="}
   }}
 , {"uuid": "transmission-daemon-ng@glerro.pm.me", "name": "Transmission Daemon Indicator NG", "pname": "transmission-daemon-indicator-ng", "description": "Monitor and control transmission-daemon or transmission-gtk.\nThe extension use the Transmission RPC protocol for interacting with it.\n\nFragments 2.0 user also can use this extension because it is a frontend for transmission-daemon.\n\nThis extension is only for Gnome Shell version major or equal to 43 because it use libsoup3.", "link": "https://extensions.gnome.org/extension/6204/transmission-daemon-indicator-ng/", "shell_version_map": {
     "43": {"version": "5", "sha256": "1g4dxrw7d9yik2y86l66nm50p7glyym6x0ff005kxmd42cl7dv9y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vbml0b3IgYW5kIGNvbnRyb2wgdHJhbnNtaXNzaW9uLWRhZW1vbiBvciB0cmFuc21pc3Npb24tZ3RrLlxuVGhlIGV4dGVuc2lvbiB1c2UgdGhlIFRyYW5zbWlzc2lvbiBSUEMgcHJvdG9jb2wgZm9yIGludGVyYWN0aW5nIHdpdGggaXQuXG5cbkZyYWdtZW50cyAyLjAgdXNlciBhbHNvIGNhbiB1c2UgdGhpcyBleHRlbnNpb24gYmVjYXVzZSBpdCBpcyBhIGZyb250ZW5kIGZvciB0cmFuc21pc3Npb24tZGFlbW9uLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBvbmx5IGZvciBHbm9tZSBTaGVsbCB2ZXJzaW9uIG1ham9yIG9yIGVxdWFsIHRvIDQzIGJlY2F1c2UgaXQgdXNlIGxpYnNvdXAzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgIm5hbWUiOiAiVHJhbnNtaXNzaW9uIERhZW1vbiBJbmRpY2F0b3IgTkciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc21pc3Npb24tZGFlbW9uLW5nIiwKICAidXVpZCI6ICJ0cmFuc21pc3Npb24tZGFlbW9uLW5nQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiA1Cn0="},
     "44": {"version": "5", "sha256": "1g4dxrw7d9yik2y86l66nm50p7glyym6x0ff005kxmd42cl7dv9y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vbml0b3IgYW5kIGNvbnRyb2wgdHJhbnNtaXNzaW9uLWRhZW1vbiBvciB0cmFuc21pc3Npb24tZ3RrLlxuVGhlIGV4dGVuc2lvbiB1c2UgdGhlIFRyYW5zbWlzc2lvbiBSUEMgcHJvdG9jb2wgZm9yIGludGVyYWN0aW5nIHdpdGggaXQuXG5cbkZyYWdtZW50cyAyLjAgdXNlciBhbHNvIGNhbiB1c2UgdGhpcyBleHRlbnNpb24gYmVjYXVzZSBpdCBpcyBhIGZyb250ZW5kIGZvciB0cmFuc21pc3Npb24tZGFlbW9uLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBvbmx5IGZvciBHbm9tZSBTaGVsbCB2ZXJzaW9uIG1ham9yIG9yIGVxdWFsIHRvIDQzIGJlY2F1c2UgaXQgdXNlIGxpYnNvdXAzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgIm5hbWUiOiAiVHJhbnNtaXNzaW9uIERhZW1vbiBJbmRpY2F0b3IgTkciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc21pc3Npb24tZGFlbW9uLW5nIiwKICAidXVpZCI6ICJ0cmFuc21pc3Npb24tZGFlbW9uLW5nQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiA1Cn0="},
-    "45": {"version": "7", "sha256": "0yn838z4y3ycf8ydcnc4a1w4abjp1sss0sjpka7kkmqx6vms13hm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vbml0b3IgYW5kIGNvbnRyb2wgdHJhbnNtaXNzaW9uLWRhZW1vbiBvciB0cmFuc21pc3Npb24tZ3RrLlxuVGhlIGV4dGVuc2lvbiB1c2UgdGhlIFRyYW5zbWlzc2lvbiBSUEMgcHJvdG9jb2wgZm9yIGludGVyYWN0aW5nIHdpdGggaXQuXG5cbkZyYWdtZW50cyAyLjAgdXNlciBhbHNvIGNhbiB1c2UgdGhpcyBleHRlbnNpb24gYmVjYXVzZSBpdCBpcyBhIGZyb250ZW5kIGZvciB0cmFuc21pc3Npb24tZGFlbW9uLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBvbmx5IGZvciBHbm9tZSBTaGVsbCB2ZXJzaW9uIG1ham9yIG9yIGVxdWFsIHRvIDQzIGJlY2F1c2UgaXQgdXNlIGxpYnNvdXAzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgIm5hbWUiOiAiVHJhbnNtaXNzaW9uIERhZW1vbiBJbmRpY2F0b3IgTkciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc21pc3Npb24tZGFlbW9uLW5nIiwKICAidXVpZCI6ICJ0cmFuc21pc3Npb24tZGFlbW9uLW5nQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiA3Cn0="}
+    "45": {"version": "8", "sha256": "0licafb0i2xha7wwrlq33fpq9wr8fzis0mnqlv3sjg4bwiswh83s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vbml0b3IgYW5kIGNvbnRyb2wgdHJhbnNtaXNzaW9uLWRhZW1vbiBvciB0cmFuc21pc3Npb24tZ3RrLlxuVGhlIGV4dGVuc2lvbiB1c2UgdGhlIFRyYW5zbWlzc2lvbiBSUEMgcHJvdG9jb2wgZm9yIGludGVyYWN0aW5nIHdpdGggaXQuXG5cbkZyYWdtZW50cyAyLjAgdXNlciBhbHNvIGNhbiB1c2UgdGhpcyBleHRlbnNpb24gYmVjYXVzZSBpdCBpcyBhIGZyb250ZW5kIGZvciB0cmFuc21pc3Npb24tZGFlbW9uLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBvbmx5IGZvciBHbm9tZSBTaGVsbCB2ZXJzaW9uIG1ham9yIG9yIGVxdWFsIHRvIDQzIGJlY2F1c2UgaXQgdXNlIGxpYnNvdXAzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgIm5hbWUiOiAiVHJhbnNtaXNzaW9uIERhZW1vbiBJbmRpY2F0b3IgTkciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc21pc3Npb24tZGFlbW9uLW5nIiwKICAidXVpZCI6ICJ0cmFuc21pc3Npb24tZGFlbW9uLW5nQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiA4Cn0="},
+    "46": {"version": "8", "sha256": "0licafb0i2xha7wwrlq33fpq9wr8fzis0mnqlv3sjg4bwiswh83s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vbml0b3IgYW5kIGNvbnRyb2wgdHJhbnNtaXNzaW9uLWRhZW1vbiBvciB0cmFuc21pc3Npb24tZ3RrLlxuVGhlIGV4dGVuc2lvbiB1c2UgdGhlIFRyYW5zbWlzc2lvbiBSUEMgcHJvdG9jb2wgZm9yIGludGVyYWN0aW5nIHdpdGggaXQuXG5cbkZyYWdtZW50cyAyLjAgdXNlciBhbHNvIGNhbiB1c2UgdGhpcyBleHRlbnNpb24gYmVjYXVzZSBpdCBpcyBhIGZyb250ZW5kIGZvciB0cmFuc21pc3Npb24tZGFlbW9uLlxuXG5UaGlzIGV4dGVuc2lvbiBpcyBvbmx5IGZvciBHbm9tZSBTaGVsbCB2ZXJzaW9uIG1ham9yIG9yIGVxdWFsIHRvIDQzIGJlY2F1c2UgaXQgdXNlIGxpYnNvdXAzLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImdsZXJybyIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tdHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgIm5hbWUiOiAiVHJhbnNtaXNzaW9uIERhZW1vbiBJbmRpY2F0b3IgTkciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudHJhbnNtaXNzaW9uLWRhZW1vbi1uZyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi10cmFuc21pc3Npb24tZGFlbW9uLW5nIiwKICAidXVpZCI6ICJ0cmFuc21pc3Npb24tZGFlbW9uLW5nQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiA4Cn0="}
   }}
 , {"uuid": "seasonal-clock@johanbove.info", "name": "Seasonal Clock", "pname": "seasonal-clock", "description": "Displays the current Seasonal Clock hour in the Gnome panel", "link": "https://extensions.gnome.org/extension/6210/seasonal-clock/", "shell_version_map": {
     "43": {"version": "2", "sha256": "1kmxrmszrxg4fsvw4qy2npkxfbmqq0s1fki4a7gby7m0d589fa0q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHRoZSBjdXJyZW50IFNlYXNvbmFsIENsb2NrIGhvdXIgaW4gdGhlIEdub21lIHBhbmVsIiwKICAibmFtZSI6ICJTZWFzb25hbCBDbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vam9oYW5ib3ZlL3NlYXNvbmFsY2xvY2stZ25vbWUiLAogICJ1dWlkIjogInNlYXNvbmFsLWNsb2NrQGpvaGFuYm92ZS5pbmZvIiwKICAidmVyc2lvbiI6IDIKfQ=="},
@@ -6158,7 +6396,8 @@
     "42": {"version": "2", "sha256": "0ipm0r4msyc8zrmff2r0nmyp9anwswxkq6hhdibw238pqmb77djr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGhpZGVzIHRoZSBuZXR3b3JrIGljb24uIiwKICAibmFtZSI6ICJIaWRlIE5ldHdvcmsgSWNvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogIiIsCiAgInV1aWQiOiAiaGlkZS1uZXR3b3JrLWljb25AeWVub2YudGh1bmRlciIsCiAgInZlcnNpb24iOiAyCn0="}
   }}
 , {"uuid": "bottom-overview@fthx", "name": "Bottom Overview", "pname": "bottom-overview", "description": "Overview appears when hovering the bottom of your screen.\n\n Adapted from @jdoda's Hot Edge extension.", "link": "https://extensions.gnome.org/extension/6230/bottom-overview/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "0fw2qw65ax44yi73mvy1qkpphiarp9rnxs3ix49mlfgyk7yamc4s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk92ZXJ2aWV3IGFwcGVhcnMgd2hlbiBob3ZlcmluZyB0aGUgYm90dG9tIG9mIHlvdXIgc2NyZWVuLlxuXG4gQWRhcHRlZCBmcm9tIEBqZG9kYSdzIEhvdCBFZGdlIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIkJvdHRvbSBPdmVydmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2JvdHRvbS1vdmVydmlldyIsCiAgInV1aWQiOiAiYm90dG9tLW92ZXJ2aWV3QGZ0aHgiLAogICJ2ZXJzaW9uIjogMwp9"}
+    "45": {"version": "3", "sha256": "0fw2qw65ax44yi73mvy1qkpphiarp9rnxs3ix49mlfgyk7yamc4s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk92ZXJ2aWV3IGFwcGVhcnMgd2hlbiBob3ZlcmluZyB0aGUgYm90dG9tIG9mIHlvdXIgc2NyZWVuLlxuXG4gQWRhcHRlZCBmcm9tIEBqZG9kYSdzIEhvdCBFZGdlIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIkJvdHRvbSBPdmVydmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2JvdHRvbS1vdmVydmlldyIsCiAgInV1aWQiOiAiYm90dG9tLW92ZXJ2aWV3QGZ0aHgiLAogICJ2ZXJzaW9uIjogMwp9"},
+    "46": {"version": "5", "sha256": "1f5jsl0cm2z54lkp56m3p6fxrkryybrifdwr7fssdszg5slsbf5y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk92ZXJ2aWV3IGFwcGVhcnMgd2hlbiBob3ZlcmluZyB0aGUgYm90dG9tIG9mIHlvdXIgc2NyZWVuLlxuXG4gQWRhcHRlZCBmcm9tIEBqZG9kYSdzIEhvdCBFZGdlIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIkJvdHRvbSBPdmVydmlldyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L2JvdHRvbS1vdmVydmlldyIsCiAgInV1aWQiOiAiYm90dG9tLW92ZXJ2aWV3QGZ0aHgiLAogICJ2ZXJzaW9uIjogNQp9"}
   }}
 , {"uuid": "autolock-keyring@jerome-boillot.com", "name": "Auto-Lock Keyring", "pname": "auto-lock-keyring", "description": "Automatically locks the keyring following period of inactivity", "link": "https://extensions.gnome.org/extension/6236/auto-lock-keyring/", "shell_version_map": {
     "42": {"version": "1", "sha256": "1cy7l0ywap11ykqaj0pys7ghdw99ignk8xid00ljmsmfiivhc92a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgbG9ja3MgdGhlIGtleXJpbmcgZm9sbG93aW5nIHBlcmlvZCBvZiBpbmFjdGl2aXR5IiwKICAibmFtZSI6ICJBdXRvLUxvY2sgS2V5cmluZyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvbG9jay1rZXlyaW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamJvaWxsb3QvYXV0b2xvY2sta2V5cmluZyIsCiAgInV1aWQiOiAiYXV0b2xvY2sta2V5cmluZ0BqZXJvbWUtYm9pbGxvdC5jb20iLAogICJ2ZXJzaW9uIjogMQp9"},
@@ -6177,10 +6416,12 @@
     "42": {"version": "9", "sha256": "1832867id0z8jbd98dxfywj7k3xr4jjrdi7cblb4dhi2sii6svn6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVtb2ppIGNvcHkgaXMgYSB2ZXJzYXRpbGUgZXh0ZW5zaW9uIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IGVtb2ppIHNlbGVjdGlvbiBhbmQgY2xpcGJvYXJkIG1hbmFnZW1lbnQuXG5cbkl0IGlzIGEgZm9yayBvZiBFbW9qaSBTZWxlY3Rvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlbW9qaS1jb3B5IiwKICAibmFtZSI6ICJFbW9qaSBDb3B5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVtb2ppLWNvcHkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZlbGlwZWZ0bi9lbW9qaS1jb3B5IiwKICAidXVpZCI6ICJlbW9qaS1jb3B5QGZlbGlwZWZ0biIsCiAgInZlcnNpb24iOiA5Cn0="},
     "43": {"version": "9", "sha256": "1832867id0z8jbd98dxfywj7k3xr4jjrdi7cblb4dhi2sii6svn6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVtb2ppIGNvcHkgaXMgYSB2ZXJzYXRpbGUgZXh0ZW5zaW9uIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IGVtb2ppIHNlbGVjdGlvbiBhbmQgY2xpcGJvYXJkIG1hbmFnZW1lbnQuXG5cbkl0IGlzIGEgZm9yayBvZiBFbW9qaSBTZWxlY3Rvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlbW9qaS1jb3B5IiwKICAibmFtZSI6ICJFbW9qaSBDb3B5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVtb2ppLWNvcHkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZlbGlwZWZ0bi9lbW9qaS1jb3B5IiwKICAidXVpZCI6ICJlbW9qaS1jb3B5QGZlbGlwZWZ0biIsCiAgInZlcnNpb24iOiA5Cn0="},
     "44": {"version": "9", "sha256": "1832867id0z8jbd98dxfywj7k3xr4jjrdi7cblb4dhi2sii6svn6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVtb2ppIGNvcHkgaXMgYSB2ZXJzYXRpbGUgZXh0ZW5zaW9uIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IGVtb2ppIHNlbGVjdGlvbiBhbmQgY2xpcGJvYXJkIG1hbmFnZW1lbnQuXG5cbkl0IGlzIGEgZm9yayBvZiBFbW9qaSBTZWxlY3Rvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlbW9qaS1jb3B5IiwKICAibmFtZSI6ICJFbW9qaSBDb3B5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVtb2ppLWNvcHkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZlbGlwZWZ0bi9lbW9qaS1jb3B5IiwKICAidXVpZCI6ICJlbW9qaS1jb3B5QGZlbGlwZWZ0biIsCiAgInZlcnNpb24iOiA5Cn0="},
-    "45": {"version": "16", "sha256": "08s99nph5zz34g8aaf8r7fh4a8w9mg6lv67cx0ravyfnb6anmc90", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVtb2ppIGNvcHkgaXMgYSB2ZXJzYXRpbGUgZXh0ZW5zaW9uIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IGVtb2ppIHNlbGVjdGlvbiBhbmQgY2xpcGJvYXJkIG1hbmFnZW1lbnQuXG5cbkl0IGlzIGEgZm9yayBvZiBFbW9qaSBTZWxlY3Rvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlbW9qaS1jb3B5IiwKICAibmFtZSI6ICJFbW9qaSBDb3B5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVtb2ppLWNvcHkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmVsaXBlZnRuL2Vtb2ppLWNvcHkiLAogICJ1dWlkIjogImVtb2ppLWNvcHlAZmVsaXBlZnRuIiwKICAidmVyc2lvbiI6IDE2Cn0="}
+    "45": {"version": "21", "sha256": "1xmz6h8n5827jjx6qms3hcbk693iawig538mmdw27wsd8sxaslql", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVtb2ppIGNvcHkgaXMgYSB2ZXJzYXRpbGUgZXh0ZW5zaW9uIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IGVtb2ppIHNlbGVjdGlvbiBhbmQgY2xpcGJvYXJkIG1hbmFnZW1lbnQuXG5cbkl0IGlzIGEgZm9yayBvZiBFbW9qaSBTZWxlY3Rvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlbW9qaS1jb3B5IiwKICAibmFtZSI6ICJFbW9qaSBDb3B5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVtb2ppLWNvcHkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZlbGlwZWZ0bi9lbW9qaS1jb3B5IiwKICAidXVpZCI6ICJlbW9qaS1jb3B5QGZlbGlwZWZ0biIsCiAgInZlcnNpb24iOiAyMQp9"},
+    "46": {"version": "21", "sha256": "1xmz6h8n5827jjx6qms3hcbk693iawig538mmdw27wsd8sxaslql", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVtb2ppIGNvcHkgaXMgYSB2ZXJzYXRpbGUgZXh0ZW5zaW9uIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IGVtb2ppIHNlbGVjdGlvbiBhbmQgY2xpcGJvYXJkIG1hbmFnZW1lbnQuXG5cbkl0IGlzIGEgZm9yayBvZiBFbW9qaSBTZWxlY3Rvci4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJlbW9qaS1jb3B5IiwKICAibmFtZSI6ICJFbW9qaSBDb3B5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmVtb2ppLWNvcHkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2ZlbGlwZWZ0bi9lbW9qaS1jb3B5IiwKICAidXVpZCI6ICJlbW9qaS1jb3B5QGZlbGlwZWZ0biIsCiAgInZlcnNpb24iOiAyMQp9"}
   }}
 , {"uuid": "notification-icons@muhammad_ans.github", "name": "Top Panel Notification Icons Revived", "pname": "top-panel-notification-icons-revived", "description": "Displays notifications icon in top panel", "link": "https://extensions.gnome.org/extension/6248/top-panel-notification-icons-revived/", "shell_version_map": {
-    "45": {"version": "5", "sha256": "19pkkzvkzbr6wwyd405757fjbikk65q4lvvxa82bbnpggkb6nns4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIG5vdGlmaWNhdGlvbnMgaWNvbiBpbiB0b3AgcGFuZWwiLAogICJuYW1lIjogIlRvcCBQYW5lbCBOb3RpZmljYXRpb24gSWNvbnMgUmV2aXZlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ub3RpZmljYXRpb24taWNvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL211aGFtbWFkLWFucy9ub3RpZmljYXRpb24taWNvbnMiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1pY29uc0BtdWhhbW1hZF9hbnMuZ2l0aHViIiwKICAidmVyc2lvbiI6IDUKfQ=="}
+    "45": {"version": "5", "sha256": "19pkkzvkzbr6wwyd405757fjbikk65q4lvvxa82bbnpggkb6nns4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIG5vdGlmaWNhdGlvbnMgaWNvbiBpbiB0b3AgcGFuZWwiLAogICJuYW1lIjogIlRvcCBQYW5lbCBOb3RpZmljYXRpb24gSWNvbnMgUmV2aXZlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ub3RpZmljYXRpb24taWNvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL211aGFtbWFkLWFucy9ub3RpZmljYXRpb24taWNvbnMiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1pY29uc0BtdWhhbW1hZF9hbnMuZ2l0aHViIiwKICAidmVyc2lvbiI6IDUKfQ=="},
+    "46": {"version": "5", "sha256": "19pkkzvkzbr6wwyd405757fjbikk65q4lvvxa82bbnpggkb6nns4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIG5vdGlmaWNhdGlvbnMgaWNvbiBpbiB0b3AgcGFuZWwiLAogICJuYW1lIjogIlRvcCBQYW5lbCBOb3RpZmljYXRpb24gSWNvbnMgUmV2aXZlZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5ub3RpZmljYXRpb24taWNvbnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL211aGFtbWFkLWFucy9ub3RpZmljYXRpb24taWNvbnMiLAogICJ1dWlkIjogIm5vdGlmaWNhdGlvbi1pY29uc0BtdWhhbW1hZF9hbnMuZ2l0aHViIiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
 , {"uuid": "huanghaohhoa@163.com", "name": "Application Tabs", "pname": "application-tabs", "description": "Panel will include a different window tab for the same application that is currently launched.\n1. You can see the application window intuitively\n2. Click tab to jump to the corresponding window immediately\n3. Click the Close button to close the window", "link": "https://extensions.gnome.org/extension/6254/application-tabs/", "shell_version_map": {
     "45": {"version": "14", "sha256": "0jc3sfwhb8l3gk1nf06ryqzahsjidjzw486cmzbbzdxnbqnn210f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlBhbmVsIHdpbGwgaW5jbHVkZSBhIGRpZmZlcmVudCB3aW5kb3cgdGFiIGZvciB0aGUgc2FtZSBhcHBsaWNhdGlvbiB0aGF0IGlzIGN1cnJlbnRseSBsYXVuY2hlZC5cbjEuIFlvdSBjYW4gc2VlIHRoZSBhcHBsaWNhdGlvbiB3aW5kb3cgaW50dWl0aXZlbHlcbjIuIENsaWNrIHRhYiB0byBqdW1wIHRvIHRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdyBpbW1lZGlhdGVseVxuMy4gQ2xpY2sgdGhlIENsb3NlIGJ1dHRvbiB0byBjbG9zZSB0aGUgd2luZG93IiwKICAibmFtZSI6ICJBcHBsaWNhdGlvbiBUYWJzIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmFwcF90YWJzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hob2FvL2FwcF90YWJzIiwKICAidXVpZCI6ICJodWFuZ2hhb2hob2FAMTYzLmNvbSIsCiAgInZlcnNpb24iOiAxNAp9"}
@@ -6190,16 +6431,18 @@
   }}
 , {"uuid": "zen@le0.gs", "name": "Zen", "pname": "zen", "description": "Various tweaks for a more predictable Gnome shell experience", "link": "https://extensions.gnome.org/extension/6263/zen/", "shell_version_map": {
     "44": {"version": "4", "sha256": "052lyqk5zgyp4pnsljl0p8rjamz3h3vwczxdsggqnli6l1c7jw4c", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZhcmlvdXMgdHdlYWtzIGZvciBhIG1vcmUgcHJlZGljdGFibGUgR25vbWUgc2hlbGwgZXhwZXJpZW5jZSIsCiAgImdldHRleHQtZG9tYWluIjogInplbkBsZTAuZ3MiLAogICJuYW1lIjogIlplbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy56ZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGVvdGFrdS96ZW4iLAogICJ1dWlkIjogInplbkBsZTAuZ3MiLAogICJ2ZXJzaW9uIjogNAp9"},
-    "45": {"version": "6", "sha256": "1jy3v5njm3xnxy50faz4yxrlmrya2yiibpgpff6j38rvcgxk8izh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZhcmlvdXMgdHdlYWtzIGZvciBhIG1vcmUgcHJlZGljdGFibGUgR25vbWUgc2hlbGwgZXhwZXJpZW5jZSIsCiAgImdldHRleHQtZG9tYWluIjogInplbkBsZTAuZ3MiLAogICJuYW1lIjogIlplbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy56ZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbGVvdGFrdS96ZW4iLAogICJ1dWlkIjogInplbkBsZTAuZ3MiLAogICJ2ZXJzaW9uIjogNgp9"}
+    "45": {"version": "7", "sha256": "19wz1is9c8jxvc37p8w6lm62ihgdnghn611lki98c7kbm7y5r2lf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZhcmlvdXMgdHdlYWtzIGZvciBhIG1vcmUgcHJlZGljdGFibGUgR25vbWUgc2hlbGwgZXhwZXJpZW5jZSIsCiAgImdldHRleHQtZG9tYWluIjogInplbkBsZTAuZ3MiLAogICJuYW1lIjogIlplbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy56ZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xlb3Rha3UvemVuIiwKICAidXVpZCI6ICJ6ZW5AbGUwLmdzIiwKICAidmVyc2lvbiI6IDcKfQ=="},
+    "46": {"version": "7", "sha256": "19wz1is9c8jxvc37p8w6lm62ihgdnghn611lki98c7kbm7y5r2lf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlZhcmlvdXMgdHdlYWtzIGZvciBhIG1vcmUgcHJlZGljdGFibGUgR25vbWUgc2hlbGwgZXhwZXJpZW5jZSIsCiAgImdldHRleHQtZG9tYWluIjogInplbkBsZTAuZ3MiLAogICJuYW1lIjogIlplbiIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy56ZW4iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2xlb3Rha3UvemVuIiwKICAidXVpZCI6ICJ6ZW5AbGUwLmdzIiwKICAidmVyc2lvbiI6IDcKfQ=="}
   }}
-, {"uuid": "extgrid@neuromorph", "name": "Extensions Glass Grid", "pname": "extensions-glass-grid", "description": "Extensions Manager : A quick overlay glass panel showing a grid to view / manage installed extensions.\n\nUpdates: \nNew theming options including 'background blur' and 'dynamic blur'. Also, navigation with mouse, touchpad, touchscreen and keyboard all are enabled. (update v3). \nFont size -+ option (update v6). Gnome 45 ported (v8). Improved performance (after v9).\nCompatibility with Blur My Shell and Desktop Cube.\n\nSuggestions are welcome.\n \n- The overlay can be quickly launched / dismissed using indicator toggle button in Panel or using a hotkey (default: Super + E). Both can be set from the Settings menu in the overlay itself.\n- The overlay will dismiss on Esc or automatically when it looses key focus. That is when you trigger open something e.g. extension preferences or when you click on some other app. \n\nHeader / Top layout: \n    - Info button: It will open an about dialog also showing brief tool guide.\n    - Settings button: Opens a menu with options for theme, Indicator button Add/Remove, launch Hotkey and font size.\n    - Theme Mode: Toggle between Dark, Neutral and Light modes.\n    - ego button: Opens extensions.gnome.org\n    - Extension app button: Launches the Extensions app.\n    - Switch: Enable / Disable all the extensions. It does not disable itself here for obvious reasons. Specifically disabling Glass Grid from its own entry in the grid will disable itself. Enabling all will enable the extensions that were enabled before you pressed Disable All.\n\nGrid Layout:\n    - Extension Name button: By default, it will open the extension preferences. If the extension has an update, it will show update-message. If the extension has an error, it will show error-message.\n    - Settings button: It will open the extension preferences. Gray button means the extension does not have preferences (so disabled).\n    - Reload button: It will reload the extension stylesheet css file(s). This is useful when you are trying to customize an extension's style.\n    - The grid layout scrolls horizontally when number of extensions are more than the page capacity. (Page Switcher popup animation included).\n    - You can use keyboard arrow keys to navigate (supports automatic pagination when key-focus moves to another page). When launched, key focus would be on the title.\n\nOther extensions: https://extensions.gnome.org/accounts/profile/neuromorph\n", "link": "https://extensions.gnome.org/extension/6269/extensions-glass-grid/", "shell_version_map": {
+, {"uuid": "extgrid@neuromorph", "name": "Glass Grid Extension Manager", "pname": "extensions-glass-grid", "description": "Extensions Manager : A quick overlay glass panel showing a grid to view / manage installed extensions.\n\nUpdates: \nNew theming options including 'background blur' and 'dynamic blur'. Also, navigation with mouse, touchpad, touchscreen and keyboard all are enabled. (update v3). \nFont size -+ option (update v6). Gnome 45 ported (v8). Improved performance (after v9).\nCompatibility with Blur My Shell and Desktop Cube.\n\nSuggestions are welcome.\n \n- The overlay can be quickly launched / dismissed using indicator toggle button in Panel or using a hotkey (default: Super + E). Both can be set from the Settings menu in the overlay itself.\n- The overlay will dismiss on Esc or automatically when it looses key focus. That is when you trigger open something e.g. extension preferences or when you click on some other app. \n\nHeader / Top layout: \n    - Info button: It will open an about dialog also showing brief tool guide.\n    - Settings button: Opens a menu with options for theme, Indicator button Add/Remove, launch Hotkey and font size.\n    - Theme Mode: Toggle between Dark, Neutral and Light modes.\n    - ego button: Opens extensions.gnome.org\n    - Extension app button: Launches the Extensions app.\n    - Switch: Enable / Disable all the extensions. It does not disable itself here for obvious reasons. Specifically disabling Glass Grid from its own entry in the grid will disable itself. Enabling all will enable the extensions that were enabled before you pressed Disable All.\n\nGrid Layout:\n    - Extension Name button: By default, it will open the extension preferences. If the extension has an update, it will show update-message. If the extension has an error, it will show error-message.\n    - Settings button: It will open the extension preferences. Gray button means the extension does not have preferences (so disabled).\n    - Reload button: It will reload the extension stylesheet css file(s). This is useful when you are trying to customize an extension's style.\n    - The grid layout scrolls horizontally when number of extensions are more than the page capacity. (Page Switcher popup animation included).\n    - You can use keyboard arrow keys to navigate (supports automatic pagination when key-focus moves to another page). When launched, key focus would be on the title.\n\nOther extensions: https://extensions.gnome.org/accounts/profile/neuromorph\n", "link": "https://extensions.gnome.org/extension/6269/extensions-glass-grid/", "shell_version_map": {
     "42": {"version": "15", "sha256": "143lpy2c08ym3f1mxqqp8kya6qkx2af2gjsvifick904frjgashz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgcXVpY2sgb3ZlcmxheSBnbGFzcyBwYW5lbCBzaG93aW5nIGEgZ3JpZCB0byB2aWV3IC8gbWFuYWdlIGluc3RhbGxlZCBleHRlbnNpb25zIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImV4dGdyaWQiLAogICJuYW1lIjogIkV4dGVuc2lvbnMgR2xhc3MgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5leHRncmlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmV1cm9tb3JwaC9nbGFzc19ncmlkIiwKICAidXVpZCI6ICJleHRncmlkQG5ldXJvbW9ycGgiLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
     "43": {"version": "15", "sha256": "143lpy2c08ym3f1mxqqp8kya6qkx2af2gjsvifick904frjgashz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgcXVpY2sgb3ZlcmxheSBnbGFzcyBwYW5lbCBzaG93aW5nIGEgZ3JpZCB0byB2aWV3IC8gbWFuYWdlIGluc3RhbGxlZCBleHRlbnNpb25zIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImV4dGdyaWQiLAogICJuYW1lIjogIkV4dGVuc2lvbnMgR2xhc3MgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5leHRncmlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmV1cm9tb3JwaC9nbGFzc19ncmlkIiwKICAidXVpZCI6ICJleHRncmlkQG5ldXJvbW9ycGgiLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
     "44": {"version": "15", "sha256": "143lpy2c08ym3f1mxqqp8kya6qkx2af2gjsvifick904frjgashz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgcXVpY2sgb3ZlcmxheSBnbGFzcyBwYW5lbCBzaG93aW5nIGEgZ3JpZCB0byB2aWV3IC8gbWFuYWdlIGluc3RhbGxlZCBleHRlbnNpb25zIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImV4dGdyaWQiLAogICJuYW1lIjogIkV4dGVuc2lvbnMgR2xhc3MgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5leHRncmlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmV1cm9tb3JwaC9nbGFzc19ncmlkIiwKICAidXVpZCI6ICJleHRncmlkQG5ldXJvbW9ycGgiLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
     "45": {"version": "14", "sha256": "0jjl5alzf78yk7mf0jzy6k6k2gw2ldkvz7630mvg2np7hvgm0rzh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgcXVpY2sgb3ZlcmxheSBnbGFzcyBwYW5lbCBzaG93aW5nIGEgZ3JpZCB0byB2aWV3IC8gbWFuYWdlIGluc3RhbGxlZCBleHRlbnNpb25zIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogImV4dGdyaWQiLAogICJuYW1lIjogIkV4dGVuc2lvbnMgR2xhc3MgR3JpZCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5leHRncmlkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvZ2xhc3NfZ3JpZCIsCiAgInV1aWQiOiAiZXh0Z3JpZEBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDE0Cn0="}
   }}
-, {"uuid": "AddCustomTextToWorkSpaceIndicators@pratap.fastmail.fm", "name": "Add Custom Text to Workspace Indicators", "pname": "add-custom-text-to-workspace-indicators", "description": "Add custom text to workspace indicators\n\nWith this extension you can\n1. Show/Hide the Pills\n2. Show/Hide your brand logo\n3. Show/Hide custom text or user name or host name or kernel version or leave it for extensions default text\n4. Show/Hide Workspace number indicator\n5. Choose different colors", "link": "https://extensions.gnome.org/extension/6272/add-custom-text-to-workspace-indicators/", "shell_version_map": {
-    "45": {"version": "12", "sha256": "0wzk67v4fmzrv4iaifpx8ba2z3q8zxpgbm15xi6infilqay9f5jj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBjdXN0b20gdGV4dCB0byB3b3Jrc3BhY2UgaW5kaWNhdG9ycyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicHJhdGFwcGFuYWJha2EiLAogICAgInBheXBhbCI6ICJwcmF0YXBwYW5hYmFrYSIKICB9LAogICJuYW1lIjogIkFkZCBDdXN0b20gVGV4dCB0byBXb3Jrc3BhY2UgSW5kaWNhdG9ycyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hZGQtY3VzdG9tLXRleHQtdG8td29ya3NwYWNlLWluZGljYXRvcnMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUFJBVEFQLUtVTUFSL2FkZC1jdXN0b20tdGV4dC10by13b3Jrc3BhY2UtaW5kaWNhdG9ycyIsCiAgInV1aWQiOiAiQWRkQ3VzdG9tVGV4dFRvV29ya1NwYWNlSW5kaWNhdG9yc0BwcmF0YXAuZmFzdG1haWwuZm0iLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
+, {"uuid": "AddCustomTextToWorkSpaceIndicators@pratap.fastmail.fm", "name": "Add Custom Text to Workspace Indicators", "pname": "add-custom-text-to-workspace-indicators", "description": "Add custom text to workspace indicators", "link": "https://extensions.gnome.org/extension/6272/add-custom-text-to-workspace-indicators/", "shell_version_map": {
+    "45": {"version": "13", "sha256": "09q3av0magrm4b6xzcsmhmxi24v6h4wc9xcgfc2qjzkbr3w4v42f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBjdXN0b20gdGV4dCB0byB3b3Jrc3BhY2UgaW5kaWNhdG9ycyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicHJhdGFwcGFuYWJha2EiCiAgfSwKICAibmFtZSI6ICJBZGQgQ3VzdG9tIFRleHQgdG8gV29ya3NwYWNlIEluZGljYXRvcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYWRkLWN1c3RvbS10ZXh0LXRvLXdvcmtzcGFjZS1pbmRpY2F0b3JzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvYWRkLWN1c3RvbS10ZXh0LXRvLXdvcmtzcGFjZS1pbmRpY2F0b3JzIiwKICAidXVpZCI6ICJBZGRDdXN0b21UZXh0VG9Xb3JrU3BhY2VJbmRpY2F0b3JzQHByYXRhcC5mYXN0bWFpbC5mbSIsCiAgInZlcnNpb24iOiAxMwp9"},
+    "46": {"version": "13", "sha256": "09q3av0magrm4b6xzcsmhmxi24v6h4wc9xcgfc2qjzkbr3w4v42f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBjdXN0b20gdGV4dCB0byB3b3Jrc3BhY2UgaW5kaWNhdG9ycyIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAicHJhdGFwcGFuYWJha2EiCiAgfSwKICAibmFtZSI6ICJBZGQgQ3VzdG9tIFRleHQgdG8gV29ya3NwYWNlIEluZGljYXRvcnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYWRkLWN1c3RvbS10ZXh0LXRvLXdvcmtzcGFjZS1pbmRpY2F0b3JzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9QUkFUQVAtS1VNQVIvYWRkLWN1c3RvbS10ZXh0LXRvLXdvcmtzcGFjZS1pbmRpY2F0b3JzIiwKICAidXVpZCI6ICJBZGRDdXN0b21UZXh0VG9Xb3JrU3BhY2VJbmRpY2F0b3JzQHByYXRhcC5mYXN0bWFpbC5mbSIsCiAgInZlcnNpb24iOiAxMwp9"}
   }}
 , {"uuid": "strings@lobau.io", "name": "Strings", "pname": "strings", "description": "Copy all kind of useful strings like dates, lorem ipsum, random colors, etc.", "link": "https://extensions.gnome.org/extension/6275/strings/", "shell_version_map": {
     "45": {"version": "2", "sha256": "17hi757widdxfnq6b5iaddv4w03bj4ly4wvd289wbm7lbphfrk70", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvcHkgYWxsIGtpbmQgb2YgdXNlZnVsIHN0cmluZ3MgbGlrZSBkYXRlcywgbG9yZW0gaXBzdW0sIHJhbmRvbSBjb2xvcnMsIGV0Yy4iLAogICJuYW1lIjogIlN0cmluZ3MiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbG9iYXUvc3RyaW5ncy1leHRlbnNpb24iLAogICJ1dWlkIjogInN0cmluZ3NAbG9iYXUuaW8iLAogICJ2ZXJzaW9uIjogMgp9"}
@@ -6207,33 +6450,38 @@
 , {"uuid": "battery-usage-wattmeter@halfmexicanhalfamazing.gmail.com", "name": "Battery Usage Wattmeter", "pname": "battery-usage-wattmeter", "description": " Shows charging/discharging consumption (+/-) in Watt next to battery percentage level.\nDefault sync reload set to 4 seconds.\nNo consumption info when battery is full.\nFork of https://github.com/wennaspeedy/batt_consumption_wattmetter", "link": "https://extensions.gnome.org/extension/6278/battery-usage-wattmeter/", "shell_version_map": {
     "43": {"version": "2", "sha256": "06kg17qp07wlpsa5gcl5ah8av6dx8cp2df87xkm39rkj58whf2fp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiBTaG93cyBjaGFyZ2luZy9kaXNjaGFyZ2luZyBjb25zdW1wdGlvbiAoKy8tKSBpbiBXYXR0IG5leHQgdG8gYmF0dGVyeSBwZXJjZW50YWdlIGxldmVsLlxuRGVmYXVsdCBzeW5jIHJlbG9hZCBzZXQgdG8gNCBzZWNvbmRzLlxuTm8gY29uc3VtcHRpb24gaW5mbyB3aGVuIGJhdHRlcnkgaXMgZnVsbC5cbkZvcmsgb2YgaHR0cHM6Ly9naXRodWIuY29tL3dlbm5hc3BlZWR5L2JhdHRfY29uc3VtcHRpb25fd2F0dG1ldHRlciIsCiAgIm5hbWUiOiAiQmF0dGVyeSBVc2FnZSBXYXR0bWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hhbGZtZXhpY2FuL2JhdHRlcnktdXNhZ2Utd2F0dG1ldGVyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiYmF0dGVyeS11c2FnZS13YXR0bWV0ZXJAaGFsZm1leGljYW5oYWxmYW1hemluZy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMgp9"},
     "44": {"version": "2", "sha256": "06kg17qp07wlpsa5gcl5ah8av6dx8cp2df87xkm39rkj58whf2fp", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiBTaG93cyBjaGFyZ2luZy9kaXNjaGFyZ2luZyBjb25zdW1wdGlvbiAoKy8tKSBpbiBXYXR0IG5leHQgdG8gYmF0dGVyeSBwZXJjZW50YWdlIGxldmVsLlxuRGVmYXVsdCBzeW5jIHJlbG9hZCBzZXQgdG8gNCBzZWNvbmRzLlxuTm8gY29uc3VtcHRpb24gaW5mbyB3aGVuIGJhdHRlcnkgaXMgZnVsbC5cbkZvcmsgb2YgaHR0cHM6Ly9naXRodWIuY29tL3dlbm5hc3BlZWR5L2JhdHRfY29uc3VtcHRpb25fd2F0dG1ldHRlciIsCiAgIm5hbWUiOiAiQmF0dGVyeSBVc2FnZSBXYXR0bWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hhbGZtZXhpY2FuL2JhdHRlcnktdXNhZ2Utd2F0dG1ldGVyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiYmF0dGVyeS11c2FnZS13YXR0bWV0ZXJAaGFsZm1leGljYW5oYWxmYW1hemluZy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMgp9"},
-    "45": {"version": "12", "sha256": "0zrbz33pc3ill8qam7ww13g045xhjfynnzj7mwfxn0kb7y48wpbw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiBTaG93cyBjaGFyZ2luZy9kaXNjaGFyZ2luZyBjb25zdW1wdGlvbiAoKy8tKSBpbiBXYXR0IG5leHQgdG8gYmF0dGVyeSBwZXJjZW50YWdlIGxldmVsLlxuRGVmYXVsdCBzeW5jIHJlbG9hZCBzZXQgdG8gNCBzZWNvbmRzLlxuTm8gY29uc3VtcHRpb24gaW5mbyB3aGVuIGJhdHRlcnkgaXMgZnVsbC5cbkZvcmsgb2YgaHR0cHM6Ly9naXRodWIuY29tL3dlbm5hc3BlZWR5L2JhdHRfY29uc3VtcHRpb25fd2F0dG1ldHRlciIsCiAgIm5hbWUiOiAiQmF0dGVyeSBVc2FnZSBXYXR0bWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGFsZm1leGljYW4vYmF0dGVyeS11c2FnZS13YXR0bWV0ZXItZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJiYXR0ZXJ5LXVzYWdlLXdhdHRtZXRlckBoYWxmbWV4aWNhbmhhbGZhbWF6aW5nLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"}
+    "45": {"version": "13", "sha256": "0cdppb28glw0657a1lavll0x2badhd0dq690z1f69sbzi987bjpb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiBTaG93cyBjaGFyZ2luZy9kaXNjaGFyZ2luZyBjb25zdW1wdGlvbiAoKy8tKSBpbiBXYXR0IG5leHQgdG8gYmF0dGVyeSBwZXJjZW50YWdlIGxldmVsLlxuRGVmYXVsdCBzeW5jIHJlbG9hZCBzZXQgdG8gNCBzZWNvbmRzLlxuTm8gY29uc3VtcHRpb24gaW5mbyB3aGVuIGJhdHRlcnkgaXMgZnVsbC5cbkZvcmsgb2YgaHR0cHM6Ly9naXRodWIuY29tL3dlbm5hc3BlZWR5L2JhdHRfY29uc3VtcHRpb25fd2F0dG1ldHRlciIsCiAgIm5hbWUiOiAiQmF0dGVyeSBVc2FnZSBXYXR0bWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hhbGZtZXhpY2FuL2JhdHRlcnktdXNhZ2Utd2F0dG1ldGVyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiYmF0dGVyeS11c2FnZS13YXR0bWV0ZXJAaGFsZm1leGljYW5oYWxmYW1hemluZy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
+    "46": {"version": "13", "sha256": "0cdppb28glw0657a1lavll0x2badhd0dq690z1f69sbzi987bjpb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIiBTaG93cyBjaGFyZ2luZy9kaXNjaGFyZ2luZyBjb25zdW1wdGlvbiAoKy8tKSBpbiBXYXR0IG5leHQgdG8gYmF0dGVyeSBwZXJjZW50YWdlIGxldmVsLlxuRGVmYXVsdCBzeW5jIHJlbG9hZCBzZXQgdG8gNCBzZWNvbmRzLlxuTm8gY29uc3VtcHRpb24gaW5mbyB3aGVuIGJhdHRlcnkgaXMgZnVsbC5cbkZvcmsgb2YgaHR0cHM6Ly9naXRodWIuY29tL3dlbm5hc3BlZWR5L2JhdHRfY29uc3VtcHRpb25fd2F0dG1ldHRlciIsCiAgIm5hbWUiOiAiQmF0dGVyeSBVc2FnZSBXYXR0bWV0ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hhbGZtZXhpY2FuL2JhdHRlcnktdXNhZ2Utd2F0dG1ldGVyLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiYmF0dGVyeS11c2FnZS13YXR0bWV0ZXJAaGFsZm1leGljYW5oYWxmYW1hemluZy5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMTMKfQ=="}
   }}
 , {"uuid": "azwallpaper@azwallpaper.gitlab.com", "name": "Wallpaper Slideshow", "pname": "wallpaper-slideshow", "description": "Wallpaper slideshow extension. Optionally downloads BING wallpaper of the day.\n\nWhen first installing, make sure to set your slideshow directory in the settings.\n\nRight click on your desktop for easy access to Wallpaper Slideshow settings or to jump to the next background in queue.\n\nThe extension will detect all images in the user defined slideshow directory, randomize the order, and start a slideshow at an interval of your choice. Any file changes, additions, or deletions in the directory will be detected and the slideshow queue will update accordingly.\n\nSlideshow queue is preserved upon shutdown and will pick up from where it left off.", "link": "https://extensions.gnome.org/extension/6281/wallpaper-slideshow/", "shell_version_map": {
     "43": {"version": "7", "sha256": "0d07s6pv96aibcp26gdhg1rif5pfcw7078q1kckris0vihjyw27p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBzbGlkZXNob3cgZXh0ZW5zaW9uIGZvciBHTk9NRS4gT3B0aW9uYWxseSBkb3dubG9hZHMgQklORyB3YWxscGFwZXIgb2YgdGhlIGRheS5cbiBBdXRvbWF0aWNhbGx5IGNoYW5nZXMgdGhlIHdhbGxwYXBlciAoYmFja2dyb3VuZCkgYXQgYSB1c2VyIGRlZmluZWQgaW50ZXJ2YWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp3YWxscGFwZXIiLAogICJuYW1lIjogIldhbGxwYXBlciBTbGlkZXNob3ciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXp3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6d2FsbHBhcGVyIiwKICAidXVpZCI6ICJhendhbGxwYXBlckBhendhbGxwYXBlci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
     "44": {"version": "7", "sha256": "0d07s6pv96aibcp26gdhg1rif5pfcw7078q1kckris0vihjyw27p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBzbGlkZXNob3cgZXh0ZW5zaW9uIGZvciBHTk9NRS4gT3B0aW9uYWxseSBkb3dubG9hZHMgQklORyB3YWxscGFwZXIgb2YgdGhlIGRheS5cbiBBdXRvbWF0aWNhbGx5IGNoYW5nZXMgdGhlIHdhbGxwYXBlciAoYmFja2dyb3VuZCkgYXQgYSB1c2VyIGRlZmluZWQgaW50ZXJ2YWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp3YWxscGFwZXIiLAogICJuYW1lIjogIldhbGxwYXBlciBTbGlkZXNob3ciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXp3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6d2FsbHBhcGVyIiwKICAidXVpZCI6ICJhendhbGxwYXBlckBhendhbGxwYXBlci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
-    "45": {"version": "8", "sha256": "13hzijdx6gkmqwx8hmap3s9sw3pdrhk2g4nam31aiabal84ghjmh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBzbGlkZXNob3cgZXh0ZW5zaW9uIGZvciBHTk9NRS4gT3B0aW9uYWxseSBkb3dubG9hZHMgQklORyB3YWxscGFwZXIgb2YgdGhlIGRheS5cbiBBdXRvbWF0aWNhbGx5IGNoYW5nZXMgdGhlIHdhbGxwYXBlciAoYmFja2dyb3VuZCkgYXQgYSB1c2VyIGRlZmluZWQgaW50ZXJ2YWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp3YWxscGFwZXIiLAogICJuYW1lIjogIldhbGxwYXBlciBTbGlkZXNob3ciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXp3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6d2FsbHBhcGVyIiwKICAidXVpZCI6ICJhendhbGxwYXBlckBhendhbGxwYXBlci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="}
+    "45": {"version": "8", "sha256": "13hzijdx6gkmqwx8hmap3s9sw3pdrhk2g4nam31aiabal84ghjmh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBzbGlkZXNob3cgZXh0ZW5zaW9uIGZvciBHTk9NRS4gT3B0aW9uYWxseSBkb3dubG9hZHMgQklORyB3YWxscGFwZXIgb2YgdGhlIGRheS5cbiBBdXRvbWF0aWNhbGx5IGNoYW5nZXMgdGhlIHdhbGxwYXBlciAoYmFja2dyb3VuZCkgYXQgYSB1c2VyIGRlZmluZWQgaW50ZXJ2YWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp3YWxscGFwZXIiLAogICJuYW1lIjogIldhbGxwYXBlciBTbGlkZXNob3ciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXp3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6d2FsbHBhcGVyIiwKICAidXVpZCI6ICJhendhbGxwYXBlckBhendhbGxwYXBlci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="},
+    "46": {"version": "8", "sha256": "13hzijdx6gkmqwx8hmap3s9sw3pdrhk2g4nam31aiabal84ghjmh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldhbGxwYXBlciBzbGlkZXNob3cgZXh0ZW5zaW9uIGZvciBHTk9NRS4gT3B0aW9uYWxseSBkb3dubG9hZHMgQklORyB3YWxscGFwZXIgb2YgdGhlIGRheS5cbiBBdXRvbWF0aWNhbGx5IGNoYW5nZXMgdGhlIHdhbGxwYXBlciAoYmFja2dyb3VuZCkgYXQgYSB1c2VyIGRlZmluZWQgaW50ZXJ2YWwuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJhemFlY2giCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiYXp3YWxscGFwZXIiLAogICJuYW1lIjogIldhbGxwYXBlciBTbGlkZXNob3ciLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXp3YWxscGFwZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuY29tL0FuZHJld1phZWNoL2F6d2FsbHBhcGVyIiwKICAidXVpZCI6ICJhendhbGxwYXBlckBhendhbGxwYXBlci5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDgKfQ=="}
   }}
 , {"uuid": "energy-rate-indicator@kaetowjj.gmail.com", "name": "Energy Rate Indicator", "pname": "energy-rate-indicator", "description": "Displays the current energy rate in the top bar.", "link": "https://extensions.gnome.org/extension/6290/energy-rate-indicator/", "shell_version_map": {
     "44": {"version": "7", "sha256": "0nyvjh579s4kicwcpxzd5n5xbn2v87p87hzbhmv771llvzhsgz1l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIHRoZSBjdXJyZW50IGVuZXJneSByYXRlIGluIHRoZSB0b3AgYmFyLiIsCiAgIm5hbWUiOiAiRW5lcmd5IFJhdGUgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2thZXRvd2pqL0dub21lLUV4dGVuc2lvbi1FbmVyZ3ktUmF0ZS1JbmRpY2F0b3IiLAogICJ1dWlkIjogImVuZXJneS1yYXRlLWluZGljYXRvckBrYWV0b3dqai5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
 , {"uuid": "indicator@hedgie.tech", "name": "Indicator", "pname": "indicator", "description": "Add an indicator for a custom service", "link": "https://extensions.gnome.org/extension/6293/indicator/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "1nrpmccdhxdsrz76qfawpycr4jhnqvpm6kcfdhhxax3zwxl28sva", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhbiBpbmRpY2F0b3IgZm9yIGEgY3VzdG9tIHNlcnZpY2UiLAogICJuYW1lIjogIkluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy9pbmRpY2F0b3IiLAogICJ1dWlkIjogImluZGljYXRvckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAyCn0="}
+    "45": {"version": "3", "sha256": "1qkrfa2hzk2339ppbxccih8cczj0yzzj2ircxi0akn2hywfxjq06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhbiBpbmRpY2F0b3IgZm9yIGEgY3VzdG9tIHNlcnZpY2UiLAogICJuYW1lIjogIkluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGdpZWluc29ja3MvZ25vbWUtZXh0ZW5zaW9uLWluZGljYXRvciIsCiAgInV1aWQiOiAiaW5kaWNhdG9yQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDMKfQ=="},
+    "46": {"version": "3", "sha256": "1qkrfa2hzk2339ppbxccih8cczj0yzzj2ircxi0akn2hywfxjq06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhbiBpbmRpY2F0b3IgZm9yIGEgY3VzdG9tIHNlcnZpY2UiLAogICJuYW1lIjogIkluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5pbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlZGdpZWluc29ja3MvZ25vbWUtZXh0ZW5zaW9uLWluZGljYXRvciIsCiAgInV1aWQiOiAiaW5kaWNhdG9yQGhlZGdpZS50ZWNoIiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
 , {"uuid": "dark-style@fthx", "name": "Dark Style", "pname": "dark-style", "description": "Switch Shell-only default to dark style. Useful for Ubuntu.\n\nNOT USEFUL ANYMORE", "link": "https://extensions.gnome.org/extension/6296/dark-style/", "shell_version_map": {
     "45": {"version": "1", "sha256": "1cx0gwbc020jwdpjysm1kabhdnip16kzsgz5l9sf8pv9lrrdmj06", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCBTaGVsbC1vbmx5IGRlZmF1bHQgdG8gZGFyayBzdHlsZS4gVXNlZnVsIGZvciBVYnVudHUuIiwKICAiZXh0ZW5zaW9uLWlkIjogImRhcmstc3R5bGUiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJEYXJrIFN0eWxlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhcmstc3R5bGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9kYXJrLXN0eWxlIiwKICAidXVpZCI6ICJkYXJrLXN0eWxlQGZ0aHgiLAogICJ2ZXJzaW9uIjogMQp9"}
   }}
 , {"uuid": "custom-window-controls@icedman.github.com", "name": "Custom Window Controls", "pname": "custom-window-controls", "description": "Theme the window control buttons. (Warning: Highly Experimental)", "link": "https://extensions.gnome.org/extension/6300/custom-window-controls/", "shell_version_map": {
-    "45": {"version": "5", "sha256": "09681m8bh1749s8i1s2h6778byfxn4psl830f932sz83m53wr2rj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZW1lIHRoZSB3aW5kb3cgY29udHJvbCBidXR0b25zLiAoV2FybmluZzogSGlnaGx5IEV4cGVyaW1lbnRhbCkiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJjdXN0b20td2luZG93LWNvbnRyb2xzIiwKICAibmFtZSI6ICJDdXN0b20gV2luZG93IENvbnRyb2xzIiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmN1c3RvbS13aW5kb3ctY29udHJvbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9jdXN0b20td2luZG93LWNvbnRyb2xzIiwKICAidXVpZCI6ICJjdXN0b20td2luZG93LWNvbnRyb2xzQGljZWRtYW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA1Cn0="}
+    "45": {"version": "6", "sha256": "0h9v42f42i4g2in5xxpf216x1r91p507himpz2d5dz2jwm2q9kmi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZW1lIHRoZSB3aW5kb3cgY29udHJvbCBidXR0b25zLiAoV2FybmluZzogSGlnaGx5IEV4cGVyaW1lbnRhbCkiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJjdXN0b20td2luZG93LWNvbnRyb2xzIiwKICAibmFtZSI6ICJDdXN0b20gV2luZG93IENvbnRyb2xzIiwKICAic2NoZW1hLWlkIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmN1c3RvbS13aW5kb3ctY29udHJvbHMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWNlZG1hbi9jdXN0b20td2luZG93LWNvbnRyb2xzIiwKICAidXVpZCI6ICJjdXN0b20td2luZG93LWNvbnRyb2xzQGljZWRtYW4uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="}
   }}
 , {"uuid": "workspace-indicator-left@gmtborges.com", "name": "Workspace Indicator Left", "pname": "workspace-indicator-left", "description": "The same as Workspace Indicator, but on the left like swaywm.\n\nIt is a fork of Workspace Indicator by fmuellner.", "link": "https://extensions.gnome.org/extension/6303/workspace-indicator-left/", "shell_version_map": {
     "44": {"version": "2", "sha256": "0yhczb1cbh39ryrk2zw5nqmda819h748pdslpm0rxn4jy3dzpn4i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBzYW1lIGFzIFdvcmtzcGFjZSBJbmRpY2F0b3IsIGJ1dCBvbiB0aGUgbGVmdCBsaWtlIHN3YXl3bS5cblxuSXQgaXMgYSBmb3JrIG9mIFdvcmtzcGFjZSBJbmRpY2F0b3IgYnkgZm11ZWxsbmVyLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJ3b3Jrc3BhY2UtaW5kaWNhdG9yLWxlZnQiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24td29ya3NwYWNlLWluZGljYXRvci1sZWZ0IiwKICAibmFtZSI6ICJXb3Jrc3BhY2UgSW5kaWNhdG9yIExlZnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3VzdGF2b210Ym9yZ2VzL2dub21lLXdvcmtzcGFjZS1pbmRpY2F0b3ItbGVmdC5naXQiLAogICJ1dWlkIjogIndvcmtzcGFjZS1pbmRpY2F0b3ItbGVmdEBnbXRib3JnZXMuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
   }}
 , {"uuid": "quake-terminal@diegodario88.github.io", "name": "Quake Terminal", "pname": "quake-terminal", "description": "Quickly launch a terminal in Quake mode using a keyboard shortcut", "link": "https://extensions.gnome.org/extension/6307/quake-terminal/", "shell_version_map": {
-    "45": {"version": "17", "sha256": "1an42lksgrj143r9cr3f397sp1xbjcjb1zccygbzi8z2jmvcsd1i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgbGF1bmNoIGEgdGVybWluYWwgaW4gUXVha2UgbW9kZSB1c2luZyBhIGtleWJvYXJkIHNob3J0Y3V0IiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJkaWVnb2RhcmlvODgiLAogICAgImtvZmkiOiAiZGllZ29kYXJpbyIKICB9LAogICJuYW1lIjogIlF1YWtlIFRlcm1pbmFsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnF1YWtlLXRlcm1pbmFsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RpZWdvZGFyaW84OC9xdWFrZS10ZXJtaW5hbCIsCiAgInV1aWQiOiAicXVha2UtdGVybWluYWxAZGllZ29kYXJpbzg4LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxNywKICAidmVyc2lvbi1uYW1lIjogIjEuNi4xIgp9"}
+    "45": {"version": "19", "sha256": "01s0w36g107k5i758i1xmrrfrmw5639gv6rgqm4frjzzjy8q3dqa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgbGF1bmNoIGEgdGVybWluYWwgaW4gUXVha2UgbW9kZSB1c2luZyBhIGtleWJvYXJkIHNob3J0Y3V0IiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJkaWVnb2RhcmlvODgiLAogICAgImtvZmkiOiAiZGllZ29kYXJpbyIKICB9LAogICJuYW1lIjogIlF1YWtlIFRlcm1pbmFsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnF1YWtlLXRlcm1pbmFsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kaWVnb2RhcmlvODgvcXVha2UtdGVybWluYWwiLAogICJ1dWlkIjogInF1YWtlLXRlcm1pbmFsQGRpZWdvZGFyaW84OC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTksCiAgInZlcnNpb24tbmFtZSI6ICIxLjYuMiIKfQ=="},
+    "46": {"version": "19", "sha256": "01s0w36g107k5i758i1xmrrfrmw5639gv6rgqm4frjzzjy8q3dqa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrbHkgbGF1bmNoIGEgdGVybWluYWwgaW4gUXVha2UgbW9kZSB1c2luZyBhIGtleWJvYXJkIHNob3J0Y3V0IiwKICAiZG9uYXRpb25zIjogewogICAgImdpdGh1YiI6ICJkaWVnb2RhcmlvODgiLAogICAgImtvZmkiOiAiZGllZ29kYXJpbyIKICB9LAogICJuYW1lIjogIlF1YWtlIFRlcm1pbmFsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnF1YWtlLXRlcm1pbmFsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kaWVnb2RhcmlvODgvcXVha2UtdGVybWluYWwiLAogICJ1dWlkIjogInF1YWtlLXRlcm1pbmFsQGRpZWdvZGFyaW84OC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTksCiAgInZlcnNpb24tbmFtZSI6ICIxLjYuMiIKfQ=="}
   }}
 , {"uuid": "window-title-is-back@fthx", "name": "Window title is back", "pname": "window-title-is-back", "description": "Focused window icon + app name + title + menu in the top bar.\n\n Options in preferences UI: toggle items, colored icon, icon size.", "link": "https://extensions.gnome.org/extension/6310/window-title-is-back/", "shell_version_map": {
-    "45": {"version": "26", "sha256": "16wfrl47211cpcka5brfpdijvwinb83xn37522508jqby41hccwr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvY3VzZWQgd2luZG93IGljb24gKyBhcHAgbmFtZSArIHRpdGxlICsgbWVudSBpbiB0aGUgdG9wIGJhci5cblxuIE9wdGlvbnMgaW4gcHJlZmVyZW5jZXMgVUk6IHRvZ2dsZSBpdGVtcywgY29sb3JlZCBpY29uLCBpY29uIHNpemUuIiwKICAibmFtZSI6ICJXaW5kb3cgdGl0bGUgaXMgYmFjayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGl0bGUtaXMtYmFjayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3dpbmRvdy10aXRsZS1pcy1iYWNrIiwKICAidXVpZCI6ICJ3aW5kb3ctdGl0bGUtaXMtYmFja0BmdGh4IiwKICAidmVyc2lvbiI6IDI2Cn0="}
+    "45": {"version": "26", "sha256": "16wfrl47211cpcka5brfpdijvwinb83xn37522508jqby41hccwr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvY3VzZWQgd2luZG93IGljb24gKyBhcHAgbmFtZSArIHRpdGxlICsgbWVudSBpbiB0aGUgdG9wIGJhci5cblxuIE9wdGlvbnMgaW4gcHJlZmVyZW5jZXMgVUk6IHRvZ2dsZSBpdGVtcywgY29sb3JlZCBpY29uLCBpY29uIHNpemUuIiwKICAibmFtZSI6ICJXaW5kb3cgdGl0bGUgaXMgYmFjayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGl0bGUtaXMtYmFjayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3dpbmRvdy10aXRsZS1pcy1iYWNrIiwKICAidXVpZCI6ICJ3aW5kb3ctdGl0bGUtaXMtYmFja0BmdGh4IiwKICAidmVyc2lvbiI6IDI2Cn0="},
+    "46": {"version": "29", "sha256": "10ikj5nlgf18rsjn5zl0i28b2vazvzp773i90b68hf4pqizh02f2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZvY3VzZWQgd2luZG93IGljb24gKyBhcHAgbmFtZSArIHRpdGxlICsgbWVudSBpbiB0aGUgdG9wIGJhci5cblxuIE9wdGlvbnMgaW4gcHJlZmVyZW5jZXMgVUk6IHRvZ2dsZSBpdGVtcywgY29sb3JlZCBpY29uLCBpY29uIHNpemUuIiwKICAibmFtZSI6ICJXaW5kb3cgdGl0bGUgaXMgYmFjayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGl0bGUtaXMtYmFjayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3dpbmRvdy10aXRsZS1pcy1iYWNrIiwKICAidXVpZCI6ICJ3aW5kb3ctdGl0bGUtaXMtYmFja0BmdGh4IiwKICAidmVyc2lvbiI6IDI5Cn0="}
   }}
 , {"uuid": "dim-background-windows@stephane-13.github.com", "name": "Dim Background Windows", "pname": "dim-background-windows", "description": "Dim windows without focus", "link": "https://extensions.gnome.org/extension/6313/dim-background-windows/", "shell_version_map": {
     "42": {"version": "12", "sha256": "0nczzyvwpaaxfwvi6nn8vgy6csl30d2j81ilwnirsngblps22s1d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpbSB3aW5kb3dzIHdpdGhvdXQgZm9jdXMiLAogICJuYW1lIjogIkRpbSBCYWNrZ3JvdW5kIFdpbmRvd3MiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZGltLWJhY2tncm91bmQtd2luZG93cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZXBoYW5lLTEzL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kaW0tYmFja2dyb3VuZC13aW5kb3dzIiwKICAidXVpZCI6ICJkaW0tYmFja2dyb3VuZC13aW5kb3dzQHN0ZXBoYW5lLTEzLmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTIKfQ=="},
@@ -6250,10 +6498,12 @@
     "42": {"version": "3", "sha256": "1jh39196758jn7yffb1dlzg4w49rn9934vdmbnh3bvw5a5q88abv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZXMgaW5kaWNhdG9yIGZvciBEZWJpYW4gTGludXggYmFzZWQgZGlzdHJpYnV0aW9ucy5cblxuQ2hlY2sgZm9yIHVwZGF0ZXMgYW5kIHNob3dzIGFsc28gdGhlIGZvbGxvd2luZyBwYWNrYWdlcyBzdGF0dXMgKGFzIGluIFN5bmFwdGljKTpcblx1MjZhYiBBdmFpbGFibGUgdXBkYXRlcy5cblx1MjZhYiBOZXcgcGFja2FnZXMgaW4gcmVwb3NpdG9yeS5cblx1MjZhYiBMb2NhbC9PYnNvbGV0ZSBwYWNrYWdlcy5cblx1MjZhYiBSZXNpZHVhbCBjb25maWcgZmlsZXMuXG5cdTI2YWIgQXV0b3JlbW92YWJsZSBwYWNrYWdlcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJnbGVycm8iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgIm5hbWUiOiAiRGViaWFuIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZWJpYW4tdXBkYXRlcy1pbmRpY2F0b3IiLAogICJ1dWlkIjogImRlYmlhbi11cGRhdGVzLWluZGljYXRvckBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogMwp9"},
     "43": {"version": "3", "sha256": "1jh39196758jn7yffb1dlzg4w49rn9934vdmbnh3bvw5a5q88abv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZXMgaW5kaWNhdG9yIGZvciBEZWJpYW4gTGludXggYmFzZWQgZGlzdHJpYnV0aW9ucy5cblxuQ2hlY2sgZm9yIHVwZGF0ZXMgYW5kIHNob3dzIGFsc28gdGhlIGZvbGxvd2luZyBwYWNrYWdlcyBzdGF0dXMgKGFzIGluIFN5bmFwdGljKTpcblx1MjZhYiBBdmFpbGFibGUgdXBkYXRlcy5cblx1MjZhYiBOZXcgcGFja2FnZXMgaW4gcmVwb3NpdG9yeS5cblx1MjZhYiBMb2NhbC9PYnNvbGV0ZSBwYWNrYWdlcy5cblx1MjZhYiBSZXNpZHVhbCBjb25maWcgZmlsZXMuXG5cdTI2YWIgQXV0b3JlbW92YWJsZSBwYWNrYWdlcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJnbGVycm8iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgIm5hbWUiOiAiRGViaWFuIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZWJpYW4tdXBkYXRlcy1pbmRpY2F0b3IiLAogICJ1dWlkIjogImRlYmlhbi11cGRhdGVzLWluZGljYXRvckBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogMwp9"},
     "44": {"version": "3", "sha256": "1jh39196758jn7yffb1dlzg4w49rn9934vdmbnh3bvw5a5q88abv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZXMgaW5kaWNhdG9yIGZvciBEZWJpYW4gTGludXggYmFzZWQgZGlzdHJpYnV0aW9ucy5cblxuQ2hlY2sgZm9yIHVwZGF0ZXMgYW5kIHNob3dzIGFsc28gdGhlIGZvbGxvd2luZyBwYWNrYWdlcyBzdGF0dXMgKGFzIGluIFN5bmFwdGljKTpcblx1MjZhYiBBdmFpbGFibGUgdXBkYXRlcy5cblx1MjZhYiBOZXcgcGFja2FnZXMgaW4gcmVwb3NpdG9yeS5cblx1MjZhYiBMb2NhbC9PYnNvbGV0ZSBwYWNrYWdlcy5cblx1MjZhYiBSZXNpZHVhbCBjb25maWcgZmlsZXMuXG5cdTI2YWIgQXV0b3JlbW92YWJsZSBwYWNrYWdlcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJnbGVycm8iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgIm5hbWUiOiAiRGViaWFuIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZWJpYW4tdXBkYXRlcy1pbmRpY2F0b3IiLAogICJ1dWlkIjogImRlYmlhbi11cGRhdGVzLWluZGljYXRvckBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogMwp9"},
-    "45": {"version": "5", "sha256": "0ypp9sbygcgbz3zr66fqmi8zmiqmks2q76a7qkj091d065jfvmf6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZXMgaW5kaWNhdG9yIGZvciBEZWJpYW4gTGludXggYmFzZWQgZGlzdHJpYnV0aW9ucy5cblxuQ2hlY2sgZm9yIHVwZGF0ZXMgYW5kIHNob3dzIGFsc28gdGhlIGZvbGxvd2luZyBwYWNrYWdlcyBzdGF0dXMgKGFzIGluIFN5bmFwdGljKTpcblx1MjZhYiBBdmFpbGFibGUgdXBkYXRlcy5cblx1MjZhYiBOZXcgcGFja2FnZXMgaW4gcmVwb3NpdG9yeS5cblx1MjZhYiBMb2NhbC9PYnNvbGV0ZSBwYWNrYWdlcy5cblx1MjZhYiBSZXNpZHVhbCBjb25maWcgZmlsZXMuXG5cdTI2YWIgQXV0b3JlbW92YWJsZSBwYWNrYWdlcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJnbGVycm8iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgIm5hbWUiOiAiRGViaWFuIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9nbGVycm8vZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgInV1aWQiOiAiZGViaWFuLXVwZGF0ZXMtaW5kaWNhdG9yQGdsZXJyby5wbS5tZSIsCiAgInZlcnNpb24iOiA1Cn0="}
+    "45": {"version": "7", "sha256": "18igv70a1sk40jd6lb7aks2wkc6i19ixqwk3c6gxpk67apkk5c7f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZXMgaW5kaWNhdG9yIGZvciBEZWJpYW4gTGludXggYmFzZWQgZGlzdHJpYnV0aW9ucy5cblxuQ2hlY2sgZm9yIHVwZGF0ZXMgYW5kIHNob3dzIGFsc28gdGhlIGZvbGxvd2luZyBwYWNrYWdlcyBzdGF0dXMgKGFzIGluIFN5bmFwdGljKTpcblx1MjZhYiBBdmFpbGFibGUgdXBkYXRlcy5cblx1MjZhYiBOZXcgcGFja2FnZXMgaW4gcmVwb3NpdG9yeS5cblx1MjZhYiBMb2NhbC9PYnNvbGV0ZSBwYWNrYWdlcy5cblx1MjZhYiBSZXNpZHVhbCBjb25maWcgZmlsZXMuXG5cdTI2YWIgQXV0b3JlbW92YWJsZSBwYWNrYWdlcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJnbGVycm8iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgIm5hbWUiOiAiRGViaWFuIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZWJpYW4tdXBkYXRlcy1pbmRpY2F0b3IiLAogICJ1dWlkIjogImRlYmlhbi11cGRhdGVzLWluZGljYXRvckBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogNwp9"},
+    "46": {"version": "7", "sha256": "18igv70a1sk40jd6lb7aks2wkc6i19ixqwk3c6gxpk67apkk5c7f", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZXMgaW5kaWNhdG9yIGZvciBEZWJpYW4gTGludXggYmFzZWQgZGlzdHJpYnV0aW9ucy5cblxuQ2hlY2sgZm9yIHVwZGF0ZXMgYW5kIHNob3dzIGFsc28gdGhlIGZvbGxvd2luZyBwYWNrYWdlcyBzdGF0dXMgKGFzIGluIFN5bmFwdGljKTpcblx1MjZhYiBBdmFpbGFibGUgdXBkYXRlcy5cblx1MjZhYiBOZXcgcGFja2FnZXMgaW4gcmVwb3NpdG9yeS5cblx1MjZhYiBMb2NhbC9PYnNvbGV0ZSBwYWNrYWdlcy5cblx1MjZhYiBSZXNpZHVhbCBjb25maWcgZmlsZXMuXG5cdTI2YWIgQXV0b3JlbW92YWJsZSBwYWNrYWdlcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAia29maSI6ICJnbGVycm8iCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgIm5hbWUiOiAiRGViaWFuIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRlYmlhbi11cGRhdGVzLWluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvZ2xlcnJvL2dub21lLXNoZWxsLWV4dGVuc2lvbi1kZWJpYW4tdXBkYXRlcy1pbmRpY2F0b3IiLAogICJ1dWlkIjogImRlYmlhbi11cGRhdGVzLWluZGljYXRvckBnbGVycm8ucG0ubWUiLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
 , {"uuid": "monitor-brightness-volume@ailin.nemui", "name": "Control monitor brightness and volume with ddcutil", "pname": "control-monitor-brightness-and-volume-with-ddcutil", "description": "Brightness and volume control for monitors. Requires setting up the external ddcutil program for your user.\n\nNote: ensure that ddcutil works properly on the command line before attempting this extension.", "link": "https://extensions.gnome.org/extension/6325/control-monitor-brightness-and-volume-with-ddcutil/", "shell_version_map": {
-    "45": {"version": "5", "sha256": "06mllpwvrwzjbdia339dn5p5bzngvrl3yiflr14180mlcg1yfx69", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiQnJpZ2h0bmVzcyBhbmQgdm9sdW1lIGNvbnRyb2wgZm9yIG1vbml0b3JzLiBSZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBleHRlcm5hbCBkZGN1dGlsIHByb2dyYW0gZm9yIHlvdXIgdXNlci5cblxuTm90ZTogZW5zdXJlIHRoYXQgZGRjdXRpbCB3b3JrcyBwcm9wZXJseSBvbiB0aGUgY29tbWFuZCBsaW5lIGJlZm9yZSBhdHRlbXB0aW5nIHRoaXMgZXh0ZW5zaW9uLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgIm5hbWUiOiAiQ29udHJvbCBtb25pdG9yIGJyaWdodG5lc3MgYW5kIHZvbHVtZSB3aXRoIGRkY3V0aWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubW9uaXRvci1icmlnaHRuZXNzLXZvbHVtZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1tb25pdG9yLWJyaWdodG5lc3Mtdm9sdW1lLy0vaXNzdWVzIiwKICAidXVpZCI6ICJtb25pdG9yLWJyaWdodG5lc3Mtdm9sdW1lQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDUKfQ=="}
+    "45": {"version": "5", "sha256": "06mllpwvrwzjbdia339dn5p5bzngvrl3yiflr14180mlcg1yfx69", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiQnJpZ2h0bmVzcyBhbmQgdm9sdW1lIGNvbnRyb2wgZm9yIG1vbml0b3JzLiBSZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBleHRlcm5hbCBkZGN1dGlsIHByb2dyYW0gZm9yIHlvdXIgdXNlci5cblxuTm90ZTogZW5zdXJlIHRoYXQgZGRjdXRpbCB3b3JrcyBwcm9wZXJseSBvbiB0aGUgY29tbWFuZCBsaW5lIGJlZm9yZSBhdHRlbXB0aW5nIHRoaXMgZXh0ZW5zaW9uLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgIm5hbWUiOiAiQ29udHJvbCBtb25pdG9yIGJyaWdodG5lc3MgYW5kIHZvbHVtZSB3aXRoIGRkY3V0aWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubW9uaXRvci1icmlnaHRuZXNzLXZvbHVtZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1tb25pdG9yLWJyaWdodG5lc3Mtdm9sdW1lLy0vaXNzdWVzIiwKICAidXVpZCI6ICJtb25pdG9yLWJyaWdodG5lc3Mtdm9sdW1lQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDUKfQ=="},
+    "46": {"version": "5", "sha256": "06mllpwvrwzjbdia339dn5p5bzngvrl3yiflr14180mlcg1yfx69", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImNyZWF0b3IiOiAiTmVpIiwKICAiZGVzY3JpcHRpb24iOiAiQnJpZ2h0bmVzcyBhbmQgdm9sdW1lIGNvbnRyb2wgZm9yIG1vbml0b3JzLiBSZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBleHRlcm5hbCBkZGN1dGlsIHByb2dyYW0gZm9yIHlvdXIgdXNlci5cblxuTm90ZTogZW5zdXJlIHRoYXQgZGRjdXRpbCB3b3JrcyBwcm9wZXJseSBvbiB0aGUgY29tbWFuZCBsaW5lIGJlZm9yZSBhdHRlbXB0aW5nIHRoaXMgZXh0ZW5zaW9uLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJrb2ZpIjogImFpbGluIgogIH0sCiAgIm5hbWUiOiAiQ29udHJvbCBtb25pdG9yIGJyaWdodG5lc3MgYW5kIHZvbHVtZSB3aXRoIGRkY3V0aWwiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubW9uaXRvci1icmlnaHRuZXNzLXZvbHVtZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvTmVpL2dub21lLXNoZWxsLWV4dGVuc2lvbi1tb25pdG9yLWJyaWdodG5lc3Mtdm9sdW1lLy0vaXNzdWVzIiwKICAidXVpZCI6ICJtb25pdG9yLWJyaWdodG5lc3Mtdm9sdW1lQGFpbGluLm5lbXVpIiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
 , {"uuid": "network-interfaces-info@alonsogonzalezleal.com", "name": "Network Interfaces Info", "pname": "network-interfaces-info", "description": "Display Network Interfaces Information on GNOME Top Bar.", "link": "https://extensions.gnome.org/extension/6331/network-interfaces-info/", "shell_version_map": {
     "42": {"version": "3", "sha256": "1z5pxlw0p7mm18pnn2b0v9q8slxzw6iq2g41b4f4h9fbifhdmqn0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgTmV0d29yayBJbnRlcmZhY2VzIEluZm9ybWF0aW9uIG9uIEdOT01FIFRvcCBCYXIuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAibmV0d29yay1pbnRlcmZhY2VzLWluZm9AYWxvbnNvZ29uemFsZXpsZWFsLmNvbSIsCiAgIm5hbWUiOiAiTmV0d29yayBJbnRlcmZhY2VzIEluZm8iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hbG9uc29nb256YWxlemxlYWwvbmV0d29yay1pbnRlcmZhY2VzLWluZm8iLAogICJ1dWlkIjogIm5ldHdvcmstaW50ZXJmYWNlcy1pbmZvQGFsb25zb2dvbnphbGV6bGVhbC5jb20iLAogICJ2ZXJzaW9uIjogMwp9"},
@@ -6283,11 +6533,13 @@
     "43": {"version": "3", "sha256": "19nip1ac7diznvhkh6f98zygvcng25jk39j5axhbmq7gv3pjkgk9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnZpZXJ0ZSBlbCBEb2xhciBBbWVyaWNhbm8gVVNEIGEgcGVzb3MgY2hpbGVub3MgQ0xQIHVzYW5kbyBsYSBhcGkgTWlJbmRpY2Fkb3IuY2wgaHR0cHM6Ly9taW5kaWNhZG9yLmNsL2FwaS9kb2xhci4iLAogICJuYW1lIjogIkRvbGFyIGEgQ0xQIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9KNGNrbi9kb2xhci1hLWNscCIsCiAgInV1aWQiOiAiZG9sYXItYS1jbHBAajRja24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="},
     "44": {"version": "3", "sha256": "19nip1ac7diznvhkh6f98zygvcng25jk39j5axhbmq7gv3pjkgk9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnZpZXJ0ZSBlbCBEb2xhciBBbWVyaWNhbm8gVVNEIGEgcGVzb3MgY2hpbGVub3MgQ0xQIHVzYW5kbyBsYSBhcGkgTWlJbmRpY2Fkb3IuY2wgaHR0cHM6Ly9taW5kaWNhZG9yLmNsL2FwaS9kb2xhci4iLAogICJuYW1lIjogIkRvbGFyIGEgQ0xQIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9KNGNrbi9kb2xhci1hLWNscCIsCiAgInV1aWQiOiAiZG9sYXItYS1jbHBAajRja24uZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAzCn0="}
   }}
-, {"uuid": "disable-workspace-switcher-overlay@cleardevice", "name": "Disable workspace switcher overlay for GNOME 45", "pname": "disable-workspace-switcher-overlay", "description": "Disable the workspace switcher popup (overlay displayed when switching between workspaces) GNOME 45.", "link": "https://extensions.gnome.org/extension/6358/disable-workspace-switcher-overlay/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "066fms1znrvy1z05yk57g4kwgncygx7cdr3js155hdxyk4wzzbim", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCAob3ZlcmxheSBkaXNwbGF5ZWQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiB3b3Jrc3BhY2VzKS4iLAogICJuYW1lIjogIkRpc2FibGUgd29ya3NwYWNlIHN3aXRjaGVyIG92ZXJsYXkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY2xlYXJkZXZpY2UvZ25vbWUtZGlzYWJsZS13b3Jrc3BhY2Utc3dpdGNoZXIiLAogICJ1dWlkIjogImRpc2FibGUtd29ya3NwYWNlLXN3aXRjaGVyLW92ZXJsYXlAY2xlYXJkZXZpY2UiLAogICJ2ZXJzaW9uIjogMQp9"}
+, {"uuid": "disable-workspace-switcher-overlay@cleardevice", "name": "Disable workspace switcher overlay", "pname": "disable-workspace-switcher-overlay", "description": "Disable the workspace switcher popup GNOME Shell 45-46 (overlay displayed when switching between workspaces).", "link": "https://extensions.gnome.org/extension/6358/disable-workspace-switcher-overlay/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "1hcd3fjmd35cbzhnp5sl7x805mk75zfab7j0wb29gx42kk9qzmij", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCBHTk9NRSBTaGVsbCA0NS00NiAob3ZlcmxheSBkaXNwbGF5ZWQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiB3b3Jrc3BhY2VzKS4iLAogICJuYW1lIjogIkRpc2FibGUgd29ya3NwYWNlIHN3aXRjaGVyIG92ZXJsYXkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NsZWFyZGV2aWNlL2dub21lLWRpc2FibGUtd29ya3NwYWNlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJkaXNhYmxlLXdvcmtzcGFjZS1zd2l0Y2hlci1vdmVybGF5QGNsZWFyZGV2aWNlIiwKICAidmVyc2lvbiI6IDIKfQ=="},
+    "46": {"version": "2", "sha256": "1hcd3fjmd35cbzhnp5sl7x805mk75zfab7j0wb29gx42kk9qzmij", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHdvcmtzcGFjZSBzd2l0Y2hlciBwb3B1cCBHTk9NRSBTaGVsbCA0NS00NiAob3ZlcmxheSBkaXNwbGF5ZWQgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiB3b3Jrc3BhY2VzKS4iLAogICJuYW1lIjogIkRpc2FibGUgd29ya3NwYWNlIHN3aXRjaGVyIG92ZXJsYXkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2NsZWFyZGV2aWNlL2dub21lLWRpc2FibGUtd29ya3NwYWNlLXN3aXRjaGVyIiwKICAidXVpZCI6ICJkaXNhYmxlLXdvcmtzcGFjZS1zd2l0Y2hlci1vdmVybGF5QGNsZWFyZGV2aWNlIiwKICAidmVyc2lvbiI6IDIKfQ=="}
   }}
 , {"uuid": "alt-launcher@oxayotl.github.io", "name": "Alt+Tab Launcher", "pname": "alttab-launcher", "description": "Launch favorite apps from Alt+Tab (and Super+Tab) popup", "link": "https://extensions.gnome.org/extension/6361/alttab-launcher/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "1c1dfn3smy495ks73am3gr0h15ca0vba1djfjac9c32vp4n77v4m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBmYXZvcml0ZSBhcHBzIGZyb20gQWx0K1RhYiAoYW5kIFN1cGVyK1RhYikgcG9wdXAiLAogICJuYW1lIjogIkFsdCtUYWIgTGF1bmNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vb3hheW90bC9nbm9tZS1zaGVsbC1leHRlbnNpb24tYWx0LXRhYi1sYXVuY2hlciIsCiAgInV1aWQiOiAiYWx0LWxhdW5jaGVyQG94YXlvdGwuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDIKfQ=="}
+    "45": {"version": "3", "sha256": "17djcbwajxmxcz7zldla9jyvacbr7yxcavnf1d0qnijmy8jgga9w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBmYXZvcml0ZSBhcHBzIGZyb20gQWx0K1RhYiAoYW5kIFN1cGVyK1RhYikgcG9wdXAiLAogICJuYW1lIjogIkFsdCtUYWIgTGF1bmNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL294YXlvdGwvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFsdC10YWItbGF1bmNoZXIiLAogICJ1dWlkIjogImFsdC1sYXVuY2hlckBveGF5b3RsLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAzCn0="},
+    "46": {"version": "3", "sha256": "17djcbwajxmxcz7zldla9jyvacbr7yxcavnf1d0qnijmy8jgga9w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxhdW5jaCBmYXZvcml0ZSBhcHBzIGZyb20gQWx0K1RhYiAoYW5kIFN1cGVyK1RhYikgcG9wdXAiLAogICJuYW1lIjogIkFsdCtUYWIgTGF1bmNoZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL294YXlvdGwvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWFsdC10YWItbGF1bmNoZXIiLAogICJ1dWlkIjogImFsdC1sYXVuY2hlckBveGF5b3RsLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAzCn0="}
   }}
 , {"uuid": "multicore-system-monitor@igrek.dev", "name": "multicore-system-monitor", "pname": "multicore-system-monitor", "description": "Show consumption of each CPU core and memory", "link": "https://extensions.gnome.org/extension/6364/multicore-system-monitor/", "shell_version_map": {
     "44": {"version": "2", "sha256": "1c7pa2afmimljxvlg93gmlvc9wj48wh8dni4kra48wh73ishv0d9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgY29uc3VtcHRpb24gb2YgZWFjaCBDUFUgY29yZSBhbmQgbWVtb3J5IiwKICAibmFtZSI6ICJtdWx0aWNvcmUtc3lzdGVtLW1vbml0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaWdyZWs1MS9tdWx0aWNvcmUtbW9uaXRvciIsCiAgInV1aWQiOiAibXVsdGljb3JlLXN5c3RlbS1tb25pdG9yQGlncmVrLmRldiIsCiAgInZlcnNpb24iOiAyCn0="},
@@ -6297,19 +6549,23 @@
     "45": {"version": "2", "sha256": "1g3mvwlg1v6g4whrnb0radqmj6vq1799z9llsv64zbldwk4w5wag", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGN1cnJlbnQgZG93bmxvYWQgdXBsb2FkIHNwZWVkIG9uIHBhbmVsIFxuVGhpcyBleHRlbnNpb24gaXMgYSBHbm9tZSA0NSBhZGFwdGlvbiBvZiBOZXQgU3BlZWQgYnkgQWx5bnhaaG91IiwKICAibmFtZSI6ICJwaW5ndVhuZXRMYWJlbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9fcGluZ3VYL3Bpbmd1eG5ldGxhYmVsIiwKICAidXVpZCI6ICJwaW5ndVhuZXRMYWJlbEBwaW5ndVguYVRhIiwKICAidmVyc2lvbiI6IDIKfQ=="}
   }}
 , {"uuid": "weekstartmodifier@saccuzm.gmail.com", "name": "Week Start Modifier", "pname": "week-start-modifier", "description": "Modify starting day of the week", "link": "https://extensions.gnome.org/extension/6382/week-start-modifier/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "0s7pvdcylsdaqhp71s2fh35im90xnhbwqlz5b1pysfj0cirfwca3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vZGlmeSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3ZWVrc3RhcnRtb2RpZmllckBzYWNjdXptLmdtYWlsLmNvbSIsCiAgIm5hbWUiOiAiV2VlayBTdGFydCBNb2RpZmllciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53ZWVrc3RhcnRtb2RpZmllciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYWNjdXovd2Vlay1zdGFydC1tb2RpZmllciIsCiAgInV1aWQiOiAid2Vla3N0YXJ0bW9kaWZpZXJAc2FjY3V6bS5nbWFpbC5jb20iLAogICJ2ZXJzaW9uIjogMQp9"}
+    "45": {"version": "3", "sha256": "0pnyq1sjhl18jfmlm5a7p6x5c64ygaya3dj4pd4sn5r4w38v61vi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vZGlmeSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3ZWVrc3RhcnRtb2RpZmllckBzYWNjdXptLmdtYWlsLmNvbSIsCiAgIm5hbWUiOiAiV2VlayBTdGFydCBNb2RpZmllciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53ZWVrc3RhcnRtb2RpZmllciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2FjY3V6L3dlZWstc3RhcnQtbW9kaWZpZXIiLAogICJ1dWlkIjogIndlZWtzdGFydG1vZGlmaWVyQHNhY2N1em0uZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
+    "46": {"version": "3", "sha256": "0pnyq1sjhl18jfmlm5a7p6x5c64ygaya3dj4pd4sn5r4w38v61vi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vZGlmeSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ3ZWVrc3RhcnRtb2RpZmllckBzYWNjdXptLmdtYWlsLmNvbSIsCiAgIm5hbWUiOiAiV2VlayBTdGFydCBNb2RpZmllciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53ZWVrc3RhcnRtb2RpZmllciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2FjY3V6L3dlZWstc3RhcnQtbW9kaWZpZXIiLAogICJ1dWlkIjogIndlZWtzdGFydG1vZGlmaWVyQHNhY2N1em0uZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
 , {"uuid": "steal-my-focus-window@steal-my-focus-window", "name": "Steal my focus window", "pname": "steal-my-focus-window", "description": "Remove the 'window is ready' message and focus the window instead. This is a fork of the 'Steal My Focus' extension to add GNOME 45 support.", "link": "https://extensions.gnome.org/extension/6385/steal-my-focus-window/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "1vgif1my0pckcgvrydjkazpq4v1lydv4d02ipni2b0i1y0vxqyak", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZSB0aGUgJ3dpbmRvdyBpcyByZWFkeScgbWVzc2FnZSBhbmQgZm9jdXMgdGhlIHdpbmRvdyBpbnN0ZWFkLiBUaGlzIGlzIGEgZm9yayBvZiB0aGUgJ1N0ZWFsIE15IEZvY3VzJyBleHRlbnNpb24gdG8gYWRkIEdOT01FIDQ1IHN1cHBvcnQuIiwKICAibmFtZSI6ICJTdGVhbCBteSBmb2N1cyB3aW5kb3ciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vdi1kaW1pdHJvdi9nbm9tZS1zaGVsbC1leHRlbnNpb24tc3RlYWxteWZvY3VzIiwKICAidXVpZCI6ICJzdGVhbC1teS1mb2N1cy13aW5kb3dAc3RlYWwtbXktZm9jdXMtd2luZG93IiwKICAidmVyc2lvbiI6IDIKfQ=="}
+    "45": {"version": "3", "sha256": "09imn1j7hx5nw1ymj3gxq4yg1vns0l279w42kcry65vcvdwx54aa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZSB0aGUgJ3dpbmRvdyBpcyByZWFkeScgbWVzc2FnZSBhbmQgZm9jdXMgdGhlIHdpbmRvdyBpbnN0ZWFkLiBUaGlzIGlzIGEgZm9yayBvZiB0aGUgJ1N0ZWFsIE15IEZvY3VzJyBleHRlbnNpb24gdG8gYWRkIEdOT01FIDQ1IHN1cHBvcnQuIiwKICAibmFtZSI6ICJTdGVhbCBteSBmb2N1cyB3aW5kb3ciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3YtZGltaXRyb3YvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXN0ZWFsbXlmb2N1cyIsCiAgInV1aWQiOiAic3RlYWwtbXktZm9jdXMtd2luZG93QHN0ZWFsLW15LWZvY3VzLXdpbmRvdyIsCiAgInZlcnNpb24iOiAzCn0="},
+    "46": {"version": "3", "sha256": "09imn1j7hx5nw1ymj3gxq4yg1vns0l279w42kcry65vcvdwx54aa", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlbW92ZSB0aGUgJ3dpbmRvdyBpcyByZWFkeScgbWVzc2FnZSBhbmQgZm9jdXMgdGhlIHdpbmRvdyBpbnN0ZWFkLiBUaGlzIGlzIGEgZm9yayBvZiB0aGUgJ1N0ZWFsIE15IEZvY3VzJyBleHRlbnNpb24gdG8gYWRkIEdOT01FIDQ1IHN1cHBvcnQuIiwKICAibmFtZSI6ICJTdGVhbCBteSBmb2N1cyB3aW5kb3ciLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3YtZGltaXRyb3YvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXN0ZWFsbXlmb2N1cyIsCiAgInV1aWQiOiAic3RlYWwtbXktZm9jdXMtd2luZG93QHN0ZWFsLW15LWZvY3VzLXdpbmRvdyIsCiAgInZlcnNpb24iOiAzCn0="}
   }}
 , {"uuid": "perma-clip@susannedev.com", "name": "Perma Clip", "pname": "perma-clip", "description": "Add up to 10 strings to clipboard permanently. Useful for quickly pasting passwords.", "link": "https://extensions.gnome.org/extension/6388/perma-clip/", "shell_version_map": {
     "42": {"version": "3", "sha256": "01pb072dy77h0047hkbnsmdsfmzcwp7mjyglp66g1yvgliawlv09", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCB1cCB0byAxMCBzdHJpbmdzIHRvIGNsaXBib2FyZCBwZXJtYW5lbnRseS4gVXNlZnVsIGZvciBxdWlja2x5IHBhc3RpbmcgcGFzc3dvcmRzLiIsCiAgIm5hbWUiOiAiUGVybWEgQ2xpcCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wZXJtYS1jbGlwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RoZUdyZWdzdGVyMTExMS9wZXJtYS1jbGlwIiwKICAidXVpZCI6ICJwZXJtYS1jbGlwQHN1c2FubmVkZXYuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
 , {"uuid": "simple-workspaces-bar@null-git", "name": "Simple Workspaces Bar", "pname": "simple-workspaces-bar", "description": "Replace 'Activities' button by all current workspaces buttons. Switch workspace or toggle overview by clicking on these buttons.\n\n You can use names for workspaces: there are two ways for that. 1) Edit the string array 'org.gnome.desktop.wm.preferences.workspace-names' gsettings key (through dconf editor, e.g.). 2) Use official GNOME extension Workspaces Indicator's settings. You don't have to write a long enough list: numbers are displayed if no workspace name is defined.\n\nThis is a GNOME 45+ compatible fork of https://extensions.gnome.org/extension/3851/workspaces-bar/", "link": "https://extensions.gnome.org/extension/6394/simple-workspaces-bar/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "0g7ldnm718kf9qy25ssls1b5gx2rv1hq0cwig5cxsgxmirvfjfgq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgJ0FjdGl2aXRpZXMnIGJ1dHRvbiBieSBhbGwgY3VycmVudCB3b3Jrc3BhY2VzIGJ1dHRvbnMuIFN3aXRjaCB3b3Jrc3BhY2Ugb3IgdG9nZ2xlIG92ZXJ2aWV3IGJ5IGNsaWNraW5nIG9uIHRoZXNlIGJ1dHRvbnMuXG5cbiBZb3UgY2FuIHVzZSBuYW1lcyBmb3Igd29ya3NwYWNlczogdGhlcmUgYXJlIHR3byB3YXlzIGZvciB0aGF0LiAxKSBFZGl0IHRoZSBzdHJpbmcgYXJyYXkgJ29yZy5nbm9tZS5kZXNrdG9wLndtLnByZWZlcmVuY2VzLndvcmtzcGFjZS1uYW1lcycgZ3NldHRpbmdzIGtleSAodGhyb3VnaCBkY29uZiBlZGl0b3IsIGUuZy4pLiAyKSBVc2Ugb2ZmaWNpYWwgR05PTUUgZXh0ZW5zaW9uIFdvcmtzcGFjZXMgSW5kaWNhdG9yJ3Mgc2V0dGluZ3MuIFlvdSBkb24ndCBoYXZlIHRvIHdyaXRlIGEgbG9uZyBlbm91Z2ggbGlzdDogbnVtYmVycyBhcmUgZGlzcGxheWVkIGlmIG5vIHdvcmtzcGFjZSBuYW1lIGlzIGRlZmluZWQuXG5cblRoaXMgaXMgYSBHTk9NRSA0NSBjb21wYXRpYmxlIGZvcmsgb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzg1MS93b3Jrc3BhY2VzLWJhci8iLAogICJuYW1lIjogIlNpbXBsZSBXb3Jrc3BhY2VzIEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbnVsbC1naXQvc2ltcGxlLXdvcmtzcGFjZXMtYmFyIiwKICAidXVpZCI6ICJzaW1wbGUtd29ya3NwYWNlcy1iYXJAbnVsbC1naXQiLAogICJ2ZXJzaW9uIjogMwp9"}
+    "45": {"version": "3", "sha256": "0g7ldnm718kf9qy25ssls1b5gx2rv1hq0cwig5cxsgxmirvfjfgq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgJ0FjdGl2aXRpZXMnIGJ1dHRvbiBieSBhbGwgY3VycmVudCB3b3Jrc3BhY2VzIGJ1dHRvbnMuIFN3aXRjaCB3b3Jrc3BhY2Ugb3IgdG9nZ2xlIG92ZXJ2aWV3IGJ5IGNsaWNraW5nIG9uIHRoZXNlIGJ1dHRvbnMuXG5cbiBZb3UgY2FuIHVzZSBuYW1lcyBmb3Igd29ya3NwYWNlczogdGhlcmUgYXJlIHR3byB3YXlzIGZvciB0aGF0LiAxKSBFZGl0IHRoZSBzdHJpbmcgYXJyYXkgJ29yZy5nbm9tZS5kZXNrdG9wLndtLnByZWZlcmVuY2VzLndvcmtzcGFjZS1uYW1lcycgZ3NldHRpbmdzIGtleSAodGhyb3VnaCBkY29uZiBlZGl0b3IsIGUuZy4pLiAyKSBVc2Ugb2ZmaWNpYWwgR05PTUUgZXh0ZW5zaW9uIFdvcmtzcGFjZXMgSW5kaWNhdG9yJ3Mgc2V0dGluZ3MuIFlvdSBkb24ndCBoYXZlIHRvIHdyaXRlIGEgbG9uZyBlbm91Z2ggbGlzdDogbnVtYmVycyBhcmUgZGlzcGxheWVkIGlmIG5vIHdvcmtzcGFjZSBuYW1lIGlzIGRlZmluZWQuXG5cblRoaXMgaXMgYSBHTk9NRSA0NSBjb21wYXRpYmxlIGZvcmsgb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzg1MS93b3Jrc3BhY2VzLWJhci8iLAogICJuYW1lIjogIlNpbXBsZSBXb3Jrc3BhY2VzIEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbnVsbC1naXQvc2ltcGxlLXdvcmtzcGFjZXMtYmFyIiwKICAidXVpZCI6ICJzaW1wbGUtd29ya3NwYWNlcy1iYXJAbnVsbC1naXQiLAogICJ2ZXJzaW9uIjogMwp9"},
+    "46": {"version": "3", "sha256": "0g7ldnm718kf9qy25ssls1b5gx2rv1hq0cwig5cxsgxmirvfjfgq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlJlcGxhY2UgJ0FjdGl2aXRpZXMnIGJ1dHRvbiBieSBhbGwgY3VycmVudCB3b3Jrc3BhY2VzIGJ1dHRvbnMuIFN3aXRjaCB3b3Jrc3BhY2Ugb3IgdG9nZ2xlIG92ZXJ2aWV3IGJ5IGNsaWNraW5nIG9uIHRoZXNlIGJ1dHRvbnMuXG5cbiBZb3UgY2FuIHVzZSBuYW1lcyBmb3Igd29ya3NwYWNlczogdGhlcmUgYXJlIHR3byB3YXlzIGZvciB0aGF0LiAxKSBFZGl0IHRoZSBzdHJpbmcgYXJyYXkgJ29yZy5nbm9tZS5kZXNrdG9wLndtLnByZWZlcmVuY2VzLndvcmtzcGFjZS1uYW1lcycgZ3NldHRpbmdzIGtleSAodGhyb3VnaCBkY29uZiBlZGl0b3IsIGUuZy4pLiAyKSBVc2Ugb2ZmaWNpYWwgR05PTUUgZXh0ZW5zaW9uIFdvcmtzcGFjZXMgSW5kaWNhdG9yJ3Mgc2V0dGluZ3MuIFlvdSBkb24ndCBoYXZlIHRvIHdyaXRlIGEgbG9uZyBlbm91Z2ggbGlzdDogbnVtYmVycyBhcmUgZGlzcGxheWVkIGlmIG5vIHdvcmtzcGFjZSBuYW1lIGlzIGRlZmluZWQuXG5cblRoaXMgaXMgYSBHTk9NRSA0NSBjb21wYXRpYmxlIGZvcmsgb2YgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzg1MS93b3Jrc3BhY2VzLWJhci8iLAogICJuYW1lIjogIlNpbXBsZSBXb3Jrc3BhY2VzIEJhciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vbnVsbC1naXQvc2ltcGxlLXdvcmtzcGFjZXMtYmFyIiwKICAidXVpZCI6ICJzaW1wbGUtd29ya3NwYWNlcy1iYXJAbnVsbC1naXQiLAogICJ2ZXJzaW9uIjogMwp9"}
   }}
 , {"uuid": "speedinator@liam.moe", "name": "Speedinator", "pname": "speedinator", "description": "Control the speed of gnome-shell animations", "link": "https://extensions.gnome.org/extension/6397/speedinator/", "shell_version_map": {
-    "45": {"version": "4", "sha256": "1207ylsqwy47a9x47qg5wzycpbzljx71ps74dl7fjygsb2gik1ml", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIHNwZWVkIG9mIGdub21lLXNoZWxsIGFuaW1hdGlvbnMiLAogICJuYW1lIjogIlNwZWVkaW5hdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1vZS5saWFtLnNwZWVkaW5hdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RlaHNxdWlkZ2Uvc3BlZWRpbmF0b3IiLAogICJ1dWlkIjogInNwZWVkaW5hdG9yQGxpYW0ubW9lIiwKICAidmVyc2lvbiI6IDQKfQ=="}
+    "45": {"version": "5", "sha256": "1y16y9lbns8qzmqydd6c0c0dsj1h9996j3j2r7h33i1wwjz9asj3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIHNwZWVkIG9mIGdub21lLXNoZWxsIGFuaW1hdGlvbnMiLAogICJuYW1lIjogIlNwZWVkaW5hdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1vZS5saWFtLnNwZWVkaW5hdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90ZWhzcXVpZGdlL3NwZWVkaW5hdG9yIiwKICAidXVpZCI6ICJzcGVlZGluYXRvckBsaWFtLm1vZSIsCiAgInZlcnNpb24iOiA1Cn0="},
+    "46": {"version": "5", "sha256": "1y16y9lbns8qzmqydd6c0c0dsj1h9996j3j2r7h33i1wwjz9asj3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2wgdGhlIHNwZWVkIG9mIGdub21lLXNoZWxsIGFuaW1hdGlvbnMiLAogICJuYW1lIjogIlNwZWVkaW5hdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm1vZS5saWFtLnNwZWVkaW5hdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS90ZWhzcXVpZGdlL3NwZWVkaW5hdG9yIiwKICAidXVpZCI6ICJzcGVlZGluYXRvckBsaWFtLm1vZSIsCiAgInZlcnNpb24iOiA1Cn0="}
   }}
 , {"uuid": "phi@ziyagenc.github.com", "name": "Phi: Pi-hole Indicator", "pname": "phi-pi-hole-indicator", "description": "Quickly access your beloved Pi-hole from GNOME Shell.\n\nPhi provides the following features:\n- Monitor single or multiple Pi-hole instances,\n- Enable/disable blocking,\n- Display status and main statistics,\n- Show version information of Pi-hole, and notify when there is an update.\n\nYou can configure Phi to specifically search for Pi-hole within a designated network. This prevents any queries from being sent if your computer is connected to a different network, such as a school, workplace, or public Wi-Fi, instead of the network where your Pi-hole is located", "link": "https://extensions.gnome.org/extension/6400/phi-pi-hole-indicator/", "shell_version_map": {
     "44": {"version": "6", "sha256": "0mdqa357d2px0ssdwxngdvdvabvvd7hg3j8c03jwfgqp36s4mn0p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlBpLWhvbGUgaW5kaWNhdG9yIGZvciBHTk9NRSBTaGVsbC4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJwaGlAeml5YWdlbmMuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiUGhpOiBQaS1ob2xlIEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5waGkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20veml5YWdlbmMvcGhpIiwKICAidXVpZCI6ICJwaGlAeml5YWdlbmMuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA2Cn0="},
@@ -6320,41 +6576,45 @@
   }}
 , {"uuid": "update-extension@purejava.org", "name": "Fedora Linux Update Indicator", "pname": "fedora-linux-update-indicator", "description": "GNOME Shell update indicator for Fedora Linux.\n  This is based on Arch Linux Updates Indicator by Raphaël Rochet.\n  This extension is not affiliated, funded, or in any way associated with Fedora brand and Red Hat Software.", "link": "https://extensions.gnome.org/extension/6406/fedora-linux-update-indicator/", "shell_version_map": {
     "44": {"version": "8", "sha256": "1rc6431z90k7ad2bqrkqsxjwh1dwf0swkbj0r8c3df084cs62fln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIFNoZWxsIHVwZGF0ZSBpbmRpY2F0b3IgZm9yIEZlZG9yYSBMaW51eC5cbiAgVGhpcyBpcyBiYXNlZCBvbiBBcmNoIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIGJ5IFJhcGhhXHUwMGVibCBSb2NoZXQuXG4gIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIEZlZG9yYSBicmFuZCBhbmQgUmVkIEhhdCBTb2Z0d2FyZS5cbiAgU2VlIFJFQURNRSBhYm91dCBHbm9tZSBDb25zb2xlIiwKICAibmFtZSI6ICJGZWRvcmEgTGludXggVXBkYXRlIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wdXJlamF2YS9mZWRvcmEtdXBkYXRlIiwKICAidXVpZCI6ICJ1cGRhdGUtZXh0ZW5zaW9uQHB1cmVqYXZhLm9yZyIsCiAgInZlcnNpb24iOiA4Cn0="},
-    "45": {"version": "10", "sha256": "0ww9j0ijqpa69nggq7kjkcx19qkk5cmkv2axrjk45p1c9h3jidkg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIFNoZWxsIHVwZGF0ZSBpbmRpY2F0b3IgZm9yIEZlZG9yYSBMaW51eC5cbiAgVGhpcyBpcyBiYXNlZCBvbiBBcmNoIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIGJ5IFJhcGhhXHUwMGVibCBSb2NoZXQuXG4gIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIEZlZG9yYSBicmFuZCBhbmQgUmVkIEhhdCBTb2Z0d2FyZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cGRhdGUtZXh0ZW5zaW9uQHB1cmVqYXZhLm9yZyIsCiAgIm5hbWUiOiAiRmVkb3JhIExpbnV4IFVwZGF0ZSBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZmVkb3JhLXVwZGF0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wdXJlamF2YS9mZWRvcmEtdXBkYXRlIiwKICAidXVpZCI6ICJ1cGRhdGUtZXh0ZW5zaW9uQHB1cmVqYXZhLm9yZyIsCiAgInZlcnNpb24iOiAxMAp9"}
+    "45": {"version": "10", "sha256": "0ww9j0ijqpa69nggq7kjkcx19qkk5cmkv2axrjk45p1c9h3jidkg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIFNoZWxsIHVwZGF0ZSBpbmRpY2F0b3IgZm9yIEZlZG9yYSBMaW51eC5cbiAgVGhpcyBpcyBiYXNlZCBvbiBBcmNoIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIGJ5IFJhcGhhXHUwMGVibCBSb2NoZXQuXG4gIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIEZlZG9yYSBicmFuZCBhbmQgUmVkIEhhdCBTb2Z0d2FyZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cGRhdGUtZXh0ZW5zaW9uQHB1cmVqYXZhLm9yZyIsCiAgIm5hbWUiOiAiRmVkb3JhIExpbnV4IFVwZGF0ZSBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZmVkb3JhLXVwZGF0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wdXJlamF2YS9mZWRvcmEtdXBkYXRlIiwKICAidXVpZCI6ICJ1cGRhdGUtZXh0ZW5zaW9uQHB1cmVqYXZhLm9yZyIsCiAgInZlcnNpb24iOiAxMAp9"},
+    "46": {"version": "12", "sha256": "10rnx3z3xwx0kk20fq5i2gbdhn55ybia8av2g8z7y3ybcw810pls", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIFNoZWxsIHVwZGF0ZSBpbmRpY2F0b3IgZm9yIEZlZG9yYSBMaW51eC5cbiAgVGhpcyBpcyBiYXNlZCBvbiBBcmNoIExpbnV4IFVwZGF0ZXMgSW5kaWNhdG9yIGJ5IFJhcGhhXHUwMGVibCBSb2NoZXQuXG4gIFRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhZmZpbGlhdGVkLCBmdW5kZWQsIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIEZlZG9yYSBicmFuZCBhbmQgUmVkIEhhdCBTb2Z0d2FyZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ1cGRhdGUtZXh0ZW5zaW9uQHB1cmVqYXZhLm9yZyIsCiAgIm5hbWUiOiAiRmVkb3JhIExpbnV4IFVwZGF0ZSBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZmVkb3JhLXVwZGF0ZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wdXJlamF2YS9mZWRvcmEtdXBkYXRlIiwKICAidXVpZCI6ICJ1cGRhdGUtZXh0ZW5zaW9uQHB1cmVqYXZhLm9yZyIsCiAgInZlcnNpb24iOiAxMgp9"}
   }}
 , {"uuid": "utc-clock@swsnr.de", "name": "UTC clock", "pname": "utc-clock", "description": "A customizable UTC clock.\n\nAdd a second clock to the bar which shows the current UTC time, in a completely customizable format.", "link": "https://extensions.gnome.org/extension/6409/utc-clock/", "shell_version_map": {
-    "45": {"version": "12", "sha256": "17askycn2fs1a9j46x9slqxar0y7lj8ykzlqzlgh7kcw0c14zfnc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgY3VzdG9taXphYmxlIFVUQyBjbG9jay5cblxuQWRkIGEgc2Vjb25kIGNsb2NrIHRvIHRoZSBiYXIgd2hpY2ggc2hvd3MgdGhlIGN1cnJlbnQgVVRDIHRpbWUsIGluIGEgY29tcGxldGVseSBjdXN0b21pemFibGUgZm9ybWF0LiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAic3dzbnIiCiAgfSwKICAibmFtZSI6ICJVVEMgY2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3dzbnItdXRjLWNsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N3c25yL2dub21lLXNoZWxsLWV4dGVuc2lvbi11dGMtY2xvY2sjcmVhZG1lIiwKICAidXVpZCI6ICJ1dGMtY2xvY2tAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMTIsCiAgInZlcnNpb24tbmFtZSI6ICI0NS40Igp9"}
+    "45": {"version": "16", "sha256": "0iyy0fyf9ry5mj7jmqpmcs9rp74hhzmdwsipzh7bwnspxsb3ldf4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgY3VzdG9taXphYmxlIFVUQyBjbG9jay5cblxuQWRkIGEgc2Vjb25kIGNsb2NrIHRvIHRoZSBiYXIgd2hpY2ggc2hvd3MgdGhlIGN1cnJlbnQgVVRDIHRpbWUsIGluIGEgY29tcGxldGVseSBjdXN0b21pemFibGUgZm9ybWF0LiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAic3dzbnIiCiAgfSwKICAibmFtZSI6ICJVVEMgY2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3dzbnItdXRjLWNsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N3c25yL2dub21lLXNoZWxsLWV4dGVuc2lvbi11dGMtY2xvY2sjcmVhZG1lIiwKICAidXVpZCI6ICJ1dGMtY2xvY2tAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMTYsCiAgInZlcnNpb24tbmFtZSI6ICI0NS41Igp9"},
+    "46": {"version": "14", "sha256": "03s4wa6c21jgcr2l5adqmz9mxrpq3idfpi7hp99ns9gdi24p4sln", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgY3VzdG9taXphYmxlIFVUQyBjbG9jay5cblxuQWRkIGEgc2Vjb25kIGNsb2NrIHRvIHRoZSBiYXIgd2hpY2ggc2hvd3MgdGhlIGN1cnJlbnQgVVRDIHRpbWUsIGluIGEgY29tcGxldGVseSBjdXN0b21pemFibGUgZm9ybWF0LiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJwYXlwYWwiOiAic3dzbnIiCiAgfSwKICAibmFtZSI6ICJVVEMgY2xvY2siLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuc3dzbnItdXRjLWNsb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N3c25yL2dub21lLXNoZWxsLWV4dGVuc2lvbi11dGMtY2xvY2sjcmVhZG1lIiwKICAidXVpZCI6ICJ1dGMtY2xvY2tAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMTQsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4yIgp9"}
   }}
 , {"uuid": "iso8601ish@S410", "name": "ISO8601-ish Clock", "pname": "iso8601-ish-clock", "description": "Overrides Gnome's clock format with ISO8601-inspired one.\n\nClock preferences in Date & Time section of Gnome Settings are respected, in a way.\n\"Date\" and \"Seconds\" behave as usual.\n\"Week Day\" inserts ISO Week and Weekday between the date and time. E.g. \"2023-10-16 W42-1 19:45\".", "link": "https://extensions.gnome.org/extension/6413/iso8601-ish-clock/", "shell_version_map": {
-    "45": {"version": "7", "sha256": "1vfwipnffnmy0myi51ks1zpx3cy6dh1313b01jc3jz838zgkcnza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk92ZXJyaWRlcyBHbm9tZSdzIGNsb2NrIGZvcm1hdCB3aXRoIElTTzg2MDEtaW5zcGlyZWQgb25lLlxuXG5DbG9jayBwcmVmZXJlbmNlcyBpbiBEYXRlICYgVGltZSBzZWN0aW9uIG9mIEdub21lIFNldHRpbmdzIGFyZSByZXNwZWN0ZWQsIGluIGEgd2F5LlxuXCJEYXRlXCIgYW5kIFwiU2Vjb25kc1wiIGJlaGF2ZSBhcyB1c3VhbC5cblwiV2VlayBEYXlcIiBpbnNlcnRzIElTTyBXZWVrIGFuZCBXZWVrZGF5IGJldHdlZW4gdGhlIGRhdGUgYW5kIHRpbWUuIEUuZy4gXCIyMDIzLTEwLTE2IFc0Mi0xIDE5OjQ1XCIuIiwKICAibmFtZSI6ICJJU084NjAxLWlzaCBDbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vUzQxMC9pc284NjAxaXNoIiwKICAidXVpZCI6ICJpc284NjAxaXNoQFM0MTAiLAogICJ2ZXJzaW9uIjogNwp9"}
+    "45": {"version": "7", "sha256": "1vfwipnffnmy0myi51ks1zpx3cy6dh1313b01jc3jz838zgkcnza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk92ZXJyaWRlcyBHbm9tZSdzIGNsb2NrIGZvcm1hdCB3aXRoIElTTzg2MDEtaW5zcGlyZWQgb25lLlxuXG5DbG9jayBwcmVmZXJlbmNlcyBpbiBEYXRlICYgVGltZSBzZWN0aW9uIG9mIEdub21lIFNldHRpbmdzIGFyZSByZXNwZWN0ZWQsIGluIGEgd2F5LlxuXCJEYXRlXCIgYW5kIFwiU2Vjb25kc1wiIGJlaGF2ZSBhcyB1c3VhbC5cblwiV2VlayBEYXlcIiBpbnNlcnRzIElTTyBXZWVrIGFuZCBXZWVrZGF5IGJldHdlZW4gdGhlIGRhdGUgYW5kIHRpbWUuIEUuZy4gXCIyMDIzLTEwLTE2IFc0Mi0xIDE5OjQ1XCIuIiwKICAibmFtZSI6ICJJU084NjAxLWlzaCBDbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vUzQxMC9pc284NjAxaXNoIiwKICAidXVpZCI6ICJpc284NjAxaXNoQFM0MTAiLAogICJ2ZXJzaW9uIjogNwp9"},
+    "46": {"version": "7", "sha256": "1vfwipnffnmy0myi51ks1zpx3cy6dh1313b01jc3jz838zgkcnza", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk92ZXJyaWRlcyBHbm9tZSdzIGNsb2NrIGZvcm1hdCB3aXRoIElTTzg2MDEtaW5zcGlyZWQgb25lLlxuXG5DbG9jayBwcmVmZXJlbmNlcyBpbiBEYXRlICYgVGltZSBzZWN0aW9uIG9mIEdub21lIFNldHRpbmdzIGFyZSByZXNwZWN0ZWQsIGluIGEgd2F5LlxuXCJEYXRlXCIgYW5kIFwiU2Vjb25kc1wiIGJlaGF2ZSBhcyB1c3VhbC5cblwiV2VlayBEYXlcIiBpbnNlcnRzIElTTyBXZWVrIGFuZCBXZWVrZGF5IGJldHdlZW4gdGhlIGRhdGUgYW5kIHRpbWUuIEUuZy4gXCIyMDIzLTEwLTE2IFc0Mi0xIDE5OjQ1XCIuIiwKICAibmFtZSI6ICJJU084NjAxLWlzaCBDbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vUzQxMC9pc284NjAxaXNoIiwKICAidXVpZCI6ICJpc284NjAxaXNoQFM0MTAiLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
 , {"uuid": "lu-wotd@praczet.github.com", "name": "Luxembourgish - Word Of The Day", "pname": "luxembourgish-word-of-the-day", "description": "Displays Luxembourgish's The Word of the Day. It gets them (wotds) from LOD.lu", "link": "https://extensions.gnome.org/extension/6418/luxembourgish-word-of-the-day/", "shell_version_map": {
     "44": {"version": "3", "sha256": "0mn2xbvcjzqw8h95khp1sj2jaq7mpfd53wyzfcsmcc3jv4f72ipn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIEx1eGVtYm91cmdpc2gncyBUaGUgV29yZCBvZiB0aGUgRGF5LiBJdCBnZXRzIHRoZW0gKHdvdGRzKSBmcm9tIExPRC5sdSIsCiAgImdldHRleHQtZG9tYWluIjogImx1LXdvdGQiLAogICJuYW1lIjogIkx1eGVtYm91cmdpc2ggLSBXb3JkIE9mIFRoZSBEYXkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHUtd290ZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wcmFjemV0L2x1LXdvdGQiLAogICJ1dWlkIjogImx1LXdvdGRAcHJhY3pldC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
     "45": {"version": "5", "sha256": "1i5nz01qblj9lkppl470m3sh5kknf3wy6dcgws8src2sq7dx4w4r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIEx1eGVtYm91cmdpc2gncyBUaGUgV29yZCBvZiB0aGUgRGF5LiBJdCBnZXRzIHRoZW0gKHdvdGRzKSBmcm9tIExPRC5sdSIsCiAgImdldHRleHQtZG9tYWluIjogImx1LXdvdGQiLAogICJuYW1lIjogIkx1eGVtYm91cmdpc2ggLSBXb3JkIE9mIFRoZSBEYXkiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubHUtd290ZCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wcmFjemV0L2x1LXdvdGQiLAogICJ1dWlkIjogImx1LXdvdGRAcHJhY3pldC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
-, {"uuid": "command-menu@astrapi.de", "name": "Command Menu", "pname": "command-menu", "description": "A GNOME Shell Extension to manage shortcuts in Top Bar (Inspired by Shuttle and SSHMenu). Edit the .commands.json file to add your own shortcuts.\n\nSample Config in the README - https://gitlab.com/astrapi/gnome-extensions/command-menu/-/blob/main/README.md\n\nFork of great work from arunk140 and joostn", "link": "https://extensions.gnome.org/extension/6421/command-menu/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "0sqkj3r97wnyq4gpmiimxixqbk7g098vrzbah2qaplmj1x2cwrb7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgRXh0ZW5zaW9uIHRvIG1hbmFnZSBzaG9ydGN1dHMgaW4gVG9wIEJhciAoSW5zcGlyZWQgYnkgU2h1dHRsZSBhbmQgU1NITWVudSkuIEVkaXQgdGhlIC5jb21tYW5kcy5qc29uIGZpbGUgdG8gYWRkIHlvdXIgb3duIHNob3J0Y3V0cy5cblxuU2FtcGxlIENvbmZpZyBpbiB0aGUgUkVBRE1FIC0gaHR0cHM6Ly9naXRsYWIuY29tL2FzdHJhcGkvZ25vbWUtZXh0ZW5zaW9ucy9jb21tYW5kLW1lbnUvLS9ibG9iL21haW4vUkVBRE1FLm1kXG5cbkZvcmsgb2YgZ3JlYXQgd29yayBmcm9tIGFydW5rMTQwIGFuZCBqb29zdG4iLAogICJuYW1lIjogIkNvbW1hbmQgTWVudSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jb21tYW5kbWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9hc3RyYXBpL2dub21lLWV4dGVuc2lvbnMvY29tbWFuZC1tZW51IiwKICAidXVpZCI6ICJjb21tYW5kLW1lbnVAYXN0cmFwaS5kZSIsCiAgInZlcnNpb24iOiAxCn0="}
-  }}
 , {"uuid": "disable-extension-updates@swsnr.de", "name": "Disable extension updates", "pname": "disable-extension-updates", "description": "Disable automatic extension updates in GNOME\n\nThis extension patches GNOME Shell to entirely disable updates of user-installed extensions.", "link": "https://extensions.gnome.org/extension/6424/disable-extension-updates/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "0k78gjqv1zb8dy0g60ij84bi12lnxddwzkkkgp75y83pk4sawqj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYXV0b21hdGljIGV4dGVuc2lvbiB1cGRhdGVzIGluIEdOT01FXG5cblRoaXMgZXh0ZW5zaW9uIHBhdGNoZXMgR05PTUUgU2hlbGwgdG8gZW50aXJlbHkgZGlzYWJsZSB1cGRhdGVzIG9mIHVzZXItaW5zdGFsbGVkIGV4dGVuc2lvbnMuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJzd3NuciIKICB9LAogICJuYW1lIjogIkRpc2FibGUgZXh0ZW5zaW9uIHVwZGF0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRpc2FibGUtZXh0ZW5zaW9uLXVwZGF0ZXMiLAogICJ1dWlkIjogImRpc2FibGUtZXh0ZW5zaW9uLXVwZGF0ZXNAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMywKICAidmVyc2lvbi1uYW1lIjogIjQ1LjEiCn0="}
+    "45": {"version": "3", "sha256": "0k78gjqv1zb8dy0g60ij84bi12lnxddwzkkkgp75y83pk4sawqj4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYXV0b21hdGljIGV4dGVuc2lvbiB1cGRhdGVzIGluIEdOT01FXG5cblRoaXMgZXh0ZW5zaW9uIHBhdGNoZXMgR05PTUUgU2hlbGwgdG8gZW50aXJlbHkgZGlzYWJsZSB1cGRhdGVzIG9mIHVzZXItaW5zdGFsbGVkIGV4dGVuc2lvbnMuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJzd3NuciIKICB9LAogICJuYW1lIjogIkRpc2FibGUgZXh0ZW5zaW9uIHVwZGF0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRpc2FibGUtZXh0ZW5zaW9uLXVwZGF0ZXMiLAogICJ1dWlkIjogImRpc2FibGUtZXh0ZW5zaW9uLXVwZGF0ZXNAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMywKICAidmVyc2lvbi1uYW1lIjogIjQ1LjEiCn0="},
+    "46": {"version": "4", "sha256": "0rkxfacbjrkczjqdqi7mhxsk10967jy602clzp42i8bsd195r364", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgYXV0b21hdGljIGV4dGVuc2lvbiB1cGRhdGVzIGluIEdOT01FXG5cblRoaXMgZXh0ZW5zaW9uIHBhdGNoZXMgR05PTUUgU2hlbGwgdG8gZW50aXJlbHkgZGlzYWJsZSB1cGRhdGVzIG9mIHVzZXItaW5zdGFsbGVkIGV4dGVuc2lvbnMuIiwKICAiZG9uYXRpb25zIjogewogICAgInBheXBhbCI6ICJzd3NuciIKICB9LAogICJuYW1lIjogIkRpc2FibGUgZXh0ZW5zaW9uIHVwZGF0ZXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWRpc2FibGUtZXh0ZW5zaW9uLXVwZGF0ZXMiLAogICJ1dWlkIjogImRpc2FibGUtZXh0ZW5zaW9uLXVwZGF0ZXNAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogNCwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjEiCn0="}
   }}
 , {"uuid": "soundcard-switch@xnow.me", "name": "SoundCard Switch", "pname": "soundcard-switch", "description": "Enable or disable the sound card entirely by adding or removing the sound device. This precaution prevents the computer from unexpectedly making noise at inopportune moments in public places.", "link": "https://extensions.gnome.org/extension/6427/soundcard-switch/", "shell_version_map": {
     "42": {"version": "4", "sha256": "0ddwxl88dxwjdhi7awqv2rlqgk1ac8yhyqbry565y0qsrhk06j0y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkVuYWJsZSBvciBkaXNhYmxlIHRoZSBzb3VuZCBjYXJkIGVudGlyZWx5IGJ5IGFkZGluZyBvciByZW1vdmluZyB0aGUgc291bmQgZGV2aWNlLiBUaGlzIHByZWNhdXRpb24gcHJldmVudHMgdGhlIGNvbXB1dGVyIGZyb20gdW5leHBlY3RlZGx5IG1ha2luZyBub2lzZSBhdCBpbm9wcG9ydHVuZSBtb21lbnRzIGluIHB1YmxpYyBwbGFjZXMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAic291bmRjYXJkLXN3aXRjaEB4bm93Lm1lIiwKICAibmFtZSI6ICJTb3VuZENhcmQgU3dpdGNoIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3hub3ctbWUvc291bmRjYXJkLXN3aXRjaC5naXQiLAogICJ1dWlkIjogInNvdW5kY2FyZC1zd2l0Y2hAeG5vdy5tZSIsCiAgInZlcnNpb24iOiA0Cn0="}
   }}
 , {"uuid": "appmenu-is-back@fthx", "name": "App menu is back", "pname": "app-menu-is-back", "description": "The good old original app menu. For GNOME Shell 45+.\n\n Code mostly copied from GNOME Shell code itself. For a customizable app menu, please consider 'Window title is back' extension.", "link": "https://extensions.gnome.org/extension/6433/app-menu-is-back/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "13iq5zn6d49cc4x5phvx3553sh59mz9zbwpqp1wyc0g6kiydyanc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBnb29kIG9sZCBvcmlnaW5hbCBhcHAgbWVudS4gRm9yIEdOT01FIFNoZWxsIDQ1Ky5cblxuIENvZGUgbW9zdGx5IGNvcGllZCBmcm9tIEdOT01FIFNoZWxsIGNvZGUgaXRzZWxmLiBGb3IgYSBjdXN0b21pemFibGUgYXBwIG1lbnUsIHBsZWFzZSBjb25zaWRlciAnV2luZG93IHRpdGxlIGlzIGJhY2snIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIkFwcCBtZW51IGlzIGJhY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9hcHBtZW51LWlzLWJhY2siLAogICJ1dWlkIjogImFwcG1lbnUtaXMtYmFja0BmdGh4IiwKICAidmVyc2lvbiI6IDIKfQ=="}
+    "45": {"version": "2", "sha256": "13iq5zn6d49cc4x5phvx3553sh59mz9zbwpqp1wyc0g6kiydyanc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBnb29kIG9sZCBvcmlnaW5hbCBhcHAgbWVudS4gRm9yIEdOT01FIFNoZWxsIDQ1Ky5cblxuIENvZGUgbW9zdGx5IGNvcGllZCBmcm9tIEdOT01FIFNoZWxsIGNvZGUgaXRzZWxmLiBGb3IgYSBjdXN0b21pemFibGUgYXBwIG1lbnUsIHBsZWFzZSBjb25zaWRlciAnV2luZG93IHRpdGxlIGlzIGJhY2snIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIkFwcCBtZW51IGlzIGJhY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9hcHBtZW51LWlzLWJhY2siLAogICJ1dWlkIjogImFwcG1lbnUtaXMtYmFja0BmdGh4IiwKICAidmVyc2lvbiI6IDIKfQ=="},
+    "46": {"version": "3", "sha256": "0y1jw7l50r3as4lbcj7sgnfv35565qwwnsjpi6cfasgv4wwhlz92", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoZSBnb29kIG9sZCBvcmlnaW5hbCBhcHAgbWVudS4gRm9yIEdOT01FIFNoZWxsIDQ1Ky5cblxuIENvZGUgbW9zdGx5IGNvcGllZCBmcm9tIEdOT01FIFNoZWxsIGNvZGUgaXRzZWxmLiBGb3IgYSBjdXN0b21pemFibGUgYXBwIG1lbnUsIHBsZWFzZSBjb25zaWRlciAnV2luZG93IHRpdGxlIGlzIGJhY2snIGV4dGVuc2lvbi4iLAogICJuYW1lIjogIkFwcCBtZW51IGlzIGJhY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9hcHBtZW51LWlzLWJhY2siLAogICJ1dWlkIjogImFwcG1lbnUtaXMtYmFja0BmdGh4IiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
 , {"uuid": "hideclock@kevinbburns.com", "name": "Hide That Clock", "pname": "hide-that-clock", "description": "Simply hides the clock from the panel.", "link": "https://extensions.gnome.org/extension/6439/hide-that-clock/", "shell_version_map": {
     "45": {"version": "2", "sha256": "1ggbh9j95pji6g43mf4859i2sgwfzps2pkmkghgp950mkal71ajl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBseSBoaWRlcyB0aGUgY2xvY2sgZnJvbSB0aGUgcGFuZWwuIiwKICAibmFtZSI6ICJIaWRlIFRoYXQgQ2xvY2siLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20va2V2aW5iYnVybnMvR25vbWVIaWRlQ2xvY2siLAogICJ1dWlkIjogImhpZGVjbG9ja0BrZXZpbmJidXJucy5jb20iLAogICJ2ZXJzaW9uIjogMgp9"}
   }}
 , {"uuid": "panel-free@fthx", "name": "Panel Free", "pname": "panel-free", "description": "Hide top panel. Panel appears only in overview.", "link": "https://extensions.gnome.org/extension/6454/panel-free/", "shell_version_map": {
-    "45": {"version": "6", "sha256": "1nzy84vrb71f1v7z6bqwfj6dm6nkg2a6a658vmdz79vmsrljidgz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdG9wIHBhbmVsLiBQYW5lbCBhcHBlYXJzIG9ubHkgaW4gb3ZlcnZpZXcuIiwKICAibmFtZSI6ICJQYW5lbCBGcmVlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvcGFuZWwtZnJlZSIsCiAgInV1aWQiOiAicGFuZWwtZnJlZUBmdGh4IiwKICAidmVyc2lvbiI6IDYKfQ=="}
+    "45": {"version": "6", "sha256": "1nzy84vrb71f1v7z6bqwfj6dm6nkg2a6a658vmdz79vmsrljidgz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdG9wIHBhbmVsLiBQYW5lbCBhcHBlYXJzIG9ubHkgaW4gb3ZlcnZpZXcuIiwKICAibmFtZSI6ICJQYW5lbCBGcmVlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvcGFuZWwtZnJlZSIsCiAgInV1aWQiOiAicGFuZWwtZnJlZUBmdGh4IiwKICAidmVyc2lvbiI6IDYKfQ=="},
+    "46": {"version": "7", "sha256": "0mmcj64lrp15djpn8cv64yc2j52lxi94cn1zq6nzd9i4j0r651yk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdG9wIHBhbmVsLiBQYW5lbCBhcHBlYXJzIG9ubHkgaW4gb3ZlcnZpZXcuIiwKICAibmFtZSI6ICJQYW5lbCBGcmVlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvcGFuZWwtZnJlZSIsCiAgInV1aWQiOiAicGFuZWwtZnJlZUBmdGh4IiwKICAidmVyc2lvbiI6IDcKfQ=="}
   }}
 , {"uuid": "VividShade@mozo64.github.io", "name": "VividShade: Multi-Monitor RGB Dimming Control", "pname": "vividshade-multi-monitor-rgb-dimming-control", "description": "Multimonitor dimming overlay with RGB regulation: extension adds a button with a light bulb icon to your panel. Clicking this button reveals individual sliders for each connected monitor, allowing you to adjust the dimming level. Additionally, you can toggle the color of the dimming effect and customize it using RGB sliders located at the bottom of the menu. \n\nTested with Ubuntu 22.04.3 LTS and GNOME Shell 42.9. \n\nIt is a fork of Dim Desktop 70.", "link": "https://extensions.gnome.org/extension/6463/vividshade-multi-monitor-rgb-dimming-control/", "shell_version_map": {
     "42": {"version": "1", "sha256": "0lw047iqjzmsnz19wajr73n1zprgh8r4mhh9srjkhm65k5h4gfs5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk11bHRpbW9uaXRvciBkaW1taW5nIG92ZXJsYXkgd2l0aCBSR0IgcmVndWxhdGlvbjogZXh0ZW5zaW9uIGFkZHMgYSBidXR0b24gd2l0aCBhIGxpZ2h0IGJ1bGIgaWNvbiB0byB5b3VyIHBhbmVsLiBDbGlja2luZyB0aGlzIGJ1dHRvbiByZXZlYWxzIGluZGl2aWR1YWwgc2xpZGVycyBmb3IgZWFjaCBjb25uZWN0ZWQgbW9uaXRvciwgYWxsb3dpbmcgeW91IHRvIGFkanVzdCB0aGUgZGltbWluZyBsZXZlbC4gQWRkaXRpb25hbGx5LCB5b3UgY2FuIHRvZ2dsZSB0aGUgY29sb3Igb2YgdGhlIGRpbW1pbmcgZWZmZWN0IGFuZCBjdXN0b21pemUgaXQgdXNpbmcgUkdCIHNsaWRlcnMgbG9jYXRlZCBhdCB0aGUgYm90dG9tIG9mIHRoZSBtZW51LiBcblxuVGVzdGVkIHdpdGggVWJ1bnR1IDIyLjA0LjMgTFRTIGFuZCBHTk9NRSBTaGVsbCA0Mi45LiBcblxuSXQgaXMgYSBmb3JrIG9mIERpbSBEZXNrdG9wIDcwLiIsCiAgIm5hbWUiOiAiVml2aWRTaGFkZTogTXVsdGktTW9uaXRvciBSR0IgRGltbWluZyBDb250cm9sIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21vem82NC9WaXZpZFNoYWRlIiwKICAidXVpZCI6ICJWaXZpZFNoYWRlQG1vem82NC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMQp9"}
   }}
 , {"uuid": "picture-of-the-day@swsnr.de", "name": "Picture of the Day", "pname": "picture-of-the-day", "description": "Get a picture of the day as desktop background or wallpaper.\n\nSupports the following sources: NASA Astronomy Picture of the Day (APOD), NASA Earth Observatory Image of the Day, Bing, and Wikimedia Featured Image.", "link": "https://extensions.gnome.org/extension/6469/picture-of-the-day/", "shell_version_map": {
-    "45": {"version": "20", "sha256": "0fsx12ngzhhzrhrabd5r6d10yyf5x7gg3manm6b09hb1xqwrl7cv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdldCBhIHBpY3R1cmUgb2YgdGhlIGRheSBhcyBkZXNrdG9wIGJhY2tncm91bmQuXG5cblN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgc291cmNlczpcblxuKiBOQVNBIEFzdHJvbm9teSBQaWN0dXJlIG9mIHRoZSBEYXkgKEFQT0QpIGZyb20gaHR0cHM6Ly9hcG9kLm5hc2EuZ292L2Fwb2QvYXN0cm9waXguaHRtbFxuKiBOQVNBIEVhcnRoIE9ic2VydmF0b3J5IEltYWdlIG9mIHRoZSBEYXkgZnJvbSBodHRwczovL2VhcnRob2JzZXJ2YXRvcnkubmFzYS5nb3YvdG9waWMvaW1hZ2Utb2YtdGhlLWRheVxuKiBCaW5nIGZyb20gaHR0cHM6Ly93d3cuYmluZy5jb21cbiogV2lraW1lZGlhIGZyb20gaHR0cHM6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9NYWluX1BhZ2VcbiIsCiAgImdldHRleHQtZG9tYWluIjogInBpY3R1cmUtb2YtdGhlLWRheUBzd3Nuci5kZSIsCiAgIm5hbWUiOiAiUGljdHVyZSBvZiB0aGUgRGF5IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN3c25yLXBpY3R1cmUtb2YtdGhlLWRheSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zd3Nuci9nbm9tZS1zaGVsbC1leHRlbnNpb24tcGljdHVyZS1vZi10aGUtZGF5IiwKICAidXVpZCI6ICJwaWN0dXJlLW9mLXRoZS1kYXlAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMjAsCiAgInZlcnNpb24tbmFtZSI6ICI0NS4xMyIKfQ=="}
+    "45": {"version": "25", "sha256": "0vpkz83hazvb488w8wklf4bv8vr65dgk7ib9ws2h32xrr3c3j1rc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdldCBhIHBpY3R1cmUgb2YgdGhlIGRheSBhcyBkZXNrdG9wIGJhY2tncm91bmQgb3Igd2FsbHBhcGVyLlxuXG5TdXBwb3J0cyB0aGUgZm9sbG93aW5nIHNvdXJjZXM6IE5BU0EgQXN0cm9ub215IFBpY3R1cmUgb2YgdGhlIERheSAoQVBPRCksIE5BU0EgRWFydGggT2JzZXJ2YXRvcnkgSW1hZ2Ugb2YgdGhlIERheSwgQmluZywgYW5kIFdpa2ltZWRpYSBGZWF0dXJlZCBJbWFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJwaWN0dXJlLW9mLXRoZS1kYXlAc3dzbnIuZGUiLAogICJuYW1lIjogIlBpY3R1cmUgb2YgdGhlIERheSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zd3Nuci1waWN0dXJlLW9mLXRoZS1kYXkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBpY3R1cmUtb2YtdGhlLWRheSIsCiAgInV1aWQiOiAicGljdHVyZS1vZi10aGUtZGF5QHN3c25yLmRlIiwKICAidmVyc2lvbiI6IDI1LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDUuMTUiCn0="},
+    "46": {"version": "24", "sha256": "14bsgahjvwazrpgfr11wwsqvjna8r9h0jcipdin8lisia312l77r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdldCBhIHBpY3R1cmUgb2YgdGhlIGRheSBhcyBkZXNrdG9wIGJhY2tncm91bmQgb3Igd2FsbHBhcGVyLlxuXG5TdXBwb3J0cyB0aGUgZm9sbG93aW5nIHNvdXJjZXM6IE5BU0EgQXN0cm9ub215IFBpY3R1cmUgb2YgdGhlIERheSAoQVBPRCksIE5BU0EgRWFydGggT2JzZXJ2YXRvcnkgSW1hZ2Ugb2YgdGhlIERheSwgQmluZywgYW5kIFdpa2ltZWRpYSBGZWF0dXJlZCBJbWFnZS4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJwaWN0dXJlLW9mLXRoZS1kYXlAc3dzbnIuZGUiLAogICJuYW1lIjogIlBpY3R1cmUgb2YgdGhlIERheSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zd3Nuci1waWN0dXJlLW9mLXRoZS1kYXkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXBpY3R1cmUtb2YtdGhlLWRheSIsCiAgInV1aWQiOiAicGljdHVyZS1vZi10aGUtZGF5QHN3c25yLmRlIiwKICAidmVyc2lvbiI6IDI0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDYuMiIKfQ=="}
   }}
 , {"uuid": "overviewnow@thesola.io", "name": "Overview Flick", "pname": "overview-flick", "description": "Flick from the right to get the Overview.\n\nThis extension was revived to GNOME 45 from the original, https://extensions.gnome.org/extension/1088/overview-now/\n\nOriginal description:\n\nThis is my first extension. Thanks, GNOME!. Based on \"Slide for Keyboard\", https://extensions.gnome.org/extension/993/slide-for-keyboard/\n\nWhy did I do this? Well, if you do a gesture with your thumb, on your touchscreen, from the right to the center, you'll get the Overview. If you do that, your thumb will be placed in the Desktop selector, so you will be able to move between desktops with your thumb. Perfect! This is also easier to trigger than the default GNOME gesture (three fingers closing).", "link": "https://extensions.gnome.org/extension/6478/overview-flick/", "shell_version_map": {
     "45": {"version": "2", "sha256": "14bbic6vx13vaj5xqws34mlwmvfq436al63lzvwa41hkckqyxk6s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkZsaWNrIGZyb20gdGhlIHJpZ2h0IHRvIGdldCB0aGUgT3ZlcnZpZXcuXG5cblRoaXMgZXh0ZW5zaW9uIHdhcyByZXZpdmVkIHRvIEdOT01FIDQ1IGZyb20gdGhlIG9yaWdpbmFsLCBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi8xMDg4L292ZXJ2aWV3LW5vdy9cblxuT3JpZ2luYWwgZGVzY3JpcHRpb246XG5cblRoaXMgaXMgbXkgZmlyc3QgZXh0ZW5zaW9uLiBUaGFua3MsIEdOT01FIS4gQmFzZWQgb24gXCJTbGlkZSBmb3IgS2V5Ym9hcmRcIiwgaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vOTkzL3NsaWRlLWZvci1rZXlib2FyZC9cblxuV2h5IGRpZCBJIGRvIHRoaXM/IFdlbGwsIGlmIHlvdSBkbyBhIGdlc3R1cmUgd2l0aCB5b3VyIHRodW1iLCBvbiB5b3VyIHRvdWNoc2NyZWVuLCBmcm9tIHRoZSByaWdodCB0byB0aGUgY2VudGVyLCB5b3UnbGwgZ2V0IHRoZSBPdmVydmlldy4gSWYgeW91IGRvIHRoYXQsIHlvdXIgdGh1bWIgd2lsbCBiZSBwbGFjZWQgaW4gdGhlIERlc2t0b3Agc2VsZWN0b3IsIHNvIHlvdSB3aWxsIGJlIGFibGUgdG8gbW92ZSBiZXR3ZWVuIGRlc2t0b3BzIHdpdGggeW91ciB0aHVtYi4gUGVyZmVjdCEgVGhpcyBpcyBhbHNvIGVhc2llciB0byB0cmlnZ2VyIHRoYW4gdGhlIGRlZmF1bHQgR05PTUUgZ2VzdHVyZSAodGhyZWUgZmluZ2VycyBjbG9zaW5nKS4iLAogICJuYW1lIjogIk92ZXJ2aWV3IEZsaWNrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3RoZXNvbGExMC9nbm9tZS1zaGVsbC1vdmVydmlldy1mbGljayIsCiAgInV1aWQiOiAib3ZlcnZpZXdub3dAdGhlc29sYS5pbyIsCiAgInZlcnNpb24iOiAyCn0="}
@@ -6382,10 +6642,12 @@
     "44": {"version": "2", "sha256": "1jr8w2kyby1jsmw7ycv0kang2hb8514p4lqn06h3hlm1vf5hd0zy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkNvbnZlcnQgVVMgRG9sbGFyIHRvIFJ1c3NpYW4gcnVibGUuIFVwZGF0ZXMgYXJlIHJlY2VpdmVkIGV2ZXJ5IDMwIHNlY29uZHMuXG5cbkl0IGlzIGEgZm9yayBvZiBVU0QtVFJZLiBUaGlzIGV4dGVuc2lvbiB1c2VzIGVjb25vbWlhLmF3ZXNvbWVhcGkuY29tLmJyIiwKICAibmFtZSI6ICJVU0QtUlVCIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ydXMtOTktcGsvVVNELVJVQiIsCiAgInV1aWQiOiAidXNkLXJ1YkBydXMtOTktcGsuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyCn0="}
   }}
 , {"uuid": "TeaTimer@zener.sbg.at", "name": "TeaTimer", "pname": "teatimer", "description": "A tea steeping timer\nFollow-up Fork of https://extensions.gnome.org/extension/604/teatime", "link": "https://extensions.gnome.org/extension/6520/teatimer/", "shell_version_map": {
-    "45": {"version": "8", "sha256": "0gys9msjwfwwzcsipa8xfx50r3dpijxmpv10zrdjshlph7lwikyc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgdGVhIHN0ZWVwaW5nIHRpbWVyXG5Gb2xsb3ctdXAgRm9yayBvZiBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi82MDQvdGVhdGltZSIsCiAgImdldHRleHQtZG9tYWluIjogIlRlYVRpbWVyIiwKICAibmFtZSI6ICJUZWFUaW1lciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50ZWF0aW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS96ZW5lcnMvZ25vbWUtc2hlbGwtdGVhdGltZS90cmVlL3RlYXRpbWVyIiwKICAidXVpZCI6ICJUZWFUaW1lckB6ZW5lci5zYmcuYXQiLAogICJ2ZXJzaW9uIjogOAp9"}
+    "45": {"version": "9", "sha256": "129yyy3x4z5r4q5j6rwc3082n6cqg2fm4a1gszi1hpjqc7lyrgb3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgdGVhIHN0ZWVwaW5nIHRpbWVyXG5Gb2xsb3ctdXAgRm9yayBvZiBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi82MDQvdGVhdGltZSIsCiAgImdldHRleHQtZG9tYWluIjogIlRlYVRpbWVyIiwKICAibmFtZSI6ICJUZWFUaW1lciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50ZWF0aW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vemVuZXJzL2dub21lLXNoZWxsLXRlYXRpbWUvdHJlZS90ZWF0aW1lciIsCiAgInV1aWQiOiAiVGVhVGltZXJAemVuZXIuc2JnLmF0IiwKICAidmVyc2lvbiI6IDkKfQ=="},
+    "46": {"version": "9", "sha256": "129yyy3x4z5r4q5j6rwc3082n6cqg2fm4a1gszi1hpjqc7lyrgb3", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgdGVhIHN0ZWVwaW5nIHRpbWVyXG5Gb2xsb3ctdXAgRm9yayBvZiBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4dGVuc2lvbi82MDQvdGVhdGltZSIsCiAgImdldHRleHQtZG9tYWluIjogIlRlYVRpbWVyIiwKICAibmFtZSI6ICJUZWFUaW1lciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50ZWF0aW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vemVuZXJzL2dub21lLXNoZWxsLXRlYXRpbWUvdHJlZS90ZWF0aW1lciIsCiAgInV1aWQiOiAiVGVhVGltZXJAemVuZXIuc2JnLmF0IiwKICAidmVyc2lvbiI6IDkKfQ=="}
   }}
 , {"uuid": "panel-workspace-scroll@polymeilex.github.io", "name": "Panel Workspace Scroll", "pname": "panel-workspace-scroll", "description": "Switch workspace by mouse scroll on the panel.\nIn contrast to alternative extensions purpose of this one is to use the native scroll handler of gnome-shell, so workspace scroll should behave exactly the same as overview scroll or workspace indicator scroll.", "link": "https://extensions.gnome.org/extension/6523/panel-workspace-scroll/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "1k75si1dhnmaail2dm569psgxaazx06iinpdyayrkp2wiwd0lfk5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsIG9uIHRoZSBwYW5lbC5cbkluIGNvbnRyYXN0IHRvIGFsdGVybmF0aXZlIGV4dGVuc2lvbnMgcHVycG9zZSBvZiB0aGlzIG9uZSBpcyB0byB1c2UgdGhlIG5hdGl2ZSBzY3JvbGwgaGFuZGxlciBvZiBnbm9tZS1zaGVsbCwgc28gd29ya3NwYWNlIHNjcm9sbCBzaG91bGQgYmVoYXZlIGV4YWN0bHkgdGhlIHNhbWUgYXMgb3ZlcnZpZXcgc2Nyb2xsIG9yIHdvcmtzcGFjZSBpbmRpY2F0b3Igc2Nyb2xsLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC13b3Jrc3BhY2Utc2Nyb2xsIiwKICAibmFtZSI6ICJQYW5lbCBXb3Jrc3BhY2UgU2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJtYXJ5bmN6YWtiYXJ0bG9taWVqQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5TWVpbGV4L2dub21lLXNoZWxsLWV4dGVuc2lvbi1wYW5lbC13b3Jrc3BhY2Utc2Nyb2xsIiwKICAidXVpZCI6ICJwYW5lbC13b3Jrc3BhY2Utc2Nyb2xsQHBvbHltZWlsZXguZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDIKfQ=="}
+    "45": {"version": "3", "sha256": "0m1zbdshi55y43yaz2cplzsvs6a2plwsmj941ljf7l1kzk8wipb5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsIG9uIHRoZSBwYW5lbC5cbkluIGNvbnRyYXN0IHRvIGFsdGVybmF0aXZlIGV4dGVuc2lvbnMgcHVycG9zZSBvZiB0aGlzIG9uZSBpcyB0byB1c2UgdGhlIG5hdGl2ZSBzY3JvbGwgaGFuZGxlciBvZiBnbm9tZS1zaGVsbCwgc28gd29ya3NwYWNlIHNjcm9sbCBzaG91bGQgYmVoYXZlIGV4YWN0bHkgdGhlIHNhbWUgYXMgb3ZlcnZpZXcgc2Nyb2xsIG9yIHdvcmtzcGFjZSBpbmRpY2F0b3Igc2Nyb2xsLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC13b3Jrc3BhY2Utc2Nyb2xsIiwKICAibmFtZSI6ICJQYW5lbCBXb3Jrc3BhY2UgU2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJtYXJ5bmN6YWtiYXJ0bG9taWVqQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUG9seU1laWxleC9nbm9tZS1zaGVsbC1leHRlbnNpb24tcGFuZWwtd29ya3NwYWNlLXNjcm9sbCIsCiAgInV1aWQiOiAicGFuZWwtd29ya3NwYWNlLXNjcm9sbEBwb2x5bWVpbGV4LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAzCn0="},
+    "46": {"version": "3", "sha256": "0m1zbdshi55y43yaz2cplzsvs6a2plwsmj941ljf7l1kzk8wipb5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCB3b3Jrc3BhY2UgYnkgbW91c2Ugc2Nyb2xsIG9uIHRoZSBwYW5lbC5cbkluIGNvbnRyYXN0IHRvIGFsdGVybmF0aXZlIGV4dGVuc2lvbnMgcHVycG9zZSBvZiB0aGlzIG9uZSBpcyB0byB1c2UgdGhlIG5hdGl2ZSBzY3JvbGwgaGFuZGxlciBvZiBnbm9tZS1zaGVsbCwgc28gd29ya3NwYWNlIHNjcm9sbCBzaG91bGQgYmVoYXZlIGV4YWN0bHkgdGhlIHNhbWUgYXMgb3ZlcnZpZXcgc2Nyb2xsIG9yIHdvcmtzcGFjZSBpbmRpY2F0b3Igc2Nyb2xsLiIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC13b3Jrc3BhY2Utc2Nyb2xsIiwKICAibmFtZSI6ICJQYW5lbCBXb3Jrc3BhY2UgU2Nyb2xsIiwKICAib3JpZ2luYWwtYXV0aG9ycyI6ICJtYXJ5bmN6YWtiYXJ0bG9taWVqQGdtYWlsLmNvbSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUG9seU1laWxleC9nbm9tZS1zaGVsbC1leHRlbnNpb24tcGFuZWwtd29ya3NwYWNlLXNjcm9sbCIsCiAgInV1aWQiOiAicGFuZWwtd29ya3NwYWNlLXNjcm9sbEBwb2x5bWVpbGV4LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAzCn0="}
   }}
 , {"uuid": "todo-list@speedflyer689.github.com", "name": "Todo list", "pname": "todo-list", "description": "Adds a todo list to the notification panel", "link": "https://extensions.gnome.org/extension/6526/todo-list/", "shell_version_map": {
     "38": {"version": "3", "sha256": "06hqbrk894bi0acilq4vg5a3h3gjmkmi1jv7vmaws0bn7gzqafjx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSB0b2RvIGxpc3QgdG8gdGhlIG5vdGlmaWNhdGlvbiBwYW5lbCIsCiAgIm5hbWUiOiAiVG9kbyBsaXN0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICIzLjM4IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BlZWRmbHllcjY4OS9Hbm9tZS1Ub2RvLUxpc3QiLAogICJ1dWlkIjogInRvZG8tbGlzdEBzcGVlZGZseWVyNjg5LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMwp9"}
@@ -6397,31 +6659,35 @@
     "45": {"version": "12", "sha256": "1zykpyzm7s19db4g2kl3p9nlywzag3rg1331mjq6vscsky2y5iy9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIGxvZ28gdG8gdGhlIGRlc2t0b3AuIFxuIFRoaXMgaXMgYSBmb3JrIG9mIEJhY2tncm91bmQgTG9nbyBleHRlbnNpb24gXG4gaHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vODg5L2JhY2tncm91bmQtbG9nby8iLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogImhvd2JlYSIKICB9LAogICJuYW1lIjogIkRlc2t0b3AgTG9nbyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sb2dvLXdpZGdldCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ob3diZWEvbG9nby13aWRnZXQiLAogICJ1dWlkIjogImxvZ293aWRnZXRAZ2l0aHViLmNvbS5ob3diZWEiLAogICJ2ZXJzaW9uIjogMTIKfQ=="}
   }}
 , {"uuid": "azan@a7medkhalaf", "name": "xAzanTimes", "pname": "xazantimes", "description": "Azan is an Islamic prayer times extension for Gnome Shell.\nIt's a fork of the extension by faissaloo.\n\nFeatures\n- List compulsory prayer times\n- Optionally display Imsak, Sunrise, Sunset and Midnight\n- Show remaining time for the upcoming prayer.\n- Show current date in Hijri calendar.\n- Display a notification when it's time for prayer.\n- Automatic Geoclue2 location detection\n- Show times in 24 hour and 12 hour formats\n- Hijri date adjusment\n- Iqamah option", "link": "https://extensions.gnome.org/extension/6538/xazantimes/", "shell_version_map": {
-    "45": {"version": "6", "sha256": "1zcnxs6px0mwfpbngga0h3nnbkx2fhhpy5pfrdfw3nk8yw5gkm63", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF6YW4gaXMgYW4gSXNsYW1pYyBwcmF5ZXIgdGltZXMgZXh0ZW5zaW9uIGZvciBHbm9tZSBTaGVsbC5cbkl0J3MgYSBmb3JrIG9mIHRoZSBleHRlbnNpb24gYnkgZmFpc3NhbG9vLlxuXG5GZWF0dXJlc1xuLSBMaXN0IGNvbXB1bHNvcnkgcHJheWVyIHRpbWVzXG4tIE9wdGlvbmFsbHkgZGlzcGxheSBJbXNhaywgU3VucmlzZSwgU3Vuc2V0IGFuZCBNaWRuaWdodFxuLSBTaG93IHJlbWFpbmluZyB0aW1lIGZvciB0aGUgdXBjb21pbmcgcHJheWVyLlxuLSBTaG93IGN1cnJlbnQgZGF0ZSBpbiBIaWpyaSBjYWxlbmRhci5cbi0gRGlzcGxheSBhIG5vdGlmaWNhdGlvbiB3aGVuIGl0J3MgdGltZSBmb3IgcHJheWVyLlxuLSBBdXRvbWF0aWMgR2VvY2x1ZTIgbG9jYXRpb24gZGV0ZWN0aW9uXG4tIFNob3cgdGltZXMgaW4gMjQgaG91ciBhbmQgMTIgaG91ciBmb3JtYXRzXG4tIEhpanJpIGRhdGUgYWRqdXNtZW50XG4tIElxYW1haCBvcHRpb24iLAogICJuYW1lIjogInhBemFuVGltZXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXphbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hN21lZGtoYWxhZi9hemFuLWdub21lLXNoZWxsLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiYXphbkBhN21lZGtoYWxhZiIsCiAgInZlcnNpb24iOiA2Cn0="}
+    "45": {"version": "7", "sha256": "1h23vjk96fyyx11zvyp22b0iwjy531mn4c4jm53y0fq88g76s0jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF6YW4gaXMgYW4gSXNsYW1pYyBwcmF5ZXIgdGltZXMgZXh0ZW5zaW9uIGZvciBHbm9tZSBTaGVsbC5cbkl0J3MgYSBmb3JrIG9mIHRoZSBleHRlbnNpb24gYnkgZmFpc3NhbG9vLlxuXG5GZWF0dXJlc1xuLSBMaXN0IGNvbXB1bHNvcnkgcHJheWVyIHRpbWVzXG4tIE9wdGlvbmFsbHkgZGlzcGxheSBJbXNhaywgU3VucmlzZSwgU3Vuc2V0IGFuZCBNaWRuaWdodFxuLSBTaG93IHJlbWFpbmluZyB0aW1lIGZvciB0aGUgdXBjb21pbmcgcHJheWVyLlxuLSBTaG93IGN1cnJlbnQgZGF0ZSBpbiBIaWpyaSBjYWxlbmRhci5cbi0gRGlzcGxheSBhIG5vdGlmaWNhdGlvbiB3aGVuIGl0J3MgdGltZSBmb3IgcHJheWVyLlxuLSBBdXRvbWF0aWMgR2VvY2x1ZTIgbG9jYXRpb24gZGV0ZWN0aW9uXG4tIFNob3cgdGltZXMgaW4gMjQgaG91ciBhbmQgMTIgaG91ciBmb3JtYXRzXG4tIEhpanJpIGRhdGUgYWRqdXNtZW50XG4tIElxYW1haCBvcHRpb24iLAogICJuYW1lIjogInhBemFuVGltZXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXphbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hN21lZGtoYWxhZi9hemFuLWdub21lLXNoZWxsLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiYXphbkBhN21lZGtoYWxhZiIsCiAgInZlcnNpb24iOiA3Cn0="}
   }}
 , {"uuid": "restartinto@bgreco.net", "name": "Restart Into...", "pname": "restart-into", "description": "Adds a button in the Restart dialog to select a secondary operating system", "link": "https://extensions.gnome.org/extension/6541/restart-into/", "shell_version_map": {
     "42": {"version": "4", "sha256": "0kz5lq0gxj4vvy6rlhzh5hpilzjwzh2qgjbc8nyvj3wwpzrw1pfi", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBidXR0b24gaW4gdGhlIFJlc3RhcnQgZGlhbG9nIHRvIHNlbGVjdCBhIHNlY29uZGFyeSBvcGVyYXRpbmcgc3lzdGVtIiwKICAibmFtZSI6ICJSZXN0YXJ0IEludG8uLi4iLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubmV0LWJncmVjby1yZXN0YXJ0aW50byIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiCiAgXSwKICAidXJsIjogImh0dHBzOi8vaGcuYmdyZWNvLm5ldC9yZXN0YXJ0aW50b0BiZ3JlY28ubmV0IiwKICAidXVpZCI6ICJyZXN0YXJ0aW50b0BiZ3JlY28ubmV0IiwKICAidmVyc2lvbiI6IDQsCiAgInZlcnNpb24tbmFtZSI6ICI0Mi4xLjIiCn0="}
   }}
 , {"uuid": "clown@markocic", "name": "Clown", "pname": "clown", "description": "Displays clown emoji in the panel and plays clown theme song on click", "link": "https://extensions.gnome.org/extension/6544/clown/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "13ybvk48whny007fxvspdpx7slg42l7fgrg0drcfrh9w6c6jvq0l", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGNsb3duIGVtb2ppIGluIHRoZSBwYW5lbCBhbmQgcGxheXMgY2xvd24gdGhlbWUgc29uZyBvbiBjbGljayIsCiAgIm5hbWUiOiAiQ2xvd24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFya29jaWMvY2xvd24tZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJjbG93bkBtYXJrb2NpYyIsCiAgInZlcnNpb24iOiAzCn0="}
+    "45": {"version": "7", "sha256": "1lqq2jkigpgvgw04cgnqm5l16zfzhnw74n5vw1q94xqn9x7kw19p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGNsb3duIGVtb2ppIGluIHRoZSBwYW5lbCBhbmQgcGxheXMgY2xvd24gdGhlbWUgc29uZyBvbiBjbGljayIsCiAgIm5hbWUiOiAiQ2xvd24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmtvY2ljL2Nsb3duLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiY2xvd25AbWFya29jaWMiLAogICJ2ZXJzaW9uIjogNwp9"},
+    "46": {"version": "7", "sha256": "1lqq2jkigpgvgw04cgnqm5l16zfzhnw74n5vw1q94xqn9x7kw19p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIGNsb3duIGVtb2ppIGluIHRoZSBwYW5lbCBhbmQgcGxheXMgY2xvd24gdGhlbWUgc29uZyBvbiBjbGljayIsCiAgIm5hbWUiOiAiQ2xvd24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hcmtvY2ljL2Nsb3duLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiY2xvd25AbWFya29jaWMiLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
-, {"uuid": "input-source-dbus-interface@raiden_fumo", "name": "Input source D-Bus interface", "pname": "input-source-d-bus-interface", "description": "Add D-Bus interface for changing input sources via command. Useful for binding separate shortcuts for switching to different input sources (keyboard layouts). See README for details on how to use.", "link": "https://extensions.gnome.org/extension/6547/input-source-d-bus-interface/", "shell_version_map": {
+, {"uuid": "input-source-dbus-interface@raiden_fumo", "name": "Input source D-Bus interface", "pname": "input-source-d-bus-interface", "description": "Add D-Bus interface for changing input sources via command", "link": "https://extensions.gnome.org/extension/6547/input-source-d-bus-interface/", "shell_version_map": {
     "38": {"version": "3", "sha256": "1yj6b4ccfmk3k9bv2hp7x29dsa1ms7spq6n1xy8alaijy04jav5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiAzCn0="},
     "40": {"version": "3", "sha256": "1yj6b4ccfmk3k9bv2hp7x29dsa1ms7spq6n1xy8alaijy04jav5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiAzCn0="},
     "41": {"version": "3", "sha256": "1yj6b4ccfmk3k9bv2hp7x29dsa1ms7spq6n1xy8alaijy04jav5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiAzCn0="},
     "42": {"version": "3", "sha256": "1yj6b4ccfmk3k9bv2hp7x29dsa1ms7spq6n1xy8alaijy04jav5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiAzCn0="},
     "43": {"version": "3", "sha256": "1yj6b4ccfmk3k9bv2hp7x29dsa1ms7spq6n1xy8alaijy04jav5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiAzCn0="},
     "44": {"version": "3", "sha256": "1yj6b4ccfmk3k9bv2hp7x29dsa1ms7spq6n1xy8alaijy04jav5a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMjgiLAogICAgIjMuMzAiLAogICAgIjMuMzQiLAogICAgIjMuMzIiLAogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MSIsCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiAzCn0="},
-    "45": {"version": "2", "sha256": "0plh54aqh27kzp2rnbmsf4rqgr1mdx4nl16fg0ijnhfg700yvl45", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVycnNjaGVyLW9mLXNsZWVwaW5nL2dub21lLWlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZSIsCiAgInV1aWQiOiAiaW5wdXQtc291cmNlLWRidXMtaW50ZXJmYWNlQHJhaWRlbl9mdW1vIiwKICAidmVyc2lvbiI6IDIKfQ=="}
+    "45": {"version": "4", "sha256": "0kf1zzf85xbx7fa0x4zdazfwylmx6mimhyncrb54l51hgrplbxxz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiA0Cn0="},
+    "46": {"version": "4", "sha256": "0kf1zzf85xbx7fa0x4zdazfwylmx6mimhyncrb54l51hgrplbxxz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBELUJ1cyBpbnRlcmZhY2UgZm9yIGNoYW5naW5nIGlucHV0IHNvdXJjZXMgdmlhIGNvbW1hbmQiLAogICJuYW1lIjogIklucHV0IHNvdXJjZSBELUJ1cyBpbnRlcmZhY2UiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hlcnJzY2hlci1vZi1zbGVlcGluZy9nbm9tZS1pbnB1dC1zb3VyY2UtZGJ1cy1pbnRlcmZhY2UiLAogICJ1dWlkIjogImlucHV0LXNvdXJjZS1kYnVzLWludGVyZmFjZUByYWlkZW5fZnVtbyIsCiAgInZlcnNpb24iOiA0Cn0="}
   }}
 , {"uuid": "rectangle@acristoffers.me", "name": "Rectangle", "pname": "rectangle", "description": "Magnet/Rectangle like manual tiling", "link": "https://extensions.gnome.org/extension/6553/rectangle/", "shell_version_map": {
     "42": {"version": "12", "sha256": "0zmy1v8jgydk6dp6a3rgq6c7yjn2whb3hxwbkxy2063qb9c2vmv4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ25ldC9SZWN0YW5nbGUgbGlrZSBtYW51YWwgdGlsaW5nIiwKICAibmFtZSI6ICJSZWN0YW5nbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVjdGFuZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWNyaXN0b2ZmZXJzL2dub21lLXJlY3RhbmdsZSIsCiAgInV1aWQiOiAicmVjdGFuZ2xlQGFjcmlzdG9mZmVycy5tZSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "43": {"version": "12", "sha256": "0zmy1v8jgydk6dp6a3rgq6c7yjn2whb3hxwbkxy2063qb9c2vmv4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ25ldC9SZWN0YW5nbGUgbGlrZSBtYW51YWwgdGlsaW5nIiwKICAibmFtZSI6ICJSZWN0YW5nbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVjdGFuZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWNyaXN0b2ZmZXJzL2dub21lLXJlY3RhbmdsZSIsCiAgInV1aWQiOiAicmVjdGFuZ2xlQGFjcmlzdG9mZmVycy5tZSIsCiAgInZlcnNpb24iOiAxMgp9"},
     "44": {"version": "12", "sha256": "0zmy1v8jgydk6dp6a3rgq6c7yjn2whb3hxwbkxy2063qb9c2vmv4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ25ldC9SZWN0YW5nbGUgbGlrZSBtYW51YWwgdGlsaW5nIiwKICAibmFtZSI6ICJSZWN0YW5nbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVjdGFuZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYWNyaXN0b2ZmZXJzL2dub21lLXJlY3RhbmdsZSIsCiAgInV1aWQiOiAicmVjdGFuZ2xlQGFjcmlzdG9mZmVycy5tZSIsCiAgInZlcnNpb24iOiAxMgp9"},
-    "45": {"version": "15", "sha256": "16m25a8648ihwjl1xwsx4zq9080lbmj3rcm5rz90rc4y8d2lw9jw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ25ldC9SZWN0YW5nbGUgbGlrZSBtYW51YWwgdGlsaW5nIiwKICAibmFtZSI6ICJSZWN0YW5nbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVjdGFuZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FjcmlzdG9mZmVycy9nbm9tZS1yZWN0YW5nbGUiLAogICJ1dWlkIjogInJlY3RhbmdsZUBhY3Jpc3RvZmZlcnMubWUiLAogICJ2ZXJzaW9uIjogMTUKfQ=="}
+    "45": {"version": "18", "sha256": "10xdxgpswyz11z8i31f77x6750q7gp5wds2jm6i7pjlifxkkpbcy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ25ldC9SZWN0YW5nbGUgbGlrZSBtYW51YWwgdGlsaW5nIiwKICAibmFtZSI6ICJSZWN0YW5nbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVjdGFuZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hY3Jpc3RvZmZlcnMvZ25vbWUtcmVjdGFuZ2xlIiwKICAidXVpZCI6ICJyZWN0YW5nbGVAYWNyaXN0b2ZmZXJzLm1lIiwKICAidmVyc2lvbiI6IDE4Cn0="},
+    "46": {"version": "18", "sha256": "10xdxgpswyz11z8i31f77x6750q7gp5wds2jm6i7pjlifxkkpbcy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hZ25ldC9SZWN0YW5nbGUgbGlrZSBtYW51YWwgdGlsaW5nIiwKICAibmFtZSI6ICJSZWN0YW5nbGUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMucmVjdGFuZ2xlIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9hY3Jpc3RvZmZlcnMvZ25vbWUtcmVjdGFuZ2xlIiwKICAidXVpZCI6ICJyZWN0YW5nbGVAYWNyaXN0b2ZmZXJzLm1lIiwKICAidmVyc2lvbiI6IDE4Cn0="}
   }}
 , {"uuid": "task-up@fthx", "name": "Task Up", "pname": "task-up", "description": "Task bar. Handles multiple workspaces. Very light extension.\n\n Complete rewrite of BaBar task bar extension, light code only has 300 lines.\n\n Some settings.", "link": "https://extensions.gnome.org/extension/6556/task-up/", "shell_version_map": {
-    "45": {"version": "31", "sha256": "0yycjk6lyr81l9vixggy8bkchr0lbghln8i144m9py0003yw1jxr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBIYW5kbGVzIG11bHRpcGxlIHdvcmtzcGFjZXMuIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gQ29tcGxldGUgcmV3cml0ZSBvZiBCYUJhciB0YXNrIGJhciBleHRlbnNpb24sIGxpZ2h0IGNvZGUgb25seSBoYXMgMzAwIGxpbmVzLlxuXG4gU29tZSBzZXR0aW5ncy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJUYXNrIFVwIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhc2stdXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC90YXNrLXVwIiwKICAidXVpZCI6ICJ0YXNrLXVwQGZ0aHgiLAogICJ2ZXJzaW9uIjogMzEKfQ=="}
+    "45": {"version": "31", "sha256": "0yycjk6lyr81l9vixggy8bkchr0lbghln8i144m9py0003yw1jxr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBIYW5kbGVzIG11bHRpcGxlIHdvcmtzcGFjZXMuIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gQ29tcGxldGUgcmV3cml0ZSBvZiBCYUJhciB0YXNrIGJhciBleHRlbnNpb24sIGxpZ2h0IGNvZGUgb25seSBoYXMgMzAwIGxpbmVzLlxuXG4gU29tZSBzZXR0aW5ncy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJUYXNrIFVwIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhc2stdXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC90YXNrLXVwIiwKICAidXVpZCI6ICJ0YXNrLXVwQGZ0aHgiLAogICJ2ZXJzaW9uIjogMzEKfQ=="},
+    "46": {"version": "33", "sha256": "1jvcmf9dfqh312335fi8g3ixs2wmm9y7lz12j1jg42g6jsblzyk7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRhc2sgYmFyLiBIYW5kbGVzIG11bHRpcGxlIHdvcmtzcGFjZXMuIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLlxuXG4gQ29tcGxldGUgcmV3cml0ZSBvZiBCYUJhciB0YXNrIGJhciBleHRlbnNpb24sIGxpZ2h0IGNvZGUgb25seSBoYXMgMzAwIGxpbmVzLlxuXG4gU29tZSBzZXR0aW5ncy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb25zIiwKICAibmFtZSI6ICJUYXNrIFVwIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRhc2stdXAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC90YXNrLXVwIiwKICAidXVpZCI6ICJ0YXNrLXVwQGZ0aHgiLAogICJ2ZXJzaW9uIjogMzMKfQ=="}
   }}
 , {"uuid": "workspace-switch-buttons@rajan-31", "name": "Workspace Switch Buttons", "pname": "workspace-switch-buttons", "description": "This GNOME Shell extension offers following features:\n\n- Buttons to switch to left and right workspace\n\n- Shows index of active workspace (click it for overview)\n[Can hide it in preferences]\n\n- Hides \"Activities\" button\n[Can turn this off in preferences]", "link": "https://extensions.gnome.org/extension/6562/workspace-switch-buttons/", "shell_version_map": {
     "42": {"version": "5", "sha256": "1dwj8vwl5laa4ih8vpnh4slm6nlh30bxggqsbngl6b9473szkvcg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYnV0dG9ucyB0byBzd2l0Y2ggdG8gbGVmdCBhbmQgcmlnaHQgd29ya3NwYWNlLCBzaG93cyBhY3RpdmUgd29ya3NwYWNlIGluZGV4LCBhbmQgaGlkZXMgXCJBY3Rpdml0aWVzXCIgYnV0dG9uIiwKICAibmFtZSI6ICJXb3Jrc3BhY2UgU3dpdGNoIEJ1dHRvbnMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud29ya3NwYWNlLXN3aXRjaC1idXR0b25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcmFqYW4tMzEvV29ya3NwYWNlLVN3aXRjaC1CdXR0b25zIiwKICAidXVpZCI6ICJ3b3Jrc3BhY2Utc3dpdGNoLWJ1dHRvbnNAcmFqYW4tMzEiLAogICJ2ZXJzaW9uIjogNQp9"},
@@ -6432,22 +6698,30 @@
     "45": {"version": "2", "sha256": "056x6bg3z8vqrknyqgr8hfgd8x04nj626jxw30p3qszvazajr8bj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vdmUgUmVnaW9uL0xhbmd1YWdlIFRyYXkgVG8gUXVpY2sgU2V0dGluZ3MiLAogICJuYW1lIjogInhMYW5ndWFnZVRyYXkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYTdtZWRraGFsYWYvTGFuZ1RyYXkiLAogICJ1dWlkIjogImxhbmdUcmF5QGE3bWVka2hhbGFmIiwKICAidmVyc2lvbiI6IDIKfQ=="}
   }}
 , {"uuid": "simplebreakreminder@castillodel.com", "name": "Simple Break Reminder", "pname": "simple-break-reminder", "description": "It's important to remember to take a break", "link": "https://extensions.gnome.org/extension/6568/simple-break-reminder/", "shell_version_map": {
-    "45": {"version": "5", "sha256": "07924cprg9bw7has2w6fhizfslzr9cdrjk2am198s4cs7f234i60", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRvIHRha2UgYSBicmVhayIsCiAgIm5hbWUiOiAiU2ltcGxlIEJyZWFrIFJlbWluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNpbXBsZWJyZWFrcmVtaW5kZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2FzdGlsbG9EZWwvc2ltcGxlYnJlYWtyZW1pbmRlciIsCiAgInV1aWQiOiAic2ltcGxlYnJlYWtyZW1pbmRlckBjYXN0aWxsb2RlbC5jb20iLAogICJ2ZXJzaW9uIjogNQp9"}
+    "45": {"version": "7", "sha256": "01ad805ram91yrrgix5pha5gfa03vjmhq0iikb7pjvqy8l3q6b19", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRvIHRha2UgYSBicmVhayIsCiAgIm5hbWUiOiAiU2ltcGxlIEJyZWFrIFJlbWluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNpbXBsZWJyZWFrcmVtaW5kZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0Nhc3RpbGxvRGVsL3NpbXBsZWJyZWFrcmVtaW5kZXIiLAogICJ1dWlkIjogInNpbXBsZWJyZWFrcmVtaW5kZXJAY2FzdGlsbG9kZWwuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="},
+    "46": {"version": "7", "sha256": "01ad805ram91yrrgix5pha5gfa03vjmhq0iikb7pjvqy8l3q6b19", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkl0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRvIHRha2UgYSBicmVhayIsCiAgIm5hbWUiOiAiU2ltcGxlIEJyZWFrIFJlbWluZGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNpbXBsZWJyZWFrcmVtaW5kZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0Nhc3RpbGxvRGVsL3NpbXBsZWJyZWFrcmVtaW5kZXIiLAogICJ1dWlkIjogInNpbXBsZWJyZWFrcmVtaW5kZXJAY2FzdGlsbG9kZWwuY29tIiwKICAidmVyc2lvbiI6IDcKfQ=="}
   }}
 , {"uuid": "OnTheTop@fablevi.github.io", "name": "On The Top", "pname": "on-the-top", "description": "Always on top button in the top bar", "link": "https://extensions.gnome.org/extension/6571/on-the-top/", "shell_version_map": {
-    "45": {"version": "13", "sha256": "0ag6q2fhhzp5fzfcg2fqc7kyscqzk0q0yx85aqs9swcm19b267ar", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBvbiB0b3AgYnV0dG9uIGluIHRoZSB0b3AgYmFyIiwKICAiZXh0ZW5zaW9uLWlkIjogIk9uVGhlVG9wIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiT25UaGVUb3AiLAogICJuYW1lIjogIk9uIFRoZSBUb3AiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub24tdGhlLXRvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFibGV2aS9PblRoZVRvcCIsCiAgInV1aWQiOiAiT25UaGVUb3BAZmFibGV2aS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="}
+    "45": {"version": "15", "sha256": "19d723mjg08yg1n9dlas0qv03gsqvsmjy5cmq3cl05l5r0jixf77", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBvbiB0b3AgYnV0dG9uIGluIHRoZSB0b3AgYmFyIiwKICAiZXh0ZW5zaW9uLWlkIjogIk9uVGhlVG9wIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiT25UaGVUb3AiLAogICJuYW1lIjogIk9uIFRoZSBUb3AiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub24tdGhlLXRvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFibGV2aS9PblRoZVRvcCIsCiAgInV1aWQiOiAiT25UaGVUb3BAZmFibGV2aS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTUKfQ=="},
+    "46": {"version": "15", "sha256": "19d723mjg08yg1n9dlas0qv03gsqvsmjy5cmq3cl05l5r0jixf77", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsd2F5cyBvbiB0b3AgYnV0dG9uIGluIHRoZSB0b3AgYmFyIiwKICAiZXh0ZW5zaW9uLWlkIjogIk9uVGhlVG9wIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiT25UaGVUb3AiLAogICJuYW1lIjogIk9uIFRoZSBUb3AiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub24tdGhlLXRvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFibGV2aS9PblRoZVRvcCIsCiAgInV1aWQiOiAiT25UaGVUb3BAZmFibGV2aS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTUKfQ=="}
   }}
-, {"uuid": "openbar@neuromorph", "name": "Open Bar", "pname": "open-bar", "description": "Top Bar ( Top Panel ) customization / styling. Open the Top Bar and let the colors 🍹 flow.\n\n**Please report on Github if something is broken due to an update or if you have any suggestions/feedback.\n\nUpdate ( v17/v18 ):\n-  Auto-theming options \n-  Import, export theme settings to file.\n-  Window-Max Bar: Change Bar props when a window is maximized\n-  More settings in Menus: Menu panel and buttons radius, slider tweaks\n\nAuto Theming:\n- Note: If you want to save your current settings, please use Export Settings option before applying Auto-theme. You can import it back whenever needed.\n- Please select Bar properties esp. type of bar before applying a theme. If you change Bar type later, apply theme again.\n- There are three theme options: 'Color', 'Dark', 'Light' and two variations for each: 'Default', 'Alt'.  Try all combinations to see what you prefer for your desktop background.\n- There are more settings in Auto-Theme. You can select if you want the secondary menu BG color to be derived from BG or auto-selected from palette. Also, you can specify any preferred accent color or let the theme choose from the background. \n- Since it is one size fit all solution, 'No Free Lunch' theorem applies. Not all options will work for all backgrounds, so the additional knobs above will help you select the desired one. One of the combinations should work for you at least with little bit tweaking if needed.\n- Once theme is applied, you can further tweak any of the manual settings, as usual, to finetune the theme. \n- There is an option for Auto-refreshing theme when background changes. This will overwrite current theme with newly generated one when background is changed.  \n[ Note: changing the background by right clicking an image file (instead of from settings) may not get detected in newer Gnome. ]\n\nCustomize:\n- Bar Type: Fixed, Floating or Islands / Trilands\n- Bar position, height, margin, paddings\n- Bar foreground color, font\n- Bar background color, transparency, gradient, shadow, highlights, candybar \n- Shape rectangular to pill, border width, color, neon glow\n- Menu customizations: foreground, background colors, transparency, border, shadow,  active/selection, hover colors\netc.\n- Apply to notification popups\n- Includes a custom color palette, under the default palette, in each color button popup. The palette is auto-generated from the desktop background.\n\n\nIf the panel/menu isn't looking right, you need to tweak some settings. There are a lot of knobs to allow for differnt setups/tastes. It can also make it a bit overwhelming if you are not familiar with css styles but with some experimentation it will become a lot easier. Here are brief notes:\n- BG/FG color: Background or Foreground colors. Foreground is typically text and icons.\n- Alpha: Transparency for the color. 0 is transparent while 1 is opaque.\n- Panel BG will affect the bar while Tri/Islands BG will affect the individual indicator buttons/combos (in Trilands/Islands mode).\n- Gradient goes from Start color to End color. If you want a single color fading, select same color for both with differnt Alphas. e.g. Setting end color alpha to 0 will form a gradient from Start color to transparent.\n- Highlight color: It is the background color upon hover or focus. You can choose to highlight with border instead.\n- Vertical padding: Controls size of highlights in Mainland/Floating. Also controls size of Islands/Trilands. Increase height if padding squeezes the text.\n- Panel Shadow: a downward shadow for the panel bar. Shadow Spread controls both shadow trasparency and spread together.\n- Border: \n    = Width controls thickness (grows inwards for Islands). Adjust bar height accordingly, after setting border width.  \n    = Radius will control the shape from rectangle at radius 0 to Pill at radius close to bar height. \n    = Neon glow: adds a neon-light like glow to the border. You need dark, relatively opaque background with bright/neon colored, relatively opaque border. Neon will override Panel shadow in Mainland and Floating mode.\n - Menus: \n    = FG/BG, border, highlight are similar to above but for menus.\n    = Selected/active color is for menu items that are active e.g. Today's day in Calendar or WiFi in Quick Settings or even an active menu item with opened submenu. \n    = Shadow applies to the panel menu. Use white/bright color in dark theme and black/dark color in light theme for the effect to show and help with contrast. Using same color as menu border is also a good idea. Use the Alphas for both border and shadow to increase or reduce their effect.\n    = Once enabled, menu settings now also apply as soon as changed. You need to press 'Apply Menu Styles' button to enable the menu style. 'Reset Menu Styles' button will remove all menu styles and revert to your default theme.\n\nLastly, be a tiny bit gentler with the sliders in the settings as they modify the stylesheet behind the scene for every update.", "link": "https://extensions.gnome.org/extension/6580/open-bar/", "shell_version_map": {
-    "42": {"version": "17", "sha256": "13nx2bg5hh12fcvr7n5d0vm9i74gmc2dyaqsmwfy5053kil9v57i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZXVyb21vcnBoL29wZW5iYXIiLAogICJ1dWlkIjogIm9wZW5iYXJAbmV1cm9tb3JwaCIsCiAgInZlcnNpb24iOiAxNwp9"},
-    "43": {"version": "17", "sha256": "13nx2bg5hh12fcvr7n5d0vm9i74gmc2dyaqsmwfy5053kil9v57i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZXVyb21vcnBoL29wZW5iYXIiLAogICJ1dWlkIjogIm9wZW5iYXJAbmV1cm9tb3JwaCIsCiAgInZlcnNpb24iOiAxNwp9"},
-    "44": {"version": "17", "sha256": "13nx2bg5hh12fcvr7n5d0vm9i74gmc2dyaqsmwfy5053kil9v57i", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZXVyb21vcnBoL29wZW5iYXIiLAogICJ1dWlkIjogIm9wZW5iYXJAbmV1cm9tb3JwaCIsCiAgInZlcnNpb24iOiAxNwp9"},
-    "45": {"version": "18", "sha256": "1rcq6k2mpwfaxj8grihkv27af33d11s6kdrk15ws7ca44a7vrqfy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbmV1cm9tb3JwaC9vcGVuYmFyIiwKICAidXVpZCI6ICJvcGVuYmFyQG5ldXJvbW9ycGgiLAogICJ2ZXJzaW9uIjogMTgKfQ=="}
+, {"uuid": "openbar@neuromorph", "name": "Open Bar", "pname": "open-bar", "description": "Top Bar ( Top Panel ) customization / styling. Open the Top Bar and let the colors 🍹 flow.\n\n**Please report on GitHub if something is broken due to an update or if you have any suggestions.\n\nUpdate (v29/v30): Bug Fix for extension disable, introduced by v27/v28\nUpdate ( v27/v28 ): \n- Compatibility with more extensions: Fullscreen Avoider,  Lunar Calendar, Dash-to-Panel* and others**.\n- New option to apply the panel menu styles to all the shell pop-ups\n- Calendar day with event - dot indicator fix and toggle switch update fix\n* Dash-to-Panel: You may have to turn on 'Apply menu styles to shell' under 'Beyond Bar' in settings. Also , in case of a crash, check issue #26 in Github.\n** Others: Some extensions do not use standard widget and API (e.g. PanelMenu Button and main.addToStatusArea) when adding indicator to Panel and fixing that makes them work correctly with Open Bar or user themes.\n\nFeatures from recent updates:\n- Auto FG option to automatically switch (black/white) FG color based on widget background\n- Option to set Panel Box / Margins BG color\n- Light-Gradient option for Menu background\n- More tweaks for Border width and radius to change the way the Bar/Buttons look\n-  Auto-theming options \n-  Import, export theme settings to file.\n-  Window-Max Bar: Change Bar props when a window is maximized\n-  More settings in Menus: Menu panel and buttons radius, slider tweaks\n\nAuto Theming:\n- Note: If you want to save your current settings, please use Export Settings option before applying Auto-theme. You can import it back whenever needed.\n- Please select Bar properties esp. type of bar before applying a theme. If you change Bar type later, apply theme again.\n- There are three theme options: 'Color', 'Dark', 'Light' and two variations for each: 'Default', 'Alt'.  Try all combinations to see what you prefer for your desktop background. (Default and Alt maybe very similar or distinct depending on the background palette).\n- There are more settings in Auto-Theme. You can select if you want the secondary menu BG color to be derived from BG or auto-selected from palette. Also, you can specify any preferred accent color or let the theme choose from the background. \n- Since it is one size fit all solution, 'No Free Lunch' theorem applies. Not all options will work for all backgrounds, so the additional knobs above will help you select the desired one. One of the combinations should work for you at least with little bit tweaking if needed.\n- Once theme is applied, you can further tweak any of the manual settings, as usual, to finetune the theme. \n- There is an option for Auto-refreshing theme when background changes. This will overwrite current theme with newly generated one when background is changed.  \n\nCustomize:\n- Bar Type: Fixed, Floating or Islands / Trilands\n- Bar position, height, margin, paddings\n- Bar foreground color, font\n- Bar background color, transparency, gradient, shadow, highlights, candybar \n- Shape rectangular to pill, border width, color, neon glow\n- Menu customizations: foreground, background colors, transparency, border, shadow,  active/selection, hover colors\netc.\n- Apply to notification popups\n- Includes a custom color palette, under the default palette, in each color button popup. The palette is auto-generated from the desktop background.\n\n\nIf the panel/menu isn't looking right, you need to tweak some settings. There are a lot of knobs to allow for different setups/tastes. It can also make it a bit overwhelming if you are not familiar with css styles but with some experimentation it will become a lot easier. Here are brief notes:\n- BG/FG color: Background or Foreground colors. Foreground is typically text and icons.\n- Alpha: Transparency for the color. 0 is transparent while 1 is opaque.\n- Panel BG will affect the bar while Tri/Islands BG will affect the individual indicator buttons/combos (in Trilands/Islands mode).\n- Gradient goes from Start color to End color. If you want a single color fading, select same color for both with different Alphas. e.g. Setting end color alpha to 0 will form a gradient from Start color to transparent.\n- Highlight color: It is the background color upon hover or focus. You can choose to highlight with border instead.\n- Vertical padding: Controls size of highlights in Mainland/Floating. Also controls size of Islands/Trilands. Increase height if padding squeezes the text.\n- Panel Shadow: a downward shadow for the panel bar. Shadow Spread controls both shadow transparency and spread together.\n- Border: \n    = Width controls thickness (grows inwards for Islands). Adjust bar height accordingly, after setting border width.  \n    = Radius will control the shape from rectangle at radius 0 to Pill at radius close to bar height. \n    = Neon glow: adds a neon-light like glow to the border. You need dark, relatively opaque background with bright/neon colored, relatively opaque border. Neon will override Panel shadow in Mainland and Floating mode.\n - Menus: \n    = FG/BG, border, highlight are similar to above but for menus.\n    = Selected/active color is for menu items that are active e.g. Today's day in Calendar or WiFi in Quick Settings or even an active menu item with opened submenu. \n    = Shadow applies to the panel menu. Use white/bright color in dark theme and black/dark color in light theme for the effect to show and help with contrast. Using same color as menu border is also a good idea. Use the Alphas for both border and shadow to increase or reduce their effect.\n    = Once enabled, menu settings now also apply as soon as changed. You need to press 'Apply Menu Styles' button to enable the menu style. 'Reset Menu Styles' button will remove all menu styles and revert to your default theme.\n\nLastly, be a tiny bit gentler with the sliders in the settings as they modify the stylesheet behind the scene for every update.", "link": "https://extensions.gnome.org/extension/6580/open-bar/", "shell_version_map": {
+    "42": {"version": "29", "sha256": "070jphah7b34hf7mrq0gcz2bm30ydrgpy0c7rngn9nl2vdhbxkcn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZXVyb21vcnBoL29wZW5iYXIiLAogICJ1dWlkIjogIm9wZW5iYXJAbmV1cm9tb3JwaCIsCiAgInZlcnNpb24iOiAyOQp9"},
+    "43": {"version": "29", "sha256": "070jphah7b34hf7mrq0gcz2bm30ydrgpy0c7rngn9nl2vdhbxkcn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZXVyb21vcnBoL29wZW5iYXIiLAogICJ1dWlkIjogIm9wZW5iYXJAbmV1cm9tb3JwaCIsCiAgInZlcnNpb24iOiAyOQp9"},
+    "44": {"version": "29", "sha256": "070jphah7b34hf7mrq0gcz2bm30ydrgpy0c7rngn9nl2vdhbxkcn", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9uZXVyb21vcnBoL29wZW5iYXIiLAogICJ1dWlkIjogIm9wZW5iYXJAbmV1cm9tb3JwaCIsCiAgInZlcnNpb24iOiAyOQp9"},
+    "45": {"version": "30", "sha256": "0gid46fz2mgsra37vmcikszx6bnkasw8mljrbgwilasc5sdwyfb9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvb3BlbmJhciIsCiAgInV1aWQiOiAib3BlbmJhckBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDMwCn0="},
+    "46": {"version": "30", "sha256": "0gid46fz2mgsra37vmcikszx6bnkasw8mljrbgwilasc5sdwyfb9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvcCBCYXIgKCBUb3AgUGFuZWwgKSBjdXN0b21pemF0aW9uIC8gc3R5bGluZy4gT3BlbiB0aGUgVG9wIEJhciBhbmQgbGV0IHRoZSBjb2xvcnMgXHVkODNjXHVkZjc5IGZsb3cuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJuZXVyb21vcnBoIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIm9wZW5iYXIiLAogICJuYW1lIjogIk9wZW4gQmFyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm9wZW5iYXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL25ldXJvbW9ycGgvb3BlbmJhciIsCiAgInV1aWQiOiAib3BlbmJhckBuZXVyb21vcnBoIiwKICAidmVyc2lvbiI6IDMwCn0="}
   }}
 , {"uuid": "auto-power-profile@dmy3k.github.io", "name": "Auto Power Profile", "pname": "auto-power-profile", "description": "Automatically switch between power profiles based on power supply and battery status.", "link": "https://extensions.gnome.org/extension/6583/auto-power-profile/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "11y3snf4vslf6z27bp11b3mwa6b4fwcq268lhcrq7zmjgdij79hf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBiYXR0ZXJ5IHN0YXR1cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJuYW1lIjogIkF1dG8gUG93ZXIgUHJvZmlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZG15M2svYXV0by1wb3dlci1wcm9maWxlIiwKICAidXVpZCI6ICJhdXRvLXBvd2VyLXByb2ZpbGVAZG15M2suZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDMKfQ=="}
+    "42": {"version": "13", "sha256": "18zlai7wfsi72jifq41h31zj0mjagw21b4fy522m0hc3a22r1ypg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBiYXR0ZXJ5IHN0YXR1cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJuYW1lIjogIkF1dG8gUG93ZXIgUHJvZmlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kbXkzay9hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJ1dWlkIjogImF1dG8tcG93ZXItcHJvZmlsZUBkbXkzay5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
+    "43": {"version": "13", "sha256": "18zlai7wfsi72jifq41h31zj0mjagw21b4fy522m0hc3a22r1ypg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBiYXR0ZXJ5IHN0YXR1cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJuYW1lIjogIkF1dG8gUG93ZXIgUHJvZmlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kbXkzay9hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJ1dWlkIjogImF1dG8tcG93ZXItcHJvZmlsZUBkbXkzay5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
+    "44": {"version": "13", "sha256": "18zlai7wfsi72jifq41h31zj0mjagw21b4fy522m0hc3a22r1ypg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBiYXR0ZXJ5IHN0YXR1cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJuYW1lIjogIkF1dG8gUG93ZXIgUHJvZmlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kbXkzay9hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJ1dWlkIjogImF1dG8tcG93ZXItcHJvZmlsZUBkbXkzay5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMTMKfQ=="},
+    "45": {"version": "14", "sha256": "0xlx3x5pfq737hqdpf8l68j5igkz9rcpwsvzila2xln71jqhzkzx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBiYXR0ZXJ5IHN0YXR1cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJuYW1lIjogIkF1dG8gUG93ZXIgUHJvZmlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RteTNrL2F1dG8tcG93ZXItcHJvZmlsZSIsCiAgInV1aWQiOiAiYXV0by1wb3dlci1wcm9maWxlQGRteTNrLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxNAp9"},
+    "46": {"version": "14", "sha256": "0xlx3x5pfq737hqdpf8l68j5igkz9rcpwsvzila2xln71jqhzkzx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkF1dG9tYXRpY2FsbHkgc3dpdGNoIGJldHdlZW4gcG93ZXIgcHJvZmlsZXMgYmFzZWQgb24gcG93ZXIgc3VwcGx5IGFuZCBiYXR0ZXJ5IHN0YXR1cy4iLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJuYW1lIjogIkF1dG8gUG93ZXIgUHJvZmlsZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hdXRvLXBvd2VyLXByb2ZpbGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RteTNrL2F1dG8tcG93ZXItcHJvZmlsZSIsCiAgInV1aWQiOiAiYXV0by1wb3dlci1wcm9maWxlQGRteTNrLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAxNAp9"}
   }}
-, {"uuid": "system-monitor-indicator@mknap.com", "name": "System Monitor Tray Indicator", "pname": "system-monitor-tray-indicator", "description": "This is a minimalist system monitor extension for GNOME Shell. It displays CPU, RAM, and Swap usage right in your GNOME Shell top bar.", "link": "https://extensions.gnome.org/extension/6586/system-monitor-tray-indicator/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "0hap8f9yzs3vv2ia4ndnjxcvmz0b7ah1xfgb9j4lmzms0c60xg9h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIENQVSBhbmQgTWVtb3J5IHVzYWdlIG9uIHRoZSB0b3AgYmFyLiIsCiAgIm5hbWUiOiAiU3lzdGVtIE1vbml0b3IgVHJheSBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWljaGFlbGtuYXAvZ25vbWUtc3lzdGVtLW1vbml0b3ItaW5kaWNhdG9yIiwKICAidXVpZCI6ICJzeXN0ZW0tbW9uaXRvci1pbmRpY2F0b3JAbWtuYXAuY29tIiwKICAidmVyc2lvbiI6IDEKfQ=="}
+, {"uuid": "system-monitor-indicator@mknap.com", "name": "System Monitor Tray Indicator", "pname": "system-monitor-tray-indicator", "description": "This is a minimalist system monitor extension for GNOME Shell. It displays CPU, RAM, and Swap usage right in your GNOME Shell top bar. ", "link": "https://extensions.gnome.org/extension/6586/system-monitor-tray-indicator/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "0jja47inr6wl8d9mhxd8af8yl67hk2zpiw1m7pxymix0p8l8x82m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIENQVSBhbmQgTWVtb3J5IHVzYWdlIG9uIHRoZSB0b3AgYmFyLiIsCiAgIm5hbWUiOiAiU3lzdGVtIE1vbml0b3IgVHJheSBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21pY2hhZWxrbmFwL2dub21lLXN5c3RlbS1tb25pdG9yLWluZGljYXRvciIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItaW5kaWNhdG9yQG1rbmFwLmNvbSIsCiAgInZlcnNpb24iOiAyCn0="},
+    "46": {"version": "2", "sha256": "0jja47inr6wl8d9mhxd8af8yl67hk2zpiw1m7pxymix0p8l8x82m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXlzIENQVSBhbmQgTWVtb3J5IHVzYWdlIG9uIHRoZSB0b3AgYmFyLiIsCiAgIm5hbWUiOiAiU3lzdGVtIE1vbml0b3IgVHJheSBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21pY2hhZWxrbmFwL2dub21lLXN5c3RlbS1tb25pdG9yLWluZGljYXRvciIsCiAgInV1aWQiOiAic3lzdGVtLW1vbml0b3ItaW5kaWNhdG9yQG1rbmFwLmNvbSIsCiAgInZlcnNpb24iOiAyCn0="}
   }}
 , {"uuid": "enhancedosk@cass00.github.io", "name": "Enhanced OSK", "pname": "enhanced-osk", "description": "Makes Gnome's OnScreen Keyboard more usable.\n\nFeatures:\n* Includes additional buttons: Arrow keys, Esc, Tab, Ctrl, Alt, Super, F1-12\n* Supports key combinations like `Ctrl + C`, `Alt + Tab`, `Ctrl + Shift + C`, `Super + A, Alt + F2` etc.\n* Configurable keyboard size (landscape/portrait)\n* Statusbar indicator to toggle keyboard\n* Works in Gnome password modals\n\nThis extension is a fork of https://github.com/nick-shmyrev/improved-osk-gnome-ext. Formerly known as Improved OSK.", "link": "https://extensions.gnome.org/extension/6595/enhanced-osk/", "shell_version_map": {
     "45": {"version": "3", "sha256": "1w02yp5hpmwbpzd02y6mqyb40aksbrbp4vwqrw5y2p9d3hrzn05k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIEdub21lJ3MgT25TY3JlZW4gS2V5Ym9hcmQgbW9yZSB1c2FibGUuXG5cbkZlYXR1cmVzOlxuKiBJbmNsdWRlcyBhZGRpdGlvbmFsIGJ1dHRvbnM6IEFycm93IGtleXMsIEVzYywgVGFiLCBDdHJsLCBBbHQsIFN1cGVyLCBGMS0xMlxuKiBTdXBwb3J0cyBrZXkgY29tYmluYXRpb25zIGxpa2UgYEN0cmwgKyBDYCwgYEFsdCArIFRhYmAsIGBDdHJsICsgU2hpZnQgKyBDYCwgYFN1cGVyICsgQSwgQWx0ICsgRjJgIGV0Yy5cbiogQ29uZmlndXJhYmxlIGtleWJvYXJkIHNpemUgKGxhbmRzY2FwZS9wb3J0cmFpdClcbiogU3RhdHVzYmFyIGluZGljYXRvciB0byB0b2dnbGUga2V5Ym9hcmRcbiogV29ya3MgaW4gR25vbWUgcGFzc3dvcmQgbW9kYWxzXG5cblRoaXMgZXh0ZW5zaW9uIGlzIGEgZm9yayBvZiBodHRwczovL2dpdGh1Yi5jb20vbmljay1zaG15cmV2L2ltcHJvdmVkLW9zay1nbm9tZS1leHQuIEZvcm1lcmx5IGtub3duIGFzIEltcHJvdmVkIE9TSy4iLAogICJuYW1lIjogIkVuaGFuY2VkIE9TSyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9jYXNzMDAvZW5oYW5jZWQtb3NrLWdub21lLWV4dCIsCiAgInV1aWQiOiAiZW5oYW5jZWRvc2tAY2FzczAwLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAzCn0="}
@@ -6473,24 +6747,30 @@
     "42": {"version": "2", "sha256": "1dzqzkm6gb4mq8hz5f6zabrn2jspanfkj192xa2bnmc7cgvnb191", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIGFjdHVhbCBjaGFyZ2luZy9kaXNjaGFyZ2luZyBjb25zdW1wdGlvbiAoKy8tKSBpbiBXYXR0cyBuZXh0IHRvIGJhdHRlcnkgcGVyY2VudGFnZSBsZXZlbCBhbmQvb3IgYmF0dGVyeSB0aW1lIHJlbWFpbmluZy5cbkVuYWJsZSBwZXJjZW50YWdlIGxhYmVsIHdoZW4gZGlzYWJsZWQuXG5EZWZhdWx0IHN5bmMgcmVsb2FkIHNldCB0byA0IHNlY29uZHMuXG5ObyBjb25zdW1wdGlvbiBpbmZvIHdoZW4gYmF0dGVyeSBpcyBmdWxsLlxuU2V0dGluZ3M6IGludGVydmFsLCBwZXJjZW50YWdlIGxhYmVsIChhbHNvIHdoZW4gZnVsbCksIHRpbWUgcmVtYWluaW5nIG9uL29mZiwgYmF0dGVyeSBzZWxlY3Rpb24uXG4gRm9yayBvZiBodHRwczovL2dpdGh1Yi5jb20vd2VubmFzcGVlZHkvYmF0dF9jb25zdW1wdGlvbl93YXR0bWV0dGVyIiwKICAibmFtZSI6ICJCYXR0ZXJ5IFRpbWUgUmVtYWluaW5nLCBQZXJjZW50YWdlLCBXYXR0IE1ldGVyIGluIFBhbmVsIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vemFjaGdvbGRiZXJnL2JhdHRfY29uc3VtcHRpb25fd2F0dG1ldHRlciIsCiAgInV1aWQiOiAiYmF0dF9jb25zdW1wdGlvbl93YXR0bWV0dGVyQHphY2hnb2xkYmVyZyIsCiAgInZlcnNpb24iOiAyCn0="}
   }}
 , {"uuid": "proton-vpn@fthx", "name": "Proton VPN Button", "pname": "proton-vpn-button", "description": "Proton VPN button in top panel.\n\n Click on button to close/open Proton VPN app.\n\n Useful for those who don't want to use Ubuntu AppIndicators extension (Proton VPN in systray's legacy indicators).\n\n This extension is not affiliated, funded or in any way associated with Proton VPN.", "link": "https://extensions.gnome.org/extension/6631/proton-vpn-button/", "shell_version_map": {
-    "45": {"version": "5", "sha256": "0lyh09ssaraz1wf0apjg0arf1xh26dn597nyq3rwcjvwcnc7hvvj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3RvbiBWUE4gYnV0dG9uIGluIHRvcCBwYW5lbC5cblxuIENsaWNrIG9uIGJ1dHRvbiB0byBjbG9zZS9vcGVuIFByb3RvbiBWUE4gYXBwLlxuXG4gVXNlZnVsIGZvciB0aG9zZSB3aG8gZG9uJ3Qgd2FudCB0byB1c2UgVWJ1bnR1IEFwcEluZGljYXRvcnMgZXh0ZW5zaW9uIChQcm90b24gVlBOIGluIHN5c3RyYXkncyBsZWdhY3kgaW5kaWNhdG9ycykuXG5cbiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIFByb3RvbiBWUE4uIiwKICAibmFtZSI6ICJQcm90b24gVlBOIEJ1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3Byb3Rvbi12cG4iLAogICJ1dWlkIjogInByb3Rvbi12cG5AZnRoeCIsCiAgInZlcnNpb24iOiA1Cn0="}
+    "45": {"version": "5", "sha256": "0lyh09ssaraz1wf0apjg0arf1xh26dn597nyq3rwcjvwcnc7hvvj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3RvbiBWUE4gYnV0dG9uIGluIHRvcCBwYW5lbC5cblxuIENsaWNrIG9uIGJ1dHRvbiB0byBjbG9zZS9vcGVuIFByb3RvbiBWUE4gYXBwLlxuXG4gVXNlZnVsIGZvciB0aG9zZSB3aG8gZG9uJ3Qgd2FudCB0byB1c2UgVWJ1bnR1IEFwcEluZGljYXRvcnMgZXh0ZW5zaW9uIChQcm90b24gVlBOIGluIHN5c3RyYXkncyBsZWdhY3kgaW5kaWNhdG9ycykuXG5cbiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIFByb3RvbiBWUE4uIiwKICAibmFtZSI6ICJQcm90b24gVlBOIEJ1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3Byb3Rvbi12cG4iLAogICJ1dWlkIjogInByb3Rvbi12cG5AZnRoeCIsCiAgInZlcnNpb24iOiA1Cn0="},
+    "46": {"version": "6", "sha256": "13kgpnbnhfw95hs1m5ha77mgxhjygi33blz7kddgn4r2mrj63w2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3RvbiBWUE4gYnV0dG9uIGluIHRvcCBwYW5lbC5cblxuIENsaWNrIG9uIGJ1dHRvbiB0byBjbG9zZS9vcGVuIFByb3RvbiBWUE4gYXBwLlxuXG4gVXNlZnVsIGZvciB0aG9zZSB3aG8gZG9uJ3Qgd2FudCB0byB1c2UgVWJ1bnR1IEFwcEluZGljYXRvcnMgZXh0ZW5zaW9uIChQcm90b24gVlBOIGluIHN5c3RyYXkncyBsZWdhY3kgaW5kaWNhdG9ycykuXG5cbiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIFByb3RvbiBWUE4uIiwKICAibmFtZSI6ICJQcm90b24gVlBOIEJ1dHRvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mdGh4L3Byb3Rvbi12cG4iLAogICJ1dWlkIjogInByb3Rvbi12cG5AZnRoeCIsCiAgInZlcnNpb24iOiA2Cn0="}
   }}
 , {"uuid": "proton-bridge@fthx", "name": "Proton Bridge Button", "pname": "proton-bridge-button", "description": "Proton Bridge button in top panel.\n\n Click on button to close/open Proton Bridge app.\n\n Useful for those who don't want to use Ubuntu AppIndicators extension (Proton Bridge in systray's legacy indicators).\n\n This extension is not affiliated, funded or in any way associated with Proton Mail.", "link": "https://extensions.gnome.org/extension/6634/proton-bridge-button/", "shell_version_map": {
-    "45": {"version": "4", "sha256": "0fa8inc6c9fc4i64vvw3x8s0vf4fp3y7gcq5jmam51q4lzbkizp5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3RvbiBCcmlkZ2UgYnV0dG9uIGluIHRvcCBwYW5lbC5cblxuIENsaWNrIG9uIGJ1dHRvbiB0byBjbG9zZS9vcGVuIFByb3RvbiBCcmlkZ2UgYXBwLlxuXG4gVXNlZnVsIGZvciB0aG9zZSB3aG8gZG9uJ3Qgd2FudCB0byB1c2UgVWJ1bnR1IEFwcEluZGljYXRvcnMgZXh0ZW5zaW9uIChQcm90b24gQnJpZGdlIGluIHN5c3RyYXkncyBsZWdhY3kgaW5kaWNhdG9ycykuXG5cbiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIFByb3RvbiBNYWlsLiIsCiAgIm5hbWUiOiAiUHJvdG9uIEJyaWRnZSBCdXR0b24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9wcm90b24tYnJpZGdlIiwKICAidXVpZCI6ICJwcm90b24tYnJpZGdlQGZ0aHgiLAogICJ2ZXJzaW9uIjogNAp9"}
+    "45": {"version": "4", "sha256": "0fa8inc6c9fc4i64vvw3x8s0vf4fp3y7gcq5jmam51q4lzbkizp5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3RvbiBCcmlkZ2UgYnV0dG9uIGluIHRvcCBwYW5lbC5cblxuIENsaWNrIG9uIGJ1dHRvbiB0byBjbG9zZS9vcGVuIFByb3RvbiBCcmlkZ2UgYXBwLlxuXG4gVXNlZnVsIGZvciB0aG9zZSB3aG8gZG9uJ3Qgd2FudCB0byB1c2UgVWJ1bnR1IEFwcEluZGljYXRvcnMgZXh0ZW5zaW9uIChQcm90b24gQnJpZGdlIGluIHN5c3RyYXkncyBsZWdhY3kgaW5kaWNhdG9ycykuXG5cbiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIFByb3RvbiBNYWlsLiIsCiAgIm5hbWUiOiAiUHJvdG9uIEJyaWRnZSBCdXR0b24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9wcm90b24tYnJpZGdlIiwKICAidXVpZCI6ICJwcm90b24tYnJpZGdlQGZ0aHgiLAogICJ2ZXJzaW9uIjogNAp9"},
+    "46": {"version": "5", "sha256": "11p2ag21qrcs1jgc07a5k50s135npqmw8wj6pm7xxp5lgs88g8q9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlByb3RvbiBCcmlkZ2UgYnV0dG9uIGluIHRvcCBwYW5lbC5cblxuIENsaWNrIG9uIGJ1dHRvbiB0byBjbG9zZS9vcGVuIFByb3RvbiBCcmlkZ2UgYXBwLlxuXG4gVXNlZnVsIGZvciB0aG9zZSB3aG8gZG9uJ3Qgd2FudCB0byB1c2UgVWJ1bnR1IEFwcEluZGljYXRvcnMgZXh0ZW5zaW9uIChQcm90b24gQnJpZGdlIGluIHN5c3RyYXkncyBsZWdhY3kgaW5kaWNhdG9ycykuXG5cbiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkIG9yIGluIGFueSB3YXkgYXNzb2NpYXRlZCB3aXRoIFByb3RvbiBNYWlsLiIsCiAgIm5hbWUiOiAiUHJvdG9uIEJyaWRnZSBCdXR0b24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9wcm90b24tYnJpZGdlIiwKICAidXVpZCI6ICJwcm90b24tYnJpZGdlQGZ0aHgiLAogICJ2ZXJzaW9uIjogNQp9"}
   }}
 , {"uuid": "gold-silver-price@arononak.github.io", "name": "Gold Silver Price", "pname": "gold-silver-price", "description": "Shows the current price of Gold and Silver.\n\ncurl is requried.\n\nLove this extension? give me a star on github.\n\nThis extension uses https://www.google.com/finance", "link": "https://extensions.gnome.org/extension/6643/gold-silver-price/", "shell_version_map": {
     "45": {"version": "2", "sha256": "1ingxy6i8vvf3b3gcbf74wv4d1lpxa0kk7w3pgxlnprfnr39r7mq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3dzIHRoZSBjdXJyZW50IHByaWNlIG9mIEdvbGQgYW5kIFNpbHZlci5cblxuY3VybCBpcyByZXF1cmllZC5cblxuTG92ZSB0aGlzIGV4dGVuc2lvbj8gZ2l2ZSBtZSBhIHN0YXIgb24gZ2l0aHViLlxuXG5UaGlzIGV4dGVuc2lvbiB1c2VzIGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vZmluYW5jZSIsCiAgIm5hbWUiOiAiR29sZCBTaWx2ZXIgUHJpY2UiLAogICJvcmlnaW5hbC1hdXRob3JzIjogWwogICAgImFyb25vbmFrQGdtYWlsLmNvbSIKICBdLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vYXJvbm9uYWsvZ29sZC1zaWx2ZXItcHJpY2UtZ25vbWUtZXh0ZW5zaW9uIiwKICAidXVpZCI6ICJnb2xkLXNpbHZlci1wcmljZUBhcm9ub25hay5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMgp9"}
   }}
-, {"uuid": "TouchpadOnOff@romano.rgtti.com", "name": "Touchpad On Off", "pname": "touchpad-on-off", "description": "Most laptops have a key combination (usually some Fn-thing) to enable/disable the touchpad. But not all of them. My Lenovo Yoga L13, for example, doesn't have one. This extension just enables/disables the touchpad; by default, it restores the touchpad in the enabled state when you logout and login, but you can choose just to remember the old state in the options.\n\nIf you are stuck without mouse or touchpad, open a terminal window or the command prompt of gnome-shell (with Alt-F2) and type\n\n    dconf write /org/gnome/desktop/peripherals/touchpad/send-events true\n\n...and you'll have your touchpad back.", "link": "https://extensions.gnome.org/extension/6646/touchpad-on-off/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "1lcpgfs90nbsbdz1c35rq11nylbgx930bk2148kssrzwbpha3n4p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0b3VjaHBhZCBvbiBvciBvZmYiLAogICJuYW1lIjogIlRvdWNocGFkIE9uIE9mZiIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiUm9tYW5vIEdpYW5uZXR0aSA8cm9tYW5vLmdpYW5uZXR0aUBnbWFpbC5jb20+IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRvdWNocGFkb25vZmYiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUm1hbm8vZ3NlLXRvdWNocGFkLW9ub2ZmIiwKICAidXVpZCI6ICJUb3VjaHBhZE9uT2ZmQHJvbWFuby5yZ3R0aS5jb20iLAogICJ2ZXJzaW9uIjogMgp9"}
+, {"uuid": "TouchpadOnOff@romano.rgtti.com", "name": "Touchpad On Off", "pname": "touchpad-on-off", "description": "Toggle touchpad on or off", "link": "https://extensions.gnome.org/extension/6646/touchpad-on-off/", "shell_version_map": {
+    "45": {"version": "3", "sha256": "0wirin0nfjmsfwpxrgl9vh8zvk26jagjz8a5zbfq0sz60pyxkcag", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0b3VjaHBhZCBvbiBvciBvZmYiLAogICJuYW1lIjogIlRvdWNocGFkIE9uIE9mZiIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiUm9tYW5vIEdpYW5uZXR0aSA8cm9tYW5vLmdpYW5uZXR0aUBnbWFpbC5jb20+IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRvdWNocGFkb25vZmYiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JtYW5vL2dzZS10b3VjaHBhZC1vbm9mZiIsCiAgInV1aWQiOiAiVG91Y2hwYWRPbk9mZkByb21hbm8ucmd0dGkuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="},
+    "46": {"version": "3", "sha256": "0wirin0nfjmsfwpxrgl9vh8zvk26jagjz8a5zbfq0sz60pyxkcag", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZSB0b3VjaHBhZCBvbiBvciBvZmYiLAogICJuYW1lIjogIlRvdWNocGFkIE9uIE9mZiIsCiAgIm9yaWdpbmFsLWF1dGhvcnMiOiAiUm9tYW5vIEdpYW5uZXR0aSA8cm9tYW5vLmdpYW5uZXR0aUBnbWFpbC5jb20+IiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnRvdWNocGFkb25vZmYiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1JtYW5vL2dzZS10b3VjaHBhZC1vbm9mZiIsCiAgInV1aWQiOiAiVG91Y2hwYWRPbk9mZkByb21hbm8ucmd0dGkuY29tIiwKICAidmVyc2lvbiI6IDMKfQ=="}
   }}
-, {"uuid": "icon-hider-updated@lx358hcl.com", "name": "Icon Hider Updated", "pname": "icon-hider-updated", "description": "Show/Hide icons from top panel (updated). Works for Gnome 40+\n", "link": "https://extensions.gnome.org/extension/6649/icon-hider-updated/", "shell_version_map": {
-    "40": {"version": "6", "sha256": "0mj2l700cj47hpsg62y1rc7z10ycsbkmd3c9fv5xy2rnlsrpv5in", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbHgzNThoY2wvbGludXhpY29uaGlkZXJ1cGRhdGVkIiwKICAidXVpZCI6ICJpY29uLWhpZGVyLXVwZGF0ZWRAbHgzNThoY2wuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
-    "41": {"version": "6", "sha256": "0mj2l700cj47hpsg62y1rc7z10ycsbkmd3c9fv5xy2rnlsrpv5in", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbHgzNThoY2wvbGludXhpY29uaGlkZXJ1cGRhdGVkIiwKICAidXVpZCI6ICJpY29uLWhpZGVyLXVwZGF0ZWRAbHgzNThoY2wuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="},
-    "42": {"version": "6", "sha256": "0mj2l700cj47hpsg62y1rc7z10ycsbkmd3c9fv5xy2rnlsrpv5in", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbHgzNThoY2wvbGludXhpY29uaGlkZXJ1cGRhdGVkIiwKICAidXVpZCI6ICJpY29uLWhpZGVyLXVwZGF0ZWRAbHgzNThoY2wuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="}
+, {"uuid": "icon-hider-updated@lx358hcl.com", "name": "Icon Hider Updated", "pname": "icon-hider-updated", "description": "Show & Hide icons from the top panel", "link": "https://extensions.gnome.org/extension/6649/icon-hider-updated/", "shell_version_map": {
+    "40": {"version": "9", "sha256": "10i3chc6vzsw04a5jm8p39rlkj7klz96g4979gvia7j6xfpcs1bc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9seDM1OGhjbC9saW51eGljb25oaWRlcnVwZGF0ZWQiLAogICJ1dWlkIjogImljb24taGlkZXItdXBkYXRlZEBseDM1OGhjbC5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
+    "41": {"version": "9", "sha256": "10i3chc6vzsw04a5jm8p39rlkj7klz96g4979gvia7j6xfpcs1bc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9seDM1OGhjbC9saW51eGljb25oaWRlcnVwZGF0ZWQiLAogICJ1dWlkIjogImljb24taGlkZXItdXBkYXRlZEBseDM1OGhjbC5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
+    "42": {"version": "9", "sha256": "10i3chc6vzsw04a5jm8p39rlkj7klz96g4979gvia7j6xfpcs1bc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9seDM1OGhjbC9saW51eGljb25oaWRlcnVwZGF0ZWQiLAogICJ1dWlkIjogImljb24taGlkZXItdXBkYXRlZEBseDM1OGhjbC5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
+    "43": {"version": "9", "sha256": "10i3chc6vzsw04a5jm8p39rlkj7klz96g4979gvia7j6xfpcs1bc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9seDM1OGhjbC9saW51eGljb25oaWRlcnVwZGF0ZWQiLAogICJ1dWlkIjogImljb24taGlkZXItdXBkYXRlZEBseDM1OGhjbC5jb20iLAogICJ2ZXJzaW9uIjogOQp9"},
+    "44": {"version": "9", "sha256": "10i3chc6vzsw04a5jm8p39rlkj7klz96g4979gvia7j6xfpcs1bc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgJiBIaWRlIGljb25zIGZyb20gdGhlIHRvcCBwYW5lbCIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1pY29uaGlkZXJ1cGRhdGVkIiwKICAibmFtZSI6ICJJY29uIEhpZGVyIFVwZGF0ZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaWNvbi1oaWRlci11cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MCIsCiAgICAiNDEiLAogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9seDM1OGhjbC9saW51eGljb25oaWRlcnVwZGF0ZWQiLAogICJ1dWlkIjogImljb24taGlkZXItdXBkYXRlZEBseDM1OGhjbC5jb20iLAogICJ2ZXJzaW9uIjogOQp9"}
   }}
 , {"uuid": "openweather-extension@penguin-teal.github.io", "name": "OpenWeather Refined", "pname": "openweather", "description": "Display weather for the current or a specified location. Fork of OpenWeather.\nWeather data is provided by OpenWeatherMap.org.\nIf location is set to \"My Location,\" which is the case by default on laptops, this extension will use location services and Nominatim (from openstreetmap.org), or infoip.io if that failed.", "link": "https://extensions.gnome.org/extension/6655/openweather/", "shell_version_map": {
-    "45": {"version": "9", "sha256": "13q1mricrid2avmb77xhlck282b4rap7liba6fs8iq76d7r87y58", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgd2VhdGhlciBmb3IgdGhlIGN1cnJlbnQgb3IgYSBzcGVjaWZpZWQgbG9jYXRpb24uIEZvcmsgb2YgT3BlbldlYXRoZXIuXG5XZWF0aGVyIGRhdGEgaXMgcHJvdmlkZWQgYnkgT3BlbldlYXRoZXJNYXAub3JnLlxuSWYgbG9jYXRpb24gaXMgc2V0IHRvIFwiTXkgTG9jYXRpb24sXCIgd2hpY2ggaXMgdGhlIGNhc2UgYnkgZGVmYXVsdCBvbiBsYXB0b3BzLCB0aGlzIGV4dGVuc2lvbiB3aWxsIHVzZSBsb2NhdGlvbiBzZXJ2aWNlcyBhbmQgTm9taW5hdGltIChmcm9tIG9wZW5zdHJlZXRtYXAub3JnKSwgb3IgaW5mb2lwLmlvIGlmIHRoYXQgZmFpbGVkLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1vcGVud2VhdGhlcnJlZmluZWQiLAogICJnaXQtdmVyc2lvbiI6ICIxMzAucjEuZzAzM2M2ODIiLAogICJuYW1lIjogIk9wZW5XZWF0aGVyIFJlZmluZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3BlbndlYXRoZXJyZWZpbmVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Blbmd1aW4tdGVhbC9nbm9tZS1vcGVud2VhdGhlciIsCiAgInV1aWQiOiAib3BlbndlYXRoZXItZXh0ZW5zaW9uQHBlbmd1aW4tdGVhbC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogOSwKICAidmVyc2lvbi1uYW1lIjogIjEzMCIKfQ=="}
+    "45": {"version": "12", "sha256": "19jyggaah9lx9pycr822fjh2ypdf7vc3mpskqyncphhn10rjg19m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgd2VhdGhlciBmb3IgdGhlIGN1cnJlbnQgb3IgYSBzcGVjaWZpZWQgbG9jYXRpb24uIEZvcmsgb2YgT3BlbldlYXRoZXIuXG5XZWF0aGVyIGRhdGEgaXMgcHJvdmlkZWQgYnkgT3BlbldlYXRoZXJNYXAub3JnLlxuSWYgbG9jYXRpb24gaXMgc2V0IHRvIFwiTXkgTG9jYXRpb24sXCIgd2hpY2ggaXMgdGhlIGNhc2UgYnkgZGVmYXVsdCBvbiBsYXB0b3BzLCB0aGlzIGV4dGVuc2lvbiB3aWxsIHVzZSBsb2NhdGlvbiBzZXJ2aWNlcyBhbmQgTm9taW5hdGltIChmcm9tIG9wZW5zdHJlZXRtYXAub3JnKSwgb3IgaW5mb2lwLmlvIGlmIHRoYXQgZmFpbGVkLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1vcGVud2VhdGhlcnJlZmluZWQiLAogICJnaXQtdmVyc2lvbiI6ICIxMzMucjAuZzU5YTE0OTAiLAogICJuYW1lIjogIk9wZW5XZWF0aGVyIFJlZmluZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3BlbndlYXRoZXJyZWZpbmVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wZW5ndWluLXRlYWwvZ25vbWUtb3BlbndlYXRoZXIiLAogICJ1dWlkIjogIm9wZW53ZWF0aGVyLWV4dGVuc2lvbkBwZW5ndWluLXRlYWwuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDEyLAogICJ2ZXJzaW9uLW5hbWUiOiAiMTMzIgp9"},
+    "46": {"version": "12", "sha256": "19jyggaah9lx9pycr822fjh2ypdf7vc3mpskqyncphhn10rjg19m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgd2VhdGhlciBmb3IgdGhlIGN1cnJlbnQgb3IgYSBzcGVjaWZpZWQgbG9jYXRpb24uIEZvcmsgb2YgT3BlbldlYXRoZXIuXG5XZWF0aGVyIGRhdGEgaXMgcHJvdmlkZWQgYnkgT3BlbldlYXRoZXJNYXAub3JnLlxuSWYgbG9jYXRpb24gaXMgc2V0IHRvIFwiTXkgTG9jYXRpb24sXCIgd2hpY2ggaXMgdGhlIGNhc2UgYnkgZGVmYXVsdCBvbiBsYXB0b3BzLCB0aGlzIGV4dGVuc2lvbiB3aWxsIHVzZSBsb2NhdGlvbiBzZXJ2aWNlcyBhbmQgTm9taW5hdGltIChmcm9tIG9wZW5zdHJlZXRtYXAub3JnKSwgb3IgaW5mb2lwLmlvIGlmIHRoYXQgZmFpbGVkLiIsCiAgImdldHRleHQtZG9tYWluIjogImdub21lLXNoZWxsLWV4dGVuc2lvbi1vcGVud2VhdGhlcnJlZmluZWQiLAogICJnaXQtdmVyc2lvbiI6ICIxMzMucjAuZzU5YTE0OTAiLAogICJuYW1lIjogIk9wZW5XZWF0aGVyIFJlZmluZWQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMub3BlbndlYXRoZXJyZWZpbmVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wZW5ndWluLXRlYWwvZ25vbWUtb3BlbndlYXRoZXIiLAogICJ1dWlkIjogIm9wZW53ZWF0aGVyLWV4dGVuc2lvbkBwZW5ndWluLXRlYWwuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDEyLAogICJ2ZXJzaW9uLW5hbWUiOiAiMTMzIgp9"}
   }}
 , {"uuid": "wallhub@sakithb.github.io", "name": "Wallhub", "pname": "wallhub", "description": "Manage wallpapers with ease", "link": "https://extensions.gnome.org/extension/6661/wallhub/", "shell_version_map": {
     "45": {"version": "5", "sha256": "1m7n8pv2hfjfw3ffmwhmb8khmrymqij0n6p1lgr93cxqm9myj0qx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1hbmFnZSB3YWxscGFwZXJzIHdpdGggZWFzZSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJnaXRodWIiOiAic2FraXRoYiIsCiAgICAia29maSI6ICJzYWtpdGhiIgogIH0sCiAgImdldHRleHQtZG9tYWluIjogIndhbGxodWJAc2FraXRoYi5naXRodWIuaW8iLAogICJuYW1lIjogIldhbGxodWIiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMud2FsbGh1YiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYWtpdGhiL3dhbGxodWIiLAogICJ1dWlkIjogIndhbGxodWJAc2FraXRoYi5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogNSwKICAidmVyc2lvbi1uYW1lIjogIjEuMS4yIgp9"}
@@ -6502,16 +6782,20 @@
     "42": {"version": "13", "sha256": "0whvcy54fjq6alvc1q6xs0lis44g1k3sv3ygfpv4559wss6m8c1y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZlYXR1cmluZyBpbmRpY2F0b3IgaWNvbnMgaW4gc3lzdGVtIHRyYXksIHNlcnZpbmcgYXMgbWV0ZXIgZm9yIEJsdWV0b290aCBkZXZpY2UgYmF0dGVyeSBsZXZlbHMgYW5kIHByb3ZpZGluZyBkZXRhaWxlZCBiYXR0ZXJ5IGxldmVscyB2aWEgaWNvbi90ZXh0IGluIHRoZSBCbHVldG9vdGggcXVpY2sgc2V0dGluZ3MgbWVudS5cblxuTm90ZTpcbkNlcnRhaW4gQmx1ZXRvb3RoIGRldmljZXMgZG8gbm90IHJlcG9ydCBiYXR0ZXJ5IGxldmVsIHVudGlsIEJsdWV6J3MgZXhwZXJpbWVudGFsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHN5c3RlbS4gQ2hlY2sgUmVhZG1lIGZvciBkZXRhaWxzLiIsCiAgImdldHRleHQtZG9tYWluIjogIkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIEJhdHRlcnkgTWV0ZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9CbHVldG9vdGgtQmF0dGVyeS1NZXRlciIsCiAgInV1aWQiOiAiQmx1ZXRvb3RoLUJhdHRlcnktTWV0ZXJAbWFuaWFjeC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
     "43": {"version": "13", "sha256": "0whvcy54fjq6alvc1q6xs0lis44g1k3sv3ygfpv4559wss6m8c1y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZlYXR1cmluZyBpbmRpY2F0b3IgaWNvbnMgaW4gc3lzdGVtIHRyYXksIHNlcnZpbmcgYXMgbWV0ZXIgZm9yIEJsdWV0b290aCBkZXZpY2UgYmF0dGVyeSBsZXZlbHMgYW5kIHByb3ZpZGluZyBkZXRhaWxlZCBiYXR0ZXJ5IGxldmVscyB2aWEgaWNvbi90ZXh0IGluIHRoZSBCbHVldG9vdGggcXVpY2sgc2V0dGluZ3MgbWVudS5cblxuTm90ZTpcbkNlcnRhaW4gQmx1ZXRvb3RoIGRldmljZXMgZG8gbm90IHJlcG9ydCBiYXR0ZXJ5IGxldmVsIHVudGlsIEJsdWV6J3MgZXhwZXJpbWVudGFsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHN5c3RlbS4gQ2hlY2sgUmVhZG1lIGZvciBkZXRhaWxzLiIsCiAgImdldHRleHQtZG9tYWluIjogIkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIEJhdHRlcnkgTWV0ZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9CbHVldG9vdGgtQmF0dGVyeS1NZXRlciIsCiAgInV1aWQiOiAiQmx1ZXRvb3RoLUJhdHRlcnktTWV0ZXJAbWFuaWFjeC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
     "44": {"version": "13", "sha256": "0whvcy54fjq6alvc1q6xs0lis44g1k3sv3ygfpv4559wss6m8c1y", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZlYXR1cmluZyBpbmRpY2F0b3IgaWNvbnMgaW4gc3lzdGVtIHRyYXksIHNlcnZpbmcgYXMgbWV0ZXIgZm9yIEJsdWV0b290aCBkZXZpY2UgYmF0dGVyeSBsZXZlbHMgYW5kIHByb3ZpZGluZyBkZXRhaWxlZCBiYXR0ZXJ5IGxldmVscyB2aWEgaWNvbi90ZXh0IGluIHRoZSBCbHVldG9vdGggcXVpY2sgc2V0dGluZ3MgbWVudS5cblxuTm90ZTpcbkNlcnRhaW4gQmx1ZXRvb3RoIGRldmljZXMgZG8gbm90IHJlcG9ydCBiYXR0ZXJ5IGxldmVsIHVudGlsIEJsdWV6J3MgZXhwZXJpbWVudGFsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHN5c3RlbS4gQ2hlY2sgUmVhZG1lIGZvciBkZXRhaWxzLiIsCiAgImdldHRleHQtZG9tYWluIjogIkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIEJhdHRlcnkgTWV0ZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9CbHVldG9vdGgtQmF0dGVyeS1NZXRlciIsCiAgInV1aWQiOiAiQmx1ZXRvb3RoLUJhdHRlcnktTWV0ZXJAbWFuaWFjeC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEzCn0="},
-    "45": {"version": "14", "sha256": "1l86hrcr5fasz63bvyqh9lgnrnwf3czc89krv1ka4z2bn22vzpx4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZlYXR1cmluZyBpbmRpY2F0b3IgaWNvbnMgaW4gc3lzdGVtIHRyYXksIHNlcnZpbmcgYXMgbWV0ZXIgZm9yIEJsdWV0b290aCBkZXZpY2UgYmF0dGVyeSBsZXZlbHMgYW5kIHByb3ZpZGluZyBkZXRhaWxlZCBiYXR0ZXJ5IGxldmVscyB2aWEgaWNvbi90ZXh0IGluIHRoZSBCbHVldG9vdGggcXVpY2sgc2V0dGluZ3MgbWVudS5cblxuTm90ZTpcbkNlcnRhaW4gQmx1ZXRvb3RoIGRldmljZXMgZG8gbm90IHJlcG9ydCBiYXR0ZXJ5IGxldmVsIHVudGlsIEJsdWV6J3MgZXhwZXJpbWVudGFsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHN5c3RlbS4gQ2hlY2sgUmVhZG1lIGZvciBkZXRhaWxzLiIsCiAgImdldHRleHQtZG9tYWluIjogIkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIEJhdHRlcnkgTWV0ZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYW5pYWN4L0JsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAidXVpZCI6ICJCbHVldG9vdGgtQmF0dGVyeS1NZXRlckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
+    "45": {"version": "14", "sha256": "1l86hrcr5fasz63bvyqh9lgnrnwf3czc89krv1ka4z2bn22vzpx4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZlYXR1cmluZyBpbmRpY2F0b3IgaWNvbnMgaW4gc3lzdGVtIHRyYXksIHNlcnZpbmcgYXMgbWV0ZXIgZm9yIEJsdWV0b290aCBkZXZpY2UgYmF0dGVyeSBsZXZlbHMgYW5kIHByb3ZpZGluZyBkZXRhaWxlZCBiYXR0ZXJ5IGxldmVscyB2aWEgaWNvbi90ZXh0IGluIHRoZSBCbHVldG9vdGggcXVpY2sgc2V0dGluZ3MgbWVudS5cblxuTm90ZTpcbkNlcnRhaW4gQmx1ZXRvb3RoIGRldmljZXMgZG8gbm90IHJlcG9ydCBiYXR0ZXJ5IGxldmVsIHVudGlsIEJsdWV6J3MgZXhwZXJpbWVudGFsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHN5c3RlbS4gQ2hlY2sgUmVhZG1lIGZvciBkZXRhaWxzLiIsCiAgImdldHRleHQtZG9tYWluIjogIkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIEJhdHRlcnkgTWV0ZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYW5pYWN4L0JsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAidXVpZCI6ICJCbHVldG9vdGgtQmF0dGVyeS1NZXRlckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTQKfQ=="},
+    "46": {"version": "14", "sha256": "1l86hrcr5fasz63bvyqh9lgnrnwf3czc89krv1ka4z2bn22vzpx4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZlYXR1cmluZyBpbmRpY2F0b3IgaWNvbnMgaW4gc3lzdGVtIHRyYXksIHNlcnZpbmcgYXMgbWV0ZXIgZm9yIEJsdWV0b290aCBkZXZpY2UgYmF0dGVyeSBsZXZlbHMgYW5kIHByb3ZpZGluZyBkZXRhaWxlZCBiYXR0ZXJ5IGxldmVscyB2aWEgaWNvbi90ZXh0IGluIHRoZSBCbHVldG9vdGggcXVpY2sgc2V0dGluZ3MgbWVudS5cblxuTm90ZTpcbkNlcnRhaW4gQmx1ZXRvb3RoIGRldmljZXMgZG8gbm90IHJlcG9ydCBiYXR0ZXJ5IGxldmVsIHVudGlsIEJsdWV6J3MgZXhwZXJpbWVudGFsIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIHN5c3RlbS4gQ2hlY2sgUmVhZG1lIGZvciBkZXRhaWxzLiIsCiAgImdldHRleHQtZG9tYWluIjogIkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiQmx1ZXRvb3RoIEJhdHRlcnkgTWV0ZXIiLAogICJzZXNzaW9uLW1vZGVzIjogWwogICAgInVubG9jay1kaWFsb2ciLAogICAgInVzZXIiCiAgXSwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkJsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tYW5pYWN4L0JsdWV0b290aC1CYXR0ZXJ5LU1ldGVyIiwKICAidXVpZCI6ICJCbHVldG9vdGgtQmF0dGVyeS1NZXRlckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTQKfQ=="}
   }}
 , {"uuid": "xwayland-indicator@swsnr.de", "name": "XWayland Indicator", "pname": "xwayland-indicator", "description": "Indicate whether the focused window uses XWayland.", "link": "https://extensions.gnome.org/extension/6676/xwayland-indicator/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "1y86189fhiw44625pkb6aj2gy0im4jdflsh8f9h4x9pc72hnfqmm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlIHdoZXRoZXIgdGhlIGZvY3VzZWQgd2luZG93IHVzZXMgWFdheWxhbmQuIiwKICAibmFtZSI6ICJYV2F5bGFuZCBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXh3YXlsYW5kIiwKICAidXVpZCI6ICJ4d2F5bGFuZC1pbmRpY2F0b3JAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMSwKICAidmVyc2lvbi1uYW1lIjogIjQ1LjEiCn0="}
+    "45": {"version": "1", "sha256": "1y86189fhiw44625pkb6aj2gy0im4jdflsh8f9h4x9pc72hnfqmm", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlIHdoZXRoZXIgdGhlIGZvY3VzZWQgd2luZG93IHVzZXMgWFdheWxhbmQuIiwKICAibmFtZSI6ICJYV2F5bGFuZCBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXh3YXlsYW5kIiwKICAidXVpZCI6ICJ4d2F5bGFuZC1pbmRpY2F0b3JAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMSwKICAidmVyc2lvbi1uYW1lIjogIjQ1LjEiCn0="},
+    "46": {"version": "2", "sha256": "07w079zps9m6zhgrvfcagfvab9d68cmdng7hjpybsslxfy1nwxp2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlIHdoZXRoZXIgdGhlIGZvY3VzZWQgd2luZG93IHVzZXMgWFdheWxhbmQuIiwKICAibmFtZSI6ICJYV2F5bGFuZCBJbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3dzbnIvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXh3YXlsYW5kIiwKICAidXVpZCI6ICJ4d2F5bGFuZC1pbmRpY2F0b3JAc3dzbnIuZGUiLAogICJ2ZXJzaW9uIjogMiwKICAidmVyc2lvbi1uYW1lIjogIjQ2LjEiCn0="}
   }}
 , {"uuid": "power-profile@fthx", "name": "Power profile indicator", "pname": "power-profile-indicator", "description": "Add current power profile in panel's system icons. Very light extension.", "link": "https://extensions.gnome.org/extension/6679/power-profile-indicator/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "19rdih8km5qh4fz5imvyb1wcnpl0d4nnccb05k58b1vlfsfm6ahl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBjdXJyZW50IHBvd2VyIHByb2ZpbGUgaW4gcGFuZWwncyBzeXN0ZW0gaWNvbnMuIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLiIsCiAgIm5hbWUiOiAiUG93ZXIgcHJvZmlsZSBpbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZnRoeC9wb3dlci1wcm9maWxlIiwKICAidXVpZCI6ICJwb3dlci1wcm9maWxlQGZ0aHgiLAogICJ2ZXJzaW9uIjogMgp9"}
+    "45": {"version": "5", "sha256": "1fmz31bm2kf6rbzkib1756sg25chyxs5vbllqjzc49dalm0cla2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBjdXJyZW50IHBvd2VyIHByb2ZpbGUgaW4gcGFuZWwncyBzeXN0ZW0gaWNvbnMuIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLiIsCiAgIm5hbWUiOiAiUG93ZXIgcHJvZmlsZSBpbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvcG93ZXItcHJvZmlsZSIsCiAgInV1aWQiOiAicG93ZXItcHJvZmlsZUBmdGh4IiwKICAidmVyc2lvbiI6IDUKfQ=="},
+    "46": {"version": "5", "sha256": "1fmz31bm2kf6rbzkib1756sg25chyxs5vbllqjzc49dalm0cla2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBjdXJyZW50IHBvd2VyIHByb2ZpbGUgaW4gcGFuZWwncyBzeXN0ZW0gaWNvbnMuIFZlcnkgbGlnaHQgZXh0ZW5zaW9uLiIsCiAgIm5hbWUiOiAiUG93ZXIgcHJvZmlsZSBpbmRpY2F0b3IiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Z0aHgvcG93ZXItcHJvZmlsZSIsCiAgInV1aWQiOiAicG93ZXItcHJvZmlsZUBmdGh4IiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
 , {"uuid": "monitor@astraext.github.io", "name": "Astra Monitor", "pname": "astra-monitor", "description": "Astra Monitor is a cutting-edge, fully customizable, and performance-focused system monitoring extension for GNOME's top bar. It's an all-in-one solution for those seeking to keep a close eye on their system's performance metrics like CPU, GPU, RAM, disk usage, network statistics, and sensor readings.", "link": "https://extensions.gnome.org/extension/6682/astra-monitor/", "shell_version_map": {
-    "45": {"version": "20", "sha256": "1d4s73adlh5wblyxyzcrb0s24l1m8kw9sh6ijkk00xca2kpwr401", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFzdHJhIE1vbml0b3IgaXMgYSBjdXR0aW5nLWVkZ2UsIGZ1bGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBlcmZvcm1hbmNlLWZvY3VzZWQgc3lzdGVtIG1vbml0b3JpbmcgZXh0ZW5zaW9uIGZvciBHTk9NRSdzIHRvcCBiYXIuIEl0J3MgYW4gYWxsLWluLW9uZSBzb2x1dGlvbiBmb3IgdGhvc2Ugc2Vla2luZyB0byBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZWlyIHN5c3RlbSdzIHBlcmZvcm1hbmNlIG1ldHJpY3MgbGlrZSBDUFUsIEdQVSwgUkFNLCBkaXNrIHVzYWdlLCBuZXR3b3JrIHN0YXRpc3RpY3MsIGFuZCBzZW5zb3IgcmVhZGluZ3MuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJhc3RyYS5leHQiLAogICAgInBhdHJlb24iOiAiQXN0cmFFeHQiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAibW9uaXRvckBhc3RyYWV4dC5naXRodWIuaW8iLAogICJsaWNlbnNlIjogIkdQTC0zLjAtb3ItbGF0ZXIiLAogICJuYW1lIjogIkFzdHJhIE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXN0cmEtbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQXN0cmFFeHQvYXN0cmEtbW9uaXRvciIsCiAgInV1aWQiOiAibW9uaXRvckBhc3RyYWV4dC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMjAsCiAgInZlcnNpb24tbmFtZSI6ICIxMyIKfQ=="}
+    "45": {"version": "30", "sha256": "0indl8ixd6wlxgmf4y8y1z8c70bp8703jkphqjk75glr05i2lk9w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFzdHJhIE1vbml0b3IgaXMgYSBjdXR0aW5nLWVkZ2UsIGZ1bGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBlcmZvcm1hbmNlLWZvY3VzZWQgc3lzdGVtIG1vbml0b3JpbmcgZXh0ZW5zaW9uIGZvciBHTk9NRSdzIHRvcCBiYXIuIEl0J3MgYW4gYWxsLWluLW9uZSBzb2x1dGlvbiBmb3IgdGhvc2Ugc2Vla2luZyB0byBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZWlyIHN5c3RlbSdzIHBlcmZvcm1hbmNlIG1ldHJpY3MgbGlrZSBDUFUsIEdQVSwgUkFNLCBkaXNrIHVzYWdlLCBuZXR3b3JrIHN0YXRpc3RpY3MsIGFuZCBzZW5zb3IgcmVhZGluZ3MuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJhc3RyYS5leHQiLAogICAgInBhdHJlb24iOiAiQXN0cmFFeHQiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAibW9uaXRvckBhc3RyYWV4dC5naXRodWIuaW8iLAogICJsaWNlbnNlIjogIkdQTC0zLjAtb3ItbGF0ZXIiLAogICJuYW1lIjogIkFzdHJhIE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXN0cmEtbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQXN0cmFFeHQvYXN0cmEtbW9uaXRvciIsCiAgInV1aWQiOiAibW9uaXRvckBhc3RyYWV4dC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMzAsCiAgInZlcnNpb24tbmFtZSI6ICIxOSIKfQ=="},
+    "46": {"version": "30", "sha256": "0indl8ixd6wlxgmf4y8y1z8c70bp8703jkphqjk75glr05i2lk9w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFzdHJhIE1vbml0b3IgaXMgYSBjdXR0aW5nLWVkZ2UsIGZ1bGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBlcmZvcm1hbmNlLWZvY3VzZWQgc3lzdGVtIG1vbml0b3JpbmcgZXh0ZW5zaW9uIGZvciBHTk9NRSdzIHRvcCBiYXIuIEl0J3MgYW4gYWxsLWluLW9uZSBzb2x1dGlvbiBmb3IgdGhvc2Ugc2Vla2luZyB0byBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZWlyIHN5c3RlbSdzIHBlcmZvcm1hbmNlIG1ldHJpY3MgbGlrZSBDUFUsIEdQVSwgUkFNLCBkaXNrIHVzYWdlLCBuZXR3b3JrIHN0YXRpc3RpY3MsIGFuZCBzZW5zb3IgcmVhZGluZ3MuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJhc3RyYS5leHQiLAogICAgInBhdHJlb24iOiAiQXN0cmFFeHQiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAibW9uaXRvckBhc3RyYWV4dC5naXRodWIuaW8iLAogICJsaWNlbnNlIjogIkdQTC0zLjAtb3ItbGF0ZXIiLAogICJuYW1lIjogIkFzdHJhIE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYXN0cmEtbW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vQXN0cmFFeHQvYXN0cmEtbW9uaXRvciIsCiAgInV1aWQiOiAibW9uaXRvckBhc3RyYWV4dC5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMzAsCiAgInZlcnNpb24tbmFtZSI6ICIxOSIKfQ=="}
   }}
 , {"uuid": "collector-pip@mijorus.it", "name": "Collector - complementary extension", "pname": "collector-complementary-extension", "description": "Allows the Collector window to stay always on top", "link": "https://extensions.gnome.org/extension/6685/collector-complementary-extension/", "shell_version_map": {
     "45": {"version": "1", "sha256": "0ndzxkw8rxjb3nxwyi4znhyq7j2p4yb6vj9gxfdz9hl2kcbsn1k7", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgQ29sbGVjdG9yIHdpbmRvdyB0byBzdGF5IGFsd2F5cyBvbiB0b3AiLAogICJuYW1lIjogIkNvbGxlY3RvciAtIGNvbXBsZW1lbnRhcnkgZXh0ZW5zaW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21pam9ydXMvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWNvbGxlY3RvciIsCiAgInV1aWQiOiAiY29sbGVjdG9yLXBpcEBtaWpvcnVzLml0IiwKICAidmVyc2lvbiI6IDEKfQ=="}
@@ -6520,71 +6804,84 @@
     "42": {"version": "4", "sha256": "0868jyax5hmmwrydjabdw35d49lh59msli5798zxv571xdai7kbx", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCBrZXlib2FyZCBsYXlvdXRzIHByb2dyYW1tYXRpY2FsbHkiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogIm1hZGhlYWQiCiAgfSwKICAibmFtZSI6ICJTaHlyaWl3b29rIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hZGhlYWQvc2h5cmlpd29vayIsCiAgInV1aWQiOiAic2h5cmlpd29va0BtYWRoZWFkLm1lIiwKICAidmVyc2lvbiI6IDQKfQ=="},
     "45": {"version": "5", "sha256": "1rcdlhavb7ws0fr1cpf7s31d496adakjl7vz2dzlikygdg1nj5hg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlN3aXRjaCBrZXlib2FyZCBsYXlvdXRzIHByb2dyYW1tYXRpY2FsbHkiLAogICJkb25hdGlvbnMiOiB7CiAgICAiZ2l0aHViIjogIm1hZGhlYWQiCiAgfSwKICAibmFtZSI6ICJTaHlyaWl3b29rIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL21hZGhlYWQvc2h5cmlpd29vayIsCiAgInV1aWQiOiAic2h5cmlpd29va0BtYWRoZWFkLm1lIiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
-, {"uuid": "disable-workspace-animation@ethnarque", "name": "Disable Workspace Animation", "pname": "disable-workspace-animation", "description": "GNOME Shell 45 extension that disables the workspace animation when switching between workspaces", "link": "https://extensions.gnome.org/extension/6694/disable-workspace-animation/", "shell_version_map": {
-    "45": {"version": "4", "sha256": "1x4h496p9dk33mxyq1vgw6s77gv31igyl294g433ac7x5bi4d3dz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIFNoZWxsIDQ1IGV4dGVuc2lvbiB0aGF0IGRpc2FibGVzIHRoZSB3b3Jrc3BhY2UgYW5pbWF0aW9uIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gd29ya3NwYWNlcyIsCiAgIm5hbWUiOiAiRGlzYWJsZSBXb3Jrc3BhY2UgQW5pbWF0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2V0aG5hcnF1ZS9nbm9tZS1kaXNhYmxlLXdvcmtzcGFjZS1hbmltYXRpb24iLAogICJ1dWlkIjogImRpc2FibGUtd29ya3NwYWNlLWFuaW1hdGlvbkBldGhuYXJxdWUiLAogICJ2ZXJzaW9uIjogNAp9"}
+, {"uuid": "disable-workspace-animation@ethnarque", "name": "Disable Workspace Animation", "pname": "disable-workspace-animation", "description": "GNOME Shell 46 extension that disables the workspace animation when switching between workspaces", "link": "https://extensions.gnome.org/extension/6694/disable-workspace-animation/", "shell_version_map": {
+    "45": {"version": "5", "sha256": "0awrld49kqm9avm1vsb39nmw11wfa69k4x51pij40bfchwd2l34s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIFNoZWxsIDQ2IGV4dGVuc2lvbiB0aGF0IGRpc2FibGVzIHRoZSB3b3Jrc3BhY2UgYW5pbWF0aW9uIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gd29ya3NwYWNlcyIsCiAgIm5hbWUiOiAiRGlzYWJsZSBXb3Jrc3BhY2UgQW5pbWF0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ldGhuYXJxdWUvZ25vbWUtZGlzYWJsZS13b3Jrc3BhY2UtYW5pbWF0aW9uIiwKICAidXVpZCI6ICJkaXNhYmxlLXdvcmtzcGFjZS1hbmltYXRpb25AZXRobmFycXVlIiwKICAidmVyc2lvbiI6IDUKfQ=="},
+    "46": {"version": "5", "sha256": "0awrld49kqm9avm1vsb39nmw11wfa69k4x51pij40bfchwd2l34s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdOT01FIFNoZWxsIDQ2IGV4dGVuc2lvbiB0aGF0IGRpc2FibGVzIHRoZSB3b3Jrc3BhY2UgYW5pbWF0aW9uIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gd29ya3NwYWNlcyIsCiAgIm5hbWUiOiAiRGlzYWJsZSBXb3Jrc3BhY2UgQW5pbWF0aW9uIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ldGhuYXJxdWUvZ25vbWUtZGlzYWJsZS13b3Jrc3BhY2UtYW5pbWF0aW9uIiwKICAidXVpZCI6ICJkaXNhYmxlLXdvcmtzcGFjZS1hbmltYXRpb25AZXRobmFycXVlIiwKICAidmVyc2lvbiI6IDUKfQ=="}
   }}
 , {"uuid": "clipqr@drien.com", "name": "ClipQR", "pname": "clipqr", "description": "This simply adds a pop-out QR Code containing whatever text is currently in your clipboard. It's an easy way to share a link to your phone without any additional software.", "link": "https://extensions.gnome.org/extension/6697/clipqr/", "shell_version_map": {
     "45": {"version": "2", "sha256": "1sflkyja7c2f6v56m1d4xki2hjwpnxq88mp5940d0gvr682phr1h", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgc2ltcGx5IGFkZHMgYSBwb3Atb3V0IFFSIENvZGUgY29udGFpbmluZyB3aGF0ZXZlciB0ZXh0IGlzIGN1cnJlbnRseSBpbiB5b3VyIGNsaXBib2FyZC4gSXQncyBhbiBlYXN5IHdheSB0byBzaGFyZSBhIGxpbmsgdG8geW91ciBwaG9uZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHNvZnR3YXJlLiIsCiAgIm5hbWUiOiAiQ2xpcFFSIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RyaWVuL2dub21lLXNoZWxsLWV4dGVuc2lvbi1jbGlwcXIiLAogICJ1dWlkIjogImNsaXBxckBkcmllbi5jb20iLAogICJ2ZXJzaW9uIjogMgp9"}
   }}
 , {"uuid": "debuglogging@jonathan.jdoda.ca", "name": "Enable Debug Logs", "pname": "enable-debug-logs", "description": "Turns on GNOME Shell debug logging.", "link": "https://extensions.gnome.org/extension/6706/enable-debug-logs/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "1i3ddfgzqy40q67f05dbjm0h2z0anmdd14h61x7jclvh2ll1rk5s", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1cm5zIG9uIEdOT01FIFNoZWxsIGRlYnVnIGxvZ2dpbmcuIiwKICAibmFtZSI6ICJFbmFibGUgRGVidWcgTG9ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qZG9kYS9kZWJ1Z2xvZ2dpbmciLAogICJ1dWlkIjogImRlYnVnbG9nZ2luZ0Bqb25hdGhhbi5qZG9kYS5jYSIsCiAgInZlcnNpb24iOiAyCn0="}
+    "45": {"version": "3", "sha256": "1zlb0l0kj8nm4q0izs1jhyry3ld36wq2qnrn64jljf0690v0lnlf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1cm5zIG9uIEdOT01FIFNoZWxsIGRlYnVnIGxvZ2dpbmcuIiwKICAibmFtZSI6ICJFbmFibGUgRGVidWcgTG9ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamRvZGEvZGVidWdsb2dnaW5nIiwKICAidXVpZCI6ICJkZWJ1Z2xvZ2dpbmdAam9uYXRoYW4uamRvZGEuY2EiLAogICJ2ZXJzaW9uIjogMwp9"},
+    "46": {"version": "3", "sha256": "1zlb0l0kj8nm4q0izs1jhyry3ld36wq2qnrn64jljf0690v0lnlf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlR1cm5zIG9uIEdOT01FIFNoZWxsIGRlYnVnIGxvZ2dpbmcuIiwKICAibmFtZSI6ICJFbmFibGUgRGVidWcgTG9ncyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vamRvZGEvZGVidWdsb2dnaW5nIiwKICAidXVpZCI6ICJkZWJ1Z2xvZ2dpbmdAam9uYXRoYW4uamRvZGEuY2EiLAogICJ2ZXJzaW9uIjogMwp9"}
   }}
 , {"uuid": "dash-to-dock-workaround@popov895.ukr.net", "name": "Dash-To-Dock Workaround", "pname": "dash-to-dock-workaround", "description": "Quick fix for the https://bugs.launchpad.net/ubuntu/+source/gnome-shell-extension-ubuntu-dock/+bug/1961508", "link": "https://extensions.gnome.org/extension/6712/dash-to-dock-workaround/", "shell_version_map": {
-    "42": {"version": "3", "sha256": "0b8ahhf73b1j65fd95gahnnr3y3ly1yv4xa7vdcfrcwmkp3ih7i6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvZGFzaC10by1kb2NrLXdvcmthcm91bmQiLAogICJ1dWlkIjogImRhc2gtdG8tZG9jay13b3JrYXJvdW5kQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogMwp9"},
-    "43": {"version": "3", "sha256": "0b8ahhf73b1j65fd95gahnnr3y3ly1yv4xa7vdcfrcwmkp3ih7i6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvZGFzaC10by1kb2NrLXdvcmthcm91bmQiLAogICJ1dWlkIjogImRhc2gtdG8tZG9jay13b3JrYXJvdW5kQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogMwp9"},
-    "44": {"version": "3", "sha256": "0b8ahhf73b1j65fd95gahnnr3y3ly1yv4xa7vdcfrcwmkp3ih7i6", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvZGFzaC10by1kb2NrLXdvcmthcm91bmQiLAogICJ1dWlkIjogImRhc2gtdG8tZG9jay13b3JrYXJvdW5kQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogMwp9"},
-    "45": {"version": "4", "sha256": "0kk0bf13f4020cqnn0jw8a7wsb0cwg1iz5347a3mvhrqrcs5391d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BvcG92ODk1L2Rhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAidXVpZCI6ICJkYXNoLXRvLWRvY2std29ya2Fyb3VuZEBwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDQKfQ=="}
+    "42": {"version": "6", "sha256": "0q1i4qivzl75ak7rmaij2gwlx8rzghch129y1jwxjgmnd180j1kh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvZGFzaC10by1kb2NrLXdvcmthcm91bmQiLAogICJ1dWlkIjogImRhc2gtdG8tZG9jay13b3JrYXJvdW5kQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogNgp9"},
+    "43": {"version": "6", "sha256": "0q1i4qivzl75ak7rmaij2gwlx8rzghch129y1jwxjgmnd180j1kh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvZGFzaC10by1kb2NrLXdvcmthcm91bmQiLAogICJ1dWlkIjogImRhc2gtdG8tZG9jay13b3JrYXJvdW5kQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogNgp9"},
+    "44": {"version": "6", "sha256": "0q1i4qivzl75ak7rmaij2gwlx8rzghch129y1jwxjgmnd180j1kh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvZGFzaC10by1kb2NrLXdvcmthcm91bmQiLAogICJ1dWlkIjogImRhc2gtdG8tZG9jay13b3JrYXJvdW5kQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogNgp9"},
+    "45": {"version": "7", "sha256": "0lhw1xg2avsmpgr2ri3af2mnsmhqnfhxwpmwvg3fhfsnsg5x25gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bvdjg5NS9kYXNoLXRvLWRvY2std29ya2Fyb3VuZCIsCiAgInV1aWQiOiAiZGFzaC10by1kb2NrLXdvcmthcm91bmRAcG9wb3Y4OTUudWtyLm5ldCIsCiAgInZlcnNpb24iOiA3Cn0="},
+    "46": {"version": "7", "sha256": "0lhw1xg2avsmpgr2ri3af2mnsmhqnfhxwpmwvg3fhfsnsg5x25gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlF1aWNrIGZpeCBmb3IgdGhlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL2dub21lLXNoZWxsLWV4dGVuc2lvbi11YnVudHUtZG9jay8rYnVnLzE5NjE1MDgiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogInBvcG92ODk1YSIKICB9LAogICJuYW1lIjogIkRhc2gtVG8tRG9jayBXb3JrYXJvdW5kIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmRhc2gtdG8tZG9jay13b3JrYXJvdW5kIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bvdjg5NS9kYXNoLXRvLWRvY2std29ya2Fyb3VuZCIsCiAgInV1aWQiOiAiZGFzaC10by1kb2NrLXdvcmthcm91bmRAcG9wb3Y4OTUudWtyLm5ldCIsCiAgInZlcnNpb24iOiA3Cn0="}
   }}
 , {"uuid": "panelnote@gittymac.github.io", "name": "Panel Note", "pname": "panel-note", "description": "Add a small note to your GNOME panel", "link": "https://extensions.gnome.org/extension/6718/panel-note/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "0hyg3smnfhqnvlcplg8ymb76075jpji2lbdj18k0yy8fz9jnx1q8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNtYWxsIG5vdGUgdG8geW91ciBHTk9NRSBwYW5lbCIsCiAgIm5hbWUiOiAiUGFuZWwgTm90ZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wYW5lbG5vdGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vR2l0dHlNYWMvUGFuZWxOb3RlIiwKICAidXVpZCI6ICJwYW5lbG5vdGVAZ2l0dHltYWMuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDEKfQ=="}
+    "45": {"version": "2", "sha256": "0yr8vcnxqglgpn1p36fnj2jb2fklx7s4vcsdcd5k8jj8lakk37gj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNtYWxsIG5vdGUgdG8geW91ciBHTk9NRSBwYW5lbCIsCiAgIm5hbWUiOiAiUGFuZWwgTm90ZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wYW5lbG5vdGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dpdHR5TWFjL1BhbmVsTm90ZSIsCiAgInV1aWQiOiAicGFuZWxub3RlQGdpdHR5bWFjLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAyCn0="},
+    "46": {"version": "2", "sha256": "0yr8vcnxqglgpn1p36fnj2jb2fklx7s4vcsdcd5k8jj8lakk37gj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBhIHNtYWxsIG5vdGUgdG8geW91ciBHTk9NRSBwYW5lbCIsCiAgIm5hbWUiOiAiUGFuZWwgTm90ZSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5wYW5lbG5vdGUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IiwKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dpdHR5TWFjL1BhbmVsTm90ZSIsCiAgInV1aWQiOiAicGFuZWxub3RlQGdpdHR5bWFjLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAyCn0="}
   }}
-, {"uuid": "extensions-search-provider@G-dH.github.com", "name": "ESP (Extensions Search Provider)", "pname": "esp-extensions-search-provider", "description": "Search and access settings of installed extensions from the Activities overview\n\nVisit the Homepage linked below for more information and instructions.", "link": "https://extensions.gnome.org/extension/6721/esp-extensions-search-provider/", "shell_version_map": {
-    "42": {"version": "14", "sha256": "0x7d9zjzp3rrvxdnml2bn47xdy1rjbdqm6724aniikdws4jd6771", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9leHRlbnNpb25zLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNSIKfQ=="},
-    "43": {"version": "14", "sha256": "0x7d9zjzp3rrvxdnml2bn47xdy1rjbdqm6724aniikdws4jd6771", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9leHRlbnNpb25zLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNSIKfQ=="},
-    "44": {"version": "14", "sha256": "0x7d9zjzp3rrvxdnml2bn47xdy1rjbdqm6724aniikdws4jd6771", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9leHRlbnNpb25zLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNSIKfQ=="},
-    "45": {"version": "13", "sha256": "1xbfyh54q43zcd8jwj52bj82mm8babf3djsdh20q12y6fs2mwny0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2V4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJleHRlbnNpb25zLXNlYXJjaC1wcm92aWRlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni41Igp9"}
+, {"uuid": "extensions-search-provider@G-dH.github.com", "name": "ESP (Extensions Search Provider)", "pname": "esp-extensions-search-provider", "description": "Search and access settings of installed extensions from the Activities overview", "link": "https://extensions.gnome.org/extension/6721/esp-extensions-search-provider/", "shell_version_map": {
+    "42": {"version": "18", "sha256": "1ml6wg8njmsi4pkkmrqx7jx40q22qscvfk92h1ilhzfjxmp507jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9leHRlbnNpb25zLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE4LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNiIKfQ=="},
+    "43": {"version": "18", "sha256": "1ml6wg8njmsi4pkkmrqx7jx40q22qscvfk92h1ilhzfjxmp507jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9leHRlbnNpb25zLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE4LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNiIKfQ=="},
+    "44": {"version": "18", "sha256": "1ml6wg8njmsi4pkkmrqx7jx40q22qscvfk92h1ilhzfjxmp507jb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC9leHRlbnNpb25zLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE4LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNiIKfQ=="},
+    "45": {"version": "17", "sha256": "002c8pijldvcbgrjp35p4z7vh2vgs0vgjgxrp3za2kf4kyx0api9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2V4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJleHRlbnNpb25zLXNlYXJjaC1wcm92aWRlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni42Igp9"},
+    "46": {"version": "17", "sha256": "002c8pijldvcbgrjp35p4z7vh2vgs0vgjgxrp3za2kf4kyx0api9", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgYWNjZXNzIHNldHRpbmdzIG9mIGluc3RhbGxlZCBleHRlbnNpb25zIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAiZXh0ZW5zaW9ucy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIkVTUCAoRXh0ZW5zaW9ucyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLmV4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL2V4dGVuc2lvbnMtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJleHRlbnNpb25zLXNlYXJjaC1wcm92aWRlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTcsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni42Igp9"}
   }}
 , {"uuid": "hide-cursor@elcste.com", "name": "Hide Cursor", "pname": "hide-cursor", "description": "Hide the mouse cursor on inactivity.\n\nFor use on Wayland, since unclutter, unclutter-xfixes and xbanish only work on X11.\n\nNote: This initial version has a hardcoded 5 second timeout. I'd like to add settings to support configuring this value, but I have no definite plans. Collaboration appreciated! (I'd also accept a contribution adding support for hiding the cursor while typing, but I don't have plans for this myself.)", "link": "https://extensions.gnome.org/extension/6727/hide-cursor/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "0a20d0f82r26cww79xlaiqmlfh1sqxnqa001pynp4b1wqwq9sdwl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIG1vdXNlIGN1cnNvciBvbiBpbmFjdGl2aXR5LlxuXG5Gb3IgdXNlIG9uIFdheWxhbmQsIHNpbmNlIHVuY2x1dHRlciwgdW5jbHV0dGVyLXhmaXhlcyBhbmQgeGJhbmlzaCBvbmx5IHdvcmsgb24gWDExLlxuXG5Ob3RlOiBUaGlzIGluaXRpYWwgdmVyc2lvbiBoYXMgYSBoYXJkY29kZWQgNSBzZWNvbmQgdGltZW91dC4gSSdkIGxpa2UgdG8gYWRkIHNldHRpbmdzIHRvIHN1cHBvcnQgY29uZmlndXJpbmcgdGhpcyB2YWx1ZSwgYnV0IEkgaGF2ZSBubyBkZWZpbml0ZSBwbGFucy4gQ29sbGFib3JhdGlvbiBhcHByZWNpYXRlZCEgKEknZCBhbHNvIGFjY2VwdCBhIGNvbnRyaWJ1dGlvbiBhZGRpbmcgc3VwcG9ydCBmb3IgaGlkaW5nIHRoZSBjdXJzb3Igd2hpbGUgdHlwaW5nLCBidXQgSSBkb24ndCBoYXZlIHBsYW5zIGZvciB0aGlzIG15c2VsZi4pIiwKICAibmFtZSI6ICJIaWRlIEN1cnNvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9lbGNzdGUvaGlkZS1jdXJzb3IiLAogICJ1dWlkIjogImhpZGUtY3Vyc29yQGVsY3N0ZS5jb20iLAogICJ2ZXJzaW9uIjogMQp9"}
+    "45": {"version": "2", "sha256": "09bwd5sysgyzbp955kb4rqhmrf68z5v9wcpw4q44i3v6h7bvrf1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIG1vdXNlIGN1cnNvciBvbiBpbmFjdGl2aXR5LlxuXG5Gb3IgdXNlIG9uIFdheWxhbmQsIHNpbmNlIHVuY2x1dHRlciwgdW5jbHV0dGVyLXhmaXhlcyBhbmQgeGJhbmlzaCBvbmx5IHdvcmsgb24gWDExLlxuXG5Ob3RlOiBUaGlzIGluaXRpYWwgdmVyc2lvbiBoYXMgYSBoYXJkY29kZWQgNSBzZWNvbmQgdGltZW91dC4gSSdkIGxpa2UgdG8gYWRkIHNldHRpbmdzIHRvIHN1cHBvcnQgY29uZmlndXJpbmcgdGhpcyB2YWx1ZSwgYnV0IEkgaGF2ZSBubyBkZWZpbml0ZSBwbGFucy4gQ29sbGFib3JhdGlvbiBhcHByZWNpYXRlZCEgKEknZCBhbHNvIGFjY2VwdCBhIGNvbnRyaWJ1dGlvbiBhZGRpbmcgc3VwcG9ydCBmb3IgaGlkaW5nIHRoZSBjdXJzb3Igd2hpbGUgdHlwaW5nLCBidXQgSSBkb24ndCBoYXZlIHBsYW5zIGZvciB0aGlzIG15c2VsZi4pIiwKICAibmFtZSI6ICJIaWRlIEN1cnNvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWxjc3RlL2hpZGUtY3Vyc29yIiwKICAidXVpZCI6ICJoaWRlLWN1cnNvckBlbGNzdGUuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
+    "46": {"version": "2", "sha256": "09bwd5sysgyzbp955kb4rqhmrf68z5v9wcpw4q44i3v6h7bvrf1z", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgdGhlIG1vdXNlIGN1cnNvciBvbiBpbmFjdGl2aXR5LlxuXG5Gb3IgdXNlIG9uIFdheWxhbmQsIHNpbmNlIHVuY2x1dHRlciwgdW5jbHV0dGVyLXhmaXhlcyBhbmQgeGJhbmlzaCBvbmx5IHdvcmsgb24gWDExLlxuXG5Ob3RlOiBUaGlzIGluaXRpYWwgdmVyc2lvbiBoYXMgYSBoYXJkY29kZWQgNSBzZWNvbmQgdGltZW91dC4gSSdkIGxpa2UgdG8gYWRkIHNldHRpbmdzIHRvIHN1cHBvcnQgY29uZmlndXJpbmcgdGhpcyB2YWx1ZSwgYnV0IEkgaGF2ZSBubyBkZWZpbml0ZSBwbGFucy4gQ29sbGFib3JhdGlvbiBhcHByZWNpYXRlZCEgKEknZCBhbHNvIGFjY2VwdCBhIGNvbnRyaWJ1dGlvbiBhZGRpbmcgc3VwcG9ydCBmb3IgaGlkaW5nIHRoZSBjdXJzb3Igd2hpbGUgdHlwaW5nLCBidXQgSSBkb24ndCBoYXZlIHBsYW5zIGZvciB0aGlzIG15c2VsZi4pIiwKICAibmFtZSI6ICJIaWRlIEN1cnNvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZWxjc3RlL2hpZGUtY3Vyc29yIiwKICAidXVpZCI6ICJoaWRlLWN1cnNvckBlbGNzdGUuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
   }}
-, {"uuid": "windows-search-provider@G-dH.github.com", "name": "WSP (Windows Search Provider)", "pname": "wsp-windows-search-provider", "description": "Search and control windows from the Activities overview\n\n- Supports GNOME Shell 42 - 46\n- Open windows can be added to the top of the global search results\n- Adding a customizable prefix in front of the search pattern allows you to display an isolated search view with a complete list of open windows\n- Strict, Fuzzy and RegExp search methods\n- Close and move windows between workspaces using mouse or commands\n- Sorting options for the complete list of open windows\n\nVisit the Homepage linked below for more information and instructions.", "link": "https://extensions.gnome.org/extension/6730/wsp-windows-search-provider/", "shell_version_map": {
-    "42": {"version": "12", "sha256": "1l9d6ldrsvackp8pv6qmdjwdxq0p99y6kl00fzm465hggn334mpl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3dzLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEyLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNSIKfQ=="},
-    "43": {"version": "12", "sha256": "1l9d6ldrsvackp8pv6qmdjwdxq0p99y6kl00fzm465hggn334mpl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3dzLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEyLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNSIKfQ=="},
-    "44": {"version": "12", "sha256": "1l9d6ldrsvackp8pv6qmdjwdxq0p99y6kl00fzm465hggn334mpl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3dzLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEyLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNSIKfQ=="},
-    "45": {"version": "11", "sha256": "1qkjy611cvpwqld23rg32i6fqqy87ws180jm16hxrm77y04v6mpz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJ3aW5kb3dzLXNlYXJjaC1wcm92aWRlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTEsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni41Igp9"}
+, {"uuid": "windows-search-provider@G-dH.github.com", "name": "WSP (Windows Search Provider)", "pname": "wsp-windows-search-provider", "description": "Search and control windows from the Activities overview", "link": "https://extensions.gnome.org/extension/6730/wsp-windows-search-provider/", "shell_version_map": {
+    "42": {"version": "14", "sha256": "11vk9mn8gn51l54j0jc2ibpd8g63gx6zg1q2whwga2b30cs04mcv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3dzLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNiIKfQ=="},
+    "43": {"version": "14", "sha256": "11vk9mn8gn51l54j0jc2ibpd8g63gx6zg1q2whwga2b30cs04mcv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3dzLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNiIKfQ=="},
+    "44": {"version": "14", "sha256": "11vk9mn8gn51l54j0jc2ibpd8g63gx6zg1q2whwga2b30cs04mcv", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3dzLXNlYXJjaC1wcm92aWRlciIsCiAgInV1aWQiOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXJARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDE0LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuNiIKfQ=="},
+    "45": {"version": "13", "sha256": "0s7dh6x1dg83xbp6jqzphi9h4r4hq0zivbgcjvfjkalwmj89y6dc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJ3aW5kb3dzLXNlYXJjaC1wcm92aWRlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni42Igp9"},
+    "46": {"version": "13", "sha256": "0s7dh6x1dg83xbp6jqzphi9h4r4hq0zivbgcjvfjkalwmj89y6dc", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNlYXJjaCBhbmQgY29udHJvbCB3aW5kb3dzIGZyb20gdGhlIEFjdGl2aXRpZXMgb3ZlcnZpZXciLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93cy1zZWFyY2gtcHJvdmlkZXIiLAogICJuYW1lIjogIldTUCAoV2luZG93cyBTZWFyY2ggUHJvdmlkZXIpIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HLWRIL3dpbmRvd3Mtc2VhcmNoLXByb3ZpZGVyIiwKICAidXVpZCI6ICJ3aW5kb3dzLXNlYXJjaC1wcm92aWRlckBHLWRILmdpdGh1Yi5jb20iLAogICJ2ZXJzaW9uIjogMTMsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni42Igp9"}
   }}
 , {"uuid": "CrazyInternetSpeedMeter@larryw3i_at_163.com", "name": "Crazy Internet Speed Meter", "pname": "crazy-internet-speed-meter", "description": "Simple and minimal internet speed meter extension for the Gnome Shell", "link": "https://extensions.gnome.org/extension/6733/crazy-internet-speed-meter/", "shell_version_map": {
     "45": {"version": "10", "sha256": "1xkgsnl4akp2x8ls4sf4prn26p1x3sc3lrg16f0l6i1sab4bk85q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSBhbmQgbWluaW1hbCBpbnRlcm5ldCBzcGVlZCBtZXRlciBleHRlbnNpb24gZm9yIHRoZSBHbm9tZSBTaGVsbCIsCiAgImdldHRleHQtZG9tYWluIjogIkNyYXp5SW50ZXJuZXRTcGVlZE1ldGVyQGxhcnJ5dzNpX2F0XzE2My5jb20iLAogICJuYW1lIjogIkNyYXp5IEludGVybmV0IFNwZWVkIE1ldGVyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkNyYXp5SW50ZXJuZXRTcGVlZE1ldGVyIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL2xhcnJ5d2VpL2NyYXp5aW50ZXJuZXRzcGVlZG1ldGVyIiwKICAidXVpZCI6ICJDcmF6eUludGVybmV0U3BlZWRNZXRlckBsYXJyeXczaV9hdF8xNjMuY29tIiwKICAidmVyc2lvbiI6IDEwLAogICJ2ZXJzaW9uLW5hbWUiOiAiMjAyNDAyMDIuMTYzOCIKfQ=="}
   }}
 , {"uuid": "inhibitionindicator@monyxie.github.io", "name": "Inhibition Indicator", "pname": "inhibition-indicator", "description": "Indicates whether the system is prevented from sleeping by programs.", "link": "https://extensions.gnome.org/extension/6736/inhibition-indicator/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "166mpf7ds1x1f57g30kywqcvaadcg9grxp2cfgckknwp72fbyqcy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoZSBzeXN0ZW0gaXMgcHJldmVudGVkIGZyb20gc2xlZXBpbmcgYnkgcHJvZ3JhbXMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaW5oaWJpdGlvbmluZGljYXRvckBtb255eGllLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiSW5oaWJpdGlvbiBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5oaWJpdGlvbmluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tb255eGllL2luaGliaXRpb25pbmRpY2F0b3IiLAogICJ1dWlkIjogImluaGliaXRpb25pbmRpY2F0b3JAbW9ueXhpZS5naXRodWIuaW8iLAogICJ2ZXJzaW9uIjogMwp9"}
+    "45": {"version": "4", "sha256": "1j9w1qcxrlfl68k0lar23kfrnzm1s8a6n35bm8ixqz40ya7zi9dq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoZSBzeXN0ZW0gaXMgcHJldmVudGVkIGZyb20gc2xlZXBpbmcgYnkgcHJvZ3JhbXMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaW5oaWJpdGlvbmluZGljYXRvckBtb255eGllLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiSW5oaWJpdGlvbiBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5oaWJpdGlvbmluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbW9ueXhpZS9pbmhpYml0aW9uaW5kaWNhdG9yIiwKICAidXVpZCI6ICJpbmhpYml0aW9uaW5kaWNhdG9yQG1vbnl4aWUuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQKfQ=="},
+    "46": {"version": "4", "sha256": "1j9w1qcxrlfl68k0lar23kfrnzm1s8a6n35bm8ixqz40ya7zi9dq", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoZSBzeXN0ZW0gaXMgcHJldmVudGVkIGZyb20gc2xlZXBpbmcgYnkgcHJvZ3JhbXMuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiaW5oaWJpdGlvbmluZGljYXRvckBtb255eGllLmdpdGh1Yi5pbyIsCiAgIm5hbWUiOiAiSW5oaWJpdGlvbiBJbmRpY2F0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuaW5oaWJpdGlvbmluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbW9ueXhpZS9pbmhpYml0aW9uaW5kaWNhdG9yIiwKICAidXVpZCI6ICJpbmhpYml0aW9uaW5kaWNhdG9yQG1vbnl4aWUuZ2l0aHViLmlvIiwKICAidmVyc2lvbiI6IDQKfQ=="}
   }}
-, {"uuid": "blurt@quantiusbenignus.local", "name": "Blurt", "pname": "blurt", "description": "Input text from speech anywhere with the middle mouse button.\n\nHigh-quality offline (multilingual) speech recognition based on whisper.cpp\nSpeech is recorded on a key combination, then transcribed (almost instantly) and sent to the clipboard when (adjustable) silence is detected (indicated on top bar).\nThe back-end tool wsi and whisper.cpp must be both preinstalled. \nFull setup instructions at https://github.com/QuantiusBenignus/blurt", "link": "https://extensions.gnome.org/extension/6742/blurt/", "shell_version_map": {
-    "42": {"version": "2", "sha256": "0d844a9vj9hr7sv4ipylha3j2nnhjvw9gm9zyk371xa2sdjd3kph", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IHRleHQgYW55d2hlcmUgZnJvbSBzcGVlY2ggd2l0aCB0aGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiIsCiAgIm5hbWUiOiAiQmx1cnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1cnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9RdWFudGl1c0JlbmlnbnVzL2JsdXJ0IiwKICAidXVpZCI6ICJibHVydEBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDIKfQ=="},
-    "43": {"version": "2", "sha256": "0d844a9vj9hr7sv4ipylha3j2nnhjvw9gm9zyk371xa2sdjd3kph", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IHRleHQgYW55d2hlcmUgZnJvbSBzcGVlY2ggd2l0aCB0aGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiIsCiAgIm5hbWUiOiAiQmx1cnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1cnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9RdWFudGl1c0JlbmlnbnVzL2JsdXJ0IiwKICAidXVpZCI6ICJibHVydEBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDIKfQ=="},
-    "44": {"version": "2", "sha256": "0d844a9vj9hr7sv4ipylha3j2nnhjvw9gm9zyk371xa2sdjd3kph", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IHRleHQgYW55d2hlcmUgZnJvbSBzcGVlY2ggd2l0aCB0aGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiIsCiAgIm5hbWUiOiAiQmx1cnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1cnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9RdWFudGl1c0JlbmlnbnVzL2JsdXJ0IiwKICAidXVpZCI6ICJibHVydEBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDIKfQ=="},
+, {"uuid": "blurt@quantiusbenignus.local", "name": "Blurt", "pname": "blurt", "description": "Accurate, multilingual offline speech recognition in GNOME using whisper.cpp. \nInput text from speech anywhere with the middle mouse button or CTRL+V. \nFor a leaner tool working across all desktop environments, check also BlahST at https://github.com/QuantiusBenignus/blahst.", "link": "https://extensions.gnome.org/extension/6742/blurt/", "shell_version_map": {
+    "42": {"version": "6", "sha256": "0vlkg847fsqpfgkgz47w0cf9hmj6bhgb1pv7f7kgq7ahyrarg949", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IHRleHQgYW55d2hlcmUgZnJvbSBzcGVlY2ggd2l0aCB0aGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiIsCiAgIm5hbWUiOiAiQmx1cnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1cnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9RdWFudGl1c0JlbmlnbnVzL2JsdXJ0IiwKICAidXVpZCI6ICJibHVydEBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDYKfQ=="},
+    "43": {"version": "6", "sha256": "0vlkg847fsqpfgkgz47w0cf9hmj6bhgb1pv7f7kgq7ahyrarg949", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IHRleHQgYW55d2hlcmUgZnJvbSBzcGVlY2ggd2l0aCB0aGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiIsCiAgIm5hbWUiOiAiQmx1cnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1cnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9RdWFudGl1c0JlbmlnbnVzL2JsdXJ0IiwKICAidXVpZCI6ICJibHVydEBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDYKfQ=="},
+    "44": {"version": "6", "sha256": "0vlkg847fsqpfgkgz47w0cf9hmj6bhgb1pv7f7kgq7ahyrarg949", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IHRleHQgYW55d2hlcmUgZnJvbSBzcGVlY2ggd2l0aCB0aGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiIsCiAgIm5hbWUiOiAiQmx1cnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1cnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIsCiAgICAiNDQiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9RdWFudGl1c0JlbmlnbnVzL2JsdXJ0IiwKICAidXVpZCI6ICJibHVydEBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDYKfQ=="},
     "45": {"version": "5", "sha256": "10ajsindzad9azjfipnq2hzm2s5xliivkvxc9xckxv4hwhi4haks", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIklucHV0IHRleHQgZnJvbSBzcGVlY2ggYW55d2hlcmUgd2l0aCB0aGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiIsCiAgIm5hbWUiOiAiQmx1cnQiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuYmx1cnQiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vUXVhbnRpdXNCZW5pZ251cy9ibHVydCIsCiAgInV1aWQiOiAiYmx1cnRAcXVhbnRpdXNiZW5pZ251cy5sb2NhbCIsCiAgInZlcnNpb24iOiA1Cn0="}
   }}
-, {"uuid": "luminus-shell@dikasp.gitlab", "name": "Luminus Shell", "pname": "luminus-shell", "description": "Brings full light style integration into default gnome-shell.", "link": "https://extensions.gnome.org/extension/6744/luminus-shell/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "05qkb9ycrgbcf5iy71x6n3zf56wmx1iib101f5h307ig3a4mnlc1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBmdWxsIGxpZ2h0IHN0eWxlIGludGVncmF0aW9uIGludG8gZGVmYXVsdCBnbm9tZS1zaGVsbC4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImRpa2FzcCIKICB9LAogICJuYW1lIjogIkx1bWludXMgU2hlbGwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9sdW1pbnVzLXByb2plY3QiLAogICJ1dWlkIjogImx1bWludXMtc2hlbGxAZGlrYXNwLmdpdGxhYiIsCiAgInZlcnNpb24iOiAyLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDUuMiIKfQ=="}
+, {"uuid": "luminus-shell@dikasp.gitlab", "name": "Luminus Shell", "pname": "luminus-shell", "description": "Brings light style integration into default gnome shell (shell only).", "link": "https://extensions.gnome.org/extension/6744/luminus-shell/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "05qkb9ycrgbcf5iy71x6n3zf56wmx1iib101f5h307ig3a4mnlc1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBmdWxsIGxpZ2h0IHN0eWxlIGludGVncmF0aW9uIGludG8gZGVmYXVsdCBnbm9tZS1zaGVsbC4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImRpa2FzcCIKICB9LAogICJuYW1lIjogIkx1bWludXMgU2hlbGwiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9sdW1pbnVzLXByb2plY3QiLAogICJ1dWlkIjogImx1bWludXMtc2hlbGxAZGlrYXNwLmdpdGxhYiIsCiAgInZlcnNpb24iOiAyLAogICJ2ZXJzaW9uLW5hbWUiOiAiNDUuMiIKfQ=="},
+    "46": {"version": "4", "sha256": "0yip0kbhqg41r9k514imfmqhlzhfx1fxsq65wz3p9i0gy6rwypfg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBsaWdodCBzdHlsZSBpbnRlZ3JhdGlvbiBpbnRvIGRlZmF1bHQgZ25vbWUgc2hlbGwgKHNoZWxsIG9ubHkpLiIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAiZGlrYXNwIgogIH0sCiAgIm5hbWUiOiAiTHVtaW51cyBTaGVsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9kaWthc2V0eWFwcmF5b2dpL2x1bWludXMtcHJvamVjdCIsCiAgInV1aWQiOiAibHVtaW51cy1zaGVsbEBkaWthc3AuZ2l0bGFiIiwKICAidmVyc2lvbiI6IDQsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4yIgp9"}
   }}
-, {"uuid": "luminus-shell-y@dikasp.gitlab", "name": "Luminus Shell Y", "pname": "luminus-shell-y", "description": "Brings full light style integration into Blur my Shell extension.", "link": "https://extensions.gnome.org/extension/6747/luminus-shell-y/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "16wgh92pn6i94hcxykyy09km75xk6mmnsvbr0c571mhad928a5b2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBmdWxsIGxpZ2h0IHN0eWxlIGludGVncmF0aW9uIGludG8gQmx1ciBteSBTaGVsbCBleHRlbnNpb24uIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJkaWthc3AiCiAgfSwKICAibmFtZSI6ICJMdW1pbnVzIFNoZWxsIFkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9sdW1pbnVzLXByb2plY3QiLAogICJ1dWlkIjogImx1bWludXMtc2hlbGwteUBkaWthc3AuZ2l0bGFiIiwKICAidmVyc2lvbiI6IDIsCiAgInZlcnNpb24tbmFtZSI6ICI0NS4yIgp9"}
+, {"uuid": "luminus-shell-y@dikasp.gitlab", "name": "Luminus Shell Y", "pname": "luminus-shell-y", "description": "Brings light style integration into Blur my Shell extension (shell only).", "link": "https://extensions.gnome.org/extension/6747/luminus-shell-y/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "16wgh92pn6i94hcxykyy09km75xk6mmnsvbr0c571mhad928a5b2", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBmdWxsIGxpZ2h0IHN0eWxlIGludGVncmF0aW9uIGludG8gQmx1ciBteSBTaGVsbCBleHRlbnNpb24uIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJkaWthc3AiCiAgfSwKICAibmFtZSI6ICJMdW1pbnVzIFNoZWxsIFkiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9sdW1pbnVzLXByb2plY3QiLAogICJ1dWlkIjogImx1bWludXMtc2hlbGwteUBkaWthc3AuZ2l0bGFiIiwKICAidmVyc2lvbiI6IDIsCiAgInZlcnNpb24tbmFtZSI6ICI0NS4yIgp9"},
+    "46": {"version": "3", "sha256": "09l7sflp40q67ms9x57g230mjy9ndqbkbmd4bb2iybk5r0ii2h2d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBsaWdodCBzdHlsZSBpbnRlZ3JhdGlvbiBpbnRvIEJsdXIgbXkgU2hlbGwgZXh0ZW5zaW9uIChzaGVsbCBvbmx5KS4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImRpa2FzcCIKICB9LAogICJuYW1lIjogIkx1bWludXMgU2hlbGwgWSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9kaWthc2V0eWFwcmF5b2dpL2x1bWludXMtcHJvamVjdCIsCiAgInV1aWQiOiAibHVtaW51cy1zaGVsbC15QGRpa2FzcC5naXRsYWIiLAogICJ2ZXJzaW9uIjogMywKICAidmVyc2lvbi1uYW1lIjogIjQ2LjIiCn0="}
   }}
-, {"uuid": "luminus-desktop@dikasp.gitlab", "name": "Luminus Desktop", "pname": "luminus-desktop", "description": "Brings global light mode integration into gnome-shell and GTK apps.", "link": "https://extensions.gnome.org/extension/6750/luminus-desktop/", "shell_version_map": {
-    "45": {"version": "3", "sha256": "1ai9rzr0lx8myy6cqfsm4cck5l1v5yq8fwfil0rawpnzlbr6rmgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBnbG9iYWwgZnVsbCBsaWdodCBzdHlsZSBpbnRlZ3JhdGlvbiBpbnRvIGdub21lLXNoZWxsIGFuZCBHVEsgYXBwcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImRpa2FzcCIKICB9LAogICJuYW1lIjogIkx1bWludXMgRGVza3RvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9kaWthc2V0eWFwcmF5b2dpL2x1bWludXMtcHJvamVjdCIsCiAgInV1aWQiOiAibHVtaW51cy1kZXNrdG9wQGRpa2FzcC5naXRsYWIiLAogICJ2ZXJzaW9uIjogMywKICAidmVyc2lvbi1uYW1lIjogIjQ1LjIiCn0="}
+, {"uuid": "luminus-desktop@dikasp.gitlab", "name": "Luminus Desktop", "pname": "luminus-desktop", "description": "Brings global light style integration into gnome shell and GTK apps.\n\nrelease announcement & wallpaper download: https://www.buymeacoffee.com/dikasp/luminus-desktop-v46-released", "link": "https://extensions.gnome.org/extension/6750/luminus-desktop/", "shell_version_map": {
+    "45": {"version": "3", "sha256": "1ai9rzr0lx8myy6cqfsm4cck5l1v5yq8fwfil0rawpnzlbr6rmgk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBnbG9iYWwgZnVsbCBsaWdodCBzdHlsZSBpbnRlZ3JhdGlvbiBpbnRvIGdub21lLXNoZWxsIGFuZCBHVEsgYXBwcy4iLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImRpa2FzcCIKICB9LAogICJuYW1lIjogIkx1bWludXMgRGVza3RvcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9kaWthc2V0eWFwcmF5b2dpL2x1bWludXMtcHJvamVjdCIsCiAgInV1aWQiOiAibHVtaW51cy1kZXNrdG9wQGRpa2FzcC5naXRsYWIiLAogICJ2ZXJzaW9uIjogMywKICAidmVyc2lvbi1uYW1lIjogIjQ1LjIiCn0="},
+    "46": {"version": "5", "sha256": "1v4kb8qrrjf4ganp698wc2pd03n8gy4mpccy8443icnl93xi4qb5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkJyaW5ncyBnbG9iYWwgbGlnaHQgc3R5bGUgaW50ZWdyYXRpb24gaW50byBnbm9tZSBzaGVsbCBhbmQgR1RLIGFwcHMuIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJkaWthc3AiCiAgfSwKICAibmFtZSI6ICJMdW1pbnVzIERlc2t0b3AiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vZGlrYXNldHlhcHJheW9naS9sdW1pbnVzLXByb2plY3QiLAogICJ1dWlkIjogImx1bWludXMtZGVza3RvcEBkaWthc3AuZ2l0bGFiIiwKICAidmVyc2lvbiI6IDUsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4yIgp9"}
   }}
 , {"uuid": "slacker@hedgie.tech", "name": "Slacker", "pname": "slacker", "description": "Improve Slack web or pwa notifications", "link": "https://extensions.gnome.org/extension/6756/slacker/", "shell_version_map": {
     "45": {"version": "1", "sha256": "1kyfdrxfiwnqjvjjsvyvpsd64dlcqvl685add8zawb46xmmbigz0", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkltcHJvdmUgU2xhY2sgd2ViIG9yIHB3YSBub3RpZmljYXRpb25zIiwKICAibmFtZSI6ICJTbGFja2VyIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnNsYWNrZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaGVkZ2llaW5zb2Nrcy9nbm9tZS1leHRlbnNpb24tc2xhY2tlciIsCiAgInV1aWQiOiAic2xhY2tlckBoZWRnaWUudGVjaCIsCiAgInZlcnNpb24iOiAxCn0="}
   }}
 , {"uuid": "mypubip@snirt", "name": "MyPubIP", "pname": "mypubip", "description": "A simple extension that let the user to view and copy the public IPv4 and IPv6 address, by using ipify.org services.", "link": "https://extensions.gnome.org/extension/6765/mypubip/", "shell_version_map": {
-    "45": {"version": "4", "sha256": "0rn93gvq94md34l36y11lrccxj7hpi8v9vidaw3d70hj00f7s3la", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGV4dGVuc2lvbiB0aGF0IGxldCB0aGUgdXNlciB0byB2aWV3IGFuZCBjb3B5IHRoZSBwdWJsaWMgSVB2NCBhbmQgSVB2NiBhZGRyZXNzLCBieSB1c2luZyBpcGlmeS5vcmcgc2VydmljZXMuIiwKICAibmFtZSI6ICJNeVB1YklQIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NuaXJ0L2dub21lLXNoZWxsLWV4dGVuc2lvbi1teXB1YmlwIiwKICAidXVpZCI6ICJteXB1YmlwQHNuaXJ0IiwKICAidmVyc2lvbiI6IDQKfQ=="}
+    "45": {"version": "6", "sha256": "153q4y47xkxga06qx9lx06nknbc8d3ylr7dkywwx3062gqn6zjfy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGV4dGVuc2lvbiB0aGF0IGxldCB0aGUgdXNlciB0byB2aWV3IGFuZCBjb3B5IHRoZSBwdWJsaWMgSVB2NCBhbmQgSVB2NiBhZGRyZXNzLCBieSB1c2luZyBpcGlmeS5vcmcgc2VydmljZXMuIiwKICAibmFtZSI6ICJNeVB1YklQIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zbmlydC9nbm9tZS1zaGVsbC1leHRlbnNpb24tbXlwdWJpcCIsCiAgInV1aWQiOiAibXlwdWJpcEBzbmlydCIsCiAgInZlcnNpb24iOiA2Cn0="},
+    "46": {"version": "6", "sha256": "153q4y47xkxga06qx9lx06nknbc8d3ylr7dkywwx3062gqn6zjfy", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIGV4dGVuc2lvbiB0aGF0IGxldCB0aGUgdXNlciB0byB2aWV3IGFuZCBjb3B5IHRoZSBwdWJsaWMgSVB2NCBhbmQgSVB2NiBhZGRyZXNzLCBieSB1c2luZyBpcGlmeS5vcmcgc2VydmljZXMuIiwKICAibmFtZSI6ICJNeVB1YklQIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zbmlydC9nbm9tZS1zaGVsbC1leHRlbnNpb24tbXlwdWJpcCIsCiAgInV1aWQiOiAibXlwdWJpcEBzbmlydCIsCiAgInZlcnNpb24iOiA2Cn0="}
   }}
 , {"uuid": "lomotion@lorens.com", "name": "Lomotion", "pname": "lomotion", "description": "Lomotion extension lets you switch and manage Gnome's workspaces seamlessly\n\nHow ?\n\t- Switch to the previous workspace with[CapsLock + A] and the next with [CapsLock + S]\n\t- Move the current window to the previous workspace with [CapsLock + D] or the next with [CapsLock + F]\n\t- Switch between windows in the current workspace [CapsLock + E]\n\t- Show workspaces overview hit [CapsLock] once\n\t- Show applications hit [CapsLock] twice\n\nWhy ?!\n\t- One-handed control, manage your workspaces with just one hand, boosting your efficiency and focus.\n\t- Enjoy immersive fullscreen applications without worrying about switching workspaces.\n\t- intutive, simple and fast.\n\nTip\n\t- For applications with tabs like Visual Studio Code, web browsers, and many others, you can use keyboard shortcuts to switch between tabs, you can set switch to previous tab [CapsLock + Q] and the next with [CapsLock + W]", "link": "https://extensions.gnome.org/extension/6768/lomotion/", "shell_version_map": {
     "45": {"version": "1", "sha256": "0vgpfgl8rycc8wklaih53sl5fpc7ybic1jhfj7na2cnya5f9k1x8", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvbW90aW9uIGV4dGVuc2lvbiBsZXRzIHlvdSBzd2l0Y2ggYW5kIG1hbmFnZSBHbm9tZSdzIHdvcmtzcGFjZXMgc2VhbWxlc3NseVxuXG5Ib3cgP1xuXHQtIFN3aXRjaCB0byB0aGUgcHJldmlvdXMgd29ya3NwYWNlIHdpdGhbQ2Fwc0xvY2sgKyBBXSBhbmQgdGhlIG5leHQgd2l0aCBbQ2Fwc0xvY2sgKyBTXVxuXHQtIE1vdmUgdGhlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBwcmV2aW91cyB3b3Jrc3BhY2Ugd2l0aCBbQ2Fwc0xvY2sgKyBEXSBvciB0aGUgbmV4dCB3aXRoIFtDYXBzTG9jayArIEZdXG5cdC0gU3dpdGNoIGJldHdlZW4gd2luZG93cyBpbiB0aGUgY3VycmVudCB3b3Jrc3BhY2UgW0NhcHNMb2NrICsgRV1cblx0LSBTaG93IHdvcmtzcGFjZXMgb3ZlcnZpZXcgaGl0IFtDYXBzTG9ja10gb25jZVxuXHQtIFNob3cgYXBwbGljYXRpb25zIGhpdCBbQ2Fwc0xvY2tdIHR3aWNlXG5cbldoeSA/IVxuXHQtIE9uZS1oYW5kZWQgY29udHJvbCwgbWFuYWdlIHlvdXIgd29ya3NwYWNlcyB3aXRoIGp1c3Qgb25lIGhhbmQsIGJvb3N0aW5nIHlvdXIgZWZmaWNpZW5jeSBhbmQgZm9jdXMuXG5cdC0gRW5qb3kgaW1tZXJzaXZlIGZ1bGxzY3JlZW4gYXBwbGljYXRpb25zIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgc3dpdGNoaW5nIHdvcmtzcGFjZXMuXG5cdC0gaW50dXRpdmUsIHNpbXBsZSBhbmQgZmFzdC5cblxuVGlwXG5cdC0gRm9yIGFwcGxpY2F0aW9ucyB3aXRoIHRhYnMgbGlrZSBWaXN1YWwgU3R1ZGlvIENvZGUsIHdlYiBicm93c2VycywgYW5kIG1hbnkgb3RoZXJzLCB5b3UgY2FuIHVzZSBrZXlib2FyZCBzaG9ydGN1dHMgdG8gc3dpdGNoIGJldHdlZW4gdGFicywgeW91IGNhbiBzZXQgc3dpdGNoIHRvIHByZXZpb3VzIHRhYiBbQ2Fwc0xvY2sgKyBRXSBhbmQgdGhlIG5leHQgd2l0aCBbQ2Fwc0xvY2sgKyBXXSIsCiAgImRvbmF0aW9ucyI6IHsKICAgICJidXltZWFjb2ZmZWUiOiAibG9yZW5zIgogIH0sCiAgIm5hbWUiOiAiTG9tb3Rpb24iLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbG9yZW5zLW9zbWFuLWRldi9sb21vdGlvbiIsCiAgInV1aWQiOiAibG9tb3Rpb25AbG9yZW5zLmNvbSIsCiAgInZlcnNpb24iOiAxLAogICJ2ZXJzaW9uLW5hbWUiOiAiMSIKfQ=="}
   }}
 , {"uuid": "HideItems@fablevi.github.io", "name": "Hide Items", "pname": "hide-items", "description": "Hide everything on the right box exept this button and Settings window", "link": "https://extensions.gnome.org/extension/6771/hide-items/", "shell_version_map": {
-    "45": {"version": "6", "sha256": "1ckl0g1w1f8fzqciifc91a474n1vncdvdbxjasam9621l1k6mz6w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgZXZlcnl0aGluZyBvbiB0aGUgcmlnaHQgYm94IGV4ZXB0IHRoaXMgYnV0dG9uIGFuZCBTZXR0aW5ncyB3aW5kb3ciLAogICJleHRlbnNpb24taWQiOiAiSGlkZUl0ZW1zIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiSGlkZUl0ZW1zIiwKICAibmFtZSI6ICJIaWRlIEl0ZW1zIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkhpZGVJdGVtcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFibGV2aS9IaWRlSXRlbXMiLAogICJ1dWlkIjogIkhpZGVJdGVtc0BmYWJsZXZpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA2Cn0="}
+    "45": {"version": "7", "sha256": "1rb2h4lnanv5rvxp3kagn6x5zsqd13mifmvravhhzcmzflph6lrl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgZXZlcnl0aGluZyBvbiB0aGUgcmlnaHQgYm94IGV4ZXB0IHRoaXMgYnV0dG9uIGFuZCBTZXR0aW5ncyB3aW5kb3ciLAogICJleHRlbnNpb24taWQiOiAiSGlkZUl0ZW1zIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiSGlkZUl0ZW1zIiwKICAibmFtZSI6ICJIaWRlIEl0ZW1zIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkhpZGVJdGVtcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFibGV2aS9IaWRlSXRlbXMiLAogICJ1dWlkIjogIkhpZGVJdGVtc0BmYWJsZXZpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA3Cn0="},
+    "46": {"version": "7", "sha256": "1rb2h4lnanv5rvxp3kagn6x5zsqd13mifmvravhhzcmzflph6lrl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkhpZGUgZXZlcnl0aGluZyBvbiB0aGUgcmlnaHQgYm94IGV4ZXB0IHRoaXMgYnV0dG9uIGFuZCBTZXR0aW5ncyB3aW5kb3ciLAogICJleHRlbnNpb24taWQiOiAiSGlkZUl0ZW1zIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiSGlkZUl0ZW1zIiwKICAibmFtZSI6ICJIaWRlIEl0ZW1zIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLkhpZGVJdGVtcyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFibGV2aS9IaWRlSXRlbXMiLAogICJ1dWlkIjogIkhpZGVJdGVtc0BmYWJsZXZpLmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiA3Cn0="}
   }}
 , {"uuid": "signalshell@github.com.howbea", "name": "Signal Shell", "pname": "signal-shell", "description": "Load -dark, -light and -high-contrast stylesheets from ~/.config/gnome-shell", "link": "https://extensions.gnome.org/extension/6774/signal-shell/", "shell_version_map": {
     "40": {"version": "4", "sha256": "1pf770s5zvkr2fzq4jc45rlixbxqnf6gmxfpnd0dfwlssckhlnag", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkxvYWQgLWRhcmssIC1saWdodCBhbmQgLWhpZ2gtY29udHJhc3Qgc3R5bGVzaGVldHMgZnJvbSB+Ly5jb25maWcvZ25vbWUtc2hlbGwiLAogICJuYW1lIjogIlNpZ25hbCBTaGVsbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5zaWduYWxzaGVsbCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQxIiwKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vaG93YmVhL1NpZ25hbC1TaGVsbCIsCiAgInV1aWQiOiAic2lnbmFsc2hlbGxAZ2l0aHViLmNvbS5ob3diZWEiLAogICJ2ZXJzaW9uIjogNAp9"},
@@ -6601,24 +6898,112 @@
 , {"uuid": "Airpod-Battery-Monitor@maniacx.github.com", "name": "Airpod Battery Monitor", "pname": "airpod-battery-monitor", "description": "A Gnome extension for monitoring battery level of AirPods and Beats Bluetooth headset\n\nNote: This extension is not compatible with Bluetooth configurations in BR/EDR-only mode. Dual mode is required. Please refer to the Readme documentation for more information.\n\nhttps://maniacx.github.io/Airpod-Battery-Monitor/", "link": "https://extensions.gnome.org/extension/6778/airpod-battery-monitor/", "shell_version_map": {
     "43": {"version": "9", "sha256": "00ypq3n2hfx0qf5ggv1fmx19kijyla771jy0gwcdm77nzwhs5y3r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZvciBtb25pdG9yaW5nIGJhdHRlcnkgbGV2ZWwgb2YgQWlyUG9kcyBhbmQgQmVhdHMgQmx1ZXRvb3RoIGhlYWRzZXRcblxuTm90ZTogVGhpcyBleHRlbnNpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBCbHVldG9vdGggY29uZmlndXJhdGlvbnMgaW4gQlIvRURSLW9ubHkgbW9kZS4gRHVhbCBtb2RlIGlzIHJlcXVpcmVkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFJlYWRtZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5odHRwczovL21hbmlhY3guZ2l0aHViLmlvL0FpcnBvZC1CYXR0ZXJ5LU1vbml0b3IvIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiQWlycG9kLUJhdHRlcnktTW9uaXRvckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkFpcnBvZCBCYXR0ZXJ5IE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuQWlycG9kLUJhdHRlcnktTW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9BaXJwb2QtQmF0dGVyeS1Nb25pdG9yIiwKICAidXVpZCI6ICJBaXJwb2QtQmF0dGVyeS1Nb25pdG9yQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA5Cn0="},
     "44": {"version": "9", "sha256": "00ypq3n2hfx0qf5ggv1fmx19kijyla771jy0gwcdm77nzwhs5y3r", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZvciBtb25pdG9yaW5nIGJhdHRlcnkgbGV2ZWwgb2YgQWlyUG9kcyBhbmQgQmVhdHMgQmx1ZXRvb3RoIGhlYWRzZXRcblxuTm90ZTogVGhpcyBleHRlbnNpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBCbHVldG9vdGggY29uZmlndXJhdGlvbnMgaW4gQlIvRURSLW9ubHkgbW9kZS4gRHVhbCBtb2RlIGlzIHJlcXVpcmVkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFJlYWRtZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5odHRwczovL21hbmlhY3guZ2l0aHViLmlvL0FpcnBvZC1CYXR0ZXJ5LU1vbml0b3IvIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiQWlycG9kLUJhdHRlcnktTW9uaXRvckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkFpcnBvZCBCYXR0ZXJ5IE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuQWlycG9kLUJhdHRlcnktTW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9BaXJwb2QtQmF0dGVyeS1Nb25pdG9yIiwKICAidXVpZCI6ICJBaXJwb2QtQmF0dGVyeS1Nb25pdG9yQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA5Cn0="},
-    "45": {"version": "10", "sha256": "04bfpwhvkz55yilaw96dbkppn4i0h08x7v3wa4wplmhdlpslrah1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZvciBtb25pdG9yaW5nIGJhdHRlcnkgbGV2ZWwgb2YgQWlyUG9kcyBhbmQgQmVhdHMgQmx1ZXRvb3RoIGhlYWRzZXRcblxuTm90ZTogVGhpcyBleHRlbnNpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBCbHVldG9vdGggY29uZmlndXJhdGlvbnMgaW4gQlIvRURSLW9ubHkgbW9kZS4gRHVhbCBtb2RlIGlzIHJlcXVpcmVkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFJlYWRtZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5odHRwczovL21hbmlhY3guZ2l0aHViLmlvL0FpcnBvZC1CYXR0ZXJ5LU1vbml0b3IvIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiQWlycG9kLUJhdHRlcnktTW9uaXRvckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkFpcnBvZCBCYXR0ZXJ5IE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuQWlycG9kLUJhdHRlcnktTW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9BaXJwb2QtQmF0dGVyeS1Nb25pdG9yIiwKICAidXVpZCI6ICJBaXJwb2QtQmF0dGVyeS1Nb25pdG9yQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"}
+    "45": {"version": "10", "sha256": "04bfpwhvkz55yilaw96dbkppn4i0h08x7v3wa4wplmhdlpslrah1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZvciBtb25pdG9yaW5nIGJhdHRlcnkgbGV2ZWwgb2YgQWlyUG9kcyBhbmQgQmVhdHMgQmx1ZXRvb3RoIGhlYWRzZXRcblxuTm90ZTogVGhpcyBleHRlbnNpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBCbHVldG9vdGggY29uZmlndXJhdGlvbnMgaW4gQlIvRURSLW9ubHkgbW9kZS4gRHVhbCBtb2RlIGlzIHJlcXVpcmVkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFJlYWRtZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5odHRwczovL21hbmlhY3guZ2l0aHViLmlvL0FpcnBvZC1CYXR0ZXJ5LU1vbml0b3IvIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiQWlycG9kLUJhdHRlcnktTW9uaXRvckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkFpcnBvZCBCYXR0ZXJ5IE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuQWlycG9kLUJhdHRlcnktTW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9BaXJwb2QtQmF0dGVyeS1Nb25pdG9yIiwKICAidXVpZCI6ICJBaXJwb2QtQmF0dGVyeS1Nb25pdG9yQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"},
+    "46": {"version": "10", "sha256": "04bfpwhvkz55yilaw96dbkppn4i0h08x7v3wa4wplmhdlpslrah1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR25vbWUgZXh0ZW5zaW9uIGZvciBtb25pdG9yaW5nIGJhdHRlcnkgbGV2ZWwgb2YgQWlyUG9kcyBhbmQgQmVhdHMgQmx1ZXRvb3RoIGhlYWRzZXRcblxuTm90ZTogVGhpcyBleHRlbnNpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCBCbHVldG9vdGggY29uZmlndXJhdGlvbnMgaW4gQlIvRURSLW9ubHkgbW9kZS4gRHVhbCBtb2RlIGlzIHJlcXVpcmVkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFJlYWRtZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5odHRwczovL21hbmlhY3guZ2l0aHViLmlvL0FpcnBvZC1CYXR0ZXJ5LU1vbml0b3IvIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiQWlycG9kLUJhdHRlcnktTW9uaXRvckBtYW5pYWN4LmdpdGh1Yi5jb20iLAogICJuYW1lIjogIkFpcnBvZCBCYXR0ZXJ5IE1vbml0b3IiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuQWlycG9kLUJhdHRlcnktTW9uaXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vbWFuaWFjeC9BaXJwb2QtQmF0dGVyeS1Nb25pdG9yIiwKICAidXVpZCI6ICJBaXJwb2QtQmF0dGVyeS1Nb25pdG9yQG1hbmlhY3guZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAxMAp9"}
   }}
-, {"uuid": "night-light-slider-updated@vilsbeg.codeberg.org", "name": "Night Light Slider Updated", "pname": "night-light-slider-updated", "description": "Kiyui's Night Light Slider updated for GNOME 45. A GNOME extension to manage the built-in night light temperature. Original implementation: https://codeberg.org/vilsbeg/night-light-slider-updated/", "link": "https://extensions.gnome.org/extension/6781/night-light-slider-updated/", "shell_version_map": {
-    "45": {"version": "9", "sha256": "1c88dzp9k5krd5b4569s9c4aas86djzqwahdif5kaymi7x8cp9rs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIktpeXVpJ3MgTmlnaHQgTGlnaHQgU2xpZGVyIHVwZGF0ZWQgZm9yIEdOT01FIDQ1LiBBIEdOT01FIGV4dGVuc2lvbiB0byBtYW5hZ2UgdGhlIGJ1aWx0LWluIG5pZ2h0IGxpZ2h0IHRlbXBlcmF0dXJlLiBPcmlnaW5hbCBpbXBsZW1lbnRhdGlvbjogaHR0cHM6Ly9jb2RlYmVyZy5vcmcvdmlsc2JlZy9uaWdodC1saWdodC1zbGlkZXItdXBkYXRlZC8iLAogICJuYW1lIjogIk5pZ2h0IExpZ2h0IFNsaWRlciBVcGRhdGVkIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0bGlnaHRzbGlkZXJ1cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vY29kZWJlcmcub3JnL3ZpbHNiZWcvbmlnaHQtbGlnaHQtc2xpZGVyLXVwZGF0ZWQiLAogICJ1dWlkIjogIm5pZ2h0LWxpZ2h0LXNsaWRlci11cGRhdGVkQHZpbHNiZWcuY29kZWJlcmcub3JnIiwKICAidmVyc2lvbiI6IDkKfQ=="}
+, {"uuid": "night-light-slider-updated@vilsbeg.codeberg.org", "name": "Night Light Slider Updated", "pname": "night-light-slider-updated", "description": "Kiyui's Night Light Slider updated for GNOME 45. Provides a slider in the quick settings menu to control the night light temperature. Some nice options can be set in the extension preferences menu. Original implementation: https://codeberg.org/kiyui/gnome-shell-night-light-slider-extension/", "link": "https://extensions.gnome.org/extension/6781/night-light-slider-updated/", "shell_version_map": {
+    "45": {"version": "9", "sha256": "1c88dzp9k5krd5b4569s9c4aas86djzqwahdif5kaymi7x8cp9rs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIktpeXVpJ3MgTmlnaHQgTGlnaHQgU2xpZGVyIHVwZGF0ZWQgZm9yIEdOT01FIDQ1LiBBIEdOT01FIGV4dGVuc2lvbiB0byBtYW5hZ2UgdGhlIGJ1aWx0LWluIG5pZ2h0IGxpZ2h0IHRlbXBlcmF0dXJlLiBPcmlnaW5hbCBpbXBsZW1lbnRhdGlvbjogaHR0cHM6Ly9jb2RlYmVyZy5vcmcvdmlsc2JlZy9uaWdodC1saWdodC1zbGlkZXItdXBkYXRlZC8iLAogICJuYW1lIjogIk5pZ2h0IExpZ2h0IFNsaWRlciBVcGRhdGVkIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0bGlnaHRzbGlkZXJ1cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vY29kZWJlcmcub3JnL3ZpbHNiZWcvbmlnaHQtbGlnaHQtc2xpZGVyLXVwZGF0ZWQiLAogICJ1dWlkIjogIm5pZ2h0LWxpZ2h0LXNsaWRlci11cGRhdGVkQHZpbHNiZWcuY29kZWJlcmcub3JnIiwKICAidmVyc2lvbiI6IDkKfQ=="},
+    "46": {"version": "9", "sha256": "1c88dzp9k5krd5b4569s9c4aas86djzqwahdif5kaymi7x8cp9rs", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIktpeXVpJ3MgTmlnaHQgTGlnaHQgU2xpZGVyIHVwZGF0ZWQgZm9yIEdOT01FIDQ1LiBBIEdOT01FIGV4dGVuc2lvbiB0byBtYW5hZ2UgdGhlIGJ1aWx0LWluIG5pZ2h0IGxpZ2h0IHRlbXBlcmF0dXJlLiBPcmlnaW5hbCBpbXBsZW1lbnRhdGlvbjogaHR0cHM6Ly9jb2RlYmVyZy5vcmcvdmlsc2JlZy9uaWdodC1saWdodC1zbGlkZXItdXBkYXRlZC8iLAogICJuYW1lIjogIk5pZ2h0IExpZ2h0IFNsaWRlciBVcGRhdGVkIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLm5pZ2h0bGlnaHRzbGlkZXJ1cGRhdGVkIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vY29kZWJlcmcub3JnL3ZpbHNiZWcvbmlnaHQtbGlnaHQtc2xpZGVyLXVwZGF0ZWQiLAogICJ1dWlkIjogIm5pZ2h0LWxpZ2h0LXNsaWRlci11cGRhdGVkQHZpbHNiZWcuY29kZWJlcmcub3JnIiwKICAidmVyc2lvbiI6IDkKfQ=="}
   }}
-, {"uuid": "wiggle@mechtifs", "name": "Wiggle", "pname": "wiggle", "description": "Wiggle is a GNOME 45+ port/fix for Jiggle. Wiggle magnifies the cursor when the mouse is moved rapidly.", "link": "https://extensions.gnome.org/extension/6784/wiggle/", "shell_version_map": {
-    "45": {"version": "2", "sha256": "14vi9cd9qm6f6z1krhh6s4l8z0121aayf1jmkgaj6i52i7559cmw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldpZ2dsZSBpcyBhIEdOT01FIFNoZWxsIGV4dGVuc2lvbiB0aGF0IG1hZ25pZmllcyB0aGUgY3Vyc29yIHdoZW4gdGhlIG1vdXNlIGlzIG1vdmVkIHJhcGlkbHkuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZ2dsZSIsCiAgIm5hbWUiOiAiV2lnZ2xlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpZ2dsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tZWNodGlmcy93aWdnbGUiLAogICJ1dWlkIjogIndpZ2dsZUBtZWNodGlmcyIsCiAgInZlcnNpb24iOiAyCn0="}
+, {"uuid": "wiggle@mechtifs", "name": "Wiggle", "pname": "wiggle", "description": "Wiggle is a GNOME 45+ port/fix for the scaling effect from Jiggle with better performance. Wiggle magnifies your cursor when the mouse is moved rapidly.", "link": "https://extensions.gnome.org/extension/6784/wiggle/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "14vi9cd9qm6f6z1krhh6s4l8z0121aayf1jmkgaj6i52i7559cmw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldpZ2dsZSBpcyBhIEdOT01FIFNoZWxsIGV4dGVuc2lvbiB0aGF0IG1hZ25pZmllcyB0aGUgY3Vyc29yIHdoZW4gdGhlIG1vdXNlIGlzIG1vdmVkIHJhcGlkbHkuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZ2dsZSIsCiAgIm5hbWUiOiAiV2lnZ2xlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpZ2dsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tZWNodGlmcy93aWdnbGUiLAogICJ1dWlkIjogIndpZ2dsZUBtZWNodGlmcyIsCiAgInZlcnNpb24iOiAyCn0="},
+    "46": {"version": "3", "sha256": "14gwkx6z9v7ca13qdy1jad64bahqhs7dkrl1c7v4r49qvhkqg5ka", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIldpZ2dsZSBpcyBhIEdOT01FIFNoZWxsIGV4dGVuc2lvbiB0aGF0IG1hZ25pZmllcyB0aGUgY3Vyc29yIHdoZW4gdGhlIG1vdXNlIGlzIG1vdmVkIHJhcGlkbHkuIiwKICAiZ2V0dGV4dC1kb21haW4iOiAiZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXdpZ2dsZSIsCiAgIm5hbWUiOiAiV2lnZ2xlIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLndpZ2dsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tZWNodGlmcy93aWdnbGUiLAogICJ1dWlkIjogIndpZ2dsZUBtZWNodGlmcyIsCiAgInZlcnNpb24iOiAzCn0="}
   }}
-, {"uuid": "favorite-apps@venovar.tr", "name": "Favorite Apps Menu on Top Bar Panel", "pname": "show-favorite-apps", "description": "This extension adds a favorite applications menu panel to top bar", "link": "https://extensions.gnome.org/extension/6787/show-favorite-apps/", "shell_version_map": {
-    "45": {"version": "5", "sha256": "1cg40w8qg419dqividgp95gvl3z2szdpbnv7mzh3vbfknqxk8wvl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZHMgYSBmYXZvcml0ZSBhcHBsaWNhdGlvbnMgcGFuZWwgdG8gdG9wIGJhciIsCiAgIm5hbWUiOiAiRmF2b3JpdGUgQXBwcyBvbiBUb3AgQmFyIFBhbmVsIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnZlbmZhdmFwcCIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmciLAogICJ1dWlkIjogImZhdm9yaXRlLWFwcHNAdmVub3Zhci50ciIsCiAgInZlcnNpb24iOiA1Cn0="}
+, {"uuid": "favorite-apps@venovar.tr", "name": "Favorite Apps Menu on Top Bar Panel", "pname": "show-favorite-apps", "description": "This extension adds a favorite applications menu panel to top bar\n\n\n\nI recommend using with this extension:\nhttps://extensions.gnome.org/extension/6556/task-up/", "link": "https://extensions.gnome.org/extension/6787/show-favorite-apps/", "shell_version_map": {
+    "45": {"version": "7", "sha256": "1jcqmijfzfqhvrkv5agf3hq05kri1nfh1zri0278nmwmk1b9xfhh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgZXh0ZW5zaW9uIGFkZHMgYSBmYXZvcml0ZSBhcHBsaWNhdGlvbnMgbWVudSBwYW5lbCB0byB0b3AgYmFyIiwKICAibmFtZSI6ICJGYXZvcml0ZSBBcHBzIE1lbnUgb24gVG9wIEJhciBQYW5lbCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy52ZW5mYXZhcHAiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnIiwKICAidXVpZCI6ICJmYXZvcml0ZS1hcHBzQHZlbm92YXIudHIiLAogICJ2ZXJzaW9uIjogNwp9"}
   }}
-, {"uuid": "better-end-session-dialog@popov895.ukr.net", "name": "Better End Session Dialog", "pname": "better-end-session-dialog", "description": "Show logout/reboot/shutdown together in the end session dialog", "link": "https://extensions.gnome.org/extension/6796/better-end-session-dialog/", "shell_version_map": {
-    "42": {"version": "5", "sha256": "0gik40cndh35hjjdifz4p04cj74p4k3g2lhvp7q27v19jlzjimxh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZyIsCiAgInV1aWQiOiAiYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZ0Bwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDUKfQ=="},
-    "43": {"version": "5", "sha256": "0gik40cndh35hjjdifz4p04cj74p4k3g2lhvp7q27v19jlzjimxh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZyIsCiAgInV1aWQiOiAiYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZ0Bwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDUKfQ=="},
-    "44": {"version": "5", "sha256": "0gik40cndh35hjjdifz4p04cj74p4k3g2lhvp7q27v19jlzjimxh", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZyIsCiAgInV1aWQiOiAiYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZ0Bwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDUKfQ=="},
-    "45": {"version": "6", "sha256": "03j73jipsf4sldkg98bns2hwydcrx3qvv1pa8d8jn8a5v6fm4vaf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BvcG92ODk1L2JldHRlci1lbmQtc2Vzc2lvbi1kaWFsb2ciLAogICJ1dWlkIjogImJldHRlci1lbmQtc2Vzc2lvbi1kaWFsb2dAcG9wb3Y4OTUudWtyLm5ldCIsCiAgInZlcnNpb24iOiA2Cn0="}
+, {"uuid": "totp@dkosmari.github.com", "name": "TOTP", "pname": "totp", "description": "Generate Time-based One-Time Passwords (TOTP aka OTP) for websites that use Two-Factor Authentication (2FA) like Google, Facebook, Discord, Amazon, Steam, etc.", "link": "https://extensions.gnome.org/extension/6793/totp/", "shell_version_map": {
+    "42": {"version": "26", "sha256": "0nc0wps5m4pa04ykqraimqjpdiw3cc0bl2ya4if3s04d92p2fh3a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdlbmVyYXRlIFRpbWUtYmFzZWQgT25lLVRpbWUgUGFzc3dvcmRzIChUT1RQIGFrYSBPVFApIGZvciB3ZWJzaXRlcyB0aGF0IHVzZSBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uICgyRkEpIGxpa2UgR29vZ2xlLCBGYWNlYm9vaywgRGlzY29yZCwgQW1hem9uLCBTdGVhbSwgZXRjLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVE9UUCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b3RwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGtvc21hcmkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRvdHAiLAogICJ1dWlkIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNgp9"},
+    "43": {"version": "26", "sha256": "0nc0wps5m4pa04ykqraimqjpdiw3cc0bl2ya4if3s04d92p2fh3a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdlbmVyYXRlIFRpbWUtYmFzZWQgT25lLVRpbWUgUGFzc3dvcmRzIChUT1RQIGFrYSBPVFApIGZvciB3ZWJzaXRlcyB0aGF0IHVzZSBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uICgyRkEpIGxpa2UgR29vZ2xlLCBGYWNlYm9vaywgRGlzY29yZCwgQW1hem9uLCBTdGVhbSwgZXRjLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVE9UUCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b3RwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGtvc21hcmkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRvdHAiLAogICJ1dWlkIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNgp9"},
+    "44": {"version": "26", "sha256": "0nc0wps5m4pa04ykqraimqjpdiw3cc0bl2ya4if3s04d92p2fh3a", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdlbmVyYXRlIFRpbWUtYmFzZWQgT25lLVRpbWUgUGFzc3dvcmRzIChUT1RQIGFrYSBPVFApIGZvciB3ZWJzaXRlcyB0aGF0IHVzZSBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uICgyRkEpIGxpa2UgR29vZ2xlLCBGYWNlYm9vaywgRGlzY29yZCwgQW1hem9uLCBTdGVhbSwgZXRjLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVE9UUCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b3RwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGtvc21hcmkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLXRvdHAiLAogICJ1dWlkIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyNgp9"},
+    "45": {"version": "27", "sha256": "1wlpp0b3099pqa49zzhllpanac6c2qa6jf5ki9ics68xhcd92shd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdlbmVyYXRlIFRpbWUtYmFzZWQgT25lLVRpbWUgUGFzc3dvcmRzIChUT1RQIGFrYSBPVFApIGZvciB3ZWJzaXRlcyB0aGF0IHVzZSBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uICgyRkEpIGxpa2UgR29vZ2xlLCBGYWNlYm9vaywgRGlzY29yZCwgQW1hem9uLCBTdGVhbSwgZXRjLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVE9UUCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b3RwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ka29zbWFyaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdG90cCIsCiAgInV1aWQiOiAidG90cEBka29zbWFyaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI3Cn0="},
+    "46": {"version": "27", "sha256": "1wlpp0b3099pqa49zzhllpanac6c2qa6jf5ki9ics68xhcd92shd", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdlbmVyYXRlIFRpbWUtYmFzZWQgT25lLVRpbWUgUGFzc3dvcmRzIChUT1RQIGFrYSBPVFApIGZvciB3ZWJzaXRlcyB0aGF0IHVzZSBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uICgyRkEpIGxpa2UgR29vZ2xlLCBGYWNlYm9vaywgRGlzY29yZCwgQW1hem9uLCBTdGVhbSwgZXRjLiIsCiAgImdldHRleHQtZG9tYWluIjogInRvdHBAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiVE9UUCIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy50b3RwIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ka29zbWFyaS9nbm9tZS1zaGVsbC1leHRlbnNpb24tdG90cCIsCiAgInV1aWQiOiAidG90cEBka29zbWFyaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDI3Cn0="}
   }}
-, {"uuid": "layout-hotkeys@max.post.space.gmail.com", "name": "Layout Hotkeys", "pname": "layout-hotkeys", "description": "Add hotkeys to switch layouts directly via Shift + Alt + [1-9].", "link": "https://extensions.gnome.org/extension/6804/layout-hotkeys/", "shell_version_map": {
-    "45": {"version": "1", "sha256": "1w85nx17ggalvjd1lrj2dkhc1xkmvc1jv45vb2cvxvxpb7c4ji3k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBob3RrZXlzIHRvIHN3aXRjaCBsYXlvdXRzIGRpcmVjdGx5IHZpYSBTaGlmdCArIEFsdCArIFsxLTldLiIsCiAgIm5hbWUiOiAiTGF5b3V0IEhvdGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubGF5b3V0LWhvdGtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTXJEdm9yYWsvbGF5b3V0LWhvdGtleXMiLAogICJ1dWlkIjogImxheW91dC1ob3RrZXlzQG1heC5wb3N0LnNwYWNlLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxCn0="}
+, {"uuid": "better-end-session-dialog@popov895.ukr.net", "name": "Better End Session Dialog", "pname": "better-end-session-dialog", "description": "Show logout/reboot/shutdown together in the end session dialog", "link": "https://extensions.gnome.org/extension/6796/better-end-session-dialog/", "shell_version_map": {
+    "42": {"version": "10", "sha256": "040aji5xnq66mlf3hwabngwzhgmbw1vd4z6agp6r4d55y9ydblcg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZyIsCiAgInV1aWQiOiAiYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZ0Bwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDEwCn0="},
+    "43": {"version": "10", "sha256": "040aji5xnq66mlf3hwabngwzhgmbw1vd4z6agp6r4d55y9ydblcg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZyIsCiAgInV1aWQiOiAiYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZ0Bwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDEwCn0="},
+    "44": {"version": "10", "sha256": "040aji5xnq66mlf3hwabngwzhgmbw1vd4z6agp6r4d55y9ydblcg", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcG9wb3Y4OTUvYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZyIsCiAgInV1aWQiOiAiYmV0dGVyLWVuZC1zZXNzaW9uLWRpYWxvZ0Bwb3Bvdjg5NS51a3IubmV0IiwKICAidmVyc2lvbiI6IDEwCn0="},
+    "45": {"version": "11", "sha256": "1p6yjm5cq8q85m0bsj64xiqwpnn9wp0h5yhanbxrsp0pfsgl691q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bvdjg5NS9iZXR0ZXItZW5kLXNlc3Npb24tZGlhbG9nIiwKICAidXVpZCI6ICJiZXR0ZXItZW5kLXNlc3Npb24tZGlhbG9nQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogMTEKfQ=="},
+    "46": {"version": "11", "sha256": "1p6yjm5cq8q85m0bsj64xiqwpnn9wp0h5yhanbxrsp0pfsgl691q", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgbG9nb3V0L3JlYm9vdC9zaHV0ZG93biB0b2dldGhlciBpbiB0aGUgZW5kIHNlc3Npb24gZGlhbG9nIiwKICAiZG9uYXRpb25zIjogewogICAgImJ1eW1lYWNvZmZlZSI6ICJwb3Bvdjg5NWEiCiAgfSwKICAibmFtZSI6ICJCZXR0ZXIgRW5kIFNlc3Npb24gRGlhbG9nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bvdjg5NS9iZXR0ZXItZW5kLXNlc3Npb24tZGlhbG9nIiwKICAidXVpZCI6ICJiZXR0ZXItZW5kLXNlc3Npb24tZGlhbG9nQHBvcG92ODk1LnVrci5uZXQiLAogICJ2ZXJzaW9uIjogMTEKfQ=="}
+  }}
+, {"uuid": "layout-hotkeys@max.post.space.gmail.com", "name": "Layout Hotkeys", "pname": "layout-hotkeys", "description": "Add hotkeys to switch keyboard layout directly via Shift + Alt + [1-9].", "link": "https://extensions.gnome.org/extension/6804/layout-hotkeys/", "shell_version_map": {
+    "45": {"version": "1", "sha256": "1w85nx17ggalvjd1lrj2dkhc1xkmvc1jv45vb2cvxvxpb7c4ji3k", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBob3RrZXlzIHRvIHN3aXRjaCBsYXlvdXRzIGRpcmVjdGx5IHZpYSBTaGlmdCArIEFsdCArIFsxLTldLiIsCiAgIm5hbWUiOiAiTGF5b3V0IEhvdGtleXMiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMubGF5b3V0LWhvdGtleXMiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTXJEdm9yYWsvbGF5b3V0LWhvdGtleXMiLAogICJ1dWlkIjogImxheW91dC1ob3RrZXlzQG1heC5wb3N0LnNwYWNlLmdtYWlsLmNvbSIsCiAgInZlcnNpb24iOiAxCn0="},
+    "46": {"version": "2", "sha256": "0g40vq4r0p6qkx34nkhixg154rwcjkbdfqcsgcmhb730kdyypbmf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZCBob3RrZXlzIHRvIHN3aXRjaCBrZXlib2FyZCBsYXlvdXQgZGlyZWN0bHkgdmlhIFNoaWZ0ICsgQWx0ICsgWzEtOV0uIiwKICAibmFtZSI6ICJMYXlvdXQgSG90a2V5cyIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5sYXlvdXQtaG90a2V5cyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NckR2b3Jhay9sYXlvdXQtaG90a2V5cyIsCiAgInV1aWQiOiAibGF5b3V0LWhvdGtleXNAbWF4LnBvc3Quc3BhY2UuZ21haWwuY29tIiwKICAidmVyc2lvbiI6IDIsCiAgInZlcnNpb24tbmFtZSI6ICIyLjAiCn0="}
+  }}
+, {"uuid": "system-monitor@gnome-shell-extensions.gcampax.github.com", "name": "System Monitor", "pname": "system-monitor", "description": "Monitor system from the top bar", "link": "https://extensions.gnome.org/extension/6807/system-monitor/", "shell_version_map": {
+    "46": {"version": "2", "sha256": "1dmyisjjmipa5ickr422gk1hbn21b8cilcbabmv9q4pc9d85hc1d", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1vbml0b3Igc3lzdGVtIGZyb20gdGhlIHRvcCBiYXIiLAogICJleHRlbnNpb24taWQiOiAic3lzdGVtLW1vbml0b3IiLAogICJnZXR0ZXh0LWRvbWFpbiI6ICJnbm9tZS1zaGVsbC1leHRlbnNpb24tc3lzdGVtLW1vbml0b3IiLAogICJuYW1lIjogIlN5c3RlbSBNb25pdG9yIiwKICAic2V0dGluZ3Mtc2NoZW1hIjogIm9yZy5nbm9tZS5zaGVsbC5leHRlbnNpb25zLnN5c3RlbS1tb25pdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dub21lLXNoZWxsLWV4dGVuc2lvbnMiLAogICJ1dWlkIjogInN5c3RlbS1tb25pdG9yQGdub21lLXNoZWxsLWV4dGVuc2lvbnMuZ2NhbXBheC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
+  }}
+, {"uuid": "window-thumbnails@G-dH.github.com", "name": "WTMB (Window Thumbnails)", "pname": "wtmb-window-thumbnails", "description": "Allows the creation of window clones for use as Picture-in-Picture (PIP) live thumbnails", "link": "https://extensions.gnome.org/extension/6816/wtmb-window-thumbnails/", "shell_version_map": {
+    "42": {"version": "9", "sha256": "07byw17537lmy073c3vq4pzafbflnd5mm45i5sy82mh61j9i1zsl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgY3JlYXRpb24gb2Ygd2luZG93IGNsb25lcyBmb3IgdXNlIGFzIFBpY3R1cmUtaW4tUGljdHVyZSAoUElQKSBsaXZlIHRodW1ibmFpbHMiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93LXRodW1ibmFpbHMiLAogICJuYW1lIjogIldUTUIgKFdpbmRvdyBUaHVtYm5haWxzKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGh1bWJuYWlscyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvd2luZG93LXRodW1ibmFpbHMiLAogICJ1dWlkIjogIndpbmRvdy10aHVtYm5haWxzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA5LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMyIKfQ=="},
+    "43": {"version": "9", "sha256": "07byw17537lmy073c3vq4pzafbflnd5mm45i5sy82mh61j9i1zsl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgY3JlYXRpb24gb2Ygd2luZG93IGNsb25lcyBmb3IgdXNlIGFzIFBpY3R1cmUtaW4tUGljdHVyZSAoUElQKSBsaXZlIHRodW1ibmFpbHMiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93LXRodW1ibmFpbHMiLAogICJuYW1lIjogIldUTUIgKFdpbmRvdyBUaHVtYm5haWxzKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGh1bWJuYWlscyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvd2luZG93LXRodW1ibmFpbHMiLAogICJ1dWlkIjogIndpbmRvdy10aHVtYm5haWxzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA5LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMyIKfQ=="},
+    "44": {"version": "9", "sha256": "07byw17537lmy073c3vq4pzafbflnd5mm45i5sy82mh61j9i1zsl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgY3JlYXRpb24gb2Ygd2luZG93IGNsb25lcyBmb3IgdXNlIGFzIFBpY3R1cmUtaW4tUGljdHVyZSAoUElQKSBsaXZlIHRodW1ibmFpbHMiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93LXRodW1ibmFpbHMiLAogICJuYW1lIjogIldUTUIgKFdpbmRvdyBUaHVtYm5haWxzKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGh1bWJuYWlscyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ctZEgvd2luZG93LXRodW1ibmFpbHMiLAogICJ1dWlkIjogIndpbmRvdy10aHVtYm5haWxzQEctZEguZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiA5LAogICJ2ZXJzaW9uLW5hbWUiOiAiNDQuMyIKfQ=="},
+    "45": {"version": "8", "sha256": "1wlsblarwcwj2wi78vyhg5myccfyhzxxzxn71qpxj7bxiv8ggw25", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgY3JlYXRpb24gb2Ygd2luZG93IGNsb25lcyBmb3IgdXNlIGFzIFBpY3R1cmUtaW4tUGljdHVyZSAoUElQKSBsaXZlIHRodW1ibmFpbHMiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93LXRodW1ibmFpbHMiLAogICJuYW1lIjogIldUTUIgKFdpbmRvdyBUaHVtYm5haWxzKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGh1bWJuYWlscyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3ctdGh1bWJuYWlscyIsCiAgInV1aWQiOiAid2luZG93LXRodW1ibmFpbHNARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDgsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4zIgp9"},
+    "46": {"version": "8", "sha256": "1wlsblarwcwj2wi78vyhg5myccfyhzxxzxn71qpxj7bxiv8ggw25", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93cyB0aGUgY3JlYXRpb24gb2Ygd2luZG93IGNsb25lcyBmb3IgdXNlIGFzIFBpY3R1cmUtaW4tUGljdHVyZSAoUElQKSBsaXZlIHRodW1ibmFpbHMiLAogICJkb25hdGlvbnMiOiB7CiAgICAiYnV5bWVhY29mZmVlIjogImdlb3JnZGgiCiAgfSwKICAiZ2V0dGV4dC1kb21haW4iOiAid2luZG93LXRodW1ibmFpbHMiLAogICJuYW1lIjogIldUTUIgKFdpbmRvdyBUaHVtYm5haWxzKSIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy53aW5kb3ctdGh1bWJuYWlscyIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vRy1kSC93aW5kb3ctdGh1bWJuYWlscyIsCiAgInV1aWQiOiAid2luZG93LXRodW1ibmFpbHNARy1kSC5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDgsCiAgInZlcnNpb24tbmFtZSI6ICI0Ni4zIgp9"}
+  }}
+, {"uuid": "fancy-tiling@devroamer.zen", "name": "Fancy Tiling", "pname": "fancy-tiling", "description": "FancyZones clone for GNOME", "link": "https://extensions.gnome.org/extension/6822/fancy-tiling/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "0fixwm1dc6hg7gcvnl4k41pqsp27zp6ksflicf9lfr88gqc4bkxj", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImF1dGhvciI6ICJEZXZSb2FtZXIgPGQzdnIwYW0zckBnbWFpbC5jb20+IiwKICAiY29tbWl0IjogIjFjNzVjMTAxNTExNmZjMDAxMDFhM2MxYTcyMzBjY2QwNWE3NzU0OWUiLAogICJkZXNjcmlwdGlvbiI6ICJGYW5jeVpvbmVzIGNsb25lIGZvciBHTk9NRSIsCiAgIm5hbWUiOiAiRmFuY3kgVGlsaW5nIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0RldlJvYW1lci9GYW5jeVRpbGluZyIsCiAgInV1aWQiOiAiZmFuY3ktdGlsaW5nQGRldnJvYW1lci56ZW4iLAogICJ2ZXJzaW9uIjogMgp9"}
+  }}
+, {"uuid": "cloudflarewarpindicator@depscian.com", "name": "Cloudflare WARP Indicator", "pname": "cloudflare-warp-indicator", "description": "Makes using Cloudflare WARP easier ! \nTo start using it you need to install the warp-cli package.\n\nThis extension is not affiliated, funded, or in any way associated with Cloudflare.", "link": "https://extensions.gnome.org/extension/6825/cloudflare-warp-indicator/", "shell_version_map": {
+    "45": {"version": "5", "sha256": "15wg82ill5003ypmfbhx9wwp0lfwyif03aqr0yi76f18vd38ykrz", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIk1ha2VzIHVzaW5nIENsb3VkZmxhcmUgV0FSUCBlYXNpZXIgfCBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBDbG91ZGZsYXJlLiIsCiAgIm5hbWUiOiAiQ2xvdWRmbGFyZSBXQVJQIEluZGljYXRvciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9kZXBzY2lhbi9jbG91ZGZsYXJlLXdhcnAtaW5kaWNhdG9yIiwKICAidXVpZCI6ICJjbG91ZGZsYXJld2FycGluZGljYXRvckBkZXBzY2lhbi5jb20iLAogICJ2ZXJzaW9uIjogNQp9"}
+  }}
+, {"uuid": "202020ruletimer@202020ruletimer.com", "name": "20 20 20 Rule Timer", "pname": "20-20-20-rule-timer", "description": "A GNOME extension timer to remind users to take breaks and reduce eye strain by following the 20'20'20 rule.", "link": "https://extensions.gnome.org/extension/6828/20-20-20-rule-timer/", "shell_version_map": {
+    "40": {"version": "4", "sha256": "0h8lb37ic08727vw0lwk2hwxjnyk93y3l1w1q5i040da180hmpgr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgZXh0ZW5zaW9uIHRpbWVyIHRvIHJlbWluZCB1c2VycyB0byB0YWtlIGJyZWFrcyBhbmQgcmVkdWNlIGV5ZSBzdHJhaW4gYnkgZm9sbG93aW5nIHRoZSAyMCcyMCcyMCBydWxlLiIsCiAgImdldHRleHQtZG9tYWluIjogIjIwMjAyMHJ1bGV0aW1lciIsCiAgIm5hbWUiOiAiMjAgMjAgMjAgUnVsZSBUaW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmlsaXBwb2JlcnRpMjAyMC8yMC0yMC0yMC1ydWxlLXRpbWVyIiwKICAidXVpZCI6ICIyMDIwMjBydWxldGltZXJAMjAyMDIwcnVsZXRpbWVyLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="},
+    "43": {"version": "4", "sha256": "0h8lb37ic08727vw0lwk2hwxjnyk93y3l1w1q5i040da180hmpgr", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgZXh0ZW5zaW9uIHRpbWVyIHRvIHJlbWluZCB1c2VycyB0byB0YWtlIGJyZWFrcyBhbmQgcmVkdWNlIGV5ZSBzdHJhaW4gYnkgZm9sbG93aW5nIHRoZSAyMCcyMCcyMCBydWxlLiIsCiAgImdldHRleHQtZG9tYWluIjogIjIwMjAyMHJ1bGV0aW1lciIsCiAgIm5hbWUiOiAiMjAgMjAgMjAgUnVsZSBUaW1lciIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDAiLAogICAgIjQzIgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmlsaXBwb2JlcnRpMjAyMC8yMC0yMC0yMC1ydWxlLXRpbWVyIiwKICAidXVpZCI6ICIyMDIwMjBydWxldGltZXJAMjAyMDIwcnVsZXRpbWVyLmNvbSIsCiAgInZlcnNpb24iOiA0Cn0="}
+  }}
+, {"uuid": "geminiaiubuntu@arda.com", "name": "Gemini AI for Gnome", "pname": "gemini-ai", "description": "This Add-on is using gemini ai 1.0 pro model for chatting. \n This extensions using thisipcan.cyou for location detection and googleapis.com for gemini model \n also if you are planing to use Vertex api you should install `gcloud` as dependency (optional) \n NOTE: This extension is not affiliated, funded, or in any way associated with Google and Gemini.", "link": "https://extensions.gnome.org/extension/6834/gemini-ai/", "shell_version_map": {
+    "45": {"version": "13", "sha256": "09n18gb9wxwabjy37qiaanv719simfir1bfyjyz1gf08zng9p0km", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgQWRkLW9uIGlzIHVzaW5nIGdlbWluaSAxLjAgcHJvIG1vZGVsIGZvciBjaGF0dGluZy4gXG4gVGhpcyBleHRlbnNpb25zIHVzaW5nIHRoaXNpcGNhbi5jeW91IGZvciBsb2NhdGlvbiBkZXRlY3Rpb24gYW5kIGdvb2dsZWFwaXMuY29tIGZvciBnZW1pbmkgbW9kZWwgXG4gYWxzbyBpZiB5b3UgYXJlIHBsYW5pbmcgdG8gdXNlIFZlcnRleCBhcGkgeW91IHNob3VsZCBpbnN0YWxsIGBnY2xvdWRgIGFzIGRlcGVuZGVuY3kgKG9wdGlvbmFsKSBcbiBOT1RFOiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBHb29nbGUgYW5kIEdlbWluaS4iLAogICJuYW1lIjogIkdlbWluaSBBSSBmb3IgR25vbWUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ2VtaW5pYWl1YnVudHUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ1IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd3dhcmRhd3cvZ25vbWUtZ2VtaW5pLWFpIiwKICAidXVpZCI6ICJnZW1pbmlhaXVidW50dUBhcmRhLmNvbSIsCiAgInZlcnNpb24iOiAxMwp9"},
+    "46": {"version": "12", "sha256": "033g213z068qakd26ymwx3vzmjzp9c8q4crs9h7i08qhs6l4xys5", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaXMgQWRkLW9uIGlzIHVzaW5nIGdlbWluaSAxLjAgcHJvIG1vZGVsIGZvciBjaGF0dGluZy4gXG4gVGhpcyBleHRlbnNpb25zIHVzaW5nIHRoaXNpcGNhbi5jeW91IGZvciBsb2NhdGlvbiBkZXRlY3Rpb24gYW5kIGdvb2dsZWFwaXMuY29tIGZvciBnZW1pbmkgbW9kZWwgXG4gYWxzbyBpZiB5b3UgYXJlIHBsYW5pbmcgdG8gdXNlIFZlcnRleCBhcGkgeW91IHNob3VsZCBpbnN0YWxsIGBnY2xvdWRgIGFzIGRlcGVuZGVuY3kgKG9wdGlvbmFsKSBcbiBOT1RFOiBUaGlzIGV4dGVuc2lvbiBpcyBub3QgYWZmaWxpYXRlZCwgZnVuZGVkLCBvciBpbiBhbnkgd2F5IGFzc29jaWF0ZWQgd2l0aCBHb29nbGUgYW5kIEdlbWluaS4iLAogICJuYW1lIjogIkdlbWluaSBBSSBmb3IgR25vbWUiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMuZ2VtaW5pYWl1YnVudHUiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd3dhcmRhd3cvZ25vbWUtZ2VtaW5pLWFpIiwKICAidXVpZCI6ICJnZW1pbmlhaXVidW50dUBhcmRhLmNvbSIsCiAgInZlcnNpb24iOiAxMgp9"}
+  }}
+, {"uuid": "tailscale-connect@itsib.github.com", "name": "Tailscale Connect", "pname": "tailscale-connect", "description": "Graphical interface for the Tailscale desktop client. Simple, faster, configurable.", "link": "https://extensions.gnome.org/extension/6843/tailscale-connect/", "shell_version_map": {
+    "42": {"version": "1", "sha256": "057gcg5vjc2k6905mr2b2dcdzk1q9mpjp8p2yinxz37xg981n7gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdyYXBoaWNhbCBpbnRlcmZhY2UgZm9yIHRoZSBUYWlsc2NhbGUgZGVza3RvcCBjbGllbnQuIFNpbXBsZSwgZmFzdGVyLCBjb25maWd1cmFibGUuIiwKICAiZG9uYXRpb24iOiB7CiAgICAiZ2l0aHViIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pdHNpYiIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ0YWlsc2NhbGUtY29ubmVjdCIsCiAgIm5hbWUiOiAiVGFpbHNjYWxlIENvbm5lY3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudGFpbHNjYWxlLWNvbm5lY3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2l0c2liL3RhaWxzY2FsZS1jb25uZWN0IiwKICAidXVpZCI6ICJ0YWlsc2NhbGUtY29ubmVjdEBpdHNpYi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEKfQ=="},
+    "43": {"version": "1", "sha256": "057gcg5vjc2k6905mr2b2dcdzk1q9mpjp8p2yinxz37xg981n7gf", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkdyYXBoaWNhbCBpbnRlcmZhY2UgZm9yIHRoZSBUYWlsc2NhbGUgZGVza3RvcCBjbGllbnQuIFNpbXBsZSwgZmFzdGVyLCBjb25maWd1cmFibGUuIiwKICAiZG9uYXRpb24iOiB7CiAgICAiZ2l0aHViIjogImh0dHBzOi8vZ2l0aHViLmNvbS9pdHNpYiIKICB9LAogICJnZXR0ZXh0LWRvbWFpbiI6ICJ0YWlsc2NhbGUtY29ubmVjdCIsCiAgIm5hbWUiOiAiVGFpbHNjYWxlIENvbm5lY3QiLAogICJzZXR0aW5ncy1zY2hlbWEiOiAib3JnLmdub21lLnNoZWxsLmV4dGVuc2lvbnMudGFpbHNjYWxlLWNvbm5lY3QiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjQyIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2l0c2liL3RhaWxzY2FsZS1jb25uZWN0IiwKICAidXVpZCI6ICJ0YWlsc2NhbGUtY29ubmVjdEBpdHNpYi5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDEKfQ=="}
+  }}
+, {"uuid": "keyring-autolock@dkosmari.github.com", "name": "Keyring Autolock", "pname": "keyring-autolock", "description": "Show the keyring's locked state, and automatically lock it after a certain amount of time.", "link": "https://extensions.gnome.org/extension/6846/keyring-autolock/", "shell_version_map": {
+    "42": {"version": "20", "sha256": "1y6kvyg6arkp51m8ivs4hi7pisnz8bqdnywi1lgc2m7lr7r82nbl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGtleXJpbmcncyBsb2NrZWQgc3RhdGUsIGFuZCBhdXRvbWF0aWNhbGx5IGxvY2sgaXQgYWZ0ZXIgYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lLiIsCiAgImdldHRleHQtZG9tYWluIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiS2V5cmluZyBBdXRvbG9jayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5rZXlyaW5nLWF1dG9sb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGtvc21hcmkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWtleXJpbmctYXV0b2xvY2siLAogICJ1dWlkIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"},
+    "43": {"version": "20", "sha256": "1y6kvyg6arkp51m8ivs4hi7pisnz8bqdnywi1lgc2m7lr7r82nbl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGtleXJpbmcncyBsb2NrZWQgc3RhdGUsIGFuZCBhdXRvbWF0aWNhbGx5IGxvY2sgaXQgYWZ0ZXIgYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lLiIsCiAgImdldHRleHQtZG9tYWluIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiS2V5cmluZyBBdXRvbG9jayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5rZXlyaW5nLWF1dG9sb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGtvc21hcmkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWtleXJpbmctYXV0b2xvY2siLAogICJ1dWlkIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"},
+    "44": {"version": "20", "sha256": "1y6kvyg6arkp51m8ivs4hi7pisnz8bqdnywi1lgc2m7lr7r82nbl", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGtleXJpbmcncyBsb2NrZWQgc3RhdGUsIGFuZCBhdXRvbWF0aWNhbGx5IGxvY2sgaXQgYWZ0ZXIgYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lLiIsCiAgImdldHRleHQtZG9tYWluIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiS2V5cmluZyBBdXRvbG9jayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5rZXlyaW5nLWF1dG9sb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZGtvc21hcmkvZ25vbWUtc2hlbGwtZXh0ZW5zaW9uLWtleXJpbmctYXV0b2xvY2siLAogICJ1dWlkIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgInZlcnNpb24iOiAyMAp9"},
+    "45": {"version": "21", "sha256": "1whqd3xpnlsy7zcxzmnkwn0qahvnrxqnqcl70cmkfn4w60sv01ar", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGtleXJpbmcncyBsb2NrZWQgc3RhdGUsIGFuZCBhdXRvbWF0aWNhbGx5IGxvY2sgaXQgYWZ0ZXIgYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lLiIsCiAgImdldHRleHQtZG9tYWluIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiS2V5cmluZyBBdXRvbG9jayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5rZXlyaW5nLWF1dG9sb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ka29zbWFyaS9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2V5cmluZy1hdXRvbG9jayIsCiAgInV1aWQiOiAia2V5cmluZy1hdXRvbG9ja0Bka29zbWFyaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIxCn0="},
+    "46": {"version": "21", "sha256": "1whqd3xpnlsy7zcxzmnkwn0qahvnrxqnqcl70cmkfn4w60sv01ar", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlNob3cgdGhlIGtleXJpbmcncyBsb2NrZWQgc3RhdGUsIGFuZCBhdXRvbWF0aWNhbGx5IGxvY2sgaXQgYWZ0ZXIgYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lLiIsCiAgImdldHRleHQtZG9tYWluIjogImtleXJpbmctYXV0b2xvY2tAZGtvc21hcmkuZ2l0aHViLmNvbSIsCiAgIm5hbWUiOiAiS2V5cmluZyBBdXRvbG9jayIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5rZXlyaW5nLWF1dG9sb2NrIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ka29zbWFyaS9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2V5cmluZy1hdXRvbG9jayIsCiAgInV1aWQiOiAia2V5cmluZy1hdXRvbG9ja0Bka29zbWFyaS5naXRodWIuY29tIiwKICAidmVyc2lvbiI6IDIxCn0="}
+  }}
+, {"uuid": "voluble@quantiusbenignus.local", "name": "Voluble", "pname": "voluble", "description": "Let your GNOME desktop speak to you. Reads desktop notifications out-loud with human-like voice using Piper. Can be muted and respects \"Do not Disturb\".\nNow reads mouse text selection on command (ignores non-text).\nRequires the 'voluble' script, available on GitHub along with setup instructions.", "link": "https://extensions.gnome.org/extension/6849/voluble/", "shell_version_map": {
+    "42": {"version": "4", "sha256": "1j6hip0gck8p4f101fx2snpxggsvvs10cb11n1v6lixv98bysz2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlBsZWFzYW50LXNvdW5kaW5nLCB0YWxrYXRpdmUgYW5ub3VuY2VyIG9mIHN5c3RlbSBvciB1c2VyIG5vdGlmaWNhdGlvbnMuIEdpdmUgYSByZWFsIHZvaWNlIHRvIEdOT01FLiIsCiAgIm5hbWUiOiAiVm9sdWJsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1F1YW50aXVzQmVuaWdudXMvdm9sdWJsZSIsCiAgInV1aWQiOiAidm9sdWJsZUBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDQKfQ=="},
+    "43": {"version": "4", "sha256": "1j6hip0gck8p4f101fx2snpxggsvvs10cb11n1v6lixv98bysz2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlBsZWFzYW50LXNvdW5kaW5nLCB0YWxrYXRpdmUgYW5ub3VuY2VyIG9mIHN5c3RlbSBvciB1c2VyIG5vdGlmaWNhdGlvbnMuIEdpdmUgYSByZWFsIHZvaWNlIHRvIEdOT01FLiIsCiAgIm5hbWUiOiAiVm9sdWJsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1F1YW50aXVzQmVuaWdudXMvdm9sdWJsZSIsCiAgInV1aWQiOiAidm9sdWJsZUBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDQKfQ=="},
+    "44": {"version": "4", "sha256": "1j6hip0gck8p4f101fx2snpxggsvvs10cb11n1v6lixv98bysz2b", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlBsZWFzYW50LXNvdW5kaW5nLCB0YWxrYXRpdmUgYW5ub3VuY2VyIG9mIHN5c3RlbSBvciB1c2VyIG5vdGlmaWNhdGlvbnMuIEdpdmUgYSByZWFsIHZvaWNlIHRvIEdOT01FLiIsCiAgIm5hbWUiOiAiVm9sdWJsZSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDIiLAogICAgIjQzIiwKICAgICI0NCIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1F1YW50aXVzQmVuaWdudXMvdm9sdWJsZSIsCiAgInV1aWQiOiAidm9sdWJsZUBxdWFudGl1c2JlbmlnbnVzLmxvY2FsIiwKICAidmVyc2lvbiI6IDQKfQ=="}
+  }}
+, {"uuid": "chronos@time-tracker.com", "name": "Chronos Time Tracker", "pname": "chronos-time-tracker", "description": "Time tracker tool", "link": "https://extensions.gnome.org/extension/6856/chronos-time-tracker/", "shell_version_map": {
+    "45": {"version": "6", "sha256": "0004lrh6irwibm7sgqmg8cz6lrv5j24m1s7rbz5pm2bk91c7jfyb", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlRpbWUgdHJhY2tlciB0b29sIiwKICAibmFtZSI6ICJDaHJvbm9zIFRpbWUgVHJhY2tlciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5jaHJvbm9zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tLzB2dmxhbmQvY2hyb25vcyIsCiAgInV1aWQiOiAiY2hyb25vc0B0aW1lLXRyYWNrZXIuY29tIiwKICAidmVyc2lvbiI6IDYKfQ=="}
+  }}
+, {"uuid": "screenshort-cut@pauloimon", "name": "Screenshort-cut", "pname": "screenshort-cut", "description": "A simple shortcut to take screenshots directly on your top bar!", "link": "https://extensions.gnome.org/extension/6868/screenshort-cut/", "shell_version_map": {
+    "42": {"version": "1", "sha256": "0axs01gjw5nwzgq7k3dlxfzazkq76ym9iaazqpsyn39dhdn1z75p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIHNob3J0Y3V0IHRvIHRha2Ugc2NyZWVuc2hvdHMgZGlyZWN0bHkgb24geW91ciB0b3AgYmFyISIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvcnQtY3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGF1bG9pbW9uL3NjcmVlbnNob3J0LWN1dC1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogInNjcmVlbnNob3J0LWN1dEBwYXVsb2ltb24iLAogICJ2ZXJzaW9uIjogMQp9"},
+    "43": {"version": "1", "sha256": "0axs01gjw5nwzgq7k3dlxfzazkq76ym9iaazqpsyn39dhdn1z75p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIHNob3J0Y3V0IHRvIHRha2Ugc2NyZWVuc2hvdHMgZGlyZWN0bHkgb24geW91ciB0b3AgYmFyISIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvcnQtY3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGF1bG9pbW9uL3NjcmVlbnNob3J0LWN1dC1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogInNjcmVlbnNob3J0LWN1dEBwYXVsb2ltb24iLAogICJ2ZXJzaW9uIjogMQp9"},
+    "44": {"version": "1", "sha256": "0axs01gjw5nwzgq7k3dlxfzazkq76ym9iaazqpsyn39dhdn1z75p", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgc2ltcGxlIHNob3J0Y3V0IHRvIHRha2Ugc2NyZWVuc2hvdHMgZGlyZWN0bHkgb24geW91ciB0b3AgYmFyISIsCiAgIm5hbWUiOiAiU2NyZWVuc2hvcnQtY3V0IiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0MiIsCiAgICAiNDMiLAogICAgIjQ0IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGF1bG9pbW9uL3NjcmVlbnNob3J0LWN1dC1nbm9tZS1leHRlbnNpb24iLAogICJ1dWlkIjogInNjcmVlbnNob3J0LWN1dEBwYXVsb2ltb24iLAogICJ2ZXJzaW9uIjogMQp9"}
+  }}
+, {"uuid": "streamcontroller@core447.com", "name": "StreamController Integration", "pname": "streamcontroller-integration", "description": "Allow automatic page switching in StreamController by adding a dbus interface to fetch info about the current window.", "link": "https://extensions.gnome.org/extension/6871/streamcontroller-integration/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "1jiyxya2nfvi647xracbfxm2il508whvrz8fhzmph7pzh86by6rw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGF1dG9tYXRpYyBwYWdlIHN3aXRjaGluZyBpbiBTdHJlYW1Db250cm9sbGVyIGJ5IGFkZGluZyBhIGRidXMgaW50ZXJmYWNlIHRvIGZldGNoIGluZm8gYWJvdXQgdGhlIGN1cnJlbnQgd2luZG93LiIsCiAgIm5hbWUiOiAiU3RyZWFtQ29udHJvbGxlciBJbnRlZ3JhdGlvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3RyZWFtQ29udHJvbGxlci9zdHJlYW1jb250cm9sbGVyLWNvcmU0NDcuY29tIiwKICAidXVpZCI6ICJzdHJlYW1jb250cm9sbGVyQGNvcmU0NDcuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
+    "46": {"version": "2", "sha256": "1jiyxya2nfvi647xracbfxm2il508whvrz8fhzmph7pzh86by6rw", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFsbG93IGF1dG9tYXRpYyBwYWdlIHN3aXRjaGluZyBpbiBTdHJlYW1Db250cm9sbGVyIGJ5IGFkZGluZyBhIGRidXMgaW50ZXJmYWNlIHRvIGZldGNoIGluZm8gYWJvdXQgdGhlIGN1cnJlbnQgd2luZG93LiIsCiAgIm5hbWUiOiAiU3RyZWFtQ29udHJvbGxlciBJbnRlZ3JhdGlvbiIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3RyZWFtQ29udHJvbGxlci9zdHJlYW1jb250cm9sbGVyLWNvcmU0NDcuY29tIiwKICAidXVpZCI6ICJzdHJlYW1jb250cm9sbGVyQGNvcmU0NDcuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
+  }}
+, {"uuid": "panel-menu@astrapi.os", "name": "astrapi.os | Panel Menu", "pname": "astrapios-panel-menu", "description": "A GNOME Shell Extension to add custom menu to panel", "link": "https://extensions.gnome.org/extension/6877/astrapios-panel-menu/", "shell_version_map": {
+    "45": {"version": "6", "sha256": "00j4985kl104pmq01jh5ch6qlgx7ag6d0nm1zi26iczxwqj7ah5w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgRXh0ZW5zaW9uIHRvIGFkZCBjdXN0b20gbWVudSB0byBwYW5lbCIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC1tZW51IiwKICAibmFtZSI6ICJhc3RyYXBpLm9zIHwgUGFuZWwgTWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYXN0cmFwaS1vcy9zaGVsbC1leHRlbnNpb25zL3BhbmVsLW1lbnUiLAogICJ1dWlkIjogInBhbmVsLW1lbnVAYXN0cmFwaS5vcyIsCiAgInZlcnNpb24iOiA2Cn0="},
+    "46": {"version": "6", "sha256": "00j4985kl104pmq01jh5ch6qlgx7ag6d0nm1zi26iczxwqj7ah5w", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkEgR05PTUUgU2hlbGwgRXh0ZW5zaW9uIHRvIGFkZCBjdXN0b20gbWVudSB0byBwYW5lbCIsCiAgImV4dGVuc2lvbi1pZCI6ICJwYW5lbC1tZW51IiwKICAibmFtZSI6ICJhc3RyYXBpLm9zIHwgUGFuZWwgTWVudSIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGxhYi5jb20vYXN0cmFwaS1vcy9zaGVsbC1leHRlbnNpb25zL3BhbmVsLW1lbnUiLAogICJ1dWlkIjogInBhbmVsLW1lbnVAYXN0cmFwaS5vcyIsCiAgInZlcnNpb24iOiA2Cn0="}
+  }}
+, {"uuid": "kernel-indicator@pvizc.gitlab.com", "name": "Kernel Indicator", "pname": "kernel-indicator", "description": "Display the kernel version in the top bar", "link": "https://extensions.gnome.org/extension/6880/kernel-indicator/", "shell_version_map": {
+    "45": {"version": "2", "sha256": "1babz6vxkz7p9422ifii5zz150hd9ain42338phy4bkp2gr5dvx1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGtlcm5lbCB2ZXJzaW9uIGluIHRoZSB0b3AgYmFyIiwKICAibmFtZSI6ICJLZXJuZWwgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9wdml6Yy9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2VybmVsLWluZGljYXRvciIsCiAgInV1aWQiOiAia2VybmVsLWluZGljYXRvckBwdml6Yy5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="},
+    "46": {"version": "2", "sha256": "1babz6vxkz7p9422ifii5zz150hd9ain42338phy4bkp2gr5dvx1", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc3BsYXkgdGhlIGtlcm5lbCB2ZXJzaW9uIGluIHRoZSB0b3AgYmFyIiwKICAibmFtZSI6ICJLZXJuZWwgSW5kaWNhdG9yIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmNvbS9wdml6Yy9nbm9tZS1zaGVsbC1leHRlbnNpb24ta2VybmVsLWluZGljYXRvciIsCiAgInV1aWQiOiAia2VybmVsLWluZGljYXRvckBwdml6Yy5naXRsYWIuY29tIiwKICAidmVyc2lvbiI6IDIKfQ=="}
+  }}
+, {"uuid": "arch-update-security-news@slaclau.github.io", "name": "Arch Linux Updates and Security Indicator", "pname": "arch-linux-updates-and-security-indicator", "description": "Update indicator for Arch Linux and GNOME Shell.\n** Note : you now need to install the package pacman-contrib to use the checkupdates script and arch-audit for security functionality. **\n  Can support AUR or other distros by changing command used to check for and apply updates.\n See README about Gnome Console. \n This extension was modified from https://extensions.gnome.org/extension/1010/archlinux-updates-indicator/", "link": "https://extensions.gnome.org/extension/6883/arch-linux-updates-and-security-indicator/", "shell_version_map": {
+    "46": {"version": "2", "sha256": "0mg83jb6llcqq8k7bijvj1vj135by7d0n5lv16j90c5m04wb4q3m", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIlVwZGF0ZSBpbmRpY2F0b3IgZm9yIEFyY2ggTGludXggYW5kIEdOT01FIFNoZWxsLlxuKiogTm90ZSA6IHlvdSBub3cgbmVlZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHBhY21hbi1jb250cmliIHRvIHVzZSB0aGUgY2hlY2t1cGRhdGVzIHNjcmlwdCBhbmQgYXJjaC1hdWRpdCBmb3Igc2VjdXJpdHkgZnVuY3Rpb25hbGl0eS4gKipcbiAgQ2FuIHN1cHBvcnQgQVVSIG9yIG90aGVyIGRpc3Ryb3MgYnkgY2hhbmdpbmcgY29tbWFuZCB1c2VkIHRvIGNoZWNrIGZvciBhbmQgYXBwbHkgdXBkYXRlcy5cbiBTZWUgUkVBRE1FIGFib3V0IEdub21lIENvbnNvbGUuIFxuIFRoaXMgZXh0ZW5zaW9uIHdhcyBtb2RpZmllZCBmcm9tIGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzEwMTAvYXJjaGxpbnV4LXVwZGF0ZXMtaW5kaWNhdG9yLyIsCiAgImdldHRleHQtZG9tYWluIjogImFyY2gtdXBkYXRlIiwKICAibmFtZSI6ICJBcmNoIExpbnV4IFVwZGF0ZXMgYW5kIFNlY3VyaXR5IEluZGljYXRvciIsCiAgInNldHRpbmdzLXNjaGVtYSI6ICJvcmcuZ25vbWUuc2hlbGwuZXh0ZW5zaW9ucy5hcmNoLXVwZGF0ZS1zZWN1cml0eS1uZXdzIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NiIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NsYWNsYXUvYXJjaC11cGRhdGUtc2VjdXJpdHktbmV3cyIsCiAgInV1aWQiOiAiYXJjaC11cGRhdGUtc2VjdXJpdHktbmV3c0BzbGFjbGF1LmdpdGh1Yi5pbyIsCiAgInZlcnNpb24iOiAyCn0="}
+  }}
+, {"uuid": "counter@anubhab", "name": "Counter", "pname": "counter", "description": "Adds a counter to the top bar. Left click increases counter by 1, right click decreases counter by 1, and middle click resets counter to 0.", "link": "https://extensions.gnome.org/extension/6889/counter/", "shell_version_map": {
+    "38": {"version": "4", "sha256": "08liwzpd91bwh1hil4b9r5wxm8g1l1csa4rx5y1jiqfsjdcawri4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBjb3VudGVyIHRvIHRoZSB0b3AgYmFyLiBMZWZ0IGNsaWNrIGluY3JlYXNlcyBjb3VudGVyIGJ5IDEsIHJpZ2h0IGNsaWNrIGRlY3JlYXNlcyBjb3VudGVyIGJ5IDEsIGFuZCBtaWRkbGUgY2xpY2sgcmVzZXRzIGNvdW50ZXIgdG8gMC4iLAogICJuYW1lIjogIkNvdW50ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FudWJoYWItbWFuZGFsL3RhcC1jb3VudGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiY291bnRlckBhbnViaGFiIiwKICAidmVyc2lvbiI6IDQKfQ=="},
+    "40": {"version": "4", "sha256": "08liwzpd91bwh1hil4b9r5wxm8g1l1csa4rx5y1jiqfsjdcawri4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBjb3VudGVyIHRvIHRoZSB0b3AgYmFyLiBMZWZ0IGNsaWNrIGluY3JlYXNlcyBjb3VudGVyIGJ5IDEsIHJpZ2h0IGNsaWNrIGRlY3JlYXNlcyBjb3VudGVyIGJ5IDEsIGFuZCBtaWRkbGUgY2xpY2sgcmVzZXRzIGNvdW50ZXIgdG8gMC4iLAogICJuYW1lIjogIkNvdW50ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FudWJoYWItbWFuZGFsL3RhcC1jb3VudGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiY291bnRlckBhbnViaGFiIiwKICAidmVyc2lvbiI6IDQKfQ=="},
+    "43": {"version": "4", "sha256": "08liwzpd91bwh1hil4b9r5wxm8g1l1csa4rx5y1jiqfsjdcawri4", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBjb3VudGVyIHRvIHRoZSB0b3AgYmFyLiBMZWZ0IGNsaWNrIGluY3JlYXNlcyBjb3VudGVyIGJ5IDEsIHJpZ2h0IGNsaWNrIGRlY3JlYXNlcyBjb3VudGVyIGJ5IDEsIGFuZCBtaWRkbGUgY2xpY2sgcmVzZXRzIGNvdW50ZXIgdG8gMC4iLAogICJuYW1lIjogIkNvdW50ZXIiLAogICJzaGVsbC12ZXJzaW9uIjogWwogICAgIjMuMzYiLAogICAgIjMuMzgiLAogICAgIjQwIiwKICAgICI0MyIKICBdLAogICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2FudWJoYWItbWFuZGFsL3RhcC1jb3VudGVyLWdub21lLWV4dGVuc2lvbiIsCiAgInV1aWQiOiAiY291bnRlckBhbnViaGFiIiwKICAidmVyc2lvbiI6IDQKfQ=="}
+  }}
+, {"uuid": "sleep-through-notifications@rhendric.gitlab.the_name_of_this_desktop_environment.org", "name": "Sleep Through Notifications", "pname": "sleep-through-notifications", "description": "Disable the screen-waking behavior of lock screen notifications", "link": "https://extensions.gnome.org/extension/6892/sleep-through-notifications/", "shell_version_map": {
+    "45": {"version": "1", "sha256": "1zsx2q845ng31nn3qavhf2wd3n7qhghr5w1kz6wvvq3i92zf8alk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbi13YWtpbmcgYmVoYXZpb3Igb2YgbG9jayBzY3JlZW4gbm90aWZpY2F0aW9ucyIsCiAgIm5hbWUiOiAiU2xlZXAgVGhyb3VnaCBOb3RpZmljYXRpb25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9yaGVuZHJpYy9zbGVlcC10aHJvdWdoLW5vdGlmaWNhdGlvbnMiLAogICJ1dWlkIjogInNsZWVwLXRocm91Z2gtbm90aWZpY2F0aW9uc0ByaGVuZHJpYy5naXRsYWIudGhlX25hbWVfb2ZfdGhpc19kZXNrdG9wX2Vudmlyb25tZW50Lm9yZyIsCiAgInZlcnNpb24iOiAxCn0="},
+    "46": {"version": "1", "sha256": "1zsx2q845ng31nn3qavhf2wd3n7qhghr5w1kz6wvvq3i92zf8alk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkRpc2FibGUgdGhlIHNjcmVlbi13YWtpbmcgYmVoYXZpb3Igb2YgbG9jayBzY3JlZW4gbm90aWZpY2F0aW9ucyIsCiAgIm5hbWUiOiAiU2xlZXAgVGhyb3VnaCBOb3RpZmljYXRpb25zIiwKICAic2hlbGwtdmVyc2lvbiI6IFsKICAgICI0NSIsCiAgICAiNDYiCiAgXSwKICAidXJsIjogImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9yaGVuZHJpYy9zbGVlcC10aHJvdWdoLW5vdGlmaWNhdGlvbnMiLAogICJ1dWlkIjogInNsZWVwLXRocm91Z2gtbm90aWZpY2F0aW9uc0ByaGVuZHJpYy5naXRsYWIudGhlX25hbWVfb2ZfdGhpc19kZXNrdG9wX2Vudmlyb25tZW50Lm9yZyIsCiAgInZlcnNpb24iOiAxCn0="}
+  }}
+, {"uuid": "gbinaryclock@isopolito", "name": "gBinaryClock", "pname": "gbinaryclock", "description": "Adds a binary clock to the gnome top bar", "link": "https://extensions.gnome.org/extension/6901/gbinaryclock/", "shell_version_map": {
+    "45": {"version": "3", "sha256": "1g4qw6cvwxh90y2rdv37vl868yb4766fc7k8frwwrgp9k7mx62jk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBiaW5hcnkgY2xvY2sgdG8gdGhlIGdub21lIHRvcCBiYXIiLAogICJuYW1lIjogImdCaW5hcnlDbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSXNvcG9saXRvL2dCaW5hcnlDbG9jayIsCiAgInV1aWQiOiAiZ2JpbmFyeWNsb2NrQGlzb3BvbGl0byIsCiAgInZlcnNpb24iOiAzCn0="},
+    "46": {"version": "3", "sha256": "1g4qw6cvwxh90y2rdv37vl868yb4766fc7k8frwwrgp9k7mx62jk", "metadata": "ewogICJfZ2VuZXJhdGVkIjogIkdlbmVyYXRlZCBieSBTd2VldFRvb3RoLCBkbyBub3QgZWRpdCIsCiAgImRlc2NyaXB0aW9uIjogIkFkZHMgYSBiaW5hcnkgY2xvY2sgdG8gdGhlIGdub21lIHRvcCBiYXIiLAogICJuYW1lIjogImdCaW5hcnlDbG9jayIsCiAgInNoZWxsLXZlcnNpb24iOiBbCiAgICAiNDUiLAogICAgIjQ2IgogIF0sCiAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vSXNvcG9saXRvL2dCaW5hcnlDbG9jayIsCiAgInV1aWQiOiAiZ2JpbmFyeWNsb2NrQGlzb3BvbGl0byIsCiAgInZlcnNpb24iOiAzCn0="}
   }}
 ]
diff --git a/pkgs/desktops/gnome/extensions/impatience/default.nix b/pkgs/desktops/gnome/extensions/impatience/default.nix
index 75d31f7c4ae34..8b1e24fd640e4 100644
--- a/pkgs/desktops/gnome/extensions/impatience/default.nix
+++ b/pkgs/desktops/gnome/extensions/impatience/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extension-impatience";
-  version = "0.5.0";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "timbertson";
     repo = "gnome-shell-impatience";
     rev = "refs/tags/version-${version}";
-    hash = "sha256-qvRPdRxAxlylR+MRp8RLzkxIMulzxPSWbhOQ2qNuyt4=";
+    hash = "sha256-yBRnhdCDeA0bL+kkrmnIqyXAlhZzO2Vthc4Dnba80j4=";
   };
 
   buildInputs = [
diff --git a/pkgs/desktops/gnome/extensions/pop-shell/default.nix b/pkgs/desktops/gnome/extensions/pop-shell/default.nix
index 2c383b45f48de..cb4e9ff85caac 100644
--- a/pkgs/desktops/gnome/extensions/pop-shell/default.nix
+++ b/pkgs/desktops/gnome/extensions/pop-shell/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, lib, fetchFromGitHub, glib, gjs, typescript }:
+{ stdenv, lib, fetchFromGitHub, glib, gjs, typescript, unstableGitUpdater }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-extension-pop-shell";
-  version = "unstable-2023-11-10";
+  version = "unstable-2024-04-04";
 
   src = fetchFromGitHub {
     owner = "pop-os";
     repo = "shell";
-    rev = "aafc9458a47a68c396933c637de00421f5198a2a";
-    hash = "sha256-74lZbEYHj7fufRSbuI2SN9rqbB3gpRa0V96qjAFc01s=";
+    rev = "cfa0c55e84b7ce339e5ce83832f76fee17e99d51";
+    hash = "sha256-IQJtTMYCkKyjqDKoR35qsgQkvXIrGLq+qtMDOTkvy08=";
   };
 
   nativeBuildInputs = [ glib gjs typescript ];
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   passthru = {
     extensionUuid = "pop-shell@system76.com";
     extensionPortalSlug = "pop-shell";
+    updateScript = unstableGitUpdater { };
   };
 
   postPatch = ''
diff --git a/pkgs/desktops/gnome/extensions/update-extensions.py b/pkgs/desktops/gnome/extensions/update-extensions.py
index 4746c2558655c..35e0c47d60488 100755
--- a/pkgs/desktops/gnome/extensions/update-extensions.py
+++ b/pkgs/desktops/gnome/extensions/update-extensions.py
@@ -21,6 +21,7 @@ supported_versions = {
     "43": "43",
     "44": "44",
     "45": "45",
+    "46": "46",
 }
 
 # Some type alias to increase readability of complex compound types
diff --git a/pkgs/desktops/mate/mate-panel/default.nix b/pkgs/desktops/mate/mate-panel/default.nix
index 75340bf4dc960..8ff97affd4dbb 100644
--- a/pkgs/desktops/mate/mate-panel/default.nix
+++ b/pkgs/desktops/mate/mate-panel/default.nix
@@ -25,11 +25,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mate-panel";
-  version = "1.28.0";
+  version = "1.28.1";
 
   src = fetchurl {
     url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "s70EoJTQ61vX3DOA728MSdmp1SCXM9fM17RtBmogjLo=";
+    sha256 = "UTPGT1lpro7uvm6LukUN6nkssL4G2a4cNuhWnS+FJLo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/mate/mate-themes/default.nix b/pkgs/desktops/mate/mate-themes/default.nix
index bcef002dac993..259b29c6c9b49 100644
--- a/pkgs/desktops/mate/mate-themes/default.nix
+++ b/pkgs/desktops/mate/mate-themes/default.nix
@@ -15,11 +15,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mate-themes";
-  version = "3.22.24";
+  version = "3.22.26";
 
   src = fetchurl {
     url = "https://pub.mate-desktop.org/releases/themes/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "PYs6KihTMd4kxM9djJ3YRtqhFpXyBnZdjxaT68rPbko=";
+    sha256 = "Ik6J02TrO3Pxz3VtBUlKmEIak8v1Q0miyF/GB+t1Xtc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh b/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
index 3abf3172ea66c..05ddc6a172ff7 100644
--- a/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
+++ b/pkgs/desktops/xfce/core/xfce4-dev-tools/setup-hook.sh
@@ -9,4 +9,6 @@ xdtAutogenPhase() {
     NOCONFIGURE=1 xdt-autogen
 }
 
-preConfigurePhases+=(xdtAutogenPhase)
+if [ -z "${dontUseXdtAutogenPhase-}" ]; then
+    preConfigurePhases+=(xdtAutogenPhase)
+fi
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix
index 9ceeddf267d39..5a6794bf79af2 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-i3-workspaces-plugin/default.nix
@@ -1,39 +1,33 @@
 { lib, stdenv, fetchFromGitHub, pkg-config, intltool, gtk3
-, libxfce4ui, libxfce4util, xfconf, xfce4-dev-tools, xfce4-panel
+, libxfce4ui, libxfce4util, xfce4-dev-tools, xfce4-panel
 , i3ipc-glib
 }:
 
 stdenv.mkDerivation rec {
   pname = "xfce4-i3-workspaces-plugin";
-  version = "1.4.1";
+  version = "1.4.2";
 
   src = fetchFromGitHub {
     owner = "denesb";
     repo = "xfce4-i3-workspaces-plugin";
     rev = version;
-    sha256 = "sha256-Ss3uUmNvBqiu7hUaSy98+YYrWs64LFGbV4DMAV+xkvA=";
+    sha256 = "sha256-CKpofupoJhe5IORJgij6gOGotB+dGkUDtTUdon8/JdE=";
   };
 
   nativeBuildInputs = [
     pkg-config
     intltool
+    xfce4-dev-tools
   ];
 
   buildInputs = [
     gtk3
-    xfconf
     libxfce4ui
     libxfce4util
-    xfce4-dev-tools
     xfce4-panel
     i3ipc-glib
    ];
 
-  preConfigure = ''
-    ./autogen.sh
-    patchShebangs .
-  '';
-
   enableParallelBuilding = true;
 
   meta = with lib; {
diff --git a/pkgs/development/ada-modules/gprbuild/default.nix b/pkgs/development/ada-modules/gprbuild/default.nix
index 4e25bc313a63d..00eaa72097673 100644
--- a/pkgs/development/ada-modules/gprbuild/default.nix
+++ b/pkgs/development/ada-modules/gprbuild/default.nix
@@ -42,6 +42,8 @@ stdenv.mkDerivation {
   ];
 
   env = lib.optionalAttrs stdenv.isDarwin {
+    # Ensure that there is enough space for the `fixDarwinDylibNames` hook to
+    # update the install names of the output dylibs.
     NIX_LDFLAGS = "-headerpad_max_install_names";
   };
 
diff --git a/pkgs/development/beam-modules/erlang-ls/default.nix b/pkgs/development/beam-modules/erlang-ls/default.nix
index 04d6fc36176f7..1c1d9f933c37c 100644
--- a/pkgs/development/beam-modules/erlang-ls/default.nix
+++ b/pkgs/development/beam-modules/erlang-ls/default.nix
@@ -1,7 +1,7 @@
 { fetchFromGitHub, fetchgit, fetchHex, rebar3Relx, buildRebar3, rebar3-proper
 , stdenv, writeScript, lib, erlang }:
 let
-  version = "0.48.0";
+  version = "0.51.0";
   owner = "erlang-ls";
   repo = "erlang_ls";
   deps = import ./rebar-deps.nix {
@@ -24,7 +24,7 @@ rebar3Relx {
   inherit version;
   src = fetchFromGitHub {
     inherit owner repo;
-    sha256 = "sha256-QwsN/P2FBuhIS/vRlrdvokQS6G77kkZ2Rg5rwNc36Jg=";
+    hash = "sha256-2gSDfYGm7XVeEn0xEwuvk8y1z8P2/q86hmNCkK6w2C0=";
     rev = version;
   };
   releaseType = "escript";
@@ -46,11 +46,7 @@ rebar3Relx {
   '';
   # tests seem to be a bit flaky on darwin, skip them for now
   doCheck = !stdenv.isDarwin;
-  installPhase = ''
-    mkdir -p $out/bin
-    cp _build/default/bin/erlang_ls $out/bin/
-    cp _build/dap/bin/els_dap $out/bin/
-  '';
+  installFlags = [ "PREFIX=$(out)" ];
   meta = with lib; {
     homepage = "https://github.com/erlang-ls/erlang_ls";
     description = "The Erlang Language Server";
diff --git a/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix b/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix
index afdf4767843b5..2ab6b08338f45 100644
--- a/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix
+++ b/pkgs/development/beam-modules/erlang-ls/rebar-deps.nix
@@ -138,12 +138,12 @@ let
     };
     erlfmt = builder {
       name = "erlfmt";
-      version = "git";
+      version = "1.3.0";
       src = fetchFromGitHub {
-        owner = "gomoripeti";
+        owner = "WhatsApp";
         repo = "erlfmt";
-        rev = "d4422d1fd79a73ef534c2bcbe5b5da4da5338833";
-        sha256 = "07jp4g6a41w7318lh8ndsvgivkj0ahz3spnrsnx4cqkdb97yjaid";
+        sha256 = "sha256-fVjEVmCnoofnfcxwBk0HI4adO0M6QOshP3uZrecZ9vM=";
+        rev = "v1.3.0";
       };
       beamDeps = [ ];
     };
diff --git a/pkgs/development/compilers/cakelisp/default.nix b/pkgs/development/compilers/cakelisp/default.nix
index 1d52430a16a57..1dffc52f7576f 100644
--- a/pkgs/development/compilers/cakelisp/default.nix
+++ b/pkgs/development/compilers/cakelisp/default.nix
@@ -3,12 +3,12 @@
 stdenv.mkDerivation {
   pname = "cakelisp";
   # using unstable as it's the only version that builds against gcc-13
-  version = "0.3.0-unstable-2024-03-21";
+  version = "0.3.0-unstable-2024-04-01";
 
   src = fetchgit {
     url = "https://macoy.me/code/macoy/cakelisp";
-    rev = "6bde4b8002e4825116f3b18291a012bf1729f497";
-    hash = "sha256-jpwVHiDRVa6QoYxsasmiV1IdbBqZj0tU5EBruOHfzYg=";
+    rev = "7f09a08623f4141d3c2940bca3e8ea646a7049cc";
+    hash = "sha256-5ey2j38bhoRADMFcTGcUiOHE/UlU2mPGqzfv7dEk6oQ=";
   };
 
   buildInputs = [ gcc ];
diff --git a/pkgs/development/compilers/carp/default.nix b/pkgs/development/compilers/carp/default.nix
index 5abb9b3fe641e..69ca47571ecc7 100644
--- a/pkgs/development/compilers/carp/default.nix
+++ b/pkgs/development/compilers/carp/default.nix
@@ -56,6 +56,8 @@ haskellPackages.mkDerivation rec {
   homepage    = "https://github.com/carp-lang/Carp";
   license     = lib.licenses.asl20;
   maintainers = with lib.maintainers; [ jluttine ];
+  # Not actively maintained at the moment
+  broken      = true;
 
   # Windows not (yet) supported.
   platforms   = with lib.platforms; unix ++ darwin;
diff --git a/pkgs/development/compilers/circt/default.nix b/pkgs/development/compilers/circt/default.nix
index d03a9fa40caa9..aed2ede3e0c60 100644
--- a/pkgs/development/compilers/circt/default.nix
+++ b/pkgs/development/compilers/circt/default.nix
@@ -17,12 +17,12 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "circt";
-  version = "1.71.0";
+  version = "1.72.0";
   src = fetchFromGitHub {
     owner = "llvm";
     repo = "circt";
     rev = "firtool-${version}";
-    hash = "sha256-Y6SkMpF5Gpi1Jm3OrWaMkr3uP/vTzawJ9UsxsuOsvpo=";
+    hash = "sha256-Jy+/nwb1CkbNjS0mZ244hG0Rzb/2QRYXrlki4yWZ1lk=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/compilers/dmd/default.nix b/pkgs/development/compilers/dmd/default.nix
deleted file mode 100644
index bdc9fafd4f06b..0000000000000
--- a/pkgs/development/compilers/dmd/default.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-import ./generic.nix {
-  version = "2.106.1";
-  dmdSha256 = "sha256-vjYa/Pxrz7J2htXT+fa+xaeen/Vxne++lELbHTSXBK8=";
-  phobosSha256 = "sha256-yRL9ub3u4mREG9PVxBvgQ/LDXD57RadPTZ2h08qyh/s=";
-}
diff --git a/pkgs/development/compilers/dotnet/9/deps.nix b/pkgs/development/compilers/dotnet/9/deps.nix
index 4361b1cbd89e4..d1dcc2bf54dde 100644
--- a/pkgs/development/compilers/dotnet/9/deps.nix
+++ b/pkgs/development/compilers/dotnet/9/deps.nix
@@ -1,11 +1,10 @@
 { fetchNuGet }: [
-  (fetchNuGet { pname = "System.CommandLine"; sha256 = "0i343zwgcnila8pxxgsk12a284mw0jkg3m82607shdbxjrwadz8n"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/flat2/system.commandline/2.0.0-beta4.23307.1/system.commandline.2.0.0-beta4.23307.1.nupkg"; version = "2.0.0-beta4.23307.1"; })
-  (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILAsm"; sha256 = "4edcd01d72a239df9506a124544aba8e8f18757b2b5398a658a68a920f58b1c8"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ilasm/9.0.0-alpha.1.24061.26/runtime.linux-arm64.microsoft.netcore.ilasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
-  (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "55c2b7eab77aee7c22fcd3c44c0602fb767f800337b9740c2d29be31ac92b66f"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ildasm/9.0.0-alpha.1.24061.26/runtime.linux-arm64.microsoft.netcore.ildasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
-  (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILAsm"; sha256 = "1vbxs72aq6k6ibcjqibswm51zdj6k3vxd1gxpw1aqbk8b6vaqqwf"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ilasm/9.0.0-alpha.1.24061.26/runtime.linux-x64.microsoft.netcore.ilasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
-  (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILDAsm"; sha256 = "0qwbjv0di5rnxaik7bxlfbr14y7w24fqp9vn6x5z2v464zdz02q5"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ildasm/9.0.0-alpha.1.24061.26/runtime.linux-x64.microsoft.netcore.ildasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
-  (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILAsm"; sha256 = "8af8a1cbbe485ce344612b2482197a9ced5de567e384aea7cc0307741131990e"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ilasm/9.0.0-alpha.1.24061.26/runtime.osx-arm64.microsoft.netcore.ilasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
-  (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "ccf1cc88a8b555e0f514d71c8d5adc60fd06ec3a7e4c7a0b0acd6d4b1b81e0f3"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ildasm/9.0.0-alpha.1.24061.26/runtime.osx-arm64.microsoft.netcore.ildasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
-  (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILAsm"; sha256 = "8d9346877885235b4267363d323a3f15122fb3667d7fbceb7c685f68163102e0"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ilasm/9.0.0-alpha.1.24061.26/runtime.osx-x64.microsoft.netcore.ilasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
-  (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILDAsm"; sha256 = "562eb0ea029d008798e50d423c3beaa5b509886751d446ce53f676b1a0281365"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ildasm/9.0.0-alpha.1.24061.26/runtime.osx-x64.microsoft.netcore.ildasm.9.0.0-alpha.1.24061.26.nupkg"; version = "9.0.0-alpha.1.24061.26"; })
+  (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILAsm"; sha256 = "83ea1b2eaf1035365d25ed1119e7c69f72893b9ece82a0771b1f2e342a23bdf3"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.linux-arm64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
+  (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "96166f18c89084cd4b11dd2cd5cb949d088dd33f1c3446ba95c74b2c88273a22"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-arm64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.linux-arm64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
+  (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILAsm"; sha256 = "09nd4ymm06cqia4r5laikgfffjhjk5m4c1snlz6sbpa29nhh5smr"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.linux-x64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
+  (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.ILDAsm"; sha256 = "0iarbcblf33lcx19xgaa40bjgfsrskfp1205kpl4pv1jw3l4hgkd"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.linux-x64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.linux-x64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
+  (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILAsm"; sha256 = "5ff20db7bef1c0adb9473a71b95dcfc02034fa40295fdf6bcbd826027d51d47d"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.osx-arm64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
+  (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.ILDAsm"; sha256 = "7e91613aeda779d2722f818ce137f5c969b7b05888db204d50c32e403ec4729b"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-arm64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.osx-arm64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
+  (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILAsm"; sha256 = "d38c42cd85d1491a6db85e2800c5a4c19d14580968074a1ff2248b3ea3a0b57a"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ilasm/9.0.0-preview.2.24080.1/runtime.osx-x64.microsoft.netcore.ilasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
+  (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.ILDAsm"; sha256 = "0d4879e7d02cdd818ff97f1cb1400ef00ad253691d561a354d34606e818e9c21"; url = "https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/a54510f9-4b2c-4e69-b96a-6096683aaa1f/nuget/v3/flat2/runtime.osx-x64.microsoft.netcore.ildasm/9.0.0-preview.2.24080.1/runtime.osx-x64.microsoft.netcore.ildasm.9.0.0-preview.2.24080.1.nupkg"; version = "9.0.0-preview.2.24080.1"; })
 ]
diff --git a/pkgs/development/compilers/dotnet/9/release-info.json b/pkgs/development/compilers/dotnet/9/release-info.json
index 8e87703ce8649..584fa364f8c75 100644
--- a/pkgs/development/compilers/dotnet/9/release-info.json
+++ b/pkgs/development/compilers/dotnet/9/release-info.json
@@ -1,5 +1,5 @@
 {
-  "tarballHash": "sha256-eLvH9Voeey9NvGy515CMGuvQIBgQoP3Abvbv0sZNkkY=",
-  "artifactsUrl": "https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.9.0.100-alpha.1.24067.1.centos.8-x64.tar.gz",
-  "artifactsHash": "sha256-qH8MYzgEk0h9GwvZLUbmIM5Fe6uIAZrwHT/p8DIdy8E="
+  "tarballHash": "sha256-RbKpnIwSVPhOFCMGtm+Q6p1m0tiAEAV8YwAdIobzMXA=",
+  "artifactsUrl": "https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.9.0.100-preview.2.24104.1.centos.8-x64.tar.gz",
+  "artifactsHash": "sha256-Ou1Efq+iWhsqsIDNPZeceoyxGhBST7MOQNpSrWUUKRI="
 }
diff --git a/pkgs/development/compilers/dotnet/9/release.json b/pkgs/development/compilers/dotnet/9/release.json
index 1b1042c88b886..3e600587f0747 100644
--- a/pkgs/development/compilers/dotnet/9/release.json
+++ b/pkgs/development/compilers/dotnet/9/release.json
@@ -1,10 +1,10 @@
 {
-  "release": "9.0.0-preview.1",
+  "release": "9.0.0-preview.2",
   "channel": "9.0",
-  "tag": "v9.0.0-preview.1.24080.9",
-  "sdkVersion": "9.0.100-preview.1.24101.1",
-  "runtimeVersion": "9.0.0-preview.1.24080.9",
-  "aspnetcoreRuntimeVersion": "9.0.0-preview.1.24081.5",
+  "tag": "v9.0.0-preview.2.24128.5",
+  "sdkVersion": "9.0.100-preview.2.24158.1",
+  "runtimeVersion": "9.0.0-preview.2.24128.5",
+  "aspnetcoreRuntimeVersion": "9.0.0-preview.2.24128.4",
   "sourceRepository": "https://github.com/dotnet/dotnet",
-  "sourceVersion": "1337fabdb46697adfbfe4a6f681fc1c2cb5d5b66"
+  "sourceVersion": "14eb446d301de0fa50afd32daf0dcbf1b3716ae5"
 }
diff --git a/pkgs/development/compilers/dotnet/combine-deps.nix b/pkgs/development/compilers/dotnet/combine-deps.nix
index 90db947667a89..af21c3aa248ed 100644
--- a/pkgs/development/compilers/dotnet/combine-deps.nix
+++ b/pkgs/development/compilers/dotnet/combine-deps.nix
@@ -38,7 +38,7 @@ let
     (map (changePackageRid package) otherRids);
 
   allPackages =
-    sortOn (package: [ package.pname package.version package ])
+    sortOn (package: [ package.pname package.version ])
     (concatMap expandPackage packages);
 
   fetchExpr = package:
diff --git a/pkgs/development/compilers/dotnet/common.nix b/pkgs/development/compilers/dotnet/common.nix
index e88ddfb3e37f1..a757dd36d17b2 100644
--- a/pkgs/development/compilers/dotnet/common.nix
+++ b/pkgs/development/compilers/dotnet/common.nix
@@ -38,7 +38,6 @@
       --fish ${./completions/dotnet.fish}
   '';
 
-} // lib.optionalAttrs (type == "sdk") {
   passthru = {
     tests = let
       mkDotnetTest =
@@ -79,10 +78,13 @@
       '';
 
     in {
-      version = testers.testVersion {
+      version = testers.testVersion ({
         package = finalAttrs.finalPackage;
-      };
-
+      } // lib.optionalAttrs (type != "sdk") {
+        command = "dotnet --info";
+      });
+    }
+    // lib.optionalAttrs (type == "sdk") {
       console = mkDotnetTest {
         name = "console";
         template = "console";
@@ -106,7 +108,7 @@
       };
 
       web = mkDotnetTest {
-        name = "publish";
+        name = "web";
         template = "web";
         build = "dotnet publish -o $out";
         runInputs = [ expect curl ];
diff --git a/pkgs/development/compilers/dotnet/fix-tmp-path.patch b/pkgs/development/compilers/dotnet/fix-tmp-path.patch
deleted file mode 100644
index 54d7cf2c81dff..0000000000000
--- a/pkgs/development/compilers/dotnet/fix-tmp-path.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From e0bd79c04c3647dd5abec5e60c031b1f2762a84c Mon Sep 17 00:00:00 2001
-From: David McFarland <corngood@gmail.com>
-Date: Wed, 10 Jan 2024 02:25:46 -0400
-Subject: [PATCH] fix-tmp-path
-
----
- build.sh | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/build.sh b/build.sh
-index a1224e4369..555a88fc95 100755
---- a/build.sh
-+++ b/build.sh
-@@ -211,8 +211,8 @@ elif [ -d "$packagesArchiveDir" ]; then
-   if [ -f "${packagesPreviouslySourceBuiltDir}}PackageVersions.props" ]; then
-     packageVersionsPath=${packagesPreviouslySourceBuiltDir}PackageVersions.props
-   elif [ -f "$sourceBuiltArchive" ]; then
--    tar -xzf "$sourceBuiltArchive" -C /tmp PackageVersions.props
--    packageVersionsPath=/tmp/PackageVersions.props
-+    tar -xzf "$sourceBuiltArchive" PackageVersions.props
-+    packageVersionsPath=$PWD/PackageVersions.props
-   fi
- fi
- 
--- 
-2.40.1
-
diff --git a/pkgs/development/compilers/dotnet/patch-npm-packages.proj b/pkgs/development/compilers/dotnet/patch-npm-packages.proj
new file mode 100644
index 0000000000000..1096799f6f64c
--- /dev/null
+++ b/pkgs/development/compilers/dotnet/patch-npm-packages.proj
@@ -0,0 +1,5 @@
+<Project>
+  <Target Name="PatchNpmPackages" AfterTargets="RestoreNpmPackages">
+    <Exec Command="source '$(RepoRoot)/patch-shebangs.sh' &amp;&amp; patchShebangs %24(find '$(RepoRoot)' -name node_modules -type d) 2>&amp;1"/>
+  </Target>
+</Project>
diff --git a/pkgs/development/compilers/dotnet/patch-nupkgs.nix b/pkgs/development/compilers/dotnet/patch-nupkgs.nix
index 0f1173056f047..572211b1b378f 100644
--- a/pkgs/development/compilers/dotnet/patch-nupkgs.nix
+++ b/pkgs/development/compilers/dotnet/patch-nupkgs.nix
@@ -38,11 +38,15 @@ in writeShellScriptBin "patch-nupkgs" ''
   }
   cd "$1"
   for x in *.${buildRid}/* *.${buildRid}.*/*; do
-    [[ -d "$x" ]] && [[ ! -f "$x"/.nix-patched ]] || continue
+    # .nupkg.metadata is written last, so we know the packages is complete
+    [[ -d "$x" ]] && [[ -f "$x"/.nupkg.metadata ]] \
+      && [[ ! -f "$x"/.nix-patched ]] || continue
     echo "Patching package $x"
     pushd "$x"
     for p in $(find -type f); do
-      if [[ "$p" != *.nix-patched ]] && isELF "$p"; then
+      if [[ "$p" != *.nix-patched ]] \
+        && isELF "$p" \
+        && patchelf --print-interpreter "$p" &>/dev/null; then
         tmp="$p".$$.nix-patched
         # if this fails to copy then another process must have patched it
         cp --reflink=auto "$p" "$tmp" || continue
@@ -50,8 +54,16 @@ in writeShellScriptBin "patch-nupkgs" ''
         patchelf \
           --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
           "$tmp" ||:
+        # This makes sure that if the binary requires some specific runtime dependencies, it can find it.
+        # This fixes dotnet-built binaries like crossgen2
         patchelf \
-          --set-rpath "${binaryRPath}" \
+          --add-needed libicui18n.so \
+          --add-needed libicuuc.so \
+          --add-needed libz.so \
+          --add-needed libssl.so \
+          "$tmp"
+        patchelf \
+          --add-rpath "${binaryRPath}" \
           "$tmp" ||:
         mv "$tmp" "$p"
       fi
diff --git a/pkgs/development/compilers/dotnet/stage0.nix b/pkgs/development/compilers/dotnet/stage0.nix
index d12d1a6c3d13a..e0caad3f9a674 100644
--- a/pkgs/development/compilers/dotnet/stage0.nix
+++ b/pkgs/development/compilers/dotnet/stage0.nix
@@ -63,6 +63,15 @@ let
       [[ ! -v prebuiltPackages ]] || ln -sf "$prebuiltPackages"/* prereqs/packages/prebuilt/
     '';
 
+    buildFlags =
+      old.buildFlags
+      ++ lib.optionals (lib.versionAtLeast old.version "9") [
+        # We need to set this as long as we have something in deps.nix. Currently
+        # that's the portable ilasm/ildasm which aren't in the centos sourcebuilt
+        # artifacts.
+        "-p:SkipErrorOnPrebuilts=true"
+      ];
+
     passthru = old.passthru or {} // { fetch-deps =
       let
         inherit (vmr) targetRid updateScript;
diff --git a/pkgs/development/compilers/dotnet/stop-passing-bare-sdk-arg-to-swiftc.patch b/pkgs/development/compilers/dotnet/stop-passing-bare-sdk-arg-to-swiftc.patch
index fa2606c0c6cd9..ac840ee273dbb 100644
--- a/pkgs/development/compilers/dotnet/stop-passing-bare-sdk-arg-to-swiftc.patch
+++ b/pkgs/development/compilers/dotnet/stop-passing-bare-sdk-arg-to-swiftc.patch
@@ -22,7 +22,7 @@ index b847f5c3cd..cf8344ead0 100644
  add_custom_command(
      OUTPUT pal_swiftbindings.o
 -    COMMAND xcrun swiftc -emit-object -static -parse-as-library -runtime-compatibility-version none -sdk ${CMAKE_OSX_SYSROOT} -target ${SWIFT_COMPILER_TARGET} ${CMAKE_CURRENT_SOURCE_DIR}/pal_swiftbindings.swift -o pal_swiftbindings.o
-+    COMMAND xcrun swiftc -emit-object -static -parse-as-library -runtime-compatibility-version none ${SWIFT_ARGS} -target ${SWIFT_COMPILER_TARGET} ${CMAKE_CURRENT_SOURCE_DIR}/pal_swiftbindings.swift -o pal_swiftbindings.o
++    COMMAND swiftc -module-cache-path "$ENV{HOME}/.cache/module-cache" -emit-object -static -parse-as-library -runtime-compatibility-version none ${SWIFT_ARGS} -target ${SWIFT_COMPILER_TARGET} ${CMAKE_CURRENT_SOURCE_DIR}/pal_swiftbindings.swift -o pal_swiftbindings.o
      MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/pal_swiftbindings.swift
      COMMENT "Compiling Swift file pal_swiftbindings.swift"
  )
diff --git a/pkgs/development/compilers/dotnet/versions/9.0.nix b/pkgs/development/compilers/dotnet/versions/9.0.nix
index 795e25956c05a..1295f9b35c017 100644
--- a/pkgs/development/compilers/dotnet/versions/9.0.nix
+++ b/pkgs/development/compilers/dotnet/versions/9.0.nix
@@ -4,143 +4,144 @@
 
 let
   packages = { fetchNuGet }: [
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "9.0.0-preview.1.24081.5"; sha256 = "1li21dfibwmzrcnf1jlaybhrxjk3cb9vqyy700s5bqwcw69px7dh"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.1.24081.5"; sha256 = "1gnilvb9ys76snhlv2vnv3h6xp9a6hb6pjjvlaawvl71y2cpjy4q"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.1.24081.5"; sha256 = "05gvwi0i1s3rsi43cb3v8cd2pzr0qzccq8vhf4wm9rj63j0flz9y"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.1.24081.5"; sha256 = "0ivnyyjd38fwma2426bxxnbm033ai9f857n04gs73vybm3fs0f4v"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "9.0.0-preview.1.24081.5"; sha256 = "1bc5bh3qfsx4xdsmr6a6lxc58kqb7y68w12r872zfq5isz5hpq75"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "9.0.0-preview.1.24081.5"; sha256 = "1lqwczkgi972clvplj8clcdprlh5ydjsdv7343k3f1i32g8s57cq"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "9.0.0-preview.1.24081.5"; sha256 = "1z5fplrqr4k2lddjk2yzjxd398v21w2lxwb5q3hc2ll65f6grmhz"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "9.0.0-preview.1.24081.5"; sha256 = "15zl1ah878wdd4xxywj1kj110vjizmyvbnyq3fgb87cq9rl4b7fi"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "9.0.0-preview.1.24081.5"; sha256 = "0cqx20qpy35nc6hyzi8j2l96bliia5ks9dkvbjx5cykhar2bnqrl"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "9.0.0-preview.1.24081.5"; sha256 = "0nfzz7ibpmrsmzivs8ja7w8qw103bv34d69jw1704m5ha4ybca8v"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.1.24081.5"; sha256 = "0a7sj4f6b9337xxdr1ckrnmar189bg8j6zx82qi6vppwsiwsgqz0"; })
-      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.1.24081.5"; sha256 = "06s1zpp5l3x7fxbrm78bnq26p1wfqn2282py7f26d3fn6hx692gg"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "9.0.0-preview.1.24080.9"; sha256 = "1qh7988cdbvmr7zqfwidpw8fx7hhjym1cfsyxf2hvzv7srbkhmr4"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "13x14l513qhgs2dspkqkmxy6f0jr8ajsvkpm0apcs3xp2yz4p761"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "14azy981h13ngwipn2k2nf0p09sqmv0j79xpg2nv1hrznwxvfckk"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "1qssmhwlpp0hcbml2vh2flxhmmmvnllvkgczbrv7pmq0h38r3ydl"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "1ql0prr6md6dm3dgxxyfvlw773klnlhd2hk6r73fd0s68xkd1qr2"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0a6dl6m93xx9c0yx574zx4cfyvvxaj41yw43d2g3sclsrrn4b9pp"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0962lnkfdp6bv7rv4ji5wsrcs0hjjp4yzlnf4hmz90mqd3i05w4p"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "1dxdax2z2bdwlwjm6nxiwk252d0fi9rdx0rhx7d8vam5gm336mhr"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "9.0.0-preview.1.24080.9"; sha256 = "1d9pfs06hip5d80zsmgbsfffbzmdmc29h7bl92cqf3p5hkj53zf7"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "9.0.0-preview.1.24080.9"; sha256 = "0nsdhf5pr2id2i3l7fhqn24d234isfd0kv3dr89pgfh3zprs67zd"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0nzzf2m4wy66cyp0by0594xdq090b2rzhz6f9yadf3mj3427v9lr"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "1sk76h47fdbp2dlh9gqd89fa9gdhycsq1im6l2va30x9yj4909qa"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0dchamrhqb4bml9p1dhq92wykm6b3swqnqax8ficnxpy0i2qd01q"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0k235sbrrx3hyl13qvri779l20l9bl2534g8rxl5gvxicfjz25kp"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "1sn8k2isahx2vkiwb94ry4cs96f71y2q8x5p6k8zql9j1v7vqaij"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "05448mdb2sqvxlfipfaj3zjc4pkn2q55jxjyynhg94v0rxssm8fx"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "1xj7hs7v76fjyr4lldipf8wslxf36a9l8g2czpsz3bjfcaydj1nb"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "9.0.0-preview.1.24080.9"; sha256 = "0g9zgql716iwh76jp9bj5h0jp935chnxv5ah0i7fa4g4k84y45ww"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "122nia5gmq0riqdpgrz3aqfm7yp02xn0lxpljmah682h06mynvl7"; })
-      (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "0clh5mphnai7xqb4f9r0dn23i6n4h73xf1hxi3hmxw6zjnplngpj"; })
-      (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "141ffygbqny0x6k4lkndfi2z545c2r41rlc5hjw8b2sy99rfpjny"; })
-      (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "0ddl3kgff8b3np6axnl7gyhhzwic6vhy0b5bz4a0dvapwlpjb0a6"; })
-      (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "1vmpl25sp4hrkx6hrrqnp0ifqr9w9vdim4sb5igflwggdmdyqlif"; })
-      (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "0id7j171maci60wnvy41gibl4x9fn8gl6cg787dy4a9rnn2452m6"; })
-      (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "0d0ynkczks7birpj5n3bka1fh998syci3h30wdqh68b00svqfvd2"; })
-      (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "1hbm9ng1j2gia5rpynmhyk404041bbkdc6y483n4wzyyl538b6wq"; })
-      (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "0k24rw258glp3mihxwb0r2pnp6a4bcsjb21asa9jsa1w2dsvlisf"; })
-      (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "1plgpd6q1q8xifr40hv67amvmq4sl9hirh1r2i7rd2bybga301fs"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "9.0.0-preview.1.24080.9"; sha256 = "122wyzf8ky7h6qhaj4nhffgb51xnix9fhh1niqcli0j7n8qcx6p1"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0af0fpwv3vk0v8448kl3z13xs3063qm7901wx919qmb4a9gkw6x2"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.1.24080.9"; sha256 = "06zh10z4ij5rsnnvsbixp99y5ss6jsb5yy78il5axby9kny75r0p"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0p9rnp355q9hbl88wjkx4cjkagwz87ggxnrc823qkcxxkf56wscj"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "9.0.0-preview.1.24080.9"; sha256 = "1gbb7h757ilffgg35smqa890rzz0667nml2ybdrii2a35prh537b"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "9.0.0-preview.1.24080.9"; sha256 = "1n8q387aqj7vr7frlmwj8ikm67kamlk5fdj788cpspg4pr473g5y"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "19sc62mm0abmzr55nmk32ygxfqbc2jm0xydsap714b2hgl3b4lq3"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0602a6qybccsyif6qd6k8xyrkwd4vw8yj12jl910vj2ba0anzhjp"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0fgn04vzb1821ii7d2k4zzhf0k4x4zkz01c90z0dsazjna80nyav"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0868zrfwa4lhqrq5nxc97n0i36w97ydl8k97w25d6iqlbs43pq4r"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0a1c9f9nwwlai7lzg331as5rnzk2wrnks9wx0azh4z4l6sag5r9v"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "1xlfqpnkkxbsw3wylvxcy406lkb3qlfn6kisa6l50zxklxw11xsv"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "9.0.0-preview.1.24080.9"; sha256 = "1shnmvbmf0rl7ch92sf561hrwvahgiicral5m6wrhifnnzadjajv"; })
-      (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "02dq65n6kcpbkk38ic4g1rq38qfhxj7rx5aj2174qs9kq477rmsm"; })
-      (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.1.24080.9"; sha256 = "1xqpfdgsdzafyfds021cl1sc5bcg146gg1hn7xln68j965im02yr"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "9.0.0-preview.1.24080.9"; sha256 = "17yp1b13l3b3arivms1b2ydg8mlysyjqnk50b2qfhp5l3i0y1sqr"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "191qbl3zjwghwjlv958cdv0cslz4xkhb1k3cq7bi071zlmvs6yph"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "05ay8n84f1f7vrhv71z6zjn7qm5vjgqn6flk9h6k4c1ld9w2nx8l"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "9.0.0-preview.1.24080.9"; sha256 = "1a01xb92qgg0304z9z7xllnawi73b3pp2aczvchjsyj94ifx07zb"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0mjl5l56a2kdcdnjnmaaw4rw0ijfcffq7qjcva1n6fzfzw45pdpl"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "06hdjvnmqnxi621s2fg4n60sipa5660g2hik0pnmyppcp9218n5z"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "9.0.0-preview.1.24080.9"; sha256 = "0y9506n271qaqvkasmfqnk83bxgi53hzcwdn6dqlkbdh2drsq7f4"; })
-      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "9.0.0-preview.1.24080.9"; sha256 = "133rjr7cd18srl4d7rp3kadbwczwb8kj2z46hhim5v4zz3w3hk15"; })
-      (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.1.24080.9"; sha256 = "1cv4prjb7qij28j8qv5psgxjkfwhgcpkgwq56c8c1lajzabyblgw"; })
-      (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.1.24080.9"; sha256 = "09qs0xzv91lscwarjgr089mx8sgrqhafi5r38gvr1q2brpgz13qi"; })
-      (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.1.24080.9"; sha256 = "1yby7m761232izvi60m13b2w4ar0ww4r8g9q61glgac36lqgbw0b"; })
-      (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.1.24080.9"; sha256 = "1ms7rv2ww8cdrzr6vq5rr7ysac4znfbyp8c6sd887vy2a6g5kc9p"; })
-      (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.1.24080.9"; sha256 = "13ra7s6hhfi8yszcf45c3wml1jhjjrh6r49linpwaz8p71rpr748"; })
-      (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.1.24080.9"; sha256 = "13411aghpjxkip2ddq0pkg7b4gmy1qr9migfbpd2nc7287gngd72"; })
-      (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.1.24080.9"; sha256 = "16dw2qixs6bn16inplwc57x4kbwkd0amaqzhsrf1wsaajal4fh5q"; })
-      (fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "9.0.0-preview.1.24080.9"; sha256 = "0sxas6zxpfwrz6bvkw9jyraprksvrgm92hccispxp7yh8mjkhcr0"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm"; version = "9.0.0-preview.2.24128.4"; sha256 = "0sxv7581axjyc9d8q2ij0rizbf24d7lrfqphnihxbf2gnphbixqa"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "03zyr7dn151hlzgjkks4vixh5air3h4d2ml188521p3sv5kkhr63"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "054qw93b9gw6fm9iaiki8msjglpw5nhchh96v42hfpggdk84ki1x"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "11f8hmw1rxqcf3qsan6mjd7vrq442hsh90fpmx1gkfflibj8psjz"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "1bpa4l0n3ahyk5s62ns35pr13idjnvbmahnpvjg2ay2n8fhr4wrh"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "1z6gwynwfndhkv3gkqqaxbahx48ajx5ir2dfm8rfxg7hrc3x8sdx"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "0vs4n68qlmqgizbn2i4h1wascx416slw0dmdib3dzxcivzfrv51j"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "9.0.0-preview.2.24128.4"; sha256 = "0cjhbli0p8b0nxvrp75dzk4pm112pwqy9cl1ajgr6ra6g3n9jypf"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.win-x86"; version = "9.0.0-preview.2.24128.4"; sha256 = "0152n8y2gx8jcws6hrqfb91bsd3bfrk89hvls7rw8mazg5hac3yd"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; version = "9.0.0-preview.2.24128.4"; sha256 = "1m7ynhxz62msv3fzaxpnb1lq5369wn8bwfbk70bxr32fz5smnar0"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.2.24128.4"; sha256 = "11dg6qs92lc9n1n3h6jmi8iz62na9l3xhk8h7x0k92pcwax8dcwb"; })
+      (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.2.24128.4"; sha256 = "1rq42nly7hq6bng7x39sh6zgklfsk44mhzxf91nb0nna5rvqy2v5"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "0plcb424mj45pwd3lwsshrqqsmfcxfhzv9gwcsx4vmhk4p0lgynd"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1h3hq06csy8nn1ms39gi4gpz1vs4rci09w602pal9cdn3qr946yl"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a1h62xisa7jy0ac0mj5kyqnhs4mrhnr2mnj56i3savyhj0n53gb"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0bz3ckck2ixyk8brjl5si6d161ml4kdzm4qk85ghvglc6ac192hx"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "06jfjb853z5jxwxw107xbii7xlj9ardhh4k59bnck79vplh7abqd"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0521d38bwh94lzv3fkj6yir8v4zx1riiaiwk860303ljp79iyxdp"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1wjybjhalhdbxndyalgy3alkr8ra8yj88g7h7ysjlsfxp4gx3xha"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0xgfbi9r6hnmqh18z2smfp04693fy3l66y30v7337jlvamxmz0hi"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.win-x86"; version = "9.0.0-preview.2.24128.5"; sha256 = "0mjgb3vnkx845lrx7w99q62c5s12n924pi5fh37c52jn1mvaj1za"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "1adjb3wp3zxjj3vgyf7xk34sqv3zxavss9v2d1zr4hdvrbwsv2hp"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1w00m6hnalndscssc6prsm4dhbn43fclm20h39icll2z4p2jyly2"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "16087b037vlrra853ls9iardxl1g14zm57q3flrylmd8wdhm7caj"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0p5kq3ccrc5v5cfj7fvqliyh9k0vrgxmw11mcmlv0s2m1ziikvgf"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0f9g2vj3vb9q3ryqywn76604ah276whpkn93r876sxqkvgsdbnvq"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0jdq6s36y9733sqsq9ppr08642sv3dgmjg2c36wf0ag1v3vlz2ab"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0lc5d6jkcz31znv9bi0li4xy1j3kji48xww8v2df3dsjgq62bbjj"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "11h38px2i2hw0g1y5annpffn0xlq26m29xm5mvnjdjsz05khnwhb"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.win-x86"; version = "9.0.0-preview.2.24128.5"; sha256 = "0a7jr03d66jzzzyajs552i1qn0jgzq1rlzpqch30k51ssnrbljpg"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a4han0cbhwj63ja5lnkjbaa012769j69hir21nc4k706hyf09pk"; })
+      (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "09s4mdzbgmrm5v3a4d9zdw918cwpsg9r84ywla1na6dh6i0400w5"; })
+      (fetchNuGet { pname = "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "0c46wbnn1jh6k05khjysmmn0x69p0nh6b17lszvbr2p6v7nbfa78"; })
+      (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1izlvyk9xl0s888byw2c1n4jpvd6hh1yqx53z5mh0zi9jmc430mi"; })
+      (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1sr07f4zyyllmkzkqs0lqa4b01ig4bcpxghhn37nys7ab2f15619"; })
+      (fetchNuGet { pname = "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1l12jxmlvy116a9dzfqn28ain7c4nwk3fawiw54qiaikc1dbz8zc"; })
+      (fetchNuGet { pname = "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "0bcr4zbl1kpnbk34m2i221rb6bl1jiyylak0hvs790bldj47c6lk"; })
+      (fetchNuGet { pname = "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "089dll9w3mgf9xx22gk5z2wgw01ydwvw5snn3ij2jwrjakz611hc"; })
+      (fetchNuGet { pname = "runtime.win-x64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "09adk3i17biq3sjzx4amnxjvp6viwch3p6nklb3ybknsncn9ix5v"; })
+      (fetchNuGet { pname = "runtime.win-x86.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1jfi2wzl5lrij3h4v0ix38vs3g57wg2nmv8c7iwmf2k4i8nf523y"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-musl-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "1030gjhrwqwc01sqdi88ynz1phh4ccpjqfnbs0i3kwjb3sg3iy3k"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Host.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "12136vhid3aj3gn40vfrilcypr9n9izhx110q65c57m0kgg41k13"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-musl-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "0nnsfxbrf8m6zn0s021c6dvq4kif1b2cv2l6rlw4986y92g6147p"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1fhfsjp1caxnn73is92zrrmpinyr5hkzd7mcp1dnrsqllx6v1w52"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Ref"; version = "9.0.0-preview.2.24128.5"; sha256 = "0syi6dlgmvpnfcgkvnwyf1i7gnn1k71nd6rc6fc9b0jwi4ys5y3n"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "08ran7vyfn2f4hhj1hc1hfdw1c2k6whbjyvkj8p78f66zqkh11ic"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "02pk28mghl4jqzyv10ab92iidg581lnpsj49pfw818w324dk2hpp"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "01yagr5c4d3347a3ljbsjz27420igvzf856275nj7yn6psini72p"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1wa54f15xp32277h85hxamxdyj62yldi7vpmldsqds3n7r2wg3q2"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a138w5bh1d5ilq4ynpxcawfj6n1dl1jqa5z1a7p7fgry2362pp7"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0nwkqpn1qsk45nqxc4ih3bi4ik13a0hck0jbkc5jrl9301839l15"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1a1iw32fmhapsr0r7mm6iz69clwvnhqg6q4jqbdlp12id2v9r3l6"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.Mono.win-x86"; version = "9.0.0-preview.2.24128.5"; sha256 = "06j1scfv8vb3b9n3jpa0nsx6rxk413xsjr7fpxgsiraqfi9cl4ch"; })
+      (fetchNuGet { pname = "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "15v4idsw83bfypqv17r8a8vwvpsf3fa30gvja9zzbj4v639s2n28"; })
+      (fetchNuGet { pname = "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost"; version = "9.0.0-preview.2.24128.5"; sha256 = "1nqjazr7dwsahy6qix5fa1bby8qhcxqwpvpp7aj3slpgp88ag795"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "0i2plc6nr1fsx0wa6ff2fda3xig6aaxcnb7v9l1w1da2qw767f23"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1h2sd4pcsh1p1fim0jydl8i70pj54lxywwqdz31b3x7x7r05hjgw"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-musl-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1f30y1hwcprm1j549v00kq9w5a3jxls7z6pryyjx379axaspd805"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm"; version = "9.0.0-preview.2.24128.5"; sha256 = "1b09s5v153wxv0mqr5nvhym5dvavc7jilmflzs6wh7jjn1gq06q8"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1z0s40i0nnxxwhgh85aacfh6qd1sygwz1z94hppnmaamdhqmf6wg"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.linux-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "13w3kpyilk1n2vy6lnm5h44zskblfnrhdnbjx4f13hwzc1127a2b"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-x64"; version = "9.0.0-preview.2.24128.5"; sha256 = "0r79zrqxvvkg1f4vb8yqaa22fb7ix93fkkwsmqpj8f43z71aizjh"; })
+      (fetchNuGet { pname = "Microsoft.NETCore.App.Crossgen2.osx-arm64"; version = "9.0.0-preview.2.24128.5"; sha256 = "1l3k9sgiqjvxaagvbfza9q136p36kixl434xg9qhzr8rl6m2g2ih"; })
+      (fetchNuGet { pname = "Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1dq6mir5n319a7pjzgvhxlm90py4wslx6y4n68x1g8ifd97cxnhy"; })
+      (fetchNuGet { pname = "runtime.linux-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "07y3hhf3h4p59wyv25wmb58wzayhrqp4wawb777k8x6r448c5xaz"; })
+      (fetchNuGet { pname = "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1kyigz0zzlbl22cr31na8lzf7595zvysnck44xlay1if99crkndg"; })
+      (fetchNuGet { pname = "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "0rr2ka6ivsx54p9c2k4gp4aligkw605j2z1wkviq0aa7mrn2vjiw"; })
+      (fetchNuGet { pname = "runtime.linux-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1cmjncpcyiyn3mpzlhh5iya2b8pjl37mpssr8wbvhlzi86f6sh1n"; })
+      (fetchNuGet { pname = "runtime.osx-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "11nl8nqkhx012nw1wgjss05sdxkz4j5k5frzbpj19n46pxh3mx9v"; })
+      (fetchNuGet { pname = "runtime.win-arm64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "0lcrwv09qp47vli4xa6nsjvgglbz9add3pqa6282pl5b221q83rc"; })
+      (fetchNuGet { pname = "runtime.win-x64.Microsoft.DotNet.ILCompiler"; version = "9.0.0-preview.2.24128.5"; sha256 = "1i83fpfx50z1yadrfg40m91r2qmji6v1vyipaqp6863646z2fa4z"; })
+      (fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "9.0.0-preview.2.24128.5"; sha256 = "11n78chcg40lj7cjadsmaynczbviqmw1kp1araixnrkmy2xpdzqd"; })
   ];
 in rec {
-  release_9_0 = "9.0.0-preview.1";
+  release_9_0 = "9.0.0-preview.2";
 
   aspnetcore_9_0 = buildAspNetCore {
-    version = "9.0.0-preview.1.24081.5";
+    version = "9.0.0-preview.2.24128.4";
     srcs = {
       x86_64-linux = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/14b2b268-4d58-4f7b-9708-46c5a0a5b868/3cfbd27c7e2aabc0ca70f474709a4767/aspnetcore-runtime-9.0.0-preview.1.24081.5-linux-x64.tar.gz";
-        sha512  = "29bfe0b5b72608eba97151909308a67a47dc299902a46bf1a22d67bb5f8a0c87c6f4533c0c2d4679f9440f9ccccf549c434a4280c101f7633bdbdcf049c95817";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/e3e81a61-4493-433a-ac40-ce2bceb3370d/ce1c59a7054d200dd24a7e4987666b8c/aspnetcore-runtime-9.0.0-preview.2.24128.4-linux-x64.tar.gz";
+        sha512  = "9d836edc539ace64ef8fa883bdfc881d89f4cf30d048640246dae9d54e46e79f2e82ebcdf366c1b69017d86d1bf1496acef5d56c3133297ea0bddb2df2eb4523";
       };
       aarch64-linux = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/3f2586f3-89fd-44ad-aae2-4c241f72996f/f973c7140305733792dd25b466e37606/aspnetcore-runtime-9.0.0-preview.1.24081.5-linux-arm64.tar.gz";
-        sha512  = "118967e64995d7c242738bf806928ecc52cfae3b0e0429a6951047eaf37d27bdde0adc0c6dc74e32d61b69565f7666cbfd4658396c37988e5d343debcc15bdf6";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/cb8d7d43-e403-44b3-9ee8-477a947f3e6b/3e38a543b6b9144e0fed12cf18eae7f9/aspnetcore-runtime-9.0.0-preview.2.24128.4-linux-arm64.tar.gz";
+        sha512  = "6f7a5575d02197f1908c56d580f0a9049f393ae68a4ad4b73935e981d9c6766e028463d2828d3ba0aeb4049237516fee2e116196e790948fefd65436ea804f35";
       };
       x86_64-darwin = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/2e9a9af2-f1dd-467a-85f3-430f5142bf0b/6ce0853ee69a127bb767270a737f6467/aspnetcore-runtime-9.0.0-preview.1.24081.5-osx-x64.tar.gz";
-        sha512  = "3ed80631a3ca0a4684a70fc0f17d46257a63cc71c7497c958accb4d329eff4a7c832a29c028b608798fbed0b82e2c5b7d5533c57dff2188d4142559b57341192";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/dbbdbf43-8860-4aae-b1aa-57d44f976cc8/f4f6c6c4a740de95a332ed2c693d1d6f/aspnetcore-runtime-9.0.0-preview.2.24128.4-osx-x64.tar.gz";
+        sha512  = "c0c37a504f8c3113c90b8108f1f784fbb61387475e3eab37d303c49f627e06034ef6e917ee9c780e910cbf565c20050173f240f215fdead4fabb1f3795f3ac08";
       };
       aarch64-darwin = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/a407f4d8-183b-45c9-8153-c889c10630b9/2388fbcc5171e20d05abeb301027df2e/aspnetcore-runtime-9.0.0-preview.1.24081.5-osx-arm64.tar.gz";
-        sha512  = "09746054c291b10bacf3fba8ad147443fd41f42b6b04d9559281bc7d919ddc56ebe7402021997f6f24b745b3292368719cc2142d0eebba76226c5603545b6743";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/9f27cd5d-334b-4dfe-8876-33186210815a/2752edc7662b603b734219e4fee20ba0/aspnetcore-runtime-9.0.0-preview.2.24128.4-osx-arm64.tar.gz";
+        sha512  = "81b5860e68e9e660a535568f96d8058ab6f98dd6b0a8305e3e3358ee721da610c08baf0b59a52d7e30184c39784ab18544f9328a55d8490d400d07be734059a4";
       };
     };
   };
 
   runtime_9_0 = buildNetRuntime {
-    version = "9.0.0-preview.1.24080.9";
+    version = "9.0.0-preview.2.24128.5";
     srcs = {
       x86_64-linux = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/5bcb417b-0de3-461c-9ce2-a9ddd5df1aff/73e36aaa7c2e381724a2adac149eb376/dotnet-runtime-9.0.0-preview.1.24080.9-linux-x64.tar.gz";
-        sha512  = "68f0b89227c8e0b3239477409708c1b0c5cc7d80afd6661dc2150946c66e2130cf560c2471609f0fd063f01ca1d8e72f74beec45ecb519cf58f1cdc434615054";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/3d7900df-fefb-4aba-8dbc-e3d755111a85/c849ddf0290aeae485414ba46ad961c3/dotnet-runtime-9.0.0-preview.2.24128.5-linux-x64.tar.gz";
+        sha512  = "6433959a75103f2f1108bbc16cfe348f9ba04fec1c8f9b6895019241bfcb7b21fab675cc13971f2c1a66b46b044a95f91e1e2b46e6e8bdd893d277906f82545a";
       };
       aarch64-linux = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/7d911f96-acdc-4f5f-b283-cae6d6439bfd/f9e1c8d283ffd1d2e40346926a9c37bc/dotnet-runtime-9.0.0-preview.1.24080.9-linux-arm64.tar.gz";
-        sha512  = "265b7bf094730be765bdaadec3215c1a7c51bff6fb18bb51cff383473e32d1ba821b6d046e0f7fa864400dc5cb68e35943057f5b6ae6e8c411375fc15fdbaf3c";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/ab7bbaf3-c61e-481d-8dbf-b0dc2bcc80f6/0467f280265fe3b33ddcd345b04cdfa1/dotnet-runtime-9.0.0-preview.2.24128.5-linux-arm64.tar.gz";
+        sha512  = "5ae4c5f4acf1465c8aba29a90aa3ee99ab47ffece9f932e9fb4de8937d05feace4c5d3b53d4b8bf226eb99de16a0aad0e71f091827651f0722261513c8a8a2e7";
       };
       x86_64-darwin = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/0307fdd7-b398-4e90-a88b-574d853b769b/ab8938a35b03d8308a7a16331fa65cfa/dotnet-runtime-9.0.0-preview.1.24080.9-osx-x64.tar.gz";
-        sha512  = "f644ce6ee158bd86a4aba21bdd955a3aebb0367b5af618b6e77dc85922bc790b9c33b572606a15f566b2729a90923f66a933159124e803494105a695c890b775";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/8ccc8b00-80b0-48c4-9948-9adfa67f42e3/b93918f628eee154b3400fe05774d1be/dotnet-runtime-9.0.0-preview.2.24128.5-osx-x64.tar.gz";
+        sha512  = "9f83d1d7dbfb8c8df1c7530fed3ddbb1571e60100954051bf07b8ee758edc600d1d988819c91711cd8b4baa05dd97f9900d1edf2ae5035ac74930a920951f380";
       };
       aarch64-darwin = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/079214b6-0ce6-4d6f-a0ac-9bd9072dad0f/14b558eb20224c345f78ea80f7029e11/dotnet-runtime-9.0.0-preview.1.24080.9-osx-arm64.tar.gz";
-        sha512  = "63bf6a57f61c4dcf4e0cdcedb8ff6c76cb702a95d4e0033f17b4cd2a3e800e73ab16c401fb098416404ea5716c725c175f9422250b2a8816c08eed2702cd38e5";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/6401083b-8213-431e-94b3-bb1bba37d792/551aca92ab4da13513ead1e7865d57e2/dotnet-runtime-9.0.0-preview.2.24128.5-osx-arm64.tar.gz";
+        sha512  = "cc7b8626cdec48427ef79f14c0919a09a3500bdc1c2933c6b5cf80886cc590ab20ccbd07bdb3a6081e47b80f372db3b4887b5276a12252887b7360a7f23e9901";
       };
     };
   };
 
   sdk_9_0_1xx = buildNetSdk {
-    version = "9.0.100-preview.1.24101.2";
+    version = "9.0.100-preview.2.24157.14";
     srcs = {
       x86_64-linux = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/f51b05d4-bc43-4290-9b33-aaa212edbba6/e10559d91242409faf5c37cb529de8f3/dotnet-sdk-9.0.100-preview.1.24101.2-linux-x64.tar.gz";
-        sha512  = "e176126d9a12075d91a0ad2b4dd50021a564258742d86560bd216ac36482c763087bd8affc68fe9a8d3c46f61f864bc2c7c2e455739d21614516c4f73fd281fd";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/911f82cf-0f87-46c2-8d70-44fab9a0f3c9/137ec23686722b8119bd62def8d7b117/dotnet-sdk-9.0.100-preview.2.24157.14-linux-x64.tar.gz";
+        sha512  = "c44df5e11791e4b22720834ed7f28102e33ab475670fa8e132d73d5dd03d8f4ed3f4a548deac67a79e06db6f776c9f632eda4503b6fdc9eef7ffb001cc9963c0";
       };
       aarch64-linux = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/e8743929-2c7b-4410-88f5-5f247040b498/ff454c589dc8d5dd9cb42e0950f34a69/dotnet-sdk-9.0.100-preview.1.24101.2-linux-arm64.tar.gz";
-        sha512  = "b7c29e4e4baf2d2ba7b29fc5a080df708c5a915e6fb1ce2ff93ffc8f18e7725fae5d569ab1349ef4b067d05d00886a17c8d1a95e211602db1ee5da820b5edefd";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/b64ba1b3-ad10-40a2-b588-73db9ed9d99d/f772743c20f55a5a8aea3da2e1480676/dotnet-sdk-9.0.100-preview.2.24157.14-linux-arm64.tar.gz";
+        sha512  = "1d591e504352f765a35092394719451c024a628c69efb6a10d0a5d57947c466a004243e799b46147fdf6316a23b4335b1e8fb1fc5513def1dec9f96c6c845dc7";
       };
       x86_64-darwin = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/9956af63-be37-43be-a854-01f3a95e12fe/60d97a3f4f53b33376b8df055a14cf39/dotnet-sdk-9.0.100-preview.1.24101.2-osx-x64.tar.gz";
-        sha512  = "90c6709c54c0f9f4d7100bbf9c3b8136b6468617034c23f6a60dc17092e311539d54b741e149b70f1b6a6e2c6be0aacc948d4c72abac724f47d5ea05e02a2939";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/5d2259a0-cb6e-4079-96fa-e0de6f0448c5/9b299e3cc15adf6153c28c24cba35fef/dotnet-sdk-9.0.100-preview.2.24157.14-osx-x64.tar.gz";
+        sha512  = "a5a02f596e3976e65650d6a780903a755d4d700491c670b4f3c2f167224da632b98ad03ab7a087dc18561c5cc3ae6a3be78d5c6ca2f7312c7d7c417d909a481a";
       };
       aarch64-darwin = {
-        url     = "https://download.visualstudio.microsoft.com/download/pr/cd991bbf-8952-4bd1-83d4-33eb1a810939/3662095e14f91f43c2b3a7e6c55666fa/dotnet-sdk-9.0.100-preview.1.24101.2-osx-arm64.tar.gz";
-        sha512  = "901835cfc277c626d38c7a2bc1a6704115d240812631cd32f4b51833b41ddcd3a4a169a1bbda42a9446eb33b2337f6a8c6410bc3d1bae557c8898d427e2fc8c1";
+        url     = "https://download.visualstudio.microsoft.com/download/pr/30628efc-01f0-468d-baf1-fc487e55093a/4c2bf86dbebb6c522d4d667516dc5930/dotnet-sdk-9.0.100-preview.2.24157.14-osx-arm64.tar.gz";
+        sha512  = "1c7166a594ba6c07d0233aac44428e561e2131f1f1812cdfee75807d19f1fe53f40f9d93e88d4a478c885993424ec2ec7b9aaf8f174332f587e6ff10813680ec";
       };
     };
     inherit packages;
diff --git a/pkgs/development/compilers/dotnet/vmr.nix b/pkgs/development/compilers/dotnet/vmr.nix
index cf1035da2cbd1..3638da1117e9b 100644
--- a/pkgs/development/compilers/dotnet/vmr.nix
+++ b/pkgs/development/compilers/dotnet/vmr.nix
@@ -24,6 +24,7 @@
 , makeWrapper
 , python3
 , xmlstarlet
+, nodejs
 , callPackage
 
 , dotnetSdk
@@ -90,6 +91,9 @@ in stdenv.mkDerivation rec {
     python3
     xmlstarlet
   ]
+  ++ lib.optionals (lib.versionAtLeast version "9") [
+    nodejs
+  ]
   ++ lib.optionals isDarwin [
     getconf
   ];
@@ -108,7 +112,7 @@ in stdenv.mkDerivation rec {
     lttng-ust_2_12
   ]
   ++ lib.optionals isDarwin (with apple_sdk.frameworks; [
-    xcbuild.xcrun
+    xcbuild
     swift
     (libkrb5.overrideAttrs (old: {
       # the propagated build inputs break swift compilation
@@ -121,7 +125,8 @@ in stdenv.mkDerivation rec {
     CoreFoundation
     CryptoKit
     System
-  ]);
+  ]
+  ++ lib.optional (lib.versionAtLeast version "9") GSS);
 
   # This is required to fix the error:
   # > CSSM_ModuleLoad(): One or more parameters passed to a function were not valid.
@@ -138,11 +143,15 @@ in stdenv.mkDerivation rec {
                        (global-name "com.apple.system.opendirectoryd.membership"))
   '';
 
-  patches = [
+  patches = lib.optionals (lib.versionOlder version "9") [
     ./fix-aspnetcore-portable-build.patch
-    ./fix-tmp-path.patch
   ]
   ++ lib.optionals isDarwin [
+    # stop passing -sdk without a path
+    # stop using xcrun
+    # add -module-cache-path to fix swift errors, see sandboxProfile
+    # <unknown>:0: error: unable to open output file '/var/folders/[...]/C/clang/ModuleCache/[...]/SwiftShims-[...].pcm': 'Operation not permitted'
+    # <unknown>:0: error: could not build Objective-C module 'SwiftShims'
     ./stop-passing-bare-sdk-arg-to-swiftc.patch
   ];
 
@@ -196,6 +205,36 @@ in stdenv.mkDerivation rec {
       -s \$prev -t elem -n KeepNativeSymbols -v false \
       src/runtime/Directory.Build.props
   ''
+  + lib.optionalString (lib.versionAtLeast version "9") ''
+    # repro.csproj fails to restore due to missing freebsd packages
+    xmlstarlet ed \
+      --inplace \
+      -s //Project -t elem -n PropertyGroup \
+      -s \$prev -t elem -n RuntimeIdentifiers -v ${targetRid} \
+      src/runtime/src/coreclr/tools/aot/ILCompiler/repro/repro.csproj
+
+    # https://github.com/dotnet/runtime/pull/98559#issuecomment-1965338627
+    xmlstarlet ed \
+      --inplace \
+      -s //Project -t elem -n PropertyGroup \
+      -s \$prev -t elem -n NoWarn -v '$(NoWarn);CS9216' \
+      src/runtime/Directory.Build.props
+
+    # patch packages installed from npm cache
+    xmlstarlet ed \
+      --inplace \
+      -s //Project -t elem -n Import \
+      -i \$prev -t attr -n Project -v "${./patch-npm-packages.proj}" \
+      src/aspnetcore/eng/SourceBuild.props
+  ''
+  + lib.optionalString (lib.versionAtLeast version "9") ''
+    # https://github.com/dotnet/source-build/issues/3131#issuecomment-2030215805
+    substituteInPlace \
+      src/aspnetcore/eng/Dependencies.props \
+      --replace-fail \
+      "'\$(DotNetBuildSourceOnly)' == 'true'" \
+      "'\$(DotNetBuildSourceOnly)' == 'true' and \$(PortableBuild) == 'false'"
+  ''
   + lib.optionalString isLinux ''
     substituteInPlace \
       src/runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.c \
@@ -218,7 +257,7 @@ in stdenv.mkDerivation rec {
       --replace-warn 'libicuucName[64]' 'libicuucName[256]' \
       --replace-warn 'libicui18nName[64]' 'libicui18nName[256]'
   ''
-  + lib.optionalString isDarwin ''
+  + lib.optionalString isDarwin (''
     substituteInPlace \
       src/runtime/src/mono/CMakeLists.txt \
       src/runtime/src/native/libs/System.Globalization.Native/CMakeLists.txt \
@@ -229,34 +268,34 @@ in stdenv.mkDerivation rec {
       src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets \
       --replace-fail '/usr/bin/codesign' '${sigtool}/bin/codesign'
 
-    # [...]/build.proj(123,5): error : Did not find PDBs for the following SDK files:
-    # [...]/build.proj(123,5): error : sdk/8.0.102/System.Resources.Extensions.dll
-    # [...]/build.proj(123,5): error : sdk/8.0.102/System.CodeDom.dll
-    # [...]/build.proj(123,5): error : sdk/8.0.102/FSharp/System.Resources.Extensions.dll
-    # [...]/build.proj(123,5): error : sdk/8.0.102/FSharp/System.CodeDom.dll
+    # fix: strip: error: unknown argument '-n'
     substituteInPlace \
-      build.proj \
-      --replace-warn 'FailOnMissingPDBs="true"' 'FailOnMissingPDBs="false"'
+      src/runtime/eng/native/functions.cmake \
+      --replace-fail ' -no_code_signature_warning' ""
 
     # [...]/installer.singlerid.targets(434,5): error MSB3073: The command "pkgbuild [...]" exited with code 127
     xmlstarlet ed \
       --inplace \
       -s //Project -t elem -n PropertyGroup \
-      -s \$prev -t elem -n InnerBuildArgs -v '$(InnerBuildArgs) /p:SkipInstallerBuild=true' \
-      src/runtime/eng/SourceBuild.props
-
-    # fixes swift errors, see sandboxProfile
-    # <unknown>:0: error: unable to open output file '/var/folders/[...]/C/clang/ModuleCache/[...]/SwiftShims-[...].pcm': 'Operation not permitted'
-    # <unknown>:0: error: could not build Objective-C module 'SwiftShims'
-    substituteInPlace \
-      src/runtime/src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txt \
-      --replace-fail 'xcrun swiftc' 'xcrun swiftc -module-cache-path "$ENV{HOME}/.cache/module-cache"'
-
+      -s \$prev -t elem -n SkipInstallerBuild -v true \
+      src/runtime/Directory.Build.props
+  ''
+  + lib.optionalString (lib.versionAtLeast version "9") ''
     # fix: strip: error: unknown argument '-n'
     substituteInPlace \
-      src/runtime/eng/native/functions.cmake \
+      src/runtime/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets \
       --replace-fail ' -no_code_signature_warning' ""
-  '';
+  ''
+  + lib.optionalString (lib.versionOlder version "9") ''
+    # [...]/build.proj(123,5): error : Did not find PDBs for the following SDK files:
+    # [...]/build.proj(123,5): error : sdk/8.0.102/System.Resources.Extensions.dll
+    # [...]/build.proj(123,5): error : sdk/8.0.102/System.CodeDom.dll
+    # [...]/build.proj(123,5): error : sdk/8.0.102/FSharp/System.Resources.Extensions.dll
+    # [...]/build.proj(123,5): error : sdk/8.0.102/FSharp/System.CodeDom.dll
+    substituteInPlace \
+      build.proj \
+      --replace-fail 'FailOnMissingPDBs="true"' 'FailOnMissingPDBs="false"'
+  '');
 
   prepFlags = [
     "--no-artifacts"
@@ -276,6 +315,11 @@ in stdenv.mkDerivation rec {
     runHook postConfigure
   '';
 
+  postConfigure = lib.optionalString (lib.versionAtLeast version "9") ''
+    # see patch-npm-packages.proj
+    typeset -f isScript patchShebangs > src/aspnetcore/patch-shebangs.sh
+  '';
+
   dontUseCmakeConfigure = true;
 
   # https://github.com/NixOS/nixpkgs/issues/38991
@@ -287,6 +331,11 @@ in stdenv.mkDerivation rec {
     "--with-packages" dotnetSdk.artifacts
     "--clean-while-building"
     "--release-manifest" releaseManifestFile
+  ]
+  ++ lib.optionals (lib.versionAtLeast version "9") [
+    "--source-build"
+  ]
+  ++ [
     "--"
     "-p:PortableBuild=true"
   ] ++ lib.optional (targetRid != buildRid) "-p:TargetRid=${targetRid}";
@@ -300,20 +349,25 @@ in stdenv.mkDerivation rec {
 
     # CLR_CC/CXX need to be set to stop the build system from using clang-11,
     # which is unwrapped
+    # dotnet needs to be in PATH to fix:
+    # src/sdk/eng/restore-toolset.sh: line 114: /nix/store/[...]-dotnet-sdk-9.0.100-preview.2.24157.14//.version: Read-only file system
     version= \
     CLR_CC=$(command -v clang) \
     CLR_CXX=$(command -v clang++) \
+    PATH=$PWD/.dotnet:$PATH \
       ./build.sh $buildFlags
 
     runHook postBuild
   '';
 
-  installPhase = ''
+  installPhase = let
+    assets = if (lib.versionAtLeast version "9") then "assets" else targetArch;
+  in ''
     runHook preInstall
 
     mkdir "$out"
 
-    pushd "artifacts/${targetArch}/Release"
+    pushd "artifacts/${assets}/Release"
     for archive in *.tar.gz; do
       target=$out/''${archive%.tar.gz}
       mkdir "$target"
diff --git a/pkgs/development/compilers/erg/default.nix b/pkgs/development/compilers/erg/default.nix
index aafaf93b814c8..033d6a46b1c6a 100644
--- a/pkgs/development/compilers/erg/default.nix
+++ b/pkgs/development/compilers/erg/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "erg";
-  version = "0.6.33";
+  version = "0.6.34";
 
   src = fetchFromGitHub {
     owner = "erg-lang";
     repo = "erg";
     rev = "v${version}";
-    hash = "sha256-L154Ci2/Kw1NZcc7Sn2ROhrXBxIjZXr3DHHj4dvPHTI=";
+    hash = "sha256-AGBr4Hx/QqImQnm5lQxIgRFY0lrLQv7q++ThCIiWwNY=";
   };
 
-  cargoHash = "sha256-LL+9tu9CnevqOqoYORJ/WxerwPrEEpw/OKhC+0xchIs=";
+  cargoHash = "sha256-mRocHInOrLO72F5hj8+0VddMiE4LMILiJ38ASAQLrBc=";
 
   nativeBuildInputs = [
     makeWrapper
diff --git a/pkgs/development/compilers/ghc/common-hadrian.nix b/pkgs/development/compilers/ghc/common-hadrian.nix
index 465db3a252964..b201379668b1b 100644
--- a/pkgs/development/compilers/ghc/common-hadrian.nix
+++ b/pkgs/development/compilers/ghc/common-hadrian.nix
@@ -350,10 +350,10 @@ stdenv.mkDerivation ({
                     '*-android*|*-gnueabi*|*-musleabi*)'
       done
   ''
-  # Need to make writable EM_CACHE for emscripten
+  # Need to make writable EM_CACHE for emscripten. The path in EM_CACHE must be absolute.
   # https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend#configure-fails-with-sub-word-sized-atomic-operations-not-available
   + lib.optionalString targetPlatform.isGhcjs ''
-    export EM_CACHE="$(mktemp -d emcache.XXXXXXXXXX)"
+    export EM_CACHE="$(realpath $(mktemp -d emcache.XXXXXXXXXX))"
     cp -Lr ${targetCC /* == emscripten */}/share/emscripten/cache/* "$EM_CACHE/"
     chmod u+rwX -R "$EM_CACHE"
   ''
diff --git a/pkgs/development/compilers/go/1.21.nix b/pkgs/development/compilers/go/1.21.nix
index a03f87c2e7b7b..b9694f7d4baa1 100644
--- a/pkgs/development/compilers/go/1.21.nix
+++ b/pkgs/development/compilers/go/1.21.nix
@@ -32,6 +32,7 @@ let
     "mips" = "mips";
     "mips64el" = "mips64le";
     "mipsel" = "mipsle";
+    "powerpc64" = "ppc64";
     "powerpc64le" = "ppc64le";
     "riscv64" = "riscv64";
     "s390x" = "s390x";
diff --git a/pkgs/development/compilers/go/1.22.nix b/pkgs/development/compilers/go/1.22.nix
index ddab1d422b2c6..84a72ac562257 100644
--- a/pkgs/development/compilers/go/1.22.nix
+++ b/pkgs/development/compilers/go/1.22.nix
@@ -32,6 +32,7 @@ let
     "mips" = "mips";
     "mips64el" = "mips64le";
     "mipsel" = "mipsle";
+    "powerpc64" = "ppc64";
     "powerpc64le" = "ppc64le";
     "riscv64" = "riscv64";
     "s390x" = "s390x";
diff --git a/pkgs/development/compilers/kaitai-struct-compiler/default.nix b/pkgs/development/compilers/kaitai-struct-compiler/default.nix
index 7d34bb312cf42..2fd4fba11e3b0 100644
--- a/pkgs/development/compilers/kaitai-struct-compiler/default.nix
+++ b/pkgs/development/compilers/kaitai-struct-compiler/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     description =
       "Compiler to generate binary data parsers in C++ / C# / Go / Java / JavaScript / Lua / Perl / PHP / Python / Ruby ";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ luis ];
+    maintainers = with maintainers; [ qubasa ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/compilers/llvm/12/default.nix b/pkgs/development/compilers/llvm/12/default.nix
index bd87dc5f34f03..d8b673c70f222 100644
--- a/pkgs/development/compilers/llvm/12/default.nix
+++ b/pkgs/development/compilers/llvm/12/default.nix
@@ -1,5 +1,6 @@
 { lowPrio, newScope, pkgs, lib, stdenv, cmake
 , preLibcCrossHeaders
+, fetchpatch
 , libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith
 , buildLlvmTools # tools, but from the previous stage, for cross
 , targetLlvmLibraries # libraries, but from the next stage, for cross
@@ -114,7 +115,11 @@ let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      src = fetch "lld" "0qg3fgc7wj34hdkqn21y03zcmsdd01szhhm1hfki63iifrm3y2v9";
+      patches = [
+        ./lld/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
       inherit (libraries) libunwind;
     };
@@ -258,13 +263,24 @@ let
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
+      src = fetch "libunwind" "192ww6n81lj2mb9pj4043z79jp3cf58a9c2qrxjwm5c3a64n1shb";
+      patches = [
+        ./libunwind/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
-      inherit (buildLlvmTools) llvm;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      src = fetch "openmp" "14dh0r6h2xh747ffgnsl4z08h0ri04azi9vf79cbz7ma1r27kzk0";
+      patches = [
+        # Fix cross.
+        (fetchpatch {
+          url = "https://github.com/llvm/llvm-project/commit/5e2358c781b85a18d1463fd924d2741d4ae5e42e.patch";
+          hash = "sha256-UxIlAifXnexF/MaraPW0Ut6q+sf3e7y1fMdEv1q103A=";
+        })
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/12/libunwind/default.nix b/pkgs/development/compilers/llvm/12/libunwind/default.nix
deleted file mode 100644
index 95e0962b46891..0000000000000
--- a/pkgs/development/compilers/llvm/12/libunwind/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, stdenv, llvm_meta, version, fetch, libcxx, llvm, cmake
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  src = fetch pname "192ww6n81lj2mb9pj4043z79jp3cf58a9c2qrxjwm5c3a64n1shb";
-
-  postUnpack = ''
-    ln -s ${libcxx.src}/libcxx .
-    ln -s ${libcxx.src}/llvm .
-  '';
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ];
-
-  cmakeFlags = lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/12/openmp/default.nix b/pkgs/development/compilers/llvm/12/openmp/default.nix
deleted file mode 100644
index 6040f3d1621a9..0000000000000
--- a/pkgs/development/compilers/llvm/12/openmp/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, fetch
-, fetchpatch
-, cmake
-, llvm
-, targetLlvm
-, perl
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  src = fetch pname "14dh0r6h2xh747ffgnsl4z08h0ri04azi9vf79cbz7ma1r27kzk0";
-
-  patches = [
-    # Fix cross.
-    (fetchpatch {
-      url = "https://github.com/llvm/llvm-project/commit/5e2358c781b85a18d1463fd924d2741d4ae5e42e.patch";
-      hash = "sha256-UxIlAifXnexF/MaraPW0Ut6q+sf3e7y1fMdEv1q103A=";
-    })
-  ];
-
-  patchFlags = [ "-p2" ];
-
-  nativeBuildInputs = [ cmake perl ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/13/default.nix b/pkgs/development/compilers/llvm/13/default.nix
index 429dfe5f1f3ee..e93fb1bf29440 100644
--- a/pkgs/development/compilers/llvm/13/default.nix
+++ b/pkgs/development/compilers/llvm/13/default.nix
@@ -1,5 +1,6 @@
 { lowPrio, newScope, pkgs, lib, stdenv, cmake
 , preLibcCrossHeaders
+, fetchpatch
 , libxml2, python3, isl, fetchFromGitHub, overrideCC, wrapCCWith, wrapBintoolsWith
 , buildLlvmTools # tools, but from the previous stage, for cross
 , targetLlvmLibraries # libraries, but from the next stage, for cross
@@ -139,7 +140,10 @@ in let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      patches = [
+        ./lld/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
     };
 
@@ -296,12 +300,22 @@ in let
       monorepoSrc = src;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
+      patches = [
+        ./libunwind/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      patches = [
+        # Fix cross.
+        (fetchpatch {
+          url = "https://github.com/llvm/llvm-project/commit/5e2358c781b85a18d1463fd924d2741d4ae5e42e.patch";
+          hash = "sha256-UxIlAifXnexF/MaraPW0Ut6q+sf3e7y1fMdEv1q103A=";
+        })
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/13/libunwind/default.nix b/pkgs/development/compilers/llvm/13/libunwind/default.nix
deleted file mode 100644
index d837bc60de370..0000000000000
--- a/pkgs/development/compilers/llvm/13/libunwind/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib, stdenv, llvm_meta, version, src, cmake
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  inherit src;
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ];
-
-  cmakeFlags = lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/13/lld/default.nix b/pkgs/development/compilers/llvm/13/lld/default.nix
deleted file mode 100644
index d506f396f65cd..0000000000000
--- a/pkgs/development/compilers/llvm/13/lld/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, src
-, cmake
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  inherit src;
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  # On Darwin the llvm-config is perhaps not working fine as the
-  # LLVM_MAIN_SRC_DIR is not getting set correctly, and the build fails as the
-  # include path is not correct.
-  postPatch = lib.optionalString stdenv.isDarwin ''
-    substituteInPlace MachO/CMakeLists.txt --replace \
-      '(''${LLVM_MAIN_SRC_DIR}/' '(../'
-  '';
-
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ libllvm libxml2 ];
-
-  cmakeFlags = [
-    "-DLLVM_CONFIG_PATH=${libllvm.dev}/bin/llvm-config${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "-native"}"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/13/openmp/default.nix b/pkgs/development/compilers/llvm/13/openmp/default.nix
deleted file mode 100644
index 7b461df438f9a..0000000000000
--- a/pkgs/development/compilers/llvm/13/openmp/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, src
-, fetchpatch
-, cmake
-, llvm
-, targetLlvm
-, perl
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  inherit src;
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    # Fix cross.
-    (fetchpatch {
-      url = "https://github.com/llvm/llvm-project/commit/5e2358c781b85a18d1463fd924d2741d4ae5e42e.patch";
-      hash = "sha256-UxIlAifXnexF/MaraPW0Ut6q+sf3e7y1fMdEv1q103A=";
-    })
-  ];
-
-  patchFlags = [ "-p2" ];
-
-  nativeBuildInputs = [ cmake perl ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  cmakeFlags = [
-    "-DLIBOMPTARGET_BUILD_AMDGCN_BCLIB=OFF" # Building the AMDGCN device RTL currently fails
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/14/default.nix b/pkgs/development/compilers/llvm/14/default.nix
index 6dcdcfa925840..687deb6ead89b 100644
--- a/pkgs/development/compilers/llvm/14/default.nix
+++ b/pkgs/development/compilers/llvm/14/default.nix
@@ -136,7 +136,11 @@ in let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      patches = [
+        ./lld/gnu-install-dirs.patch
+        ./lld/fix-root-src-dir.patch
+      ];
       inherit llvm_meta;
     };
 
@@ -294,12 +298,19 @@ in let
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
+      patches = [
+        ./libunwind/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      patches = [
+        ./openmp/gnu-install-dirs.patch
+        ./openmp/run-lit-directly.patch
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/14/libunwind/default.nix b/pkgs/development/compilers/llvm/14/libunwind/default.nix
deleted file mode 100644
index c6d9eda5e4749..0000000000000
--- a/pkgs/development/compilers/llvm/14/libunwind/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ lib, stdenv, llvm_meta, version
-, monorepoSrc, runCommand
-, cmake
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  # I am not so comfortable giving libc++ and friends the whole monorepo as
-  # requested, so I filter it to what is needed.
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
-    mkdir -p "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ];
-
-  cmakeFlags = lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/14/lld/default.nix b/pkgs/development/compilers/llvm/14/lld/default.nix
deleted file mode 100644
index 02ca4c8024873..0000000000000
--- a/pkgs/development/compilers/llvm/14/lld/default.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, monorepoSrc, runCommand
-, cmake
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  # Blank llvm dir just so relative path works
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libunwind"
-    cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
-    mkdir -p "$out/llvm"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-    # On Darwin the llvm-config is perhaps not working fine as the
-    # LLVM_MAIN_SRC_DIR is not getting set correctly, and the build fails as
-    # the include path is not correct.
-    ./fix-root-src-dir.patch
-  ];
-
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ libllvm libxml2 ];
-
-  cmakeFlags = lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/14/openmp/default.nix b/pkgs/development/compilers/llvm/14/openmp/default.nix
deleted file mode 100644
index d1c6a46b4d693..0000000000000
--- a/pkgs/development/compilers/llvm/14/openmp/default.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, monorepoSrc
-, runCommand
-, cmake
-, llvm
-, targetLlvm
-, lit
-, clang-unwrapped
-, perl
-, pkg-config
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-    ./run-lit-directly.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake perl pkg-config lit ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  # Unsup:Pass:XFail:Fail
-  # 26:267:16:8
-  doCheck = false;
-  checkTarget = "check-openmp";
-
-  preCheck = ''
-    patchShebangs ../tools/archer/tests/deflake.bash
-  '';
-
-  cmakeFlags = [
-    "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
-    "-DOPT_TOOL=${llvm}/bin/opt"
-    "-DLINK_TOOL=${llvm}/bin/llvm-link"
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/15/default.nix b/pkgs/development/compilers/llvm/15/default.nix
index dcafd2970d005..52ab1783b876b 100644
--- a/pkgs/development/compilers/llvm/15/default.nix
+++ b/pkgs/development/compilers/llvm/15/default.nix
@@ -141,7 +141,10 @@ in let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      patches = [
+        ./lld/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
     };
 
@@ -312,12 +315,20 @@ in let
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
+      patches = [
+        ./libunwind/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      patches = [
+        ./openmp/fix-find-tool.patch
+        ./openmp/gnu-install-dirs.patch
+        ./openmp/run-lit-directly.patch
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/15/libunwind/default.nix b/pkgs/development/compilers/llvm/15/libunwind/default.nix
deleted file mode 100644
index 1b677a7a2c0d7..0000000000000
--- a/pkgs/development/compilers/llvm/15/libunwind/default.nix
+++ /dev/null
@@ -1,67 +0,0 @@
-{ lib, stdenv, llvm_meta, version
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, python3
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  # I am not so comfortable giving libc++ and friends the whole monorepo as
-  # requested, so I filter it to what is needed.
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
-    mkdir -p "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
-    cp -r ${monorepoSrc}/runtimes "$out"
-  '';
-
-  sourceRoot = "${src.name}/runtimes";
-
-  prePatch = ''
-    cd ../${pname}
-    chmod -R u+w .
-  '';
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  postPatch = ''
-    cd ../runtimes
-  '';
-
-  postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
-    # libcxxabi wants to link to libunwind_shared.so (?).
-    ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
-  '';
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja python3 ];
-
-  cmakeFlags = [
-    "-DLLVM_ENABLE_RUNTIMES=libunwind"
-  ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/15/lld/default.nix b/pkgs/development/compilers/llvm/15/lld/default.nix
deleted file mode 100644
index cc18aee76a448..0000000000000
--- a/pkgs/development/compilers/llvm/15/lld/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  # Blank llvm dir just so relative path works
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libunwind"
-    cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
-    mkdir -p "$out/llvm"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  nativeBuildInputs = [ cmake ninja ];
-  buildInputs = [ libllvm libxml2 ];
-
-  cmakeFlags = [
-    "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/16/default.nix b/pkgs/development/compilers/llvm/16/default.nix
index 46d17c193fc92..168c288d49a3c 100644
--- a/pkgs/development/compilers/llvm/16/default.nix
+++ b/pkgs/development/compilers/llvm/16/default.nix
@@ -141,7 +141,11 @@ in let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      patches = [
+        ./lld/gnu-install-dirs.patch
+        ./lld/add-table-base.patch
+      ];
       inherit llvm_meta;
     };
 
@@ -327,12 +331,20 @@ in let
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
+      patches = [
+        ./libunwind/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      patches = [
+        ./openmp/fix-find-tool.patch
+        ./openmp/gnu-install-dirs.patch
+        ./openmp/run-lit-directly.patch
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/16/libunwind/default.nix b/pkgs/development/compilers/llvm/16/libunwind/default.nix
deleted file mode 100644
index 1b677a7a2c0d7..0000000000000
--- a/pkgs/development/compilers/llvm/16/libunwind/default.nix
+++ /dev/null
@@ -1,67 +0,0 @@
-{ lib, stdenv, llvm_meta, version
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, python3
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  # I am not so comfortable giving libc++ and friends the whole monorepo as
-  # requested, so I filter it to what is needed.
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
-    mkdir -p "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
-    cp -r ${monorepoSrc}/runtimes "$out"
-  '';
-
-  sourceRoot = "${src.name}/runtimes";
-
-  prePatch = ''
-    cd ../${pname}
-    chmod -R u+w .
-  '';
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  postPatch = ''
-    cd ../runtimes
-  '';
-
-  postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
-    # libcxxabi wants to link to libunwind_shared.so (?).
-    ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
-  '';
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja python3 ];
-
-  cmakeFlags = [
-    "-DLLVM_ENABLE_RUNTIMES=libunwind"
-  ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/16/lld/default.nix b/pkgs/development/compilers/llvm/16/lld/default.nix
deleted file mode 100644
index 84943e8effce1..0000000000000
--- a/pkgs/development/compilers/llvm/16/lld/default.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  # Blank llvm dir just so relative path works
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libunwind"
-    cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
-    mkdir -p "$out/llvm"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-    ./add-table-base.patch
-  ];
-
-  nativeBuildInputs = [ cmake ninja ];
-  buildInputs = [ libllvm libxml2 ];
-
-  cmakeFlags = [
-    "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/16/openmp/default.nix b/pkgs/development/compilers/llvm/16/openmp/default.nix
deleted file mode 100644
index d51335436ad23..0000000000000
--- a/pkgs/development/compilers/llvm/16/openmp/default.nix
+++ /dev/null
@@ -1,74 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, monorepoSrc
-, runCommand
-, cmake
-, ninja
-, llvm
-, targetLlvm
-, lit
-, clang-unwrapped
-, perl
-, pkg-config
-, xcbuild
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./fix-find-tool.patch
-    ./gnu-install-dirs.patch
-    ./run-lit-directly.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja perl pkg-config lit ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun;
-
-  # Unsup:Pass:XFail:Fail
-  # 26:267:16:8
-  doCheck = false;
-  checkTarget = "check-openmp";
-
-  preCheck = ''
-    patchShebangs ../tools/archer/tests/deflake.bash
-  '';
-
-  cmakeFlags = [
-    "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
-    "-DOPT_TOOL=${llvm}/bin/opt"
-    "-DLINK_TOOL=${llvm}/bin/llvm-link"
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/17/default.nix b/pkgs/development/compilers/llvm/17/default.nix
index fb3e967cc39b8..70571b30b3a6e 100644
--- a/pkgs/development/compilers/llvm/17/default.nix
+++ b/pkgs/development/compilers/llvm/17/default.nix
@@ -136,7 +136,11 @@ in let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      patches = [
+        ./lld/gnu-install-dirs.patch
+        ./lld/add-table-base.patch
+      ];
       inherit llvm_meta;
     };
 
@@ -312,12 +316,17 @@ in let
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
       inherit llvm_meta;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      patches = [
+        ./openmp/fix-find-tool.patch
+        ./openmp/gnu-install-dirs.patch
+        ./openmp/run-lit-directly.patch
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/17/libunwind/default.nix b/pkgs/development/compilers/llvm/17/libunwind/default.nix
deleted file mode 100644
index a3c8e2594f5a7..0000000000000
--- a/pkgs/development/compilers/llvm/17/libunwind/default.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ lib, stdenv, llvm_meta, version
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, python3
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  # I am not so comfortable giving libc++ and friends the whole monorepo as
-  # requested, so I filter it to what is needed.
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
-    mkdir -p "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
-    cp -r ${monorepoSrc}/runtimes "$out"
-  '';
-
-  sourceRoot = "${src.name}/runtimes";
-
-  prePatch = ''
-    cd ../${pname}
-    chmod -R u+w .
-  '';
-
-  postPatch = ''
-    cd ../runtimes
-  '';
-
-  postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
-    # libcxxabi wants to link to libunwind_shared.so (?).
-    ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
-  '';
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja python3 ];
-
-  cmakeFlags = [
-    "-DLLVM_ENABLE_RUNTIMES=libunwind"
-  ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/17/lld/default.nix b/pkgs/development/compilers/llvm/17/lld/default.nix
deleted file mode 100644
index 84943e8effce1..0000000000000
--- a/pkgs/development/compilers/llvm/17/lld/default.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  # Blank llvm dir just so relative path works
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libunwind"
-    cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
-    mkdir -p "$out/llvm"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./gnu-install-dirs.patch
-    ./add-table-base.patch
-  ];
-
-  nativeBuildInputs = [ cmake ninja ];
-  buildInputs = [ libllvm libxml2 ];
-
-  cmakeFlags = [
-    "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/17/openmp/default.nix b/pkgs/development/compilers/llvm/17/openmp/default.nix
deleted file mode 100644
index d51335436ad23..0000000000000
--- a/pkgs/development/compilers/llvm/17/openmp/default.nix
+++ /dev/null
@@ -1,74 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, monorepoSrc
-, runCommand
-, cmake
-, ninja
-, llvm
-, targetLlvm
-, lit
-, clang-unwrapped
-, perl
-, pkg-config
-, xcbuild
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./fix-find-tool.patch
-    ./gnu-install-dirs.patch
-    ./run-lit-directly.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja perl pkg-config lit ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun;
-
-  # Unsup:Pass:XFail:Fail
-  # 26:267:16:8
-  doCheck = false;
-  checkTarget = "check-openmp";
-
-  preCheck = ''
-    patchShebangs ../tools/archer/tests/deflake.bash
-  '';
-
-  cmakeFlags = [
-    "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
-    "-DOPT_TOOL=${llvm}/bin/opt"
-    "-DLINK_TOOL=${llvm}/bin/llvm-link"
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/18/default.nix b/pkgs/development/compilers/llvm/18/default.nix
index ae1f4399cf2ed..d5c2140e33e49 100644
--- a/pkgs/development/compilers/llvm/18/default.nix
+++ b/pkgs/development/compilers/llvm/18/default.nix
@@ -25,7 +25,7 @@
   #   rev-version = /* human readable version; i.e. "unstable-2022-26-07" */;
   #   sha256 = /* checksum for this release, can omit if specifying your own `monorepoSrc` */;
   # }
-, officialRelease ? { version = "18.1.1"; sha256 = "sha256-qAPNvEpztJjPz+kr5KcZz4iUTErsD8iXLURKl3yZoC8="; }
+, officialRelease ? { version = "18.1.3"; sha256 = "sha256-saQGbpYd95JuudwLcdG80GL8YhadH7TUY1FC0o0ithY="; }
   # i.e.:
   # {
   #   version = /* i.e. "15.0.0" */;
@@ -136,7 +136,10 @@ in let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      patches = [
+        ./lld/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
     };
 
@@ -312,12 +315,16 @@ in let
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
       inherit llvm_meta;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      patches = [
+        ./openmp/fix-find-tool.patch
+        ./openmp/run-lit-directly.patch
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/18/libunwind/default.nix b/pkgs/development/compilers/llvm/18/libunwind/default.nix
deleted file mode 100644
index e67823ffb85c2..0000000000000
--- a/pkgs/development/compilers/llvm/18/libunwind/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib, stdenv, llvm_meta, version
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, python3
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  # I am not so comfortable giving libc++ and friends the whole monorepo as
-  # requested, so I filter it to what is needed.
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
-    mkdir -p "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
-    cp -r ${monorepoSrc}/runtimes "$out"
-  '';
-
-  sourceRoot = "${src.name}/runtimes";
-
-  postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
-    # libcxxabi wants to link to libunwind_shared.so (?).
-    ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
-  '';
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja python3 ];
-
-  cmakeFlags = [
-    "-DLLVM_ENABLE_RUNTIMES=libunwind"
-  ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/18/lld/default.nix b/pkgs/development/compilers/llvm/18/lld/default.nix
deleted file mode 100644
index 24ff0933dd1d8..0000000000000
--- a/pkgs/development/compilers/llvm/18/lld/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  # Blank llvm dir just so relative path works
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libunwind"
-    cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
-    mkdir -p "$out/llvm"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  nativeBuildInputs = [ cmake ninja ];
-  buildInputs = [ libllvm libxml2 ];
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  cmakeFlags = [
-    "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/18/openmp/default.nix b/pkgs/development/compilers/llvm/18/openmp/default.nix
deleted file mode 100644
index e1c3c2379af2a..0000000000000
--- a/pkgs/development/compilers/llvm/18/openmp/default.nix
+++ /dev/null
@@ -1,73 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, monorepoSrc
-, runCommand
-, cmake
-, ninja
-, llvm
-, targetLlvm
-, lit
-, clang-unwrapped
-, perl
-, pkg-config
-, xcbuild
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./fix-find-tool.patch
-    ./run-lit-directly.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja perl pkg-config lit ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun;
-
-  # Unsup:Pass:XFail:Fail
-  # 26:267:16:8
-  doCheck = false;
-  checkTarget = "check-openmp";
-
-  preCheck = ''
-    patchShebangs ../tools/archer/tests/deflake.bash
-  '';
-
-  cmakeFlags = [
-    "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
-    "-DOPT_TOOL=${llvm}/bin/opt"
-    "-DLINK_TOOL=${llvm}/bin/llvm-link"
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/9/clang/HIP-use-PATH-9.patch b/pkgs/development/compilers/llvm/9/clang/HIP-use-PATH-9.patch
deleted file mode 100644
index 102d810ff6811..0000000000000
--- a/pkgs/development/compilers/llvm/9/clang/HIP-use-PATH-9.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 7147e9774c74abcd1d6db24e24d0fd989c2b97dd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Holger=20W=C3=BCnsche?= <holger.o.wuensche@t-online.de>
-Date: Tue, 21 Jan 2020 19:52:04 +0100
-Subject: [PATCH] [HIP] use GetProgramPath for executable discovery
-
-This change replaces the manual building of executable paths
-using llvm::sys::path::append with GetProgramPath.
-This enables adding other paths in case executables reside
-in different directories and makes the code easier to read.
-
-Differential Revision: https://reviews.llvm.org/D72903
----
- clang/lib/Driver/ToolChains/HIP.cpp | 23 ++++++++---------------
- 1 file changed, 8 insertions(+), 15 deletions(-)
-
-diff --git a/lib/Driver/ToolChains/HIP.cpp b/lib/Driver/ToolChains/HIP.cpp
-index 2ec97e798fd..735c302debb 100644
---- a/lib/Driver/ToolChains/HIP.cpp
-+++ b/lib/Driver/ToolChains/HIP.cpp
-@@ -66,9 +66,8 @@ const char *AMDGCN::Linker::constructLLVMLinkCommand(
-   const char *OutputFileName =
-       C.addTempFile(C.getArgs().MakeArgString(TmpName));
-   CmdArgs.push_back(OutputFileName);
--  SmallString<128> ExecPath(C.getDriver().Dir);
--  llvm::sys::path::append(ExecPath, "llvm-link");
--  const char *Exec = Args.MakeArgString(ExecPath);
-+  const char *Exec =
-+      Args.MakeArgString(getToolChain().GetProgramPath("llvm-link"));
-   C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
-   return OutputFileName;
- }
-@@ -114,9 +113,8 @@ const char *AMDGCN::Linker::constructOptCommand(
-   const char *OutputFileName =
-       C.addTempFile(C.getArgs().MakeArgString(TmpFileName));
-   OptArgs.push_back(OutputFileName);
--  SmallString<128> OptPath(C.getDriver().Dir);
--  llvm::sys::path::append(OptPath, "opt");
--  const char *OptExec = Args.MakeArgString(OptPath);
-+  const char *OptExec =
-+      Args.MakeArgString(getToolChain().GetProgramPath("opt"));
-   C.addCommand(llvm::make_unique<Command>(JA, *this, OptExec, OptArgs, Inputs));
-   return OutputFileName;
- }
-@@ -156,9 +154,7 @@ const char *AMDGCN::Linker::constructLlcCommand(
-   const char *LlcOutputFile =
-       C.addTempFile(C.getArgs().MakeArgString(LlcOutputFileName));
-   LlcArgs.push_back(LlcOutputFile);
--  SmallString<128> LlcPath(C.getDriver().Dir);
--  llvm::sys::path::append(LlcPath, "llc");
--  const char *Llc = Args.MakeArgString(LlcPath);
-+  const char *Llc = Args.MakeArgString(getToolChain().GetProgramPath("llc"));
-   C.addCommand(llvm::make_unique<Command>(JA, *this, Llc, LlcArgs, Inputs));
-   return LlcOutputFile;
- }
-@@ -172,9 +168,7 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
-   // The output from ld.lld is an HSA code object file.
-   ArgStringList LldArgs{
-       "-flavor", "gnu", "-shared", "-o", Output.getFilename(), InputFileName};
--  SmallString<128> LldPath(C.getDriver().Dir);
--  llvm::sys::path::append(LldPath, "lld");
--  const char *Lld = Args.MakeArgString(LldPath);
-+  const char *Lld = Args.MakeArgString(getToolChain().GetProgramPath("lld"));
-   C.addCommand(llvm::make_unique<Command>(JA, *this, Lld, LldArgs, Inputs));
- }
- 
-@@ -206,9 +200,8 @@ void AMDGCN::constructHIPFatbinCommand(Compilation &C, const JobAction &JA,
-       Args.MakeArgString(std::string("-outputs=").append(OutputFileName));
-   BundlerArgs.push_back(BundlerOutputArg);
- 
--  SmallString<128> BundlerPath(C.getDriver().Dir);
--  llvm::sys::path::append(BundlerPath, "clang-offload-bundler");
--  const char *Bundler = Args.MakeArgString(BundlerPath);
-+  const char *Bundler = Args.MakeArgString(
-+      T.getToolChain().GetProgramPath("clang-offload-bundler"));
-   C.addCommand(llvm::make_unique<Command>(JA, T, Bundler, BundlerArgs, Inputs));
- }
- 
--- 
-2.23.1
-
diff --git a/pkgs/development/compilers/llvm/9/clang/compiler-rt-baremetal.patch b/pkgs/development/compilers/llvm/9/clang/compiler-rt-baremetal.patch
deleted file mode 100644
index a4a0f21b0fcd6..0000000000000
--- a/pkgs/development/compilers/llvm/9/clang/compiler-rt-baremetal.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Index: lib/Driver/ToolChains/BareMetal.cpp
-===================================================================
---- a/lib/Driver/ToolChains/BareMetal.cpp
-+++ b/lib/Driver/ToolChains/BareMetal.cpp
-@@ -157,7 +157,7 @@
- void BareMetal::AddLinkRuntimeLib(const ArgList &Args,
-                                   ArgStringList &CmdArgs) const {
-   CmdArgs.push_back(Args.MakeArgString("-lclang_rt.builtins-" +
--                                       getTriple().getArchName() + ".a"));
-+                                       getTriple().getArchName()));
- }
- 
- void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA,
-Index: test/Driver/baremetal.cpp
-===================================================================
---- a/test/Driver/baremetal.cpp
-+++ b/test/Driver/baremetal.cpp
-@@ -13,7 +13,7 @@
- // CHECK-V6M-C-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
- // CHECK-V6M-C-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal"
- // CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
--// CHECK-V6M-C-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
-+// CHECK-V6M-C-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
- // CHECK-V6M-C-SAME: "-o" "{{.*}}.o"
- 
- // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-@@ -35,7 +35,7 @@
- // CHECK-V6M-DEFAULTCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
- // CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
- // CHECK-V6M-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
--// CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
-+// CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
- // CHECK-V6M-DEFAULTCXX-SAME: "-o" "{{.*}}.o"
- 
- // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-@@ -48,7 +48,7 @@
- // CHECK-V6M-LIBCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
- // CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
- // CHECK-V6M-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind"
--// CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
-+// CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
- // CHECK-V6M-LIBCXX-SAME: "-o" "{{.*}}.o"
- 
- // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-@@ -61,7 +61,7 @@
- // CHECK-V6M-LIBSTDCXX: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
- // CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal"
- // CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind"
--// CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a"
-+// CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m"
- // CHECK-V6M-LIBSTDCXX-SAME: "-o" "{{.*}}.o"
- 
- // RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
diff --git a/pkgs/development/compilers/llvm/9/clang/default.nix b/pkgs/development/compilers/llvm/9/clang/default.nix
deleted file mode 100644
index 37138b13bd4c8..0000000000000
--- a/pkgs/development/compilers/llvm/9/clang/default.nix
+++ /dev/null
@@ -1,140 +0,0 @@
-{ lib, stdenv, llvm_meta, fetch, substituteAll, cmake, libxml2, libllvm, version, clang-tools-extra_src, python3
-, buildLlvmTools
-, fixDarwinDylibNames
-, enableManpages ? false
-, enablePolly ? false # TODO: get this info from llvm (passthru?)
-}:
-
-let
-  self = stdenv.mkDerivation ({
-    pname = "clang";
-    inherit version;
-
-    src = fetch "clang" "0ls2h3iv4finqyflyhry21qhc9cm9ga7g1zq21020p065qmm2y2p";
-
-    unpackPhase = ''
-      unpackFile $src
-      mv clang-${version}* clang
-      sourceRoot=$PWD/clang
-      unpackFile ${clang-tools-extra_src}
-      mv clang-tools-extra-* $sourceRoot/tools/extra
-    '';
-
-    nativeBuildInputs = [ cmake python3 ]
-      ++ lib.optional enableManpages python3.pkgs.sphinx
-      ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
-
-    buildInputs = [ libxml2 libllvm ];
-
-    cmakeFlags = [
-      "-DCMAKE_CXX_FLAGS=-std=c++11"
-      "-DCLANGD_BUILD_XPC=OFF"
-      "-DLLVM_ENABLE_RTTI=ON"
-    ] ++ lib.optionals enableManpages [
-      "-DCLANG_INCLUDE_DOCS=ON"
-      "-DLLVM_ENABLE_SPHINX=ON"
-      "-DSPHINX_OUTPUT_MAN=ON"
-      "-DSPHINX_OUTPUT_HTML=OFF"
-      "-DSPHINX_WARNINGS_AS_ERRORS=OFF"
-    ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-      "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-      "-DCLANG_TABLEGEN=${buildLlvmTools.libclang.dev}/bin/clang-tblgen"
-    ] ++ lib.optionals enablePolly [
-      "-DWITH_POLLY=ON"
-      "-DLINK_POLLY_INTO_TOOLS=ON"
-    ];
-
-    patches = [
-      ./purity.patch
-      # https://reviews.llvm.org/D51899
-      ./compiler-rt-baremetal.patch
-      # make clang -xhip use $PATH to find executables
-      ./HIP-use-PATH-9.patch
-      ./gnu-install-dirs.patch
-      (substituteAll {
-        src = ../../common/clang/clang-6-10-LLVMgold-path.patch;
-        libllvmLibdir = "${libllvm.lib}/lib";
-      })
-    ];
-
-    postPatch = ''
-      sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \
-             -e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' \
-             lib/Driver/ToolChains/*.cpp
-    '' + lib.optionalString stdenv.hostPlatform.isMusl ''
-      sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp
-    '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
-      substituteInPlace tools/extra/clangd/CMakeLists.txt \
-        --replace "NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB" FALSE
-    '';
-
-    outputs = [ "out" "lib" "dev" "python" ];
-
-    postInstall = ''
-      ln -sv $out/bin/clang $out/bin/cpp
-
-      # Move libclang to 'lib' output
-      moveToOutput "lib/libclang.*" "$lib"
-      moveToOutput "lib/libclang-cpp.*" "$lib"
-      substituteInPlace $out/lib/cmake/clang/ClangTargets-release.cmake \
-          --replace "\''${_IMPORT_PREFIX}/lib/libclang." "$lib/lib/libclang." \
-          --replace "\''${_IMPORT_PREFIX}/lib/libclang-cpp." "$lib/lib/libclang-cpp."
-
-      mkdir -p $python/bin $python/share/{clang,scan-view}
-      mv $out/bin/{git-clang-format,scan-view} $python/bin
-      if [ -e $out/bin/set-xcode-analyzer ]; then
-        mv $out/bin/set-xcode-analyzer $python/bin
-      fi
-      mv $out/share/clang/*.py $python/share/clang
-      mv $out/share/scan-view/*.py $python/share/scan-view
-      rm $out/bin/c-index-test
-      patchShebangs $python/bin
-
-      mkdir -p $dev/bin
-      cp bin/clang-tblgen $dev/bin
-    '';
-
-    passthru = {
-      inherit libllvm;
-      isClang = true;
-      hardeningUnsupportedFlags = [ "fortify3" "zerocallusedregs" ];
-    };
-
-    meta = llvm_meta // {
-      homepage = "https://clang.llvm.org/";
-      description = "A C language family frontend for LLVM";
-      longDescription = ''
-        The Clang project provides a language front-end and tooling
-        infrastructure for languages in the C language family (C, C++, Objective
-        C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project.
-        It aims to deliver amazingly fast compiles, extremely useful error and
-        warning messages and to provide a platform for building great source
-        level tools. The Clang Static Analyzer and clang-tidy are tools that
-        automatically find bugs in your code, and are great examples of the sort
-        of tools that can be built using the Clang frontend as a library to
-        parse C/C++ code.
-      '';
-      mainProgram = "clang";
-    };
-  } // lib.optionalAttrs enableManpages {
-    pname = "clang-manpages";
-
-    buildPhase = ''
-      make docs-clang-man
-    '';
-
-    installPhase = ''
-      mkdir -p $out/share/man/man1
-      # Manually install clang manpage
-      cp docs/man/*.1 $out/share/man/man1/
-    '';
-
-    outputs = [ "out" ];
-
-    doCheck = false;
-
-    meta = llvm_meta // {
-      description = "man page for Clang ${version}";
-    };
-  });
-in self
diff --git a/pkgs/development/compilers/llvm/9/clang/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/clang/gnu-install-dirs.patch
deleted file mode 100644
index 625cbcc723617..0000000000000
--- a/pkgs/development/compilers/llvm/9/clang/gnu-install-dirs.patch
+++ /dev/null
@@ -1,278 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 60937aa9db38..45522ff32998 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -9,6 +9,8 @@ endif()
- if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
-   project(Clang)
- 
-+  include(GNUInstallDirs)
-+
-   # Rely on llvm-config.
-   set(CONFIG_OUTPUT)
-   if(LLVM_CONFIG)
-@@ -413,7 +415,7 @@ include_directories(BEFORE
- 
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   install(DIRECTORY include/clang include/clang-c
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     COMPONENT clang-headers
-     FILES_MATCHING
-     PATTERN "*.def"
-@@ -423,7 +425,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-     )
- 
-   install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/clang
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     COMPONENT clang-headers
-     FILES_MATCHING
-     PATTERN "CMakeFiles" EXCLUDE
-@@ -442,7 +444,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   endif()
- 
-   install(PROGRAMS utils/bash-autocomplete.sh
--    DESTINATION share/clang
-+    DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-     )
- endif()
- 
-diff --git a/cmake/modules/AddClang.cmake b/cmake/modules/AddClang.cmake
-index cbd618e18afb..63ba43f18e64 100644
---- a/cmake/modules/AddClang.cmake
-+++ b/cmake/modules/AddClang.cmake
-@@ -109,9 +109,9 @@ macro(add_clang_library name)
-       install(TARGETS ${name}
-         COMPONENT ${name}
-         ${export_to_clangtargets}
--        LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
--        ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
--        RUNTIME DESTINATION bin)
-+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
-+        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
-+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- 
-       if (NOT LLVM_ENABLE_IDE)
-         add_llvm_install_targets(install-${name}
-@@ -155,7 +155,7 @@ macro(add_clang_tool name)
- 
-     install(TARGETS ${name}
-       ${export_to_clangtargets}
--      RUNTIME DESTINATION bin
-+      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-       COMPONENT ${name})
- 
-     if(NOT LLVM_ENABLE_IDE)
-@@ -170,7 +170,7 @@ endmacro()
- macro(add_clang_symlink name dest)
-   add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
-   # Always generate install targets
--  llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
-+  llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE)
- endmacro()
- 
- function(clang_target_link_libraries target type)
-diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
-index a3c0b08fa364..aa4215c0999c 100644
---- a/lib/Headers/CMakeLists.txt
-+++ b/lib/Headers/CMakeLists.txt
-@@ -185,7 +185,7 @@ set_target_properties(clang-resource-headers PROPERTIES
-   FOLDER "Misc"
-   RUNTIME_OUTPUT_DIRECTORY "${output_dir}")
- 
--set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
-+set(header_install_dir ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
- 
- install(
-   FILES ${files} ${generated_files}
-diff --git a/tools/c-index-test/CMakeLists.txt b/tools/c-index-test/CMakeLists.txt
-index ceef4b08637c..8efad5520ca4 100644
---- a/tools/c-index-test/CMakeLists.txt
-+++ b/tools/c-index-test/CMakeLists.txt
-@@ -54,7 +54,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-     set_property(TARGET c-index-test APPEND PROPERTY INSTALL_RPATH
-        "@executable_path/../../lib")
-   else()
--    set(INSTALL_DESTINATION bin)
-+    set(INSTALL_DESTINATION ${CMAKE_INSTALL_BINDIR})
-   endif()
- 
-   install(TARGETS c-index-test
-diff --git a/tools/clang-check/CMakeLists.txt b/tools/clang-check/CMakeLists.txt
-index 4576d78bcfb4..7c3b302d8d59 100644
---- a/tools/clang-check/CMakeLists.txt
-+++ b/tools/clang-check/CMakeLists.txt
-@@ -21,4 +21,4 @@ clang_target_link_libraries(clang-check
-   )
- 
- install(TARGETS clang-check
--  RUNTIME DESTINATION bin)
-+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-diff --git a/tools/clang-extdef-mapping/CMakeLists.txt b/tools/clang-extdef-mapping/CMakeLists.txt
-index 4798bdb71ad0..02d07b9982ac 100644
---- a/tools/clang-extdef-mapping/CMakeLists.txt
-+++ b/tools/clang-extdef-mapping/CMakeLists.txt
-@@ -18,4 +18,4 @@ clang_target_link_libraries(clang-extdef-mapping
-   )
- 
- install(TARGETS clang-extdef-mapping
--  RUNTIME DESTINATION bin)
-+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-diff --git a/tools/clang-format/CMakeLists.txt b/tools/clang-format/CMakeLists.txt
-index 35ecdb11253c..d77d75de0094 100644
---- a/tools/clang-format/CMakeLists.txt
-+++ b/tools/clang-format/CMakeLists.txt
-@@ -21,20 +21,20 @@ if( LLVM_LIB_FUZZING_ENGINE OR LLVM_USE_SANITIZE_COVERAGE )
- endif()
- 
- install(PROGRAMS clang-format-bbedit.applescript
--  DESTINATION share/clang
-+  DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-   COMPONENT clang-format)
- install(PROGRAMS clang-format-diff.py
--  DESTINATION share/clang
-+  DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-   COMPONENT clang-format)
- install(PROGRAMS clang-format-sublime.py
--  DESTINATION share/clang
-+  DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-   COMPONENT clang-format)
- install(PROGRAMS clang-format.el
--  DESTINATION share/clang
-+  DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-   COMPONENT clang-format)
- install(PROGRAMS clang-format.py
--  DESTINATION share/clang
-+  DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-   COMPONENT clang-format)
- install(PROGRAMS git-clang-format
--  DESTINATION bin
-+  DESTINATION ${CMAKE_INSTALL_BINDIR}
-   COMPONENT clang-format)
-diff --git a/tools/clang-offload-bundler/CMakeLists.txt b/tools/clang-offload-bundler/CMakeLists.txt
-index 465bef040a6c..729369ed9429 100644
---- a/tools/clang-offload-bundler/CMakeLists.txt
-+++ b/tools/clang-offload-bundler/CMakeLists.txt
-@@ -22,4 +22,4 @@ clang_target_link_libraries(clang-offload-bundler
-   ${CLANG_OFFLOAD_BUNDLER_LIB_DEPS}
-   )
- 
--install(TARGETS clang-offload-bundler RUNTIME DESTINATION bin)
-+install(TARGETS clang-offload-bundler RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-diff --git a/tools/clang-rename/CMakeLists.txt b/tools/clang-rename/CMakeLists.txt
-index cda8e29ec5b1..0134d8ccd70b 100644
---- a/tools/clang-rename/CMakeLists.txt
-+++ b/tools/clang-rename/CMakeLists.txt
-@@ -19,8 +19,8 @@ clang_target_link_libraries(clang-rename
-   )
- 
- install(PROGRAMS clang-rename.py
--  DESTINATION share/clang
-+  DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-   COMPONENT clang-rename)
- install(PROGRAMS clang-rename.el
--  DESTINATION share/clang
-+  DESTINATION ${CMAKE_INSTALL_DATADIR}/clang
-   COMPONENT clang-rename)
-diff --git a/tools/diagtool/CMakeLists.txt b/tools/diagtool/CMakeLists.txt
-index a95444be40ee..136d96d9bf5b 100644
---- a/tools/diagtool/CMakeLists.txt
-+++ b/tools/diagtool/CMakeLists.txt
-@@ -21,7 +21,7 @@ clang_target_link_libraries(diagtool
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   install(TARGETS diagtool
-     COMPONENT diagtool
--    RUNTIME DESTINATION bin)
-+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- 
-   if (NOT LLVM_ENABLE_IDE)
-     add_llvm_install_targets(install-diagtool
-diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
-index 613ead1a36b6..e5c7bf27f739 100644
---- a/tools/libclang/CMakeLists.txt
-+++ b/tools/libclang/CMakeLists.txt
-@@ -137,7 +137,7 @@ endif()
- if(INTERNAL_INSTALL_PREFIX)
-   set(LIBCLANG_HEADERS_INSTALL_DESTINATION "${INTERNAL_INSTALL_PREFIX}/include")
- else()
--  set(LIBCLANG_HEADERS_INSTALL_DESTINATION include)
-+  set(LIBCLANG_HEADERS_INSTALL_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
- endif()
- 
- install(DIRECTORY ../../include/clang-c
-@@ -168,7 +168,7 @@ foreach(PythonVersion ${CLANG_PYTHON_BINDINGS_VERSIONS})
-           COMPONENT
-             libclang-python-bindings
-           DESTINATION
--            "lib${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
-+            "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/python${PythonVersion}/site-packages")
- endforeach()
- if(NOT LLVM_ENABLE_IDE)
-   add_custom_target(libclang-python-bindings)
-diff --git a/tools/scan-build/CMakeLists.txt b/tools/scan-build/CMakeLists.txt
-index 380379300b09..adfd58ed5f7d 100644
---- a/tools/scan-build/CMakeLists.txt
-+++ b/tools/scan-build/CMakeLists.txt
-@@ -41,7 +41,7 @@ if(CLANG_INSTALL_SCANBUILD)
-                          ${CMAKE_BINARY_DIR}/bin/
-                        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
-     list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
--    install(PROGRAMS bin/${BinFile} DESTINATION bin)
-+    install(PROGRAMS bin/${BinFile} DESTINATION ${CMAKE_INSTALL_BINDIR})
-   endforeach()
- 
-   foreach(LibexecFile ${LibexecFiles})
-@@ -53,7 +53,7 @@ if(CLANG_INSTALL_SCANBUILD)
-                          ${CMAKE_BINARY_DIR}/libexec/
-                        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
-     list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
--    install(PROGRAMS libexec/${LibexecFile} DESTINATION libexec)
-+    install(PROGRAMS libexec/${LibexecFile} DESTINATION ${CMAKE_INSTALL_LIBEXECDIR})
-   endforeach()
- 
-   foreach(ManPage ${ManPages})
-@@ -77,7 +77,7 @@ if(CLANG_INSTALL_SCANBUILD)
-                          ${CMAKE_BINARY_DIR}/share/scan-build/
-                        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
-     list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
--    install(FILES share/scan-build/${ShareFile} DESTINATION share/scan-build)
-+    install(FILES share/scan-build/${ShareFile} DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-build)
-   endforeach()
- 
-   add_custom_target(scan-build ALL DEPENDS ${Depends})
-diff --git a/tools/scan-view/CMakeLists.txt b/tools/scan-view/CMakeLists.txt
-index b305ca562a72..554bcb379061 100644
---- a/tools/scan-view/CMakeLists.txt
-+++ b/tools/scan-view/CMakeLists.txt
-@@ -21,7 +21,7 @@ if(CLANG_INSTALL_SCANVIEW)
-                          ${CMAKE_BINARY_DIR}/bin/
-                        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
-     list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
--    install(PROGRAMS bin/${BinFile} DESTINATION bin)
-+    install(PROGRAMS bin/${BinFile} DESTINATION ${CMAKE_INSTALL_BINDIR})
-   endforeach()
- 
-   foreach(ShareFile ${ShareFiles})
-@@ -33,7 +33,7 @@ if(CLANG_INSTALL_SCANVIEW)
-                          ${CMAKE_BINARY_DIR}/share/scan-view/
-                        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile})
-     list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile})
--    install(FILES share/${ShareFile} DESTINATION share/scan-view)
-+    install(FILES share/${ShareFile} DESTINATION ${CMAKE_INSTALL_DATADIR}/scan-view)
-   endforeach()
- 
-   add_custom_target(scan-view ALL DEPENDS ${Depends})
-diff --git a/utils/hmaptool/CMakeLists.txt b/utils/hmaptool/CMakeLists.txt
-index 5573009d343a..24b3a90f233f 100644
---- a/utils/hmaptool/CMakeLists.txt
-+++ b/utils/hmaptool/CMakeLists.txt
-@@ -9,7 +9,7 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HM
-                    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${CLANG_HMAPTOOL})
- 
- list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/${CLANG_HMAPTOOL})
--install(PROGRAMS ${CLANG_HMAPTOOL} DESTINATION bin)
-+install(PROGRAMS ${CLANG_HMAPTOOL} DESTINATION ${CMAKE_INSTALL_BINDIR})
- 
- add_custom_target(hmaptool ALL DEPENDS ${Depends})
- set_target_properties(hmaptool PROPERTIES FOLDER "Utils")
diff --git a/pkgs/development/compilers/llvm/9/clang/purity.patch b/pkgs/development/compilers/llvm/9/clang/purity.patch
deleted file mode 100644
index a6729a9b004e0..0000000000000
--- a/pkgs/development/compilers/llvm/9/clang/purity.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 4add81bba40dcec62c4ea4481be8e35ac53e89d8 Mon Sep 17 00:00:00 2001
-From: Will Dietz <w@wdtz.org>
-Date: Thu, 18 May 2017 11:56:12 -0500
-Subject: [PATCH] "purity" patch for 5.0
-
----
- lib/Driver/ToolChains/Gnu.cpp | 7 -------
- 1 file changed, 7 deletions(-)
-
-diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
-index fe3c0191bb..c6a482bece 100644
---- a/lib/Driver/ToolChains/Gnu.cpp
-+++ b/lib/Driver/ToolChains/Gnu.cpp
-@@ -494,13 +494,6 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
-   if (!IsStatic) {
-     if (Args.hasArg(options::OPT_rdynamic))
-       CmdArgs.push_back("-export-dynamic");
--
--    if (!Args.hasArg(options::OPT_shared) && !IsStaticPIE) {
--      const std::string Loader =
--          D.DyldPrefix + ToolChain.getDynamicLinker(Args);
--      CmdArgs.push_back("-dynamic-linker");
--      CmdArgs.push_back(Args.MakeArgString(Loader));
--    }
-   }
- 
-   CmdArgs.push_back("-o");
--- 
-2.11.0
-
diff --git a/pkgs/development/compilers/llvm/9/compiler-rt/armv7l.patch b/pkgs/development/compilers/llvm/9/compiler-rt/armv7l.patch
deleted file mode 100644
index 89d7f1aec918c..0000000000000
--- a/pkgs/development/compilers/llvm/9/compiler-rt/armv7l.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-diff -ur compiler-rt-7.1.0.src/cmake/builtin-config-ix.cmake compiler-rt-7.1.0.src-patched/cmake/builtin-config-ix.cmake
---- compiler-rt-7.1.0.src/cmake/builtin-config-ix.cmake	2018-05-25 06:36:27.000000000 +0900
-+++ compiler-rt-7.1.0.src-patched/cmake/builtin-config-ix.cmake	2020-05-09 20:26:33.030608692 +0900
-@@ -24,7 +24,7 @@
- 
- 
- set(ARM64 aarch64)
--set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k)
-+set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k armv7l)
- set(HEXAGON hexagon)
- set(X86 i386)
- set(X86_64 x86_64)
-diff -ur compiler-rt-7.1.0.src/lib/builtins/CMakeLists.txt compiler-rt-7.1.0.src-patched/lib/builtins/CMakeLists.txt
---- compiler-rt-7.1.0.src/lib/builtins/CMakeLists.txt	2018-07-31 03:18:59.000000000 +0900
-+++ compiler-rt-7.1.0.src-patched/lib/builtins/CMakeLists.txt	2020-05-09 20:27:38.893409318 +0900
-@@ -453,6 +453,7 @@
- set(armv7_SOURCES ${arm_SOURCES})
- set(armv7s_SOURCES ${arm_SOURCES})
- set(armv7k_SOURCES ${arm_SOURCES})
-+set(armv7l_SOURCES ${arm_SOURCES})
- set(arm64_SOURCES ${aarch64_SOURCES})
- 
- # macho_embedded archs
-@@ -563,12 +564,12 @@
-       set(_arch ${arch})
-       if("${arch}" STREQUAL "armv6m")
-         set(_arch "arm|armv6m")
--      elseif("${arch}" MATCHES "^(armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
-+      elseif("${arch}" MATCHES "^(armhf|armv7|armv7s|armv7k|armv7l|armv7m|armv7em)$")
-         set(_arch "arm")
-       endif()
- 
-       # For ARM archs, exclude any VFP builtins if VFP is not supported
--      if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
-+      if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7l|armv7m|armv7em)$")
-         string(REPLACE ";" " " _TARGET_${arch}_CFLAGS "${TARGET_${arch}_CFLAGS}")
-         check_compile_definition(__VFP_FP__ "${CMAKE_C_FLAGS} ${_TARGET_${arch}_CFLAGS}" COMPILER_RT_HAS_${arch}_VFP)
-         if(NOT COMPILER_RT_HAS_${arch}_VFP)
diff --git a/pkgs/development/compilers/llvm/9/compiler-rt/default.nix b/pkgs/development/compilers/llvm/9/compiler-rt/default.nix
deleted file mode 100644
index 4dddbc67d7cb4..0000000000000
--- a/pkgs/development/compilers/llvm/9/compiler-rt/default.nix
+++ /dev/null
@@ -1,123 +0,0 @@
-{ lib, stdenv, llvm_meta, version, fetch, cmake, python3, libllvm, libcxxabi
-, doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
-}:
-
-let
-
-  useLLVM = stdenv.hostPlatform.useLLVM or false;
-  bareMetal = stdenv.hostPlatform.parsed.kernel.name == "none";
-  haveLibc = stdenv.cc.libc != null;
-  inherit (stdenv.hostPlatform) isMusl;
-
-in
-
-stdenv.mkDerivation {
-  pname = "compiler-rt" + lib.optionalString (haveLibc) "-libc";
-  inherit version;
-  src = fetch "compiler-rt" "0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2";
-
-  nativeBuildInputs = [ cmake python3 libllvm.dev ];
-  buildInputs = lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
-
-  env.NIX_CFLAGS_COMPILE = toString [
-    "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0"
-  ];
-
-  cmakeFlags = [
-    "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
-    "-DCMAKE_C_COMPILER_TARGET=${stdenv.hostPlatform.config}"
-    "-DCMAKE_ASM_COMPILER_TARGET=${stdenv.hostPlatform.config}"
-  ] ++ lib.optionals (useLLVM || bareMetal || isMusl) [
-    "-DCOMPILER_RT_BUILD_SANITIZERS=OFF"
-    "-DCOMPILER_RT_BUILD_XRAY=OFF"
-    "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF"
-  ] ++ lib.optionals (useLLVM || bareMetal) [
-    "-DCOMPILER_RT_BUILD_PROFILE=OFF"
-  ] ++ lib.optionals ((useLLVM || bareMetal) && !haveLibc) [
-    "-DCMAKE_C_COMPILER_WORKS=ON"
-    "-DCMAKE_CXX_COMPILER_WORKS=ON"
-    "-DCOMPILER_RT_BAREMETAL_BUILD=ON"
-    "-DCMAKE_SIZEOF_VOID_P=${toString (stdenv.hostPlatform.parsed.cpu.bits / 8)}"
-  ] ++ lib.optionals (useLLVM) [
-    "-DCOMPILER_RT_BUILD_BUILTINS=ON"
-    #https://stackoverflow.com/questions/53633705/cmake-the-c-compiler-is-not-able-to-compile-a-simple-test-program
-    "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
-  ] ++ lib.optionals (bareMetal) [
-    "-DCOMPILER_RT_OS_DIR=baremetal"
-  ] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
-    # The compiler-rt build infrastructure sniffs supported platforms on Darwin
-    # and finds i386;x86_64;x86_64h. We only build for x86_64, so linking fails
-    # when it tries to use libc++ and libc++api for i386.
-    "-DDARWIN_osx_ARCHS=${stdenv.hostPlatform.darwinArch}"
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  patches = [
-    # https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce
-    ../../common/compiler-rt/glibc.patch
-    ../../common/compiler-rt/7-12-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
-    ./gnu-install-dirs.patch
-    ../../common/compiler-rt/libsanitizer-no-cyclades-9.patch
-    # Fix build on armv6l
-    ../../common/compiler-rt/armv6-mcr-dmb.patch
-    ../../common/compiler-rt/armv6-sync-ops-no-thumb.patch
-    ../../common/compiler-rt/armv6-no-ldrexd-strexd.patch
-  ] ++ lib.optional stdenv.hostPlatform.isAarch32 ./armv7l.patch;
-
-  # TSAN requires XPC on Darwin, which we have no public/free source files for. We can depend on the Apple frameworks
-  # to get it, but they're unfree. Since LLVM is rather central to the stdenv, we patch out TSAN support so that Hydra
-  # can build this. If we didn't do it, basically the entire nixpkgs on Darwin would have an unfree dependency and we'd
-  # get no binary cache for the entire platform. If you really find yourself wanting the TSAN, make this controllable by
-  # a flag and turn the flag off during the stdenv build.
-  postPatch = lib.optionalString (!stdenv.isDarwin) ''
-    substituteInPlace cmake/builtin-config-ix.cmake \
-      --replace 'set(X86 i386)' 'set(X86 i386 i486 i586 i686)'
-  '' + lib.optionalString stdenv.isDarwin ''
-    substituteInPlace cmake/config-ix.cmake \
-      --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)'
-  '' + lib.optionalString (useLLVM) ''
-    substituteInPlace lib/builtins/int_util.c \
-      --replace "#include <stdlib.h>" ""
-    substituteInPlace lib/builtins/clear_cache.c \
-      --replace "#include <assert.h>" ""
-    substituteInPlace lib/builtins/cpu_model.c \
-      --replace "#include <assert.h>" ""
-  '';
-
-  preConfigure = lib.optionalString (useLLVM && !haveLibc) ''
-    cmakeFlagsArray+=(-DCMAKE_C_FLAGS="-nodefaultlibs -ffreestanding")
-  '';
-
-  # Hack around weird upsream RPATH bug
-  postInstall = lib.optionalString (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isWasm) ''
-    ln -s "$out/lib"/*/* "$out/lib"
-  '' + lib.optionalString (useLLVM) ''
-    ln -s $out/lib/*/clang_rt.crtbegin-*.o $out/lib/crtbegin.o
-    ln -s $out/lib/*/clang_rt.crtend-*.o $out/lib/crtend.o
-    ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o
-    ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/crtendS.o
-  '' + lib.optionalString doFakeLibgcc ''
-    ln -s $out/lib/freebsd/libclang_rt.builtins-*.a $out/lib/libgcc.a
-  '';
-
-  meta = llvm_meta // {
-    homepage = "https://compiler-rt.llvm.org/";
-    description = "Compiler runtime libraries";
-    longDescription = ''
-      The compiler-rt project provides highly tuned implementations of the
-      low-level code generator support routines like "__fixunsdfdi" and other
-      calls generated when a target doesn't have a short sequence of native
-      instructions to implement a core IR operation. It also provides
-      implementations of run-time libraries for dynamic testing tools such as
-      AddressSanitizer, ThreadSanitizer, MemorySanitizer, and DataFlowSanitizer.
-    '';
-    # "All of the code in the compiler-rt project is dual licensed under the MIT
-    # license and the UIUC License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-    broken = stdenv.hostPlatform.system == "aarch64-darwin"
-      # compiler-rt requires a Clang stdenv on 32-bit RISC-V:
-      # https://reviews.llvm.org/D43106#1019077
-      || (stdenv.hostPlatform.isRiscV32 && !stdenv.cc.isClang);
-  };
-}
diff --git a/pkgs/development/compilers/llvm/9/compiler-rt/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/compiler-rt/gnu-install-dirs.patch
deleted file mode 100644
index 9f63bef2f8610..0000000000000
--- a/pkgs/development/compilers/llvm/9/compiler-rt/gnu-install-dirs.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index f26ae25ada30..8ba536afdccc 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -12,6 +12,7 @@ endif()
- # Check if compiler-rt is built as a standalone project.
- if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE_BUILD)
-   project(CompilerRT C CXX ASM)
-+  include(GNUInstallDirs)
-   set(COMPILER_RT_STANDALONE_BUILD TRUE)
-   set_property(GLOBAL PROPERTY USE_FOLDERS ON)
- endif()
-diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake
-index f7ee932f214f..ef94a97c4be9 100644
---- a/cmake/Modules/AddCompilerRT.cmake
-+++ b/cmake/Modules/AddCompilerRT.cmake
-@@ -488,7 +488,7 @@ macro(add_compiler_rt_resource_file target_name file_name component)
-   add_custom_target(${target_name} DEPENDS ${dst_file})
-   # Install in Clang resource directory.
-   install(FILES ${file_name}
--    DESTINATION ${COMPILER_RT_INSTALL_PATH}/share
-+    DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_DATADIR}
-     COMPONENT ${component})
-   add_dependencies(${component} ${target_name})
- 
-@@ -505,7 +505,7 @@ macro(add_compiler_rt_script name)
-   add_custom_target(${name} DEPENDS ${dst})
-   install(FILES ${dst}
-     PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
--    DESTINATION ${COMPILER_RT_INSTALL_PATH}/bin)
-+    DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_BINDIR})
- endmacro(add_compiler_rt_script src name)
- 
- # Builds custom version of libc++ and installs it in <prefix>.
-diff --git a/cmake/Modules/CompilerRTDarwinUtils.cmake b/cmake/Modules/CompilerRTDarwinUtils.cmake
-index b50d55b56940..7e5729ad9c8e 100644
---- a/cmake/Modules/CompilerRTDarwinUtils.cmake
-+++ b/cmake/Modules/CompilerRTDarwinUtils.cmake
-@@ -386,7 +386,7 @@ macro(darwin_add_embedded_builtin_libraries)
-     set(DARWIN_macho_embedded_LIBRARY_OUTPUT_DIR
-       ${COMPILER_RT_OUTPUT_DIR}/lib/macho_embedded)
-     set(DARWIN_macho_embedded_LIBRARY_INSTALL_DIR
--      ${COMPILER_RT_INSTALL_PATH}/lib/macho_embedded)
-+      ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_LIBDIR}/macho_embedded)
-       
-     set(CFLAGS_armv7 "-target thumbv7-apple-darwin-eabi")
-     set(CFLAGS_i386 "-march=pentium")
-diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake
-index 6e672b1e1818..64999709958e 100644
---- a/cmake/Modules/CompilerRTUtils.cmake
-+++ b/cmake/Modules/CompilerRTUtils.cmake
-@@ -371,7 +371,7 @@ endfunction()
- function(get_compiler_rt_install_dir arch install_dir)
-   if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
-     get_compiler_rt_target(${arch} target)
--    set(${install_dir} ${COMPILER_RT_INSTALL_PATH}/lib/${target} PARENT_SCOPE)
-+    set(${install_dir} ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_LIBDIR}/${target} PARENT_SCOPE)
-   else()
-     set(${install_dir} ${COMPILER_RT_LIBRARY_INSTALL_DIR} PARENT_SCOPE)
-   endif()
-diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake
-index cef0e0d73d87..db33fb028287 100644
---- a/cmake/base-config-ix.cmake
-+++ b/cmake/base-config-ix.cmake
-@@ -55,11 +55,11 @@ if (LLVM_TREE_AVAILABLE)
- else()
-     # Take output dir and install path from the user.
-   set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
--    "Path where built compiler-rt libraries should be stored.")
-+    "Path where built compiler-rt build artifacts should be stored.")
-   set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin CACHE PATH
-     "Path where built compiler-rt executables should be stored.")
--  set(COMPILER_RT_INSTALL_PATH ${CMAKE_INSTALL_PREFIX} CACHE PATH
--    "Path where built compiler-rt libraries should be installed.")
-+  set(COMPILER_RT_INSTALL_PATH "" CACHE PATH
-+    "Prefix where built compiler-rt artifacts should be installed, comes before CMAKE_INSTALL_PREFIX.")
-   option(COMPILER_RT_INCLUDE_TESTS "Generate and build compiler-rt unit tests." OFF)
-   option(COMPILER_RT_ENABLE_WERROR "Fail and stop if warning is triggered" OFF)
-   # Use a host compiler to compile/link tests.
-@@ -87,7 +87,7 @@ else(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR)
-   set(COMPILER_RT_LIBRARY_OUTPUT_DIR
-     ${COMPILER_RT_OUTPUT_DIR}/lib/${COMPILER_RT_OS_DIR})
-   set(COMPILER_RT_LIBRARY_INSTALL_DIR
--    ${COMPILER_RT_INSTALL_PATH}/lib/${COMPILER_RT_OS_DIR})
-+    ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_LIBDIR}/${COMPILER_RT_OS_DIR})
- endif()
- 
- if(APPLE)
-diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
-index 38bd6e41a912..2092d0d08247 100644
---- a/include/CMakeLists.txt
-+++ b/include/CMakeLists.txt
-@@ -50,12 +50,12 @@ set_target_properties(compiler-rt-headers PROPERTIES FOLDER "Compiler-RT Misc")
- install(FILES ${SANITIZER_HEADERS}
-   COMPONENT compiler-rt-headers
-   PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
--  DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/sanitizer)
-+  DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_INCLUDEDIR}/sanitizer)
- # Install xray headers.
- install(FILES ${XRAY_HEADERS}
-   COMPONENT compiler-rt-headers
-   PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
--  DESTINATION ${COMPILER_RT_INSTALL_PATH}/include/xray)
-+  DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_INCLUDEDIR}/xray)
- 
- if (NOT CMAKE_CONFIGURATION_TYPES) # don't add this for IDEs.
-   add_custom_target(install-compiler-rt-headers
-diff --git a/lib/dfsan/CMakeLists.txt b/lib/dfsan/CMakeLists.txt
-index b3ae713cf02c..52b364b900f5 100644
---- a/lib/dfsan/CMakeLists.txt
-+++ b/lib/dfsan/CMakeLists.txt
-@@ -54,4 +54,4 @@ add_custom_command(OUTPUT ${dfsan_abilist_filename}
-                    DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt)
- add_dependencies(dfsan dfsan_abilist)
- install(FILES ${dfsan_abilist_filename}
--        DESTINATION ${COMPILER_RT_INSTALL_PATH}/share)
-+        DESTINATION ${COMPILER_RT_INSTALL_PATH}/${CMAKE_INSTALL_FULL_DATADIR})
diff --git a/pkgs/development/compilers/llvm/9/default.nix b/pkgs/development/compilers/llvm/9/default.nix
deleted file mode 100644
index a6274c8b2b9c0..0000000000000
--- a/pkgs/development/compilers/llvm/9/default.nix
+++ /dev/null
@@ -1,273 +0,0 @@
-{ lowPrio, newScope, pkgs, lib, stdenv, cmake
-, preLibcCrossHeaders
-, libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith, wrapBintoolsWith
-, buildLlvmTools # tools, but from the previous stage, for cross
-, targetLlvmLibraries # libraries, but from the next stage, for cross
-, targetLlvm
-# This is the default binutils, but with *this* version of LLD rather
-# than the default LLVM version's, if LLD is the choice. We use these for
-# the `useLLVM` bootstrapping below.
-, bootBintoolsNoLibc ?
-    if stdenv.targetPlatform.linker == "lld"
-    then null
-    else pkgs.bintoolsNoLibc
-, bootBintools ?
-    if stdenv.targetPlatform.linker == "lld"
-    then null
-    else pkgs.bintools
-}:
-
-let
-  release_version = "9.0.1";
-  version = release_version; # differentiating these is important for rc's
-
-  fetch = name: sha256: fetchurl {
-    url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${release_version}/${name}-${version}.src.tar.xz";
-    inherit sha256;
-  };
-
-  clang-tools-extra_src = fetch "clang-tools-extra" "01vgzd4k1q93nfs8gyl83mjlc4x0qsgfqw32lacbjzdxg0mdfvxj";
-
-  inherit (import ../common/common-let.nix { inherit lib release_version; }) llvm_meta;
-
-  tools = lib.makeExtensible (tools: let
-    callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 isl release_version version fetch buildLlvmTools; });
-    mkExtraBuildCommands0 = cc: ''
-      rsrc="$out/resource-root"
-      mkdir "$rsrc"
-      ln -s "${cc.lib}/lib/clang/${release_version}/include" "$rsrc"
-      echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
-    '';
-    mkExtraBuildCommands = cc: mkExtraBuildCommands0 cc + ''
-      ln -s "${targetLlvmLibraries.compiler-rt.out}/lib" "$rsrc/lib"
-      ln -s "${targetLlvmLibraries.compiler-rt.out}/share" "$rsrc/share"
-    '';
-
-  bintoolsNoLibc' =
-    if bootBintoolsNoLibc == null
-    then tools.bintoolsNoLibc
-    else bootBintoolsNoLibc;
-  bintools' =
-    if bootBintools == null
-    then tools.bintools
-    else bootBintools;
-
-  in {
-
-    libllvm = callPackage ./llvm {
-      inherit llvm_meta;
-    };
-
-    # `llvm` historically had the binaries.  When choosing an output explicitly,
-    # we need to reintroduce `outputSpecified` to get the expected behavior e.g. of lib.get*
-    llvm = tools.libllvm;
-
-    libllvm-polly = callPackage ./llvm {
-      inherit llvm_meta;
-      enablePolly = true;
-    };
-
-    llvm-polly = tools.libllvm-polly.lib // { outputSpecified = false; };
-
-    libclang = callPackage ./clang {
-      inherit clang-tools-extra_src llvm_meta;
-    };
-
-    clang-unwrapped = tools.libclang;
-
-    clang-polly-unwrapped = callPackage ./clang {
-      inherit llvm_meta;
-      inherit clang-tools-extra_src;
-      libllvm = tools.libllvm-polly;
-      enablePolly = true;
-    };
-
-    # disabled until recommonmark supports sphinx 3
-    #llvm-manpages = lowPrio (tools.libllvm.override {
-    #  enableManpages = true;
-    #  python3 = pkgs.python3;  # don't use python-boot
-    #});
-
-    clang-manpages = lowPrio (tools.libclang.override {
-      enableManpages = true;
-      python3 = pkgs.python3;  # don't use python-boot
-    });
-
-    # pick clang appropriate for package set we are targeting
-    clang =
-      /**/ if stdenv.targetPlatform.libc == null then tools.clangNoLibc
-      else if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM
-      else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang
-      else tools.libcxxClang;
-
-    libstdcxxClang = wrapCCWith rec {
-      cc = tools.clang-unwrapped;
-      # libstdcxx is taken from gcc in an ad-hoc way in cc-wrapper.
-      libcxx = null;
-      extraPackages = [
-        targetLlvmLibraries.compiler-rt
-      ];
-      extraBuildCommands = mkExtraBuildCommands cc;
-    };
-
-    libcxxClang = wrapCCWith rec {
-      cc = tools.clang-unwrapped;
-      libcxx = targetLlvmLibraries.libcxx;
-      extraPackages = [
-        libcxx.cxxabi
-        targetLlvmLibraries.compiler-rt
-      ];
-      extraBuildCommands = mkExtraBuildCommands cc;
-    };
-
-    lld = callPackage ./lld {
-      inherit llvm_meta;
-    };
-
-    lldb = callPackage ./lldb {
-      inherit llvm_meta;
-    };
-
-    # Below, is the LLVM bootstrapping logic. It handles building a
-    # fully LLVM toolchain from scratch. No GCC toolchain should be
-    # pulled in. As a consequence, it is very quick to build different
-    # targets provided by LLVM and we can also build for what GCC
-    # doesn’t support like LLVM. Probably we should move to some other
-    # file.
-
-    bintools-unwrapped = callPackage ../common/bintools.nix { };
-
-    bintoolsNoLibc = wrapBintoolsWith {
-      bintools = tools.bintools-unwrapped;
-      libc = preLibcCrossHeaders;
-    };
-
-    bintools = wrapBintoolsWith {
-      bintools = tools.bintools-unwrapped;
-    };
-
-    clangUseLLVM = wrapCCWith rec {
-      cc = tools.clang-unwrapped;
-      libcxx = targetLlvmLibraries.libcxx;
-      bintools = bintools';
-      extraPackages = [
-        libcxx.cxxabi
-        targetLlvmLibraries.compiler-rt
-      ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [
-        targetLlvmLibraries.libunwind
-      ];
-      extraBuildCommands = ''
-        echo "-rtlib=compiler-rt -Wno-unused-command-line-argument" >> $out/nix-support/cc-cflags
-        echo "-B${targetLlvmLibraries.compiler-rt}/lib" >> $out/nix-support/cc-cflags
-      '' + lib.optionalString (!stdenv.targetPlatform.isWasm) ''
-        echo "--unwindlib=libunwind" >> $out/nix-support/cc-cflags
-        echo "-L${targetLlvmLibraries.libunwind}/lib" >> $out/nix-support/cc-ldflags
-      '' + lib.optionalString (!stdenv.targetPlatform.isWasm && stdenv.targetPlatform.useLLVM or false) ''
-        echo "-lunwind" >> $out/nix-support/cc-ldflags
-      '' + lib.optionalString stdenv.targetPlatform.isWasm ''
-        echo "-fno-exceptions" >> $out/nix-support/cc-cflags
-      '' + mkExtraBuildCommands cc;
-    };
-
-    clangNoLibcxx = wrapCCWith rec {
-      cc = tools.clang-unwrapped;
-      libcxx = null;
-      bintools = bintools';
-      extraPackages = [
-        targetLlvmLibraries.compiler-rt
-      ];
-      extraBuildCommands = ''
-        echo "-rtlib=compiler-rt" >> $out/nix-support/cc-cflags
-        echo "-B${targetLlvmLibraries.compiler-rt}/lib" >> $out/nix-support/cc-cflags
-        echo "-nostdlib++" >> $out/nix-support/cc-cflags
-      '' + mkExtraBuildCommands cc;
-    };
-
-    clangNoLibc = wrapCCWith rec {
-      cc = tools.clang-unwrapped;
-      libcxx = null;
-      bintools = bintoolsNoLibc';
-      extraPackages = [
-        targetLlvmLibraries.compiler-rt
-      ];
-      extraBuildCommands = ''
-        echo "-rtlib=compiler-rt" >> $out/nix-support/cc-cflags
-        echo "-B${targetLlvmLibraries.compiler-rt}/lib" >> $out/nix-support/cc-cflags
-      '' + mkExtraBuildCommands cc;
-    };
-
-    clangNoCompilerRt = wrapCCWith rec {
-      cc = tools.clang-unwrapped;
-      libcxx = null;
-      bintools = bintoolsNoLibc';
-      extraPackages = [ ];
-      extraBuildCommands = ''
-        echo "-nostartfiles" >> $out/nix-support/cc-cflags
-      '' + mkExtraBuildCommands0 cc;
-    };
-
-    clangNoCompilerRtWithLibc = wrapCCWith rec {
-      cc = tools.clang-unwrapped;
-      libcxx = null;
-      bintools = bintools';
-      extraPackages = [ ];
-      extraBuildCommands = mkExtraBuildCommands0 cc;
-    };
-
-  });
-
-  libraries = lib.makeExtensible (libraries: let
-    callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 isl release_version version fetch; });
-  in {
-
-    compiler-rt-libc = callPackage ./compiler-rt {
-      inherit llvm_meta;
-      stdenv = if stdenv.hostPlatform.useLLVM or false
-               then overrideCC stdenv buildLlvmTools.clangNoCompilerRtWithLibc
-               else stdenv;
-    };
-
-    compiler-rt-no-libc = callPackage ./compiler-rt {
-      inherit llvm_meta;
-      stdenv = if stdenv.hostPlatform.useLLVM or false
-               then overrideCC stdenv buildLlvmTools.clangNoCompilerRt
-               else stdenv;
-    };
-
-    # N.B. condition is safe because without useLLVM both are the same.
-    compiler-rt = if stdenv.hostPlatform.isAndroid
-      then libraries.compiler-rt-libc
-      else libraries.compiler-rt-no-libc;
-
-    stdenv = overrideCC stdenv buildLlvmTools.clang;
-
-    libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang;
-
-    libcxx = callPackage ./libcxx {
-      inherit llvm_meta;
-      stdenv = if stdenv.hostPlatform.useLLVM or false
-               then overrideCC stdenv buildLlvmTools.clangNoLibcxx
-               else stdenv;
-    };
-
-    libcxxabi = callPackage ./libcxxabi {
-      inherit llvm_meta;
-      stdenv = if stdenv.hostPlatform.useLLVM or false
-               then overrideCC stdenv buildLlvmTools.clangNoLibcxx
-               else stdenv;
-    };
-
-    libunwind = callPackage ./libunwind {
-      inherit llvm_meta;
-      stdenv = if stdenv.hostPlatform.useLLVM or false
-               then overrideCC stdenv buildLlvmTools.clangNoLibcxx
-               else stdenv;
-    };
-
-    openmp = callPackage ./openmp {
-      inherit llvm_meta targetLlvm;
-    };
-  });
-  noExtend = extensible: lib.attrsets.removeAttrs extensible [ "extend" ];
-
-in { inherit tools libraries release_version; } // (noExtend libraries) // (noExtend tools)
diff --git a/pkgs/development/compilers/llvm/9/libcxx/default.nix b/pkgs/development/compilers/llvm/9/libcxx/default.nix
deleted file mode 100644
index 65f0e19225a5e..0000000000000
--- a/pkgs/development/compilers/llvm/9/libcxx/default.nix
+++ /dev/null
@@ -1,88 +0,0 @@
-{ lib, stdenv, llvm_meta, fetch, cmake, python3, fixDarwinDylibNames, version
-, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi
-, libcxxabi, libcxxrt
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi";
-
-stdenv.mkDerivation {
-  pname = "libcxx";
-  inherit version;
-
-  src = fetch "libcxx" "0d2bj5i6mk4caq7skd5nsdmz8c2m5w5anximl5wz3x32p08zz089";
-
-  postUnpack = ''
-    unpackFile ${libcxxabi.src}
-    export LIBCXXABI_INCLUDE_DIR="$PWD/$(ls -d libcxxabi-${version}*)/include"
-  '';
-
-  outputs = [ "out" "dev" ];
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ] ++ lib.optionals stdenv.hostPlatform.isMusl [
-    ../../common/libcxx/libcxx-0001-musl-hacks.patch
-  ];
-
-  # Prevent errors like "error: 'foo' is unavailable: introduced in macOS yy.zz"
-  postPatch = ''
-    substituteInPlace include/__config \
-      --replace "#    define _LIBCPP_USE_AVAILABILITY_APPLE" ""
-  '';
-
-  preConfigure = ''
-    # Get headers from the cxxabi source so we can see private headers not installed by the cxxabi package
-    cmakeFlagsArray=($cmakeFlagsArray -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$LIBCXXABI_INCLUDE_DIR")
-  '' + lib.optionalString stdenv.hostPlatform.isMusl ''
-    patchShebangs utils/cat_files.py
-  '';
-  nativeBuildInputs = [ cmake ]
-    ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) python3
-    ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
-
-  buildInputs = [ cxxabi ];
-
-  cmakeFlags = [
-    "-DLIBCXX_LIBCPPABI_VERSION=2"
-    "-DLIBCXX_CXX_ABI=${cxxabi.pname}"
-  ] ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1"
-    ++ lib.optional (cxxabi.pname == "libcxxabi") "-DLIBCXX_LIBCXXABI_LIB_PATH=${cxxabi}/lib"
-    ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON"
-    ++ lib.optionals stdenv.hostPlatform.isWasm [
-      "-DLIBCXX_ENABLE_THREADS=OFF"
-      "-DLIBCXX_ENABLE_FILESYSTEM=OFF"
-      "-DLIBCXX_ENABLE_EXCEPTIONS=OFF"
-    ] ++ lib.optional (!enableShared) "-DLIBCXX_ENABLE_SHARED=OFF";
-
-  preInstall = lib.optionalString (stdenv.isDarwin) ''
-    for file in lib/*.dylib; do
-      if [ -L "$file" ]; then continue; fi
-
-      baseName=$(basename $(${stdenv.cc.targetPrefix}otool -D $file | tail -n 1))
-      installName="$out/lib/$baseName"
-      abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/')
-
-      for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do
-        ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file
-      done
-    done
-  '';
-
-  passthru = {
-    isLLVM = true;
-    inherit cxxabi;
-  };
-
-  meta = llvm_meta // {
-    homepage = "https://libcxx.llvm.org/";
-    description = "C++ standard library";
-    longDescription = ''
-      libc++ is an implementation of the C++ standard library, targeting C++11,
-      C++14 and above.
-    '';
-    # "All of the code in libc++ is dual licensed under the MIT license and the
-    # UIUC License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/9/libcxx/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/libcxx/gnu-install-dirs.patch
deleted file mode 100644
index 424488bd2e522..0000000000000
--- a/pkgs/development/compilers/llvm/9/libcxx/gnu-install-dirs.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index ec1869ddc7ae..a1c040235c8d 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -26,6 +26,8 @@ set(CMAKE_MODULE_PATH
- if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXX_STANDALONE_BUILD)
-   project(libcxx CXX C)
- 
-+  include(GNUInstallDirs)
-+
-   set(PACKAGE_NAME libcxx)
-   set(PACKAGE_VERSION 9.0.1)
-   set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
-@@ -416,7 +418,7 @@ string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
- if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
-   set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
-   set(LIBCXX_HEADER_DIR ${LLVM_BINARY_DIR})
--  set(LIBCXX_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
-+  set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
-   if(LIBCXX_LIBDIR_SUBDIR)
-     string(APPEND LIBCXX_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR})
-     string(APPEND LIBCXX_INSTALL_LIBRARY_DIR /${LIBCXX_LIBDIR_SUBDIR})
-@@ -424,10 +426,10 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
- elseif(LLVM_LIBRARY_OUTPUT_INTDIR)
-   set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
-   set(LIBCXX_HEADER_DIR  ${LLVM_BINARY_DIR})
--  set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX})
-+  set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX})
- else()
-   set(LIBCXX_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
--  set(LIBCXX_INSTALL_LIBRARY_DIR lib${LIBCXX_LIBDIR_SUFFIX})
-+  set(LIBCXX_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXX_LIBDIR_SUFFIX})
- endif()
- 
- file(MAKE_DIRECTORY "${LIBCXX_BINARY_INCLUDE_DIR}")
-diff --git a/cmake/Modules/HandleLibCXXABI.cmake b/cmake/Modules/HandleLibCXXABI.cmake
-index 10f100f7f0fb..95ed3978ab73 100644
---- a/cmake/Modules/HandleLibCXXABI.cmake
-+++ b/cmake/Modules/HandleLibCXXABI.cmake
-@@ -61,7 +61,7 @@ macro(setup_abi_lib abidefines abishared abistatic abifiles abidirs)
- 
-         if (LIBCXX_INSTALL_HEADERS)
-           install(FILES "${LIBCXX_BINARY_INCLUDE_DIR}/${fpath}"
--            DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dstdir}
-+            DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dstdir}
-             COMPONENT cxx-headers
-             PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-             )
-diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
-index 7cbf82caa81f..7cbde7accd78 100644
---- a/include/CMakeLists.txt
-+++ b/include/CMakeLists.txt
-@@ -243,7 +243,7 @@ if (LIBCXX_INSTALL_HEADERS)
-   foreach(file ${files})
-     get_filename_component(dir ${file} DIRECTORY)
-     install(FILES ${file}
--      DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1/${dir}
-+      DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1/${dir}
-       COMPONENT ${CXX_HEADER_TARGET}
-       PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-     )
-@@ -252,7 +252,7 @@ if (LIBCXX_INSTALL_HEADERS)
-   if (LIBCXX_NEEDS_SITE_CONFIG)
-     # Install the generated header as __config.
-     install(FILES ${LIBCXX_BINARY_DIR}/__generated_config
--      DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}include/c++/v1
-+      DESTINATION ${LIBCXX_INSTALL_HEADER_PREFIX}${CMAKE_INSTALL_INCLUDEDIR}/c++/v1
-       PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-       RENAME __config
-       COMPONENT ${CXX_HEADER_TARGET})
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 31cd24333a5e..a419cef662b0 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -437,21 +437,21 @@ if (LIBCXX_INSTALL_LIBRARY)
-     install(TARGETS cxx_shared
-       ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
-       LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
--      RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
-+      RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
-   endif()
- 
-   if (LIBCXX_INSTALL_STATIC_LIBRARY)
-     install(TARGETS cxx_static
-       ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
-       LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
--      RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
-+      RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
-   endif()
- 
-   if(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY)
-     install(TARGETS ${LIBCXX_INSTALL_TARGETS} ${experimental_lib}
-       LIBRARY DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
-       ARCHIVE DESTINATION ${LIBCXX_INSTALL_PREFIX}${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx
--      RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}bin COMPONENT cxx)
-+      RUNTIME DESTINATION ${LIBCXX_INSTALL_PREFIX}${CMAKE_INSTALL_BINDIR} COMPONENT cxx)
-   endif()
- 
-   # NOTE: This install command must go after the cxx install command otherwise
diff --git a/pkgs/development/compilers/llvm/9/libcxxabi/default.nix b/pkgs/development/compilers/llvm/9/libcxxabi/default.nix
deleted file mode 100644
index 7d4a83db390b1..0000000000000
--- a/pkgs/development/compilers/llvm/9/libcxxabi/default.nix
+++ /dev/null
@@ -1,85 +0,0 @@
-{ lib, stdenv, llvm_meta, cmake, fetch, libcxx, libunwind, llvm, version
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation {
-  pname = "libcxxabi";
-  inherit version;
-
-  src = fetch "libcxxabi" "1b4aiaa8cirx52vk2p5kfk57qmbqf1ipb4nqnjhdgqps9jm7iyg8";
-
-  outputs = [ "out" "dev" ];
-
-  postUnpack = ''
-    unpackFile ${libcxx.src}
-    unpackFile ${llvm.src}
-    cmakeFlags+=" -DLLVM_PATH=$PWD/$(ls -d llvm-*) -DLIBCXXABI_LIBCXX_PATH=$PWD/$(ls -d libcxx-*)"
-  '' + lib.optionalString stdenv.isDarwin ''
-    export TRIPLE=x86_64-apple-darwin
-  '' + lib.optionalString stdenv.hostPlatform.isMusl ''
-    patch -p1 -d $(ls -d libcxx-*) -i ${../../common/libcxx/libcxx-0001-musl-hacks.patch}
-  '' + lib.optionalString stdenv.hostPlatform.isWasm ''
-    patch -p1 -d $(ls -d llvm-*) -i ${../../common/libcxxabi/wasm.patch}
-  '';
-
-  patches = [
-    ../../common/libcxxabi/no-threads.patch
-    ./gnu-install-dirs.patch
-  ];
-
-  nativeBuildInputs = [ cmake ];
-  buildInputs = lib.optional (!stdenv.isDarwin && !stdenv.hostPlatform.isWasm) libunwind;
-
-  cmakeFlags = lib.optionals (stdenv.hostPlatform.useLLVM or false) [
-    "-DLLVM_ENABLE_LIBCXX=ON"
-    "-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
-  ] ++ lib.optionals stdenv.hostPlatform.isWasm [
-    "-DLIBCXXABI_ENABLE_THREADS=OFF"
-    "-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF"
-  ] ++ lib.optionals (!enableShared) [
-    "-DLIBCXXABI_ENABLE_SHARED=OFF"
-  ];
-
-  preInstall = lib.optionalString stdenv.isDarwin ''
-    for file in lib/*.dylib; do
-      if [ -L "$file" ]; then continue; fi
-
-      # Fix up the install name. Preserve the basename, just replace the path.
-      installName="$out/lib/$(basename $(${stdenv.cc.targetPrefix}otool -D $file | tail -n 1))"
-
-      # this should be done in CMake, but having trouble figuring out
-      # the magic combination of necessary CMake variables
-      # if you fancy a try, take a look at
-      # https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling
-      ${stdenv.cc.targetPrefix}install_name_tool -id $installName $file
-
-      # cc-wrapper passes '-lc++abi' to all c++ link steps, but that causes
-      # libcxxabi to sometimes link against a different version of itself.
-      # Here we simply make that second reference point to ourselves.
-      for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do
-        ${stdenv.cc.targetPrefix}install_name_tool -change $other $installName $file
-      done
-    done
-  '';
-
-  postInstall = ''
-    mkdir -p "$dev/include"
-    install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include"
-  '';
-
-  passthru = {
-    libName = "c++abi";
-  };
-
-  meta = llvm_meta // {
-    homepage = "https://libcxxabi.llvm.org/";
-    description = "Provides C++ standard library support";
-    longDescription = ''
-      libc++abi is a new implementation of low level support for a standard C++ library.
-    '';
-    # "All of the code in libc++abi is dual licensed under the MIT license and
-    # the UIUC License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-    maintainers = llvm_meta.maintainers ++ [ lib.maintainers.vlstill ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/9/libcxxabi/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/libcxxabi/gnu-install-dirs.patch
deleted file mode 100644
index 70b41a6ff5318..0000000000000
--- a/pkgs/development/compilers/llvm/9/libcxxabi/gnu-install-dirs.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index aa0b124fc3c4..d74373f465c5 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -20,6 +20,8 @@ set(CMAKE_MODULE_PATH
- if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXXABI_STANDALONE_BUILD)
-   project(libcxxabi CXX C)
- 
-+  include(GNUInstallDirs)
-+
-   set(PACKAGE_NAME libcxxabi)
-   set(PACKAGE_VERSION 9.0.1)
-   set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
-@@ -181,17 +183,17 @@ string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
- 
- if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
-   set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
--  set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
-+  set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
-   if(LIBCXX_LIBDIR_SUBDIR)
-     string(APPEND LIBCXXABI_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR})
-     string(APPEND LIBCXXABI_INSTALL_LIBRARY_DIR /${LIBCXXABI_LIBDIR_SUBDIR})
-   endif()
- elseif(LLVM_LIBRARY_OUTPUT_INTDIR)
-   set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
--  set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX})
-+  set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX})
- else()
-   set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX})
--  set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LIBCXXABI_LIBDIR_SUFFIX})
-+  set(LIBCXXABI_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBCXXABI_LIBDIR_SUFFIX})
- endif()
- 
- set(LIBCXXABI_INSTALL_PREFIX "" CACHE STRING "Define libc++abi destination prefix.")
diff --git a/pkgs/development/compilers/llvm/9/libunwind/default.nix b/pkgs/development/compilers/llvm/9/libunwind/default.nix
deleted file mode 100644
index 9a78025d71d4e..0000000000000
--- a/pkgs/development/compilers/llvm/9/libunwind/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, stdenv, llvm_meta, version, fetch, cmake, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  src = fetch pname "1wb02ha3gl6p0a321hwpll74pz5qvjr11xmjqx62g288f1m10njk";
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ];
-
-  cmakeFlags = lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/9/libunwind/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/libunwind/gnu-install-dirs.patch
deleted file mode 100644
index 12171bb51550a..0000000000000
--- a/pkgs/development/compilers/llvm/9/libunwind/gnu-install-dirs.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index df68491d686e..3b53267ae464 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -18,6 +18,8 @@ set(CMAKE_MODULE_PATH
- if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBUNWIND_STANDALONE_BUILD)
-   project(libunwind)
- 
-+  include(GNUInstallDirs)
-+
-   # Rely on llvm-config.
-   set(CONFIG_OUTPUT)
-   if(NOT LLVM_CONFIG_PATH)
-@@ -189,17 +191,17 @@ string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
- 
- if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
-   set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
--  set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
-+  set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/${LLVM_DEFAULT_TARGET_TRIPLE}/c++)
-   if(LIBCXX_LIBDIR_SUBDIR)
-     string(APPEND LIBUNWIND_LIBRARY_DIR /${LIBUNWIND_LIBDIR_SUBDIR})
-     string(APPEND LIBUNWIND_INSTALL_LIBRARY_DIR /${LIBUNWIND_LIBDIR_SUBDIR})
-   endif()
- elseif(LLVM_LIBRARY_OUTPUT_INTDIR)
-   set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
--  set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LIBUNWIND_LIBDIR_SUFFIX})
-+  set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX})
- else()
-   set(LIBUNWIND_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBUNWIND_LIBDIR_SUFFIX})
--  set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LIBUNWIND_LIBDIR_SUFFIX})
-+  set(LIBUNWIND_INSTALL_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR}${LIBUNWIND_LIBDIR_SUFFIX})
- endif()
- 
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBUNWIND_LIBRARY_DIR})
diff --git a/pkgs/development/compilers/llvm/9/lld/default.nix b/pkgs/development/compilers/llvm/9/lld/default.nix
deleted file mode 100644
index bf79c7597829a..0000000000000
--- a/pkgs/development/compilers/llvm/9/lld/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, fetch
-, cmake
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  src = fetch pname "10hckfxpapfnh6y9apjiya2jpw9nmbbmh8ayijx89mrg7snjn9l6";
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ libllvm libxml2 ];
-
-  cmakeFlags = [
-    "-DLLVM_CONFIG_PATH=${libllvm.dev}/bin/llvm-config${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "-native"}"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/9/lld/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/lld/gnu-install-dirs.patch
deleted file mode 100644
index 232f5cbac9ddb..0000000000000
--- a/pkgs/development/compilers/llvm/9/lld/gnu-install-dirs.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 641f71c114ae..9d44c1463aff 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -6,6 +6,8 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
-   set(CMAKE_INCLUDE_CURRENT_DIR ON)
-   set(LLD_BUILT_STANDALONE TRUE)
- 
-+  include(GNUInstallDirs)
-+
-   find_program(LLVM_CONFIG_PATH "llvm-config" DOC "Path to llvm-config binary")
-   if(NOT LLVM_CONFIG_PATH)
-     message(FATAL_ERROR "llvm-config not found: specify LLVM_CONFIG_PATH")
-@@ -202,7 +204,7 @@ include_directories(BEFORE
- 
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   install(DIRECTORY include/
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     FILES_MATCHING
-     PATTERN "*.h"
-     PATTERN ".svn" EXCLUDE
-diff --git a/cmake/modules/AddLLD.cmake b/cmake/modules/AddLLD.cmake
-index fa48b428d26b..e7967aad3ceb 100644
---- a/cmake/modules/AddLLD.cmake
-+++ b/cmake/modules/AddLLD.cmake
-@@ -20,9 +20,9 @@ macro(add_lld_library name)
-     install(TARGETS ${name}
-       COMPONENT ${name}
-       ${export_to_lldtargets}
--      LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
--      ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
--      RUNTIME DESTINATION bin)
-+      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
-+      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
-+      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- 
-     if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
-       add_llvm_install_targets(install-${name}
-@@ -54,7 +54,7 @@ macro(add_lld_tool name)
- 
-     install(TARGETS ${name}
-       ${export_to_lldtargets}
--      RUNTIME DESTINATION bin
-+      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-       COMPONENT ${name})
- 
-     if(NOT CMAKE_CONFIGURATION_TYPES)
-@@ -69,5 +69,5 @@ endmacro()
- macro(add_lld_symlink name dest)
-   add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
-   # Always generate install targets
--  llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
-+  llvm_install_symlink(${name} ${dest} ${CMAKE_INSTALL_FULL_BINDIR} ALWAYS_GENERATE)
- endmacro()
-diff --git a/tools/lld/CMakeLists.txt b/tools/lld/CMakeLists.txt
-index a15e296e31df..654c2cfdb9c0 100644
---- a/tools/lld/CMakeLists.txt
-+++ b/tools/lld/CMakeLists.txt
-@@ -17,7 +17,7 @@ target_link_libraries(lld
-   )
- 
- install(TARGETS lld
--  RUNTIME DESTINATION bin)
-+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
- 
- if(NOT LLD_SYMLINKS_TO_CREATE)
-   set(LLD_SYMLINKS_TO_CREATE lld-link ld.lld ld64.lld wasm-ld)
diff --git a/pkgs/development/compilers/llvm/9/lldb/default.nix b/pkgs/development/compilers/llvm/9/lldb/default.nix
deleted file mode 100644
index 49cc0a0d42a68..0000000000000
--- a/pkgs/development/compilers/llvm/9/lldb/default.nix
+++ /dev/null
@@ -1,117 +0,0 @@
-{ lib, stdenv, llvm_meta
-, fetch
-, fetchpatch
-, cmake
-, zlib
-, ncurses
-, swig
-, which
-, libedit
-, libxml2
-, libllvm
-, libclang
-, python3
-, version
-, darwin
-, makeWrapper
-, perl
-, lit
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lldb";
-  inherit version;
-
-  src = fetch pname "02gb3fbz09kyw8n71218v5v77ip559x3gqbcp8y3w6n3jpbryywa";
-
-  patches = [
-    ./procfs.patch
-    ./gnu-install-dirs.patch
-
-    # Fix darwin build
-    (fetchpatch {
-      name = "lldb-use-system-debugserver-fix.patch";
-      url = "https://github.com/llvm-mirror/lldb/commit/be770754cc43da22eacdb70c6203f4582eeb011f.diff";
-      sha256 = "sha256-tKkk6sn//0Hu0nlzoKWs5fXMWc+O2JAWOEJ1ZnaLuVU=";
-      excludes = [ "packages/*" ];
-      postFetch = ''
-        substituteInPlace "$out" --replace add_lldb_tool_subdirectory add_subdirectory
-      '';
-    })
-    ./lldb-gdb-remote-no-libcompress.patch
-  ];
-
-  outputs = [ "out" "lib" "dev" ];
-
-  nativeBuildInputs = [
-    cmake python3 which swig lit makeWrapper
-  ] ++ lib.optionals stdenv.isDarwin [
-    # for scripts/generate-vers.pl
-    perl
-  ];
-
-  buildInputs = [
-    ncurses zlib libedit libxml2 libllvm
-  ] ++ lib.optionals stdenv.isDarwin [
-    darwin.libobjc
-    darwin.apple_sdk.libs.xpc
-    darwin.apple_sdk.frameworks.Foundation
-    darwin.bootstrap_cmds
-    darwin.apple_sdk.frameworks.Carbon
-    darwin.apple_sdk.frameworks.Cocoa
-    darwin.apple_sdk.frameworks.DebugSymbols
-  ];
-
-  CXXFLAGS = "-fno-rtti";
-  hardeningDisable = [ "format" ];
-
-  cmakeFlags = [
-    "-DLLDB_INCLUDE_TESTS=${if doCheck then "YES" else "NO"}"
-    "-DClang_DIR=${libclang.dev}/lib/cmake"
-    "-DLLVM_EXTERNAL_LIT=${lit}/bin/lit"
-    "-DLLDB_CODESIGN_IDENTITY=" # codesigning makes nondeterministic
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Building debugserver requires the proprietary libcompression
-    "-DLLDB_USE_SYSTEM_DEBUGSERVER=ON"
-  ] ++ lib.optionals doCheck [
-    "-DLLDB_TEST_C_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"
-    "-DLLDB_TEST_CXX_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++"
-  ];
-
-  doCheck = false;
-
-  doInstallCheck = true;
-
-  installCheckPhase = ''
-    if [ ! -e "$lib/${python3.sitePackages}/lldb/_lldb.so" ] ; then
-        echo "ERROR: python files not installed where expected!";
-        return 1;
-    fi
-  '';
-
-  postInstall = ''
-    wrapProgram $out/bin/lldb --prefix PYTHONPATH : $lib/${python3.sitePackages}/
-
-    # man page
-    mkdir -p $out/share/man/man1
-    install ../docs/lldb.1 -t $out/share/man/man1/
-
-    # Editor support
-    # vscode:
-    install -D ../tools/lldb-vscode/package.json $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/package.json
-    mkdir -p $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin
-    ln -s $out/bin/llvm-vscode $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin
-  '';
-
-  meta = llvm_meta // {
-    broken = stdenv.isDarwin && stdenv.isAarch64;
-    homepage = "https://lldb.llvm.org/";
-    description = "A next-generation high-performance debugger";
-    longDescription = ''
-      LLDB is a next generation, high-performance debugger. It is built as a set
-      of reusable components which highly leverage existing libraries in the
-      larger LLVM Project, such as the Clang expression parser and LLVM
-      disassembler.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/9/lldb/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/lldb/gnu-install-dirs.patch
deleted file mode 100644
index 6ceb29ced92f1..0000000000000
--- a/pkgs/development/compilers/llvm/9/lldb/gnu-install-dirs.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 5d52f6450657..a05130cf80b9 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -14,6 +14,8 @@ set(CMAKE_MODULE_PATH
- # If we are not building as part of LLVM, build LLDB as a standalone project,
- # using LLVM as an external library.
- if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
-+  include(GNUInstallDirs)
-+
-   include(LLDBStandalone)
- endif()
- 
-diff --git a/cmake/modules/AddLLDB.cmake b/cmake/modules/AddLLDB.cmake
-index 4c99278c583b..36d3640a6afc 100644
---- a/cmake/modules/AddLLDB.cmake
-+++ b/cmake/modules/AddLLDB.cmake
-@@ -94,13 +94,13 @@ function(add_lldb_library name)
-   endif()
- 
-   if(PARAM_SHARED)
--    set(install_dest lib${LLVM_LIBDIR_SUFFIX})
-+    set(install_dest ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-     if(PARAM_INSTALL_PREFIX)
-       set(install_dest ${PARAM_INSTALL_PREFIX})
-     endif()
-     # RUNTIME is relevant for DLL platforms, FRAMEWORK for macOS
-     install(TARGETS ${name} COMPONENT ${name}
--      RUNTIME DESTINATION bin
-+      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-       LIBRARY DESTINATION ${install_dest}
-       ARCHIVE DESTINATION ${install_dest}
-       FRAMEWORK DESTINATION ${install_dest})
-diff --git a/cmake/modules/LLDBConfig.cmake b/cmake/modules/LLDBConfig.cmake
-index e1a133709ff2..357b4bb4492a 100644
---- a/cmake/modules/LLDBConfig.cmake
-+++ b/cmake/modules/LLDBConfig.cmake
-@@ -335,7 +335,7 @@ include_directories(BEFORE
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   install(DIRECTORY include/
-     COMPONENT lldb-headers
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     FILES_MATCHING
-     PATTERN "*.h"
-     PATTERN ".svn" EXCLUDE
-@@ -345,7 +345,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
- 
-   install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
-     COMPONENT lldb-headers
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     FILES_MATCHING
-     PATTERN "*.h"
-     PATTERN ".svn" EXCLUDE
-diff --git a/tools/intel-features/CMakeLists.txt b/tools/intel-features/CMakeLists.txt
-index b5316540fdf3..3c3c882d503f 100644
---- a/tools/intel-features/CMakeLists.txt
-+++ b/tools/intel-features/CMakeLists.txt
-@@ -64,4 +64,4 @@ if (NOT LLDB_DISABLE_PYTHON AND LLDB_BUILD_INTEL_PT)
- endif()
- 
- install(TARGETS lldbIntelFeatures
--  LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX})
-+  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index cdf22c4..d56fc6a 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -146,7 +146,7 @@ if (NOT LLDB_DISABLE_PYTHON)
-                --cfgBldDir=${lldb_scripts_dir}
-                --prefix=${CMAKE_BINARY_DIR}
-                --cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}
--               --lldbLibDir=lib${LLVM_LIBDIR_SUFFIX}
-+               --lldbLibDir=${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
-                ${use_python_wrapper_from_src_dir}
-                ${use_six_py_from_system}
-         VERBATIM
-diff --git a/cmake/modules/LLDBStandalone.cmake b/cmake/modules/LLDBStandalone.cmake
-index b726797..1f057ac 100644
---- a/cmake/modules/LLDBStandalone.cmake
-+++ b/cmake/modules/LLDBStandalone.cmake
-@@ -95,7 +95,7 @@ include_directories(
-   "${CLANG_INCLUDE_DIRS}")
-
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
--set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
-+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR}/lib${LLVM_LIBDIR_SUFFIX})
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
-
- set(LLDB_BUILT_STANDALONE 1)
-diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
-index 7de7973..b70aecc 100644
---- a/scripts/CMakeLists.txt
-+++ b/scripts/CMakeLists.txt
-@@ -50,7 +50,8 @@ if(NOT LLDB_BUILD_FRAMEWORK)
-     OUTPUT_STRIP_TRAILING_WHITESPACE)
-   execute_process(
-     COMMAND ${PYTHON_EXECUTABLE}
--        -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(True, False, ''))"
-+        -c "import distutils.sysconfig, sys; print(distutils.sysconfig.get_python_lib(True, False, sys.argv[1]))"
-+        ${CMAKE_INSTALL_LIBDIR}/../
-     OUTPUT_VARIABLE SWIG_INSTALL_DIR
-     OUTPUT_STRIP_TRAILING_WHITESPACE)
-
diff --git a/pkgs/development/compilers/llvm/9/lldb/lldb-gdb-remote-no-libcompress.patch b/pkgs/development/compilers/llvm/9/lldb/lldb-gdb-remote-no-libcompress.patch
deleted file mode 100644
index ff2dcd301fa3e..0000000000000
--- a/pkgs/development/compilers/llvm/9/lldb/lldb-gdb-remote-no-libcompress.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -ru a/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
---- a/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp	2019-12-11 14:15:30.000000000 -0500
-+++ b/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp	2021-11-26 23:44:28.000000000 -0500
-@@ -36,13 +36,6 @@
- 
- #include "llvm/ADT/StringSwitch.h"
- 
--#if defined(__APPLE__)
--#ifndef HAVE_LIBCOMPRESSION
--#define HAVE_LIBCOMPRESSION
--#endif
--#include <compression.h>
--#endif
--
- using namespace lldb;
- using namespace lldb_private;
- using namespace lldb_private::process_gdb_remote;
diff --git a/pkgs/development/compilers/llvm/9/lldb/procfs.patch b/pkgs/development/compilers/llvm/9/lldb/procfs.patch
deleted file mode 100644
index b075dbaeee0ad..0000000000000
--- a/pkgs/development/compilers/llvm/9/lldb/procfs.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- a/source/Plugins/Process/Linux/Procfs.h
-+++ b/source/Plugins/Process/Linux/Procfs.h
-@@ -11,21 +11,12 @@
- // sys/procfs.h on Android/Linux for all supported architectures.
- 
- #include <sys/ptrace.h>
-+#include <asm/ptrace.h>
- 
--#ifdef __ANDROID__
--#if defined(__arm64__) || defined(__aarch64__)
--typedef unsigned long elf_greg_t;
--typedef elf_greg_t
--    elf_gregset_t[(sizeof(struct user_pt_regs) / sizeof(elf_greg_t))];
--typedef struct user_fpsimd_state elf_fpregset_t;
--#ifndef NT_FPREGSET
--#define NT_FPREGSET NT_PRFPREG
--#endif // NT_FPREGSET
--#elif defined(__mips__)
--#ifndef NT_FPREGSET
--#define NT_FPREGSET NT_PRFPREG
--#endif // NT_FPREGSET
--#endif
--#else // __ANDROID__
-+#if !defined(__GLIBC__) && defined(__powerpc__)
-+#define pt_regs musl_pt_regs
-+#include <sys/procfs.h>
-+#undef pt_regs
-+#else
- #include <sys/procfs.h>
--#endif // __ANDROID__
-+#endif
diff --git a/pkgs/development/compilers/llvm/9/llvm/default.nix b/pkgs/development/compilers/llvm/9/llvm/default.nix
deleted file mode 100644
index f8f1c67670ecc..0000000000000
--- a/pkgs/development/compilers/llvm/9/llvm/default.nix
+++ /dev/null
@@ -1,346 +0,0 @@
-{ lib, stdenv, llvm_meta
-, pkgsBuildBuild
-, fetch
-, fetchpatch
-, cmake
-, python3
-, libffi
-, enableGoldPlugin ? libbfd.hasPluginAPI
-, libbfd
-, libpfm
-, libxml2
-, ncurses
-, version
-, release_version
-, zlib
-, buildLlvmTools
-, debugVersion ? false
-, doCheck ? stdenv.isLinux && (!stdenv.isx86_32) && (!stdenv.hostPlatform.isRiscV)
-  && (stdenv.hostPlatform == stdenv.buildPlatform)
-, enableManpages ? false
-, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
-# broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
-# broken for the armv7l builder
-, enablePFM ? stdenv.isLinux && !stdenv.hostPlatform.isAarch
-, enablePolly ? false
-}:
-
-let
-  inherit (lib) optional optionals optionalString;
-
-  # Used when creating a version-suffixed symlink of libLLVM.dylib
-  shortVersion = with lib;
-    concatStringsSep "." (take 1 (splitString "." release_version));
-
-  # Ordinarily we would just the `doCheck` and `checkDeps` functionality
-  # `mkDerivation` gives us to manage our test dependencies (instead of breaking
-  # out `doCheck` as a package level attribute).
-  #
-  # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
-  # particular the children it uses to do feature detection.
-  #
-  # This means that python deps we add to `checkDeps` (which the python
-  # interpreter is made aware of via `$PYTHONPATH` – populated by the python
-  # setup hook) are not picked up by `lit` which causes it to skip tests.
-  #
-  # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
-  # because this package is shadowed in `$PATH` by the regular `python3`
-  # package.
-  #
-  # So, we "manually" assemble one python derivation for the package to depend
-  # on, taking into account whether checks are enabled or not:
-  python = if doCheck then
-    let
-      checkDeps = ps: with ps; [ psutil ];
-    in python3.withPackages checkDeps
-  else python3;
-
-in stdenv.mkDerivation (rec {
-  pname = "llvm";
-  inherit version;
-
-  src = fetch pname "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880";
-  polly_src = fetch "polly" "1kqg0isv0kicnylrdp5iajlgd6alc0zx1l3cxc9hs8r3z6fwcjls";
-
-  unpackPhase = ''
-    unpackFile $src
-    mv llvm-${version}* llvm
-    sourceRoot=$PWD/llvm
-  '' + optionalString enablePolly ''
-    unpackFile $polly_src
-    mv polly-* $sourceRoot/tools/polly
-  '';
-
-  outputs = [ "out" "lib" "dev" "python" ];
-
-  nativeBuildInputs = [ cmake python ]
-    ++ optionals enableManpages [ python3.pkgs.sphinx python3.pkgs.recommonmark ];
-
-  buildInputs = [ libxml2 libffi ]
-    ++ optional enablePFM libpfm; # exegesis
-
-  propagatedBuildInputs = [ ncurses zlib ];
-
-  patches = [
-    # When cross-compiling we configure llvm-config-native with an approximation
-    # of the flags used for the normal LLVM build. To avoid the need for building
-    # a native libLLVM.so (which would fail) we force llvm-config to be linked
-    # statically against the necessary LLVM components always.
-    ../../common/llvm/llvm-config-link-static.patch
-
-    ./gnu-install-dirs.patch
-    # Force a test to evaluate the saved benchmark for a CPU for which LLVM has
-    # an execution model. See NixOS/nixpkgs#119673.
-    ./exegesis-force-bdver2.patch
-
-    # Fix missing includes for GCC 11
-    (fetchpatch {
-      name = "headers-gcc-11.patch";
-      url = "https://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1.patch";
-      sha256 = "0nh123kld0dgz2h941lng331dkj3wbm5lfxm375k1f569gv83hlk";
-      stripLen = 1;
-    })
-
-    # Fix invalid std::string(nullptr) for GCC 12
-    (fetchpatch {
-      name = "nvptx-gcc-12.patch";
-      url = "https://github.com/llvm/llvm-project/commit/99e64623ec9b31def9375753491cc6093c831809.patch";
-      sha256 = "0zjfjgavqzi2ypqwqnlvy6flyvdz8hi1anwv0ybwnm2zqixg7za3";
-      stripLen = 1;
-    })
-
-    # Fix musl build.
-    (fetchpatch {
-      url = "https://github.com/llvm/llvm-project/commit/5cd554303ead0f8891eee3cd6d25cb07f5a7bf67.patch";
-      relative = "llvm";
-      hash = "sha256-XPbvNJ45SzjMGlNUgt/IgEvM2dHQpDOe6woUJY+nUYA=";
-    })
-  ] ++ lib.optionals enablePolly [
-    ./gnu-install-dirs-polly.patch
-    # Add missing isl header includess required to build LLVM 9 + Polly with clang 16.
-    (fetchpatch {
-      name = "polly-ppcg-isl-headers.patch";
-      url = "https://repo.or.cz/ppcg.git/patch/098ba285306114dc71497f7b51c357f69c9b4472";
-      hash = "sha256-c9L30rDROYAMbUSuaK9U/ixyFMlH/Sa1n+VgLODzSCQ=";
-      extraPrefix = "tools/polly/lib/External/ppcg/";
-      stripLen = 1;
-    })
-  ];
-
-  postPatch = optionalString stdenv.isDarwin ''
-    substituteInPlace cmake/modules/AddLLVM.cmake \
-      --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \
-      --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}" ''${extra_libdir})' ""
-  '' + ''
-    # FileSystem permissions tests fail with various special bits
-    substituteInPlace unittests/Support/CMakeLists.txt \
-      --replace "Path.cpp" ""
-    rm unittests/Support/Path.cpp
-  '' + optionalString stdenv.hostPlatform.isMusl ''
-    patch -p1 -i ${../../common/llvm/TLI-musl.patch}
-    substituteInPlace unittests/Support/CMakeLists.txt \
-      --replace "add_subdirectory(DynamicLibrary)" ""
-    rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
-    # valgrind unhappy with musl or glibc, but fails w/musl only
-    rm test/CodeGen/AArch64/wineh4.mir
-  '' + optionalString stdenv.hostPlatform.isAarch32 ''
-    # skip failing X86 test cases on 32-bit ARM
-    rm test/DebugInfo/X86/convert-debugloc.ll
-    rm test/DebugInfo/X86/convert-inlined.ll
-    rm test/DebugInfo/X86/convert-linked.ll
-    rm test/tools/dsymutil/X86/op-convert.test
-  '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") ''
-    # Seems to require certain floating point hardware (NEON?)
-    rm test/ExecutionEngine/frem.ll
-  '' + ''
-    patchShebangs test/BugPoint/compile-custom.ll.py
-
-    # Fix test so that no extra locale files are needed
-    substituteInPlace test/tools/llvm-ar/mri-utf8.test \
-      --replace en_US.UTF-8 C.UTF-8
-
-    # Fix x86 gold test on non-x86 platforms
-    # (similar fix made to others in this directory previously, FWIW)
-    patch -p1 -i  ${./fix-test-on-non-x86-like-others.patch}
-  '' + ''
-    # Tweak tests to ignore namespace part of type to support
-    # gcc-12: https://gcc.gnu.org/PR103598.
-    # The change below mangles strings like:
-    #    CHECK-NEXT: Starting llvm::Function pass manager run.
-    # to:
-    #    CHECK-NEXT: Starting {{.*}}Function pass manager run.
-    for f in \
-      test/Other/new-pass-manager.ll \
-      test/Other/new-pm-defaults.ll \
-      test/Other/new-pm-lto-defaults.ll \
-      test/Other/new-pm-thinlto-defaults.ll \
-      test/Other/pass-pipeline-parsing.ll \
-      test/Transforms/Inline/cgscc-incremental-invalidate.ll \
-      test/Transforms/Inline/clear-analyses.ll \
-      test/Transforms/LoopUnroll/unroll-loop-invalidation.ll \
-      test/Transforms/SCCP/ipsccp-preserve-analysis.ll \
-      test/Transforms/SCCP/preserve-analysis.ll \
-      test/Transforms/SROA/dead-inst.ll \
-      test/tools/gold/X86/new-pm.ll \
-      ; do
-      echo "PATCH: $f"
-      substituteInPlace $f \
-        --replace 'Starting llvm::' 'Starting {{.*}}' \
-        --replace 'Finished llvm::' 'Finished {{.*}}'
-    done
-  '';
-
-  preConfigure = ''
-    # Workaround for configure flags that need to have spaces
-    cmakeFlagsArray+=(
-      -DLLVM_LIT_ARGS='-svj''${NIX_BUILD_CORES} --no-progress-bar'
-    )
-  '';
-
-  # hacky fix: created binaries need to be run before installation
-  preBuild = ''
-    mkdir -p $out/
-    ln -sv $PWD/lib $out
-  '';
-
-  hardeningDisable = [ "trivialautovarinit" ];
-
-  cmakeBuildType = if debugVersion then "Debug" else "Release";
-
-  cmakeFlags = with stdenv; let
-    # These flags influence llvm-config's BuildVariables.inc in addition to the
-    # general build. We need to make sure these are also passed via
-    # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native
-    # will return different results from the cross llvm-config.
-    #
-    # Some flags don't need to be repassed because LLVM already does so (like
-    # CMAKE_BUILD_TYPE), others are irrelevant to the result.
-    flagsForLlvmConfig = [
-      "-DLLVM_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake/llvm/"
-      "-DLLVM_ENABLE_RTTI=ON"
-    ] ++ optionals enableSharedLibraries [
-      "-DLLVM_LINK_LLVM_DYLIB=ON"
-    ];
-  in flagsForLlvmConfig ++ [
-    "-DLLVM_INSTALL_UTILS=ON"  # Needed by rustc
-    "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}"
-    "-DLLVM_ENABLE_FFI=ON"
-    "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
-    "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
-    "-DLLVM_ENABLE_DUMP=ON"
-  ] ++ optionals enableManpages [
-    "-DLLVM_BUILD_DOCS=ON"
-    "-DLLVM_ENABLE_SPHINX=ON"
-    "-DSPHINX_OUTPUT_MAN=ON"
-    "-DSPHINX_OUTPUT_HTML=OFF"
-    "-DSPHINX_WARNINGS_AS_ERRORS=OFF"
-  ] ++ optionals (enableGoldPlugin) [
-    "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include"
-  ] ++ optionals (isDarwin) [
-    "-DLLVM_ENABLE_LIBCXX=ON"
-    "-DCAN_TARGET_i386=false"
-  ] ++ optionals ((stdenv.hostPlatform != stdenv.buildPlatform) && !(stdenv.buildPlatform.canExecute stdenv.hostPlatform)) [
-    "-DCMAKE_CROSSCOMPILING=True"
-    "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-    (
-      let
-        nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc;
-        nativeBintools = nativeCC.bintools.bintools;
-        nativeToolchainFlags = [
-          "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc"
-          "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++"
-          "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar"
-          "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip"
-          "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib"
-        ];
-        # We need to repass the custom GNUInstallDirs values, otherwise CMake
-        # will choose them for us, leading to wrong results in llvm-config-native
-        nativeInstallFlags = [
-          "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
-          "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin"
-          "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include"
-          "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib"
-          "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec"
-        ];
-      in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list="
-      + lib.concatStringsSep ";" (lib.concatLists [
-        flagsForLlvmConfig
-        nativeToolchainFlags
-        nativeInstallFlags
-      ])
-    )
-  ];
-
-  postBuild = ''
-    rm -fR $out
-  '';
-
-  preCheck = ''
-    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
-  '';
-
-  postInstall = ''
-    mkdir -p $python/share
-    mv $out/share/opt-viewer $python/share/opt-viewer
-    moveToOutput "bin/llvm-config*" "$dev"
-    substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \
-      --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \
-      --replace "$out/bin/llvm-config" "$dev/bin/llvm-config"
-    substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \
-      --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}'"$lib"'")'
-  ''
-  + optionalString (stdenv.isDarwin && enableSharedLibraries) ''
-    ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
-    ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
-  ''
-  + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
-    cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
-  '';
-
-  inherit doCheck;
-
-  checkTarget = "check-all";
-
-  requiredSystemFeatures = [ "big-parallel" ];
-  meta = llvm_meta // {
-    homepage = "https://llvm.org/";
-    description = "A collection of modular and reusable compiler and toolchain technologies";
-    longDescription = ''
-      The LLVM Project is a collection of modular and reusable compiler and
-      toolchain technologies. Despite its name, LLVM has little to do with
-      traditional virtual machines. The name "LLVM" itself is not an acronym; it
-      is the full name of the project.
-      LLVM began as a research project at the University of Illinois, with the
-      goal of providing a modern, SSA-based compilation strategy capable of
-      supporting both static and dynamic compilation of arbitrary programming
-      languages. Since then, LLVM has grown to be an umbrella project consisting
-      of a number of subprojects, many of which are being used in production by
-      a wide variety of commercial and open source projects as well as being
-      widely used in academic research. Code in the LLVM project is licensed
-      under the "Apache 2.0 License with LLVM exceptions".
-    '';
-  };
-} // lib.optionalAttrs enableManpages {
-  pname = "llvm-manpages";
-
-  buildPhase = ''
-    make docs-llvm-man
-  '';
-
-  propagatedBuildInputs = [];
-
-  installPhase = ''
-    make -C docs install
-  '';
-
-  postPatch = null;
-  postInstall = null;
-
-  outputs = [ "out" ];
-
-  doCheck = false;
-
-  meta = llvm_meta // {
-    description = "man pages for LLVM ${version}";
-  };
-})
diff --git a/pkgs/development/compilers/llvm/9/llvm/exegesis-force-bdver2.patch b/pkgs/development/compilers/llvm/9/llvm/exegesis-force-bdver2.patch
deleted file mode 100644
index c2654153ed5af..0000000000000
--- a/pkgs/development/compilers/llvm/9/llvm/exegesis-force-bdver2.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/test/tools/llvm-exegesis/X86/uops-CMOV16rm-noreg.s b/test/tools/llvm-exegesis/X86/uops-CMOV16rm-noreg.s
-index 3fc1f31d54dc..a4c9bdd92131 100644
---- a/test/tools/llvm-exegesis/X86/uops-CMOV16rm-noreg.s
-+++ b/test/tools/llvm-exegesis/X86/uops-CMOV16rm-noreg.s
-@@ -1,5 +1,6 @@
- # RUN: llvm-exegesis -mode=uops -opcode-name=CMOV16rm  -benchmarks-file=%t.CMOV16rm-uops.yaml
- # RUN: FileCheck -check-prefixes=CHECK-YAML -input-file=%t.CMOV16rm-uops.yaml %s
-+# RUN: sed -i 's,cpu_name:.*,cpu_name: bdver2,g' %t.CMOV16rm-uops.yaml
- # RUN: llvm-exegesis -mcpu=bdver2 -mode=analysis -benchmarks-file=%t.CMOV16rm-uops.yaml -analysis-clusters-output-file=- -analysis-clustering-epsilon=0.1 -analysis-inconsistency-epsilon=0.1 -analysis-numpoints=1 -analysis-clustering=naive | FileCheck -check-prefixes=CHECK-CLUSTERS %s
- 
- # https://bugs.llvm.org/show_bug.cgi?id=41448
diff --git a/pkgs/development/compilers/llvm/9/llvm/fix-test-on-non-x86-like-others.patch b/pkgs/development/compilers/llvm/9/llvm/fix-test-on-non-x86-like-others.patch
deleted file mode 100644
index e6c2f0406844d..0000000000000
--- a/pkgs/development/compilers/llvm/9/llvm/fix-test-on-non-x86-like-others.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Index: test/tools/gold/X86/linkonce_odr_unnamed_addr.ll
-===================================================================
-diff --git a/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll b/llvm/trunk/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll
---- a/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll	(revision 372333)
-+++ b/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll	(working copy)
-@@ -3,7 +3,7 @@
- 
- ; RUN: opt -module-summary %s -o %t.o
- ; RUN: opt -module-summary %p/Inputs/linkonce_odr_unnamed_addr.ll -o %t2.o
--; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext \
-+; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext \
- ; RUN:    --plugin-opt=save-temps \
- ; RUN:    %t.o %t2.o -o %t3.o
- ; RUN: llvm-dis %t.o.1.promote.bc -o - | FileCheck %s
-@@ -11,7 +11,7 @@
- ; Now test when one module is a native object. In that case we must be
- ; conservative and not auto hide.
- ; RUN: llc %p/Inputs/linkonce_odr_unnamed_addr.ll -o %t2native.o -filetype=obj
--; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext \
-+; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext \
- ; RUN:    --plugin-opt=save-temps \
- ; RUN:    %t.o %t2native.o -o %t3.o
- ; RUN: llvm-dis %t.o.1.promote.bc -o - | FileCheck %s --check-prefix=NOSUMMARY
diff --git a/pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs-polly.patch b/pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs-polly.patch
deleted file mode 100644
index 7c477c7df58a1..0000000000000
--- a/pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs-polly.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-diff --git a/tools/polly/CMakeLists.txt b/tools/polly/CMakeLists.txt
-index 9939097f743e..8cc538da912a 100644
---- a/tools/polly/CMakeLists.txt
-+++ b/tools/polly/CMakeLists.txt
-@@ -2,7 +2,11 @@
- if (NOT DEFINED LLVM_MAIN_SRC_DIR)
-   project(Polly)
-   cmake_minimum_required(VERSION 3.4.3)
-+endif()
-+
-+include(GNUInstallDirs)
- 
-+if (NOT DEFINED LLVM_MAIN_SRC_DIR)
-   # Where is LLVM installed?
-   find_package(LLVM CONFIG REQUIRED)
-   set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LLVM_CMAKE_DIR})
-@@ -145,14 +149,14 @@ include_directories(
- 
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   install(DIRECTORY include/
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     FILES_MATCHING
-     PATTERN "*.h"
-     PATTERN ".svn" EXCLUDE
-     )
- 
-   install(DIRECTORY ${POLLY_BINARY_DIR}/include/
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     FILES_MATCHING
-     PATTERN "*.h"
-     PATTERN "CMakeFiles" EXCLUDE
-diff --git a/tools/polly/cmake/CMakeLists.txt b/tools/polly/cmake/CMakeLists.txt
-index 211f95512717..f9e04a4844b6 100644
---- a/tools/polly/cmake/CMakeLists.txt
-+++ b/tools/polly/cmake/CMakeLists.txt
-@@ -79,18 +79,18 @@ file(GENERATE
- 
- # Generate PollyConfig.cmake for the install tree.
- unset(POLLY_EXPORTS)
--set(POLLY_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-+set(POLLY_INSTALL_PREFIX "")
- set(POLLY_CONFIG_LLVM_CMAKE_DIR "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
--set(POLLY_CONFIG_CMAKE_DIR "${POLLY_INSTALL_PREFIX}/${POLLY_INSTALL_PACKAGE_DIR}")
--set(POLLY_CONFIG_LIBRARY_DIRS "${POLLY_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}")
-+set(POLLY_CONFIG_CMAKE_DIR "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_PREFIX}/${POLLY_INSTALL_PACKAGE_DIR}")
-+set(POLLY_CONFIG_LIBRARY_DIRS "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
- if (POLLY_BUNDLED_ISL)
-   set(POLLY_CONFIG_INCLUDE_DIRS
--    "${POLLY_INSTALL_PREFIX}/include"
--    "${POLLY_INSTALL_PREFIX}/include/polly"
-+    "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_LIBDIR}"
-+    "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_LIBDIR}/polly"
-     )
- else()
-   set(POLLY_CONFIG_INCLUDE_DIRS
--    "${POLLY_INSTALL_PREFIX}/include"
-+    "${POLLY_INSTALL_PREFIX}${CMAKE_INSTALL_FULL_INCLUDEDIR}"
-     ${ISL_INCLUDE_DIRS}
-     )
- endif()
-@@ -100,12 +100,12 @@ endif()
- foreach(tgt IN LISTS POLLY_CONFIG_EXPORTED_TARGETS)
-   get_target_property(tgt_type ${tgt} TYPE)
-   if (tgt_type STREQUAL "EXECUTABLE")
--    set(tgt_prefix "bin/")
-+    set(tgt_prefix "${CMAKE_INSTALL_BINDIR}/")
-   else()
--    set(tgt_prefix "lib/")
-+    set(tgt_prefix "${CMAKE_INSTALL_LIBDIR}/")
-   endif()
- 
--  set(tgt_path "${CMAKE_INSTALL_PREFIX}/${tgt_prefix}$<TARGET_FILE_NAME:${tgt}>")
-+  set(tgt_path "${tgt_prefix}$<TARGET_FILE_NAME:${tgt}>")
-   file(RELATIVE_PATH tgt_path ${POLLY_CONFIG_CMAKE_DIR} ${tgt_path})
- 
-   if (NOT tgt_type STREQUAL "INTERFACE_LIBRARY")
-diff --git a/tools/polly/cmake/polly_macros.cmake b/tools/polly/cmake/polly_macros.cmake
-index e48203871884..5bc8a2a52541 100644
---- a/tools/polly/cmake/polly_macros.cmake
-+++ b/tools/polly/cmake/polly_macros.cmake
-@@ -44,8 +44,8 @@ macro(add_polly_library name)
-   if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LLVMPolly")
-     install(TARGETS ${name}
-       EXPORT LLVMExports
--      LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
--      ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
-+	  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}
-+      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-   endif()
-   set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
- endmacro(add_polly_library)
-diff --git a/tools/polly/lib/External/CMakeLists.txt b/tools/polly/lib/External/CMakeLists.txt
-index 8ffd984e542b..261cc19f3238 100644
---- a/tools/polly/lib/External/CMakeLists.txt
-+++ b/tools/polly/lib/External/CMakeLists.txt
-@@ -274,7 +274,7 @@ if (POLLY_BUNDLED_ISL)
-     install(DIRECTORY
-       ${ISL_SOURCE_DIR}/include/
-       ${ISL_BINARY_DIR}/include/
--      DESTINATION include/polly
-+      DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/polly
-       FILES_MATCHING
-       PATTERN "*.h"
-       PATTERN "CMakeFiles" EXCLUDE
diff --git a/pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs.patch b/pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs.patch
deleted file mode 100644
index 380cc3f6df396..0000000000000
--- a/pkgs/development/compilers/llvm/9/llvm/gnu-install-dirs.patch
+++ /dev/null
@@ -1,395 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b9a10685b99f..c2750500df99 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -242,15 +242,21 @@ if (CMAKE_BUILD_TYPE AND
-   message(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
- endif()
- 
-+include(GNUInstallDirs)
-+
- set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )
- 
--set(LLVM_TOOLS_INSTALL_DIR "bin" CACHE STRING "Path for binary subdirectory (defaults to 'bin')")
-+set(LLVM_TOOLS_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}" CACHE STRING
-+    "Path for binary subdirectory (defaults to 'bin')")
- mark_as_advanced(LLVM_TOOLS_INSTALL_DIR)
- 
- set(LLVM_UTILS_INSTALL_DIR "${LLVM_TOOLS_INSTALL_DIR}" CACHE STRING
-     "Path to install LLVM utilities (enabled by LLVM_INSTALL_UTILS=ON) (defaults to LLVM_TOOLS_INSTALL_DIR)")
- mark_as_advanced(LLVM_UTILS_INSTALL_DIR)
- 
-+set(LLVM_INSTALL_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}/cmake/llvm" CACHE STRING
-+	"Path for CMake subdirectory (defaults to lib/cmake/llvm)" )
-+
- # They are used as destination of target generators.
- set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
- set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
-@@ -534,9 +540,9 @@ option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF)
- option (LLVM_ENABLE_OCAMLDOC "Build OCaml bindings documentation." ON)
- option (LLVM_ENABLE_BINDINGS "Build bindings." ON)
- 
--set(LLVM_INSTALL_DOXYGEN_HTML_DIR "share/doc/llvm/doxygen-html"
-+set(LLVM_INSTALL_DOXYGEN_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/${project}/doxygen-html"
-     CACHE STRING "Doxygen-generated HTML documentation install directory")
--set(LLVM_INSTALL_OCAMLDOC_HTML_DIR "share/doc/llvm/ocaml-html"
-+set(LLVM_INSTALL_OCAMLDOC_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/${project}/ocaml-html"
-     CACHE STRING "OCamldoc-generated HTML documentation install directory")
- 
- option (LLVM_BUILD_EXTERNAL_COMPILER_RT
-@@ -1002,7 +1008,7 @@ endif()
- 
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   install(DIRECTORY include/llvm include/llvm-c
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     COMPONENT llvm-headers
-     FILES_MATCHING
-     PATTERN "*.def"
-@@ -1014,7 +1020,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-     )
- 
-   install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm ${LLVM_INCLUDE_DIR}/llvm-c
--    DESTINATION include
-+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-     COMPONENT llvm-headers
-     FILES_MATCHING
-     PATTERN "*.def"
-@@ -1029,13 +1035,13 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
- 
-   if (LLVM_INSTALL_MODULEMAPS)
-     install(DIRECTORY include/llvm include/llvm-c
--            DESTINATION include
-+            DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-             COMPONENT llvm-headers
-             FILES_MATCHING
-             PATTERN "module.modulemap"
-             )
-     install(FILES include/llvm/module.install.modulemap
--            DESTINATION include/llvm
-+            DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm
-             COMPONENT llvm-headers
-             RENAME "module.extern.modulemap"
-             )
-diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
-index 619e986b8aa0..842b4f71d07e 100644
---- a/cmake/modules/AddLLVM.cmake
-+++ b/cmake/modules/AddLLVM.cmake
-@@ -697,9 +697,9 @@ macro(add_llvm_library name)
- 
-       install(TARGETS ${name}
-               ${export_to_llvmexports}
--              LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
--              ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
--              RUNTIME DESTINATION bin COMPONENT ${name})
-+              LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
-+              ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX} COMPONENT ${name}
-+              RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${name})
- 
-       if (NOT LLVM_ENABLE_IDE)
-         add_llvm_install_targets(install-${name}
-@@ -930,7 +930,7 @@ macro(add_llvm_example name)
-   endif()
-   add_llvm_executable(${name} ${ARGN})
-   if( LLVM_BUILD_EXAMPLES )
--    install(TARGETS ${name} RUNTIME DESTINATION examples)
-+    install(TARGETS ${name} RUNTIME DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples)
-   endif()
-   set_target_properties(${name} PROPERTIES FOLDER "Examples")
- endmacro(add_llvm_example name)
-@@ -1485,7 +1485,7 @@ function(llvm_install_library_symlink name dest type)
-   set(full_name ${CMAKE_${type}_LIBRARY_PREFIX}${name}${CMAKE_${type}_LIBRARY_SUFFIX})
-   set(full_dest ${CMAKE_${type}_LIBRARY_PREFIX}${dest}${CMAKE_${type}_LIBRARY_SUFFIX})
- 
--  set(output_dir lib${LLVM_LIBDIR_SUFFIX})
-+  set(output_dir ${CMAKE_INSTALL_FULL_LIBDIR}${LLVM_LIBDIR_SUFFIX})
-   if(WIN32 AND "${type}" STREQUAL "SHARED")
-     set(output_dir bin)
-   endif()
-@@ -1501,7 +1501,7 @@ function(llvm_install_library_symlink name dest type)
-   endif()
- endfunction()
- 
--function(llvm_install_symlink name dest)
-+function(llvm_install_symlink name dest output_dir)
-   cmake_parse_arguments(ARG "ALWAYS_GENERATE" "COMPONENT" "" ${ARGN})
-   foreach(path ${CMAKE_MODULE_PATH})
-     if(EXISTS ${path}/LLVMInstallSymlink.cmake)
-@@ -1524,7 +1524,7 @@ function(llvm_install_symlink name dest)
-   set(full_dest ${dest}${CMAKE_EXECUTABLE_SUFFIX})
- 
-   install(SCRIPT ${INSTALL_SYMLINK}
--          CODE "install_symlink(${full_name} ${full_dest} ${LLVM_TOOLS_INSTALL_DIR})"
-+          CODE "install_symlink(${full_name} ${full_dest} ${output_dir})"
-           COMPONENT ${component})
- 
-   if (NOT LLVM_ENABLE_IDE AND NOT ARG_ALWAYS_GENERATE)
-@@ -1606,7 +1606,8 @@ function(add_llvm_tool_symlink link_name target)
-     endif()
- 
-     if ((TOOL_IS_TOOLCHAIN OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) AND LLVM_BUILD_TOOLS)
--      llvm_install_symlink(${link_name} ${target})
-+      GNUInstallDirs_get_absolute_install_dir(output_dir LLVM_TOOLS_INSTALL_DIR)
-+      llvm_install_symlink(${link_name} ${target} ${output_dir})
-     endif()
-   endif()
- endfunction()
-@@ -1728,9 +1729,9 @@ function(llvm_setup_rpath name)
- 
-   if (APPLE)
-     set(_install_name_dir INSTALL_NAME_DIR "@rpath")
--    set(_install_rpath "@loader_path/../lib" ${extra_libdir})
-+    set(_install_rpath "@loader_path/../${CMAKE_INSTALL_LIBDIR}" ${extra_libdir})
-   elseif(UNIX)
--    set(_install_rpath "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
-+    set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}" ${extra_libdir})
-     if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")
-       set_property(TARGET ${name} APPEND_STRING PROPERTY
-                    LINK_FLAGS " -Wl,-z,origin ")
-diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake
-index 02bab6846376..eff26adb2efc 100644
---- a/cmake/modules/AddOCaml.cmake
-+++ b/cmake/modules/AddOCaml.cmake
-@@ -140,9 +140,9 @@ function(add_ocaml_library name)
-   endforeach()
- 
-   if( APPLE )
--    set(ocaml_rpath "@executable_path/../../../lib${LLVM_LIBDIR_SUFFIX}")
-+    set(ocaml_rpath "@executable_path/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
-   elseif( UNIX )
--    set(ocaml_rpath "\\$ORIGIN/../../../lib${LLVM_LIBDIR_SUFFIX}")
-+    set(ocaml_rpath "\\$ORIGIN/../../../${CMAKE_INSTALL_LIBDIR}${LLVM_LIBDIR_SUFFIX}")
-   endif()
-   list(APPEND ocaml_flags "-ldopt" "-Wl,-rpath,${ocaml_rpath}")
- 
-diff --git a/cmake/modules/AddSphinxTarget.cmake b/cmake/modules/AddSphinxTarget.cmake
-index 22e3dcb776aa..ba77b9c195e2 100644
---- a/cmake/modules/AddSphinxTarget.cmake
-+++ b/cmake/modules/AddSphinxTarget.cmake
-@@ -73,7 +73,7 @@ function (add_sphinx_target builder project)
- 
-       elseif (builder STREQUAL html)
-         string(TOUPPER "${project}" project_upper)
--        set(${project_upper}_INSTALL_SPHINX_HTML_DIR "share/doc/${project}/html"
-+        set(${project_upper}_INSTALL_SPHINX_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/${project}/html"
-             CACHE STRING "HTML documentation install directory for ${project}")
- 
-         # '/.' indicates: copy the contents of the directory directly into
-diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
-index 9cf22b436fa7..486e40010cd8 100644
---- a/cmake/modules/CMakeLists.txt
-+++ b/cmake/modules/CMakeLists.txt
-@@ -1,4 +1,4 @@
--set(LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm)
-+set(LLVM_INSTALL_PACKAGE_DIR ${LLVM_INSTALL_CMAKE_DIR} CACHE STRING "Path for CMake subdirectory (defaults to 'cmake/llvm')")
- set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
- 
- # First for users who use an installed LLVM, create the LLVMExports.cmake file.
-@@ -96,13 +96,13 @@ foreach(p ${_count})
-   set(LLVM_CONFIG_CODE "${LLVM_CONFIG_CODE}
- get_filename_component(LLVM_INSTALL_PREFIX \"\${LLVM_INSTALL_PREFIX}\" PATH)")
- endforeach(p)
--set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/include")
-+set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
- set(LLVM_CONFIG_INCLUDE_DIR "${LLVM_CONFIG_INCLUDE_DIRS}")
- set(LLVM_CONFIG_MAIN_INCLUDE_DIR "${LLVM_CONFIG_INCLUDE_DIRS}")
--set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}")
-+set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}\${LLVM_LIBDIR_SUFFIX}")
- set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
- set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}")
--set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/bin")
-+set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
- set(LLVM_CONFIG_EXPORTS_FILE "\${LLVM_CMAKE_DIR}/LLVMExports.cmake")
- set(LLVM_CONFIG_EXPORTS "${LLVM_EXPORTS}")
- configure_file(
-diff --git a/cmake/modules/LLVMInstallSymlink.cmake b/cmake/modules/LLVMInstallSymlink.cmake
-index 09fed8085c23..aa79f192abf0 100644
---- a/cmake/modules/LLVMInstallSymlink.cmake
-+++ b/cmake/modules/LLVMInstallSymlink.cmake
-@@ -10,7 +10,7 @@ function(install_symlink name target outdir)
-     set(LINK_OR_COPY copy)
-   endif()
- 
--  set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}/")
-+  set(bindir "${DESTDIR}${outdir}/")
- 
-   message(STATUS "Creating ${name}")
- 
-diff --git a/docs/CMake.rst b/docs/CMake.rst
-index 91fb5282206f..d2c9fd94d131 100644
---- a/docs/CMake.rst
-+++ b/docs/CMake.rst
-@@ -196,7 +196,7 @@ CMake manual, or execute ``cmake --help-variable VARIABLE_NAME``.
- **LLVM_LIBDIR_SUFFIX**:STRING
-   Extra suffix to append to the directory where libraries are to be
-   installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64``
--  to install libraries to ``/usr/lib64``.
-+  to install libraries to ``/usr/lib64``. See also ``CMAKE_INSTALL_LIBDIR``.
- 
- **CMAKE_C_FLAGS**:STRING
-   Extra flags to use when compiling C source files.
-@@ -492,8 +492,8 @@ LLVM-specific variables
- 
- **LLVM_INSTALL_DOXYGEN_HTML_DIR**:STRING
-   The path to install Doxygen-generated HTML documentation to. This path can
--  either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
--  `share/doc/llvm/doxygen-html`.
-+  either be absolute or relative to the ``CMAKE_INSTALL_PREFIX``. Defaults to
-+  `${CMAKE_INSTALL_DOCDIR}/${project}/doxygen-html`.
- 
- **LLVM_ENABLE_SPHINX**:BOOL
-   If specified, CMake will search for the ``sphinx-build`` executable and will make
-@@ -524,13 +524,33 @@ LLVM-specific variables
- 
- **LLVM_INSTALL_SPHINX_HTML_DIR**:STRING
-   The path to install Sphinx-generated HTML documentation to. This path can
--  either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
--  `share/doc/llvm/html`.
-+  either be absolute or relative to the ``CMAKE_INSTALL_PREFIX``. Defaults to
-+  `${CMAKE_INSTALL_DOCDIR}/${project}/html`.
- 
- **LLVM_INSTALL_OCAMLDOC_HTML_DIR**:STRING
-   The path to install OCamldoc-generated HTML documentation to. This path can
--  either be absolute or relative to the CMAKE_INSTALL_PREFIX. Defaults to
--  `share/doc/llvm/ocaml-html`.
-+  either be absolute or relative to the ``CMAKE_INSTALL_PREFIX``. Defaults to
-+  `${CMAKE_INSTALL_DOCDIR}/${project}/ocaml-html`.
-+
-+**CMAKE_INSTALL_BINDIR**:STRING
-+  The path to install binary tools, relative to the ``CMAKE_INSTALL_PREFIX``.
-+  Defaults to `bin`.
-+
-+**CMAKE_INSTALL_LIBDIR**:STRING
-+  The path to install libraries, relative to the ``CMAKE_INSTALL_PREFIX``.
-+  Defaults to `lib`.
-+
-+**CMAKE_INSTALL_INCLUDEDIR**:STRING
-+  The path to install header files, relative to the ``CMAKE_INSTALL_PREFIX``.
-+  Defaults to `include`.
-+
-+**CMAKE_INSTALL_DOCDIR**:STRING
-+  The path to install documentation, relative to the ``CMAKE_INSTALL_PREFIX``.
-+  Defaults to `share/doc`.
-+
-+**CMAKE_INSTALL_MANDIR**:STRING
-+  The path to install manpage files, relative to the ``CMAKE_INSTALL_PREFIX``.
-+  Defaults to `share/man`.
- 
- **LLVM_CREATE_XCODE_TOOLCHAIN**:BOOL
-   macOS Only: If enabled CMake will generate a target named
-@@ -710,9 +730,11 @@ the ``cmake`` command or by setting it directly in ``ccmake`` or ``cmake-gui``).
- 
- This file is available in two different locations.
- 
--* ``<INSTALL_PREFIX>/lib/cmake/llvm/LLVMConfig.cmake`` where
--  ``<INSTALL_PREFIX>`` is the install prefix of an installed version of LLVM.
--  On Linux typically this is ``/usr/lib/cmake/llvm/LLVMConfig.cmake``.
-+* ``<LLVM_INSTALL_PACKAGE_DIR>LLVMConfig.cmake`` where
-+  ``<LLVM_INSTALL_PACKAGE_DIR>`` is the location where LLVM CMake modules are
-+  installed as part of an installed version of LLVM. This is typically
-+  ``cmake/llvm/`` within the lib directory. On Linux, this is typically
-+  ``/usr/lib/cmake/llvm/LLVMConfig.cmake``.
- 
- * ``<LLVM_BUILD_ROOT>/lib/cmake/llvm/LLVMConfig.cmake`` where
-   ``<LLVM_BUILD_ROOT>`` is the root of the LLVM build tree. **Note: this is only
-diff --git a/include/llvm/CMakeLists.txt b/include/llvm/CMakeLists.txt
-index 1d5ca3ba92b0..026f5453c1da 100644
---- a/include/llvm/CMakeLists.txt
-+++ b/include/llvm/CMakeLists.txt
-@@ -4,5 +4,5 @@ add_subdirectory(Support)
- # If we're doing an out-of-tree build, copy a module map for generated
- # header files into the build area.
- if (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
--  configure_file(module.modulemap.build module.modulemap COPYONLY)
-+  configure_file(module.modulemap.build ${LLVM_INCLUDE_DIR}/module.modulemap COPYONLY)
- endif (NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
-diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in
-index 3a24d3e974e1..987d82c1bb97 100644
---- a/tools/llvm-config/BuildVariables.inc.in
-+++ b/tools/llvm-config/BuildVariables.inc.in
-@@ -23,6 +23,10 @@
- #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
- #define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
- #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
-+#define LLVM_INSTALL_BINDIR "@CMAKE_INSTALL_BINDIR@"
-+#define LLVM_INSTALL_LIBDIR "@CMAKE_INSTALL_LIBDIR@"
-+#define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"
-+#define LLVM_INSTALL_CMAKEDIR "@LLVM_INSTALL_CMAKE_DIR@"
- #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
- #define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
- #define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@"
-diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
-index 7ef7c46a2627..1f71f8b0f820 100644
---- a/tools/llvm-config/llvm-config.cpp
-+++ b/tools/llvm-config/llvm-config.cpp
-@@ -332,12 +332,26 @@ int main(int argc, char **argv) {
-         ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
-   } else {
-     ActivePrefix = CurrentExecPrefix;
--    ActiveIncludeDir = ActivePrefix + "/include";
--    SmallString<256> path(StringRef(LLVM_TOOLS_INSTALL_DIR));
--    sys::fs::make_absolute(ActivePrefix, path);
--    ActiveBinDir = path.str();
--    ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
--    ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
-+    {
-+      SmallString<256> path(StringRef(LLVM_INSTALL_INCLUDEDIR));
-+      sys::fs::make_absolute(ActivePrefix, path);
-+      ActiveIncludeDir = std::string(path.str());
-+    }
-+    {
-+      SmallString<256> path(StringRef(LLVM_INSTALL_BINDIR));
-+      sys::fs::make_absolute(ActivePrefix, path);
-+      ActiveBinDir = std::string(path.str());
-+    }
-+    {
-+      SmallString<256> path(StringRef(LLVM_INSTALL_LIBDIR LLVM_LIBDIR_SUFFIX));
-+      sys::fs::make_absolute(ActivePrefix, path);
-+      ActiveLibDir = std::string(path.str());
-+    }
-+    {
-+      SmallString<256> path(StringRef(LLVM_INSTALL_CMAKEDIR));
-+      sys::fs::make_absolute(ActivePrefix, path);
-+      ActiveCMakeDir = std::string(path.str());
-+    }
-     ActiveIncludeOption = "-I" + ActiveIncludeDir;
-   }
- 
-diff --git a/tools/lto/CMakeLists.txt b/tools/lto/CMakeLists.txt
-index b86e4abd01a7..02ce5773f17d 100644
---- a/tools/lto/CMakeLists.txt
-+++ b/tools/lto/CMakeLists.txt
-@@ -23,7 +23,7 @@ set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/lto.exports)
- add_llvm_library(LTO SHARED INSTALL_WITH_TOOLCHAIN ${SOURCES} DEPENDS intrinsics_gen)
- 
- install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
--  DESTINATION include/llvm-c
-+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm-c
-   COMPONENT LTO)
- 
- if (APPLE)
-diff --git a/tools/opt-viewer/CMakeLists.txt b/tools/opt-viewer/CMakeLists.txt
-index 19b606933082..27b9f71b3d79 100644
---- a/tools/opt-viewer/CMakeLists.txt
-+++ b/tools/opt-viewer/CMakeLists.txt
-@@ -8,6 +8,6 @@ set (files
- 
- foreach (file ${files})
-   install(PROGRAMS ${file}
--    DESTINATION share/opt-viewer
-+    DESTINATION ${CMAKE_INSTALL_DATADIR}/opt-viewer
-     COMPONENT opt-viewer)
- endforeach (file)
-diff --git a/tools/remarks-shlib/CMakeLists.txt b/tools/remarks-shlib/CMakeLists.txt
-index e948496c603a..1f4df8a98b10 100644
---- a/tools/remarks-shlib/CMakeLists.txt
-+++ b/tools/remarks-shlib/CMakeLists.txt
-@@ -11,7 +11,7 @@ set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Remarks.exports)
- add_llvm_library(Remarks SHARED INSTALL_WITH_TOOLCHAIN ${SOURCES})
- 
- install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/Remarks.h
--  DESTINATION include/llvm-c
-+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/llvm-c
-   COMPONENT Remarks)
- 
- if (APPLE)
diff --git a/pkgs/development/compilers/llvm/9/openmp/default.nix b/pkgs/development/compilers/llvm/9/openmp/default.nix
deleted file mode 100644
index 7cd9ad761fdfc..0000000000000
--- a/pkgs/development/compilers/llvm/9/openmp/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, fetch
-, cmake
-, llvm
-, targetLlvm
-, perl
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  src = fetch pname "1knafnpp0f7hylx8q20lkd6g1sf0flly572dayc5d5kghh7hd52w";
-
-  nativeBuildInputs = [ cmake perl ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/llvm/common/libunwind/default.nix b/pkgs/development/compilers/llvm/common/libunwind/default.nix
new file mode 100644
index 0000000000000..515914e6acb64
--- /dev/null
+++ b/pkgs/development/compilers/llvm/common/libunwind/default.nix
@@ -0,0 +1,87 @@
+{ lib
+, stdenv
+, release_version
+, patches ? []
+, src ? null
+, llvm_meta
+, version
+, monorepoSrc ? null
+, runCommand
+, cmake
+, ninja
+, python3
+, libcxx
+, enableShared ? !stdenv.hostPlatform.isStatic
+}:
+let
+  pname = "libunwind";
+  src' = if monorepoSrc != null then
+    runCommand "${pname}-src-${version}" {} (''
+      mkdir -p "$out"
+      cp -r ${monorepoSrc}/cmake "$out"
+      cp -r ${monorepoSrc}/${pname} "$out"
+      mkdir -p "$out/libcxx"
+      cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
+      cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
+      mkdir -p "$out/llvm"
+      cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
+    '' + lib.optionalString (lib.versionAtLeast release_version "15") ''
+      cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
+      cp -r ${monorepoSrc}/runtimes "$out"
+    '') else src;
+
+  hasPatches = builtins.length patches > 0;
+
+  postUnpack = lib.optionalString (lib.versions.major release_version == "12") ''
+    ln -s ${libcxx.src}/libcxx .
+    ln -s ${libcxx.src}/llvm .
+  '';
+
+  prePatch = lib.optionalString (lib.versionAtLeast release_version "15" && (hasPatches || lib.versionOlder release_version "18")) ''
+    cd ../${pname}
+    chmod -R u+w .
+  '';
+
+  postPatch = lib.optionalString (lib.versionAtLeast release_version "15" && (hasPatches || lib.versionOlder release_version "18")) ''
+    cd ../runtimes
+  '';
+
+  postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
+    # libcxxabi wants to link to libunwind_shared.so (?).
+    ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
+  '';
+in
+stdenv.mkDerivation (rec {
+  inherit pname version patches;
+
+  src = src';
+
+  sourceRoot =
+    if lib.versionOlder release_version "13" then null
+    else if lib.versionAtLeast release_version "15" then "${src.name}/runtimes"
+    else "${src.name}/${pname}";
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [ cmake ] ++ lib.optionals (lib.versionAtLeast release_version "15") [
+    ninja python3
+  ];
+
+  cmakeFlags = lib.optional (lib.versionAtLeast release_version "15") "-DLLVM_ENABLE_RUNTIMES=libunwind"
+    ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
+
+  meta = llvm_meta // {
+    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
+    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
+    description = "LLVM's unwinder library";
+    longDescription = ''
+      The unwind library provides a family of _Unwind_* functions implementing
+      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
+      I). It is a dependency of the C++ ABI library, and sometimes is a
+      dependency of other runtimes.
+    '';
+  };
+} // (if postUnpack != "" then { inherit postUnpack; } else {})
+  // (if (lib.versionAtLeast release_version "15") then { inherit postInstall; } else {})
+  // (if prePatch != "" then { inherit prePatch; } else {})
+  // (if postPatch != "" then { inherit postPatch; } else {}))
diff --git a/pkgs/development/compilers/llvm/12/lld/default.nix b/pkgs/development/compilers/llvm/common/lld/default.nix
index 01b7e410aa073..be296be91e770 100644
--- a/pkgs/development/compilers/llvm/12/lld/default.nix
+++ b/pkgs/development/compilers/llvm/common/lld/default.nix
@@ -1,35 +1,58 @@
-{ lib, stdenv, llvm_meta
+{ lib
+, stdenv
+, llvm_meta
+, release_version
+, patches ? []
 , buildLlvmTools
-, fetch
-, libunwind
+, monorepoSrc ? null
+, src ? null
+, libunwind ? null
+, runCommand
 , cmake
+, ninja
 , libxml2
 , libllvm
 , version
 }:
-
-stdenv.mkDerivation rec {
+let
   pname = "lld";
-  inherit version;
-
-  src = fetch pname "0qg3fgc7wj34hdkqn21y03zcmsdd01szhhm1hfki63iifrm3y2v9";
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
+  src' =
+    if monorepoSrc != null then
+      runCommand "lld-src-${version}" {} ''
+        mkdir -p "$out"
+        cp -r ${monorepoSrc}/cmake "$out"
+        cp -r ${monorepoSrc}/${pname} "$out"
+        mkdir -p "$out/libunwind"
+        cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
+        mkdir -p "$out/llvm"
+      '' else src;
 
-  postPatch = ''
+  postPatch = lib.optionalString (lib.versions.major release_version == "12") ''
     substituteInPlace MachO/CMakeLists.txt --replace \
       '(''${LLVM_MAIN_SRC_DIR}/' '('
     mkdir -p libunwind/include
     tar -xf "${libunwind.src}" --wildcards -C libunwind/include --strip-components=2 "libunwind-*/include/"
+  '' + lib.optionalString (lib.versions.major release_version == "13" && stdenv.isDarwin) ''
+    substituteInPlace MachO/CMakeLists.txt --replace \
+      '(''${LLVM_MAIN_SRC_DIR}/' '(../'
   '';
+in
+stdenv.mkDerivation (rec {
+  inherit pname version patches;
+
+  src = src';
+
+  sourceRoot =
+    if lib.versionOlder release_version "13" then null
+    else "${src.name}/${pname}";
 
-  nativeBuildInputs = [ cmake ];
+  nativeBuildInputs = [ cmake ] ++ lib.optional (lib.versionAtLeast release_version "15") ninja;
   buildInputs = [ libllvm libxml2 ];
 
-  cmakeFlags = [
+  cmakeFlags = lib.optionals (lib.versionOlder release_version "14") [
     "-DLLVM_CONFIG_PATH=${libllvm.dev}/bin/llvm-config${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "-native"}"
+  ] ++ lib.optionals (lib.versionAtLeast release_version "15") [
+    "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
   ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
     "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
   ];
@@ -51,4 +74,4 @@ stdenv.mkDerivation rec {
       of several different linkers.
     '';
   };
-}
+} // (if (postPatch == "" && lib.versions.major release_version != "13") then {} else { inherit postPatch; }))
diff --git a/pkgs/development/compilers/llvm/15/openmp/default.nix b/pkgs/development/compilers/llvm/common/openmp/default.nix
index d51335436ad23..7d9d813f024c7 100644
--- a/pkgs/development/compilers/llvm/15/openmp/default.nix
+++ b/pkgs/development/compilers/llvm/common/openmp/default.nix
@@ -1,7 +1,10 @@
 { lib
 , stdenv
 , llvm_meta
-, monorepoSrc
+, release_version
+, patches ? []
+, monorepoSrc ? null
+, src ? null
 , runCommand
 , cmake
 , ninja
@@ -14,44 +17,47 @@
 , xcbuild
 , version
 }:
-
-stdenv.mkDerivation rec {
+let
   pname = "openmp";
-  inherit version;
+  src' =
+    if monorepoSrc != null then
+      runCommand "${pname}-src-${version}" {} ''
+        mkdir -p "$out"
+        cp -r ${monorepoSrc}/cmake "$out"
+        cp -r ${monorepoSrc}/${pname} "$out"
+      '' else src;
+in
+stdenv.mkDerivation (rec {
+  inherit pname version patches;
 
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-  '';
+  src = src';
 
-  sourceRoot = "${src.name}/${pname}";
+  sourceRoot =
+    if lib.versionOlder release_version "13" then null
+    else "${src.name}/${pname}";
 
-  patches = [
-    ./fix-find-tool.patch
-    ./gnu-install-dirs.patch
-    ./run-lit-directly.patch
-  ];
+  outputs = [ "out" ]
+    ++ lib.optionals (lib.versionAtLeast release_version "14") [ "dev" ];
 
-  outputs = [ "out" "dev" ];
+  patchFlags =
+    if lib.versionOlder release_version "14" then [ "-p2" ]
+    else null;
+
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals (lib.versionAtLeast release_version "15") [
+    ninja
+  ] ++ [ perl ] ++ lib.optionals (lib.versionAtLeast release_version "14") [
+    pkg-config lit
+  ];
 
-  nativeBuildInputs = [ cmake ninja perl pkg-config lit ];
   buildInputs = [
     (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
   ];
 
-  nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun;
-
-  # Unsup:Pass:XFail:Fail
-  # 26:267:16:8
-  doCheck = false;
-  checkTarget = "check-openmp";
-
-  preCheck = ''
-    patchShebangs ../tools/archer/tests/deflake.bash
-  '';
-
-  cmakeFlags = [
+  cmakeFlags = lib.optionals (lib.versions.major release_version == "13") [
+    "-DLIBOMPTARGET_BUILD_AMDGCN_BCLIB=OFF" # Building the AMDGCN device RTL fails
+  ] ++ lib.optionals (lib.versionAtLeast release_version "14") [
     "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
     "-DOPT_TOOL=${llvm}/bin/opt"
     "-DLINK_TOOL=${llvm}/bin/llvm-link"
@@ -71,4 +77,10 @@ stdenv.mkDerivation rec {
     # License (a BSD-like license)":
     license = with lib.licenses; [ mit ncsa ];
   };
-}
+} // (lib.optionalAttrs (lib.versionAtLeast release_version "14") {
+  doCheck = false;
+  checkTarget = "check-openmp";
+  preCheck = ''
+    patchShebangs ../tools/archer/tests/deflake.bash
+  '';
+}))
diff --git a/pkgs/development/compilers/llvm/git/compiler-rt/default.nix b/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
index f51316beb5705..606ae2868893d 100644
--- a/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
+++ b/pkgs/development/compilers/llvm/git/compiler-rt/default.nix
@@ -81,6 +81,8 @@ stdenv.mkDerivation {
     # `COMPILER_RT_DEFAULT_TARGET_ONLY` does not apply to Darwin:
     # https://github.com/llvm/llvm-project/blob/27ef42bec80b6c010b7b3729ed0528619521a690/compiler-rt/cmake/base-config-ix.cmake#L153
     "-DCOMPILER_RT_ENABLE_IOS=OFF"
+  ] ++ lib.optionals (lib.versionAtLeast version "19" && stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
+    "-DSANITIZER_MIN_OSX_VERSION=10.10"
   ];
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/compilers/llvm/git/default.nix b/pkgs/development/compilers/llvm/git/default.nix
index bd21a75b8c2fc..d578c2a290e23 100644
--- a/pkgs/development/compilers/llvm/git/default.nix
+++ b/pkgs/development/compilers/llvm/git/default.nix
@@ -19,9 +19,9 @@
 # LLVM release information; specify one of these but not both:
 , gitRelease ? {
     version = "19.0.0-git";
-    rev = "65058a8d732c3c41664a4dad1a1ae2a504d5c98e";
-    rev-version = "19.0.0-unstable-2024-03-16";
-    sha256 = "sha256-xV33kx/8OZ2KLtaz25RmudDrlIX7nScauTykf87jyTE=";
+    rev = "cebf77fb936a7270c7e3fa5c4a7e76216321d385";
+    rev-version = "19.0.0-unstable-2024-04-07";
+    sha256 = "sha256-616tscgsiFgHQcXW4KzK5srrudYizQFnJVM6K0qRf+I=";
 }
   # i.e.:
   # {
@@ -141,7 +141,10 @@ in let
       extraBuildCommands = mkExtraBuildCommands cc;
     };
 
-    lld = callPackage ./lld {
+    lld = callPackage ../common/lld {
+      patches = [
+        ./lld/gnu-install-dirs.patch
+      ];
       inherit llvm_meta;
     };
 
@@ -317,12 +320,16 @@ in let
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    libunwind = callPackage ./libunwind {
+    libunwind = callPackage ../common/libunwind {
       inherit llvm_meta;
       stdenv = overrideCC stdenv buildLlvmTools.clangNoLibcxx;
     };
 
-    openmp = callPackage ./openmp {
+    openmp = callPackage ../common/openmp {
+      patches = [
+        ./openmp/fix-find-tool.patch
+        ./openmp/run-lit-directly.patch
+      ];
       inherit llvm_meta targetLlvm;
     };
   });
diff --git a/pkgs/development/compilers/llvm/git/libunwind/default.nix b/pkgs/development/compilers/llvm/git/libunwind/default.nix
deleted file mode 100644
index e67823ffb85c2..0000000000000
--- a/pkgs/development/compilers/llvm/git/libunwind/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ lib, stdenv, llvm_meta, version
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, python3
-, enableShared ? !stdenv.hostPlatform.isStatic
-}:
-
-stdenv.mkDerivation rec {
-  pname = "libunwind";
-  inherit version;
-
-  # I am not so comfortable giving libc++ and friends the whole monorepo as
-  # requested, so I filter it to what is needed.
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/cmake "$out/libcxx"
-    cp -r ${monorepoSrc}/libcxx/utils "$out/libcxx"
-    mkdir -p "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/cmake "$out/llvm"
-    cp -r ${monorepoSrc}/llvm/utils "$out/llvm"
-    cp -r ${monorepoSrc}/runtimes "$out"
-  '';
-
-  sourceRoot = "${src.name}/runtimes";
-
-  postInstall = lib.optionalString (enableShared && !stdenv.hostPlatform.isDarwin) ''
-    # libcxxabi wants to link to libunwind_shared.so (?).
-    ln -s $out/lib/libunwind.so $out/lib/libunwind_shared.so
-  '';
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja python3 ];
-
-  cmakeFlags = [
-    "-DLLVM_ENABLE_RUNTIMES=libunwind"
-  ] ++ lib.optional (!enableShared) "-DLIBUNWIND_ENABLE_SHARED=OFF";
-
-  meta = llvm_meta // {
-    # Details: https://github.com/llvm/llvm-project/blob/main/libunwind/docs/index.rst
-    homepage = "https://clang.llvm.org/docs/Toolchain.html#unwind-library";
-    description = "LLVM's unwinder library";
-    longDescription = ''
-      The unwind library provides a family of _Unwind_* functions implementing
-      the language-neutral stack unwinding portion of the Itanium C++ ABI (Level
-      I). It is a dependency of the C++ ABI library, and sometimes is a
-      dependency of other runtimes.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/git/lld/default.nix b/pkgs/development/compilers/llvm/git/lld/default.nix
deleted file mode 100644
index 24ff0933dd1d8..0000000000000
--- a/pkgs/development/compilers/llvm/git/lld/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ lib, stdenv, llvm_meta
-, buildLlvmTools
-, monorepoSrc, runCommand
-, cmake
-, ninja
-, libxml2
-, libllvm
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "lld";
-  inherit version;
-
-  # Blank llvm dir just so relative path works
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-    mkdir -p "$out/libunwind"
-    cp -r ${monorepoSrc}/libunwind/include "$out/libunwind"
-    mkdir -p "$out/llvm"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  nativeBuildInputs = [ cmake ninja ];
-  buildInputs = [ libllvm libxml2 ];
-
-  patches = [
-    ./gnu-install-dirs.patch
-  ];
-
-  cmakeFlags = [
-    "-DLLD_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/lld"
-  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
-  ];
-
-  # Musl's default stack size is too small for lld to be able to link Firefox.
-  LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-Wl,-z,stack-size=2097152";
-
-  outputs = [ "out" "lib" "dev" ];
-
-  meta = llvm_meta // {
-    homepage = "https://lld.llvm.org/";
-    description = "The LLVM linker (unwrapped)";
-    longDescription = ''
-      LLD is a linker from the LLVM project that is a drop-in replacement for
-      system linkers and runs much faster than them. It also provides features
-      that are useful for toolchain developers.
-      The linker supports ELF (Unix), PE/COFF (Windows), Mach-O (macOS), and
-      WebAssembly in descending order of completeness. Internally, LLD consists
-      of several different linkers.
-    '';
-  };
-}
diff --git a/pkgs/development/compilers/llvm/git/llvm/default.nix b/pkgs/development/compilers/llvm/git/llvm/default.nix
index 670171a707f9c..a9987ab2426d2 100644
--- a/pkgs/development/compilers/llvm/git/llvm/default.nix
+++ b/pkgs/development/compilers/llvm/git/llvm/default.nix
@@ -214,10 +214,6 @@ stdenv.mkDerivation (rec {
     # TODO(@rrbutani): fix/follow-up
     substituteInPlace unittests/TargetParser/Host.cpp \
       --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion"
-
-    # This test fails with a `dysmutil` crash; have not yet dug into what's
-    # going on here (TODO(@rrbutani)).
-    rm test/tools/dsymutil/ARM/obfuscated.test
   '' + ''
     # FileSystem permissions tests fail with various special bits
     substituteInPlace unittests/Support/CMakeLists.txt \
diff --git a/pkgs/development/compilers/llvm/git/openmp/default.nix b/pkgs/development/compilers/llvm/git/openmp/default.nix
deleted file mode 100644
index e1c3c2379af2a..0000000000000
--- a/pkgs/development/compilers/llvm/git/openmp/default.nix
+++ /dev/null
@@ -1,73 +0,0 @@
-{ lib
-, stdenv
-, llvm_meta
-, monorepoSrc
-, runCommand
-, cmake
-, ninja
-, llvm
-, targetLlvm
-, lit
-, clang-unwrapped
-, perl
-, pkg-config
-, xcbuild
-, version
-}:
-
-stdenv.mkDerivation rec {
-  pname = "openmp";
-  inherit version;
-
-  src = runCommand "${pname}-src-${version}" {} ''
-    mkdir -p "$out"
-    cp -r ${monorepoSrc}/cmake "$out"
-    cp -r ${monorepoSrc}/${pname} "$out"
-  '';
-
-  sourceRoot = "${src.name}/${pname}";
-
-  patches = [
-    ./fix-find-tool.patch
-    ./run-lit-directly.patch
-  ];
-
-  outputs = [ "out" "dev" ];
-
-  nativeBuildInputs = [ cmake ninja perl pkg-config lit ];
-  buildInputs = [
-    (if stdenv.buildPlatform == stdenv.hostPlatform then llvm else targetLlvm)
-  ];
-
-  nativeCheckInputs = lib.optional stdenv.hostPlatform.isDarwin xcbuild.xcrun;
-
-  # Unsup:Pass:XFail:Fail
-  # 26:267:16:8
-  doCheck = false;
-  checkTarget = "check-openmp";
-
-  preCheck = ''
-    patchShebangs ../tools/archer/tests/deflake.bash
-  '';
-
-  cmakeFlags = [
-    "-DCLANG_TOOL=${clang-unwrapped}/bin/clang"
-    "-DOPT_TOOL=${llvm}/bin/opt"
-    "-DLINK_TOOL=${llvm}/bin/llvm-link"
-  ];
-
-  meta = llvm_meta // {
-    homepage = "https://openmp.llvm.org/";
-    description = "Support for the OpenMP language";
-    longDescription = ''
-      The OpenMP subproject of LLVM contains the components required to build an
-      executable OpenMP program that are outside the compiler itself.
-      Contains the code for the runtime library against which code compiled by
-      "clang -fopenmp" must be linked before it can run and the library that
-      supports offload to target devices.
-    '';
-    # "All of the code is dual licensed under the MIT license and the UIUC
-    # License (a BSD-like license)":
-    license = with lib.licenses; [ mit ncsa ];
-  };
-}
diff --git a/pkgs/development/compilers/mlton/20210107-binary.nix b/pkgs/development/compilers/mlton/20210117-binary.nix
index 26a20db0d3917..d4e55d47b94cf 100644
--- a/pkgs/development/compilers/mlton/20210107-binary.nix
+++ b/pkgs/development/compilers/mlton/20210117-binary.nix
@@ -4,7 +4,7 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mlton";
-  version = "20210107";
+  version = "20210117";
 
   src =
     if stdenv.hostPlatform.system == "x86_64-linux" then
diff --git a/pkgs/development/compilers/mlton/default.nix b/pkgs/development/compilers/mlton/default.nix
index 1caeecccaadbb..d2704a4093d03 100644
--- a/pkgs/development/compilers/mlton/default.nix
+++ b/pkgs/development/compilers/mlton/default.nix
@@ -12,11 +12,11 @@ rec {
     sha256 = "00rdd2di5x1dzac64il9z05m3fdzicjd3226wwjyynv631jj3q2a";
   };
 
-  mlton20210107Binary = callPackage ./20210107-binary.nix { };
+  mlton20210117Binary = callPackage ./20210117-binary.nix { };
 
-  mlton20210107 = callPackage ./from-git-source.nix {
+  mlton20210117 = callPackage ./from-git-source.nix {
     mltonBootstrap = mlton20180207Binary;
-    version = "20210107";
+    version = "20210117";
     rev = "on-20210117-release";
     sha256 = "sha256-rqL8lnzVVR+5Hc7sWXK8dCXN92dU76qSoii3/4StODM=";
   };
diff --git a/pkgs/development/compilers/orc/default.nix b/pkgs/development/compilers/orc/default.nix
index be01d49d5f5a9..4d7be6c4b2825 100644
--- a/pkgs/development/compilers/orc/default.nix
+++ b/pkgs/development/compilers/orc/default.nix
@@ -25,10 +25,7 @@ in stdenv.mkDerivation rec {
     sha256 = "sha256-g7B0y2cxfVi+8ejQzIYveuinekW7/wVqH5h8ZIiy9f0=";
   };
 
-  postPatch = lib.optionalString stdenv.isAarch32 ''
-    # https://gitlab.freedesktop.org/gstreamer/orc/-/issues/20
-    sed -i '/exec_opcodes_sys/d' testsuite/meson.build
-  '' + lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) ''
+  postPatch = lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) ''
     # This benchmark times out on Hydra.nixos.org
     sed -i '/memcpy_speed/d' testsuite/meson.build
   '';
diff --git a/pkgs/development/coq-modules/vscoq-language-server/default.nix b/pkgs/development/coq-modules/vscoq-language-server/default.nix
index e70094b994eb9..ee74d77101e7b 100644
--- a/pkgs/development/coq-modules/vscoq-language-server/default.nix
+++ b/pkgs/development/coq-modules/vscoq-language-server/default.nix
@@ -2,13 +2,16 @@
   version ? null }:
 
 let ocamlPackages = coq.ocamlPackages;
-    defaultVersion = lib.switch coq.coq-version [
-      { case = "8.18"; out = "2.0.3+coq8.18"; }
+    defaultVersion = with lib.versions; lib.switch coq.coq-version [
+      { case = range "8.18" "8.19"; out = "2.1.2"; }
+      { case = isEq "8.18"; out = "2.0.3+coq8.18"; }
     ] null;
     location = { domain = "github.com"; owner = "coq-community"; repo = "vscoq"; };
     fetch = metaFetch ({
       release."2.0.3+coq8.18".sha256 = "sha256-VXhHCP6Ni5/OcsgoI1EbJfYCpXzwkuR8kbbKrl6dfjU=";
       release."2.0.3+coq8.18".rev = "v2.0.3+coq8.18";
+      release."2.1.2".rev = "v2.1.2";
+      release."2.1.2".sha256 = "sha256-GloY68fLmIv3oiEGNWwmgKv1CMAReBuXzMTUsKOs328=";
       inherit location; });
     fetched = fetch (if version != null then version else defaultVersion);
 in
@@ -16,12 +19,13 @@ ocamlPackages.buildDunePackage {
   pname = "vscoq-language-server";
   inherit (fetched) version;
   src = "${fetched.src}/language-server";
+  nativeBuildInputs = [ coq ];
   buildInputs =
     [ coq glib gnome.adwaita-icon-theme wrapGAppsHook ] ++
     (with ocamlPackages; [ findlib
       lablgtk3-sourceview3 yojson zarith ppx_inline_test
       ppx_assert ppx_sexp_conv ppx_deriving ppx_import sexplib
-      ppx_yojson_conv lsp sel ]);
+      ppx_yojson_conv lsp sel ppx_optcomp ]);
 
   meta = with lib; {
     description = "Language server for the vscoq vscode/codium extension";
diff --git a/pkgs/development/cuda-modules/aliases.nix b/pkgs/development/cuda-modules/aliases.nix
index 3c4a791ebd713..36dd07d773bd9 100644
--- a/pkgs/development/cuda-modules/aliases.nix
+++ b/pkgs/development/cuda-modules/aliases.nix
@@ -1,4 +1,18 @@
 # Packges which have been deprecated or removed from cudaPackages
-final: prev: {
+final: prev:
+let
+  mkRenamed =
+    oldName: newName: newPkg:
+    final.lib.warn "cudaPackages.${oldName} is deprecated, use ${newName} instead" newPkg;
+in
+{
 
+  # Deprecated: an alias kept for compatibility. Consider removing after 24.05
+  autoFixElfFiles = mkRenamed "autoFixElfFiles" "pkgs.autoFixElfFiles" final.pkgs.autoFixElfFiles; # Added 2024-03-30
+  autoAddDriverRunpath =
+    mkRenamed "autoAddDriverRunpath" "pkgs.autoAddDriverRunpath"
+      final.pkgs.autoAddDriverRunpath; # Added 2024-03-30
+  autoAddOpenGLRunpathHook =
+    mkRenamed "autoAddOpenGLRunpathHook" "pkgs.autoAddDriverRunpath"
+      final.pkgs.autoAddDriverRunpath; # Added 2024-03-30
 }
diff --git a/pkgs/development/cuda-modules/cudatoolkit/default.nix b/pkgs/development/cuda-modules/cudatoolkit/default.nix
index a406f8bc0b6f3..5a983aaf5c705 100644
--- a/pkgs/development/cuda-modules/cudatoolkit/default.nix
+++ b/pkgs/development/cuda-modules/cudatoolkit/default.nix
@@ -237,6 +237,7 @@ backendStdenv.mkDerivation rec {
       ${lib.optionalString (lib.versionAtLeast version "10.1" && lib.versionOlder version "11") ''
         cd pkg/builds/cuda-toolkit
         mv * $out/
+        rm -f $out/nsight-systems-*/host-linux-x64/libstdc++.so*
       ''}
       ${lib.optionalString (lib.versionAtLeast version "11") ''
         mkdir -p $out/bin $out/lib64 $out/include $doc
diff --git a/pkgs/development/cuda-modules/setup-hooks/extension.nix b/pkgs/development/cuda-modules/setup-hooks/extension.nix
index c385b4a06797a..327f335f1890f 100644
--- a/pkgs/development/cuda-modules/setup-hooks/extension.nix
+++ b/pkgs/development/cuda-modules/setup-hooks/extension.nix
@@ -1,11 +1,4 @@
 final: _: {
-  # TODO:
-  # - Move to cuda-modules/aliases.nix once
-  #   https://github.com/NixOS/nixpkgs/issues/141803 is ready.
-  # - Consider removing after 24.11.
-  inherit (final.pkgs) autoAddDriverRunpath autoFixElfFiles;
-  autoAddOpenGLRunpathHook = final.autoAddDriverRunpath;
-
   # Internal hook, used by cudatoolkit and cuda redist packages
   # to accommodate automatic CUDAToolkit_ROOT construction
   markForCudatoolkitRootHook = final.callPackage (
diff --git a/pkgs/development/embedded/avrdude/default.nix b/pkgs/development/embedded/avrdude/default.nix
index 3057e2be09364..924c502358216 100644
--- a/pkgs/development/embedded/avrdude/default.nix
+++ b/pkgs/development/embedded/avrdude/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchFromGitHub, cmake, bison, flex, libusb-compat-0_1, libelf
-, libftdi1, readline
+, libftdi1, readline, libserialport
 # documentation building is broken on darwin
 , docSupport ? (!stdenv.isDarwin), texliveMedium, texinfo, texi2html, unixtools }:
 
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
     texi2html
   ];
 
-  buildInputs = [ libusb-compat-0_1 libelf libftdi1 readline ];
+  buildInputs = [ libusb-compat-0_1 libelf libftdi1 libserialport readline ];
 
   cmakeFlags = lib.optionals docSupport [
     "-DBUILD_DOC=ON"
diff --git a/pkgs/development/embedded/svdtools/default.nix b/pkgs/development/embedded/svdtools/default.nix
index 204d40c63e426..ba65d94a292de 100644
--- a/pkgs/development/embedded/svdtools/default.nix
+++ b/pkgs/development/embedded/svdtools/default.nix
@@ -5,14 +5,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "svdtools";
-  version = "0.3.11";
+  version = "0.3.14";
 
   src = fetchCrate {
     inherit version pname;
-    hash = "sha256-LmpYsG/2oEdbAK2ePI+LYbGrVN+wC9gQS6GXNcF8XFg=";
+    hash = "sha256-sTogOCpcfJHy+e3T4pEvclCddCUX+RHCQ238oz5bAEo=";
   };
 
-  cargoHash = "sha256-qsCa+YWE9dghG8T53TSDikWh+JhQt9v7A1Gn+/t5YZs=";
+  cargoHash = "sha256-lRSt46yxFWSlhU6Pns3PCLJ4c6Fvi4EbOIqVx9IoPCc=";
 
   meta = with lib; {
     description = "Tools to handle vendor-supplied, often buggy SVD files";
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index e9c0303afb55d..585cfd2a7049b 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -20,8 +20,8 @@ with haskellLib;
 
 self: super: {
   # Make sure that Cabal 3.10.* can be built as-is
-  Cabal_3_10_2_1 = doDistribute (super.Cabal_3_10_2_1.override ({
-    Cabal-syntax = self.Cabal-syntax_3_10_2_0;
+  Cabal_3_10_3_0 = doDistribute (super.Cabal_3_10_3_0.override ({
+    Cabal-syntax = self.Cabal-syntax_3_10_3_0;
   } // lib.optionalAttrs (lib.versionOlder self.ghc.version "9.2.5") {
     # Use process core package when possible
     process = self.process_1_6_18_0;
@@ -36,9 +36,9 @@ self: super: {
         {
           # Needs to be downgraded compared to Stackage LTS 21
           resolv = cself.resolv_0_1_2_0;
-        } // lib.optionalAttrs (lib.versionOlder self.ghc.version "9.6") {
-          Cabal = cself.Cabal_3_10_2_1;
-          Cabal-syntax = cself.Cabal-syntax_3_10_2_0;
+        } // lib.optionalAttrs (lib.versionOlder self.ghc.version "9.10") {
+          Cabal = cself.Cabal_3_10_3_0;
+          Cabal-syntax = cself.Cabal-syntax_3_10_3_0;
         } // lib.optionalAttrs (lib.versionOlder self.ghc.version "9.4") {
           # We need at least directory >= 1.3.7.0. Using the latest version
           # 1.3.8.* is not an option since it causes very annoying dependencies
@@ -81,7 +81,7 @@ self: super: {
   extensions = doJailbreak (super.extensions.override {
     Cabal =
       if versionOlder self.ghc.version "9.6"
-      then self.Cabal_3_10_2_1
+      then self.Cabal_3_10_3_0
       else null; # use GHC bundled version
   });
 
@@ -185,6 +185,7 @@ self: super: {
 
   # https://github.com/mpickering/eventlog2html/pull/187
   eventlog2html = lib.pipe super.eventlog2html [
+    doJailbreak
     (appendPatch (fetchpatch {
       name = "blaze-html-compat.patch";
       url = "https://github.com/mpickering/eventlog2html/commit/666aee9ee44c571173a73036b36ad4154c188481.patch";
@@ -1512,7 +1513,7 @@ self: super: {
   # 2022-08-31: Jailbreak is done to allow aeson 2.0.*:
   # https://github.com/haskell-CI/haskell-ci/commit/6ad0d5d701cbe101013335d597acaf5feadd3ab9#r82681900
   cabal-install-parsers = doJailbreak (dontCheck (super.cabal-install-parsers.override {
-    Cabal-syntax = self.Cabal-syntax_3_10_2_0;
+    Cabal-syntax = self.Cabal-syntax_3_10_3_0;
   }));
 
   # Test suite requires database
@@ -2297,7 +2298,7 @@ self: super: {
   # 2023-07-03: allow lattices-2.2, waiting on https://github.com/haskell-CI/haskell-ci/pull/664
   # 2024-03-21: pins specific version of ShellCheck
   haskell-ci = doJailbreak (super.haskell-ci.overrideScope (self: super: {
-    Cabal-syntax = self.Cabal-syntax_3_10_2_0;
+    Cabal-syntax = self.Cabal-syntax_3_10_3_0;
     ShellCheck = self.ShellCheck_0_9_0;
   }));
 
@@ -2564,7 +2565,7 @@ self: super: {
 
   cabal-fmt = doJailbreak (super.cabal-fmt.override {
     # Needs newer Cabal-syntax version.
-    Cabal-syntax = self.Cabal-syntax_3_10_2_0;
+    Cabal-syntax = self.Cabal-syntax_3_10_3_0;
   });
 
   # 2023-07-18: https://github.com/srid/ema/issues/156
@@ -3036,13 +3037,6 @@ self: super: {
     #   repa-query, repa-scalar, repa-store, repa-stream
   ;
 
-  # https://github.com/jhickner/smtp-mail/pull/41 Use crypton-connection instead of connection
-  smtp-mail = appendPatch (pkgs.fetchpatch {
-    name = "smtp-mail-crypton-connection.patch";
-    url = "https://github.com/jhickner/smtp-mail/commit/4c724c80814ab1da7c37256a6c10e04c88b9af95.patch";
-    hash = "sha256-rCyY4rB/wLspeAbLw1jji5BykYFLnmTjLiUyNkiEXmw";
-  }) (super.smtp-mail.override { connection = self.crypton-connection; });
-
   # Use recent git version as the hackage version is outdated and not building on recent GHC versions
   haskell-to-elm = overrideSrc {
     version = "unstable-2023-12-02";
@@ -3068,4 +3062,7 @@ self: super: {
     tasty = super.tasty_1_5;
     tasty-quickcheck = super.tasty-quickcheck_0_10_3;
   });
+
+  # Too strict bounds on text. Can be removed after https://github.com/alx741/currencies/pull/3 is merged
+  currencies = doJailbreak super.currencies;
 } // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
diff --git a/pkgs/development/haskell-modules/configuration-darwin.nix b/pkgs/development/haskell-modules/configuration-darwin.nix
index 3c8b742254a84..480059de14c0e 100644
--- a/pkgs/development/haskell-modules/configuration-darwin.nix
+++ b/pkgs/development/haskell-modules/configuration-darwin.nix
@@ -303,6 +303,8 @@ self: super: ({
     stripLen = 1;
   }) super.inline-c-cpp;
 
+  # Tests fail on macOS https://github.com/mrkkrp/zip/issues/112
+  zip = dontCheck super.zip;
 } // lib.optionalAttrs pkgs.stdenv.isAarch64 {  # aarch64-darwin
 
   # https://github.com/fpco/unliftio/issues/87
diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.4.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.4.x.nix
index de5f883e5f4be..94cf15df5dff6 100644
--- a/pkgs/development/haskell-modules/configuration-ghc-9.4.x.nix
+++ b/pkgs/development/haskell-modules/configuration-ghc-9.4.x.nix
@@ -106,7 +106,7 @@ in {
     (
       let
         hls_overlay = lself: lsuper: {
-          Cabal-syntax = lself.Cabal-syntax_3_10_2_0;
+          Cabal-syntax = lself.Cabal-syntax_3_10_3_0;
         };
       in
       lib.mapAttrs (_: pkg: doDistribute (pkg.overrideScope hls_overlay)) {
diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix
index 71835751d24eb..cf197f9fb3f5a 100644
--- a/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix
+++ b/pkgs/development/haskell-modules/configuration-ghc-9.8.x.nix
@@ -52,12 +52,14 @@ self: super: {
   #
   # Version upgrades
   #
-  th-abstraction = doDistribute self.th-abstraction_0_6_0_0;
+  th-abstraction = doDistribute self.th-abstraction_0_7_0_0;
   ghc-lib-parser = doDistribute self.ghc-lib-parser_9_8_2_20240223;
   ghc-lib-parser-ex = doDistribute self.ghc-lib-parser-ex_9_8_0_2;
   ghc-lib = doDistribute self.ghc-lib_9_8_1_20231121;
   megaparsec = doDistribute self.megaparsec_9_6_1;
-  aeson = doDistribute self.aeson_2_2_1_0;
+  # TODO: remove when aeson updates or launches a revision
+  # see https://github.com/haskell/aeson/issues/1089 and https://github.com/haskell/aeson/pulls/1088
+  aeson = doJailbreak (doDistribute self.aeson_2_2_1_0);
   attoparsec-aeson = doDistribute self.attoparsec-aeson_2_2_0_1;
   xmonad = doDistribute self.xmonad_0_18_0;
   apply-refact = self.apply-refact_0_14_0_0;
diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml
index ced72a5d30be6..f8d16ce0c3405 100644
--- a/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml
+++ b/pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml
@@ -693,7 +693,6 @@ broken-packages:
   - cassava-records # failure in job https://hydra.nixos.org/build/233259049 at 2023-09-02
   - cassava-streams # failure in job https://hydra.nixos.org/build/233222669 at 2023-09-02
   - cassette # failure in job https://hydra.nixos.org/build/233201251 at 2023-09-02
-  - castagnoli # failure in job https://hydra.nixos.org/build/233213036 at 2023-09-02
   - castle # failure in job https://hydra.nixos.org/build/233204027 at 2023-09-02
   - catamorphism # failure in job https://hydra.nixos.org/build/233208488 at 2023-09-02
   - Catana # failure in job https://hydra.nixos.org/build/233196550 at 2023-09-02
@@ -1083,7 +1082,6 @@ broken-packages:
   - curl-aeson # failure in job https://hydra.nixos.org/build/233210106 at 2023-09-02
   - curl-runnings # failure in job https://hydra.nixos.org/build/233258680 at 2023-09-02
   - curly-expander # failure in job https://hydra.nixos.org/build/233250838 at 2023-09-02
-  - currencies # failure in job https://hydra.nixos.org/build/233216717 at 2023-09-02
   - currency-convert # failure in job https://hydra.nixos.org/build/233224509 at 2023-09-02
   - curry-base # failure in job https://hydra.nixos.org/build/233246647 at 2023-09-02
   - CurryDB # failure in job https://hydra.nixos.org/build/233238995 at 2023-09-02
@@ -3300,7 +3298,6 @@ broken-packages:
   - kind-integer # failure in job https://hydra.nixos.org/build/233250066 at 2023-09-02
   - kleene-list # failure in job https://hydra.nixos.org/build/233237651 at 2023-09-02
   - kmn-programming # failure in job https://hydra.nixos.org/build/233258328 at 2023-09-02
-  - kmonad # failure in job https://hydra.nixos.org/build/252717089 at 2024-03-16
   - kmp-dfa # failure in job https://hydra.nixos.org/build/233237266 at 2023-09-02
   - knots # failure in job https://hydra.nixos.org/build/233209153 at 2023-09-02
   - koellner-phonetic # failure in job https://hydra.nixos.org/build/233217750 at 2023-09-02
@@ -4233,7 +4230,6 @@ broken-packages:
   - optimization # failure in job https://hydra.nixos.org/build/233191078 at 2023-09-02
   - optional # failure in job https://hydra.nixos.org/build/233241818 at 2023-09-02
   - options-time # failure in job https://hydra.nixos.org/build/233194289 at 2023-09-02
-  - optparse-applicative-cmdline-util # failure in job https://hydra.nixos.org/build/252739738 at 2024-03-16
   - optparse-applicative-simple # failure in job https://hydra.nixos.org/build/233236802 at 2023-09-02
   - optparse-declarative # failure in job https://hydra.nixos.org/build/252718969 at 2024-03-16
   - optparse-helper # failure in job https://hydra.nixos.org/build/233248522 at 2023-09-02
diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml
index 51eb135398b4c..221062282a988 100644
--- a/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml
+++ b/pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml
@@ -365,6 +365,7 @@ package-maintainers:
     - X11
     - X11-xft
     - html-parse-util
+    - kmonad
     - optparse-applicative-cmdline-util
     - xmonad
     - xmonad-contrib
diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml
index 19a1f753c222f..c4bdc86e5333c 100644
--- a/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml
+++ b/pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml
@@ -1,4 +1,4 @@
-# Stackage LTS 22.13
+# Stackage LTS 22.14
 # This file is auto-generated by
 # maintainers/scripts/haskell/update-stackage.sh
 default-package-overrides:
@@ -352,7 +352,7 @@ default-package-overrides:
   - ansi-wl-pprint ==1.0.2
   - ANum ==0.2.0.2
   - aos-signature ==0.1.1
-  - apecs ==0.9.5
+  - apecs ==0.9.6
   - apecs-gloss ==0.2.4
   - apecs-physics ==0.4.6
   - api-field-json-th ==0.1.0.2
@@ -402,7 +402,7 @@ default-package-overrides:
   - attoparsec-binary ==0.2
   - attoparsec-data ==1.0.5.4
   - attoparsec-expr ==0.1.1.2
-  - attoparsec-framer ==0.1.0.2
+  - attoparsec-framer ==0.1.0.3
   - attoparsec-iso8601 ==1.1.0.1
   - attoparsec-path ==0.0.0.1
   - attoparsec-run ==0.0.2.0
@@ -461,7 +461,7 @@ default-package-overrides:
   - between ==0.11.0.0
   - bibtex ==0.1.0.7
   - bifunctor-classes-compat ==0.1
-  - bifunctors ==5.6.1
+  - bifunctors ==5.6.2
   - bimap ==0.5.0
   - bimaps ==0.1.0.2
   - bin ==0.1.3
@@ -564,12 +564,13 @@ default-package-overrides:
   - bytestring-to-vector ==0.3.0.1
   - bytestring-tree-builder ==0.2.7.12
   - bytestring-trie ==0.2.7.2
-  - bz2 ==1.0.1.0
-  - bzlib ==0.5.1.0
-  - bzlib-conduit ==0.3.0.2
+  - bz2 ==1.0.1.1
+  - bzip2-clib ==1.0.8
+  - bzlib ==0.5.2.0
+  - bzlib-conduit ==0.3.0.3
   - c14n ==0.1.0.3
   - c2hs ==0.28.8
-  - cabal2spec ==2.7.0
+  - cabal2spec ==2.7.1
   - cabal-appimage ==0.4.0.2
   - cabal-clean ==0.2.20230609
   - cabal-debian ==5.2.3
@@ -679,8 +680,8 @@ default-package-overrides:
   - comfort-fftw ==0.0.0.1
   - comfort-glpk ==0.1
   - comfort-graph ==0.0.4
-  - commonmark ==0.2.5.1
-  - commonmark-extensions ==0.2.5.3
+  - commonmark ==0.2.6
+  - commonmark-extensions ==0.2.5.4
   - commonmark-pandoc ==0.2.2.1
   - commutative ==0.0.2
   - commutative-semigroups ==0.1.0.2
@@ -728,7 +729,7 @@ default-package-overrides:
   - constraints-extras ==0.4.0.0
   - constraint-tuples ==0.1.2
   - construct ==0.3.1.2
-  - context ==0.2.0.3
+  - context ==0.2.1.0
   - context-http-client ==0.2.0.2
   - context-resource ==0.2.0.2
   - context-wai-middleware ==0.2.0.2
@@ -869,7 +870,7 @@ default-package-overrides:
   - derive-storable ==0.3.1.0
   - derive-topdown ==0.0.3.0
   - deriving-aeson ==0.2.9
-  - deriving-compat ==0.6.5
+  - deriving-compat ==0.6.6
   - deriving-trans ==0.9.1.0
   - detour-via-sci ==1.0.0
   - df1 ==0.4.2
@@ -909,7 +910,7 @@ default-package-overrides:
   - discrimination ==0.5
   - disk-free-space ==0.1.0.1
   - distributed-closure ==0.5.0.0
-  - distributed-static ==0.3.9
+  - distributed-static ==0.3.10
   - distribution-opensuse ==1.1.4
   - distributive ==0.6.2.1
   - diversity ==0.8.1.0
@@ -1096,7 +1097,7 @@ default-package-overrides:
   - flac-picture ==0.1.3
   - flags-applicative ==0.1.0.3
   - flat ==0.6
-  - flatparse ==0.5.0.2
+  - flatparse ==0.5.1.0
   - flay ==0.4
   - flexible-defaults ==0.0.3
   - FloatingHex ==0.5
@@ -1146,7 +1147,7 @@ default-package-overrides:
   - fuzzcheck ==0.1.1
   - fuzzy ==0.1.1.0
   - fuzzy-dates ==0.1.1.2
-  - fuzzyset ==0.3.1
+  - fuzzyset ==0.3.2
   - fuzzy-time ==0.2.0.3
   - gauge ==0.2.5
   - gd ==3000.7.3
@@ -1344,13 +1345,13 @@ default-package-overrides:
   - haskoin-node ==1.0.1
   - haskoin-store-data ==1.2.5
   - hasktags ==0.73.0
-  - hasql ==1.6.4.1
-  - hasql-dynamic-statements ==0.3.1.4
+  - hasql ==1.6.4.3
+  - hasql-dynamic-statements ==0.3.1.5
   - hasql-implicits ==0.1.1.2
   - hasql-interpolate ==0.2.1.0
   - hasql-listen-notify ==0.1.0.1
   - hasql-migration ==0.3.0
-  - hasql-notifications ==0.2.0.6
+  - hasql-notifications ==0.2.1.0
   - hasql-optparse-applicative ==0.7.1.3
   - hasql-pool ==0.10.1
   - hasql-th ==0.4.0.19
@@ -1520,7 +1521,7 @@ default-package-overrides:
   - HTTP ==4000.4.1
   - http-api-data ==0.5.1
   - http-api-data-qq ==0.1.0.0
-  - http-client ==0.7.16
+  - http-client ==0.7.17
   - http-client-openssl ==0.3.3
   - http-client-overrides ==0.1.1.0
   - http-client-restricted ==0.1.0
@@ -1530,7 +1531,7 @@ default-package-overrides:
   - http-date ==0.0.11
   - http-directory ==0.1.10
   - http-download ==0.2.1.0
-  - httpd-shed ==0.4.1.1
+  - httpd-shed ==0.4.1.2
   - http-io-streams ==0.1.7.0
   - http-link-header ==1.2.1
   - http-media ==0.8.1.1
@@ -1604,7 +1605,7 @@ default-package-overrides:
   - infer-license ==0.2.0
   - infinite-list ==0.1.1
   - inflections ==0.4.0.7
-  - influxdb ==1.9.3
+  - influxdb ==1.9.3.1
   - ini ==0.4.2
   - inj ==1.0
   - inline-c ==0.9.1.10
@@ -1628,7 +1629,7 @@ default-package-overrides:
   - intervals ==0.9.2
   - intset-imperative ==0.1.0.0
   - int-supply ==1.0.0
-  - invariant ==0.6.2
+  - invariant ==0.6.3
   - invert ==1.0.0.4
   - invertible ==0.2.0.8
   - invertible-grammar ==0.1.3.5
@@ -1748,8 +1749,8 @@ default-package-overrides:
   - lens-action ==0.2.6
   - lens-aeson ==1.2.3
   - lens-csv ==0.1.1.0
-  - lens-family ==2.1.2
-  - lens-family-core ==2.1.2
+  - lens-family ==2.1.3
+  - lens-family-core ==2.1.3
   - lens-misc ==0.0.2.0
   - lens-properties ==4.11.1
   - lens-regex ==0.1.3
@@ -1761,7 +1762,8 @@ default-package-overrides:
   - libBF ==0.6.7
   - libffi ==0.2.1
   - liboath-hs ==0.0.1.2
-  - libyaml ==0.1.2
+  - libyaml ==0.1.4
+  - libyaml-clib ==0.2.5
   - lifted-async ==0.10.2.5
   - lifted-base ==0.2.3.12
   - lift-generics ==0.2.1
@@ -1823,7 +1825,7 @@ default-package-overrides:
   - machines ==0.7.3
   - magic ==1.1
   - magico ==0.0.2.3
-  - mailtrap ==0.1.2.0
+  - mailtrap ==0.1.2.1
   - mainland-pretty ==0.7.1
   - main-tester ==0.2.0.1
   - managed ==1.0.10
@@ -1928,7 +1930,7 @@ default-package-overrides:
   - monad-interleave ==0.2.0.1
   - monadlist ==0.0.2
   - monad-logger ==0.3.40
-  - monad-logger-aeson ==0.4.1.2
+  - monad-logger-aeson ==0.4.1.3
   - monad-logger-json ==0.1.0.0
   - monad-logger-logstash ==0.2.0.2
   - monad-loops ==0.4.3
@@ -1992,7 +1994,7 @@ default-package-overrides:
   - mysql ==0.2.1
   - mysql-haskell ==1.1.4
   - mysql-haskell-nem ==0.1.0.0
-  - mysql-json-table ==0.1.3.0
+  - mysql-json-table ==0.1.4.0
   - mysql-simple ==0.4.9
   - n2o ==0.11.1
   - n2o-nitro ==0.11.2
@@ -2029,9 +2031,9 @@ default-package-overrides:
   - network-messagepack-rpc ==0.1.2.0
   - network-messagepack-rpc-websocket ==0.1.1.1
   - network-multicast ==0.3.2
-  - network-run ==0.2.6
+  - network-run ==0.2.7
   - network-simple ==0.4.5
-  - network-transport ==0.5.6
+  - network-transport ==0.5.7
   - network-uri ==2.6.4.2
   - network-wait ==0.2.0.0
   - newtype ==0.2.2.0
@@ -2481,7 +2483,7 @@ default-package-overrides:
   - rp-tree ==0.7.1
   - rrb-vector ==0.2.1.0
   - RSA ==2.4.1
-  - rss ==3000.2.0.7
+  - rss ==3000.2.0.8
   - rss-conduit ==0.6.0.1
   - run-haskell-module ==0.0.2
   - runmemo ==1.0.0.1
@@ -2490,7 +2492,7 @@ default-package-overrides:
   - rzk ==0.7.3
   - s3-signer ==0.5.0.0
   - safe ==0.3.21
-  - safe-coloured-text ==0.2.0.1
+  - safe-coloured-text ==0.2.0.2
   - safe-coloured-text-gen ==0.0.0.2
   - safe-coloured-text-layout ==0.0.0.0
   - safe-coloured-text-layout-gen ==0.0.0.0
@@ -2516,7 +2518,7 @@ default-package-overrides:
   - sandwich-slack ==0.1.2.0
   - sandwich-webdriver ==0.2.3.1
   - say ==0.1.0.1
-  - sbp ==5.0.5
+  - sbp ==5.0.7
   - sbv ==10.2
   - scalpel ==0.6.2.2
   - scalpel-core ==0.6.2.2
@@ -2651,8 +2653,8 @@ default-package-overrides:
   - skein ==1.0.9.4
   - skews ==0.1.0.3
   - skip-var ==0.1.1.0
-  - skylighting ==0.14.1
-  - skylighting-core ==0.14.1
+  - skylighting ==0.14.1.1
+  - skylighting-core ==0.14.1.1
   - skylighting-format-ansi ==0.1
   - skylighting-format-blaze-html ==0.1.1.2
   - skylighting-format-context ==0.1.0.2
@@ -2691,7 +2693,7 @@ default-package-overrides:
   - Spock-api ==0.14.0.0
   - spoon ==0.3.1
   - spreadsheet ==0.1.3.10
-  - sqids ==0.2.1.0
+  - sqids ==0.2.2.0
   - sqlite-simple ==0.4.19.0
   - sql-words ==0.1.6.5
   - squeal-postgresql ==0.9.1.3
@@ -2882,7 +2884,7 @@ default-package-overrides:
   - test-fun ==0.1.0.0
   - testing-feat ==1.1.1.1
   - testing-type-modifiers ==0.1.0.1
-  - texmath ==0.12.8.6
+  - texmath ==0.12.8.7
   - text-ansi ==0.3.0.1
   - text-binary ==0.2.1.1
   - text-builder ==0.6.7.2
@@ -2909,7 +2911,7 @@ default-package-overrides:
   - tf-random ==0.5
   - th-abstraction ==0.5.0.0
   - th-bang-compat ==0.0.1.0
-  - th-compat ==0.1.4
+  - th-compat ==0.1.5
   - th-constraint-compat ==0.0.1.0
   - th-data-compat ==0.1.3.1
   - th-desugar ==1.15
@@ -3064,7 +3066,7 @@ default-package-overrides:
   - universe-instances-extended ==1.1.3
   - universe-reverse-instances ==1.1.1
   - universe-some ==1.2.1
-  - universum ==1.8.2
+  - universum ==1.8.2.1
   - unix-bytestring ==0.4.0.1
   - unix-compat ==0.7.1
   - unix-time ==0.4.12
@@ -3131,7 +3133,7 @@ default-package-overrides:
   - vector-th-unbox ==0.2.2
   - verbosity ==0.4.0.0
   - verset ==0.0.1.9
-  - versions ==6.0.5
+  - versions ==6.0.6
   - vformat ==0.14.1.0
   - vformat-time ==0.1.0.0
   - ViennaRNAParser ==1.3.3
@@ -3161,7 +3163,7 @@ default-package-overrides:
   - wai-middleware-caching-lru ==0.1.0.0
   - wai-middleware-caching-redis ==0.2.0.0
   - wai-middleware-clacks ==0.1.0.1
-  - wai-middleware-delegate ==0.1.4.0
+  - wai-middleware-delegate ==0.1.4.1
   - wai-middleware-metrics ==0.2.4
   - wai-middleware-prometheus ==1.0.0.1
   - wai-middleware-static ==0.9.2
@@ -3193,7 +3195,7 @@ default-package-overrides:
   - wide-word ==0.1.6.0
   - Win32-notify ==0.3.0.3
   - windns ==0.1.0.1
-  - witch ==1.2.0.4
+  - witch ==1.2.1.0
   - withdependencies ==0.3.0
   - witherable ==0.4.2
   - within ==0.2.0.1
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix
index 062b1767a7e48..8bec59f4da599 100644
--- a/pkgs/development/haskell-modules/configuration-nix.nix
+++ b/pkgs/development/haskell-modules/configuration-nix.nix
@@ -1331,4 +1331,6 @@ self: super: builtins.intersectAttrs super {
   # Test failure is related to a GHC implementation detail of primitives and doesn't
   # cause actual problems in dependent packages, see https://github.com/lehins/pvar/issues/4
   pvar = dontCheck super.pvar;
+
+  kmonad = enableSeparateBinOutput super.kmonad;
 }
diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix
index db12ebd8c773b..c80f544d34e96 100644
--- a/pkgs/development/haskell-modules/hackage-packages.nix
+++ b/pkgs/development/haskell-modules/hackage-packages.nix
@@ -244,10 +244,8 @@ self: {
     ({ mkDerivation, base }:
      mkDerivation {
        pname = "AC-Vector";
-       version = "2.3.2";
-       sha256 = "04ahf6ldfhvzbml9xd6yplygn8ih7b8zz7cw03hkr053g5kzylay";
-       revision = "1";
-       editedCabalFile = "05l4sk0lz9iml7282zh9pxqr538s6kjhhl6zrbdwlry21sn14pc0";
+       version = "2.4.0";
+       sha256 = "03703bj73vwnwhhdgny5ca3fz4kamvhahw6b1vm6ymjc0dd0dmn6";
        libraryHaskellDepends = [ base ];
        description = "Efficient geometric vectors and transformations";
        license = lib.licenses.bsd3;
@@ -2611,6 +2609,8 @@ self: {
        pname = "COrdering";
        version = "2.3";
        sha256 = "1lkav4wkyrraq1f6kyqfyjrxasgkayg4hmyv8a1gkr4h484b1cx8";
+       revision = "1";
+       editedCabalFile = "00byh0a7j7gnv8aq67fiairzvwz9csg49s2zqqj9f5pwgpmccn1v";
        libraryHaskellDepends = [ base ];
        description = "An algebraic data type similar to Prelude Ordering";
        license = lib.licenses.bsd3;
@@ -2858,17 +2858,15 @@ self: {
        hydraPlatforms = lib.platforms.none;
      }) {};
 
-  "Cabal_3_10_2_1" = callPackage
+  "Cabal_3_10_3_0" = callPackage
     ({ mkDerivation, array, base, bytestring, Cabal-syntax, containers
      , deepseq, directory, filepath, mtl, parsec, pretty, process, text
      , time, transformers, unix
      }:
      mkDerivation {
        pname = "Cabal";
-       version = "3.10.2.1";
-       sha256 = "0jgm3q9dl6lrczwcc0mzqfqwxwdnk2m2lr6zkhygn2w982c651w8";
-       revision = "1";
-       editedCabalFile = "0ckflq94cjh8dqxxf9m9j1k7k38qlmkp5ja9w964c60cghycfz0g";
+       version = "3.10.3.0";
+       sha256 = "1imjq2zqm967j0lk3kzi4gyp9a35vlym31p7k7vmaxbdc9k7qzyb";
        setupHaskellDepends = [ mtl parsec ];
        libraryHaskellDepends = [
          array base bytestring Cabal-syntax containers deepseq directory
@@ -2939,17 +2937,15 @@ self: {
        hydraPlatforms = lib.platforms.none;
      }) {};
 
-  "Cabal-syntax_3_10_2_0" = callPackage
+  "Cabal-syntax_3_10_3_0" = callPackage
     ({ mkDerivation, array, base, binary, bytestring, containers
      , deepseq, directory, filepath, mtl, parsec, pretty, text, time
      , transformers, unix
      }:
      mkDerivation {
        pname = "Cabal-syntax";
-       version = "3.10.2.0";
-       sha256 = "0j2j4r93rjidrgfjgwfm25l369yq3zklcqvgq4891k9ik98irkvs";
-       revision = "1";
-       editedCabalFile = "05kwy3nvl9g628bvrihghl3gx248afilp8q5k0jjda332zb5n8xj";
+       version = "3.10.3.0";
+       sha256 = "04p2ywjw1wfpmp445gm15ya6qkwmqr8aq83pdq6hm680kjma1mkm";
        libraryHaskellDepends = [
          array base binary bytestring containers deepseq directory filepath
          mtl parsec pretty text time transformers unix
@@ -3389,6 +3385,20 @@ self: {
        broken = true;
      }) {};
 
+  "ClasshSS" = callPackage
+    ({ mkDerivation, base, data-default, lens, template-haskell, text
+     }:
+     mkDerivation {
+       pname = "ClasshSS";
+       version = "0.1.0.0";
+       sha256 = "141wqmfwp3rgf9h1whwzznz0bq82ph5lcxax0f85qfnxbvbsqnyn";
+       libraryHaskellDepends = [
+         base data-default lens template-haskell text
+       ];
+       description = "Typified Tailwind for Rapid Development";
+       license = lib.licenses.mit;
+     }) {};
+
   "ClassyPrelude" = callPackage
     ({ mkDerivation, base, strict }:
      mkDerivation {
@@ -14217,14 +14227,28 @@ self: {
        hydraPlatforms = lib.platforms.none;
      }) {};
 
+  "MicroCabal" = callPackage
+    ({ mkDerivation, base, directory, process }:
+     mkDerivation {
+       pname = "MicroCabal";
+       version = "0.1.0.0";
+       sha256 = "0bqwk7hy3p6ql14v7c0zw308haaaq6qyr4cajfy7yn8k9s2xql16";
+       isLibrary = false;
+       isExecutable = true;
+       executableHaskellDepends = [ base directory process ];
+       description = "A Cabal replacement";
+       license = lib.licenses.asl20;
+       mainProgram = "mcabal";
+     }) {};
+
   "MicroHs" = callPackage
     ({ mkDerivation, base, containers, deepseq, directory, ghc-prim
      , haskeline, mtl, pretty, process, time
      }:
      mkDerivation {
        pname = "MicroHs";
-       version = "0.9.5.0";
-       sha256 = "08pkxmvx0dkcgsy1b8n0lrc0dcjgxfx789wqiiy2cmhnnhqr0vip";
+       version = "0.9.8.0";
+       sha256 = "1k96nngfn57fb81wxpkksnmvq2nr7davn8wdwix2w2pk5v67m3fw";
        isLibrary = false;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -14232,7 +14256,7 @@ self: {
          base containers deepseq directory ghc-prim haskeline mtl pretty
          process time
        ];
-       description = "A compiler for a subset of Haskell";
+       description = "A compiler for Haskell";
        license = lib.licenses.asl20;
        mainProgram = "mhs";
      }) {};
@@ -15296,8 +15320,8 @@ self: {
     ({ mkDerivation, base, bytestring, HUnit, net-snmp, process }:
      mkDerivation {
        pname = "NetSNMP";
-       version = "0.3.2.5";
-       sha256 = "0gslhzalip3q4shhfnp09p0c004z30a1xphw96kbi441ns8s0dp0";
+       version = "0.4.0.0";
+       sha256 = "13gbji2rwf6yn00lyi32b6wqbyy5j823fdmv96zpym5508m5cj7h";
        libraryHaskellDepends = [ base bytestring ];
        librarySystemDepends = [ net-snmp ];
        testHaskellDepends = [ base bytestring HUnit process ];
@@ -16155,12 +16179,12 @@ self: {
      }) {};
 
   "OptDir" = callPackage
-    ({ mkDerivation, base, hashable, syb }:
+    ({ mkDerivation, base, deepseq, hashable, syb }:
      mkDerivation {
        pname = "OptDir";
-       version = "0.0.4";
-       sha256 = "07l2fagp60ykhsr3dxclkfgg1pxawj2xf0wxrn3dksjdlx0hg5j5";
-       libraryHaskellDepends = [ base hashable syb ];
+       version = "0.1.0";
+       sha256 = "1fbmykdyb6p7qbvf2lzs9wh01zcw7qj8jldcyk7k6z7vaw8sri20";
+       libraryHaskellDepends = [ base deepseq hashable syb ];
        description = "The OptDir type for representing optimization directions";
        license = lib.licenses.bsd3;
      }) {};
@@ -20148,8 +20172,8 @@ self: {
     ({ mkDerivation, attoparsec, base, extra, mtl, mwc-random, text }:
      mkDerivation {
        pname = "Spintax";
-       version = "0.3.6";
-       sha256 = "000yprzvq72ia6wfk3hjarb8anx3wfm54rzpv8x7d2zf09pzxk6k";
+       version = "0.3.6.1";
+       sha256 = "066pks24c4501i86hgll3bygqkgyag7n2src19k0x9gc05p130wr";
        libraryHaskellDepends = [
          attoparsec base extra mtl mwc-random text
        ];
@@ -35860,6 +35884,44 @@ self: {
        hydraPlatforms = lib.platforms.none;
      }) {};
 
+  "anitomata" = callPackage
+    ({ mkDerivation, base, hspec, hspec-discover, QuickCheck, vector }:
+     mkDerivation {
+       pname = "anitomata";
+       version = "0.1.0.0";
+       sha256 = "1gswhhwrjkhy90x23r0lnlyii07vjc85h99b265pm8fzqqgcdyqf";
+       libraryHaskellDepends = [ base vector ];
+       testHaskellDepends = [ base hspec QuickCheck vector ];
+       testToolDepends = [ hspec-discover ];
+       description = "Composable sprite animation";
+       license = lib.licenses.mit;
+     }) {};
+
+  "anitomata-aseprite" = callPackage
+    ({ mkDerivation, aeson, base, directory, file-embed, filepath
+     , hspec, hspec-discover, hspec-golden, module-munging
+     , optparse-applicative, template-haskell, temporary, text
+     }:
+     mkDerivation {
+       pname = "anitomata-aseprite";
+       version = "0.1.1.0";
+       sha256 = "0qskdfj595gwppaj34krsdfmk8vjwzmrig8ajaddni7znag89gl4";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         aeson base directory filepath module-munging optparse-applicative
+         text
+       ];
+       executableHaskellDepends = [ base ];
+       testHaskellDepends = [
+         base file-embed hspec hspec-golden template-haskell temporary
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "Code gen for Aseprite animations";
+       license = lib.licenses.mit;
+       mainProgram = "aseprite2haskell";
+     }) {};
+
   "anki-tools" = callPackage
     ({ mkDerivation, aeson, base, bytestring, data-default, directory
      , exceptions, filepath, mtl, scientific, sqlite-simple, text, time
@@ -36807,16 +36869,15 @@ self: {
 
   "apecs" = callPackage
     ({ mkDerivation, array, base, containers, criterion, exceptions
-     , linear, mtl, QuickCheck, template-haskell, vector
+     , linear, mtl, QuickCheck, template-haskell, unliftio-core, vector
      }:
      mkDerivation {
        pname = "apecs";
-       version = "0.9.5";
-       sha256 = "1n01kbyxgfk1jyc9adpmb4cglwz6i20i8wp9mg4nxsjpy93hbp1z";
-       revision = "1";
-       editedCabalFile = "1vpjwmyir3ivqzcalazzp4mczln5s2b23lb3rmaag0p1lrlxjxz0";
+       version = "0.9.6";
+       sha256 = "1dppc03ck68mhkc95435bgmm0lfz8q3d20yw0nhywrx1x7y83z6d";
        libraryHaskellDepends = [
-         array base containers exceptions mtl template-haskell vector
+         array base containers exceptions mtl template-haskell unliftio-core
+         vector
        ];
        testHaskellDepends = [ base containers linear QuickCheck vector ];
        benchmarkHaskellDepends = [ base criterion linear ];
@@ -41572,8 +41633,8 @@ self: {
      }:
      mkDerivation {
        pname = "attoparsec-framer";
-       version = "0.1.0.2";
-       sha256 = "1vyfm42xvlr86jjjswb7w2xg3rl49nmbm2f644s1chgbxg5121i7";
+       version = "0.1.0.3";
+       sha256 = "0lwrnka25f5a27ym3w48qdrkv3q62q9rs5r6kpgbr7nckcmb9b03";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -44518,8 +44579,8 @@ self: {
      }:
      mkDerivation {
        pname = "bank-holiday-germany";
-       version = "1.0.0.1";
-       sha256 = "0pxsfk51pqxgd74l46k0sfagkxjmkm4lv1zj37k8kq8a6i01m4rd";
+       version = "1.2.0.0";
+       sha256 = "17xqwa51rv64k7szvlpix4gm9g65rwjjlcmkn9khpyjis396zx4f";
        libraryHaskellDepends = [ base time ];
        testHaskellDepends = [
          base doctest hedgehog hspec hspec-hedgehog time
@@ -47331,10 +47392,8 @@ self: {
      }:
      mkDerivation {
        pname = "bifunctors";
-       version = "5.6.1";
-       sha256 = "1z2p9l2c0i6irbhfib5z7089jg8s22jj2jrc3dm525mynmqi8f06";
-       revision = "2";
-       editedCabalFile = "0ma7m6as59vdmk1ysip0gslrc2sc84van5z1blvzl2wzyvc7xyl2";
+       version = "5.6.2";
+       sha256 = "0yk9v71xpwnxd6xia1bdr8pxbvrx4am6bjykqp1d1vk1a0lak1hh";
        libraryHaskellDepends = [
          assoc base comonad containers tagged template-haskell
          th-abstraction transformers
@@ -51757,8 +51816,8 @@ self: {
     ({ mkDerivation, bluefin-internal }:
      mkDerivation {
        pname = "bluefin";
-       version = "0.0.1.0";
-       sha256 = "0q0i6slarwp6d1ndmyajh3qya7xrslr1z8pds2vxsmz46zsdl3am";
+       version = "0.0.3.0";
+       sha256 = "1b1050pbxqi0hyz4xkm56v54rp5c0z9sr36swwg07xmkv52g7hil";
        libraryHaskellDepends = [ bluefin-internal ];
        description = "The Bluefin effect system";
        license = lib.licenses.mit;
@@ -51770,8 +51829,8 @@ self: {
      }:
      mkDerivation {
        pname = "bluefin-internal";
-       version = "0.0.1.0";
-       sha256 = "017b9wbxd2m1jc6m0lgfy1j8mmm6n3xgps3ri0z0jxni738qfb4n";
+       version = "0.0.3.0";
+       sha256 = "1xsb5qxmfaw2bb0jslz2hr04lihxc7r51x8rsqnvdly05a8vxglv";
        libraryHaskellDepends = [
          base monad-control transformers transformers-base unliftio-core
        ];
@@ -52946,6 +53005,8 @@ self: {
        pname = "bound";
        version = "2.0.7";
        sha256 = "1wqvanfp826s89qr4a1rc9f0ldsj45j1rwy9x6a894vndgrxm8dj";
+       revision = "1";
+       editedCabalFile = "1f2mb3xwv17daff653fjrwpdc72la5nn55qlzgjcw0a1lnkmgyb2";
        libraryHaskellDepends = [
          base bifunctors binary bytes cereal comonad deepseq hashable mmorph
          profunctors template-haskell th-abstraction transformers
@@ -56357,31 +56418,18 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
-  "bz2" = callPackage
-    ({ mkDerivation, base, bytestring, bzlib, c2hs, cpphs, criterion
-     , deepseq, directory, filepath, tasty, tasty-golden, tasty-hunit
-     , temporary
-     }:
+  "bytezap" = callPackage
+    ({ mkDerivation, base, bytestring, primitive, text }:
      mkDerivation {
-       pname = "bz2";
-       version = "1.0.1.0";
-       sha256 = "1kskfgdfjpg2nn807298m605lc7jafnsi1phz3bp6jds48zwrfhq";
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [ base bytestring ];
-       libraryToolDepends = [ c2hs ];
-       testHaskellDepends = [
-         base bytestring deepseq directory filepath tasty tasty-golden
-         tasty-hunit
-       ];
-       benchmarkHaskellDepends = [
-         base bytestring bzlib criterion filepath temporary
-       ];
-       benchmarkToolDepends = [ cpphs ];
-       description = "Bindings to libbz2";
-       license = lib.licenses.bsd3;
+       pname = "bytezap";
+       version = "1.0.0";
+       sha256 = "198nvi6dk8s6mb24z31xaz6yqfaiyrgwm1bhmjak4sbgpp3jika5";
+       libraryHaskellDepends = [ base bytestring primitive text ];
+       description = "Bytestring builder with zero intermediate allocation";
+       license = lib.licenses.mit;
      }) {};
 
-  "bz2_1_0_1_1" = callPackage
+  "bz2" = callPackage
     ({ mkDerivation, base, bytestring, bzip2-clib, bzlib, c2hs, cpphs
      , criterion, deepseq, directory, filepath, tasty, tasty-golden
      , tasty-hunit, temporary
@@ -56403,7 +56451,6 @@ self: {
        benchmarkToolDepends = [ cpphs ];
        description = "Bindings to libbz2";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "bzip-signature" = callPackage
@@ -56431,20 +56478,6 @@ self: {
      }) {};
 
   "bzlib" = callPackage
-    ({ mkDerivation, base, bytestring, bzip2 }:
-     mkDerivation {
-       pname = "bzlib";
-       version = "0.5.1.0";
-       sha256 = "1n599xwyxghf52kam30k1l2qh8cg91h55c2bgchnqyj103hb7nfy";
-       revision = "2";
-       editedCabalFile = "0v2ffgv20xq8q85z96qic13pqq13ipjxl0bn9wkzxlcd0axa0zhr";
-       libraryHaskellDepends = [ base bytestring ];
-       librarySystemDepends = [ bzip2 ];
-       description = "Compression and decompression in the bzip2 format";
-       license = lib.licenses.bsd3;
-     }) {inherit (pkgs) bzip2;};
-
-  "bzlib_0_5_2_0" = callPackage
     ({ mkDerivation, base, bytestring, bzip2, QuickCheck, tasty
      , tasty-hunit, tasty-quickcheck
      }:
@@ -56459,7 +56492,6 @@ self: {
        ];
        description = "Compression and decompression in the bzip2 format";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {inherit (pkgs) bzip2;};
 
   "bzlib-conduit" = callPackage
@@ -56468,32 +56500,6 @@ self: {
      }:
      mkDerivation {
        pname = "bzlib-conduit";
-       version = "0.3.0.2";
-       sha256 = "0a21zin5plsl37hkxh2jv8cxwyjrbs2fy7n5cyrzgdaa7lmp6b7b";
-       enableSeparateDataOutput = true;
-       libraryHaskellDepends = [
-         base bindings-DSL bytestring conduit data-default-class mtl
-         resourcet
-       ];
-       librarySystemDepends = [ bzip2 ];
-       testHaskellDepends = [
-         base bindings-DSL bytestring conduit data-default-class hspec mtl
-         random resourcet
-       ];
-       benchmarkHaskellDepends = [
-         base bindings-DSL bytestring conduit data-default-class mtl
-         resourcet
-       ];
-       description = "Streaming compression/decompression via conduits";
-       license = lib.licenses.bsd3;
-     }) {inherit (pkgs) bzip2;};
-
-  "bzlib-conduit_0_3_0_3" = callPackage
-    ({ mkDerivation, base, bindings-DSL, bytestring, bzip2, conduit
-     , data-default-class, hspec, mtl, random, resourcet
-     }:
-     mkDerivation {
-       pname = "bzlib-conduit";
        version = "0.3.0.3";
        sha256 = "0v7dvdwh9f7sic7b2m6lzz1brpa7r1k8ab7pml20fqq6vkmfm5l1";
        enableSeparateDataOutput = true;
@@ -56512,7 +56518,6 @@ self: {
        ];
        description = "Streaming compression/decompression via conduits";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {inherit (pkgs) bzip2;};
 
   "bzlib-conduit-jappie" = callPackage
@@ -57520,32 +57525,31 @@ self: {
      }) {};
 
   "cabal-install" = callPackage
-    ({ mkDerivation, array, async, base, base16-bytestring
-     , base64-bytestring, binary, bytestring, Cabal, Cabal-described
-     , cabal-install-solver, Cabal-QuickCheck, Cabal-syntax
-     , Cabal-tree-diff, containers, cryptohash-sha256, directory, echo
-     , edit-distance, exceptions, filepath, hackage-security, hashable
-     , HTTP, lukko, mtl, network-uri, parsec, pretty, pretty-show
-     , process, QuickCheck, random, regex-base, regex-posix, resolv
-     , safe-exceptions, stm, tagged, tar, tasty, tasty-expected-failure
-     , tasty-golden, tasty-hunit, tasty-quickcheck, text, time
-     , tree-diff, unix, zlib
+    ({ mkDerivation, array, async, base, base16-bytestring, binary
+     , bytestring, Cabal, Cabal-described, cabal-install-solver
+     , Cabal-QuickCheck, Cabal-syntax, Cabal-tree-diff, containers
+     , cryptohash-sha256, directory, echo, edit-distance, exceptions
+     , filepath, hackage-security, hashable, HTTP, lukko, mtl
+     , network-uri, parsec, pretty, pretty-show, process, QuickCheck
+     , random, regex-base, regex-posix, resolv, safe-exceptions, stm
+     , tagged, tar, tasty, tasty-expected-failure, tasty-golden
+     , tasty-hunit, tasty-quickcheck, text, time, tree-diff, unix, zlib
      }:
      mkDerivation {
        pname = "cabal-install";
-       version = "3.10.2.1";
-       sha256 = "0i42ky2p12cnrsx9fljfbcgdri3xbpzgj0xg4prdfh1dyz2j0dnm";
+       version = "3.10.3.0";
+       sha256 = "17nslfzhp9nplk5x0i3g6j1mkxpcg89ki2xf0vh93k9hrzq0drx8";
        revision = "1";
-       editedCabalFile = "0aqwymsgsa02m71zi98wsn771l8fixhpn6akicvnygplzqdg065i";
+       editedCabalFile = "1w3i7rss9q7kyiy0rhxn88w7blx1v19mqkfm0pbdwg9bv0qbv96k";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
-         array async base base16-bytestring base64-bytestring binary
-         bytestring Cabal cabal-install-solver Cabal-syntax containers
-         cryptohash-sha256 directory echo edit-distance exceptions filepath
-         hackage-security hashable HTTP lukko mtl network-uri parsec pretty
-         process random regex-base regex-posix resolv safe-exceptions stm
-         tar text time unix zlib
+         array async base base16-bytestring binary bytestring Cabal
+         cabal-install-solver Cabal-syntax containers cryptohash-sha256
+         directory echo edit-distance exceptions filepath hackage-security
+         hashable HTTP lukko mtl network-uri parsec pretty process random
+         regex-base regex-posix resolv safe-exceptions stm tar text time
+         unix zlib
        ];
        executableHaskellDepends = [ base ];
        testHaskellDepends = [
@@ -57684,6 +57688,29 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "cabal-install-solver_3_10_3_0" = callPackage
+    ({ mkDerivation, array, base, bytestring, Cabal, Cabal-syntax
+     , containers, edit-distance, filepath, mtl, pretty, tasty
+     , tasty-hunit, tasty-quickcheck, text, transformers
+     }:
+     mkDerivation {
+       pname = "cabal-install-solver";
+       version = "3.10.3.0";
+       sha256 = "0zi3pygxiwmzv4h5vfshnbak4r3hz4fragc961xcaq0s8qz4kr71";
+       revision = "1";
+       editedCabalFile = "1kdh9l8cwvpllsxm1jwzabsg78nsk3r9s2d2g4vn7rxmbffzmbbm";
+       libraryHaskellDepends = [
+         array base bytestring Cabal Cabal-syntax containers edit-distance
+         filepath mtl pretty text transformers
+       ];
+       testHaskellDepends = [
+         base Cabal Cabal-syntax tasty tasty-hunit tasty-quickcheck
+       ];
+       description = "The command-line interface for Cabal and Hackage";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "cabal-lenses" = callPackage
     ({ mkDerivation, base, Cabal, lens, strict, system-fileio
      , system-filepath, text, transformers, unordered-containers
@@ -57911,6 +57938,30 @@ self: {
        mainProgram = "cabal-rpm";
      }) {};
 
+  "cabal-rpm_2_2_0" = callPackage
+    ({ mkDerivation, aeson, base, bytestring, Cabal, cached-json-file
+     , directory, extra, filepath, http-client, http-client-tls
+     , http-conduit, http-query, optparse-applicative, process
+     , simple-cabal, simple-cmd, simple-cmd-args, text, time, unix
+     }:
+     mkDerivation {
+       pname = "cabal-rpm";
+       version = "2.2.0";
+       sha256 = "1lrcqgbl3l6if9sa5qylm87yssl5gsinnidzx19q6z2nm5wbnyh7";
+       isLibrary = false;
+       isExecutable = true;
+       executableHaskellDepends = [
+         aeson base bytestring Cabal cached-json-file directory extra
+         filepath http-client http-client-tls http-conduit http-query
+         optparse-applicative process simple-cabal simple-cmd
+         simple-cmd-args text time unix
+       ];
+       description = "RPM packaging tool for Haskell Cabal-based packages";
+       license = lib.licenses.gpl3Only;
+       hydraPlatforms = lib.platforms.none;
+       mainProgram = "cabal-rpm";
+     }) {};
+
   "cabal-scripts" = callPackage
     ({ mkDerivation, base }:
      mkDerivation {
@@ -58264,8 +58315,8 @@ self: {
      }:
      mkDerivation {
        pname = "cabal2spec";
-       version = "2.7.0";
-       sha256 = "0m84jffwqk8sav5rj8s17p72ddp5y0nnw2x2365ds7p5qbyyni43";
+       version = "2.7.1";
+       sha256 = "0w1f7ga7nz4112x9k4g75nxpcwvcdfif0bfzk3fg8bghzijf12bd";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [ base Cabal filepath time ];
@@ -58984,8 +59035,8 @@ self: {
      }:
      mkDerivation {
        pname = "calamity";
-       version = "0.10.0.0";
-       sha256 = "1g4wf788xhqqsyg69ish0za5jzfvjmy86npaj59pbpf37y6k4zkh";
+       version = "0.11.0.0";
+       sha256 = "18q9an47zk5j9ank36fws908iqdm9k1v44sy0348qpsaviyw2wlw";
        libraryHaskellDepends = [
          aeson aeson-optics async base bytestring calamity-commands colour
          concurrent-extra containers crypton-connection crypton-x509-system
@@ -59008,8 +59059,8 @@ self: {
      }:
      mkDerivation {
        pname = "calamity-commands";
-       version = "0.4.0.0";
-       sha256 = "10zfq0dnf5yy1dbi0s08c67svm8rln43wnas6mxid9kcql2cmgfb";
+       version = "0.4.1.0";
+       sha256 = "1wmhzk0d1p99saj9nsc23ns2n126nn8zhfrqhmbwzgymz3x2k4g6";
        libraryHaskellDepends = [
          base megaparsec optics polysemy polysemy-plugin text text-show
          unordered-containers
@@ -60933,8 +60984,6 @@ self: {
        testHaskellDepends = [ base bytestring primitive text ];
        description = "Portable CRC-32C";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
-       broken = true;
      }) {};
 
   "caster" = callPackage
@@ -61158,8 +61207,8 @@ self: {
      }:
      mkDerivation {
        pname = "cattrap";
-       version = "0.5.0.0";
-       sha256 = "07nkmqq977afj4xjmvij6pcickqfiqrjicmrmdqy1v1x1pjn1ry3";
+       version = "0.6.0.0";
+       sha256 = "190867anzps2yrdiyxzx96n43zz0ww6a2wlvncgnwcg7khfzap1a";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -64856,6 +64905,8 @@ self: {
        pname = "clash-ghc";
        version = "1.8.1";
        sha256 = "1xjf3z043sn7r35pkbpyxl4agyl2hz3mj7iikridxsddjqrmr5y4";
+       revision = "1";
+       editedCabalFile = "19pknfpjzp8bazxqdrdbbrz4dcrzrryps063x0ga7zfiw25xrjg0";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -64892,6 +64943,8 @@ self: {
        pname = "clash-lib";
        version = "1.8.1";
        sha256 = "1s31d0pdzm5zk62gz4g1xp2yalyal2gk3n46y2rwpxl440mchyy5";
+       revision = "1";
+       editedCabalFile = "02iy7jxsixgzl8kpjvpz2zc5aiy9ran9lgmslyadw8wvw9x9l7ri";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -64977,6 +65030,8 @@ self: {
        pname = "clash-prelude";
        version = "1.8.1";
        sha256 = "13y43lsw55jpmr04x6yrrppma9qdqzlvrwbs4jkvc3g7jmydnb3y";
+       revision = "1";
+       editedCabalFile = "0jxlb59ln47gzwmrwl777rr0mcrlhg964l2q454qvbhfvv15iny0";
        libraryHaskellDepends = [
          array arrows base binary bytestring constraints containers
          data-binary-ieee754 data-default-class deepseq extra ghc-bignum
@@ -69248,28 +69303,6 @@ self: {
      }:
      mkDerivation {
        pname = "commonmark";
-       version = "0.2.5.1";
-       sha256 = "0j6534by7k7qy5bz89zwh718n4v1rb5b9593mslip1my0z7jkmnd";
-       libraryHaskellDepends = [
-         base bytestring containers parsec text transformers unicode-data
-         unicode-transforms
-       ];
-       testHaskellDepends = [
-         base parsec tasty tasty-hunit tasty-quickcheck text
-         unicode-transforms
-       ];
-       benchmarkHaskellDepends = [ base tasty-bench text ];
-       description = "Pure Haskell commonmark parser";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "commonmark_0_2_6" = callPackage
-    ({ mkDerivation, base, bytestring, containers, parsec, tasty
-     , tasty-bench, tasty-hunit, tasty-quickcheck, text, transformers
-     , unicode-data, unicode-transforms
-     }:
-     mkDerivation {
-       pname = "commonmark";
        version = "0.2.6";
        sha256 = "0k0wkvlqbcv7iml9pa56pic4z417qydck22r4kbw51zixkj6rrp7";
        libraryHaskellDepends = [
@@ -69283,7 +69316,6 @@ self: {
        benchmarkHaskellDepends = [ base tasty-bench text ];
        description = "Pure Haskell commonmark parser";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "commonmark-cli" = callPackage
@@ -69314,27 +69346,6 @@ self: {
      }:
      mkDerivation {
        pname = "commonmark-extensions";
-       version = "0.2.5.3";
-       sha256 = "1xsd2v0d87xq4w76smbsixkjavg8ykrkmisjm4xiklbpc3l9nb54";
-       libraryHaskellDepends = [
-         base commonmark containers emojis filepath network-uri parsec text
-         transformers
-       ];
-       testHaskellDepends = [
-         base commonmark parsec tasty tasty-hunit text
-       ];
-       benchmarkHaskellDepends = [ base commonmark tasty-bench text ];
-       description = "Pure Haskell commonmark parser";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "commonmark-extensions_0_2_5_4" = callPackage
-    ({ mkDerivation, base, commonmark, containers, emojis, filepath
-     , network-uri, parsec, tasty, tasty-bench, tasty-hunit, text
-     , transformers
-     }:
-     mkDerivation {
-       pname = "commonmark-extensions";
        version = "0.2.5.4";
        sha256 = "0249j6yn4y6w2n81ph2ydpqqkbx8y7zba96j50a26jx9l62f1yim";
        libraryHaskellDepends = [
@@ -69347,7 +69358,6 @@ self: {
        benchmarkHaskellDepends = [ base commonmark tasty-bench text ];
        description = "Pure Haskell commonmark parser";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "commonmark-pandoc" = callPackage
@@ -72363,6 +72373,8 @@ self: {
        pname = "config-ini";
        version = "0.2.7.0";
        sha256 = "00b9b590566hrxrjn31jkq70768dnrzzsjrasrnhdvd6p92iq5rs";
+       revision = "1";
+       editedCabalFile = "1cjpz7q0lsxac1r011ik34fcsi4lsy634ayxyblzyszigvks7r9a";
        libraryHaskellDepends = [
          base containers megaparsec text transformers unordered-containers
        ];
@@ -73517,21 +73529,6 @@ self: {
      }:
      mkDerivation {
        pname = "context";
-       version = "0.2.0.3";
-       sha256 = "0hgpnv3bbyhksb8klb5cxalgj8p52az7gk3zpim85x9fymsplwp0";
-       libraryHaskellDepends = [ base containers exceptions ];
-       testHaskellDepends = [ async base ghc-prim hspec ];
-       testToolDepends = [ hspec-discover ];
-       description = "Thread-indexed, nested contexts";
-       license = lib.licenses.mit;
-     }) {};
-
-  "context_0_2_1_0" = callPackage
-    ({ mkDerivation, async, base, containers, exceptions, ghc-prim
-     , hspec, hspec-discover
-     }:
-     mkDerivation {
-       pname = "context";
        version = "0.2.1.0";
        sha256 = "1z10rhy9l2rssvh65bdb4bg4qfsgxa5mkjyhx86l8dksp8kd6cjm";
        libraryHaskellDepends = [ base containers exceptions ];
@@ -73539,7 +73536,6 @@ self: {
        testToolDepends = [ hspec-discover ];
        description = "Thread-indexed, nested contexts";
        license = lib.licenses.mit;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "context-free-art" = callPackage
@@ -73876,13 +73872,13 @@ self: {
      }) {};
 
   "control-block" = callPackage
-    ({ mkDerivation, base, containers, indexed-traversable }:
+    ({ mkDerivation, base, indexed-traversable, witherable }:
      mkDerivation {
        pname = "control-block";
-       version = "0.0.0";
-       sha256 = "01bqs1bbpizmyz8ma615whjxppf1804ar98kdm4k1mij6if5znh7";
-       libraryHaskellDepends = [ base containers indexed-traversable ];
-       description = "Higher-order functions with their function arguments at the end";
+       version = "0.0.1";
+       sha256 = "06l9s8inrdqp9z4zsd178rk3211zmhx4acwxq1py801lpb7vgn8v";
+       libraryHaskellDepends = [ base indexed-traversable witherable ];
+       description = "Higher-order functions with their function arguments at the end, for channeling the full power of BlockArguments and LambdaCase";
        license = lib.licenses.bsd2;
      }) {};
 
@@ -78933,7 +78929,6 @@ self: {
        description = "Currencies representation, pretty printing and conversion";
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
-       broken = true;
      }) {};
 
   "currency" = callPackage
@@ -79944,7 +79939,7 @@ self: {
      , http-types, HUnit, leancheck, memory, mmap, monad-control, mtl
      , network, network-uri, old-time, parsec, process, QuickCheck
      , quickcheck-instances, regex-applicative, regex-base, regex-tdfa
-     , stm, strict-identity, system-fileio, system-filepath, tar
+     , safe, stm, strict-identity, system-fileio, system-filepath, tar
      , temporary, terminal-size, terminfo, test-framework
      , test-framework-hunit, test-framework-leancheck
      , test-framework-quickcheck2, text, time, tls, transformers
@@ -79953,8 +79948,8 @@ self: {
      }:
      mkDerivation {
        pname = "darcs";
-       version = "2.18.1";
-       sha256 = "10f9yy8rkn1vnkyn9kpxs7hvb99lwa8l6skgph95x51zrmiymm62";
+       version = "2.18.2";
+       sha256 = "11ikl5fx7xkr0zb4kam1hr8kcziz9dg00hqj0ygcpv321a552rg6";
        configureFlags = [ "-fforce-char8-encoding" "-flibrary" ];
        isLibrary = true;
        isExecutable = true;
@@ -79964,15 +79959,15 @@ self: {
          conduit constraints containers cryptonite data-ordlist directory
          exceptions fgl filepath hashable haskeline html http-conduit
          http-types memory mmap mtl network network-uri old-time parsec
-         process regex-applicative regex-base regex-tdfa stm strict-identity
-         tar temporary terminal-size terminfo text time tls transformers
-         unix unix-compat utf8-string vector zip-archive zlib
+         process regex-applicative regex-base regex-tdfa safe stm
+         strict-identity tar temporary terminal-size terminfo text time tls
+         transformers unix unix-compat utf8-string vector zip-archive zlib
        ];
        executableHaskellDepends = [ base ];
        testHaskellDepends = [
          array async base bytestring cmdargs constraints containers
          directory exceptions filepath FindBin HUnit leancheck monad-control
-         mtl process QuickCheck quickcheck-instances system-fileio
+         mtl process QuickCheck quickcheck-instances safe system-fileio
          system-filepath test-framework test-framework-hunit
          test-framework-leancheck test-framework-quickcheck2 text time
          transformers transformers-base unix-compat vector zip-archive
@@ -80360,6 +80355,8 @@ self: {
        pname = "data-accessor";
        version = "0.2.3.1";
        sha256 = "14ap1lxizxkgphl4kg8lr3ny9lblx1k6hm8i9nm7l43yla8cg8q6";
+       revision = "1";
+       editedCabalFile = "1v16s3d1kwlx9vzf6agacr2rfamnhyl7fgd81arznka51v3my2fs";
        libraryHaskellDepends = [ array base containers transformers ];
        description = "Utilities for accessing and manipulating fields of records";
        license = lib.licenses.bsd3;
@@ -82698,8 +82695,8 @@ self: {
      }:
      mkDerivation {
        pname = "dates";
-       version = "0.2.3.2";
-       sha256 = "15x7nyzdzqqknxff4v08hij1gp8p1prwpzpl6ayva548xq70jz39";
+       version = "0.2.3.3";
+       sha256 = "1qzvms0cvrdhwwhvcd0657qbfkbj28g4l77vwqlj7sy603anishf";
        libraryHaskellDepends = [
          base base-unicode-symbols parsec syb template-haskell time
        ];
@@ -83061,6 +83058,20 @@ self: {
        license = lib.licenses.asl20;
      }) {};
 
+  "dbus-app-launcher" = callPackage
+    ({ mkDerivation, base, containers, dbus, extra, unix }:
+     mkDerivation {
+       pname = "dbus-app-launcher";
+       version = "0.1.0.0";
+       sha256 = "142l60kz6qx9k88jdg94icfq3aa8g160d4q9g8hrvpr0360gq2dv";
+       isLibrary = false;
+       isExecutable = true;
+       executableHaskellDepends = [ base containers dbus extra unix ];
+       description = "Simple app launcher for D-Bus";
+       license = lib.licenses.mit;
+       mainProgram = "dbus-app-launcher";
+     }) {};
+
   "dbus-client" = callPackage
     ({ mkDerivation, base, containers, dbus-core, monads-tf, text
      , transformers
@@ -85534,10 +85545,8 @@ self: {
      }:
      mkDerivation {
        pname = "deriving-compat";
-       version = "0.6.5";
-       sha256 = "1wrjapgp6sy2h8jql05ryyzmiadlkfy5qw1brka466j6ag7jwha7";
-       revision = "1";
-       editedCabalFile = "093kv76593jr1af12c5idqr97mbkf9vs93zbhrw7kcqwiydpsi91";
+       version = "0.6.6";
+       sha256 = "1fan8wfd54lkf40gjqwrcfrbigmhhdqlgsl5p93w8p2007yr7zk1";
        libraryHaskellDepends = [
          base containers ghc-boot-th ghc-prim template-haskell
          th-abstraction transformers transformers-compat
@@ -88669,8 +88678,8 @@ self: {
        pname = "directory";
        version = "1.3.7.1";
        sha256 = "1z8frwbr0kdk47x3xasq7ifzcrwl7ryh1aqgf202xv4cakb8a9yw";
-       revision = "1";
-       editedCabalFile = "1ibdacpflpg4drd1vbrk15lzj5aqdhabncy4v5lvs0xkgw9by5kx";
+       revision = "2";
+       editedCabalFile = "142wr326wma17cjmdh8z02rwxc76712bky1f46vqr33g1wdsqyxj";
        libraryHaskellDepends = [ base filepath time unix ];
        testHaskellDepends = [ base filepath time unix ];
        description = "Platform-agnostic library for filesystem operations";
@@ -88684,6 +88693,8 @@ self: {
        pname = "directory";
        version = "1.3.8.3";
        sha256 = "1hzn11nairaj1n20znhgnsg43cxl2l1cqb55gixq0bkkkj2ygl6b";
+       revision = "1";
+       editedCabalFile = "0jx9x76xg38ibfnhrrghnx2vqnrk3myl33ncrhml8jyn32dsqbx0";
        libraryHaskellDepends = [ base filepath time unix ];
        testHaskellDepends = [ base filepath time unix ];
        description = "Platform-agnostic library for filesystem operations";
@@ -89535,10 +89546,8 @@ self: {
      }:
      mkDerivation {
        pname = "distributed-process";
-       version = "0.7.4";
-       sha256 = "01ck0vhy8rrilyph6ijpxdmh9jijfbx2ri7k2hmacbblwj4bzafq";
-       revision = "1";
-       editedCabalFile = "02b499kz94v9ls6l95q9wxh0f56nzfyq7rslq3jf6xp94ydcnhwy";
+       version = "0.7.5";
+       sha256 = "1si3s8540nyybsyzbh6qa96aanvd8qf70b9lgcg78jn4a1fww7c9";
        libraryHaskellDepends = [
          base binary bytestring containers data-accessor deepseq
          distributed-static exceptions hashable mtl network-transport random
@@ -89562,8 +89571,8 @@ self: {
      }:
      mkDerivation {
        pname = "distributed-process-async";
-       version = "0.2.6";
-       sha256 = "0d10na24a7w1rd1qkq62xq01fkywm457421lp0frhs5p5c1kb7aw";
+       version = "0.2.7";
+       sha256 = "138gjlsw5r6nsm609kq25wg1nxad34ag9ysa4m0f5rbf8fb0mmm6";
        libraryHaskellDepends = [
          base binary containers data-accessor deepseq distributed-process
          exceptions fingertree hashable mtl stm time transformers
@@ -89880,21 +89889,21 @@ self: {
 
   "distributed-process-simplelocalnet" = callPackage
     ({ mkDerivation, base, binary, bytestring, containers
-     , data-accessor, distributed-process, network, network-multicast
-     , network-transport, network-transport-tcp, transformers
+     , data-accessor, distributed-process, exceptions, network
+     , network-multicast, network-transport, network-transport-tcp
+     , tasty, tasty-hunit, transformers
      }:
      mkDerivation {
        pname = "distributed-process-simplelocalnet";
-       version = "0.2.4";
-       sha256 = "0ayz2l48ykbsb7wmyf5cl6anmrrr3bxspbadv7nwa1lg74rqpsif";
-       revision = "2";
-       editedCabalFile = "1msya8gyk48yngw5znyr68f5ygvmiz6yjyhwkgxzjj56h4zh0jh4";
-       isLibrary = true;
-       isExecutable = true;
+       version = "0.3.0";
+       sha256 = "1y9jxn1f56k5845dynac5hapfgsq66wibw2ypdzsp2lqh4ggs2jz";
        libraryHaskellDepends = [
          base binary bytestring containers data-accessor distributed-process
-         network network-multicast network-transport network-transport-tcp
-         transformers
+         exceptions network network-multicast network-transport
+         network-transport-tcp transformers
+       ];
+       testHaskellDepends = [
+         base distributed-process tasty tasty-hunit
        ];
        description = "Simple zero-configuration backend for Cloud Haskell";
        license = lib.licenses.bsd3;
@@ -90049,10 +90058,8 @@ self: {
      }:
      mkDerivation {
        pname = "distributed-static";
-       version = "0.3.9";
-       sha256 = "1nch2k8dnlf6is2p4skh8vd0qbkgai4r6msfn6r5cr0cqaarb6pf";
-       revision = "1";
-       editedCabalFile = "09rs5g4y6ac5gnh46p94vavrdw739740b65knc66dv6xgs383rzm";
+       version = "0.3.10";
+       sha256 = "1nkgs2rw1wk2rfr8xnpgk0ir9dkqv8b4bw78rrn6pmy7mg26mi6r";
        libraryHaskellDepends = [
          base binary bytestring containers deepseq rank1dynamic
        ];
@@ -90322,8 +90329,8 @@ self: {
      }:
      mkDerivation {
        pname = "djot";
-       version = "0.1.1.2";
-       sha256 = "0cb15vaxgkgvz0wnb2hhslbgmvffppq5d5gh2s6qli2i8z8l4pvr";
+       version = "0.1.1.3";
+       sha256 = "086z91c6pmh1d6mwz6faddc4nb0h8pdynykhflnr6w3lip49bhbh";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -95563,8 +95570,8 @@ self: {
        pname = "effectful-th";
        version = "1.0.0.1";
        sha256 = "19xbvfsglm4gsji303zj4f1nhhl4gls78cdbl4yalxm8c4m8iqsf";
-       revision = "4";
-       editedCabalFile = "0dawn69x2zf1wm6zj3vkv1s0naq8820nfi191v1ix5z9ai7nq5kz";
+       revision = "5";
+       editedCabalFile = "0yszw0cczcbjfhq86i48bm9cbqmhq9gc6wajls15n8w9iraiyaaz";
        libraryHaskellDepends = [
          base containers effectful-core exceptions template-haskell
          th-abstraction
@@ -96030,6 +96037,17 @@ self: {
        license = lib.licenses.asl20;
      }) {};
 
+  "either-semigroup" = callPackage
+    ({ mkDerivation, base }:
+     mkDerivation {
+       pname = "either-semigroup";
+       version = "0.0.0";
+       sha256 = "0llfkcq1j7l09vhn38s1asin90ki2xzkpr9xxqpvx0jvpdppza7i";
+       libraryHaskellDepends = [ base ];
+       description = "Either with a stricter Semigroup instance";
+       license = lib.licenses.bsd2;
+     }) {};
+
   "either-unwrap" = callPackage
     ({ mkDerivation, base }:
      mkDerivation {
@@ -96531,6 +96549,8 @@ self: {
        pname = "eliminators";
        version = "0.9.4";
        sha256 = "1qr02xlmb6nfd505z0iw7bj7kpha8wyvcr31rm92r1a78pwvysaf";
+       revision = "1";
+       editedCabalFile = "1rd0qixjgsm5dk9r8dmdk31i0dvsd57mg212k2c0pxh553lggq1q";
        libraryHaskellDepends = [
          base extra singleton-nats singletons-base template-haskell text
          th-abstraction th-desugar
@@ -98548,6 +98568,27 @@ self: {
        maintainers = [ lib.maintainers.sternenseemann ];
      }) {};
 
+  "envy_2_1_3_0" = callPackage
+    ({ mkDerivation, base, bytestring, containers, hspec, mtl
+     , QuickCheck, quickcheck-instances, text, time, transformers
+     }:
+     mkDerivation {
+       pname = "envy";
+       version = "2.1.3.0";
+       sha256 = "088nha6hcd4knqxyqb2v7d3px7nqcqg2qm2gd1qrws21dcc6lkbl";
+       libraryHaskellDepends = [
+         base bytestring containers mtl text time transformers
+       ];
+       testHaskellDepends = [
+         base bytestring hspec mtl QuickCheck quickcheck-instances text time
+         transformers
+       ];
+       description = "An environmentally friendly way to deal with environment variables";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+       maintainers = [ lib.maintainers.sternenseemann ];
+     }) {};
+
   "envy-extensible" = callPackage
     ({ mkDerivation, base, doctest, envy, extensible, hspec
      , hspec-discover, main-tester, QuickCheck
@@ -98568,36 +98609,41 @@ self: {
      }) {};
 
   "eo-phi-normalizer" = callPackage
-    ({ mkDerivation, aeson, alex, array, base, BNFC, Cabal, directory
-     , filepath, generic-lens, happy, hspec, hspec-discover, lens, mtl
-     , optparse-generic, process, string-interpolate, yaml
+    ({ mkDerivation, aeson, aeson-pretty, alex, array, base, blaze-html
+     , blaze-markup, BNFC, Cabal, directory, file-embed, filepath
+     , generic-lens, happy, hspec, hspec-discover, lens, mtl
+     , optparse-applicative, process, QuickCheck, scientific
+     , string-interpolate, template-haskell, text, yaml
      }:
      mkDerivation {
        pname = "eo-phi-normalizer";
-       version = "0.2.0";
-       sha256 = "1xm0hv28zf9c2izvljky2lc60m4yv74lz0mz6mqrf5rr9rql18s5";
+       version = "0.3.0";
+       sha256 = "00shchphrpr8gasd5vypwk512mdpk1ff4a10jlk63mc3lz7c553c";
        isLibrary = true;
        isExecutable = true;
        setupHaskellDepends = [ base Cabal process ];
        libraryHaskellDepends = [
-         aeson array base directory filepath generic-lens lens mtl
-         string-interpolate yaml
+         aeson array base blaze-html blaze-markup directory file-embed
+         filepath generic-lens lens mtl scientific string-interpolate
+         template-haskell text yaml
        ];
        libraryToolDepends = [ alex BNFC happy ];
        executableHaskellDepends = [
-         aeson array base directory filepath generic-lens lens mtl
-         optparse-generic string-interpolate yaml
+         aeson aeson-pretty array base blaze-html blaze-markup directory
+         file-embed filepath generic-lens lens mtl optparse-applicative
+         scientific string-interpolate template-haskell text yaml
        ];
        executableToolDepends = [ alex BNFC happy ];
        testHaskellDepends = [
-         aeson array base directory filepath generic-lens hspec
-         hspec-discover lens mtl string-interpolate yaml
+         aeson array base blaze-html blaze-markup directory file-embed
+         filepath generic-lens hspec hspec-discover lens mtl QuickCheck
+         scientific string-interpolate template-haskell text yaml
        ];
        testToolDepends = [ alex BNFC happy hspec-discover ];
        description = "Command line normalizer of 𝜑-calculus expressions";
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
-       mainProgram = "normalize-phi";
+       mainProgram = "normalizer";
        broken = true;
      }) {};
 
@@ -100769,6 +100815,8 @@ self: {
        pname = "eventlog2html";
        version = "0.11.0";
        sha256 = "0yj50j9jijw8is19d2afpgc3dv45ji911rlhbjvcz7x441valqx8";
+       revision = "1";
+       editedCabalFile = "11zza33mqh34l9rsryzjpr04whx284wjvjbybaz1m83sc8c8blhx";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -107900,31 +107948,6 @@ self: {
      }:
      mkDerivation {
        pname = "flatparse";
-       version = "0.5.0.2";
-       sha256 = "06c31xqaq0v8hys7knxxsxmj0py3h0fwkp4kq9dwr88sk65v8ash";
-       libraryHaskellDepends = [
-         base bytestring containers integer-gmp template-haskell utf8-string
-       ];
-       testHaskellDepends = [
-         base bytestring hspec HUnit QuickCheck quickcheck-instances
-         utf8-string
-       ];
-       benchmarkHaskellDepends = [
-         attoparsec base bytestring gauge integer-gmp megaparsec parsec
-         primitive utf8-string
-       ];
-       description = "High-performance parsing from strict bytestrings";
-       license = lib.licenses.mit;
-       maintainers = [ lib.maintainers.raehik ];
-     }) {};
-
-  "flatparse_0_5_1_0" = callPackage
-    ({ mkDerivation, attoparsec, base, bytestring, containers, gauge
-     , hspec, HUnit, integer-gmp, megaparsec, parsec, primitive
-     , QuickCheck, quickcheck-instances, template-haskell, utf8-string
-     }:
-     mkDerivation {
-       pname = "flatparse";
        version = "0.5.1.0";
        sha256 = "1hczq8x2qmvhxvdn6yb1dcq18ahm917dq0vjvhni6d5d9sa6r2fb";
        libraryHaskellDepends = [
@@ -107940,7 +107963,6 @@ self: {
        ];
        description = "High-performance parsing from strict bytestrings";
        license = lib.licenses.mit;
-       hydraPlatforms = lib.platforms.none;
        maintainers = [ lib.maintainers.raehik ];
      }) {};
 
@@ -110722,38 +110744,39 @@ self: {
      , aws-xray-client-wai, base, bcp47, Blammo, bugsnag, bytestring
      , case-insensitive, cassava, conduit, conduit-extra, containers
      , cookie, datadog, directory, doctest, dotenv, ekg-core, envparse
-     , errors, exceptions, extra, filepath, Glob, hashable
+     , errors, exceptions, extra, faktory, filepath, Glob, hashable
      , hs-opentelemetry-api, hs-opentelemetry-instrumentation-persistent
      , hs-opentelemetry-instrumentation-wai
      , hs-opentelemetry-propagator-datadog, hs-opentelemetry-sdk, hspec
-     , hspec-core, hspec-expectations-lifted, hspec-junit-formatter
-     , http-client, http-conduit, http-link-header, http-types
-     , hw-kafka-client, immortal, lens, lens-aeson, memcache
-     , monad-control, monad-logger-aeson, monad-validate, MonadRandom
-     , mtl, network-uri, nonempty-containers, openapi3, path-pieces
-     , persistent, persistent-postgresql, postgresql-simple, primitive
-     , pureMD5, QuickCheck, resource-pool, resourcet, retry, safe
-     , scientist, semigroupoids, serialise, template-haskell, text, time
+     , hspec-core, hspec-expectations-json, hspec-expectations-lifted
+     , hspec-junit-formatter, http-client, http-conduit
+     , http-link-header, http-types, hw-kafka-client, immortal, lens
+     , lens-aeson, memcache, monad-control, monad-logger
+     , monad-logger-aeson, monad-validate, MonadRandom, mtl, network-uri
+     , nonempty-containers, openapi3, path-pieces, persistent
+     , persistent-postgresql, postgresql-simple, primitive, pureMD5
+     , QuickCheck, resource-pool, resourcet, retry, safe, scientist
+     , semigroupoids, serialise, template-haskell, text, time
      , transformers, transformers-base, typed-process, unliftio
      , unliftio-core, unordered-containers, vector, wai, wai-extra, yaml
-     , yesod-core, yesod-test
+     , yesod-core, yesod-test, zlib
      }:
      mkDerivation {
        pname = "freckle-app";
-       version = "1.15.0.1";
-       sha256 = "0lgbliiikg25a0sggfj9rdd13pvda5304pkh5cddhqc8ypkr2936";
+       version = "1.15.2.0";
+       sha256 = "0vgc4awccws31a0dq8l76114l4xmyys03zqa6l56844hr3pcd755";
        libraryHaskellDepends = [
          aeson annotated-exception autodocodec autodocodec-openapi3
          aws-xray-client-persistent aws-xray-client-wai base bcp47 Blammo
          bugsnag bytestring case-insensitive cassava conduit conduit-extra
          containers cookie datadog directory doctest dotenv ekg-core
-         envparse errors exceptions extra filepath Glob hashable
+         envparse errors exceptions extra faktory filepath Glob hashable
          hs-opentelemetry-api hs-opentelemetry-instrumentation-persistent
          hs-opentelemetry-instrumentation-wai
          hs-opentelemetry-propagator-datadog hs-opentelemetry-sdk hspec
          hspec-core hspec-expectations-lifted hspec-junit-formatter
          http-client http-conduit http-link-header http-types
-         hw-kafka-client immortal lens memcache monad-control
+         hw-kafka-client immortal lens memcache monad-control monad-logger
          monad-logger-aeson monad-validate MonadRandom mtl network-uri
          nonempty-containers openapi3 path-pieces persistent
          persistent-postgresql postgresql-simple primitive pureMD5
@@ -110765,9 +110788,10 @@ self: {
        ];
        testHaskellDepends = [
          aeson base Blammo bugsnag bytestring cassava conduit errors hspec
-         http-types lens lens-aeson memcache monad-validate
-         nonempty-containers postgresql-simple QuickCheck text vector wai
-         wai-extra
+         hspec-expectations-json hspec-expectations-lifted http-types lens
+         lens-aeson memcache monad-validate mtl nonempty-containers
+         postgresql-simple QuickCheck text time unordered-containers vector
+         wai wai-extra zlib
        ];
        description = "Haskell application toolkit used at Freckle";
        license = lib.licenses.mit;
@@ -110804,8 +110828,8 @@ self: {
        pname = "free";
        version = "5.2";
        sha256 = "12agp68cwwixcwfwnvk2xamg34a2x6ax7s1naxv66chpi5y7z1kj";
-       revision = "3";
-       editedCabalFile = "0w5yl0kg77nxrizd1d0r3d2f1wqy1wsq4mmpwxk7h7gq34d6rmsd";
+       revision = "4";
+       editedCabalFile = "0vic3p2viip8gjww8fx19ax6ry7y34h7xclvhzkvmbspjh9d219x";
        libraryHaskellDepends = [
          base comonad containers distributive exceptions indexed-traversable
          mtl profunctors semigroupoids template-haskell th-abstraction
@@ -110815,6 +110839,17 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "free-alacarte" = callPackage
+    ({ mkDerivation, base }:
+     mkDerivation {
+       pname = "free-alacarte";
+       version = "0.1.0.3";
+       sha256 = "1djx7v5n0fc29c4ix6fx51gg2khsy57fd89vknwzqzx3c22skgxm";
+       libraryHaskellDepends = [ base ];
+       description = "Free monads based on intuitions from the Data types à la Carte";
+       license = lib.licenses.gpl3Only;
+     }) {};
+
   "free-algebras" = callPackage
     ({ mkDerivation, base, containers, data-fix, dlist, free, groups
      , hedgehog, kan-extensions, mtl, transformers
@@ -113196,8 +113231,8 @@ self: {
      }:
      mkDerivation {
        pname = "futhark";
-       version = "0.25.14";
-       sha256 = "10aw0ms4l7ddzdhq2x2q0s7sw4hzpmlam811nrvb92q968bvhmnx";
+       version = "0.25.15";
+       sha256 = "0v95d883xhaa1ffn78p3p4fx0sbcjb0d2yl51h22n1wzlkqawdmj";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -113533,25 +113568,6 @@ self: {
      }:
      mkDerivation {
        pname = "fuzzyset";
-       version = "0.3.1";
-       sha256 = "07i0ygbikr5rdmwp00yrql6xjprzhkqb5jr12w1l56n1xssf71zx";
-       libraryHaskellDepends = [
-         base mtl text text-metrics transformers unordered-containers vector
-       ];
-       testHaskellDepends = [
-         base hspec ieee754 mtl text text-metrics transformers
-         unordered-containers vector
-       ];
-       description = "Fuzzy set data structure for approximate string matching";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "fuzzyset_0_3_2" = callPackage
-    ({ mkDerivation, base, hspec, ieee754, mtl, text, text-metrics
-     , transformers, unordered-containers, vector
-     }:
-     mkDerivation {
-       pname = "fuzzyset";
        version = "0.3.2";
        sha256 = "137z8r3i6x2z0nb9yi33ly83c2k1b0b9snm6dqmis4b15z1m4kdq";
        libraryHaskellDepends = [
@@ -113563,7 +113579,6 @@ self: {
        ];
        description = "Fuzzy set data structure for approximate string matching";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "fuzzytime" = callPackage
@@ -113692,32 +113707,35 @@ self: {
      }) {};
 
   "g2" = callPackage
-    ({ mkDerivation, array, base, bytestring, Cabal, concurrent-extra
-     , containers, directory, extra, filepath, ghc, ghc-paths, hashable
-     , hpc, HTTP, liquid-fixpoint, liquidhaskell, MissingH, mtl, parsec
-     , process, reducers, regex-base, regex-compat, split, tagged, tasty
-     , tasty-hunit, template-haskell, temporary-rc, text, time
-     , unordered-containers
+    ({ mkDerivation, array, base, bimap, bytestring, Cabal, clock
+     , concurrent-extra, containers, deferred-folds, directory, extra
+     , filepath, ghc, ghc-paths, hashable, HTTP, language-sygus
+     , MissingH, mtl, optparse-applicative, parsec, pretty, process
+     , random, reducers, regex-base, regex-compat, split, tagged, tasty
+     , tasty-hunit, tasty-quickcheck, template-haskell, temporary-rc
+     , text, text-builder, time, unordered-containers
      }:
      mkDerivation {
        pname = "g2";
-       version = "0.1.0.1";
-       sha256 = "0bknkpnyqmd2sxbbc9634rrd42ay3gp84g4wd6fb7h8zqww0icnq";
+       version = "0.2.0.0";
+       sha256 = "1d4vd357l7arxd0dwyy97c6cz6x3dqm4camfsp4dpdjry7bc8r9q";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
-         array base bytestring Cabal concurrent-extra containers directory
-         extra filepath ghc ghc-paths hashable hpc HTTP liquid-fixpoint
-         liquidhaskell MissingH mtl parsec process reducers regex-base
-         regex-compat split template-haskell temporary-rc text time
-         unordered-containers
+         array base bimap bytestring Cabal clock concurrent-extra containers
+         deferred-folds directory extra filepath ghc ghc-paths hashable HTTP
+         language-sygus MissingH mtl optparse-applicative parsec pretty
+         process random reducers regex-base regex-compat split
+         tasty-quickcheck template-haskell temporary-rc text text-builder
+         time unordered-containers
        ];
        executableHaskellDepends = [
-         base containers filepath ghc hpc text time unordered-containers
+         base containers filepath ghc text unordered-containers
        ];
        testHaskellDepends = [
-         base containers filepath ghc ghc-paths hashable hpc tagged tasty
-         tasty-hunit text time unordered-containers
+         base containers directory filepath ghc ghc-paths hashable process
+         tagged tasty tasty-hunit tasty-quickcheck text time
+         unordered-containers
        ];
        description = "Haskell symbolic execution engine";
        license = lib.licenses.bsd3;
@@ -113736,6 +113754,27 @@ self: {
        hydraPlatforms = lib.platforms.none;
      }) {};
 
+  "g3p-hash" = callPackage
+    ({ mkDerivation, aeson, base, base16, bytestring, containers
+     , network-byte-order, phkdf, Stream, tasty, tasty-hunit, text
+     , tuplehash-utils, vector
+     }:
+     mkDerivation {
+       pname = "g3p-hash";
+       version = "1.0.0.2";
+       sha256 = "09wrrm0pv089fmjq4mglhk03gymv3f61ix6mryq04nrgcn037qrx";
+       libraryHaskellDepends = [
+         base bytestring network-byte-order phkdf Stream tuplehash-utils
+         vector
+       ];
+       testHaskellDepends = [
+         aeson base base16 bytestring containers Stream tasty tasty-hunit
+         text vector
+       ];
+       description = "Global Password Prehash Protocol";
+       license = lib.licenses.asl20;
+     }) {};
+
   "g4ip" = callPackage
     ({ mkDerivation, base }:
      mkDerivation {
@@ -115156,8 +115195,8 @@ self: {
        pname = "generic-data";
        version = "1.1.0.0";
        sha256 = "1jxwkc475v0h1i5g5zyjq0x66fqvixdc99a7m8w3cpxkk56vqb5i";
-       revision = "1";
-       editedCabalFile = "1njfdpp8rckkibixp89rz8dh4qmz67404gbwq2l0qmfcglzf997p";
+       revision = "2";
+       editedCabalFile = "187qabhjmymg18i7424s90f7nwx17hlpcr5i53ximwyd9z6i9ify";
        libraryHaskellDepends = [
          ap-normalize base base-orphans contravariant ghc-boot-th
          show-combinators
@@ -115219,8 +115258,8 @@ self: {
        pname = "generic-deriving";
        version = "1.14.5";
        sha256 = "0jcl6cdf3pdg57yhf90rhdscszna0znvwhlffdcq3bnzkc2797za";
-       revision = "1";
-       editedCabalFile = "1fv2fy6f0wmsxghyn1ywl3zqvdlcv6sd6hqw02pgvhjjzavsysc0";
+       revision = "3";
+       editedCabalFile = "1cgbxczwkgzm44pqd2i7cfa2ka88mz13l037xa0h74vvrgrpapk4";
        libraryHaskellDepends = [
          base containers ghc-prim template-haskell th-abstraction
        ];
@@ -115974,8 +116013,8 @@ self: {
     ({ mkDerivation, base, mtl, template-haskell }:
      mkDerivation {
        pname = "geniplate-mirror";
-       version = "0.7.9";
-       sha256 = "0dkzma11nd7hc1xsriiq50nxr8h50sh1y562yjsqaganxh2sprsx";
+       version = "0.7.10";
+       sha256 = "0b0n8vbk3z4p58dvbpgqh9bapkr46nz7flm3z3i9940hwyvghwl2";
        libraryHaskellDepends = [ base mtl template-haskell ];
        description = "Use Template Haskell to generate Uniplate-like functions";
        license = lib.licenses.bsd3;
@@ -116886,8 +116925,8 @@ self: {
      }:
      mkDerivation {
        pname = "geoip2";
-       version = "0.4.1.1";
-       sha256 = "1fnjqsc9pcgs8l9pg28cdm95pvxlyrnykxllwflzyvgzd1idk42z";
+       version = "0.4.1.2";
+       sha256 = "1gnwylivkxiiafda6yx7qggafknh2p0b4x8ci7lf412rifj0a4pr";
        libraryHaskellDepends = [
          base bytestring cereal containers iproute lens mmap
          reinterpret-cast text
@@ -119408,8 +119447,8 @@ self: {
      }:
      mkDerivation {
        pname = "ghcitui";
-       version = "0.2.0.0";
-       sha256 = "17apm7hanm7zc3rr19am4ll5rmhj9ghdlrxzr7l1rkdla7l6x0a5";
+       version = "0.3.0.0";
+       sha256 = "1b214pl7d6hzw18zgard811lws63k421nq4mzl2qcyh9s67yljbp";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -119418,7 +119457,7 @@ self: {
          text-zipper transformers utf8-string vector vty word-wrap
        ];
        executableHaskellDepends = [ base optparse-applicative text ];
-       testHaskellDepends = [ base hspec ];
+       testHaskellDepends = [ base hspec text ];
        doHaddock = false;
        description = "A Terminal User Interface (TUI) for GHCi";
        license = lib.licenses.bsd3;
@@ -121370,6 +121409,43 @@ self: {
        broken = true;
      }) {};
 
+  "gibberish" = callPackage
+    ({ mkDerivation, aeson, aeson-pretty, base, bytestring, containers
+     , criterion, deepseq, directory, filepath, hedgehog, hspec
+     , hspec-discover, hspec-hedgehog, MonadRandom, mtl
+     , optparse-applicative, random, tasty, tasty-golden, tasty-hedgehog
+     , tasty-th, text, text-show, transformers
+     }:
+     mkDerivation {
+       pname = "gibberish";
+       version = "3.0.0.0";
+       sha256 = "1555ad7sijs90cskm95sfk1xwhszr0gc650kzbkmv6cj3586hrgq";
+       isLibrary = true;
+       isExecutable = true;
+       enableSeparateDataOutput = true;
+       libraryHaskellDepends = [
+         aeson base containers deepseq directory filepath hedgehog
+         MonadRandom mtl random text text-show transformers
+       ];
+       executableHaskellDepends = [
+         aeson aeson-pretty base bytestring containers mtl
+         optparse-applicative random text text-show transformers
+       ];
+       testHaskellDepends = [
+         aeson aeson-pretty base bytestring containers filepath hedgehog
+         hspec hspec-hedgehog MonadRandom mtl random tasty tasty-golden
+         tasty-hedgehog tasty-th text text-show transformers
+       ];
+       testToolDepends = [ hspec-discover ];
+       benchmarkHaskellDepends = [
+         aeson base containers criterion deepseq filepath mtl text text-show
+         transformers
+       ];
+       doHaddock = false;
+       description = "Generate easy-to-remember, hard-to-guess passwords";
+       license = lib.licenses.mit;
+     }) {};
+
   "gibbon" = callPackage
     ({ mkDerivation, base }:
      mkDerivation {
@@ -127968,8 +128044,8 @@ self: {
      }:
      mkDerivation {
        pname = "graph-rewriting-gl";
-       version = "0.7.8";
-       sha256 = "0fqfylas4y7993riw9vf2ppazk1wgpzxrd8a0avf5s63s0w29hm7";
+       version = "0.7.9";
+       sha256 = "1hcl4fm5ds5jcahcmr72qaczpyr0lp7fj8h032cyj2dkdm7h8zmb";
        libraryHaskellDepends = [
          AC-Vector base base-unicode-symbols containers GLUT graph-rewriting
          graph-rewriting-layout OpenGL
@@ -127982,21 +128058,21 @@ self: {
   "graph-rewriting-lambdascope" = callPackage
     ({ mkDerivation, base, base-unicode-symbols, GLUT, graph-rewriting
      , graph-rewriting-gl, graph-rewriting-layout
-     , graph-rewriting-strategies, IndentParser, OpenGL, parsec
+     , graph-rewriting-strategies, indentparser, mtl, OpenGL, parsec
      }:
      mkDerivation {
        pname = "graph-rewriting-lambdascope";
-       version = "0.5.10";
-       sha256 = "0sz87nsn7ff0k63j54rdxp5v9xl926d47fkfa0jjnmdjg1xz2pn4";
+       version = "0.5.11";
+       sha256 = "0l11qg1g95crycx4bh91c3p1dsfqgmap5q05mvmzalyyjp7qgylq";
        isLibrary = false;
        isExecutable = true;
        enableSeparateDataOutput = true;
        executableHaskellDepends = [
          base base-unicode-symbols GLUT graph-rewriting graph-rewriting-gl
-         graph-rewriting-layout graph-rewriting-strategies IndentParser
+         graph-rewriting-layout graph-rewriting-strategies indentparser mtl
          OpenGL parsec
        ];
-       description = "Lambdascope, an optimal evaluator of the lambda calculus, as an interactive graph-rewriting system";
+       description = "Lambdascope, an optimal evaluator of the lambda calculus";
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        mainProgram = "lambdascope";
@@ -128008,8 +128084,8 @@ self: {
      }:
      mkDerivation {
        pname = "graph-rewriting-layout";
-       version = "0.5.6";
-       sha256 = "0h8inqg673kb6kwvsgl0hi44yil08775rw9l5bq9g8qzldz34z85";
+       version = "0.5.8";
+       sha256 = "0g3qhjpsi1wq8vfgvvfshm32h1jj1s7yp90nr4i8z72v54xs3x28";
        libraryHaskellDepends = [
          AC-Vector base base-unicode-symbols graph-rewriting
        ];
@@ -128024,8 +128100,8 @@ self: {
      }:
      mkDerivation {
        pname = "graph-rewriting-ski";
-       version = "0.6.7";
-       sha256 = "1ahwm3dlvy9aaara644m4y0s89xgjcgm2hpkc92z2wmdfydc05g6";
+       version = "0.6.8";
+       sha256 = "0wbibv7wyw217kgas1bx0c8198n96bjvc0j68z56xqrgvqb7yap8";
        isLibrary = false;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -128033,7 +128109,7 @@ self: {
          base base-unicode-symbols GLUT graph-rewriting graph-rewriting-gl
          graph-rewriting-layout OpenGL parsec
        ];
-       description = "Two evalutors of the SKI combinator calculus as interactive graph rewrite systems";
+       description = "Two interactive evalutors of the SKI combinator calculus";
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
      }) {};
@@ -128044,8 +128120,8 @@ self: {
      }:
      mkDerivation {
        pname = "graph-rewriting-strategies";
-       version = "0.2.6";
-       sha256 = "0paacz014jvxixqscd2nlny7x4vd735qqw0zbxsyxr3qz9jxjll9";
+       version = "0.2.9";
+       sha256 = "1x0wbdjlr6rk37x7zvs8n6b9zh7gxny6agrflsgpxjpr195lsnp4";
        libraryHaskellDepends = [
          base base-unicode-symbols containers graph-rewriting
        ];
@@ -128061,8 +128137,8 @@ self: {
      }:
      mkDerivation {
        pname = "graph-rewriting-trs";
-       version = "0.1.9";
-       sha256 = "0wygasyj35sa05vvcmkk8ipdla3zms85pvq48jq1rl2gnk79f2jy";
+       version = "0.1.10";
+       sha256 = "1lyzsnaqv6s42qzs3l5360khx21s3wd1wbnggx62rdzgvqjvwq8h";
        isLibrary = false;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -128071,7 +128147,7 @@ self: {
          graph-rewriting graph-rewriting-gl graph-rewriting-layout OpenGL
          uu-parsinglib
        ];
-       description = "Evaluate first-order applicative term rewrite systems interactively using graph reduction";
+       description = "Interactive evaluation of first-order applicative term rewrite systems";
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        mainProgram = "trs";
@@ -128079,21 +128155,21 @@ self: {
 
   "graph-rewriting-ww" = callPackage
     ({ mkDerivation, base, base-unicode-symbols, GLUT, graph-rewriting
-     , graph-rewriting-gl, graph-rewriting-layout, IndentParser, OpenGL
-     , parsec
+     , graph-rewriting-gl, graph-rewriting-layout, indentparser, mtl
+     , OpenGL, parsec
      }:
      mkDerivation {
        pname = "graph-rewriting-ww";
-       version = "0.3.7";
-       sha256 = "07fjl05w1lidmwh7iz9km3590ggxncq43rmrhzssn49as7basah8";
+       version = "0.3.8";
+       sha256 = "1bck83282y00954k3kppbspdwrj5zx9r5f9wwfdcrksvzs7qwdi0";
        isLibrary = false;
        isExecutable = true;
        enableSeparateDataOutput = true;
        executableHaskellDepends = [
          base base-unicode-symbols GLUT graph-rewriting graph-rewriting-gl
-         graph-rewriting-layout IndentParser OpenGL parsec
+         graph-rewriting-layout indentparser mtl OpenGL parsec
        ];
-       description = "Evaluator of the lambda-calculus in an interactive graph rewriting system with explicit sharing";
+       description = "Interactive evaluator of the lambda-calculus with explicit sharing";
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        mainProgram = "ww";
@@ -132037,6 +132113,34 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "hackage-security_0_6_2_5" = callPackage
+    ({ mkDerivation, aeson, base, base16-bytestring, base64-bytestring
+     , bytestring, Cabal, Cabal-syntax, containers, cryptohash-sha256
+     , directory, ed25519, filepath, ghc-prim, lukko, mtl, network
+     , network-uri, parsec, pretty, QuickCheck, tar, tasty, tasty-hunit
+     , tasty-quickcheck, template-haskell, temporary, text, time
+     , transformers, unordered-containers, vector, zlib
+     }:
+     mkDerivation {
+       pname = "hackage-security";
+       version = "0.6.2.5";
+       sha256 = "1az2bziiw3dlz1bfz2nblklrszr45l7rdmnxkvj37pilchihkj45";
+       libraryHaskellDepends = [
+         base base16-bytestring base64-bytestring bytestring Cabal
+         Cabal-syntax containers cryptohash-sha256 directory ed25519
+         filepath ghc-prim lukko mtl network network-uri parsec pretty tar
+         template-haskell time transformers zlib
+       ];
+       testHaskellDepends = [
+         aeson base bytestring Cabal Cabal-syntax containers network-uri
+         QuickCheck tar tasty tasty-hunit tasty-quickcheck temporary text
+         time unordered-containers vector zlib
+       ];
+       description = "Hackage security library";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "hackage-security-HTTP" = callPackage
     ({ mkDerivation, base, bytestring, hackage-security, HTTP, mtl
      , network, network-uri, zlib
@@ -133084,8 +133188,8 @@ self: {
        pname = "hakyll";
        version = "4.16.2.0";
        sha256 = "1p3x9f1ha6dkis71nzbxh1h7mzldsj4qvmfx3f0vng7y1ydlcw0z";
-       revision = "4";
-       editedCabalFile = "1sr6m8ip139vrcs6nn9vd43lbgdswlzdjkphn65xgkjpx5f726yi";
+       revision = "5";
+       editedCabalFile = "01ny9jsz0drdh497pvhlnwxn946db8a1qc1fxy96l3pjc6plvxcb";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -133300,8 +133404,8 @@ self: {
        pname = "hakyll-convert";
        version = "0.3.0.4";
        sha256 = "09fqr05mvs0qs53psq97kn1s4axinwn1vr5d6af4sqj3zc5k6k39";
-       revision = "7";
-       editedCabalFile = "0wlrihvpjfl3krncavzgl6znb8lsarp2684r48vhy6wrjx4g1h5n";
+       revision = "8";
+       editedCabalFile = "1fwjxmdfq4wlwi77pmvvfydi0si8cbv4ygdrkbanl4d90scr2rn0";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -139465,6 +139569,8 @@ self: {
        pname = "haskey";
        version = "0.3.1.0";
        sha256 = "06q5gwjpgrgjq07iz7368yfghsfc2im1gbwqqixb1lqbiz7q6dbs";
+       revision = "1";
+       editedCabalFile = "06jf673gay6syb11gxbl8y4c0v9p3nmbn4cnr5982wjh47app5nd";
        libraryHaskellDepends = [
          base binary bytestring containers directory exceptions filepath
          focus hashable haskey-btree list-t lz4 mtl semigroups stm
@@ -139491,6 +139597,8 @@ self: {
        pname = "haskey-btree";
        version = "0.3.0.1";
        sha256 = "11zkj4a5j2f7g9kann4f0ab27aq30v6yn8cyn9hn7mhc3gslrx9m";
+       revision = "1";
+       editedCabalFile = "01l8m3hx582ayv8riaxiqswv2dqnirdsxwg7i3mpcjlji56y8sgj";
        libraryHaskellDepends = [
          base binary bytestring containers hashable mtl semigroups text
          transformers vector
@@ -139908,8 +140016,8 @@ self: {
      }:
      mkDerivation {
        pname = "haskoin-store";
-       version = "1.3.0";
-       sha256 = "0dijl0an25174ia9pirl1i73ynv124cyz05ly8lyw77bzcb95l45";
+       version = "1.4.0";
+       sha256 = "0fvy3n2dc54vssrz1mm6acv1nsnmwbmx6kgi14pkqll3fx9i6m4g";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -139975,7 +140083,7 @@ self: {
        license = lib.licenses.mit;
      }) {};
 
-  "haskoin-store-data_1_3_0" = callPackage
+  "haskoin-store-data_1_4_0" = callPackage
     ({ mkDerivation, aeson, base, binary, bytes, bytestring, cereal
      , containers, data-default, deepseq, hashable, haskoin-core, hspec
      , hspec-discover, http-client, http-types, lens, mtl, network
@@ -139984,8 +140092,8 @@ self: {
      }:
      mkDerivation {
        pname = "haskoin-store-data";
-       version = "1.3.0";
-       sha256 = "1bnkl58r96vf9fhxby5p15icp8g2yjv4jgds8s07sqv281f7vcmk";
+       version = "1.4.0";
+       sha256 = "00az0j07f9xj9af502i7b6zkmz43f9c45z80y1znhlvf66as25vi";
        libraryHaskellDepends = [
          aeson base binary bytes bytestring cereal containers data-default
          deepseq hashable haskoin-core http-client http-types lens mtl
@@ -140869,8 +140977,8 @@ self: {
      }:
      mkDerivation {
        pname = "hasql";
-       version = "1.6.4.1";
-       sha256 = "1qdgwwx6pm8r2mq30nagnap01aqdn5rr4p2jizbkz85nfrf46jxc";
+       version = "1.6.4.3";
+       sha256 = "1qy50xnpbikvqqv82wqy9491fgvnl8721xszvjyfhw4r7bf0gn3n";
        libraryHaskellDepends = [
          aeson attoparsec base bytestring bytestring-strict-builder
          contravariant dlist hashable hashtables mtl network-ip
@@ -140973,8 +141081,8 @@ self: {
      }:
      mkDerivation {
        pname = "hasql-dynamic-statements";
-       version = "0.3.1.4";
-       sha256 = "06xpp8w35saf1krv4hxzln9xw23qpqb48f14qmhbanpcni2bqi8x";
+       version = "0.3.1.5";
+       sha256 = "1h7c3r5vw6hndw9pi64609px2gq23g2d4hz5cgdb5ip36d7dck6p";
        libraryHaskellDepends = [
          base bytestring containers hasql hasql-implicits ptr
        ];
@@ -141127,26 +141235,6 @@ self: {
      }:
      mkDerivation {
        pname = "hasql-notifications";
-       version = "0.2.0.6";
-       sha256 = "0ykwvmfhv3x4a6b58crxp1akndz9n7rkr4wbbl6dnikc7rzggh8j";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base bytestring hasql hasql-pool postgresql-libpq text
-       ];
-       executableHaskellDepends = [ base hasql ];
-       testHaskellDepends = [ base bytestring hasql hspec QuickCheck ];
-       description = "LISTEN/NOTIFY support for Hasql";
-       license = lib.licenses.bsd3;
-       mainProgram = "hasql-notifications";
-     }) {};
-
-  "hasql-notifications_0_2_1_0" = callPackage
-    ({ mkDerivation, base, bytestring, hasql, hasql-pool, hspec
-     , postgresql-libpq, QuickCheck, text
-     }:
-     mkDerivation {
-       pname = "hasql-notifications";
        version = "0.2.1.0";
        sha256 = "0f415g6y13sndyn66ssj0hfrqm6l5p1r48v2lix0cvi1gkrv9wm2";
        isLibrary = true;
@@ -141158,7 +141246,6 @@ self: {
        testHaskellDepends = [ base bytestring hasql hspec QuickCheck ];
        description = "LISTEN/NOTIFY support for Hasql";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
        mainProgram = "hasql-notifications";
      }) {};
 
@@ -141531,8 +141618,8 @@ self: {
      }:
      mkDerivation {
        pname = "hasql-transaction-io";
-       version = "0.2.3.0";
-       sha256 = "1wz4sjrnivq9jbgg9q6wgxmknvflnkdvrdrxdrxwmvmvi2g1qybp";
+       version = "0.2.7.0";
+       sha256 = "1z7xi1akm4cd2gzgmihv62mza253n4qxfbvcgd7117zb8mvyn6mz";
        libraryHaskellDepends = [
          base bytestring bytestring-tree-builder exceptions hasql mtl
          resourcet safe-exceptions transformers unliftio-core
@@ -144587,18 +144674,18 @@ self: {
      }) {};
 
   "helf" = callPackage
-    ({ mkDerivation, alex, array, base, containers, happy, mtl, pretty
-     , QuickCheck, transformers
+    ({ mkDerivation, alex, array, base, bytestring, containers, happy
+     , mtl, pretty, text, transformers
      }:
      mkDerivation {
        pname = "helf";
-       version = "0.2022.5.30";
-       sha256 = "18lskhwsagv5zz6l73qgp9z3k4llf8jfjlkig38z8d061a4rc8k2";
+       version = "1.0.20240318";
+       sha256 = "0rmjfbai6k6kzynzm5skz4ska0awb012m4ykqhh47sd28vs9spk1";
        isLibrary = false;
        isExecutable = true;
        enableSeparateDataOutput = true;
        executableHaskellDepends = [
-         array base containers mtl pretty QuickCheck transformers
+         array base bytestring containers mtl pretty text transformers
        ];
        executableToolDepends = [ alex happy ];
        description = "Typechecking terms of the Edinburgh Logical Framework (LF)";
@@ -153716,8 +153803,8 @@ self: {
      }:
      mkDerivation {
        pname = "hotel-california";
-       version = "0.0.5.0";
-       sha256 = "1b5qf7xg2pg4pi9x052bffglzlg2xgyyvsi3hmfhpwg45vlm6xm6";
+       version = "0.0.6.0";
+       sha256 = "1fhlzikap5yiw8h3hk0wag7l2f56bx23xz90l2bqy4nrik6mlxvd";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -154601,14 +154688,44 @@ self: {
        broken = true;
      }) {libpq = null;};
 
+  "hpqtypes_1_12_0_0" = callPackage
+    ({ mkDerivation, aeson, async, base, bytestring, containers
+     , exceptions, HUnit, libpq, lifted-base, monad-control, mtl
+     , QuickCheck, random, readline, resource-pool, scientific
+     , semigroups, stm, test-framework, test-framework-hunit, text
+     , text-show, time, transformers, transformers-base
+     , unordered-containers, uuid-types, vector
+     }:
+     mkDerivation {
+       pname = "hpqtypes";
+       version = "1.12.0.0";
+       sha256 = "14r6aj5dxia2dqjhnxkg8sv5irqg4m4591kc2rb7l4ylkahp70y7";
+       libraryHaskellDepends = [
+         aeson async base bytestring containers exceptions lifted-base
+         monad-control mtl resource-pool semigroups stm text text-show time
+         transformers transformers-base uuid-types vector
+       ];
+       libraryPkgconfigDepends = [ libpq ];
+       testHaskellDepends = [
+         aeson base bytestring exceptions HUnit lifted-base monad-control
+         mtl QuickCheck random readline resource-pool scientific
+         test-framework test-framework-hunit text text-show time
+         transformers-base unordered-containers uuid-types vector
+       ];
+       description = "Haskell bindings to libpqtypes";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+       broken = true;
+     }) {libpq = null;};
+
   "hpqtypes-effectful" = callPackage
     ({ mkDerivation, base, effectful-core, exceptions, hpqtypes
      , resource-pool, tasty, tasty-hunit, text
      }:
      mkDerivation {
        pname = "hpqtypes-effectful";
-       version = "1.0.1.0";
-       sha256 = "1gqi9cf5k8radhsya1s8936wpqpawjis9qfvb62b5cqrc4hvy26f";
+       version = "1.0.2.0";
+       sha256 = "1jlnxijnny18krmw97zy53d074pvpfi14zgyxiclxbc1ix0jdg3k";
        libraryHaskellDepends = [
          base effectful-core exceptions hpqtypes
        ];
@@ -160210,17 +160327,20 @@ self: {
      }) {};
 
   "hspray" = callPackage
-    ({ mkDerivation, base, containers, hashable, numeric-prelude, tasty
-     , tasty-hunit, text, unordered-containers
+    ({ mkDerivation, base, containers, hashable, matrix
+     , numeric-prelude, tasty, tasty-bench, tasty-hunit, text
+     , unordered-containers
      }:
      mkDerivation {
        pname = "hspray";
-       version = "0.2.0.0";
-       sha256 = "15mqv8mzic5jlm440s9srfrc91776mcq3jsjxdgpz6mj9xrfiww5";
+       version = "0.2.4.0";
+       sha256 = "0zc85y4wcalvf57gjr24v8w1x63wb388v0pdqa0n2awi950nf7dd";
        libraryHaskellDepends = [
-         base containers hashable numeric-prelude text unordered-containers
+         base containers hashable matrix numeric-prelude text
+         unordered-containers
        ];
        testHaskellDepends = [ base tasty tasty-hunit ];
+       benchmarkHaskellDepends = [ base tasty-bench ];
        description = "Multivariate polynomials";
        license = lib.licenses.gpl3Only;
      }) {};
@@ -160600,15 +160720,14 @@ self: {
      }) {};
 
   "hsshellscript" = callPackage
-    ({ mkDerivation, base, c2hs, directory, parsec, random, unix }:
+    ({ mkDerivation, base, directory, parsec, random, unix }:
      mkDerivation {
        pname = "hsshellscript";
-       version = "3.5.0";
-       sha256 = "1gdj6b3b0b71jcmxd5wc42gs9v5s37jqd1jwryif84qbiq8rskgr";
+       version = "3.6.2";
+       sha256 = "1p59graa3y2f7apv22qqmaw0l4lgawip6bxs4dpgf9nb5cgwk9iy";
        libraryHaskellDepends = [ base directory parsec random unix ];
-       libraryToolDepends = [ c2hs ];
-       description = "Haskell for Unix shell scripting tasks";
-       license = "LGPL";
+       description = "Using Haskell for Unix shell scripting tasks";
+       license = lib.licenses.lgpl3Plus;
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {};
@@ -161963,8 +162082,8 @@ self: {
      }:
      mkDerivation {
        pname = "http-client";
-       version = "0.7.16";
-       sha256 = "14b21i0dzl7q21ly3gkgc1ybpdhw4gdjhlgzyfp88q1hjj7wm11s";
+       version = "0.7.17";
+       sha256 = "1imd3yiqh9pq677ndvq2rsxr5agys6n15syfl25c8h8625k46qda";
        libraryHaskellDepends = [
          array async base base64-bytestring blaze-builder bytestring
          case-insensitive containers cookie deepseq exceptions filepath
@@ -163167,6 +163286,8 @@ self: {
        pname = "http2";
        version = "5.1.2";
        sha256 = "0gp8z7hldfvfwn20aq8lpcxjgzd733g949ypnv14k8x5ncb1kvcx";
+       revision = "1";
+       editedCabalFile = "10k46jg4rbs3nn5fjak9jh0ldri9514ix843180i3ha18z1dsl8r";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -163312,8 +163433,8 @@ self: {
      }:
      mkDerivation {
        pname = "http2-tls";
-       version = "0.2.5";
-       sha256 = "1gc0shjlacgvsxmhjsfzjqnr871lhqb9yn3lhab720gqkc5lqjcs";
+       version = "0.2.7";
+       sha256 = "00n62n13f4w42d3kyc34prycwb9mv7sy8qpc8kk53y8shdix6x5z";
        libraryHaskellDepends = [
          base bytestring crypton-x509-store crypton-x509-validation
          data-default-class http2 network network-control network-run recv
@@ -163357,19 +163478,6 @@ self: {
     ({ mkDerivation, base, network, network-bsd, network-uri }:
      mkDerivation {
        pname = "httpd-shed";
-       version = "0.4.1.1";
-       sha256 = "19dgdimpzr7pxk7pqvyin6j87gmvnf0rm35gzhmna8qr835wy3sr";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [ base network network-bsd network-uri ];
-       description = "A simple web-server with an interact style API";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "httpd-shed_0_4_1_2" = callPackage
-    ({ mkDerivation, base, network, network-bsd, network-uri }:
-     mkDerivation {
-       pname = "httpd-shed";
        version = "0.4.1.2";
        sha256 = "0ls6aim2glhmn8ncskvgkjbh3cyq3a6r7a5623ciir57nwd5g85k";
        isLibrary = true;
@@ -163377,7 +163485,6 @@ self: {
        libraryHaskellDepends = [ base network network-bsd network-uri ];
        description = "A simple web-server with an interact style API";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "https-everywhere-rules" = callPackage
@@ -166659,8 +166766,8 @@ self: {
      }:
      mkDerivation {
        pname = "hypergeomatrix";
-       version = "1.1.0.1";
-       sha256 = "02pmjjbdnl5g1zhzs1cb32k1z5g3xkdkpz1idx8xf5gnyxcssy38";
+       version = "1.1.0.2";
+       sha256 = "1cg3qpxd87wp2bzdk3iy90y8v5r65q1xzbvcc7a1854rk56hp9dk";
        libraryHaskellDepends = [ array base containers cyclotomic ];
        testHaskellDepends = [ base tasty tasty-hunit ];
        description = "Hypergeometric function of a matrix argument";
@@ -168808,6 +168915,22 @@ self: {
        broken = true;
      }) {};
 
+  "imp" = callPackage
+    ({ mkDerivation, base, containers, exceptions, ghc, hspec
+     , transformers
+     }:
+     mkDerivation {
+       pname = "imp";
+       version = "1.0.1.0";
+       sha256 = "1isxa5wbr8v9v6amydvhlkwvwsamr0jrw9996n1fj6311vwwh831";
+       libraryHaskellDepends = [
+         base containers exceptions ghc transformers
+       ];
+       testHaskellDepends = [ base exceptions ghc hspec ];
+       description = "A GHC plugin for automatically importing modules";
+       license = lib.licenses.mit;
+     }) {};
+
   "imparse" = callPackage
     ({ mkDerivation, ascetic, base, compilation, containers, directory
      , indents, MissingH, parsec, richreports, split, staticanalysis
@@ -170187,33 +170310,6 @@ self: {
      }) {};
 
   "influxdb" = callPackage
-    ({ mkDerivation, aeson, attoparsec, base, bytestring, Cabal
-     , cabal-doctest, clock, containers, doctest, foldl, http-client
-     , http-types, lens, network, optional-args, raw-strings-qq
-     , scientific, tagged, tasty, tasty-hunit, template-haskell, text
-     , time, unordered-containers, vector
-     }:
-     mkDerivation {
-       pname = "influxdb";
-       version = "1.9.3";
-       sha256 = "04rqmzwgbnf9n6c06gki0f2yfz993am9p8dcpnk7yrcv63ryh74y";
-       isLibrary = true;
-       isExecutable = true;
-       setupHaskellDepends = [ base Cabal cabal-doctest ];
-       libraryHaskellDepends = [
-         aeson attoparsec base bytestring clock containers foldl http-client
-         http-types lens network optional-args scientific tagged text time
-         unordered-containers vector
-       ];
-       testHaskellDepends = [
-         base containers doctest lens raw-strings-qq tasty tasty-hunit
-         template-haskell time vector
-       ];
-       description = "InfluxDB client library for Haskell";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "influxdb_1_9_3_1" = callPackage
     ({ mkDerivation, aeson, attoparsec, attoparsec-aeson, base
      , bytestring, Cabal, cabal-doctest, clock, containers, doctest
      , foldl, http-client, http-types, lens, network, optional-args
@@ -170238,7 +170334,6 @@ self: {
        ];
        description = "InfluxDB client library for Haskell";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "informative" = callPackage
@@ -171315,21 +171410,23 @@ self: {
   "intelli-monad" = callPackage
     ({ mkDerivation, aeson, aeson-pretty, base, base64-bytestring
      , bytestring, containers, haskeline, http-client, http-client-tls
-     , JuicyPixels, megaparsec, openai-servant-gen, persistent
-     , persistent-sqlite, process, servant, servant-client, sixel, text
-     , time, transformers, vector
+     , http-conduit, JuicyPixels, megaparsec, openai-servant-gen
+     , optparse-applicative, persistent, persistent-sqlite, process
+     , servant, servant-client, sixel, temporary, text, time
+     , transformers, vector, xml-conduit, yaml
      }:
      mkDerivation {
        pname = "intelli-monad";
-       version = "0.1.0.0";
-       sha256 = "1jhh0dr3q4fn8pfkn9j7spdhivk48nf3liin7r5lvjf42s28bx7d";
+       version = "0.1.0.2";
+       sha256 = "1i6widwlw62cl63bc1lvx1961d4c2x4p4bjhlkyj3g98yhbspjq7";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
          aeson aeson-pretty base base64-bytestring bytestring containers
-         haskeline http-client http-client-tls JuicyPixels megaparsec
-         openai-servant-gen persistent persistent-sqlite process servant
-         servant-client sixel text time transformers vector
+         haskeline http-client http-client-tls http-conduit JuicyPixels
+         megaparsec openai-servant-gen optparse-applicative persistent
+         persistent-sqlite process servant servant-client sixel temporary
+         text time transformers vector xml-conduit yaml
        ];
        executableHaskellDepends = [
          aeson base openai-servant-gen persistent-sqlite process text
@@ -172081,10 +172178,8 @@ self: {
      }:
      mkDerivation {
        pname = "invariant";
-       version = "0.6.2";
-       sha256 = "0271grdzgjfa86hvy50vrqh8k7n0l48i524k3bgyjmwa13l8ar63";
-       revision = "1";
-       editedCabalFile = "1zxvv6q03jsn343pdx53knmjq8l6p2fggvqyfkpgjgvcwf7iaf23";
+       version = "0.6.3";
+       sha256 = "1grgappaqgqnysnwa38gzygw01vb11mjbxadb7r8h2q6l7j1j84d";
        libraryHaskellDepends = [
          array base bifunctors comonad containers contravariant ghc-prim
          profunctors StateVar stm tagged template-haskell th-abstraction
@@ -174622,8 +174717,8 @@ self: {
      }:
      mkDerivation {
        pname = "jackpolynomials";
-       version = "1.1.0.1";
-       sha256 = "0wss00638zsi9zsphmr7pw19rdcvqfmd6fcc0wwhpkz6mkzm4c9s";
+       version = "1.1.1.0";
+       sha256 = "00grr7r2f0jh8vmkv87vhl0h39rbakz8pgbh0s6mmj1k6fi3bkds";
        libraryHaskellDepends = [
          array base hspray ilist lens math-functions numeric-prelude
        ];
@@ -175144,10 +175239,8 @@ self: {
      }:
      mkDerivation {
        pname = "javelin-io";
-       version = "0.1.1.0";
-       sha256 = "1p69r6snk03s3bvhg54ddjjr6fwwnshgjrgyj2b78xhf77pck56m";
-       revision = "1";
-       editedCabalFile = "0p0c5wy31w42l1lyjvvrjrpalbmnvrb6qaalg1rk4rxill5pfcjr";
+       version = "0.1.1.1";
+       sha256 = "1c6w0p7yjbc3yw12f5bflgacvivzc1n0dxgmz2qn06yiraw6jyv6";
        libraryHaskellDepends = [
          base bytestring cassava containers javelin unordered-containers
          vector
@@ -178387,6 +178480,33 @@ self: {
        mainProgram = "kafka-device-vrpn";
      }) {};
 
+  "kafka-interchange" = callPackage
+    ({ mkDerivation, aeson, base, base16, bytebuild, byteslice
+     , bytesmith, bytestring, castagnoli, chronos, containers
+     , contiguous, ip, mtl, natural-arithmetic, pretty-show, primitive
+     , primitive-unaligned, primitive-unlifted, stm, tasty, tasty-golden
+     , tasty-hunit, text, text-short, torsor, transformers, wide-word
+     , zigzag
+     }:
+     mkDerivation {
+       pname = "kafka-interchange";
+       version = "0.2.0.0";
+       sha256 = "16yjjwvwxycr1h2vqsjkixgzln9bym8mpanzwh0kr6h3qgr8h4jw";
+       libraryHaskellDepends = [
+         base bytebuild byteslice bytesmith bytestring castagnoli chronos
+         containers contiguous ip mtl natural-arithmetic primitive
+         primitive-unaligned stm text text-short torsor transformers
+         wide-word zigzag
+       ];
+       testHaskellDepends = [
+         aeson base base16 bytebuild byteslice bytesmith bytestring
+         containers pretty-show primitive primitive-unlifted tasty
+         tasty-golden tasty-hunit text wide-word
+       ];
+       description = "Serialization for kafka wire protocol";
+       license = lib.licenses.bsd3;
+     }) {};
+
   "kaleidoscope" = callPackage
     ({ mkDerivation, base, containers, haskeline, llvm-general
      , llvm-general-pure, mtl, parsec, transformers
@@ -180715,6 +180835,8 @@ self: {
        pname = "kmonad";
        version = "0.4.2";
        sha256 = "1d9l16b9srxkkpj61fbz06gxz3y200yn146sdv7h2bbxnjdswia2";
+       revision = "2";
+       editedCabalFile = "1djchj9c64p0fy3ahzkx3z9wg9dg7pjya3mb6z3wmhjvym8iavvv";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -180726,9 +180848,7 @@ self: {
        testToolDepends = [ hspec-discover ];
        description = "Advanced keyboard remapping utility";
        license = lib.licenses.mit;
-       hydraPlatforms = lib.platforms.none;
        mainProgram = "kmonad";
-       broken = true;
      }) {};
 
   "kmp-dfa" = callPackage
@@ -184728,8 +184848,8 @@ self: {
      }:
      mkDerivation {
        pname = "launchdarkly-server-sdk";
-       version = "4.0.4";
-       sha256 = "1z1lfl6gpa189m39ixwac47lxvhnd505avh36bnna69012gqzfwq";
+       version = "4.1.0";
+       sha256 = "072ppl47rdvcsliij7swdhzlskq30xdwvj5ag2a7060ax5pv23v2";
        libraryHaskellDepends = [
          aeson attoparsec base base16-bytestring bytestring clock containers
          cryptohash exceptions extra generic-lens hashtables http-client
@@ -186074,8 +186194,8 @@ self: {
        pname = "lens";
        version = "5.2.3";
        sha256 = "0kcr1dqvnjmi05yd9m9ylipk5210jwd7d00c9scq9n49vnl8q7nz";
-       revision = "2";
-       editedCabalFile = "0pnhyw3v9dbirh461hcyhds1mpj06qhs81ij7c387wyzdb3qfwk3";
+       revision = "3";
+       editedCabalFile = "18mz3d7m8yb1fpxvkkwm1vwf2q67as5pz348i56c4xxfzhqhxdrj";
        libraryHaskellDepends = [
          array assoc base base-orphans bifunctors bytestring call-stack
          comonad containers contravariant distributive exceptions filepath
@@ -186218,8 +186338,8 @@ self: {
      }:
      mkDerivation {
        pname = "lens-family";
-       version = "2.1.2";
-       sha256 = "0j1n51qx9sszpbksnz35cfsn62mv44g2jvn9iwr6wfy0mz1syq1b";
+       version = "2.1.3";
+       sha256 = "04r5xcypy3vzn3chs9xwmq5gdxk5z5z84qiggkkbz32k6g1b808q";
        libraryHaskellDepends = [
          base containers lens-family-core mtl transformers
        ];
@@ -186231,8 +186351,8 @@ self: {
     ({ mkDerivation, base, containers, transformers }:
      mkDerivation {
        pname = "lens-family-core";
-       version = "2.1.2";
-       sha256 = "1dkkd33wh2ykgis92dpshjxz6d2d41dvjj4zz6b7mdy8frr9jnhv";
+       version = "2.1.3";
+       sha256 = "0r8v42ybwvl1ayz2502mpjl2nc4815699k3f30qln5b9g6qk26lv";
        libraryHaskellDepends = [ base containers transformers ];
        description = "Haskell 2022 Lens Families";
        license = lib.licenses.bsd3;
@@ -188219,19 +188339,6 @@ self: {
      }) {xslt = null;};
 
   "libyaml" = callPackage
-    ({ mkDerivation, base, bytestring, conduit, resourcet }:
-     mkDerivation {
-       pname = "libyaml";
-       version = "0.1.2";
-       sha256 = "1dcpbsjg6n305l07isxmavgp01lbv1qggy16acjyxjlz35pxchlg";
-       revision = "1";
-       editedCabalFile = "00f1rag6sd7c8kza2agw9089p9vf21iiga2aq41nbf6d3yqn7dkz";
-       libraryHaskellDepends = [ base bytestring conduit resourcet ];
-       description = "Low-level, streaming YAML interface";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "libyaml_0_1_4" = callPackage
     ({ mkDerivation, base, bytestring, conduit, libyaml-clib, resourcet
      }:
      mkDerivation {
@@ -188243,7 +188350,6 @@ self: {
        ];
        description = "Low-level, streaming YAML interface";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "libyaml-clib" = callPackage
@@ -189152,6 +189258,8 @@ self: {
        pname = "linear-generics";
        version = "0.2.3";
        sha256 = "0093ywl8s8k92b50li28gcmqc616f6l7jkv7vslkvqzn42yrvbq2";
+       revision = "1";
+       editedCabalFile = "1ky9dhc0bjymw12wpjcv12drbfz7955f1nchgcs3l0ghv8vyvy3x";
        libraryHaskellDepends = [
          base containers ghc-prim template-haskell th-abstraction
        ];
@@ -195776,8 +195884,8 @@ self: {
      }:
      mkDerivation {
        pname = "mailtrap";
-       version = "0.1.2.0";
-       sha256 = "0fglprc6ppq316w870p2gdbnn4kh71a0v2zjhsxrxjcbprwb537h";
+       version = "0.1.2.1";
+       sha256 = "1sqqwjvjcvbngx7y0ycvw06i7nfxgqigsb9cn478xk4ngn851aia";
        libraryHaskellDepends = [
          aeson base base64 blaze-html bytestring email-validate filepath
          http-conduit mime-types text time unordered-containers uuid-types
@@ -197588,6 +197696,30 @@ self: {
        license = lib.licenses.bsd2;
      }) {};
 
+  "math-functions_0_3_4_4" = callPackage
+    ({ mkDerivation, base, data-default-class, deepseq, erf, primitive
+     , QuickCheck, random, tasty, tasty-bench, tasty-hunit
+     , tasty-quickcheck, vector, vector-th-unbox
+     }:
+     mkDerivation {
+       pname = "math-functions";
+       version = "0.3.4.4";
+       sha256 = "1ypqza0v1qbm94yjj536ynh7njlcz36s1cj8c0slbx7ga3fxhh94";
+       libraryHaskellDepends = [
+         base data-default-class deepseq primitive vector
+       ];
+       testHaskellDepends = [
+         base data-default-class deepseq erf primitive QuickCheck tasty
+         tasty-hunit tasty-quickcheck vector vector-th-unbox
+       ];
+       benchmarkHaskellDepends = [
+         base data-default-class random tasty-bench vector
+       ];
+       description = "Collection of tools for numeric computations";
+       license = lib.licenses.bsd2;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "math-grads" = callPackage
     ({ mkDerivation, aeson, array, base, bimap, containers, hspec
      , ilist, lens, linear, matrix, mtl, random, vector
@@ -199057,6 +199189,26 @@ self: {
        mainProgram = "mega-sdist";
      }) {};
 
+  "mega-sdist_0_4_3_1" = callPackage
+    ({ mkDerivation, aeson, base, bytestring, optparse-simple, pantry
+     , path, path-io, rio, rio-orphans, yaml
+     }:
+     mkDerivation {
+       pname = "mega-sdist";
+       version = "0.4.3.1";
+       sha256 = "0rdwdig9wx5jwz5w0v5gg60fhcfgnhfzllcamfp63sfqkhz6awd6";
+       isLibrary = false;
+       isExecutable = true;
+       executableHaskellDepends = [
+         aeson base bytestring optparse-simple pantry path path-io rio
+         rio-orphans yaml
+       ];
+       description = "Handles uploading to Hackage from mega repos";
+       license = lib.licenses.mit;
+       hydraPlatforms = lib.platforms.none;
+       mainProgram = "mega-sdist";
+     }) {};
+
   "megalisp" = callPackage
     ({ mkDerivation, base, megaparsec, mtl, text }:
      mkDerivation {
@@ -199337,8 +199489,8 @@ self: {
      }:
      mkDerivation {
        pname = "mem-info";
-       version = "0.2.0.0";
-       sha256 = "0hmsdv33v2wixw0cizjp7fycq5haa9fzybb0c6z11d3jql485ghh";
+       version = "0.3.0.0";
+       sha256 = "0nfvhgc3d4p5jaaiwv3i363f4fpnd17awdx2halhcfd9a3gfr4j4";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -199410,6 +199562,28 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "memcache_0_3_0_2" = callPackage
+    ({ mkDerivation, base, binary, blaze-builder, bytestring, criterion
+     , data-default-class, hashable, network, resource-pool, time
+     , vector
+     }:
+     mkDerivation {
+       pname = "memcache";
+       version = "0.3.0.2";
+       sha256 = "1gzjcl6hy2kj9rh97vasbfjc7j1vwrfhpr3r8p3wzbxd13rfbw46";
+       libraryHaskellDepends = [
+         base binary blaze-builder bytestring data-default-class hashable
+         network resource-pool time vector
+       ];
+       testHaskellDepends = [
+         base binary blaze-builder bytestring network
+       ];
+       benchmarkHaskellDepends = [ base bytestring criterion ];
+       description = "A memcached client library";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "memcache-conduit" = callPackage
     ({ mkDerivation, attoparsec, attoparsec-binary, base, bytestring
      , conduit, conduit-extra, memcache-haskell, mtl, network, resourcet
@@ -201711,8 +201885,8 @@ self: {
     ({ mkDerivation, base }:
      mkDerivation {
        pname = "mini";
-       version = "1.2.1.0";
-       sha256 = "1ammw6s8snlfzqz8h7lm47vkinwypql35y27rdapa1q3j5ywgmsd";
+       version = "1.3.0.0";
+       sha256 = "0qahnq95nxqgl5lj51j06hpmzi3fypm7flywibzyb5xad5hqp4db";
        libraryHaskellDepends = [ base ];
        description = "Minimal essentials";
        license = lib.licenses.mit;
@@ -204461,8 +204635,8 @@ self: {
      }:
      mkDerivation {
        pname = "monad-logger-aeson";
-       version = "0.4.1.2";
-       sha256 = "0laajzbmzyf7717m0ikirkkxcsrhiwd7l3yn5cchk7rzb92z4yzx";
+       version = "0.4.1.3";
+       sha256 = "13w60v9kadvdcvwf5p376yvxsf7ifh86b94z0hyzvrq0l4d9p73v";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -206205,8 +206379,8 @@ self: {
      }:
      mkDerivation {
        pname = "monomer-flatpak-example";
-       version = "0.0.15.2";
-       sha256 = "0b1f96n4n9ajpslhh885v7gyx780n99qljdz62dlvqjlb88kn4h2";
+       version = "0.0.15.4";
+       sha256 = "0cmrmr562crwwp52ij1m1z9p0sdl5054kjknfxwxk93w5djlg5kd";
        isLibrary = false;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -210102,8 +210276,8 @@ self: {
      }:
      mkDerivation {
        pname = "musicScroll";
-       version = "0.3.3";
-       sha256 = "07c9yxazl8frl06s7jslg28716xi97azyx7i9pc06zmnag9p2k2z";
+       version = "0.3.4";
+       sha256 = "02jgv0m59j673wqqp623c4k9y1kxlkrk37hi3sm2x15q0w2q9x62";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -210112,6 +210286,7 @@ self: {
          deepseq directory gi-gtk gi-gtk-hs mtl pipes pipes-concurrency req
          sqlite-simple stm tagsoup text transformers xdg-basedir
        ];
+       libraryPkgconfigDepends = [ gtk3 ];
        executableHaskellDepends = [ base ];
        executablePkgconfigDepends = [ gtk3 ];
        description = "Supply your tunes info without leaving your music player";
@@ -210960,17 +211135,17 @@ self: {
 
   "mysql-json-table" = callPackage
     ({ mkDerivation, aeson, base, bytestring, conduit, exceptions
-     , http-api-data, mysql, mysql-simple
+     , hashable, http-api-data, mysql, mysql-simple
      }:
      mkDerivation {
        pname = "mysql-json-table";
-       version = "0.1.3.0";
-       sha256 = "1r572z2j2jrgaddb3rf254g1bfjc9khf1rklfcccx8vvavbbkpvb";
+       version = "0.1.4.0";
+       sha256 = "1kavib1ny3cg8cvbvg2n2xlisj1pwvsnv25wddv55kxgng227djr";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
-         aeson base bytestring conduit exceptions http-api-data mysql
-         mysql-simple
+         aeson base bytestring conduit exceptions hashable http-api-data
+         mysql mysql-simple
        ];
        executableHaskellDepends = [ base conduit mysql-simple ];
        description = "Using MySQL to store id-to-json tables";
@@ -211986,8 +212161,8 @@ self: {
      }:
      mkDerivation {
        pname = "national-australia-bank";
-       version = "0.0.2";
-       sha256 = "1cpswfd21an4w2nmycyqk5sblaifm5rxqlh8lbhnqf55crmk0c3a";
+       version = "0.0.3";
+       sha256 = "11jh9lap1763qhpybylhsjvnqsiba1757rlcddqp391j4n2pmb51";
        libraryHaskellDepends = [
          base bytestring containers digit directory filepath lens mtl parsec
          sv time transformers utf8-string validation
@@ -214205,8 +214380,8 @@ self: {
     ({ mkDerivation, base, bytestring, network, time-manager }:
      mkDerivation {
        pname = "network-run";
-       version = "0.2.6";
-       sha256 = "0q3wr8zkccdfi6bfawrajhir1s2cl1knpy6pqg78kd0pvjai2j6a";
+       version = "0.2.7";
+       sha256 = "14x55n79cg74xbjcii00nyi0y7zxh7lw03qdkl4inm1smfsm7zjl";
        libraryHaskellDepends = [ base bytestring network time-manager ];
        description = "Simple network runner library";
        license = lib.licenses.bsd3;
@@ -214388,10 +214563,8 @@ self: {
      }:
      mkDerivation {
        pname = "network-transport";
-       version = "0.5.6";
-       sha256 = "10ichr66j06w2sdx5523rjvwf17cxhl5iw6izw7l066lrbzkr270";
-       revision = "1";
-       editedCabalFile = "1fmlpfya9qakzyqwgiiw1gssz919yrm5fbbf6d9rzqdvmar5g2n8";
+       version = "0.5.7";
+       sha256 = "163n3dl56vrmw4pdq66lb80ybjh58lqr85j69hpqwr24c46gjqk7";
        libraryHaskellDepends = [
          base binary bytestring deepseq hashable transformers
        ];
@@ -214443,10 +214616,8 @@ self: {
      }:
      mkDerivation {
        pname = "network-transport-inmemory";
-       version = "0.5.2";
-       sha256 = "0kpgx6r60cczr178ras5ia9xiihrs5a9hnfyv45djmq16faxfic2";
-       revision = "2";
-       editedCabalFile = "024r9szxp5264ysfygi223nfc3mj1rmaw10xrb62f8b70yr1zbgf";
+       version = "0.5.4";
+       sha256 = "0557xhsswlypnxfvw5x3add29dai29ybi1g129mzkz0pi1wddxiq";
        libraryHaskellDepends = [
          base bytestring containers data-accessor network-transport stm
        ];
@@ -214464,8 +214635,8 @@ self: {
      }:
      mkDerivation {
        pname = "network-transport-tcp";
-       version = "0.8.1";
-       sha256 = "1ia7985pngbmg6cvgw9xkqdyrgbsg98hzzcjzg5ksfsh6jddrvgx";
+       version = "0.8.3";
+       sha256 = "06n6yxcd1alc3zgid29qmljg34mncax0yw6krxalq95pm8lia8j0";
        libraryHaskellDepends = [
          async base bytestring containers data-accessor network
          network-transport uuid
@@ -214483,8 +214654,8 @@ self: {
      }:
      mkDerivation {
        pname = "network-transport-tests";
-       version = "0.3.1";
-       sha256 = "0md91zi8g4vfbj53w1ghbgw50mlgvpnd1pya9y98i8ab8flhk923";
+       version = "0.3.2";
+       sha256 = "1w3cxiap0p8kgxs4jghvhfzpa6bazpha4s6zgabd80cw3gcmf5lf";
        libraryHaskellDepends = [
          ansi-terminal base bytestring containers mtl network-transport
          random
@@ -215257,23 +215428,23 @@ self: {
 
   "ngx-export-healthcheck" = callPackage
     ({ mkDerivation, aeson, async, base, bytestring, containers
-     , crypton-connection, crypton-x509, crypton-x509-system
-     , crypton-x509-validation, data-default-class, enclosed-exceptions
-     , http-client, http-client-brread-timeout, http-client-tls
-     , http-types, ngx-export, safe, snap-core, snap-server, text, time
-     , tls, unordered-containers, vector
+     , crypton-connection, crypton-x509, crypton-x509-store
+     , crypton-x509-system, crypton-x509-validation, data-default-class
+     , enclosed-exceptions, http-client, http-client-brread-timeout
+     , http-client-tls, http-types, ngx-export, safe, snap-core
+     , snap-server, text, time, tls, unordered-containers, vector
      }:
      mkDerivation {
        pname = "ngx-export-healthcheck";
-       version = "1.6.2";
-       sha256 = "1zmmgf0m99m4dcg6q5zxjkbikiwkgn39mdifdvxd0fy5p8ff851a";
+       version = "1.6.3";
+       sha256 = "1v58z19p4ma7k7g0hv2fz3j6vsw8y9pa5q7lspsw9d7z18rrfb8x";
        libraryHaskellDepends = [
          aeson async base bytestring containers crypton-connection
-         crypton-x509 crypton-x509-system crypton-x509-validation
-         data-default-class enclosed-exceptions http-client
-         http-client-brread-timeout http-client-tls http-types ngx-export
-         safe snap-core snap-server text time tls unordered-containers
-         vector
+         crypton-x509 crypton-x509-store crypton-x509-system
+         crypton-x509-validation data-default-class enclosed-exceptions
+         http-client http-client-brread-timeout http-client-tls http-types
+         ngx-export safe snap-core snap-server text time tls
+         unordered-containers vector
        ];
        description = "Active health checks and monitoring of Nginx upstreams";
        license = lib.licenses.bsd3;
@@ -215304,8 +215475,8 @@ self: {
      }:
      mkDerivation {
        pname = "ngx-export-tools";
-       version = "1.2.3.2";
-       sha256 = "0d39i91vbqbs5ibzwka102c5dzjcswkvnz85k57xnir6jr4blfv9";
+       version = "1.2.4";
+       sha256 = "12qryvxkz8mjbpyrvmp7k3jh0zdf6f92a09jdhca8c2x7qdi3xn8";
        libraryHaskellDepends = [
          aeson base binary bytestring ngx-export safe template-haskell
        ];
@@ -216847,6 +217018,17 @@ self: {
        hydraPlatforms = lib.platforms.none;
      }) {};
 
+  "nonnonempty" = callPackage
+    ({ mkDerivation, base, lens, semigroupoids }:
+     mkDerivation {
+       pname = "nonnonempty";
+       version = "0.0.1";
+       sha256 = "1z7yfp0qvgs1bgwzbskz6b5ksdn3zv9ndrm4rbpi7w5q1szr9zz3";
+       libraryHaskellDepends = [ base lens semigroupoids ];
+       description = "List with a minimum length of 2";
+       license = lib.licenses.bsd3;
+     }) {};
+
   "noodle" = callPackage
     ({ mkDerivation, base, directory, filepath }:
      mkDerivation {
@@ -219409,8 +219591,8 @@ self: {
      }:
      mkDerivation {
        pname = "ogma-cli";
-       version = "1.2.0";
-       sha256 = "14qipd24zq37xq7y88ap5gr0iwwjc1ksj21lk108hqa7p5f56b3n";
+       version = "1.3.0";
+       sha256 = "07a64p1b0yzx3wmxycifimjqvnfx9gpk6n3wl6rzgncl1fgf89h0";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [ base ogma-core optparse-applicative ];
@@ -219426,20 +219608,19 @@ self: {
   "ogma-core" = callPackage
     ({ mkDerivation, aeson, base, bytestring, filepath, HUnit, IfElse
      , mtl, ogma-extra, ogma-language-c, ogma-language-cocospec
-     , ogma-language-copilot, ogma-language-fret-reqs
-     , ogma-language-jsonspec, ogma-language-smv, ogma-spec, QuickCheck
-     , test-framework, test-framework-hunit, test-framework-quickcheck2
+     , ogma-language-copilot, ogma-language-jsonspec, ogma-language-smv
+     , ogma-spec, QuickCheck, test-framework, test-framework-hunit
+     , test-framework-quickcheck2
      }:
      mkDerivation {
        pname = "ogma-core";
-       version = "1.2.0";
-       sha256 = "06x651mhq8i14zi7a3ldp6nly51rmfl68a1dv3smndy0xdqn04va";
+       version = "1.3.0";
+       sha256 = "0p3cwyrrjm56x3a8myfp1wlm7xy2j1d06y80arij8cl5cki95kwy";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          aeson base bytestring filepath IfElse mtl ogma-extra
          ogma-language-c ogma-language-cocospec ogma-language-copilot
-         ogma-language-fret-reqs ogma-language-jsonspec ogma-language-smv
-         ogma-spec
+         ogma-language-jsonspec ogma-language-smv ogma-spec
        ];
        testHaskellDepends = [
          base HUnit QuickCheck test-framework test-framework-hunit
@@ -219456,8 +219637,8 @@ self: {
      }:
      mkDerivation {
        pname = "ogma-extra";
-       version = "1.2.0";
-       sha256 = "0khvchp1l16zaaqm7x4n0hvf21d9jih9aqyjf4q9q86mixx0lzkn";
+       version = "1.3.0";
+       sha256 = "1pvnqcgi00v93jkzqxg770y2n0zbq53b0shi783apz9cjxm5a329";
        libraryHaskellDepends = [
          base bytestring Cabal directory filepath
        ];
@@ -219474,8 +219655,8 @@ self: {
      }:
      mkDerivation {
        pname = "ogma-language-c";
-       version = "1.2.0";
-       sha256 = "0vifm7xfr5yidr15ghfr281qkbh54ww0bjja2bx3y6xn9b2z8y3y";
+       version = "1.3.0";
+       sha256 = "0g1z3yh4x9p0iinc39ip1nm9s4d21nwc7gzss81vvc5f2m8hdqbg";
        setupHaskellDepends = [ base BNFC Cabal process ];
        libraryHaskellDepends = [ array base ];
        testHaskellDepends = [
@@ -219493,8 +219674,8 @@ self: {
      }:
      mkDerivation {
        pname = "ogma-language-cocospec";
-       version = "1.2.0";
-       sha256 = "11zdyc4r80mvpyg60cas9cwn7qabicxbg8d8wjpdn15yxcf9p48i";
+       version = "1.3.0";
+       sha256 = "18zv608mb3ifs14m3lmsc644cc2qhj9f0gjxgc85m2wq82blsxpb";
        setupHaskellDepends = [ base BNFC Cabal process ];
        libraryHaskellDepends = [ array base ];
        testHaskellDepends = [
@@ -219510,8 +219691,8 @@ self: {
     ({ mkDerivation, base }:
      mkDerivation {
        pname = "ogma-language-copilot";
-       version = "1.2.0";
-       sha256 = "0svaf7my8av3vdj16kdw6wc058fygkbvl92fril5riyq5pvm57bs";
+       version = "1.3.0";
+       sha256 = "1d9grndx0774rz64x7g8hi9bz80ddayclzianyql0jzyw61ps70s";
        libraryHaskellDepends = [ base ];
        description = "Ogma: Runtime Monitor translator: Copilot Language Endpoints";
        license = "unknown";
@@ -219565,8 +219746,8 @@ self: {
      }:
      mkDerivation {
        pname = "ogma-language-jsonspec";
-       version = "1.2.0";
-       sha256 = "0zqgqvx70faz0bsk7qx5cxfrigsyvffklr9f47gfv82xxbsv61w1";
+       version = "1.3.0";
+       sha256 = "04w0fayj6hbqciw4fqn481gwlj34sq3r9i09zcqh2m455mybalyc";
        libraryHaskellDepends = [
          aeson base bytestring jsonpath megaparsec ogma-spec text
        ];
@@ -219580,8 +219761,8 @@ self: {
      }:
      mkDerivation {
        pname = "ogma-language-smv";
-       version = "1.2.0";
-       sha256 = "19lrb9xvz1vqdzijpsqp0b66psqd0appa1mq8vhvc0yddmpz7ib5";
+       version = "1.3.0";
+       sha256 = "06hb9gxqg81gw5sqzsi966fk9yxhv9q7pclnwhjlaaya3jav3xx2";
        setupHaskellDepends = [ base BNFC Cabal process ];
        libraryHaskellDepends = [ array base ];
        testHaskellDepends = [
@@ -219597,8 +219778,8 @@ self: {
     ({ mkDerivation, base }:
      mkDerivation {
        pname = "ogma-spec";
-       version = "1.2.0";
-       sha256 = "1d1fk0r8df0hg7v4v046czlrwb1wjzwjyqffac7axzhxajl9igci";
+       version = "1.3.0";
+       sha256 = "01vph8dwqf0sw2bn3frik3s2jwnpap1nlkpl8jnk91q2xjc4zhfs";
        libraryHaskellDepends = [ base ];
        description = "Ogma: Runtime Monitor translator: JSON Frontend";
        license = "unknown";
@@ -220460,6 +220641,21 @@ self: {
        broken = true;
      }) {};
 
+  "op2" = callPackage
+    ({ mkDerivation, base, contravariant, lens, mtl, profunctors
+     , semigroupoids
+     }:
+     mkDerivation {
+       pname = "op2";
+       version = "0.0.3";
+       sha256 = "1nnmfbjlvv4kr766484wcnl75qb18g4mwb91nrmy575m6b3g3hzq";
+       libraryHaskellDepends = [
+         base contravariant lens mtl profunctors semigroupoids
+       ];
+       description = "Functions of the type `a -> a -> b`";
+       license = lib.licenses.bsd3;
+     }) {};
+
   "opaleye" = callPackage
     ({ mkDerivation, aeson, base, base16-bytestring, bytestring
      , case-insensitive, containers, contravariant, dotenv, hspec
@@ -220489,6 +220685,36 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "opaleye_0_10_2_3" = callPackage
+    ({ mkDerivation, aeson, base, base16-bytestring, bytestring
+     , case-insensitive, containers, contravariant, dotenv, hspec
+     , hspec-discover, multiset, postgresql-simple, pretty
+     , product-profunctors, profunctors, QuickCheck, scientific
+     , semigroups, text, time, time-compat, time-locale-compat
+     , transformers, uuid, void
+     }:
+     mkDerivation {
+       pname = "opaleye";
+       version = "0.10.2.3";
+       sha256 = "1cbd6d5gp438bi3w2ml7lba6rjjykyxpc5dp5ph0n67pbvbzd66d";
+       libraryHaskellDepends = [
+         aeson base base16-bytestring bytestring case-insensitive
+         contravariant postgresql-simple pretty product-profunctors
+         profunctors scientific semigroups text time-compat
+         time-locale-compat transformers uuid void
+       ];
+       testHaskellDepends = [
+         aeson base bytestring containers contravariant dotenv hspec
+         hspec-discover multiset postgresql-simple product-profunctors
+         profunctors QuickCheck semigroups text time time-compat
+         transformers uuid
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "An SQL-generating DSL targeting PostgreSQL";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "opaleye-classy" = callPackage
     ({ mkDerivation, base, bytestring, lens, mtl, opaleye
      , postgresql-simple, product-profunctors, transformers
@@ -220975,18 +221201,18 @@ self: {
   "opencascade-hs" = callPackage
     ({ mkDerivation, base, resourcet, TKBO, TKBRep, TKernel, TKFillet
      , TKG2d, TKG3d, TKGeomBase, TKLCAF, TKMath, TKMesh, TKOffset
-     , TKPrim, TKRWMesh, TKService, TKStd, TKSTEP, TKSTL, TKTopAlgo
-     , TKV3d, TKXCAF
+     , TKPrim, TKRWMesh, TKService, TKShHealing, TKStd, TKSTEP, TKSTL
+     , TKTopAlgo, TKV3d, TKXCAF, TKXSBase
      }:
      mkDerivation {
        pname = "opencascade-hs";
-       version = "0.2.1.0";
-       sha256 = "0dwlhaq7mknz58r5j1gacm1m400pcg7idg41g1wcq5wv5v0y5rbp";
+       version = "0.2.2.0";
+       sha256 = "0h50q77p60dpngm1bxwk8i5lvw05idcsl2jgsv6kq14jpsc65ajq";
        libraryHaskellDepends = [ base resourcet ];
        librarySystemDepends = [
          TKBO TKBRep TKernel TKFillet TKG2d TKG3d TKGeomBase TKLCAF TKMath
-         TKMesh TKOffset TKPrim TKRWMesh TKService TKStd TKSTEP TKSTL
-         TKTopAlgo TKV3d TKXCAF
+         TKMesh TKOffset TKPrim TKRWMesh TKService TKShHealing TKStd TKSTEP
+         TKSTL TKTopAlgo TKV3d TKXCAF TKXSBase
        ];
        description = "Thin Wrapper for the OpenCASCADE CAD Kernel";
        license = lib.licenses.lgpl21Only;
@@ -220995,8 +221221,9 @@ self: {
      }) {TKBO = null; TKBRep = null; TKFillet = null; TKG2d = null; 
          TKG3d = null; TKGeomBase = null; TKLCAF = null; TKMath = null; 
          TKMesh = null; TKOffset = null; TKPrim = null; TKRWMesh = null; 
-         TKSTEP = null; TKSTL = null; TKService = null; TKStd = null; 
-         TKTopAlgo = null; TKV3d = null; TKXCAF = null; TKernel = null;};
+         TKSTEP = null; TKSTL = null; TKService = null; TKShHealing = null; 
+         TKStd = null; TKTopAlgo = null; TKV3d = null; TKXCAF = null; 
+         TKXSBase = null; TKernel = null;};
 
   "opencc" = callPackage
     ({ mkDerivation, base, bytestring, mtl, opencc, text, transformers
@@ -222263,8 +222490,8 @@ self: {
        pname = "optics-th";
        version = "0.4.1";
        sha256 = "05zxljfqmhr5if7l8gld5s864nql6kqjfizsf1z7r3ydknvmff6p";
-       revision = "6";
-       editedCabalFile = "03qm6q7gw97qlcgnqp097dyvqkqpq4ph95y5ra6k6da218rbl1nk";
+       revision = "7";
+       editedCabalFile = "1zlx9xs8dpr3xbxsbi7pgrqkl6avs4ss2bdq8f3p2dxibr8xi4bz";
        libraryHaskellDepends = [
          base containers mtl optics-core template-haskell th-abstraction
          transformers
@@ -222497,18 +222724,14 @@ self: {
     ({ mkDerivation, attoparsec, base, optparse-applicative, text }:
      mkDerivation {
        pname = "optparse-applicative-cmdline-util";
-       version = "0.2.0";
-       sha256 = "13nr0biqhc2sd30xxn7sms4f0wl629bcahp3hmmcgf45nl38vpbh";
-       revision = "2";
-       editedCabalFile = "02z169my8711w5lxvmi9y124a2z4isks7333yylw14lwv8zw7csv";
+       version = "0.2.1";
+       sha256 = "0l6qmxncqacfm8abpf2j2f7pn7pbd09lpm20im6gpm27dmls001h";
        libraryHaskellDepends = [
          attoparsec base optparse-applicative text
        ];
        description = "Utility functions for working with optparse-applicative";
        license = lib.licenses.agpl3Only;
-       hydraPlatforms = lib.platforms.none;
        maintainers = [ lib.maintainers.slotThe ];
-       broken = true;
      }) {};
 
   "optparse-applicative-simple" = callPackage
@@ -224755,7 +224978,7 @@ self: {
        ];
      }) {};
 
-  "pandoc_3_1_12_2" = callPackage
+  "pandoc_3_1_12_3" = callPackage
     ({ mkDerivation, aeson, aeson-pretty, array, attoparsec, base
      , base64-bytestring, binary, blaze-html, blaze-markup, bytestring
      , case-insensitive, citeproc, commonmark, commonmark-extensions
@@ -224774,8 +224997,8 @@ self: {
      }:
      mkDerivation {
        pname = "pandoc";
-       version = "3.1.12.2";
-       sha256 = "0liyv3pgn7fkjiazmln941vs5h58vipn6d4lmkchjqkdqd9j67ps";
+       version = "3.1.12.3";
+       sha256 = "0qfgfjvrk4y6yvh8yv4kl9w81xvrlcz4prz8vr17rasnli7k561r";
        configureFlags = [ "-f-trypandoc" ];
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
@@ -224897,14 +225120,14 @@ self: {
        maintainers = [ lib.maintainers.maralorn ];
      }) {};
 
-  "pandoc-cli_3_1_12_2" = callPackage
+  "pandoc-cli_3_1_12_3" = callPackage
     ({ mkDerivation, base, hslua-cli, pandoc, pandoc-lua-engine
      , pandoc-server, safe, temporary, text, wai-extra, warp
      }:
      mkDerivation {
        pname = "pandoc-cli";
-       version = "3.1.12.2";
-       sha256 = "1xx381i5ak9sijdx89f5dvk5ccjbmzr1imkvndj1kgay2aixmqap";
+       version = "3.1.12.3";
+       sha256 = "19b0ybqmwffimyyx9amvcyv71myv09z4lja3g5qlna42bd6wfqfn";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
@@ -225336,6 +225559,29 @@ self: {
        license = lib.licenses.mit;
      }) {};
 
+  "pandoc-lua-marshal_0_2_6" = callPackage
+    ({ mkDerivation, aeson, base, bytestring, containers, exceptions
+     , hslua, hslua-list, hslua-marshalling, pandoc-types, QuickCheck
+     , safe, tasty, tasty-hunit, tasty-lua, tasty-quickcheck, text
+     }:
+     mkDerivation {
+       pname = "pandoc-lua-marshal";
+       version = "0.2.6";
+       sha256 = "029wqihgkcdfyy21pdc4gj8hh2av9c29nypcabxch8bfkz6lq0lw";
+       libraryHaskellDepends = [
+         aeson base bytestring containers exceptions hslua hslua-list
+         hslua-marshalling pandoc-types safe text
+       ];
+       testHaskellDepends = [
+         aeson base bytestring containers exceptions hslua hslua-list
+         hslua-marshalling pandoc-types QuickCheck safe tasty tasty-hunit
+         tasty-lua tasty-quickcheck text
+       ];
+       description = "Use pandoc types in Lua";
+       license = lib.licenses.mit;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "pandoc-markdown-ghci-filter" = callPackage
     ({ mkDerivation, aeson, base, containers, ghcid, pandoc
      , pandoc-types, QuickCheck, tasty, tasty-hunit, tasty-quickcheck
@@ -225920,6 +226166,54 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "pantry_0_10_0" = callPackage
+    ({ mkDerivation, aeson, aeson-warning-parser, ansi-terminal, base
+     , bytestring, Cabal, casa-client, casa-types, companion, conduit
+     , conduit-extra, containers, crypton, crypton-conduit, digest
+     , exceptions, filelock, generic-deriving, hackage-security
+     , hedgehog, hpack, hspec, hspec-discover, http-client
+     , http-client-tls, http-conduit, http-download, http-types, memory
+     , mtl, network-uri, path, path-io, persistent, persistent-sqlite
+     , persistent-template, primitive, QuickCheck, raw-strings-qq
+     , resourcet, rio, rio-orphans, rio-prettyprint, static-bytes
+     , tar-conduit, text, text-metrics, time, transformers, unix-compat
+     , unliftio, unordered-containers, vector, yaml, zip-archive
+     }:
+     mkDerivation {
+       pname = "pantry";
+       version = "0.10.0";
+       sha256 = "1f0ck7j82km4sy1ia2iqv9aqkdr3p2h8sarbksrsx2dq68552xym";
+       isLibrary = true;
+       isExecutable = true;
+       libraryHaskellDepends = [
+         aeson aeson-warning-parser ansi-terminal base bytestring Cabal
+         casa-client casa-types companion conduit conduit-extra containers
+         crypton crypton-conduit digest filelock generic-deriving
+         hackage-security hpack http-client http-client-tls http-conduit
+         http-download http-types memory mtl network-uri path path-io
+         persistent persistent-sqlite persistent-template primitive
+         resourcet rio rio-orphans rio-prettyprint static-bytes tar-conduit
+         text text-metrics time transformers unix-compat unliftio
+         unordered-containers vector yaml zip-archive
+       ];
+       testHaskellDepends = [
+         aeson aeson-warning-parser ansi-terminal base bytestring Cabal
+         casa-client casa-types companion conduit conduit-extra containers
+         crypton crypton-conduit digest exceptions filelock generic-deriving
+         hackage-security hedgehog hpack hspec http-client http-client-tls
+         http-conduit http-download http-types memory mtl network-uri path
+         path-io persistent persistent-sqlite persistent-template primitive
+         QuickCheck raw-strings-qq resourcet rio rio-orphans rio-prettyprint
+         static-bytes tar-conduit text text-metrics time transformers
+         unix-compat unliftio unordered-containers vector yaml zip-archive
+       ];
+       testToolDepends = [ hspec-discover ];
+       doHaddock = false;
+       description = "Content addressable Haskell package management";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "pantry-tmp" = callPackage
     ({ mkDerivation, aeson, ansi-terminal, array, base, base-orphans
      , base64-bytestring, bytestring, Cabal, conduit, conduit-extra
@@ -231683,6 +231977,27 @@ self: {
        license = lib.licenses.gpl3Only;
      }) {};
 
+  "phkdf" = callPackage
+    ({ mkDerivation, aeson, base, base16, bytestring, containers
+     , cryptohash-sha256, network-byte-order, Stream, tasty, tasty-hunit
+     , text, tuplehash-utils, vector
+     }:
+     mkDerivation {
+       pname = "phkdf";
+       version = "0.0.0.0";
+       sha256 = "0ghkcwvgpasx3fl3bnqivpbz3y9wkgdszjk4b50d3rw9m23p4qc1";
+       libraryHaskellDepends = [
+         base bytestring cryptohash-sha256 network-byte-order Stream
+         tuplehash-utils vector
+       ];
+       testHaskellDepends = [
+         aeson base base16 bytestring containers Stream tasty tasty-hunit
+         text vector
+       ];
+       description = "Toolkit for self-documenting password hash and key derivation functions";
+       license = lib.licenses.asl20;
+     }) {};
+
   "phladiprelio-general-datatype" = callPackage
     ({ mkDerivation, base, containers }:
      mkDerivation {
@@ -235141,6 +235456,17 @@ self: {
        hydraPlatforms = lib.platforms.none;
      }) {};
 
+  "plegg" = callPackage
+    ({ mkDerivation, base }:
+     mkDerivation {
+       pname = "plegg";
+       version = "0.2.1.1";
+       sha256 = "1j7jblcmnvg2f5pdsakr9afqyssaspffbr4rdrixzayywbbrgbic";
+       libraryHaskellDepends = [ base ];
+       description = "A semi-cross-platform interface for pledge(2) and unveil(2)";
+       license = lib.licenses.unlicense;
+     }) {};
+
   "plex" = callPackage
     ({ mkDerivation, async, base, bytestring, deepseq, hspec
      , QuickCheck, unix
@@ -235242,8 +235568,8 @@ self: {
      }:
      mkDerivation {
        pname = "plot";
-       version = "0.2.3.11";
-       sha256 = "0img30argzgxcgwam3iqc3xasgizbbcrghd2vkmqahmv7g3l36di";
+       version = "0.2.3.12";
+       sha256 = "1l5r6xfiypkda0xf10by2lpnr57qsa9ym2ga8sh3l3phg793v62s";
        libraryHaskellDepends = [
          array base cairo colour hmatrix mtl pango transformers
        ];
@@ -236509,6 +236835,8 @@ self: {
        pname = "polysemy";
        version = "1.9.1.3";
        sha256 = "0ms5d731by2rlwp3fxias8jfpdjih0k96rs8mqrycyyfsjxxilb8";
+       revision = "1";
+       editedCabalFile = "0a4m860wgk2wx55x93xia9dx29bj27f1dkvcz1q7b0jgjyvffc58";
        setupHaskellDepends = [ base Cabal cabal-doctest ];
        libraryHaskellDepends = [
          async base containers first-class-families mtl stm syb
@@ -241443,16 +241771,16 @@ self: {
      }) {};
 
   "primesieve" = callPackage
-    ({ mkDerivation, base, foundation, primesieve }:
+    ({ mkDerivation, base, basement, foundation, primesieve }:
      mkDerivation {
        pname = "primesieve";
-       version = "0.1.0.1";
-       sha256 = "17fmja87sr6lpq6qjmn31zx6y1cxhc65amfza22w07480wk7lhp2";
+       version = "0.2.0";
+       sha256 = "0bhh81479i1nz9n7013www1203yzr4dakw2jghpdmzrlj4r6m4iw";
        isLibrary = true;
        isExecutable = true;
-       libraryHaskellDepends = [ base foundation ];
+       libraryHaskellDepends = [ base basement foundation ];
+       librarySystemDepends = [ primesieve ];
        executableHaskellDepends = [ base foundation ];
-       executableSystemDepends = [ primesieve ];
        description = "FFI bindings for the primesieve library";
        license = lib.licenses.mit;
      }) {inherit (pkgs) primesieve;};
@@ -241525,8 +241853,8 @@ self: {
     ({ mkDerivation, base, primitive, primitive-unlifted }:
      mkDerivation {
        pname = "primitive-atomic";
-       version = "0.1.0.1";
-       sha256 = "0q7lgirw0a75cd0157xq705wnns45d4nx2gfgmvvx0qi6rzvx45s";
+       version = "0.1.0.2";
+       sha256 = "15w7mkaww0szfrzxl9ryw1z0qmqyx1ws3hpwq7ja259vrc43rkbk";
        libraryHaskellDepends = [ base primitive primitive-unlifted ];
        testHaskellDepends = [ base primitive primitive-unlifted ];
        description = "Wrappers for primops around atomic operations";
@@ -242618,8 +242946,8 @@ self: {
        pname = "product-profunctors";
        version = "0.11.1.1";
        sha256 = "1nhwpfjz4iz30h8q7d40hlibqqymvmcf6wmbl6h3212d54hqdgiz";
-       revision = "3";
-       editedCabalFile = "0a9i5gxa5ls17vj6blymfl63zndk887mylc4k7bzj014xl177hsg";
+       revision = "4";
+       editedCabalFile = "18jc284wsvv8kjxb36j7i1iashpizs5yrqjzq1i1r2yzzq9zplll";
        libraryHaskellDepends = [
          base bifunctors contravariant profunctors tagged template-haskell
          th-abstraction
@@ -245218,6 +245546,38 @@ self: {
        license = lib.licenses.asl20;
      }) {};
 
+  "pure-sum" = callPackage
+    ({ mkDerivation, base, hspec, hspec-core, hspec-discover, text
+     , text-manipulate
+     }:
+     mkDerivation {
+       pname = "pure-sum";
+       version = "0.1.0.0";
+       sha256 = "12yn8cj5vzwm4z2vnvclw6x6r17jzhzc29rv7m1mpvgmh174d9jx";
+       libraryHaskellDepends = [ base text text-manipulate ];
+       testHaskellDepends = [ base hspec hspec-core hspec-discover text ];
+       testToolDepends = [ hspec-discover ];
+       description = "Derive fromString/toString-like for pure sum types";
+       license = lib.licenses.isc;
+     }) {};
+
+  "pure-sum-aeson" = callPackage
+    ({ mkDerivation, aeson, base, containers, hspec, hspec-core
+     , hspec-discover, pure-sum, text
+     }:
+     mkDerivation {
+       pname = "pure-sum-aeson";
+       version = "0.1.0.0";
+       sha256 = "08jcm06gm8a6x5b8m6j2l6xz8h8k1y6x3mclsl9lc86whmj3vvk2";
+       libraryHaskellDepends = [ aeson base pure-sum text ];
+       testHaskellDepends = [
+         aeson base containers hspec hspec-core hspec-discover
+       ];
+       testToolDepends = [ hspec-discover ];
+       description = "Derive fromString/toString-like for pure sum types (aeson instances)";
+       license = lib.licenses.isc;
+     }) {};
+
   "pure-zlib" = callPackage
     ({ mkDerivation, array, base, base-compat, bytestring
      , bytestring-builder, containers, criterion, filepath, ghc-prim
@@ -247155,8 +247515,8 @@ self: {
      }:
      mkDerivation {
        pname = "quic";
-       version = "0.1.17";
-       sha256 = "0p4h0s1hyndhqmwfsm0wqk92bq1sw14wk1idc52khyh6rl1a7bdb";
+       version = "0.1.18";
+       sha256 = "18j2fn7qwzvbn4931bls78pwh1dn3gic8sk1vg44l5b2mhfgr43b";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -247356,15 +247716,16 @@ self: {
 
   "quickcheck-dynamic" = callPackage
     ({ mkDerivation, base, containers, mtl, QuickCheck, random, stm
-     , tasty, tasty-quickcheck
+     , tasty, tasty-hunit, tasty-quickcheck
      }:
      mkDerivation {
        pname = "quickcheck-dynamic";
-       version = "3.4.0";
-       sha256 = "0ibz99d7vplscc9dym151x28n7a44s3b0ingn5xg59kjl8ki86xx";
+       version = "3.4.1";
+       sha256 = "07nixdv2x5dpbsak1mgfd7wjyjlp9nxilghx9v23x8j09257vdj9";
        libraryHaskellDepends = [ base containers mtl QuickCheck random ];
        testHaskellDepends = [
-         base containers mtl QuickCheck stm tasty tasty-quickcheck
+         base containers mtl QuickCheck stm tasty tasty-hunit
+         tasty-quickcheck
        ];
        description = "A library for stateful property-based testing";
        license = lib.licenses.asl20;
@@ -247465,8 +247826,8 @@ self: {
      }:
      mkDerivation {
        pname = "quickcheck-lockstep";
-       version = "0.4.0";
-       sha256 = "06aifdyb256qxs6miwbr0jmp5840cwy33sy0ra66w1abwvimmwgf";
+       version = "0.5.0";
+       sha256 = "0ap8qgv33a6rwvvplmmf2hh68hk257l0maznkvlmi7cds6z90bk4";
        libraryHaskellDepends = [
          base constraints containers mtl QuickCheck quickcheck-dynamic
        ];
@@ -250515,8 +250876,8 @@ self: {
      }:
      mkDerivation {
        pname = "rdf4h";
-       version = "5.0.1";
-       sha256 = "0i6sza600fzrk92pp9qc4ji361js5adg7ijf30hb9fdl854hjgk9";
+       version = "5.1.0";
+       sha256 = "09avqww8aw3lqlcfji3j9yc8szll264mv2mzkm6pdq5bzw7z460w";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -251871,6 +252232,8 @@ self: {
        pname = "recursion-schemes";
        version = "5.2.2.5";
        sha256 = "1v4p9ms35sszi5f9f2pnfxhfpypwqj9pmhycc7ghlnnxsvarpdsw";
+       revision = "1";
+       editedCabalFile = "0rz78i40nsk3jywkdssqhla8vpbyhrdd95js5ncxwc0p6s5xp4h9";
        libraryHaskellDepends = [
          base comonad containers data-fix free template-haskell
          th-abstraction transformers
@@ -254844,26 +255207,29 @@ self: {
      }) {};
 
   "rel8" = callPackage
-    ({ mkDerivation, aeson, base, bifunctors, bytestring
-     , case-insensitive, comonad, containers, contravariant, hasql
-     , hasql-transaction, hedgehog, mmorph, opaleye, pretty
-     , product-profunctors, profunctors, scientific, semialign
+    ({ mkDerivation, aeson, attoparsec, attoparsec-aeson, base
+     , base-compat, base16, bifunctors, bytestring, case-insensitive
+     , comonad, containers, contravariant, data-dword, data-textual
+     , hasql, hasql-transaction, hedgehog, mmorph, network-ip, opaleye
+     , pretty, product-profunctors, profunctors, scientific, semialign
      , semigroupoids, tasty, tasty-hedgehog, text, these, time
-     , tmp-postgres, transformers, uuid
+     , tmp-postgres, transformers, utf8-string, uuid, vector
      }:
      mkDerivation {
        pname = "rel8";
-       version = "1.4.1.0";
-       sha256 = "0590pjiphpknxnc3g4y3f3rf134q9z5nbwrrbq81r1gx4nxb8d6n";
+       version = "1.5.0.0";
+       sha256 = "01g1ras7byy05x99gzh3pj4xzsm1qxx3j6qiy1qnzhvrwjifbc5w";
        libraryHaskellDepends = [
-         aeson base bifunctors bytestring case-insensitive comonad
-         contravariant hasql opaleye pretty product-profunctors profunctors
-         scientific semialign semigroupoids text these time uuid
+         aeson attoparsec attoparsec-aeson base base-compat base16
+         bifunctors bytestring case-insensitive comonad contravariant
+         data-textual hasql network-ip opaleye pretty product-profunctors
+         profunctors scientific semialign semigroupoids text these time
+         transformers utf8-string uuid vector
        ];
        testHaskellDepends = [
-         base bytestring case-insensitive containers hasql hasql-transaction
-         hedgehog mmorph scientific tasty tasty-hedgehog text time
-         tmp-postgres transformers uuid
+         base bytestring case-insensitive containers data-dword hasql
+         hasql-transaction hedgehog mmorph network-ip scientific tasty
+         tasty-hedgehog text time tmp-postgres transformers uuid
        ];
        description = "Hey! Hey! Can u rel8?";
        license = lib.licenses.bsd3;
@@ -258651,26 +259017,29 @@ self: {
      }) {};
 
   "risk-weaver" = callPackage
-    ({ mkDerivation, aeson, base, bytestring, containers, file-embed
-     , filepath, inline-c, JuicyPixels, optparse-applicative, random
-     , safe-exceptions, sixel, text, transformers, vector
+    ({ mkDerivation, aeson, async, base, bytestring, containers
+     , deepseq, file-embed, filepath, inline-c, JuicyPixels
+     , optparse-applicative, parallel, random, safe-exceptions, sixel
+     , text, transformers, vector
      }:
      mkDerivation {
        pname = "risk-weaver";
-       version = "0.1.0.1";
-       sha256 = "0hbr37lxawg5d5azgpdih2rqhl1jyfz803ds1vhg12d5vxwgfdz1";
+       version = "0.1.0.2";
+       sha256 = "11jzmh19bhx6w1qps5cqzm1cnfmj2w443zcnqlq8rjzfbrk69lms";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
-         aeson base bytestring containers file-embed filepath inline-c
-         JuicyPixels optparse-applicative random safe-exceptions sixel text
-         transformers vector
+         aeson async base bytestring containers deepseq file-embed filepath
+         inline-c JuicyPixels optparse-applicative parallel random
+         safe-exceptions sixel text transformers vector
+       ];
+       executableHaskellDepends = [
+         base containers filepath JuicyPixels parallel text transformers
+         vector
        ];
-       executableHaskellDepends = [ base ];
        testHaskellDepends = [ base ];
        description = "A DSL for Risk-oriented Object Detection Requirements";
        license = lib.licenses.mit;
-       mainProgram = "risk-weaver-exe";
      }) {};
 
   "rison" = callPackage
@@ -260465,19 +260834,6 @@ self: {
      }) {};
 
   "rss" = callPackage
-    ({ mkDerivation, base, HaXml, network, network-uri, time }:
-     mkDerivation {
-       pname = "rss";
-       version = "3000.2.0.7";
-       sha256 = "0z48xb610k1h29rg03q19y08fp78agxp2gr48innw5y3rz00s6ym";
-       revision = "7";
-       editedCabalFile = "0wkldbjhfyik5dv8rcgyb8w2q4nl4kbajdhrckc4a0d89dzmk3d0";
-       libraryHaskellDepends = [ base HaXml network network-uri time ];
-       description = "A library for generating RSS 2.0 feeds.";
-       license = lib.licenses.publicDomain;
-     }) {};
-
-  "rss_3000_2_0_8" = callPackage
     ({ mkDerivation, base, HaXml, network-uri, time }:
      mkDerivation {
        pname = "rss";
@@ -260486,7 +260842,6 @@ self: {
        libraryHaskellDepends = [ base HaXml network-uri time ];
        description = "A library for generating RSS 2.0 feeds.";
        license = lib.licenses.publicDomain;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "rss-conduit" = callPackage
@@ -261260,8 +261615,8 @@ self: {
      }:
      mkDerivation {
        pname = "safe-coloured-text";
-       version = "0.2.0.1";
-       sha256 = "0n8pkdy7v1c3c14fpbwkrib5vmmviqv9ysl7bcm6g3p23qi4lq5i";
+       version = "0.2.0.2";
+       sha256 = "0bzg4czc2grv4bjc52q9gzy5crj2qwpv4yppkgzjwlv087594as8";
        libraryHaskellDepends = [
          base bytestring text validity validity-bytestring validity-text
        ];
@@ -261269,6 +261624,22 @@ self: {
        license = lib.licenses.mit;
      }) {};
 
+  "safe-coloured-text_0_3_0_1" = callPackage
+    ({ mkDerivation, base, bytestring, text, validity
+     , validity-bytestring, validity-text
+     }:
+     mkDerivation {
+       pname = "safe-coloured-text";
+       version = "0.3.0.1";
+       sha256 = "1m0a8ffwbrj13bxzv6zsa5la6711xd94fxpbixwv1jb8r43zhbf6";
+       libraryHaskellDepends = [
+         base bytestring text validity validity-bytestring validity-text
+       ];
+       description = "Safely output coloured text";
+       license = lib.licenses.mit;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "safe-coloured-text-gen" = callPackage
     ({ mkDerivation, base, genvalidity, genvalidity-bytestring
      , genvalidity-sydtest, genvalidity-text, safe-coloured-text
@@ -261289,6 +261660,27 @@ self: {
        license = lib.licenses.mit;
      }) {};
 
+  "safe-coloured-text-gen_0_0_0_3" = callPackage
+    ({ mkDerivation, base, genvalidity, genvalidity-bytestring
+     , genvalidity-sydtest, genvalidity-text, safe-coloured-text
+     , sydtest, sydtest-discover, text
+     }:
+     mkDerivation {
+       pname = "safe-coloured-text-gen";
+       version = "0.0.0.3";
+       sha256 = "14lyq7xlpi5dk4g8frv0s675d1hfjj2xfxxz6j7fxkci13qf7n1h";
+       libraryHaskellDepends = [
+         base genvalidity genvalidity-bytestring genvalidity-text
+         safe-coloured-text
+       ];
+       testHaskellDepends = [
+         base genvalidity-sydtest safe-coloured-text sydtest text
+       ];
+       testToolDepends = [ sydtest-discover ];
+       license = lib.licenses.mit;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "safe-coloured-text-layout" = callPackage
     ({ mkDerivation, base, bytestring, safe-coloured-text, sydtest
      , sydtest-discover, text, validity
@@ -261308,6 +261700,25 @@ self: {
        broken = true;
      }) {};
 
+  "safe-coloured-text-layout_0_1_0_0" = callPackage
+    ({ mkDerivation, base, bytestring, safe-coloured-text, sydtest
+     , sydtest-discover, text, validity
+     }:
+     mkDerivation {
+       pname = "safe-coloured-text-layout";
+       version = "0.1.0.0";
+       sha256 = "1d964dh6fa1b5ldrndl9pc0169fm4y5m1lxv28an3y13dd6z6mrc";
+       libraryHaskellDepends = [ base safe-coloured-text text validity ];
+       testHaskellDepends = [
+         base bytestring safe-coloured-text sydtest text
+       ];
+       testToolDepends = [ sydtest-discover ];
+       description = "Safely layout output coloured text";
+       license = lib.licenses.mit;
+       hydraPlatforms = lib.platforms.none;
+       broken = true;
+     }) {};
+
   "safe-coloured-text-layout-gen" = callPackage
     ({ mkDerivation, base, genvalidity, genvalidity-sydtest
      , safe-coloured-text, safe-coloured-text-gen
@@ -261340,6 +261751,18 @@ self: {
        license = lib.licenses.mit;
      }) {};
 
+  "safe-coloured-text-terminfo_0_2_0_0" = callPackage
+    ({ mkDerivation, base, safe-coloured-text, terminfo }:
+     mkDerivation {
+       pname = "safe-coloured-text-terminfo";
+       version = "0.2.0.0";
+       sha256 = "0lnqkhihkklyi1da2lvv41h9z5lg60b03zx1c856s07aghm2iwfj";
+       libraryHaskellDepends = [ base safe-coloured-text terminfo ];
+       description = "Safely output coloured text";
+       license = lib.licenses.mit;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "safe-coupling" = callPackage
     ({ mkDerivation, HUnit, liquid-base, liquid-containers
      , liquid-prelude, liquidhaskell, probability, rest-rewrite, sort
@@ -262998,8 +263421,8 @@ self: {
      }:
      mkDerivation {
        pname = "sbp";
-       version = "5.0.5";
-       sha256 = "172srcjmk6vqbnfl8l10a9a5bnpn5vvmccwj5cxpshaj387ap4j0";
+       version = "5.0.7";
+       sha256 = "1lj4zkpyarqhn3k9lnhlkhdmad2q4i4c189civ5ncs55lp6qhybp";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -263101,7 +263524,7 @@ self: {
        broken = true;
      }) {inherit (pkgs) z3;};
 
-  "sbv_10_6" = callPackage
+  "sbv_10_7" = callPackage
     ({ mkDerivation, array, async, base, bytestring, containers
      , deepseq, directory, filepath, libBF, mtl, pretty, process
      , QuickCheck, random, syb, tasty, tasty-bench, tasty-golden
@@ -263110,8 +263533,8 @@ self: {
      }:
      mkDerivation {
        pname = "sbv";
-       version = "10.6";
-       sha256 = "0in7cb59m4h547kq9wss9kqcjpcignai9ybgwj7ci1lnynjj4h2k";
+       version = "10.7";
+       sha256 = "02j3rsj0f5ggp5nzbxw3pq0jqmkw8ik8jgnwi6fgnkm2gjwjwm3l";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          array async base containers deepseq directory filepath libBF mtl
@@ -263155,8 +263578,8 @@ self: {
      }:
      mkDerivation {
        pname = "sbvPlugin";
-       version = "9.8.1";
-       sha256 = "12l23shwygvc7xs0scbd2w98brwcx52c13kgszm2xaabfa9vsnhq";
+       version = "9.8.2";
+       sha256 = "1i1v8jhb2ms41ij1hj5bx9bhn8ig9rl45jn493i61ykv7md3i2m5";
        libraryHaskellDepends = [
          base containers ghc ghc-prim mtl sbv template-haskell
        ];
@@ -266104,8 +266527,8 @@ self: {
        pname = "semaphore-compat";
        version = "1.0.0";
        sha256 = "1qnrdqayrdazmsflh37p1igd25nh1cfgn4k1v3jwwb0w0amnyvhw";
-       revision = "1";
-       editedCabalFile = "05rhz3y90xwlac86akgyil85s0vqq5d2f924cn61l3jvmcn29mlf";
+       revision = "2";
+       editedCabalFile = "17abqbz6swzwilbfiv6rr6p8j81w4x9hr5vmx5pa6284liv61xx8";
        libraryHaskellDepends = [ base exceptions unix ];
        description = "Cross-platform abstraction for system semaphores";
        license = lib.licenses.bsd3;
@@ -270828,8 +271251,8 @@ self: {
        pname = "set-cover";
        version = "0.1.1";
        sha256 = "04jjcmjll0azz24rx91p0dp5b8ya5jc0qacr21764ri1dbkfflgw";
-       revision = "2";
-       editedCabalFile = "05kisz47xka696fwszlxkvna2zv5qczaww8mpmn1g66sdppa5kzg";
+       revision = "3";
+       editedCabalFile = "1xx2ibsqqc8kiwh8b82lgj5xigrdk8cnvqz6l57bfwn9jlrh82yg";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -276092,32 +276515,6 @@ self: {
      }:
      mkDerivation {
        pname = "skylighting";
-       version = "0.14.1";
-       sha256 = "1fyi6hw7mhm12isl9005q16b50z3594f8vb9bdf7llgzszbxa2js";
-       configureFlags = [ "-fexecutable" ];
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base binary containers skylighting-core skylighting-format-ansi
-         skylighting-format-blaze-html skylighting-format-context
-         skylighting-format-latex
-       ];
-       executableHaskellDepends = [
-         base blaze-html bytestring containers pretty-show text
-       ];
-       description = "syntax highlighting library";
-       license = lib.licenses.gpl2Only;
-       mainProgram = "skylighting";
-     }) {};
-
-  "skylighting_0_14_1_1" = callPackage
-    ({ mkDerivation, base, binary, blaze-html, bytestring, containers
-     , pretty-show, skylighting-core, skylighting-format-ansi
-     , skylighting-format-blaze-html, skylighting-format-context
-     , skylighting-format-latex, text
-     }:
-     mkDerivation {
-       pname = "skylighting";
        version = "0.14.1.1";
        sha256 = "0x1yq3891ssq7mfhcb4909a1553a2pj2rf3wr4y49q76p4r8jx3k";
        configureFlags = [ "-fexecutable" ];
@@ -276133,7 +276530,6 @@ self: {
        ];
        description = "syntax highlighting library";
        license = lib.licenses.gpl2Only;
-       hydraPlatforms = lib.platforms.none;
        mainProgram = "skylighting";
      }) {};
 
@@ -276146,36 +276542,6 @@ self: {
      }:
      mkDerivation {
        pname = "skylighting-core";
-       version = "0.14.1";
-       sha256 = "1i63id4gjvrifzqfagz16h4j395amkd7rc57my48xxgsxs20ag4b";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         aeson attoparsec base base64-bytestring binary bytestring
-         case-insensitive colour containers directory filepath mtl safe text
-         transformers utf8-string xml-conduit
-       ];
-       testHaskellDepends = [
-         aeson base bytestring containers Diff directory filepath
-         pretty-show QuickCheck tasty tasty-golden tasty-hunit
-         tasty-quickcheck text
-       ];
-       benchmarkHaskellDepends = [
-         base containers criterion filepath text
-       ];
-       description = "syntax highlighting library";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "skylighting-core_0_14_1_1" = callPackage
-    ({ mkDerivation, aeson, attoparsec, base, base64-bytestring, binary
-     , bytestring, case-insensitive, colour, containers, criterion, Diff
-     , directory, filepath, mtl, pretty-show, QuickCheck, safe, tasty
-     , tasty-golden, tasty-hunit, tasty-quickcheck, text, transformers
-     , utf8-string, xml-conduit
-     }:
-     mkDerivation {
-       pname = "skylighting-core";
        version = "0.14.1.1";
        sha256 = "112wmgyzs3x939rk1i7fs604ijs25zmbk85r98xnqf7d3hmdjxjq";
        isLibrary = true;
@@ -276195,7 +276561,6 @@ self: {
        ];
        description = "syntax highlighting library";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "skylighting-extensions" = callPackage
@@ -276273,8 +276638,8 @@ self: {
     ({ mkDerivation, base, containers, lucid, skylighting-core, text }:
      mkDerivation {
        pname = "skylighting-lucid";
-       version = "1.0.3";
-       sha256 = "04a0qh451nwkrmgi9a6vda0zpyq8q0jhm80ppfcyrdgr0wh7mhi6";
+       version = "1.0.4";
+       sha256 = "136sszph2a7m5dj21vb0c8zf6bls9gy715vlvykk2f0lzrqg288q";
        libraryHaskellDepends = [
          base containers lucid skylighting-core text
        ];
@@ -277649,17 +278014,17 @@ self: {
 
   "smtp-mail" = callPackage
     ({ mkDerivation, array, base, base16-bytestring, base64-bytestring
-     , bytestring, connection, cryptonite, filepath, memory, mime-mail
-     , network, network-bsd, text
+     , bytestring, crypton-connection, cryptonite, filepath, memory
+     , mime-mail, network, network-bsd, text
      }:
      mkDerivation {
        pname = "smtp-mail";
-       version = "0.3.0.0";
-       sha256 = "0q81m4mi43cd0f1azm6984xw3qw2s6ygszdn86j5z3g5sjj5dax4";
+       version = "0.4.0.0";
+       sha256 = "0j95vvk2hh1vp4lv59gppfnpavy3mlz4bzlr6l29glz53lmc8bn5";
        libraryHaskellDepends = [
          array base base16-bytestring base64-bytestring bytestring
-         connection cryptonite filepath memory mime-mail network network-bsd
-         text
+         crypton-connection cryptonite filepath memory mime-mail network
+         network-bsd text
        ];
        description = "Simple email sending via SMTP";
        license = lib.licenses.bsd3;
@@ -281405,15 +281770,15 @@ self: {
 
   "sphinx" = callPackage
     ({ mkDerivation, base, binary, bytestring, data-binary-ieee754
-     , network, text, text-icu, xml
+     , exceptions, network-simple, text, text-icu, xml
      }:
      mkDerivation {
        pname = "sphinx";
-       version = "0.6.0.2";
-       sha256 = "1px6lxxy7a34jni83l68nnhw40751g6pmvazplhc4wbfrv37gabn";
+       version = "0.6.1";
+       sha256 = "1pywsign7rab90jklrkqq3xh2242j2vkpnyxajy9n2wm0h0v4045";
        libraryHaskellDepends = [
-         base binary bytestring data-binary-ieee754 network text text-icu
-         xml
+         base binary bytestring data-binary-ieee754 exceptions
+         network-simple text text-icu xml
        ];
        description = "Haskell bindings to the Sphinx full-text searching daemon";
        license = lib.licenses.bsd3;
@@ -282211,26 +282576,6 @@ self: {
      }:
      mkDerivation {
        pname = "sqids";
-       version = "0.2.1.0";
-       sha256 = "16qw5mdvyhbp3m8z6wrw0qzpimnndp4qhwzqdbxzdi528wyi1b3s";
-       libraryHaskellDepends = [
-         base bytestring containers mtl text transformers
-       ];
-       testHaskellDepends = [
-         base bytestring containers hspec mtl split text transformers
-       ];
-       description = "A small library that lets you generate YouTube-looking IDs from numbers";
-       license = lib.licenses.mit;
-       hydraPlatforms = lib.platforms.none;
-       broken = true;
-     }) {};
-
-  "sqids_0_2_2_0" = callPackage
-    ({ mkDerivation, base, bytestring, containers, hspec, mtl, split
-     , text, transformers
-     }:
-     mkDerivation {
-       pname = "sqids";
        version = "0.2.2.0";
        sha256 = "137ai4fmvfygz0wv6nhzxc721va985mj35h62cda8l8925dx72iq";
        libraryHaskellDepends = [
@@ -283220,8 +283565,8 @@ self: {
      }:
      mkDerivation {
        pname = "stack";
-       version = "2.15.3";
-       sha256 = "05w6azg9p8x0vy5zhnlbl8vmcvgm5gl2zjzln6x6sgzcaqzzf0bb";
+       version = "2.15.5";
+       sha256 = "0q4jyaj8gn74i5sm5dqnwz9ppbih33jd2axbz3yijvv8m1dbn1cd";
        configureFlags = [
          "-fdisable-git-info" "-fhide-dependency-versions"
          "-fsupported-build"
@@ -283302,15 +283647,15 @@ self: {
        mainProgram = "stack-all";
      }) {};
 
-  "stack-all_0_5" = callPackage
+  "stack-all_0_5_1" = callPackage
     ({ mkDerivation, aeson, base, cached-json-file, config-ini
      , directory, extra, filepath, http-query, process, simple-cmd
      , simple-cmd-args, text
      }:
      mkDerivation {
        pname = "stack-all";
-       version = "0.5";
-       sha256 = "15mv7cgrhhpg2dmsvfkq8s54m8v2mby46jyk26kxl63spxmkynh6";
+       version = "0.5.1";
+       sha256 = "0s1kxilmzrdwf44gx7wrpxd443kyfwx435ps68hzv0qyz5q8k5nw";
        isLibrary = false;
        isExecutable = true;
        executableHaskellDepends = [
@@ -288517,6 +288862,8 @@ self: {
        pname = "structs";
        version = "0.1.9";
        sha256 = "033vx729k9jn4w4hs3kp8nlnf0ylsqgg3q4cmb7zjfpgk4bk511w";
+       revision = "1";
+       editedCabalFile = "1kqpzh7grxz0any100sk42v54idmvh27zh8k9q0yq684frmwf4mh";
        libraryHaskellDepends = [
          base deepseq ghc-prim primitive template-haskell th-abstraction
        ];
@@ -293242,8 +293589,8 @@ self: {
        pname = "tagchup";
        version = "0.4.1.2";
        sha256 = "0zlrdlb0f6dhhx163i62ljh1spr0d5gcf0c96m5z7nzq529qq792";
-       revision = "1";
-       editedCabalFile = "12rbb1y40z1yln62pdd8698zmgxhmvs1sib9lzakqmbgj3ckpclq";
+       revision = "2";
+       editedCabalFile = "0b4mkrablv5gdhvf5l1ni3qyibh9hrrscbi04jf2hxalxnk9by4b";
        isLibrary = true;
        isExecutable = true;
        enableSeparateDataOutput = true;
@@ -297473,6 +297820,8 @@ self: {
        pname = "terminfo";
        version = "0.4.1.6";
        sha256 = "0kx0q2ihnhk461hnkvy9g2nmdskqhik9vwqji8z741zy0az4mmb3";
+       revision = "1";
+       editedCabalFile = "00zkc3d6lvxkajjr6ypz2amnixngwf0ni8d1q8njxhhvr5s00yk7";
        libraryHaskellDepends = [ base ];
        librarySystemDepends = [ ncurses ];
        description = "Haskell bindings to the terminfo library";
@@ -297700,6 +298049,22 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "test-certs" = callPackage
+    ({ mkDerivation, base, bytestring, directory, filepath, HsOpenSSL
+     , hspec, QuickCheck, temporary, text, time, tls
+     }:
+     mkDerivation {
+       pname = "test-certs";
+       version = "0.1.0.2";
+       sha256 = "09n7893q67wy266mpwp5nkywjxb1jz46cm996qvy62bdc6gi17a9";
+       libraryHaskellDepends = [
+         base bytestring filepath HsOpenSSL temporary text time
+       ];
+       testHaskellDepends = [ base directory hspec QuickCheck tls ];
+       description = "create temporary SSL certificates in tests";
+       license = lib.licenses.bsd3;
+     }) {};
+
   "test-fixture" = callPackage
     ({ mkDerivation, base, data-default-class, exceptions
      , haskell-src-exts, haskell-src-meta, hspec, hspec-discover, mtl
@@ -298458,29 +298823,6 @@ self: {
      }:
      mkDerivation {
        pname = "texmath";
-       version = "0.12.8.6";
-       sha256 = "17fs83q1wb2s8j8ia5c36108wibm8pvdqhz4zcflvdivml3pm8vv";
-       isLibrary = true;
-       isExecutable = true;
-       libraryHaskellDepends = [
-         base containers mtl pandoc-types parsec split syb text
-         typst-symbols xml
-       ];
-       testHaskellDepends = [
-         base bytestring directory filepath pretty-show tagged tasty
-         tasty-golden text xml
-       ];
-       description = "Conversion between math formats";
-       license = lib.licenses.gpl2Only;
-     }) {};
-
-  "texmath_0_12_8_7" = callPackage
-    ({ mkDerivation, base, bytestring, containers, directory, filepath
-     , mtl, pandoc-types, parsec, pretty-show, split, syb, tagged, tasty
-     , tasty-golden, text, typst-symbols, xml
-     }:
-     mkDerivation {
-       pname = "texmath";
        version = "0.12.8.7";
        sha256 = "0i3ngkq87y6lvgfd6ky4zya6qz5n70ypb9yjmxzp7d6844p36g6k";
        isLibrary = true;
@@ -298495,7 +298837,6 @@ self: {
        ];
        description = "Conversion between math formats";
        license = lib.licenses.gpl2Only;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "texrunner" = callPackage
@@ -299378,8 +299719,8 @@ self: {
        pname = "text-show";
        version = "3.10.4";
        sha256 = "0kjpl9wbvn5zcpwjyrvdnkcp260rizff598cmqh4py8225fl5bmz";
-       revision = "2";
-       editedCabalFile = "1wwpgl9y775604ypx86p8kya4xsin7h9bl21b6ris74k6lnabsrz";
+       revision = "3";
+       editedCabalFile = "0zsds6226kymk9a6jq9hc45knp3rjwc3rmiar0kccjzd6khf7s9c";
        libraryHaskellDepends = [
          array base base-compat-batteries bifunctors bytestring
          bytestring-builder containers generic-deriving ghc-boot-th ghc-prim
@@ -299799,14 +300140,12 @@ self: {
        license = lib.licenses.isc;
      }) {};
 
-  "th-abstraction_0_6_0_0" = callPackage
+  "th-abstraction_0_7_0_0" = callPackage
     ({ mkDerivation, base, containers, ghc-prim, template-haskell }:
      mkDerivation {
        pname = "th-abstraction";
-       version = "0.6.0.0";
-       sha256 = "0c0sqn9bz2rgrqdfkricbs2p6vn7is89qcpqw7hvc00c3z56xsk9";
-       revision = "1";
-       editedCabalFile = "0z7cn1qcnkslajjqcma23sh0qglbpvb5y9bgbzfzqal1lak9z5fq";
+       version = "0.7.0.0";
+       sha256 = "0897na3f8nj59ax1gv0a46rrrz8i4ad0id6b3vxav91g5xhlr1dj";
        libraryHaskellDepends = [
          base containers ghc-prim template-haskell
        ];
@@ -299878,10 +300217,8 @@ self: {
      }:
      mkDerivation {
        pname = "th-compat";
-       version = "0.1.4";
-       sha256 = "1f5ssi24mnhmmi91dl5ddg2jwci6akwlznqggf56nyxl9b0pmyfq";
-       revision = "4";
-       editedCabalFile = "0drd28785137wfwy2say899qviz5ck2nrnv85lyvihf1xiwwdwpm";
+       version = "0.1.5";
+       sha256 = "07ia72hl6c1rqx1gl3zpvig7d8sw2ssbgf4wq1ipgbdgqypmzxc1";
        libraryHaskellDepends = [ base template-haskell ];
        testHaskellDepends = [
          base base-compat hspec mtl template-haskell
@@ -299937,6 +300274,26 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "th-deepstrict" = callPackage
+    ({ mkDerivation, base, bytestring, containers, directory, mtl
+     , tasty, tasty-golden, template-haskell, th-abstraction, th-orphans
+     , unordered-containers
+     }:
+     mkDerivation {
+       pname = "th-deepstrict";
+       version = "0.1.1.0";
+       sha256 = "0y0wlgzsm44sbwbchg4pqyb0s398aqjmd1awgd019bp29gzkd1hp";
+       libraryHaskellDepends = [
+         base containers mtl template-haskell th-abstraction th-orphans
+       ];
+       testHaskellDepends = [
+         base bytestring containers directory tasty tasty-golden
+         template-haskell unordered-containers
+       ];
+       description = "Check that datatypes are deep strict using Template Haskell";
+       license = lib.licenses.bsd3;
+     }) {};
+
   "th-desugar" = callPackage
     ({ mkDerivation, base, containers, ghc-prim, hspec, HUnit, mtl
      , ordered-containers, syb, template-haskell, th-abstraction
@@ -299969,6 +300326,8 @@ self: {
        pname = "th-desugar";
        version = "1.16";
        sha256 = "0442hqc2b0a1rqcwdlng63bfqa80b2sws414lr08q9v1sgh8gjsf";
+       revision = "1";
+       editedCabalFile = "18qjikbyjzbhickq11hrn5ill89jdfdzbdx3q2s3630k4g8g2qzi";
        libraryHaskellDepends = [
          base containers ghc-prim mtl ordered-containers syb
          template-haskell th-abstraction th-orphans transformers-compat
@@ -300017,8 +300376,8 @@ self: {
        pname = "th-expand-syns";
        version = "0.4.11.0";
        sha256 = "1l7pkc16vnjgiam31745av14j7ngnr5mqmgp77xwd3h7fg75kkca";
-       revision = "2";
-       editedCabalFile = "08g28p57w0i61x2f2036aqxp4ilhchy7h3dbd0ncbq17ba6x9hfi";
+       revision = "3";
+       editedCabalFile = "1wgylchq9q30yf1f19rr6pvh7mkpwzdy4ij2r7174fjb1wkgnnx7";
        libraryHaskellDepends = [
          base containers syb template-haskell th-abstraction
        ];
@@ -300207,6 +300566,8 @@ self: {
        pname = "th-lift";
        version = "0.8.4";
        sha256 = "06x6njyn6p6shwj5n1znq017vwalr867ziwbwzimz9jbilipgigr";
+       revision = "2";
+       editedCabalFile = "1cwc4q408b9pina7069hi8v3m9nqa5c6sm8lamr5ssialiwchcig";
        libraryHaskellDepends = [
          base ghc-prim template-haskell th-abstraction
        ];
@@ -303305,7 +303666,7 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
-  "tls_2_0_1" = callPackage
+  "tls_2_0_2" = callPackage
     ({ mkDerivation, asn1-encoding, asn1-types, async, base
      , base16-bytestring, bytestring, cereal, crypton, crypton-x509
      , crypton-x509-store, crypton-x509-validation, data-default-class
@@ -303314,10 +303675,8 @@ self: {
      }:
      mkDerivation {
        pname = "tls";
-       version = "2.0.1";
-       sha256 = "1176gdzhwbnp3i1dp555la9ch5kgr6k13zn5as6d172a76q8qrcq";
-       revision = "1";
-       editedCabalFile = "0nrzk8yjbnzw1d4cjw03hayny1jx99a6y131903i5jdfafrqsla0";
+       version = "2.0.2";
+       sha256 = "188m4p63h3wl0rjh8w99amyl6y0r3camk76f5ivnd56vxf3cx74g";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -304221,6 +304580,8 @@ self: {
        pname = "toml-parser";
        version = "2.0.0.0";
        sha256 = "1nvrmlgmdvm7p16fywds4wnpyavyq7sk0p3zlqy9dci33qb3kzc7";
+       revision = "1";
+       editedCabalFile = "0dkwkz9mq6y3cs7c4knifxqcbgjd48ji0qh4062kql10gdm9glm8";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -307720,6 +308081,17 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "tuplehash-utils" = callPackage
+    ({ mkDerivation, base, bytestring, integer-logarithms }:
+     mkDerivation {
+       pname = "tuplehash-utils";
+       version = "0.0.0.0";
+       sha256 = "0djr0hb2ssagv6i9fkgry0v1kd6lb19ha7x2nzwham7kmjgjs4gx";
+       libraryHaskellDepends = [ base bytestring integer-logarithms ];
+       description = "Left Encode and friends from SHA-3's TupleHash";
+       license = lib.licenses.asl20;
+     }) {};
+
   "tupleinstances" = callPackage
     ({ mkDerivation, base, template-haskell }:
      mkDerivation {
@@ -310346,6 +310718,18 @@ self: {
        license = lib.licenses.mit;
      }) {};
 
+  "typst-symbols_0_1_6" = callPackage
+    ({ mkDerivation, base, text }:
+     mkDerivation {
+       pname = "typst-symbols";
+       version = "0.1.6";
+       sha256 = "17a2grflk67vs68b2pxygvk7p50rj9fb3ri7fcwa19j9jnhg4zwl";
+       libraryHaskellDepends = [ base text ];
+       description = "Symbol and emoji lookup for typst language";
+       license = lib.licenses.mit;
+       hydraPlatforms = lib.platforms.none;
+     }) {};
+
   "tyro" = callPackage
     ({ mkDerivation, aeson, base, bytestring, HUnit, protolude
      , reflection, singletons, test-framework, test-framework-hunit
@@ -311166,8 +311550,8 @@ self: {
      }:
      mkDerivation {
        pname = "unbound-generics";
-       version = "0.4.3";
-       sha256 = "06mafwa6sp0b2vb1dlpjp9bsy6h8f01qrq58c3gwvcy5lrz4hwi4";
+       version = "0.4.4";
+       sha256 = "1iihh60m2zsl961khxcp82i2i47y35yhxh8835p4f82r487zpdlj";
        libraryHaskellDepends = [
          ansi-wl-pprint base containers contravariant deepseq exceptions mtl
          profunctors template-haskell transformers transformers-compat
@@ -311616,6 +312000,8 @@ self: {
        pname = "unicode";
        version = "0.0.1.1";
        sha256 = "1hgqnplpgaw0pwz0lfr59vmljcf4l5b4ynrhdcic94g18lpsmnvg";
+       revision = "1";
+       editedCabalFile = "00r1lx5zph98p7mw70hh0ibc2ns49qm6a1wnmv6lddi4sqjg7d6i";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [ base containers semigroups ];
@@ -312961,32 +313347,6 @@ self: {
      }:
      mkDerivation {
        pname = "universum";
-       version = "1.8.2";
-       sha256 = "1dhynivkbg59b5m2m90dwxz6wk00im3gihyvigrcqazpfhq4j845";
-       libraryHaskellDepends = [
-         base bytestring containers deepseq ghc-prim hashable microlens
-         microlens-mtl mtl safe-exceptions stm text transformers
-         unordered-containers utf8-string vector
-       ];
-       testHaskellDepends = [
-         base bytestring hedgehog tasty tasty-hedgehog text
-       ];
-       testToolDepends = [ tasty-discover ];
-       benchmarkHaskellDepends = [
-         base containers gauge text unordered-containers
-       ];
-       description = "Custom prelude used in Serokell";
-       license = lib.licenses.mit;
-     }) {};
-
-  "universum_1_8_2_1" = callPackage
-    ({ mkDerivation, base, bytestring, containers, deepseq, gauge
-     , ghc-prim, hashable, hedgehog, microlens, microlens-mtl, mtl
-     , safe-exceptions, stm, tasty, tasty-discover, tasty-hedgehog, text
-     , transformers, unordered-containers, utf8-string, vector
-     }:
-     mkDerivation {
-       pname = "universum";
        version = "1.8.2.1";
        sha256 = "06kv2p7792r4d7nsq1wx7vw5jy72fjacc2jwmkqfanaaapdr27q9";
        libraryHaskellDepends = [
@@ -313003,7 +313363,6 @@ self: {
        ];
        description = "Custom prelude used in Serokell";
        license = lib.licenses.mit;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "unix_2_8_5_0" = callPackage
@@ -315097,8 +315456,8 @@ self: {
      }:
      mkDerivation {
        pname = "utxorpc";
-       version = "0.0.4.1";
-       sha256 = "08xn1jlc3q466cz63j1klkr05shnb3hicrz5i8fpf05cwf88ajl2";
+       version = "0.0.4.4";
+       sha256 = "0is31qp6vbbbs4qnbbyh2wlcwrh2jkjq4ffml2nb4sbb47cl459z";
        libraryHaskellDepends = [
          base proto-lens proto-lens-protobuf-types proto-lens-runtime
        ];
@@ -317820,25 +318179,6 @@ self: {
      }:
      mkDerivation {
        pname = "versions";
-       version = "6.0.5";
-       sha256 = "0cigjr3jmh3gn02daxan54g57rrq8xirackcz7ri3ziv3fy4ffa1";
-       libraryHaskellDepends = [
-         base deepseq hashable megaparsec parser-combinators
-         template-haskell text
-       ];
-       testHaskellDepends = [
-         base megaparsec microlens tasty tasty-hunit template-haskell text
-       ];
-       description = "Types and parsers for software version numbers";
-       license = lib.licenses.bsd3;
-     }) {};
-
-  "versions_6_0_6" = callPackage
-    ({ mkDerivation, base, deepseq, hashable, megaparsec, microlens
-     , parser-combinators, tasty, tasty-hunit, template-haskell, text
-     }:
-     mkDerivation {
-       pname = "versions";
        version = "6.0.6";
        sha256 = "0w73gcg2yyrx5b6msynmpa05q2q1n4qaa59n0l21glz28k7lzyma";
        libraryHaskellDepends = [
@@ -317850,7 +318190,6 @@ self: {
        ];
        description = "Types and parsers for software version numbers";
        license = lib.licenses.bsd3;
-       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "vertexenum" = callPackage
@@ -320350,8 +320689,8 @@ self: {
      }:
      mkDerivation {
        pname = "wai-middleware-delegate";
-       version = "0.1.4.0";
-       sha256 = "0fx6mskb48gmnhhc35ldxl9sgd3hkcy3yb7nmqlfdgmhin9759pv";
+       version = "0.1.4.1";
+       sha256 = "0hc0x6w2j2incwn3nd253hyq27qi6f4m2h821vygg5n6h20rqnvz";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          async base blaze-builder bytestring case-insensitive conduit
@@ -321844,15 +322183,16 @@ self: {
      }) {};
 
   "waterfall-cad" = callPackage
-    ({ mkDerivation, base, lattices, lens, linear, opencascade-hs
-     , primitive, resourcet
+    ({ mkDerivation, base, filepath, lattices, lens, linear
+     , opencascade-hs, primitive, resourcet
      }:
      mkDerivation {
        pname = "waterfall-cad";
-       version = "0.2.1.0";
-       sha256 = "044si8pxsjryl8j34haqmly0g4pan2j25b8p7699ywh2c07glwb2";
+       version = "0.2.2.0";
+       sha256 = "1il6s1mg9k9dhqcwj49a88p0z9zbwi65b2lvsg199rn6klv1jn36";
        libraryHaskellDepends = [
-         base lattices lens linear opencascade-hs primitive resourcet
+         base filepath lattices lens linear opencascade-hs primitive
+         resourcet
        ];
        description = "Declarative CAD/Solid Modeling Library";
        license = lib.licenses.lgpl21Only;
@@ -321861,19 +322201,21 @@ self: {
 
   "waterfall-cad-examples" = callPackage
     ({ mkDerivation, base, lens, linear, opencascade-hs
-     , optparse-applicative, waterfall-cad
+     , optparse-applicative, parsec, parser-combinators, waterfall-cad
      }:
      mkDerivation {
        pname = "waterfall-cad-examples";
-       version = "0.2.1.0";
-       sha256 = "0b6kk1rj9yxylc1578m7ydal046mcxcvska6r4j7ksa3v8icjvga";
+       version = "0.2.2.0";
+       sha256 = "0gy9iza13l03h381sm4riccjpn3zbpgy60d6fqhbj5rw1qisad2x";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
-         base lens linear opencascade-hs optparse-applicative waterfall-cad
+         base lens linear opencascade-hs optparse-applicative parsec
+         parser-combinators waterfall-cad
        ];
        executableHaskellDepends = [
-         base lens linear opencascade-hs optparse-applicative waterfall-cad
+         base lens linear opencascade-hs optparse-applicative parsec
+         parser-combinators waterfall-cad
        ];
        description = "Examples for Waterfall CAD, a Declarative CAD/Solid Modeling Library";
        license = lib.licenses.lgpl21Only;
@@ -323096,18 +323438,17 @@ self: {
 
   "webgear-core" = callPackage
     ({ mkDerivation, arrows, base, binary, bytestring, case-insensitive
-     , cookie, filepath, http-api-data, http-media, http-types, jose
-     , mime-types, network, tagged, template-haskell, text, wai
-     , wai-extra
+     , cookie, http-api-data, http-media, http-types, jose, network
+     , tagged, template-haskell, text, wai, wai-app-static, wai-extra
      }:
      mkDerivation {
        pname = "webgear-core";
-       version = "1.1.1";
-       sha256 = "1fndgzkfcn55b9kwx6l3hs2489q1zj6jdk34y3j4x5y8vgf42i7f";
+       version = "1.2.0";
+       sha256 = "03qp9x4f1hkv6swlrwp6kay104alapqqn5wvswykw6ji1wja0wj2";
        libraryHaskellDepends = [
-         arrows base binary bytestring case-insensitive cookie filepath
-         http-api-data http-media http-types jose mime-types network tagged
-         template-haskell text wai wai-extra
+         arrows base binary bytestring case-insensitive cookie http-api-data
+         http-media http-types jose network tagged template-haskell text wai
+         wai-app-static wai-extra
        ];
        description = "Composable, type-safe library to build HTTP APIs";
        license = lib.licenses.mpl20;
@@ -323119,8 +323460,8 @@ self: {
      }:
      mkDerivation {
        pname = "webgear-openapi";
-       version = "1.1.1";
-       sha256 = "1dw4cy4r5fdg9lay7xgw8grpgxij98chi24ckjl3dszyyqk26hgr";
+       version = "1.2.0";
+       sha256 = "0ym3jvkww6qf5nkrhb7wqp8maw6d03yc6835wp8wva8cj5cf9hy1";
        libraryHaskellDepends = [
          arrows base http-media http-types insert-ordered-containers lens
          openapi3 text webgear-core
@@ -323131,21 +323472,19 @@ self: {
 
   "webgear-server" = callPackage
     ({ mkDerivation, aeson, arrows, base, base64-bytestring, binary
-     , bytestring, bytestring-conversion, cookie, http-api-data
-     , http-media, http-types, jose, monad-time, mtl, QuickCheck
-     , quickcheck-instances, resourcet, tasty, tasty-hunit
-     , tasty-quickcheck, text, text-conversions, wai, wai-extra
-     , webgear-core
+     , bytestring, cookie, http-api-data, http-media, http-types, jose
+     , monad-time, mtl, QuickCheck, quickcheck-instances, resourcet
+     , tasty, tasty-hunit, tasty-quickcheck, text, text-conversions, wai
+     , wai-extra, webgear-core
      }:
      mkDerivation {
        pname = "webgear-server";
-       version = "1.1.1";
-       sha256 = "1j7w37ssikqb8jlsnwyg3q03c2krrlv7kj7y3zdykms4y727bw3q";
+       version = "1.2.0";
+       sha256 = "1pc46dcx3jndc1jaf1bbbhs1z20hvspkiq86y3b60i2vpcbdhwn0";
        libraryHaskellDepends = [
-         aeson arrows base base64-bytestring binary bytestring
-         bytestring-conversion cookie http-api-data http-media http-types
-         jose monad-time mtl resourcet text text-conversions wai wai-extra
-         webgear-core
+         aeson arrows base base64-bytestring binary bytestring cookie
+         http-api-data http-media http-types jose monad-time mtl resourcet
+         text text-conversions wai wai-extra webgear-core
        ];
        testHaskellDepends = [
          base base64-bytestring bytestring http-types QuickCheck
@@ -323162,8 +323501,8 @@ self: {
      }:
      mkDerivation {
        pname = "webgear-swagger";
-       version = "1.1.1";
-       sha256 = "0s1hdw0inwc3a9r6y3jczhwc68akwri14x9kqi3zwbmxb5z0i8aw";
+       version = "1.2.0";
+       sha256 = "1l1cgixhh8b7myypbr9anv6zbckh9x4h3a5lrwv7znh616n9440a";
        libraryHaskellDepends = [
          arrows base http-types insert-ordered-containers lens swagger2 text
          webgear-core
@@ -323173,15 +323512,16 @@ self: {
      }) {};
 
   "webgear-swagger-ui" = callPackage
-    ({ mkDerivation, base, bytestring, file-embed, http-types
-     , mime-types, text, webgear-core
+    ({ mkDerivation, base, bytestring, file-embed, http-types, text
+     , wai-app-static, webgear-core
      }:
      mkDerivation {
        pname = "webgear-swagger-ui";
-       version = "1.1.1";
-       sha256 = "0x9clbhvh2ak4lb4kamww37x8pgkr0svad4272a47g1ka9jabw9c";
+       version = "1.2.0";
+       sha256 = "1a40blmnwx1xia8r6dhk710mabxnqf31cqh0rhjzjlwsv96rsk9a";
        libraryHaskellDepends = [
-         base bytestring file-embed http-types mime-types text webgear-core
+         base bytestring file-embed http-types text wai-app-static
+         webgear-core
        ];
        description = "Host swagger UI based on WebGear API specifications";
        license = lib.licenses.mpl20;
@@ -324692,8 +325032,8 @@ self: {
      }:
      mkDerivation {
        pname = "witch";
-       version = "1.2.0.4";
-       sha256 = "0yif1i7i83y51ky7j085b1sq9cx3gjn4vdcb8zpjwrzicw9m2nvz";
+       version = "1.2.1.0";
+       sha256 = "0kwg2qdjl3hfg3y7qi8lqsnrvfc80w1mkkwi4ikay8mzkp61snb3";
        libraryHaskellDepends = [
          base bytestring containers tagged template-haskell text time
        ];
@@ -326914,8 +327254,8 @@ self: {
      }:
      mkDerivation {
        pname = "x509-ocsp";
-       version = "0.1.1.0";
-       sha256 = "09crd65swq1qw7wyn87xmfwdm3rqn4pcaz09hhdvv8v9vq9n734g";
+       version = "0.2.0.0";
+       sha256 = "0vfk58yyk08w1752addpp4s2bn4d9395k7ajd5jal6wab400qgk6";
        enableSeparateDataOutput = true;
        libraryHaskellDepends = [
          asn1-encoding asn1-types base bytestring cryptohash-sha1
@@ -327437,8 +327777,8 @@ self: {
     ({ mkDerivation, array, base, directory, mtl, old-time, process }:
      mkDerivation {
        pname = "xilinx-lava";
-       version = "5.0.1.9";
-       sha256 = "13g44483bcgbfi3366m7l49z40prvr2abml6h6vcjbjnc575cs37";
+       version = "5.0.2.0";
+       sha256 = "0dznx1l9xrw9pjcyj0mp7x7j11l5k1dm57mgppjn153lj9dag4kl";
        isLibrary = true;
        isExecutable = true;
        libraryHaskellDepends = [
@@ -327714,6 +328054,8 @@ self: {
        pname = "xml-basic";
        version = "0.1.3.2";
        sha256 = "0kj26v20rakmmxk0gf6dccmxkcv39mnpcj9dfx45yr27a53b8170";
+       revision = "1";
+       editedCabalFile = "1nb63asl2sp9cy4hgmlz6n4vaylsssxqk42507r5hq9jjqss7rc8";
        libraryHaskellDepends = [
          base containers data-accessor explicit-exception semigroups
          utility-ht
@@ -329406,6 +329748,8 @@ self: {
        pname = "xxhash";
        version = "0.0.2";
        sha256 = "09rgxchqnaalpjbgy20y1g5p6g9asfwfj37px6qpl6ypchawfp2g";
+       revision = "2";
+       editedCabalFile = "0g5j3fb5l0zr9c3vbn63g2cdib33s90rani9yhgsr0c0p0jv7maz";
        libraryHaskellDepends = [ base bytestring crypto-api tagged ];
        testHaskellDepends = [ base bytestring hspec QuickCheck ];
        benchmarkHaskellDepends = [
@@ -329435,6 +329779,28 @@ self: {
        license = lib.licenses.bsd3;
      }) {};
 
+  "xxhash-ffi_0_3" = callPackage
+    ({ mkDerivation, base, bytestring, deepseq, digest, hashable
+     , libxxhash, murmur-hash, QuickCheck, tasty, tasty-bench
+     , tasty-quickcheck, text
+     }:
+     mkDerivation {
+       pname = "xxhash-ffi";
+       version = "0.3";
+       sha256 = "0cqayny8g0lbafysbyzw43jnf3mijx6smlpzwsfdv3xc3wk42v4r";
+       libraryHaskellDepends = [ base bytestring hashable text ];
+       libraryPkgconfigDepends = [ libxxhash ];
+       testHaskellDepends = [
+         base bytestring hashable QuickCheck tasty tasty-quickcheck text
+       ];
+       benchmarkHaskellDepends = [
+         base bytestring deepseq digest hashable murmur-hash tasty-bench
+       ];
+       description = "Bindings and high-level helpers for xxHash";
+       license = lib.licenses.bsd3;
+       hydraPlatforms = lib.platforms.none;
+     }) {libxxhash = null;};
+
   "y0l0bot" = callPackage
     ({ mkDerivation, base, bytestring, containers, mtl, network
      , old-locale, old-time, safe, split, text, time
@@ -330592,17 +330958,19 @@ self: {
 
   "yaya" = callPackage
     ({ mkDerivation, base, Cabal, cabal-doctest, comonad, doctest
-     , either, free, kan-extensions, lens, profunctors, strict
-     , template-haskell, th-abstraction, transformers
+     , either, foldable1-classes-compat, free, kan-extensions, lens
+     , profunctors, strict, template-haskell, th-abstraction
+     , transformers
      }:
      mkDerivation {
        pname = "yaya";
-       version = "0.5.2.1";
-       sha256 = "01j92jjcq44fhv723rsmhn5qizvdvq1xaa3p0qljzc34z1910i83";
+       version = "0.6.0.0";
+       sha256 = "0id4h41rpjm668fhwvv9dcw1733rrnqs0v00vg6m7h11r8nylzs1";
        setupHaskellDepends = [ base Cabal cabal-doctest ];
        libraryHaskellDepends = [
-         base comonad either free kan-extensions lens profunctors strict
-         template-haskell th-abstraction transformers
+         base comonad either foldable1-classes-compat free kan-extensions
+         lens profunctors strict template-haskell th-abstraction
+         transformers
        ];
        testHaskellDepends = [ base doctest ];
        description = "Total recursion schemes";
@@ -330615,8 +330983,8 @@ self: {
      }:
      mkDerivation {
        pname = "yaya-containers";
-       version = "0.1.0.2";
-       sha256 = "1ylg2n36jl96iq84ljj6pg7m454mhdf6ffql9jby2cpmz3291i3m";
+       version = "0.1.1.0";
+       sha256 = "14knwk5sk6h76iy97kxa3s95px3bv2ns9xmcwmhbcrsaf338dyrz";
        setupHaskellDepends = [ base Cabal cabal-doctest ];
        libraryHaskellDepends = [ base containers yaya ];
        testHaskellDepends = [ base doctest ];
@@ -330630,8 +330998,8 @@ self: {
      }:
      mkDerivation {
        pname = "yaya-hedgehog";
-       version = "0.2.1.3";
-       sha256 = "1q52rf9ay3x8q0ynrg2vxkld7h2c9rg4laq60hylkibmvlxvwpww";
+       version = "0.3.0.0";
+       sha256 = "08gyij5hlgmcv77gzzcsjak8aw7c7vmnfkrl8f0m6isfdb0lq1gr";
        setupHaskellDepends = [ base Cabal cabal-doctest ];
        libraryHaskellDepends = [ base deriving-compat hedgehog yaya ];
        testHaskellDepends = [
@@ -330643,14 +331011,14 @@ self: {
 
   "yaya-quickcheck" = callPackage
     ({ mkDerivation, base, Cabal, cabal-doctest, doctest, QuickCheck
-     , yaya
+     , splitmix, yaya
      }:
      mkDerivation {
        pname = "yaya-quickcheck";
-       version = "0.1.0.2";
-       sha256 = "065j2vwjh8gsbb7n650fl7gg1njmw32kgi499mxfp1gz3xbmcjcf";
+       version = "0.2.0.0";
+       sha256 = "0ihxrf8n2jyiz4v82pnjscii8vm8zsj3n9sbyjrdcn5kx66myaq3";
        setupHaskellDepends = [ base Cabal cabal-doctest ];
-       libraryHaskellDepends = [ base QuickCheck yaya ];
+       libraryHaskellDepends = [ base QuickCheck splitmix yaya ];
        testHaskellDepends = [ base doctest ];
        description = "QuickCheck testing support for the Yaya recursion scheme library";
        license = lib.licenses.agpl3Plus;
@@ -330681,8 +331049,8 @@ self: {
      }:
      mkDerivation {
        pname = "yaya-unsafe";
-       version = "0.3.3.1";
-       sha256 = "07qiyz66a5zq4ksn8j46m6p6r4kqn9p1l2b7cwgwjhhw52c4128s";
+       version = "0.4.0.0";
+       sha256 = "11g00zsjzrcm4g5b1q8xz5vhzakxqjgl1yz0z0cfnndqmh720s3n";
        setupHaskellDepends = [ base Cabal cabal-doctest ];
        libraryHaskellDepends = [ base bifunctors comonad free lens yaya ];
        testHaskellDepends = [ base doctest hedgehog yaya yaya-hedgehog ];
diff --git a/pkgs/development/interpreters/bats/libraries.nix b/pkgs/development/interpreters/bats/libraries.nix
index 9ee0942e7e69f..9f3f63609fd64 100644
--- a/pkgs/development/interpreters/bats/libraries.nix
+++ b/pkgs/development/interpreters/bats/libraries.nix
@@ -21,7 +21,7 @@
       platforms = lib.platforms.all;
       homepage = "https://github.com/bats-core/bats-assert";
       license = lib.licenses.cc0;
-      maintainers = with lib.maintainers; [ infinisil ];
+      maintainers = [ ];
     };
   });
 
@@ -47,7 +47,7 @@
       platforms = lib.platforms.all;
       homepage = "https://github.com/bats-core/bats-file";
       license = lib.licenses.cc0;
-      maintainers = with lib.maintainers; [ infinisil ];
+      maintainers = [ ];
     };
   });
 
@@ -98,7 +98,7 @@
       platforms = lib.platforms.all;
       homepage = "https://github.com/bats-core/bats-support";
       license = lib.licenses.cc0;
-      maintainers = with lib.maintainers; [ infinisil ];
+      maintainers = [ ];
     };
   });
 }
diff --git a/pkgs/development/interpreters/cling/default.nix b/pkgs/development/interpreters/cling/default.nix
index ed204c8863f67..2f3327b0554a0 100644
--- a/pkgs/development/interpreters/cling/default.nix
+++ b/pkgs/development/interpreters/cling/default.nix
@@ -1,10 +1,9 @@
 { cmake
 , fetchFromGitHub
-, fetchgit
 , git
 , lib
 , libffi
-, llvmPackages_9
+, llvmPackages_13
 , makeWrapper
 , ncurses
 , python3
@@ -28,52 +27,44 @@
 
 # Build with libc++ (LLVM) rather than stdlibc++ (GCC).
 # This is experimental and not all features work.
-, useLLVMLibcxx ? false
+, useLLVMLibcxx ? clangStdenv.isDarwin
 }:
 
 let
   stdenv = clangStdenv;
 
-  # The LLVM 9 headers have a couple bugs we need to patch
-  fixedLlvmDev = runCommand "llvm-dev-${llvmPackages_9.llvm.version}" { buildInputs = [git]; } ''
-    mkdir $out
-    cp -r ${llvmPackages_9.llvm.dev}/include $out
-    cd $out
-    chmod -R u+w include
-    git apply ${./fix-llvm-include.patch}
-  '';
+  # The patched clang lives in the LLVM megarepo
+  clangSrc = fetchFromGitHub {
+    owner = "root-project";
+    repo = "llvm-project";
+    # cling-llvm13 branch
+    rev = "3610201fbe0352a63efb5cb45f4ea4987702c735";
+    sha256 = "sha256-Cb7BvV7yobG+mkaYe7zD2KcnPvm8/vmVATNWssklXyk=";
+    sparseCheckout = ["clang"];
+  };
 
   unwrapped = stdenv.mkDerivation rec {
     pname = "cling-unwrapped";
-    version = "0.9";
+    version = "1.0";
 
-    src = fetchgit {
-      url = "http://root.cern/git/clang.git";
-      rev = "cling-v0.9";
-      sha256 = "sha256-ft1NUIclSiZ9lN3Z3DJCWA0U9q/K1M0TKkZr+PjsFYk=";
-    };
+    src = "${clangSrc}/clang";
 
     clingSrc = fetchFromGitHub {
       owner = "root-project";
       repo = "cling";
-      rev = "v0.9";
-      sha256 = "0wx3fi19wfjcph5kclf8108i436y79ddwakrcf0lgxnnxhdjyd29";
+      rev = "v${version}";
+      sha256 = "sha256-Ye8EINzt+dyNvUIRydACXzb/xEPLm0YSkz08Xxw3xp4=";
     };
 
     prePatch = ''
       echo "add_llvm_external_project(cling)" >> tools/CMakeLists.txt
 
-      cp -r $clingSrc ./tools/cling
-      chmod -R a+w ./tools/cling
+      cp -r $clingSrc tools/cling
+      chmod -R a+w tools/cling
     '';
 
     patches = [
       ./no-clang-cpp.patch
-
-      # https://github.com/root-project/root/commit/286d96b12aad8688b9d8e4b3b5df843dcfb716a8
-      ./fix-llvm-dylib-usage.patch
-
-      ./force-install-cling-targets.patch
     ];
 
     nativeBuildInputs = [ python3 git cmake ];
@@ -82,12 +73,12 @@ let
     strictDeps = true;
 
     cmakeFlags = [
-      "-DLLVM_BINARY_DIR=${llvmPackages_9.llvm.out}"
-      "-DLLVM_CONFIG=${llvmPackages_9.llvm.dev}/bin/llvm-config"
-      "-DLLVM_LIBRARY_DIR=${llvmPackages_9.llvm.lib}/lib"
-      "-DLLVM_MAIN_INCLUDE_DIR=${fixedLlvmDev}/include"
-      "-DLLVM_TABLEGEN_EXE=${llvmPackages_9.llvm.out}/bin/llvm-tblgen"
-      "-DLLVM_TOOLS_BINARY_DIR=${llvmPackages_9.llvm.out}/bin"
+      "-DLLVM_BINARY_DIR=${llvmPackages_13.llvm.out}"
+      "-DLLVM_CONFIG=${llvmPackages_13.llvm.dev}/bin/llvm-config"
+      "-DLLVM_LIBRARY_DIR=${llvmPackages_13.llvm.lib}/lib"
+      "-DLLVM_MAIN_INCLUDE_DIR=${llvmPackages_13.llvm.dev}/include"
+      "-DLLVM_TABLEGEN_EXE=${llvmPackages_13.llvm.out}/bin/llvm-tblgen"
+      "-DLLVM_TOOLS_BINARY_DIR=${llvmPackages_13.llvm.out}/bin"
       "-DLLVM_BUILD_TOOLS=Off"
       "-DLLVM_TOOL_CLING_BUILD=ON"
 
@@ -126,12 +117,12 @@ let
 
   # Runtime flags for the C++ standard library
   cxxFlags = if useLLVMLibcxx then [
-    "-I" "${lib.getDev llvmPackages_9.libcxx}/include/c++/v1"
-    "-L" "${llvmPackages_9.libcxx}/lib"
-    "-l" "${llvmPackages_9.libcxx}/lib/libc++.so"
+    "-I" "${lib.getDev llvmPackages_13.libcxx}/include/c++/v1"
+    "-L" "${llvmPackages_13.libcxx}/lib"
+    "-l" "${llvmPackages_13.libcxx}/lib/libc++${stdenv.hostPlatform.extensions.sharedLibrary}"
   ] else [
     "-I" "${gcc-unwrapped}/include/c++/${gcc-unwrapped.version}"
-    "-I" "${gcc-unwrapped}/include/c++/${gcc-unwrapped.version}/x86_64-unknown-linux-gnu"
+    "-I" "${gcc-unwrapped}/include/c++/${gcc-unwrapped.version}/${stdenv.hostPlatform.config}"
   ];
 
   # The flags passed to the wrapped cling should
@@ -149,7 +140,9 @@ let
     "-nostdinc"
     "-nostdinc++"
 
-    "-isystem" "${lib.getLib unwrapped}/lib/clang/9.0.1/include"
+    "-resource-dir" "${llvmPackages_13.llvm.lib}/lib"
+
+    "-isystem" "${lib.getLib unwrapped}/lib/clang/${llvmPackages_13.clang.version}/include"
   ]
   ++ cxxFlags
   ++ [
@@ -162,11 +155,41 @@ let
 
 in
 
-runCommand "cling-${unwrapped.version}" {
+stdenv.mkDerivation {
+  pname = "cling";
+  version = unwrapped.version;
+
   nativeBuildInputs = [ makeWrapper ];
   inherit unwrapped flags;
   inherit (unwrapped) meta;
-} ''
-  makeWrapper $unwrapped/bin/cling $out/bin/cling \
-    --add-flags "$flags"
-''
+
+  dontUnpack = true;
+  dontConfigure = true;
+
+  buildPhase = ''
+    runHook preBuild
+
+    makeWrapper $unwrapped/bin/cling $out/bin/cling \
+      --add-flags "$flags"
+
+    runHook postBuild
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    runHook preCheck
+
+    output=$($out/bin/cling <<EOF
+    #include <iostream>
+    std::cout << "hello world" << std::endl
+    EOF
+    )
+
+    echo "$output" | grep -q "Type C++ code and press enter to run it"
+    echo "$output" | grep -q "hello world"
+
+    runHook postCheck
+  '';
+
+  dontInstall = true;
+}
diff --git a/pkgs/development/interpreters/cling/fix-llvm-dylib-usage.patch b/pkgs/development/interpreters/cling/fix-llvm-dylib-usage.patch
deleted file mode 100644
index df1fba6b43869..0000000000000
--- a/pkgs/development/interpreters/cling/fix-llvm-dylib-usage.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/tools/cling/tools/driver/CMakeLists.txt b/tools/cling/tools/driver/CMakeLists.txt
---- a/tools/cling/tools/driver/CMakeLists.txt
-+++ b/tools/cling/tools/driver/CMakeLists.txt
-@@ -9,10 +9,10 @@
- # Keep symbols for JIT resolution
- set(LLVM_NO_DEAD_STRIP 1)
-
-+set(LLVM_LINK_COMPONENTS support)
-+
- if(BUILD_SHARED_LIBS)
-   set(LIBS
--    LLVMSupport
--
-     clangFrontendTool
-
-     clingInterpreter
-@@ -25,8 +25,6 @@ if(BUILD_SHARED_LIBS)
-   )
- else()
-   set(LIBS
--    LLVMSupport
--
-     clangASTMatchers
-     clangFrontendTool
diff --git a/pkgs/development/interpreters/cling/fix-llvm-include.patch b/pkgs/development/interpreters/cling/fix-llvm-include.patch
deleted file mode 100644
index 801965d02d3a2..0000000000000
--- a/pkgs/development/interpreters/cling/fix-llvm-include.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h b/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
-index 16202d8..3afdac3 100644
---- a/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
-+++ b/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
-@@ -220,7 +220,7 @@ public:
-   Error removeModule(VModuleKey K) {
-     auto I = ModuleMap.find(K);
-     assert(I != ModuleMap.end() && "VModuleKey K not valid here");
--    auto EDM = std::move(I.second);
-+    auto EDM = std::move(I->second);
-     ModuleMap.erase(I);
-     return EDM->removeModuleFromBaseLayer(BaseLayer);
-   }
-diff --git a/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h b/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
-index d9535ce..4c688c3 100644
---- a/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
-+++ b/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
-@@ -472,7 +472,9 @@ private:
- 
-   // NB!  `LinkedObjects` needs to be destroyed before `NotifyFreed` because
-   // `~ConcreteLinkedObject` calls `NotifyFreed`
-+protected:
-   std::map<VModuleKey, std::unique_ptr<LinkedObject>> LinkedObjects;
-+private:
-   bool ProcessAllSections = false;
- };
- 
diff --git a/pkgs/development/interpreters/cling/force-install-cling-targets.patch b/pkgs/development/interpreters/cling/force-install-cling-targets.patch
deleted file mode 100644
index 627e2593298e1..0000000000000
--- a/pkgs/development/interpreters/cling/force-install-cling-targets.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/tools/cling/cmake/modules/CMakeLists.txt b/tools/cling/cmake/modules/CMakeLists.txt
---- a/tools/cling/cmake/modules/CMakeLists.txt
-+++ b/tools/cling/cmake/modules/CMakeLists.txt
-@@ -54,10 +54,8 @@ set(CLING_CONFIG_EXPORTS_FILE)
-
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
-   get_property(cling_has_exports GLOBAL PROPERTY CLING_HAS_EXPORTS)
--  if(cling_has_exports)
--    install(EXPORT ClingTargets DESTINATION ${CLING_INSTALL_PACKAGE_DIR}
--            COMPONENT cling-cmake-exports)
--  endif()
-+  install(EXPORT ClingTargets DESTINATION ${CLING_INSTALL_PACKAGE_DIR}
-+          COMPONENT cling-cmake-exports)
-
-   install(FILES
-     ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClingConfig.cmake
diff --git a/pkgs/development/interpreters/erlang/24.nix b/pkgs/development/interpreters/erlang/24.nix
index 4e7df413bb390..d2a841900802e 100644
--- a/pkgs/development/interpreters/erlang/24.nix
+++ b/pkgs/development/interpreters/erlang/24.nix
@@ -1,6 +1,6 @@
 { mkDerivation }:
 
 mkDerivation {
-  version = "24.3.4.16";
-  sha256 = "sha256-oLfidJPgWTz7AsJz+C4adXnxcow8C/M828os6aB4Z/c=";
+  version = "24.3.4.17";
+  sha256 = "sha256-V26pZEyFo+c+ztDDkjDNFK6LTw5xzF8gQYepWGNlGKg=";
 }
diff --git a/pkgs/development/interpreters/erlang/26.nix b/pkgs/development/interpreters/erlang/26.nix
index 2572268667255..1de18ab10154c 100644
--- a/pkgs/development/interpreters/erlang/26.nix
+++ b/pkgs/development/interpreters/erlang/26.nix
@@ -1,6 +1,6 @@
 { mkDerivation }:
 
 mkDerivation {
-  version = "26.2.3";
-  sha256 = "sha256-nUvGLzZ1PFc3Z/kDb3jspCFWXxkGZrazvGIpxfFLcbc=";
+  version = "26.2.4";
+  sha256 = "sha256-gTyBS5Q5V+bjwQQz+C55ZfYf8iAivn3V5qtvmfCo1XM=";
 }
diff --git a/pkgs/development/interpreters/erlang/generic-builder.nix b/pkgs/development/interpreters/erlang/generic-builder.nix
index 0c6eec868fa0f..6e9373b4a5636 100644
--- a/pkgs/development/interpreters/erlang/generic-builder.nix
+++ b/pkgs/development/interpreters/erlang/generic-builder.nix
@@ -27,6 +27,7 @@
 , common-updater-scripts
 , coreutils
 , git
+, wrapGAppsHook
 }:
 { baseName ? "erlang"
 , version
@@ -43,7 +44,7 @@
 , odbcSupport ? false
 , odbcPackages ? [ unixODBC ]
 , opensslPackage ? openssl
-, wxPackages ? [ libGL libGLU wxGTK xorg.libX11 ]
+, wxPackages ? [ libGL libGLU wxGTK xorg.libX11 wrapGAppsHook ]
 , preUnpack ? ""
 , postUnpack ? ""
 , patches ? [ ]
diff --git a/pkgs/development/interpreters/expr/default.nix b/pkgs/development/interpreters/expr/default.nix
index 20ec87bb53fd3..5f7fa8da80c6e 100644
--- a/pkgs/development/interpreters/expr/default.nix
+++ b/pkgs/development/interpreters/expr/default.nix
@@ -5,18 +5,18 @@
 
 buildGoModule rec {
   pname = "expr";
-  version = "1.16.3";
+  version = "1.16.4";
 
   src = fetchFromGitHub {
     owner = "antonmedv";
     repo = "expr";
     rev = "v${version}";
-    hash = "sha256-XTI4TPViNQUPrIPZRWcaxFpkqMUOdGN162f+deFNRR0=";
+    hash = "sha256-evPzHLetmCqGnFNydbjUcVIBdcOWrhqaeBIwWB2G6hk=";
   };
 
   sourceRoot = "${src.name}/repl";
 
-  vendorHash = "sha256-ZIF0uCGrzs1nn06ouF/eJY1adOw8diAjMIhygZhrXuM=";
+  vendorHash = "sha256-GEFLIvshlnCk8pYIf9ZoNV5NBC1R52x12aIOdsAqwFI=";
 
   ldflags = [ "-s" "-w" ];
 
diff --git a/pkgs/development/interpreters/luau/default.nix b/pkgs/development/interpreters/luau/default.nix
index 80a696179693d..28e34f885608e 100644
--- a/pkgs/development/interpreters/luau/default.nix
+++ b/pkgs/development/interpreters/luau/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "luau";
-  version = "0.617";
+  version = "0.620";
 
   src = fetchFromGitHub {
     owner = "luau-lang";
     repo = "luau";
     rev = version;
-    hash = "sha256-5lWEihumXSyBsEOOb/oIz7NTgbdcI9C58m9h/d0MPRk=";
+    hash = "sha256-J1tVZ3HDcH+DiVsHDWl8A6X/4Fi4s0Fxkb0KzSYP1Pk=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
     install -Dm755 -t $out/bin luau
     install -Dm755 -t $out/bin luau-analyze
+    install -Dm755 -t $out/bin luau-compile
 
     runHook postInstall
   '';
diff --git a/pkgs/development/interpreters/php/8.1.nix b/pkgs/development/interpreters/php/8.1.nix
index ff76b64d71cf3..a8141d2786004 100644
--- a/pkgs/development/interpreters/php/8.1.nix
+++ b/pkgs/development/interpreters/php/8.1.nix
@@ -1,17 +1,9 @@
-{ callPackage, fetchpatch, ... }@_args:
+{ callPackage, ... }@_args:
 
 let
   base = callPackage ./generic.nix ((removeAttrs _args [ "fetchpatch" ]) // {
-    version = "8.1.27";
-    hash = "sha256-oV/XPqRPLfMLB9JHhuB9GUiw6j7tC4uEVzXVANwov/E=";
-    extraPatches = [
-      # Fix build with libxml 2.12+.
-      # Patch from https://github.com/php/php-src/commit/0a39890c967aa57225bb6bdf4821aff7a3a3c082
-      (fetchpatch {
-        url = "https://github.com/php/php-src/commit/0a39890c967aa57225bb6bdf4821aff7a3a3c082.patch";
-        hash = "sha256-HvpTL7aXO9gr4glFdhqUWQPrG8TYTlvbNINq33M3zS0=";
-      })
-    ];
+    version = "8.1.28";
+    hash = "sha256-i+RQCW4BU8R9dThOfdWVzIl/HVPOAGBwjOlYm8wxQe4=";
   });
 in
 base.withExtensions ({ all, ... }: with all; ([
diff --git a/pkgs/development/interpreters/php/8.2.nix b/pkgs/development/interpreters/php/8.2.nix
index ce3dc313621f0..d839e372570ad 100644
--- a/pkgs/development/interpreters/php/8.2.nix
+++ b/pkgs/development/interpreters/php/8.2.nix
@@ -2,8 +2,8 @@
 
 let
   base = callPackage ./generic.nix (_args // {
-    version = "8.2.17";
-    hash = "sha256-GRMWwgMmfZYWC0fSL5VdTcEXk96KXzJ+DCp2J1polOo=";
+    version = "8.2.18";
+    hash = "sha256-ygsHwlQgAyD1GKxbPfVAqc8U2GbzyT7cMBO1Lgb6x5Y=";
   });
 in
 base.withExtensions ({ all, ... }: with all; ([
diff --git a/pkgs/development/interpreters/php/8.3.nix b/pkgs/development/interpreters/php/8.3.nix
index 4af1662b36941..d7ac07c1fb553 100644
--- a/pkgs/development/interpreters/php/8.3.nix
+++ b/pkgs/development/interpreters/php/8.3.nix
@@ -2,8 +2,8 @@
 
 let
   base = callPackage ./generic.nix (_args // {
-    version = "8.3.4";
-    hash = "sha256-PFyvGODAokOq7JE6OeywkgQxla3eTD/ELpRdpbkndpU=";
+    version = "8.3.6";
+    hash = "sha256-YySx3djrMCWwQQNLiNwrwLSBmwAiEp7q66N+R4AxCLw=";
   });
 in
 base.withExtensions ({ all, ... }: with all; ([
diff --git a/pkgs/development/interpreters/picolisp/default.nix b/pkgs/development/interpreters/picolisp/default.nix
index 4e589cb722e18..8f8d0b764fdaa 100644
--- a/pkgs/development/interpreters/picolisp/default.nix
+++ b/pkgs/development/interpreters/picolisp/default.nix
@@ -1,66 +1,49 @@
-{ lib, stdenv, fetchurl, jdk, w3m, openssl, makeWrapper }:
-
-stdenv.mkDerivation rec {
-  pname = "picoLisp";
-  version = "20.6";
+{
+  clang,
+  fetchurl,
+  lib,
+  libffi,
+  llvm,
+  makeWrapper,
+  openssl,
+  pkg-config,
+  readline,
+  stdenv
+}:
+
+stdenv.mkDerivation {
+  pname = "PicoLisp";
+  version = "24.3.30";
   src = fetchurl {
-    url = "https://www.software-lab.de/${pname}-${version}.tgz";
-    sha256 = "0l51x98bn1hh6kv40sdgp0x09pzg5i8yxbcjvm9n5bxsd6bbk5w2";
+    url = "https://www.software-lab.de/picoLisp-24.3.tgz";
+    sha256 = "sha256-FB43DAjHBFgxdysoLzBXLxii52a2CCh1skZP/RTzfdc=";
   };
-  nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [openssl] ++ lib.optional stdenv.is64bit jdk;
-  patchPhase = ''
-    sed -i "s/which java/command -v java/g" mkAsm
 
-    ${lib.optionalString stdenv.isAarch32 ''
-      sed -i s/-m32//g Makefile
-      cat >>Makefile <<EOF
-      ext.o: ext.c
-        \$(CC) \$(CFLAGS) -fPIC -D_OS='"\$(OS)"' \$*.c
-      ht.o: ht.c
-        \$(CC) \$(CFLAGS) -fPIC -D_OS='"\$(OS)"' \$*.c
-      EOF
-    ''}
-  '';
-  sourceRoot = ''picoLisp/src${lib.optionalString stdenv.is64bit "64"}'';
-  postBuild = ''
-    cd ../src; make gate
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ clang libffi llvm openssl pkg-config readline ];
+  sourceRoot = ''pil21'';
+  buildPhase = ''
+    cd src
+    make
   '';
+
   installPhase = ''
     cd ..
-
-    mkdir -p "$out/share/picolisp" "$out/lib" "$out/bin"
-    cp -r . "$out/share/picolisp/build-dir"
-    ln -s "$out/share/picolisp/build-dir" "$out/lib/picolisp"
+    mkdir -p "$out/lib" "$out/bin" "$out/man"
+    cp -r . "$out/lib/picolisp/"
     ln -s "$out/lib/picolisp/bin/picolisp" "$out/bin/picolisp"
-    ln -s "$out/lib/picolisp/bin/httpGate" "$out/bin/httpGate"
-
-
-    makeWrapper $out/bin/picolisp $out/bin/pil \
-      --prefix PATH : ${w3m}/bin \
-      --add-flags "$out/lib/picolisp/lib.l" \
-      --add-flags "@lib/misc.l" \
-      --add-flags "@lib/btree.l" \
-      --add-flags "@lib/db.l" \
-      --add-flags "@lib/pilog.l"
-
-    mkdir -p "$out/share/emacs"
-    ln -s "$out/lib/picolisp/lib/el" "$out/share/emacs/site-lisp"
+    ln -s "$out/lib/picolisp/bin/pil" "$out/bin/pil"
+    ln -s "$out/lib/picolisp/man/man1/pil.1" "$out/man/pil.1"
+    ln -s "$out/lib/picolisp/man/man1/picolisp.1" "$out/man/picolisp.1"
+    substituteInPlace $out/bin/pil --replace /usr $out
   '';
 
   meta = with lib; {
-    # darwin: build times out
-    broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
-    description = "A simple Lisp with an integrated database";
+    description = "A pragmatic programming language.";
     homepage = "https://picolisp.com/";
     license = licenses.mit;
-    maintainers = with maintainers; [ raskin ];
+    maintainers = with maintainers; [ nat-418 ];
     platforms = platforms.all;
   };
-
-  passthru = {
-    updateInfo = {
-      downloadPage = "https://www.software-lab.de/down.html";
-    };
-  };
 }
+
diff --git a/pkgs/development/java-modules/jna/default.nix b/pkgs/development/java-modules/jna/default.nix
index 1b4f3bb9ad905..ac9590da85dec 100644
--- a/pkgs/development/java-modules/jna/default.nix
+++ b/pkgs/development/java-modules/jna/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, lib, fetchFromGitHub, ant, jdk8 }:
+{ stdenv, lib, fetchFromGitHub, ant, jdk, stripJavaArchivesHook }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "jna";
   version = "5.14.0";
 
   src = fetchFromGitHub {
     owner = "java-native-access";
-    repo = pname;
-    rev = version;
+    repo = "jna";
+    rev = finalAttrs.version;
     hash = "sha256-a5l9khKLWfvTHv53utfbw344/UNQOnIU93+wZNQ0ji4=";
   };
 
-  nativeBuildInputs = [ ant jdk8 ];
+  nativeBuildInputs = [ ant jdk stripJavaArchivesHook ];
 
   buildPhase = ''
     runHook preBuild
@@ -27,11 +27,11 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    inherit (src.meta) homepage;
+    changelog = "https://github.com/java-native-access/jna/blob/${finalAttrs.version}/CHANGES.md";
     description = "Java Native Access";
+    homepage = "https://github.com/java-native-access/jna";
     license = with licenses; [ lgpl21 asl20 ];
     maintainers = with maintainers; [ nagy ];
     platforms = platforms.linux ++ platforms.darwin;
-    changelog = "https://github.com/java-native-access/jna/blob/${version}/CHANGES.md";
   };
-}
+})
diff --git a/pkgs/development/libraries/botan/3.0.nix b/pkgs/development/libraries/botan/3.0.nix
index 4c0eae63493a9..68cde850f1e80 100644
--- a/pkgs/development/libraries/botan/3.0.nix
+++ b/pkgs/development/libraries/botan/3.0.nix
@@ -1,7 +1,7 @@
 { callPackage, ... } @ args:
 
 callPackage ./generic.nix (args // {
-  baseVersion = "3.2";
+  baseVersion = "3.3";
   revision = "0";
-  hash = "sha256-BJyEeDX89u86niBrM94F3TiZnDJeJHSCdypVmNnl7OM=";
+  hash = "sha256-No8R9CbxIFrtuenjI2ihZTXcEb1gNRBm5vZmTsNrhbk=";
 })
diff --git a/pkgs/development/libraries/box2d/default.nix b/pkgs/development/libraries/box2d/default.nix
index 84e2dbc05644a..c2611a8b8dffb 100644
--- a/pkgs/development/libraries/box2d/default.nix
+++ b/pkgs/development/libraries/box2d/default.nix
@@ -1,37 +1,72 @@
-{ lib, stdenv, fetchFromGitHub, cmake, libGLU, libGL, freeglut, libX11, xorgproto
-, libXi, pkg-config }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, libGLU
+, libGL
+, freeglut
+, libX11
+, libXcursor
+, libXinerama
+, libXrandr
+, xorgproto
+, libXi
+, pkg-config
+, Carbon
+, Cocoa
+, Kernel
+, OpenGL
+, settingsFile ? "include/box2d/b2_settings.h"
+}:
 
-stdenv.mkDerivation rec {
+let
+  inherit (lib) cmakeBool optionals;
+
+in
+stdenv.mkDerivation (finalAttrs: {
   pname = "box2d";
-  version = "2.3.1";
+  version = "2.4.1";
 
   src = fetchFromGitHub {
     owner = "erincatto";
     repo = "box2d";
-    rev = "v${version}";
-    sha256 = "sha256-Z2J17YMzQNZqABIa5eyJDT7BWfXveymzs+DWsrklPIs=";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-cL8L+WSTcswj+Bwy8kSOwuEqLyWEM6xa/j/94aBiSck=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
-  buildInputs = [ libGLU libGL freeglut libX11 xorgproto libXi ];
+
+  buildInputs = [
+    libGLU
+    libGL
+    freeglut
+    libX11
+    libXcursor
+    libXinerama
+    libXrandr
+    xorgproto
+    libXi
+  ] ++ optionals stdenv.isDarwin [
+    Carbon Cocoa Kernel OpenGL
+  ];
 
   cmakeFlags = [
-    "-DBOX2D_INSTALL=ON"
-    "-DBOX2D_BUILD_SHARED=ON"
-    "-DBOX2D_BUILD_EXAMPLES=OFF"
+    (cmakeBool "BOX2D_BUILD_UNIT_TESTS" finalAttrs.doCheck)
   ];
 
   prePatch = ''
-    cd Box2D
-    substituteInPlace Box2D/Common/b2Settings.h \
-      --replace 'b2_maxPolygonVertices	8' 'b2_maxPolygonVertices	15'
+    substituteInPlace ${settingsFile}  \
+      --replace-fail 'b2_maxPolygonVertices	8' 'b2_maxPolygonVertices	15'
   '';
 
+  # tests are broken on 2.4.1 and 2.3.x doesn't have tests: https://github.com/erincatto/box2d/issues/677
+  doCheck = lib.versionAtLeast finalAttrs.version "2.4.2";
+
   meta = with lib; {
     description = "2D physics engine";
     homepage = "https://box2d.org/";
-    maintainers = [ maintainers.raskin ];
+    maintainers = with maintainers; [ raskin ];
     platforms = platforms.unix;
     license = licenses.zlib;
   };
-}
+})
diff --git a/pkgs/development/libraries/c-blosc/2.nix b/pkgs/development/libraries/c-blosc/2.nix
index a431b7f59a854..7c186b3a2e93f 100644
--- a/pkgs/development/libraries/c-blosc/2.nix
+++ b/pkgs/development/libraries/c-blosc/2.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "c-blosc2";
-  version = "2.13.2";
+  version = "2.14.3";
 
   src = fetchFromGitHub {
     owner = "Blosc";
     repo = "c-blosc2";
     rev = "v${finalAttrs.version}";
-    sha256 = "sha256-RNIvg6p/+brW7oboTDH0bbRfIQDaZwtZbbWFbftfWTk=";
+    sha256 = "sha256-0rizBygyNW9Sr7qnQZoN/Wv2ZIAYuJTQ5tkW6iwIw7Y=";
   };
 
   # https://github.com/NixOS/nixpkgs/issues/144170
diff --git a/pkgs/development/libraries/capstone/4.nix b/pkgs/development/libraries/capstone/4.nix
new file mode 100644
index 0000000000000..dd31e9feaf621
--- /dev/null
+++ b/pkgs/development/libraries/capstone/4.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenv
+, cmake
+, fetchFromGitHub
+, fixDarwinDylibNames
+}:
+
+stdenv.mkDerivation rec {
+  pname = "capstone";
+  version = "4.0.2";
+
+  src = fetchFromGitHub {
+    owner = "capstone-engine";
+    repo = "capstone";
+    rev = version;
+    sha256 = "sha256-XMwQ7UaPC8YYu4yxsE4bbR3leYPfBHu5iixSLz05r3g=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals stdenv.isDarwin [
+    fixDarwinDylibNames
+  ];
+
+  doCheck = true;
+
+  meta = {
+    description = "Advanced disassembly library";
+    homepage    = "http://www.capstone-engine.org";
+    license     = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ thoughtpolice ris ];
+    mainProgram = "cstool";
+    platforms   = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/libraries/capstone/default.nix b/pkgs/development/libraries/capstone/default.nix
index ff33c7bd0979d..b78b007bc5978 100644
--- a/pkgs/development/libraries/capstone/default.nix
+++ b/pkgs/development/libraries/capstone/default.nix
@@ -7,15 +7,17 @@
 
 stdenv.mkDerivation rec {
   pname = "capstone";
-  version = "4.0.2";
+  version = "5.0.1";
 
   src = fetchFromGitHub {
-    owner = "aquynh";
+    owner = "capstone-engine";
     repo = "capstone";
     rev = version;
-    sha256 = "sha256-XMwQ7UaPC8YYu4yxsE4bbR3leYPfBHu5iixSLz05r3g=";
+    sha256 = "sha256-kKmL5sae9ruWGu1gas1mel9qM52qQOD+zLj8cRE3isg=";
   };
 
+  cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ];
+
   nativeBuildInputs = [
     cmake
   ] ++ lib.optionals stdenv.isDarwin [
diff --git a/pkgs/development/libraries/cista/default.nix b/pkgs/development/libraries/cista/default.nix
index 862a74c596a32..30070fe02daed 100644
--- a/pkgs/development/libraries/cista/default.nix
+++ b/pkgs/development/libraries/cista/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "cista";
-  version = "0.14";
+  version = "0.15";
 
   src = fetchFromGitHub {
     owner = "felixguendling";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-E2B+dNFk0ssKhT9dULNFzpa8auRQ9Q0czuUjX6hxWPw=";
+    sha256 = "sha256-+DcxnckoXVSc+gXt21fxKkx4J1khLsQPuxYH9CBRrfE=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/ctranslate2/default.nix b/pkgs/development/libraries/ctranslate2/default.nix
index 029e1cc8d3eb5..dbd213f8a3f07 100644
--- a/pkgs/development/libraries/ctranslate2/default.nix
+++ b/pkgs/development/libraries/ctranslate2/default.nix
@@ -24,13 +24,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "ctranslate2";
-  version = "4.1.1";
+  version = "4.2.0";
 
   src = fetchFromGitHub {
     owner = "OpenNMT";
     repo = "CTranslate2";
     rev = "v${version}";
-    hash = "sha256-vA1KnHRxIX0lYUfwXTbxjnrrBjFmqp2kwpxBNorVf0Y=";
+    hash = "sha256-P/aXrzaCF6Rz99Pz9CkpR/FlWXCj04q/4swiAddcwKk=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/libraries/duckdb/default.nix b/pkgs/development/libraries/duckdb/default.nix
index be1a209878810..03857e962a832 100644
--- a/pkgs/development/libraries/duckdb/default.nix
+++ b/pkgs/development/libraries/duckdb/default.nix
@@ -108,6 +108,7 @@ stdenv.mkDerivation (finalAttrs: {
     in
     ''
       runHook preInstallCheck
+      (($(ulimit -n) < 1024)) && ulimit -n 1024
 
       HOME="$(mktemp -d)" ${LD_LIBRARY_PATH}="$lib/lib" ./test/unittest ${toString excludes}
 
diff --git a/pkgs/development/libraries/eclib/default.nix b/pkgs/development/libraries/eclib/default.nix
index f78fb9a191066..0c886a265b63e 100644
--- a/pkgs/development/libraries/eclib/default.nix
+++ b/pkgs/development/libraries/eclib/default.nix
@@ -14,7 +14,7 @@ assert withFlint -> flint != null;
 
 stdenv.mkDerivation rec {
   pname = "eclib";
-  version = "20231212"; # upgrade might break the sage interface
+  version = "20240408"; # upgrade might break the sage interface
   # sage tests to run:
   # src/sage/interfaces/mwrank.py
   # src/sage/libs/eclib
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     # see https://github.com/JohnCremona/eclib/issues/64#issuecomment-789788561
     # for upstream's explanation of the above
     url = "https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2";
-    sha256 = "sha256-MtEWo+NZsN5PZIbCu2GIu4tVPIuDP2GMwllkhOi2FFo=";
+    sha256 = "sha256-O6kI4gGd5T/LoUFEnKpvqC8DYFv4O/nagJLfU4ravnw=";
   };
   buildInputs = [
     pari
diff --git a/pkgs/development/libraries/entt/default.nix b/pkgs/development/libraries/entt/default.nix
index 2f7a86c7f1135..8649757b6edae 100644
--- a/pkgs/development/libraries/entt/default.nix
+++ b/pkgs/development/libraries/entt/default.nix
@@ -1,13 +1,13 @@
 { lib, stdenv, fetchFromGitHub, cmake }:
 stdenv.mkDerivation rec {
   pname = "entt";
-  version = "3.13.1";
+  version = "3.13.2";
 
   src = fetchFromGitHub {
     owner = "skypjack";
     repo = "entt";
     rev = "v${version}";
-    hash = "sha256-TZuKgpLJCy3uct39SFSVi4b4lyldcfJ3AQNrz3OT3Ow=";
+    hash = "sha256-botX9T9KEXbctI1hUOt983y2rtWDeXyTonGYpJ6eGr8=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/faudio/default.nix b/pkgs/development/libraries/faudio/default.nix
index 22f422e25317f..fc71ced98101b 100644
--- a/pkgs/development/libraries/faudio/default.nix
+++ b/pkgs/development/libraries/faudio/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "faudio";
-  version = "24.03";
+  version = "24.04";
 
   src = fetchFromGitHub {
     owner = "FNA-XNA";
     repo = "FAudio";
     rev = version;
-    sha256 = "sha256-O2hnv74Uj3PJCmca9Ynz+jjeJXBw2zbGEWlqax3WfjA=";
+    sha256 = "sha256-DuQG5AsfLtWHVun9P8iiBqp3xtb67feC5b2gveIRqpA=";
   };
 
   nativeBuildInputs = [cmake];
diff --git a/pkgs/development/libraries/ffmpeg/default.nix b/pkgs/development/libraries/ffmpeg/default.nix
index 5c15239541d86..65e12e6b36729 100644
--- a/pkgs/development/libraries/ffmpeg/default.nix
+++ b/pkgs/development/libraries/ffmpeg/default.nix
@@ -33,6 +33,11 @@ let
     version = "6.1.1";
     hash = "sha256-Q0c95hbCVUHQWPoh5uC8uzMylmB4BnWg+VhXEgSouzo=";
   };
+
+  v7 = {
+    version = "7.0";
+    hash = "sha256-RdDfv+0y90XpgjIRvTjsemKyGunzDbsh4j4WiE9rfyM=";
+  };
 in
 
 rec {
@@ -48,6 +53,10 @@ rec {
   ffmpeg_6-headless = mkFFmpeg v6 "headless";
   ffmpeg_6-full = mkFFmpeg v6 "full";
 
+  ffmpeg_7 = mkFFmpeg v7 "small";
+  ffmpeg_7-headless = mkFFmpeg v7 "headless";
+  ffmpeg_7-full = mkFFmpeg v7 "full";
+
   # Please make sure this is updated to the latest version on the next major
   # update to ffmpeg
   # Packages which use ffmpeg as a library, should pin to the relevant major
diff --git a/pkgs/development/libraries/ffmpeg/generic.nix b/pkgs/development/libraries/ffmpeg/generic.nix
index 6ed7dfc7b757a..85214a79e2d3c 100644
--- a/pkgs/development/libraries/ffmpeg/generic.nix
+++ b/pkgs/development/libraries/ffmpeg/generic.nix
@@ -80,6 +80,8 @@
 , withOpus ? withHeadlessDeps # Opus de/encoder
 , withPlacebo ? withFullDeps && !stdenv.isDarwin # libplacebo video processing library
 , withPulse ? withSmallDeps && stdenv.isLinux # Pulseaudio input support
+, withQrencode ? withFullDeps && lib.versionAtLeast version "7" # QR encode generation
+, withQuirc ? withFullDeps && lib.versionAtLeast version "7" # QR decoding
 , withRav1e ? withFullDeps # AV1 encoder (focused on speed and safety)
 , withRtmp ? false # RTMP[E] support
 , withSamba ? withFullDeps && !stdenv.isDarwin && withGPLv3 # Samba protocol
@@ -112,6 +114,8 @@
 , withXcbShape ? withFullDeps # X11 grabbing shape rendering
 , withXcbShm ? withFullDeps # X11 grabbing shm communication
 , withXcbxfixes ? withFullDeps # X11 grabbing mouse rendering
+, withXevd ? withFullDeps && lib.versionAtLeast version "7" && stdenv.hostPlatform.isx86 # MPEG-5 EVC decoding
+, withXeve ? withFullDeps && lib.versionAtLeast version "7" && stdenv.hostPlatform.isx86 # MPEG-5 EVC encoding
 , withXlib ? withFullDeps # Xlib support
 , withXml2 ? withFullDeps # libxml2 support, for IMF and DASH demuxers
 , withXvid ? withHeadlessDeps && withGPL # Xvid encoder, native encoder exists
@@ -263,6 +267,8 @@
 , opencore-amr
 , openh264
 , openjpeg
+, qrencode
+, quirc
 , rav1e
 , rtmpdump
 , samba
@@ -279,6 +285,8 @@
 , x264
 , x265
 , xavs
+, xevd
+, xeve
 , xvidcore
 , xz
 , zeromq4
@@ -405,6 +413,14 @@ stdenv.mkDerivation (finalAttrs: {
         url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/e06ce6d2b45edac4a2df04f304e18d4727417d24";
         hash = "sha256-73mlX1rdJrguw7OXaSItfHtI7gflDrFj+7SepVvvUIg=";
       }
+    ])
+    ++ (lib.optionals (lib.versionAtLeast version "7.0") [
+      {
+        # Will likely be obsolete in >7.0
+        name = "fate_avoid_dependency_on_samples";
+        url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/7b7b7819bd21cc92ac07f6696b0e7f26fa8f9834";
+        hash = "sha256-TKI289XqtG86Sj9s7mVYvmkjAuRXeK+2cYYEDkg6u6I=";
+      }
     ]));
 
   configurePlatforms = [];
@@ -543,6 +559,10 @@ stdenv.mkDerivation (finalAttrs: {
     (enableFeature withPlacebo "libplacebo")
   ] ++ [
     (enableFeature withPulse "libpulse")
+  ] ++ optionals (versionAtLeast version "7") [
+    (enableFeature withQrencode "libqrencode")
+    (enableFeature withQuirc "libquirc")
+  ] ++ [
     (enableFeature withRav1e "librav1e")
     (enableFeature withRtmp "librtmp")
     (enableFeature withSamba "libsmbclient")
@@ -579,6 +599,10 @@ stdenv.mkDerivation (finalAttrs: {
     (enableFeature withXcbShape "libxcb-shape")
     (enableFeature withXcbShm "libxcb-shm")
     (enableFeature withXcbxfixes "libxcb-xfixes")
+  ] ++ optionals (versionAtLeast version "7")  [
+    (enableFeature withXevd "libxevd")
+    (enableFeature withXeve "libxeve")
+  ] ++ [
     (enableFeature withXlib "xlib")
     (enableFeature withXml2 "libxml2")
     (enableFeature withXvid "libxvid")
@@ -660,6 +684,8 @@ stdenv.mkDerivation (finalAttrs: {
   ++ optionals withOpus [ libopus ]
   ++ optionals withPlacebo [ (if (lib.versionAtLeast version "6.1") then libplacebo else libplacebo_5) vulkan-headers ]
   ++ optionals withPulse [ libpulseaudio ]
+  ++ optionals withQrencode [ qrencode ]
+  ++ optionals withQuirc [ quirc ]
   ++ optionals withRav1e [ rav1e ]
   ++ optionals withRtmp [ rtmpdump ]
   ++ optionals withSamba [ samba ]
@@ -688,6 +714,8 @@ stdenv.mkDerivation (finalAttrs: {
   ++ optionals withX265 [ x265 ]
   ++ optionals withXavs [ xavs ]
   ++ optionals withXcb [ libxcb ]
+  ++ optionals withXevd [ xevd ]
+  ++ optionals withXeve [ xeve ]
   ++ optionals withXlib [ libX11 libXv libXext ]
   ++ optionals withXml2 [ libxml2 ]
   ++ optionals withXvid [ xvidcore ]
diff --git a/pkgs/development/libraries/flint/default.nix b/pkgs/development/libraries/flint/default.nix
index eeb2cf1127e43..eeb928be8710d 100644
--- a/pkgs/development/libraries/flint/default.nix
+++ b/pkgs/development/libraries/flint/default.nix
@@ -2,7 +2,6 @@
 , stdenv
 , fetchurl
 , gmp
-, mpir
 , mpfr
 , ntl
 , openblas ? null, blas, lapack
@@ -22,7 +21,6 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     gmp
-    mpir
     mpfr
     ntl
   ] ++ lib.optionals withBlas [
@@ -35,7 +33,6 @@ stdenv.mkDerivation rec {
 
   configureFlags = [
     "--with-gmp=${gmp}"
-    "--with-mpir=${mpir}"
     "--with-mpfr=${mpfr}"
     "--with-ntl=${ntl}"
   ] ++ lib.optionals withBlas [
diff --git a/pkgs/development/libraries/gdal/default.nix b/pkgs/development/libraries/gdal/default.nix
index 6c298ac0e1d94..b059620536c66 100644
--- a/pkgs/development/libraries/gdal/default.nix
+++ b/pkgs/development/libraries/gdal/default.nix
@@ -80,13 +80,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "gdal";
-  version = "3.8.4";
+  version = "3.8.5";
 
   src = fetchFromGitHub {
     owner = "OSGeo";
     repo = "gdal";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-R9VLof13OXPbWGHOG1Q4WZWSPoF739C6WuNWxoIwKTw=";
+    hash = "sha256-Z+mYlyOX9vJ772qwZMQfCbD/V7RL6+9JLHTzoZ55ot0=";
   };
 
   patches = [
diff --git a/pkgs/development/libraries/hax11/default.nix b/pkgs/development/libraries/hax11/default.nix
index 608411ec71f10..42851f0cf3004 100644
--- a/pkgs/development/libraries/hax11/default.nix
+++ b/pkgs/development/libraries/hax11/default.nix
@@ -44,7 +44,7 @@ multiStdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/CyberShadow/hax11";
     description = "Hackbrary to Hook and Augment X11 protocol calls";
     license = with lib.licenses; [ mit ];
-    maintainers = with lib.maintainers; [ AndersonTorres ];
+    maintainers = with lib.maintainers; [ AndersonTorres cybershadow ];
     platforms = lib.platforms.linux;
   };
 })
diff --git a/pkgs/development/libraries/hunspell/dictionaries.nix b/pkgs/development/libraries/hunspell/dictionaries.nix
index d62f672f0660d..3f6127502d686 100644
--- a/pkgs/development/libraries/hunspell/dictionaries.nix
+++ b/pkgs/development/libraries/hunspell/dictionaries.nix
@@ -807,7 +807,7 @@ rec {
     meta = with lib; {
       description = "Hunspell dictionary for Dutch (Netherlands) from OpenTaal";
       homepage = "https://www.opentaal.org/";
-      license = with licenses; [ bsd3 ]; # and/or cc-by-nc-30
+      license = with licenses; [ bsd3 /* or */ cc-by-30 ];
       maintainers = with maintainers; [ artturin ];
     };
   };
diff --git a/pkgs/development/libraries/igraph/default.nix b/pkgs/development/libraries/igraph/default.nix
index 55915b4bb523f..5f0dbaec153c0 100644
--- a/pkgs/development/libraries/igraph/default.nix
+++ b/pkgs/development/libraries/igraph/default.nix
@@ -26,13 +26,13 @@ assert (blas.isILP64 == lapack.isILP64 &&
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "igraph";
-  version = "0.10.10";
+  version = "0.10.11";
 
   src = fetchFromGitHub {
     owner = "igraph";
     repo = finalAttrs.pname;
     rev = finalAttrs.version;
-    hash = "sha256-xFX48qAr0x0iNRns/aGH9UKL0wGJyfccQLdEXUFI/TU=";
+    hash = "sha256-RUxA9j2VDzwuYO/1HtyF3/ejGCJ7Gdjm7U8/Q8JxTbI=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/libraries/imgui/default.nix b/pkgs/development/libraries/imgui/default.nix
index 275d44e88dd93..ed15d6229d9e2 100644
--- a/pkgs/development/libraries/imgui/default.nix
+++ b/pkgs/development/libraries/imgui/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "imgui";
-  version = "1.90.4";
+  version = "1.90.5";
 
   src = fetchFromGitHub {
     owner = "ocornut";
     repo = "imgui";
     rev = "v${version}";
-    sha256 = "sha256-7+Ay7H97tIO6CUsEyaQv4i9q2FCw98eQUq/KYZyfTAw=";
+    sha256 = "sha256-iTs8bcCAR8lvN1tcKmwyB3CcFmqR1QpqdGqdER920rM=";
   };
 
   dontBuild = true;
diff --git a/pkgs/development/libraries/jose/default.nix b/pkgs/development/libraries/jose/default.nix
index 656b014b733d4..967886ae86c6d 100644
--- a/pkgs/development/libraries/jose/default.nix
+++ b/pkgs/development/libraries/jose/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "jose";
-  version = "12";
+  version = "13";
 
   src = fetchFromGitHub {
     owner = "latchset";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-MuYRgYskIT2rmd32gziCdiRwIWMKQ6iTx0Qm/jJI+Iw=";
+    hash = "sha256-XkYvBjPmwhwo2p8/jTXazHRAgSGkI7LTLUlqbxMxlys=";
   };
 
   nativeBuildInputs = [ meson pkg-config ninja asciidoc ];
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/latchset/jose";
     maintainers = with lib.maintainers; [ ];
     license = lib.licenses.asl20;
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/development/libraries/kde-frameworks/kio/default.nix b/pkgs/development/libraries/kde-frameworks/kio/default.nix
index 8815683aef65d..522c27bf56ebc 100644
--- a/pkgs/development/libraries/kde-frameworks/kio/default.nix
+++ b/pkgs/development/libraries/kde-frameworks/kio/default.nix
@@ -1,11 +1,11 @@
 {
-  stdenv, lib, mkDerivation, fetchpatch,
+  stdenv, lib, mkDerivation,
   extra-cmake-modules, kdoctools, qttools,
   acl, attr, libkrb5, util-linux,
   karchive, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons,
   kdbusaddons, ki18n, kiconthemes, kitemviews, kjobwidgets, knotifications,
   kservice, ktextwidgets, kwallet, kwidgetsaddons, kwindowsystem, kxmlgui,
-  qtbase, qtscript, qtx11extras, solid, kcrash, kded
+  qtbase, qtscript, qtx11extras, solid, kcrash, kded,
 }:
 
 mkDerivation {
@@ -29,7 +29,7 @@ mkDerivation {
   separateDebugInfo = true;
   patches = [
     ./0001-Remove-impure-smbd-search-path.patch
- ];
+  ];
   meta = {
     homepage = "https://api.kde.org/frameworks/kio/html/";
   };
diff --git a/pkgs/development/libraries/libhugetlbfs/default.nix b/pkgs/development/libraries/libhugetlbfs/default.nix
index 0f7859be9dbb4..bcc676b1b0408 100644
--- a/pkgs/development/libraries/libhugetlbfs/default.nix
+++ b/pkgs/development/libraries/libhugetlbfs/default.nix
@@ -1,23 +1,18 @@
-{ stdenv, lib, fetchurl }:
+{ stdenv, lib, fetchurl, autoreconfHook }:
 
 stdenv.mkDerivation rec {
   pname = "libhugetlbfs";
-  version = "2.23";
+  version = "2.24";
 
   src = fetchurl {
     url = "https://github.com/libhugetlbfs/libhugetlbfs/releases/download/${version}/libhugetlbfs-${version}.tar.gz";
-    sha256 = "0ya4q001g111d3pqlzrf3yaifadl0ccirx5dndz1pih7x3qp41mp";
+    hash = "sha256-1QHfqRyOrREGlno9OCnyunOMP6wKZcs1jtKrOHDdxe8=";
   };
 
-  patches = [
-    (fetchurl {
-      url = "https://build.opensuse.org/public/source/openSUSE:Factory/libhugetlbfs/glibc-2.34-fix.patch?rev=50";
-      sha256 = "sha256-eRQa6M0ZdHMtwA5nnzDTWYv/x4AnRZhj+MpDiwyCvVM=";
-    })
-  ];
-
   outputs = [ "bin" "dev" "man" "doc" "lib" "out" ];
 
+  nativeBuildInputs = [ autoreconfHook ];
+
   postConfigure = ''
     patchShebangs ld.hugetlbfs
   '';
@@ -43,6 +38,8 @@ stdenv.mkDerivation rec {
   installTargets = [ "install" "install-docs" ];
 
   meta = with lib; {
+    homepage = "https://github.com/libhugetlbfs/libhugetlbfs";
+    changelog = "https://github.com/libhugetlbfs/libhugetlbfs/blob/${version}/NEWS";
     description = "library and utilities for Linux hugepages";
     maintainers = with maintainers; [ qyliss ];
     license = licenses.lgpl21Plus;
diff --git a/pkgs/development/libraries/libimobiledevice-glue/default.nix b/pkgs/development/libraries/libimobiledevice-glue/default.nix
index 5c602a4ee9aa4..b17a571b33974 100644
--- a/pkgs/development/libraries/libimobiledevice-glue/default.nix
+++ b/pkgs/development/libraries/libimobiledevice-glue/default.nix
@@ -37,6 +37,6 @@ stdenv.mkDerivation rec {
     description = "Library with common code used by the libraries and tools around the libimobiledevice project";
     license = licenses.lgpl21Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/libraries/libimobiledevice/default.nix b/pkgs/development/libraries/libimobiledevice/default.nix
index a229bb1fef084..9a97bb0a67a20 100644
--- a/pkgs/development/libraries/libimobiledevice/default.nix
+++ b/pkgs/development/libraries/libimobiledevice/default.nix
@@ -77,6 +77,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.lgpl21Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/libraries/libmspack/default.nix b/pkgs/development/libraries/libmspack/default.nix
index a26f0c3f3a48f..d03cdd635cd13 100644
--- a/pkgs/development/libraries/libmspack/default.nix
+++ b/pkgs/development/libraries/libmspack/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "libmspack";
-  version = "0.10.1alpha";
+  version = "0.11alpha";
 
   src = fetchurl {
     url = "https://www.cabextract.org.uk/libmspack/${pname}-${version}.tar.gz";
-    sha256 = "13janaqsvm7aqc4agjgd4819pbgqv50j88bh5kci1z70wvg65j5s";
+    hash = "sha256-cN0fsvCuzDZ5G3Gh4YQOYhcweeraoIEZLRwyOg7uohs=";
   };
 
   meta = {
diff --git a/pkgs/development/libraries/libplist/default.nix b/pkgs/development/libraries/libplist/default.nix
index afd28996265cb..e6d5fd920246f 100644
--- a/pkgs/development/libraries/libplist/default.nix
+++ b/pkgs/development/libraries/libplist/default.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
     description = "A library to handle Apple Property List format in binary or XML";
     homepage = "https://github.com/libimobiledevice/libplist";
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     platforms = platforms.unix;
     mainProgram = "plistutil";
   };
diff --git a/pkgs/development/libraries/libpulsar/default.nix b/pkgs/development/libraries/libpulsar/default.nix
index 56132920147a5..2dabe89bc50b5 100644
--- a/pkgs/development/libraries/libpulsar/default.nix
+++ b/pkgs/development/libraries/libpulsar/default.nix
@@ -46,13 +46,13 @@ let
 in
 stdenv.mkDerivation (finalAttrs: rec {
   pname = "libpulsar";
-  version = "3.5.0";
+  version = "3.5.1";
 
   src = fetchFromGitHub {
     owner = "apache";
     repo = "pulsar-client-cpp";
     rev = "v${version}";
-    hash = "sha256-pNeoStDryyMtBolpp5nT5GFjYPuXg2ks1Ka1mjjN/9k=";
+    hash = "sha256-BSDkF0MAc54N59t7ozMLof0of4sURL3qiksLZhb+6I8=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ]
diff --git a/pkgs/development/libraries/libressl/default.nix b/pkgs/development/libraries/libressl/default.nix
index 5c60dd3bba1b1..59bcae1cd87ab 100644
--- a/pkgs/development/libraries/libressl/default.nix
+++ b/pkgs/development/libraries/libressl/default.nix
@@ -114,4 +114,9 @@ in {
     version = "3.8.4";
     hash = "sha256-wM75z+F0rDZs5IL1Qv3bB3Ief6DK+s40tJqHIPo3/n0=";
   };
+
+  libressl_3_9 = generic {
+    version = "3.9.1";
+    hash = "sha256-baC5VGlffuYrA/ZCAKik8Cr5Nxe2DM4Eq2yN8mLAelE=";
+  };
 }
diff --git a/pkgs/development/libraries/libserdes/default.nix b/pkgs/development/libraries/libserdes/default.nix
index ac776c4e42316..cc66f4cc13084 100644
--- a/pkgs/development/libraries/libserdes/default.nix
+++ b/pkgs/development/libraries/libserdes/default.nix
@@ -13,7 +13,7 @@
 
 stdenv.mkDerivation rec {
   pname = "libserdes";
-  version = "7.6.0";
+  version = "7.6.1";
 
   src = fetchFromGitHub {
     owner = "confluentinc";
diff --git a/pkgs/development/libraries/libtiff/default.nix b/pkgs/development/libraries/libtiff/default.nix
index a7360741fe842..04b67ff83bdeb 100644
--- a/pkgs/development/libraries/libtiff/default.nix
+++ b/pkgs/development/libraries/libtiff/default.nix
@@ -97,5 +97,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.libtiff;
     platforms = platforms.unix ++ platforms.windows;
     pkgConfigModules = [ "libtiff-4" ];
+    maintainers = teams.geospatial.members;
   };
 })
diff --git a/pkgs/development/libraries/libusbmuxd/default.nix b/pkgs/development/libraries/libusbmuxd/default.nix
index 5fa18444d0f4d..9230e79c46d04 100644
--- a/pkgs/development/libraries/libusbmuxd/default.nix
+++ b/pkgs/development/libraries/libusbmuxd/default.nix
@@ -37,6 +37,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/libimobiledevice/libusbmuxd";
     license = licenses.lgpl21Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/libraries/litehtml/default.nix b/pkgs/development/libraries/litehtml/default.nix
index b1864f6497a9f..b7626733210de 100644
--- a/pkgs/development/libraries/litehtml/default.nix
+++ b/pkgs/development/libraries/litehtml/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "litehtml";
-  version = "0.6";
+  version = "0.9";
 
   src = fetchFromGitHub {
     owner = "litehtml";
     repo = "litehtml";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-9571d3k8RkzEpMWPuIejZ7njLmYstSwFUaSqT3sk6uQ=";
+    hash = "sha256-ZE/HKzo3ejKpW/ih3sJwn2hzCtsBhAXeJWGezYd6Yc4";
   };
 
   # Don't search for non-existant gumbo cmake config
@@ -21,7 +21,7 @@ stdenv.mkDerivation (finalAttrs: {
   # Affects build of pkgs that depend on litehtml
   postPatch = ''
     substituteInPlace cmake/litehtmlConfig.cmake \
-      --replace "find_dependency(gumbo)" ""
+      --replace-fail "find_dependency(gumbo)" ""
   '';
 
   nativeBuildInputs = [
@@ -34,6 +34,8 @@ stdenv.mkDerivation (finalAttrs: {
 
   cmakeFlags = [
     "-DEXTERNAL_GUMBO=ON"
+    # BuildTesting need to download test data online
+    "-DLITEHTML_BUILD_TESTING=OFF"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/libraries/nco/default.nix b/pkgs/development/libraries/nco/default.nix
index a14a7267a1874..3ac017b22c14d 100644
--- a/pkgs/development/libraries/nco/default.nix
+++ b/pkgs/development/libraries/nco/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "nco";
-  version = "5.2.2";
+  version = "5.2.3";
 
   src = fetchFromGitHub {
     owner = "nco";
     repo = "nco";
     rev = finalAttrs.version;
-    hash = "sha256-d90088MKliM90KSbL0TNEafhfvLQlD/stO5V83fTXO0=";
+    hash = "sha256-a1Q1oK546F1itCtugpbh9fc+asokuXGMS51OgZ59bnY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/nghttp3/default.nix b/pkgs/development/libraries/nghttp3/default.nix
index 76de14079deb7..d2bd0900dd3c4 100644
--- a/pkgs/development/libraries/nghttp3/default.nix
+++ b/pkgs/development/libraries/nghttp3/default.nix
@@ -1,31 +1,29 @@
 { lib, stdenv, fetchFromGitHub
 , cmake
-, cunit, ncurses
 , curlHTTP3
 }:
 
 stdenv.mkDerivation rec {
   pname = "nghttp3";
-  version = "1.1.0";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "ngtcp2";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-B/5r0mRpOEi5DQ7OUAAcDmAm1nnak6qNz4qjDrzWlDc=";
+    hash = "sha256-kJt4aQGNiJ0XhlEKunR8jYKytv3rh23jRrNelCDe/Kk=";
+    fetchSubmodules = true;
   };
 
   outputs = [ "out" "dev" "doc" ];
 
   nativeBuildInputs = [ cmake ];
-  nativeCheckInputs = [ cunit ncurses ];
 
   cmakeFlags = [
-    "-DENABLE_STATIC_LIB=OFF"
+    (lib.cmakeBool "ENABLE_STATIC_LIB" false)
   ];
 
   doCheck = true;
-  enableParallelBuilding = true;
 
   passthru.tests = {
     inherit curlHTTP3;
diff --git a/pkgs/development/libraries/ngtcp2/default.nix b/pkgs/development/libraries/ngtcp2/default.nix
index 948fb0c071f43..344d85591eef0 100644
--- a/pkgs/development/libraries/ngtcp2/default.nix
+++ b/pkgs/development/libraries/ngtcp2/default.nix
@@ -1,34 +1,32 @@
 { lib, stdenv, fetchFromGitHub
 , cmake
-, cunit, ncurses
-, libev, nghttp3, quictls
+, brotli, libev, nghttp3, quictls
 , withJemalloc ? false, jemalloc
 , curlHTTP3
 }:
 
 stdenv.mkDerivation rec {
   pname = "ngtcp2";
-  version = "1.2.0";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "ngtcp2";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-/lHsHkSySKyZZdjTTYCo0a6cwcMcbOWNvAEcO36/kEw=";
+    hash = "sha256-te/kFt7/09QpmkHZ7dJxyKvvxP+mHtIQIgESkJATR38=";
+    fetchSubmodules = true;
   };
 
   outputs = [ "out" "dev" "doc" ];
 
   nativeBuildInputs = [ cmake ];
-  nativeCheckInputs = [ cunit ncurses ];
-  buildInputs = [ libev nghttp3 quictls ] ++ lib.optional withJemalloc jemalloc;
+  buildInputs = [ brotli libev nghttp3 quictls ] ++ lib.optional withJemalloc jemalloc;
 
   cmakeFlags = [
-    "-DENABLE_STATIC_LIB=OFF"
+    (lib.cmakeBool "ENABLE_STATIC_LIB" false)
   ];
 
   doCheck = true;
-  enableParallelBuilding = true;
 
   passthru.tests = {
     inherit curlHTTP3;
diff --git a/pkgs/development/libraries/podofo/0.10.x.nix b/pkgs/development/libraries/podofo/0.10.x.nix
index 6c4356e9add9b..93c989a9c1ec6 100644
--- a/pkgs/development/libraries/podofo/0.10.x.nix
+++ b/pkgs/development/libraries/podofo/0.10.x.nix
@@ -53,10 +53,6 @@ stdenv.mkDerivation (finalAttrs: {
     "-DCMAKE_BUILD_WITH_INSTALL_NAME_DIR=ON"
   ];
 
-  postInstall = ''
-    moveToOutput lib "$lib"
-  '';
-
   meta = {
     homepage = "https://github.com/podofo/podofo";
     description = "A library to work with the PDF file format";
diff --git a/pkgs/development/libraries/podofo/default.nix b/pkgs/development/libraries/podofo/default.nix
index 1243763421c08..85651d225f424 100644
--- a/pkgs/development/libraries/podofo/default.nix
+++ b/pkgs/development/libraries/podofo/default.nix
@@ -24,8 +24,13 @@ stdenv.mkDerivation rec {
     "-DCMAKE_BUILD_WITH_INSTALL_NAME_DIR=ON"
   ];
 
-  postInstall = ''
-    moveToOutput lib "$lib"
+  postPatch = ''
+    # Use GNU directories to fix multiple outputs
+    failNoMatches='t yes; b no; :yes h; :no p; $ {x; /./{x;q}; q1}'
+    sed -ni src/podofo/CMakeLists.txt \
+        -e 's/LIBDIRNAME/CMAKE_INSTALL_LIBDIR/' -e "$failNoMatches"
+    sed -ni src/podofo/libpodofo.pc.in \
+        -e 's/^libdir=.*/libdir=@CMAKE_INSTALL_LIBDIR@/' -e "$failNoMatches"
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/libraries/qmlbox2d/default.nix b/pkgs/development/libraries/qmlbox2d/default.nix
index e1e69b9f10b4d..0c50c9e3649bf 100644
--- a/pkgs/development/libraries/qmlbox2d/default.nix
+++ b/pkgs/development/libraries/qmlbox2d/default.nix
@@ -1,31 +1,51 @@
-{lib, stdenv, qtdeclarative, fetchFromGitHub, qmake }:
+{ lib, stdenv, qtbase, qtdeclarative, fetchFromGitHub, cmake, pkg-config, box2d }:
+
+let
+  inherit (lib) cmakeBool;
+
+  # 2.3.1 is the only supported version
+  box2d' = (box2d.override { settingsFile = "Box2D/Common/b2Settings.h"; }).overrideAttrs (old: rec {
+    version = "2.3.1";
+    src = fetchFromGitHub {
+      owner = "erincatto";
+      repo = "box2d";
+      rev = "v${version}";
+      hash = "sha256-Z2J17YMzQNZqABIa5eyJDT7BWfXveymzs+DWsrklPIs=";
+    };
+    sourceRoot = "source/Box2D";
+    cmakeFlags = old.cmakeFlags or [ ] ++ [
+      (cmakeBool "BOX2D_INSTALL" true)
+      (cmakeBool "BOX2D_BUILD_SHARED" true)
+      (cmakeBool "BOX2D_BUILD_EXAMPLES" false)
+    ];
+  });
+
+in
 stdenv.mkDerivation {
   pname = "qml-box2d";
-  version = "unstable-2018-04-06";
+  version = "unstable-2022-08-25";
+
   src = fetchFromGitHub {
     owner = "qml-box2d";
     repo = "qml-box2d";
-    sha256 = "0gb8limy6ck23z3k0k2j7c4c4s95p40f6lbzk4szq7fjnnw22kb7";
-    rev = "b7212d5640701f93f0cd88fbd3a32c619030ae62";
+    rev = "0bb88a6f871eef72b3b9ded9329c15f1da1f4fd7";
+    hash = "sha256-sfSVetpHIAIujpgjvRScAkJRlQQYjQ/yQrkWvp7Yu0s=";
   };
 
   dontWrapQtApps = true;
-  nativeBuildInputs = [ qmake ];
 
-  buildInputs = [ qtdeclarative ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
-  patchPhase = ''
-    substituteInPlace box2d.pro \
-      --replace '$$[QT_INSTALL_QML]' "/$qtQmlPrefix/"
-    qmakeFlags="$qmakeFlags PREFIXSHORTCUT=$out"
-    '';
+  buildInputs = [ box2d' qtbase qtdeclarative ];
 
-  installFlags = [ "INSTALL_ROOT=$(out)" ];
+  cmakeFlags = [
+    (cmakeBool "USE_SYSTEM_BOX2D" true)
+  ];
 
   meta = with lib; {
     description = "A QML plugin for Box2D engine";
     homepage = "https://github.com/qml-box2d/qml-box2d";
-    maintainers = [ maintainers.guibou ];
+    maintainers = with maintainers; [ guibou ];
     platforms = platforms.linux;
     license = licenses.zlib;
   };
diff --git a/pkgs/development/libraries/qt-6/default.nix b/pkgs/development/libraries/qt-6/default.nix
index ea65e5f3ae82c..96741ee8ae674 100644
--- a/pkgs/development/libraries/qt-6/default.nix
+++ b/pkgs/development/libraries/qt-6/default.nix
@@ -32,7 +32,10 @@ let
       callPackage = self.newScope ({
         inherit (self) qtModule;
         inherit srcs python3;
-        stdenv = if stdenv.hostPlatform.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv;
+        stdenv =
+          if stdenv.isDarwin
+          then overrideSDK stdenv { darwinMinVersion = "11.0"; darwinSdkVersion = "11.0"; }
+          else stdenv;
       });
     in
     {
@@ -51,14 +54,13 @@ let
           ./patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch
           ./patches/0002-qtbase-qmake-fix-mkspecs-for-darwin.patch
           ./patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
-          ./patches/0004-qtbase-deal-with-a-font-face-at-index-0-as-Regular-f.patch
-          ./patches/0005-qtbase-qt-cmake-always-use-cmake-from-path.patch
-          ./patches/0006-qtbase-find-tools-in-PATH.patch
-          ./patches/0007-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
-          ./patches/0008-qtbase-allow-translations-outside-prefix.patch
-          ./patches/0009-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch
-          ./patches/0010-qtbase-check-in-the-QML-folder-of-this-library-does-.patch
-          ./patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch
+          ./patches/0004-qtbase-qt-cmake-always-use-cmake-from-path.patch
+          ./patches/0005-qtbase-find-tools-in-PATH.patch
+          ./patches/0006-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
+          ./patches/0007-qtbase-allow-translations-outside-prefix.patch
+          ./patches/0008-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch
+          ./patches/0009-qtbase-check-in-the-QML-folder-of-this-library-does-.patch
+          ./patches/0010-qtbase-derive-plugin-load-path-from-PATH.patch
           # Revert "macOS: Silence warning about supporting secure state restoration"
           # fix build with macOS sdk < 12.0
           (fetchpatch2 {
@@ -168,7 +170,7 @@ let
           ({ qtModule }: qtModule.override {
             stdenv =
               if stdenv.isDarwin
-              then overrideSDK stdenv { darwinMinVersion = "10.13"; darwinSdkVersion = "11.0"; }
+              then overrideSDK stdenv { darwinMinVersion = "11.0"; darwinSdkVersion = "11.0"; }
               else stdenv;
           })
           { };
diff --git a/pkgs/development/libraries/qt-6/fetch.sh b/pkgs/development/libraries/qt-6/fetch.sh
index 52c6fb5f1b2e7..a9c84b4832386 100644
--- a/pkgs/development/libraries/qt-6/fetch.sh
+++ b/pkgs/development/libraries/qt-6/fetch.sh
@@ -1 +1 @@
-WGET_ARGS=( https://download.qt.io/official_releases/qt/6.6/6.6.3/submodules/ -A '*.tar.xz' )
+WGET_ARGS=( https://download.qt.io/official_releases/qt/6.7/6.7.0/submodules/ -A '*.tar.xz' )
diff --git a/pkgs/development/libraries/qt-6/modules/qtdeclarative.nix b/pkgs/development/libraries/qt-6/modules/qtdeclarative.nix
index 697556e30edc5..37be727298521 100644
--- a/pkgs/development/libraries/qt-6/modules/qtdeclarative.nix
+++ b/pkgs/development/libraries/qt-6/modules/qtdeclarative.nix
@@ -11,8 +11,8 @@ qtModule {
   propagatedBuildInputs = [ qtbase qtlanguageserver qtshadertools openssl python3 ];
   patches = [
     # prevent headaches from stale qmlcache data
-    ../patches/qtdeclarative-default-disable-qmlcache.patch
+    ../patches/0001-qtdeclarative-disable-qml-disk-cache.patch
     # add version specific QML import path
-    ../patches/qtdeclarative-qml-paths.patch
+    ../patches/0002-qtdeclarative-also-use-versioned-qml-paths.patch
   ];
 }
diff --git a/pkgs/development/libraries/qt-6/modules/qtmqtt.nix b/pkgs/development/libraries/qt-6/modules/qtmqtt.nix
index a9660b73710be..fc12a5fb1112c 100644
--- a/pkgs/development/libraries/qt-6/modules/qtmqtt.nix
+++ b/pkgs/development/libraries/qt-6/modules/qtmqtt.nix
@@ -5,13 +5,13 @@
 
 qtModule rec {
   pname = "qtmqtt";
-  version = "6.6.2";
+  version = "6.7.0";
 
   src = fetchFromGitHub {
     owner = "qt";
     repo = "qtmqtt";
     rev = "v${version}";
-    hash = "sha256-R8B7Vt/XzI7+17DDZ+TVbqfGKdEfUMiLa1BqzIbo4OM=";
+    hash = "sha256-LUYb4Wb1fLUwIvDOsVU/iSOyx9pcfPrmiFnQskbT2d8=";
   };
 
   propagatedBuildInputs = [ qtbase ];
diff --git a/pkgs/development/libraries/qt-6/modules/qtwebengine.nix b/pkgs/development/libraries/qt-6/modules/qtwebengine.nix
index f07aeefa0be00..e6f785cd833c7 100644
--- a/pkgs/development/libraries/qt-6/modules/qtwebengine.nix
+++ b/pkgs/development/libraries/qt-6/modules/qtwebengine.nix
@@ -122,9 +122,6 @@ qtModule {
   hardeningDisable = [ "format" ];
 
   patches = [
-    # removes macOS 12+ dependencies
-    ../patches/qtwebengine-darwin-no-low-latency-flag.patch
-    ../patches/qtwebengine-darwin-no-copy-certificate-chain.patch
     # Don't assume /usr/share/X11, and also respect the XKB_CONFIG_ROOT
     # environment variable, since NixOS relies on it working.
     # See https://github.com/NixOS/nixpkgs/issues/226484 for more context.
diff --git a/pkgs/development/libraries/qt-6/patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch b/pkgs/development/libraries/qt-6/patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch
index de35178f7929e..a8bb8f71cdbf0 100644
--- a/pkgs/development/libraries/qt-6/patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch
+++ b/pkgs/development/libraries/qt-6/patches/0001-qtbase-qmake-always-use-libname-instead-of-absolute-.patch
@@ -1,8 +1,8 @@
-From 90734859d2f9e6b9a1754c3e694ceb1a3c870bce Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Nick Cao <nickcao@nichi.co>
 Date: Thu, 13 Apr 2023 23:42:29 +0800
-Subject: [PATCH 01/11] qtbase: qmake: always use libname instead of absolute
- path in qmake files
+Subject: [PATCH] qtbase: qmake: always use libname instead of absolute path in
+ qmake files
 
 In generated qmake files, absolute paths to qt libraries are embedded
 and then used in linker flags. However as the libraries can be provided
@@ -45,6 +45,3 @@ index 3ffe354fd8d..441332d4582 100644
              list(APPEND out_list "${lib_name_with_link_flag}")
          else()
              list(APPEND out_list "${library_path}")
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/qtdeclarative-default-disable-qmlcache.patch b/pkgs/development/libraries/qt-6/patches/0001-qtdeclarative-disable-qml-disk-cache.patch
index a204d52c9f0c9..9afcc8240ab31 100644
--- a/pkgs/development/libraries/qt-6/patches/qtdeclarative-default-disable-qmlcache.patch
+++ b/pkgs/development/libraries/qt-6/patches/0001-qtdeclarative-disable-qml-disk-cache.patch
@@ -1,4 +1,4 @@
-From 2d561e0a80f2d123a7348187975ee845f9dcd9e0 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Nick Cao <nickcao@nichi.co>
 Date: Tue, 10 Oct 2023 11:12:27 -0400
 Subject: [PATCH] qtdeclarative: disable qml disk cache
@@ -8,10 +8,10 @@ Subject: [PATCH] qtdeclarative: disable qml disk cache
  1 file changed, 1 insertion(+), 5 deletions(-)
 
 diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
-index d1b4c4fff6..50f8a07420 100644
+index 506b920142..3cadb4fe06 100644
 --- a/src/qml/jsruntime/qv4engine.cpp
 +++ b/src/qml/jsruntime/qv4engine.cpp
-@@ -2232,11 +2232,7 @@ ExecutionEngine::DiskCacheOptions ExecutionEngine::diskCacheOptions() const
+@@ -2202,11 +2202,7 @@ ExecutionEngine::DiskCacheOptions ExecutionEngine::diskCacheOptions() const
  {
      if (forceDiskCache())
          return DiskCache::Enabled;
@@ -24,6 +24,3 @@ index d1b4c4fff6..50f8a07420 100644
  }
  
  void ExecutionEngine::callInContext(QV4::Function *function, QObject *self,
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0002-qtbase-qmake-fix-mkspecs-for-darwin.patch b/pkgs/development/libraries/qt-6/patches/0002-qtbase-qmake-fix-mkspecs-for-darwin.patch
index 6cdbec5abfc73..1e548950a2a6f 100644
--- a/pkgs/development/libraries/qt-6/patches/0002-qtbase-qmake-fix-mkspecs-for-darwin.patch
+++ b/pkgs/development/libraries/qt-6/patches/0002-qtbase-qmake-fix-mkspecs-for-darwin.patch
@@ -1,19 +1,19 @@
-From a804a9b1efdab0a71b9947e5c2bf9f6f5e316e0e Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Nick Cao <nickcao@nichi.co>
 Date: Fri, 14 Apr 2023 21:43:04 +0800
-Subject: [PATCH 02/11] qtbase: qmake: fix mkspecs for darwin
+Subject: [PATCH] qtbase: qmake: fix mkspecs for darwin
 
 ---
  mkspecs/common/mac.conf               |   2 +-
- mkspecs/features/mac/default_post.prf | 263 --------------------------
+ mkspecs/features/mac/default_post.prf | 264 --------------------------
  mkspecs/features/mac/default_pre.prf  |  58 ------
  mkspecs/features/mac/sdk.mk           |  27 ---
  mkspecs/features/mac/sdk.prf          |  61 ------
  mkspecs/features/mac/toolchain.prf    |   5 -
- 6 files changed, 1 insertion(+), 415 deletions(-)
+ 6 files changed, 1 insertion(+), 416 deletions(-)
 
 diff --git a/mkspecs/common/mac.conf b/mkspecs/common/mac.conf
-index 61bea952b2..9909dae726 100644
+index 61bea952b22..9909dae7260 100644
 --- a/mkspecs/common/mac.conf
 +++ b/mkspecs/common/mac.conf
 @@ -23,7 +23,7 @@ QMAKE_INCDIR_OPENGL     = \
@@ -26,7 +26,7 @@ index 61bea952b2..9909dae726 100644
  
  QMAKE_LFLAGS_REL_RPATH  =
 diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf
-index 0b64a586b9..3b40328304 100644
+index 0b64a586b93..3b40328304d 100644
 --- a/mkspecs/features/mac/default_post.prf
 +++ b/mkspecs/features/mac/default_post.prf
 @@ -1,9 +1,5 @@
@@ -311,7 +311,7 @@ index 0b64a586b9..3b40328304 100644
      generate_xcode_project.commands = @$(QMAKE) -spec macx-xcode \"$(EXPORT__PRO_FILE_)\" $$QMAKE_ARGS
      generate_xcode_project.target = xcodeproj
 diff --git a/mkspecs/features/mac/default_pre.prf b/mkspecs/features/mac/default_pre.prf
-index e3534561a5..3b01424e67 100644
+index e3534561a56..3b01424e67b 100644
 --- a/mkspecs/features/mac/default_pre.prf
 +++ b/mkspecs/features/mac/default_pre.prf
 @@ -1,60 +1,2 @@
@@ -376,7 +376,7 @@ index e3534561a5..3b01424e67 100644
 -xcode_copy_phase_strip_setting.value = NO
 -QMAKE_MAC_XCODE_SETTINGS += xcode_copy_phase_strip_setting
 diff --git a/mkspecs/features/mac/sdk.mk b/mkspecs/features/mac/sdk.mk
-index a32ceacb6c..e69de29bb2 100644
+index a32ceacb6ce..e69de29bb2d 100644
 --- a/mkspecs/features/mac/sdk.mk
 +++ b/mkspecs/features/mac/sdk.mk
 @@ -1,27 +0,0 @@
@@ -408,7 +408,7 @@ index a32ceacb6c..e69de29bb2 100644
 -    endif
 -endif
 diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf
-index 3a9c2778bb..e69de29bb2 100644
+index 3a9c2778bbe..e69de29bb2d 100644
 --- a/mkspecs/features/mac/sdk.prf
 +++ b/mkspecs/features/mac/sdk.prf
 @@ -1,61 +0,0 @@
@@ -474,7 +474,7 @@ index 3a9c2778bb..e69de29bb2 100644
 -    cache($$tool_variable, set stash, $$tool)
 -}
 diff --git a/mkspecs/features/mac/toolchain.prf b/mkspecs/features/mac/toolchain.prf
-index df191eb13c..e69de29bb2 100644
+index df191eb13c4..e69de29bb2d 100644
 --- a/mkspecs/features/mac/toolchain.prf
 +++ b/mkspecs/features/mac/toolchain.prf
 @@ -1,5 +0,0 @@
diff --git a/pkgs/development/libraries/qt-6/patches/qtdeclarative-qml-paths.patch b/pkgs/development/libraries/qt-6/patches/0002-qtdeclarative-also-use-versioned-qml-paths.patch
index 39b7a30892cf3..d857d7ac1bbac 100644
--- a/pkgs/development/libraries/qt-6/patches/qtdeclarative-qml-paths.patch
+++ b/pkgs/development/libraries/qt-6/patches/0002-qtdeclarative-also-use-versioned-qml-paths.patch
@@ -1,8 +1,17 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Nick Cao <nickcao@nichi.co>
+Date: Wed, 7 Feb 2024 11:49:04 -0500
+Subject: [PATCH] qtdeclarative: also use versioned qml paths
+
+---
+ src/qml/qml/qqmlimport.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
 diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp
-index 2e482c220d..4873809bec 100644
+index f9cc8da240..f8cb033be0 100644
 --- a/src/qml/qml/qqmlimport.cpp
 +++ b/src/qml/qml/qqmlimport.cpp
-@@ -1517,6 +1517,7 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e)
+@@ -1520,6 +1520,7 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e)
      // env import paths
      addEnvImportPath("QML_IMPORT_PATH");
      addEnvImportPath("QML2_IMPORT_PATH");
diff --git a/pkgs/development/libraries/qt-6/patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch b/pkgs/development/libraries/qt-6/patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
index 53f226254a19a..f2f9425841a8e 100644
--- a/pkgs/development/libraries/qt-6/patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
+++ b/pkgs/development/libraries/qt-6/patches/0003-qtbase-qmake-fix-includedir-in-generated-pkg-config.patch
@@ -1,14 +1,14 @@
-From 6088085d3074316dd74639fc6c1233e5862aff11 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Nick Cao <nickcao@nichi.co>
 Date: Fri, 14 Apr 2023 09:34:46 +0800
-Subject: [PATCH 03/11] qtbase: qmake: fix includedir in generated pkg-config
+Subject: [PATCH] qtbase: qmake: fix includedir in generated pkg-config
 
 ---
  qmake/generators/makefile.cpp | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
-index 11d2f0ff7df..c78ed0d3485 100644
+index 482ef2e2697..49217e62cda 100644
 --- a/qmake/generators/makefile.cpp
 +++ b/qmake/generators/makefile.cpp
 @@ -3412,8 +3412,7 @@ MakefileGenerator::writePkgConfigFile()
@@ -21,6 +21,3 @@ index 11d2f0ff7df..c78ed0d3485 100644
      if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle")
          && libDir != QLatin1String("/Library/Frameworks")) {
              t << " -F${libdir}";
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0004-qtbase-deal-with-a-font-face-at-index-0-as-Regular-f.patch b/pkgs/development/libraries/qt-6/patches/0004-qtbase-deal-with-a-font-face-at-index-0-as-Regular-f.patch
deleted file mode 100644
index ccd0fb02fcd81..0000000000000
--- a/pkgs/development/libraries/qt-6/patches/0004-qtbase-deal-with-a-font-face-at-index-0-as-Regular-f.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 82e243f326aea40e7f3da935d8166979b11e8063 Mon Sep 17 00:00:00 2001
-From: Nick Cao <nickcao@nichi.co>
-Date: Tue, 21 Mar 2023 15:48:49 +0800
-Subject: [PATCH 04/11] qtbase: deal with a font face at index 0 as Regular for
- Variable fonts
-
-Reference: https://bugreports.qt.io/browse/QTBUG-111994
----
- src/gui/text/unix/qfontconfigdatabase.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/gui/text/unix/qfontconfigdatabase.cpp b/src/gui/text/unix/qfontconfigdatabase.cpp
-index 474644b871f..c7a117fd134 100644
---- a/src/gui/text/unix/qfontconfigdatabase.cpp
-+++ b/src/gui/text/unix/qfontconfigdatabase.cpp
-@@ -556,6 +556,7 @@ void QFontconfigDatabase::populateFontDatabase()
-             FcObjectSetAdd(os, *p);
-             ++p;
-         }
-+        FcPatternAddBool(pattern, FC_VARIABLE, FcFalse);
-         fonts = FcFontList(nullptr, pattern, os);
-         FcObjectSetDestroy(os);
-         FcPatternDestroy(pattern);
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0004-qtbase-qt-cmake-always-use-cmake-from-path.patch b/pkgs/development/libraries/qt-6/patches/0004-qtbase-qt-cmake-always-use-cmake-from-path.patch
new file mode 100644
index 0000000000000..56d19e0bb817f
--- /dev/null
+++ b/pkgs/development/libraries/qt-6/patches/0004-qtbase-qt-cmake-always-use-cmake-from-path.patch
@@ -0,0 +1,48 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Nick Cao <nickcao@nichi.co>
+Date: Wed, 12 Apr 2023 10:13:50 +0800
+Subject: [PATCH] qtbase: qt-cmake: always use cmake from path
+
+The generated qt-cmake scripts embeds the absolute path of cmake used
+during the build of qtbase, bloating the runtime closure of qtbase.
+---
+ bin/qt-cmake-create.in | 7 +------
+ bin/qt-cmake.in        | 7 +------
+ 2 files changed, 2 insertions(+), 12 deletions(-)
+
+diff --git a/bin/qt-cmake-create.in b/bin/qt-cmake-create.in
+index 7865d0fe91b..884dc4aba93 100755
+--- a/bin/qt-cmake-create.in
++++ b/bin/qt-cmake-create.in
+@@ -7,12 +7,7 @@ HELP_MESSAGE="Usage
+ script_dir_path=`dirname $0`
+ script_dir_path=`(cd "$script_dir_path"; /bin/pwd)`
+ 
+-# Try to use original cmake, otherwise to make it relocatable, use any cmake found in PATH.
+-original_cmake_path="@CMAKE_COMMAND@"
+-cmake_path=$original_cmake_path
+-if ! test -f "$cmake_path"; then
+-    cmake_path="cmake"
+-fi
++cmake_path="cmake"
+ 
+ if [ "$#" -gt 1 ]; then
+     echo "Invalid number of arguments"
+diff --git a/bin/qt-cmake.in b/bin/qt-cmake.in
+index f719257f602..571ffe788fa 100755
+--- a/bin/qt-cmake.in
++++ b/bin/qt-cmake.in
+@@ -4,12 +4,7 @@
+ script_dir_path=`dirname $0`
+ script_dir_path=`(cd "$script_dir_path"; /bin/pwd)`
+ 
+-# Try to use original cmake, otherwise to make it relocatable, use any cmake found in PATH.
+-original_cmake_path="@CMAKE_COMMAND@"
+-cmake_path=$original_cmake_path
+-if ! test -f "$cmake_path"; then
+-    cmake_path="cmake"
+-fi
++cmake_path="cmake"
+ 
+ toolchain_path="$script_dir_path/@__GlobalConfig_relative_path_from_bin_dir_to_cmake_config_dir@/qt.toolchain.cmake"
+ 
diff --git a/pkgs/development/libraries/qt-6/patches/0006-qtbase-find-tools-in-PATH.patch b/pkgs/development/libraries/qt-6/patches/0005-qtbase-find-tools-in-PATH.patch
index 1d60684e07008..df1b67654b615 100644
--- a/pkgs/development/libraries/qt-6/patches/0006-qtbase-find-tools-in-PATH.patch
+++ b/pkgs/development/libraries/qt-6/patches/0005-qtbase-find-tools-in-PATH.patch
@@ -1,7 +1,7 @@
-From a8b9fae710a2bd5e743f5e16364eaa8c38dbd784 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: rewine <luhongxu@deepin.org>
 Date: Wed, 29 Mar 2023 11:51:33 +0800
-Subject: [PATCH 06/11] qtbase-find-tools-in-PATH
+Subject: [PATCH] qtbase: find tools in PATH
 
 1. find qt's tools in `QTTOOLSPATH` env
    qt assumes that all components use the same install prefix
@@ -19,10 +19,10 @@ Subject: [PATCH 06/11] qtbase-find-tools-in-PATH
  1 file changed, 8 insertions(+), 3 deletions(-)
 
 diff --git a/cmake/QtDocsHelpers.cmake b/cmake/QtDocsHelpers.cmake
-index 48ed5a324bf..91d8d41fb1f 100644
+index 8b631e88ca5..922639a9985 100644
 --- a/cmake/QtDocsHelpers.cmake
 +++ b/cmake/QtDocsHelpers.cmake
-@@ -47,9 +47,14 @@ function(qt_internal_add_docs)
+@@ -72,9 +72,14 @@ function(qt_internal_add_docs)
          set(doc_tools_libexec "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_LIBEXECDIR}")
      endif()
  
@@ -40,6 +40,3 @@ index 48ed5a324bf..91d8d41fb1f 100644
  
      get_target_property(target_type ${target} TYPE)
      if (NOT target_type STREQUAL "INTERFACE_LIBRARY")
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0005-qtbase-qt-cmake-always-use-cmake-from-path.patch b/pkgs/development/libraries/qt-6/patches/0005-qtbase-qt-cmake-always-use-cmake-from-path.patch
deleted file mode 100644
index ad30ebc714134..0000000000000
--- a/pkgs/development/libraries/qt-6/patches/0005-qtbase-qt-cmake-always-use-cmake-from-path.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From b480022b364b262d5ff63738c02318da925f5c79 Mon Sep 17 00:00:00 2001
-From: Nick Cao <nickcao@nichi.co>
-Date: Wed, 12 Apr 2023 10:13:50 +0800
-Subject: [PATCH 05/11] qtbase: qt-cmake: always use cmake from path
-
-The generated qt-cmake scripts embeds the absolute path of cmake used
-during the build of qtbase, bloating the runtime closure of qtbase.
----
- bin/qt-cmake.in | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/bin/qt-cmake.in b/bin/qt-cmake.in
-index f719257f602..571ffe788fa 100755
---- a/bin/qt-cmake.in
-+++ b/bin/qt-cmake.in
-@@ -4,12 +4,7 @@
- script_dir_path=`dirname $0`
- script_dir_path=`(cd "$script_dir_path"; /bin/pwd)`
- 
--# Try to use original cmake, otherwise to make it relocatable, use any cmake found in PATH.
--original_cmake_path="@CMAKE_COMMAND@"
--cmake_path=$original_cmake_path
--if ! test -f "$cmake_path"; then
--    cmake_path="cmake"
--fi
-+cmake_path="cmake"
- 
- toolchain_path="$script_dir_path/@__GlobalConfig_relative_path_from_bin_dir_to_cmake_config_dir@/qt.toolchain.cmake"
- 
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0007-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch b/pkgs/development/libraries/qt-6/patches/0006-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
index 7bf2193bc2081..de4c12ef04482 100644
--- a/pkgs/development/libraries/qt-6/patches/0007-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
+++ b/pkgs/development/libraries/qt-6/patches/0006-qtbase-pass-to-qmlimportscanner-the-QML2_IMPORT_PATH.patch
@@ -1,17 +1,17 @@
-From d7a9a3b0ecdbb1b5829f25954d763d767f1c8794 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Nick Cao <nickcao@nichi.co>
 Date: Tue, 10 Oct 2023 10:12:56 -0400
-Subject: [PATCH 07/11] qtbase: pass to qmlimportscanner the QML2_IMPORT_PATH
+Subject: [PATCH] qtbase: pass to qmlimportscanner the QML2_IMPORT_PATH
 
 ---
  src/tools/macdeployqt/shared/shared.cpp | 7 +++++++
  1 file changed, 7 insertions(+)
 
 diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
-index 2ae4f998944..ba10ae02bcd 100644
+index b7ee93f6fc1..57b68627eba 100644
 --- a/src/tools/macdeployqt/shared/shared.cpp
 +++ b/src/tools/macdeployqt/shared/shared.cpp
-@@ -1297,6 +1297,13 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
+@@ -1300,6 +1300,13 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
      argumentList.append( "-importPath");
      argumentList.append(qmlImportsPath);
  
@@ -25,6 +25,3 @@ index 2ae4f998944..ba10ae02bcd 100644
      // run qmlimportscanner
      QProcess qmlImportScanner;
      qmlImportScanner.start(qmlImportScannerPath, argumentList);
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0008-qtbase-allow-translations-outside-prefix.patch b/pkgs/development/libraries/qt-6/patches/0007-qtbase-allow-translations-outside-prefix.patch
index 07f1973d76077..d8061f1610e97 100644
--- a/pkgs/development/libraries/qt-6/patches/0008-qtbase-allow-translations-outside-prefix.patch
+++ b/pkgs/development/libraries/qt-6/patches/0007-qtbase-allow-translations-outside-prefix.patch
@@ -1,14 +1,14 @@
-From 79da6bb6ff075e8cf972be8a462630f1ec86bf0a Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Nick Cao <nickcao@nichi.co>
 Date: Tue, 10 Oct 2023 10:14:40 -0400
-Subject: [PATCH 08/11] qtbase: allow translations outside prefix
+Subject: [PATCH] qtbase: allow translations outside prefix
 
 ---
- cmake/QtBuild.cmake | 2 +-
+ cmake/QtBuildPathsHelpers.cmake | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/cmake/QtBuildPathsHelpers.cmake b/cmake/QtBuildPathsHelpers.cmake
-index edc43f2f14..78fa219515 100644
+index 18082ac6a5f..e16aea7d7c6 100644
 --- a/cmake/QtBuildPathsHelpers.cmake
 +++ b/cmake/QtBuildPathsHelpers.cmake
 @@ -134,7 +134,7 @@ function(qt_configure_process_path name default docstring)
diff --git a/pkgs/development/libraries/qt-6/patches/0009-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch b/pkgs/development/libraries/qt-6/patches/0008-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch
index fb17a539f053b..597dd7e6550d0 100644
--- a/pkgs/development/libraries/qt-6/patches/0009-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch
+++ b/pkgs/development/libraries/qt-6/patches/0008-qtbase-find-qmlimportscanner-in-macdeployqt-via-envi.patch
@@ -1,8 +1,7 @@
-From d503be89320f0b89b80acb19769971e855be6ae1 Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Juan=20Pedro=20Bol=C3=ADvar=20Puente?= <raskolnikov@gnu.org>
 Date: Wed, 9 Aug 2023 16:16:21 +0200
-Subject: [PATCH 09/11] qtbase: find qmlimportscanner in macdeployqt via
- environment
+Subject: [PATCH] qtbase: find qmlimportscanner in macdeployqt via environment
 
 The qmlimportscanner tool is provided by qtdeclarative. Because of the
 modularized installation in Nix, it can not be found via the usual
@@ -17,10 +16,10 @@ a workaround for users.
  1 file changed, 4 insertions(+)
 
 diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
-index ba10ae02bcd..320095a972d 100644
+index 57b68627eba..2b972a76c49 100644
 --- a/src/tools/macdeployqt/shared/shared.cpp
 +++ b/src/tools/macdeployqt/shared/shared.cpp
-@@ -1277,6 +1277,10 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
+@@ -1280,6 +1280,10 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
      if (!QFile::exists(qmlImportScannerPath))
          qmlImportScannerPath = QCoreApplication::applicationDirPath() + "/qmlimportscanner";
  
@@ -31,6 +30,3 @@ index ba10ae02bcd..320095a972d 100644
      // Verify that we found a qmlimportscanner binary
      if (!QFile::exists(qmlImportScannerPath)) {
          LogError() << "qmlimportscanner not found at" << qmlImportScannerPath;
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0010-qtbase-check-in-the-QML-folder-of-this-library-does-.patch b/pkgs/development/libraries/qt-6/patches/0009-qtbase-check-in-the-QML-folder-of-this-library-does-.patch
index ed749cb238a54..890c68a97f77f 100644
--- a/pkgs/development/libraries/qt-6/patches/0010-qtbase-check-in-the-QML-folder-of-this-library-does-.patch
+++ b/pkgs/development/libraries/qt-6/patches/0009-qtbase-check-in-the-QML-folder-of-this-library-does-.patch
@@ -1,8 +1,8 @@
-From c00e310092d9aeb48adf21dd22f1ee4dbdbf5ebb Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Nick Cao <nickcao@nichi.co>
 Date: Tue, 10 Oct 2023 10:17:00 -0400
-Subject: [PATCH 10/11] qtbase: check in the QML folder of this library does
- actually exist
+Subject: [PATCH] qtbase: check in the QML folder of this library does actually
+ exist
 
 In a modularized installation, this folder will be the location where
 `qtbase` itself is installed, but `qtbase` does not have any QML
@@ -12,10 +12,10 @@ code, and `qmlimportscanner` will complain that it does not exist.
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
-index 320095a972d..87ba0d4e24b 100644
+index 2b972a76c49..96c61b3824a 100644
 --- a/src/tools/macdeployqt/shared/shared.cpp
 +++ b/src/tools/macdeployqt/shared/shared.cpp
-@@ -1297,9 +1297,12 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
+@@ -1300,9 +1300,12 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
      }
      for (const QString &importPath : qmlImportPaths)
          argumentList << "-importPath" << importPath;
@@ -30,6 +30,3 @@ index 320095a972d..87ba0d4e24b 100644
  
      // In a modularized installation of qt as we have in Nix, instead, we will
      // read the paths from the environment, as they are spread in multiple
--- 
-2.42.0
-
diff --git a/pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch b/pkgs/development/libraries/qt-6/patches/0010-qtbase-derive-plugin-load-path-from-PATH.patch
index cae39e879120e..b950b7d4ac79f 100644
--- a/pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch
+++ b/pkgs/development/libraries/qt-6/patches/0010-qtbase-derive-plugin-load-path-from-PATH.patch
@@ -1,17 +1,17 @@
-From 6f0e6fe1e13ca5844a93d3b97111b7ece7e60f0f Mon Sep 17 00:00:00 2001
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Milan=20P=C3=A4ssler?= <me@pbb.lc>
 Date: Sun, 10 May 2020 12:47:28 +0200
-Subject: [PATCH 11/11] qtbase: derive plugin load path from PATH
+Subject: [PATCH] qtbase: derive plugin load path from PATH
 
 ---
  src/corelib/kernel/qcoreapplication.cpp | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
-index a80efbb5622..0d41dabeed3 100644
+index 1ce2642cf2d..48fd91a0d7f 100644
 --- a/src/corelib/kernel/qcoreapplication.cpp
 +++ b/src/corelib/kernel/qcoreapplication.cpp
-@@ -3032,6 +3032,15 @@ QStringList QCoreApplication::libraryPathsLocked()
+@@ -3038,6 +3038,15 @@ QStringList QCoreApplication::libraryPathsLocked()
                  app_libpaths->append(installPathPlugins);
          }
  
@@ -27,6 +27,3 @@ index a80efbb5622..0d41dabeed3 100644
          // If QCoreApplication is not yet instantiated,
          // make sure we add the application path when we construct the QCoreApplication
          if (self) self->d_func()->appendApplicationPathToLibraryPaths();
--- 
-2.43.1
-
diff --git a/pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-copy-certificate-chain.patch b/pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-copy-certificate-chain.patch
deleted file mode 100644
index c7e461945c045..0000000000000
--- a/pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-copy-certificate-chain.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/src/3rdparty/chromium/net/cert/x509_util_apple.cc b/src/3rdparty/chromium/net/cert/x509_util_apple.cc
-index ae69948dfca..7062a9a9b97 100644
---- a/src/3rdparty/chromium/net/cert/x509_util_apple.cc
-+++ b/src/3rdparty/chromium/net/cert/x509_util_apple.cc
-@@ -139,11 +139,6 @@ SHA256HashValue CalculateFingerprint256(SecCertificateRef cert) {
- 
- base::ScopedCFTypeRef<CFArrayRef> CertificateChainFromSecTrust(
-     SecTrustRef trust) {
--  if (__builtin_available(macOS 12.0, iOS 15.0, *)) {
--    return base::ScopedCFTypeRef<CFArrayRef>(
--        SecTrustCopyCertificateChain(trust));
--  }
--
-   base::ScopedCFTypeRef<CFMutableArrayRef> chain(
-       CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks));
-   const CFIndex chain_length = SecTrustGetCertificateCount(trust);
diff --git a/pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-low-latency-flag.patch b/pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-low-latency-flag.patch
deleted file mode 100644
index 3df917edf5ccf..0000000000000
--- a/pkgs/development/libraries/qt-6/patches/qtwebengine-darwin-no-low-latency-flag.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-diff --git a/src/3rdparty/chromium/media/gpu/mac/vt_video_encode_accelerator_mac.cc b/src/3rdparty/chromium/media/gpu/mac/vt_video_encode_accelerator_mac.cc
-index d4b0161b2e..e5a0eb1967 100644
---- a/src/3rdparty/chromium/media/gpu/mac/vt_video_encode_accelerator_mac.cc
-+++ b/src/3rdparty/chromium/media/gpu/mac/vt_video_encode_accelerator_mac.cc
-@@ -29,12 +29,6 @@
- #include "media/base/video_types.h"
- #include "media/video/video_encode_accelerator.h"
- 
--// This is a min version of macOS where we want to support SVC encoding via
--// EnableLowLatencyRateControl flag. The flag is actually supported since 11.3,
--// but there we see frame drops even with ample bitrate budget. Excessive frame
--// drops were fixed in 12.0.1.
--#define LOW_LATENCY_FLAG_AVAILABLE_VER 12.0.1
--
- namespace media {
- 
- namespace {
-@@ -277,8 +271,6 @@ VTVideoEncodeAccelerator::GetSupportedH264Profiles() {
-   profile.rate_control_modes = VideoEncodeAccelerator::kConstantMode |
-                                VideoEncodeAccelerator::kVariableMode;
-   profile.scalability_modes.push_back(SVCScalabilityMode::kL1T1);
--  if (__builtin_available(macOS LOW_LATENCY_FLAG_AVAILABLE_VER, *))
--    profile.scalability_modes.push_back(SVCScalabilityMode::kL1T2);
- 
-   for (const auto& supported_profile : kSupportedProfiles) {
-     if (VideoCodecProfileToVideoCodec(supported_profile) == VideoCodec::kH264) {
-@@ -814,14 +806,6 @@ bool VTVideoEncodeAccelerator::CreateCompressionSession(
-     encoder_values.push_back(kCFBooleanFalse);
-   }
- 
--  if (__builtin_available(macOS LOW_LATENCY_FLAG_AVAILABLE_VER, *)) {
--    // Remove the validation once HEVC SVC mode is supported on macOS.
--    if (require_low_delay_ && codec == VideoCodec::kH264) {
--      encoder_keys.push_back(
--          kVTVideoEncoderSpecification_EnableLowLatencyRateControl);
--      encoder_values.push_back(kCFBooleanTrue);
--    }
--  }
-   base::ScopedCFTypeRef<CFDictionaryRef> encoder_spec =
-       video_toolbox::DictionaryWithKeysAndValues(
-           encoder_keys.data(), encoder_values.data(), encoder_keys.size());
-@@ -891,19 +875,8 @@ bool VTVideoEncodeAccelerator::ConfigureCompressionSession(VideoCodec codec) {
- 
-   // Remove the validation once HEVC SVC mode is supported on macOS.
-   if (num_temporal_layers_ == 2 && codec_ == VideoCodec::kH264) {
--    if (__builtin_available(macOS LOW_LATENCY_FLAG_AVAILABLE_VER, *)) {
--      if (!session_property_setter.IsSupported(
--              kVTCompressionPropertyKey_BaseLayerFrameRateFraction)) {
--        DLOG(ERROR) << "BaseLayerFrameRateFraction is not supported";
--        return false;
--      }
--      rv &= session_property_setter.Set(
--          kVTCompressionPropertyKey_BaseLayerFrameRateFraction, 0.5);
--      DLOG_IF(ERROR, !rv) << " Setting BaseLayerFrameRate property failed.";
--    } else {
-       DLOG(ERROR) << "SVC encoding is not supported on this OS version.";
-       rv = false;
--    }
-   }
- 
-   return rv;
diff --git a/pkgs/development/libraries/qt-6/srcs.nix b/pkgs/development/libraries/qt-6/srcs.nix
index 5edd42d3004ea..767755fcbd877 100644
--- a/pkgs/development/libraries/qt-6/srcs.nix
+++ b/pkgs/development/libraries/qt-6/srcs.nix
@@ -4,315 +4,315 @@
 
 {
   qt3d = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qt3d-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0v6zprw9r4z4inj7mg364n959c6japklm7ji2952nm3i01zp8jd5";
-      name = "qt3d-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qt3d-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0934i5b90hyxk8s58ji7mc062wdsxlvb45y79ygvfcl6psl84fw0";
+      name = "qt3d-everywhere-src-6.7.0.tar.xz";
     };
   };
   qt5compat = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qt5compat-everywhere-src-6.6.3.tar.xz";
-      sha256 = "02zcrrh6rq5p6bqix5nk2h22rfqdrf4d0h7y4rva5zmbbr7czhk8";
-      name = "qt5compat-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qt5compat-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1x8r9rjkyxhn2fzhj53z7biqd0hxkka5rdp0cc5s9n25hgyx8jcx";
+      name = "qt5compat-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtactiveqt = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtactiveqt-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0balhrmzmjrqn6h2r3rr00776vxhdpqzwhk9knrlvix8i1kr86x1";
-      name = "qtactiveqt-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtactiveqt-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1cyh6h4829pjsklks1agym6gzz7pz2hbydvfqd190izv2fi8a125";
+      name = "qtactiveqt-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtbase = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtbase-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0qklvzg242ilxw29jd2vsz6s8ni4dpraf4ghfa4dykhc705zv4q4";
-      name = "qtbase-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtbase-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0m5jp0rh5965d242s68wdvrxy3x1a6z3p89y8lxhxysj5sgf5chi";
+      name = "qtbase-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtcharts = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtcharts-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1rbz2nm8wrdf060cssvs69b5kqv0ybxjqw1clm5mdllg2j38i5jh";
-      name = "qtcharts-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtcharts-everywhere-src-6.7.0.tar.xz";
+      sha256 = "193w5grxndh0gfnyfipn7jdlskfz5b43h97zwbyh3yqvr6c597c9";
+      name = "qtcharts-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtconnectivity = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtconnectivity-everywhere-src-6.6.3.tar.xz";
-      sha256 = "066mf4d6a81ywviwr8bvm1mpm2ykjzysvcc0v2x82h5bl28vl6h9";
-      name = "qtconnectivity-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtconnectivity-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0k14f7fqhychxj9j6xwad9yp7wjf7ps5f427l65krxwzq6mddbq7";
+      name = "qtconnectivity-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtdatavis3d = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtdatavis3d-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1gyz83hkmjin3fr3brg00qchbb0awprwx99idysrc6chckj825wv";
-      name = "qtdatavis3d-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtdatavis3d-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1a8v150bva3v9njhma7424jbczjb76l7pgzw61b0qyck326j94ss";
+      name = "qtdatavis3d-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtdeclarative = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtdeclarative-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1wwjlwjb3hnlpai4rrrdsm096a6ahb1izs3524r79jpjzhn7n805";
-      name = "qtdeclarative-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtdeclarative-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0b4yz9c4lba9p5xgzaymz3a8fwl8s1p8cb0nh6jwrmvlk9bkj32s";
+      name = "qtdeclarative-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtdoc = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtdoc-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1j7awdbg7c0slbyhld8cdbx4dic7hhqv3g1qka809bjcxa2hb188";
-      name = "qtdoc-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtdoc-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0h4w06rc8xz31iy5g8cmxs9d0p9pd6nxlyjp2k6bbr2dq085w7lr";
+      name = "qtdoc-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtgraphs = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtgraphs-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1ppdas6bl22z69w8wdy7xl0f1kyqja2gwjd4cn6kjmsslws5rhi2";
-      name = "qtgraphs-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtgraphs-everywhere-src-6.7.0.tar.xz";
+      sha256 = "15clif3warl4hbgdjbpnpfgy4mi2y8hkj5sc4afhzbv2gsbd2dab";
+      name = "qtgraphs-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtgrpc = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtgrpc-everywhere-src-6.6.3.tar.xz";
-      sha256 = "11q9cqqk8bs3k6n5pxys2r4fisbs3xvv8d8lsi7wm25rqh5qv1kj";
-      name = "qtgrpc-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtgrpc-everywhere-src-6.7.0.tar.xz";
+      sha256 = "18gsi9sb4v4q2g0ccmf6nkj37vzixaaha3mk882p3qys250b26dp";
+      name = "qtgrpc-everywhere-src-6.7.0.tar.xz";
     };
   };
   qthttpserver = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qthttpserver-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0dbqx36ywfmqi4nxfi4dl17scj9nkl8sbpb670ffy3nh8pbpib21";
-      name = "qthttpserver-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qthttpserver-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1ylvz3cny3g68lqdcy2bqii1820nyaspn28dybp7wlr15f5y7qn2";
+      name = "qthttpserver-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtimageformats = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtimageformats-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0z328i6fix1qdklfbs1w4dsr64zavjj5kzqvzipww0v62xhfm99w";
-      name = "qtimageformats-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtimageformats-everywhere-src-6.7.0.tar.xz";
+      sha256 = "19r9q233pwiqqf57khdv1qfnjkqxnzfk7zhnk32i2nnxr1zf0v2i";
+      name = "qtimageformats-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtlanguageserver = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtlanguageserver-everywhere-src-6.6.3.tar.xz";
-      sha256 = "136gyvkzm6skdv5yhyy4nqhbczfc2mn4nbr9hvpkpljb0awv888h";
-      name = "qtlanguageserver-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtlanguageserver-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1z69fqgqbbipwfhlabs0z6axx4br1a1qjk404jnbgxxx58scp7m9";
+      name = "qtlanguageserver-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtlocation = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtlocation-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1l81z3zq1zg015l6qxx4yzssdspw689m9bpzxp23yshaych2kd6p";
-      name = "qtlocation-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtlocation-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0snl7a8fax0771hqaa0g653f0428x7c546zc4vsrinqppik4s15v";
+      name = "qtlocation-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtlottie = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtlottie-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1d0fjb0080wnd71f50zwal1b504iimln9mpnb3sc5yznmv8gm4cq";
-      name = "qtlottie-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtlottie-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1vd27g93kjala7849ny3n4nw0xg2j7ba2i682fyhdq4r7kggn3ww";
+      name = "qtlottie-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtmultimedia = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtmultimedia-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1ciswpv8p71j9hwwdhfr5pmsrnizlaijp0dnyc99lk5is8qgh05y";
-      name = "qtmultimedia-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtmultimedia-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0w4c0yyzgfhm6vd4qkxllh2cqw5q3giybqf9n2iyckixkvjbm57k";
+      name = "qtmultimedia-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtnetworkauth = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtnetworkauth-everywhere-src-6.6.3.tar.xz";
-      sha256 = "153mpg4hv3nclcdrkbzkalg4xf5k6r64fj003b725zyp885s7fax";
-      name = "qtnetworkauth-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtnetworkauth-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0iaalz7kpbjzjcrf5nmcw7322mq381s4jakfh8yks8phdxhhaccr";
+      name = "qtnetworkauth-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtpositioning = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtpositioning-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1frzzndsscb6iqschklks2l17ppnjpnx1lq1cypnq3x0598bcdws";
-      name = "qtpositioning-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtpositioning-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1pwxc2fhwvmq0mwrv9fak3d1bh23b7maxshyp0fs1j167jj1nq0x";
+      name = "qtpositioning-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtquick3d = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquick3d-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1qls5cydhm7p1g3gqzvnism8k0h6wjzi8x12gn51dapvnzq2cxlr";
-      name = "qtquick3d-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtquick3d-everywhere-src-6.7.0.tar.xz";
+      sha256 = "046rgvvf4a37b0anqn1h814231ibw8kxk4yd9yvk7ab57yzl7fcb";
+      name = "qtquick3d-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtquick3dphysics = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquick3dphysics-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0ipma4qdmzyyajs5inp7d3znh2hfx42gia7x9ahqpb515r49pqb7";
-      name = "qtquick3dphysics-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtquick3dphysics-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1rh41sadi5l2yypskhwrcjii0llkdq2msh0bgj0g7wq924k5y140";
+      name = "qtquick3dphysics-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtquickeffectmaker = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquickeffectmaker-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0mr350c9kj74g48lavq5z5c604cdgcyycfdpwv5z8bmbr49jl95w";
-      name = "qtquickeffectmaker-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtquickeffectmaker-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1m84pjw4d2gvypgajz21xcl9di1vmswqwb0nd763bjk181kfq3rx";
+      name = "qtquickeffectmaker-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtquicktimeline = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtquicktimeline-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0b266w7al90fbbp16w506klba50d4izf6nfcmmp5fpr6h5pxvcyk";
-      name = "qtquicktimeline-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtquicktimeline-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1gc96jva2nm7a3zv5zwmhrvifjlngngddm3kaivmfpbbdiy6aigb";
+      name = "qtquicktimeline-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtremoteobjects = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtremoteobjects-everywhere-src-6.6.3.tar.xz";
-      sha256 = "16bd4zd3yfzlzk087qphphsh8hv38q3a57n1yknvkc5fchzmfzjz";
-      name = "qtremoteobjects-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtremoteobjects-everywhere-src-6.7.0.tar.xz";
+      sha256 = "15f6wjszl5mxjrjd8r36l3x3p1nzhgib33bb7743ywf94pb61fm0";
+      name = "qtremoteobjects-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtscxml = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtscxml-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1dbcw4qnss5rif97gdcimyzl3jqa508yph611dvvhc1xn16nl6qg";
-      name = "qtscxml-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtscxml-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0z15m5l44asp4masjxmkxqcc4x93v6n8i12qswrzfvbnp2xrfnvj";
+      name = "qtscxml-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtsensors = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtsensors-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0r9p3lm159pji29vq9kii42jkz4rg15hqh6zlq9442i58a0ayddj";
-      name = "qtsensors-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtsensors-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1axwywwgygcri1pfjyaiqa7hd7kivya0gr0q11v4z9ih18h1ac0w";
+      name = "qtsensors-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtserialbus = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtserialbus-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1yyh1bh5pjlilcq84fgfw6wd0jak55wndwf0sn92lbhsp3y5lghl";
-      name = "qtserialbus-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtserialbus-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1pbnpfazgpaqzi1sz141sh9sqygibb25crk7byjzhr06hslr70a9";
+      name = "qtserialbus-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtserialport = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtserialport-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0dywalgafvxi2jgdv9dk22hwwd8qsgk5xfybh75n3njmwmwnarg1";
-      name = "qtserialport-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtserialport-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1jc1g46pgjy39vyk7inzx0kx6iziy54kgjkwz8pvmj4wihyjmw5i";
+      name = "qtserialport-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtshadertools = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtshadertools-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1rm17hyhq244zskq3ar3h22qjd5dshy84nnyq1ivhg5k7gb0j2cc";
-      name = "qtshadertools-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtshadertools-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1bwqg5gn2nfm61950yhcv9q93qd2fb2cnm77074ia21gqrkzj4ry";
+      name = "qtshadertools-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtspeech = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtspeech-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1yh3r5zbhgwkjgs7yk6iv2w23766n1i4z8vjkkw5awdixx3gfa76";
-      name = "qtspeech-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtspeech-everywhere-src-6.7.0.tar.xz";
+      sha256 = "048z7lqvpqi4073lx7s83d9kqbfg59banapi7qiw4j3xhfx8wxj4";
+      name = "qtspeech-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtsvg = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtsvg-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1ir57bis27whq7bwqykk1qlxy0522k4ia39brxayjmfadrbixjsa";
-      name = "qtsvg-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtsvg-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0bcjpwzggrqp2gf9a1xp8g0klh9kn2amnvp2lr9n2ppz107g860m";
+      name = "qtsvg-everywhere-src-6.7.0.tar.xz";
     };
   };
   qttools = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qttools-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1h0vz46mpvzbm5w6sgpk0b3mqkn278l45arhxxk41dwc5n14qvda";
-      name = "qttools-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qttools-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0yzfmfqwn0y534z47yyk71236nnsq0v0kgsw8qiixzl2kqinpnn8";
+      name = "qttools-everywhere-src-6.7.0.tar.xz";
     };
   };
   qttranslations = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qttranslations-everywhere-src-6.6.3.tar.xz";
-      sha256 = "1kvkrwbgby4i69dpxbxxcv0qbsz69n6icpyr4wcf8qm2r4m5zqqj";
-      name = "qttranslations-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qttranslations-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0mjbx9n8fh4xp9r0r4p9ynjy1iirzn3bwlyr3g6vm91c0r3q1z16";
+      name = "qttranslations-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtvirtualkeyboard = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtvirtualkeyboard-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0d517x60birlf8xb3sphchvgm235f8q1868q98kg76plzfhq57wq";
-      name = "qtvirtualkeyboard-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtvirtualkeyboard-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0snbl1wd5s76c8ab76bsqi3bp94h1isdwavbjm6gc1hvifhv46yn";
+      name = "qtvirtualkeyboard-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtwayland = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwayland-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0gamcqpl302wlznfnlcg9vlnnhfpxgjnz05prwc9wpy0xh7wqvm9";
-      name = "qtwayland-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtwayland-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1sks2m2phf841zl0d4sn7krm6f1ppgl7wl9arpc8i8vx47j70d6p";
+      name = "qtwayland-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtwebchannel = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebchannel-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0cwcf4pri901piyj0lvqmks9l84di9rcafnfgrmgg5mls7jjlyvw";
-      name = "qtwebchannel-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtwebchannel-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1zzg49ii59sw64m98phsbhf97kx7nxp7k0ggxazbz0hc9r0bvgr6";
+      name = "qtwebchannel-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtwebengine = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebengine-everywhere-src-6.6.3.tar.xz";
-      sha256 = "016qvbmdja2abajvsznnjdvblrmzgvs8s2dzlxws30hvna1xqavw";
-      name = "qtwebengine-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtwebengine-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1pj7q5r8wa49faxijljfnbmzbpmqc7bwcal0mcwz9haxcd1s8nqs";
+      name = "qtwebengine-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtwebsockets = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebsockets-everywhere-src-6.6.3.tar.xz";
-      sha256 = "0dm066lv3n97ril9iyd5xn8j13m6r7xp844aagj6dpclaxv83x0n";
-      name = "qtwebsockets-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtwebsockets-everywhere-src-6.7.0.tar.xz";
+      sha256 = "0dlp2ck0pkg9say92qism438i5j3ybxs0xf90j7g3k9ndgd7gz2z";
+      name = "qtwebsockets-everywhere-src-6.7.0.tar.xz";
     };
   };
   qtwebview = {
-    version = "6.6.3";
+    version = "6.7.0";
     src = fetchurl {
-      url = "${mirror}/official_releases/qt/6.6/6.6.3/submodules/qtwebview-everywhere-src-6.6.3.tar.xz";
-      sha256 = "00jcxzi9wcbviscn5y0h0mkbac88lpjammg3zvfvjih7avgn6r10";
-      name = "qtwebview-everywhere-src-6.6.3.tar.xz";
+      url = "${mirror}/official_releases/qt/6.7/6.7.0/submodules/qtwebview-everywhere-src-6.7.0.tar.xz";
+      sha256 = "1yawx8vd7blky5b8mxpby4k1zwgm91jvl98y17xf47yc71qy069n";
+      name = "qtwebview-everywhere-src-6.7.0.tar.xz";
     };
   };
 }
diff --git a/pkgs/development/libraries/quantlib/default.nix b/pkgs/development/libraries/quantlib/default.nix
index 6dcf59928615f..8637ae1dc14f3 100644
--- a/pkgs/development/libraries/quantlib/default.nix
+++ b/pkgs/development/libraries/quantlib/default.nix
@@ -7,25 +7,33 @@
 
 stdenv.mkDerivation rec {
   pname = "quantlib";
-  version = "1.29";
+  version = "1.33";
 
   outputs = [ "out" "dev" ];
 
   src = fetchFromGitHub {
     owner = "lballabio";
     repo = "QuantLib";
-    rev = "QuantLib-v${version}";
-    sha256 = "sha256-TpVn3zPru/GtdNqDH45YdOkm7fkJzv/qay9SY3J6Jiw=";
+    rev = "v${version}";
+    sha256 = "sha256-j2nRm6ebf5OU6mqmcC7wQf/qlf/K9RmmCAnfT+Au8ZM=";
   };
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [ boost ];
 
+  # Required by RQuantLib, may be beneficial for others too
+  cmakeFlags = [ "-DQL_HIGH_RESOLUTION_DATE=ON" ];
+
+  # Needed for RQuantLib and possible others
+  postInstall = ''
+    cp ./quantlib-config $out/bin/
+  '';
+
   meta = with lib; {
     description = "A free/open-source library for quantitative finance";
     homepage = "https://quantlib.org";
     platforms = platforms.unix;
     license = licenses.bsd3;
-    maintainers = [];
+    maintainers = [ maintainers.kupac ];
   };
 }
diff --git a/pkgs/development/libraries/rapidfuzz-cpp/default.nix b/pkgs/development/libraries/rapidfuzz-cpp/default.nix
index ab0a5edb7d421..0a2967d0fcb1f 100644
--- a/pkgs/development/libraries/rapidfuzz-cpp/default.nix
+++ b/pkgs/development/libraries/rapidfuzz-cpp/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "rapidfuzz-cpp";
-  version = "3.0.2";
+  version = "3.0.4";
 
   src = fetchFromGitHub {
     owner = "rapidfuzz";
     repo = "rapidfuzz-cpp";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-4J2j+/0ZVMNlrgLbEQk3me/EX07TZ/rLsT1/5ufxbic=";
+    hash = "sha256-urMdK+6ORHRgisppb700jaQpxLXAvXVjd8WDN7Zky3A=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/science/astronomy/indilib/default.nix b/pkgs/development/libraries/science/astronomy/indilib/default.nix
index f0d25defe1221..50ba7e8273fa8 100644
--- a/pkgs/development/libraries/science/astronomy/indilib/default.nix
+++ b/pkgs/development/libraries/science/astronomy/indilib/default.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "indilib";
-  version = "2.0.6";
+  version = "2.0.7";
 
   src = fetchFromGitHub {
     owner = "indilib";
     repo = "indi";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-3MeF2G/rr//c7cgGzqDzmqoNKvR+7Kkbid1g8znKPkg=";
+    hash = "sha256-sbs20BbAnvHTtJEuTWMCJrjzyvH7NSXS1+Ah5BdJZHA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/science/astronomy/indilib/indi-full.nix b/pkgs/development/libraries/science/astronomy/indilib/indi-full.nix
index 4dd80c3f02754..3b512a3976dc3 100644
--- a/pkgs/development/libraries/science/astronomy/indilib/indi-full.nix
+++ b/pkgs/development/libraries/science/astronomy/indilib/indi-full.nix
@@ -6,7 +6,7 @@ let
     owner = "indilib";
     repo = "indi-3rdparty";
     rev = "v${version}";
-    hash = "sha256-KNoyYldZWsXB9ubu0EYDgckRtpQgSCmzKlx7Erx4MRQ=";
+    hash = "sha256-u5UpI6ll2TnI02xWSaZRC5v6BOT0EHaQ2md5iY/Ymjs=";
   };
   indi-firmware = callPackage ./indi-firmware.nix {
     inherit version;
diff --git a/pkgs/development/libraries/sentry-native/default.nix b/pkgs/development/libraries/sentry-native/default.nix
index 63f8792d0a340..ec95184707d02 100644
--- a/pkgs/development/libraries/sentry-native/default.nix
+++ b/pkgs/development/libraries/sentry-native/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "sentry-native";
-  version = "0.7.1";
+  version = "0.7.2";
 
   src = fetchFromGitHub {
     owner = "getsentry";
     repo = "sentry-native";
     rev = version;
-    hash = "sha256-t1lk0gW72uQrLbeLdvlFzYEvOarbW2ya7sK6Ru3FW+o=";
+    hash = "sha256-0yFRDQ/f0oVbpZ4wev28xCTVkbXr58Tt0Czda3ppRWk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/simdjson/default.nix b/pkgs/development/libraries/simdjson/default.nix
index 9e28ea4eed380..b836220efaffe 100644
--- a/pkgs/development/libraries/simdjson/default.nix
+++ b/pkgs/development/libraries/simdjson/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "simdjson";
-  version = "3.8.0";
+  version = "3.9.1";
 
   src = fetchFromGitHub {
     owner = "simdjson";
     repo = "simdjson";
     rev = "v${version}";
-    sha256 = "sha256-1WxQU9WAIZKVoNTYJRnwxLAloBfW1g5XSPH4b29x9rE=";
+    sha256 = "sha256-Az5QZNnzLYpEE7O+1/VceIT6vykkg8vMuAuN9u8OseM=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/spglib/default.nix b/pkgs/development/libraries/spglib/default.nix
index e33f18e50b7bc..fe585e9d6ea22 100644
--- a/pkgs/development/libraries/spglib/default.nix
+++ b/pkgs/development/libraries/spglib/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "spglib";
-  version = "2.3.1"; # N.B: if you change this, please update: pythonPackages.spglib
+  version = "2.4.0"; # N.B: if you change this, please update: pythonPackages.spglib
 
   src = fetchFromGitHub {
     owner = "spglib";
     repo = "spglib";
     rev = "v${version}";
-    hash = "sha256-MOre1LGf7Li+tAqtzpuEvAX6q/P0ueDlMXhhmtiE+jw=";
+    hash = "sha256-Y6WkN3Q1q4h2TqrlKSKFmFxQZQWKmleRHV74PmYyw2A=";
   };
 
   nativeBuildInputs = [ cmake gfortran gtest ];
diff --git a/pkgs/development/libraries/virglrenderer/default.nix b/pkgs/development/libraries/virglrenderer/default.nix
index a20f26157ffcb..5a28ad3822363 100644
--- a/pkgs/development/libraries/virglrenderer/default.nix
+++ b/pkgs/development/libraries/virglrenderer/default.nix
@@ -1,5 +1,7 @@
 { lib, stdenv, fetchurl, meson, ninja, pkg-config, python3
-, libGLU, libepoxy, libX11, libdrm, mesa, gitUpdater
+, libGLU, libepoxy, libX11, libdrm, mesa
+, vaapiSupport ? true, libva
+, gitUpdater
 }:
 
 stdenv.mkDerivation rec {
@@ -13,10 +15,15 @@ stdenv.mkDerivation rec {
 
   separateDebugInfo = true;
 
-  buildInputs = [ libGLU libepoxy libX11 libdrm mesa ];
+  buildInputs = [ libGLU libepoxy libX11 libdrm mesa ]
+    ++ lib.optionals vaapiSupport [ libva ];
 
   nativeBuildInputs = [ meson ninja pkg-config python3 ];
 
+  mesonFlags= [
+    (lib.mesonBool "video" vaapiSupport)
+  ];
+
   passthru = {
     updateScript = gitUpdater {
       url = "https://gitlab.freedesktop.org/virgl/virglrenderer.git";
diff --git a/pkgs/development/libraries/webkitgtk/default.nix b/pkgs/development/libraries/webkitgtk/default.nix
index 07fc616efacc7..140c2a4d4ae2b 100644
--- a/pkgs/development/libraries/webkitgtk/default.nix
+++ b/pkgs/development/libraries/webkitgtk/default.nix
@@ -1,5 +1,6 @@
 { lib
 , stdenv
+, buildPackages
 , runCommand
 , fetchurl
 , perl
@@ -68,7 +69,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "webkitgtk";
-  version = "2.44.0";
+  version = "2.44.1";
   name = "${finalAttrs.pname}-${finalAttrs.version}+abi=${if lib.versionAtLeast gtk3.version "4.0" then "6.0" else "4.${if lib.versions.major libsoup.version == "2" then "0" else "1"}"}";
 
   outputs = [ "out" "dev" "devdoc" ];
@@ -79,7 +80,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   src = fetchurl {
     url = "https://webkitgtk.org/releases/webkitgtk-${finalAttrs.version}.tar.xz";
-    hash = "sha256-xmUw5Bulmx7bpO6J7yCyGI4nO+0El+lQhHKePPvjDIc=";
+    hash = "sha256-QlsUWbDwTQYAx40au15+36PAYKQg+LIx6aai1dKcVWE=";
   };
 
   patches = lib.optionals stdenv.isLinux [
@@ -113,8 +114,6 @@ stdenv.mkDerivation (finalAttrs: {
     gi-docgen
     glib # for gdbus-codegen
     unifdef
-  ] ++ lib.optionals stdenv.isLinux [
-    wayland # for wayland-scanner
   ];
 
   buildInputs = [
@@ -190,6 +189,7 @@ stdenv.mkDerivation (finalAttrs: {
     # https://github.com/WebKit/WebKit/commit/a84036c6d1d66d723f217a4c29eee76f2039a353
     "-DBWRAP_EXECUTABLE=${lib.getExe bubblewrap}"
     "-DDBUS_PROXY_EXECUTABLE=${lib.getExe xdg-dbus-proxy}"
+    "-DWAYLAND_SCANNER=${buildPackages.wayland-scanner}/bin/wayland-scanner"
   ] ++ lib.optionals stdenv.isDarwin [
     "-DENABLE_GAMEPAD=OFF"
     "-DENABLE_GTKDOC=OFF"
diff --git a/pkgs/development/libraries/xgboost/default.nix b/pkgs/development/libraries/xgboost/default.nix
index 154dd70a7f4cd..a1ae57f8824f3 100644
--- a/pkgs/development/libraries/xgboost/default.nix
+++ b/pkgs/development/libraries/xgboost/default.nix
@@ -115,21 +115,15 @@ stdenv.mkDerivation rec {
     let libname = "libxgboost${stdenv.hostPlatform.extensions.sharedLibrary}";
     in ''
       runHook preInstall
-      mkdir -p $out
-      cp -r ../include $out
-      cp -r ../dmlc-core/include/dmlc $out/include
-      cp -r ../rabit/include/rabit $out/include
-    '' + lib.optionalString (!rLibrary) ''
-      install -Dm755 ../lib/${libname} $out/lib/${libname}
-      install -Dm755 ../xgboost $out/bin/xgboost
     ''
     # the R library option builds a completely different binary xgboost.so instead of
     # libxgboost.so, which isn't full featured for python and CLI
     + lib.optionalString rLibrary ''
-      mkdir $out/library
+      mkdir -p $out/library
       export R_LIBS_SITE="$out/library:$R_LIBS_SITE''${R_LIBS_SITE:+:}"
-      make install -l $out/library
     '' + ''
+      cmake --install .
+      cp -r ../rabit/include/rabit $out/include
       runHook postInstall
     '';
 
diff --git a/pkgs/development/libraries/yyjson/default.nix b/pkgs/development/libraries/yyjson/default.nix
index 86a286ef2e2d8..60a937b5216d1 100644
--- a/pkgs/development/libraries/yyjson/default.nix
+++ b/pkgs/development/libraries/yyjson/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "yyjson";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "ibireme";
     repo = "yyjson";
     rev = finalAttrs.version;
-    hash = "sha256-uAh/AUUDudQr+1+3YLkg9KxARgvKWxfDZlqo8388nFY=";
+    hash = "sha256-iRMjiaVnsTclcdzHjlFOTmJvX3VP4omJLC8AWA/EOZk=";
   };
 
   nativeBuildInputs = [
@@ -25,5 +25,6 @@ stdenv.mkDerivation (finalAttrs: {
     changelog = "https://github.com/ibireme/yyjson/blob/${finalAttrs.src.rev}/CHANGELOG.md";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ federicoschonborn ];
+    platforms = lib.platforms.all;
   };
 })
diff --git a/pkgs/development/lisp-modules/packages.nix b/pkgs/development/lisp-modules/packages.nix
index 55c4c5abf7f86..3866cc7dd2c77 100644
--- a/pkgs/development/lisp-modules/packages.nix
+++ b/pkgs/development/lisp-modules/packages.nix
@@ -370,7 +370,7 @@ let
 
   nyxt-gtk = build-asdf-system {
     pname = "nyxt";
-    version = "3.11.5";
+    version = "3.11.6";
 
     lispLibs = (with super; [
       alexandria
@@ -481,8 +481,8 @@ let
     src = pkgs.fetchFromGitHub {
       owner = "atlas-engineer";
       repo = "nyxt";
-      rev = "3.11.5";
-      hash = "sha256-l3igC4jfCvx7Q0WO2Zf2ByWLz7sCteYdW1rNvwrc97g=";
+      rev = "3.11.6";
+      hash = "sha256-o+4LnSNyhdz5YAjNQJuE2ERtt48PckjKfts9QVRw82A=";
     };
 
     nativeBuildInputs = [ pkgs.makeWrapper ];
diff --git a/pkgs/development/lua-modules/generated-packages.nix b/pkgs/development/lua-modules/generated-packages.nix
index dd7eed8dea8c7..dea99a7a0f64d 100644
--- a/pkgs/development/lua-modules/generated-packages.nix
+++ b/pkgs/development/lua-modules/generated-packages.nix
@@ -437,21 +437,21 @@ buildLuarocksPackage {
 dkjson = callPackage({ buildLuarocksPackage, fetchurl, lua, luaAtLeast, luaOlder }:
 buildLuarocksPackage {
   pname = "dkjson";
-  version = "2.6-1";
+  version = "2.7-1";
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/dkjson-2.6-1.rockspec";
-    sha256 = "1hhmgz2nixqg23shfnl0kq6wxdadx36z6hhsrz33g7idbm6rbwm1";
+    url    = "mirror://luarocks/dkjson-2.7-1.rockspec";
+    sha256 = "sha256-rVMDFF/yY7fTlY4Icj4LWt72qmKMCwedbgoigqx/+U0=";
   }).outPath;
   src = fetchurl {
-    url    = "http://dkolf.de/src/dkjson-lua.fsl/tarball/dkjson-2.6.tar.gz?uuid=release_2_6";
-    sha256 = "0wwpdz20fvg5j36902892mnb99craf22697r6v7xdblqnd7fw1xx";
+    url    = "http://dkolf.de/dkjson-lua/dkjson-2.7.tar.gz";
+    sha256 = "sha256-TFGmIQLy9r23Z3fx23NgUJtKARaANYi06CVfQ1ryOVw=";
   };
 
   disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua ];
 
   meta = {
-    homepage = "http://dkolf.de/src/dkjson-lua.fsl/";
+    homepage = "http://dkolf.de/dkjson-lua/";
     description = "David Kolf's JSON module for Lua";
     license.fullName = "MIT/X11";
   };
@@ -3028,6 +3028,29 @@ buildLuarocksPackage {
   };
 }) {};
 
+pathlib-nvim = callPackage({ buildLuarocksPackage, fetchurl, fetchzip, lua, luaOlder, nvim-nio }:
+buildLuarocksPackage {
+  pname = "pathlib.nvim";
+  version = "2.2.0-1";
+  knownRockspec = (fetchurl {
+    url    = "mirror://luarocks/pathlib.nvim-2.2.0-1.rockspec";
+    sha256 = "0zj3psdq06822y8vl117z3y7zlc6jxwqppbv9irgwzr60wdz517n";
+  }).outPath;
+  src = fetchzip {
+    url    = "https://github.com/pysan3/pathlib.nvim/archive/v2.2.0.zip";
+    sha256 = "1nyl3y0z2rrr35dyk2ypv8xjx43zamqxlpdq468iyyhfvkplz9yw";
+  };
+
+  disabled = (luaOlder "5.1");
+  propagatedBuildInputs = [ lua nvim-nio ];
+
+  meta = {
+    homepage = "https://pysan3.github.io/pathlib.nvim/";
+    description = "OS Independent, ultimate solution to path handling in neovim.";
+    license.fullName = "MPL-2.0";
+  };
+}) {};
+
 penlight = callPackage({ buildLuarocksPackage, fetchgit, lua, luaOlder, luafilesystem }:
 buildLuarocksPackage {
   pname = "penlight";
@@ -3613,30 +3636,21 @@ buildLuarocksPackage {
   };
 }) {};
 
-toml-edit = callPackage({ buildLuarocksPackage, fetchgit, fetchurl, lua, luaOlder, luarocks-build-rust-mlua }:
+toml-edit = callPackage({ buildLuarocksPackage, fetchzip, fetchurl, lua, luaOlder }:
 buildLuarocksPackage {
   pname = "toml-edit";
-  version = "0.1.5-1";
+  version = "0.3.6-1";
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/toml-edit-0.1.5-1.rockspec";
-    sha256 = "1xgjh8x44kn24vc29si811zq2a7pr24zqj4w07pys5k6ccnv26qz";
+    url    = "mirror://luarocks/toml-edit-0.3.6-1.rockspec";
+    sha256 = "18fw256vzvfavfwrnzm507k4h3x2lx9l93ghr1ggsi4mhsnjki46";
   }).outPath;
-  src = fetchgit ( removeAttrs (builtins.fromJSON ''{
-  "url": "https://github.com/vhyrro/toml-edit.lua",
-  "rev": "34f072d8ff054b3124d9d2efc0263028d7425525",
-  "date": "2023-12-29T15:53:36+01:00",
-  "path": "/nix/store/z1gn59hz9ypk3icn3gmafaa19nzx7a1v-toml-edit.lua",
-  "sha256": "0jzzp4sd48haq1kmh2k85gkygfq39i10kvgjyqffcrv3frdihxvx",
-  "hash": "sha256-fXcYW3ZjZ+Yc9vLtCUJMA7vn5ytoClhnwAoi0jS5/0s=",
-  "fetchLFS": false,
-  "fetchSubmodules": true,
-  "deepClone": false,
-  "leaveDotGit": false
-}
- '') ["date" "path" "sha256"]) ;
+  src = fetchzip {
+    url    = "https://github.com/vhyrro/toml-edit.lua/archive/v0.3.6.zip";
+    sha256 = "19v6axraj2n22lmilfr4x9nr40kcjb6wnpsfhf1mh2zy9nsd6ji6";
+  };
 
   disabled = (luaOlder "5.1");
-  propagatedBuildInputs = [ lua luarocks-build-rust-mlua ];
+  propagatedBuildInputs = [ lua ];
 
   meta = {
     homepage = "https://github.com/vhyrro/toml-edit.lua";
diff --git a/pkgs/development/lua-modules/overrides.nix b/pkgs/development/lua-modules/overrides.nix
index a793f56f99d04..31ff2e6e3c580 100644
--- a/pkgs/development/lua-modules/overrides.nix
+++ b/pkgs/development/lua-modules/overrides.nix
@@ -685,10 +685,18 @@ in
 
     cargoDeps = rustPlatform.fetchCargoTarball {
       src = oa.src;
-      hash = "sha256-gvUqkLOa0WvAK4GcTkufr0lC2BOs2FQ2bgFpB0qa47k=";
+      hash = "sha256-2P+mokkjdj2PccQG/kAGnIoUPVnK2FqNfYpHPhsp8kw=";
     };
 
-    nativeBuildInputs = oa.nativeBuildInputs ++ [ cargo rustPlatform.cargoSetupHook ];
+    nativeBuildInputs = let
+      # HACK: luarocks-nix doesn't pick up rockspec build dependencies,
+      # so we have to pass the correct package in here.
+      lua = lib.head oa.propagatedBuildInputs;
+    in oa.nativeBuildInputs ++ [
+      cargo
+      rustPlatform.cargoSetupHook
+      lua.pkgs.luarocks-build-rust-mlua
+    ];
 
   });
 
diff --git a/pkgs/development/lua-modules/updater/updater.py b/pkgs/development/lua-modules/updater/updater.py
index 3f1d27ab129f1..407b4104b774c 100755
--- a/pkgs/development/lua-modules/updater/updater.py
+++ b/pkgs/development/lua-modules/updater/updater.py
@@ -32,7 +32,7 @@ TMP_FILE = "$(mktemp)"
 GENERATED_NIXFILE = "pkgs/development/lua-modules/generated-packages.nix"
 
 HEADER = """/* {GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
-Regenerate it with: nix run nixpkgs#update-luarocks-packages
+Regenerate it with: nix run nixpkgs#luarocks-packages-updater
 You can customize the generated packages in pkgs/development/lua-modules/overrides.nix
 */
 """.format(
diff --git a/pkgs/development/misc/juce/default.nix b/pkgs/development/misc/juce/default.nix
index 4eeae4e36673d..0899a948019ef 100644
--- a/pkgs/development/misc/juce/default.nix
+++ b/pkgs/development/misc/juce/default.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "juce";
-  version = "7.0.10";
+  version = "7.0.11";
 
   src = fetchFromGitHub {
     owner = "juce-framework";
     repo = "juce";
     rev = finalAttrs.version;
-    hash = "sha256-CAHhHPTUvIyDOh2CdvNmw26HfoWWtbqRRiR+3Ky4GYA=";
+    hash = "sha256-XFC+MYxUE3NatM2oYykiPJtiQLy33JD64VZFfZS2Tas=";
   };
 
   patches = [
diff --git a/pkgs/development/node-packages/overrides.nix b/pkgs/development/node-packages/overrides.nix
index a36ce3f06144c..1fcee6256b5dc 100644
--- a/pkgs/development/node-packages/overrides.nix
+++ b/pkgs/development/node-packages/overrides.nix
@@ -273,7 +273,7 @@ final: prev: {
 
     src = fetchurl {
       url = "https://registry.npmjs.org/prisma/-/prisma-${version}.tgz";
-      hash = "sha256-ej3h4LlF/pkAYeDxePb7wMc8zrfxKMnrp1ogZLoFU+0=";
+      hash = "sha256-136nEfCJjLLUMO3TZhVrltfqv8nU2fA14+L0JLe6Zfk=";
     };
     postInstall = with pkgs; ''
       wrapProgram "$out/bin/prisma" \
diff --git a/pkgs/development/ocaml-modules/cfstream/default.nix b/pkgs/development/ocaml-modules/cfstream/default.nix
index af721b63a8f94..ba69c40de016d 100644
--- a/pkgs/development/ocaml-modules/cfstream/default.nix
+++ b/pkgs/development/ocaml-modules/cfstream/default.nix
@@ -4,7 +4,7 @@ buildDunePackage rec {
   pname = "cfstream";
   version = "1.3.2";
 
-  minimalOCamlVersion = "4.04.1";
+  minimalOCamlVersion = "4.07";
 
   src = fetchFromGitHub {
     owner = "biocaml";
diff --git a/pkgs/development/ocaml-modules/charInfo_width/default.nix b/pkgs/development/ocaml-modules/charInfo_width/default.nix
deleted file mode 100644
index ab4e53a42b352..0000000000000
--- a/pkgs/development/ocaml-modules/charInfo_width/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, fetchzip, buildDunePackage, camomile, result }:
-
-buildDunePackage rec {
-  pname = "charInfo_width";
-  version = "1.1.0";
-  src = fetchzip {
-    url = "https://bitbucket.org/zandoye/charinfo_width/get/${version}.tar.bz2";
-    sha256 = "19mnq9a1yr16srqs8n6hddahr4f9d2gbpmld62pvlw1ps7nfrp9w";
-  };
-
-  propagatedBuildInputs = [
-    (camomile.override { version = "1.0.2"; })
-    result
-  ];
-
-  meta = {
-    homepage = "https://bitbucket.org/zandoye/charinfo_width/";
-    description = "Determine column width for a character";
-    license = lib.licenses.mit;
-    maintainers = [ lib.maintainers.vbgl ];
-  };
-}
diff --git a/pkgs/development/ocaml-modules/eio/posix.nix b/pkgs/development/ocaml-modules/eio/posix.nix
index e8dc4072bab11..cba34a0d63899 100644
--- a/pkgs/development/ocaml-modules/eio/posix.nix
+++ b/pkgs/development/ocaml-modules/eio/posix.nix
@@ -1,4 +1,6 @@
 { buildDunePackage
+, lib
+, stdenv
 , dune-configurator
 , eio
 , fmt
@@ -14,6 +16,10 @@ buildDunePackage {
 
   dontStrip = true;
 
+  env = lib.optionalAttrs stdenv.isDarwin {
+    NIX_CFLAGS_COMPILE = "-Wno-implicit-function-declaration";
+  };
+
   buildInputs = [
     dune-configurator
   ];
diff --git a/pkgs/development/ocaml-modules/janestreet/0.12.nix b/pkgs/development/ocaml-modules/janestreet/0.12.nix
index 8d7943af42b6d..2ea593e10b449 100644
--- a/pkgs/development/ocaml-modules/janestreet/0.12.nix
+++ b/pkgs/development/ocaml-modules/janestreet/0.12.nix
@@ -106,6 +106,7 @@ with self;
   };
 
   ppx_expect = janePackage {
+    duneVersion = "3";
     pname = "ppx_expect";
     hash = "1wawsbjfkri4sw52n8xqrzihxc3xfpdicv3ahz83a1rsn4lb8j5q";
     meta.description = "Cram like framework for OCaml";
@@ -275,6 +276,7 @@ with self;
   };
 
   ppx_jane = janePackage {
+    duneVersion = "3";
     pname = "ppx_jane";
     hash = "1a2602isqzsh640q20qbmarx0sc316mlsqc3i25ysv2kdyhh0kyw";
     meta.description = "Standard Jane Street ppx rewriters";
@@ -282,6 +284,7 @@ with self;
   };
 
   base_bigstring = janePackage {
+    duneVersion = "3";
     pname = "base_bigstring";
     hash = "0rbgyg511847fbnxad40prz2dyp4da6sffzyzl88j18cxqxbh1by";
     meta.description = "String type based on [Bigarray], for use in I/O and C-bindings";
@@ -303,15 +306,17 @@ with self;
   };
 
   core_kernel = janePackage {
+    duneVersion = "3";
     pname = "core_kernel";
-    version = "0.12.2";
-    hash = "0c85bjvadrb4pmjcg0gjk3bkkgka62r90pjm690mjvcbbv5zjxzj";
+    version = "0.12.3";
+    hash = "sha256-bDgxuOILAs4FYB8o92ysPHDdEzflZMsU/jk5hB9xfuc=";
     meta.description = "System-independent part of Core";
     buildInputs = [ jst-config ];
     propagatedBuildInputs = [ base_bigstring sexplib ];
   };
 
   spawn = janePackage {
+    duneVersion = "3";
     pname = "spawn";
     version = "0.13.0";
     hash = "1w003k1kw1lmyiqlk58gkxx8rac7dchiqlz6ah7aj7bh49b36ppf";
@@ -320,6 +325,7 @@ with self;
   };
 
   core = janePackage {
+    duneVersion = "3";
     pname = "core";
     version = "0.12.3";
     hash = "1vmjqiafkg45hqfvahx6jnlaww1q4a4215k8znbgprf0qn3zymnj";
@@ -329,6 +335,7 @@ with self;
   };
 
   async_kernel = janePackage {
+    duneVersion = "3";
     pname = "async_kernel";
     hash = "1d9illx7vvpblj1i2r9y0f2yff2fbhy3rp4hhvamq1n9n3lvxmh2";
     meta.description = "Monadic concurrency library";
@@ -336,6 +343,7 @@ with self;
   };
 
   protocol_version_header = janePackage {
+    duneVersion = "3";
     pname = "protocol_version_header";
     hash = "14vqhx3r84rlfhcjq52gxdqksckiaswlck9s47g7y2z1lsc17v7r";
     meta.description = "Protocol versioning";
@@ -343,6 +351,7 @@ with self;
   };
 
   async_rpc_kernel = janePackage {
+    duneVersion = "3";
     pname = "async_rpc_kernel";
     hash = "1znhqbzx4fp58i7dbcgyv5rx7difbhb5d8cbqzv96yqvbn67lsjk";
     meta.description = "Platform-independent core of Async RPC library";
@@ -350,6 +359,7 @@ with self;
   };
 
   async_unix = janePackage {
+    duneVersion = "3";
     pname = "async_unix";
     hash = "09h10rdyykbm88n6r9nb5a22mlb6vcxa04q6hvrcr0kys6qhhqmb";
     meta.description = "Monadic concurrency library";
@@ -357,6 +367,7 @@ with self;
   };
 
   async_extra = janePackage {
+    duneVersion = "3";
     pname = "async_extra";
     hash = "10j4mwlyqvf67yrp5dwd857llqjinpnnykmlzw2gpmks9azxk6mh";
     meta.description = "Monadic concurrency library";
@@ -364,6 +375,7 @@ with self;
   };
 
   textutils = janePackage {
+    duneVersion = "3";
     pname = "textutils";
     hash = "0302awqihf3abib9mvzvn4g8m364hm6jxry1r3kc01hzybhy9acq";
     meta.description = "Text output utilities";
@@ -371,6 +383,7 @@ with self;
   };
 
   async = janePackage {
+    duneVersion = "3";
     pname = "async";
     hash = "0pk7z3h2gi21nfchvmjz2wx516bynf9vgwf84zf5qhvlvqqsmyrx";
     meta.description = "Monadic concurrency library";
@@ -378,6 +391,7 @@ with self;
   };
 
   async_find = janePackage {
+    duneVersion = "3";
     pname = "async_find";
     hash = "0qsz9f15s5rlk6za10s810v6nlkdxg2g9p1827lcpa7nhjcpi673";
     meta.description = "Directory traversal with Async";
@@ -385,8 +399,10 @@ with self;
   };
 
   re2 = janePackage {
+    duneVersion = "3";
     pname = "re2";
-    hash = "1sw32lb0y501y971ij7287796lvfhs0nfgla895r74ymfks2rcjb";
+    version = "0.12.1";
+    hash = "sha256-NPQKKUSwckZx4GN4wX2sc0Mn7bes6p79oZrN6xouc6o=";
     meta.description = "OCaml bindings for RE2, Google's regular expression library";
     propagatedBuildInputs = [ core_kernel ];
     prePatch = ''
@@ -396,6 +412,7 @@ with self;
   };
 
   shell = janePackage {
+    duneVersion = "3";
     pname = "shell";
     hash = "158857rdr6qgglc5iksg0l54jgf51b5lmsw7nlazpxwdwc9fcn5n";
     meta.description = "Yet another implementation of fork&exec and related functionality";
@@ -404,6 +421,7 @@ with self;
   };
 
   async_shell = janePackage {
+    duneVersion = "3";
     pname = "async_shell";
     hash = "0cxln9hkc3cy522la9yi9p23qjwl69kqmadsq4lnjh5bxdad06sv";
     meta.description = "Shell helpers for Async";
@@ -411,6 +429,7 @@ with self;
   };
 
   core_bench = janePackage {
+    duneVersion = "3";
     pname = "core_bench";
     hash = "00hyzbbj19dkcw0vhfnc8w0ca3zkjriwwvl00ssa0a2g9mygijdm";
     meta.description = "Benchmarking library";
@@ -418,6 +437,7 @@ with self;
   };
 
   core_extended = janePackage {
+    duneVersion = "3";
     pname = "core_extended";
     hash = "1gwx66235irpf5krb1r25a3c7w52qhmass8hp7rdv89il9jn49w4";
     meta.description = "Extra components that are not as closely vetted or as stable as Core";
@@ -425,6 +445,7 @@ with self;
   };
 
   sexp_pretty = janePackage {
+    duneVersion = "3";
     pname = "sexp_pretty";
     hash = "06hdsaszc5cd7fphiblbn4r1sh36xgjwf2igzr2rvlzqs7jiv2v4";
     meta.description = "S-expression pretty-printer";
@@ -432,6 +453,7 @@ with self;
   };
 
   expect_test_helpers_kernel = janePackage {
+    duneVersion = "3";
     pname = "expect_test_helpers_kernel";
     hash = "18ya187y2i2hfxr771sd9vy5jdsa30vhs56yjdhwk06v01b2fzbq";
     meta.description = "Helpers for writing expectation tests";
@@ -440,6 +462,7 @@ with self;
   };
 
   expect_test_helpers = janePackage {
+    duneVersion = "3";
     pname = "expect_test_helpers";
     hash = "0ixqck2lnsmz107yw0q2sr8va80skjpldx7lz4ymjiq2vsghk0rb";
     meta.description = "Async helpers for writing expectation tests";
@@ -447,6 +470,7 @@ with self;
   };
 
   patience_diff = janePackage {
+    duneVersion = "3";
     pname = "patience_diff";
     hash = "055kd3piadjnplip8c8q99ssh79d4irmhg2wng7aida5pbqp2p9f";
     meta.description = "Diff library using Bram Cohen's patience diff algorithm";
@@ -454,6 +478,7 @@ with self;
   };
 
   ecaml = janePackage {
+    duneVersion = "3";
     pname = "ecaml";
     hash = "0n9xi6agc3lgyj2nsi10cbif0xwn57xyaranad9r285rmbxrgjh7";
     meta.description = "Library for writing Emacs plugin in OCaml";
diff --git a/pkgs/development/ocaml-modules/janestreet/default.nix b/pkgs/development/ocaml-modules/janestreet/default.nix
index b0ab637bfba39..a496c2c73cf97 100644
--- a/pkgs/development/ocaml-modules/janestreet/default.nix
+++ b/pkgs/development/ocaml-modules/janestreet/default.nix
@@ -1,589 +1,27 @@
-{ self
-, openssl
-}:
-
-with self;
+{ }:
 
+# Minimal set of names assumed to be defined by the rest of ocamlPackages
 {
-
-  ocaml-compiler-libs = janePackage {
-    pname = "ocaml-compiler-libs";
-    hash = "03jds7bszh8wwpfwxb3dg0gyr1j1872wxwx1xqhry5ir0i84bg0s";
-    meta.description = "OCaml compiler libraries repackaged";
-  };
-
-  sexplib0 = janePackage {
-    pname = "sexplib0";
-    meta.description = "Library containing the definition of S-expressions and some base converters";
-    hash = "07v3ggyss7xhfv14bjk1n87sr42iqwj4cgjiv2lcdfkqk49i2bmi";
-  };
-
-  parsexp = janePackage {
-    pname = "parsexp";
-    hash = "1nyq23s5igd8cf3n4qxprjvhbmb6ighb3fy5mw7hxl0mdgsw5fvz";
-    propagatedBuildInputs = [ sexplib0 ];
-    meta.description = "S-expression parsing library";
-  };
-
-  sexplib = janePackage {
-    pname = "sexplib";
-    meta.description = "Library for serializing OCaml values to and from S-expressions";
-    hash = "1qfl0m04rpcjvc4yw1hzh6r16jpwmap0sa9ax6zjji67dz4szpyb";
-    propagatedBuildInputs = [ num parsexp ];
-  };
-
-  base = janePackage {
-    version = "0.11.1";
-    pname = "base";
-    hash = "0j6xb4265jr41vw4fjzak6yr8s30qrnzapnc6rl1dxy8bjai0nir";
-    propagatedBuildInputs = [ sexplib0 ];
-    meta.description = "Full standard library replacement for OCaml";
-  };
-
-  stdio = janePackage {
-    pname = "stdio";
-    hash = "1facajqhvq34g2wrg368y0ajxd6lrj5b3lyzyj0jhdmraxajjcwn";
-    propagatedBuildInputs = [ base ];
-    meta.description = "Standard IO library for OCaml";
-  };
-
-  configurator = janePackage {
-    pname = "configurator";
-    hash = "0h686630cscav7pil8c3w0gbh6rj4b41dvbnwmicmlkc746q5bfk";
-    propagatedBuildInputs = [ stdio ];
-    meta.description = "Helper library for gathering system configuration";
-  };
-
-  ppx_compare = janePackage {
-    pname = "ppx_compare";
-    version = "0.11.1";
-    hash = "06bq4m1bsm4jlx4g7wh5m99qky7xm4c2g52kaz6pv25hdn5agi2m";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ base ppx_deriving ];
-    meta.description = "Generation of comparison functions from types";
-  };
-
-  ppx_sexp_conv = janePackage {
-    pname = "ppx_sexp_conv";
-    version = "0.11.2";
-    hash = "0pqwnqy1xp309wvdcaax4lg02yk64lq2w03mbgfvf6ps5ry4gis9";
-    propagatedBuildInputs = [ sexplib0 ppxlib ppx_deriving ];
-    meta.description = "Generation of S-expression conversion functions from type definitions";
-  };
-
-  variantslib = janePackage {
-    pname = "variantslib";
-    hash = "0hbsk34ghc28h8pzbma923ma2bgnz8lzrgcqqx9bzg161jl4s4r3";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ base ];
-    meta.description = "OCaml variants as first class values";
-  };
-
-  ppx_variants_conv = janePackage {
-    pname = "ppx_variants_conv";
-    version = "0.11.1";
-    hash = "1yc0gsds5m2nv39zga8nnrca2n75rkqy5dz4xj1635ybz20hhbjd";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ ppx_deriving variantslib ];
-    meta.description = "Generation of accessor and iteration functions for OCaml variant types";
-  };
-
-  fieldslib = janePackage {
-    pname = "fieldslib";
-    hash = "1yvjvfax56lmn2lxbykcmhgmxypws1vp9lhnyb8bhbavsv8yc6da";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "OCaml record fields as first class values";
-  };
-
-  ppx_fields_conv = janePackage {
-    pname = "ppx_fields_conv";
-    hash = "1bb9cmn4js7p3qh8skzyik1pcz6sj1k4xkhf12fg1bjmb5fd0jx1";
-    propagatedBuildInputs = [ fieldslib ];
-    meta.description = "Generation of accessor and iteration functions for OCaml records";
-  };
-
-  ppx_custom_printf = janePackage {
-    pname = "ppx_custom_printf";
-    hash = "1dvjzvaxhx53jqwrrlxdckwl1azrhs9kvwb48mhgd0jnz65ny726";
-    propagatedBuildInputs = [ ppx_sexp_conv ];
-    meta.description = "Printf-style format-strings for user-defined string conversion";
-  };
-
-  bin_prot = janePackage {
-    pname = "bin_prot";
-    hash = "1mgbyzsr8h0y4s4j9dv7hsdrxyzhhjww5khwg2spi2my7ia95m0l";
-    propagatedBuildInputs = [ ppx_compare ppx_custom_printf ppx_fields_conv ppx_variants_conv ];
-    meta.description = "Binary protocol generator";
-  };
-
-  jane-street-headers = janePackage {
-    pname = "jane-street-headers";
-    hash = "0kij4c7qxrja787f3sm3z6mzr322486h2djrlyhnl66vp8hrv8si";
-    meta.description = "Jane Street header files";
-  };
-
-  ppx_here = janePackage {
-    pname = "ppx_here";
-    hash = "04njv8s4n54x9rg0012ymd6y6lrnqprnh0f0f6s0jcp79q7mv43i";
-    buildInputs = [ ppxlib ];
-    meta.description = "Expands [%here] into its location";
-  };
-
-  ppx_assert = janePackage {
-    pname = "ppx_assert";
-    hash = "0qbdrl0rj0midnb6sdyaz00s0d4nb8zrrdf565lcdsi1rbnyrzan";
-    buildInputs = [ ppx_here ];
-    propagatedBuildInputs = [ ppx_compare ppx_sexp_conv ];
-    meta.description = "Assert-like extension nodes that raise useful errors on failure";
-  };
-
-  ppx_hash = janePackage {
-    version = "0.11.1";
-    pname = "ppx_hash";
-    hash = "1p0ic6aijxlrdggpmycj12q3cy9xksbq2vq727215maz4snvlf5p";
-    propagatedBuildInputs = [ ppx_compare ppx_sexp_conv ];
-    meta.description = "A ppx rewriter that generates hash functions from type expressions and definitions";
-  };
-
-  ppx_inline_test = janePackage {
-    pname = "ppx_inline_test";
-    hash = "11n94fz1asjf5vqdgriv0pvsa5lbfpqcyk525c7816w23vskcvq6";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ base ];
-    meta.description = "Syntax extension for writing in-line tests in OCaml code";
-  };
-
-  ppx_sexp_message = janePackage {
-    pname = "ppx_sexp_message";
-    hash = "0d94pf0mrmyp905ncgj4w6cc6zpm4nlib6nclslhgs89pxpzg6a0";
-    buildInputs = [ ppx_here ];
-    propagatedBuildInputs = [ ppx_sexp_conv ];
-    meta.description = "A ppx rewriter for easy construction of s-expressions";
-  };
-
-  typerep = janePackage {
-    pname = "typerep";
-    hash = "00j4by75fl9niqvlpiyw6ymlmlmgfzysm8w25cj5wsfsh4yrgr74";
-    propagatedBuildInputs = [ base ];
-    meta.description = "Runtime types for OCaml";
-  };
-
-  ppx_typerep_conv = janePackage {
-    version = "0.11.1";
-    pname = "ppx_typerep_conv";
-    hash = "0a13dpfrrg0rsm8qni1bh7pqcda30l70z8r6yzi5a64bmwk7g5ah";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ ppx_deriving typerep ];
-    meta.description = "Generation of runtime types from type declarations";
-  };
-
-  ppx_js_style = janePackage {
-    pname = "ppx_js_style";
-    hash = "1cwqyrkykc8wi60grbid1w072fcvf7k0hd387jz7mxfw44qyb85g";
-    propagatedBuildInputs = [ ppxlib octavius ];
-    meta.description = "Code style checker for Jane Street Packages";
-  };
-
-  ppx_enumerate = janePackage {
-    version = "0.11.1";
-    pname = "ppx_enumerate";
-    hash = "0spx9k1v7vjjb6sigbfs69yndgq76v114jhxvzjmffw7q989cyhr";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ ppx_deriving ];
-    meta.description = "Generate a list containing all values of a finite type";
-  };
-
-  ppx_base = janePackage {
-    pname = "ppx_base";
-    hash = "079caqjbxk1d33hy69017n3dwslqy52alvzjddwpdjb04vjadlk6";
-    propagatedBuildInputs = [ ppx_compare ppx_enumerate ppx_hash ppx_js_style ];
-    meta.description = "Base set of ppx rewriters";
-  };
-
-  ppx_bench = janePackage {
-    pname = "ppx_bench";
-    hash = "0z98r6y4lpj6dy265m771ylx126hq3v1zjsk74yqvpwwd63gx3jz";
-    buildInputs = [ ppxlib ppx_inline_test ];
-    meta.description = "Syntax extension for writing in-line benchmarks in OCaml code";
-  };
-
-  ppx_bin_prot = janePackage {
-    version = "0.11.1";
-    pname = "ppx_bin_prot";
-    hash = "1h60i75bzvhna1axyn662gyrzhh441l79vl142d235i5x31dmnkz";
-    buildInputs = [ ppxlib ppx_here ];
-    propagatedBuildInputs = [ bin_prot ];
-    meta.description = "Generation of bin_prot readers and writers from types";
-  };
-
-  ppx_expect = janePackage {
-    pname = "ppx_expect";
-    hash = "1g0r67vfw9jr75pybiw4ysfiswlzyfpbj0gl91rx62gqdhjh1pga";
-    buildInputs = [ ppx_assert ppx_custom_printf ppx_fields_conv ppx_here ppx_variants_conv re ];
-    propagatedBuildInputs = [ fieldslib ppx_compare ppx_inline_test ppx_sexp_conv ];
-    meta.description = "Cram like framework for OCaml";
-  };
-
-  ppx_fail = janePackage {
-    pname = "ppx_fail";
-    hash = "0d0xadcl7mhp81kspcd2b0nh75h34w5a6s6j9qskjjbjif87wiix";
-    buildInputs = [ ppxlib ppx_here ];
-    meta.description = "Add location to calls to failwiths";
-  };
-
-  ppx_let = janePackage {
-    pname = "ppx_let";
-    hash = "1ckzwljlb78cdf6xxd24nddnmsihvjrnq75r1b255aj3xgkzsygx";
-    propagatedBuildInputs = [ base ppxlib ];
-    meta.description = "Monadic let-bindings";
-  };
-
-  ppx_optcomp = janePackage {
-    pname = "ppx_optcomp";
-    hash = "1rahkjq6vpffs7wdz1crgbxkdnlfkj1i3j12c2andy4fhj49glcm";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ ppx_deriving ];
-    meta.description = "Optional compilation for OCaml";
-  };
-
-  ppx_optional = janePackage {
-    pname = "ppx_optional";
-    hash = "0aw3hvrsdjpw4ik7rf15ghak31vhdr1lgpphr18mj76rnlrhirmx";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Pattern matching on flat options";
-  };
-
-  ppx_pipebang = janePackage {
-    pname = "ppx_pipebang";
-    hash = "0smgq587amlr3hivbbg153p83dj37w30cssp9cffc0v8kg84lfhr";
-    buildInputs = [ ppxlib ];
-    meta.description = "A ppx rewriter that inlines reverse application operators |> and |!";
-  };
-
-  ppx_sexp_value = janePackage {
-    pname = "ppx_sexp_value";
-    hash = "107zwb580nrmc0l03dl3y3hf12s3c1vv8b8mz6sa4k5afp3s9nkl";
-    buildInputs = [ ppx_here ];
-    propagatedBuildInputs = [ ppx_sexp_conv ];
-    meta.description = "A ppx rewriter that simplifies building s-expressions from OCaml values";
-  };
-
-  ppx_jane = janePackage {
-    pname = "ppx_jane";
-    hash = "0l1p6llaa60mrc5p9400cqv9yy6h76x5wfq3z1cx5xawy0yz4vlb";
-    buildInputs = [ ppxlib ];
-    propagatedBuildInputs = [ ppx_assert ppx_base ppx_bench ppx_bin_prot ppx_expect ppx_fail ppx_here ppx_let ppx_optcomp ppx_optional ppx_pipebang ppx_sexp_message ppx_sexp_value ppx_typerep_conv ];
-    meta.description = "Standard Jane Street ppx rewriters";
-  };
-
-  splittable_random = janePackage {
-    pname = "splittable_random";
-    hash = "1yrvpm6g62f8k6ihccxhfxpvmxbqxhi7p790a8jkdmyfdd1l6z73";
-    propagatedBuildInputs = [ ppx_jane ];
-    meta.description = "PRNG that can be split into independent streams";
-  };
-
-  core_kernel = janePackage {
-    version = "0.11.1";
-    pname = "core_kernel";
-    hash = "1dg7ygy7i64c5gaakb1cp1b26p9ks81vbxmb8fd7jff2q60j2z2g";
-    propagatedBuildInputs = [ configurator jane-street-headers sexplib splittable_random ];
-    meta.description = "Jane Street's standard library overlay (kernel)";
-  };
-
-  spawn = janePackage {
-    version = "0.12.0";
-    pname = "spawn";
-    hash = "0amgj7g9sjlbjivn1mg7yjdmxd21hgp4a0ak2zrm95dmm4gi846i";
-    meta.description = "Spawning sub-processes";
-  };
-
-  core = janePackage {
-    version = "0.11.3";
-    pname = "core";
-    hash = "0pzl8n09z4f3i7z2wq4cjxfqrr8mj6xcdp7rbg0nxap2zdhjgvrq";
-    propagatedBuildInputs = [ core_kernel spawn ];
-    meta.description = "Jane Street's standard library overlay";
-  };
-
-  textutils_kernel = janePackage {
-    pname = "textutils_kernel";
-    hash = "0s1ps7h54vgl76pll3y5qa1bw8f4h8wxc8mg8jq6bz8vxvl0dfv4";
-    propagatedBuildInputs = [ core_kernel ];
-    meta.description = "The subset of textutils using only core_kernel and working in javascript";
-  };
-
-  textutils = janePackage {
-    pname = "textutils";
-    hash = "1jmhpaihnndf4pr8xsk7ws70n4mvv34ry0ggqqpfs3wb2vkcdg6j";
-    propagatedBuildInputs = [ core textutils_kernel ];
-    meta.description = "Text output utilities";
-  };
-
-  re2 = janePackage {
-    pname = "re2";
-    hash = "0bl65d0nmvr7k1mkkcc4aai86l5qzgn1xxwmszshpwhaz87cqghd";
-    propagatedBuildInputs = [ core_kernel ];
-    prePatch = ''
-      substituteInPlace src/re2_c/jbuild --replace 'CXX=g++' 'CXX=c++'
-      substituteInPlace src/jbuild --replace '(cxx_flags ((:standard \ -pedantic) (-I re2_c/libre2)))' '(cxx_flags ((:standard \ -pedantic) (-I re2_c/libre2) (-x c++)))'
-    '';
-    meta.description = "OCaml bindings for RE2";
-  };
-
-  core_extended = janePackage {
-    pname = "core_extended";
-    hash = "1fvnr6zkpbl48dl7nn3j1dpsrr6bi00iqh282wg5lgdhcsjbc0dy";
-    propagatedBuildInputs = [ core re re2 textutils ];
-    postPatch = ''
-      patchShebangs src/discover.sh
-    '';
-    meta.description = "Jane Street Capital's standard library overlay";
-  };
-
-  async_kernel = janePackage {
-    version = "0.11.1";
-    pname = "async_kernel";
-    hash = "1ssv0gqbdns6by1wdjrrs35cj1c1n1qcfkxs8hj04b7x89wzvf1q";
-    propagatedBuildInputs = [ core_kernel ];
-    meta.description = "Jane Street Capital's asynchronous execution library (core)";
-  };
-
-  protocol_version_header = janePackage {
-    pname = "protocol_version_header";
-    hash = "159qmkb0dsfmr1lv2ly50aqszpm24bvrm3sw07n2zhkxgy6q613z";
-    propagatedBuildInputs = [ core_kernel ocaml-migrate-parsetree ];
-    meta.description = "Protocol aware version negotiation";
-  };
-
-  async_rpc_kernel = janePackage {
-    pname = "async_rpc_kernel";
-    hash = "0wl7kp30qxkalk91q5pja9agsvvmdjvb2q7s3m79dlvwwi11l33y";
-    propagatedBuildInputs = [ core_kernel async_kernel protocol_version_header ];
-    meta.description = "Platform-independent core of Async RPC library";
-  };
-
-  async_unix = janePackage {
-    pname = "async_unix";
-    hash = "1y5za5fdh0x82zdjigxci9zm9jnpfd2lfgpjcq4rih3s28f16sf7";
-    propagatedBuildInputs = [ core async_kernel ];
-    meta.description = "Jane Street Capital's asynchronous execution library (unix)";
-  };
-
-  async_extra = janePackage {
-    version = "0.11.1";
-    pname = "async_extra";
-    hash = "0dmplvqf41820rm5i0l9bx1xmmdlq8zsszi36y2rkjna8991f7s2";
-    propagatedBuildInputs = [ async_rpc_kernel async_unix ];
-    meta.description = "Jane Street's asynchronous execution library (extra)";
-  };
-
-  async = janePackage {
-    pname = "async";
-    hash = "1i05hzk4mhzj1mw98b2bdbxhnq03jvhkkkw4d948i6265jzrrbv5";
-    propagatedBuildInputs = [ async_extra ];
-    meta.description = "Jane Street Capital's asynchronous execution library";
-  };
-
-  async_find = janePackage {
-    pname = "async_find";
-    hash = "0s0qafx74ri1vr2vv3iy1j7s3p6gp7vyg0mw5g17iafk0w6lv2iq";
-    propagatedBuildInputs = [ async ];
-    meta.description = "Directory traversal with Async";
-  };
-
-  async_interactive = janePackage {
-    pname = "async_interactive";
-    hash = "01rlfcylpiak6a2n6q3chp73cvkhvb65n906dj0flmxmagn7dxd1";
-    propagatedBuildInputs = [ async ];
-    meta.description = "Utilities for building simple command-line based user interfaces";
-  };
-
-  async_parallel = janePackage {
-    pname = "async_parallel";
-    hash = "0hak8ba3rfzqhz5hz2annqmsv5bkqzdihhafp0f58ryrlskafwag";
-    propagatedBuildInputs = [ async ];
-    meta.description = "Distributed computing library";
-  };
-
-  async_shell = janePackage {
-    pname = "async_shell";
-    hash = "1jb01ygfnhabsy72xlcg11vp7rr37sg555sm0k3yxl4r5az3y2ay";
-    propagatedBuildInputs = [ core_extended async ];
-    meta.description = "Shell helpers for Async";
-  };
-
-  sexp_pretty = janePackage {
-    pname = "sexp_pretty";
-    hash = "0xskahjggbwvvb82fn0jp1didxbgpmgks76xhwp9s3vqkhgz6918";
-    propagatedBuildInputs = [ ppx_base re sexplib ];
-    meta.description = "S-expression pretty-printer";
-  };
-
-  expect_test_helpers_kernel = janePackage {
-    pname = "expect_test_helpers_kernel";
-    hash = "0m113vq4m1xm3wmwa08r6qjc7p5f0y3ss8s4i2z591ycgs2fxzlj";
-    propagatedBuildInputs = [ core_kernel sexp_pretty ];
-    meta.description = "Helpers for writing expectation tests";
-  };
-
-  expect_test_helpers = janePackage {
-    pname = "expect_test_helpers";
-    hash = "13n6h7mimwkbsjdix96ghfrmxjd036m4h4zgl8qag00aacqclvpi";
-    propagatedBuildInputs = [ async expect_test_helpers_kernel ];
-    meta.description = "Async helpers for writing expectation tests";
-  };
-
-  cinaps = janePackage {
-    pname = "cinaps";
-    hash = "0f8cx4xkkk4wqpcbvva8kxdndbgawljp17dwppc6zpjpkjl8s84j";
-    propagatedBuildInputs = [ re ];
-    meta.description = "Trivial Metaprogramming tool using the OCaml toplevel";
-  };
-
-  command_rpc = janePackage {
-    pname = "command_rpc";
-    hash = "111v4km0ds8ixmpmwg9ck36ap97400mqzhijf57kj6wfwgzcmr2g";
-    propagatedBuildInputs = [ async ];
-    meta.description = "Utilities for Versioned RPC communication with a child process over stdin and stdout";
-  };
-
-  # Deprecated libraries
-
-  ppx_ast = janePackage {
-    pname = "ppx_ast";
-    hash = "125bzswcwr3nb26ss8ydh8z4218c8fi3s2kvgqp1j1fhc5wwzqgj";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Deprecated (see ppxlib)";
-  };
-
-  ppx_core = janePackage {
-    pname = "ppx_core";
-    hash = "11hgm9mxig4cm3c827f6dns9mjv3pf8g6skf10x0gw9xnp1dmzmx";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Deprecated (see ppxlib)";
-  };
-
-  ppx_driver = janePackage {
-    pname = "ppx_driver";
-    hash = "00kfx6js2kxk57k4v7hiqvwk7h35whgjihnxf75m82rnaf4yzvfi";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Deprecated (see ppxlib)";
-  };
-
-  ppx_metaquot = janePackage {
-    pname = "ppx_metaquot";
-    hash = "1vz8bi56jsz8w0894vgbfsfvmdyh5k1dgv45l8vhkks0s7d3ldji";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Deprecated (see ppxlib)";
-  };
-
-  ppx_traverse = janePackage {
-    pname = "ppx_traverse";
-    hash = "1p2n5da4mxh9fk4gvxlibc706bs5xwkbppxd1x0ip1vln5pabbq5";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Deprecated (see ppxlib)";
-  };
-
-  ppx_traverse_builtins = janePackage {
-    pname = "ppx_traverse_builtins";
-    hash = "0qlf7i8h8k3a9h8nhb0ki3y1knr6wgbm24f1qaqni53fpvzv0pfb";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Deprecated (see ppxlib)";
-  };
-
-  ppx_type_conv = janePackage {
-    pname = "ppx_type_conv";
-    hash = "04dbrglqqhkas25cpjz8xhjcbpk141c35qggzw66bn69izczfmaf";
-    propagatedBuildInputs = [ ppxlib ];
-    meta.description = "Deprecated (see ppxlib)";
-  };
-
-  # Miscellaneous Jane Street packages
-
-  core_bench = janePackage {
-    pname = "core_bench";
-    hash = "10i28ssfdqxxhq0rvnlp581lr1cq2apkhmm8j83fksjkmbxcrasc";
-    propagatedBuildInputs = [ core_extended ];
-    meta.description = "Micro-benchmarking library for OCaml";
-  };
-
-  csvfields = janePackage {
-    pname = "csvfields";
-    hash = "10zw4fjlniivfdzzz79lnbvcjnhk5y16m1p8mn4xbs23n6mbix0f";
-    propagatedBuildInputs = [ core expect_test_helpers ];
-    meta.description = "Runtime support for ppx_xml_conv and ppx_csv_conv";
-  };
-
-  ecaml = janePackage {
-    pname = "ecaml";
-    hash = "1is5156q59s427x3q5nh9wsi8h1x77670bmyilqxasy39yway7g8";
-    propagatedBuildInputs = [ async expect_test_helpers_kernel ];
-    meta.description = "Writing Emacs plugin in OCaml";
-  };
-
-  incremental_kernel = janePackage {
-    version = "0.11.1";
-    pname = "incremental_kernel";
-    hash = "1qp9dqncx2h0np0rndqaic4dna8f1dlkqnbjfcdhcim5dp2vg4x6";
-    propagatedBuildInputs = [ core_kernel ];
-    meta.description = "Library for incremental computations depending only on core_kernel";
-  };
-
-  incremental = janePackage {
-    pname = "incremental";
-    hash = "1xchd3v4kj56wixjrsnj7m7l0374cgkzybihs2b62mn65xf6n7ki";
-    propagatedBuildInputs = [ core incremental_kernel ];
-    meta.description = "Library for incremental computations";
-  };
-
-  incr_map = janePackage {
-    pname = "incr_map";
-    hash = "01vx9aldxpigz5ah9h337xcw73a7r8449v8l2xbralljhs0zglx9";
-    propagatedBuildInputs = [ incremental_kernel ];
-    meta.description = "Helpers for incremental operations on map like data structures";
-  };
-
-  parsexp_io = janePackage {
-    pname = "parsexp_io";
-    hash = "0rhdl40jiirvv6fhgjk50n8wzs3jly5d8dyyyfgpjgl39mwkjjnb";
-    propagatedBuildInputs = [ parsexp ppx_js_style ];
-    meta.description = "S-expression parsing library (IO functions)";
-  };
-
-  patience_diff = janePackage {
-    pname = "patience_diff";
-    hash = "0q7a64fgg97qcd6d8c45gyz63x5vq004axxqvvfg92b8f3x2plx4";
-    propagatedBuildInputs = [ core_kernel ];
-    meta.description = "Tool and library implementing patience diff";
-  };
-
-  posixat = janePackage {
-    pname = "posixat";
-    hash = "04rs4sl0r4rg9m6l9kkqkmc4n87sv4a4w9ibq4zsjk9j4n6r2df8";
-    propagatedBuildInputs = [ ppx_optcomp ppx_sexp_conv sexplib ];
-    meta.description = "Binding to the posix *at functions";
-  };
-
-  rpc_parallel = janePackage {
-    pname = "rpc_parallel";
-    hash = "13dx59x73i8mkwv2qkh8gx6kk8arlvghj57k1jdscdmzmyqc9gvn";
-    propagatedBuildInputs = [ async ];
-    meta.description = "Type-safe library for building parallel applications";
-  };
-
-  shexp = janePackage {
-    version = "0.11.1";
-    pname = "shexp";
-    hash = "06yssp7bsmabaxvw9bqxyrsji1gkvl7if5adba3v6h4kilqy7rqg";
-    propagatedBuildInputs = [ posixat spawn ];
-    meta.description = "Process library and s-expression based shell";
-  };
-
-  topological_sort = janePackage {
-    pname = "topological_sort";
-    hash = "1qnz5b1rs45lsl1ycxd1lglpmh8444gy5khhdp5fvxy987zkzklz";
-    propagatedBuildInputs = [ core_kernel ];
-    meta.description = "Topological sort algorithm";
-  };
+  async = null;
+  async_kernel = null;
+  async_unix = null;
+  base = null;
+  core = null;
+  core_bench = null;
+  core_kernel = null;
+  ocaml-compiler-libs = null;
+  ppx_custom_printf = null;
+  ppx_expect = null;
+  ppx_hash = null;
+  ppx_here = null;
+  ppx_inline_test = null;
+  ppx_jane = null;
+  ppx_js_style = null;
+  ppx_let = null;
+  ppx_optcomp = null;
+  ppx_sexp_conv = null;
+  sexplib0 = null;
+  sexplib = null;
+  spawn = null;
+  stdio = null;
 }
diff --git a/pkgs/development/ocaml-modules/janestreet/janePackage.nix b/pkgs/development/ocaml-modules/janestreet/janePackage.nix
deleted file mode 100644
index f4cef99046adf..0000000000000
--- a/pkgs/development/ocaml-modules/janestreet/janePackage.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, fetchFromGitHub, buildDunePackage, defaultVersion ? "0.11.0" }:
-
-{ pname, version ? defaultVersion, hash, buildInputs ? [], ...}@args:
-
-buildDunePackage (args // {
-  inherit version buildInputs;
-
-  duneVersion = "1";
-
-  minimalOCamlVersion = "4.04";
-
-  src = fetchFromGitHub {
-    owner = "janestreet";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = hash;
-  };
-
-  meta = {
-    license = lib.licenses.asl20;
-    homepage = "https://github.com/janestreet/${pname}";
-  } // args.meta;
-})
diff --git a/pkgs/development/ocaml-modules/janestreet/janePackage_0_12.nix b/pkgs/development/ocaml-modules/janestreet/janePackage_0_12.nix
index 5ab455ddff3e7..e5a79ba598f4a 100644
--- a/pkgs/development/ocaml-modules/janestreet/janePackage_0_12.nix
+++ b/pkgs/development/ocaml-modules/janestreet/janePackage_0_12.nix
@@ -1,11 +1,9 @@
 { lib, fetchFromGitHub, buildDunePackage, defaultVersion ? "0.12.0" }:
 
-{ pname, version ? defaultVersion, hash, ...}@args:
+{ pname, version ? defaultVersion, duneVersion ? "1", hash, ...}@args:
 
 buildDunePackage (args // {
-  inherit version;
-
-  duneVersion = "1";
+  inherit version duneVersion;
 
   minimalOCamlVersion = "4.07";
 
diff --git a/pkgs/development/ocaml-modules/landmarks-ppx/default.nix b/pkgs/development/ocaml-modules/landmarks-ppx/default.nix
new file mode 100644
index 0000000000000..c55836a9b75e5
--- /dev/null
+++ b/pkgs/development/ocaml-modules/landmarks-ppx/default.nix
@@ -0,0 +1,18 @@
+{ lib, fetchFromGitHub, buildDunePackage, ocaml, landmarks, ppxlib }:
+
+buildDunePackage {
+  pname = "landmarks-ppx";
+  minimalOCamlVersion = "4.08";
+
+  inherit (landmarks) src version;
+
+  buildInputs = [ ppxlib ];
+  propagatedBuildInputs = [ landmarks ];
+
+  doCheck = lib.versionAtLeast ocaml.version "4.08"
+    && lib.versionOlder ocaml.version "5.0";
+
+  meta = landmarks.meta // {
+    description = "Preprocessor instrumenting code using the landmarks library";
+  };
+}
diff --git a/pkgs/development/ocaml-modules/landmarks/default.nix b/pkgs/development/ocaml-modules/landmarks/default.nix
new file mode 100644
index 0000000000000..d501e4e3c51a2
--- /dev/null
+++ b/pkgs/development/ocaml-modules/landmarks/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchFromGitHub, buildDunePackage, ocaml }:
+
+buildDunePackage {
+  pname = "landmarks";
+  version = "1.4";
+  minimalOCamlVersion = "4.08";
+
+  src = fetchFromGitHub {
+    owner = "LexiFi";
+    repo = "landmarks";
+    rev = "b0c753cd2a4c4aa00dffdd3be187d8ed592fabf7";
+    hash = "sha256-Wpr76JURUFrj7v39rdM/2Lr7boa7nL/bnPEz1vMrmQo";
+  };
+
+  doCheck = lib.versionAtLeast ocaml.version "4.08"
+    && lib.versionOlder ocaml.version "5.0";
+
+  meta = with lib; {
+    description = "A Simple Profiling Library for OCaml";
+    maintainers = [ maintainers.kenran ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/ocaml-modules/metadata/default.nix b/pkgs/development/ocaml-modules/metadata/default.nix
index 789825175e409..2d9ea0da8deb7 100644
--- a/pkgs/development/ocaml-modules/metadata/default.nix
+++ b/pkgs/development/ocaml-modules/metadata/default.nix
@@ -2,13 +2,13 @@
 
 buildDunePackage rec {
   pname = "metadata";
-  version = "0.2.0";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "savonet";
     repo = "ocaml-metadata";
     rev = "v${version}";
-    sha256 = "sha256-sSekkyJ8D6mCCmxIyd+pBk/khaehA3BcpUQl2Gln+Ic=";
+    sha256 = "sha256-SQ8fNl62fvoCgbIt0axQyE3Eqwl8EOtYiz3xN96al+g=";
   };
 
   minimalOCamlVersion = "4.14";
diff --git a/pkgs/development/ocaml-modules/ppxlib/default.nix b/pkgs/development/ocaml-modules/ppxlib/default.nix
index 80d408f1e3500..0998b5d6a134f 100644
--- a/pkgs/development/ocaml-modules/ppxlib/default.nix
+++ b/pkgs/development/ocaml-modules/ppxlib/default.nix
@@ -17,6 +17,7 @@ let param = {
   };
   "0.13.0" = {
     sha256 = "sha256-geHz0whQDg5/YQjVsN2iuHlkClwh7z3Eqb2QOBzuOdk=";
+    min_version = "4.07";
     max_version = "4.11";
     useDune2 = false;
     OMP = [ ocaml-migrate-parsetree ];
diff --git a/pkgs/development/ocaml-modules/re/default.nix b/pkgs/development/ocaml-modules/re/default.nix
index 2f5d2cd603b33..eaab20f7f2e78 100644
--- a/pkgs/development/ocaml-modules/re/default.nix
+++ b/pkgs/development/ocaml-modules/re/default.nix
@@ -13,7 +13,7 @@ let version_sha = if lib.versionAtLeast ocaml.version "4.08"
     };
 in
 
-buildDunePackage (rec {
+buildDunePackage rec {
   pname = "re";
   version = version_sha.version;
 
@@ -34,6 +34,4 @@ buildDunePackage (rec {
     license = lib.licenses.lgpl2;
     maintainers = with lib.maintainers; [ vbgl ];
   };
-} // lib.optionalAttrs (!lib.versionAtLeast ocaml.version "4.08") {
-  duneVersion = "1";
-})
+}
diff --git a/pkgs/development/ocaml-modules/secp256k1/default.nix b/pkgs/development/ocaml-modules/secp256k1/default.nix
index 73a48f9c4de45..6dd4d7ad64a48 100644
--- a/pkgs/development/ocaml-modules/secp256k1/default.nix
+++ b/pkgs/development/ocaml-modules/secp256k1/default.nix
@@ -4,7 +4,7 @@ buildDunePackage rec {
   pname = "secp256k1";
   version = "0.4.4";
 
-  duneVersion = "3";
+  minimalOCamlVersion = "4.07";
 
   src = fetchFromGitHub {
     owner = "dakk";
diff --git a/pkgs/development/ocaml-modules/stdlib-shims/default.nix b/pkgs/development/ocaml-modules/stdlib-shims/default.nix
index 54b97abfb86a0..45c8bb2e4a1a2 100644
--- a/pkgs/development/ocaml-modules/stdlib-shims/default.nix
+++ b/pkgs/development/ocaml-modules/stdlib-shims/default.nix
@@ -1,13 +1,12 @@
 { buildDunePackage, lib, fetchurl, ocaml }:
 
-buildDunePackage (rec {
+buildDunePackage rec {
   pname = "stdlib-shims";
   version = "0.3.0";
   src = fetchurl {
     url = "https://github.com/ocaml/${pname}/releases/download/${version}/${pname}-${version}.tbz";
     sha256 = "0jnqsv6pqp5b5g7lcjwgd75zqqvcwcl5a32zi03zg1kvj79p5gxs";
   };
-  minimalOCamlVersion = "4.02";
   doCheck = true;
   meta = {
     description = "Shims for forward-compatibility between versions of the OCaml standard library";
@@ -15,6 +14,4 @@ buildDunePackage (rec {
     inherit (ocaml.meta) license;
     maintainers = [ lib.maintainers.vbgl ];
   };
-} // lib.optionalAttrs (!lib.versionAtLeast ocaml.version "4.08") {
-  duneVersion = "1";
-})
+}
diff --git a/pkgs/development/ocaml-modules/wayland/default.nix b/pkgs/development/ocaml-modules/wayland/default.nix
index 6c60458f966dd..c839546a2ba69 100644
--- a/pkgs/development/ocaml-modules/wayland/default.nix
+++ b/pkgs/development/ocaml-modules/wayland/default.nix
@@ -13,13 +13,13 @@
 
 buildDunePackage rec {
   pname = "wayland";
-  version = "2.0";
+  version = "2.1";
 
   minimalOCamlVersion = "5.0";
 
   src = fetchurl {
     url = "https://github.com/talex5/ocaml-wayland/releases/download/v${version}/wayland-${version}.tbz";
-    hash = "sha256-iCG1zk1tA7gdGGt78c3sQi0NN9Fh3HsCP4cy7Y3pg0s=";
+    hash = "sha256-D/tTlYlU8e1O+HShIsBxqc8953rjQblj63tRPYAo88E=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/ocaml-modules/zed/default.nix b/pkgs/development/ocaml-modules/zed/default.nix
index 882dfb23996e8..4b05b21c69d10 100644
--- a/pkgs/development/ocaml-modules/zed/default.nix
+++ b/pkgs/development/ocaml-modules/zed/default.nix
@@ -1,34 +1,16 @@
-{ lib, buildDunePackage, fetchFromGitHub, ocaml, react, charInfo_width, result, uchar, uutf, uucp, uuseg }:
-
-let
-  switch =
-    if lib.versionAtLeast ocaml.version "4.08"
-    then
-      {
-        version = "3.2.3";
-        sha256 = "sha256-lbhqjZxeUqHdd+yahRO+B6L2mc+h+4T2+qKVgWC2HY8=";
-        propagatedBuildInputs = [ react result uchar uutf uucp uuseg ];
-      }
-    else
-      {
-        version = "3.1.0";
-        sha256 = "04vr1a94imsghm98iigc35rhifsz0rh3qz2qm0wam2wvp6vmrx0p";
-        propagatedBuildInputs = [ charInfo_width react ];
-      };
-in
+{ lib, buildDunePackage, fetchFromGitHub, react, result, uchar, uutf, uucp, uuseg }:
 
 buildDunePackage rec {
   pname = "zed";
+  version = "3.2.3";
 
-  inherit (switch) version propagatedBuildInputs;
-
-  duneVersion = "3";
+  propagatedBuildInputs = [ react result uchar uutf uucp uuseg ];
 
   src = fetchFromGitHub {
     owner = "ocaml-community";
     repo = pname;
     rev = version;
-    sha256 = switch.sha256;
+    sha256 = "sha256-lbhqjZxeUqHdd+yahRO+B6L2mc+h+4T2+qKVgWC2HY8=";
   };
 
   meta = {
diff --git a/pkgs/development/php-packages/mongodb/default.nix b/pkgs/development/php-packages/mongodb/default.nix
index 7e83041da1367..02771c90167ee 100644
--- a/pkgs/development/php-packages/mongodb/default.nix
+++ b/pkgs/development/php-packages/mongodb/default.nix
@@ -15,13 +15,13 @@
 
 buildPecl rec {
   pname = "mongodb";
-  version = "1.18.0";
+  version = "1.18.1";
 
   src = fetchFromGitHub {
     owner = "mongodb";
     repo = "mongo-php-driver";
     rev = version;
-    hash = "sha256-KrRWogmGMGaMRhU5D5xF5LTvJ6g9XSoDA5KfJxftvws=";
+    hash = "sha256-GstDJShuwzXZqlzhLWMEkvrNgCdmORAkGncpmPe879Q=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/development/php-packages/opentelemetry/default.nix b/pkgs/development/php-packages/opentelemetry/default.nix
index 06bbe263860f6..360f4cc43841f 100644
--- a/pkgs/development/php-packages/opentelemetry/default.nix
+++ b/pkgs/development/php-packages/opentelemetry/default.nix
@@ -1,7 +1,7 @@
 { lib, buildPecl, fetchFromGitHub }:
 
 let
-  version = "1.0.1";
+  version = "1.0.2";
 in buildPecl rec {
   inherit version;
   pname = "opentelemetry";
@@ -10,7 +10,7 @@ in buildPecl rec {
     owner = "open-telemetry";
     repo = "opentelemetry-php-instrumentation";
     rev = version;
-    hash = "sha256-VHUzRhTtHygHoW+poItaphV+mxe4rmmSfGgesUgPz8Q=";
+    hash = "sha256-w6Gkjh9+I6KlQyztv4o1XZ6nJ+Yn4wXXN6nma8/dLTU=";
   };
 
   sourceRoot = "${src.name}/ext";
diff --git a/pkgs/development/python-modules/aggdraw/default.nix b/pkgs/development/python-modules/aggdraw/default.nix
index ef44979c4394c..a83de3540fcd3 100644
--- a/pkgs/development/python-modules/aggdraw/default.nix
+++ b/pkgs/development/python-modules/aggdraw/default.nix
@@ -1,6 +1,5 @@
 { lib
 , fetchFromGitHub
-, fetchpatch
 , buildPythonPackage
 , packaging
 , setuptools
@@ -14,24 +13,16 @@
 
 buildPythonPackage rec {
   pname = "aggdraw";
-  version = "1.3.16";
+  version = "1.3.18";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "pytroll";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-2yajhuRyQ7BqghbSgPClW3inpw4TW2DhgQbomcRFx94=";
+    hash = "sha256-dM6yLR6xsZerpqY+BMxIjrJ3fQty9CFUWhxl2zkTgRA=";
   };
 
-  patches = [
-    # Removes `register` storage class specifier, which is not allowed in C++17.
-    (fetchpatch {
-      url = "https://github.com/pytroll/aggdraw/commit/157ed49803567e8c3eeb7dfeff4c116db35747f7.patch";
-      hash = "sha256-QSzpO90u5oSBWUzehRFbXgZ1ApEfLlfp11MUx6w11aI=";
-    })
-  ];
-
   nativeBuildInputs = [
     packaging
     setuptools
diff --git a/pkgs/development/python-modules/ailment/default.nix b/pkgs/development/python-modules/ailment/default.nix
index f379322c502c9..c01ea491bcd3b 100644
--- a/pkgs/development/python-modules/ailment/default.nix
+++ b/pkgs/development/python-modules/ailment/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pyvex
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pyvex,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ailment";
-  version = "9.2.97";
+  version = "9.2.98";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -17,23 +18,17 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "ailment";
     rev = "refs/tags/v${version}";
-    hash = "sha256-R6OBc7qK4zP0t8m26V17he8Oy39eSK8/Dm84ScnBy3s=";
+    hash = "sha256-ue780bhPpxv7Bnx9PX+HdQt3gcDSvTvK0FLPMopXQRY=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    pyvex
-  ];
+  dependencies = [ pyvex ];
 
   # Tests depend on angr (possibly a circular dependency)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "ailment"
-  ];
+  pythonImportsCheck = [ "ailment" ];
 
   meta = with lib; {
     description = "The angr Intermediate Language";
diff --git a/pkgs/development/python-modules/aio-pika/default.nix b/pkgs/development/python-modules/aio-pika/default.nix
index 65f15fa639d53..10c311c220c9d 100644
--- a/pkgs/development/python-modules/aio-pika/default.nix
+++ b/pkgs/development/python-modules/aio-pika/default.nix
@@ -1,44 +1,57 @@
-{ lib
-, aiomisc-pytest
-, aiormq
-, buildPythonPackage
-, fetchFromGitHub
-, pamqp
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, shortuuid
-, yarl
+{
+  lib,
+  aiomisc-pytest,
+  aiormq,
+  buildPythonPackage,
+  docker,
+  fetchFromGitHub,
+  pamqp,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  shortuuid,
+  testcontainers,
+  wrapt,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aio-pika";
-  version = "9.4.0";
+  version = "9.4.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "mosquito";
     repo = "aio-pika";
     rev = "refs/tags/${version}";
-    hash = "sha256-EntV/CBvT4II4nxsVe3KjNA4EPV7Oc6h2G0fX0fHKTU=";
+    hash = "sha256-aRXYFW4fl3iXH3bwP30+TllRm4BkIUcGMX/lNfhiqjo=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiormq
     yarl
   ];
 
   nativeCheckInputs = [
     aiomisc-pytest
+    docker
     pamqp
     pytestCheckHook
     shortuuid
+    testcontainers
+    wrapt
+  ];
+
+  disabledTests = [
+    # Tests attempt to connect to a RabbitMQ server
+    "test_connection_interleave"
+    "test_connection_happy_eyeballs_delay"
+    "test_robust_connection_interleave"
+    "test_robust_connection_happy_eyeballs_delay"
   ];
 
   disabledTestPaths = [
@@ -53,9 +66,7 @@ buildPythonPackage rec {
     "tests/test_types.py"
   ];
 
-  pythonImportsCheck = [
-    "aio_pika"
-  ];
+  pythonImportsCheck = [ "aio_pika" ];
 
   meta = with lib; {
     description = "AMQP 0.9 client designed for asyncio and humans";
diff --git a/pkgs/development/python-modules/aioasuswrt/default.nix b/pkgs/development/python-modules/aioasuswrt/default.nix
index b496c9ac25936..5847da65b28bb 100644
--- a/pkgs/development/python-modules/aioasuswrt/default.nix
+++ b/pkgs/development/python-modules/aioasuswrt/default.nix
@@ -1,27 +1,38 @@
-{ lib
-, asyncssh
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
+{
+  lib,
+  asyncssh,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aioasuswrt";
   version = "1.4.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "kennedyshead";
-    repo = pname;
-    rev = "V${version}";
-    sha256 = "1iv9f22v834g8wrjcynjn2azpzk8gsczv71jf7dw8aix0n04h325";
+    repo = "aioasuswrt";
+    rev = "refs/tags/V${version}";
+    hash = "sha256-RQxIgAU9KsTbcTKc/Zl+aP77lbDSeiYzR48MtIVwacc=";
   };
 
-  propagatedBuildInputs = [
-    asyncssh
-  ];
+  postPatch = ''
+    substituteInPlace setup.cfg \
+      --replace-fail "--cov-report html" "" \
+      --replace-fail "--cov-report term-missing" ""
+  '';
+
+  build-system = [ setuptools ];
+
+  dependencies = [ asyncssh ];
 
   nativeCheckInputs = [
     pytest-asyncio
@@ -29,19 +40,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace setup.cfg \
-      --replace "--cov-report html" "" \
-      --replace "--cov-report term-missing" ""
-  '';
-
-  pythonImportsCheck = [
-    "aioasuswrt"
-  ];
+  pythonImportsCheck = [ "aioasuswrt" ];
 
   meta = with lib; {
     description = "Python module for Asuswrt";
     homepage = "https://github.com/kennedyshead/aioasuswrt";
+    changelog = "https://github.com/kennedyshead/aioasuswrt/releases/tag/V${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/aioautomower/default.nix b/pkgs/development/python-modules/aioautomower/default.nix
index f6a02d393e5f0..99d8175b62ed2 100644
--- a/pkgs/development/python-modules/aioautomower/default.nix
+++ b/pkgs/development/python-modules/aioautomower/default.nix
@@ -2,6 +2,7 @@
 , aiohttp
 , buildPythonPackage
 , fetchFromGitHub
+, freezegun
 , mashumaro
 , poetry-core
 , pyjwt
@@ -14,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "aioautomower";
-  version = "2024.3.3";
+  version = "2024.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "Thomas55555";
     repo = "aioautomower";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZJRc5nzp1P3X93PxGVB55VgN1HZ2kvn43LT2wYEPxSo=";
+    hash = "sha256-W6aZdvg+EZKv0pmIaPOBaJaWipq3AENTVAVon/lFuI4=";
   };
 
   postPatch = ''
@@ -44,6 +45,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    freezegun
     pytest-asyncio
     pytestCheckHook
     syrupy
diff --git a/pkgs/development/python-modules/aiodhcpwatcher/default.nix b/pkgs/development/python-modules/aiodhcpwatcher/default.nix
index b96e7eb29fbcd..5c8adc9b4b99a 100644
--- a/pkgs/development/python-modules/aiodhcpwatcher/default.nix
+++ b/pkgs/development/python-modules/aiodhcpwatcher/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "aiodhcpwatcher";
-  version = "0.8.2";
+  version = "1.0.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bdraco";
     repo = "aiodhcpwatcher";
     rev = "v${version}";
-    hash = "sha256-yvmCp8luR26yFYun/YY/tt+peaAL4nOR9cC6lpMiJhk=";
+    hash = "sha256-0of+no92s9SEKG1tc9lFlWR8f5Jnf3C723goQViB6+A=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/aioeafm/default.nix b/pkgs/development/python-modules/aioeafm/default.nix
index f1535eb07d90f..170ff6308f40a 100644
--- a/pkgs/development/python-modules/aioeafm/default.nix
+++ b/pkgs/development/python-modules/aioeafm/default.nix
@@ -1,28 +1,31 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, poetry-core
-, pytest-aiohttp
-, pytest-asyncio
-, pytest-cov
-, pytestCheckHook
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  poetry-core,
+  pytest-aiohttp,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "aioeafm";
   version = "1.0.0";
-  format = "pyproject";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Jc2k";
-    repo = pname;
-    rev = version;
-    sha256 = "048cxn3fw2hynp27zlizq7k8ps67qq9sib1ddgirnxy5zc87vgkc";
+    repo = "aioeafm";
+    rev = "refs/tags/${version}";
+    hash = "sha256-bL59EPvFd5vjay2sqBPGx+iL5sE/0n/EtR4K7obtDBE=";
   };
 
   patches = [
+    # Switch to poetry-core, https://github.com/Jc2k/aioeafm/pull/4
     (fetchpatch {
       name = "use-poetry-core.patch";
       url = "https://github.com/Jc2k/aioeafm/commit/549590e2ed465be40e2406416d89b8a8cd8c6185.patch";
@@ -30,14 +33,12 @@ buildPythonPackage rec {
     })
   ];
 
-  nativeBuildInputs = [ poetry-core ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [ aiohttp ];
+  dependencies = [ aiohttp ];
 
   nativeCheckInputs = [
     pytest-aiohttp
-    pytest-asyncio
-    pytest-cov
     pytestCheckHook
   ];
 
@@ -46,6 +47,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python client for access the Real Time flood monitoring API";
     homepage = "https://github.com/Jc2k/aioeafm";
+    changelog = "https://github.com/Jc2k/aioeafm/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/aiolifx-themes/default.nix b/pkgs/development/python-modules/aiolifx-themes/default.nix
index 33f3c963f5eae..284866dc921a6 100644
--- a/pkgs/development/python-modules/aiolifx-themes/default.nix
+++ b/pkgs/development/python-modules/aiolifx-themes/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "aiolifx-themes";
-  version = "0.4.14";
+  version = "0.4.17";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "Djelibeybi";
     repo = "aiolifx-themes";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KlQKRcgxaWqRKIusnZGoBDEfKYF1Gn9EkrhJAftdUTc=";
+    hash = "sha256-nKzvdDzwizF1Db8qFQuOH7gLnYHmdCYdQZPN+gNg8mU=";
   };
 
   prePatch = ''
diff --git a/pkgs/development/python-modules/aiolifx/default.nix b/pkgs/development/python-modules/aiolifx/default.nix
index a9362a9dac3d6..8f3a773b713e1 100644
--- a/pkgs/development/python-modules/aiolifx/default.nix
+++ b/pkgs/development/python-modules/aiolifx/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, async-timeout
-, click
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, ifaddr
-, inquirerpy
-, bitstring
-, setuptools
+{
+  lib,
+  async-timeout,
+  bitstring,
+  buildPythonPackage,
+  click,
+  fetchPypi,
+  ifaddr,
+  inquirerpy,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiolifx";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-r42M7aqKKLdGgRaCym44M1nvu0vTGK7ricBp/AsbFRk=";
+    hash = "sha256-E3UxNTqss3urpMTwhLhIoAnBekGOIyFy0+sOj3mGlss=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-timeout
     bitstring
     click
@@ -37,16 +36,14 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "aiolifx"
-  ];
+  pythonImportsCheck = [ "aiolifx" ];
 
   meta = with lib; {
     description = "Module for local communication with LIFX devices over a LAN";
-    mainProgram = "aiolifx";
     homepage = "https://github.com/frawau/aiolifx";
     changelog = "https://github.com/frawau/aiolifx/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ netixx ];
+    mainProgram = "aiolifx";
   };
 }
diff --git a/pkgs/development/python-modules/aionut/default.nix b/pkgs/development/python-modules/aionut/default.nix
new file mode 100644
index 0000000000000..8c9b8038ce998
--- /dev/null
+++ b/pkgs/development/python-modules/aionut/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "aionut";
+  version = "4.3.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.11";
+
+  src = fetchFromGitHub {
+    owner = "bdraco";
+    repo = "aionut";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QehVC/6RbWp8KnOuVtLFkK8/STTgHXkXmFbSmzu9z7w=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail " --cov=aionut --cov-report=term-missing:skip-covered" ""
+  '';
+
+  nativeBuildInputs = [ poetry-core ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "aionut" ];
+
+  meta = with lib; {
+    description = "Asyncio Network UPS Tools";
+    homepage = "https://github.com/bdraco/aionut";
+    changelog = "https://github.com/bdraco/aionut/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/aioopenexchangerates/default.nix b/pkgs/development/python-modules/aioopenexchangerates/default.nix
index 34948ce7b78df..8b67a007b6b55 100644
--- a/pkgs/development/python-modules/aioopenexchangerates/default.nix
+++ b/pkgs/development/python-modules/aioopenexchangerates/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "aioopenexchangerates";
-  version = "0.4.9";
+  version = "0.4.10";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "MartinHjelmare";
     repo = "aioopenexchangerates";
     rev = "refs/tags/v${version}";
-    hash = "sha256-goOzp5nPkQCtGV7U71ek1LQ93Ko5BdEvawYb/feGRQQ=";
+    hash = "sha256-keZebaqIs+xaGy5O1551w05fV301XHzJpPDwvY4Tjnk=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/aiopvapi/default.nix b/pkgs/development/python-modules/aiopvapi/default.nix
index c39e5303c917a..c12db2b0bb832 100644
--- a/pkgs/development/python-modules/aiopvapi/default.nix
+++ b/pkgs/development/python-modules/aiopvapi/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "aiopvapi";
-  version = "3.1.0";
+  version = "3.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,23 +19,20 @@ buildPythonPackage rec {
     owner = "sander76";
     repo = "aio-powerview-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-nJjYGPxpnbq/8XFmLKbMU71buFdaNUj7PQES5FnlN3o=";
+    hash = "sha256-WtTqtVr1oL86dpsAIK55pbXWU4X/cajVLlggd6hfM4c=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    aiohttp
-  ];
+  dependencies = [ aiohttp ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "aiopvapi" ];
 
-  pythonImportsCheck = [
-    "aiopvapi"
+  disabledTests = [
+    # AssertionError
+    "test_remove_shade_from_scene"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/aiortm/default.nix b/pkgs/development/python-modules/aiortm/default.nix
index 89ffdf6827cb2..f9776a0cb6f1c 100644
--- a/pkgs/development/python-modules/aiortm/default.nix
+++ b/pkgs/development/python-modules/aiortm/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, aiohttp
-, aioresponses
-, buildPythonPackage
-, ciso8601
-, click
-, fetchFromGitHub
-, mashumaro
-, poetry-core
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, yarl
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  ciso8601,
+  click,
+  fetchFromGitHub,
+  mashumaro,
+  poetry-core,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  yarl,
 }:
 
 buildPythonPackage rec {
   pname = "aiortm";
-  version = "0.8.10";
+  version = "0.8.11";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,19 +25,17 @@ buildPythonPackage rec {
     owner = "MartinHjelmare";
     repo = "aiortm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WkVuuvWWdj2McdXl+XwYukUcloehelFIi6QL5LSkfLk=";
+    hash = "sha256-VvpdeupBW8wZyNnAx9cvp0Li5z3D/AnqipTEGTsd2IE=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-warn " --cov=aiortm --cov-report=term-missing:skip-covered" ""
+      --replace-fail " --cov=aiortm --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     ciso8601
     click
@@ -50,16 +49,14 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "aiortm"
-  ];
+  pythonImportsCheck = [ "aiortm" ];
 
   meta = with lib; {
     description = "Library for the Remember the Milk API";
-    mainProgram = "aiortm";
     homepage = "https://github.com/MartinHjelmare/aiortm";
     changelog = "https://github.com/MartinHjelmare/aiortm/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "aiortm";
   };
 }
diff --git a/pkgs/development/python-modules/ajsonrpc/default.nix b/pkgs/development/python-modules/ajsonrpc/default.nix
index 47643f6e94b44..66e94c019c595 100644
--- a/pkgs/development/python-modules/ajsonrpc/default.nix
+++ b/pkgs/development/python-modules/ajsonrpc/default.nix
@@ -1,26 +1,36 @@
-{ lib, pythonOlder, buildPythonPackage, fetchPypi, pytestCheckHook }:
+{
+  lib,
+  pythonOlder,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "ajsonrpc";
   version = "1.2.0";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.5";
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "791bac18f0bf0dee109194644f151cf8b7ff529c4b8d6239ac48104a3251a19f";
+    hash = "sha256-eRusGPC/De4QkZRkTxUc+Lf/UpxLjWI5rEgQSjJRoZ8=";
   };
 
+  build-system = [ setuptools ];
+
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "ajsonrpc" ];
 
   meta = with lib; {
-    description = "Async JSON-RPC 2.0 protocol + asyncio server";
-    mainProgram = "async-json-rpc-server";
+    description = "Async JSON-RPC 2.0 protocol and asyncio server";
     homepage = "https://github.com/pavlov99/ajsonrpc";
+    changelog = "https://github.com/pavlov99/ajsonrpc/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ oxzi ];
+    mainProgram = "async-json-rpc-server";
   };
 }
diff --git a/pkgs/development/python-modules/angr/default.nix b/pkgs/development/python-modules/angr/default.nix
index 688c988fb2f18..5b2d7bd546841 100644
--- a/pkgs/development/python-modules/angr/default.nix
+++ b/pkgs/development/python-modules/angr/default.nix
@@ -1,42 +1,43 @@
-{ lib
-, stdenv
-, ailment
-, archinfo
-, buildPythonPackage
-, cachetools
-, capstone
-, cffi
-, claripy
-, cle
-, cppheaderparser
-, dpkt
-, fetchFromGitHub
-, gitpython
-, itanium-demangler
-, mulpyplexer
-, nampa
-, networkx
-, progressbar2
-, protobuf
-, psutil
-, pycparser
-, pyformlang
-, pythonOlder
-, pythonRelaxDepsHook
-, pyvex
-, rich
-, rpyc
-, setuptools
-, sortedcontainers
-, sqlalchemy
-, sympy
-, unicorn
-, unique-log-filter
+{
+  lib,
+  stdenv,
+  ailment,
+  archinfo,
+  buildPythonPackage,
+  cachetools,
+  capstone,
+  cffi,
+  claripy,
+  cle,
+  cppheaderparser,
+  dpkt,
+  fetchFromGitHub,
+  gitpython,
+  itanium-demangler,
+  mulpyplexer,
+  nampa,
+  networkx,
+  progressbar2,
+  protobuf,
+  psutil,
+  pycparser,
+  pyformlang,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pyvex,
+  rich,
+  rpyc,
+  setuptools,
+  sortedcontainers,
+  sqlalchemy,
+  sympy,
+  unicorn,
+  unique-log-filter,
 }:
 
 buildPythonPackage rec {
   pname = "angr";
-  version = "9.2.97";
+  version = "9.2.98";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -45,12 +46,10 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "angr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eJkxflAQFI/sEL4JMlMe+kClnaVSxtoOrPg8HQpH78g=";
+    hash = "sha256-9NLQtwakM041yNY/mb9WbSGC1Q8AHHkiqqjf5bZUOlI=";
   };
 
-  pythonRelaxDeps = [
-    "capstone"
-  ];
+  pythonRelaxDeps = [ "capstone" ];
 
   build-system = [
     pythonRelaxDepsHook
@@ -88,9 +87,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    AngrDB = [
-      sqlalchemy
-    ];
+    AngrDB = [ sqlalchemy ];
   };
 
   setupPyBuildFlags = lib.optionals stdenv.isLinux [
diff --git a/pkgs/development/python-modules/angrop/default.nix b/pkgs/development/python-modules/angrop/default.nix
index b491ef83fe5fb..939517887e401 100644
--- a/pkgs/development/python-modules/angrop/default.nix
+++ b/pkgs/development/python-modules/angrop/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, angr
-, buildPythonPackage
-, fetchFromGitHub
-, progressbar
-, pythonOlder
-, setuptools
-, tqdm
+{
+  lib,
+  angr,
+  buildPythonPackage,
+  fetchFromGitHub,
+  progressbar,
+  pythonOlder,
+  setuptools,
+  tqdm,
 }:
 
 buildPythonPackage rec {
@@ -22,9 +23,7 @@ buildPythonPackage rec {
     hash = "sha256-T07Y23UDp9eL2DK5gakV8kPNGsXf+4EofZJDSW/JS1Q=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     angr
@@ -36,9 +35,7 @@ buildPythonPackage rec {
   # cle is executing the tests with the angr binaries already and is a requirement of angr
   doCheck = false;
 
-  pythonImportsCheck = [
-    "angrop"
-  ];
+  pythonImportsCheck = [ "angrop" ];
 
   meta = with lib; {
     description = "ROP gadget finder and chain builder";
diff --git a/pkgs/development/python-modules/anywidget/default.nix b/pkgs/development/python-modules/anywidget/default.nix
index 9d5a5bd5214ed..87450407ff99a 100644
--- a/pkgs/development/python-modules/anywidget/default.nix
+++ b/pkgs/development/python-modules/anywidget/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "anywidget";
-  version = "0.9.4";
-  format = "pyproject";
+  version = "0.9.6";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-97nCw1PohHKW2DtY6RARk1/RlMsc1s5wajuhbY3pQxo=";
+    hash = "sha256-nhDPAXwcsxwrTBG1kEBj77bDXMb3j/Xckk3FENjCS5E=";
   };
 
   # We do not need the jupyterlab build dependency, because we do not need to
@@ -32,12 +32,12 @@ buildPythonPackage rec {
       --replace '"jupyterlab==3.*"' ""
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     hatch-jupyter-builder
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ipywidgets
     psygnal
     typing-extensions
diff --git a/pkgs/development/python-modules/aplpy/default.nix b/pkgs/development/python-modules/aplpy/default.nix
index 0304a8eff852a..14141cf72d366 100644
--- a/pkgs/development/python-modules/aplpy/default.nix
+++ b/pkgs/development/python-modules/aplpy/default.nix
@@ -32,6 +32,20 @@ buildPythonPackage rec {
     hash = "sha256-KCdmBwQWt7IfHsjq7pWlbSISEpfQZDyt+SQSTDaUCV4=";
   };
 
+  # Fix build with Astropy 6 and Python 3.12.
+  patches = [
+    # https://github.com/aplpy/aplpy/pull/496
+    (fetchpatch {
+      url = "https://github.com/aplpy/aplpy/commit/d232a4984bc6a83ec86dfdc3ab3bc1b05de44c48.patch";
+      hash = "sha256-jGUTzIrVdGNPy0BV8w46jzz045fDXBisiwIn90bn7oY=";
+    })
+    # https://github.com/aplpy/aplpy/pull/497
+    (fetchpatch {
+      url = "https://github.com/aplpy/aplpy/commit/468be394970b39f1aaa6debef51eb674e2dd86d8.patch";
+      hash = "sha256-/ovLrFOKb3RQ8TZSviuOV6EYNgz0gtrhVWZLFJBrzFg=";
+    })
+  ];
+
   nativeBuildInputs = [
     setuptools
     setuptools-scm
diff --git a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
index 22ef8222b04b2..67ed8ef74b595 100644
--- a/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
+++ b/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
@@ -1,23 +1,24 @@
-{ lib
-, appdirs
-, buildPythonPackage
-, cvss
-, fetchFromGitHub
-, httpx
-, msgpack
-, orjson
-, packageurl-python
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, semver
-, setuptools
-, tabulate
+{
+  lib,
+  appdirs,
+  buildPythonPackage,
+  cvss,
+  fetchFromGitHub,
+  httpx,
+  msgpack,
+  orjson,
+  packageurl-python,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  semver,
+  setuptools,
+  tabulate,
 }:
 
 buildPythonPackage rec {
   pname = "appthreat-vulnerability-db";
-  version = "5.6.6";
+  version = "5.6.7";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -26,7 +27,7 @@ buildPythonPackage rec {
     owner = "AppThreat";
     repo = "vulnerability-db";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wVl2C1AG9LbSh/p95fstJyJr6JnhZFIhNvq8mhpg13Q=";
+    hash = "sha256-/QzK+su+g2ESZ81C0coxKf13WOUVz1GyfJbOrO7fS98=";
   };
 
   postPatch = ''
@@ -39,13 +40,9 @@ buildPythonPackage rec {
     "semver"
   ];
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     appdirs
@@ -58,9 +55,7 @@ buildPythonPackage rec {
     tabulate
   ] ++ httpx.optional-dependencies.http2;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$(mktemp -d);
@@ -72,9 +67,7 @@ buildPythonPackage rec {
     "test_download_recent"
   ];
 
-  pythonImportsCheck = [
-    "vdb"
-  ];
+  pythonImportsCheck = [ "vdb" ];
 
   meta = with lib; {
     description = "Vulnerability database and package search for sources such as OSV, NVD, GitHub and npm";
diff --git a/pkgs/development/python-modules/apsw/default.nix b/pkgs/development/python-modules/apsw/default.nix
index bdd640a4ce507..327a67d0e3fbe 100644
--- a/pkgs/development/python-modules/apsw/default.nix
+++ b/pkgs/development/python-modules/apsw/default.nix
@@ -1,17 +1,19 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, sqlite
-, isPyPy
-, python
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  python,
+  pythonOlder,
+  setuptools,
+  sqlite,
 }:
 
 buildPythonPackage rec {
   pname = "apsw";
   version = "3.45.2.0";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = isPyPy;
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "rogerbinns";
@@ -20,9 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-tTi3/10W4OoGH6PQVhvPWc5o09on5BZrWoAvrfh4C/E=";
   };
 
-  buildInputs = [
-    sqlite
-  ];
+  build-system = [ setuptools ];
+
+  buildInputs = [ sqlite ];
 
   # Project uses custom test setup to exclude some tests by default, so using pytest
   # requires more maintenance
@@ -31,13 +33,12 @@ buildPythonPackage rec {
     ${python.interpreter} setup.py test
   '';
 
-  pythonImportsCheck = [
-    "apsw"
-  ];
+  pythonImportsCheck = [ "apsw" ];
 
   meta = with lib; {
     description = "A Python wrapper for the SQLite embedded relational database engine";
     homepage = "https://github.com/rogerbinns/apsw";
+    changelog = "https://github.com/rogerbinns/apsw/releases/tag/${version}";
     license = licenses.zlib;
     maintainers = with maintainers; [ gador ];
   };
diff --git a/pkgs/development/python-modules/archinfo/default.nix b/pkgs/development/python-modules/archinfo/default.nix
index 2b335fb37160c..391884310aff8 100644
--- a/pkgs/development/python-modules/archinfo/default.nix
+++ b/pkgs/development/python-modules/archinfo/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, backports-strenum
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  backports-strenum,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "archinfo";
-  version = "9.2.97";
+  version = "9.2.98";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,24 +19,16 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "archinfo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-X8rMTQvNolYjSPyXbP2i5MYTPEvQlwoUQmXeEW56wQs=";
+    hash = "sha256-EdVGm4453XxGrq2D1v5JzSZyroRNzluZ5/r74YAt5zU=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = lib.optionals (pythonOlder "3.11") [
-    backports-strenum
-  ];
+  dependencies = lib.optionals (pythonOlder "3.11") [ backports-strenum ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "archinfo"
-  ];
+  pythonImportsCheck = [ "archinfo" ];
 
   meta = with lib; {
     description = "Classes with architecture-specific information";
diff --git a/pkgs/development/python-modules/arviz/default.nix b/pkgs/development/python-modules/arviz/default.nix
index 56298852a377d..b7860aa5dc30c 100644
--- a/pkgs/development/python-modules/arviz/default.nix
+++ b/pkgs/development/python-modules/arviz/default.nix
@@ -1,5 +1,6 @@
 { lib
 , buildPythonPackage
+, dm-tree
 , fetchFromGitHub
 , emcee
 , h5netcdf
@@ -14,6 +15,7 @@
 , scipy
 , packaging
 , pythonOlder
+, typing-extensions
 , xarray
 , xarray-einstats
 , zarr
@@ -31,27 +33,32 @@
 
 buildPythonPackage rec {
   pname = "arviz";
-  version = "0.17.1";
+  version = "0.18.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.9";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "arviz-devs";
     repo = "arviz";
     rev = "refs/tags/v${version}";
-    hash = "sha256-V0/yboKpK/4QuCOzKDiyFpu/J2JLu0aQxRZ+rpMS9eY=";
+    hash = "sha256-SZRqSqChQBSA9/jBXN2ds9hh6TI3qZksHai1j2oVsq0=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    packaging
+    setuptools
+  ];
+
+  dependencies = [
+    dm-tree
     h5netcdf
     matplotlib
     netcdf4
     numpy
-    packaging
     pandas
     scipy
-    setuptools
+    typing-extensions
     xarray
     xarray-einstats
   ];
diff --git a/pkgs/development/python-modules/asf-search/default.nix b/pkgs/development/python-modules/asf-search/default.nix
index cffe2c0646227..f4e06bb8af8da 100644
--- a/pkgs/development/python-modules/asf-search/default.nix
+++ b/pkgs/development/python-modules/asf-search/default.nix
@@ -1,25 +1,28 @@
-{ lib
-, buildPythonPackage
-, dateparser
-, defusedxml
-, fetchFromGitHub
-, importlib-metadata
-, numpy
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, pytz
-, remotezip
-, requests
-, requests-mock
-, shapely
-, tenacity
+{
+  lib,
+  buildPythonPackage,
+  dateparser,
+  defusedxml,
+  fetchFromGitHub,
+  importlib-metadata,
+  numpy,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pytz,
+  remotezip,
+  requests-mock,
+  requests,
+  setuptools-scm,
+  shapely,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "asf-search";
-  version = "7.0.8";
-  format = "setuptools";
+  version = "7.0.9";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -27,10 +30,16 @@ buildPythonPackage rec {
     owner = "asfadmin";
     repo = "Discovery-asf_search";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wmTt6JFuigpFo/0s9DmKfAZT0dPPyoNeVRlh8vz/jkY=";
+    hash = "sha256-CD9Up4h23dplTt51zif+4ZdW0qczRUz2hCOwUOOlS24=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "tenacity" ];
+
+  build-system = [ setuptools-scm ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  dependencies = [
     dateparser
     importlib-metadata
     numpy
@@ -48,14 +57,12 @@ buildPythonPackage rec {
     tenacity
   ];
 
-  pythonImportsCheck = [
-    "asf_search"
-  ];
+  pythonImportsCheck = [ "asf_search" ];
 
   meta = with lib; {
-    changelog = "https://github.com/asfadmin/Discovery-asf_search/blob/${src.rev}/CHANGELOG.md";
     description = "Python wrapper for the ASF SearchAPI";
     homepage = "https://github.com/asfadmin/Discovery-asf_search";
+    changelog = "https://github.com/asfadmin/Discovery-asf_search/blob/${version}/CHANGELOG.md";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bzizou ];
   };
diff --git a/pkgs/development/python-modules/astropy-iers-data/default.nix b/pkgs/development/python-modules/astropy-iers-data/default.nix
index 4eab035624684..ae993ba5d520a 100644
--- a/pkgs/development/python-modules/astropy-iers-data/default.nix
+++ b/pkgs/development/python-modules/astropy-iers-data/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "astropy-iers-data";
-  version = "0.2024.03.04.00.30.17";
+  version = "0.2024.04.01.00.33.14";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "astropy";
     repo = "astropy-iers-data";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BG5hQHvPqpuV2TUsD/kZv3DKx+wjods/XgZw1Z5hygg=";
+    hash = "sha256-6FHAntN+m0cLDEhWPrcgyD0PgVDOfC8nf4kVl1z8x0g=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/auth0-python/default.nix b/pkgs/development/python-modules/auth0-python/default.nix
index 217f76a1f49cb..1ae64d53a50c2 100644
--- a/pkgs/development/python-modules/auth0-python/default.nix
+++ b/pkgs/development/python-modules/auth0-python/default.nix
@@ -12,6 +12,7 @@
 , pyopenssl
 , pytestCheckHook
 , pythonOlder
+, pythonRelaxDepsHook
 , requests
 , urllib3
 }:
@@ -33,6 +34,7 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     poetry-core
     poetry-dynamic-versioning
+    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = [
@@ -52,6 +54,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  pythonRelaxDeps = [
+    "cryptography"
+  ];
+
   disabledTests = [
     # Tries to ping websites (e.g. google.com)
     "can_timeout"
diff --git a/pkgs/development/python-modules/aws-lambda-builders/default.nix b/pkgs/development/python-modules/aws-lambda-builders/default.nix
index 1119435b48c2b..9e32768ee18dc 100644
--- a/pkgs/development/python-modules/aws-lambda-builders/default.nix
+++ b/pkgs/development/python-modules/aws-lambda-builders/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "aws-lambda-builders";
-  version = "1.47.0";
+  version = "1.48.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "awslabs";
     repo = "aws-lambda-builders";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hfvqK27yxk/y67gz0N6VuFj8OR3cQMD4iYQtx1XJSgw=";
+    hash = "sha256-g1f0OL41lvs8OLyLcBk6XJk9wZO/oWluUj5sUcXlUIE=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/axis/default.nix b/pkgs/development/python-modules/axis/default.nix
index 4f9e456de6aa9..79692ba7d656d 100644
--- a/pkgs/development/python-modules/axis/default.nix
+++ b/pkgs/development/python-modules/axis/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, async-timeout
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, httpx
-, orjson
-, packaging
-, pythonOlder
-, setuptools
-, xmltodict
+{
+  lib,
+  async-timeout,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  httpx,
+  orjson,
+  packaging,
+  pythonOlder,
+  setuptools,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "axis";
-  version = "58";
+  version = "61";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,7 +23,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = "axis";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6Mxthf37PtJSWsi+Ok0zBezTJLPwVoc8S1ZdQE57BEI=";
+    hash = "sha256-YiEY+Eu1j42bBzM4f5Ku5mAE2/tY9f+Hyb2DS6LIW7c=";
   };
 
   postPatch = ''
@@ -31,9 +32,7 @@ buildPythonPackage rec {
       --replace-fail "wheel==0.40.0" "wheel"
   '';
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     async-timeout
@@ -47,9 +46,7 @@ buildPythonPackage rec {
   # Tests requires a server on localhost
   doCheck = false;
 
-  pythonImportsCheck = [
-    "axis"
-  ];
+  pythonImportsCheck = [ "axis" ];
 
   meta = with lib; {
     description = "Python library for communicating with devices from Axis Communications";
diff --git a/pkgs/development/python-modules/azure-batch/default.nix b/pkgs/development/python-modules/azure-batch/default.nix
index 041d79b5ebd0d..b0e27ef337cba 100644
--- a/pkgs/development/python-modules/azure-batch/default.nix
+++ b/pkgs/development/python-modules/azure-batch/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "azure-batch";
-  version = "14.1.0";
+  version = "14.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-lhayyqYpx0ABItaF1VfrzQF5famImQgxj5pUdIQ5es0=";
+    hash = "sha256-x5Jn1sPT/hShakIqtbv6vL1o7QtYtrvN+gyDRcTHhTI=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-eventgrid/default.nix b/pkgs/development/python-modules/azure-eventgrid/default.nix
index 91c140dc7fb87..c7246ffe9d850 100644
--- a/pkgs/development/python-modules/azure-eventgrid/default.nix
+++ b/pkgs/development/python-modules/azure-eventgrid/default.nix
@@ -10,21 +10,21 @@
 
 buildPythonPackage rec {
   pname = "azure-eventgrid";
-  version = "4.18.0";
+  version = "4.19.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-OQ6Aet78NorIz1TlPdv5pW5ImDINLwH+ZQCk52Y+tJM=";
+    hash = "sha256-a9fVQBbMo6Zwdp6WTYKiQBlqJcQRs+nxqKqBVcPbBew=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     azure-common
     azure-core
     isodate
diff --git a/pkgs/development/python-modules/azure-eventhub/default.nix b/pkgs/development/python-modules/azure-eventhub/default.nix
index 3f0adab003df1..91203ed642047 100644
--- a/pkgs/development/python-modules/azure-eventhub/default.nix
+++ b/pkgs/development/python-modules/azure-eventhub/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "azure-eventhub";
-  version = "5.11.6";
+  version = "5.11.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-89Q1o/cnR64i4Jblypx2w1BTTyrZk5l9EvTO+ZMq58E=";
+    hash = "sha256-C0Ywon7jrAxEjD8jdSHV3K71qKGnJBQjUGwEY3oKRLA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix b/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
index 7ef53cb2a2ba2..d18dc5b59fb63 100644
--- a/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-apimanagement/default.nix
@@ -1,37 +1,46 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "4.0.0";
-  format = "setuptools";
   pname = "azure-mgmt-apimanagement";
-  disabled = isPy27;
+  version = "4.0.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-AiTjLJ28g80xnrRFLfPUevJgeaxLpuGmvkd3+FskNiw=";
-    extension = "zip";
+    sha256 = "sha256-XPUJzALti7QXTmgtuwVDhCA2luWz7zfykWEsJmpHzA4=";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [
     azure-common
     azure-mgmt-core
-    msrest
-    msrestazure
+    isodate
   ];
 
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.apimanagement" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.apimanagement"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure API Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/apimanagement/azure-mgmt-apimanagement";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-apimanagement_${version}/sdk/apimanagement/azure-mgmt-apimanagement/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix b/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix
index 4c74e09d36b12..a662f9ec3310b 100644
--- a/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-appconfiguration/default.nix
@@ -1,15 +1,20 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "3.0.0";
-  format = "setuptools";
   pname = "azure-mgmt-appconfiguration";
-  disabled = isPy27;
+  version = "3.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
@@ -17,11 +22,12 @@ buildPythonPackage rec {
     extension = "zip";
   };
 
+  nativeBuildInputs = [ setuptools ];
+
   propagatedBuildInputs = [
     azure-common
     azure-mgmt-core
-    msrest
-    msrestazure
+    isodate
   ];
 
   # no tests included
@@ -29,11 +35,15 @@ buildPythonPackage rec {
 
   pythonNamespaces = [ "azure.mgmt" ];
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.appconfiguration" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.appconfiguration"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure App Configuration Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/appconfiguration/azure-mgmt-appconfiguration";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-mgmt-appconfiguration_${version}/sdk/appconfiguration/azure-mgmt-appconfiguration";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-botservice/default.nix b/pkgs/development/python-modules/azure-mgmt-botservice/default.nix
index 4527294c90b35..db019c57718d6 100644
--- a/pkgs/development/python-modules/azure-mgmt-botservice/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-botservice/default.nix
@@ -1,15 +1,20 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "2.0.0";
-  format = "setuptools";
   pname = "azure-mgmt-botservice";
-  disabled = isPy27;
+  version = "2.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
@@ -17,21 +22,26 @@ buildPythonPackage rec {
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     msrest
-    msrestazure
   ];
 
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.botservice" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.botservice"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure API Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/botservice/azure-mgmt-botservice";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-mgmt-botservice_${version}/sdk/botservice/azure-mgmt-botservice";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix b/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix
index 98c697a4e6c67..11878a1a63e6a 100644
--- a/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-databoxedge/default.nix
@@ -1,24 +1,33 @@
-{ lib, buildPythonPackage, fetchPypi
-, msrestazure
-, azure-common
-, azure-mgmt-core
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-databoxedge";
   version = "1.0.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "04090062bc1e8f00c2f45315a3bceb0fb3b3479ec1474d71b88342e13499b087";
+    hash = "sha256-BAkAYrwejwDC9FMVo7zrD7OzR57BR01xuINC4TSZsIc=";
   };
 
-  propagatedBuildInputs = [
-    msrestazure
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
+    msrest
   ];
 
   # no tests in pypi tarball
@@ -28,7 +37,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Microsoft Azure Databoxedge Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/databox/azure-mgmt-databox";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-databoxedge_${version}/sdk/databox/azure-mgmt-databox/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix b/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix
index 3f8d43ea36ad3..5a5ef4d56dd26 100644
--- a/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-deploymentmanager/default.nix
@@ -1,37 +1,48 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "1.0.0";
-  format = "setuptools";
   pname = "azure-mgmt-deploymentmanager";
-  disabled = isPy27;
+  version = "1.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9badb768617209149c33e68ca2e59c35b1d3d11427e2969872f2e236e14eee78";
+    hash = "sha256-m623aGFyCRScM+aMouWcNbHT0RQn4paYcvLiNuFO7ng=";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     msrest
-    msrestazure
   ];
 
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.deploymentmanager" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.deploymentmanager"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure Deployment Manager Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/deploymentmanager/azure-mgmt-deploymentmanager";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-deploymentmanager_${version}/sdk/deploymentmanager/azure-mgmt-deploymentmanager/setup.py";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix b/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix
index 0d7f5a2cdb79d..5a97855848ced 100644
--- a/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-extendedlocation/default.nix
@@ -1,13 +1,20 @@
-{ lib, buildPythonPackage, fetchPypi
-, azure-common
-, azure-mgmt-core
-, msrest
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-extendedlocation";
   version = "1.1.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
@@ -15,7 +22,9 @@ buildPythonPackage rec {
     hash = "sha256-jRo6EFP8Dg3i9U8HLfjED9QFfWbdg+X3o9PSf4eus9o=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     msrest
@@ -25,7 +34,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Microsoft Azure Extendedlocation Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/extendedlocation/azure-mgmt-extendedlocation";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-mgmt-extendedlocation_${version}/sdk/extendedlocation/azure-mgmt-extendedlocation";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix b/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix
index e10811f814fa8..a20af6e0133e9 100644
--- a/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-hdinsight/default.nix
@@ -1,23 +1,31 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "9.0.0";
-  format = "setuptools";
   pname = "azure-mgmt-hdinsight";
-  disabled = isPy27;
+  version = "9.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "41ebdc69c0d1f81d25dd30438c14fff4331f66639f55805b918b9649eaffe78a";
+    hash = "sha256-QevcacDR+B0l3TBDjBT/9DMfZmOfVYBbkYuWSer/54o=";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     msrest
@@ -27,11 +35,15 @@ buildPythonPackage rec {
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.hdinsight" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.hdinsight"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure HDInsight Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/hdinsight/azure-mgmt-hdinsight";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-hdinsight_${version}/sdk/hdinsight/azure-mgmt-hdinsight/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-kusto/azure-mgmt-apimanagement/default.nix b/pkgs/development/python-modules/azure-mgmt-kusto/azure-mgmt-apimanagement/default.nix
deleted file mode 100644
index f1effb72b4caa..0000000000000
--- a/pkgs/development/python-modules/azure-mgmt-kusto/azure-mgmt-apimanagement/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, msrest
-, msrestazure
-}:
-
-buildPythonPackage rec {
-  version = "3.0.0";
-  pname = "azure-mgmt-apimanagement";
-  disabled = isPy27;
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-kmL1TtOH6wg9ja5m0yqN81ZHMZuQK9SYzcN29QoS0VQ=";
-    extension = "zip";
-  };
-
-  propagatedBuildInputs = [ azure-common msrest msrestazure ];
-
-  # no tests included
-  doCheck = false;
-
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.apimanagement" ];
-
-  meta = with lib; {
-    description = "Microsoft Azure API Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
-    license = licenses.mit;
-    maintainers = with maintainers; [ jonringer ];
-  };
-}
diff --git a/pkgs/development/python-modules/azure-mgmt-kusto/default.nix b/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
index 474b19814c0b6..0cb59d74226e3 100644
--- a/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
@@ -1,25 +1,29 @@
-{ lib
-, azure-common
-, azure-mgmt-core
-, buildPythonPackage
-, fetchPypi
-, isodate
-, pythonOlder
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  isodate,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-kusto";
   version = "3.3.0";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-PmGGtyVrYFCMnpiCq9x9uwoMboDO1ePlGAJzrMTj3ps=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     isodate
diff --git a/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix b/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix
index 830ea71e9a176..a9334dd30d000 100644
--- a/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-managedservices/default.nix
@@ -1,23 +1,31 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "6.0.0";
-  format = "setuptools";
   pname = "azure-mgmt-managedservices";
-  disabled = isPy27;
+  version = "6.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ec0cb3858bcf8edf5eee0eddee81560424eb84352e0df082ddc94eb99badfd5e";
+    hash = "sha256-7AyzhYvPjt9e7g7d7oFWBCTrhDUuDfCC3clOuZut/V4=";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     msrest
@@ -27,11 +35,15 @@ buildPythonPackage rec {
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.managedservices" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.managedservices"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure Managed Services Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/managedservices/azure-mgmt-managedservices";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-managedservices_${version}/sdk/managedservices/azure-mgmt-managedservices/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix b/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix
index 4adafa254ba16..723e389a991b2 100644
--- a/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-sqlvirtualmachine/default.nix
@@ -1,23 +1,31 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "0.5.0";
-  format = "setuptools";
   pname = "azure-mgmt-sqlvirtualmachine";
-  disabled = isPy27;
+  version = "0.5.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1b9am8raa17hxnz7d5pk2ix0309wsnhnchq1mi22icd728sl5adm";
+    hash = "sha256-talCNRKnsShErAFDZqHVPIEBehTzlna+7fAEpTKqKq0=";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     msrest
@@ -27,11 +35,15 @@ buildPythonPackage rec {
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.mgmt.sqlvirtualmachine" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.mgmt.sqlvirtualmachine"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure SQL Virtual Machine Management Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/sql/azure-mgmt-sqlvirtualmachine";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-sqlvirtualmachine_${version}/sdk/sql/azure-mgmt-sqlvirtualmachine/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-mgmt-synapse/default.nix b/pkgs/development/python-modules/azure-mgmt-synapse/default.nix
index 1c2745f60f599..d9bf2b13a5e04 100644
--- a/pkgs/development/python-modules/azure-mgmt-synapse/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-synapse/default.nix
@@ -1,23 +1,31 @@
-{ lib, buildPythonPackage, fetchPypi, pythonOlder
-, azure-common
-, azure-mgmt-core
-, msrest
-, msrestazure
+{
+  lib,
+  azure-common,
+  azure-mgmt-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-mgmt-synapse";
   version = "2.0.0";
-  format = "setuptools";
-  disabled = pythonOlder "3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bec6bdfaeb55b4fdd159f2055e8875bf50a720bb0fce80a816e92a2359b898c8";
+    hash = "sha256-vsa9+utVtP3RWfIFXoh1v1CnILsPzoCoFukqI1m4mMg=";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-mgmt-core
     msrest
@@ -27,8 +35,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "azure.mgmt.synapse" ];
 
   meta = with lib; {
-    description = "Azure python SDK";
-    homepage = "https://github.com/Azure/azure-sdk-for-python/";
+    description = "Microsoft Azure Synapse Management Client Library";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-mgmt-synapse";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-mgmt-synapse_${version}/sdk/synapse/azure-mgmt-synapse/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-multiapi-storage/default.nix b/pkgs/development/python-modules/azure-multiapi-storage/default.nix
index e8bc4d5634574..a3697ae4564d0 100644
--- a/pkgs/development/python-modules/azure-multiapi-storage/default.nix
+++ b/pkgs/development/python-modules/azure-multiapi-storage/default.nix
@@ -1,25 +1,35 @@
-{ lib, buildPythonPackage, fetchPypi, isPy27
-, azure-common
-, azure-core
-, msrest
-, msrestazure
-, requests
+{
+  lib,
+  azure-common,
+  azure-core,
+  buildPythonPackage,
+  cryptography,
+  fetchPypi,
+  msrest,
+  msrestazure,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
-  version = "1.2.0";
-  format = "setuptools";
   pname = "azure-multiapi-storage";
-  disabled = isPy27;
+  version = "1.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-CQuoWHeh0EMitTRsvifotrTwpWd/Q9LWWD7jZ2w9r8I=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-core
+    cryptography
     msrest
     msrestazure
     requests
@@ -31,7 +41,10 @@ buildPythonPackage rec {
   # no tests included
   doCheck = false;
 
-  pythonImportsCheck = [ "azure.common" "azure.multiapi.storage" ];
+  pythonImportsCheck = [
+    "azure.common"
+    "azure.multiapi.storage"
+  ];
 
   meta = with lib; {
     description = "Microsoft Azure Storage Client Library for Python with multi API version support.";
diff --git a/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix b/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix
index 20c3141447474..55fd07d99e20d 100644
--- a/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-accesscontrol/default.nix
@@ -1,21 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi
-, azure-common
-, azure-core
-, msrest
+{
+  lib,
+  azure-common,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-synapse-accesscontrol";
   version = "0.7.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "565aa26336d560c028775e8ae50d0691aa7089e96170e78342371b773da3137c";
+    hash = "sha256-VlqiYzbVYMAod16K5Q0GkapwielhcOeDQjcbdz2jE3w=";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-core
     msrest
@@ -27,8 +36,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "azure.synapse.accesscontrol" ];
 
   meta = with lib; {
-    description = "Azure python SDK";
-    homepage = "https://github.com/Azure/azure-sdk-for-python/";
+    description = "Microsoft Azure Synapse AccessControl Client Library";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-synapse-accesscontrol";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-synapse-accesscontrol_${version}/sdk/synapse/azure-synapse-accesscontrol/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix b/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix
index 18a96ec10fbfd..0ad839d459889 100644
--- a/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-managedprivateendpoints/default.nix
@@ -1,21 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi
-, azure-common
-, azure-core
-, msrest
+{
+  lib,
+  azure-common,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-synapse-managedprivateendpoints";
   version = "0.4.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "900eaeaccffdcd01012b248a7d049008c92807b749edd1c9074ca9248554c17e";
+    hash = "sha256-kA6urM/9zQEBKySKfQSQCMkoB7dJ7dHJB0ypJIVUwX4=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-core
     msrest
@@ -26,8 +35,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "azure.synapse.managedprivateendpoints" ];
 
   meta = with lib; {
-    description = "Microsoft Azure Synapse Managed Private Endpoints Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    description = "Microsoft Azure Synapse Managed Private Endpoints Client Library";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-synapse-managedprivateendpoints";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-synapse-managedprivateendpoints_${version}/sdk/synapse/azure-synapse-managedprivateendpoints";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/azure-synapse-spark/default.nix b/pkgs/development/python-modules/azure-synapse-spark/default.nix
index 7e21755414353..51e07290ef6de 100644
--- a/pkgs/development/python-modules/azure-synapse-spark/default.nix
+++ b/pkgs/development/python-modules/azure-synapse-spark/default.nix
@@ -1,21 +1,30 @@
-{ lib, buildPythonPackage, fetchPypi
-, azure-common
-, azure-core
-, msrest
+{
+  lib,
+  azure-common,
+  azure-core,
+  buildPythonPackage,
+  fetchPypi,
+  msrest,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "azure-synapse-spark";
   version = "0.7.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "86fa29463a24b7c37025ff21509b70e36b4dace28e5d92001bc920488350acd5";
+    hash = "sha256-hvopRjokt8NwJf8hUJtw42tNrOKOXZIAG8kgSINQrNU=";
     extension = "zip";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     azure-common
     azure-core
     msrest
@@ -24,8 +33,9 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "azure.synapse.spark" ];
 
   meta = with lib; {
-    description = "Azure python SDK";
-    homepage = "https://github.com/Azure/azure-sdk-for-python/";
+    description = "Microsoft Azure Synapse Spark Client Library";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/synapse/azure-synapse-spark";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-synapse-spark_${version}/sdk/synapse/azure-synapse-spark/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/b2sdk/default.nix b/pkgs/development/python-modules/b2sdk/default.nix
index d78a2b57a934c..9c00f0c49cc9d 100644
--- a/pkgs/development/python-modules/b2sdk/default.nix
+++ b/pkgs/development/python-modules/b2sdk/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, glibcLocales
-, importlib-metadata
-, packaging
-, logfury
-, pyfakefs
-, pytestCheckHook
-, pytest-lazy-fixture
-, pytest-mock
-, pythonOlder
-, pythonRelaxDepsHook
-, pdm-backend
-, requests
-, tqdm
-, typing-extensions
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  glibcLocales,
+  importlib-metadata,
+  logfury,
+  packaging,
+  pdm-backend,
+  pyfakefs,
+  pytest-lazy-fixture,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  requests,
+  tqdm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "b2sdk";
-  version = "1.33.0";
+  version = "2.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -29,37 +30,31 @@ buildPythonPackage rec {
     owner = "Backblaze";
     repo = "b2-sdk-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-eMFgsjEb0DMTLqG+8IZru1dEAuKZW4dEszrznZxR+mc=";
+    hash = "sha256-0/UC4O19oO8SpboiPIhvkWBA8XHpc279fl377MooK54=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-    pythonRelaxDepsHook
-  ];
+  build-system = [ pdm-backend ];
 
-  pythonRemoveDeps = [
-    "setuptools"
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
-    packaging
-    logfury
-    requests
-    tqdm
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ] ++ lib.optionals (pythonOlder "3.12") [
-    typing-extensions
-  ];
+  pythonRemoveDeps = [ "setuptools" ];
+
+  dependencies =
+    [
+      packaging
+      logfury
+      requests
+    ]
+    ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ]
+    ++ lib.optionals (pythonOlder "3.12") [ typing-extensions ];
 
   nativeCheckInputs = [
-    pytestCheckHook
+    pyfakefs
     pytest-lazy-fixture
     pytest-mock
-    pyfakefs
-  ] ++ lib.optionals stdenv.isLinux [
-    glibcLocales
-  ];
+    pytestCheckHook
+    tqdm
+  ] ++ lib.optionals stdenv.isLinux [ glibcLocales ];
 
   disabledTestPaths = [
     # requires aws s3 auth
@@ -75,9 +70,7 @@ buildPythonPackage rec {
     "test_file_info_b2_attributes"
   ];
 
-  pythonImportsCheck = [
-    "b2sdk"
-  ];
+  pythonImportsCheck = [ "b2sdk" ];
 
   meta = with lib; {
     description = "Client library and utilities for access to B2 Cloud Storage (backblaze)";
diff --git a/pkgs/development/python-modules/batinfo/default.nix b/pkgs/development/python-modules/batinfo/default.nix
index c4fdc9ee92cfd..cfe0b5d356805 100644
--- a/pkgs/development/python-modules/batinfo/default.nix
+++ b/pkgs/development/python-modules/batinfo/default.nix
@@ -1,23 +1,49 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "batinfo";
   version = "0.4.2";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "497e29efc9353ec52e71d43bd040bdfb6d685137ddc2b9143cded4583af572f5";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "nicolargo";
+    repo = "batinfo";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-GgAJJA8bzQJLAU+nxmkDa5LFTHc4NGi+nj9PfKyw8/M=";
   };
 
-  # No tests included
-  doCheck = false;
+  postPatch = ''
+    substituteInPlace test_batinfo.py \
+      --replace-fail "self.assertEquals" "self.assertEqual"
+  '';
+
+  build-system = [ setuptools ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "batinfo" ];
+
+  disabledTests = [
+    # Tests are a bit outdated
+    "test_batinfo_capacity"
+    "test_batinfo_charge_now"
+    "test_batinfo_name_default"
+  ];
 
   meta = with lib; {
+    description = "Module to retrieve battery information";
     homepage = "https://github.com/nicolargo/batinfo";
-    description = "A simple Python lib to retrieve battery information";
-    license = licenses.lgpl3;
-    platforms = platforms.linux;
+    license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ koral ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/bellows/default.nix b/pkgs/development/python-modules/bellows/default.nix
index 344e14a30f0cf..8c1502a8e1c5e 100644
--- a/pkgs/development/python-modules/bellows/default.nix
+++ b/pkgs/development/python-modules/bellows/default.nix
@@ -1,4 +1,5 @@
 { lib
+, async-timeout
 , buildPythonPackage
 , click
 , click-log
@@ -30,21 +31,23 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '"setuptools-git-versioning<2"' "" \
-      --replace 'dynamic = ["version"]' 'version = "${version}"'
+      --replace-fail '"setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     click
     click-log
     pure-pcapy3
     pyserial-asyncio
     voluptuous
     zigpy
+  ] ++ lib.optionals (pythonOlder "3.11") [
+    async-timeout
   ];
 
   nativeCheckInputs = [
@@ -59,10 +62,10 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python module to implement EZSP for EmberZNet devices";
-    mainProgram = "bellows";
     homepage = "https://github.com/zigpy/bellows";
     changelog = "https://github.com/zigpy/bellows/releases/tag/${version}";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ mvnetbiz ];
+    mainProgram = "bellows";
   };
 }
diff --git a/pkgs/development/python-modules/bleak-retry-connector/default.nix b/pkgs/development/python-modules/bleak-retry-connector/default.nix
index 112d92a24bb9a..1cc552f2aafb2 100644
--- a/pkgs/development/python-modules/bleak-retry-connector/default.nix
+++ b/pkgs/development/python-modules/bleak-retry-connector/default.nix
@@ -1,40 +1,39 @@
-{ lib
-, async-timeout
-, bleak
-, bluetooth-adapters
-, dbus-fast
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, pytest-asyncio
+{
+  lib,
+  async-timeout,
+  bleak,
+  bluetooth-adapters,
+  dbus-fast,
+  buildPythonPackage,
+  fetchFromGitHub,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "bleak-retry-connector";
-  version = "3.4.0";
-  format = "pyproject";
+  version = "3.5.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "Bluetooth-Devices";
-    repo = pname;
+    repo = "bleak-retry-connector";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hhoYPpNJ8myW2KMe7o7gvbjnmpY4OYudaDA/vV8BkN8=";
+    hash = "sha256-oqc997siTg43Ulrc539G3utfQvHjcBZJgQ8/CfcSduc=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace " --cov=bleak_retry_connector --cov-report=term-missing:skip-covered" ""
+      --replace-fail " --cov=bleak_retry_connector --cov-report=term-missing:skip-covered" ""
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     async-timeout
     bleak
     bluetooth-adapters
@@ -53,9 +52,7 @@ buildPythonPackage rec {
     "test_establish_connection_without_dangerous_use_cached_services"
   ];
 
-  pythonImportsCheck = [
-    "bleak_retry_connector"
-  ];
+  pythonImportsCheck = [ "bleak_retry_connector" ];
 
   meta = with lib; {
     description = "Connector for Bleak Clients that handles transient connection failures";
diff --git a/pkgs/development/python-modules/boltons/default.nix b/pkgs/development/python-modules/boltons/default.nix
index 770c523e31f9f..2046daf9297f9 100644
--- a/pkgs/development/python-modules/boltons/default.nix
+++ b/pkgs/development/python-modules/boltons/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "boltons";
-  version = "23.0.0";
+  version = "24.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "mahmoud";
     repo = "boltons";
     rev = "refs/tags/${version}";
-    hash = "sha256-NqlCu0W/BQkLiaLYs9DB1RrEya6KGPfNtpAzKXxoRD0=";
+    hash = "sha256-Ie5CPT2u/2/hAIhDzXT6CPzJwmbgt3B6q3oxqKYb27o=";
   };
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix
index 23947834c9729..80176e169a9c7 100644
--- a/pkgs/development/python-modules/boto3-stubs/default.nix
+++ b/pkgs/development/python-modules/boto3-stubs/default.nix
@@ -1,406 +1,396 @@
-{ lib
-, boto3
-, botocore
-, botocore-stubs
-, buildPythonPackage
-, fetchPypi
-, mypy-boto3-accessanalyzer
-, mypy-boto3-account
-, mypy-boto3-acm
-, mypy-boto3-acm-pca
-, mypy-boto3-alexaforbusiness
-, mypy-boto3-amp
-, mypy-boto3-amplify
-, mypy-boto3-amplifybackend
-, mypy-boto3-amplifyuibuilder
-, mypy-boto3-apigateway
-, mypy-boto3-apigatewaymanagementapi
-, mypy-boto3-apigatewayv2
-, mypy-boto3-appconfig
-, mypy-boto3-appconfigdata
-, mypy-boto3-appfabric
-, mypy-boto3-appflow
-, mypy-boto3-appintegrations
-, mypy-boto3-application-autoscaling
-, mypy-boto3-application-insights
-, mypy-boto3-applicationcostprofiler
-, mypy-boto3-appmesh
-, mypy-boto3-apprunner
-, mypy-boto3-appstream
-, mypy-boto3-appsync
-, mypy-boto3-arc-zonal-shift
-, mypy-boto3-athena
-, mypy-boto3-auditmanager
-, mypy-boto3-autoscaling
-, mypy-boto3-autoscaling-plans
-, mypy-boto3-backup
-, mypy-boto3-backup-gateway
-, mypy-boto3-backupstorage
-, mypy-boto3-batch
-, mypy-boto3-billingconductor
-, mypy-boto3-braket
-, mypy-boto3-budgets
-, mypy-boto3-ce
-, mypy-boto3-chime
-, mypy-boto3-chime-sdk-identity
-, mypy-boto3-chime-sdk-media-pipelines
-, mypy-boto3-chime-sdk-meetings
-, mypy-boto3-chime-sdk-messaging
-, mypy-boto3-chime-sdk-voice
-, mypy-boto3-cleanrooms
-, mypy-boto3-cloud9
-, mypy-boto3-cloudcontrol
-, mypy-boto3-clouddirectory
-, mypy-boto3-cloudformation
-, mypy-boto3-cloudfront
-, mypy-boto3-cloudhsm
-, mypy-boto3-cloudhsmv2
-, mypy-boto3-cloudsearch
-, mypy-boto3-cloudsearchdomain
-, mypy-boto3-cloudtrail
-, mypy-boto3-cloudtrail-data
-, mypy-boto3-cloudwatch
-, mypy-boto3-codeartifact
-, mypy-boto3-codebuild
-, mypy-boto3-codecatalyst
-, mypy-boto3-codecommit
-, mypy-boto3-codedeploy
-, mypy-boto3-codeguru-reviewer
-, mypy-boto3-codeguru-security
-, mypy-boto3-codeguruprofiler
-, mypy-boto3-codepipeline
-, mypy-boto3-codestar
-, mypy-boto3-codestar-connections
-, mypy-boto3-codestar-notifications
-, mypy-boto3-cognito-identity
-, mypy-boto3-cognito-idp
-, mypy-boto3-cognito-sync
-, mypy-boto3-comprehend
-, mypy-boto3-comprehendmedical
-, mypy-boto3-compute-optimizer
-, mypy-boto3-config
-, mypy-boto3-connect
-, mypy-boto3-connect-contact-lens
-, mypy-boto3-connectcampaigns
-, mypy-boto3-connectcases
-, mypy-boto3-connectparticipant
-, mypy-boto3-controltower
-, mypy-boto3-cur
-, mypy-boto3-customer-profiles
-, mypy-boto3-databrew
-, mypy-boto3-dataexchange
-, mypy-boto3-datapipeline
-, mypy-boto3-datasync
-, mypy-boto3-dax
-, mypy-boto3-detective
-, mypy-boto3-devicefarm
-, mypy-boto3-devops-guru
-, mypy-boto3-directconnect
-, mypy-boto3-discovery
-, mypy-boto3-dlm
-, mypy-boto3-dms
-, mypy-boto3-docdb
-, mypy-boto3-docdb-elastic
-, mypy-boto3-drs
-, mypy-boto3-ds
-, mypy-boto3-dynamodb
-, mypy-boto3-dynamodbstreams
-, mypy-boto3-ebs
-, mypy-boto3-ec2
-, mypy-boto3-ec2-instance-connect
-, mypy-boto3-ecr
-, mypy-boto3-ecr-public
-, mypy-boto3-ecs
-, mypy-boto3-efs
-, mypy-boto3-eks
-, mypy-boto3-elastic-inference
-, mypy-boto3-elasticache
-, mypy-boto3-elasticbeanstalk
-, mypy-boto3-elastictranscoder
-, mypy-boto3-elb
-, mypy-boto3-elbv2
-, mypy-boto3-emr
-, mypy-boto3-emr-containers
-, mypy-boto3-emr-serverless
-, mypy-boto3-entityresolution
-, mypy-boto3-es
-, mypy-boto3-events
-, mypy-boto3-evidently
-, mypy-boto3-finspace
-, mypy-boto3-finspace-data
-, mypy-boto3-firehose
-, mypy-boto3-fis
-, mypy-boto3-fms
-, mypy-boto3-forecast
-, mypy-boto3-forecastquery
-, mypy-boto3-frauddetector
-, mypy-boto3-fsx
-, mypy-boto3-gamelift
-, mypy-boto3-gamesparks
-, mypy-boto3-glacier
-, mypy-boto3-globalaccelerator
-, mypy-boto3-glue
-, mypy-boto3-grafana
-, mypy-boto3-greengrass
-, mypy-boto3-greengrassv2
-, mypy-boto3-groundstation
-, mypy-boto3-guardduty
-, mypy-boto3-health
-, mypy-boto3-healthlake
-, mypy-boto3-honeycode
-, mypy-boto3-iam
-, mypy-boto3-identitystore
-, mypy-boto3-imagebuilder
-, mypy-boto3-importexport
-, mypy-boto3-inspector
-, mypy-boto3-inspector2
-, mypy-boto3-internetmonitor
-, mypy-boto3-iot
-, mypy-boto3-iot-data
-, mypy-boto3-iot-jobs-data
-, mypy-boto3-iot-roborunner
-, mypy-boto3-iot1click-devices
-, mypy-boto3-iot1click-projects
-, mypy-boto3-iotanalytics
-, mypy-boto3-iotdeviceadvisor
-, mypy-boto3-iotevents
-, mypy-boto3-iotevents-data
-, mypy-boto3-iotfleethub
-, mypy-boto3-iotfleetwise
-, mypy-boto3-iotsecuretunneling
-, mypy-boto3-iotsitewise
-, mypy-boto3-iotthingsgraph
-, mypy-boto3-iottwinmaker
-, mypy-boto3-iotwireless
-, mypy-boto3-ivs
-, mypy-boto3-ivs-realtime
-, mypy-boto3-ivschat
-, mypy-boto3-kafka
-, mypy-boto3-kafkaconnect
-, mypy-boto3-kendra
-, mypy-boto3-kendra-ranking
-, mypy-boto3-keyspaces
-, mypy-boto3-kinesis
-, mypy-boto3-kinesis-video-archived-media
-, mypy-boto3-kinesis-video-media
-, mypy-boto3-kinesis-video-signaling
-, mypy-boto3-kinesis-video-webrtc-storage
-, mypy-boto3-kinesisanalytics
-, mypy-boto3-kinesisanalyticsv2
-, mypy-boto3-kinesisvideo
-, mypy-boto3-kms
-, mypy-boto3-lakeformation
-, mypy-boto3-lambda
-, mypy-boto3-lex-models
-, mypy-boto3-lex-runtime
-, mypy-boto3-lexv2-models
-, mypy-boto3-lexv2-runtime
-, mypy-boto3-license-manager
-, mypy-boto3-license-manager-linux-subscriptions
-, mypy-boto3-license-manager-user-subscriptions
-, mypy-boto3-lightsail
-, mypy-boto3-location
-, mypy-boto3-logs
-, mypy-boto3-lookoutequipment
-, mypy-boto3-lookoutmetrics
-, mypy-boto3-lookoutvision
-, mypy-boto3-m2
-, mypy-boto3-machinelearning
-, mypy-boto3-macie
-, mypy-boto3-macie2
-, mypy-boto3-managedblockchain
-, mypy-boto3-managedblockchain-query
-, mypy-boto3-marketplace-catalog
-, mypy-boto3-marketplace-entitlement
-, mypy-boto3-marketplacecommerceanalytics
-, mypy-boto3-mediaconnect
-, mypy-boto3-mediaconvert
-, mypy-boto3-medialive
-, mypy-boto3-mediapackage
-, mypy-boto3-mediapackage-vod
-, mypy-boto3-mediapackagev2
-, mypy-boto3-mediastore
-, mypy-boto3-mediastore-data
-, mypy-boto3-mediatailor
-, mypy-boto3-medical-imaging
-, mypy-boto3-memorydb
-, mypy-boto3-meteringmarketplace
-, mypy-boto3-mgh
-, mypy-boto3-mgn
-, mypy-boto3-migration-hub-refactor-spaces
-, mypy-boto3-migrationhub-config
-, mypy-boto3-migrationhuborchestrator
-, mypy-boto3-migrationhubstrategy
-, mypy-boto3-mobile
-, mypy-boto3-mq
-, mypy-boto3-mturk
-, mypy-boto3-mwaa
-, mypy-boto3-neptune
-, mypy-boto3-network-firewall
-, mypy-boto3-networkmanager
-, mypy-boto3-nimble
-, mypy-boto3-oam
-, mypy-boto3-omics
-, mypy-boto3-opensearch
-, mypy-boto3-opensearchserverless
-, mypy-boto3-opsworks
-, mypy-boto3-opsworkscm
-, mypy-boto3-organizations
-, mypy-boto3-osis
-, mypy-boto3-outposts
-, mypy-boto3-panorama
-, mypy-boto3-payment-cryptography
-, mypy-boto3-payment-cryptography-data
-, mypy-boto3-personalize
-, mypy-boto3-personalize-events
-, mypy-boto3-personalize-runtime
-, mypy-boto3-pi
-, mypy-boto3-pinpoint
-, mypy-boto3-pinpoint-email
-, mypy-boto3-pinpoint-sms-voice
-, mypy-boto3-pinpoint-sms-voice-v2
-, mypy-boto3-pipes
-, mypy-boto3-polly
-, mypy-boto3-pricing
-, mypy-boto3-privatenetworks
-, mypy-boto3-proton
-, mypy-boto3-qldb
-, mypy-boto3-qldb-session
-, mypy-boto3-quicksight
-, mypy-boto3-ram
-, mypy-boto3-rbin
-, mypy-boto3-rds
-, mypy-boto3-rds-data
-, mypy-boto3-redshift
-, mypy-boto3-redshift-data
-, mypy-boto3-redshift-serverless
-, mypy-boto3-rekognition
-, mypy-boto3-resiliencehub
-, mypy-boto3-resource-explorer-2
-, mypy-boto3-resource-groups
-, mypy-boto3-resourcegroupstaggingapi
-, mypy-boto3-robomaker
-, mypy-boto3-rolesanywhere
-, mypy-boto3-route53
-, mypy-boto3-route53-recovery-cluster
-, mypy-boto3-route53-recovery-control-config
-, mypy-boto3-route53-recovery-readiness
-, mypy-boto3-route53domains
-, mypy-boto3-route53resolver
-, mypy-boto3-rum
-, mypy-boto3-s3
-, mypy-boto3-s3control
-, mypy-boto3-s3outposts
-, mypy-boto3-sagemaker
-, mypy-boto3-sagemaker-a2i-runtime
-, mypy-boto3-sagemaker-edge
-, mypy-boto3-sagemaker-featurestore-runtime
-, mypy-boto3-sagemaker-geospatial
-, mypy-boto3-sagemaker-metrics
-, mypy-boto3-sagemaker-runtime
-, mypy-boto3-savingsplans
-, mypy-boto3-scheduler
-, mypy-boto3-schemas
-, mypy-boto3-sdb
-, mypy-boto3-secretsmanager
-, mypy-boto3-securityhub
-, mypy-boto3-securitylake
-, mypy-boto3-serverlessrepo
-, mypy-boto3-service-quotas
-, mypy-boto3-servicecatalog
-, mypy-boto3-servicecatalog-appregistry
-, mypy-boto3-servicediscovery
-, mypy-boto3-ses
-, mypy-boto3-sesv2
-, mypy-boto3-shield
-, mypy-boto3-signer
-, mypy-boto3-simspaceweaver
-, mypy-boto3-sms
-, mypy-boto3-sms-voice
-, mypy-boto3-snow-device-management
-, mypy-boto3-snowball
-, mypy-boto3-sns
-, mypy-boto3-sqs
-, mypy-boto3-ssm
-, mypy-boto3-ssm-contacts
-, mypy-boto3-ssm-incidents
-, mypy-boto3-ssm-sap
-, mypy-boto3-sso
-, mypy-boto3-sso-admin
-, mypy-boto3-sso-oidc
-, mypy-boto3-stepfunctions
-, mypy-boto3-storagegateway
-, mypy-boto3-sts
-, mypy-boto3-support
-, mypy-boto3-support-app
-, mypy-boto3-swf
-, mypy-boto3-synthetics
-, mypy-boto3-textract
-, mypy-boto3-timestream-query
-, mypy-boto3-timestream-write
-, mypy-boto3-tnb
-, mypy-boto3-transcribe
-, mypy-boto3-transfer
-, mypy-boto3-translate
-, mypy-boto3-verifiedpermissions
-, mypy-boto3-voice-id
-, mypy-boto3-vpc-lattice
-, mypy-boto3-waf
-, mypy-boto3-waf-regional
-, mypy-boto3-wafv2
-, mypy-boto3-wellarchitected
-, mypy-boto3-wisdom
-, mypy-boto3-workdocs
-, mypy-boto3-worklink
-, mypy-boto3-workmail
-, mypy-boto3-workmailmessageflow
-, mypy-boto3-workspaces
-, mypy-boto3-workspaces-web
-, mypy-boto3-xray
-, pythonOlder
-, setuptools
-, types-s3transfer
-, typing-extensions
+{
+  lib,
+  boto3,
+  botocore,
+  botocore-stubs,
+  buildPythonPackage,
+  fetchPypi,
+  mypy-boto3-accessanalyzer,
+  mypy-boto3-account,
+  mypy-boto3-acm,
+  mypy-boto3-acm-pca,
+  mypy-boto3-alexaforbusiness,
+  mypy-boto3-amp,
+  mypy-boto3-amplify,
+  mypy-boto3-amplifybackend,
+  mypy-boto3-amplifyuibuilder,
+  mypy-boto3-apigateway,
+  mypy-boto3-apigatewaymanagementapi,
+  mypy-boto3-apigatewayv2,
+  mypy-boto3-appconfig,
+  mypy-boto3-appconfigdata,
+  mypy-boto3-appfabric,
+  mypy-boto3-appflow,
+  mypy-boto3-appintegrations,
+  mypy-boto3-application-autoscaling,
+  mypy-boto3-application-insights,
+  mypy-boto3-applicationcostprofiler,
+  mypy-boto3-appmesh,
+  mypy-boto3-apprunner,
+  mypy-boto3-appstream,
+  mypy-boto3-appsync,
+  mypy-boto3-arc-zonal-shift,
+  mypy-boto3-athena,
+  mypy-boto3-auditmanager,
+  mypy-boto3-autoscaling,
+  mypy-boto3-autoscaling-plans,
+  mypy-boto3-backup,
+  mypy-boto3-backup-gateway,
+  mypy-boto3-backupstorage,
+  mypy-boto3-batch,
+  mypy-boto3-billingconductor,
+  mypy-boto3-braket,
+  mypy-boto3-budgets,
+  mypy-boto3-ce,
+  mypy-boto3-chime,
+  mypy-boto3-chime-sdk-identity,
+  mypy-boto3-chime-sdk-media-pipelines,
+  mypy-boto3-chime-sdk-meetings,
+  mypy-boto3-chime-sdk-messaging,
+  mypy-boto3-chime-sdk-voice,
+  mypy-boto3-cleanrooms,
+  mypy-boto3-cloud9,
+  mypy-boto3-cloudcontrol,
+  mypy-boto3-clouddirectory,
+  mypy-boto3-cloudformation,
+  mypy-boto3-cloudfront,
+  mypy-boto3-cloudhsm,
+  mypy-boto3-cloudhsmv2,
+  mypy-boto3-cloudsearch,
+  mypy-boto3-cloudsearchdomain,
+  mypy-boto3-cloudtrail,
+  mypy-boto3-cloudtrail-data,
+  mypy-boto3-cloudwatch,
+  mypy-boto3-codeartifact,
+  mypy-boto3-codebuild,
+  mypy-boto3-codecatalyst,
+  mypy-boto3-codecommit,
+  mypy-boto3-codedeploy,
+  mypy-boto3-codeguru-reviewer,
+  mypy-boto3-codeguru-security,
+  mypy-boto3-codeguruprofiler,
+  mypy-boto3-codepipeline,
+  mypy-boto3-codestar,
+  mypy-boto3-codestar-connections,
+  mypy-boto3-codestar-notifications,
+  mypy-boto3-cognito-identity,
+  mypy-boto3-cognito-idp,
+  mypy-boto3-cognito-sync,
+  mypy-boto3-comprehend,
+  mypy-boto3-comprehendmedical,
+  mypy-boto3-compute-optimizer,
+  mypy-boto3-config,
+  mypy-boto3-connect,
+  mypy-boto3-connect-contact-lens,
+  mypy-boto3-connectcampaigns,
+  mypy-boto3-connectcases,
+  mypy-boto3-connectparticipant,
+  mypy-boto3-controltower,
+  mypy-boto3-cur,
+  mypy-boto3-customer-profiles,
+  mypy-boto3-databrew,
+  mypy-boto3-dataexchange,
+  mypy-boto3-datapipeline,
+  mypy-boto3-datasync,
+  mypy-boto3-dax,
+  mypy-boto3-detective,
+  mypy-boto3-devicefarm,
+  mypy-boto3-devops-guru,
+  mypy-boto3-directconnect,
+  mypy-boto3-discovery,
+  mypy-boto3-dlm,
+  mypy-boto3-dms,
+  mypy-boto3-docdb,
+  mypy-boto3-docdb-elastic,
+  mypy-boto3-drs,
+  mypy-boto3-ds,
+  mypy-boto3-dynamodb,
+  mypy-boto3-dynamodbstreams,
+  mypy-boto3-ebs,
+  mypy-boto3-ec2,
+  mypy-boto3-ec2-instance-connect,
+  mypy-boto3-ecr,
+  mypy-boto3-ecr-public,
+  mypy-boto3-ecs,
+  mypy-boto3-efs,
+  mypy-boto3-eks,
+  mypy-boto3-elastic-inference,
+  mypy-boto3-elasticache,
+  mypy-boto3-elasticbeanstalk,
+  mypy-boto3-elastictranscoder,
+  mypy-boto3-elb,
+  mypy-boto3-elbv2,
+  mypy-boto3-emr,
+  mypy-boto3-emr-containers,
+  mypy-boto3-emr-serverless,
+  mypy-boto3-entityresolution,
+  mypy-boto3-es,
+  mypy-boto3-events,
+  mypy-boto3-evidently,
+  mypy-boto3-finspace,
+  mypy-boto3-finspace-data,
+  mypy-boto3-firehose,
+  mypy-boto3-fis,
+  mypy-boto3-fms,
+  mypy-boto3-forecast,
+  mypy-boto3-forecastquery,
+  mypy-boto3-frauddetector,
+  mypy-boto3-fsx,
+  mypy-boto3-gamelift,
+  mypy-boto3-gamesparks,
+  mypy-boto3-glacier,
+  mypy-boto3-globalaccelerator,
+  mypy-boto3-glue,
+  mypy-boto3-grafana,
+  mypy-boto3-greengrass,
+  mypy-boto3-greengrassv2,
+  mypy-boto3-groundstation,
+  mypy-boto3-guardduty,
+  mypy-boto3-health,
+  mypy-boto3-healthlake,
+  mypy-boto3-honeycode,
+  mypy-boto3-iam,
+  mypy-boto3-identitystore,
+  mypy-boto3-imagebuilder,
+  mypy-boto3-importexport,
+  mypy-boto3-inspector,
+  mypy-boto3-inspector2,
+  mypy-boto3-internetmonitor,
+  mypy-boto3-iot,
+  mypy-boto3-iot-data,
+  mypy-boto3-iot-jobs-data,
+  mypy-boto3-iot-roborunner,
+  mypy-boto3-iot1click-devices,
+  mypy-boto3-iot1click-projects,
+  mypy-boto3-iotanalytics,
+  mypy-boto3-iotdeviceadvisor,
+  mypy-boto3-iotevents,
+  mypy-boto3-iotevents-data,
+  mypy-boto3-iotfleethub,
+  mypy-boto3-iotfleetwise,
+  mypy-boto3-iotsecuretunneling,
+  mypy-boto3-iotsitewise,
+  mypy-boto3-iotthingsgraph,
+  mypy-boto3-iottwinmaker,
+  mypy-boto3-iotwireless,
+  mypy-boto3-ivs,
+  mypy-boto3-ivs-realtime,
+  mypy-boto3-ivschat,
+  mypy-boto3-kafka,
+  mypy-boto3-kafkaconnect,
+  mypy-boto3-kendra,
+  mypy-boto3-kendra-ranking,
+  mypy-boto3-keyspaces,
+  mypy-boto3-kinesis,
+  mypy-boto3-kinesis-video-archived-media,
+  mypy-boto3-kinesis-video-media,
+  mypy-boto3-kinesis-video-signaling,
+  mypy-boto3-kinesis-video-webrtc-storage,
+  mypy-boto3-kinesisanalytics,
+  mypy-boto3-kinesisanalyticsv2,
+  mypy-boto3-kinesisvideo,
+  mypy-boto3-kms,
+  mypy-boto3-lakeformation,
+  mypy-boto3-lambda,
+  mypy-boto3-lex-models,
+  mypy-boto3-lex-runtime,
+  mypy-boto3-lexv2-models,
+  mypy-boto3-lexv2-runtime,
+  mypy-boto3-license-manager,
+  mypy-boto3-license-manager-linux-subscriptions,
+  mypy-boto3-license-manager-user-subscriptions,
+  mypy-boto3-lightsail,
+  mypy-boto3-location,
+  mypy-boto3-logs,
+  mypy-boto3-lookoutequipment,
+  mypy-boto3-lookoutmetrics,
+  mypy-boto3-lookoutvision,
+  mypy-boto3-m2,
+  mypy-boto3-machinelearning,
+  mypy-boto3-macie,
+  mypy-boto3-macie2,
+  mypy-boto3-managedblockchain,
+  mypy-boto3-managedblockchain-query,
+  mypy-boto3-marketplace-catalog,
+  mypy-boto3-marketplace-entitlement,
+  mypy-boto3-marketplacecommerceanalytics,
+  mypy-boto3-mediaconnect,
+  mypy-boto3-mediaconvert,
+  mypy-boto3-medialive,
+  mypy-boto3-mediapackage,
+  mypy-boto3-mediapackage-vod,
+  mypy-boto3-mediapackagev2,
+  mypy-boto3-mediastore,
+  mypy-boto3-mediastore-data,
+  mypy-boto3-mediatailor,
+  mypy-boto3-medical-imaging,
+  mypy-boto3-memorydb,
+  mypy-boto3-meteringmarketplace,
+  mypy-boto3-mgh,
+  mypy-boto3-mgn,
+  mypy-boto3-migration-hub-refactor-spaces,
+  mypy-boto3-migrationhub-config,
+  mypy-boto3-migrationhuborchestrator,
+  mypy-boto3-migrationhubstrategy,
+  mypy-boto3-mobile,
+  mypy-boto3-mq,
+  mypy-boto3-mturk,
+  mypy-boto3-mwaa,
+  mypy-boto3-neptune,
+  mypy-boto3-network-firewall,
+  mypy-boto3-networkmanager,
+  mypy-boto3-nimble,
+  mypy-boto3-oam,
+  mypy-boto3-omics,
+  mypy-boto3-opensearch,
+  mypy-boto3-opensearchserverless,
+  mypy-boto3-opsworks,
+  mypy-boto3-opsworkscm,
+  mypy-boto3-organizations,
+  mypy-boto3-osis,
+  mypy-boto3-outposts,
+  mypy-boto3-panorama,
+  mypy-boto3-payment-cryptography,
+  mypy-boto3-payment-cryptography-data,
+  mypy-boto3-personalize,
+  mypy-boto3-personalize-events,
+  mypy-boto3-personalize-runtime,
+  mypy-boto3-pi,
+  mypy-boto3-pinpoint,
+  mypy-boto3-pinpoint-email,
+  mypy-boto3-pinpoint-sms-voice,
+  mypy-boto3-pinpoint-sms-voice-v2,
+  mypy-boto3-pipes,
+  mypy-boto3-polly,
+  mypy-boto3-pricing,
+  mypy-boto3-privatenetworks,
+  mypy-boto3-proton,
+  mypy-boto3-qldb,
+  mypy-boto3-qldb-session,
+  mypy-boto3-quicksight,
+  mypy-boto3-ram,
+  mypy-boto3-rbin,
+  mypy-boto3-rds,
+  mypy-boto3-rds-data,
+  mypy-boto3-redshift,
+  mypy-boto3-redshift-data,
+  mypy-boto3-redshift-serverless,
+  mypy-boto3-rekognition,
+  mypy-boto3-resiliencehub,
+  mypy-boto3-resource-explorer-2,
+  mypy-boto3-resource-groups,
+  mypy-boto3-resourcegroupstaggingapi,
+  mypy-boto3-robomaker,
+  mypy-boto3-rolesanywhere,
+  mypy-boto3-route53,
+  mypy-boto3-route53-recovery-cluster,
+  mypy-boto3-route53-recovery-control-config,
+  mypy-boto3-route53-recovery-readiness,
+  mypy-boto3-route53domains,
+  mypy-boto3-route53resolver,
+  mypy-boto3-rum,
+  mypy-boto3-s3,
+  mypy-boto3-s3control,
+  mypy-boto3-s3outposts,
+  mypy-boto3-sagemaker,
+  mypy-boto3-sagemaker-a2i-runtime,
+  mypy-boto3-sagemaker-edge,
+  mypy-boto3-sagemaker-featurestore-runtime,
+  mypy-boto3-sagemaker-geospatial,
+  mypy-boto3-sagemaker-metrics,
+  mypy-boto3-sagemaker-runtime,
+  mypy-boto3-savingsplans,
+  mypy-boto3-scheduler,
+  mypy-boto3-schemas,
+  mypy-boto3-sdb,
+  mypy-boto3-secretsmanager,
+  mypy-boto3-securityhub,
+  mypy-boto3-securitylake,
+  mypy-boto3-serverlessrepo,
+  mypy-boto3-service-quotas,
+  mypy-boto3-servicecatalog,
+  mypy-boto3-servicecatalog-appregistry,
+  mypy-boto3-servicediscovery,
+  mypy-boto3-ses,
+  mypy-boto3-sesv2,
+  mypy-boto3-shield,
+  mypy-boto3-signer,
+  mypy-boto3-simspaceweaver,
+  mypy-boto3-sms,
+  mypy-boto3-sms-voice,
+  mypy-boto3-snow-device-management,
+  mypy-boto3-snowball,
+  mypy-boto3-sns,
+  mypy-boto3-sqs,
+  mypy-boto3-ssm,
+  mypy-boto3-ssm-contacts,
+  mypy-boto3-ssm-incidents,
+  mypy-boto3-ssm-sap,
+  mypy-boto3-sso,
+  mypy-boto3-sso-admin,
+  mypy-boto3-sso-oidc,
+  mypy-boto3-stepfunctions,
+  mypy-boto3-storagegateway,
+  mypy-boto3-sts,
+  mypy-boto3-support,
+  mypy-boto3-support-app,
+  mypy-boto3-swf,
+  mypy-boto3-synthetics,
+  mypy-boto3-textract,
+  mypy-boto3-timestream-query,
+  mypy-boto3-timestream-write,
+  mypy-boto3-tnb,
+  mypy-boto3-transcribe,
+  mypy-boto3-transfer,
+  mypy-boto3-translate,
+  mypy-boto3-verifiedpermissions,
+  mypy-boto3-voice-id,
+  mypy-boto3-vpc-lattice,
+  mypy-boto3-waf,
+  mypy-boto3-waf-regional,
+  mypy-boto3-wafv2,
+  mypy-boto3-wellarchitected,
+  mypy-boto3-wisdom,
+  mypy-boto3-workdocs,
+  mypy-boto3-worklink,
+  mypy-boto3-workmail,
+  mypy-boto3-workmailmessageflow,
+  mypy-boto3-workspaces,
+  mypy-boto3-workspaces-web,
+  mypy-boto3-xray,
+  pythonOlder,
+  setuptools,
+  types-s3transfer,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "boto3-stubs";
-  version = "1.34.78";
+  version = "1.34.84";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-bjW+/VCh1dgpL1VYnHDFvGzOjnUxCoX5FJMRJxqdkU8=";
+    pname = "boto3_stubs";
+    inherit version;
+    hash = "sha256-c7u1CaacSsjM4DivsVEGhriDmMvUbV3x4yOPzmbfmvU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     botocore-stubs
     types-s3transfer
     typing-extensions
   ];
 
   passthru.optional-dependencies = {
-    accessanalyzer = [
-      mypy-boto3-accessanalyzer
-    ];
-    account = [
-      mypy-boto3-account
-    ];
-    acm = [
-      mypy-boto3-acm
-    ];
-    acm-pca = [
-      mypy-boto3-acm-pca
-    ];
-    alexaforbusiness = [
-      mypy-boto3-alexaforbusiness
-    ];
+    accessanalyzer = [ mypy-boto3-accessanalyzer ];
+    account = [ mypy-boto3-account ];
+    acm = [ mypy-boto3-acm ];
+    acm-pca = [ mypy-boto3-acm-pca ];
+    alexaforbusiness = [ mypy-boto3-alexaforbusiness ];
     all = [
       mypy-boto3-accessanalyzer
       mypy-boto3-account
@@ -756,355 +746,125 @@ buildPythonPackage rec {
       mypy-boto3-workspaces-web
       mypy-boto3-xray
     ];
-    amp = [
-      mypy-boto3-amp
-    ];
-    amplify = [
-      mypy-boto3-amplify
-    ];
-    amplifybackend = [
-      mypy-boto3-amplifybackend
-    ];
-    amplifyuibuilder = [
-      mypy-boto3-amplifyuibuilder
-    ];
-    apigateway = [
-      mypy-boto3-apigateway
-    ];
-    apigatewaymanagementapi = [
-      mypy-boto3-apigatewaymanagementapi
-    ];
-    apigatewayv2 = [
-      mypy-boto3-apigatewayv2
-    ];
-    appconfig = [
-      mypy-boto3-appconfig
-    ];
-    appconfigdata = [
-      mypy-boto3-appconfigdata
-    ];
-    appfabric = [
-      mypy-boto3-appfabric
-    ];
-    appflow = [
-      mypy-boto3-appflow
-    ];
-    appintegrations = [
-      mypy-boto3-appintegrations
-    ];
-    application-autoscaling = [
-      mypy-boto3-application-autoscaling
-    ];
-    application-insights = [
-      mypy-boto3-application-insights
-    ];
-    applicationcostprofiler = [
-      mypy-boto3-applicationcostprofiler
-    ];
-    appmesh = [
-      mypy-boto3-appmesh
-    ];
-    apprunner = [
-      mypy-boto3-apprunner
-    ];
-    appstream = [
-      mypy-boto3-appstream
-    ];
-    appsync = [
-      mypy-boto3-appsync
-    ];
-    arc-zonal-shift = [
-      mypy-boto3-arc-zonal-shift
-    ];
-    athena = [
-      mypy-boto3-athena
-    ];
-    auditmanager = [
-      mypy-boto3-auditmanager
-    ];
-    autoscaling = [
-      mypy-boto3-autoscaling
-    ];
-    autoscaling-plans = [
-      mypy-boto3-autoscaling-plans
-    ];
-    backup = [
-      mypy-boto3-backup
-    ];
-    backup-gateway = [
-      mypy-boto3-backup-gateway
-    ];
-    backupstorage = [
-      mypy-boto3-backupstorage
-    ];
-    batch = [
-      mypy-boto3-batch
-    ];
-    billingconductor = [
-      mypy-boto3-billingconductor
-    ];
+    amp = [ mypy-boto3-amp ];
+    amplify = [ mypy-boto3-amplify ];
+    amplifybackend = [ mypy-boto3-amplifybackend ];
+    amplifyuibuilder = [ mypy-boto3-amplifyuibuilder ];
+    apigateway = [ mypy-boto3-apigateway ];
+    apigatewaymanagementapi = [ mypy-boto3-apigatewaymanagementapi ];
+    apigatewayv2 = [ mypy-boto3-apigatewayv2 ];
+    appconfig = [ mypy-boto3-appconfig ];
+    appconfigdata = [ mypy-boto3-appconfigdata ];
+    appfabric = [ mypy-boto3-appfabric ];
+    appflow = [ mypy-boto3-appflow ];
+    appintegrations = [ mypy-boto3-appintegrations ];
+    application-autoscaling = [ mypy-boto3-application-autoscaling ];
+    application-insights = [ mypy-boto3-application-insights ];
+    applicationcostprofiler = [ mypy-boto3-applicationcostprofiler ];
+    appmesh = [ mypy-boto3-appmesh ];
+    apprunner = [ mypy-boto3-apprunner ];
+    appstream = [ mypy-boto3-appstream ];
+    appsync = [ mypy-boto3-appsync ];
+    arc-zonal-shift = [ mypy-boto3-arc-zonal-shift ];
+    athena = [ mypy-boto3-athena ];
+    auditmanager = [ mypy-boto3-auditmanager ];
+    autoscaling = [ mypy-boto3-autoscaling ];
+    autoscaling-plans = [ mypy-boto3-autoscaling-plans ];
+    backup = [ mypy-boto3-backup ];
+    backup-gateway = [ mypy-boto3-backup-gateway ];
+    backupstorage = [ mypy-boto3-backupstorage ];
+    batch = [ mypy-boto3-batch ];
+    billingconductor = [ mypy-boto3-billingconductor ];
     boto3 = [
       boto3
       botocore
     ];
-    braket = [
-      mypy-boto3-braket
-    ];
-    budgets = [
-      mypy-boto3-budgets
-    ];
-    ce = [
-      mypy-boto3-ce
-    ];
-    chime = [
-      mypy-boto3-chime
-    ];
-    chime-sdk-identity = [
-      mypy-boto3-chime-sdk-identity
-    ];
-    chime-sdk-media-pipelines = [
-      mypy-boto3-chime-sdk-media-pipelines
-    ];
-    chime-sdk-meetings = [
-      mypy-boto3-chime-sdk-meetings
-    ];
-    chime-sdk-messaging = [
-      mypy-boto3-chime-sdk-messaging
-    ];
-    chime-sdk-voice = [
-      mypy-boto3-chime-sdk-voice
-    ];
-    cleanrooms = [
-      mypy-boto3-cleanrooms
-    ];
-    cloud9 = [
-      mypy-boto3-cloud9
-    ];
-    cloudcontrol = [
-      mypy-boto3-cloudcontrol
-    ];
-    clouddirectory = [
-      mypy-boto3-clouddirectory
-    ];
-    cloudformation = [
-      mypy-boto3-cloudformation
-    ];
-    cloudfront = [
-      mypy-boto3-cloudfront
-    ];
-    cloudhsm = [
-      mypy-boto3-cloudhsm
-    ];
-    cloudhsmv2 = [
-      mypy-boto3-cloudhsmv2
-    ];
-    cloudsearch = [
-      mypy-boto3-cloudsearch
-    ];
-    cloudsearchdomain = [
-      mypy-boto3-cloudsearchdomain
-    ];
-    cloudtrail = [
-      mypy-boto3-cloudtrail
-    ];
-    cloudtrail-data = [
-      mypy-boto3-cloudtrail-data
-    ];
-    cloudwatch = [
-      mypy-boto3-cloudwatch
-    ];
-    codeartifact = [
-      mypy-boto3-codeartifact
-    ];
-    codebuild = [
-      mypy-boto3-codebuild
-    ];
-    codecatalyst = [
-      mypy-boto3-codecatalyst
-    ];
-    codecommit = [
-      mypy-boto3-codecommit
-    ];
-    codedeploy = [
-      mypy-boto3-codedeploy
-    ];
-    codeguru-reviewer = [
-      mypy-boto3-codeguru-reviewer
-    ];
-    codeguru-security = [
-      mypy-boto3-codeguru-security
-    ];
-    codeguruprofiler = [
-      mypy-boto3-codeguruprofiler
-    ];
-    codepipeline = [
-      mypy-boto3-codepipeline
-    ];
-    codestar = [
-      mypy-boto3-codestar
-    ];
-    codestar-connections = [
-      mypy-boto3-codestar-connections
-    ];
-    codestar-notifications = [
-      mypy-boto3-codestar-notifications
-    ];
-    cognito-identity = [
-      mypy-boto3-cognito-identity
-    ];
-    cognito-idp = [
-      mypy-boto3-cognito-idp
-    ];
-    cognito-sync = [
-      mypy-boto3-cognito-sync
-    ];
-    comprehend = [
-      mypy-boto3-comprehend
-    ];
-    comprehendmedical = [
-      mypy-boto3-comprehendmedical
-    ];
-    compute-optimizer = [
-      mypy-boto3-compute-optimizer
-    ];
-    config = [
-      mypy-boto3-config
-    ];
-    connect = [
-      mypy-boto3-connect
-    ];
-    connect-contact-lens = [
-      mypy-boto3-connect-contact-lens
-    ];
-    connectcampaigns = [
-      mypy-boto3-connectcampaigns
-    ];
-    connectcases = [
-      mypy-boto3-connectcases
-    ];
-    connectparticipant = [
-      mypy-boto3-connectparticipant
-    ];
-    controltower = [
-      mypy-boto3-controltower
-    ];
-    cur = [
-      mypy-boto3-cur
-    ];
-    customer-profiles = [
-      mypy-boto3-customer-profiles
-    ];
-    databrew = [
-      mypy-boto3-databrew
-    ];
-    dataexchange = [
-      mypy-boto3-dataexchange
-    ];
-    datapipeline = [
-      mypy-boto3-datapipeline
-    ];
-    datasync = [
-      mypy-boto3-datasync
-    ];
-    dax = [
-      mypy-boto3-dax
-    ];
-    detective = [
-      mypy-boto3-detective
-    ];
-    devicefarm = [
-      mypy-boto3-devicefarm
-    ];
-    devops-guru = [
-      mypy-boto3-devops-guru
-    ];
-    directconnect = [
-      mypy-boto3-directconnect
-    ];
-    discovery = [
-      mypy-boto3-discovery
-    ];
-    dlm = [
-      mypy-boto3-dlm
-    ];
-    dms = [
-      mypy-boto3-dms
-    ];
-    docdb = [
-      mypy-boto3-docdb
-    ];
-    docdb-elastic = [
-      mypy-boto3-docdb-elastic
-    ];
-    drs = [
-      mypy-boto3-drs
-    ];
-    ds = [
-      mypy-boto3-ds
-    ];
-    dynamodb = [
-      mypy-boto3-dynamodb
-    ];
-    dynamodbstreams = [
-      mypy-boto3-dynamodbstreams
-    ];
-    ebs = [
-      mypy-boto3-ebs
-    ];
-    ec2 = [
-      mypy-boto3-ec2
-    ];
-    ec2-instance-connect = [
-      mypy-boto3-ec2-instance-connect
-    ];
-    ecr = [
-      mypy-boto3-ecr
-    ];
-    ecr-public = [
-      mypy-boto3-ecr-public
-    ];
-    ecs = [
-      mypy-boto3-ecs
-    ];
-    efs = [
-      mypy-boto3-efs
-    ];
-    eks = [
-      mypy-boto3-eks
-    ];
-    elastic-inference = [
-      mypy-boto3-elastic-inference
-    ];
-    elasticache = [
-      mypy-boto3-elasticache
-    ];
-    elasticbeanstalk = [
-      mypy-boto3-elasticbeanstalk
-    ];
-    elastictranscoder = [
-      mypy-boto3-elastictranscoder
-    ];
-    elb = [
-      mypy-boto3-elb
-    ];
-    elbv2 = [
-      mypy-boto3-elbv2
-    ];
-    emr = [
-      mypy-boto3-emr
-    ];
-    emr-containers = [
-      mypy-boto3-emr-containers
-    ];
-    emr-serverless = [
-      mypy-boto3-emr-serverless
-    ];
-    entityresolution = [
-      mypy-boto3-entityresolution
-    ];
-    es = [
-      mypy-boto3-es
-    ];
+    braket = [ mypy-boto3-braket ];
+    budgets = [ mypy-boto3-budgets ];
+    ce = [ mypy-boto3-ce ];
+    chime = [ mypy-boto3-chime ];
+    chime-sdk-identity = [ mypy-boto3-chime-sdk-identity ];
+    chime-sdk-media-pipelines = [ mypy-boto3-chime-sdk-media-pipelines ];
+    chime-sdk-meetings = [ mypy-boto3-chime-sdk-meetings ];
+    chime-sdk-messaging = [ mypy-boto3-chime-sdk-messaging ];
+    chime-sdk-voice = [ mypy-boto3-chime-sdk-voice ];
+    cleanrooms = [ mypy-boto3-cleanrooms ];
+    cloud9 = [ mypy-boto3-cloud9 ];
+    cloudcontrol = [ mypy-boto3-cloudcontrol ];
+    clouddirectory = [ mypy-boto3-clouddirectory ];
+    cloudformation = [ mypy-boto3-cloudformation ];
+    cloudfront = [ mypy-boto3-cloudfront ];
+    cloudhsm = [ mypy-boto3-cloudhsm ];
+    cloudhsmv2 = [ mypy-boto3-cloudhsmv2 ];
+    cloudsearch = [ mypy-boto3-cloudsearch ];
+    cloudsearchdomain = [ mypy-boto3-cloudsearchdomain ];
+    cloudtrail = [ mypy-boto3-cloudtrail ];
+    cloudtrail-data = [ mypy-boto3-cloudtrail-data ];
+    cloudwatch = [ mypy-boto3-cloudwatch ];
+    codeartifact = [ mypy-boto3-codeartifact ];
+    codebuild = [ mypy-boto3-codebuild ];
+    codecatalyst = [ mypy-boto3-codecatalyst ];
+    codecommit = [ mypy-boto3-codecommit ];
+    codedeploy = [ mypy-boto3-codedeploy ];
+    codeguru-reviewer = [ mypy-boto3-codeguru-reviewer ];
+    codeguru-security = [ mypy-boto3-codeguru-security ];
+    codeguruprofiler = [ mypy-boto3-codeguruprofiler ];
+    codepipeline = [ mypy-boto3-codepipeline ];
+    codestar = [ mypy-boto3-codestar ];
+    codestar-connections = [ mypy-boto3-codestar-connections ];
+    codestar-notifications = [ mypy-boto3-codestar-notifications ];
+    cognito-identity = [ mypy-boto3-cognito-identity ];
+    cognito-idp = [ mypy-boto3-cognito-idp ];
+    cognito-sync = [ mypy-boto3-cognito-sync ];
+    comprehend = [ mypy-boto3-comprehend ];
+    comprehendmedical = [ mypy-boto3-comprehendmedical ];
+    compute-optimizer = [ mypy-boto3-compute-optimizer ];
+    config = [ mypy-boto3-config ];
+    connect = [ mypy-boto3-connect ];
+    connect-contact-lens = [ mypy-boto3-connect-contact-lens ];
+    connectcampaigns = [ mypy-boto3-connectcampaigns ];
+    connectcases = [ mypy-boto3-connectcases ];
+    connectparticipant = [ mypy-boto3-connectparticipant ];
+    controltower = [ mypy-boto3-controltower ];
+    cur = [ mypy-boto3-cur ];
+    customer-profiles = [ mypy-boto3-customer-profiles ];
+    databrew = [ mypy-boto3-databrew ];
+    dataexchange = [ mypy-boto3-dataexchange ];
+    datapipeline = [ mypy-boto3-datapipeline ];
+    datasync = [ mypy-boto3-datasync ];
+    dax = [ mypy-boto3-dax ];
+    detective = [ mypy-boto3-detective ];
+    devicefarm = [ mypy-boto3-devicefarm ];
+    devops-guru = [ mypy-boto3-devops-guru ];
+    directconnect = [ mypy-boto3-directconnect ];
+    discovery = [ mypy-boto3-discovery ];
+    dlm = [ mypy-boto3-dlm ];
+    dms = [ mypy-boto3-dms ];
+    docdb = [ mypy-boto3-docdb ];
+    docdb-elastic = [ mypy-boto3-docdb-elastic ];
+    drs = [ mypy-boto3-drs ];
+    ds = [ mypy-boto3-ds ];
+    dynamodb = [ mypy-boto3-dynamodb ];
+    dynamodbstreams = [ mypy-boto3-dynamodbstreams ];
+    ebs = [ mypy-boto3-ebs ];
+    ec2 = [ mypy-boto3-ec2 ];
+    ec2-instance-connect = [ mypy-boto3-ec2-instance-connect ];
+    ecr = [ mypy-boto3-ecr ];
+    ecr-public = [ mypy-boto3-ecr-public ];
+    ecs = [ mypy-boto3-ecs ];
+    efs = [ mypy-boto3-efs ];
+    eks = [ mypy-boto3-eks ];
+    elastic-inference = [ mypy-boto3-elastic-inference ];
+    elasticache = [ mypy-boto3-elasticache ];
+    elasticbeanstalk = [ mypy-boto3-elasticbeanstalk ];
+    elastictranscoder = [ mypy-boto3-elastictranscoder ];
+    elb = [ mypy-boto3-elb ];
+    elbv2 = [ mypy-boto3-elbv2 ];
+    emr = [ mypy-boto3-emr ];
+    emr-containers = [ mypy-boto3-emr-containers ];
+    emr-serverless = [ mypy-boto3-emr-serverless ];
+    entityresolution = [ mypy-boto3-entityresolution ];
+    es = [ mypy-boto3-es ];
     essential = [
       mypy-boto3-cloudformation
       mypy-boto3-dynamodb
@@ -1114,718 +874,253 @@ buildPythonPackage rec {
       mypy-boto3-s3
       mypy-boto3-sqs
     ];
-    events = [
-      mypy-boto3-events
-    ];
-    evidently = [
-      mypy-boto3-evidently
-    ];
-    finspace = [
-      mypy-boto3-finspace
-    ];
-    finspace-data = [
-      mypy-boto3-finspace-data
-    ];
-    firehose = [
-      mypy-boto3-firehose
-    ];
-    fis = [
-      mypy-boto3-fis
-    ];
-    fms = [
-      mypy-boto3-fms
-    ];
-    forecast = [
-      mypy-boto3-forecast
-    ];
-    forecastquery = [
-      mypy-boto3-forecastquery
-    ];
-    frauddetector = [
-      mypy-boto3-frauddetector
-    ];
-    fsx = [
-      mypy-boto3-fsx
-    ];
-    gamelift = [
-      mypy-boto3-gamelift
-    ];
-    gamesparks = [
-      mypy-boto3-gamesparks
-    ];
-    glacier = [
-      mypy-boto3-glacier
-    ];
-    globalaccelerator = [
-      mypy-boto3-globalaccelerator
-    ];
-    glue = [
-      mypy-boto3-glue
-    ];
-    grafana = [
-      mypy-boto3-grafana
-    ];
-    greengrass = [
-      mypy-boto3-greengrass
-    ];
-    greengrassv2 = [
-      mypy-boto3-greengrassv2
-    ];
-    groundstation = [
-      mypy-boto3-groundstation
-    ];
-    guardduty = [
-      mypy-boto3-guardduty
-    ];
-    health = [
-      mypy-boto3-health
-    ];
-    healthlake = [
-      mypy-boto3-healthlake
-    ];
-    honeycode = [
-      mypy-boto3-honeycode
-    ];
-    iam = [
-      mypy-boto3-iam
-    ];
-    identitystore = [
-      mypy-boto3-identitystore
-    ];
-    imagebuilder = [
-      mypy-boto3-imagebuilder
-    ];
-    importexport = [
-      mypy-boto3-importexport
-    ];
-    inspector = [
-      mypy-boto3-inspector
-    ];
-    inspector2 = [
-      mypy-boto3-inspector2
-    ];
-    internetmonitor = [
-      mypy-boto3-internetmonitor
-    ];
-    iot = [
-      mypy-boto3-iot
-    ];
-    iot-data = [
-      mypy-boto3-iot-data
-    ];
-    iot-jobs-data = [
-      mypy-boto3-iot-jobs-data
-    ];
-    iot-roborunner = [
-      mypy-boto3-iot-roborunner
-    ];
-    iot1click-devices = [
-      mypy-boto3-iot1click-devices
-    ];
-    iot1click-projects = [
-      mypy-boto3-iot1click-projects
-    ];
-    iotanalytics = [
-      mypy-boto3-iotanalytics
-    ];
-    iotdeviceadvisor = [
-      mypy-boto3-iotdeviceadvisor
-    ];
-    iotevents = [
-      mypy-boto3-iotevents
-    ];
-    iotevents-data = [
-      mypy-boto3-iotevents-data
-    ];
-    iotfleethub = [
-      mypy-boto3-iotfleethub
-    ];
-    iotfleetwise = [
-      mypy-boto3-iotfleetwise
-    ];
-    iotsecuretunneling = [
-      mypy-boto3-iotsecuretunneling
-    ];
-    iotsitewise = [
-      mypy-boto3-iotsitewise
-    ];
-    iotthingsgraph = [
-      mypy-boto3-iotthingsgraph
-    ];
-    iottwinmaker = [
-      mypy-boto3-iottwinmaker
-    ];
-    iotwireless = [
-      mypy-boto3-iotwireless
-    ];
-    ivs = [
-      mypy-boto3-ivs
-    ];
-    ivs-realtime = [
-      mypy-boto3-ivs-realtime
-    ];
-    ivschat = [
-      mypy-boto3-ivschat
-    ];
-    kafka = [
-      mypy-boto3-kafka
-    ];
-    kafkaconnect = [
-      mypy-boto3-kafkaconnect
-    ];
-    kendra = [
-      mypy-boto3-kendra
-    ];
-    kendra-ranking = [
-      mypy-boto3-kendra-ranking
-    ];
-    keyspaces = [
-      mypy-boto3-keyspaces
-    ];
-    kinesis = [
-      mypy-boto3-kinesis
-    ];
-    kinesis-video-archived-media = [
-      mypy-boto3-kinesis-video-archived-media
-    ];
-    kinesis-video-media = [
-      mypy-boto3-kinesis-video-media
-    ];
-    kinesis-video-signaling = [
-      mypy-boto3-kinesis-video-signaling
-    ];
-    kinesis-video-webrtc-storage = [
-      mypy-boto3-kinesis-video-webrtc-storage
-    ];
-    kinesisanalytics = [
-      mypy-boto3-kinesisanalytics
-    ];
-    kinesisanalyticsv2 = [
-      mypy-boto3-kinesisanalyticsv2
-    ];
-    kinesisvideo = [
-      mypy-boto3-kinesisvideo
-    ];
-    kms = [
-      mypy-boto3-kms
-    ];
-    lakeformation = [
-      mypy-boto3-lakeformation
-    ];
-    lambda = [
-      mypy-boto3-lambda
-    ];
-    lex-models = [
-      mypy-boto3-lex-models
-    ];
-    lex-runtime = [
-      mypy-boto3-lex-runtime
-    ];
-    lexv2-models = [
-      mypy-boto3-lexv2-models
-    ];
-    lexv2-runtime = [
-      mypy-boto3-lexv2-runtime
-    ];
-    license-manager = [
-      mypy-boto3-license-manager
-    ];
-    license-manager-linux-subscriptions = [
-      mypy-boto3-license-manager-linux-subscriptions
-    ];
-    license-manager-user-subscriptions = [
-      mypy-boto3-license-manager-user-subscriptions
-    ];
-    lightsail = [
-      mypy-boto3-lightsail
-    ];
-    location = [
-      mypy-boto3-location
-    ];
-    logs = [
-      mypy-boto3-logs
-    ];
-    lookoutequipment = [
-      mypy-boto3-lookoutequipment
-    ];
-    lookoutmetrics = [
-      mypy-boto3-lookoutmetrics
-    ];
-    lookoutvision = [
-      mypy-boto3-lookoutvision
-    ];
-    m2 = [
-      mypy-boto3-m2
-    ];
-    machinelearning = [
-      mypy-boto3-machinelearning
-    ];
-    macie = [
-      mypy-boto3-macie
-    ];
-    macie2 = [
-      mypy-boto3-macie2
-    ];
-    managedblockchain = [
-      mypy-boto3-managedblockchain
-    ];
-    managedblockchain-query = [
-      mypy-boto3-managedblockchain-query
-    ];
-    marketplace-catalog = [
-      mypy-boto3-marketplace-catalog
-    ];
-    marketplace-entitlement = [
-      mypy-boto3-marketplace-entitlement
-    ];
-    marketplacecommerceanalytics = [
-      mypy-boto3-marketplacecommerceanalytics
-    ];
-    mediaconnect = [
-      mypy-boto3-mediaconnect
-    ];
-    mediaconvert = [
-      mypy-boto3-mediaconvert
-    ];
-    medialive = [
-      mypy-boto3-medialive
-    ];
-    mediapackage = [
-      mypy-boto3-mediapackage
-    ];
-    mediapackage-vod = [
-      mypy-boto3-mediapackage-vod
-    ];
-    mediapackagev2 = [
-      mypy-boto3-mediapackagev2
-    ];
-    mediastore = [
-      mypy-boto3-mediastore
-    ];
-    mediastore-data = [
-      mypy-boto3-mediastore-data
-    ];
-    mediatailor = [
-      mypy-boto3-mediatailor
-    ];
-    medical-imaging = [
-      mypy-boto3-medical-imaging
-    ];
-    memorydb = [
-      mypy-boto3-memorydb
-    ];
-    meteringmarketplace = [
-      mypy-boto3-meteringmarketplace
-    ];
-    mgh = [
-      mypy-boto3-mgh
-    ];
-    mgn = [
-      mypy-boto3-mgn
-    ];
-    migration-hub-refactor-spaces = [
-      mypy-boto3-migration-hub-refactor-spaces
-    ];
-    migrationhub-config = [
-      mypy-boto3-migrationhub-config
-    ];
-    migrationhuborchestrator = [
-      mypy-boto3-migrationhuborchestrator
-    ];
-    migrationhubstrategy = [
-      mypy-boto3-migrationhubstrategy
-    ];
-    mobile = [
-      mypy-boto3-mobile
-    ];
-    mq = [
-      mypy-boto3-mq
-    ];
-    mturk = [
-      mypy-boto3-mturk
-    ];
-    mwaa = [
-      mypy-boto3-mwaa
-    ];
-    neptune = [
-      mypy-boto3-neptune
-    ];
-    network-firewall = [
-      mypy-boto3-network-firewall
-    ];
-    networkmanager = [
-      mypy-boto3-networkmanager
-    ];
-    nimble = [
-      mypy-boto3-nimble
-    ];
-    oam = [
-      mypy-boto3-oam
-    ];
-    omics = [
-      mypy-boto3-omics
-    ];
-    opensearch = [
-      mypy-boto3-opensearch
-    ];
-    opensearchserverless = [
-      mypy-boto3-opensearchserverless
-    ];
-    opsworks = [
-      mypy-boto3-opsworks
-    ];
-    opsworkscm = [
-      mypy-boto3-opsworkscm
-    ];
-    organizations = [
-      mypy-boto3-organizations
-    ];
-    osis = [
-      mypy-boto3-osis
-    ];
-    outposts = [
-      mypy-boto3-outposts
-    ];
-    panorama = [
-      mypy-boto3-panorama
-    ];
-    payment-cryptography = [
-      mypy-boto3-payment-cryptography
-    ];
-    payment-cryptography-data = [
-      mypy-boto3-payment-cryptography-data
-    ];
-    personalize = [
-      mypy-boto3-personalize
-    ];
-    personalize-events = [
-      mypy-boto3-personalize-events
-    ];
-    personalize-runtime = [
-      mypy-boto3-personalize-runtime
-    ];
-    pi = [
-      mypy-boto3-pi
-    ];
-    pinpoint = [
-      mypy-boto3-pinpoint
-    ];
-    pinpoint-email = [
-      mypy-boto3-pinpoint-email
-    ];
-    pinpoint-sms-voice = [
-      mypy-boto3-pinpoint-sms-voice
-    ];
-    pinpoint-sms-voice-v2 = [
-      mypy-boto3-pinpoint-sms-voice-v2
-    ];
-    pipes = [
-      mypy-boto3-pipes
-    ];
-    polly = [
-      mypy-boto3-polly
-    ];
-    pricing = [
-      mypy-boto3-pricing
-    ];
-    privatenetworks = [
-      mypy-boto3-privatenetworks
-    ];
-    proton = [
-      mypy-boto3-proton
-    ];
-    qldb = [
-      mypy-boto3-qldb
-    ];
-    qldb-session = [
-      mypy-boto3-qldb-session
-    ];
-    quicksight = [
-      mypy-boto3-quicksight
-    ];
-    ram = [
-      mypy-boto3-ram
-    ];
-    rbin = [
-      mypy-boto3-rbin
-    ];
-    rds = [
-      mypy-boto3-rds
-    ];
-    rds-data = [
-      mypy-boto3-rds-data
-    ];
-    redshift = [
-      mypy-boto3-redshift
-    ];
-    redshift-data = [
-      mypy-boto3-redshift-data
-    ];
-    redshift-serverless = [
-      mypy-boto3-redshift-serverless
-    ];
-    rekognition = [
-      mypy-boto3-rekognition
-    ];
-    resiliencehub = [
-      mypy-boto3-resiliencehub
-    ];
-    resource-explorer-2 = [
-      mypy-boto3-resource-explorer-2
-    ];
-    resource-groups = [
-      mypy-boto3-resource-groups
-    ];
-    resourcegroupstaggingapi = [
-      mypy-boto3-resourcegroupstaggingapi
-    ];
-    robomaker = [
-      mypy-boto3-robomaker
-    ];
-    rolesanywhere = [
-      mypy-boto3-rolesanywhere
-    ];
-    route53 = [
-      mypy-boto3-route53
-    ];
-    route53-recovery-cluster = [
-      mypy-boto3-route53-recovery-cluster
-    ];
-    route53-recovery-control-config = [
-      mypy-boto3-route53-recovery-control-config
-    ];
-    route53-recovery-readiness = [
-      mypy-boto3-route53-recovery-readiness
-    ];
-    route53domains = [
-      mypy-boto3-route53domains
-    ];
-    route53resolver = [
-      mypy-boto3-route53resolver
-    ];
-    rum = [
-      mypy-boto3-rum
-    ];
-    s3 = [
-      mypy-boto3-s3
-    ];
-    s3control = [
-      mypy-boto3-s3control
-    ];
-    s3outposts = [
-      mypy-boto3-s3outposts
-    ];
-    sagemaker = [
-      mypy-boto3-sagemaker
-    ];
-    sagemaker-a2i-runtime = [
-      mypy-boto3-sagemaker-a2i-runtime
-    ];
-    sagemaker-edge = [
-      mypy-boto3-sagemaker-edge
-    ];
-    sagemaker-featurestore-runtime = [
-      mypy-boto3-sagemaker-featurestore-runtime
-    ];
-    sagemaker-geospatial = [
-      mypy-boto3-sagemaker-geospatial
-    ];
-    sagemaker-metrics = [
-      mypy-boto3-sagemaker-metrics
-    ];
-    sagemaker-runtime = [
-      mypy-boto3-sagemaker-runtime
-    ];
-    savingsplans = [
-      mypy-boto3-savingsplans
-    ];
-    scheduler = [
-      mypy-boto3-scheduler
-    ];
-    schemas = [
-      mypy-boto3-schemas
-    ];
-    sdb = [
-      mypy-boto3-sdb
-    ];
-    secretsmanager = [
-      mypy-boto3-secretsmanager
-    ];
-    securityhub = [
-      mypy-boto3-securityhub
-    ];
-    securitylake = [
-      mypy-boto3-securitylake
-    ];
-    serverlessrepo = [
-      mypy-boto3-serverlessrepo
-    ];
-    service-quotas = [
-      mypy-boto3-service-quotas
-    ];
-    servicecatalog = [
-      mypy-boto3-servicecatalog
-    ];
-    servicecatalog-appregistry = [
-      mypy-boto3-servicecatalog-appregistry
-    ];
-    servicediscovery = [
-      mypy-boto3-servicediscovery
-    ];
-    ses = [
-      mypy-boto3-ses
-    ];
-    sesv2 = [
-      mypy-boto3-sesv2
-    ];
-    shield = [
-      mypy-boto3-shield
-    ];
-    signer = [
-      mypy-boto3-signer
-    ];
-    simspaceweaver = [
-      mypy-boto3-simspaceweaver
-    ];
-    sms = [
-      mypy-boto3-sms
-    ];
-    sms-voice = [
-      mypy-boto3-sms-voice
-    ];
-    snow-device-management = [
-      mypy-boto3-snow-device-management
-    ];
-    snowball = [
-      mypy-boto3-snowball
-    ];
-    sns = [
-      mypy-boto3-sns
-    ];
-    sqs = [
-      mypy-boto3-sqs
-    ];
-    ssm = [
-      mypy-boto3-ssm
-    ];
-    ssm-contacts = [
-      mypy-boto3-ssm-contacts
-    ];
-    ssm-incidents = [
-      mypy-boto3-ssm-incidents
-    ];
-    ssm-sap = [
-      mypy-boto3-ssm-sap
-    ];
-    sso = [
-      mypy-boto3-sso
-    ];
-    sso-admin = [
-      mypy-boto3-sso-admin
-    ];
-    sso-oidc = [
-      mypy-boto3-sso-oidc
-    ];
-    stepfunctions = [
-      mypy-boto3-stepfunctions
-    ];
-    storagegateway = [
-      mypy-boto3-storagegateway
-    ];
-    sts = [
-      mypy-boto3-sts
-    ];
-    support = [
-      mypy-boto3-support
-    ];
-    support-app = [
-      mypy-boto3-support-app
-    ];
-    swf = [
-      mypy-boto3-swf
-    ];
-    synthetics = [
-      mypy-boto3-synthetics
-    ];
-    textract = [
-      mypy-boto3-textract
-    ];
-    timestream-query = [
-      mypy-boto3-timestream-query
-    ];
-    timestream-write = [
-      mypy-boto3-timestream-write
-    ];
-    tnb = [
-      mypy-boto3-tnb
-    ];
-    transcribe = [
-      mypy-boto3-transcribe
-    ];
-    transfer = [
-      mypy-boto3-transfer
-    ];
-    translate = [
-      mypy-boto3-translate
-    ];
-    verifiedpermissions = [
-      mypy-boto3-verifiedpermissions
-    ];
-    voice-id = [
-      mypy-boto3-voice-id
-    ];
-    vpc-lattice = [
-      mypy-boto3-vpc-lattice
-    ];
-    waf = [
-      mypy-boto3-waf
-    ];
-    waf-regional = [
-      mypy-boto3-waf-regional
-    ];
-    wafv2 = [
-      mypy-boto3-wafv2
-    ];
-    wellarchitected = [
-      mypy-boto3-wellarchitected
-    ];
-    wisdom = [
-      mypy-boto3-wisdom
-    ];
-    workdocs = [
-      mypy-boto3-workdocs
-    ];
-    worklink = [
-      mypy-boto3-worklink
-    ];
-    workmail = [
-      mypy-boto3-workmail
-    ];
-    workmailmessageflow = [
-      mypy-boto3-workmailmessageflow
-    ];
-    workspaces = [
-      mypy-boto3-workspaces
-    ];
-    workspaces-web = [
-      mypy-boto3-workspaces-web
-    ];
-    xray = [
-      mypy-boto3-xray
-    ];
+    events = [ mypy-boto3-events ];
+    evidently = [ mypy-boto3-evidently ];
+    finspace = [ mypy-boto3-finspace ];
+    finspace-data = [ mypy-boto3-finspace-data ];
+    firehose = [ mypy-boto3-firehose ];
+    fis = [ mypy-boto3-fis ];
+    fms = [ mypy-boto3-fms ];
+    forecast = [ mypy-boto3-forecast ];
+    forecastquery = [ mypy-boto3-forecastquery ];
+    frauddetector = [ mypy-boto3-frauddetector ];
+    fsx = [ mypy-boto3-fsx ];
+    gamelift = [ mypy-boto3-gamelift ];
+    gamesparks = [ mypy-boto3-gamesparks ];
+    glacier = [ mypy-boto3-glacier ];
+    globalaccelerator = [ mypy-boto3-globalaccelerator ];
+    glue = [ mypy-boto3-glue ];
+    grafana = [ mypy-boto3-grafana ];
+    greengrass = [ mypy-boto3-greengrass ];
+    greengrassv2 = [ mypy-boto3-greengrassv2 ];
+    groundstation = [ mypy-boto3-groundstation ];
+    guardduty = [ mypy-boto3-guardduty ];
+    health = [ mypy-boto3-health ];
+    healthlake = [ mypy-boto3-healthlake ];
+    honeycode = [ mypy-boto3-honeycode ];
+    iam = [ mypy-boto3-iam ];
+    identitystore = [ mypy-boto3-identitystore ];
+    imagebuilder = [ mypy-boto3-imagebuilder ];
+    importexport = [ mypy-boto3-importexport ];
+    inspector = [ mypy-boto3-inspector ];
+    inspector2 = [ mypy-boto3-inspector2 ];
+    internetmonitor = [ mypy-boto3-internetmonitor ];
+    iot = [ mypy-boto3-iot ];
+    iot-data = [ mypy-boto3-iot-data ];
+    iot-jobs-data = [ mypy-boto3-iot-jobs-data ];
+    iot-roborunner = [ mypy-boto3-iot-roborunner ];
+    iot1click-devices = [ mypy-boto3-iot1click-devices ];
+    iot1click-projects = [ mypy-boto3-iot1click-projects ];
+    iotanalytics = [ mypy-boto3-iotanalytics ];
+    iotdeviceadvisor = [ mypy-boto3-iotdeviceadvisor ];
+    iotevents = [ mypy-boto3-iotevents ];
+    iotevents-data = [ mypy-boto3-iotevents-data ];
+    iotfleethub = [ mypy-boto3-iotfleethub ];
+    iotfleetwise = [ mypy-boto3-iotfleetwise ];
+    iotsecuretunneling = [ mypy-boto3-iotsecuretunneling ];
+    iotsitewise = [ mypy-boto3-iotsitewise ];
+    iotthingsgraph = [ mypy-boto3-iotthingsgraph ];
+    iottwinmaker = [ mypy-boto3-iottwinmaker ];
+    iotwireless = [ mypy-boto3-iotwireless ];
+    ivs = [ mypy-boto3-ivs ];
+    ivs-realtime = [ mypy-boto3-ivs-realtime ];
+    ivschat = [ mypy-boto3-ivschat ];
+    kafka = [ mypy-boto3-kafka ];
+    kafkaconnect = [ mypy-boto3-kafkaconnect ];
+    kendra = [ mypy-boto3-kendra ];
+    kendra-ranking = [ mypy-boto3-kendra-ranking ];
+    keyspaces = [ mypy-boto3-keyspaces ];
+    kinesis = [ mypy-boto3-kinesis ];
+    kinesis-video-archived-media = [ mypy-boto3-kinesis-video-archived-media ];
+    kinesis-video-media = [ mypy-boto3-kinesis-video-media ];
+    kinesis-video-signaling = [ mypy-boto3-kinesis-video-signaling ];
+    kinesis-video-webrtc-storage = [ mypy-boto3-kinesis-video-webrtc-storage ];
+    kinesisanalytics = [ mypy-boto3-kinesisanalytics ];
+    kinesisanalyticsv2 = [ mypy-boto3-kinesisanalyticsv2 ];
+    kinesisvideo = [ mypy-boto3-kinesisvideo ];
+    kms = [ mypy-boto3-kms ];
+    lakeformation = [ mypy-boto3-lakeformation ];
+    lambda = [ mypy-boto3-lambda ];
+    lex-models = [ mypy-boto3-lex-models ];
+    lex-runtime = [ mypy-boto3-lex-runtime ];
+    lexv2-models = [ mypy-boto3-lexv2-models ];
+    lexv2-runtime = [ mypy-boto3-lexv2-runtime ];
+    license-manager = [ mypy-boto3-license-manager ];
+    license-manager-linux-subscriptions = [ mypy-boto3-license-manager-linux-subscriptions ];
+    license-manager-user-subscriptions = [ mypy-boto3-license-manager-user-subscriptions ];
+    lightsail = [ mypy-boto3-lightsail ];
+    location = [ mypy-boto3-location ];
+    logs = [ mypy-boto3-logs ];
+    lookoutequipment = [ mypy-boto3-lookoutequipment ];
+    lookoutmetrics = [ mypy-boto3-lookoutmetrics ];
+    lookoutvision = [ mypy-boto3-lookoutvision ];
+    m2 = [ mypy-boto3-m2 ];
+    machinelearning = [ mypy-boto3-machinelearning ];
+    macie = [ mypy-boto3-macie ];
+    macie2 = [ mypy-boto3-macie2 ];
+    managedblockchain = [ mypy-boto3-managedblockchain ];
+    managedblockchain-query = [ mypy-boto3-managedblockchain-query ];
+    marketplace-catalog = [ mypy-boto3-marketplace-catalog ];
+    marketplace-entitlement = [ mypy-boto3-marketplace-entitlement ];
+    marketplacecommerceanalytics = [ mypy-boto3-marketplacecommerceanalytics ];
+    mediaconnect = [ mypy-boto3-mediaconnect ];
+    mediaconvert = [ mypy-boto3-mediaconvert ];
+    medialive = [ mypy-boto3-medialive ];
+    mediapackage = [ mypy-boto3-mediapackage ];
+    mediapackage-vod = [ mypy-boto3-mediapackage-vod ];
+    mediapackagev2 = [ mypy-boto3-mediapackagev2 ];
+    mediastore = [ mypy-boto3-mediastore ];
+    mediastore-data = [ mypy-boto3-mediastore-data ];
+    mediatailor = [ mypy-boto3-mediatailor ];
+    medical-imaging = [ mypy-boto3-medical-imaging ];
+    memorydb = [ mypy-boto3-memorydb ];
+    meteringmarketplace = [ mypy-boto3-meteringmarketplace ];
+    mgh = [ mypy-boto3-mgh ];
+    mgn = [ mypy-boto3-mgn ];
+    migration-hub-refactor-spaces = [ mypy-boto3-migration-hub-refactor-spaces ];
+    migrationhub-config = [ mypy-boto3-migrationhub-config ];
+    migrationhuborchestrator = [ mypy-boto3-migrationhuborchestrator ];
+    migrationhubstrategy = [ mypy-boto3-migrationhubstrategy ];
+    mobile = [ mypy-boto3-mobile ];
+    mq = [ mypy-boto3-mq ];
+    mturk = [ mypy-boto3-mturk ];
+    mwaa = [ mypy-boto3-mwaa ];
+    neptune = [ mypy-boto3-neptune ];
+    network-firewall = [ mypy-boto3-network-firewall ];
+    networkmanager = [ mypy-boto3-networkmanager ];
+    nimble = [ mypy-boto3-nimble ];
+    oam = [ mypy-boto3-oam ];
+    omics = [ mypy-boto3-omics ];
+    opensearch = [ mypy-boto3-opensearch ];
+    opensearchserverless = [ mypy-boto3-opensearchserverless ];
+    opsworks = [ mypy-boto3-opsworks ];
+    opsworkscm = [ mypy-boto3-opsworkscm ];
+    organizations = [ mypy-boto3-organizations ];
+    osis = [ mypy-boto3-osis ];
+    outposts = [ mypy-boto3-outposts ];
+    panorama = [ mypy-boto3-panorama ];
+    payment-cryptography = [ mypy-boto3-payment-cryptography ];
+    payment-cryptography-data = [ mypy-boto3-payment-cryptography-data ];
+    personalize = [ mypy-boto3-personalize ];
+    personalize-events = [ mypy-boto3-personalize-events ];
+    personalize-runtime = [ mypy-boto3-personalize-runtime ];
+    pi = [ mypy-boto3-pi ];
+    pinpoint = [ mypy-boto3-pinpoint ];
+    pinpoint-email = [ mypy-boto3-pinpoint-email ];
+    pinpoint-sms-voice = [ mypy-boto3-pinpoint-sms-voice ];
+    pinpoint-sms-voice-v2 = [ mypy-boto3-pinpoint-sms-voice-v2 ];
+    pipes = [ mypy-boto3-pipes ];
+    polly = [ mypy-boto3-polly ];
+    pricing = [ mypy-boto3-pricing ];
+    privatenetworks = [ mypy-boto3-privatenetworks ];
+    proton = [ mypy-boto3-proton ];
+    qldb = [ mypy-boto3-qldb ];
+    qldb-session = [ mypy-boto3-qldb-session ];
+    quicksight = [ mypy-boto3-quicksight ];
+    ram = [ mypy-boto3-ram ];
+    rbin = [ mypy-boto3-rbin ];
+    rds = [ mypy-boto3-rds ];
+    rds-data = [ mypy-boto3-rds-data ];
+    redshift = [ mypy-boto3-redshift ];
+    redshift-data = [ mypy-boto3-redshift-data ];
+    redshift-serverless = [ mypy-boto3-redshift-serverless ];
+    rekognition = [ mypy-boto3-rekognition ];
+    resiliencehub = [ mypy-boto3-resiliencehub ];
+    resource-explorer-2 = [ mypy-boto3-resource-explorer-2 ];
+    resource-groups = [ mypy-boto3-resource-groups ];
+    resourcegroupstaggingapi = [ mypy-boto3-resourcegroupstaggingapi ];
+    robomaker = [ mypy-boto3-robomaker ];
+    rolesanywhere = [ mypy-boto3-rolesanywhere ];
+    route53 = [ mypy-boto3-route53 ];
+    route53-recovery-cluster = [ mypy-boto3-route53-recovery-cluster ];
+    route53-recovery-control-config = [ mypy-boto3-route53-recovery-control-config ];
+    route53-recovery-readiness = [ mypy-boto3-route53-recovery-readiness ];
+    route53domains = [ mypy-boto3-route53domains ];
+    route53resolver = [ mypy-boto3-route53resolver ];
+    rum = [ mypy-boto3-rum ];
+    s3 = [ mypy-boto3-s3 ];
+    s3control = [ mypy-boto3-s3control ];
+    s3outposts = [ mypy-boto3-s3outposts ];
+    sagemaker = [ mypy-boto3-sagemaker ];
+    sagemaker-a2i-runtime = [ mypy-boto3-sagemaker-a2i-runtime ];
+    sagemaker-edge = [ mypy-boto3-sagemaker-edge ];
+    sagemaker-featurestore-runtime = [ mypy-boto3-sagemaker-featurestore-runtime ];
+    sagemaker-geospatial = [ mypy-boto3-sagemaker-geospatial ];
+    sagemaker-metrics = [ mypy-boto3-sagemaker-metrics ];
+    sagemaker-runtime = [ mypy-boto3-sagemaker-runtime ];
+    savingsplans = [ mypy-boto3-savingsplans ];
+    scheduler = [ mypy-boto3-scheduler ];
+    schemas = [ mypy-boto3-schemas ];
+    sdb = [ mypy-boto3-sdb ];
+    secretsmanager = [ mypy-boto3-secretsmanager ];
+    securityhub = [ mypy-boto3-securityhub ];
+    securitylake = [ mypy-boto3-securitylake ];
+    serverlessrepo = [ mypy-boto3-serverlessrepo ];
+    service-quotas = [ mypy-boto3-service-quotas ];
+    servicecatalog = [ mypy-boto3-servicecatalog ];
+    servicecatalog-appregistry = [ mypy-boto3-servicecatalog-appregistry ];
+    servicediscovery = [ mypy-boto3-servicediscovery ];
+    ses = [ mypy-boto3-ses ];
+    sesv2 = [ mypy-boto3-sesv2 ];
+    shield = [ mypy-boto3-shield ];
+    signer = [ mypy-boto3-signer ];
+    simspaceweaver = [ mypy-boto3-simspaceweaver ];
+    sms = [ mypy-boto3-sms ];
+    sms-voice = [ mypy-boto3-sms-voice ];
+    snow-device-management = [ mypy-boto3-snow-device-management ];
+    snowball = [ mypy-boto3-snowball ];
+    sns = [ mypy-boto3-sns ];
+    sqs = [ mypy-boto3-sqs ];
+    ssm = [ mypy-boto3-ssm ];
+    ssm-contacts = [ mypy-boto3-ssm-contacts ];
+    ssm-incidents = [ mypy-boto3-ssm-incidents ];
+    ssm-sap = [ mypy-boto3-ssm-sap ];
+    sso = [ mypy-boto3-sso ];
+    sso-admin = [ mypy-boto3-sso-admin ];
+    sso-oidc = [ mypy-boto3-sso-oidc ];
+    stepfunctions = [ mypy-boto3-stepfunctions ];
+    storagegateway = [ mypy-boto3-storagegateway ];
+    sts = [ mypy-boto3-sts ];
+    support = [ mypy-boto3-support ];
+    support-app = [ mypy-boto3-support-app ];
+    swf = [ mypy-boto3-swf ];
+    synthetics = [ mypy-boto3-synthetics ];
+    textract = [ mypy-boto3-textract ];
+    timestream-query = [ mypy-boto3-timestream-query ];
+    timestream-write = [ mypy-boto3-timestream-write ];
+    tnb = [ mypy-boto3-tnb ];
+    transcribe = [ mypy-boto3-transcribe ];
+    transfer = [ mypy-boto3-transfer ];
+    translate = [ mypy-boto3-translate ];
+    verifiedpermissions = [ mypy-boto3-verifiedpermissions ];
+    voice-id = [ mypy-boto3-voice-id ];
+    vpc-lattice = [ mypy-boto3-vpc-lattice ];
+    waf = [ mypy-boto3-waf ];
+    waf-regional = [ mypy-boto3-waf-regional ];
+    wafv2 = [ mypy-boto3-wafv2 ];
+    wellarchitected = [ mypy-boto3-wellarchitected ];
+    wisdom = [ mypy-boto3-wisdom ];
+    workdocs = [ mypy-boto3-workdocs ];
+    worklink = [ mypy-boto3-worklink ];
+    workmail = [ mypy-boto3-workmail ];
+    workmailmessageflow = [ mypy-boto3-workmailmessageflow ];
+    workspaces = [ mypy-boto3-workspaces ];
+    workspaces-web = [ mypy-boto3-workspaces-web ];
+    xray = [ mypy-boto3-xray ];
   };
 
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "boto3-stubs"
-  ];
+  pythonImportsCheck = [ "boto3-stubs" ];
 
   meta = with lib; {
     description = "Type annotations for boto3";
     homepage = "https://pypi.org/project/boto3-stubs/";
     license = licenses.mit;
-    maintainers = with maintainers; [ fab mbalatsko ];
+    maintainers = with maintainers; [
+      fab
+      mbalatsko
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/bring-api/default.nix b/pkgs/development/python-modules/bring-api/default.nix
new file mode 100644
index 0000000000000..720d06e55560e
--- /dev/null
+++ b/pkgs/development/python-modules/bring-api/default.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dotenv,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "bring-api";
+  version = "0.7.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "miaucl";
+    repo = "bring-api";
+    rev = "refs/tags/${version}";
+    hash = "sha256-fhZMn0v908VzV+JLuS8tM+BPKJBoj77vEh1pINL4Cco=";
+  };
+
+  build-system = [ setuptools ];
+
+  dependencies = [ aiohttp ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytestCheckHook
+    python-dotenv
+  ];
+
+  pythonImportsCheck = [ "bring_api" ];
+
+  meta = with lib; {
+    description = "Module to access the Bring! shopping lists API";
+    homepage = "https://github.com/miaucl/bring-api";
+    changelog = "https://github.com/miaucl/bring-api/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/brother/default.nix b/pkgs/development/python-modules/brother/default.nix
index 60907fe7f1392..b4f163dd9928a 100644
--- a/pkgs/development/python-modules/brother/default.nix
+++ b/pkgs/development/python-modules/brother/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "brother";
-  version = "4.0.2";
+  version = "4.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "bieniu";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-n1CIozKuF0+N8Vg3QA2jy5xNLDBJPdnhVT/xg1R+t90=";
+    hash = "sha256-W7bakj/94l0pL5fOb+CK+Z6k1cbv/CY9XjXGYZfLFY4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/capstone/4.nix b/pkgs/development/python-modules/capstone/4.nix
new file mode 100644
index 0000000000000..7c79cfe819428
--- /dev/null
+++ b/pkgs/development/python-modules/capstone/4.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, capstone_4
+, stdenv
+, setuptools
+, pythonAtLeast
+}:
+
+buildPythonPackage {
+  pname = "capstone";
+  inherit (capstone_4) version src;
+
+  sourceRoot = "source/bindings/python";
+
+  postPatch = ''
+    ln -s ${capstone_4}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
+    ln -s ${capstone_4}/lib/libcapstone${stdenv.targetPlatform.extensions.staticLibrary} prebuilt/
+    substituteInPlace setup.py --replace manylinux1 manylinux2014
+  '';
+
+  # aarch64 only available from MacOS SDK 11 onwards, so fix the version tag.
+  # otherwise, bdist_wheel may detect "macosx_10_6_arm64" which doesn't make sense.
+  setupPyBuildFlags = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ "--plat-name" "macosx_11_0" ];
+
+  propagatedBuildInputs = [ setuptools ];
+
+  checkPhase = ''
+    mv capstone capstone.hidden
+    patchShebangs test_*
+    make check
+  '';
+
+  meta = with lib; {
+    homepage = "http://www.capstone-engine.org/";
+    license = licenses.bsdOriginal;
+    description = "Python bindings for Capstone disassembly engine";
+    maintainers = with maintainers; [ bennofs ris ];
+    broken = pythonAtLeast "3.12"; # uses distutils
+  };
+}
diff --git a/pkgs/development/python-modules/capstone/default.nix b/pkgs/development/python-modules/capstone/default.nix
index be8fa4fba9f46..405dbe767da6c 100644
--- a/pkgs/development/python-modules/capstone/default.nix
+++ b/pkgs/development/python-modules/capstone/default.nix
@@ -17,9 +17,11 @@ buildPythonPackage rec {
   src = capstone.src;
   sourceRoot = "${src.name}/bindings/python";
 
+  # libcapstone.a is not built with BUILD_SHARED_LIBS. For some reason setup.py
+  # checks if it exists but it is not really needed. Most likely a bug in setup.py.
   postPatch = ''
     ln -s ${capstone}/lib/libcapstone${stdenv.targetPlatform.extensions.sharedLibrary} prebuilt/
-    ln -s ${capstone}/lib/libcapstone.a prebuilt/
+    touch prebuilt/libcapstone${stdenv.targetPlatform.extensions.staticLibrary}
     substituteInPlace setup.py --replace manylinux1 manylinux2014
   '';
 
diff --git a/pkgs/development/python-modules/catppuccin/default.nix b/pkgs/development/python-modules/catppuccin/default.nix
index b3134003cfbda..72b0a4ff42fe9 100644
--- a/pkgs/development/python-modules/catppuccin/default.nix
+++ b/pkgs/development/python-modules/catppuccin/default.nix
@@ -10,10 +10,7 @@
 
 buildPythonPackage rec {
   pname = "catppuccin";
-  version = "1.3.2";
-  # Note: updating to later versions breaks catppuccin-gtk
-  # It would be ideal to only update this after catppuccin-gtk
-  # gets support for the newer version
+  version = "2.2.0";
 
   pyproject = true;
 
@@ -21,7 +18,7 @@ buildPythonPackage rec {
     owner = "catppuccin";
     repo = "python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-spPZdQ+x3isyeBXZ/J2QE6zNhyHRfyRQGiHreuXzzik=";
+    hash = "sha256-+V1rln3FlFvs1FEIANIch7k/b2EsI9xBxhg3Bwg99+I=";
   };
 
   build-system = [
@@ -38,11 +35,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
-  # can be removed next version
-  disabledTestPaths = [
-    "tests/test_flavour.py" # would download a json to check correctness of flavours
-  ];
-
   pythonImportsCheck = [ "catppuccin" ];
 
   meta = {
diff --git a/pkgs/development/python-modules/clarabel/default.nix b/pkgs/development/python-modules/clarabel/default.nix
index 9d196200f8421..7e098000002df 100644
--- a/pkgs/development/python-modules/clarabel/default.nix
+++ b/pkgs/development/python-modules/clarabel/default.nix
@@ -56,6 +56,6 @@ buildPythonPackage rec {
     description = "Conic Interior Point Solver";
     homepage = "https://github.com/oxfordcontrol/Clarabel.rs";
     license = lib.licenses.asl20;
-    maintainers = with lib.maintainers; [ a-n-n-a-l-e-e ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/clarifai-grpc/default.nix b/pkgs/development/python-modules/clarifai-grpc/default.nix
index abea00d207986..ce7929e5a3455 100644
--- a/pkgs/development/python-modules/clarifai-grpc/default.nix
+++ b/pkgs/development/python-modules/clarifai-grpc/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
-, googleapis-common-protos
-, grpcio
-, protobuf
-, requests
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+  googleapis-common-protos,
+  grpcio,
+  protobuf,
+  requests,
 }:
 
 buildPythonPackage rec {
   pname = "clarifai-grpc";
-  version = "10.2.3";
+  version = "10.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     owner = "Clarifai";
     repo = "clarifai-python-grpc";
     rev = "refs/tags/${version}";
-    hash = "sha256-Dim0ZRYNzmlBqrqqs0CG+I/XQYpH9DuPISXoYxi92Dc=";
+    hash = "sha256-JdRqZCDU5ScI3ZUTsWnFHYQ7Zog6V2xcbBDvFcHPnCk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     googleapis-common-protos
diff --git a/pkgs/development/python-modules/clarifai/default.nix b/pkgs/development/python-modules/clarifai/default.nix
index 54faa5fd47c81..ee6a1eb6bc644 100644
--- a/pkgs/development/python-modules/clarifai/default.nix
+++ b/pkgs/development/python-modules/clarifai/default.nix
@@ -1,30 +1,31 @@
-{ lib
-, buildPythonPackage
-, clarifai-grpc
-, fetchFromGitHub
-, inquirerpy
-, llama-index-core
-, numpy
-, opencv4
-, pandas
-, pillow
-, pycocotools
-, pypdf
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, rich
-, schema
-, setuptools
-, tabulate
-, tqdm
-, tritonclient
+{
+  lib,
+  buildPythonPackage,
+  clarifai-grpc,
+  fetchFromGitHub,
+  inquirerpy,
+  llama-index-core,
+  numpy,
+  opencv4,
+  pandas,
+  pillow,
+  pycocotools,
+  pypdf,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pyyaml,
+  rich,
+  schema,
+  setuptools,
+  tabulate,
+  tqdm,
+  tritonclient,
 }:
 
 buildPythonPackage rec {
   pname = "clarifai";
-  version = "10.2.1";
+  version = "10.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -33,21 +34,16 @@ buildPythonPackage rec {
     owner = "Clarifai";
     repo = "clarifai-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-jI85xMApeEd0Hl6h4Am5qxWoSSTWHsmb7FxUjJPmBQM=";
+    hash = "sha256-8EPs6kGB+Px9Fs2Z+YwDcmEYI5+z/kOIKLraJFMykF0=";
   };
 
-  pythonRelaxDeps = [
-    "clarifai-grpc"
-  ];
+  pythonRelaxDeps = [ "clarifai-grpc" ];
 
-  pythonRemoveDeps = [
-    "opencv-python"
-  ];
+  pythonRemoveDeps = [ "opencv-python" ];
 
-  build-system = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     clarifai-grpc
@@ -67,14 +63,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    all = [
-      pycocotools
-    ];
+    all = [ pycocotools ];
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
@@ -99,9 +91,7 @@ buildPythonPackage rec {
     "clarifai/models/model_serving/repo_build/static_files/base_test.py"
   ];
 
-  pythonImportsCheck = [
-    "clarifai"
-  ];
+  pythonImportsCheck = [ "clarifai" ];
 
   meta = with lib; {
     description = "Clarifai Python Utilities";
diff --git a/pkgs/development/python-modules/claripy/default.nix b/pkgs/development/python-modules/claripy/default.nix
index 5f0cec61b1edc..0da9d861642fe 100644
--- a/pkgs/development/python-modules/claripy/default.nix
+++ b/pkgs/development/python-modules/claripy/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, cachetools
-, decorator
-, fetchFromGitHub
-, pysmt
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, z3-solver
+{
+  lib,
+  buildPythonPackage,
+  cachetools,
+  decorator,
+  fetchFromGitHub,
+  pysmt,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  setuptools,
+  z3-solver,
 }:
 
 buildPythonPackage rec {
   pname = "claripy";
-  version = "9.2.97";
+  version = "9.2.98";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,13 +23,11 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "claripy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZSDG1KmVi0kZX4WmrYIyd5+zRR/rjrugm8UjFlI5pfU=";
+    hash = "sha256-qGkVGRDVX8YMWgvRAqKM9Pxjv9uqu4UNSDtvhzVVeSU=";
   };
 
   # z3 does not provide a dist-info, so python-runtime-deps-check will fail
-  pythonRemoveDeps = [
-    "z3-solver"
-  ];
+  pythonRemoveDeps = [ "z3-solver" ];
 
   build-system = [
     pythonRelaxDepsHook
@@ -42,13 +41,9 @@ buildPythonPackage rec {
     z3-solver
   ] ++ z3-solver.requiredPythonModules;
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "claripy"
-  ];
+  pythonImportsCheck = [ "claripy" ];
 
   meta = with lib; {
     description = "Python abstraction layer for constraint solvers";
diff --git a/pkgs/development/python-modules/cle/default.nix b/pkgs/development/python-modules/cle/default.nix
index 543c14407476d..a2dda712f417c 100644
--- a/pkgs/development/python-modules/cle/default.nix
+++ b/pkgs/development/python-modules/cle/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, archinfo
-, buildPythonPackage
-, cffi
-, fetchFromGitHub
-, minidump
-, pefile
-, pyelftools
-, pynose
-, pytestCheckHook
-, pythonOlder
-, pyvex
-, pyxbe
-, setuptools
-, sortedcontainers
+{
+  lib,
+  archinfo,
+  buildPythonPackage,
+  cffi,
+  fetchFromGitHub,
+  minidump,
+  pefile,
+  pyelftools,
+  pynose,
+  pytestCheckHook,
+  pythonOlder,
+  pyvex,
+  pyxbe,
+  setuptools,
+  sortedcontainers,
 }:
 
 let
   # The binaries are following the argr projects release cycle
-  version = "9.2.97";
+  version = "9.2.98";
 
   # Binary files from https://github.com/angr/binaries (only used for testing and only here)
   binaries = fetchFromGitHub {
     owner = "angr";
     repo = "binaries";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FiPEqfNaAXI+xSWE+So//Uwz9k3bANHQ++nRSPKkddM=";
+    hash = "sha256-hnYMAgEnDHXg1jUrzhLWuun+Gv+2xnd4Da6OC9IGa2Q=";
   };
-
 in
 buildPythonPackage rec {
   pname = "cle";
@@ -39,12 +39,10 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "cle";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tain1I7Td+0v7n+px3mQnz7reKZUbGYDWfKnDhvmU8I=";
+    hash = "sha256-6gJKhyjKBgtSwGk5lqkaQVxe0ZC5WHVIYQMeREfz9A0=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     archinfo
@@ -82,9 +80,7 @@ buildPythonPackage rec {
     "test_remote_file_map"
   ];
 
-  pythonImportsCheck = [
-    "cle"
-  ];
+  pythonImportsCheck = [ "cle" ];
 
   meta = with lib; {
     description = "Python loader for many binary formats";
diff --git a/pkgs/development/python-modules/clickhouse-connect/default.nix b/pkgs/development/python-modules/clickhouse-connect/default.nix
index 277216a3f9685..93568adafee2a 100644
--- a/pkgs/development/python-modules/clickhouse-connect/default.nix
+++ b/pkgs/development/python-modules/clickhouse-connect/default.nix
@@ -23,7 +23,7 @@
 }:
 buildPythonPackage rec {
   pname = "clickhouse-connect";
-  version = "0.7.4";
+  version = "0.7.7";
 
   format = "setuptools";
 
@@ -33,7 +33,7 @@ buildPythonPackage rec {
     repo = "clickhouse-connect";
     owner = "ClickHouse";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YEtcM9+GO8mYv2pyaBYmXdmWLXVuteKtQIJR4H+Xsd4=";
+    hash = "sha256-EnASrc4yUxSQ5kgaY5xcjZG7y8ZWLabUFAcdF5ZZNBQ=";
   };
 
   nativeBuildInputs = [ cython_3 ];
diff --git a/pkgs/development/python-modules/clifford/default.nix b/pkgs/development/python-modules/clifford/default.nix
index 84859729c5b1d..6a590af483a75 100644
--- a/pkgs/development/python-modules/clifford/default.nix
+++ b/pkgs/development/python-modules/clifford/default.nix
@@ -7,6 +7,7 @@
 , numba
 , numpy
 , pytestCheckHook
+, setuptools
 , scipy
 , sparse
 }:
@@ -14,7 +15,7 @@
 buildPythonPackage rec {
   pname = "clifford";
   version = "1.4.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.5";
 
@@ -23,7 +24,11 @@ buildPythonPackage rec {
     hash = "sha256-eVE8FrD0YHoRreY9CrNb8v4v4KrG83ZU0oFz+V+p+Q0=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     h5py
     numba
     numpy
@@ -62,7 +67,11 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Numerical Geometric Algebra Module";
     homepage = "https://clifford.readthedocs.io";
+    changelog = "https://github.com/pygae/clifford/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ];
+    # Broken with numba >= 0.54
+    # see https://github.com/pygae/clifford/issues/430
+    broken = versionAtLeast numba.version "0.58";
   };
 }
diff --git a/pkgs/development/python-modules/cloudsmith-api/default.nix b/pkgs/development/python-modules/cloudsmith-api/default.nix
index bd17a7791f1bc..5f51009f4bd77 100644
--- a/pkgs/development/python-modules/cloudsmith-api/default.nix
+++ b/pkgs/development/python-modules/cloudsmith-api/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "cloudsmith-api";
-  version = "2.0.11";
+  version = "2.0.12";
   format = "wheel";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "cloudsmith_api";
     inherit format version;
-    hash = "sha256-GwRN3nVMf/OusgJICf/GCCcZ4szEIGl8AZQ7J7LBzro=";
+    hash = "sha256-a33t963Q5+gnZI9pha4viuyWz3xLHUdcGE4ccw/w0s8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/craft-grammar/default.nix b/pkgs/development/python-modules/craft-grammar/default.nix
index 3907317db924f..61a07f4d7c069 100644
--- a/pkgs/development/python-modules/craft-grammar/default.nix
+++ b/pkgs/development/python-modules/craft-grammar/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "craft-grammar";
-  version = "1.1.2";
+  version = "1.2.0";
 
   pyproject = true;
 
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "canonical";
     repo = "craft-grammar";
     rev = "refs/tags/${version}";
-    hash = "sha256-23KLIO2yHXGe/zb3B8LirJsh+LY9z0c5ZGtF392Kszo";
+    hash = "sha256-YQpxgdmUxYLkhAXDLlkLAK6VpjIEycLFY3nsE/M4o2g=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/credstash/default.nix b/pkgs/development/python-modules/credstash/default.nix
index 8ed90b65f7a28..dd950001c3d0d 100644
--- a/pkgs/development/python-modules/credstash/default.nix
+++ b/pkgs/development/python-modules/credstash/default.nix
@@ -1,19 +1,36 @@
-{ lib, buildPythonPackage, fetchPypi, cryptography, boto3, pyyaml, docutils, pytest, fetchpatch }:
+{
+  lib,
+  boto3,
+  buildPythonPackage,
+  cryptography,
+  docutils,
+  fetchFromGitHub,
+  fetchpatch,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
+}:
 
 buildPythonPackage rec {
   pname = "credstash";
   version = "1.17.1";
-  format = "setuptools";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6c04e8734ef556ab459018da142dd0b244093ef176b3be5583e582e9a797a120";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "fugue";
+    repo = "credstash";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-a6OzffGt5piHgi0AWEXJED0R/+8RETh/9hYJi/lUVu0=";
   };
 
   patches = [
+    # setup_requires -> tests_requires for pytest
     (fetchpatch {
       url = "https://github.com/fugue/credstash/commit/9c02ee43ed6e37596cafbca2fe80c532ec19d2d8.patch";
-      sha256 = "dlybrpfLK+PqwWWhH9iXgXHYysZGmcZAFGWNOwsG0xA=";
+      hash = "sha256-dlybrpfLK+PqwWWhH9iXgXHYysZGmcZAFGWNOwsG0xA=";
     })
   ];
   # The install phase puts an executable and a copy of the library it imports in
@@ -24,17 +41,29 @@ buildPythonPackage rec {
   # file ensures that Python imports the module from site-packages library.
   postInstall = "rm $out/bin/credstash.py";
 
-  nativeBuildInputs = [ pytest ];
+  build-system = [ setuptools ];
+
+  dependencies = [
+    boto3
+    cryptography
+    docutils
+    pyyaml
+  ];
 
-  propagatedBuildInputs = [ cryptography boto3 pyyaml docutils ];
+  nativeBuildInputs = [ pytestCheckHook ];
 
-  # No tests in archive
-  doCheck = false;
+  disabledTestPaths = [
+    # Tests require a region
+    "integration_tests/test_credstash_lib.py"
+    "tests/key_service_test.py"
+  ];
 
   meta = with lib; {
     description = "A utility for managing secrets in the cloud using AWS KMS and DynamoDB";
-    mainProgram = "credstash";
     homepage = "https://github.com/LuminalOSS/credstash";
+    changelog = "https://github.com/fugue/credstash/releases/tag/v${version}";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
+    mainProgram = "credstash";
   };
 }
diff --git a/pkgs/development/python-modules/crytic-compile/default.nix b/pkgs/development/python-modules/crytic-compile/default.nix
index 8ef955f56f8f3..2bcda1d7fd72e 100644
--- a/pkgs/development/python-modules/crytic-compile/default.nix
+++ b/pkgs/development/python-modules/crytic-compile/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "crytic-compile";
-  version = "0.3.6";
+  version = "0.3.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "crytic";
     repo = "crytic-compile";
     rev = "refs/tags/${version}";
-    hash = "sha256-dQynnILHt6YO5qtvVVwcxRwtBJgokyfsQ5ubH15dkuA=";
+    hash = "sha256-SMkFzGZg/6akclQ0XLUvjK3uoypsHfRru+B4VurjOrM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cvss/default.nix b/pkgs/development/python-modules/cvss/default.nix
index 267cd94f41d8b..640ad9720c743 100644
--- a/pkgs/development/python-modules/cvss/default.nix
+++ b/pkgs/development/python-modules/cvss/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "cvss";
-  version = "3.0";
+  version = "3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "RedHatProductSecurity";
     repo = "cvss";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xrkWpE13Y4KgQEZjitWE3Ka+IyfShqE2cj0/yzsAnX4=";
+    hash = "sha256-e/zwOfbt3YLlRiLFObjps3tFFk6BAWBKdanio6sus8c=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/cwl-utils/default.nix b/pkgs/development/python-modules/cwl-utils/default.nix
index aaa57e86ae00d..fe6c94829e0e4 100644
--- a/pkgs/development/python-modules/cwl-utils/default.nix
+++ b/pkgs/development/python-modules/cwl-utils/default.nix
@@ -1,34 +1,38 @@
-{ lib
-, buildPythonPackage
-, cwl-upgrader
-, cwlformat
-, fetchFromGitHub
-, packaging
-, pytest-mock
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, rdflib
-, requests
-, ruamel-yaml
-, schema-salad
+{
+  lib,
+  buildPythonPackage,
+  cwl-upgrader,
+  cwlformat,
+  fetchFromGitHub,
+  packaging,
+  pytest-mock,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  rdflib,
+  requests,
+  ruamel-yaml,
+  schema-salad,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "cwl-utils";
-  version = "0.32";
-  format = "setuptools";
+  version = "0.33";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "common-workflow-language";
-    repo = pname;
+    repo = "cwl-utils";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CM2UlJ86FcjsOm0msBNpY2li8bhm5T/aMD1q292HpLM=";
+    hash = "sha256-+GvG5Uu2nQWYCcuAkBkegsmMCWhf269jH6Zcex99I4M=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     cwl-upgrader
     packaging
     rdflib
@@ -44,9 +48,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "cwl_utils"
-  ];
+  pythonImportsCheck = [ "cwl_utils" ];
 
   disabledTests = [
     # Don't run tests which require Node.js
diff --git a/pkgs/development/python-modules/dazl/default.nix b/pkgs/development/python-modules/dazl/default.nix
index f913501e0da5f..8e26c9194f9ba 100644
--- a/pkgs/development/python-modules/dazl/default.nix
+++ b/pkgs/development/python-modules/dazl/default.nix
@@ -69,6 +69,6 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "High-level Ledger API client for Daml ledgers";
-    license = licenses.apsl20;
+    license = licenses.asl20;
   };
 }
diff --git a/pkgs/development/python-modules/dfdiskcache/default.nix b/pkgs/development/python-modules/dfdiskcache/default.nix
new file mode 100644
index 0000000000000..d7a7de367a286
--- /dev/null
+++ b/pkgs/development/python-modules/dfdiskcache/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pandas
+, setuptools
+, simplesqlite
+, typing-extensions
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "df-diskcache";
+  version = "0.0.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "thombashi";
+    repo = "df-diskcache";
+    rev = "v${version}";
+    hash = "sha256-s+sqEPXw6tbEz9mnG+qeUSF6BmDssYhaDYOmraFaRbw=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [
+    pandas
+    simplesqlite
+    typing-extensions
+  ];
+
+  preCheck = ''
+    # Needed for Permission denied: '/homeless-shelter'
+    export HOME=$(mktemp -d)
+  '';
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "dfdiskcache" ];
+
+  meta = with lib; {
+    description = "Python library for caching pandas.DataFrame objects to local disk";
+    homepage = "https://github.com/thombashi/df-diskcache";
+    license = licenses.mit;
+    maintainers = with maintainers; [ henrirosten ];
+  };
+}
diff --git a/pkgs/development/python-modules/dirigera/default.nix b/pkgs/development/python-modules/dirigera/default.nix
index 95beb921230c1..705d03cbe6d8c 100644
--- a/pkgs/development/python-modules/dirigera/default.nix
+++ b/pkgs/development/python-modules/dirigera/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "dirigera";
-  version = "1.0.14";
+  version = "1.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "Leggin";
     repo = "dirigera";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FsW7ewKAvIONOjEXIOq7/GqOs564PpeMFKjS4crJtJ0=";
+    hash = "sha256-k5xChz3qfClWU131WH0CqaY8qrJXh85NQ0y1iPfnX5Y=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/django-countries/default.nix b/pkgs/development/python-modules/django-countries/default.nix
index 95da90866e655..69262c0840626 100644
--- a/pkgs/development/python-modules/django-countries/default.nix
+++ b/pkgs/development/python-modules/django-countries/default.nix
@@ -2,10 +2,10 @@
 , buildPythonPackage
 , fetchFromGitHub
 
-# build
+# build-system
 , setuptools
 
-# propagates
+# dependencies
 , asgiref
 , typing-extensions
 
@@ -19,21 +19,21 @@
 
 buildPythonPackage rec {
   pname = "django-countries";
-  version = "7.5.1";
-  format = "pyproject";
+  version = "7.6.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "SmileyChris";
     repo = "django-countries";
     rev = "refs/tags/v${version}";
-    hash = "sha256-se6s0sgIfMLW0sIMp/3vK4KdDPQ5ahg6OQCDAs4my4M=";
+    hash = "sha256-IR9cJbDVkZrcF3Ti70mV8VeXINQDK8OpwUTWVjD4Zn0=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asgiref
     typing-extensions
   ];
diff --git a/pkgs/development/python-modules/django-filter/default.nix b/pkgs/development/python-modules/django-filter/default.nix
index 8f91712ba0b78..926851b7fe005 100644
--- a/pkgs/development/python-modules/django-filter/default.nix
+++ b/pkgs/development/python-modules/django-filter/default.nix
@@ -6,22 +6,21 @@
 , djangorestframework
 , pytestCheckHook
 , pytest-django
-, python
 }:
 
 buildPythonPackage rec {
   pname = "django-filter";
-  version = "23.5";
-  format = "pyproject";
+  version = "24.2";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Z1g6pDuR/oxJ90qDLZX02EQr5ij9TG1l6fgR9RU6Tlw=";
+    hash = "sha256-SOX8HaPM1soNX5u1UJc1GM6Xek7d6dKooVSn9PC5+W4=";
   };
 
-  nativeBuildInputs = [ flit-core ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [ django ];
+  dependencies = [ django ];
 
   pythonImportsCheck = [
     "django_filters"
@@ -38,7 +37,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Reusable Django application for allowing users to filter querysets dynamically";
     homepage = "https://github.com/carltongibson/django-filter";
-    changelog = "https://github.com/carltongibson/django-filter/blob/v${version}/CHANGES.rst";
+    changelog = "https://github.com/carltongibson/django-filter/blob/${version}/CHANGES.rst";
     license = licenses.bsd3;
     maintainers = with maintainers; [ mmai ];
   };
diff --git a/pkgs/development/python-modules/django-import-export/default.nix b/pkgs/development/python-modules/django-import-export/default.nix
index 4c901273ab020..50e60202dc975 100644
--- a/pkgs/development/python-modules/django-import-export/default.nix
+++ b/pkgs/development/python-modules/django-import-export/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "django-import-export";
-  version = "3.3.7";
+  version = "3.3.8";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "django-import-export";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-xcvBavXrA1XhBKYBkbaOuzG6yYkSnX2USvjg5djoXQ8=";
+    hash = "sha256-9BsaYLAkd6UvQxMtwk+pI7HyOWNU4rUmingkyemRCz4=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/django-vite/default.nix b/pkgs/development/python-modules/django-vite/default.nix
index 607d0b6e818f8..b3527b9176b85 100644
--- a/pkgs/development/python-modules/django-vite/default.nix
+++ b/pkgs/development/python-modules/django-vite/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "django-vite";
-  version = "3.0.3";
+  version = "3.0.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -16,7 +16,7 @@ buildPythonPackage rec {
     owner = "MrBin99";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-FH42auBm/YRfGgjL9TGQLed/p0P8POb7DOLmpUK1d9c=";
+    hash = "sha256-rIT4WA45v353vSV56fBOa0euiuwnXWmhbxniAWPAkMo=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/django-webpack-loader/default.nix b/pkgs/development/python-modules/django-webpack-loader/default.nix
index 3850c7cbd8915..ea1d808aed5ae 100644
--- a/pkgs/development/python-modules/django-webpack-loader/default.nix
+++ b/pkgs/development/python-modules/django-webpack-loader/default.nix
@@ -1,32 +1,32 @@
-{ lib
-, buildPythonPackage
-, django
-, fetchPypi
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  django,
+  fetchPypi,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "django-webpack-loader";
-  version = "3.0.1";
-  format = "setuptools";
+  version = "3.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UTMbM9p2aI60078+o7tWQ0sMHfstzYjL+wo5YY9o3Xo=";
+    hash = "sha256-sGuDyoGe1Lu4WKtXuNjLZ6JcSlftgi3t1On+5MCXr9U=";
   };
 
-  propagatedBuildInputs = [
-    django
-  ];
+  build-system = [ setuptools-scm ];
+
+  dependencies = [ django ];
 
   # django.core.exceptions.ImproperlyConfigured (path issue with DJANGO_SETTINGS_MODULE?)
   doCheck = false;
 
-  pythonImportsCheck = [
-    "webpack_loader"
-  ];
+  pythonImportsCheck = [ "webpack_loader" ];
 
   meta = with lib; {
     description = "Use webpack to generate your static bundles";
diff --git a/pkgs/development/python-modules/django/5.nix b/pkgs/development/python-modules/django/5.nix
index d359df1c9a45d..2bcf41dc39d92 100644
--- a/pkgs/development/python-modules/django/5.nix
+++ b/pkgs/development/python-modules/django/5.nix
@@ -6,7 +6,7 @@
 , pythonOlder
 , substituteAll
 
-# build
+# build-system
 , setuptools
 
 # patched in
@@ -14,11 +14,11 @@
 , gdal
 , withGdal ? false
 
-# propagates
+# dependencies
 , asgiref
 , sqlparse
 
-# extras
+# optional-dependencies
 , argon2-cffi
 , bcrypt
 
@@ -43,7 +43,7 @@
 
 buildPythonPackage rec {
   pname = "django";
-  version = "5.0.3";
+  version = "5.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -51,7 +51,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Django";
     inherit version;
-    hash = "sha256-X7N1gNz0omL5JYwfQ3OBmqzKkGQx9QXkaI4386mRld8=";
+    hash = "sha256-S9AajIMLt3qKOw59iyW4h+U2rReoG6Lc5UdhNcczEr0=";
   };
 
   patches = [
@@ -83,16 +83,16 @@ buildPythonPackage rec {
       --replace-fail "test_files" "dont_test_files"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asgiref
     sqlparse
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     argon2 = [
       argon2-cffi
     ];
@@ -118,7 +118,7 @@ buildPythonPackage rec {
     selenium
     tblib
     tzdata
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   doCheck = !stdenv.isDarwin;
 
diff --git a/pkgs/development/python-modules/dsnap/default.nix b/pkgs/development/python-modules/dsnap/default.nix
index d67cb02aa1123..f14636df06547 100644
--- a/pkgs/development/python-modules/dsnap/default.nix
+++ b/pkgs/development/python-modules/dsnap/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aws-sam-cli
-, boto3
-, buildPythonPackage
-, cfn-lint
-, fetchFromGitHub
-, mock
-, moto
-, mypy-boto3-ebs
-, poetry-core
-, pytestCheckHook
-, pythonOlder
-, typer
-, urllib3
+{
+  lib,
+  aws-sam-cli,
+  boto3,
+  buildPythonPackage,
+  cfn-lint,
+  fetchFromGitHub,
+  mock,
+  moto,
+  mypy-boto3-ebs,
+  poetry-core,
+  pytestCheckHook,
+  pythonOlder,
+  typer,
+  urllib3,
 }:
 
 buildPythonPackage rec {
@@ -31,22 +32,18 @@ buildPythonPackage rec {
   postPatch = ''
     # Is no direct dependency
     substituteInPlace pyproject.toml \
-      --replace 'urllib3 = "^1.26.4"' 'urllib3 = "*"'
+      --replace-fail 'urllib3 = "^1.26.4"' 'urllib3 = "*"'
   '';
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     boto3
     urllib3
   ];
 
   passthru.optional-dependencies = {
-    cli = [
-      typer
-    ];
+    cli = [ typer ];
     scannerd = [
       aws-sam-cli
       cfn-lint
@@ -60,17 +57,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
 
-  pythonImportsCheck = [
-    "dsnap"
-  ];
+  # https://github.com/RhinoSecurityLabs/dsnap/issues/26
+  # ImportError: cannot import name 'mock_iam' from 'moto'
+  doCheck = false;
+
+  pythonImportsCheck = [ "dsnap" ];
 
   meta = with lib; {
     description = "Utility for downloading and mounting EBS snapshots using the EBS Direct API's";
-    mainProgram = "dsnap";
     homepage = "https://github.com/RhinoSecurityLabs/dsnap";
     changelog = "https://github.com/RhinoSecurityLabs/dsnap/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "dsnap";
   };
 }
-
diff --git a/pkgs/development/python-modules/dvc-render/default.nix b/pkgs/development/python-modules/dvc-render/default.nix
index fc0a13004970a..2cab268fecf6e 100644
--- a/pkgs/development/python-modules/dvc-render/default.nix
+++ b/pkgs/development/python-modules/dvc-render/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchFromGitHub
-, flatten-dict
-, funcy
-, matplotlib
-, tabulate
-, pytestCheckHook
-, pytest-mock
-, pytest-test-utils
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flatten-dict,
+  funcy,
+  matplotlib,
+  tabulate,
+  pytestCheckHook,
+  pytest-mock,
+  pytest-test-utils,
+  pythonOlder,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "dvc-render";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,12 +25,10 @@ buildPythonPackage rec {
     owner = "iterative";
     repo = "dvc-render";
     rev = "refs/tags/${version}";
-    hash = "sha256-7rmmhf6Y6teoHR8u1+Ce1Xq0rdtC1/MWLXb282OOEnc=";
+    hash = "sha256-V4QVZu4PSOW9poT6YUWbgTjJpIJ8YUtGDAE4Ijgm5Ac=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
 
   passthru.optional-dependencies = {
     table = [
@@ -47,17 +46,11 @@ buildPythonPackage rec {
     pytestCheckHook
     pytest-mock
     pytest-test-utils
-  ]
-  ++ passthru.optional-dependencies.table
-  ++ passthru.optional-dependencies.markdown;
+  ] ++ passthru.optional-dependencies.table ++ passthru.optional-dependencies.markdown;
 
-  disabledTestPaths = lib.optionals stdenv.isDarwin [
-    "tests/test_vega.py"
-  ];
+  disabledTestPaths = lib.optionals stdenv.isDarwin [ "tests/test_vega.py" ];
 
-  pythonImportsCheck = [
-    "dvc_render"
-  ];
+  pythonImportsCheck = [ "dvc_render" ];
 
   meta = with lib; {
     description = "Library for rendering DVC plots";
diff --git a/pkgs/development/python-modules/elastic-apm/default.nix b/pkgs/development/python-modules/elastic-apm/default.nix
index 61ad6705fe9b7..25ef39efea064 100644
--- a/pkgs/development/python-modules/elastic-apm/default.nix
+++ b/pkgs/development/python-modules/elastic-apm/default.nix
@@ -1,37 +1,39 @@
-{ lib
-, stdenv
-, aiohttp
-, blinker
-, buildPythonPackage
-, certifi
-, ecs-logging
-, fetchFromGitHub
-, httpx
-, jinja2
-, jsonschema
-, logbook
-, mock
-, pytest-asyncio
-, pytest-bdd
-, pytest-localserver
-, pytest-mock
-, pytest-random-order
-, pytestCheckHook
-, pythonOlder
-, sanic
-, sanic-testing
-, setuptools
-, starlette
-, structlog
-, tornado
-, urllib3
-, webob
-, wrapt
+{
+  lib,
+  stdenv,
+  aiohttp,
+  blinker,
+  buildPythonPackage,
+  certifi,
+  ecs-logging,
+  fetchFromGitHub,
+  httpx,
+  jinja2,
+  jsonschema,
+  logbook,
+  mock,
+  pytest-asyncio,
+  pytest-bdd,
+  pytest-localserver,
+  pytest-mock,
+  pytest-random-order,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  sanic,
+  sanic-testing,
+  setuptools,
+  starlette,
+  structlog,
+  tornado,
+  urllib3,
+  webob,
+  wrapt,
 }:
 
 buildPythonPackage rec {
   pname = "elastic-apm";
-  version = "6.21.3";
+  version = "6.22.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -40,14 +42,16 @@ buildPythonPackage rec {
     owner = "elastic";
     repo = "apm-agent-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ejix31cMyHOc/IGe4bRp/Nchm9Ps1cRYE8jIaIYlJjs=";
+    hash = "sha256-VuVx+QUiV4M/ebyv2uF/YZwfvcaPDJAEi55fXfoIttU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  pythonRelaxDeps = [ "wrapt" ];
+
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     blinker
     certifi
@@ -76,21 +80,19 @@ buildPythonPackage rec {
     webob
   ];
 
-  disabledTests = [
-    "elasticapm_client"
-  ];
+  disabledTests = [ "elasticapm_client" ];
 
-  disabledTestPaths = [
-    # Exclude tornado tests
-    "tests/contrib/asyncio/tornado/tornado_tests.py"
-  ] ++ lib.optionals stdenv.isDarwin [
-    # Flaky tests on Darwin
-    "tests/utils/threading_tests.py"
-  ];
+  disabledTestPaths =
+    [
+      # Exclude tornado tests
+      "tests/contrib/asyncio/tornado/tornado_tests.py"
+    ]
+    ++ lib.optionals stdenv.isDarwin [
+      # Flaky tests on Darwin
+      "tests/utils/threading_tests.py"
+    ];
 
-  pythonImportsCheck = [
-    "elasticapm"
-  ];
+  pythonImportsCheck = [ "elasticapm" ];
 
   meta = with lib; {
     description = "Python agent for the Elastic APM";
diff --git a/pkgs/development/python-modules/elasticsearch-dsl/default.nix b/pkgs/development/python-modules/elasticsearch-dsl/default.nix
index 263786e3e404b..53778ce0b4e1f 100644
--- a/pkgs/development/python-modules/elasticsearch-dsl/default.nix
+++ b/pkgs/development/python-modules/elasticsearch-dsl/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "elasticsearch-dsl";
-  version = "8.12.0";
+  version = "8.13.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-zjK4UpiIqXvpEVMedZCBbPOx9ggmPv9vt1qnEG4jPIg=";
+    sha256 = "sha256-cy/IEae7B2O8P7WJLk6nzwbTG7o1XoezM1PpLfrNebQ=";
   };
 
   propagatedBuildInputs = [ elasticsearch python-dateutil six ];
diff --git a/pkgs/development/python-modules/es-client/default.nix b/pkgs/development/python-modules/es-client/default.nix
index 0a1b0bad5ad67..3204da1d5a977 100644
--- a/pkgs/development/python-modules/es-client/default.nix
+++ b/pkgs/development/python-modules/es-client/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, certifi
-, click
-, ecs-logging
-, elastic-transport
-, elasticsearch8
-, fetchFromGitHub
-, hatchling
-, mock
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, requests
-, six
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  certifi,
+  click,
+  ecs-logging,
+  elastic-transport,
+  elasticsearch8,
+  fetchFromGitHub,
+  hatchling,
+  mock,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pyyaml,
+  requests,
+  six,
+  voluptuous,
 }:
 
 buildPythonPackage rec {
   pname = "es-client";
-  version = "8.12.8";
+  version = "8.13.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,17 +30,16 @@ buildPythonPackage rec {
     owner = "untergeek";
     repo = "es_client";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qv06zb3hIK/TeOZwtMXrV+n8mYSA/UKiyHvRyKEvZkQ=";
+    hash = "sha256-4v9SRWVG9p4kCob4C3by2JxNqX6L3yMHpbnMYEAM7A0=";
   };
 
   pythonRelaxDeps = true;
 
-  nativeBuildInputs = [
-    hatchling
-    pythonRelaxDepsHook
-  ];
+  build-system = [ hatchling ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     certifi
     click
     ecs-logging
@@ -57,9 +57,7 @@ buildPythonPackage rec {
     requests
   ];
 
-  pythonImportsCheck = [
-    "es_client"
-  ];
+  pythonImportsCheck = [ "es_client" ];
 
   disabledTests = [
     # Tests require network access
diff --git a/pkgs/development/python-modules/eval-type-backport/default.nix b/pkgs/development/python-modules/eval-type-backport/default.nix
new file mode 100644
index 0000000000000..1231d106fa58e
--- /dev/null
+++ b/pkgs/development/python-modules/eval-type-backport/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, setuptools-scm
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "eval-type-backport";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "alexmojaki";
+    repo = "eval_type_backport";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-EiYJQUnK10lqjyJ89KacbZ+ZZuOmkRQ9bqTFQFN2iMA=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = {
+    description = "Like `typing._eval_type`, but lets older Python versions use newer typing features.";
+    homepage = "https://github.com/alexmojaki/eval_type_backport";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ perchun ];
+  };
+}
diff --git a/pkgs/development/python-modules/exchangelib/default.nix b/pkgs/development/python-modules/exchangelib/default.nix
index 20e3cc1433a42..b61753c6fe492 100644
--- a/pkgs/development/python-modules/exchangelib/default.nix
+++ b/pkgs/development/python-modules/exchangelib/default.nix
@@ -1,34 +1,35 @@
-{ lib
-, backports-zoneinfo
-, buildPythonPackage
-, cached-property
-, defusedxml
-, dnspython
-, fetchFromGitHub
-, flake8
-, isodate
-, lxml
-, oauthlib
-, psutil
-, pygments
-, python-dateutil
-, pythonOlder
-, pytz
-, pyyaml
-, requests
-, requests-ntlm
-, requests-gssapi
-, requests-oauthlib
-, requests-kerberos
-, requests-mock
-, setuptools
-, tzdata
-, tzlocal
+{
+  lib,
+  backports-zoneinfo,
+  buildPythonPackage,
+  cached-property,
+  defusedxml,
+  dnspython,
+  fetchFromGitHub,
+  flake8,
+  isodate,
+  lxml,
+  oauthlib,
+  psutil,
+  pygments,
+  python-dateutil,
+  pythonOlder,
+  pytz,
+  pyyaml,
+  requests,
+  requests-ntlm,
+  requests-gssapi,
+  requests-oauthlib,
+  requests-kerberos,
+  requests-mock,
+  setuptools,
+  tzdata,
+  tzlocal,
 }:
 
 buildPythonPackage rec {
   pname = "exchangelib";
-  version = "5.2.0";
+  version = "5.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -37,12 +38,10 @@ buildPythonPackage rec {
     owner = "ecederstrand";
     repo = "exchangelib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-q45aYVyp75PUiqYSMSvSFMy3vaclv93QVkjKWVrxWc4=";
+    hash = "sha256-4XcJNbnBCaSrGwfgDAlo4wCOjlwq2rLjSxRXniuzdzk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     cached-property
@@ -58,18 +57,14 @@ buildPythonPackage rec {
     requests-kerberos
     tzdata
     tzlocal
-  ] ++ lib.optionals (pythonOlder "3.9") [
-    backports-zoneinfo
-  ];
+  ] ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo ];
 
   passthru.optional-dependencies = {
     complete = [
       requests-gssapi
       # requests-negotiate-sspi
     ];
-    kerberos = [
-      requests-gssapi
-    ];
+    kerberos = [ requests-gssapi ];
     # sspi = [
     #   requests-negotiate-sspi
     # ];
@@ -84,9 +79,7 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "exchangelib"
-  ];
+  pythonImportsCheck = [ "exchangelib" ];
 
   meta = with lib; {
     description = "Client for Microsoft Exchange Web Services (EWS)";
diff --git a/pkgs/development/python-modules/flask-admin/default.nix b/pkgs/development/python-modules/flask-admin/default.nix
index c4d686c014782..ae12e6353e2b8 100644
--- a/pkgs/development/python-modules/flask-admin/default.nix
+++ b/pkgs/development/python-modules/flask-admin/default.nix
@@ -1,15 +1,10 @@
 { lib
-, arrow
 , azure-storage-blob
 , boto
 , buildPythonPackage
-, colour
-, email-validator
-, enum34
 , fetchpatch
-, fetchPypi
+, fetchFromGitHub
 , flask
-, flask-babelex
 , flask-mongoengine
 , flask-sqlalchemy
 , geoalchemy2
@@ -19,10 +14,9 @@
 , pymongo
 , pytestCheckHook
 , pythonOlder
+, setuptools
 , shapely
 , sqlalchemy
-, sqlalchemy-citext
-, sqlalchemy-utils
 , wtf-peewee
 , wtforms
 }:
@@ -30,14 +24,15 @@
 buildPythonPackage rec {
   pname = "flask-admin";
   version = "1.6.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
-  src = fetchPypi {
-    pname = "Flask-Admin";
-    inherit version;
-    hash = "sha256-JMrir4MramEaAdfcNfQtJmwdbHWkJrhp2MskG3gjM2k=";
+  src = fetchFromGitHub {
+    owner = "flask-admin";
+    repo = "flask-admin";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-L8Q9uPpoen6ZvuF2bithCMSgc6X5khD1EqH2FJPspZc=";
   };
 
   patches = [
@@ -49,66 +44,51 @@ buildPythonPackage rec {
     })
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
     flask
     wtforms
   ];
 
-  passthru.optional-dependencies = {
-    aws = [
-      boto
-    ];
-    azure = [
-      azure-storage-blob
-    ];
+  optional-dependencies = {
+    aws = [ boto ];
+    azure = [ azure-storage-blob ];
   };
 
   nativeCheckInputs = [
-    arrow
-    colour
-    email-validator
-    flask-babelex
+    pillow
+    mongoengine
+    pymongo
+    wtf-peewee
+    sqlalchemy
     flask-mongoengine
     flask-sqlalchemy
+    # flask-babelex # broken and removed
+    shapely
     geoalchemy2
-    mongoengine
-    pillow
     psycopg2
-    pymongo
     pytestCheckHook
-    shapely
-    sqlalchemy
-    sqlalchemy-citext
-    sqlalchemy-utils
-    wtf-peewee
-  ];
-
-  disabledTests = [
-    # Incompatible with werkzeug 2.1
-    "test_mockview"
-    # Tests are outdated and don't work with peewee
-    "test_nested_flask_views"
-    "test_export_csv"
-    "test_list_row_actions"
-    "test_column_editable_list"
-    "test_column_filters"
-    "test_export_csv"
   ];
 
   disabledTestPaths = [
-    # Tests have additional requirements
-    "flask_admin/tests/geoa/test_basic.py"
-    "flask_admin/tests/mongoengine/test_basic.py"
-    "flask_admin/tests/pymongo/test_basic.py"
+    # depends on flask-babelex
     "flask_admin/tests/sqla/test_basic.py"
     "flask_admin/tests/sqla/test_form_rules.py"
-    "flask_admin/tests/sqla/test_inlineform.py"
+    "flask_admin/tests/sqla/test_multi_pk.py"
     "flask_admin/tests/sqla/test_postgres.py"
     "flask_admin/tests/sqla/test_translation.py"
-    # RuntimeError: Working outside of application context.
-    "flask_admin/tests/sqla/test_multi_pk.py"
-    # Broken test
+    # broken
+    "flask_admin/tests/sqla/test_inlineform.py"
+    "flask_admin/tests/test_model.py"
     "flask_admin/tests/fileadmin/test_fileadmin.py"
+    # requires database
+    "flask_admin/tests/geoa/test_basic.py"
+    "flask_admin/tests/pymongo/test_basic.py"
+    "flask_admin/tests/mongoengine/test_basic.py"
+    "flask_admin/tests/peeweemodel/test_basic.py"
   ];
 
   pythonImportsCheck = [
@@ -120,6 +100,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/flask-admin/flask-admin/";
     changelog = "https://github.com/flask-admin/flask-admin/releases/tag/v${version}";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ nickcao ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-paginate/default.nix b/pkgs/development/python-modules/flask-paginate/default.nix
index ec2082b0ec188..ee15641a9d5cb 100644
--- a/pkgs/development/python-modules/flask-paginate/default.nix
+++ b/pkgs/development/python-modules/flask-paginate/default.nix
@@ -1,15 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "flask-paginate";
-  version = "2024.3.28";
-  format = "setuptools";
+  version = "2024.4.12";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -17,24 +19,18 @@ buildPythonPackage rec {
     owner = "lixxu";
     repo = "flask-paginate";
     rev = "refs/tags/v${version}";
-    hash = "sha256-HqjgmqRH83N+CbTnkkEJnuo+c+n5wLwdsPXyY2i5XRg=";
+    hash = "sha256-YaAgl+iuoXB0eWVzhmNq2UTOpM/tHfDISIb9CyaXiuA=";
   };
 
-  propagatedBuildInputs = [
-    flask
-  ];
+  build-system = [ setuptools ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  dependencies = [ flask ];
 
-  pythonImportsCheck = [
-    "flask_paginate"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pytestFlagsArray = [
-    "tests/tests.py"
-  ];
+  pythonImportsCheck = [ "flask_paginate" ];
+
+  pytestFlagsArray = [ "tests/tests.py" ];
 
   meta = with lib; {
     description = "Pagination support for Flask";
diff --git a/pkgs/development/python-modules/fontbakery/default.nix b/pkgs/development/python-modules/fontbakery/default.nix
index 15404df86d814..3076e6a4c469c 100644
--- a/pkgs/development/python-modules/fontbakery/default.nix
+++ b/pkgs/development/python-modules/fontbakery/default.nix
@@ -15,10 +15,12 @@
 , font-v
 , freetype-py
 , gflanguages
+, gfsubsets
 , git
 , glyphsets
 , lxml
 , installShellFiles
+, jinja2
 , munkres
 , opentypespec
 , ots-python
@@ -32,6 +34,7 @@
 , requests
 , requests-mock
 , rich
+, setuptools
 , setuptools-scm
 , shaperglot
 , stringbrewer
@@ -45,23 +48,15 @@
 buildPythonPackage rec {
   pname = "fontbakery";
   version = "0.11.2";
-  format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-61EXlf+d5kJeUF41OEnGNLaOcSvFWUDFgarVvHQZYmw=";
   };
 
-  patches = [
-    # Mock HTTP requests in tests (note we still have to skip some below)
-    # https://github.com/googlefonts/fontbakery/pull/4124
-    (fetchpatch {
-      url = "https://github.com/fonttools/fontbakery/pull/4124.patch";
-      hash = "sha256-NXuC2+TtxpHYMdd0t+cF0FJ3lrh4exP5yxspEasKKd0=";
-    })
-  ];
+  pyproject = true;
 
-  propagatedBuildInputs = [
+  dependencies = [
     axisregistry
     babelfont
     beautifulsoup4
@@ -74,8 +69,10 @@ buildPythonPackage rec {
     font-v
     freetype-py
     gflanguages
+    gfsubsets
     glyphsets
     lxml
+    jinja2
     munkres
     ots-python
     opentypespec
@@ -93,10 +90,13 @@ buildPythonPackage rec {
     vharfbuzz
     ufo2ft
   ];
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
   nativeBuildInputs = [
     installShellFiles
     pythonRelaxDepsHook
-    setuptools-scm
   ];
 
   pythonRelaxDeps = [
@@ -125,7 +125,14 @@ buildPythonPackage rec {
   '';
   disabledTests = [
     # These require network access:
+    "test_check_description_broken_links"
+    "test_check_description_family_update"
+    "test_check_metadata_designer_profiles"
+    "test_check_metadata_has_tags"
+    "test_check_metadata_includes_production_subsets"
+    "test_check_vertical_metrics"
     "test_check_vertical_metrics_regressions"
+    "test_check_cjk_vertical_metrics"
     "test_check_cjk_vertical_metrics_regressions"
     "test_check_fontbakery_version_live_apis"
   ];
diff --git a/pkgs/development/python-modules/forecast-solar/default.nix b/pkgs/development/python-modules/forecast-solar/default.nix
index 9f4b199c56718..4e329a100c8e4 100644
--- a/pkgs/development/python-modules/forecast-solar/default.nix
+++ b/pkgs/development/python-modules/forecast-solar/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
+, setuptools
 , pythonOlder
 , aiodns
 , aiohttp
@@ -10,20 +11,23 @@
 
 buildPythonPackage rec {
   pname = "forecast-solar";
-  version = "3.0.0";
-
-  format = "setuptools";
+  version = "3.1.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "home-assistant-libs";
     repo = "forecast_solar";
-    rev = "refs/tags/${version}";
-    hash = "sha256-Go0DF2qyVyGVYEeoEEuxsSR9Ge8Pg4S77zM1HL83ELc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-iol0XtfPZI95o/uEyBcXgeQjcfl2kI+4mugtywa6BXI=";
   };
 
-  PACKAGE_VERSION = version;
+  build-system = [
+    setuptools
+  ];
+
+  env.PACKAGE_VERSION = version;
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiodns
     aiohttp
   ] ++ lib.optionals (pythonOlder "3.9") [
@@ -37,6 +41,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
+    changelog = "https://github.com/home-assistant-libs/forecast_solar/releases/tag/v${version}";
     description = "Asynchronous Python client for getting forecast solar information";
     homepage = "https://github.com/home-assistant-libs/forecast_solar";
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/fyta-cli/default.nix b/pkgs/development/python-modules/fyta-cli/default.nix
new file mode 100644
index 0000000000000..7e0b2971be508
--- /dev/null
+++ b/pkgs/development/python-modules/fyta-cli/default.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "fyta-cli";
+  version = "0.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "dontinelli";
+    repo = "fyta_cli";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ThxC+s0vkvFQw9FKMWO+cHJB1ci+USdxQa4PRqHrKLM=";
+  };
+
+  build-system = [ hatchling ];
+
+  dependencies = [ aiohttp ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "fyta_cli" ];
+
+  meta = with lib; {
+    description = "Module to access the FYTA API";
+    homepage = "https://github.com/dontinelli/fyta_cli";
+    changelog = "https://github.com/dontinelli/fyta_cli/releases/tag/v${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/garminconnect/default.nix b/pkgs/development/python-modules/garminconnect/default.nix
index 3e039ec5aac9d..57d4b58136a5e 100644
--- a/pkgs/development/python-modules/garminconnect/default.nix
+++ b/pkgs/development/python-modules/garminconnect/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, garth
-, pdm-backend
-, pythonOlder
-, requests
-, withings-sync
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  garth,
+  pdm-backend,
+  pythonOlder,
+  requests,
+  withings-sync,
 }:
 
 buildPythonPackage rec {
   pname = "garminconnect";
-  version = "0.2.15";
+  version = "0.2.16";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -19,14 +20,12 @@ buildPythonPackage rec {
     owner = "cyberjunky";
     repo = "python-garminconnect";
     rev = "refs/tags/${version}";
-    hash = "sha256-N6PJLsT8BnjGaOLeohDo3ACOyVb/iOCw3LAXZMjwoyw=";
+    hash = "sha256-mjFDM59fF9HpkO0a8fVW+dXYmjFxu7gn+rOrnTgN39s=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     garth
     requests
     withings-sync
@@ -35,9 +34,7 @@ buildPythonPackage rec {
   # Tests require a token
   doCheck = false;
 
-  pythonImportsCheck = [
-    "garminconnect"
-  ];
+  pythonImportsCheck = [ "garminconnect" ];
 
   meta = with lib; {
     description = "Garmin Connect Python API wrapper";
diff --git a/pkgs/development/python-modules/gdb-pt-dump/default.nix b/pkgs/development/python-modules/gdb-pt-dump/default.nix
new file mode 100644
index 0000000000000..5687828e9e503
--- /dev/null
+++ b/pkgs/development/python-modules/gdb-pt-dump/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "gdb-pt-dump";
+  version = "0-unstable-2024-04-01";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "martinradev";
+    repo = "gdb-pt-dump";
+    rev = "50227bda0b6332e94027f811a15879588de6d5cb";
+    hash = "sha256-yiP3KY1oDwhy9DmNQEht/ryys9vpgkFS+EJcSA6R+cI=";
+  };
+
+  build-system = [ poetry-core ];
+
+  pythonImportsCheck = [ "pt" ];
+
+  meta = with lib; {
+    description = "GDB script to enhance debugging of a QEMU-based virtual machine";
+    homepage = "https://github.com/martinradev/gdb-pt-dump";
+    license = licenses.mit;
+    maintainers = with maintainers; [ msanft ];
+  };
+}
diff --git a/pkgs/development/python-modules/gekko/default.nix b/pkgs/development/python-modules/gekko/default.nix
index 94d07a88b5951..24fd7423b8c39 100644
--- a/pkgs/development/python-modules/gekko/default.nix
+++ b/pkgs/development/python-modules/gekko/default.nix
@@ -1,35 +1,37 @@
-{ fetchPypi
-, lib
-, buildPythonPackage
-, setuptools
-, numpy
-, wheel
-,
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  numpy,
+  pythonOlder,
+  setuptools,
 }:
+
 buildPythonPackage rec {
   pname = "gekko";
-  version = "1.1.0";
+  version = "1.1.1";
   pyproject = true;
 
+  disabled = pythonOlder "3.7";
+
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-dImIf5zR6SCztgrFbaRrz4nLl1ZzJIyPLDNGIVLoOdg=";
+    hash = "sha256-xc6NfPCvkEYjUG82QmFqDuu02QNwKfoS6DDpkdaMWJ8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [ "gekko" ];
+  dependencies = [ numpy ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  # Module has no tests
+  doCHeck = false;
+
+  pythonImportsCheck = [ "gekko" ];
 
   meta = with lib; {
+    description = "Module for machine learning and optimization";
     homepage = "https://github.com/BYU-PRISM/GEKKO";
-    description = "A Python package for machine learning and optimization";
+    changelog = "https://github.com/BYU-PRISM/GEKKO/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ ayes-web ];
   };
diff --git a/pkgs/development/python-modules/gflanguages/default.nix b/pkgs/development/python-modules/gflanguages/default.nix
index 2e1e2ab36fdea..9a3f77f957c02 100644
--- a/pkgs/development/python-modules/gflanguages/default.nix
+++ b/pkgs/development/python-modules/gflanguages/default.nix
@@ -5,6 +5,7 @@
 , pytestCheckHook
 , pythonOlder
 , pythonRelaxDepsHook
+, setuptools
 , setuptools-scm
 , uharfbuzz
 , youseedee
@@ -12,16 +13,17 @@
 
 buildPythonPackage rec {
   pname = "gflanguages";
-  version = "5.0.4";
-  format = "setuptools";
+  version = "0.5.17";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-AGXpg9EhwdhrcbdcHqz2v9TLaWH1F5gr0QhSuEN2GDA=";
+    hash = "sha256-dScgRQ6usjSqV0FqDyP+KGvHL06wlTFVcO+MmZ2NMAs=";
   };
 
+  pyproject = true;
+
   # Relax the dependency on protobuf 3. Other packages in the Google Fonts
   # ecosystem have begun upgrading from protobuf 3 to protobuf 4,
   # so we need to use protobuf 4 here as well to avoid a conflict
@@ -30,11 +32,12 @@ buildPythonPackage rec {
     "protobuf"
   ];
 
-  nativeBuildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     protobuf
   ];
 
diff --git a/pkgs/development/python-modules/gfsubsets/default.nix b/pkgs/development/python-modules/gfsubsets/default.nix
new file mode 100644
index 0000000000000..31aa36151644b
--- /dev/null
+++ b/pkgs/development/python-modules/gfsubsets/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fonttools
+, importlib-resources
+, setuptools
+, setuptools-scm
+, youseedee
+}:
+
+buildPythonPackage rec {
+  pname = "gfsubsets";
+  version = "2024.2.5";
+  gitTag = "v2024.02.05";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-g9QxLa3B1MMTs+jmj4CyJySZRU0zoFNYdbOZwHjKPaQ=";
+  };
+
+  pyproject = true;
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
+    fonttools
+    importlib-resources
+    youseedee
+  ];
+
+  # Package has no unit tests.
+  doCheck = false;
+  pythonImportsCheck = [
+    "gfsubsets"
+  ];
+
+  meta = with lib; {
+    description = "Codepoint definitions for the Google Fonts subsetter";
+    homepage = "https://github.com/googlefonts/nam-files";
+    changelog = "https://github.com/googlefonts/nam-files/releases/tag/${gitTag}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ danc86 ];
+  };
+}
diff --git a/pkgs/development/python-modules/glyphsets/0001-relax-setuptools-scm-dep.patch b/pkgs/development/python-modules/glyphsets/0001-relax-setuptools-scm-dep.patch
deleted file mode 100644
index 96a4047c5cedf..0000000000000
--- a/pkgs/development/python-modules/glyphsets/0001-relax-setuptools-scm-dep.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From de2e02a41b11a708d58dfd1e24d335b8882dd7bd Mon Sep 17 00:00:00 2001
-From: Dan Callaghan <djc@djc.id.au>
-Date: Sun, 23 Apr 2023 12:15:47 +1000
-Subject: [PATCH] relax setuptools-scm dep
-
-
-diff --git a/setup.py b/setup.py
-index 2c122a7..42f9b61 100644
---- a/setup.py
-+++ b/setup.py
-@@ -55,7 +55,7 @@
-         'Programming Language :: Python :: 3'
-     ],
-     python_requires=">=3.7",
--    setup_requires=['setuptools_scm>=4,<6.1'],
-+    setup_requires=['setuptools_scm'],
-     install_requires=[
-         'setuptools',
-         'FontTools[ufo]',
--- 
-2.38.4
-
diff --git a/pkgs/development/python-modules/glyphsets/default.nix b/pkgs/development/python-modules/glyphsets/default.nix
index ac1625471011c..f59e7f09607d7 100644
--- a/pkgs/development/python-modules/glyphsets/default.nix
+++ b/pkgs/development/python-modules/glyphsets/default.nix
@@ -3,8 +3,10 @@
 , fetchPypi
 , defcon
 , fonttools
+, gflanguages
 , glyphslib
 , pytestCheckHook
+, requests
 , setuptools
 , setuptools-scm
 , unicodedata2
@@ -13,29 +15,23 @@
 buildPythonPackage rec {
   pname = "glyphsets";
   version = "0.6.14";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-lMRgchadgKyfFLw6ZF1sJAKBAK75zmw77L34MW9p7TI=";
   };
 
-  patches = [
-    # Upstream has a needlessly strict version range for setuptools_scm, our
-    # setuptools-scm is newer. We can't use pythonRelaxDepsHook for this
-    # because it's in setup_requires which means we'll fail the requirement
-    # before pythonRelaxDepsHook can run.
-    ./0001-relax-setuptools-scm-dep.patch
-  ];
-
-  propagatedBuildInputs = [
+  dependencies = [
     defcon
     fonttools
+    gflanguages
     glyphslib
+    requests
     setuptools
     unicodedata2
   ];
-  nativeBuildInputs = [
+  build-system = [
     setuptools-scm
   ];
 
@@ -46,6 +42,10 @@ buildPythonPackage rec {
   preCheck = ''
     export PATH="$out/bin:$PATH"
   '';
+  disabledTests = [
+    # This "test" just tries to connect to PyPI and look for newer releases. Not needed.
+    "test_dependencies"
+  ];
 
   meta = with lib; {
     description = "Google Fonts glyph set metadata";
diff --git a/pkgs/development/python-modules/goodwe/default.nix b/pkgs/development/python-modules/goodwe/default.nix
index 26387b8760181..7ad1ad90b9eed 100644
--- a/pkgs/development/python-modules/goodwe/default.nix
+++ b/pkgs/development/python-modules/goodwe/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "goodwe";
-  version = "0.3.1";
+  version = "0.3.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +18,7 @@ buildPythonPackage rec {
     owner = "marcelblijleven";
     repo = "goodwe";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6KCIfCyViiBU/cez9m34FMPkTUTkmEYc/e/xYqOyJLY=";
+    hash = "sha256-0N2aimDj9HF0y1pitg7E2OzGk4o4kopSlvXy9x6jplk=";
   };
 
   postPatch = ''
@@ -26,18 +27,11 @@ buildPythonPackage rec {
       --replace-fail "version: file: VERSION" "version = ${version}"
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  pythonImportsCheck = [
-    "goodwe"
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "goodwe" ];
 
   meta = with lib; {
     description = "Python library for connecting to GoodWe inverter";
diff --git a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
index 83c296a5294b0..afceccaf270ff 100644
--- a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
+++ b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix
@@ -1,31 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-api-core
-, grpc-google-iam-v1
-, proto-plus
-, protobuf
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-api-core,
+  grpc-google-iam-v1,
+  proto-plus,
+  protobuf,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-securitycenter";
-  version = "1.30.0";
+  version = "1.30.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Tq+Uicfk1SqvisYEdBfREngICvWP8NyFJy4hJp9qD8Y=";
+    hash = "sha256-99yI4stPZ0FSOgypdOoUJn85JmzRS+VUHNAh4Chak74=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     grpc-google-iam-v1
diff --git a/pkgs/development/python-modules/google-cloud-speech/default.nix b/pkgs/development/python-modules/google-cloud-speech/default.nix
index 1fc4624e85091..2780b5bdfc7fe 100644
--- a/pkgs/development/python-modules/google-cloud-speech/default.nix
+++ b/pkgs/development/python-modules/google-cloud-speech/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-speech";
-  version = "2.25.1";
+  version = "2.26.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-W3RwqUn1p3xAURw2ZKwzn+CkcESC+bazorpVS30rLNw=";
+    hash = "sha256-0xVqeElq6s/0A0KUCKGxPv6ZbabwVEolVnkErYAWcdU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/google-generativeai/default.nix b/pkgs/development/python-modules/google-generativeai/default.nix
index dfcc2e06034a6..a63b61ca09c21 100644
--- a/pkgs/development/python-modules/google-generativeai/default.nix
+++ b/pkgs/development/python-modules/google-generativeai/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, google-ai-generativelanguage
-, google-api-core
-, google-auth
-, protobuf
-, pythonOlder
-, pythonRelaxDepsHook
-, pydantic
-, setuptools
-, tqdm
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  google-ai-generativelanguage,
+  google-api-core,
+  google-api-python-client,
+  google-auth,
+  protobuf,
+  pydantic,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  setuptools,
+  tqdm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "google-generativeai";
-  version = "0.4.1";
+  version = "0.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,22 +26,20 @@ buildPythonPackage rec {
     owner = "google";
     repo = "generative-ai-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+PRsxwy8Um6wCku9s7h8ERKEhcFsomEYAwYg+vpAGyg=";
+    hash = "sha256-WFkzqsiYADrxVUHClBHY0+oYz2sF52DrVblHT+94QYw=";
   };
 
-  pythonRelaxDeps = [
-    "google-ai-generativelanguage"
-  ];
+  pythonRelaxDeps = [ "google-ai-generativelanguage" ];
 
-  build-system = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     google-ai-generativelanguage
-    google-auth
     google-api-core
+    google-api-python-client
+    google-auth
     protobuf
     pydantic
     tqdm
@@ -49,9 +49,7 @@ buildPythonPackage rec {
   # Issue with the google.ai module. Check with the next release
   doCheck = false;
 
-  pythonImportsCheck = [
-    "google.generativeai"
-  ];
+  pythonImportsCheck = [ "google.generativeai" ];
 
   meta = with lib; {
     description = "Python client library for Google's large language model PaLM API";
diff --git a/pkgs/development/python-modules/gradio-pdf/default.nix b/pkgs/development/python-modules/gradio-pdf/default.nix
index a029f427ca2ec..caa3ddbaa6b80 100644
--- a/pkgs/development/python-modules/gradio-pdf/default.nix
+++ b/pkgs/development/python-modules/gradio-pdf/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "gradio-pdf";
-  version = "0.0.5";
+  version = "0.0.7";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "gradio_pdf";
     inherit version;
-    hash = "sha256-yHISYpkZ5YgUBxCfu2rw3R+g9t4h1WogXXCuBiV92Vk=";
+    hash = "sha256-3OJiBnp79woCUtiNiaePwfJCAS42WYkv9GFeScesFv8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/graphene-django/default.nix b/pkgs/development/python-modules/graphene-django/default.nix
index 64d07a538429b..e2c0ea0fdd7ae 100644
--- a/pkgs/development/python-modules/graphene-django/default.nix
+++ b/pkgs/development/python-modules/graphene-django/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "graphene-django";
-  version = "3.2.0";
+  version = "3.2.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "graphql-python";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-SOLY3NogovwQ5gr2gnvOcROWpbk9p134wI2f9FKr+5M=";
+    hash = "sha256-wzU9U4mYvBf43qBQi20ewKtmw1eFskQk+nnsdaM7HQM=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/hahomematic/default.nix b/pkgs/development/python-modules/hahomematic/default.nix
index 1ff20bf488738..dc31b0a9af321 100644
--- a/pkgs/development/python-modules/hahomematic/default.nix
+++ b/pkgs/development/python-modules/hahomematic/default.nix
@@ -13,37 +13,35 @@
 , voluptuous
 , websocket-client
 , xmltodict
-, wheel
 }:
 
 buildPythonPackage rec {
   pname = "hahomematic";
-  version = "2024.3.1";
+  version = "2024.4.6";
   pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.12";
 
   src = fetchFromGitHub {
     owner = "danielperna84";
     repo = "hahomematic";
     rev = "refs/tags/${version}";
-    hash = "sha256-/ulqUyplNu8YTHJKcfNPYzyzPvGkLFtoJDu5SqvfQrs=";
+    hash = "sha256-w+sSaadbbfc1cNCTx5YYIm8eAKRQxyqZZKK2QPFZv7Y=";
   };
 
   __darwinAllowLocalNetworking = true;
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace-fail "setuptools~=69.1.0" "setuptools" \
-      --replace-fail "wheel~=0.42.0" "wheel"
+      --replace-fail "setuptools~=69.2.0" "setuptools" \
+      --replace-fail "wheel~=0.43.0" "wheel"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     orjson
     python-slugify
@@ -64,8 +62,8 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Python module to interact with HomeMatic devices";
     homepage = "https://github.com/danielperna84/hahomematic";
-    changelog = "https://github.com/danielperna84/hahomematic/releases/tag/${version}";
-    license = with licenses; [ mit ];
+    changelog = "https://github.com/danielperna84/hahomematic/blob/${src.rev}/changelog.md";
+    license = licenses.mit;
     maintainers = with maintainers; [ dotlambda fab ];
   };
 }
diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix
index 9ee4c0e3f9686..ac32e43cf9322 100644
--- a/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, acme
-, aiohttp
-, atomicwrites-homeassistant
-, attrs
-, buildPythonPackage
-, ciso8601
-, cryptography
-, fetchFromGitHub
-, pycognito
-, pyjwt
-, pytest-aiohttp
-, pytest-timeout
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, setuptools
-, snitun
-, syrupy
-, xmltodict
+{
+  lib,
+  acme,
+  aiohttp,
+  atomicwrites-homeassistant,
+  attrs,
+  buildPythonPackage,
+  ciso8601,
+  cryptography,
+  fetchFromGitHub,
+  pycognito,
+  pyjwt,
+  pytest-aiohttp,
+  pytest-timeout,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  setuptools,
+  snitun,
+  syrupy,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "hass-nabucasa";
-  version = "0.79.0";
+  version = "0.80.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -31,19 +32,16 @@ buildPythonPackage rec {
     owner = "nabucasa";
     repo = "hass-nabucasa";
     rev = "refs/tags/${version}";
-    hash = "sha256-7VhafefF7imvnhdFo6K+18h5kmXvIatKerJ+Qn5zwdQ=";
+    hash = "sha256-8KxnS6LTK077/hr81JOiOj8GaNWBXO8XlvpYBm/sZbI=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    pythonRelaxDepsHook
-  ];
+  pythonRelaxDeps = [ "acme" ];
 
-  pythonRelaxDeps = [
-    "acme"
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     acme
     aiohttp
     atomicwrites-homeassistant
@@ -63,13 +61,11 @@ buildPythonPackage rec {
     xmltodict
   ];
 
-  pythonImportsCheck = [
-    "hass_nabucasa"
-  ];
+  pythonImportsCheck = [ "hass_nabucasa" ];
 
   meta = with lib; {
-    homepage = "https://github.com/NabuCasa/hass-nabucasa";
     description = "Python module for the Home Assistant cloud integration";
+    homepage = "https://github.com/NabuCasa/hass-nabucasa";
     changelog = "https://github.com/NabuCasa/hass-nabucasa/releases/tag/${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ Scriptkiddi ];
diff --git a/pkgs/development/python-modules/herepy/default.nix b/pkgs/development/python-modules/herepy/default.nix
index 07a8aec79c75d..ac7ad29191391 100644
--- a/pkgs/development/python-modules/herepy/default.nix
+++ b/pkgs/development/python-modules/herepy/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "herepy";
-  version = "3.6.1";
+  version = "3.6.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "abdullahselek";
     repo = "HerePy";
     rev = "refs/tags/${version}";
-    hash = "sha256-DOtlXoVelTGY/fKkHW/K0d0w52Q7N91Whi9AHG4tRZQ=";
+    hash = "sha256-+DI9wjYVAUKdGEXWhbV9Xp0oOazcB+sS89ugIZuZM2w=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/hikari/default.nix b/pkgs/development/python-modules/hikari/default.nix
new file mode 100644
index 0000000000000..e76d7780c0bfa
--- /dev/null
+++ b/pkgs/development/python-modules/hikari/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, pythonRelaxDepsHook
+, pytest-runner
+, aiohttp
+, attrs
+, multidict
+, colorlog
+, pynacl
+, pytest-cov
+, pytest-randomly
+, pytest-asyncio
+, mock
+}:
+buildPythonPackage rec {
+  pname = "hikari";
+  version = "2.0.0.dev124";
+
+  src = fetchFromGitHub {
+    owner = "hikari-py";
+    repo = "hikari";
+    rev = version;
+    hash = "sha256-zDgU3Ol/I3YNnwXm+aBh20KwonW746p5TObuwuWORog=";
+    # The git commit is part of the `hikari.__git_sha1__` original output;
+    # leave that output the same in nixpkgs. Use the `.git` directory
+    # to retrieve the commit SHA, and remove the directory afterwards,
+    # since it is not needed after that.
+    leaveDotGit = true;
+    postFetch = ''
+      cd "$out"
+      git rev-parse HEAD > $out/COMMIT
+      find "$out" -name .git -print0 | xargs -0 rm -rf
+    '';
+  };
+
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    attrs
+    multidict
+    colorlog
+  ];
+
+  pythonRelaxDeps = true;
+
+  passthru.optional-dependencies = {
+    server = [ pynacl ];
+  };
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-runner
+    pytest-asyncio
+    pytest-cov
+    pytest-randomly
+    mock
+  ];
+
+  pythonImportChecks = [ "hikari" ];
+
+  disabled = pythonOlder "3.7";
+
+  postPatch = ''
+    substituteInPlace hikari/_about.py --replace "__git_sha1__: typing.Final[str] = \"HEAD\"" "__git_sha1__: typing.Final[str] = \"$(cat $src/COMMIT)\""
+  '';
+
+  meta = with lib; {
+    description = "Discord API wrapper for Python written with asyncio";
+    homepage = "https://www.hikari-py.dev/";
+    changelog = "https://github.com/hikari-py/hikari/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ tomodachi94 ];
+  };
+}
diff --git a/pkgs/development/python-modules/homeassistant-bring-api/default.nix b/pkgs/development/python-modules/homeassistant-bring-api/default.nix
deleted file mode 100644
index 2912e26f5c80c..0000000000000
--- a/pkgs/development/python-modules/homeassistant-bring-api/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, setuptools
-, pythonOlder
-}:
-
-buildPythonPackage rec {
-  pname = "homeassistant-bring-api";
-  version = "0.5.6";
-  pyproject = true;
-
-  disabled = pythonOlder "3.8";
-
-  src = fetchFromGitHub {
-    owner = "miaucl";
-    repo = "homeassistant-bring-api";
-    rev = "refs/tags/${version}";
-    hash = "sha256-vfc4xKLeGF2FuBFwqU99qbkUDBK5Uz66S4F2ODRDPa8=";
-  };
-
-  nativeBuildInputs = [
-    setuptools
-  ];
-
-  propagatedBuildInputs = [
-    aiohttp
-  ];
-
-  # Module has no tests
-  doCheck = false;
-
-  pythonImportsCheck = [
-    "homeassistant_bring_api"
-  ];
-
-  meta = with lib; {
-    description = "Module to access the Bring! shopping lists API with Home Assistant";
-    homepage = "https://github.com/miaucl/homeassistant-bring-api";
-    changelog = "https://github.com/miaucl/homeassistant-bring-api/blob/${version}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/python-modules/htmldate/default.nix b/pkgs/development/python-modules/htmldate/default.nix
index 68602cb2cdc9f..7ba14ca5e7147 100644
--- a/pkgs/development/python-modules/htmldate/default.nix
+++ b/pkgs/development/python-modules/htmldate/default.nix
@@ -1,62 +1,59 @@
-{ lib
-, backports-datetime-fromisoformat
-, buildPythonPackage
-, charset-normalizer
-, dateparser
-, faust-cchardet
-, fetchPypi
-, lxml
-, pytestCheckHook
-, python-dateutil
-, pythonOlder
-, setuptools
-, urllib3
+{
+  lib,
+  backports-datetime-fromisoformat,
+  buildPythonPackage,
+  charset-normalizer,
+  dateparser,
+  faust-cchardet,
+  fetchPypi,
+  lxml,
+  pytestCheckHook,
+  python-dateutil,
+  pythonOlder,
+  setuptools,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "htmldate";
-  version = "1.8.0";
+  version = "1.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+Ux9AX9Coc9CLlp8XvEMrLridohjFPJ6mGRkYn8wuxU=";
+    hash = "sha256-yvFobPdcYd0fBh7eXXpG51mxXV+Zh82OE8jEI3URJj0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     charset-normalizer
     dateparser
     lxml
     python-dateutil
     urllib3
-  ] ++ lib.optionals (pythonOlder "3.7") [
-    backports-datetime-fromisoformat
-  ];
+  ] ++ lib.optionals (pythonOlder "3.7") [ backports-datetime-fromisoformat ];
 
   passthru.optional-dependencies = {
-    speed = [
-      faust-cchardet
-      urllib3
-    ] ++ lib.optionals (pythonOlder "3.11") [
-      backports-datetime-fromisoformat
-    ] ++ urllib3.optional-dependencies.brotli;
-    all = [
-      faust-cchardet
-      urllib3
-    ] ++ lib.optionals (pythonOlder "3.11") [
-      backports-datetime-fromisoformat
-    ] ++ urllib3.optional-dependencies.brotli;
+    speed =
+      [
+        faust-cchardet
+        urllib3
+      ]
+      ++ lib.optionals (pythonOlder "3.11") [ backports-datetime-fromisoformat ]
+      ++ urllib3.optional-dependencies.brotli;
+    all =
+      [
+        faust-cchardet
+        urllib3
+      ]
+      ++ lib.optionals (pythonOlder "3.11") [ backports-datetime-fromisoformat ]
+      ++ urllib3.optional-dependencies.brotli;
   };
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   # disable tests that require an internet connection
   disabledTests = [
@@ -65,15 +62,13 @@ buildPythonPackage rec {
     "test_download"
   ];
 
-  pythonImportsCheck = [
-    "htmldate"
-  ];
+  pythonImportsCheck = [ "htmldate" ];
 
   meta = with lib; {
     description = "Module for the extraction of original and updated publication dates from URLs and web pages";
     homepage = "https://htmldate.readthedocs.io";
     changelog = "https://github.com/adbar/htmldate/blob/v${version}/CHANGELOG.md";
-    license = licenses.gpl3Plus;
+    license = licenses.asl20;
     maintainers = with maintainers; [ jokatzke ];
     mainProgram = "htmldate";
   };
diff --git a/pkgs/development/python-modules/httpsig/default.nix b/pkgs/development/python-modules/httpsig/default.nix
index f1529bf212da2..fe7ed11c2fffe 100644
--- a/pkgs/development/python-modules/httpsig/default.nix
+++ b/pkgs/development/python-modules/httpsig/default.nix
@@ -1,30 +1,38 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, setuptools
 , setuptools-scm
 , pycryptodome
 , requests
 , six
+, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "httpsig";
   version = "1.3.0";
-  format = "setuptools";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1rkc3zwsq53rjsmc47335m4viljiwdbmw3y2zry4z70j8q1dbmki";
+    hash = "sha256-cdbVAkYSnE98/sIPXlfjUdK4SS1jHMKqlnkUrPkfbOY=";
   };
 
-  buildInputs = [
+  build-system = [
+    setuptools
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     pycryptodome
     requests
     six
+    setuptools
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
   ];
 
   pythonImportsCheck = [ "httpsig" ];
diff --git a/pkgs/development/python-modules/hwi/default.nix b/pkgs/development/python-modules/hwi/default.nix
index 0f4c21e86e7c9..311036b388247 100644
--- a/pkgs/development/python-modules/hwi/default.nix
+++ b/pkgs/development/python-modules/hwi/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "hwi";
-  version = "2.4.0";
+  version = "3.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "bitcoin-core";
     repo = "HWI";
     rev = "refs/tags/${version}";
-    hash = "sha256-a1ppYDuY7CtNrKSvuAofS79nvDaYUMIm4FCHiiQYrtQ=";
+    hash = "sha256-hpMH3Zy3/TTBYUukJQZw63f0KuE3O9G2aYcGdL6Q3eM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/indexed-bzip2/default.nix b/pkgs/development/python-modules/indexed-bzip2/default.nix
index 53788b566e529..d15e075e5d57e 100644
--- a/pkgs/development/python-modules/indexed-bzip2/default.nix
+++ b/pkgs/development/python-modules/indexed-bzip2/default.nix
@@ -1,13 +1,15 @@
 { lib
 , buildPythonPackage
+, cython
 , fetchPypi
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "indexed_bzip2";
   version = "1.6.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -16,6 +18,8 @@ buildPythonPackage rec {
     hash = "sha256-3HUiigZR91/nbOAMOuSHGcPtqkkEaj3VepyMhmKOHpI=";
   };
 
+  nativeBuildInputs = [ cython setuptools ];
+
   # has no tests
   doCheck = false;
 
@@ -27,6 +31,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/mxmlnkn/indexed_bzip2";
     license = licenses.mit; # dual MIT and asl20, https://internals.rust-lang.org/t/rationale-of-apache-dual-licensing/8952
     maintainers = with lib.maintainers; [ mxmlnkn ];
-    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/indexed-gzip/default.nix b/pkgs/development/python-modules/indexed-gzip/default.nix
index 7b0bf177bf199..bfe9e894ce5fb 100644
--- a/pkgs/development/python-modules/indexed-gzip/default.nix
+++ b/pkgs/development/python-modules/indexed-gzip/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
+, setuptools
 , cython
 , zlib
 }:
@@ -9,7 +10,7 @@
 buildPythonPackage rec {
   pname = "indexed_gzip";
   version = "1.8.7";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,7 +19,7 @@ buildPythonPackage rec {
     hash = "sha256-dryq1LLC+lVHj/i+m60ubGGItlX5/clCnwNGrexI92I=";
   };
 
-  nativeBuildInputs = [ cython ];
+  nativeBuildInputs = [ cython setuptools ];
 
   buildInputs = [ zlib ];
 
@@ -32,6 +33,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/pauldmccarthy/indexed_gzip";
     license = licenses.zlib;
     maintainers = with lib.maintainers; [ mxmlnkn ];
-    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/indexed-zstd/default.nix b/pkgs/development/python-modules/indexed-zstd/default.nix
index f9d643c8ff497..88cb6f05930ae 100644
--- a/pkgs/development/python-modules/indexed-zstd/default.nix
+++ b/pkgs/development/python-modules/indexed-zstd/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
+, setuptools
 , cython
 , zstd
 }:
@@ -9,7 +10,7 @@
 buildPythonPackage rec {
   pname = "indexed_zstd";
   version = "1.6.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
@@ -18,10 +19,12 @@ buildPythonPackage rec {
     hash = "sha256-icCerrv6ihBjSTS4Fsw7qhoA5ha8yegfMVRiIOhTvvY=";
   };
 
-  nativeBuildInputs = [ cython ];
+  nativeBuildInputs = [ cython setuptools ];
 
   buildInputs = [ zstd.dev ];
 
+  postPatch = "cython -3 --cplus indexed_zstd/indexed_zstd.pyx";
+
   # has no tests
   doCheck = false;
 
@@ -32,6 +35,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/martinellimarco/indexed_zstd";
     license = licenses.mit;
     maintainers = with lib.maintainers; [ mxmlnkn ];
-    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/ipykernel/default.nix b/pkgs/development/python-modules/ipykernel/default.nix
index 1caa71211c5fd..761ab5852a0c2 100644
--- a/pkgs/development/python-modules/ipykernel/default.nix
+++ b/pkgs/development/python-modules/ipykernel/default.nix
@@ -22,14 +22,14 @@
 
 buildPythonPackage rec {
   pname = "ipykernel";
-  version = "6.29.3";
+  version = "6.29.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4UwlDR+eo5iUkCJcwaVCeBsJWhihlEf88rXq99CsW9I=";
+    hash = "sha256-PUQHAGD5R1rCCSt2ASP63xBdLiSTwkhItmkafE9Cr1w=";
   };
 
   # debugpy is optional, see https://github.com/ipython/ipykernel/pull/767
diff --git a/pkgs/development/python-modules/ipyparallel/default.nix b/pkgs/development/python-modules/ipyparallel/default.nix
index 2ad3df50dfc94..b5b2713182b6e 100644
--- a/pkgs/development/python-modules/ipyparallel/default.nix
+++ b/pkgs/development/python-modules/ipyparallel/default.nix
@@ -18,14 +18,14 @@
 
 buildPythonPackage rec {
   pname = "ipyparallel";
-  version = "8.7.0";
+  version = "8.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QDwJca5Wwrajn/6PNfMcf9FwzhJ5JGKUWc3X96C058M=";
+    hash = "sha256-JATVn4ajqqO9J79rV993e/9cE2PBxuYEA3WdFu1C3Hs=";
   };
 
   # We do not need the jupyterlab build dependency, because we do not need to
diff --git a/pkgs/development/python-modules/ipyvuetify/default.nix b/pkgs/development/python-modules/ipyvuetify/default.nix
index 8c3bbf654c2bd..cd2a597d6c171 100644
--- a/pkgs/development/python-modules/ipyvuetify/default.nix
+++ b/pkgs/development/python-modules/ipyvuetify/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "ipyvuetify";
-  version = "1.9.2";
+  version = "1.9.4";
   pyproject = true;
 
   # GitHub version tries to run npm (Node JS)
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-kAcL/PR3jThbmfDKMBQRPbcDyZ7GrRwuzDLWE8bC1M4=";
+    hash = "sha256-wpwfN68wpj2+lLb4w0erAZYa7OrbVhNfGMv0635oiVs=";
   };
 
   # drop pynpm which tries to install node_modules
diff --git a/pkgs/development/python-modules/jaraco-abode/default.nix b/pkgs/development/python-modules/jaraco-abode/default.nix
index c19c5c64286f6..d113028361fe2 100644
--- a/pkgs/development/python-modules/jaraco-abode/default.nix
+++ b/pkgs/development/python-modules/jaraco-abode/default.nix
@@ -24,27 +24,18 @@
 
 buildPythonPackage rec {
   pname = "jaraco-abode";
-  version = "5.1.0";
-  format = "pyproject";
+  version = "5.1.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "jaraco";
     repo = "jaraco.abode";
     rev = "refs/tags/v${version}";
-    hash = "sha256-guLgmhjFgYLRZsQ0j92NXkktZ80bwVvMUJLZeg3dgxE=";
+    hash = "sha256-TUxljF1k/fvQoNcHx6jMRJrYgzxjXefvMl+mBD0DL8o=";
   };
 
-  postPatch = ''
-    # https://github.com/jaraco/jaraco.abode/issues/19
-    echo "graft jaraco" > MANIFEST.in
-
-    # https://github.com/jaraco/jaraco.abode/commit/9e3e789efc96cddcaa15f920686bbeb79a7469e0
-    substituteInPlace jaraco/abode/helpers/timeline.py \
-      --replace "call_aside" "invoke"
-  '';
-
   nativeBuildInputs = [
     setuptools
     setuptools-scm
diff --git a/pkgs/development/python-modules/javaobj-py3/default.nix b/pkgs/development/python-modules/javaobj-py3/default.nix
index 1d8566a6f3261..2c303784a87a8 100644
--- a/pkgs/development/python-modules/javaobj-py3/default.nix
+++ b/pkgs/development/python-modules/javaobj-py3/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "javaobj-py3";
-  version = "0.4.3";
+  version = "0.4.4";
   format = "setuptools";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "38f74db3a57e9998a9774e3614afb95cb396f139f29b3fdb130c5af554435259";
+    sha256 = "sha256-5OMlfvLPgaMzl4ek1c+STlTJHwlacj9tJYTa5h1Dlu0=";
   };
 
   propagatedBuildInputs = [ numpy ];
diff --git a/pkgs/development/python-modules/jenkins-job-builder/default.nix b/pkgs/development/python-modules/jenkins-job-builder/default.nix
index 47734c8a89736..852b529e8bcc1 100644
--- a/pkgs/development/python-modules/jenkins-job-builder/default.nix
+++ b/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "jenkins-job-builder";
-  version = "6.1.0";
+  version = "6.2.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9IXhzdXVEk0M2O01eHysiDziZWmEy6Ehb7nHC6OHCwc=";
+    hash = "sha256-kV2g1qbS5L7bEqfPijj60eK+pbTc8SAs/tctpNv0PFs=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/junos-eznc/default.nix b/pkgs/development/python-modules/junos-eznc/default.nix
index 35a8e38ec0f0d..55e34c9e30aa4 100644
--- a/pkgs/development/python-modules/junos-eznc/default.nix
+++ b/pkgs/development/python-modules/junos-eznc/default.nix
@@ -1,29 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jinja2
-, lxml
-, mock
-, ncclient
-, netaddr
-, nose2
-, ntc-templates
-, paramiko
-, pyparsing
-, pyserial
-, pythonOlder
-, pyyaml
-, scp
-, setuptools
-, pytestCheckHook
-, six
-, transitions
-, yamlordereddictloader
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jinja2,
+  lxml,
+  mock,
+  ncclient,
+  netaddr,
+  nose2,
+  ntc-templates,
+  paramiko,
+  pyparsing,
+  pyserial,
+  pythonOlder,
+  pyyaml,
+  scp,
+  setuptools,
+  pytestCheckHook,
+  six,
+  transitions,
+  yamlordereddictloader,
 }:
 
 buildPythonPackage rec {
   pname = "junos-eznc";
-  version = "2.7.0";
+  version = "2.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -32,14 +33,12 @@ buildPythonPackage rec {
     owner = "Juniper";
     repo = "py-junos-eznc";
     rev = "refs/tags/${version}";
-    hash = "sha256-06OV6UrF2i4SxL5dCvVxsEX2e8ef8UBFx/oMbvCZDaM=";
+    hash = "sha256-aoi+in5A8qSdQNY3V4S4wBBfPchR1an7G6GQHDhgxpQ=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jinja2
     lxml
     ncclient
@@ -61,9 +60,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-   "tests/unit"
-  ];
+  pytestFlagsArray = [ "tests/unit" ];
 
   disabledTests = [
     # jnpr.junos.exception.FactLoopError: A loop was detected while gathering the...
@@ -76,9 +73,7 @@ buildPythonPackage rec {
     "test_domain_fact_from_config"
   ];
 
-  pythonImportsCheck = [
-    "jnpr.junos"
-  ];
+  pythonImportsCheck = [ "jnpr.junos" ];
 
   meta = with lib; {
     description = "Junos 'EZ' automation for non-programmers";
diff --git a/pkgs/development/python-modules/jupyterhub/default.nix b/pkgs/development/python-modules/jupyterhub/default.nix
index 8ee4d3ef09dc9..2aa83c6f85af6 100644
--- a/pkgs/development/python-modules/jupyterhub/default.nix
+++ b/pkgs/development/python-modules/jupyterhub/default.nix
@@ -72,14 +72,14 @@ in
 
 buildPythonPackage rec {
   pname = "jupyterhub";
-  version = "4.1.3";
+  version = "4.1.5";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-61RxYcVwl0SkUHPYePPgyWVAhZouZBmTHDbu986Ii4I=";
+    hash = "sha256-Y7ofxxhDbBUZRqWKO0A+xP6LP2JPsZW8HY5ww5sz4ZQ=";
   };
 
   # Most of this only applies when building from source (e.g. js/css assets are
diff --git a/pkgs/development/python-modules/jupyterlab-server/default.nix b/pkgs/development/python-modules/jupyterlab-server/default.nix
index c1470c58893d4..f295ce204ad29 100644
--- a/pkgs/development/python-modules/jupyterlab-server/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-server/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab-server";
-  version = "2.25.4";
+  version = "2.26.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "jupyterlab_server";
     inherit version;
-    hash = "sha256-IJgZjh6C4NuYJED5tRNhddc76izUKmSAqm/VAssjxPk=";
+    hash = "sha256-mzupHPKDf38ST8o21j88qArOK+1ImKY91H5lmMGrAG8=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/jupyterlab/default.nix b/pkgs/development/python-modules/jupyterlab/default.nix
index 768fd085b74b0..dc48c597d5489 100644
--- a/pkgs/development/python-modules/jupyterlab/default.nix
+++ b/pkgs/development/python-modules/jupyterlab/default.nix
@@ -20,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab";
-  version = "4.1.5";
+  version = "4.1.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ya11KQyxC/r/NiS/P7uFIxm0zOTEVmE/jruqmNA1JNs=";
+    hash = "sha256-eTXza6JuthUYOk9cK7yleRtRCM4qALVQX4z9EA1TZI4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/kaggle/default.nix b/pkgs/development/python-modules/kaggle/default.nix
index 29a6cdae62f29..f6e0a7fcfaeb5 100644
--- a/pkgs/development/python-modules/kaggle/default.nix
+++ b/pkgs/development/python-modules/kaggle/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "kaggle";
-  version = "1.6.8";
+  version = "1.6.11";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-gBwqC+XN9vTJprs2cSV2AgayZvQ9RLVXx+052EiUlwA=";
+    sha256 = "sha256-oN3jld3SB5XZTqoM9mIj4bdgMuzOX6Rj3VQhbedvX1Y=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/labelbox/default.nix b/pkgs/development/python-modules/labelbox/default.nix
index 25314acd50267..98c7adcc8e11b 100644
--- a/pkgs/development/python-modules/labelbox/default.nix
+++ b/pkgs/development/python-modules/labelbox/default.nix
@@ -15,9 +15,11 @@
 , pytestCheckHook
 , python-dateutil
 , pythonOlder
+, pythonRelaxDepsHook
 , requests
 , setuptools
 , shapely
+, strenum
 , tqdm
 , typeguard
 , typing-extensions
@@ -25,36 +27,49 @@
 
 buildPythonPackage rec {
   pname = "labelbox";
-  version = "3.65";
+  version = "3.67.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Labelbox";
     repo = "labelbox-python";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-i0hbVxGrb2C/bMcVPNzaPBxhKm+5r3o1GlToZvIS35k=";
+    rev = "refs/tags/v.${version}";
+    hash = "sha256-JQTjmYxPBS8JC4HQTtbQ7hb80LPLYE4OEj1lFA6cZ1Y=";
   };
 
   postPatch = ''
     substituteInPlace pytest.ini \
-      --replace "--reruns 5 --reruns-delay 10" ""
+      --replace-fail "--reruns 2 --reruns-delay 10 --durations=20 -n 10" ""
+
+    # disable pytest_plugins which requires `pygeotile`
+    substituteInPlace tests/conftest.py \
+      --replace-fail "pytest_plugins" "_pytest_plugins"
   '';
 
   nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "python-dateutil"
+  ];
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     google-api-core
     pydantic
     python-dateutil
     requests
+    strenum
     tqdm
   ];
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     data = [
       shapely
       geojson
@@ -74,13 +89,7 @@ buildPythonPackage rec {
     nbconvert
     nbformat
     pytestCheckHook
-  ] ++ passthru.optional-dependencies.data;
-
-  # disable pytest_plugins which requires `pygeotile`
-  preCheck = ''
-    substituteInPlace tests/conftest.py \
-      --replace "pytest_plugins" "_pytest_plugins"
-  '';
+  ] ++ optional-dependencies.data;
 
   disabledTestPaths = [
     # Requires network access
diff --git a/pkgs/development/python-modules/langchain-community/default.nix b/pkgs/development/python-modules/langchain-community/default.nix
index a23a1df69c64d..6832aeffeaf48 100644
--- a/pkgs/development/python-modules/langchain-community/default.nix
+++ b/pkgs/development/python-modules/langchain-community/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "langchain-community";
-  version = "0.0.31";
+  version = "0.0.32";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_community";
     inherit version;
-    hash = "sha256-mpcLwrtZu0wgS2ltjGLCU09t2zEAUAXMG31/k05Ypfw=";
+    hash = "sha256-FRAhfWRsg4D1TphQNR9tKgsN1zxQG2Zsb0tAuqgWCyk=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/langchain-core/default.nix b/pkgs/development/python-modules/langchain-core/default.nix
index 20a98496dbf79..e7c3361e7158f 100644
--- a/pkgs/development/python-modules/langchain-core/default.nix
+++ b/pkgs/development/python-modules/langchain-core/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "langchain-core";
-  version = "0.1.40";
+  version = "0.1.42";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_core";
     inherit version;
-    hash = "sha256-NMBvwObTU0tzjGP4VANEa0vnEWFmW34JH5uxnJFOwQA=";
+    hash = "sha256-QHUb9g6l2OKy7+ZSkNtDRxfuODSHDAAuQOKBHwnYFOY=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/langchain/default.nix b/pkgs/development/python-modules/langchain/default.nix
index 3b8cc793697d2..48c2c0db93a1b 100644
--- a/pkgs/development/python-modules/langchain/default.nix
+++ b/pkgs/development/python-modules/langchain/default.nix
@@ -51,7 +51,7 @@
 
 buildPythonPackage rec {
   pname = "langchain";
-  version = "0.1.14";
+  version = "0.1.16";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -60,7 +60,7 @@ buildPythonPackage rec {
     owner = "langchain-ai";
     repo = "langchain";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wV6QFeJ/kV0nDVlA2qsJ9p1n3Yxy8Q/NZ1IX8cFtzcg=";
+    hash = "sha256-Xv8juma/1qGC2Rb659dJBvRzRh5W+zU+O8W6peElFGc=";
   };
 
   sourceRoot = "${src.name}/libs/langchain";
diff --git a/pkgs/development/python-modules/langsmith/default.nix b/pkgs/development/python-modules/langsmith/default.nix
index 6c340d28211eb..db00f39cfe899 100644
--- a/pkgs/development/python-modules/langsmith/default.nix
+++ b/pkgs/development/python-modules/langsmith/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "langsmith";
-  version = "0.1.40";
+  version = "0.1.45";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "langchain-ai";
     repo = "langsmith-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LdHCTPFrIhIOWV4m9pJx7GWQX1Xs6ajaXMgPFO+JQ8w=";
+    hash = "sha256-8A9wqhM8U5Q8o0uMyu+LQKhV+1Nsyg4opJjwylc6kkI=";
   };
 
   sourceRoot = "${src.name}/python";
diff --git a/pkgs/development/python-modules/linien-common/default.nix b/pkgs/development/python-modules/linien-common/default.nix
index f0fd4b920707b..88da8560db467 100644
--- a/pkgs/development/python-modules/linien-common/default.nix
+++ b/pkgs/development/python-modules/linien-common/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "linien-common";
-  version = "1.0.1";
+  version = "1.0.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "linien-org";
     repo = "linien";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZgAp1SEiHijyjK74VZyRLYY3Hzfc3BQ6cnoO3hZzvbE=";
+    hash = "sha256-V6oo0a4cNlvn4pIwzchvCTOu7qtUGS+Pc0qpbEsvGZo=";
   };
 
   sourceRoot = "${src.name}/linien-common";
diff --git a/pkgs/development/python-modules/litellm/default.nix b/pkgs/development/python-modules/litellm/default.nix
index 5d5a7884ded2c..6fc8f23d754fe 100644
--- a/pkgs/development/python-modules/litellm/default.nix
+++ b/pkgs/development/python-modules/litellm/default.nix
@@ -33,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "litellm";
-  version = "1.34.20";
+  version = "1.35.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,7 +42,7 @@ buildPythonPackage rec {
     owner = "BerriAI";
     repo = "litellm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9MZOqNhrBFtflznqroRUc/B7dUgy9t5HdUW/LGYQOYw=";
+    hash = "sha256-bFAoaKH1y+Q5JE7OEY8w5hX3+6LAgswaCx1bKYmLZX0=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/llama-index-core/default.nix b/pkgs/development/python-modules/llama-index-core/default.nix
index 6eea1a140ab70..c31ec174efa80 100644
--- a/pkgs/development/python-modules/llama-index-core/default.nix
+++ b/pkgs/development/python-modules/llama-index-core/default.nix
@@ -31,7 +31,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-core";
-  version = "0.10.27";
+  version = "0.10.28.post1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -40,7 +40,7 @@ buildPythonPackage rec {
     owner = "run-llama";
     repo = "llama_index";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jfmoj9TOrFngHs8s7qeMHit/7YGdGX8GrqJMu3avWs4=";
+    hash = "sha256-BOpKaOP0DdBdVB0bMrAwXG5xaZ3AXnHX3/sHt1GRWJs=";
   };
 
   sourceRoot = "${src.name}/${pname}";
diff --git a/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix b/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
index 21b9f3bc3f02a..722139cfdedc8 100644
--- a/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
+++ b/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-generativeai
-, llama-index-core
-, poetry-core
-, pytestCheckHook
-, pythonRelaxDepsHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-generativeai,
+  llama-index-core,
+  poetry-core,
+  pytestCheckHook,
+  pythonRelaxDepsHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-embeddings-gemini";
-  version = "0.1.5";
+  version = "0.1.6";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,15 +20,16 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_embeddings_gemini";
     inherit version;
-    hash = "sha256-FQzZ+MjuAApOImpxQhuaCFDIKdojzD5zqDOepo8fCNo=";
+    hash = "sha256-HYwYA67/7gDxE7ZxQkkyblgwE83gZXuDmUuseXujr5g=";
   };
 
-  pythonRelaxDeps = [
-    "google-generativeai"
-  ];
+  pythonRelaxDeps = [ "google-generativeai" ];
 
   build-system = [
     poetry-core
+  ];
+
+  nativeBuildInputs = [
     pythonRelaxDepsHook
   ];
 
@@ -39,9 +41,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.embeddings.gemini"
-  ];
+  pythonImportsCheck = [ "llama_index.embeddings.gemini" ];
 
   meta = with lib; {
     description = "LlamaIndex Llms Integration for Gemini";
diff --git a/pkgs/development/python-modules/llama-index-embeddings-google/default.nix b/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
index eb378f7ca3af2..cebedfe90b629 100644
--- a/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
+++ b/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, google-generativeai
-, llama-index-core
-, poetry-core
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  google-generativeai,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
+  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-embeddings-google";
-  version = "0.1.4";
+  version = "0.1.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,17 +19,14 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_embeddings_google";
     inherit version;
-    hash = "sha256-jQYN/5XPCrMjvwXBARdRDLC+3JhqgZjlcVajmcRlVJw=";
+    hash = "sha256-mJ+H4klmGlpTGXLErlLNWH5IUpGyXnbAhNsgT5fwCHs=";
   };
 
-  pythonRelaxDeps = [
-    "google-generativeai"
-  ];
+  pythonRelaxDeps = [ "google-generativeai" ];
 
-  build-system = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     google-generativeai
@@ -38,9 +36,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.embeddings.google"
-  ];
+  pythonImportsCheck = [ "llama_index.embeddings.google" ];
 
   meta = with lib; {
     description = "LlamaIndex Embeddings Integration for Google";
diff --git a/pkgs/development/python-modules/llama-index-llms-openai/default.nix b/pkgs/development/python-modules/llama-index-llms-openai/default.nix
index fbb23ae82bdce..121cfee981e87 100644
--- a/pkgs/development/python-modules/llama-index-llms-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-llms-openai/default.nix
@@ -1,14 +1,15 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-llms-openai";
-  version = "0.1.14";
+  version = "0.1.15";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -16,23 +17,17 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_llms_openai";
     inherit version;
-    hash = "sha256-frpmiCroT6QrGIlBI0uEJnxI5EnvIU9RF1bcrT+fC2I=";
+    hash = "sha256-a9vzB7HUOpp8KlL3K6fbYcuW2QT5nn6l2IndeBjxCBQ=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  dependencies = [
-    llama-index-core
-  ];
+  dependencies = [ llama-index-core ];
 
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.llms.openai"
-  ];
+  pythonImportsCheck = [ "llama_index.llms.openai" ];
 
   meta = with lib; {
     description = "LlamaIndex LLMS Integration for OpenAI";
diff --git a/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix b/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
index 3df214e8bffdd..389f2c6fe763f 100644
--- a/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
+++ b/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, llama-index-llms-openai
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  llama-index-llms-openai,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-multi-modal-llms-openai";
-  version = "0.1.4";
+  version = "0.1.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,12 +18,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_multi_modal_llms_openai";
     inherit version;
-    hash = "sha256-al1lhMM6nRsGz1yHTGOvJgP8k7ZgveSBqMVH6HbG4sM=";
+    hash = "sha256-miN/T4htHiDCfpST6As+H4dThZSB/xtY/iW3qjmxmKI=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
@@ -32,9 +31,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.multi_modal_llms.openai"
-  ];
+  pythonImportsCheck = [ "llama_index.multi_modal_llms.openai" ];
 
   meta = with lib; {
     description = "LlamaIndex Multi-Modal-Llms Integration for OpenAI";
diff --git a/pkgs/development/python-modules/llama-index-readers-file/default.nix b/pkgs/development/python-modules/llama-index-readers-file/default.nix
index 18a126dd3822c..f62da3ce969fb 100644
--- a/pkgs/development/python-modules/llama-index-readers-file/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-file/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, poetry-core
-, pymupdf
-, pypdf
-, pythonOlder
-, pythonRelaxDepsHook
-, striprtf
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  poetry-core,
+  pymupdf,
+  pypdf,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  striprtf,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-file";
-  version = "0.1.13";
+  version = "0.1.16";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -21,7 +22,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_file";
     inherit version;
-    hash = "sha256-gw8G7Hs0Q3/Du18mjSNcXHZAKWrbFI2Pkid9zrfwhG0=";
+    hash = "sha256-fyW4/drxqRusBsZnJ7kTtI4m72hxT81RlwUbP3EPTPo=";
   };
 
   pythonRelaxDeps = [
@@ -29,14 +30,9 @@ buildPythonPackage rec {
     "pypdf"
   ];
 
-  pythonRemoveDeps = [
-    "bs4"
-  ];
+  build-system = [ poetry-core ];
 
-  build-system = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     beautifulsoup4
@@ -49,9 +45,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.file"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.file" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for files";
diff --git a/pkgs/development/python-modules/llama-index-readers-s3/default.nix b/pkgs/development/python-modules/llama-index-readers-s3/default.nix
index 947a81bb76c47..b43eb933ff780 100644
--- a/pkgs/development/python-modules/llama-index-readers-s3/default.nix
+++ b/pkgs/development/python-modules/llama-index-readers-s3/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, llama-index-core
-, llama-index-readers-file
-, poetry-core
-, pythonOlder
-, s3fs
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  llama-index-core,
+  llama-index-readers-file,
+  poetry-core,
+  pythonOlder,
+  s3fs,
 }:
 
 buildPythonPackage rec {
   pname = "llama-index-readers-s3";
-  version = "0.1.5";
+  version = "0.1.7";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,12 +19,10 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_readers_s3";
     inherit version;
-    hash = "sha256-x3XaPKxnvYYzrJYDmXIKC9YOAOr1HOU1XnaaHIuQnhk=";
+    hash = "sha256-xj7uRsc56Wv/SF4OPo/jc+43PabJ4vaM5HcxhnxTzY8=";
   };
 
-  build-system = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   dependencies = [
     llama-index-core
@@ -34,9 +33,7 @@ buildPythonPackage rec {
   # Tests are only available in the mono repo
   doCheck = false;
 
-  pythonImportsCheck = [
-    "llama_index.readers.s3"
-  ];
+  pythonImportsCheck = [ "llama_index.readers.s3" ];
 
   meta = with lib; {
     description = "LlamaIndex Readers Integration for S3";
diff --git a/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix b/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
index 195af9c19d2d2..3b8ccd2a6f3b6 100644
--- a/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
+++ b/pkgs/development/python-modules/llama-index-vector-stores-qdrant/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "llama-index-vector-stores-qdrant";
-  version = "0.1.6";
+  version = "0.2.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llama_index_vector_stores_qdrant";
     inherit version;
-    hash = "sha256-MKmtxcHUqF3CzakGNXxvXy3jemoJNbdkCaqrgZ5Rtyo=";
+    hash = "sha256-eYgp2S4KubjyL0bgaL7nRCyFhvTuLU7c7vjw4tJ+9wA=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/llamaindex-py-client/default.nix b/pkgs/development/python-modules/llamaindex-py-client/default.nix
index d80b1b28ab9e4..46af937a382ce 100644
--- a/pkgs/development/python-modules/llamaindex-py-client/default.nix
+++ b/pkgs/development/python-modules/llamaindex-py-client/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "llamaindex-py-client";
-  version = "0.1.16";
+  version = "0.1.18";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "llamaindex_py_client";
     inherit version;
-    hash = "sha256-6Zu8CFXmyqp166IZzbPPbJQ66U+hXMu2ijoI1FL9Y4A=";
+    hash = "sha256-CR7kmpJZLjiUd3reElFsITcJP51kQaVJ9AZGGRfOm34=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/marimo/default.nix b/pkgs/development/python-modules/marimo/default.nix
index 5ebd6708f362f..871ba7bffbf0d 100644
--- a/pkgs/development/python-modules/marimo/default.nix
+++ b/pkgs/development/python-modules/marimo/default.nix
@@ -19,14 +19,14 @@
 
 buildPythonPackage rec {
   pname = "marimo";
-  version = "0.3.9";
+  version = "0.3.12";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tkBCfOMevhYcDvRNps00zvGx45S/aVF/KHDxNTCBq98=";
+    hash = "sha256-4OwTY4OFkTQcQqHntjcfwPTx4w+2GPEUBy/XgW/nATU=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/memory-allocator/default.nix b/pkgs/development/python-modules/memory-allocator/default.nix
index 90c75d0bb7fe5..9f680255e1889 100644
--- a/pkgs/development/python-modules/memory-allocator/default.nix
+++ b/pkgs/development/python-modules/memory-allocator/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "memory-allocator";
-  version = "0.1.3";
+  version = "0.1.4";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "memory_allocator";
-    hash = "sha256-E4BcKuHAG3SJ+rXo6sk2FmK08sAkEuNlLuzkj/aVMWI=";
+    hash = "sha256-1gkhawMDGWfitFqASxL/kClXj07AGf3kLPau1soJ7+Q=";
   };
 
   propagatedBuildInputs = [ cython_3 ];
diff --git a/pkgs/development/python-modules/meshtastic/default.nix b/pkgs/development/python-modules/meshtastic/default.nix
index bc00d859f6b83..7fab04572aa61 100644
--- a/pkgs/development/python-modules/meshtastic/default.nix
+++ b/pkgs/development/python-modules/meshtastic/default.nix
@@ -1,27 +1,28 @@
-{ lib
-, bleak
-, buildPythonPackage
-, dotmap
-, fetchFromGitHub
-, pexpect
-, protobuf
-, pygatt
-, pypubsub
-, pyqrcode
-, pyserial
-, pytap2
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, setuptools
-, tabulate
-, timeago
+{
+  lib,
+  bleak,
+  buildPythonPackage,
+  dotmap,
+  fetchFromGitHub,
+  pexpect,
+  protobuf,
+  pygatt,
+  pypubsub,
+  pyqrcode,
+  pyserial,
+  pytap2,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  tabulate,
+  timeago,
 }:
 
 buildPythonPackage rec {
   pname = "meshtastic";
-  version = "2.3.3";
+  version = "2.3.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -30,12 +31,10 @@ buildPythonPackage rec {
     owner = "meshtastic";
     repo = "Meshtastic-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-kydZgOiQHDovQ5RwyLru2nyHoCEVZClq8wJit/mnbvU=";
+    hash = "sha256-WxiddF1n9lyxKkZk1MU40NzLh6goLVs81mbJZ3F33R8=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     bleak
@@ -54,9 +53,7 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    tunnel = [
-      pytap2
-    ];
+    tunnel = [ pytap2 ];
   };
 
   nativeCheckInputs = [
@@ -68,19 +65,21 @@ buildPythonPackage rec {
     export PATH="$PATH:$out/bin";
   '';
 
-  pythonImportsCheck = [
-    "meshtastic"
-  ];
+  pythonImportsCheck = [ "meshtastic" ];
 
   disabledTests = [
     # TypeError
-    "test_main_info"
-    "test_main_support"
+    "test_main_info_with_seriallog_output_txt"
+    "test_main_info_with_seriallog_stdout"
     "test_main_info_with_tcp_interfa"
+    "test_main_info"
     "test_main_no_proto"
-    "test_main_info_with_seriallog_stdout"
-    "test_main_info_with_seriallog_output_txt"
+    "test_main_support"
+    "test_MeshInterface"
+    "test_message_to_json_shows_all"
+    "test_SerialInterface_single_port"
     "test_support_info"
+    "test_TCPInterface"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/midea-beautiful-air/default.nix b/pkgs/development/python-modules/midea-beautiful-air/default.nix
new file mode 100644
index 0000000000000..1fde2c7a34f48
--- /dev/null
+++ b/pkgs/development/python-modules/midea-beautiful-air/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+, cryptography
+, requests
+, pytestCheckHook
+, pytest-socket
+, requests-mock
+}:
+
+buildPythonPackage rec {
+  pname = "midea-beautiful-air";
+  version = "0.10.5";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "nbogojevic";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-786Q085bv8Zsm0c55I4XalRhEfwElRTJds5qnb0cWhk=";
+  };
+
+  build-system = [
+    setuptools
+  ];
+
+  dependencies = [
+    cryptography
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-socket
+    requests-mock
+  ];
+
+  disabledTestPaths = [
+    # tests optional dependencies + network
+    "tests/test_cli.py"
+  ];
+
+  pythonImportsCheck = [ "midea_beautiful" ];
+
+  meta = with lib; {
+    description = "Python client for accessing Midea air conditioners and dehumidifiers (Midea, Comfee, Inventor EVO) via local network";
+    homepage = "https://github.com/nbogojevic/midea-beautiful-air";
+    changelog = "https://github.com/nbogojevic/midea-beautiful-air/releases/tag/v${version}";
+    maintainers = with maintainers; [ k900 ];
+    mainProgram = "midea-beautiful-air-cli";
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/mido/default.nix b/pkgs/development/python-modules/mido/default.nix
index 90b5128e47479..fc2a97689806d 100644
--- a/pkgs/development/python-modules/mido/default.nix
+++ b/pkgs/development/python-modules/mido/default.nix
@@ -6,6 +6,7 @@
 , portmidi
 , python-rtmidi
 , pytestCheckHook
+, pythonRelaxDepsHook
 , pythonOlder
 , setuptools
 , setuptools-scm
@@ -33,6 +34,11 @@ buildPythonPackage rec {
   nativeBuildInputs = [
     setuptools
     setuptools-scm
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "packaging"
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/mitogen/default.nix b/pkgs/development/python-modules/mitogen/default.nix
index ea710516df68b..a7de51b4f8cb1 100644
--- a/pkgs/development/python-modules/mitogen/default.nix
+++ b/pkgs/development/python-modules/mitogen/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "mitogen";
-  version = "0.3.6";
+  version = "0.3.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "mitogen-hq";
     repo = "mitogen";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zQTto4SGPvQIXPAcTQx8FA+n/5RcpqKKn0UqlFM2yqI=";
+    hash = "sha256-RcgAyBF5qNw8Hp//aq6UuvElhUjJXS+ySSXsSweyFXE=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/mkdocs-material/default.nix b/pkgs/development/python-modules/mkdocs-material/default.nix
index 5a609b8b3306f..3b4e459669e41 100644
--- a/pkgs/development/python-modules/mkdocs-material/default.nix
+++ b/pkgs/development/python-modules/mkdocs-material/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "mkdocs-material";
-  version = "9.5.15";
+  version = "9.5.17";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "squidfunk";
     repo = "mkdocs-material";
     rev = "refs/tags/${version}";
-    hash = "sha256-u5XRLAh1X/Y6p6HcKMeCEeDe98tCieGdF9oxqh69ris=";
+    hash = "sha256-r+w3Nf7mAfWiDUeOelO+ykizeqxRiKWBnbUjakXov3U=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/mkdocstrings-python/default.nix b/pkgs/development/python-modules/mkdocstrings-python/default.nix
index de1ae5e6c72e0..7a57a73338ad2 100644
--- a/pkgs/development/python-modules/mkdocstrings-python/default.nix
+++ b/pkgs/development/python-modules/mkdocstrings-python/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, griffe
-, mkdocs-material
-, mkdocstrings
-, pdm-backend
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  griffe,
+  mkdocs-material,
+  mkdocstrings,
+  pdm-backend,
+  pytestCheckHook,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocstrings-python";
-  version = "1.9.0";
+  version = "1.9.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,14 +21,12 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "python";
     rev = "refs/tags/${version}";
-    hash = "sha256-RzyOhlfjLtiG5jelrRG8yS7AWQJuaJMVuNkGpNBGO64=";
+    hash = "sha256-UJSDnkdohFn+U7i5fYiRVMLZZ8Nyb0fdihBZl2z2RBc=";
   };
 
-  nativeBuildInputs = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     griffe
     mkdocstrings
   ];
@@ -37,9 +36,7 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "mkdocstrings_handlers"
-  ];
+  pythonImportsCheck = [ "mkdocstrings_handlers" ];
 
   meta = with lib; {
     description = "Python handler for mkdocstrings";
diff --git a/pkgs/development/python-modules/mkdocstrings/default.nix b/pkgs/development/python-modules/mkdocstrings/default.nix
index b09b819d33174..a8dc02b4a980c 100644
--- a/pkgs/development/python-modules/mkdocstrings/default.nix
+++ b/pkgs/development/python-modules/mkdocstrings/default.nix
@@ -1,22 +1,23 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, importlib-metadata
-, jinja2
-, markdown
-, markupsafe
-, mkdocs
-, mkdocs-autorefs
-, pdm-backend
-, pymdown-extensions
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  importlib-metadata,
+  jinja2,
+  markdown,
+  markupsafe,
+  mkdocs,
+  mkdocs-autorefs,
+  pdm-backend,
+  pymdown-extensions,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "mkdocstrings";
-  version = "0.24.2";
+  version = "0.24.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,7 +26,7 @@ buildPythonPackage rec {
     owner = "mkdocstrings";
     repo = "mkdocstrings";
     rev = "refs/tags/${version}";
-    hash = "sha256-RlEr9NA6GV/XXjGvX/Yipu6FQAi7HuE9SvIH/snQJRM=";
+    hash = "sha256-L3QQ2ll2sDbQwrmw88iwTW6WS2SNsiMR2TvuV4P1uj4=";
   };
 
   postPatch = ''
@@ -33,29 +34,25 @@ buildPythonPackage rec {
       --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  build-system = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
-  dependencies = [
-    jinja2
-    markdown
-    markupsafe
-    mkdocs
-    mkdocs-autorefs
-    pymdown-extensions
-  ] ++ lib.optionals (pythonOlder "3.10") [
-    importlib-metadata
-    typing-extensions
-  ];
+  dependencies =
+    [
+      jinja2
+      markdown
+      markupsafe
+      mkdocs
+      mkdocs-autorefs
+      pymdown-extensions
+    ]
+    ++ lib.optionals (pythonOlder "3.10") [
+      importlib-metadata
+      typing-extensions
+    ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "mkdocstrings"
-  ];
+  pythonImportsCheck = [ "mkdocstrings" ];
 
   disabledTestPaths = [
     # Circular dependencies
diff --git a/pkgs/development/python-modules/moderngl-window/default.nix b/pkgs/development/python-modules/moderngl-window/default.nix
index 34b1b650da08a..abe68766a9ced 100644
--- a/pkgs/development/python-modules/moderngl-window/default.nix
+++ b/pkgs/development/python-modules/moderngl-window/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "moderngl-window";
-  version = "2.4.5";
+  version = "2.4.6";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "moderngl";
     repo = "moderngl_window";
     rev = "refs/tags/${version}";
-    hash = "sha256-OfvIxezeZyuv5LLbe+4o1X2UCGnXT2DNvAF7t2Isw6Y=";
+    hash = "sha256-zTygSXU/vQZaFCuHbRBpO9/BYYA2UOid+wvhyc2bWMI=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/molecule/default.nix b/pkgs/development/python-modules/molecule/default.nix
index 309a3cdcfadfa..170d0bd2f7413 100644
--- a/pkgs/development/python-modules/molecule/default.nix
+++ b/pkgs/development/python-modules/molecule/default.nix
@@ -1,38 +1,41 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, testers
-, ansible-compat
-, ansible-core
-, click-help-colors
-, enrich
-, jsonschema
-, molecule
-, withPlugins ? true, molecule-plugins
-, packaging
-, pluggy
-, rich
-, setuptools
-, setuptools-scm
-, yamllint
-, wcmatch
-, wheel
+{
+  lib,
+  ansible-compat,
+  ansible-core,
+  buildPythonPackage,
+  click-help-colors,
+  enrich,
+  fetchPypi,
+  jsonschema,
+  molecule,
+  packaging,
+  pluggy,
+  pythonOlder,
+  rich,
+  setuptools,
+  setuptools-scm,
+  testers,
+  wcmatch,
+  withPlugins ? true,
+  molecule-plugins,
+  yamllint,
 }:
 
 buildPythonPackage rec {
   pname = "molecule";
-  version = "24.2.0";
-  format = "pyproject";
+  version = "24.2.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-R8mCp9Bdt4Rtp3/nFZ3rlG8myvsuOI/HGBK+AImkF3Y=";
+    hash = "sha256-g1IrqpuRVg6phic8qxScORVpdunWEkVxciYyCTWtVuQ=";
   };
 
   nativeBuildInputs = [
     setuptools
     setuptools-scm
-    wheel
   ];
 
   propagatedBuildInputs = [
@@ -53,19 +56,22 @@ buildPythonPackage rec {
   # tests can't be easily run without installing things from ansible-galaxy
   doCheck = false;
 
-  passthru.tests.version = (testers.testVersion {
-    package = molecule;
-    command = "PY_COLORS=0 ${pname} --version";
-  }).overrideAttrs (old: {
-    # workaround the error: Permission denied: '/homeless-shelter'
-    HOME = "$(mktemp -d)";
-  });
+  passthru.tests.version =
+    (testers.testVersion {
+      package = molecule;
+      command = "PY_COLORS=0 ${pname} --version";
+    }).overrideAttrs
+      (old: {
+        # workaround the error: Permission denied: '/homeless-shelter'
+        HOME = "$(mktemp -d)";
+      });
 
   meta = with lib; {
     description = "Molecule aids in the development and testing of Ansible roles";
-    mainProgram = "molecule";
     homepage = "https://github.com/ansible-community/molecule";
-    maintainers = with maintainers; [ dawidd6 ];
+    changelog = "https://github.com/ansible/molecule/releases/tag/v${version}";
     license = licenses.mit;
+    maintainers = with maintainers; [ dawidd6 ];
+    mainProgram = "molecule";
   };
 }
diff --git a/pkgs/development/python-modules/monty/default.nix b/pkgs/development/python-modules/monty/default.nix
index 77c7547e0b69f..a2af96582ca54 100644
--- a/pkgs/development/python-modules/monty/default.nix
+++ b/pkgs/development/python-modules/monty/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "monty";
-  version = "2024.2.26";
+  version = "2024.3.31";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "materialsvirtuallab";
     repo = "monty";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+NxgZ8JCoAih4nHq+KP4jym0xnKCjUXJqs+xPpKZPbs=";
+    hash = "sha256-Gg9KTsS7Np11jYBA8MgblQM6OmzOM/MPLsVZ6fUKT6g=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/mplhep/default.nix b/pkgs/development/python-modules/mplhep/default.nix
index fe00f97f25acd..3988db9a8d28c 100644
--- a/pkgs/development/python-modules/mplhep/default.nix
+++ b/pkgs/development/python-modules/mplhep/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "mplhep";
-  version = "0.3.44";
+  version = "0.3.46";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-UyHjNtkULBzsa76ky+6zgjErXKCfnn2oaJPjG47Pgqw=";
+    hash = "sha256-MEYIvKwQLbQPgaEEpSXs6v1MUQ/txzU8D0Ivd/6TlMw=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/msal/default.nix b/pkgs/development/python-modules/msal/default.nix
index 6b983174f05f3..a736cffb9b309 100644
--- a/pkgs/development/python-modules/msal/default.nix
+++ b/pkgs/development/python-modules/msal/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "msal";
-  version = "1.27.0";
+  version = "1.28.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MQlQPAOLprMHFSsOjTT5gRPy56eJhuKNC69bUwOv2lI=";
+    hash = "sha256-gLur40Vny3NO/S7BhpstmBlcknRVNp2Ad7PFQgiMXJ0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/mujoco/default.nix b/pkgs/development/python-modules/mujoco/default.nix
index 098e2a768cc00..9237dbb6501ca 100644
--- a/pkgs/development/python-modules/mujoco/default.nix
+++ b/pkgs/development/python-modules/mujoco/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "mujoco";
-  version = "3.1.3";
+  version = "3.1.4";
 
   pyproject = true;
 
@@ -27,7 +27,7 @@ buildPythonPackage rec {
   # in the project's CI.
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-9wDQdAMQYLRhEd22BDLQBCX4Ie7q8MzHbtldR4Yb1N4=";
+    hash = "sha256-GdeL1zMri/ArjXyjXTgan48WVPTHDA1/SZxtTYB8QFk=";
   };
 
   nativeBuildInputs = [ cmake setuptools ];
diff --git a/pkgs/development/python-modules/multiset/default.nix b/pkgs/development/python-modules/multiset/default.nix
index c8d813047d5f9..27476e44b17f1 100644
--- a/pkgs/development/python-modules/multiset/default.nix
+++ b/pkgs/development/python-modules/multiset/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "multiset";
-  version = "3.0.2";
+  version = "3.1.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oqUSMaQtkiriJFwpTCNaKfioiOBoZdL84hxuyvER//8=";
+    hash = "sha256-jpPlhvaI0uKwD6WEPiqC9p6XHhrHrT14+dKkdgjem6Y=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix
index 30ff6d456d214..f37179b9d192c 100644
--- a/pkgs/development/python-modules/mypy-boto3/default.nix
+++ b/pkgs/development/python-modules/mypy-boto3/default.nix
@@ -111,7 +111,7 @@ rec {
 
   mypy-boto3-backupstorage = buildMypyBoto3Package "backupstorage" "1.34.0" "sha256-Y8kjZ+ov8OsiJ8Sm1LlvP8YbgVc+AkLkbZIhOh4y7ZY=";
 
-  mypy-boto3-batch = buildMypyBoto3Package "batch" "1.34.72" "sha256-ha5OZVVcO/+slxQOPIrd+D1Ehaw6YpGqCWofSgFj5JI=";
+  mypy-boto3-batch = buildMypyBoto3Package "batch" "1.34.83" "sha256-mJ6t+8ov7x8tfJNavY6qZpHxwenVGhTXy6NRlD7muPc=";
 
   mypy-boto3-billingconductor = buildMypyBoto3Package "billingconductor" "1.34.1" "sha256-uXxQkoe2u3idcYta9YFbjxoK8HsvUiRQSyYrYhVi1kU=";
 
@@ -133,7 +133,7 @@ rec {
 
   mypy-boto3-chime-sdk-voice = buildMypyBoto3Package "chime-sdk-voice" "1.34.0" "sha256-9fQQgWFKeabSblJIhP6mN0CEnSixkz1r3mf/k6IL/BE=";
 
-  mypy-boto3-cleanrooms = buildMypyBoto3Package "cleanrooms" "1.34.78" "sha256-76zy6rTsSqmKdwrZwBsf7m6qPZXSdi6GpQEXMvN82Tw=";
+  mypy-boto3-cleanrooms = buildMypyBoto3Package "cleanrooms" "1.34.82" "sha256-KaCs/P3NM3IeZ9V9khIwysyBXBG/8RuGFBAlrbMYn4Y=";
 
   mypy-boto3-cloud9 = buildMypyBoto3Package "cloud9" "1.34.24" "sha256-fryD7UfO5cdFS7vMxmZaT9LW4nNSGTQCd3NyD60f9wA=";
 
@@ -143,7 +143,7 @@ rec {
 
   mypy-boto3-cloudformation = buildMypyBoto3Package "cloudformation" "1.34.77" "sha256-mQAUGCaB+d8iV/GFBWEmwNswvxJg9s09Rs7bPPRn8K0=";
 
-  mypy-boto3-cloudfront = buildMypyBoto3Package "cloudfront" "1.34.0" "sha256-3n/WEiQdcE253J+CFsskoYlNMXASdzkhPTWneSHDKoM=";
+  mypy-boto3-cloudfront = buildMypyBoto3Package "cloudfront" "1.34.83" "sha256-glPRMg4IS/5Mz6ckyQWgZuu9G3IlPsfA97fx41YpSw0=";
 
   mypy-boto3-cloudhsm = buildMypyBoto3Package "cloudhsm" "1.34.0" "sha256-Sd/YlKNm/1VRoJ+e+3YlOf4jKoewYVGM4FNYlST+9AY=";
 
@@ -157,11 +157,11 @@ rec {
 
   mypy-boto3-cloudtrail-data = buildMypyBoto3Package "cloudtrail-data" "1.34.0" "sha256-ACiJrI+VTHr06i8PKgDY/K8houFUZQNS1lluouadCTQ=";
 
-  mypy-boto3-cloudwatch = buildMypyBoto3Package "cloudwatch" "1.34.75" "sha256-Q0Qz809o6FcN5OVotLLF3fgebt+2mbFnhfBCKTZO0aU=";
+  mypy-boto3-cloudwatch = buildMypyBoto3Package "cloudwatch" "1.34.83" "sha256-dm4WbFtGPZiFpZKdwWu1kuD6fXvq9WmqT1AdhahIvBM=";
 
   mypy-boto3-codeartifact = buildMypyBoto3Package "codeartifact" "1.34.68" "sha256-Ey0cmx0OxN1/VXIyvn0EOBP9qYIuc/XyFVZniHLaNEY=";
 
-  mypy-boto3-codebuild = buildMypyBoto3Package "codebuild" "1.34.74" "sha256-A8SRNosqzXQab2J9gnYUWNkIdju8QqX44GJnFSNE4DQ=";
+  mypy-boto3-codebuild = buildMypyBoto3Package "codebuild" "1.34.83" "sha256-nf1rO/BmEFenb/Z/bWKHRDpZVG3WZb9OPIsxcKOdATo=";
 
   mypy-boto3-codecatalyst = buildMypyBoto3Package "codecatalyst" "1.34.73" "sha256-jQ/DIoWXQWo1oVWi4Gn88cxr78QCs45EVtgfc6fZkFk=";
 
@@ -197,7 +197,7 @@ rec {
 
   mypy-boto3-config = buildMypyBoto3Package "config" "1.34.45" "sha256-LN1CcIOj9cgzSNCvnUVwLRNPXlitHAlt+5jj6wu6i8E=";
 
-  mypy-boto3-connect = buildMypyBoto3Package "connect" "1.34.67" "sha256-kWjC/FacCsC0xevx2dOs67UxaKG1WM3xMahcO3CqZL8=";
+  mypy-boto3-connect = buildMypyBoto3Package "connect" "1.34.82" "sha256-QyZteRrk1d+Qwqj87uUb4f2ZK5SjPdMJV4NGv6kwrl4=";
 
   mypy-boto3-connect-contact-lens = buildMypyBoto3Package "connect-contact-lens" "1.34.0" "sha256-Wx9vcjlgXdWZ2qP3Y/hTY2LAeTd+hyyV5JSIuKQ5I5k=";
 
@@ -335,7 +335,7 @@ rec {
 
   mypy-boto3-honeycode = buildMypyBoto3Package "honeycode" "1.34.0" "sha256-HNp/STFuMLoO4qyL0iaYeiPpnMV3uzNBNFUDgzrHt9s=";
 
-  mypy-boto3-iam = buildMypyBoto3Package "iam" "1.34.8" "sha256-b69oz4ABgpJGh7ZxGz+a+o2UCtmT8lmjuR5V6CiS1kE=";
+  mypy-boto3-iam = buildMypyBoto3Package "iam" "1.34.83" "sha256-cmExVhZ1fr91Cd8OmwkdWULkcOtRxLI8ZioGhzqajso=";
 
   mypy-boto3-identitystore = buildMypyBoto3Package "identitystore" "1.34.0" "sha256-OdJsMjraTe4qhpblBOuwr++4QfiMXtaaMHDAEOTBII4=";
 
@@ -467,9 +467,9 @@ rec {
 
   mypy-boto3-mediaconnect = buildMypyBoto3Package "mediaconnect" "1.34.7" "sha256-A8Sal8qNijZ/PdwLLC3mGAt8btMGOHXzOAOVFn+JDtU=";
 
-  mypy-boto3-mediaconvert = buildMypyBoto3Package "mediaconvert" "1.34.33" "sha256-7OwfjcWDE1AHvpyOu3fE5YBwjQscpa+VnE7eylk1unA=";
+  mypy-boto3-mediaconvert = buildMypyBoto3Package "mediaconvert" "1.34.81" "sha256-MGULtrMziQpOXF4eNZabcu83rR13AHBMZrN5RgkqATk=";
 
-  mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.34.77" "sha256-2SRqRzh96HS6KKN0Xpbf8xq2XedS1etMm316rnIpu9k=";
+  mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.34.83" "sha256-VFyz2fNgx2fFFsU3843vwpZBQxGrVzNbyZWF1kv6KaY=";
 
   mypy-boto3-mediapackage = buildMypyBoto3Package "mediapackage" "1.34.0" "sha256-4DJ2zVk0satmVn+TZdDExx/+ClJpc1bdmbvl72Joe5U=";
 
@@ -491,7 +491,7 @@ rec {
 
   mypy-boto3-mgh = buildMypyBoto3Package "mgh" "1.34.0" "sha256-tyA+ywgjdRkIU2vbZwCsQfWIYctw/kLjIGTEAZuf8oU=";
 
-  mypy-boto3-mgn = buildMypyBoto3Package "mgn" "1.34.0" "sha256-BKzXdrkbnMw4m53xIRBSLta7wxeQpOEMgK6Yj9hmLf0=";
+  mypy-boto3-mgn = buildMypyBoto3Package "mgn" "1.34.80" "sha256-eLfAHkhqlU9HK6bLfBFOZ+UzFI1q/vJLFmxQcBRJNt8=";
 
   mypy-boto3-migration-hub-refactor-spaces = buildMypyBoto3Package "migration-hub-refactor-spaces" "1.34.0" "sha256-T37s/ubwuU1zsKk8DmTFum6Ml3+WNZCJ+q8T6F75iUY=";
 
@@ -521,7 +521,7 @@ rec {
 
   mypy-boto3-oam = buildMypyBoto3Package "oam" "1.34.73" "sha256-MAnS/E6BKcaubeOdblitGzS7y7YUZr35M4679iJL6lE=";
 
-  mypy-boto3-omics = buildMypyBoto3Package "omics" "1.34.7" "sha256-Mtb11Oe2j28u+MFaycvMMNiqi7ZdVDcKQV/X/7npze4=";
+  mypy-boto3-omics = buildMypyBoto3Package "omics" "1.34.83" "sha256-66IykobW8D/oemTVIGf0xw7H+mb4yNzXMQHv/dnzqGg=";
 
   mypy-boto3-opensearch = buildMypyBoto3Package "opensearch" "1.34.43" "sha256-EOl56YqzuIUWlSewnVCtEdzt3Ei5yueP4emtTQq3QrA=";
 
@@ -553,7 +553,7 @@ rec {
 
   mypy-boto3-pi = buildMypyBoto3Package "pi" "1.34.0" "sha256-97giGYtpINPHxtcUU6cE/mPF0/r6YfLixAdcC/LGKC0=";
 
-  mypy-boto3-pinpoint = buildMypyBoto3Package "pinpoint" "1.34.0" "sha256-oa8RAEtGeoyGpXq2sJSbEnLXorS6liInO196SGO6D/E=";
+  mypy-boto3-pinpoint = buildMypyBoto3Package "pinpoint" "1.34.81" "sha256-vs7gJCsMrpXBhPFwcHmQ/IT4sOYBMJ6IlcCLGMPuog8=";
 
   mypy-boto3-pinpoint-email = buildMypyBoto3Package "pinpoint-email" "1.34.0" "sha256-AHwJtYsAxFiEX16L0HZXz9JzjNZck9V40bFwzicMKUE=";
 
@@ -561,7 +561,7 @@ rec {
 
   mypy-boto3-pinpoint-sms-voice-v2 = buildMypyBoto3Package "pinpoint-sms-voice-v2" "1.34.0" "sha256-Ci/nnvgq6YbVPHLZVmLDHjF8GHpViVP7mfUJREFKndg=";
 
-  mypy-boto3-pipes = buildMypyBoto3Package "pipes" "1.34.0" "sha256-c/N5SaT4BS0Ldv/P6yi43gB4LzDeqB9y1Xx1UAHf6dU=";
+  mypy-boto3-pipes = buildMypyBoto3Package "pipes" "1.34.83" "sha256-Z//eO1IEEolh+5loNBmS5R5W5sdyGt/0T88kI726PKA=";
 
   mypy-boto3-polly = buildMypyBoto3Package "polly" "1.34.43" "sha256-rx5sW32N6H47fpy5yGvwlKKVKS/uIKOtLfsjoGoNPJg=";
 
@@ -575,13 +575,13 @@ rec {
 
   mypy-boto3-qldb-session = buildMypyBoto3Package "qldb-session" "1.34.0" "sha256-JHePiaFCfIJPxZzvC1U38xrBGkDvB9+yKwPecaZl7BY=";
 
-  mypy-boto3-quicksight = buildMypyBoto3Package "quicksight" "1.34.73" "sha256-tbO9V8EiPR1OyCYImQHYmMsZtvclNK7Mnoqt3s0YRFM=";
+  mypy-boto3-quicksight = buildMypyBoto3Package "quicksight" "1.34.79" "sha256-oHaZrX3aRoaFs5VLC7dQMihSocWLmCupHGhReXPbGBo=";
 
   mypy-boto3-ram = buildMypyBoto3Package "ram" "1.34.0" "sha256-9sOspEfirpVQ8cT9ILUSWypxBswpAD75A0hHRV7glNg=";
 
   mypy-boto3-rbin = buildMypyBoto3Package "rbin" "1.34.0" "sha256-Y+a/p3r5IgWk4oH6MOeq0e7rMiNvLCqoz1ZE+xXNtOw=";
 
-  mypy-boto3-rds = buildMypyBoto3Package "rds" "1.34.65" "sha256-uEgsI/MsacidGZEYWhvXDVE2RUFdtuh027YZbL4Lyb8=";
+  mypy-boto3-rds = buildMypyBoto3Package "rds" "1.34.83" "sha256-/H99xDRpX9egs39pRaYkvJ3GM6syh+famJmTTRsCgYs=";
 
   mypy-boto3-rds-data = buildMypyBoto3Package "rds-data" "1.34.6" "sha256-d+WXt3cSUe5ZxynSjPSJxXgv6evP/rhZrX1ua9rtSx8=";
 
@@ -591,13 +591,13 @@ rec {
 
   mypy-boto3-redshift-serverless = buildMypyBoto3Package "redshift-serverless" "1.34.16" "sha256-ag5tKb1+4cHiG99OszDNGdnX9RPRPraaqM8p3IqgLBg=";
 
-  mypy-boto3-rekognition = buildMypyBoto3Package "rekognition" "1.34.20" "sha256-zKJX/AlDoDKUbrI1LZq2kk5fr+SNqES6gniM0FQGeaM=";
+  mypy-boto3-rekognition = buildMypyBoto3Package "rekognition" "1.34.82" "sha256-qy7yacSuG6cARR2L/YjBGWYM1BU5/qtMr/H08x3XFIM=";
 
   mypy-boto3-resiliencehub = buildMypyBoto3Package "resiliencehub" "1.34.0" "sha256-F/ZRCp/M/6kBI4Apb3mISzqe1Zi4Y7gq/vu0dvyyTvM=";
 
   mypy-boto3-resource-explorer-2 = buildMypyBoto3Package "resource-explorer-2" "1.34.41" "sha256-Q4MCAvEZkYRnDLEF9d8x+FOMUJ9O2eCb2mZr/e8Ut24=";
 
-  mypy-boto3-resource-groups = buildMypyBoto3Package "resource-groups" "1.34.0" "sha256-Wz1Oo/Ze6ROHkg5EAas7ZKLOWE6RS+uKpNea79WUrLY=";
+  mypy-boto3-resource-groups = buildMypyBoto3Package "resource-groups" "1.34.79" "sha256-tSCHhtaSb+dnXD8D2aNR6DBAlhHbvU3zx6YceGTlzgM=";
 
   mypy-boto3-resourcegroupstaggingapi = buildMypyBoto3Package "resourcegroupstaggingapi" "1.34.0" "sha256-ko55TJeH/EGsAp1Y8ZTYhmGEqWGKQTnN3IQEF31V6Ns=";
 
@@ -621,7 +621,7 @@ rec {
 
   mypy-boto3-s3 = buildMypyBoto3Package "s3" "1.34.65" "sha256-L830Es4pJLLws021mr8GqcC75M0zYfFPDSweIRwPfd0=";
 
-  mypy-boto3-s3control = buildMypyBoto3Package "s3control" "1.34.18" "sha256-53s5ii1gFX9toigiazEtS5Jogg3VFFr+1/uiLzoU7Uo=";
+  mypy-boto3-s3control = buildMypyBoto3Package "s3control" "1.34.83" "sha256-A0P6rAebwt9IUKTderlE8tWQJexUjthpO6KClrDbNyc=";
 
   mypy-boto3-s3outposts = buildMypyBoto3Package "s3outposts" "1.34.0" "sha256-xLuGP9Fe0S7zRimt1AKd9KOrytmNd/GTRg5OVi5Xpos=";
 
@@ -727,7 +727,7 @@ rec {
 
   mypy-boto3-translate = buildMypyBoto3Package "translate" "1.34.0" "sha256-4tjjmwMtIPpMwKZ3yqB96XEb1WidCxMIj2Cfjn0nTy8=";
 
-  mypy-boto3-verifiedpermissions = buildMypyBoto3Package "verifiedpermissions" "1.34.78" "sha256-k3Rv2K9/i6VVH0WSb35Izr/g2LWIEXiiFgSWEtQUdY0=";
+  mypy-boto3-verifiedpermissions = buildMypyBoto3Package "verifiedpermissions" "1.34.79" "sha256-su6Lq/NVOp2Shgb6UPdrJLqAv9qG8Mx3bQk9PwihybM=";
 
   mypy-boto3-voice-id = buildMypyBoto3Package "voice-id" "1.34.0" "sha256-c6HseKIqRPs8NmFZYsg+9jWCMGpMi+VpvM9BiWq16PY=";
 
diff --git a/pkgs/development/python-modules/nbformat/default.nix b/pkgs/development/python-modules/nbformat/default.nix
index 8207fd2eaef8c..588c5823ec34b 100644
--- a/pkgs/development/python-modules/nbformat/default.nix
+++ b/pkgs/development/python-modules/nbformat/default.nix
@@ -15,27 +15,31 @@
 
 buildPythonPackage rec {
   pname = "nbformat";
-  version = "5.10.3";
-  format = "pyproject";
+  version = "5.10.4";
+  pyproject = true;
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-YO1ekQ73xiZLh9ZE8naxtJ4kARkw3u9UYFGI3eshFoU=";
+    hash = "sha256-MiFosU+Tel0RNimI7KwqSVLT2OOiy+sjGVhGMSJtWzo=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
     hatch-nodejs-version
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     fastjsonschema
     jsonschema
     jupyter-core
     traitlets
   ];
 
+  pythonImportsCheck = [
+    "nbformat"
+  ];
+
   nativeCheckInputs = [
     pep440
     pytestCheckHook
diff --git a/pkgs/development/python-modules/niaarm/default.nix b/pkgs/development/python-modules/niaarm/default.nix
index 747cf394f4ad0..ff61dfd1eb8de 100644
--- a/pkgs/development/python-modules/niaarm/default.nix
+++ b/pkgs/development/python-modules/niaarm/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "niaarm";
-  version = "0.3.8";
+  version = "0.3.9";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "firefly-cpp";
     repo = "NiaARM";
     rev = "refs/tags/${version}";
-    hash = "sha256-p07SuCl433rj6IEMO1eg5QHAUTVfgqYo5gsprMvQg2Y=";
+    hash = "sha256-J3126RSJYBCSyxoPsvsDgmx9E+9fP2h6avPiCHISL7c=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/numba/default.nix b/pkgs/development/python-modules/numba/default.nix
index b0ca879248e83..2df58149ba4ac 100644
--- a/pkgs/development/python-modules/numba/default.nix
+++ b/pkgs/development/python-modules/numba/default.nix
@@ -32,7 +32,7 @@ let
 in buildPythonPackage rec {
   # Using an untagged version, with numpy 1.25 support, when it's released
   # also drop the versioneer patch in postPatch
-  version = "0.59.0";
+  version = "0.59.1";
   pname = "numba";
   pyproject = true;
 
@@ -54,7 +54,7 @@ in buildPythonPackage rec {
     # use `forceFetchGit = true;`.` If in the future we'll observe the hash
     # changes too often, we can always use forceFetchGit, and inject the
     # relevant strings ourselves, using `sed` commands, in extraPostFetch.
-    hash = "sha256-wd4TujPhV2Jy/HUUXLHAlcbVFm4gfQNWxWFXD+jeZC4=";
+    hash = "sha256-4udpgLLHbHNtxPiYVkj+gxAjTWV3ClZOv98Y313/qbc=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/oci/default.nix b/pkgs/development/python-modules/oci/default.nix
index b4ad1c942d45f..ebb27d0dfe7e5 100644
--- a/pkgs/development/python-modules/oci/default.nix
+++ b/pkgs/development/python-modules/oci/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "oci";
-  version = "2.125.0";
+  version = "2.125.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "oracle";
     repo = "oci-python-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-H4LGMl2SuXAGD2cdaDQYkWkYqhjp+EDFOnrku6cG6jk=";
+    hash = "sha256-tpWaH/uiUm0wmJrSyxiy9H8I/c44KmGjWEecBk6Yq40=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/oncalendar/default.nix b/pkgs/development/python-modules/oncalendar/default.nix
new file mode 100644
index 0000000000000..5b4920a6cef75
--- /dev/null
+++ b/pkgs/development/python-modules/oncalendar/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "oncalendar";
+  version = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "cuu508";
+    repo = "oncalendar";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-eQYxOnL4/TJbY/nijcPl8TqK2MrwcdISKGfZQoI7828=";
+  };
+
+  nativeBuildInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "oncalendar" ];
+
+  meta = with lib; {
+    description = "A systemd OnCalendar expression parser and evaluator";
+    homepage = "https://github.com/cuu508/oncalendar";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ phaer ];
+  };
+}
diff --git a/pkgs/development/python-modules/openai/default.nix b/pkgs/development/python-modules/openai/default.nix
index b61fc611b9d2d..67532ed5e6df3 100644
--- a/pkgs/development/python-modules/openai/default.nix
+++ b/pkgs/development/python-modules/openai/default.nix
@@ -25,7 +25,7 @@
 
 buildPythonPackage rec {
   pname = "openai";
-  version = "1.16.2";
+  version = "1.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7.1";
@@ -34,7 +34,7 @@ buildPythonPackage rec {
     owner = "openai";
     repo = "openai-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7JWwEoVEdAy+tPcaYUPN7xA62Egzlv/2NNcDqvmDYh4=";
+    hash = "sha256-NAfG8edQB9L72MlESqMXw6fo/s2F/BjAf5yRAmx+J/s=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/optimum/default.nix b/pkgs/development/python-modules/optimum/default.nix
index 2b8a9415fc2c9..1bdda5a5afa4f 100644
--- a/pkgs/development/python-modules/optimum/default.nix
+++ b/pkgs/development/python-modules/optimum/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "optimum";
-  version = "1.18.0";
+  version = "1.18.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "optimum";
     rev = "refs/tags/v${version}";
-    hash = "sha256-svNavPO/3ARqcBDpvaAdbbSqFpzgUY72vy2J1d4Bt90=";
+    hash = "sha256-Y+KWvpd/ULthCOr18hQjP0REQPcs2Ql2aUi3DIKIOpQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/optuna/default.nix b/pkgs/development/python-modules/optuna/default.nix
index dd423b87a2266..97f065323c728 100644
--- a/pkgs/development/python-modules/optuna/default.nix
+++ b/pkgs/development/python-modules/optuna/default.nix
@@ -43,7 +43,7 @@
 
 buildPythonPackage rec {
   pname = "optuna";
-  version = "3.6.0";
+  version = "3.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -52,7 +52,7 @@ buildPythonPackage rec {
     owner = "optuna";
     repo = "optuna";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KYSefIVGBUsN+A7nOWPBJyD4a+Wa+pO9WLyTpg8Cuy4=";
+    hash = "sha256-+ZqMRIza4K5VWTUm7tC87S08SI+C8GKd2Uh3rGoHwd0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/oras/default.nix b/pkgs/development/python-modules/oras/default.nix
index b1d0c07b0c3c2..16a8a9d9fd6b6 100644
--- a/pkgs/development/python-modules/oras/default.nix
+++ b/pkgs/development/python-modules/oras/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, jsonschema
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonschema,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "oras";
-  version = "0.1.28";
+  version = "0.1.29";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "oras-project";
     repo = "oras-py";
     rev = "refs/tags/${version}";
-    hash = "sha256-yka4TypKqGczW+NugmCGa8PgtaSJeaQ4sPphPsIPLow=";
+    hash = "sha256-ZV+J5zqRBRIddWdmLzzjpZi3M5E/HfkG8lWK9xzy5tw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jsonschema
     requests
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "oras"
-  ];
+  pythonImportsCheck = [ "oras" ];
 
   disabledTests = [
     # Test requires network access
diff --git a/pkgs/development/python-modules/orbax-checkpoint/default.nix b/pkgs/development/python-modules/orbax-checkpoint/default.nix
index 37ecfccc6d701..aa5a5572dec99 100644
--- a/pkgs/development/python-modules/orbax-checkpoint/default.nix
+++ b/pkgs/development/python-modules/orbax-checkpoint/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, absl-py
-, buildPythonPackage
-, cached-property
-, etils
-, fetchPypi
-, flit-core
-, importlib-resources
-, jax
-, jaxlib
-, msgpack
-, nest-asyncio
-, numpy
-, protobuf
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, tensorstore
-, typing-extensions
+{
+  lib,
+  absl-py,
+  buildPythonPackage,
+  cached-property,
+  etils,
+  fetchPypi,
+  flit-core,
+  importlib-resources,
+  jax,
+  jaxlib,
+  msgpack,
+  nest-asyncio,
+  numpy,
+  protobuf,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  tensorstore,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "orbax-checkpoint";
-  version = "0.5.7";
+  version = "0.5.9";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -30,14 +31,12 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "orbax_checkpoint";
     inherit version;
-    hash = "sha256-3hRUm4mSIKT0RUU5Z8GsLXFluBUlM0JYd0YAXwOpgTs=";
+    hash = "sha256-H96IkUM3IxV79uddNBCU0dq+0dvPx8/Ps4HeCItGi2A=";
   };
 
-  nativeBuildInputs = [
-    flit-core
-  ];
+  build-system = [ flit-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     absl-py
     cached-property
     etils
diff --git a/pkgs/development/python-modules/osc/default.nix b/pkgs/development/python-modules/osc/default.nix
index a51352785f537..ef96910759625 100644
--- a/pkgs/development/python-modules/osc/default.nix
+++ b/pkgs/development/python-modules/osc/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "osc";
-  version = "1.3.1";
+  version = "1.6.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "openSUSE";
     repo = "osc";
     rev = version;
-    sha256 = "sha256-pywSXGM3IX3cTr1uJIP7pNGIYE/skMIoJeoaMU75zwc=";
+    hash = "sha256-U76nAE7NdLIdrKzRC0sP8hy6G6A8Tr4Qe2PGZI2xvyk=";
   };
 
   buildInputs = [ bashInteractive ]; # needed for bash-completion helper
@@ -45,7 +45,7 @@ buildPythonPackage rec {
     homepage = "https://github.com/openSUSE/osc";
     description = "opensuse-commander with svn like handling";
     mainProgram = "osc";
-    maintainers = [ maintainers.peti ];
+    maintainers = with maintainers; [ peti saschagrunert ];
     license = licenses.gpl2;
   };
 
diff --git a/pkgs/development/python-modules/paste/default.nix b/pkgs/development/python-modules/paste/default.nix
index 9248eca812557..a13706dacb549 100644
--- a/pkgs/development/python-modules/paste/default.nix
+++ b/pkgs/development/python-modules/paste/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "paste";
-  version = "3.8.0";
+  version = "3.9.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "cdent";
     repo = "paste";
     rev = "refs/tags/${version}";
-    hash = "sha256-T9VG91Y8hap1nt3FkuCGsv8nglWNlRajvsvljXexH3Y=";
+    hash = "sha256-HdeShtslnvjmuiUb0W3ASnSWcZnyDJcthsIOjYmuD8I=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pbs-installer/default.nix b/pkgs/development/python-modules/pbs-installer/default.nix
new file mode 100644
index 0000000000000..ab892b5260e77
--- /dev/null
+++ b/pkgs/development/python-modules/pbs-installer/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pythonOlder
+, pdm-backend
+, httpx
+, zstandard
+}:
+
+buildPythonPackage rec {
+  pname = "pbs-installer";
+  version = "2024.4.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "frostming";
+    repo = "pbs-installer";
+    rev = version;
+    hash = "sha256-0LuajPD/sM0LoyRoCkGJ9medUcWNEPqvY76GgK2rIac=";
+  };
+
+  build-system = [
+    pdm-backend
+  ];
+
+  optional-dependencies = {
+    all = optional-dependencies.install ++ optional-dependencies.download;
+    download = [
+      httpx
+    ];
+    install = [
+      zstandard
+    ];
+  };
+
+  pythonImportsCheck = [ "pbs_installer" ];
+
+  # upstream has no test
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Installer for Python Build Standalone";
+    homepage = "https://github.com/frostming/pbs-installer";
+    changelog = "https://github.com/frostming/pbs-installer/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/pkgs/development/python-modules/pillow-heif/default.nix b/pkgs/development/python-modules/pillow-heif/default.nix
index 10edc6edb8bd1..6560c63ac2832 100644
--- a/pkgs/development/python-modules/pillow-heif/default.nix
+++ b/pkgs/development/python-modules/pillow-heif/default.nix
@@ -27,14 +27,14 @@
 
 buildPythonPackage rec {
   pname = "pillow-heif";
-  version = "0.15.0";
+  version = "0.16.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bigcat88";
     repo = "pillow_heif";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zSPbOb7+U45Vmad6IwNtkunLXdT3ledKAE4QWlSeP0g=";
+    hash = "sha256-TpK6VK2YoOtc4ueag33m5n1umcUWOUgcda/MZEEOR7g=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/ping3/default.nix b/pkgs/development/python-modules/ping3/default.nix
index 998904bd98754..52f780cfad934 100644
--- a/pkgs/development/python-modules/ping3/default.nix
+++ b/pkgs/development/python-modules/ping3/default.nix
@@ -1,32 +1,37 @@
-{ lib
-, buildPythonPackage
-, setuptools
-, wheel
-, fetchPypi
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "ping3";
-  version = "4.0.5";
-  format = "pyproject";
+  version = "4.0.8";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-HwkYXokyFDZSSZayEtID08q1rSJofedGRXDxx/udwFE=";
+    hash = "sha256-mrRg61fwBrcfl3ppPRVyFaq9a7y8bNZCi2lR6q4MKHU=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
+
+  # Tests require additional permissions
+  doCheck = false;
 
   pythonImportsCheck = [ "ping3" ];
 
   meta = with lib; {
-    description = "A pure python3 version of ICMP ping implementation using raw socket";
-    mainProgram = "ping3";
-    homepage = "https://pypi.org/project/ping3";
+    description = "ICMP ping implementation using raw socket";
+    homepage = "https://github.com/kyan001/ping3";
+    changelog = "https://github.com/kyan001/ping3/blob/master/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ siraben ];
+    mainProgram = "ping3";
   };
 }
diff --git a/pkgs/development/python-modules/playwrightcapture/default.nix b/pkgs/development/python-modules/playwrightcapture/default.nix
index e619ebeb89d8a..283a9ae38f312 100644
--- a/pkgs/development/python-modules/playwrightcapture/default.nix
+++ b/pkgs/development/python-modules/playwrightcapture/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, beautifulsoup4
-, buildPythonPackage
-, dateparser
-, fetchFromGitHub
-, playwright
-, playwright-stealth
-, poetry-core
-, puremagic
-, pydub
-, pythonOlder
-, pythonRelaxDepsHook
-, pytz
-, requests
-, setuptools
-, speechrecognition
-, tzdata
-, w3lib
+{
+  lib,
+  beautifulsoup4,
+  buildPythonPackage,
+  dateparser,
+  fetchFromGitHub,
+  playwright,
+  playwright-stealth,
+  poetry-core,
+  puremagic,
+  pydub,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pytz,
+  requests,
+  setuptools,
+  speechrecognition,
+  tzdata,
+  w3lib,
 }:
 
 buildPythonPackage rec {
   pname = "playwrightcapture";
-  version = "1.24.1";
+  version = "1.24.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,7 +30,7 @@ buildPythonPackage rec {
     owner = "Lookyloo";
     repo = "PlaywrightCapture";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+2BxXgIC595FM3FDIbFjFpWIEkqQrDILWFjQkyN5nao=";
+    hash = "sha256-T/6WfDFW4m9bB09mBwKw1I0iQ0HF0I2Pzf2MXExJVGY=";
   };
 
   pythonRelaxDeps = [
@@ -39,10 +40,9 @@ buildPythonPackage rec {
     "tzdata"
   ];
 
-  build-system = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     beautifulsoup4
@@ -68,9 +68,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "playwrightcapture"
-  ];
+  pythonImportsCheck = [ "playwrightcapture" ];
 
   meta = with lib; {
     description = "Capture a URL with Playwright";
diff --git a/pkgs/development/python-modules/pplpy/default.nix b/pkgs/development/python-modules/pplpy/default.nix
index c3a1f8192acf3..56797bcb55862 100644
--- a/pkgs/development/python-modules/pplpy/default.nix
+++ b/pkgs/development/python-modules/pplpy/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "pplpy";
-  version = "0.8.9";
+  version = "0.8.10";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-23o7Vx1u8FP3UTeXXpR8OhweRaMLq5Dq8hW05cwVeX4=";
+    sha256 = "sha256-1CohbIKRTc9NfAAN68mLsza4+D4Ca6XZUszNn4B07/0=";
   };
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/pre-commit-hooks/default.nix b/pkgs/development/python-modules/pre-commit-hooks/default.nix
index aa8722e56ff43..11f226aa0c54b 100644
--- a/pkgs/development/python-modules/pre-commit-hooks/default.nix
+++ b/pkgs/development/python-modules/pre-commit-hooks/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "pre-commit-hooks";
-  version = "4.5.0";
+  version = "4.6.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "pre-commit";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-EiPGdrpD4e9izRNJCjHRp+gR+ClzFtLjs6P57WXDs7I=";
+    hash = "sha256-p/pPpuuNjVxHSPyi4RL2DJlj9weSq8QinugQ4zmv9Ck=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/psd-tools/default.nix b/pkgs/development/python-modules/psd-tools/default.nix
index f9a59e620d909..fbee76dfa02b8 100644
--- a/pkgs/development/python-modules/psd-tools/default.nix
+++ b/pkgs/development/python-modules/psd-tools/default.nix
@@ -10,8 +10,9 @@
 , numpy
 , aggdraw
 , pytestCheckHook
+, pytest-cov
 , ipython
-, cython
+, cython_3
 }:
 
 buildPythonPackage rec {
@@ -29,7 +30,7 @@ buildPythonPackage rec {
   };
 
   nativeBuildInputs = [
-    cython
+    cython_3
   ];
 
   propagatedBuildInputs = [
@@ -45,6 +46,7 @@ buildPythonPackage rec {
 
   nativeCheckInputs = [
     pytestCheckHook
+    pytest-cov
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/development/python-modules/publicsuffix/default.nix b/pkgs/development/python-modules/publicsuffix/default.nix
index 9de169f696dd1..11f331cd67929 100644
--- a/pkgs/development/python-modules/publicsuffix/default.nix
+++ b/pkgs/development/python-modules/publicsuffix/default.nix
@@ -1,25 +1,37 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+  pythonOlder,
+}:
 
 buildPythonPackage rec {
   pname = "publicsuffix";
   version = "1.1.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "22ce1d65ab6af5e9b2122e2443facdb93fb5c4abf24138099cb10fe7989f43b6";
+    hash = "sha256-Is4dZatq9emyEi4kQ/rNuT+1xKvyQTgJnLEP55ifQ7Y=";
   };
 
-
   # disable test_fetch and the doctests (which also invoke fetch)
   postPatch = ''
     sed -i -e "/def test_fetch/i\\
     \\t@unittest.skip('requires internet')" -e "/def additional_tests():/,+1d" tests.py
   '';
 
+  build-system = [ setuptools ];
+
+  pythonImportsCheck = [ "publicsuffix" ];
+
   meta = with lib; {
     description = "Allows to get the public suffix of a domain name";
     homepage = "https://pypi.python.org/pypi/publicsuffix/";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/publicsuffix2/default.nix b/pkgs/development/python-modules/publicsuffix2/default.nix
index 064dc3f5f94f8..02a686c31025b 100644
--- a/pkgs/development/python-modules/publicsuffix2/default.nix
+++ b/pkgs/development/python-modules/publicsuffix2/default.nix
@@ -1,4 +1,9 @@
-{ lib, buildPythonPackage, fetchFromGitHub }:
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  setuptools,
+}:
 let
   tagVersion = "2.2019-12-21";
 in
@@ -6,16 +11,18 @@ buildPythonPackage {
   pname = "publicsuffix2";
   # tags have dashes, while the library version does not
   # see https://github.com/nexB/python-publicsuffix2/issues/12
-  version = lib.replaceStrings ["-"] [""] tagVersion;
-  format = "setuptools";
+  version = lib.replaceStrings [ "-" ] [ "" ] tagVersion;
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "nexB";
     repo = "python-publicsuffix2";
     rev = "release-${tagVersion}";
-    sha256 = "1dkvfvl0izq9hqzilnw8ipkbgjs9xyad9p21i3864hzinbh0wp9r";
+    hash = "sha256-OV0O4LLxQ2LQiEHc1JTvScu35o2IWxo/hgn/COh2e7Y=";
   };
 
+  build-system = [ setuptools ];
+
   postPatch = ''
     # only used to update the interal publicsuffix list
     substituteInPlace setup.py \
diff --git a/pkgs/development/python-modules/publicsuffixlist/default.nix b/pkgs/development/python-modules/publicsuffixlist/default.nix
index d30f8f1bca698..eb9b8e6a34639 100644
--- a/pkgs/development/python-modules/publicsuffixlist/default.nix
+++ b/pkgs/development/python-modules/publicsuffixlist/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "publicsuffixlist";
-  version = "0.10.0.20240403";
+  version = "0.10.0.20240412";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-DQgjgr35l5I33BWLaOQTUnQpFhBMXUB0Jx4jQXbeBZU=";
+    hash = "sha256-G2hdl029MlirHH9HNEnPKlUnWnSplbYKhBDw8H1/W3g=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/pubnub/default.nix b/pkgs/development/python-modules/pubnub/default.nix
index b6437f880ddb1..58b6bd159d508 100644
--- a/pkgs/development/python-modules/pubnub/default.nix
+++ b/pkgs/development/python-modules/pubnub/default.nix
@@ -1,35 +1,34 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, busypie
-, cbor2
-, fetchFromGitHub
-, pycryptodomex
-, pytestCheckHook
-, pytest-vcr
-, pytest-asyncio
-, requests
-, pythonOlder
-, setuptools
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  busypie,
+  cbor2,
+  fetchFromGitHub,
+  pycryptodomex,
+  pytestCheckHook,
+  pytest-vcr,
+  pytest-asyncio,
+  requests,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pubnub";
-  version = "7.4.3";
+  version = "7.4.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    owner = pname;
+    owner = "pubnub";
     repo = "python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-t3lNotfT3C2hv5AGPWZpL3wN68m8HRcjsccUz8QcY5I=";
+    hash = "sha256-4Paodw3t2RvAKrDMcWHIGLs5JNtH/9sP+BTyAm/hj4E=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -57,9 +56,7 @@ buildPythonPackage rec {
     "test_handshaking"
   ];
 
-  pythonImportsCheck = [
-    "pubnub"
-  ];
+  pythonImportsCheck = [ "pubnub" ];
 
   meta = with lib; {
     description = "Python-based APIs for PubNub";
diff --git a/pkgs/development/python-modules/pwndbg/default.nix b/pkgs/development/python-modules/pwndbg/default.nix
new file mode 100644
index 0000000000000..7bee0345afdb7
--- /dev/null
+++ b/pkgs/development/python-modules/pwndbg/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, capstone
+, future
+, ipython
+, psutil
+, pwntools
+, pycparser
+, pyelftools
+, pygments
+, requests
+, rpyc
+, sortedcontainers
+, tabulate
+, typing-extensions
+, unicorn
+, gdb-pt-dump
+, poetry-core
+, pythonRelaxDepsHook
+}:
+let
+  # The newest gdb-pt-dump is incompatible with pwndbg 2024.02.14.
+  # See https://github.com/martinradev/gdb-pt-dump/issues/29
+  gdb-pt-dump' = gdb-pt-dump.overrideAttrs (oldAttrs: {
+    version = "0-unstable-2023-11-11";
+
+    src = fetchFromGitHub {
+      inherit (oldAttrs.src) owner repo;
+      rev = "89ea252f6efc5d75eacca16fc17ff8966a389690";
+      hash = "sha256-i+SAcZ/kgfKstJnkyCVMh/lWtrJJOHTYoJH4tVfYHrE=";
+    };
+
+    # This revision relies on the package being imported from within GDB, which
+    # won't work with pythonImportsCheck.
+    pythonImportsCheck = [ ];
+  });
+in
+buildPythonPackage rec {
+  pname = "pwndbg";
+  version = "2024.02.14";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pwndbg";
+    repo = "pwndbg";
+    rev = version;
+    hash = "sha256-/pDo2J5EtpWWCurD7H34AlTlQi7WziIRRxHxGm3K2yk=";
+  };
+
+  nativeBuildInputs = [ poetry-core pythonRelaxDepsHook ];
+  pythonRelaxDeps = true;
+
+  propagatedBuildInputs = [
+    capstone
+    future
+    ipython
+    psutil
+    pwntools
+    pycparser
+    pyelftools
+    pygments
+    requests
+    rpyc
+    sortedcontainers
+    tabulate
+    typing-extensions
+    unicorn
+    gdb-pt-dump'
+  ];
+
+  meta = {
+    description = "Exploit Development and Reverse Engineering with GDB Made Easy";
+    homepage = "https://pwndbg.re";
+    changelog = "https://github.com/pwndbg/pwndbg/releases/tag/${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ msanft ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
index 496ebc4e8fa7f..90b623c35ef49 100644
--- a/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
+++ b/pkgs/development/python-modules/pyTelegramBotAPI/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, aiohttp
-, aioredis
-, buildPythonPackage
-, coloredlogs
-, fastapi
-, fetchFromGitHub
-, hatchling
-, pillow
-, psutil
-, pytestCheckHook
-, pythonOlder
-, redis
-, requests
-, ujson
-, uvicorn
-, watchdog
+{
+  lib,
+  aiohttp,
+  aioredis,
+  buildPythonPackage,
+  coloredlogs,
+  fastapi,
+  fetchFromGitHub,
+  hatchling,
+  pillow,
+  psutil,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  requests,
+  ujson,
+  uvicorn,
+  watchdog,
 }:
 
 buildPythonPackage rec {
   pname = "pytelegrambotapi";
-  version = "4.16.0";
+  version = "4.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,55 +29,30 @@ buildPythonPackage rec {
     owner = "eternnoir";
     repo = "pyTelegramBotAPI";
     rev = "refs/tags/${version}";
-    hash = "sha256-w039aPK+PdOiiOj5ZZAUfyHQ6QDrKySVIijcOw+GIOk=";
+    hash = "sha256-Asw6wpZs0FgsUYLVQ4u4qQgIFdvShcsN3XvgHn48cbI=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   passthru.optional-dependencies = {
-    json = [
-      ujson
-    ];
-    PIL = [
-      pillow
-    ];
-    redis = [
-      redis
-    ];
-    aioredis = [
-      aioredis
-    ];
-    aiohttp = [
-      aiohttp
-    ];
-    fastapi = [
-      fastapi
-    ];
-    uvicorn = [
-      uvicorn
-    ];
-    psutil = [
-      psutil
-    ];
-    coloredlogs = [
-      coloredlogs
-    ];
-    watchdog = [
-      watchdog
-    ];
+    json = [ ujson ];
+    PIL = [ pillow ];
+    redis = [ redis ];
+    aioredis = [ aioredis ];
+    aiohttp = [ aiohttp ];
+    fastapi = [ fastapi ];
+    uvicorn = [ uvicorn ];
+    psutil = [ psutil ];
+    coloredlogs = [ coloredlogs ];
+    watchdog = [ watchdog ];
   };
 
   checkInputs = [
     pytestCheckHook
     requests
-  ] ++ passthru.optional-dependencies.watchdog
-  ++ passthru.optional-dependencies.aiohttp;
+  ] ++ passthru.optional-dependencies.watchdog ++ passthru.optional-dependencies.aiohttp;
 
-  pythonImportsCheck = [
-    "telebot"
-  ];
+  pythonImportsCheck = [ "telebot" ];
 
   meta = with lib; {
     description = "Python implementation for the Telegram Bot API";
diff --git a/pkgs/development/python-modules/pyads/default.nix b/pkgs/development/python-modules/pyads/default.nix
index bdedb2392af7d..68dd02bb721db 100644
--- a/pkgs/development/python-modules/pyads/default.nix
+++ b/pkgs/development/python-modules/pyads/default.nix
@@ -1,45 +1,44 @@
-{ lib
-, adslib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
+{
+  lib,
+  adslib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyads";
-  version = "3.3.9";
-  format = "setuptools";
+  version = "3.4.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "stlehmann";
-    repo = pname;
-    rev = version;
-    hash = "sha256-eNouFJQDgp56fgkA7wZKfosKWOKU6OvXRjFwjCMvZqI=";
+    repo = "pyads";
+    rev = "refs/tags/${version}";
+    hash = "sha256-HJ/dlRuwFSY5j/mAp6rLMlTV59GFwrTV27n73TWlCUo=";
   };
 
-  buildInputs = [
-    adslib
-  ];
+  build-system = [ setuptools ];
+
+  buildInputs = [ adslib ];
 
   patchPhase = ''
     substituteInPlace pyads/pyads_ex.py \
-      --replace "ctypes.CDLL(adslib)" "ctypes.CDLL(\"${adslib}/lib/adslib.so\")"
+      --replace-fail "ctypes.CDLL(adslib)" "ctypes.CDLL(\"${adslib}/lib/adslib.so\")"
   '';
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "pyads"
-  ];
+  pythonImportsCheck = [ "pyads" ];
 
   meta = with lib; {
     description = "Python wrapper for TwinCAT ADS library";
     homepage = "https://github.com/MrLeeh/pyads";
+    changelog = "https://github.com/stlehmann/pyads/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ jamiemagee ];
   };
diff --git a/pkgs/development/python-modules/pybotvac/default.nix b/pkgs/development/python-modules/pybotvac/default.nix
index a104e1e1aeb7b..ae1d805712e0d 100644
--- a/pkgs/development/python-modules/pybotvac/default.nix
+++ b/pkgs/development/python-modules/pybotvac/default.nix
@@ -1,29 +1,35 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, pythonOlder
-, requests
-, requests-oauthlib
-, voluptuous
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  pythonOlder,
+  requests,
+  requests-oauthlib,
+  voluptuous,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pybotvac";
-  version = "0.0.24";
-  format = "setuptools";
+  version = "0.0.25";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-SXIs9AUXWm1H49MVDT4z6msNPaW5sAU20rcsWZ7ERdU=";
+    hash = "sha256-EvGBStEYgqFO9GMtxs1qtDixb4y2Ptom8xncRUv4ur4=";
   };
 
-  patches = [
-    ./urllib3-2.0-compat.patch
-  ];
+  postPatch = ''
+    substituteInPlace pybotvac/robot.py \
+      --replace-fail "import urllib3" "" \
+      --replace-fail "urllib3.disable_warnings(urllib3.exceptions.SubjectAltNameWarning)" "# urllib3.disable_warnings(urllib3.exceptions.SubjectAltNameWarning)"
+  '';
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     requests
     requests-oauthlib
     voluptuous
@@ -32,9 +38,7 @@ buildPythonPackage rec {
   # Module no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pybotvac"
-  ];
+  pythonImportsCheck = [ "pybotvac" ];
 
   meta = with lib; {
     description = "Python module for interacting with Neato Botvac Connected vacuum robots";
diff --git a/pkgs/development/python-modules/pybotvac/urllib3-2.0-compat.patch b/pkgs/development/python-modules/pybotvac/urllib3-2.0-compat.patch
deleted file mode 100644
index 8b6ef4e91cc31..0000000000000
--- a/pkgs/development/python-modules/pybotvac/urllib3-2.0-compat.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/pybotvac/robot.py b/pybotvac/robot.py
-index f87546f..e9a61de 100644
---- a/pybotvac/robot.py
-+++ b/pybotvac/robot.py
-@@ -6,7 +6,6 @@ from datetime import datetime, timezone
- from email.utils import format_datetime

- 

- import requests

--import urllib3

- from voluptuous import (

-     ALLOW_EXTRA,

-     All,

-@@ -21,8 +20,6 @@ from voluptuous import (
- from .exceptions import NeatoRobotException, NeatoUnsupportedDevice

- from .neato import Neato  # For default Vendor argument

- 

--# Disable warning due to SubjectAltNameWarning in certificate

--urllib3.disable_warnings(urllib3.exceptions.SubjectAltNameWarning)

- 

- _LOGGER = logging.getLogger(__name__)

- 

diff --git a/pkgs/development/python-modules/pycaption/default.nix b/pkgs/development/python-modules/pycaption/default.nix
index 3384ad516b5fc..900f93bbea879 100644
--- a/pkgs/development/python-modules/pycaption/default.nix
+++ b/pkgs/development/python-modules/pycaption/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pycaption";
-  version = "2.2.5";
+  version = "2.2.6";
 
   disabled = pythonOlder "3.8";
 
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "pbs";
     repo = "pycaption";
     rev = "refs/tags/${version}";
-    hash = "sha256-zI5zRjvtsVgiIgWsQQgBQHhbYSGRBB6RLYgpbZWJQHs=";
+    hash = "sha256-XN83L6WsRyl9G0ia4uz3SCVcwwUNUyfNMB64RfZh+PA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pydantic/default.nix b/pkgs/development/python-modules/pydantic/default.nix
index bb0a4bedde49a..59ec82ce829b1 100644
--- a/pkgs/development/python-modules/pydantic/default.nix
+++ b/pkgs/development/python-modules/pydantic/default.nix
@@ -23,6 +23,7 @@
 , faker
 , pytestCheckHook
 , pytest-mock
+, eval-type-backport
 }:
 
 buildPythonPackage rec {
@@ -45,7 +46,7 @@ buildPythonPackage rec {
       name = "fix-pytest8-compatibility.patch";
       url = "https://github.com/pydantic/pydantic/commit/825a6920e177a3b65836c13c7f37d82b810ce482.patch";
       hash = "sha256-Dap5DtDzHw0jS/QUo5CRI9sLDJ719GRyC4ZNDWEdzus=";
-     })
+    })
   ];
 
   buildInputs = lib.optionals (pythonOlder "3.9") [
@@ -69,13 +70,16 @@ buildPythonPackage rec {
     ];
   };
 
-  nativeCheckInputs = [
-    cloudpickle
-    dirty-equals
-    faker
-    pytest-mock
-    pytestCheckHook
-  ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
+  nativeCheckInputs =
+    [
+      cloudpickle
+      dirty-equals
+      faker
+      pytest-mock
+      pytestCheckHook
+    ]
+    ++ lib.flatten (lib.attrValues passthru.optional-dependencies)
+    ++ lib.optionals (pythonOlder "3.10") [ eval-type-backport ];
 
   preCheck = ''
     export HOME=$(mktemp -d)
diff --git a/pkgs/development/python-modules/pyfibaro/default.nix b/pkgs/development/python-modules/pyfibaro/default.nix
index 2f059d19a1b9f..7822fa8da6e6e 100644
--- a/pkgs/development/python-modules/pyfibaro/default.nix
+++ b/pkgs/development/python-modules/pyfibaro/default.nix
@@ -1,45 +1,38 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, requests-mock
-, setuptools
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  requests-mock,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyfibaro";
-  version = "0.7.6";
-  format = "pyproject";
+  version = "0.7.7";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "rappenze";
-    repo = pname;
+    repo = "pyfibaro";
     rev = "refs/tags/${version}";
-    hash = "sha256-yE9HkAlGj1t90FwmwHDsk3ea2UOl0bG3UtYXxz/SWbI=";
+    hash = "sha256-jsl2Xc6bzN7SVyMnFeCwMpFUEa6xUWGn/T96MrDXlCE=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    requests
-  ];
+  dependencies = [ requests ];
 
   nativeCheckInputs = [
     pytestCheckHook
     requests-mock
   ];
 
-  pythonImportsCheck = [
-    "pyfibaro"
-  ];
+  pythonImportsCheck = [ "pyfibaro" ];
 
   meta = with lib; {
     description = "Library to access FIBARO Home center";
diff --git a/pkgs/development/python-modules/pyformlang/default.nix b/pkgs/development/python-modules/pyformlang/default.nix
index f5cc07c29e749..1f25eac53a9f1 100644
--- a/pkgs/development/python-modules/pyformlang/default.nix
+++ b/pkgs/development/python-modules/pyformlang/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "pyformlang";
-  version = "1.0.9";
+  version = "1.0.10";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oCwYM4yQ1KYZpC7vVpeHSIDH2Q930JAuTDq9mds9zoc=";
+    hash = "sha256-VwsIkVIgRHczdT3QcW9Teg2FiaoPn6El17VHhy/x72s=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/pyftdi/default.nix b/pkgs/development/python-modules/pyftdi/default.nix
index f004ac7c88c4d..009d0fab1d809 100644
--- a/pkgs/development/python-modules/pyftdi/default.nix
+++ b/pkgs/development/python-modules/pyftdi/default.nix
@@ -1,26 +1,30 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pyserial
-, pythonOlder
-, pyusb
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pyserial,
+  pythonOlder,
+  pyusb,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pyftdi";
-  version = "0.55.0";
-  format = "setuptools";
+  version = "0.55.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "eblot";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-EEMHY5EKftci72huF5UmJyh2wJAc8uNh/QhGSSAVXIU=";
+    repo = "pyftdi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-InJJnbAPYlV071EkEWECJC79HLZ6SWo2VP7PqMgOGow=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     pyserial
     pyusb
   ];
@@ -28,9 +32,7 @@ buildPythonPackage rec {
   # Tests require access to the serial port
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyftdi"
-  ];
+  pythonImportsCheck = [ "pyftdi" ];
 
   meta = with lib; {
     description = "User-space driver for modern FTDI devices";
diff --git a/pkgs/development/python-modules/pykakasi/default.nix b/pkgs/development/python-modules/pykakasi/default.nix
index 79ce3eeca8f4c..1cfb8739888da 100644
--- a/pkgs/development/python-modules/pykakasi/default.nix
+++ b/pkgs/development/python-modules/pykakasi/default.nix
@@ -8,30 +8,37 @@
 , pytest-benchmark
 , pytestCheckHook
 , pythonOlder
+, setuptools
 , setuptools-scm
 }:
 
 buildPythonPackage rec {
   pname = "pykakasi";
   version = "2.2.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "miurahr";
-    repo = pname;
+    repo = "pykakasi";
     rev = "refs/tags/v${version}";
     hash = "sha256-ivlenHPD00bxc0c9G368tfTEckOC3vqDB5kMQzHXbVM==";
   };
 
-  nativeBuildInputs = [
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail ', "klepto"' ""
+  '';
+
+  build-system = [
     setuptools-scm
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     jaconv
     deprecated
+    setuptools
   ] ++ lib.optionals (pythonOlder "3.8") [
     importlib-metadata
   ];
diff --git a/pkgs/development/python-modules/pylibftdi/default.nix b/pkgs/development/python-modules/pylibftdi/default.nix
index 32f20e2787541..f6c317cc924a0 100644
--- a/pkgs/development/python-modules/pylibftdi/default.nix
+++ b/pkgs/development/python-modules/pylibftdi/default.nix
@@ -1,42 +1,44 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, libftdi1
-, libusb1
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  libftdi1,
+  libusb1,
+  pythonOlder,
+  poetry-core,
 }:
 
 buildPythonPackage rec {
   pname = "pylibftdi";
-  version = "0.21.0";
-  format = "setuptools";
+  version = "0.22.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-634vUFKFJUf0xsRgIqFmX510U0OWORcereVv3ICliDI=";
+    hash = "sha256-haaqtDj3ZTQoQ6otWbso+7DTCEemIfuYAJhRhZkPAa8=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ poetry-core ];
+
+  dependencies = [
     libftdi1
     libusb1
   ];
 
   postPatch = ''
     substituteInPlace src/pylibftdi/driver.py \
-      --replace "self._load_library('libusb')" "cdll.LoadLibrary('${libusb1.out}/lib/libusb-1.0.so')" \
-      --replace "self._load_library('libftdi')" "cdll.LoadLibrary('${libftdi1.out}/lib/libftdi1.so')"
+      --replace-fail 'self._load_library("libusb")' 'cdll.LoadLibrary("${libusb1.out}/lib/libusb-1.0.so")' \
+      --replace-fail 'self._load_library("libftdi")' 'cdll.LoadLibrary("${libftdi1.out}/lib/libftdi1.so")'
   '';
 
-  pythonImportsCheck = [
-    "pylibftdi"
-  ];
+  pythonImportsCheck = [ "pylibftdi" ];
 
   meta = with lib; {
     description = "Wrapper to Intra2net's libftdi driver for FTDI's USB devices";
     homepage = "https://pylibftdi.readthedocs.io/";
-    changelog = "https://github.com/codedstructure/pylibftdi/blob/${version}0/CHANGES.txt";
+    changelog = "https://github.com/codedstructure/pylibftdi/blob/${version}/CHANGES.txt";
     license = licenses.mit;
     maintainers = with maintainers; [ matthuszagh ];
   };
diff --git a/pkgs/development/python-modules/pylitterbot/default.nix b/pkgs/development/python-modules/pylitterbot/default.nix
index 65a519f0bdffd..0c33c0b2cdf58 100644
--- a/pkgs/development/python-modules/pylitterbot/default.nix
+++ b/pkgs/development/python-modules/pylitterbot/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pylitterbot";
-  version = "2023.4.9";
+  version = "2023.4.11";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "natekspencer";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-QsxzwmAdhx0diPJ/bT+DgJSs70YQ77M76rq2opMq/Ew=";
+    hash = "sha256-OTyQgcGGNktCgYJN33SZn7La7ec+gwR/yVDuH7kcEh4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pymodbus/default.nix b/pkgs/development/python-modules/pymodbus/default.nix
index 4229d30c022d5..f85b893c24bbd 100644
--- a/pkgs/development/python-modules/pymodbus/default.nix
+++ b/pkgs/development/python-modules/pymodbus/default.nix
@@ -1,34 +1,35 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, click
-, fetchFromGitHub
-, prompt-toolkit
-, pygments
-, pyserial
-, pytest-asyncio
-, pytest-xdist
-, pytestCheckHook
-, pythonOlder
-, redis
-, setuptools
-, sqlalchemy
-, twisted
-, typer
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  click,
+  fetchFromGitHub,
+  prompt-toolkit,
+  pygments,
+  pyserial,
+  pytest-asyncio,
+  pytest-xdist,
+  pytestCheckHook,
+  pythonOlder,
+  redis,
+  setuptools,
+  sqlalchemy,
+  twisted,
+  typer,
 }:
 
 buildPythonPackage rec {
   pname = "pymodbus";
-  version = "3.6.6";
+  version = "3.6.7";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "pymodbus-dev";
     repo = "pymodbus";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CnMCHFwzNyzTgVyFDSlE7ggI6eXXYbtGuERIomUa3uA=";
+    hash = "sha256-SbfvVaIpTz4Mzojx9y13lYei4dEz+1NQEE/7bwz29tQ=";
   };
 
   postPatch = ''
@@ -36,9 +37,7 @@ buildPythonPackage rec {
       --replace-fail "--cov-report html " ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   passthru.optional-dependencies = {
     repl = [
@@ -48,9 +47,7 @@ buildPythonPackage rec {
       pygments
       click
     ] ++ typer.optional-dependencies.all;
-    serial = [
-      pyserial
-    ];
+    serial = [ pyserial ];
   };
 
   nativeCheckInputs = [
@@ -70,22 +67,21 @@ buildPythonPackage rec {
     popd
   '';
 
-  pythonImportsCheck = [
-    "pymodbus"
-  ];
+  pythonImportsCheck = [ "pymodbus" ];
 
-  disabledTests = [
-    # Tests often hang
-    "test_connected"
-  ] ++ lib.optionals (lib.versionAtLeast aiohttp.version "3.9.0") [
-    "test_split_serial_packet"
-    "test_serial_poll"
-    "test_simulator"
-  ];
+  disabledTests =
+    [
+      # Tests often hang
+      "test_connected"
+    ]
+    ++ lib.optionals (lib.versionAtLeast aiohttp.version "3.9.0") [
+      "test_split_serial_packet"
+      "test_serial_poll"
+      "test_simulator"
+    ];
 
   meta = with lib; {
     description = "Python implementation of the Modbus protocol";
-    mainProgram = "pymodbus.simulator";
     longDescription = ''
       Pymodbus is a full Modbus protocol implementation using twisted,
       torndo or asyncio for its asynchronous communications core. It can
@@ -96,5 +92,6 @@ buildPythonPackage rec {
     changelog = "https://github.com/pymodbus-dev/pymodbus/releases/tag/v${version}";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "pymodbus.simulator";
   };
 }
diff --git a/pkgs/development/python-modules/pymumble/default.nix b/pkgs/development/python-modules/pymumble/default.nix
index 2a59f3f9499b2..9b89805d5f40c 100644
--- a/pkgs/development/python-modules/pymumble/default.nix
+++ b/pkgs/development/python-modules/pymumble/default.nix
@@ -48,6 +48,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/azlux/pymumble";
     changelog = "https://github.com/azlux/pymumble/releases/tag/${version}";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ thelegy infinisil ];
+    maintainers = with maintainers; [ thelegy ];
   };
 }
diff --git a/pkgs/development/python-modules/pynitrokey/default.nix b/pkgs/development/python-modules/pynitrokey/default.nix
index 58f54f148866a..ad7502b695519 100644
--- a/pkgs/development/python-modules/pynitrokey/default.nix
+++ b/pkgs/development/python-modules/pynitrokey/default.nix
@@ -30,7 +30,7 @@
 
 let
   pname = "pynitrokey";
-  version = "0.4.45";
+  version = "0.4.46";
   mainProgram = "nitropy";
 in
 
@@ -40,7 +40,7 @@ buildPythonPackage {
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-iY4ThrmXP7pEjTYYU4lePVAbuJGTdHX3iKswXzuf7W8=";
+    hash = "sha256-y+D90Ja3YkB6WLQuyGOhV56g6ey7iITzNtOCxpRkzXE=";
   };
 
   propagatedBuildInputs = [
@@ -101,7 +101,7 @@ buildPythonPackage {
     homepage = "https://github.com/Nitrokey/pynitrokey";
     changelog = "https://github.com/Nitrokey/pynitrokey/releases/tag/v${version}";
     license = with licenses; [ asl20 mit ];
-    maintainers = with maintainers; [ frogamic ];
+    maintainers = with maintainers; [ frogamic raitobezarius ];
     inherit mainProgram;
   };
 }
diff --git a/pkgs/development/python-modules/pynobo/default.nix b/pkgs/development/python-modules/pynobo/default.nix
index c4da63a0e333e..462d5c6cf71c6 100644
--- a/pkgs/development/python-modules/pynobo/default.nix
+++ b/pkgs/development/python-modules/pynobo/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pynobo";
-  version = "1.8.0";
+  version = "1.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -16,19 +17,15 @@ buildPythonPackage rec {
     owner = "echoromeo";
     repo = "pynobo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Hfyf7XGleDWTKKWNlItcBFuiS3UEwsYed7v5FPRdC0w=";
+    hash = "sha256-OSgpT9CLkfnv1BLAJApZUs3vMc1WE2eG7ZrinCLy/0U=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Project has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pynobo"
-  ];
+  pythonImportsCheck = [ "pynobo" ];
 
   meta = with lib; {
     description = "Python TCP/IP interface for Nobo Hub/Nobo Energy Control devices";
diff --git a/pkgs/development/python-modules/pyocd/default.nix b/pkgs/development/python-modules/pyocd/default.nix
index 19980b7c0ca21..1f09ed696da04 100644
--- a/pkgs/development/python-modules/pyocd/default.nix
+++ b/pkgs/development/python-modules/pyocd/default.nix
@@ -2,7 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , fetchpatch
-, capstone
+, capstone_4
 , cmsis-pack-manager
 , colorama
 , importlib-metadata
@@ -54,7 +54,7 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    capstone
+    capstone_4
     cmsis-pack-manager
     colorama
     importlib-metadata
diff --git a/pkgs/development/python-modules/pyqt/6.x.nix b/pkgs/development/python-modules/pyqt/6.x.nix
index 92984dadc7964..a568257c59000 100644
--- a/pkgs/development/python-modules/pyqt/6.x.nix
+++ b/pkgs/development/python-modules/pyqt/6.x.nix
@@ -1,7 +1,7 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchPypi
+, fetchurl
 , pkg-config
 , dbus
 , lndir
@@ -23,15 +23,17 @@
 
 buildPythonPackage rec {
   pname = "pyqt6";
-  version = "6.6.1";
+  version = "6.7.0.dev2404081550";
   format = "pyproject";
 
   disabled = pythonOlder "3.6";
 
-  src = fetchPypi {
-    pname = "PyQt6";
-    inherit version;
-    hash = "sha256-nxWKop0gUULFbw810HeEuN8L4oN40gqXvNqL1k/9A3k=";
+  src = fetchurl {
+    urls = [
+      "https://riverbankcomputing.com/pypi/packages/PyQt6/PyQt6-${version}.tar.gz"
+      "http://web.archive.org/web/20240411124842if_/https://riverbankcomputing.com/pypi/packages/PyQt6/PyQt6-${version}.tar.gz"
+    ];
+    hash = "sha256-H5qZ/rnruGh+UVSXLZyTSvjagmmli/iYq+7BaIzl1YQ=";
   };
 
   patches = [
@@ -44,11 +46,15 @@ buildPythonPackage rec {
   ];
 
   # be more verbose
+  # and normalize version
   postPatch = ''
     cat >> pyproject.toml <<EOF
     [tool.sip.project]
     verbose = true
     EOF
+
+    substituteInPlace pyproject.toml \
+      --replace-fail 'version = "${version}"' 'version = "${lib.versions.pad 3 version}"'
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/python-modules/pyquil/default.nix b/pkgs/development/python-modules/pyquil/default.nix
index bbc45f49cc37f..dc718777af700 100644
--- a/pkgs/development/python-modules/pyquil/default.nix
+++ b/pkgs/development/python-modules/pyquil/default.nix
@@ -1,36 +1,37 @@
-{ lib
-, buildPythonPackage
-, deprecated
-, fetchFromGitHub
-, importlib-metadata
-, ipython
-, lark
-, matplotlib-inline
-, nest-asyncio
-, networkx
-, numpy
-, packaging
-, poetry-core
-, pydantic
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, qcs-sdk-python
-, respx
-, rpcq
-, scipy
-, syrupy
-, tenacity
-, types-deprecated
-, types-python-dateutil
-, types-retry
+{
+  lib,
+  buildPythonPackage,
+  deprecated,
+  fetchFromGitHub,
+  importlib-metadata,
+  ipython,
+  lark,
+  matplotlib-inline,
+  nest-asyncio,
+  networkx,
+  numpy,
+  packaging,
+  poetry-core,
+  pydantic,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  qcs-sdk-python,
+  respx,
+  rpcq,
+  scipy,
+  syrupy,
+  tenacity,
+  types-deprecated,
+  types-python-dateutil,
+  types-retry,
 }:
 
 buildPythonPackage rec {
   pname = "pyquil";
-  version = "4.7.0";
+  version = "4.8.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -39,20 +40,21 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = "pyquil";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jzQv9XBJSxdpSWDEEPuHwYfIemelpmVKJUigpz6NWdo=";
+    hash = "sha256-MGI+R3oteqDWsXP+SlAGSRGiQiAj44YG6V7o90A4Krc=";
   };
 
   pythonRelaxDeps = [
     "lark"
     "networkx"
+    "packaging"
+    "qcs-sdk-python"
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     deprecated
     lark
     matplotlib-inline
@@ -67,9 +69,7 @@ buildPythonPackage rec {
     types-deprecated
     types-python-dateutil
     types-retry
-  ] ++ lib.optionals (pythonOlder "3.8") [
-    importlib-metadata
-  ];
+  ] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
 
   nativeCheckInputs = [
     nest-asyncio
@@ -84,9 +84,7 @@ buildPythonPackage rec {
   # tests hang
   doCheck = false;
 
-  pythonImportsCheck = [
-    "pyquil"
-  ];
+  pythonImportsCheck = [ "pyquil" ];
 
   meta = with lib; {
     description = "Python library for creating Quantum Instruction Language (Quil) programs";
diff --git a/pkgs/development/python-modules/pyradios/default.nix b/pkgs/development/python-modules/pyradios/default.nix
index 42b46720fca2d..45e972ab5e285 100644
--- a/pkgs/development/python-modules/pyradios/default.nix
+++ b/pkgs/development/python-modules/pyradios/default.nix
@@ -32,6 +32,6 @@ buildPythonPackage rec {
     description = "Python client for the https://api.radio-browser.info";
     homepage = "https://github.com/andreztz/pyradios";
     license = licenses.mit;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pyrisco/default.nix b/pkgs/development/python-modules/pyrisco/default.nix
index 77c1e99332619..8c9ec561324a8 100644
--- a/pkgs/development/python-modules/pyrisco/default.nix
+++ b/pkgs/development/python-modules/pyrisco/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pyrisco";
-  version = "0.5.10";
+  version = "0.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "OnFreund";
     repo = "pyrisco";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3wa6hayyjWdDVqbLPCqIZ4lgcy1/EdFH4ZVggSRizZU=";
+    hash = "sha256-+qnwJzf4nKio4IJo7NNA19B3tbOd+jhnGryiRMcdi6o=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pyside6/default.nix b/pkgs/development/python-modules/pyside6/default.nix
index 5a484637768ba..bfc34a23fcd55 100644
--- a/pkgs/development/python-modules/pyside6/default.nix
+++ b/pkgs/development/python-modules/pyside6/default.nix
@@ -12,14 +12,14 @@ stdenv.mkDerivation rec {
 
   inherit (shiboken6) version src;
 
-  sourceRoot = "pyside-setup-everywhere-src-${lib.removeSuffix ".0" version}/sources/${pname}";
+  sourceRoot = "pyside-setup-everywhere-src-${version}/sources/${pname}";
 
   # FIXME: cmake/Macros/PySideModules.cmake supposes that all Qt frameworks on macOS
   # reside in the same directory as QtCore.framework, which is not true for Nix.
   postPatch = lib.optionalString stdenv.isLinux ''
     # Don't ignore optional Qt modules
     substituteInPlace cmake/PySideHelpers.cmake \
-      --replace \
+      --replace-fail \
         'string(FIND "''${_module_dir}" "''${_core_abs_dir}" found_basepath)' \
         'set (found_basepath 0)'
   '';
diff --git a/pkgs/development/python-modules/pysmi-lextudio/default.nix b/pkgs/development/python-modules/pysmi-lextudio/default.nix
index 1ca9e1bd02c9b..184c8a8bd8f2c 100644
--- a/pkgs/development/python-modules/pysmi-lextudio/default.nix
+++ b/pkgs/development/python-modules/pysmi-lextudio/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pysmi-lextudio";
-  version = "1.3.3";
+  version = "1.4.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "lextudio";
     repo = "pysmi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GApjr7KUd7KkdxsbLTzFNdWWol7b/8udrY9q/lls2ro=";
+    hash = "sha256-JrWVoK7fqESUIJeprjB28iaqOEWgsTpTqUEmSZp9XDk=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pysnmp-lextudio/default.nix b/pkgs/development/python-modules/pysnmp-lextudio/default.nix
index ef50f244a430c..2f921aa8039a4 100644
--- a/pkgs/development/python-modules/pysnmp-lextudio/default.nix
+++ b/pkgs/development/python-modules/pysnmp-lextudio/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "pysnmp-lextudio";
-  version = "6.0.11";
+  version = "6.1.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "lextudio";
     repo = "pysnmp";
     rev = "refs/tags/v${version}";
-    hash = "sha256-h/FxiGjBZqO82omkVqz+fws398Iz1EkHbZPMYIzG+t0=";
+    hash = "sha256-iVej39OmTPiZL11+IetnqHaxFAhZ/YR7tjiRoc7pu8U=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pytenable/default.nix b/pkgs/development/python-modules/pytenable/default.nix
index 0bf5ef3de39fe..2fba1b0b779f9 100644
--- a/pkgs/development/python-modules/pytenable/default.nix
+++ b/pkgs/development/python-modules/pytenable/default.nix
@@ -1,26 +1,27 @@
-{ lib
-, buildPythonPackage
-, defusedxml
-, fetchFromGitHub
-, marshmallow
-, pytest-datafiles
-, pytest-vcr
-, pytestCheckHook
-, python-box
-, python-dateutil
-, pythonOlder
-, requests
-, requests-pkcs12
-, responses
-, restfly
-, semver
-, setuptools
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  defusedxml,
+  fetchFromGitHub,
+  marshmallow,
+  pytest-datafiles,
+  pytest-vcr,
+  pytestCheckHook,
+  python-box,
+  python-dateutil,
+  pythonOlder,
+  requests,
+  requests-pkcs12,
+  responses,
+  restfly,
+  semver,
+  setuptools,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pytenable";
-  version = "1.4.21";
+  version = "1.4.22";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -29,14 +30,12 @@ buildPythonPackage rec {
     owner = "tenable";
     repo = "pyTenable";
     rev = "refs/tags/${version}";
-    hash = "sha256-+P+6EmKpR+qlvLMgeg6iIxSx7jtC995v2eijkjJdc70=";
+    hash = "sha256-acMafLlO0yGEnW+0XeBWUpDWvOPFAB4RK/XyAb2JbPw=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     defusedxml
     marshmallow
     python-box
@@ -71,9 +70,7 @@ buildPythonPackage rec {
     "test_events_list_vcr"
   ];
 
-  pythonImportsCheck = [
-    "tenable"
-  ];
+  pythonImportsCheck = [ "tenable" ];
 
   meta = with lib; {
     description = "Python library for the Tenable.io and TenableSC API";
diff --git a/pkgs/development/python-modules/pytest-aio/default.nix b/pkgs/development/python-modules/pytest-aio/default.nix
index 322de9c8746fd..ef643d765a7a9 100644
--- a/pkgs/development/python-modules/pytest-aio/default.nix
+++ b/pkgs/development/python-modules/pytest-aio/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, anyio
-, buildPythonPackage
-, curio
-, fetchFromGitHub
-, hypothesis
-, pytest
-, pytestCheckHook
-, pythonOlder
-, sniffio
-, trio
-, trio-asyncio
+{
+  lib,
+  anyio,
+  buildPythonPackage,
+  curio,
+  fetchFromGitHub,
+  hypothesis,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  poetry-core,
+  sniffio,
+  trio,
+  trio-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-aio";
-  version = "1.5.0";
-  format = "setuptools";
+  version = "1.8.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -23,34 +25,30 @@ buildPythonPackage rec {
     owner = "klen";
     repo = "pytest-aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-BIVorMRWyboKFZCiELoBh/1oxSpdV263zfLce1fNVhU=";
+    hash = "sha256-MexIL9yFTzhkJ/61GgYoT54MWV8B0c1/CWkN5FVTvnw=";
   };
 
-  postPatch = ''
-    sed -i '/addopts/d' setup.cfg
-  '';
+  build-system = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  nativeCheckInputs = [
+  dependencies = [
     anyio
     curio
     hypothesis
-    pytestCheckHook
     sniffio
     trio
     trio-asyncio
   ];
 
-  pythonImportsCheck = [
-    "pytest_aio"
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pytest_aio" ];
 
   meta = with lib; {
-    homepage = "https://github.com/klen/pytest-aio";
     description = "Pytest plugin for aiohttp support";
+    homepage = "https://github.com/klen/pytest-aio";
+    changelog = "https://github.com/klen/pytest-aio/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
   };
diff --git a/pkgs/development/python-modules/pytest-bdd/default.nix b/pkgs/development/python-modules/pytest-bdd/default.nix
index 3660dc709f31c..025938b942647 100644
--- a/pkgs/development/python-modules/pytest-bdd/default.nix
+++ b/pkgs/development/python-modules/pytest-bdd/default.nix
@@ -1,71 +1,56 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, mako
-, parse
-, parse-type
-, poetry-core
-, pytest
-, pytestCheckHook
-, pythonOlder
-, typing-extensions
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  mako,
+  parse,
+  parse-type,
+  poetry-core,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "pytest-bdd";
-  version = "6.1.1";
-  format = "pyproject";
+  version = "7.1.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "pytest-dev";
-    repo = pname;
+    repo = "pytest-bdd";
     rev = "refs/tags/${version}";
-    hash = "sha256-+76jIgfDQPdIoesTr1+QUu8wmOnrdf4KT+TJr9F2Hqk=";
+    hash = "sha256-PC4VSsUU5qEFp/C/7OTgHINo8wmOo0w2d1Hpe0EnFzE=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "remove-setuptools.patch";
-      url = "https://github.com/pytest-dev/pytest-bdd/commit/5d8eda3a30b47d3bd27849884a851adafca765cb.patch";
-      hash = "sha256-G2WHaRKlQ9HINufh8wl7+ly7HfDGobMLzzlbwDwd+o8=";
-    })
-  ];
-
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  buildInputs = [
-    pytest
-  ];
+  buildInputs = [ pytest ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     mako
     parse
     parse-type
     typing-extensions
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
   preCheck = ''
     export PATH=$PATH:$out/bin
   '';
 
-  pythonImportsCheck = [
-    "pytest_bdd"
-  ];
+  pythonImportsCheck = [ "pytest_bdd" ];
 
   meta = with lib; {
     description = "BDD library for the pytest";
-    mainProgram = "pytest-bdd";
     homepage = "https://github.com/pytest-dev/pytest-bdd";
+    changelog = "https://github.com/pytest-dev/pytest-bdd/blob/${version}/CHANGES.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ jm2dev ];
+    mainProgram = "pytest-bdd";
   };
 }
diff --git a/pkgs/development/python-modules/pytest-jupyter/default.nix b/pkgs/development/python-modules/pytest-jupyter/default.nix
index c2da6b2e3043a..2cae0f7ef1b94 100644
--- a/pkgs/development/python-modules/pytest-jupyter/default.nix
+++ b/pkgs/development/python-modules/pytest-jupyter/default.nix
@@ -22,14 +22,14 @@
 
 let self = buildPythonPackage rec {
   pname = "pytest-jupyter";
-  version = "0.9.1";
+  version = "0.10.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "jupyter-server";
     repo = "pytest-jupyter";
     rev = "refs/tags/v${version}";
-    hash = "sha256-+NtLyTpMpJ+asbiQZNLFs1qLr00UlEOlbxortQ1B4so=";
+    hash = "sha256-RTpXBbVCRj0oyZ1TXXDv3M7sAI4kA6f3ouzTr0rXjwY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pytest-notebook/default.nix b/pkgs/development/python-modules/pytest-notebook/default.nix
index b20006641057c..104c334539717 100644
--- a/pkgs/development/python-modules/pytest-notebook/default.nix
+++ b/pkgs/development/python-modules/pytest-notebook/default.nix
@@ -70,6 +70,10 @@ buildPythonPackage rec {
     "test_diff_to_string"
     "test_execute_notebook_with_coverage"
     "test_regression_coverage"
+    "test_collection"
+    "test_setup_with_skip_meta"
+    "test_run_fail"
+    "test_run_pass_with_meta"
   ];
 
   meta = {
diff --git a/pkgs/development/python-modules/digitalocean/default.nix b/pkgs/development/python-modules/python-digitalocean/default.nix
index 3d756312dedab..c0ab09542d952 100644
--- a/pkgs/development/python-modules/digitalocean/default.nix
+++ b/pkgs/development/python-modules/python-digitalocean/default.nix
@@ -1,39 +1,39 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, isPy3k
-, jsonpickle
-, mock
-, pytest
-, pytestCheckHook
-, requests
-, responses
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  jsonpickle,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  responses,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "python-digitalocean";
   version = "1.17.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "koalalorenzo";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "1c50ka4y712rr551gq3kdfw7fgfxr4w837sww6yy683yz7m1d1h8";
+    repo = "python-digitalocean";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-CIYW6vl+IOO94VyfgTjJ3T13uGtz4BdKyVmE44maoLA=";
   };
 
-  propagatedBuildInputs = [
+  build-system = [ setuptools ];
+
+  dependencies = [
     jsonpickle
     requests
   ];
 
-  dontUseSetuptoolsCheck = true;
-
   nativeCheckInputs = [
-    pytest
     pytestCheckHook
     responses
-  ] ++ lib.optionals (!isPy3k) [
-    mock
   ];
 
   preCheck = ''
@@ -41,14 +41,18 @@ buildPythonPackage rec {
   '';
 
   # Test tries to access the network
-  disabledTests = ["TestFirewall"];
+  disabledTests = [ "TestFirewall" ];
 
   pythonImportsCheck = [ "digitalocean" ];
 
   meta = with lib; {
     description = "Python API to manage Digital Ocean Droplets and Images";
     homepage = "https://github.com/koalalorenzo/python-digitalocean";
+    changelog = "https://github.com/koalalorenzo/python-digitalocean/releases/tag/v${version}";
     license = with licenses; [ lgpl3Only ];
-    maintainers = with maintainers; [ kiwi teh ];
+    maintainers = with maintainers; [
+      kiwi
+      teh
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/python-docs-theme/default.nix b/pkgs/development/python-modules/python-docs-theme/default.nix
index 364f40f7ce26d..e464edc7cbc54 100644
--- a/pkgs/development/python-modules/python-docs-theme/default.nix
+++ b/pkgs/development/python-modules/python-docs-theme/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "python-docs-theme";
-  version = "2024.3";
+  version = "2024.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "python";
     repo = "python-docs-theme";
     rev = "refs/tags/${version}";
-    hash = "sha256-caQqoXKdKA0W5qLphYbTxrP8Qx5teJD5+MSyaifyf/A=";
+    hash = "sha256-x1r71/Urpqf0FtL2Bao5SgsRQfmwym34F7qYzxFkT5c=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/python-homewizard-energy/default.nix b/pkgs/development/python-modules/python-homewizard-energy/default.nix
index 20bd7409f6cd6..8447c2bccbe9c 100644
--- a/pkgs/development/python-modules/python-homewizard-energy/default.nix
+++ b/pkgs/development/python-modules/python-homewizard-energy/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "python-homewizard-energy";
-  version = "4.3.1";
+  version = "5.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "DCSBL";
     repo = "python-homewizard-energy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LpxXTzUb+N15lGno3pAhRSEJCb4NmwBcGQ/PshI9gYA=";
+    hash = "sha256-z9JJHS7w/lugV23xJjWHBWVQp38J3CKtj4IuDvpPQJw=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/python-motionmount/default.nix b/pkgs/development/python-modules/python-motionmount/default.nix
new file mode 100644
index 0000000000000..be3a439c36074
--- /dev/null
+++ b/pkgs/development/python-modules/python-motionmount/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "python-motionmount";
+  version = "1.0.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "vogelsproducts";
+    repo = "python-MotionMount";
+    rev = "refs/tags/${version}";
+    hash = "sha256-GXgshCARH4VPYHIIeWXwOCRmKgCyel4ydj/oKUWuyUM=";
+  };
+
+  build-system = [ setuptools ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "motionmount" ];
+
+  meta = with lib; {
+    description = "Module to control the TVM7675 Pro (Signature) series of MotionMount";
+    homepage = "https://github.com/vogelsproducts/python-MotionMount";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-roborock/default.nix b/pkgs/development/python-modules/python-roborock/default.nix
index d874ec9c2a7a8..49ea2cc277d38 100644
--- a/pkgs/development/python-modules/python-roborock/default.nix
+++ b/pkgs/development/python-modules/python-roborock/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, stdenv
-, aiohttp
-, async-timeout
-, buildPythonPackage
-, click
-, construct
-, dacite
-, fetchFromGitHub
-, paho-mqtt
-, poetry-core
-, pycryptodome
-, pycryptodomex
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
+{
+  lib,
+  stdenv,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  click,
+  construct,
+  dacite,
+  fetchFromGitHub,
+  paho-mqtt,
+  poetry-core,
+  pycryptodome,
+  pycryptodomex,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "python-roborock";
-  version = "0.41.0";
+  version = "2.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -28,22 +29,19 @@ buildPythonPackage rec {
     owner = "humbertogontijo";
     repo = "python-roborock";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Kh7u1UWqmfmxY6yWaBaUpe20Xc/DTryoymKgIYg/kiM=";
+    hash = "sha256-vtT6hsyiP1FxWo5PezcjJACknCT9JEhqSQ6C4FpU+Jg=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "poetry-core==1.8.0" "poetry-core"
+      --replace-fail "poetry-core==1.8.0" "poetry-core"
   '';
 
-  pythonRelaxDeps = [
-    "pycryptodome"
-  ];
+  pythonRelaxDeps = [ "pycryptodome" ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   propagatedBuildInputs = [
     aiohttp
@@ -53,25 +51,21 @@ buildPythonPackage rec {
     dacite
     paho-mqtt
     pycryptodome
-  ] ++ lib.optionals stdenv.isDarwin [
-    pycryptodomex
-  ];
+  ] ++ lib.optionals stdenv.isDarwin [ pycryptodomex ];
 
   nativeCheckInputs = [
     pytest-asyncio
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "roborock"
-  ];
+  pythonImportsCheck = [ "roborock" ];
 
   meta = with lib; {
     description = "Python library & console tool for controlling Roborock vacuum";
-    mainProgram = "roborock";
     homepage = "https://github.com/humbertogontijo/python-roborock";
     changelog = "https://github.com/humbertogontijo/python-roborock/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "roborock";
   };
 }
diff --git a/pkgs/development/python-modules/python-telegram-bot/default.nix b/pkgs/development/python-modules/python-telegram-bot/default.nix
index 238f5742ccc8b..adb2fc81c9775 100644
--- a/pkgs/development/python-modules/python-telegram-bot/default.nix
+++ b/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "python-telegram-bot";
-  version = "21.0.1";
+  version = "21.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "python-telegram-bot";
     repo = "python-telegram-bot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jyDEfHkbB95fzFkRFKgV4y46AxT+yUPwfq1DJ3sF//I=";
+    hash = "sha256-s5C3f17VP5ooH78/4JQMkzuV1byi7rFPTmVr3lZliFc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/pytorch-metric-learning/default.nix b/pkgs/development/python-modules/pytorch-metric-learning/default.nix
index 0ef7e51d2c389..a1d1f7f38a2ca 100644
--- a/pkgs/development/python-modules/pytorch-metric-learning/default.nix
+++ b/pkgs/development/python-modules/pytorch-metric-learning/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname   = "pytorch-metric-learning";
-  version = "2.4.1";
+  version = "2.5.0";
   format = "setuptools";
 
   disabled = isPy27;
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "KevinMusgrave";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-LftT/ATrvEkVJPS63LSN/7vCsHhobm6xk8hFEa+wrzE=";
+    hash = "sha256-1y7VCnzgwFOMeMloVdYyszNhf/zZlBJUjuF4qgA5c0A=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pytorch-pfn-extras/default.nix b/pkgs/development/python-modules/pytorch-pfn-extras/default.nix
index 2e3455b677e47..21da795609d9e 100644
--- a/pkgs/development/python-modules/pytorch-pfn-extras/default.nix
+++ b/pkgs/development/python-modules/pytorch-pfn-extras/default.nix
@@ -1,15 +1,17 @@
 { buildPythonPackage
 , fetchFromGitHub
+, fetchpatch
 , lib
-, setuptools
 , numpy
 , onnx
 , packaging
 , pytestCheckHook
+, pythonAtLeast
+, setuptools
+, stdenv
 , torch
 , torchvision
 , typing-extensions
-, pythonAtLeast
 }:
 
 buildPythonPackage rec {
@@ -24,18 +26,27 @@ buildPythonPackage rec {
     hash = "sha256-vSon/0GxQfaRtSPsQbYAvE3s/F0HEN59VpzE3w1PnVE=";
   };
 
-  nativeBuildInputs = [
+  patches = [
+    (fetchpatch {
+      name = "relax-setuptools.patch";
+      url = "https://github.com/pfnet/pytorch-pfn-extras/commit/96abe38c4baa6a144d604bdd4744c55627e55440.patch";
+      hash = "sha256-85UDGcgJyQS5gINbgpNM58b3XJGvf+ArtGhwJ5EXdhk=";
+    })
+  ];
+
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [ numpy packaging torch typing-extensions ];
+  dependencies = [ numpy packaging torch typing-extensions ];
 
   nativeCheckInputs = [ onnx pytestCheckHook torchvision ];
 
-  # ignore all pytest warnings
-  preCheck = ''
-    rm pytest.ini
-  '';
+  pytestFlagsArray = [
+    # Requires CUDA access which is not possible in the nix environment.
+    "-m 'not gpu and not mpi'"
+    "-Wignore::DeprecationWarning"
+  ];
 
   pythonImportsCheck = [ "pytorch_pfn_extras" ];
 
@@ -45,31 +56,28 @@ buildPythonPackage rec {
 
     # requires onnxruntime which was removed because of poor maintainability
     # See https://github.com/NixOS/nixpkgs/pull/105951 https://github.com/NixOS/nixpkgs/pull/155058
+    "tests/pytorch_pfn_extras_tests/onnx_tests/test_annotate.py"
+    "tests/pytorch_pfn_extras_tests/onnx_tests/test_as_output.py"
     "tests/pytorch_pfn_extras_tests/onnx_tests/test_export.py"
+    "tests/pytorch_pfn_extras_tests/onnx_tests/test_export_testcase.py"
+    "tests/pytorch_pfn_extras_tests/onnx_tests/test_lax.py"
+    "tests/pytorch_pfn_extras_tests/onnx_tests/test_load_model.py"
     "tests/pytorch_pfn_extras_tests/onnx_tests/test_torchvision.py"
     "tests/pytorch_pfn_extras_tests/onnx_tests/utils.py"
-    "tests/pytorch_pfn_extras_tests/onnx_tests/test_lax.py"
 
     # RuntimeError: No Op registered for Gradient with domain_version of 9
     "tests/pytorch_pfn_extras_tests/onnx_tests/test_grad.py"
-
-    # Requires CUDA access which is not possible in the nix environment.
-    "tests/pytorch_pfn_extras_tests/cuda_tests/test_allocator.py"
-    "tests/pytorch_pfn_extras_tests/nn_tests/modules_tests/test_lazy_batchnorm.py"
-    "tests/pytorch_pfn_extras_tests/nn_tests/modules_tests/test_lazy_conv.py"
-    "tests/pytorch_pfn_extras_tests/nn_tests/modules_tests/test_lazy_linear.py"
-    "tests/pytorch_pfn_extras_tests/nn_tests/modules_tests/test_lazy.py"
-    "tests/pytorch_pfn_extras_tests/profiler_tests/test_record.py"
-    "tests/pytorch_pfn_extras_tests/runtime_tests/test_to.py"
-    "tests/pytorch_pfn_extras_tests/handler_tests/test_handler.py"
-    "tests/pytorch_pfn_extras_tests/test_reporter.py"
-    "tests/pytorch_pfn_extras_tests/training_tests/test_trainer.py"
-    "tests/pytorch_pfn_extras_tests/utils_tests/test_checkpoint.py"
-    "tests/pytorch_pfn_extras_tests/utils_tests/test_comparer.py"
-    "tests/pytorch_pfn_extras_tests/utils_tests/test_new_comparer.py"
-  ] ++ lib.optionals (pythonAtLeast "3.11") [
-    # Remove this when https://github.com/NixOS/nixpkgs/pull/259068 is merged
+  ] ++ lib.optionals (pythonAtLeast "3.12") [
+    # RuntimeError: Dynamo is not supported on Python 3.12+
     "tests/pytorch_pfn_extras_tests/dynamo_tests/test_compile.py"
+    "tests/pytorch_pfn_extras_tests/test_ops/test_register.py"
+  ] ++ lib.optionals (stdenv.hostPlatform.isDarwin) [
+    # torch.distributed is not available on darwin
+    "tests/pytorch_pfn_extras_tests/training_tests/extensions_tests/test_sharded_snapshot.py"
+  ] ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
+    # RuntimeError: internal error
+    # convolution (e.g. F.conv3d) causes runtime error
+    "tests/pytorch_pfn_extras_tests/nn_tests/modules_tests/test_lazy_conv.py"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/pyvex/default.nix b/pkgs/development/python-modules/pyvex/default.nix
index 659db729aadd2..3a166921591b9 100644
--- a/pkgs/development/python-modules/pyvex/default.nix
+++ b/pkgs/development/python-modules/pyvex/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "pyvex";
-  version = "9.2.97";
+  version = "9.2.98";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GIBsWtj8nLuzGX/C6Ioe8mSfKg3QXtEJf3+d5h9M02c=";
+    hash = "sha256-+X4G5jLG7c75XIItNlQLF5YV0XUQwdA6JyF1IGBfiE0=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/qcs-api-client/default.nix b/pkgs/development/python-modules/qcs-api-client/default.nix
index 6b542b7d04f0b..98e3b05812f1c 100644
--- a/pkgs/development/python-modules/qcs-api-client/default.nix
+++ b/pkgs/development/python-modules/qcs-api-client/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, attrs
-, buildPythonPackage
-, fetchFromGitHub
-, fetchpatch
-, httpx
-, iso8601
-, poetry-core
-, pydantic
-, pyjwt
-, pytest-asyncio
-, pytestCheckHook
-, python-dateutil
-, pythonAtLeast
-, pythonOlder
-, pythonRelaxDepsHook
-, respx
-, retrying
-, rfc3339
-, toml
+{
+  lib,
+  attrs,
+  buildPythonPackage,
+  fetchFromGitHub,
+  fetchpatch,
+  httpx,
+  iso8601,
+  poetry-core,
+  pydantic,
+  pyjwt,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dateutil,
+  pythonAtLeast,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  respx,
+  retrying,
+  rfc3339,
+  toml,
 }:
 
 buildPythonPackage rec {
   pname = "qcs-api-client";
-  version = "0.23.1";
+  version = "0.25.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -31,7 +32,7 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = "qcs-api-client-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Z+RCjpSpfYU3oU5HQ8CzZfwqUjMHvCKVn+p2tq+VDxQ=";
+    hash = "sha256-dKjiicrPLRlaIwHwSqpY5dBMTzrZD4xfw3h54IN3rh0=";
   };
 
   patches = [
@@ -50,12 +51,11 @@ buildPythonPackage rec {
     "pydantic"
   ];
 
-  nativeBuildInputs = [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  build-system = [ poetry-core ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     httpx
     iso8601
@@ -76,9 +76,7 @@ buildPythonPackage rec {
   # Tests are failing on Python 3.11, Fatal Python error: Aborted
   doCheck = !(pythonAtLeast "3.11");
 
-  pythonImportsCheck = [
-    "qcs_api_client"
-  ];
+  pythonImportsCheck = [ "qcs_api_client" ];
 
   meta = with lib; {
     description = "Python library for accessing the Rigetti QCS API";
diff --git a/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock b/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock
index 08a2ffb732ac0..0c1265d5ac40c 100644
--- a/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock
+++ b/pkgs/development/python-modules/qcs-sdk-python/Cargo.lock
@@ -37,9 +37,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.75"
+version = "1.0.81"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
 
 [[package]]
 name = "approx"
@@ -53,26 +53,27 @@ dependencies = [
 
 [[package]]
 name = "arc-swap"
-version = "1.6.0"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+checksum = "7b3d0060af21e8d11a926981cc00c6c1541aa91dd64b9f881985c3da1094425f"
 
 [[package]]
 name = "assert2"
-version = "0.3.11"
+version = "0.3.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eaf98d1183406dcb8f8b545e1f24829d75c1a9d35eec4b86309a22aa8b6d8e95"
+checksum = "844ca3172d927ddd9d01f63b6c80f4ebd3e01c3f787c204626635450dfe3edba"
 dependencies = [
  "assert2-macros",
+ "diff",
  "is-terminal",
  "yansi",
 ]
 
 [[package]]
 name = "assert2-macros"
-version = "0.3.11"
+version = "0.3.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c55bdf3e6f792f8f1c750bb6886b7ca40fa5a354ddb7a4dee550b93985a9235"
+checksum = "9ec0e42bd0fe1c8d72c7bde53ac8686764cea0fd86f412b92fcad20fea08b489"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -110,18 +111,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "async-trait"
-version = "0.1.74"
+version = "0.1.78"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -187,6 +188,20 @@ dependencies = [
 ]
 
 [[package]]
+name = "backoff"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
+dependencies = [
+ "futures-core",
+ "getrandom",
+ "instant",
+ "pin-project-lite",
+ "rand",
+ "tokio",
+]
+
+[[package]]
 name = "backtrace"
 version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -209,9 +224,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 
 [[package]]
 name = "base64"
-version = "0.21.5"
+version = "0.21.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
 name = "bindgen"
@@ -245,9 +260,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.1"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
 
 [[package]]
 name = "block-buffer"
@@ -269,9 +284,9 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.14.0"
+version = "3.15.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
 
 [[package]]
 name = "bytecount"
@@ -323,9 +338,9 @@ dependencies = [
 
 [[package]]
 name = "cached_proc_macro_types"
-version = "0.1.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663"
+checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0"
 
 [[package]]
 name = "cargo-lock"
@@ -341,9 +356,9 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.0.83"
+version = "1.0.90"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
 dependencies = [
  "jobserver",
  "libc",
@@ -360,9 +375,9 @@ dependencies = [
 
 [[package]]
 name = "cfg-expr"
-version = "0.15.5"
+version = "0.15.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3"
+checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
 dependencies = [
  "smallvec",
  "target-lexicon",
@@ -381,6 +396,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
+name = "chrono"
+version = "0.4.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
 name = "clang-sys"
 version = "0.29.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -408,14 +432,14 @@ dependencies = [
 
 [[package]]
 name = "console"
-version = "0.15.7"
+version = "0.15.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
 dependencies = [
  "encode_unicode",
  "lazy_static",
  "libc",
- "windows-sys 0.45.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -442,20 +466,19 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.11"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "crossbeam"
-version = "0.8.2"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c"
+checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
 dependencies = [
- "cfg-if 1.0.0",
  "crossbeam-channel",
  "crossbeam-deque",
  "crossbeam-epoch",
@@ -465,56 +488,46 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.8"
+version = "0.5.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
 dependencies = [
- "cfg-if 1.0.0",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-deque"
-version = "0.8.3"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
 dependencies = [
- "cfg-if 1.0.0",
  "crossbeam-epoch",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-epoch"
-version = "0.9.15"
+version = "0.9.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
 dependencies = [
- "autocfg",
- "cfg-if 1.0.0",
  "crossbeam-utils",
- "memoffset",
- "scopeguard",
 ]
 
 [[package]]
 name = "crossbeam-queue"
-version = "0.3.8"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
 dependencies = [
- "cfg-if 1.0.0",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.16"
+version = "0.8.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
-dependencies = [
- "cfg-if 1.0.0",
-]
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
 
 [[package]]
 name = "crypto-common"
@@ -572,9 +585,12 @@ dependencies = [
 
 [[package]]
 name = "deranged"
-version = "0.3.10"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
 
 [[package]]
 name = "derive_builder"
@@ -621,6 +637,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "diff"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+
+[[package]]
 name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -632,9 +654,9 @@ dependencies = [
 
 [[package]]
 name = "dircpy"
-version = "0.3.15"
+version = "0.3.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8466f8d28ca6da4c9dfbbef6ad4bff6f2fdd5e412d821025b0d3f0a9d74a8c1e"
+checksum = "29259db751c34980bfc44100875890c507f585323453b91936960ab1104272ca"
 dependencies = [
  "jwalk",
  "log",
@@ -643,9 +665,9 @@ dependencies = [
 
 [[package]]
 name = "either"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
 
 [[package]]
 name = "encode_unicode"
@@ -668,7 +690,7 @@ version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "syn 1.0.109",
@@ -750,9 +772,9 @@ dependencies = [
 
 [[package]]
 name = "futures"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -765,9 +787,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -775,15 +797,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -792,44 +814,44 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "futures-sink"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
 
 [[package]]
 name = "futures-task"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
 
 [[package]]
 name = "futures-timer"
-version = "3.0.2"
+version = "3.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
+checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
 
 [[package]]
 name = "futures-util"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -855,9 +877,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.11"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
 dependencies = [
  "cfg-if 1.0.0",
  "js-sys",
@@ -880,9 +902,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
 [[package]]
 name = "h2"
-version = "0.3.24"
+version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
 dependencies = [
  "bytes",
  "fnv",
@@ -890,7 +912,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http",
- "indexmap 2.1.0",
+ "indexmap 2.2.5",
  "slab",
  "tokio",
  "tokio-util",
@@ -921,7 +943,7 @@ version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
  "bytes",
  "headers-core",
  "http",
@@ -946,6 +968,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
 name = "hermit-abi"
 version = "0.1.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -956,9 +984,9 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.3"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
 name = "hex"
@@ -968,18 +996,18 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 
 [[package]]
 name = "home"
-version = "0.5.5"
+version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
 dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "http"
-version = "0.2.11"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
 dependencies = [
  "bytes",
  "fnv",
@@ -988,9 +1016,9 @@ dependencies = [
 
 [[package]]
 name = "http-body"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
 dependencies = [
  "bytes",
  "http",
@@ -998,6 +1026,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "http-range-header"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
+
+[[package]]
 name = "httparse"
 version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1020,9 +1054,9 @@ dependencies = [
 
 [[package]]
 name = "hyper"
-version = "0.14.27"
+version = "0.14.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
+checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -1035,7 +1069,7 @@ dependencies = [
  "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2 0.4.10",
+ "socket2",
  "tokio",
  "tower-service",
  "tracing",
@@ -1087,7 +1121,7 @@ dependencies = [
  "futures-util",
  "http",
  "hyper",
- "rustls 0.21.9",
+ "rustls 0.21.10",
  "tokio",
  "tokio-rustls 0.24.1",
 ]
@@ -1146,9 +1180,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.1.0"
+version = "2.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
 dependencies = [
  "equivalent",
  "hashbrown 0.14.3",
@@ -1162,9 +1196,9 @@ checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
 
 [[package]]
 name = "insta"
-version = "1.34.0"
+version = "1.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc"
+checksum = "0a7c22c4d34ef4788c351e971c52bfdfe7ea2766f8c5466bc175dd46e52ac22e"
 dependencies = [
  "console",
  "lazy_static",
@@ -1184,9 +1218,9 @@ dependencies = [
 
 [[package]]
 name = "inventory"
-version = "0.3.13"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0508c56cfe9bfd5dfeb0c22ab9a6abfda2f27bdca422132e494266351ed8d83c"
+checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767"
 
 [[package]]
 name = "ipnet"
@@ -1196,66 +1230,67 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
 
 [[package]]
 name = "is-terminal"
-version = "0.4.9"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
 dependencies = [
- "hermit-abi 0.3.3",
- "rustix",
- "windows-sys 0.48.0",
+ "hermit-abi 0.3.9",
+ "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "itertools"
-version = "0.10.5"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
 dependencies = [
  "either",
 ]
 
 [[package]]
 name = "itertools"
-version = "0.11.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
 dependencies = [
  "either",
 ]
 
 [[package]]
 name = "itoa"
-version = "1.0.9"
+version = "1.0.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
 
 [[package]]
 name = "jobserver"
-version = "0.1.27"
+version = "0.1.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
+checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.66"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
 dependencies = [
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "jsonwebtoken"
-version = "8.3.0"
+version = "9.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378"
+checksum = "5c7ea04a7c5c055c175f189b6dc6ba036fd62306b58c66c9f6389036c503a3f4"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
+ "js-sys",
  "pem",
- "ring 0.16.20",
+ "ring 0.17.8",
  "serde",
  "serde_json",
  "simple_asn1",
@@ -1358,9 +1393,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.150"
+version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
 name = "libloading"
@@ -1374,12 +1409,12 @@ dependencies = [
 
 [[package]]
 name = "libloading"
-version = "0.8.1"
+version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
 dependencies = [
  "cfg-if 1.0.0",
- "windows-sys 0.48.0",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
@@ -1391,7 +1426,7 @@ dependencies = [
  "bindgen",
  "cc",
  "libc",
- "libloading 0.8.1",
+ "libloading 0.8.3",
  "num-complex",
  "paste",
  "pkg-config",
@@ -1407,9 +1442,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.12"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
 
 [[package]]
 name = "lock_api"
@@ -1423,9 +1458,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.20"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
 
 [[package]]
 name = "maplit"
@@ -1451,9 +1486,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.6.4"
+version = "2.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
 
 [[package]]
 name = "memoffset"
@@ -1488,18 +1523,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
 dependencies = [
  "adler",
 ]
 
 [[package]]
 name = "mio"
-version = "0.8.9"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
  "wasi",
@@ -1596,29 +1631,34 @@ dependencies = [
 
 [[package]]
 name = "num-complex"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
+checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
 dependencies = [
  "num-traits",
  "serde",
 ]
 
 [[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[package]]
 name = "num-integer"
-version = "0.1.45"
+version = "0.1.46"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
 dependencies = [
- "autocfg",
  "num-traits",
 ]
 
 [[package]]
 name = "num-iter"
-version = "0.1.43"
+version = "0.1.44"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
 dependencies = [
  "autocfg",
  "num-integer",
@@ -1640,9 +1680,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 dependencies = [
  "autocfg",
 ]
@@ -1653,7 +1693,7 @@ version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi 0.3.3",
+ "hermit-abi 0.3.9",
  "libc",
 ]
 
@@ -1674,18 +1714,18 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.32.1"
+version = "0.32.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.18.0"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "openssl-probe"
@@ -1797,27 +1837,42 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
 
 [[package]]
 name = "pbjson"
-version = "0.5.1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "048f9ac93c1eab514f9470c4bc8d97ca2a0a236b84f45cc19d69a59fc11467f6"
+checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90"
 dependencies = [
- "base64 0.13.1",
+ "base64 0.21.7",
  "serde",
 ]
 
 [[package]]
 name = "pbjson-build"
-version = "0.5.1"
+version = "0.6.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bdbb7b706f2afc610f3853550cdbbf6372fd324824a087806bd4480ea4996e24"
+checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735"
 dependencies = [
- "heck",
- "itertools 0.10.5",
+ "heck 0.4.1",
+ "itertools 0.11.0",
  "prost",
  "prost-types",
 ]
 
 [[package]]
+name = "pbjson-types"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12"
+dependencies = [
+ "bytes",
+ "chrono",
+ "pbjson",
+ "pbjson-build",
+ "prost",
+ "prost-build",
+ "serde",
+]
+
+[[package]]
 name = "peeking_take_while"
 version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1825,11 +1880,12 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
 
 [[package]]
 name = "pem"
-version = "1.1.1"
+version = "3.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"
+checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310"
 dependencies = [
- "base64 0.13.1",
+ "base64 0.21.7",
+ "serde",
 ]
 
 [[package]]
@@ -1845,27 +1901,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
 dependencies = [
  "fixedbitset",
- "indexmap 2.1.0",
+ "indexmap 2.2.5",
 ]
 
 [[package]]
 name = "pin-project"
-version = "1.1.3"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
 dependencies = [
  "pin-project-internal",
 ]
 
 [[package]]
 name = "pin-project-internal"
-version = "1.1.3"
+version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -1882,9 +1938,21 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
 name = "pkg-config"
-version = "0.3.27"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
 
 [[package]]
 name = "ppv-lite86"
@@ -1894,28 +1962,28 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
 
 [[package]]
 name = "prettyplease"
-version = "0.1.25"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
+checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
 dependencies = [
  "proc-macro2",
- "syn 1.0.109",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.70"
+version = "1.0.79"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "prost"
-version = "0.11.9"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd"
+checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
 dependencies = [
  "bytes",
  "prost-derive",
@@ -1923,53 +1991,53 @@ dependencies = [
 
 [[package]]
 name = "prost-build"
-version = "0.11.9"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270"
+checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2"
 dependencies = [
  "bytes",
- "heck",
- "itertools 0.10.5",
- "lazy_static",
+ "heck 0.4.1",
+ "itertools 0.11.0",
  "log",
  "multimap",
+ "once_cell",
  "petgraph",
  "prettyplease",
  "prost",
  "prost-types",
  "regex",
- "syn 1.0.109",
+ "syn 2.0.53",
  "tempfile",
  "which 4.4.2",
 ]
 
 [[package]]
 name = "prost-derive"
-version = "0.11.9"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
+checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
 dependencies = [
  "anyhow",
- "itertools 0.10.5",
+ "itertools 0.11.0",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "prost-types"
-version = "0.11.9"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13"
+checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
 dependencies = [
  "prost",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.20.0"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b"
+checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
 dependencies = [
  "cfg-if 1.0.0",
  "indoc",
@@ -1978,6 +2046,7 @@ dependencies = [
  "memoffset",
  "num-complex",
  "parking_lot",
+ "portable-atomic",
  "pyo3-build-config",
  "pyo3-ffi",
  "pyo3-macros",
@@ -1999,9 +2068,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.20.0"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5"
+checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -2009,9 +2078,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.20.0"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b"
+checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -2030,31 +2099,32 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.20.0"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b"
+checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.20.0"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424"
+checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
+ "pyo3-build-config",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "qcs"
-version = "0.20.4"
+version = "0.21.4"
 dependencies = [
  "assert2",
  "async-trait",
@@ -2114,11 +2184,12 @@ dependencies = [
 
 [[package]]
 name = "qcs-api-client-common"
-version = "0.7.9"
+version = "0.7.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc3356caa74bb697c4271c950a3040e8dbb9448a9bd0124411b9b43155b8e192"
+checksum = "e96a94ca1f4ac3e094d51d90deb5d158dddfd0723cca1b50d302acfd2e4e78ef"
 dependencies = [
  "async-trait",
+ "backoff",
  "futures",
  "home",
  "http",
@@ -2126,6 +2197,7 @@ dependencies = [
  "reqwest",
  "serde",
  "thiserror",
+ "time",
  "tokio",
  "toml 0.7.8",
  "tracing",
@@ -2135,10 +2207,11 @@ dependencies = [
 
 [[package]]
 name = "qcs-api-client-grpc"
-version = "0.7.9"
+version = "0.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37bd1842ca3485e8c0abf36be4cbcee1ea12e97da15ac731ce9dae20f7f58f41"
+checksum = "b82196be0676c8dc24749a830e886ffda6e34b3130c6a7078354c24dec07933a"
 dependencies = [
+ "backoff",
  "http",
  "http-body",
  "hyper",
@@ -2149,13 +2222,16 @@ dependencies = [
  "opentelemetry_api",
  "pbjson",
  "pbjson-build",
+ "pbjson-types",
  "prost",
  "prost-build",
  "qcs-api-client-common",
  "serde",
  "thiserror",
+ "tokio",
  "tonic",
  "tonic-build",
+ "tonic-web",
  "tower",
  "tracing",
  "url",
@@ -2164,9 +2240,9 @@ dependencies = [
 
 [[package]]
 name = "qcs-api-client-openapi"
-version = "0.8.9"
+version = "0.8.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c605c4bdf887f487dbe7c0055f303728a992a6d508eedc55d7efa41b36adba07"
+checksum = "0e318c4bffb689688d4f95afb2b5a52a70e12a191da402e0dded093102fcb1e9"
 dependencies = [
  "anyhow",
  "qcs-api-client-common",
@@ -2176,6 +2252,7 @@ dependencies = [
  "serde",
  "serde_json",
  "task-local-extensions",
+ "tokio",
  "tracing",
  "url",
  "urlpattern",
@@ -2183,7 +2260,7 @@ dependencies = [
 
 [[package]]
 name = "qcs-sdk-python"
-version = "0.16.3"
+version = "0.17.4"
 dependencies = [
  "async-trait",
  "numpy",
@@ -2213,12 +2290,12 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
 
 [[package]]
 name = "quil-rs"
-version = "0.22.5"
-source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.6.5#bfee2c882b402c7b14b921af2ca346b639378f4b"
+version = "0.23.0"
+source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.7.0#3bb618124c2165b7329c58c0f217d8ee9d816e67"
 dependencies = [
  "approx",
- "indexmap 1.9.3",
- "itertools 0.11.0",
+ "indexmap 2.2.5",
+ "itertools 0.12.1",
  "lexical",
  "ndarray",
  "nom 7.1.3",
@@ -2234,9 +2311,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.33"
+version = "1.0.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 dependencies = [
  "proc-macro2",
 ]
@@ -2279,9 +2356,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
 
 [[package]]
 name = "rayon"
-version = "1.8.0"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
+checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
 dependencies = [
  "either",
  "rayon-core",
@@ -2289,9 +2366,9 @@ dependencies = [
 
 [[package]]
 name = "rayon-core"
-version = "1.12.0"
+version = "1.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
 dependencies = [
  "crossbeam-deque",
  "crossbeam-utils",
@@ -2308,9 +2385,9 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.2"
+version = "1.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2320,9 +2397,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.3"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -2337,11 +2414,11 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
 name = "reqwest"
-version = "0.11.22"
+version = "0.11.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
+checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
  "bytes",
  "encoding_rs",
  "futures-core",
@@ -2359,12 +2436,13 @@ dependencies = [
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
- "rustls 0.21.9",
+ "rustls 0.21.10",
  "rustls-native-certs 0.6.3",
- "rustls-pemfile",
+ "rustls-pemfile 1.0.4",
  "serde",
  "serde_json",
  "serde_urlencoded",
+ "sync_wrapper",
  "system-configuration",
  "tokio",
  "tokio-rustls 0.24.1",
@@ -2380,9 +2458,9 @@ dependencies = [
 
 [[package]]
 name = "reqwest-middleware"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88a3e86aa6053e59030e7ce2d2a3b258dd08fc2d337d52f73f6cb480f5858690"
+checksum = "5a735987236a8e238bf0296c7e351b999c188ccc11477f311b82b55c93984216"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2395,9 +2473,9 @@ dependencies = [
 
 [[package]]
 name = "reqwest-tracing"
-version = "0.4.6"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14b1e66540e0cac90acadaf7109bf99c90d95abcc94b4c096bfa16a2d7aa7a71"
+checksum = "190838e54153d7a7e2ea98851304b3ce92daeabf14c54d32b01b84a3e636f683"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2421,7 +2499,6 @@ dependencies = [
  "num-traits",
  "paste",
  "pyo3",
- "time",
 ]
 
 [[package]]
@@ -2441,16 +2518,17 @@ dependencies = [
 
 [[package]]
 name = "ring"
-version = "0.17.7"
+version = "0.17.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
 dependencies = [
  "cc",
+ "cfg-if 1.0.0",
  "getrandom",
  "libc",
  "spin 0.9.8",
  "untrusted 0.9.0",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2524,11 +2602,11 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.26"
+version = "0.38.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a"
+checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
 dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.5.0",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -2550,17 +2628,31 @@ dependencies = [
 
 [[package]]
 name = "rustls"
-version = "0.21.9"
+version = "0.21.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9"
+checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
 dependencies = [
  "log",
- "ring 0.17.7",
- "rustls-webpki",
+ "ring 0.17.8",
+ "rustls-webpki 0.101.7",
  "sct 0.7.1",
 ]
 
 [[package]]
+name = "rustls"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41"
+dependencies = [
+ "log",
+ "ring 0.17.8",
+ "rustls-pki-types",
+ "rustls-webpki 0.102.2",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
 name = "rustls-native-certs"
 version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2579,7 +2671,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
 dependencies = [
  "openssl-probe",
- "rustls-pemfile",
+ "rustls-pemfile 1.0.4",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile 2.1.1",
+ "rustls-pki-types",
  "schannel",
  "security-framework",
 ]
@@ -2590,16 +2695,43 @@ version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
 dependencies = [
- "base64 0.21.5",
+ "base64 0.21.7",
 ]
 
 [[package]]
+name = "rustls-pemfile"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab"
+dependencies = [
+ "base64 0.21.7",
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ede67b28608b4c60685c7d54122d4400d90f62b40caee7700e700380a390fa8"
+
+[[package]]
 name = "rustls-webpki"
 version = "0.101.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
 dependencies = [
- "ring 0.17.7",
+ "ring 0.17.8",
+ "untrusted 0.9.0",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.102.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
+dependencies = [
+ "ring 0.17.8",
+ "rustls-pki-types",
  "untrusted 0.9.0",
 ]
 
@@ -2611,9 +2743,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "ryu"
-version = "1.0.15"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 
 [[package]]
 name = "same-file"
@@ -2626,11 +2758,11 @@ dependencies = [
 
 [[package]]
 name = "schannel"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
 dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2661,7 +2793,7 @@ version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
 dependencies = [
- "ring 0.17.7",
+ "ring 0.17.8",
  "untrusted 0.9.0",
 ]
 
@@ -2690,38 +2822,38 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.20"
+version = "1.0.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "serde"
-version = "1.0.193"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.193"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.108"
+version = "1.0.114"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
 dependencies = [
  "itoa",
  "ryu",
@@ -2730,9 +2862,9 @@ dependencies = [
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.4"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
 dependencies = [
  "serde",
 ]
@@ -2777,9 +2909,9 @@ checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
 
 [[package]]
 name = "similar"
-version = "2.3.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597"
+checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21"
 
 [[package]]
 name = "simple_asn1"
@@ -2795,9 +2927,9 @@ dependencies = [
 
 [[package]]
 name = "simple_logger"
-version = "4.3.0"
+version = "4.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0ca6504625ee1aa5fda33913d2005eab98c7a42dd85f116ecce3ff54c9d3ef"
+checksum = "8e7e46c8c90251d47d08b28b8a419ffb4aede0f87c2eea95e17d1d5bacbf3ef1"
 dependencies = [
  "log",
  "windows-sys 0.48.0",
@@ -2814,28 +2946,18 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
-
-[[package]]
-name = "socket2"
-version = "0.4.10"
+version = "1.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
-dependencies = [
- "libc",
- "winapi",
-]
+checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
 
 [[package]]
 name = "socket2"
-version = "0.5.5"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2870,27 +2992,33 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 
 [[package]]
 name = "strum"
-version = "0.24.1"
+version = "0.26.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
+checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29"
 dependencies = [
  "strum_macros",
 ]
 
 [[package]]
 name = "strum_macros"
-version = "0.24.3"
+version = "0.26.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
+checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 1.0.109",
+ "syn 2.0.53",
 ]
 
 [[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
 name = "syn"
 version = "1.0.109"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2903,9 +3031,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.39"
+version = "2.0.53"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
+checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2941,22 +3069,22 @@ dependencies = [
 
 [[package]]
 name = "system-deps"
-version = "6.2.0"
+version = "6.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
 dependencies = [
  "cfg-expr",
- "heck",
+ "heck 0.5.0",
  "pkg-config",
- "toml 0.8.8",
+ "toml 0.8.12",
  "version-compare",
 ]
 
 [[package]]
 name = "target-lexicon"
-version = "0.12.12"
+version = "0.12.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
 
 [[package]]
 name = "task-local-extensions"
@@ -2969,22 +3097,21 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.8.1"
+version = "3.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
 dependencies = [
  "cfg-if 1.0.0",
  "fastrand",
- "redox_syscall",
  "rustix",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "termcolor"
-version = "1.4.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
 dependencies = [
  "winapi-util",
 ]
@@ -3007,7 +3134,7 @@ dependencies = [
  "cfg-if 1.0.0",
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -3018,7 +3145,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
  "test-case-core",
 ]
 
@@ -3033,29 +3160,29 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.50"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.50"
+version = "1.0.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
 name = "thread_local"
-version = "1.1.7"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
 dependencies = [
  "cfg-if 1.0.0",
  "once_cell",
@@ -3063,12 +3190,14 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.3.28"
+version = "0.3.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
 dependencies = [
  "deranged",
  "itoa",
+ "num-conv",
+ "powerfmt",
  "serde",
  "time-core",
  "time-macros",
@@ -3076,16 +3205,17 @@ dependencies = [
 
 [[package]]
 name = "time-core"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.14"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572"
+checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
 dependencies = [
+ "num-conv",
  "time-core",
 ]
 
@@ -3106,9 +3236,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.34.0"
+version = "1.36.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9"
+checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
 dependencies = [
  "backtrace",
  "bytes",
@@ -3117,7 +3247,7 @@ dependencies = [
  "num_cpus",
  "parking_lot",
  "pin-project-lite",
- "socket2 0.5.5",
+ "socket2",
  "tokio-macros",
  "windows-sys 0.48.0",
 ]
@@ -3140,7 +3270,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -3160,7 +3290,18 @@ version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
 dependencies = [
- "rustls 0.21.9",
+ "rustls 0.21.10",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
+dependencies = [
+ "rustls 0.22.2",
+ "rustls-pki-types",
  "tokio",
 ]
 
@@ -3178,9 +3319,9 @@ dependencies = [
 
 [[package]]
 name = "tokio-stream"
-version = "0.1.14"
+version = "0.1.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
 dependencies = [
  "futures-core",
  "pin-project-lite",
@@ -3215,14 +3356,14 @@ dependencies = [
 
 [[package]]
 name = "toml"
-version = "0.8.8"
+version = "0.8.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit 0.21.0",
+ "toml_edit 0.22.8",
 ]
 
 [[package]]
@@ -3240,39 +3381,37 @@ version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
- "indexmap 2.1.0",
+ "indexmap 2.2.5",
  "serde",
  "serde_spanned",
  "toml_datetime",
- "winnow",
+ "winnow 0.5.40",
 ]
 
 [[package]]
 name = "toml_edit"
-version = "0.21.0"
+version = "0.22.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
+checksum = "c12219811e0c1ba077867254e5ad62ee2c9c190b0d957110750ac0cda1ae96cd"
 dependencies = [
- "indexmap 2.1.0",
+ "indexmap 2.2.5",
  "serde",
  "serde_spanned",
  "toml_datetime",
- "winnow",
+ "winnow 0.6.5",
 ]
 
 [[package]]
 name = "tonic"
-version = "0.9.2"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a"
+checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13"
 dependencies = [
  "async-stream",
  "async-trait",
  "axum",
- "base64 0.21.5",
+ "base64 0.21.7",
  "bytes",
- "futures-core",
- "futures-util",
  "h2",
  "http",
  "http-body",
@@ -3281,10 +3420,11 @@ dependencies = [
  "percent-encoding",
  "pin-project",
  "prost",
- "rustls-native-certs 0.6.3",
- "rustls-pemfile",
+ "rustls-native-certs 0.7.0",
+ "rustls-pemfile 2.1.1",
+ "rustls-pki-types",
  "tokio",
- "tokio-rustls 0.24.1",
+ "tokio-rustls 0.25.0",
  "tokio-stream",
  "tower",
  "tower-layer",
@@ -3294,15 +3434,35 @@ dependencies = [
 
 [[package]]
 name = "tonic-build"
-version = "0.9.2"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07"
+checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2"
 dependencies = [
  "prettyplease",
  "proc-macro2",
  "prost-build",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.53",
+]
+
+[[package]]
+name = "tonic-web"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc3b0e1cedbf19fdfb78ef3d672cb9928e0a91a9cb4629cc0c916e8cff8aaaa1"
+dependencies = [
+ "base64 0.21.7",
+ "bytes",
+ "http",
+ "http-body",
+ "hyper",
+ "pin-project",
+ "tokio-stream",
+ "tonic",
+ "tower-http",
+ "tower-layer",
+ "tower-service",
+ "tracing",
 ]
 
 [[package]]
@@ -3326,6 +3486,24 @@ dependencies = [
 ]
 
 [[package]]
+name = "tower-http"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
+dependencies = [
+ "bitflags 2.5.0",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "http-range-header",
+ "pin-project-lite",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
 name = "tower-layer"
 version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3357,7 +3535,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
 ]
 
 [[package]]
@@ -3422,9 +3600,9 @@ dependencies = [
 
 [[package]]
 name = "try-lock"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
 [[package]]
 name = "typenum"
@@ -3484,9 +3662,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.13"
+version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
 
 [[package]]
 name = "unicode-ident"
@@ -3496,9 +3674,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
 dependencies = [
  "tinyvec",
 ]
@@ -3559,9 +3737,9 @@ dependencies = [
 
 [[package]]
 name = "uuid"
-version = "1.6.1"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
 dependencies = [
  "getrandom",
 ]
@@ -3580,9 +3758,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
 
 [[package]]
 name = "version-compare"
-version = "0.1.1"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
+checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
 
 [[package]]
 name = "version_check"
@@ -3592,9 +3770,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
 name = "walkdir"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
 dependencies = [
  "same-file",
  "winapi-util",
@@ -3626,7 +3804,7 @@ dependencies = [
  "mime_guess",
  "percent-encoding",
  "pin-project",
- "rustls-pemfile",
+ "rustls-pemfile 1.0.4",
  "scoped-tls",
  "serde",
  "serde_json",
@@ -3646,9 +3824,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.89"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
 dependencies = [
  "cfg-if 1.0.0",
  "wasm-bindgen-macro",
@@ -3656,24 +3834,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.89"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.39"
+version = "0.4.42"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
 dependencies = [
  "cfg-if 1.0.0",
  "js-sys",
@@ -3683,9 +3861,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.89"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -3693,28 +3871,28 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.89"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.39",
+ "syn 2.0.53",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.89"
+version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
 
 [[package]]
 name = "web-sys"
-version = "0.3.66"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -3732,9 +3910,9 @@ dependencies = [
 
 [[package]]
 name = "webpki-roots"
-version = "0.25.3"
+version = "0.25.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
+checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
 
 [[package]]
 name = "which"
@@ -3790,15 +3968,6 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
 name = "windows-sys"
-version = "0.45.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-dependencies = [
- "windows-targets 0.42.2",
-]
-
-[[package]]
-name = "windows-sys"
 version = "0.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
@@ -3812,22 +3981,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.0",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
+ "windows-targets 0.52.4",
 ]
 
 [[package]]
@@ -3847,42 +4001,30 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.0"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.0",
- "windows_aarch64_msvc 0.52.0",
- "windows_i686_gnu 0.52.0",
- "windows_i686_msvc 0.52.0",
- "windows_x86_64_gnu 0.52.0",
- "windows_x86_64_gnullvm 0.52.0",
- "windows_x86_64_msvc 0.52.0",
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
 ]
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
 version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -3892,15 +4034,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -3910,15 +4046,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -3928,15 +4058,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -3946,15 +4070,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.42.2"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -3964,33 +4082,36 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.0"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.42.2"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.48.5"
+version = "0.52.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
 
 [[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.0"
+name = "winnow"
+version = "0.5.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
 
 [[package]]
 name = "winnow"
-version = "0.5.25"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e87b8dfbe3baffbe687eef2e164e32286eff31a5ee16463ce03d991643ec94"
+checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
 dependencies = [
  "memchr",
 ]
@@ -4021,6 +4142,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
 
 [[package]]
+name = "zeroize"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+
+[[package]]
 name = "zeromq-src"
 version = "0.2.6+4.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/pkgs/development/python-modules/qcs-sdk-python/default.nix b/pkgs/development/python-modules/qcs-sdk-python/default.nix
index 8144cad691335..100a7874fd187 100644
--- a/pkgs/development/python-modules/qcs-sdk-python/default.nix
+++ b/pkgs/development/python-modules/qcs-sdk-python/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, rustPlatform
-, quil
-, pytest-asyncio
-, pytestCheckHook
-, syrupy
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  quil,
+  rustPlatform,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "qcs-sdk-python";
-  version = "0.16.3";
+  version = "0.17.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,26 +21,24 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = "qcs-sdk-rust";
     rev = "python/v${version}";
-    hash = "sha256-Q2PCARxaWqgVVnr2O+zhGcNHghC4gr31bxkv6+Rf/EQ=";
+    hash = "sha256-Z/NK+xnugFieJqAbvGaVvxUaz9RC1vpWb4ydZTVbZeU=";
   };
 
   cargoDeps = rustPlatform.importCargoLock {
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "quil-rs-0.22.5" = "sha256-HUp41mOBjyAavhjFO5IJXHh2dVPcpFuDJ03nyRRuCCk=";
+      "quil-rs-0.23.0" = "sha256-l9wj1j7PJ5L497dPlkEpJ4ctAfjUIada5Vbn2h5ioVE=";
     };
   };
 
   buildAndTestSubdir = "crates/python";
 
-  nativeBuildInputs = [
+  build-system = [
     rustPlatform.cargoSetupHook
     rustPlatform.maturinBuildHook
   ];
 
-  propagatedBuildInputs = [
-    quil
-  ];
+  dependencies = [ quil ];
 
   nativeCheckInputs = [
     pytest-asyncio
diff --git a/pkgs/development/python-modules/qtile-extras/default.nix b/pkgs/development/python-modules/qtile-extras/default.nix
index 1661918152f1a..198cbdcdddf31 100644
--- a/pkgs/development/python-modules/qtile-extras/default.nix
+++ b/pkgs/development/python-modules/qtile-extras/default.nix
@@ -18,14 +18,14 @@
 
 buildPythonPackage rec {
   pname = "qtile-extras";
-  version = "0.24.0";
+  version = "0.25.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "elParaguayo";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-DJmnJcqhfCfl39SF3Ypv0PGtI4r8heaVv9JmpiCBGJo=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-OYzSKOVg4D5gKxaEreclYq3D16dl8ddLipSdifokDNY=";
   };
 
   nativeBuildInputs = [ setuptools-scm ];
diff --git a/pkgs/development/python-modules/qtile/default.nix b/pkgs/development/python-modules/qtile/default.nix
index 09a0c21a1f88a..9a3ecbafc049e 100644
--- a/pkgs/development/python-modules/qtile/default.nix
+++ b/pkgs/development/python-modules/qtile/default.nix
@@ -97,6 +97,6 @@ buildPythonPackage rec {
     description = "A small, flexible, scriptable tiling window manager written in Python";
     mainProgram = "qtile";
     platforms = platforms.linux;
-    maintainers = with maintainers; [ kamilchm arjan-s ];
+    maintainers = with maintainers; [ arjan-s ];
   };
 }
diff --git a/pkgs/development/python-modules/quart/default.nix b/pkgs/development/python-modules/quart/default.nix
index 5a79054e89519..d0da424c9f672 100644
--- a/pkgs/development/python-modules/quart/default.nix
+++ b/pkgs/development/python-modules/quart/default.nix
@@ -31,17 +31,17 @@
 
 buildPythonPackage rec {
   pname = "quart";
-  version = "0.19.4";
-  format = "pyproject";
+  version = "0.19.5";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pallets";
     repo = "quart";
     rev = "refs/tags/${version}";
-    hash = "sha256-EgCZ0AXK2vGxo55BWAcDVv6zNUrWNbAYNnEXEBJk+84=";
+    hash = "sha256-T2+76AVvXrads7AbjNAExV0i4doQ2xIUEwekVB2JXAo=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     poetry-core
   ];
 
@@ -50,7 +50,7 @@ buildPythonPackage rec {
       --replace "--no-cov-on-fail " ""
   '';
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiofiles
     blinker
     click
@@ -79,11 +79,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pytestFlagsArray = [
-    # pytest.PytestRemovedIn8Warning: Passing None has been deprecated.
-    "-W" "ignore::pytest.PytestRemovedIn8Warning"
-  ];
-
   meta = with lib; {
     description = "An async Python micro framework for building web applications";
     mainProgram = "quart";
diff --git a/pkgs/development/python-modules/quil/default.nix b/pkgs/development/python-modules/quil/default.nix
index 181f82d5f4332..41f79d79bdf3d 100644
--- a/pkgs/development/python-modules/quil/default.nix
+++ b/pkgs/development/python-modules/quil/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, pythonOlder
-, fetchFromGitHub
-, rustPlatform
-, numpy
-, pytestCheckHook
-, syrupy
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  rustPlatform,
+  numpy,
+  pytestCheckHook,
+  syrupy,
 }:
 
 buildPythonPackage rec {
   pname = "quil";
-  version = "0.6.5";
+  version = "0.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -19,13 +20,13 @@ buildPythonPackage rec {
     owner = "rigetti";
     repo = "quil-rs";
     rev = "quil-py/v${version}";
-    hash = "sha256-SYq0NOzYGJuXFPGjvYzGgKvioCk0hBxLR5S6VFU5d88=";
+    hash = "sha256-GFePbCJnVbzL4cpQ7fy1tk2l7NhAyTVW63lVYTv0/Oo=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     name = "${pname}-${version}";
     inherit src;
-    hash = "sha256-qZY9eQxxlH59DE/RrZFC3G6Pp3IdJupPN5AhUnrKSKs=";
+    hash = "sha256-catUGCFbkvov1z52f6eyxogflu61VcjIItgEVEWzkpY=";
   };
 
   buildAndTestSubdir = "quil-py";
@@ -34,14 +35,12 @@ buildPythonPackage rec {
     cargo metadata --offline
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     rustPlatform.cargoSetupHook
     rustPlatform.maturinBuildHook
   ];
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  dependencies = [ numpy ];
 
   pythonImportsCheck = [ "numpy" ];
 
diff --git a/pkgs/development/python-modules/radio-beam/default.nix b/pkgs/development/python-modules/radio-beam/default.nix
index 6d743125e8805..c0e9c31a5eca1 100644
--- a/pkgs/development/python-modules/radio-beam/default.nix
+++ b/pkgs/development/python-modules/radio-beam/default.nix
@@ -1,5 +1,6 @@
 { lib
 , fetchPypi
+, fetchpatch2
 , buildPythonPackage
 , setuptools-scm
 , astropy
@@ -21,6 +22,15 @@ buildPythonPackage rec {
     hash = "sha256-7AFkuuYLzibwwgz6zrFw0fBXCnGLzdm4OgT+Chve5jU=";
   };
 
+  # Fix distutils deprecation in Python 3.12. See:
+  # https://github.com/radio-astro-tools/radio-beam/pull/124
+  patches = [
+    (fetchpatch2 {
+      url = "https://github.com/radio-astro-tools/radio-beam/commit/1eb0216c8d7f5a4494d8d1fe8c79b48425a9c491.patch";
+      hash = "sha256-kTJF/cnkJCjJI2psvs+4MWFn/+b8TvUWjdfYu5ot0XU=";
+    })
+  ];
+
   nativeBuildInputs = [
     setuptools-scm
   ];
@@ -50,5 +60,3 @@ buildPythonPackage rec {
     maintainers = with maintainers; [ smaret ];
   };
 }
-
-
diff --git a/pkgs/development/python-modules/randomfiletree/default.nix b/pkgs/development/python-modules/randomfiletree/default.nix
new file mode 100644
index 0000000000000..9326c7b3062b9
--- /dev/null
+++ b/pkgs/development/python-modules/randomfiletree/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "randomfiletree";
+  version = "1.2.0";
+  format = "setuptools";
+
+  src = fetchPypi {
+    pname = "RandomFileTree";
+    inherit version;
+    hash = "sha256-OpLhLsvwk9xrP8FAXGkDDtMts6ikpx8ockvTR/TEmvw=";
+  };
+
+  pythonImportsCheck = [ "randomfiletree" ];
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Create a random file/directory tree/structure in python fortesting purposes";
+    homepage = "https://pypi.org/project/RandomFileTree/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ twitchy0 ];
+  };
+}
diff --git a/pkgs/development/python-modules/rapidfuzz/default.nix b/pkgs/development/python-modules/rapidfuzz/default.nix
index 5a1a6296b48d2..6caf19c721abf 100644
--- a/pkgs/development/python-modules/rapidfuzz/default.nix
+++ b/pkgs/development/python-modules/rapidfuzz/default.nix
@@ -18,16 +18,16 @@
 
 buildPythonPackage rec {
   pname = "rapidfuzz";
-  version = "3.7.0";
+  version = "3.8.1";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "maxbachmann";
     repo = "RapidFuzz";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BwU9Ti35Dsaa+kT78h3lsjw4sI1RQdhukTPTeJDyBw0=";
+    hash = "sha256-ljuqezL/Iu4VQelPi7KApBknDrWzikX7FD5iw5NcOL4=";
   };
 
   postPatch = ''
@@ -35,7 +35,7 @@ buildPythonPackage rec {
       --replace-fail "Cython >=3.0.9, <3.1.0" "Cython"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cmake
     cython_3
     ninja
diff --git a/pkgs/development/python-modules/rapidgzip/default.nix b/pkgs/development/python-modules/rapidgzip/default.nix
index f50537524cbf9..69f9fb1388d72 100644
--- a/pkgs/development/python-modules/rapidgzip/default.nix
+++ b/pkgs/development/python-modules/rapidgzip/default.nix
@@ -1,23 +1,25 @@
 { lib
 , buildPythonPackage
+, cython
 , fetchPypi
 , pythonOlder
+, setuptools
 , nasm
 }:
 
 buildPythonPackage rec {
   pname = "rapidgzip";
-  version = "0.13.0";
-  format = "setuptools";
+  version = "0.13.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MwT4+wzlNXfDLT/o/oT1iy9cVlFIIXc18r7dg+x5SXY=";
+    hash = "sha256-t6mfOsCg0FoV7N4GfTIs1KwxeGIOORuxbEIEJN52nRw=";
   };
 
-  nativeBuildInputs = [ nasm ];
+  nativeBuildInputs = [ cython nasm setuptools ];
 
   # has no tests
   doCheck = false;
@@ -31,6 +33,5 @@ buildPythonPackage rec {
     changelog = "https://github.com/mxmlnkn/rapidgzip/blob/rapidgzip-v${version}/python/rapidgzip/CHANGELOG.md";
     license = licenses.mit; # dual MIT and asl20, https://internals.rust-lang.org/t/rationale-of-apache-dual-licensing/8952
     maintainers = with lib.maintainers; [ mxmlnkn ];
-    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/rarfile/default.nix b/pkgs/development/python-modules/rarfile/default.nix
index 702e47b4bdf63..4f3cbc28ea770 100644
--- a/pkgs/development/python-modules/rarfile/default.nix
+++ b/pkgs/development/python-modules/rarfile/default.nix
@@ -8,15 +8,15 @@ assert !useUnrar -> libarchive != null;
 
 buildPythonPackage rec {
   pname = "rarfile";
-  version = "4.1";
+  version = "4.2";
   format = "setuptools";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "markokr";
     repo = "rarfile";
-    rev = "v${version}";
-    sha256 = "sha256-9PT4/KgkdFhTjZIia2xiSM5VnaZ4040Ww7bG9Nr3XDU=";
+    rev = "refs/tags/v${version}";
+    sha256 = "sha256-ZiwD2LG25fMd4Z+QWsh/x3ceG5QRBH4s/TZDwMnfpNI=";
   };
 
   nativeCheckInputs = [ pytestCheckHook nose glibcLocales ];
diff --git a/pkgs/development/python-modules/rasterio/default.nix b/pkgs/development/python-modules/rasterio/default.nix
index eef18524c2172..07dfa2c94aae5 100644
--- a/pkgs/development/python-modules/rasterio/default.nix
+++ b/pkgs/development/python-modules/rasterio/default.nix
@@ -5,6 +5,7 @@
 , pytestCheckHook
 , pythonOlder
 , stdenv
+, testers
 
 , affine
 , attrs
@@ -26,6 +27,8 @@
 , shapely
 , snuggs
 , wheel
+
+, rasterio  # required to run version test
 }:
 
 buildPythonPackage rec {
@@ -54,6 +57,12 @@ buildPythonPackage rec {
     })
   ];
 
+  postPatch = ''
+    # remove useless import statement requiring distutils to be present at the runtime
+    substituteInPlace rasterio/rio/calc.py \
+      --replace-fail "from distutils.version import LooseVersion" ""
+    '';
+
   nativeBuildInputs = [
     cython_3
     gdal
@@ -71,7 +80,6 @@ buildPythonPackage rec {
     click-plugins
     cligj
     numpy
-    setuptools
     snuggs
   ];
 
@@ -96,6 +104,12 @@ buildPythonPackage rec {
     shapely
   ];
 
+  # rio has runtime dependency on setuptools
+  setuptoolsPythonPath = [ setuptools ];
+  postInstall = ''
+    wrapPythonProgramsIn "$out/bin" "$out $setuptoolsPythonPath"
+  '';
+
   doCheck = true;
 
   preCheck = ''
@@ -104,6 +118,9 @@ buildPythonPackage rec {
 
   pytestFlagsArray = [
     "-m 'not network'"
+
+    # pytest.PytestRemovedIn8Warning: Passing None has been deprecated.
+    "-W ignore::pytest.PytestRemovedIn8Warning"
   ];
 
   disabledTests = [
@@ -117,6 +134,12 @@ buildPythonPackage rec {
     "rasterio"
   ];
 
+  passthru.tests.version = testers.testVersion {
+    package = rasterio;
+    version = version;
+    command = "${rasterio}/bin/rio --version";
+  };
+
   meta = with lib; {
     description = "Python package to read and write geospatial raster data";
     mainProgram = "rio";
diff --git a/pkgs/development/python-modules/ratarmount/default.nix b/pkgs/development/python-modules/ratarmount/default.nix
index 21bd26c45c865..6cfadadc8c1b4 100644
--- a/pkgs/development/python-modules/ratarmount/default.nix
+++ b/pkgs/development/python-modules/ratarmount/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "ratarmount";
-  version = "0.14.1";
+  version = "0.14.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-TrOYf9kbcRM8E9vq6sjswK2BQ0eA5zSGAIiNAfIZtnk=";
+    hash = "sha256-CZh27X5EmUiRYfeV0KOnpMrFDfa+qDFHr2pInD90UO8=";
   };
 
   propagatedBuildInputs = [ ratarmountcore fusepy ];
diff --git a/pkgs/development/python-modules/ratarmountcore/default.nix b/pkgs/development/python-modules/ratarmountcore/default.nix
index 90a45cecdb7ad..844fa2c499230 100644
--- a/pkgs/development/python-modules/ratarmountcore/default.nix
+++ b/pkgs/development/python-modules/ratarmountcore/default.nix
@@ -1,12 +1,13 @@
 { lib
 , buildPythonPackage
-, fetchgit
+, fetchFromGitHub
 , pythonOlder
 , pytestCheckHook
 , indexed-bzip2
 , indexed-gzip
 , indexed-zstd
 , python-xz
+, setuptools
 , rapidgzip
 , rarfile
 , zstandard     # Python bindings
@@ -15,35 +16,42 @@
 
 buildPythonPackage rec {
   pname = "ratarmountcore";
-  version = "0.6.0";
-  format = "setuptools";
+  version = "0.6.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
-  src = fetchgit {
-    url = "https://github.com/mxmlnkn/ratarmount";
-    # The revision is hardcoded for now to fix problems with the tests, which are not worthy of a new release
-    # tag because releases do not officially contain tests. On the next release, use the commented revision,
-    # which points to a release tag, instead.
-    #rev = "core-v${version}";
-    rev = "ea43572dfbac4770a27ef2169f72ff73ee4a4ae9";
-    hash = "sha256-sPApM5OW+UbujFXHSL4ptMaegajz7FNtXz/KftTlw+U=";
+  src = fetchFromGitHub {
+    owner = "mxmlnkn";
+    repo = "ratarmount";
+    rev = "core-v${version}";
+    hash = "sha256-2jG066BUkhyHRqRyFAucQRJrjXQNw2ccCxERKkltO3Y=";
     fetchSubmodules = true;
   };
 
   sourceRoot = "${src.name}/core";
 
+  nativeBuildInputs = [ setuptools ];
   propagatedBuildInputs = [ indexed-gzip indexed-bzip2 indexed-zstd python-xz rapidgzip rarfile ];
 
   pythonImportsCheck = [ "ratarmountcore" ];
 
   nativeCheckInputs = [ pytestCheckHook zstandard zstd ];
 
+  disabledTestPaths = [
+    # Disable this test because for arcane reasons running pytest with nix-build uses 10-100x
+    # more virtual memory than running the test directly or inside a local development nix-shell.
+    # This virtual memory usage caused os.fork called by Python multiprocessing to fail with
+    # "OSError: [Errno 12] Cannot allocate memory" on a test system with 16 GB RAM. It worked fine
+    # on a system with 96 GB RAM. In order to avoid build errors on "low"-memory systems, this
+    # test is disabled for now.
+    "tests/test_BlockParallelReaders.py"
+  ];
+
   meta = with lib; {
     description = "Library for accessing archives by way of indexing";
     homepage = "https://github.com/mxmlnkn/ratarmount/tree/master/core";
     license = licenses.mit;
     maintainers = with lib.maintainers; [ mxmlnkn ];
-    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/python-modules/reconplogger/default.nix b/pkgs/development/python-modules/reconplogger/default.nix
index 29f3c8b649aa2..319730e8168f5 100644
--- a/pkgs/development/python-modules/reconplogger/default.nix
+++ b/pkgs/development/python-modules/reconplogger/default.nix
@@ -1,19 +1,20 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, flask
-, logmatic-python
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, requests
-, setuptools
-, testfixtures
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  flask,
+  logmatic-python,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  requests,
+  setuptools,
+  testfixtures,
 }:
 
 buildPythonPackage rec {
   pname = "reconplogger";
-  version = "4.15.0";
+  version = "4.16.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,14 +23,12 @@ buildPythonPackage rec {
     owner = "omni-us";
     repo = "reconplogger";
     rev = "refs/tags/v${version}";
-    hash = "sha256-0+YOrMqyDK6uAni2h5b6P850veIkUiifX6aHzCnRHD0=";
+    hash = "sha256-jBWy5oHyZpRUWb8OW0dRFfpu3m3hTd5dpIOQCRO5swM=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     logmatic-python
     pyyaml
   ];
@@ -46,13 +45,9 @@ buildPythonPackage rec {
     testfixtures
   ];
 
-  pythonImportsCheck = [
-    "reconplogger"
-  ];
+  pythonImportsCheck = [ "reconplogger" ];
 
-  pytestFlagsArray = [
-    "reconplogger_tests.py"
-  ];
+  pytestFlagsArray = [ "reconplogger_tests.py" ];
 
   meta = with lib; {
     description = "Module to ease the standardization of logging within omni:us";
diff --git a/pkgs/development/python-modules/reptor/default.nix b/pkgs/development/python-modules/reptor/default.nix
index 3f472ef12733b..3c52cc3f49aa2 100644
--- a/pkgs/development/python-modules/reptor/default.nix
+++ b/pkgs/development/python-modules/reptor/default.nix
@@ -1,38 +1,39 @@
-{ lib
-, asgiref
-, buildPythonPackage
-, certifi
-, charset-normalizer
-, cvss
-, deepl
-, django
-, fetchFromGitHub
-, gql
-, idna
-, markdown-it-py
-, mdurl
-, pygments
-, pytest
-, pytestCheckHook
-, pythonOlder
-, pythonRelaxDepsHook
-, pyyaml
-, reptor
-, requests
-, rich
-, setuptools
-, sqlparse
-, termcolor
-, tomli
-, tomli-w
-, tomlkit
-, urllib3
-, xmltodict
+{
+  lib,
+  asgiref,
+  buildPythonPackage,
+  certifi,
+  charset-normalizer,
+  cvss,
+  deepl,
+  django,
+  fetchFromGitHub,
+  gql,
+  idna,
+  markdown-it-py,
+  mdurl,
+  pygments,
+  pytest,
+  pytestCheckHook,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pyyaml,
+  reptor,
+  requests,
+  rich,
+  setuptools,
+  sqlparse,
+  termcolor,
+  tomli,
+  tomli-w,
+  tomlkit,
+  urllib3,
+  xmltodict,
 }:
 
 buildPythonPackage rec {
   pname = "reptor";
-  version = "0.17";
+  version = "0.18";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -41,15 +42,14 @@ buildPythonPackage rec {
     owner = "Syslifters";
     repo = "reptor";
     rev = "refs/tags/${version}";
-    hash = "sha256-3GINDFKgvFv03xF+77K+sTKSm0+kLF5m70dQ/iksZeM=";
+    hash = "sha256-sojU2Asop0b/b/gfKXoRseuT1zHEO00JNrRWhMYh0Vo=";
   };
 
   pythonRelaxDeps = true;
 
-  build-system = [
-    pythonRelaxDepsHook
-    setuptools
-  ];
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
   dependencies = [
     asgiref
@@ -74,12 +74,8 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    ghostwriter = [
-      gql
-    ] ++ gql.optional-dependencies.aiohttp;
-    translate = [
-      deepl
-    ];
+    ghostwriter = [ gql ] ++ gql.optional-dependencies.aiohttp;
+    translate = [ deepl ];
   };
 
   nativeCheckInputs = [
@@ -91,9 +87,7 @@ buildPythonPackage rec {
     export PATH="$PATH:$out/bin";
   '';
 
-  pythonImportsCheck = [
-    "reptor"
-  ];
+  pythonImportsCheck = [ "reptor" ];
 
   disabledTestPaths = [
     # Tests want to use pip install dependencies
@@ -104,7 +98,6 @@ buildPythonPackage rec {
     # Tests need network access
     "TestDummy"
     "TestIntegration"
-
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/reuse/default.nix b/pkgs/development/python-modules/reuse/default.nix
index ee96a52fc0ebd..b0d9920830019 100644
--- a/pkgs/development/python-modules/reuse/default.nix
+++ b/pkgs/development/python-modules/reuse/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "reuse";
-  version = "3.0.1";
+  version = "3.0.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "fsfe";
     repo = "reuse-tool";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hDvOT9BP/E95FTa8rvtdxQoEDYgfMAkCSbX5KKV3qbQ=";
+    hash = "sha256-ZYmQtJ503HDmu+Cd6IxOrCcOVH+CcFnFe3oe6PqvcE0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/ring-doorbell/default.nix b/pkgs/development/python-modules/ring-doorbell/default.nix
index 68c0ba09b1609..1ef168dbe4769 100644
--- a/pkgs/development/python-modules/ring-doorbell/default.nix
+++ b/pkgs/development/python-modules/ring-doorbell/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "ring-doorbell";
-  version = "0.8.10";
+  version = "0.8.11";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "ring_doorbell";
     inherit version;
-    hash = "sha256-MKN38SqSn97SF9Y7IzNO6PHsbExjRNXph0Pp1mTNjVI=";
+    hash = "sha256-XygVfIf6zlKy2kv/9TKLG8MpYX4YnzYIKiSG7nP5YI8=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/riscv-config/default.nix b/pkgs/development/python-modules/riscv-config/default.nix
index 2f7af9d474229..298772e12cc76 100644
--- a/pkgs/development/python-modules/riscv-config/default.nix
+++ b/pkgs/development/python-modules/riscv-config/default.nix
@@ -1,28 +1,37 @@
-{ lib
-, buildPythonPackage
-, cerberus
-, fetchFromGitHub
-, fetchpatch
-, pythonOlder
-, pyyaml
-, ruamel-yaml
+{
+  lib,
+  buildPythonPackage,
+  cerberus,
+  fetchFromGitHub,
+  fetchpatch,
+  pythonOlder,
+  pyyaml,
+  ruamel-yaml,
+  setuptools,
+  pythonRelaxDepsHook,
 }:
 
 buildPythonPackage rec {
   pname = "riscv-config";
-  version = "3.17.1";
-  format = "setuptools";
+  version = "3.18.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "riscv-software-src";
-    repo = pname;
+    repo = "riscv-config";
     rev = "refs/tags/${version}";
-    hash = "sha256-M36xS9rBnCPHWmHvAA6qC9J21K/zIjgsqEyhApJDKrE=";
+    hash = "sha256-lBjSHfnuNPi4Ks5ZCRLqJx3/l4GMmMEEIud8ZVl/S4Q=";
   };
 
-  propagatedBuildInputs = [
+  pythonRelaxDeps = [ "pyyaml" ];
+
+  build-system = [ setuptools ];
+
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
+
+  dependencies = [
     cerberus
     pyyaml
     ruamel-yaml
@@ -31,16 +40,14 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "riscv_config"
-  ];
+  pythonImportsCheck = [ "riscv_config" ];
 
   meta = with lib; {
     description = "RISC-V configuration validator";
-    mainProgram = "riscv-config";
     homepage = "https://github.com/riscv/riscv-config";
     changelog = "https://github.com/riscv-software-src/riscv-config/blob/${version}/CHANGELOG.md";
-    maintainers = with maintainers; [ genericnerdyusername ];
     license = licenses.bsd3;
+    maintainers = with maintainers; [ genericnerdyusername ];
+    mainProgram = "riscv-config";
   };
 }
diff --git a/pkgs/development/python-modules/robotframework-requests/default.nix b/pkgs/development/python-modules/robotframework-requests/default.nix
index 6d009c61a80cc..d1b6f21df06be 100644
--- a/pkgs/development/python-modules/robotframework-requests/default.nix
+++ b/pkgs/development/python-modules/robotframework-requests/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "robotframework-requests";
-  version = "0.9.6";
+  version = "0.9.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "MarketSquare";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-TuKfR+pUcQ4kf9HsX6s9WYukhwLBbJkwModoreAgo60=";
+    hash = "sha256-NRhf3delcqUw9vWRPL6pJzpcmRMDou2pHmUHMstF8hw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/roombapy/default.nix b/pkgs/development/python-modules/roombapy/default.nix
index 81841aadebee9..465da76efe4ba 100644
--- a/pkgs/development/python-modules/roombapy/default.nix
+++ b/pkgs/development/python-modules/roombapy/default.nix
@@ -1,20 +1,22 @@
 { lib
 , amqtt
 , buildPythonPackage
+, click
 , fetchFromGitHub
+, mashumaro
 , orjson
 , paho-mqtt
 , poetry-core
-, pydantic
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
 , pythonRelaxDepsHook
+, tabulate
 }:
 
 buildPythonPackage rec {
   pname = "roombapy";
-  version = "1.7.0";
+  version = "1.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -23,7 +25,7 @@ buildPythonPackage rec {
     owner = "pschmitt";
     repo = "roombapy";
     rev = "refs/tags/${version}";
-    hash = "sha256-vB6+cGqeHFthCbz4q75EwsHb8w1H2vPSaKdtvquh5Kc=";
+    hash = "sha256-1yfmaTzZ7cZW2+Yb3Zbo8+5TfD+H1sA0+SzC1c9MdsQ=";
   };
 
   nativeBuildInputs = [
@@ -36,9 +38,14 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
+    mashumaro
     orjson
     paho-mqtt
-    pydantic
+  ];
+
+  optional-dependencies.cli = [
+    click
+    tabulate
   ];
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/sagemaker/default.nix b/pkgs/development/python-modules/sagemaker/default.nix
index 9f55a4e809ab5..a8b0d3f07cba4 100644
--- a/pkgs/development/python-modules/sagemaker/default.nix
+++ b/pkgs/development/python-modules/sagemaker/default.nix
@@ -2,7 +2,9 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
+, fetchpatch
 , pythonRelaxDepsHook
+, setuptools
 , attrs
 , boto3
 , cloudpickle
@@ -20,14 +22,18 @@
 , platformdirs
 , tblib
 , urllib3
+, requests
 , docker
+, tqdm
+, psutil
 , scipy
+, accelerate
 }:
 
 buildPythonPackage rec {
   pname = "sagemaker";
-  version = "2.214.1";
-  format = "setuptools";
+  version = "2.214.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -35,19 +41,33 @@ buildPythonPackage rec {
     owner = "aws";
     repo = "sagemaker-python-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KDy3pVRuS/p32KlSBsXU8XFp6Eedgg809RmKD/FrZfQ=";
+    hash = "sha256-RE4uyIpFiZNDyS5R6+gMLlj0vcAIiHPattFPTSMGnCI=";
   };
 
-  nativeBuildInputs = [
+  patches = [
+    # Distutils removal, fix build with python 3.12
+    # https://github.com/aws/sagemaker-python-sdk/pull/4544
+    (fetchpatch {
+      url = "https://github.com/aws/sagemaker-python-sdk/commit/84447ba59e544c810aeb842fd058e20d89e3fc74.patch";
+      hash = "sha256-B8Q18ViB7xYy1F5LoL1NvXj2lnFPgt+C9wssSODyAXM=";
+    })
+    (fetchpatch {
+      url = "https://github.com/aws/sagemaker-python-sdk/commit/e9e08a30cb42d4b2d7299c1c4b42d680a8c78110.patch";
+      hash = "sha256-uGPtXSXfeaIvt9kkZZKQDuiZfoRgw3teffuxai1kKlY=";
+    })
+  ];
+
+  build-system = [
+    setuptools
     pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = [
-    "attrs"
-    "boto3"
+    "cloudpickle"
+    "importlib-metadata"
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     attrs
     boto3
     cloudpickle
@@ -64,6 +84,11 @@ buildPythonPackage rec {
     jsonschema
     platformdirs
     tblib
+    urllib3
+    requests
+    docker
+    tqdm
+    psutil
   ];
 
   doCheck = false; # many test dependencies are not available in nixpkgs
@@ -76,6 +101,7 @@ buildPythonPackage rec {
   passthru.optional-dependencies = {
     local = [ urllib3 docker pyyaml ];
     scipy = [ scipy ];
+    huggingface = [ accelerate ];
     # feature-processor = [ pyspark sagemaker-feature-store-pyspark ]; # not available in nixpkgs
   };
 
diff --git a/pkgs/development/python-modules/schema-salad/default.nix b/pkgs/development/python-modules/schema-salad/default.nix
index 7e20d1c39779e..8d267299add02 100644
--- a/pkgs/development/python-modules/schema-salad/default.nix
+++ b/pkgs/development/python-modules/schema-salad/default.nix
@@ -1,52 +1,63 @@
-{ lib
-, black
-, buildPythonPackage
-, cachecontrol
-, fetchFromGitHub
-, importlib-resources
-, mistune
-, mypy-extensions
-, pytestCheckHook
-, pythonOlder
-, rdflib
-, requests
-, ruamel-yaml
-, setuptools-scm
+{
+  lib,
+  black,
+  buildPythonPackage,
+  cachecontrol,
+  fetchFromGitHub,
+  importlib-resources,
+  mistune,
+  mypy,
+  mypy-extensions,
+  pytestCheckHook,
+  pythonRelaxDepsHook,
+  pythonOlder,
+  rdflib,
+  requests,
+  ruamel-yaml,
+  setuptools-scm,
+  types-dataclasses,
+  types-requests,
+  types-setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "schema-salad";
-  version = "8.5.20240311110950";
-  format = "setuptools";
+  version = "8.5.20240410123758";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "common-workflow-language";
     repo = "schema_salad";
     rev = "refs/tags/${version}";
-    hash = "sha256-bjeVgV9ovIVvGvSay24vKkzSXBbzgV05BkO5DojTX3o=";
+    hash = "sha256-AgXqeiA4sP7KBnUpb2uMWq45G0LhJ5uLtORrOG4UuB0=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "black>=19.10b0,<23.12" "black>=19.10b0"
+  '';
 
-  propagatedBuildInputs = [
-    cachecontrol
-    mistune
-    mypy-extensions
-    rdflib
-    requests
-    ruamel-yaml
-  ] ++ cachecontrol.optional-dependencies.filecache
-  ++ lib.optionals (pythonOlder "3.9") [
-    importlib-resources
-  ];
+  build-system = [ setuptools-scm ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ] ++ passthru.optional-dependencies.pycodegen;
+  dependencies =
+    [
+      cachecontrol
+      mistune
+      mypy
+      mypy-extensions
+      rdflib
+      requests
+      ruamel-yaml
+      types-dataclasses
+      types-requests
+      types-setuptools
+    ]
+    ++ cachecontrol.optional-dependencies.filecache
+    ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ];
+
+  nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.pycodegen;
 
   preCheck = ''
     rm tox.ini
@@ -62,14 +73,10 @@ buildPythonPackage rec {
     "test_bad_schemas"
   ];
 
-  pythonImportsCheck = [
-    "schema_salad"
-  ];
+  pythonImportsCheck = [ "schema_salad" ];
 
   passthru.optional-dependencies = {
-    pycodegen = [
-      black
-    ];
+    pycodegen = [ black ];
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/scs/default.nix b/pkgs/development/python-modules/scs/default.nix
index c1ca83ed4ba1a..3584174bf2844 100644
--- a/pkgs/development/python-modules/scs/default.nix
+++ b/pkgs/development/python-modules/scs/default.nix
@@ -80,6 +80,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/cvxgrp/scs"; # upstream C package
     downloadPage = "https://github.com/bodono/scs-python";
     license = licenses.mit;
-    maintainers = with maintainers; [ a-n-n-a-l-e-e drewrisinger ];
+    maintainers = with maintainers; [ drewrisinger ];
   };
 }
diff --git a/pkgs/development/python-modules/semver/default.nix b/pkgs/development/python-modules/semver/default.nix
index 7260baa5aa100..cb2ed61307b36 100644
--- a/pkgs/development/python-modules/semver/default.nix
+++ b/pkgs/development/python-modules/semver/default.nix
@@ -1,16 +1,17 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  setuptools-scm,
 }:
 
 buildPythonPackage rec {
   pname = "semver";
   version = "3.0.2";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -21,35 +22,31 @@ buildPythonPackage rec {
     hash = "sha256-772PSUq1dqtn9aOol+Bo0S0OItBmoiCNP8q/YCBvKU4=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    setuptools-scm
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
-
   postPatch = ''
     sed -i "/--cov/d" setup.cfg
     sed -i "/--no-cov-on-fail/d" setup.cfg
   '';
 
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+
   disabledTestPaths = [
     # Don't test the documentation
     "docs/*.rst"
   ];
 
-  pythonImportsCheck = [
-    "semver"
-  ];
+  pythonImportsCheck = [ "semver" ];
 
   meta = with lib; {
     description = "Python package to work with Semantic Versioning (http://semver.org/)";
-    mainProgram = "pysemver";
     homepage = "https://python-semver.readthedocs.io/";
     changelog = "https://github.com/python-semver/python-semver/releases/tag/3.0.0";
     license = licenses.bsd3;
     maintainers = with maintainers; [ np ];
+    mainProgram = "pysemver";
   };
 }
diff --git a/pkgs/development/python-modules/sentry-sdk/default.nix b/pkgs/development/python-modules/sentry-sdk/default.nix
index f225853368b5c..3f57549a1e39d 100644
--- a/pkgs/development/python-modules/sentry-sdk/default.nix
+++ b/pkgs/development/python-modules/sentry-sdk/default.nix
@@ -1,44 +1,45 @@
-{ lib
-, stdenv
-, aiohttp
-, apache-beam
-, asttokens
-, blinker
-, bottle
-, buildPythonPackage
-, celery
-, certifi
-, chalice
-, django
-, executing
-, falcon
-, fetchFromGitHub
-, flask
-, gevent
-, httpx
-, jsonschema
-, mock
-, pure-eval
-, pyrsistent
-, pyspark
-, pysocks
-, pytest-forked
-, pytest-localserver
-, pytest-watch
-, pytestCheckHook
-, pythonOlder
-, quart
-, rq
-, sanic
-, setuptools
-, sqlalchemy
-, tornado
-, urllib3
+{
+  lib,
+  stdenv,
+  aiohttp,
+  apache-beam,
+  asttokens,
+  blinker,
+  bottle,
+  buildPythonPackage,
+  celery,
+  certifi,
+  chalice,
+  django,
+  executing,
+  falcon,
+  fetchFromGitHub,
+  flask,
+  gevent,
+  httpx,
+  jsonschema,
+  mock,
+  pure-eval,
+  pyrsistent,
+  pyspark,
+  pysocks,
+  pytest-forked,
+  pytest-localserver,
+  pytest-watch,
+  pytestCheckHook,
+  pythonOlder,
+  quart,
+  rq,
+  sanic,
+  setuptools,
+  sqlalchemy,
+  tornado,
+  urllib3,
 }:
 
 buildPythonPackage rec {
   pname = "sentry-sdk";
-  version = "1.42.0";
+  version = "1.45.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -47,50 +48,30 @@ buildPythonPackage rec {
     owner = "getsentry";
     repo = "sentry-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-LZn7oWwKdHi/KScitFnNDX7pI92mNkC6niGP+BixjtA=";
+    hash = "sha256-OWoMqJlf0vmBHWWsW6mF4u5X9USzxkFmCJyX7Ws0dD0=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     certifi
     urllib3
   ];
 
   passthru.optional-dependencies = {
-    aiohttp = [
-      aiohttp
-    ];
-    beam = [
-      apache-beam
-    ];
-    bottle = [
-      bottle
-    ];
-    celery = [
-      celery
-    ];
-    chalice = [
-      chalice
-    ];
-    django = [
-      django
-    ];
-    falcon = [
-      falcon
-    ];
+    aiohttp = [ aiohttp ];
+    beam = [ apache-beam ];
+    bottle = [ bottle ];
+    celery = [ celery ];
+    chalice = [ chalice ];
+    django = [ django ];
+    falcon = [ falcon ];
     flask = [
       flask
       blinker
     ];
-    httpx = [
-      httpx
-    ];
-    pyspark = [
-      pyspark
-    ];
+    httpx = [ httpx ];
+    pyspark = [ pyspark ];
     pure_eval = [
       asttokens
       executing
@@ -100,18 +81,10 @@ buildPythonPackage rec {
       quart
       blinker
     ];
-    rq = [
-      rq
-    ];
-    sanic = [
-      sanic
-    ];
-    sqlalchemy = [
-      sqlalchemy
-    ];
-    tornado = [
-      tornado
-    ];
+    rq = [ rq ];
+    sanic = [ sanic ];
+    sqlalchemy = [ sqlalchemy ];
+    tornado = [ tornado ];
   };
 
   nativeCheckInputs = [
@@ -137,24 +110,27 @@ buildPythonPackage rec {
     "test_default_release"
   ];
 
-  disabledTestPaths = [
-    # Varius integration tests fail every once in a while when we
-    # upgrade dependencies, so don't bother testing them.
-    "tests/integrations/"
-  ] ++ lib.optionals (stdenv.buildPlatform != "x86_64-linux") [
-    # test crashes on aarch64
-    "tests/test_transport.py"
-  ];
+  disabledTestPaths =
+    [
+      # Varius integration tests fail every once in a while when we
+      # upgrade dependencies, so don't bother testing them.
+      "tests/integrations/"
+    ]
+    ++ lib.optionals (stdenv.buildPlatform != "x86_64-linux") [
+      # test crashes on aarch64
+      "tests/test_transport.py"
+    ];
 
-  pythonImportsCheck = [
-    "sentry_sdk"
-  ];
+  pythonImportsCheck = [ "sentry_sdk" ];
 
   meta = with lib; {
     description = "Python SDK for Sentry.io";
     homepage = "https://github.com/getsentry/sentry-python";
     changelog = "https://github.com/getsentry/sentry-python/blob/${version}/CHANGELOG.md";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ fab gebner ];
+    maintainers = with maintainers; [
+      fab
+      gebner
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/setuptools-git-versioning/default.nix b/pkgs/development/python-modules/setuptools-git-versioning/default.nix
index ea287302392c3..311de1fe5ff87 100644
--- a/pkgs/development/python-modules/setuptools-git-versioning/default.nix
+++ b/pkgs/development/python-modules/setuptools-git-versioning/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "setuptools-git-versioning";
-  version = "1.13.6";
+  version = "2.0.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "dolfinus";
     repo = "setuptools-git-versioning";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YUIh+dK4Sj85vhvI7u15a734tbQsox5VZ2WEAB/mpgc=";
+    hash = "sha256-xugK/JOVA53nCK8bB0gPkhIREmy0+/OthsydfYRCYno=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/shaperglot/default.nix b/pkgs/development/python-modules/shaperglot/default.nix
index c00f66394dda3..9201436d3b609 100644
--- a/pkgs/development/python-modules/shaperglot/default.nix
+++ b/pkgs/development/python-modules/shaperglot/default.nix
@@ -3,9 +3,11 @@
 , fetchFromGitHub
 , gflanguages
 , num2words
-, poetry-core
 , protobuf
 , pytestCheckHook
+, pyyaml
+, setuptools
+, setuptools-scm
 , strictyaml
 , termcolor
 , ufo2ft
@@ -27,18 +29,20 @@ buildPythonPackage rec {
 
   pyproject = true;
 
-  propagatedBuildInputs = [
+  dependencies = [
     gflanguages
     num2words
     protobuf
+    pyyaml
     strictyaml
     termcolor
     ufo2ft
     vharfbuzz
     youseedee
   ];
-  nativeBuildInputs = [
-    poetry-core
+  build-system = [
+    setuptools
+    setuptools-scm
   ];
 
   doCheck = true;
diff --git a/pkgs/development/python-modules/shiboken6/default.nix b/pkgs/development/python-modules/shiboken6/default.nix
index b2e8362be8b9b..57b7e64273d6e 100644
--- a/pkgs/development/python-modules/shiboken6/default.nix
+++ b/pkgs/development/python-modules/shiboken6/default.nix
@@ -1,6 +1,5 @@
 { lib
 , fetchurl
-, fetchpatch
 , llvmPackages
 , python
 , cmake
@@ -13,25 +12,18 @@ let
 in
 stdenv'.mkDerivation rec {
   pname = "shiboken6";
-  version = "6.6.0";
+  version = "6.7.0";
 
   src = fetchurl {
     # https://download.qt.io/official_releases/QtForPython/shiboken6/
     url = "https://download.qt.io/official_releases/QtForPython/shiboken6/PySide6-${version}-src/pyside-setup-everywhere-src-${version}.tar.xz";
-    sha256 = "sha256-LdAC24hRqHFzNU84qoxuxC0P8frJnqQisp4t/OUtFjg=";
+    hash = "sha256-gurjcHN99ez1OcFl0J18gdX8YVOlQbjT03sRJ1+ePo8=";
   };
 
-  sourceRoot = "pyside-setup-everywhere-src-${lib.removeSuffix ".0" version}/sources/${pname}";
+  sourceRoot = "pyside-setup-everywhere-src-${version}/sources/${pname}";
 
   patches = [
     ./fix-include-qt-headers.patch
-    # TODO: remove after bumping above 6.6.0
-    (fetchpatch {
-      name = "shiboken6-improve-api-extractor-argument-parsing.patch";
-      url = "https://code.qt.io/cgit/pyside/pyside-setup.git/patch/?id=6abde77c3df60ccac25089660df5797de7f6e68c";
-      hash = "sha256-uctp5rjY16X37BYzsZzg9AAgM2hwNVkcNxT1bCobb0I=";
-      stripLen = 2;
-    })
   ];
 
   nativeBuildInputs = [
@@ -57,7 +49,7 @@ stdenv'.mkDerivation rec {
   # We intentionally use single quotes around `${BASH}` since it expands from a CMake
   # variable available in this file.
   postPatch = ''
-    substituteInPlace cmake/ShibokenHelpers.cmake --replace '#!/bin/bash' '#!''${BASH}'
+    substituteInPlace cmake/ShibokenHelpers.cmake --replace-fail '#!/bin/bash' '#!''${BASH}'
   '';
 
   # Due to Shiboken.abi3.so being linked to libshiboken6.abi3.so.6.6 in the build tree,
diff --git a/pkgs/development/python-modules/sievelib/default.nix b/pkgs/development/python-modules/sievelib/default.nix
index 082aa5db01cab..4d4e15659c55e 100644
--- a/pkgs/development/python-modules/sievelib/default.nix
+++ b/pkgs/development/python-modules/sievelib/default.nix
@@ -1,36 +1,36 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, mock
-, pytestCheckHook
-, pythonOlder
-, setuptools-scm
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools-scm,
+  typing-extensions,
 }:
 
 buildPythonPackage rec {
   pname = "sievelib";
-  version = "1.3.0";
-  format = "setuptools";
+  version = "1.4.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MxPX8fP4Mkq2qOISnknXbuCN8NQ+L1UOaBuPEuP0TNE=";
+    hash = "sha256-eM8es/WZENFBASjOk1KVbbwkmzxTr7NirOiSLt7F3N8=";
   };
 
-  build-system = [
-    setuptools-scm
-  ];
+  build-system = [ setuptools-scm ];
+
+  dependencies = [ typing-extensions ];
 
   nativeCheckInputs = [
     mock
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "sievelib"
-  ];
+  pythonImportsCheck = [ "sievelib" ];
 
   meta = with lib; {
     description = "Client-side Sieve and Managesieve library";
diff --git a/pkgs/development/python-modules/simplesqlite/default.nix b/pkgs/development/python-modules/simplesqlite/default.nix
new file mode 100644
index 0000000000000..c616841813652
--- /dev/null
+++ b/pkgs/development/python-modules/simplesqlite/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, dataproperty
+, mbstrdecoder
+, pathvalidate
+, sqliteschema
+, setuptools
+, tabledata
+, typepy
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "SimpleSQLite";
+  version = "1.5.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "thombashi";
+    repo = "SimpleSQLite";
+    rev = "v${version}";
+    hash = "sha256-Yr17T0/EwVaOjG+mzdxopivj0fuvQdZdX1bFj8vq0MM=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [
+    dataproperty
+    mbstrdecoder
+    pathvalidate
+    sqliteschema
+    tabledata
+    typepy
+  ];
+
+  nativeCheckInputs = [ pytestCheckHook ];
+  pythonImportsCheck = [ "simplesqlite" ];
+
+  meta = with lib; {
+    description = "Python library to simplify SQLite database operations";
+    homepage = "https://github.com/thombashi/simplesqlite";
+    license = licenses.mit;
+    maintainers = with maintainers; [ henrirosten ];
+  };
+}
diff --git a/pkgs/development/python-modules/snakemake-interface-common/default.nix b/pkgs/development/python-modules/snakemake-interface-common/default.nix
index 6ac47e4afedeb..2bc7a0672dba4 100644
--- a/pkgs/development/python-modules/snakemake-interface-common/default.nix
+++ b/pkgs/development/python-modules/snakemake-interface-common/default.nix
@@ -1,37 +1,45 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, poetry-core
-, argparse-dataclass
-, configargparse
+{
+  lib,
+  argparse-dataclass,
+  buildPythonPackage,
+  configargparse,
+  fetchFromGitHub,
+  poetry-core,
+  pythonOlder,
+  pytestCheckHook,
 }:
 
 buildPythonPackage rec {
   pname = "snakemake-interface-common";
-  version = "1.17.1";
-  format = "pyproject";
+  version = "1.17.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "snakemake";
-    repo = pname;
+    repo = "snakemake-interface-common";
     rev = "refs/tags/v${version}";
-    hash = "sha256-23PGKSBX7KMt0Q7sWiLIPfCkxr2HtBas7flYeNHABWM=";
+    hash = "sha256-N8mSS+gABAgXm01BcsMk89a3HsIsc3RHxCAi3GlxtRg=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     argparse-dataclass
     configargparse
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
   pythonImportsCheck = [ "snakemake_interface_common" ];
 
+  pytestFlagsArray = [ "tests/tests.py" ];
+
   meta = with lib; {
     description = "Common functions and classes for Snakemake and its plugins";
     homepage = "https://github.com/snakemake/snakemake-interface-common";
+    changelog = "https://github.com/snakemake/snakemake-interface-common/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ veprbl ];
   };
diff --git a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix
index b493c4bcee96e..e40a0842b9086 100644
--- a/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix
+++ b/pkgs/development/python-modules/snakemake-interface-executor-plugins/default.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "snakemake-interface-executor-plugins";
-  version = "9.1.0";
+  version = "9.1.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "snakemake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-DW8fxBBP6U7N0Hgk/enOzUz68L7pCjVl/8MFCy6PKxg=";
+    hash = "sha256-jANSGNdWmc6ERClLR/pExoboyz8gUL2FW3W7kDQDOQo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
new file mode 100644
index 0000000000000..9f194eb253570
--- /dev/null
+++ b/pkgs/development/python-modules/snakemake-storage-plugin-s3/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, boto3
+, botocore
+, poetry-core
+, snakemake
+, snakemake-interface-storage-plugins
+, snakemake-interface-common
+, urllib3
+}:
+
+buildPythonPackage rec {
+  pname = "snakemake-storage-plugin-s3";
+  version = "0.2.10";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "snakemake";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-k21DRQdSUFkdwNb7MZJmClhIg+pdSc7H6FkDrbf4DT8=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace ">=2.0,<2.2" "*"
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    boto3
+    botocore
+    snakemake-interface-storage-plugins
+    snakemake-interface-common
+    urllib3
+  ];
+
+  nativeCheckInputs = [
+    snakemake
+  ];
+
+  pythonImportsCheck = [ "snakemake_storage_plugin_s3" ];
+
+  meta = with lib; {
+    description = "A Snakemake storage plugin for S3 API storage (AWS S3, MinIO, etc.)";
+    homepage = "https://github.com/snakemake/snakemake-storage-plugin-s3";
+    license = licenses.mit;
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix b/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix
new file mode 100644
index 0000000000000..82d8c2928c3cf
--- /dev/null
+++ b/pkgs/development/python-modules/snakemake-storage-plugin-xrootd/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, snakemake
+, snakemake-interface-storage-plugins
+, snakemake-interface-common
+, xrootd
+}:
+
+buildPythonPackage rec {
+  pname = "snakemake-storage-plugin-xrootd";
+  version = "unstable-2023-12-16";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "snakemake";
+    repo = pname;
+    rev = "408f1e956b5427c34b49eeca340492a438e8eccb";
+    hash = "sha256-CcSG//D9kz0Q4LtaSngJpCtY0dbNFFuKMVmBxR1fcMo=";
+  };
+
+  # xrootd<6.0.0,>=5.6.4 not satisfied by version 5.7rc20240303
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace 'xrootd = "^5.6.4"' ""
+  '';
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    snakemake-interface-storage-plugins
+    snakemake-interface-common
+    xrootd
+  ];
+
+  nativeCheckInputs = [
+    snakemake
+  ];
+
+  pythonImportsCheck = [ "snakemake_storage_plugin_xrootd" ];
+
+  meta = with lib; {
+    description = "A Snakemake storage plugin for handling input and output via XRootD";
+    homepage = "https://github.com/snakemake/snakemake-storage-plugin-xrootd";
+    license = licenses.mit;
+    maintainers = with maintainers; [ veprbl ];
+  };
+}
diff --git a/pkgs/development/python-modules/snowflake-connector-python/default.nix b/pkgs/development/python-modules/snowflake-connector-python/default.nix
index 085c21bfb59ba..f7d7743ef6e5b 100644
--- a/pkgs/development/python-modules/snowflake-connector-python/default.nix
+++ b/pkgs/development/python-modules/snowflake-connector-python/default.nix
@@ -1,70 +1,55 @@
-{ lib
-, asn1crypto
-, buildPythonPackage
-, pythonRelaxDepsHook
-, certifi
-, cffi
-, charset-normalizer
-, fetchPypi
-, filelock
-, idna
-, keyring
-, oscrypto
-, packaging
-, platformdirs
-, pycryptodomex
-, pyjwt
-, pyopenssl
-, pythonOlder
-, pytz
-, requests
-, setuptools
-, sortedcontainers
-, tomlkit
-, typing-extensions
-, wheel
+{
+  lib,
+  asn1crypto,
+  buildPythonPackage,
+  certifi,
+  cffi,
+  charset-normalizer,
+  cython,
+  fetchPypi,
+  filelock,
+  idna,
+  keyring,
+  oscrypto,
+  packaging,
+  pandas,
+  platformdirs,
+  pyarrow,
+  pycryptodomex,
+  pyjwt,
+  pyopenssl,
+  pythonOlder,
+  pythonRelaxDepsHook,
+  pytz,
+  requests,
+  setuptools,
+  sortedcontainers,
+  tomlkit,
+  typing-extensions,
+  wheel,
 }:
 
 buildPythonPackage rec {
   pname = "snowflake-connector-python";
-  version = "3.7.1";
-  format = "pyproject";
+  version = "3.8.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-3GmC9lOGDt7xYUowR6FrywfiJ3Xm4JCAi79PdinEGR0=";
+    hash = "sha256-m8zhoNniEs7s9F7c6gLRjiBalfiMwEcK2kqLrLVCR9U=";
   };
 
-  # snowflake-connector-python requires arrow 10.0.1, which we don't have in
-  # nixpkgs, so we cannot build the C extensions that use it. thus, patch out
-  # cython and pyarrow from the build dependencies
-  #
-  # keep an eye on following issue for improvements to this situation:
-  #
-  #   https://github.com/snowflakedb/snowflake-connector-python/issues/1144
-  #
-  postPatch = ''
-    substituteInPlace pyproject.toml \
-      --replace '"cython",' "" \
-      --replace '"pyarrow>=10.0.1,<10.1.0",' ""
-  '';
-
-  nativeBuildInputs = [
-    pythonRelaxDepsHook
+  build-system = [
+    cython
     setuptools
     wheel
   ];
 
-  pythonRelaxDeps = [
-    "pyOpenSSL"
-    "charset-normalizer"
-    "cryptography"
-    "platformdirs"
-  ];
+  nativeBuildInputs = [ pythonRelaxDepsHook ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     asn1crypto
     certifi
     cffi
@@ -85,6 +70,10 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
+    pandas = [
+      pandas
+      pyarrow
+    ];
     secure-local-storage = [ keyring ];
   };
 
@@ -98,9 +87,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    changelog = "https://github.com/snowflakedb/snowflake-connector-python/blob/v${version}/DESCRIPTION.md";
     description = "Snowflake Connector for Python";
     homepage = "https://github.com/snowflakedb/snowflake-connector-python";
+    changelog = "https://github.com/snowflakedb/snowflake-connector-python/blob/v${version}/DESCRIPTION.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
   };
diff --git a/pkgs/development/python-modules/sparse/default.nix b/pkgs/development/python-modules/sparse/default.nix
index 1ecf340e975e6..0c81e34350989 100644
--- a/pkgs/development/python-modules/sparse/default.nix
+++ b/pkgs/development/python-modules/sparse/default.nix
@@ -6,22 +6,34 @@
 , numpy
 , pytestCheckHook
 , pythonOlder
+, setuptools
+, setuptools-scm
 , scipy
 }:
 
 buildPythonPackage rec {
   pname = "sparse";
   version = "0.15.1";
-  format = "setuptools";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-lzrcuIqNuOPYBHlTMx4m0/ZKVlf5tGprhZxHZjw+75k=";
   };
 
-  propagatedBuildInputs = [
+  postPatch = ''
+    substituteInPlace pytest.ini \
+      --replace-fail "--cov-report term-missing --cov-report html --cov-report=xml --cov-report=term --cov sparse --cov-config .coveragerc --junitxml=junit/test-results.xml" ""
+  '';
+
+  build-system = [
+    setuptools
+    setuptools-scm
+  ];
+
+  dependencies = [
     numba
     numpy
     scipy
@@ -36,6 +48,11 @@ buildPythonPackage rec {
     "sparse"
   ];
 
+  pytestFlagsArray = [
+    "-W"
+    "ignore::pytest.PytestRemovedIn8Warning"
+  ];
+
   meta = with lib; {
     description = "Sparse n-dimensional arrays computations";
     homepage = "https://sparse.pydata.org/";
diff --git a/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix b/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
index 4db4049a378b9..240e51c724180 100644
--- a/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-confluencebuilder";
-  version = "2.4.0";
+  version = "2.5.1";
   format = "pyproject";
 
   src = fetchPypi {
     pname = "sphinxcontrib_confluencebuilder";
     inherit version;
-    hash = "sha256-q3+GwMVWMRu4eWwbdXcbPQzpBhBXcZEMFTpbEO+teLk=";
+    hash = "sha256-PQpkwQ95UVJwDGTAq1xdcSvd07FZpZfA/4jq3ywlMas=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/spsdk/default.nix b/pkgs/development/python-modules/spsdk/default.nix
index 0764e6c6ccd01..b64ef4a3d910f 100644
--- a/pkgs/development/python-modules/spsdk/default.nix
+++ b/pkgs/development/python-modules/spsdk/default.nix
@@ -39,14 +39,14 @@
 
 buildPythonPackage rec {
   pname = "spsdk";
-  version = "2.1.0";
+  version = "2.1.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "nxp-mcuxpresso";
     repo = "spsdk";
     rev = "refs/tags/${version}";
-    hash = "sha256-ZXNqger5WBk2AjTszJLmemYDPClUPy+kNtBWSPcTDro=";
+    hash = "sha256-cWz2zML/gb9l2C5VEBti+nX3ZLyGbLFyLZGjk5GfTJw=";
   };
 
   nativeBuildInputs = [
@@ -56,6 +56,9 @@ buildPythonPackage rec {
 
   pythonRelaxDeps = [
     "click"
+    "cryptography"
+    "platformdirs"
+    "typing-extensions"
   ];
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/sqliteschema/default.nix b/pkgs/development/python-modules/sqliteschema/default.nix
new file mode 100644
index 0000000000000..cb73b6e5a606b
--- /dev/null
+++ b/pkgs/development/python-modules/sqliteschema/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, mbstrdecoder
+, setuptools
+, simplesqlite
+, sqliteschema
+, tabledata
+, typepy
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "sqliteschema";
+  version = "1.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "thombashi";
+    repo = "sqliteschema";
+    rev = "v${version}";
+    hash = "sha256-IzHdYBnh6udVsanWTPSsX4p4PG934YCdzs9Ow/NW86E=";
+  };
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [
+    mbstrdecoder
+    tabledata
+    typepy
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    simplesqlite
+    sqliteschema
+  ];
+
+  pythonImportsCheck = [ "sqliteschema" ];
+
+  # Enabling tests would trigger infinite recursion due to circular
+  # dependency between this package and simplesqlite.
+  # Therefore, we enable tests only when building passthru.tests.
+  doCheck = false;
+  passthru.tests.pytest = sqliteschema.overridePythonAttrs (_: {
+    doCheck = true;
+  });
+
+  meta = with lib; {
+    description = "Python library to dump table schema of a SQLite database file";
+    homepage = "https://github.com/thombashi/sqliteschema";
+    license = licenses.mit;
+    maintainers = with maintainers; [ henrirosten ];
+  };
+}
diff --git a/pkgs/development/python-modules/sqlmap/default.nix b/pkgs/development/python-modules/sqlmap/default.nix
index 0bb9375ebe44a..9771771c8d0f2 100644
--- a/pkgs/development/python-modules/sqlmap/default.nix
+++ b/pkgs/development/python-modules/sqlmap/default.nix
@@ -1,21 +1,23 @@
-{ lib
-, stdenv
-, buildPythonPackage
-, fetchPypi
-, file
-, pythonOlder
+{
+  lib,
+  stdenv,
+  buildPythonPackage,
+  fetchPypi,
+  file,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "sqlmap";
-  version = "1.8.3";
-  format = "setuptools";
+  version = "1.8.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-X3xz2ucuxr48q9gS9K19Zd7gYkRCpU+XLWMSrwiQMIo=";
+    hash = "sha256-zTFdGDzvPlNebsepPxXn2++22YANlDu82yprs7eHfac=";
   };
 
   postPatch = ''
@@ -27,19 +29,19 @@ buildPythonPackage rec {
     echo 'LAST_UPDATE_NAGGING_DAYS = float("inf")' >> sqlmap/lib/core/settings.py
   '';
 
+  build-system = [ setuptools ];
+
   # No tests in archive
   doCheck = false;
 
-  pythonImportsCheck = [
-    "sqlmap"
-  ];
+  pythonImportsCheck = [ "sqlmap" ];
 
   meta = with lib; {
     description = "Automatic SQL injection and database takeover tool";
-    mainProgram = "sqlmap";
     homepage = "https://sqlmap.org";
     changelog = "https://github.com/sqlmapproject/sqlmap/releases/tag/${version}";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ bennofs ];
+    mainProgram = "sqlmap";
   };
 }
diff --git a/pkgs/development/python-modules/sse-starlette/default.nix b/pkgs/development/python-modules/sse-starlette/default.nix
index 149a37886ca0b..d2fc7de38bb17 100644
--- a/pkgs/development/python-modules/sse-starlette/default.nix
+++ b/pkgs/development/python-modules/sse-starlette/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, anyio
-, asgi-lifespan
-, buildPythonPackage
-, fastapi
-, fetchFromGitHub
-, httpx
-, pdm-backend
-, psutil
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, starlette
-, uvicorn
+{
+  lib,
+  anyio,
+  asgi-lifespan,
+  buildPythonPackage,
+  fastapi,
+  fetchFromGitHub,
+  httpx,
+  pdm-backend,
+  psutil,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  starlette,
+  uvicorn,
 }:
 
 buildPythonPackage rec {
   pname = "sse-starlette";
-  version = "2.0.0";
+  version = "2.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -25,12 +27,10 @@ buildPythonPackage rec {
     owner = "sysid";
     repo = "sse-starlette";
     rev = "refs/tags/v${version}";
-    hash = "sha256-kDcSG/3foP7fMZKYrkKx6FHvT9c9rSzxyv2EHjQ2WSA=";
+    hash = "sha256-gBkEs1jSKIOme2rbLf+pM3jFDgJkxyU92q+GsUsp8Eo=";
   };
 
-  build-system = [
-    pdm-backend
-  ];
+  build-system = [ pdm-backend ];
 
   dependencies = [
     anyio
@@ -45,11 +45,10 @@ buildPythonPackage rec {
     psutil
     pytest-asyncio
     pytestCheckHook
+    requests
   ];
 
-  pythonImportsCheck = [
-    "sse_starlette"
-  ];
+  pythonImportsCheck = [ "sse_starlette" ];
 
   disabledTests = [
     # AssertionError
diff --git a/pkgs/development/python-modules/std-uritemplate/default.nix b/pkgs/development/python-modules/std-uritemplate/default.nix
index bc265fea72a3c..0c26a135d0ef1 100644
--- a/pkgs/development/python-modules/std-uritemplate/default.nix
+++ b/pkgs/development/python-modules/std-uritemplate/default.nix
@@ -1,13 +1,14 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, poetry-core
-, pythonOlder
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  poetry-core,
+  pythonOlder,
 }:
 
 buildPythonPackage rec {
   pname = "std-uritemplate";
-  version = "0.0.55";
+  version = "0.0.56";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -15,19 +16,15 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "std_uritemplate";
     inherit version;
-    hash = "sha256-kHP1anfkTQWD+2ZFw35KZAo08iolXQDjeTzT8w2limg=";
+    hash = "sha256-85dldY+2WB+Hn6fBBHoKJ7fIe7fDyddYxAjDD83lHGc=";
   };
 
-  nativeBuildInputs = [
-    poetry-core
-  ];
+  build-system = [ poetry-core ];
 
   # Module doesn't have unittest, only functional tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "stduritemplate"
-  ];
+  pythonImportsCheck = [ "stduritemplate" ];
 
   meta = with lib; {
     description = "Std-uritemplate implementation for Python";
diff --git a/pkgs/development/python-modules/streamlit/default.nix b/pkgs/development/python-modules/streamlit/default.nix
index 4ce529ef5c06c..7dc7395749b39 100644
--- a/pkgs/development/python-modules/streamlit/default.nix
+++ b/pkgs/development/python-modules/streamlit/default.nix
@@ -33,14 +33,14 @@
 
 buildPythonPackage rec {
   pname = "streamlit";
-  version = "1.32.2";
+  version = "1.33.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Eli5y8P/lXv30Jsb/IXO3DCPEGWzB0hUUpWpr41Vd6s=";
+    hash = "sha256-qNqP9G9blIxW0tx6ynphz42ZX08hdEz4IliudeYwBLo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/survey/default.nix b/pkgs/development/python-modules/survey/default.nix
index 10373a9ecfa31..9564195c94779 100644
--- a/pkgs/development/python-modules/survey/default.nix
+++ b/pkgs/development/python-modules/survey/default.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "survey";
-  version = "5.2.4";
+  version = "5.3.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Hr7sYn6V2iw4r3P8mXhYVyUD8JpU2zGq4nG6hHM7gxU=";
+    hash = "sha256-jMTtsrEdt3NPy8NfeNPX4YNwjH2gaQfO89Iag/MBS+A=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/systembridgemodels/default.nix b/pkgs/development/python-modules/systembridgemodels/default.nix
index ee7945ee20b93..82d581ff3e1e4 100644
--- a/pkgs/development/python-modules/systembridgemodels/default.nix
+++ b/pkgs/development/python-modules/systembridgemodels/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "systembridgemodels";
-  version = "4.0.3";
+  version = "4.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -18,12 +18,12 @@ buildPythonPackage rec {
     owner = "timmo001";
     repo = "system-bridge-models";
     rev = "refs/tags/${version}";
-    hash = "sha256-5rbj58E8iDu2Rjf0k9Y1UoF3hbN7ntkx6dm20HYpw6I=";
+    hash = "sha256-iFJ95ouhfbaC0D2Gkc1KO+JueYTFTOj1unnYSDyPAe8=";
   };
 
   postPatch = ''
     substituteInPlace systembridgemodels/_version.py \
-      --replace-fail ", dev=0" ""
+      --replace-fail ", dev=1" ""
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/tcxreader/default.nix b/pkgs/development/python-modules/tcxreader/default.nix
index 7509b02e94e27..c9a965ae8145f 100644
--- a/pkgs/development/python-modules/tcxreader/default.nix
+++ b/pkgs/development/python-modules/tcxreader/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "tcxreader";
-  version = "0.4.9";
+  version = "0.4.10";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "alenrajsp";
     repo = "tcxreader";
     rev = "refs/tags/v${version}";
-    hash = "sha256-N/YsH1P8F9bSuzTgrYNU6xEO/yldXNIXMN0pQgIesfc=";
+    hash = "sha256-qTAqRzrHFj0nEujlkBohLaprIvvkSYhcDoRfqWIJMjo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
index 610c20644aaa1..e90cae8f248a7 100644
--- a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
+++ b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
@@ -1,15 +1,16 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, requests
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "tencentcloud-sdk-python";
-  version = "3.0.1122";
+  version = "3.0.1128";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -18,24 +19,16 @@ buildPythonPackage rec {
     owner = "TencentCloud";
     repo = "tencentcloud-sdk-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-rJpgtyBVJn6jURSSEVlT4BadDTr9npeISgKtQdQdgnM=";
+    hash = "sha256-SYR9vkeaVBPwke7FzjcDGSvsZE0vznNf/7zCKizaW+4=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  dependencies = [
-    requests
-  ];
+  dependencies = [ requests ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "tencentcloud"
-  ];
+  pythonImportsCheck = [ "tencentcloud" ];
 
   pytestFlagsArray = [
     # Other tests require credentials
diff --git a/pkgs/development/python-modules/testcontainers/default.nix b/pkgs/development/python-modules/testcontainers/default.nix
index 9302983c201a7..8b7ceb416b4b3 100644
--- a/pkgs/development/python-modules/testcontainers/default.nix
+++ b/pkgs/development/python-modules/testcontainers/default.nix
@@ -6,11 +6,12 @@
 , deprecation
 , docker
 , wrapt
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "testcontainers";
-  version = "4.3.1";
+  version = "4.3.3";
   disabled = pythonOlder "3.9";
 
   pyproject = true;
@@ -19,7 +20,7 @@ buildPythonPackage rec {
     owner = "testcontainers";
     repo = "testcontainers-python";
     rev = "refs/tags/testcontainers-v${version}";
-    hash = "sha256-pS5YEcHDHpTIWLD4vMPWL4r86DOI+47jN7cTwhDeXHE=";
+    hash = "sha256-qb7mOtL+YJI24DOBgrqxc817k4fD2kTOtUNF2X0qEIc=";
   };
 
   postPatch = ''
@@ -36,6 +37,10 @@ buildPythonPackage rec {
     wrapt
   ];
 
+  dependencies = [
+    typing-extensions
+  ];
+
   # Tests require various container and database services running
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/testrail-api/default.nix b/pkgs/development/python-modules/testrail-api/default.nix
index a5b35de14213a..0e9daa6cdde99 100644
--- a/pkgs/development/python-modules/testrail-api/default.nix
+++ b/pkgs/development/python-modules/testrail-api/default.nix
@@ -13,7 +13,7 @@ buildPythonPackage rec {
   version = "1.13.0";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "tolstislon";
@@ -22,6 +22,11 @@ buildPythonPackage rec {
     hash = "sha256-NGdNpNJ9ejwneSacNmifGJ8TMUuBqMu9tHTyLxTB5Uk=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "setuptools_scm==7.1.0" "setuptools_scm"
+  '';
+
   nativeBuildInputs = [
     setuptools-scm
   ];
diff --git a/pkgs/development/python-modules/tololib/default.nix b/pkgs/development/python-modules/tololib/default.nix
index f0204e08f8d8c..ed530f95d1915 100644
--- a/pkgs/development/python-modules/tololib/default.nix
+++ b/pkgs/development/python-modules/tololib/default.nix
@@ -9,16 +9,16 @@
 
 buildPythonPackage rec {
   pname = "tololib";
-  version = "0.1.0b4";
-  format = "setuptools";
+  version = "1.1.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitLab {
     owner = "MatthiasLohr";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-2OQaJR70bx8qWs1IPErF+B3X1iRvHW74axTqtdvum3U=";
+    repo = "tololib";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-TxWKV2nrnCxZmj6+wBDMSdJRvKV+MsPFbOyIlUJYJ3Q=";
   };
 
   nativeBuildInputs = [
@@ -29,6 +29,10 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  preCheck = ''
+    export PATH="$PATH:$out/bin";
+  '';
+
   disabledTests = [
     # Test requires network access
     "test_discovery"
diff --git a/pkgs/development/python-modules/torch/bin.nix b/pkgs/development/python-modules/torch/bin.nix
index bc0e36ba553c2..d92767b87d4b2 100644
--- a/pkgs/development/python-modules/torch/bin.nix
+++ b/pkgs/development/python-modules/torch/bin.nix
@@ -25,7 +25,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "2.2.1";
+  version = "2.2.2";
 in buildPythonPackage {
   inherit version;
 
diff --git a/pkgs/development/python-modules/torch/binary-hashes.nix b/pkgs/development/python-modules/torch/binary-hashes.nix
index 0fd4a5b36e4d8..8cd3bccc121cd 100644
--- a/pkgs/development/python-modules/torch/binary-hashes.nix
+++ b/pkgs/development/python-modules/torch/binary-hashes.nix
@@ -6,86 +6,86 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "2.2.1" = {
+  "2.2.2" = {
     x86_64-linux-38 = {
-      name = "torch-2.2.1-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-OIDrgRsT+PGl/DKC5FVnS5qfpnOrJW8GOOK09JUlFsM=";
+      name = "torch-2.2.2-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-wXi+srsB93NgF3e8SBx2Ub5bHxic8YDwwKzqwHiaqaU=";
     };
     x86_64-linux-39 = {
-      name = "torch-2.2.1-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-HLN5h0E455jAK0GWLdnU7AsGOoykWlEJfzJmFUd8m9A=";
+      name = "torch-2.2.2-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-EU6TlYZ+6GAWZWLYzB8oCSJfnil4PdXnIXXZqaeoUFw=";
     };
     x86_64-linux-310 = {
-      name = "torch-2.2.1-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-Gt9DDwH/ZJyEisAheF4YAHsHFP3eaOTmW9DGQL8/uOE=";
+      name = "torch-2.2.2-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-yt5P1sjOfYJtvPq9ZfHVOw7goFjbjBgJ1lv9YFG1VTA=";
     };
     x86_64-linux-311 = {
-      name = "torch-2.2.1-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torch-2.2.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-I7souoAPJanTPVF2i/X976AiDLxc2aF/ItKkJig1lGg=";
+      name = "torch-2.2.2-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-TJTk0aItcKu9/3Ft7Jm6Xv+UtDQP+nO0+2KflA27inU=";
     };
     x86_64-darwin-38 = {
-      name = "torch-2.2.1-cp38-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp38-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-YXaFhegqmdxcQZM759ucoGf6451F/r1RA8yKBNUkSRg=";
+      name = "torch-2.2.2-cp38-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp38-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-gVF29iyPN8z7shCBwHaaiLG6pptxaRGapCtl7l8QTi0=";
     };
     x86_64-darwin-39 = {
-      name = "torch-2.2.1-cp39-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp39-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-o6OqT5rSqLjnLBqElA2MWd1O7SkbyytgOta1hJgwYvU=";
+      name = "torch-2.2.2-cp39-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp39-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-8TdigY3CgP7KfjD2CZWhe6jR0asz/vttB/0sj/FXHqo=";
     };
     x86_64-darwin-310 = {
-      name = "torch-2.2.1-cp310-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp310-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-531ee2Cn4cI0XGSC/4dvNqDwQ+a+Mu9Y2sQWxKoOOyg=";
+      name = "torch-2.2.2-cp310-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp310-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-5nfE102wz8KxCSPeG95XXZgculRQXdwIKwUI2WQRmFA=";
     };
     x86_64-darwin-311 = {
-      name = "torch-2.2.1-cp311-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp311-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-lkeM9Oc3ADBZee0cp2tTVTbUYvMDAqNe3Rzu4MPYB9M=";
+      name = "torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-QwDLu00EKMUbXBlBkBaQGNW4GP2fb6/Ci76P2E3tF0A=";
     };
     aarch64-darwin-38 = {
-      name = "torch-2.2.1-cp38-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp38-none-macosx_11_0_arm64.whl";
-      hash = "sha256-fX1aq00JspIgKXkbacgDq6HAWcYP9lYj8ddFgMFHvUw=";
+      name = "torch-2.2.2-cp38-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp38-none-macosx_11_0_arm64.whl";
+      hash = "sha256-7RTSpDZEIEkDg9JveQCj99XFDDLlzf3d3/+Dd22eD9Q=";
     };
     aarch64-darwin-39 = {
-      name = "torch-2.2.1-cp39-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp39-none-macosx_11_0_arm64.whl";
-      hash = "sha256-uQZpsWKYTjAvvQXJwnDveW5GeQOUTs76dFe6vpYRYH4=";
+      name = "torch-2.2.2-cp39-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp39-none-macosx_11_0_arm64.whl";
+      hash = "sha256-/q2//ddjTP40Xqh9fuQDGzAPnHZFIFkOA0idZYtpMds=";
     };
     aarch64-darwin-310 = {
-      name = "torch-2.2.1-cp310-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp310-none-macosx_11_0_arm64.whl";
-      hash = "sha256-Ur3sHiLQg4L9mNttK/F6KU0P1TJgz9ZPuHRDSSy6xrQ=";
+      name = "torch-2.2.2-cp310-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp310-none-macosx_11_0_arm64.whl";
+      hash = "sha256-tSDRTS8oEK1dp1i+oQyveXjvNkNWW8APkN6JLgDXeSU=";
     };
     aarch64-darwin-311 = {
-      name = "torch-2.2.1-cp311-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp311-none-macosx_11_0_arm64.whl";
-      hash = "sha256-zNmEmw3TcKmBPd3kenf0OciqzOAi5LoL+TZRc9WAgJY=";
+      name = "torch-2.2.2-cp311-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp311-none-macosx_11_0_arm64.whl";
+      hash = "sha256-gipYlnXLqKzwRX1qTltspEGtO0w6RKHLyPizGueWRF4=";
     };
     aarch64-linux-38 = {
-      name = "torch-2.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-y4ThL9QAXHh/zkDto96sBCmPWQY0iRBixM2yzywUIiE=";
+      name = "torch-2.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-mJTc3W71tbYDzYzqPjcR+eJ3CC/3sPFLFSb90ay4JSE=";
     };
     aarch64-linux-39 = {
-      name = "torch-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-7g90adoiGNyHlIV1DaF6JF3DaRbi+cX8CDbkz1cq0H0=";
+      name = "torch-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-1dhev9E/fNA+UGMlP4R57RpXBSZBZtXdH8abS5YjGyA=";
     };
     aarch64-linux-310 = {
-      name = "torch-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-8BgwAuGJeNWYw+6JGcLmSCAsf+u5CIFRVshmxSTEo1k=";
+      name = "torch-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-OiwHUhgIHvnHv4xVxwbyNtrrt1PaQd5JispxYyVzgL0=";
     };
     aarch64-linux-311 = {
-      name = "torch-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
-      hash = "sha256-fyaXQWtneZbuHzCyZ2qKlN3b44ijXDYdyG6RW9pHt9o=";
+      name = "torch-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-WUgt9dxA2uEF5z9I3Sk/TMxndkCCLCzjQnOjh1SZA64=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torch/default.nix b/pkgs/development/python-modules/torch/default.nix
index 620b8a3581e4f..3bd019375046c 100644
--- a/pkgs/development/python-modules/torch/default.nix
+++ b/pkgs/development/python-modules/torch/default.nix
@@ -130,7 +130,7 @@ let
 in buildPythonPackage rec {
   pname = "torch";
   # Don't forget to update torch-bin to the same version.
-  version = "2.2.1";
+  version = "2.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8.0";
@@ -148,7 +148,7 @@ in buildPythonPackage rec {
     repo = "pytorch";
     rev = "refs/tags/v${version}";
     fetchSubmodules = true;
-    hash = "sha256-6z8G5nMbGHbpA+xfmOR726h9E4N9NoEtaFgcYE0DuUE=";
+    hash = "sha256-la9wL9pOlgrSfq5V8aRKXt3hjW+Er/6484m0oUujlzk=";
   };
 
   patches = lib.optionals cudaSupport [
diff --git a/pkgs/development/python-modules/torchaudio/bin.nix b/pkgs/development/python-modules/torchaudio/bin.nix
index 863fdc920a485..dc69195b693a3 100644
--- a/pkgs/development/python-modules/torchaudio/bin.nix
+++ b/pkgs/development/python-modules/torchaudio/bin.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "torchaudio";
-  version = "2.2.1";
+  version = "2.2.2";
   format = "wheel";
 
   src =
diff --git a/pkgs/development/python-modules/torchaudio/binary-hashes.nix b/pkgs/development/python-modules/torchaudio/binary-hashes.nix
index eda82094c5111..a15dffc4856a9 100644
--- a/pkgs/development/python-modules/torchaudio/binary-hashes.nix
+++ b/pkgs/development/python-modules/torchaudio/binary-hashes.nix
@@ -6,86 +6,86 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "2.2.1" = {
+  "2.2.2" = {
     x86_64-linux-38 = {
-      name = "torchaudio-2.2.1-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-XU/trqM3W8hQ+9kI6G1b+GAbp9eCPFId6+jY3lwiZYg=";
+      name = "torchaudio-2.2.2-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-KPwkn2+sVuS9GbZdk7f6lSJ956D1WLY2YS7k3qE3tog=";
     };
     x86_64-linux-39 = {
-      name = "torchaudio-2.2.1-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-LQScsJsPn+EE0goKRwIW/Fzo+SW9SYVuZYDi2Vn1syg=";
+      name = "torchaudio-2.2.2-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-YzzBeuAiMH0HPyZhvK/z9Q2bPW99MukXMFRCAybiDRs=";
     };
     x86_64-linux-310 = {
-      name = "torchaudio-2.2.1-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-I/YjZCniv2drgg6OciGh1YqvkIv/K6JmWqhS33GpeWE=";
+      name = "torchaudio-2.2.2-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-/eGFVNhP0AR1iPC87QPXcPZVPxeFGjtEE3kWShPJmwc=";
     };
     x86_64-linux-311 = {
-      name = "torchaudio-2.2.1-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-YJACsObf9ED81qY9FcA8PTdOIU56iqYcLvSlKLpkTDk=";
+      name = "torchaudio-2.2.2-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-DgdNBcIlizAU3aAu7wB60Xq0TP0B2XgMmpFOXZcqwAs=";
     };
     x86_64-darwin-38 = {
-      name = "torchaudio-2.2.1-cp38-cp38-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp38-cp38-macosx_10_13_x86_64.whl";
-      hash = "sha256-ge+I12k+O5kAfR7nQv2Buakjmey/iOt+1plJRDAF/7o=";
+      name = "torchaudio-2.2.2-cp38-cp38-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp38-cp38-macosx_10_13_x86_64.whl";
+      hash = "sha256-jOTfBlqUmRHStngqpME2h++t6iP/x8em8V9+euXIlSQ=";
     };
     x86_64-darwin-39 = {
-      name = "torchaudio-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp39-cp39-macosx_10_13_x86_64.whl";
-      hash = "sha256-Azn+eO2cKfcEKWdhsouwVbU1BiX/UDrXgXBDl5NOa1g=";
+      name = "torchaudio-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp39-cp39-macosx_10_13_x86_64.whl";
+      hash = "sha256-23CxOocaSUh72QQr8EsS90rtd7GofS++to0J2bZLxSg=";
     };
     x86_64-darwin-310 = {
-      name = "torchaudio-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp310-cp310-macosx_10_13_x86_64.whl";
-      hash = "sha256-WA7v12SgGmTVtqomDAxHl0vmppZIktVAKac7F/RhH80=";
+      name = "torchaudio-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp310-cp310-macosx_10_13_x86_64.whl";
+      hash = "sha256-sdWCAdEI6F2z41uEMZ8ziE9h8yfDjq2GkTIYyMGsw90=";
     };
     x86_64-darwin-311 = {
-      name = "torchaudio-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp311-cp311-macosx_10_13_x86_64.whl";
-      hash = "sha256-J0y4R0vB5Wt2jvNH0xiGYcWp1eaOLfVvwK/xHMc8kWo=";
+      name = "torchaudio-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp311-cp311-macosx_10_13_x86_64.whl";
+      hash = "sha256-8agaUYo+hsAEEl64kfxDPOj7I0MpW11hLQ83sk4THv0=";
     };
     aarch64-darwin-38 = {
-      name = "torchaudio-2.2.1-cp38-cp38-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp38-cp38-macosx_11_0_arm64.whl";
-      hash = "sha256-9Ien0xd65q8BZ1CFDuk3iOiAIYoaMQvGx2kB4hL5HNM=";
+      name = "torchaudio-2.2.2-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-s7ir4msGfpxKbj26FWuR16hSR+iN2nC3xDhZ9VuXjdw=";
     };
     aarch64-darwin-39 = {
-      name = "torchaudio-2.2.1-cp39-cp39-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp39-cp39-macosx_11_0_arm64.whl";
-      hash = "sha256-aLHZ+P/psm7wToDYKuLcL3Sxoetkw+itIbUlgCs7x6w=";
+      name = "torchaudio-2.2.2-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-S3ioShib89pLlmN1zr3sxYSk3F9g4L3nIdc0Ae1crUU=";
     };
     aarch64-darwin-310 = {
-      name = "torchaudio-2.2.1-cp310-cp310-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp310-cp310-macosx_11_0_arm64.whl";
-      hash = "sha256-itVcIGmye74Y4UeDogLj8/gIL+nlkoFDa6eX7bD8lNU=";
+      name = "torchaudio-2.2.2-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-pSDhTqC6idncJ5IutGCfnqxcAcJ5gw4PIWucngF9Q4s=";
     };
     aarch64-darwin-311 = {
-      name = "torchaudio-2.2.1-cp311-cp311-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp311-cp311-macosx_11_0_arm64.whl";
-      hash = "sha256-HmLCexdnLMK92WY2geUzAA+cCYTmoPPUVfcFG8AFuwI=";
+      name = "torchaudio-2.2.2-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-AUgvyFEX+F7kT4qo6cEbHAIjJhc+B0h4ntQrIZECk38=";
     };
     aarch64-linux-38 = {
-      name = "torchaudio-2.2.1-cp38-cp38-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp38-cp38-linux_aarch64.whl";
-      hash = "sha256-pEYrPyFPYLa4944SpM8Skcm8NT3u1wmsPf3tvtUTp6M=";
+      name = "torchaudio-2.2.2-cp38-cp38-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp38-cp38-linux_aarch64.whl";
+      hash = "sha256-T3VqbmZ92IQb8hoH6tPv7ap6J9VYUnecJm9vKhBkyZQ=";
     };
     aarch64-linux-39 = {
-      name = "torchaudio-2.2.1-cp39-cp39-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp39-cp39-linux_aarch64.whl";
-      hash = "sha256-yy2girt7aNx7AQV0ixpzbdMzKfhBN0AT7ALFTgS+3yk=";
+      name = "torchaudio-2.2.2-cp39-cp39-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp39-cp39-linux_aarch64.whl";
+      hash = "sha256-cj9OV7XQwSA1fKYM1VtObPrIRbwOzMtLQXpEqk68Ums=";
     };
     aarch64-linux-310 = {
-      name = "torchaudio-2.2.1-cp310-cp310-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp310-cp310-linux_aarch64.whl";
-      hash = "sha256-uRa3dkaYupMZqjslUZE5iS3oZl2EQ4lpusXh2FeMahE=";
+      name = "torchaudio-2.2.2-cp310-cp310-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp310-cp310-linux_aarch64.whl";
+      hash = "sha256-sPOOfTVIkU14qvwn/wD3cBsaUL/N3FiWX1RfySzNSmY=";
     };
     aarch64-linux-311 = {
-      name = "torchaudio-2.2.1-cp311-cp311-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.1-cp311-cp311-linux_aarch64.whl";
-      hash = "sha256-ILKWXbT4QwIWNvU9P6sQdcP4lZxFDGR2KRJNJMfmy7A=";
+      name = "torchaudio-2.2.2-cp311-cp311-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.2.2-cp311-cp311-linux_aarch64.whl";
+      hash = "sha256-CgOki21V0X1I9Bmn8dDUAY1IoEx2WFwWqbXmkoH5L5Q=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torchaudio/default.nix b/pkgs/development/python-modules/torchaudio/default.nix
index 73aec87cca611..3ca33cc36b656 100644
--- a/pkgs/development/python-modules/torchaudio/default.nix
+++ b/pkgs/development/python-modules/torchaudio/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "torchaudio";
-  version = "2.2.1";
+  version = "2.2.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = "audio";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ejgxWVIkusGi7zwg3nyAHHdjEPrFaS1TN7nN+PpSgOE=";
+    hash = "sha256-rW4xLUFTpGpUeMnTBdrI/2OjgZX1ihK0EfcVK6snmpk=";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/torchvision/bin.nix b/pkgs/development/python-modules/torchvision/bin.nix
index e1bc7295cb2d4..70026bb363df8 100644
--- a/pkgs/development/python-modules/torchvision/bin.nix
+++ b/pkgs/development/python-modules/torchvision/bin.nix
@@ -16,7 +16,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "0.17.1";
+  version = "0.17.2";
 in buildPythonPackage {
   inherit version;
 
diff --git a/pkgs/development/python-modules/torchvision/binary-hashes.nix b/pkgs/development/python-modules/torchvision/binary-hashes.nix
index d7cb16d01b61f..3a5654b18ca7e 100644
--- a/pkgs/development/python-modules/torchvision/binary-hashes.nix
+++ b/pkgs/development/python-modules/torchvision/binary-hashes.nix
@@ -6,66 +6,66 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "0.17.1" = {
+  "0.17.2" = {
     x86_64-linux-38 = {
-      name = "torchvision-0.17.1-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-oCRjQQZPPBdtqKpuMvATD2ACOAyQruqOMccY3ixUZOE=";
+      name = "torchvision-0.17.2-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-3450y7tN4KYPEc18KNggEWAnzTlJiT+XxVtvEjJr168=";
     };
     x86_64-linux-39 = {
-      name = "torchvision-0.17.1-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-WsK2vDCcNDud6KklczHPcVtm+qm1kiep8HDZ4BJS5go=";
+      name = "torchvision-0.17.2-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-839ZLjEovz2ZloraWhKPEY+a7R2rYJ4nKscjEUb8aEM=";
     };
     x86_64-linux-310 = {
-      name = "torchvision-0.17.1-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-J69HkV9udiwdROWOgIjSKsl0RWaPn3k1JAMrK69PNL0=";
+      name = "torchvision-0.17.2-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-wPMlY1+INPpV5pq2EHX7K7y7RTlamFu6HbN4sVYnEEs=";
     };
     x86_64-linux-311 = {
-      name = "torchvision-0.17.1-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-bYKfOZSQQCWyiXHMxhvWbt2VKATyEipuEENQuOkXL08=";
+      name = "torchvision-0.17.2-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-BZ+GocjSsnayZshKj1qSzIQm1DwqLCSNxzwUCrOoIvM=";
     };
     x86_64-darwin-38 = {
-      name = "torchvision-0.17.1-cp38-cp38-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp38-cp38-macosx_10_13_x86_64.whl";
-      hash = "sha256-JiEJcGX6HIJ4heK1IQLoOaNUG5M7epDg+jxCw94bw88=";
+      name = "torchvision-0.17.2-cp38-cp38-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp38-cp38-macosx_10_13_x86_64.whl";
+      hash = "sha256-uDqsjXj0iYEUbVghaNdbbJR8+wp2k/duIZ8ZJvbllaM=";
     };
     x86_64-darwin-39 = {
-      name = "torchvision-0.17.1-cp39-cp39-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp39-cp39-macosx_10_13_x86_64.whl";
-      hash = "sha256-WCmacks3uJPHzk0LMuoUgMMORnzBFBZ5ZLRfYBP2wtM=";
+      name = "torchvision-0.17.2-cp39-cp39-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp39-cp39-macosx_10_13_x86_64.whl";
+      hash = "sha256-SGi7+lV1jIEH5poOfdXne4kFYDXNOLdnrVuYzbccDw0=";
     };
     x86_64-darwin-310 = {
-      name = "torchvision-0.17.1-cp310-cp310-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp310-cp310-macosx_10_13_x86_64.whl";
-      hash = "sha256-BkGIgCErZuRehV3Tn1Nuf9SLTmsDShHdn+niOEr7Uew=";
+      name = "torchvision-0.17.2-cp310-cp310-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp310-cp310-macosx_10_13_x86_64.whl";
+      hash = "sha256-HykQ/jwhrWh1snINRvrYNbLkszbpVT0xyjZNJMkLHU8=";
     };
     x86_64-darwin-311 = {
-      name = "torchvision-0.17.1-cp311-cp311-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp311-cp311-macosx_10_13_x86_64.whl";
-      hash = "sha256-6izNv1l04L8n/WZEozsZywcAKXzzl7sEaediwRxsQQU=";
+      name = "torchvision-0.17.2-cp311-cp311-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp311-cp311-macosx_10_13_x86_64.whl";
+      hash = "sha256-m4PlXufQoXBPUrnArIc4jnptHZimveews1+atU172lQ=";
     };
     aarch64-darwin-38 = {
-      name = "torchvision-0.17.1-cp38-cp38-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp38-cp38-macosx_11_0_arm64.whl";
-      hash = "sha256-XOdkZq8rWjBXOTnK4ebmLikxbOs+50gJEALzEqsJEvY=";
+      name = "torchvision-0.17.2-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-Hs5AVX4SLXmXWGCgBap+Kp4ubDUKA+eKAOwUUAgzEv0=";
     };
     aarch64-darwin-39 = {
-      name = "torchvision-0.17.1-cp39-cp39-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp39-cp39-macosx_11_0_arm64.whl";
-      hash = "sha256-ihsX+xWLK4gfLIeW/hg5piTknV/QeqYfba5gukgZQho=";
+      name = "torchvision-0.17.2-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-79bQ3QZo4V0Bos/63HQGhDOzLLz1aS4MSqFfxcslDOc=";
     };
     aarch64-darwin-310 = {
-      name = "torchvision-0.17.1-cp310-cp310-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp310-cp310-macosx_11_0_arm64.whl";
-      hash = "sha256-M9ZdDH/cs/e8HdjtMOo81+BYe0rRsQS1Z3yBkai62fE=";
+      name = "torchvision-0.17.2-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-7MHFA/qKVPurd34Gp8IoAyuKt47+vzWyi8jyL1RPUfE=";
     };
     aarch64-darwin-311 = {
-      name = "torchvision-0.17.1-cp311-cp311-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.1-cp311-cp311-macosx_11_0_arm64.whl";
-      hash = "sha256-kQbjLJ8ecK+oFyzxsGTPnCmY2N/wdp7GnVN7ICCe5D0=";
+      name = "torchvision-0.17.2-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.17.2-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-4DEAShvEMsmAp71kL2wYmj78MW5CP8MLVWmDcWak4o0=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torchvision/default.nix b/pkgs/development/python-modules/torchvision/default.nix
index a8e90f7211c42..496a8c08710b0 100644
--- a/pkgs/development/python-modules/torchvision/default.nix
+++ b/pkgs/development/python-modules/torchvision/default.nix
@@ -17,7 +17,7 @@ let
   inherit (cudaPackages) backendStdenv;
 
   pname = "torchvision";
-  version = "0.17.1";
+  version = "0.17.2";
 in
 buildPythonPackage {
   inherit pname version;
@@ -26,7 +26,7 @@ buildPythonPackage {
     owner = "pytorch";
     repo = "vision";
     rev = "refs/tags/v${version}";
-    hash = "sha256-K2irwwf6qgyfZqJH1NUasDmBSA4mH2Rclx7A7zP4kiQ=";
+    hash = "sha256-Y7TkdbdrdiXQO2pBkUePCLw1EYQjsAqkV2OTMzxbU78=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/trafilatura/default.nix b/pkgs/development/python-modules/trafilatura/default.nix
index cdfbf4b046002..35212c3434438 100644
--- a/pkgs/development/python-modules/trafilatura/default.nix
+++ b/pkgs/development/python-modules/trafilatura/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "trafilatura";
-  version = "1.8.0";
+  version = "1.8.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6lSHXtJPPq+vGZuKD4m1g1x880NzPDLvvEr50wV6j3I=";
+    hash = "sha256-a4eN/b1cXftV0Pgwfyt9wVrDRYBU90hh/5ihcvXjhyA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/trimesh/default.nix b/pkgs/development/python-modules/trimesh/default.nix
index 0cbed38ff7352..3ac3baf1525a9 100644
--- a/pkgs/development/python-modules/trimesh/default.nix
+++ b/pkgs/development/python-modules/trimesh/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "trimesh";
-  version = "4.2.4";
+  version = "4.3.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ausgFjhYe0b/hd+szti4GpMil3NF6/yuXSajy/1JZXY=";
+    hash = "sha256-kUXi26NhFGS3liGaGHfm0HTRWXlnaIa80lxgLQ/0FyM=";
   };
 
   nativeBuildInputs = [ setuptools ];
diff --git a/pkgs/development/python-modules/trytond/default.nix b/pkgs/development/python-modules/trytond/default.nix
index d9cc9ae10312e..5e89da7f35049 100644
--- a/pkgs/development/python-modules/trytond/default.nix
+++ b/pkgs/development/python-modules/trytond/default.nix
@@ -25,14 +25,14 @@
 
 buildPythonPackage rec {
   pname = "trytond";
-  version = "7.0.8";
+  version = "7.0.9";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ZpK3+DZi2U4TK7dHwIJnw5u/lFrvtBD+MhRLkdO8DLI=";
+    hash = "sha256-DlPuIaGTpJu4FyLOTNAy2CAEJHoe7+8e34wacz8C7d8=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/twilio/default.nix b/pkgs/development/python-modules/twilio/default.nix
index e39dda5f4cb94..440a5db457ab6 100644
--- a/pkgs/development/python-modules/twilio/default.nix
+++ b/pkgs/development/python-modules/twilio/default.nix
@@ -1,25 +1,26 @@
-{ lib
-, aiohttp
-, aiohttp-retry
-, aiounittest
-, buildPythonPackage
-, cryptography
-, django
-, fetchFromGitHub
-, mock
-, multidict
-, pyngrok
-, pyjwt
-, pytestCheckHook
-, pythonOlder
-, pytz
-, requests
-, setuptools
+{
+  lib,
+  aiohttp,
+  aiohttp-retry,
+  aiounittest,
+  buildPythonPackage,
+  cryptography,
+  django,
+  fetchFromGitHub,
+  mock,
+  multidict,
+  pyngrok,
+  pyjwt,
+  pytestCheckHook,
+  pythonOlder,
+  pytz,
+  requests,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "twilio";
-  version = "9.0.3";
+  version = "9.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,12 +29,10 @@ buildPythonPackage rec {
     owner = "twilio";
     repo = "twilio-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-MyK5ICGNR3BEJtVhFM3A6azceU5HjSDep4tpuQ8D4Rs=";
+    hash = "sha256-3014wT7DXRlWvRxfqx/wIR9v9uX9QROQICDHXcgtOHs=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -68,9 +67,7 @@ buildPythonPackage rec {
     "tests/cluster/test_cluster.py"
   ];
 
-  pythonImportsCheck = [
-    "twilio"
-  ];
+  pythonImportsCheck = [ "twilio" ];
 
   meta = with lib; {
     description = "Twilio API client and TwiML generator";
diff --git a/pkgs/development/python-modules/typeguard/default.nix b/pkgs/development/python-modules/typeguard/default.nix
index 84648b20c1e5a..31fb7a3ff43d2 100644
--- a/pkgs/development/python-modules/typeguard/default.nix
+++ b/pkgs/development/python-modules/typeguard/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "typeguard";
-  version = "4.1.5";
+  version = "4.2.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-6goRO7wRG8/8kHieuyFWJcljQR9wlqfpBi1ORjDBVf0=";
+    hash = "sha256-xVahuVlIIwUQBwylP6A0H7CWRhG9BdWY2H+1IRXWX+4=";
   };
 
   outputs = [
diff --git a/pkgs/development/python-modules/types-aiobotocore-packages/default.nix b/pkgs/development/python-modules/types-aiobotocore-packages/default.nix
index bb0bf9a5b313f..2e279af088707 100644
--- a/pkgs/development/python-modules/types-aiobotocore-packages/default.nix
+++ b/pkgs/development/python-modules/types-aiobotocore-packages/default.nix
@@ -22,11 +22,11 @@ let
         inherit pname version hash;
       };
 
-      nativeBuildInputs = [
+      build-system = [
         setuptools
       ];
 
-      propagatedBuildInputs = [
+      dependencies = [
         aiobotocore
         botocore
       ] ++ lib.optionals (pythonOlder "3.12") [
@@ -57,701 +57,701 @@ rec {
 
   types-aiobotocore-acm-pca = buildTypesAiobotocorePackage "acm-pca" "2.11.2" "sha256-g9a2ad5hZonlKWGnLQchfT5CAgwqsvseeQBQemCSCQw=";
 
-  types-aiobotocore-alexaforbusiness = buildTypesAiobotocorePackage "alexaforbusiness" "2.12.1" "sha256-3x/hagYKcLpkQcl2xs5E1BK86pBexCPEI9jXoapaupk=";
+  types-aiobotocore-alexaforbusiness = buildTypesAiobotocorePackage "alexaforbusiness" "2.12.2" "sha256-ETgvEva3QPzS0jDxGwL8H+4skV+1/vwzLCyUT01gkLE=";
 
-  types-aiobotocore-amp = buildTypesAiobotocorePackage "amp" "2.12.1" "sha256-nqfw8mMje6HZo6ZiOin1Ki3i/ldnxwcestf+7AYvfRo=";
+  types-aiobotocore-amp = buildTypesAiobotocorePackage "amp" "2.12.2" "sha256-1wUrSK52HpVAKdeWkGos2HwQaR2MaMae4OOVKicpp00=";
 
-  types-aiobotocore-amplify = buildTypesAiobotocorePackage "amplify" "2.12.1" "sha256-mI4T75e4J0jUy3zyhRQTf2BK1G0+dvAIteGUOeoTphg=";
+  types-aiobotocore-amplify = buildTypesAiobotocorePackage "amplify" "2.12.2" "sha256-b1J1tIlDcPuHkeZ978d3C2bLf6BSpq724BgkPaOAeXA=";
 
-  types-aiobotocore-amplifybackend = buildTypesAiobotocorePackage "amplifybackend" "2.12.1" "sha256-flDA+ENgxiTyUQYlv7B4Rj8avu+7/8HcDCm5gy1boRQ=";
+  types-aiobotocore-amplifybackend = buildTypesAiobotocorePackage "amplifybackend" "2.12.2" "sha256-4y3BHgzuyRQEefL4DpNyNXocvdD7KBcCbx4LfflIHY0=";
 
-  types-aiobotocore-amplifyuibuilder = buildTypesAiobotocorePackage "amplifyuibuilder" "2.12.1" "sha256-BqRPND+LfrMfs7VffO1GB9qk5WQgqPV+jCpwMp2351k=";
+  types-aiobotocore-amplifyuibuilder = buildTypesAiobotocorePackage "amplifyuibuilder" "2.12.2" "sha256-RxSPzqzifUOkDYq9K8XCG2kVSB/wU14BeoTtFTPWuSk=";
 
-  types-aiobotocore-apigateway = buildTypesAiobotocorePackage "apigateway" "2.12.1" "sha256-jYW4DedcNBTVplVdOfj6JV8zvY00b6xp8kB22ug5ejU=";
+  types-aiobotocore-apigateway = buildTypesAiobotocorePackage "apigateway" "2.12.2" "sha256-zTwooYIzXgPEIPG7gLoj2utBKGdqISuk1t7gOeBv3oQ=";
 
-  types-aiobotocore-apigatewaymanagementapi = buildTypesAiobotocorePackage "apigatewaymanagementapi" "2.12.1" "sha256-y/vhZTSQVANxxNWkbcupu3JjhA1CYwcoY9FjDZMarEk=";
+  types-aiobotocore-apigatewaymanagementapi = buildTypesAiobotocorePackage "apigatewaymanagementapi" "2.12.2" "sha256-i2bFFhuWrRiL1pvEn604JMpLyyYXDQp5hUuUIXYbQeg=";
 
-  types-aiobotocore-apigatewayv2 = buildTypesAiobotocorePackage "apigatewayv2" "2.12.1" "sha256-ZPqN6GmWiB9WOE5iiO86SFHoIF8kj0vKRbWvUupZEbQ=";
+  types-aiobotocore-apigatewayv2 = buildTypesAiobotocorePackage "apigatewayv2" "2.12.2" "sha256-R8Kz/5CJBQ+O3uq6jNUr2Oz0LzoaJZXRw79XeL/M4Es=";
 
-  types-aiobotocore-appconfig = buildTypesAiobotocorePackage "appconfig" "2.12.1" "sha256-icbJT3C4cHYWVDYDeQWmnFTLaxb1YgOwIOWHasrSEU4=";
+  types-aiobotocore-appconfig = buildTypesAiobotocorePackage "appconfig" "2.12.2" "sha256-Kae/vRF5DznNRmBOlVE6P9oDxJk+p6e/vWn+5rNdvGM=";
 
-  types-aiobotocore-appconfigdata = buildTypesAiobotocorePackage "appconfigdata" "2.12.1" "sha256-Uc+eRBHVAfztcsXcGbwjJi4JRM6kQtXkIqhuLGhjwL0=";
+  types-aiobotocore-appconfigdata = buildTypesAiobotocorePackage "appconfigdata" "2.12.2" "sha256-uQ8PZVutdFpx15FFgFvT85XRXNsk8vQFIIBuh7e96Kw=";
 
-  types-aiobotocore-appfabric = buildTypesAiobotocorePackage "appfabric" "2.12.1" "sha256-AlrHEE9y9q4D5q5M6YiWLTHdbsRBf5i+ifIGcuS8F38=";
+  types-aiobotocore-appfabric = buildTypesAiobotocorePackage "appfabric" "2.12.2" "sha256-oy8/kIKXpuAzQGDr1EGDxTsj32IfjwQe/pGW2XtRQGA=";
 
-  types-aiobotocore-appflow = buildTypesAiobotocorePackage "appflow" "2.12.1" "sha256-Jg2v0ygeP6UIvNrnyuilzbeCpKSs8L6yGTlh6aAMXko=";
+  types-aiobotocore-appflow = buildTypesAiobotocorePackage "appflow" "2.12.2" "sha256-hZVdVOMtTi3uhvZSRw+72CDexb6ZjmhSOM96EO+SPpk=";
 
-  types-aiobotocore-appintegrations = buildTypesAiobotocorePackage "appintegrations" "2.12.1" "sha256-x6EuJVZJl/mw7wXfJP5djkVKsZ9rxSlAMynlmIeYf7c=";
+  types-aiobotocore-appintegrations = buildTypesAiobotocorePackage "appintegrations" "2.12.2" "sha256-jABV4S+JUPWlApzb00SXx759wwm9aVQg3H8t0HJGII4=";
 
-  types-aiobotocore-application-autoscaling = buildTypesAiobotocorePackage "application-autoscaling" "2.12.1" "sha256-ZLgLJAGtiMUhWWXz2GxwOaxn9CzRh2lWTvhvOrzUDq4=";
+  types-aiobotocore-application-autoscaling = buildTypesAiobotocorePackage "application-autoscaling" "2.12.2" "sha256-bF2+A9EJi8f9uNGe73oCaOSzakuU2QX9XxpAsAHEXLg=";
 
-  types-aiobotocore-application-insights = buildTypesAiobotocorePackage "application-insights" "2.12.1" "sha256-p96BagoCjYHXqnCQqVMLlwNT6hlkIOhLFmXcXQKZsIM=";
+  types-aiobotocore-application-insights = buildTypesAiobotocorePackage "application-insights" "2.12.2" "sha256-3yWO7sXrNr6pkj5wZ7kLK5wwY9WKFILFVmuVPrqCjL4=";
 
-  types-aiobotocore-applicationcostprofiler = buildTypesAiobotocorePackage "applicationcostprofiler" "2.12.1" "sha256-bDuo8+w6NbWh7vFV488kuS/by+Bb8m3KvKqFtQRJbVY=";
+  types-aiobotocore-applicationcostprofiler = buildTypesAiobotocorePackage "applicationcostprofiler" "2.12.2" "sha256-XAkJJTPkXbOsJrdBnCHcWJJgO2k58zKvBXFprLpLcj8=";
 
-  types-aiobotocore-appmesh = buildTypesAiobotocorePackage "appmesh" "2.12.1" "sha256-IXg7ZyW6rnpb2XycRLnMcihim4pYIC0iiQlQf07mesY=";
+  types-aiobotocore-appmesh = buildTypesAiobotocorePackage "appmesh" "2.12.2" "sha256-R6BX6AYHflevTgiWD34F0k123kvFaXf/fzzjTa41EuU=";
 
-  types-aiobotocore-apprunner = buildTypesAiobotocorePackage "apprunner" "2.12.1" "sha256-bSEzv5bkO6L0VGrdAmsSeH62wjQWnJu34lGSsa5U/J0=";
+  types-aiobotocore-apprunner = buildTypesAiobotocorePackage "apprunner" "2.12.2" "sha256-K0J1y4HYpWRxeHQE5QPxncrXbTxsS8VaQFOA+6C7vJI=";
 
-  types-aiobotocore-appstream = buildTypesAiobotocorePackage "appstream" "2.12.1" "sha256-pMnJ6CcqhhBGpPG4sPsJUqcCohFZPHQ4nZbM82WhFQg=";
+  types-aiobotocore-appstream = buildTypesAiobotocorePackage "appstream" "2.12.2" "sha256-cTtqtK9K/HUFbuo7ZZJWOTB2pARECra2rcorHnyER18=";
 
-  types-aiobotocore-appsync = buildTypesAiobotocorePackage "appsync" "2.12.1" "sha256-8IyLcQLUg/t/WodMhJkrUnTYOVR5PmkjDtILnzYEqKM=";
+  types-aiobotocore-appsync = buildTypesAiobotocorePackage "appsync" "2.12.2" "sha256-1JlMGgf8JXrTSXfKpKUx2L2lmDofdJ90VywCjWaiBlk=";
 
-  types-aiobotocore-arc-zonal-shift = buildTypesAiobotocorePackage "arc-zonal-shift" "2.12.1" "sha256-8HP5cQS7p7QyncnccISZHOPIYwWEyMUIz0OEiwoZ0OQ=";
+  types-aiobotocore-arc-zonal-shift = buildTypesAiobotocorePackage "arc-zonal-shift" "2.12.2" "sha256-V6KpOu/nmoniDstaa8NFB+04cAyRv8rRlJAbCb+Bwd0=";
 
-  types-aiobotocore-athena = buildTypesAiobotocorePackage "athena" "2.12.1" "sha256-9wlWv7qFWj/bnLIEH2wXGHG0IYvPdEIolDyh9xJsY6I=";
+  types-aiobotocore-athena = buildTypesAiobotocorePackage "athena" "2.12.2" "sha256-9/W5aC286MsgPQPQoPdzAi1ia0834rSw7vumRKVrpU0=";
 
-  types-aiobotocore-auditmanager = buildTypesAiobotocorePackage "auditmanager" "2.12.1" "sha256-/IYKAlDmq/+5jsMcnwmhVV+OMvWP4IcMdrtZ3ocy0ls=";
+  types-aiobotocore-auditmanager = buildTypesAiobotocorePackage "auditmanager" "2.12.2" "sha256-PjU0CQJSVgovPKk6iCz6OZCfXTfcMg6gVge+D2C0R5A=";
 
-  types-aiobotocore-autoscaling = buildTypesAiobotocorePackage "autoscaling" "2.12.1" "sha256-pJZDPqRXSKlDYd57vfJdgbaszKhyvONsgRhHxT7PO3s=";
+  types-aiobotocore-autoscaling = buildTypesAiobotocorePackage "autoscaling" "2.12.2" "sha256-VP2Hoh3HUYqNY00sEKEoqAx4QOVh9REBPpVlxxvuxs0=";
 
-  types-aiobotocore-autoscaling-plans = buildTypesAiobotocorePackage "autoscaling-plans" "2.12.1" "sha256-VqO8b8JQX1OzvgHnZZCC6l3a73Ren2b2GphClJBZc/c=";
+  types-aiobotocore-autoscaling-plans = buildTypesAiobotocorePackage "autoscaling-plans" "2.12.2" "sha256-61htbEFwvUYZymxPs4u+DCAuemVIwhplmsyRy79EPFk=";
 
-  types-aiobotocore-backup = buildTypesAiobotocorePackage "backup" "2.12.1" "sha256-UMP61m/gcHfc5JUtAoEAIfxdbjntqL7HubUuTb4AfwI=";
+  types-aiobotocore-backup = buildTypesAiobotocorePackage "backup" "2.12.2" "sha256-Wa7iDrphEu/lLO9jI+8DvY7zpk7bDqoKhT85cUhQRsQ=";
 
-  types-aiobotocore-backup-gateway = buildTypesAiobotocorePackage "backup-gateway" "2.12.1" "sha256-bxXM19C5beGNvKV0bXpnU43e3h8UmFJpXc1kmsbeelw=";
+  types-aiobotocore-backup-gateway = buildTypesAiobotocorePackage "backup-gateway" "2.12.2" "sha256-31DD2XhktJJ5W4cfnzp7kq4I3O1cG02HNTTbHoKQ4c8=";
 
-  types-aiobotocore-backupstorage = buildTypesAiobotocorePackage "backupstorage" "2.12.1" "sha256-+y3Xqw/KJqcSC7VMwjN+FZN/MLt0E/UISk+CNRN0lTI=";
+  types-aiobotocore-backupstorage = buildTypesAiobotocorePackage "backupstorage" "2.12.2" "sha256-d3C54F9epPGdP0f+FBcDc57D0z0lTlwthV8yWZqoZKo=";
 
-  types-aiobotocore-batch = buildTypesAiobotocorePackage "batch" "2.12.1" "sha256-cX2aVftGdhLDfY3bSSIiFnOV0EPfmlcwrSG7ad+On1g=";
+  types-aiobotocore-batch = buildTypesAiobotocorePackage "batch" "2.12.2" "sha256-amRfVZeFXbCDXH5ZJkNxcn5LKrr3ImrnkCepdD+/BVA=";
 
-  types-aiobotocore-billingconductor = buildTypesAiobotocorePackage "billingconductor" "2.12.1" "sha256-GROhwMYXYrYTChJVlE/MN/EZ0NzOHeSXAfiIuHJG9u8=";
+  types-aiobotocore-billingconductor = buildTypesAiobotocorePackage "billingconductor" "2.12.2" "sha256-yGYcyqPGuEXNPRi9CrGvFgmuTquRVWV6Lvxpwz4vk88=";
 
-  types-aiobotocore-braket = buildTypesAiobotocorePackage "braket" "2.12.1" "sha256-d9oj+mAHxXapK+756DrglrqlYTOlZQtkFdbh+Ipanqc=";
+  types-aiobotocore-braket = buildTypesAiobotocorePackage "braket" "2.12.2" "sha256-Xb5/W8moxLZ4EcWxtk06p0QO+RNq7m/cg3sr1s9EEjU=";
 
-  types-aiobotocore-budgets = buildTypesAiobotocorePackage "budgets" "2.12.1" "sha256-kCXjo49wwgdVjbI45A+JV0gQbb7FxqSi2rqa41XgrbI=";
+  types-aiobotocore-budgets = buildTypesAiobotocorePackage "budgets" "2.12.2" "sha256-uOtU24KgXLPXbHKEjGLPa5cklGSTv+ubgrK7BqdegcE=";
 
-  types-aiobotocore-ce = buildTypesAiobotocorePackage "ce" "2.12.1" "sha256-RNGUxIvjKqJvOQ3CUjfJWHGD76wUqfev43aCU5Z+5Dg=";
+  types-aiobotocore-ce = buildTypesAiobotocorePackage "ce" "2.12.2" "sha256-8VE8GzjJpqSOhg12oVGRd9dvOgYHm46B3p11oYV/Hfk=";
 
-  types-aiobotocore-chime = buildTypesAiobotocorePackage "chime" "2.12.1" "sha256-/EHroPbg5w45i8vqpzLHf8ZpzIWbOLLwwAbP/MZvDyI=";
+  types-aiobotocore-chime = buildTypesAiobotocorePackage "chime" "2.12.2" "sha256-CsHu7oDQysHrteUU1fx875aqxah7tKcKcFVnjQRu56I=";
 
-  types-aiobotocore-chime-sdk-identity = buildTypesAiobotocorePackage "chime-sdk-identity" "2.12.1" "sha256-yZbk3/p11XA6y57z58ShBpYzbgmZaqXKFaSjRNLIHAs=";
+  types-aiobotocore-chime-sdk-identity = buildTypesAiobotocorePackage "chime-sdk-identity" "2.12.2" "sha256-LWcyeN84Ca91/FS3UYzE7wA0vqHQaYDRcsSvyjTQ/sw=";
 
-  types-aiobotocore-chime-sdk-media-pipelines = buildTypesAiobotocorePackage "chime-sdk-media-pipelines" "2.12.1" "sha256-A45a8+rGxkkF+qMNWQOwp3keTnVqitC+T+1cXfpjh4s=";
+  types-aiobotocore-chime-sdk-media-pipelines = buildTypesAiobotocorePackage "chime-sdk-media-pipelines" "2.12.2" "sha256-+/pHe/DzMI3eWFHS8M588S0cuvAqrIUYidV3BXIUN3o=";
 
-  types-aiobotocore-chime-sdk-meetings = buildTypesAiobotocorePackage "chime-sdk-meetings" "2.12.1" "sha256-CBOz1xzJF7502CCcdbVPTnC5lRgDHsRCRQjDhvUJQks=";
+  types-aiobotocore-chime-sdk-meetings = buildTypesAiobotocorePackage "chime-sdk-meetings" "2.12.2" "sha256-ZTMMAi2fEHsFL7T81t4DiL1IOHJTkL8A7IG2g/v8ND0=";
 
-  types-aiobotocore-chime-sdk-messaging = buildTypesAiobotocorePackage "chime-sdk-messaging" "2.12.1" "sha256-IzhApCA/D73+LPyxILQDrKTRABG3kgyVobNdY0L065M=";
+  types-aiobotocore-chime-sdk-messaging = buildTypesAiobotocorePackage "chime-sdk-messaging" "2.12.2" "sha256-qt0JzJL9EwU1+Sh4CqMBiMNJIwI6YdmUvAvNBJv2oVw=";
 
-  types-aiobotocore-chime-sdk-voice = buildTypesAiobotocorePackage "chime-sdk-voice" "2.12.1" "sha256-o+QL/ujJrHtggWUOTXgE5/EcE5Dsx4EYAOrRbLAV6qM=";
+  types-aiobotocore-chime-sdk-voice = buildTypesAiobotocorePackage "chime-sdk-voice" "2.12.2" "sha256-oFNY2oBIrj4OJATIkGeer00MDxqRf7Sh9whIm1Hr6Mk=";
 
-  types-aiobotocore-cleanrooms = buildTypesAiobotocorePackage "cleanrooms" "2.12.1" "sha256-haTOrvbpW3sM2cj4hhb1higAs/CcBM07bKbeSP29ox0=";
+  types-aiobotocore-cleanrooms = buildTypesAiobotocorePackage "cleanrooms" "2.12.2" "sha256-mG/fF8cgbI4xHdifOo4uXwCB0sLIeqHfDbFExRH1G1U=";
 
-  types-aiobotocore-cloud9 = buildTypesAiobotocorePackage "cloud9" "2.12.1" "sha256-lB7ETrEcEcUN0Wo0v5jfHS/7deB+RigE7QAsRtCm34s=";
+  types-aiobotocore-cloud9 = buildTypesAiobotocorePackage "cloud9" "2.12.2" "sha256-7Uw/ZVpdAu6TdwoqnoWFHOihoxTIyR9tMXawZ+FGZto=";
 
-  types-aiobotocore-cloudcontrol = buildTypesAiobotocorePackage "cloudcontrol" "2.12.1" "sha256-9wQePNZU01EZ0HsEri+NhyqbovxKvrq1Ym2X6ZjmpgQ=";
+  types-aiobotocore-cloudcontrol = buildTypesAiobotocorePackage "cloudcontrol" "2.12.2" "sha256-L+FL66LIIGf2jeNis0fjnO8Y1tnxq2Wf2OOu6/dIyn8=";
 
-  types-aiobotocore-clouddirectory = buildTypesAiobotocorePackage "clouddirectory" "2.12.1" "sha256-tcapX1pGlYT5I9psU/lhq+ltsYJzhJA8ECopImTBNG8=";
+  types-aiobotocore-clouddirectory = buildTypesAiobotocorePackage "clouddirectory" "2.12.2" "sha256-7wVsJpVN6dxNekF+Y41uS1gxXo11Ep6v7jigmKbtvv0=";
 
-  types-aiobotocore-cloudformation = buildTypesAiobotocorePackage "cloudformation" "2.12.1" "sha256-ZDPwZIVtYGjMVYGhwRqHhDgQuGRMPm9nDSf3yXyHDig=";
+  types-aiobotocore-cloudformation = buildTypesAiobotocorePackage "cloudformation" "2.12.2" "sha256-gcrzYBBMfnzkwRkSxvAdJ85pNS2wrVCJSpC+gWV+wFs=";
 
-  types-aiobotocore-cloudfront = buildTypesAiobotocorePackage "cloudfront" "2.12.1" "sha256-1SkPaujxS66tXJ7d37AOF5fWJfm6NMMFs3BdCzvFQ18=";
+  types-aiobotocore-cloudfront = buildTypesAiobotocorePackage "cloudfront" "2.12.2" "sha256-ZstNc2vk0Ri7O29YtxIdBnclbsWm/ZwlgRouDKO39VI=";
 
-  types-aiobotocore-cloudhsm = buildTypesAiobotocorePackage "cloudhsm" "2.12.1" "sha256-h/ukCEJa/sU2c54Yt0JccYHUkk57A48hBZy0dixo37Q=";
+  types-aiobotocore-cloudhsm = buildTypesAiobotocorePackage "cloudhsm" "2.12.2" "sha256-12LqtV/KBWHO77VFEruNBvODUFZVnbWVFuf9xS9UZ7U=";
 
-  types-aiobotocore-cloudhsmv2 = buildTypesAiobotocorePackage "cloudhsmv2" "2.12.1" "sha256-ErBwA+z2JvT5xfvoTzsIAVPU8tU08sphFXGw1g3f4yQ=";
+  types-aiobotocore-cloudhsmv2 = buildTypesAiobotocorePackage "cloudhsmv2" "2.12.2" "sha256-YBKCsDLOx9B+Eb5IhYcc84Nesn18ix3HON5u3lJTiuk=";
 
-  types-aiobotocore-cloudsearch = buildTypesAiobotocorePackage "cloudsearch" "2.12.1" "sha256-1olJgbAOkbh9vXli4pcwwJoi1THWtfU8oz9YCj6Ukes=";
+  types-aiobotocore-cloudsearch = buildTypesAiobotocorePackage "cloudsearch" "2.12.2" "sha256-iK0ZPBqilIPko8drXfVNrq2CY4GTxJkUTGfSE8X8izM=";
 
-  types-aiobotocore-cloudsearchdomain = buildTypesAiobotocorePackage "cloudsearchdomain" "2.12.1" "sha256-aGTQp3cmL7ZWu4g17Rrk5rmiJ4aQRmPk54AGSWkhFGs=";
+  types-aiobotocore-cloudsearchdomain = buildTypesAiobotocorePackage "cloudsearchdomain" "2.12.2" "sha256-kZ1tC8wgzThdUTb0ixjiL9tjCyi+YfGe/ET3tBAg9Wk=";
 
-  types-aiobotocore-cloudtrail = buildTypesAiobotocorePackage "cloudtrail" "2.12.1" "sha256-bM3LaR0mBX7i7hUB4maK7exCplszTtN+I5EllNdXy64=";
+  types-aiobotocore-cloudtrail = buildTypesAiobotocorePackage "cloudtrail" "2.12.2" "sha256-WOWt4li3Gf3MzLWxyUQoQ9jOADSzVdInMeeSmMEHLt8=";
 
-  types-aiobotocore-cloudtrail-data = buildTypesAiobotocorePackage "cloudtrail-data" "2.12.1" "sha256-GOm6+wQGXOmJJa7Thw1QwEh7qsfGrmlphlR9jbWVRwI=";
+  types-aiobotocore-cloudtrail-data = buildTypesAiobotocorePackage "cloudtrail-data" "2.12.2" "sha256-YmYmwjPk+3NjZekJ0jkS5c4JqY1pl1ASPymSBbAurzc=";
 
-  types-aiobotocore-cloudwatch = buildTypesAiobotocorePackage "cloudwatch" "2.12.1" "sha256-7HPW7wBHzEz3Wf+ExWt0EuLGyMenZLKitxg1vRRLvXg=";
+  types-aiobotocore-cloudwatch = buildTypesAiobotocorePackage "cloudwatch" "2.12.2" "sha256-Ym7e9ZkfMll1YLAa/C+RwvHcbVwkY1foEmmlaL7qFcU=";
 
-  types-aiobotocore-codeartifact = buildTypesAiobotocorePackage "codeartifact" "2.12.1" "sha256-vbVK79R9VPVVtpqvzhdRiVkLBhfRZgFYcoH7asbaE0c=";
+  types-aiobotocore-codeartifact = buildTypesAiobotocorePackage "codeartifact" "2.12.2" "sha256-GDySp3FuE0K/NZm4h/OxU7oYvDrGaL4g28ifzxdmTwg=";
 
-  types-aiobotocore-codebuild = buildTypesAiobotocorePackage "codebuild" "2.12.1" "sha256-eXPqgX5MD/aIBxIQjHqyP4I0FJ2l+AHnoiq6RofKY4Q=";
+  types-aiobotocore-codebuild = buildTypesAiobotocorePackage "codebuild" "2.12.2" "sha256-dLD5ovefqYEUxB0V+azNmfAbjKZ2K3ePjtCmPZpdt5I=";
 
-  types-aiobotocore-codecatalyst = buildTypesAiobotocorePackage "codecatalyst" "2.12.1" "sha256-xu7zEVV3AX9ygsYzTjyp1WcA5fEndCu6yCMsCuDnYOo=";
+  types-aiobotocore-codecatalyst = buildTypesAiobotocorePackage "codecatalyst" "2.12.2" "sha256-HtzCIUyhUvbK7dFGMFb472BiP9rvj7hmokOThk452uY=";
 
-  types-aiobotocore-codecommit = buildTypesAiobotocorePackage "codecommit" "2.12.1" "sha256-IshGyh7RTJDbmcjJ/t1SoeZKd7GnsRrr/kZAXpLZQXY=";
+  types-aiobotocore-codecommit = buildTypesAiobotocorePackage "codecommit" "2.12.2" "sha256-XQyTXh8D/9O5YhsShvGckTfscT/teYLAhTgwmGTMd04=";
 
-  types-aiobotocore-codedeploy = buildTypesAiobotocorePackage "codedeploy" "2.12.1" "sha256-1ess+WyiHaejghvuESxCHBu7XmGoR9uA3fL21WzhBPs=";
+  types-aiobotocore-codedeploy = buildTypesAiobotocorePackage "codedeploy" "2.12.2" "sha256-7uJ44TJ8hWKhmvWAKyMAL/5kU/XIm+icrXbiw5dWTQU=";
 
-  types-aiobotocore-codeguru-reviewer = buildTypesAiobotocorePackage "codeguru-reviewer" "2.12.1" "sha256-o9WfffjQPMU8pgUtQFrj7+CyP87rvalF1qxTTZp/UgM=";
+  types-aiobotocore-codeguru-reviewer = buildTypesAiobotocorePackage "codeguru-reviewer" "2.12.2" "sha256-PIUP1kHTEq3yXoozKFDdN9C0jODMeSPIV387vnAAWuY=";
 
-  types-aiobotocore-codeguru-security = buildTypesAiobotocorePackage "codeguru-security" "2.12.1" "sha256-RfKsb90lP57S6kyvfrFGampEGGHr1czQ/+49Oox0rEI=";
+  types-aiobotocore-codeguru-security = buildTypesAiobotocorePackage "codeguru-security" "2.12.2" "sha256-VN45VIrBplN5UnPZtd6yDnSY1nj0YRVKdDejg0CsDPE=";
 
-  types-aiobotocore-codeguruprofiler = buildTypesAiobotocorePackage "codeguruprofiler" "2.12.1" "sha256-1AkpcKCrwHIJHO9cFIyZrizSbNeLcjhRbTlvgDz6RJ4=";
+  types-aiobotocore-codeguruprofiler = buildTypesAiobotocorePackage "codeguruprofiler" "2.12.2" "sha256-+dI2LWqP1fmVMtQP247bo35yN0TxczXcPeCTSBNzMlM=";
 
-  types-aiobotocore-codepipeline = buildTypesAiobotocorePackage "codepipeline" "2.12.1" "sha256-0qNifbqbtK/XNo9un7snezMTBw5ED08UxZnHgVJj4HU=";
+  types-aiobotocore-codepipeline = buildTypesAiobotocorePackage "codepipeline" "2.12.2" "sha256-tlHbQTjTyZXJ2oPsOFepTn7BhNNaeLivDaqTw9dyte8=";
 
-  types-aiobotocore-codestar = buildTypesAiobotocorePackage "codestar" "2.12.1" "sha256-Du4dvdfqQjtRwnomiqtV+T3z65PjomCAkgl1vMAsZ2A=";
+  types-aiobotocore-codestar = buildTypesAiobotocorePackage "codestar" "2.12.2" "sha256-ICX4Mm4legH/D6zw83mAuGtnHnO44Xsym7BtQusfJhE=";
 
-  types-aiobotocore-codestar-connections = buildTypesAiobotocorePackage "codestar-connections" "2.12.1" "sha256-wHiMhzwCMPgrtZ650BAsZvgldAzGR6kjnHIQh0B8scA=";
+  types-aiobotocore-codestar-connections = buildTypesAiobotocorePackage "codestar-connections" "2.12.2" "sha256-iL50uXFV9blh6MJjqQ8lEClO7PEPHNbao+ZBr7eIKVY=";
 
-  types-aiobotocore-codestar-notifications = buildTypesAiobotocorePackage "codestar-notifications" "2.12.1" "sha256-rOKutC1NJS55XJ5sWks++sylGHLOwo1OElz+uZXMhQo=";
+  types-aiobotocore-codestar-notifications = buildTypesAiobotocorePackage "codestar-notifications" "2.12.2" "sha256-6ugH1IdRuG9VSX3BYvCRSqOzCeNUJK654YTOX4uUCZc=";
 
-  types-aiobotocore-cognito-identity = buildTypesAiobotocorePackage "cognito-identity" "2.12.1" "sha256-aBwQC4hoUaZWbICP74+vy3xocFGHWfB4B5hb+JwMKeA=";
+  types-aiobotocore-cognito-identity = buildTypesAiobotocorePackage "cognito-identity" "2.12.2" "sha256-zxUOfY/mTVciiGZ17ZxiMIgAHR9RVKRKbR2L65uCK1I=";
 
-  types-aiobotocore-cognito-idp = buildTypesAiobotocorePackage "cognito-idp" "2.12.1" "sha256-uVd9KNIMx1p26vaOzlPNM7a0+2SS5ZkfpMe5obGDXiw=";
+  types-aiobotocore-cognito-idp = buildTypesAiobotocorePackage "cognito-idp" "2.12.2" "sha256-mKAbWofTXdBvsKxsLUso9zqjT3fr6Nn08wM5z04F/Wo=";
 
-  types-aiobotocore-cognito-sync = buildTypesAiobotocorePackage "cognito-sync" "2.12.1" "sha256-NJVV8lN0HTmASQfqh9fbQSkg2KijOcbHTc8QYgTrY4I=";
+  types-aiobotocore-cognito-sync = buildTypesAiobotocorePackage "cognito-sync" "2.12.2" "sha256-riC2eCtEb0f32/hI593sbgLKEVf3jeWYO8LwsH0jvWk=";
 
-  types-aiobotocore-comprehend = buildTypesAiobotocorePackage "comprehend" "2.12.1" "sha256-+WMvk9yY5bGHPqd93TWS3XC6XDvTzh54oM9py52pzws=";
+  types-aiobotocore-comprehend = buildTypesAiobotocorePackage "comprehend" "2.12.2" "sha256-B/FxP4ia29VXS9urH6HfGvURM2Z7iOo8r8Zmp1Qwokc=";
 
-  types-aiobotocore-comprehendmedical = buildTypesAiobotocorePackage "comprehendmedical" "2.12.1" "sha256-KFeZxBzsAZVdpIlvKohBIP3p1yJ14/AHW7sItn6slY4=";
+  types-aiobotocore-comprehendmedical = buildTypesAiobotocorePackage "comprehendmedical" "2.12.2" "sha256-47wpqoxV3mrTdS+sHbD9mK/rwblLN3PK5eZQkx4eNBc=";
 
-  types-aiobotocore-compute-optimizer = buildTypesAiobotocorePackage "compute-optimizer" "2.12.1" "sha256-xCFDjZ+tkRs3UWhPu6BpabaKIFWITApu65gFk0hw/Vs=";
+  types-aiobotocore-compute-optimizer = buildTypesAiobotocorePackage "compute-optimizer" "2.12.2" "sha256-1Gnw5TOkU5qGjTjHGaU2Lf5CpRWl/XHKtA/MlH8ZM48=";
 
-  types-aiobotocore-config = buildTypesAiobotocorePackage "config" "2.12.1" "sha256-cQWccDw2YPdj5pXb/H2WaFlWg4BrAg/HNAq6RLAp4yY=";
+  types-aiobotocore-config = buildTypesAiobotocorePackage "config" "2.12.2" "sha256-smum6KC3n5Des0dkQ0dpWPAmsNp0syMzWsaYzWWzz3M=";
 
-  types-aiobotocore-connect = buildTypesAiobotocorePackage "connect" "2.12.1" "sha256-zbAIII9gaTJEZEcdd1go00s6PUAZdNtEYlOu0Hz2K5g=";
+  types-aiobotocore-connect = buildTypesAiobotocorePackage "connect" "2.12.2" "sha256-mlE5GRAkLUYXcywPzHvSjWLhzAZAwAEySK+xOmIGHxo=";
 
-  types-aiobotocore-connect-contact-lens = buildTypesAiobotocorePackage "connect-contact-lens" "2.12.1" "sha256-8QSM/rytw1tx8OfL3NQOaxT8D0hlFK4BmaxxPJGpeL0=";
+  types-aiobotocore-connect-contact-lens = buildTypesAiobotocorePackage "connect-contact-lens" "2.12.2" "sha256-YErrGkS78Ty8Hv95ofLKlYkL5MGmDnGjvHyDhNb7sc8=";
 
-  types-aiobotocore-connectcampaigns = buildTypesAiobotocorePackage "connectcampaigns" "2.12.1" "sha256-QJylFv6qLf+JS2FL2Fs9oXXkTbwgmcxChsXUjoJJIQ4=";
+  types-aiobotocore-connectcampaigns = buildTypesAiobotocorePackage "connectcampaigns" "2.12.2" "sha256-TF5Skwtx581enCSHNCDzbdzaf4o8L+JQlcUSZ69hVIU=";
 
-  types-aiobotocore-connectcases = buildTypesAiobotocorePackage "connectcases" "2.12.1" "sha256-5rHxLWeR6ElpegaV1lO6Wh8h0DBoZ8S4TblDPMlZvEg=";
+  types-aiobotocore-connectcases = buildTypesAiobotocorePackage "connectcases" "2.12.2" "sha256-nYzkrxhAGmkA1ZUPRxKmY6GWdG7io8yAfzo0D5znTmg=";
 
-  types-aiobotocore-connectparticipant = buildTypesAiobotocorePackage "connectparticipant" "2.12.1" "sha256-VSno3aW8mDf/yxg0bTERjsERvdd6+T4yOJQdA32o3bo=";
+  types-aiobotocore-connectparticipant = buildTypesAiobotocorePackage "connectparticipant" "2.12.2" "sha256-ggAybqHfPYJLMPM8DZUQfmUdFCJEpETqWhJZMg68GzU=";
 
-  types-aiobotocore-controltower = buildTypesAiobotocorePackage "controltower" "2.12.1" "sha256-3G2EarLZAonr/2noJ8sUlrvol6En37NfWqaKWkKUF40=";
+  types-aiobotocore-controltower = buildTypesAiobotocorePackage "controltower" "2.12.2" "sha256-HxUAm20R5OhvFz21KHOuZSYmnooU+SfAxCOqavnFZVA=";
 
-  types-aiobotocore-cur = buildTypesAiobotocorePackage "cur" "2.12.1" "sha256-Q22cMbQCNx57+z5gVRWzEu+NFre7nr43iCfZckmzUqU=";
+  types-aiobotocore-cur = buildTypesAiobotocorePackage "cur" "2.12.2" "sha256-XK4+EvPDByogTh8En2xCUCeJsIV2OROE9bjHekO2hpU=";
 
-  types-aiobotocore-customer-profiles = buildTypesAiobotocorePackage "customer-profiles" "2.12.1" "sha256-qMPLsa4euoHZiaRizphbpw4H66mCxZhNKZM1qjILwy8=";
+  types-aiobotocore-customer-profiles = buildTypesAiobotocorePackage "customer-profiles" "2.12.2" "sha256-K89ciuIiaSS9i7BOkwc3u0Rvv5teMtvheDPTNTQr4Q8=";
 
-  types-aiobotocore-databrew = buildTypesAiobotocorePackage "databrew" "2.12.1" "sha256-ekG77cZnn6V9InRjhqUzJWGs4/ear90bifUP+RwCXz8=";
+  types-aiobotocore-databrew = buildTypesAiobotocorePackage "databrew" "2.12.2" "sha256-3vBQsZB8Mjvo/T2f6BdWUlXWnvkTfdiEcZhrlRuHr8g=";
 
-  types-aiobotocore-dataexchange = buildTypesAiobotocorePackage "dataexchange" "2.12.1" "sha256-L6bedg9iqlsB+0mt5GaZzB8RRepZGW1BahDXUwfNc+I=";
+  types-aiobotocore-dataexchange = buildTypesAiobotocorePackage "dataexchange" "2.12.2" "sha256-PzdVdYYXNoJ17y5X+0jtmtajfCP7JcgFlRMHoyYil1U=";
 
-  types-aiobotocore-datapipeline = buildTypesAiobotocorePackage "datapipeline" "2.12.1" "sha256-EAkwiRw1PF3+6pdt15onwTBvXXf9f4BLQd6mqDLgYdk=";
+  types-aiobotocore-datapipeline = buildTypesAiobotocorePackage "datapipeline" "2.12.2" "sha256-cZj9t7Y4kNNS/l6JPihqd3ETu/9l9OrDIbn/PAvOcbc=";
 
-  types-aiobotocore-datasync = buildTypesAiobotocorePackage "datasync" "2.12.1" "sha256-JZuIbuaaci7scqF27/7KZtkfpTa+FkE3Ooq84ZjL4Fg=";
+  types-aiobotocore-datasync = buildTypesAiobotocorePackage "datasync" "2.12.2" "sha256-DGKdxsHlAEKb7USVM0FzFjsLLKwL5ZHEkhgjWSSgaAo=";
 
-  types-aiobotocore-dax = buildTypesAiobotocorePackage "dax" "2.12.1" "sha256-wtFXwUfDxUJSjt2FFvt6+eq1vSsHWwvBJvg1pyplX8Q=";
+  types-aiobotocore-dax = buildTypesAiobotocorePackage "dax" "2.12.2" "sha256-lUX2JV7SQk39k/ri56pL9FMaPLIvII30vrOkcMaOuZ8=";
 
-  types-aiobotocore-detective = buildTypesAiobotocorePackage "detective" "2.12.1" "sha256-ydMwZRT9F95KBrvlwGAqjiTiEUVnr0xKElMKz5dgRSM=";
+  types-aiobotocore-detective = buildTypesAiobotocorePackage "detective" "2.12.2" "sha256-9QYhpJGUFewUpSxd4KX+LSVBZLTJsNf8lkTaVBnMuX8=";
 
-  types-aiobotocore-devicefarm = buildTypesAiobotocorePackage "devicefarm" "2.12.1" "sha256-8GRf+xgsv8lTNuRlib78GMOV5gLMxiybo9gqgfL2s6g=";
+  types-aiobotocore-devicefarm = buildTypesAiobotocorePackage "devicefarm" "2.12.2" "sha256-v4wCi8MhkJCVscYqu0eD2dFwHcgZyFT6/Fl8IIRtmuY=";
 
-  types-aiobotocore-devops-guru = buildTypesAiobotocorePackage "devops-guru" "2.12.1" "sha256-Jg4yLzlZGjlHqgKECEgGndcVGc28KCE0C8K4JhpjAXA=";
+  types-aiobotocore-devops-guru = buildTypesAiobotocorePackage "devops-guru" "2.12.2" "sha256-sQmBJuQOhXWd4Ed6S8eck7lmyuHYbTEfKXXLyP8Hi/c=";
 
-  types-aiobotocore-directconnect = buildTypesAiobotocorePackage "directconnect" "2.12.1" "sha256-wk0y4voHIlDmBMGTsOukcM4yG9XP4wnQA1WgAUb9T1c=";
+  types-aiobotocore-directconnect = buildTypesAiobotocorePackage "directconnect" "2.12.2" "sha256-VjVTqn4vlu2IKAYN5sPX53ktjPQ7cxcW1SsS1IpyFe8=";
 
-  types-aiobotocore-discovery = buildTypesAiobotocorePackage "discovery" "2.12.1" "sha256-IctqTU+e65MHeo3Mm+MVzkyrzki8f0eSEWHvzTgTTlc=";
+  types-aiobotocore-discovery = buildTypesAiobotocorePackage "discovery" "2.12.2" "sha256-rFqFq8++FeWKR/Q7c3Hp7e5595RKimPM8wC6wCnzU18=";
 
-  types-aiobotocore-dlm = buildTypesAiobotocorePackage "dlm" "2.12.1" "sha256-dHKET+GhbmbRJzoziqtB2H1T36L9lFFU0HtNrPve4/o=";
+  types-aiobotocore-dlm = buildTypesAiobotocorePackage "dlm" "2.12.2" "sha256-16ctkHWUCptCGkqF2LV4aZbsQZPVcMCPnM4c4yYjr54=";
 
-  types-aiobotocore-dms = buildTypesAiobotocorePackage "dms" "2.12.1" "sha256-RIm9mkVCGtpMdib6ObpPxJgiME15tT9wm5UrQjLYicc=";
+  types-aiobotocore-dms = buildTypesAiobotocorePackage "dms" "2.12.2" "sha256-thXJTCeLzlZ8AgffEcWabZexjcXj6tzUdKcVUO2h+as=";
 
-  types-aiobotocore-docdb = buildTypesAiobotocorePackage "docdb" "2.12.1" "sha256-F3BHJezYz2fHG/76JnOrc8J5jgAEJx82I+Lzhput4Bs=";
+  types-aiobotocore-docdb = buildTypesAiobotocorePackage "docdb" "2.12.2" "sha256-mEb8ojz1H2a8K5Vk+YM2eMM7E2yCNLkPFlkJDp6u0+c=";
 
-  types-aiobotocore-docdb-elastic = buildTypesAiobotocorePackage "docdb-elastic" "2.12.1" "sha256-GA13WEdMqY8SUctSK5o9N6B6F35RySbUQS7XxleRak0=";
+  types-aiobotocore-docdb-elastic = buildTypesAiobotocorePackage "docdb-elastic" "2.12.2" "sha256-Gg8i3T7c9VyStoiO4IdvIpEkY4s9U0kdQkkrFToDGMo=";
 
-  types-aiobotocore-drs = buildTypesAiobotocorePackage "drs" "2.12.1" "sha256-oMsLU3UfvqACSteoKKALYNV2qnXnxDkmE+TaVJV9cG0=";
+  types-aiobotocore-drs = buildTypesAiobotocorePackage "drs" "2.12.2" "sha256-QjBZN5uD7c8TmAvDZkI0UmJttaryPmgp6jq3g3STIFA=";
 
-  types-aiobotocore-ds = buildTypesAiobotocorePackage "ds" "2.12.1" "sha256-2FfD3ck4faAK5s85ELfI1jPH7icQZh3a8ALDIGxpBz4=";
+  types-aiobotocore-ds = buildTypesAiobotocorePackage "ds" "2.12.2" "sha256-l8V/f2vcC6ztSaG+mjaYnWmOcsvbLogXE8tfIn+Fd8c=";
 
-  types-aiobotocore-dynamodb = buildTypesAiobotocorePackage "dynamodb" "2.12.1" "sha256-mi1byiYu/T2h65HtTgygYXS1tNxiDhnsIH+FGGpFq1A=";
+  types-aiobotocore-dynamodb = buildTypesAiobotocorePackage "dynamodb" "2.12.2" "sha256-dqfQ6X/jFhEWzkYf5Qt9++jk51OFNxv/7JCU4/YkGzw=";
 
-  types-aiobotocore-dynamodbstreams = buildTypesAiobotocorePackage "dynamodbstreams" "2.12.1" "sha256-y7lR076HGKvwzK4AFExfys6yvddmHmH/h0Klb7ExIKw=";
+  types-aiobotocore-dynamodbstreams = buildTypesAiobotocorePackage "dynamodbstreams" "2.12.2" "sha256-cay+xSJqhozKN5Qfm+ilYaOgL3wTDTrhWHHElD6Fq8o=";
 
-  types-aiobotocore-ebs = buildTypesAiobotocorePackage "ebs" "2.12.1" "sha256-ji1opGGeCLCMvpYkbwKQ+bkEGkeV9ZhuxZ3uIcT4Vmk=";
+  types-aiobotocore-ebs = buildTypesAiobotocorePackage "ebs" "2.12.2" "sha256-DnZe5HqyV+MUSR1O+XwgkJI4/xvS3KX2wKHxvmG3DL4=";
 
-  types-aiobotocore-ec2 = buildTypesAiobotocorePackage "ec2" "2.12.1" "sha256-Ep4MKh26Iv+2LE/BKQBF5gX539ujCIzb4uaeHdd3vK8=";
+  types-aiobotocore-ec2 = buildTypesAiobotocorePackage "ec2" "2.12.2" "sha256-KEkPeWcpFdo58ti8edX3lX9KZEw/9raJysLiozI79kI=";
 
-  types-aiobotocore-ec2-instance-connect = buildTypesAiobotocorePackage "ec2-instance-connect" "2.12.1" "sha256-UQJvL+kpS1A2ptVpWzDEBvLntIZiyLJu3IwASJQd+ik=";
+  types-aiobotocore-ec2-instance-connect = buildTypesAiobotocorePackage "ec2-instance-connect" "2.12.2" "sha256-Zy6EeikhwCsG8xZ/0QTOtECAYQFLn2fvdqwDob4Wq8U=";
 
-  types-aiobotocore-ecr = buildTypesAiobotocorePackage "ecr" "2.12.1" "sha256-dOp+qRCpF+1hLgdlQTaLQcCEpST44ajxeJeepOwcU+U=";
+  types-aiobotocore-ecr = buildTypesAiobotocorePackage "ecr" "2.12.2" "sha256-4SI+1chcCx/wArrTWqOn560EtfjIOaO92YyLM2PtMYI=";
 
-  types-aiobotocore-ecr-public = buildTypesAiobotocorePackage "ecr-public" "2.12.1" "sha256-wwcl/GCHz17YisIylvjtkMXiRlqcHX8pf3K0sy2GtL8=";
+  types-aiobotocore-ecr-public = buildTypesAiobotocorePackage "ecr-public" "2.12.2" "sha256-I6WPv0GmNp3aNrn7fnoSj660YojxsS/d+4qeHOzyZas=";
 
-  types-aiobotocore-ecs = buildTypesAiobotocorePackage "ecs" "2.12.1" "sha256-yVwVId7K3DLWTjgk3tLywZhgnAxFGEi2oAKfXfdO18w=";
+  types-aiobotocore-ecs = buildTypesAiobotocorePackage "ecs" "2.12.2" "sha256-aq0r9sYoVHccy7f3/WUtvWmbmeeGEu09nXU6nePf0gM=";
 
-  types-aiobotocore-efs = buildTypesAiobotocorePackage "efs" "2.12.1" "sha256-hk9CLjWumjbT4EUGQnXytjgc6qgeCQAJx51d2TK6u9U=";
+  types-aiobotocore-efs = buildTypesAiobotocorePackage "efs" "2.12.2" "sha256-ne7ORyHVEyZg5pGwS7Wypmd9ig6bAzfprvaJxEDz8qY=";
 
-  types-aiobotocore-eks = buildTypesAiobotocorePackage "eks" "2.12.1" "sha256-fGSU2Xx8VF/R3tFwqJlJGcgq4Mpv/NevgMsE0IVzRrY=";
+  types-aiobotocore-eks = buildTypesAiobotocorePackage "eks" "2.12.2" "sha256-SG2SbEjBjcr6wDYyo6Djt8seKHncW4XEY9HFQSbkg2E=";
 
-  types-aiobotocore-elastic-inference = buildTypesAiobotocorePackage "elastic-inference" "2.12.1" "sha256-4SkFFVNIyY0vJjZ2uIwwyrN0LiOTj/6Oo1vWagRJtM4=";
+  types-aiobotocore-elastic-inference = buildTypesAiobotocorePackage "elastic-inference" "2.12.2" "sha256-RzY7MJ3jV/DTylRkCKM74MOcDySSIwR1cxmHomW+a8s=";
 
-  types-aiobotocore-elasticache = buildTypesAiobotocorePackage "elasticache" "2.12.1" "sha256-5X5icBKyZRNawv5lJzfDcyD2tFC9eLlJNHogV3ZM3tQ=";
+  types-aiobotocore-elasticache = buildTypesAiobotocorePackage "elasticache" "2.12.2" "sha256-rMSkENOjnOtXZAMFXiWjhnFgTS2ihnp2U6FkuU4R88o=";
 
-  types-aiobotocore-elasticbeanstalk = buildTypesAiobotocorePackage "elasticbeanstalk" "2.12.1" "sha256-U9xp81RqyuAFNNYkYSjIpRBfsXKZanunVWAmAfR/ZVw=";
+  types-aiobotocore-elasticbeanstalk = buildTypesAiobotocorePackage "elasticbeanstalk" "2.12.2" "sha256-HAqBCMCTLcHR0I2spr41JvwZpmWTWIPENLQBWAWJ/FY=";
 
-  types-aiobotocore-elastictranscoder = buildTypesAiobotocorePackage "elastictranscoder" "2.12.1" "sha256-Ggq93JeHa5+2hSwyHcFGRU7rMGHGPMAqaJPZj2KIUUU=";
+  types-aiobotocore-elastictranscoder = buildTypesAiobotocorePackage "elastictranscoder" "2.12.2" "sha256-9XMdxrFLCbHQu7JeetSxwfUCo0eU16s5aA+xfwKxfiA=";
 
-  types-aiobotocore-elb = buildTypesAiobotocorePackage "elb" "2.12.1" "sha256-LzHkiRKqmdD/iXZhJu1G9eLltFJcIFwBhgiLgywyOcA=";
+  types-aiobotocore-elb = buildTypesAiobotocorePackage "elb" "2.12.2" "sha256-QwVs2TATqPbkl90h6hJQlUPM/gpdog+oB11uggeeLDc=";
 
-  types-aiobotocore-elbv2 = buildTypesAiobotocorePackage "elbv2" "2.12.1" "sha256-g1ozRS44owh8ogisOE7ydF7omi9LPdXLxO2JaEWDmlg=";
+  types-aiobotocore-elbv2 = buildTypesAiobotocorePackage "elbv2" "2.12.2" "sha256-Jisv5FUAiuwxRVTYFqM51eBZjFpNWrWSZqZI66YozEg=";
 
-  types-aiobotocore-emr = buildTypesAiobotocorePackage "emr" "2.12.1" "sha256-14akL+yzo3/uV9Qsdpewt4Y88ghxVbV9aL6e8Qe+FFo=";
+  types-aiobotocore-emr = buildTypesAiobotocorePackage "emr" "2.12.2" "sha256-06W9wHe+Pt4tUNjBrXmy6LTmX1YijR1Y2yHb8RzUyHA=";
 
-  types-aiobotocore-emr-containers = buildTypesAiobotocorePackage "emr-containers" "2.12.1" "sha256-zOLyra/2uaqKl1t5Z2FVyLqtMmlYRZFN9HaCd+ocXi0=";
+  types-aiobotocore-emr-containers = buildTypesAiobotocorePackage "emr-containers" "2.12.2" "sha256-vke/6UvOUwUSghwDnappBeZfafAWpsxg+H02LWZVQtE=";
 
-  types-aiobotocore-emr-serverless = buildTypesAiobotocorePackage "emr-serverless" "2.12.1" "sha256-clBwlUdU9v90NEm744l6OB3QHuB+aUC3kQjLuHNKFdU=";
+  types-aiobotocore-emr-serverless = buildTypesAiobotocorePackage "emr-serverless" "2.12.2" "sha256-pFmgcNqLig3bK/5XruA05Uw0IrtYQhutl0XFLWU+TcA=";
 
-  types-aiobotocore-entityresolution = buildTypesAiobotocorePackage "entityresolution" "2.12.1" "sha256-3onJrgPQlgcNGPIUypd/ke5y3j4qt6vWF0fVgcwYsOg=";
+  types-aiobotocore-entityresolution = buildTypesAiobotocorePackage "entityresolution" "2.12.2" "sha256-C9bhXADO2qhItCntG5OgtHoq5dTApS/dIuprUoeYQ2A=";
 
-  types-aiobotocore-es = buildTypesAiobotocorePackage "es" "2.12.1" "sha256-pgQ7UDfnBaITqhrRoxze9jTLaxyUR2MubCWc+VfQS6c=";
+  types-aiobotocore-es = buildTypesAiobotocorePackage "es" "2.12.2" "sha256-EvdippGNEv14xe1mOxcIHy9/gfY5sH59ERMqrwOMigM=";
 
-  types-aiobotocore-events = buildTypesAiobotocorePackage "events" "2.12.1" "sha256-zdeJ+xc6KaAc0wcBsRQq49GvkK735LgTBHOKALjXPPk=";
+  types-aiobotocore-events = buildTypesAiobotocorePackage "events" "2.12.2" "sha256-XLXuheQPfEoobrVP9SRA7CWUzpU+02V25zenwDKi9x4=";
 
-  types-aiobotocore-evidently = buildTypesAiobotocorePackage "evidently" "2.12.1" "sha256-BLolxhY1yHTi5jQajuJpBj7GtKAtxhVjkIN+X1yvGmY=";
+  types-aiobotocore-evidently = buildTypesAiobotocorePackage "evidently" "2.12.2" "sha256-VSCM6tR7hnykmKo9nzuhd0iaOmdoqjQ+pENJTvwUsoQ=";
 
-  types-aiobotocore-finspace = buildTypesAiobotocorePackage "finspace" "2.12.1" "sha256-Rc7iPcraCISAebFQzU+Yxll+fYwi5b2hYO/3d1I3RRY=";
+  types-aiobotocore-finspace = buildTypesAiobotocorePackage "finspace" "2.12.2" "sha256-H/7wQxERVxA699UgLSfrfVSc/YOLmhhap0fhc+neacw=";
 
-  types-aiobotocore-finspace-data = buildTypesAiobotocorePackage "finspace-data" "2.12.1" "sha256-B3RJZRLKtz+CBOnRo0YcqdHhUc3P1Owjk2EwNChrnK0=";
+  types-aiobotocore-finspace-data = buildTypesAiobotocorePackage "finspace-data" "2.12.2" "sha256-fDxf0eZTu05m6C0HPr3iD9JnBHi7NLj2oGir0PQZuZQ=";
 
-  types-aiobotocore-firehose = buildTypesAiobotocorePackage "firehose" "2.12.1" "sha256-D0+FLyDYDx4xroVaANmyQq5qLPGUdDfgPMtSKfVAiUg=";
+  types-aiobotocore-firehose = buildTypesAiobotocorePackage "firehose" "2.12.2" "sha256-CpXbwwSSkmX1gl83qXUcq1Hfm6qfPaaRQpZFQrjwCEs=";
 
-  types-aiobotocore-fis = buildTypesAiobotocorePackage "fis" "2.12.1" "sha256-C99pmPa7zV9DZrc9stWxV9EPbJXwxslMyynj2PhbtDA=";
+  types-aiobotocore-fis = buildTypesAiobotocorePackage "fis" "2.12.2" "sha256-U6pTTt4vfu0BpLTY+DWHhdCXABg8wNgU1HQHMFA464Q=";
 
-  types-aiobotocore-fms = buildTypesAiobotocorePackage "fms" "2.12.1" "sha256-/oj+/dwtRXH8WD5QWuxJTLfNfhqwJmdXJROHUzzzF68=";
+  types-aiobotocore-fms = buildTypesAiobotocorePackage "fms" "2.12.2" "sha256-U3ahHDszvVy7he1i+VHbByoINWLqulwjPwV0Q0JO2XA=";
 
-  types-aiobotocore-forecast = buildTypesAiobotocorePackage "forecast" "2.12.1" "sha256-POwSXbfBT9xTA+b2dNFv7ONfYSv+N/Td9FW7EPDYbmA=";
+  types-aiobotocore-forecast = buildTypesAiobotocorePackage "forecast" "2.12.2" "sha256-AF8zDThj/YYPydi+B53ovo7cu+GU7DIkeIMjxtRTOiY=";
 
-  types-aiobotocore-forecastquery = buildTypesAiobotocorePackage "forecastquery" "2.12.1" "sha256-twtNBD27WYeuJNI5FuA6C98b5wjkRJSRqHmZ1fmArAc=";
+  types-aiobotocore-forecastquery = buildTypesAiobotocorePackage "forecastquery" "2.12.2" "sha256-M53ScdaS31TmkhZVBjlohhOyBiWE99CZLPSmm/TfiOM=";
 
-  types-aiobotocore-frauddetector = buildTypesAiobotocorePackage "frauddetector" "2.12.1" "sha256-YDub5fFJg5efes6BtnwVEKnKhbbmDuyFHNTQ6O7SgOI=";
+  types-aiobotocore-frauddetector = buildTypesAiobotocorePackage "frauddetector" "2.12.2" "sha256-9aFNev9n1+PBR9btvbtJLFuSe+Mx0lGl9kLpbjleUVE=";
 
-  types-aiobotocore-fsx = buildTypesAiobotocorePackage "fsx" "2.12.1" "sha256-lsDu0YT6015Or5STid9M8mbLXWxu7UkKgQHwTkgwnpY=";
+  types-aiobotocore-fsx = buildTypesAiobotocorePackage "fsx" "2.12.2" "sha256-O8AuUIDjlOMos9RcJtlUP59HmdXXZs7G5dh48ACK3cQ=";
 
-  types-aiobotocore-gamelift = buildTypesAiobotocorePackage "gamelift" "2.12.1" "sha256-SX7bzOCoV3v6+CVb1eBfm6AxLRivUJ1zbZtxZ7D1jvg=";
+  types-aiobotocore-gamelift = buildTypesAiobotocorePackage "gamelift" "2.12.2" "sha256-VudsIk9Otibdq1Gnt7FDMLNuKWjGJNB9qpogv2A7upc=";
 
   types-aiobotocore-gamesparks = buildTypesAiobotocorePackage "gamesparks" "2.7.0" "sha256-oVbKtuLMPpCQcZYx/cH1Dqjv/t6/uXsveflfFVqfN+8=";
 
-  types-aiobotocore-glacier = buildTypesAiobotocorePackage "glacier" "2.12.1" "sha256-qKEzg0ruG6E8DPsi+xsJF5rbmcEraLrS0gQr3It8io0=";
+  types-aiobotocore-glacier = buildTypesAiobotocorePackage "glacier" "2.12.2" "sha256-GXPiOEfVPWd16turDWjgU37z9bvh+KXxkAKPyN5I+2g=";
 
-  types-aiobotocore-globalaccelerator = buildTypesAiobotocorePackage "globalaccelerator" "2.12.1" "sha256-fjve8IEN0KcejFBwUxO1rstv8/CA0g0pS/0lxfnZx6k=";
+  types-aiobotocore-globalaccelerator = buildTypesAiobotocorePackage "globalaccelerator" "2.12.2" "sha256-ra4VPjKNEmkOnilzwc50nUeo3VJJi2ifp4H4jJ0FFZw=";
 
-  types-aiobotocore-glue = buildTypesAiobotocorePackage "glue" "2.12.1" "sha256-JYo3D3i2FtCKUatnLyDWW8YGB9u0SzQwDeC0tIBULms=";
+  types-aiobotocore-glue = buildTypesAiobotocorePackage "glue" "2.12.2" "sha256-RA5Tp4hohM9U8UiFXLDu3iH5sb3GUaancnP7coPqk+Q=";
 
-  types-aiobotocore-grafana = buildTypesAiobotocorePackage "grafana" "2.12.1" "sha256-fByRGOJ1TnfnPB6czGYyjvKOop6chA7fiatsVPKCxys=";
+  types-aiobotocore-grafana = buildTypesAiobotocorePackage "grafana" "2.12.2" "sha256-WNzWOnpwikHH79QfPeFqOuA5RdYhiUHbqMhr/l14izc=";
 
-  types-aiobotocore-greengrass = buildTypesAiobotocorePackage "greengrass" "2.12.1" "sha256-QhTA5b8q6LDdHVeN0M0mT/XLKTfDHIY71EXUCtSCqbI=";
+  types-aiobotocore-greengrass = buildTypesAiobotocorePackage "greengrass" "2.12.2" "sha256-tAhvsGNrBcWOQNMX+WjERCCqQnrMdyBOwmFcfRwGd8A=";
 
-  types-aiobotocore-greengrassv2 = buildTypesAiobotocorePackage "greengrassv2" "2.12.1" "sha256-b6DO2ZGOBzPZ311Fj+il6pkBmSXPKe12Ssua9T/mdjs=";
+  types-aiobotocore-greengrassv2 = buildTypesAiobotocorePackage "greengrassv2" "2.12.2" "sha256-Nk+9h2d1/E37wki3wkCQ+LlVvHbact12l/YmKw/eurM=";
 
-  types-aiobotocore-groundstation = buildTypesAiobotocorePackage "groundstation" "2.12.1" "sha256-XzlCvtOwGPUQEkU1HiGYeeAWuRAQpRnXDcgyblykJEE=";
+  types-aiobotocore-groundstation = buildTypesAiobotocorePackage "groundstation" "2.12.2" "sha256-65idZ2V7v1sZdwqj2/RNqqbG/D8yH8jTA85GkY56bPs=";
 
-  types-aiobotocore-guardduty = buildTypesAiobotocorePackage "guardduty" "2.12.1" "sha256-Y3FDX5NPe+s0CBawE0OsXaIBPhe4wfEoLOEhDLRl6Sc=";
+  types-aiobotocore-guardduty = buildTypesAiobotocorePackage "guardduty" "2.12.2" "sha256-1ZxRFzTb2F/i75WCd9IB0JROlhSpDH6POQTvuwAMtcA=";
 
-  types-aiobotocore-health = buildTypesAiobotocorePackage "health" "2.12.1" "sha256-/Dn89WzfH67/4MFpkCHW5FGNdKDR5xAqZogAoo0uTb0=";
+  types-aiobotocore-health = buildTypesAiobotocorePackage "health" "2.12.2" "sha256-ZEu6htVOjMnS8hpRfJ5+PDpg6WOFpIrYR+Wwd0J64x4=";
 
-  types-aiobotocore-healthlake = buildTypesAiobotocorePackage "healthlake" "2.12.1" "sha256-K05QqhDzTN9S4xz9nYX/HMjtYQPRsUjo/lua+15kreA=";
+  types-aiobotocore-healthlake = buildTypesAiobotocorePackage "healthlake" "2.12.2" "sha256-IE85NtxaiDBqwxM3/85T/1JWakgYbXXT7xXX8tE8U7g=";
 
-  types-aiobotocore-honeycode = buildTypesAiobotocorePackage "honeycode" "2.12.1" "sha256-N/RNj96TYYIEF8tM4T1O9A386rWpey7vNeENARYuVR4=";
+  types-aiobotocore-honeycode = buildTypesAiobotocorePackage "honeycode" "2.12.2" "sha256-bPhhNG/nTkXsKzK/bP76WHdwn1QViqvxSEIhkHqbMjk=";
 
-  types-aiobotocore-iam = buildTypesAiobotocorePackage "iam" "2.12.1" "sha256-m297NaucGsLk8wkezGmktS5L7dtvEHAclGDYo2LhOy0=";
+  types-aiobotocore-iam = buildTypesAiobotocorePackage "iam" "2.12.2" "sha256-4DgTLBlfpvUDfvVlu4MZcY/H1mtoPhyZJBOIv8xVAlQ=";
 
-  types-aiobotocore-identitystore = buildTypesAiobotocorePackage "identitystore" "2.12.1" "sha256-IpOR07RxE9OSF5Ia4haHw/N/SMIL6QWqNfmqhZrh5WI=";
+  types-aiobotocore-identitystore = buildTypesAiobotocorePackage "identitystore" "2.12.2" "sha256-LbU0IB9LD7sVNVIzoUF1xwqKvT75IedKN42M7W6e13I=";
 
-  types-aiobotocore-imagebuilder = buildTypesAiobotocorePackage "imagebuilder" "2.12.1" "sha256-SHfM9cerQSj7NmBHkC++6U5O9jOM3O0wWUXnu58nmRU=";
+  types-aiobotocore-imagebuilder = buildTypesAiobotocorePackage "imagebuilder" "2.12.2" "sha256-RVdWetHqv+oF5gJhKcJirocyeI96FhLI07qlhI9apkk=";
 
-  types-aiobotocore-importexport = buildTypesAiobotocorePackage "importexport" "2.12.1" "sha256-sflWs79vrb2/CW+Xnh/94qe97plOyzXqwn+wzYHRNrk=";
+  types-aiobotocore-importexport = buildTypesAiobotocorePackage "importexport" "2.12.2" "sha256-N0Dri5WpxxsgHy58blWVs7UNrvcwOVVXowbqkLV6T50=";
 
-  types-aiobotocore-inspector = buildTypesAiobotocorePackage "inspector" "2.12.1" "sha256-EpF8oSl8c2CCf6c+R2Y+hvlfjGqxtLJfMFuABrUbb0c=";
+  types-aiobotocore-inspector = buildTypesAiobotocorePackage "inspector" "2.12.2" "sha256-DakehZs/UE6Bh7b/ivTmue3uQclx9/1HBZn4DPZb+4s=";
 
-  types-aiobotocore-inspector2 = buildTypesAiobotocorePackage "inspector2" "2.12.1" "sha256-/WC/HvLK+BYcWWRvoNaLPwVoFSnTEDedqOA1zqiNYh4=";
+  types-aiobotocore-inspector2 = buildTypesAiobotocorePackage "inspector2" "2.12.2" "sha256-HUmiN5ZAV3l+LO+DtT7L/nFIuTv0xaAAm/tIhBF83C4=";
 
-  types-aiobotocore-internetmonitor = buildTypesAiobotocorePackage "internetmonitor" "2.12.1" "sha256-nnvd49vG1ZofJbWAnr1ZUsSFT4Jgmnde4mTVb8bjX8w=";
+  types-aiobotocore-internetmonitor = buildTypesAiobotocorePackage "internetmonitor" "2.12.2" "sha256-dEulJ3YmtaODVZiiz1zQfO5meNnDdlPILgihuvJYsPI=";
 
-  types-aiobotocore-iot = buildTypesAiobotocorePackage "iot" "2.12.1" "sha256-0/b7nYgrFnOComNlfvx0c+phkqsLTlQBQGubp1Md1AU=";
+  types-aiobotocore-iot = buildTypesAiobotocorePackage "iot" "2.12.2" "sha256-wXSOfVVJFe+yQwKwvVBxuyVq029qyYgNHowHQ63kLi0=";
 
-  types-aiobotocore-iot-data = buildTypesAiobotocorePackage "iot-data" "2.12.1" "sha256-FRCda6jDLcl1tI6PwTaYydY3jzrtJvmYlKvyCR766fM=";
+  types-aiobotocore-iot-data = buildTypesAiobotocorePackage "iot-data" "2.12.2" "sha256-4xmQ41ts7lyTHyOhutEx6jKZvjiI6bKb40H056kmu6Q=";
 
-  types-aiobotocore-iot-jobs-data = buildTypesAiobotocorePackage "iot-jobs-data" "2.12.1" "sha256-OkKiROSuCZ1Dy2/Jeoby0J3obSRRXToTUUUfY2bwlVk=";
+  types-aiobotocore-iot-jobs-data = buildTypesAiobotocorePackage "iot-jobs-data" "2.12.2" "sha256-CNmF9yts8zcZGoWDRpodIkMcho8eGeWTPAOYx2dH8/A=";
 
-  types-aiobotocore-iot-roborunner = buildTypesAiobotocorePackage "iot-roborunner" "2.12.1" "sha256-Mstavqb84CltIUmh5aw+Q5+6+w90ErjP9MYlsFrQSZQ=";
+  types-aiobotocore-iot-roborunner = buildTypesAiobotocorePackage "iot-roborunner" "2.12.2" "sha256-O/nGvYfUibI4EvHgONtkYHFv/dZSpHCehXjietPiMJo=";
 
-  types-aiobotocore-iot1click-devices = buildTypesAiobotocorePackage "iot1click-devices" "2.12.1" "sha256-+JiJr+Vvn1MZEKtRAtNNTlv9JEiX4hCzF0mcrCZBnvY=";
+  types-aiobotocore-iot1click-devices = buildTypesAiobotocorePackage "iot1click-devices" "2.12.2" "sha256-zMH/2TjygyROUjWDwsozbyoCMWquSbaq0e2ImVM53GI=";
 
-  types-aiobotocore-iot1click-projects = buildTypesAiobotocorePackage "iot1click-projects" "2.12.1" "sha256-044QFOHWRDFqiOA/JQ904BO46+P+/GWyqJrW+FyFs+w=";
+  types-aiobotocore-iot1click-projects = buildTypesAiobotocorePackage "iot1click-projects" "2.12.2" "sha256-4tjJAmrGkY0kkAPncSknqC33lgxSUMu8ClCfFpKVF1w=";
 
-  types-aiobotocore-iotanalytics = buildTypesAiobotocorePackage "iotanalytics" "2.12.1" "sha256-2ZCngNUtPYX1m173bPtZ9Xn4t8bVSZ4IQG2Rlux/aAs=";
+  types-aiobotocore-iotanalytics = buildTypesAiobotocorePackage "iotanalytics" "2.12.2" "sha256-r3zLmpdZq1gtGZCcleuIslDB0Bgk8HzVAzl2yOgFIOk=";
 
-  types-aiobotocore-iotdeviceadvisor = buildTypesAiobotocorePackage "iotdeviceadvisor" "2.12.1" "sha256-9Zby+hIaVQuoqHcSRulQ8+F4RIgTHzfNPSUcEm6x430=";
+  types-aiobotocore-iotdeviceadvisor = buildTypesAiobotocorePackage "iotdeviceadvisor" "2.12.2" "sha256-/Rux1JInDSnVbYs/jlCoVEiCf3ANsBc/agBlXasCQgA=";
 
-  types-aiobotocore-iotevents = buildTypesAiobotocorePackage "iotevents" "2.12.1" "sha256-eIGobenbMUDi7cuh28zbb2BP6IIsAxmOU6sj5dSJwbU=";
+  types-aiobotocore-iotevents = buildTypesAiobotocorePackage "iotevents" "2.12.2" "sha256-3s0jtHPsvhIcUpPk3z2BtTaQZR6J+RDIwQtxTexXdLE=";
 
-  types-aiobotocore-iotevents-data = buildTypesAiobotocorePackage "iotevents-data" "2.12.1" "sha256-yWAqc6peQ/fpKo9aokUzSHAq4PCuwKGzYUUsnxVEuCU=";
+  types-aiobotocore-iotevents-data = buildTypesAiobotocorePackage "iotevents-data" "2.12.2" "sha256-bK10y+aLN8N5wslhdu52XMLGgNH9LO0ep32uX9CuZzM=";
 
-  types-aiobotocore-iotfleethub = buildTypesAiobotocorePackage "iotfleethub" "2.12.1" "sha256-/G5zzVrwFwalyD/k0liRV0jI+zREXYEu35d8sQutKIc=";
+  types-aiobotocore-iotfleethub = buildTypesAiobotocorePackage "iotfleethub" "2.12.2" "sha256-j9dcSxRWODy3TkJ8Hr4ujG2aAFUW1+MtWgdMFVqB+Y4=";
 
-  types-aiobotocore-iotfleetwise = buildTypesAiobotocorePackage "iotfleetwise" "2.12.1" "sha256-c9z+iY9RNWFO3U+88O+FQPGLMbFTtOUrXu7E5Iq5n8g=";
+  types-aiobotocore-iotfleetwise = buildTypesAiobotocorePackage "iotfleetwise" "2.12.2" "sha256-pLPrleqesg452YXkEI2m1dUnxRB+f6yIIbMXygYUoig=";
 
-  types-aiobotocore-iotsecuretunneling = buildTypesAiobotocorePackage "iotsecuretunneling" "2.12.1" "sha256-2PstSZB2bk+Sz9q9DsNX0GoVGFwiYx/YOjlH1wZchXk=";
+  types-aiobotocore-iotsecuretunneling = buildTypesAiobotocorePackage "iotsecuretunneling" "2.12.2" "sha256-YgO57irLn0Phrp87Oy3LwUSChpcnoRrvVa0dDHnXdws=";
 
-  types-aiobotocore-iotsitewise = buildTypesAiobotocorePackage "iotsitewise" "2.12.1" "sha256-lgn9uGyoyF5CAgOOpHRGdjMjb78u9EQ0Nf9QTzyyW5U=";
+  types-aiobotocore-iotsitewise = buildTypesAiobotocorePackage "iotsitewise" "2.12.2" "sha256-oKg/Ij1VkKJicAAMPhlK4ZgvrWIObKzEv4J5ghVYKGE=";
 
-  types-aiobotocore-iotthingsgraph = buildTypesAiobotocorePackage "iotthingsgraph" "2.12.1" "sha256-Fy+88mBmjUgnRUqM2VLvvI5SWuY04o1aq4WHNk69B7w=";
+  types-aiobotocore-iotthingsgraph = buildTypesAiobotocorePackage "iotthingsgraph" "2.12.2" "sha256-j+Yly3Drp2OZp+VfbgO9xlya4+bkPW7RTojtSMl22xs=";
 
-  types-aiobotocore-iottwinmaker = buildTypesAiobotocorePackage "iottwinmaker" "2.12.1" "sha256-yhSsgqu/fPILYTEOuL+1g5bKC3V7nyegYg8WPO8/vQI=";
+  types-aiobotocore-iottwinmaker = buildTypesAiobotocorePackage "iottwinmaker" "2.12.2" "sha256-yuAwmATSv9rJiZoDawNsRjzi2cIvWTdYMtlCE29AXac=";
 
-  types-aiobotocore-iotwireless = buildTypesAiobotocorePackage "iotwireless" "2.12.1" "sha256-y4nUuqr++tjN7/JT0cYM5aY01iOGNXU57fjZUTJuP5E=";
+  types-aiobotocore-iotwireless = buildTypesAiobotocorePackage "iotwireless" "2.12.2" "sha256-coGGYQQ9IEfZird3b7CUN3I4i0yTx/BUxUEAOfzy6hY=";
 
-  types-aiobotocore-ivs = buildTypesAiobotocorePackage "ivs" "2.12.1" "sha256-vXYET71jHEMKdA6mFFVjjv1uK4tREDu5vXfXh5dOwZA=";
+  types-aiobotocore-ivs = buildTypesAiobotocorePackage "ivs" "2.12.2" "sha256-2qeniJPHq7UuN1XZjjboRPk+6LWKvnJejkAqDwsfpMU=";
 
-  types-aiobotocore-ivs-realtime = buildTypesAiobotocorePackage "ivs-realtime" "2.12.1" "sha256-mr+I1UbBSvw6y33vuSwaqCyT33zA1LhJmsvnkYL6970=";
+  types-aiobotocore-ivs-realtime = buildTypesAiobotocorePackage "ivs-realtime" "2.12.2" "sha256-mml/atoPlJc01/SNtsdJflIVdD7quHUeDDvuBFIdzJk=";
 
-  types-aiobotocore-ivschat = buildTypesAiobotocorePackage "ivschat" "2.12.1" "sha256-OXY0CRbaYPyOw68acgRJ0bHiy96dc70f30PbC8X7gSY=";
+  types-aiobotocore-ivschat = buildTypesAiobotocorePackage "ivschat" "2.12.2" "sha256-+thrqQWsysaEtI2QRHE9h5b829AAstr3bO6FzhM/r5o=";
 
-  types-aiobotocore-kafka = buildTypesAiobotocorePackage "kafka" "2.12.1" "sha256-knkfB2mafoeDKpNdnAZoOgcym/Qd3JraROwqneN9GPg=";
+  types-aiobotocore-kafka = buildTypesAiobotocorePackage "kafka" "2.12.2" "sha256-3aP7XxRoIkAYpXT+VCWv/l9fahZqD6cwt3sp68PaZss=";
 
-  types-aiobotocore-kafkaconnect = buildTypesAiobotocorePackage "kafkaconnect" "2.12.1" "sha256-40wG7JtuSibwSMl0XCeOxvJlYKBNc6SmyrxHYRLYtxc=";
+  types-aiobotocore-kafkaconnect = buildTypesAiobotocorePackage "kafkaconnect" "2.12.2" "sha256-FIdudAIjDPnUrfNWTr9p4JHk6X5OSDEIezge10kooGk=";
 
-  types-aiobotocore-kendra = buildTypesAiobotocorePackage "kendra" "2.12.1" "sha256-MqwoPPEnEv7uLRE+U5vFge2vr3/g5iYnyztbKJ9/ATc=";
+  types-aiobotocore-kendra = buildTypesAiobotocorePackage "kendra" "2.12.2" "sha256-37DjQeqoBv5/ee7Py7atxMEpFcO+MHVVlvq1SZvG+0Y=";
 
-  types-aiobotocore-kendra-ranking = buildTypesAiobotocorePackage "kendra-ranking" "2.12.1" "sha256-P25wxbzWNmFdcCR6eX+M27jMqQzCdM4L1AerLzltIUg=";
+  types-aiobotocore-kendra-ranking = buildTypesAiobotocorePackage "kendra-ranking" "2.12.2" "sha256-BbmM46/3RVK3Xu7Ld6HyOpK9kMS979AVLINCITUVEqQ=";
 
-  types-aiobotocore-keyspaces = buildTypesAiobotocorePackage "keyspaces" "2.12.1" "sha256-eMucpOTz1CpzfAuJIyAkR1Kr0qF1F5B03qpcNHR6c/Y=";
+  types-aiobotocore-keyspaces = buildTypesAiobotocorePackage "keyspaces" "2.12.2" "sha256-xQ4ApKTPpVi5ZHG/jJJh+TH7ySN9SQPVyx0Hb8QZD3U=";
 
-  types-aiobotocore-kinesis = buildTypesAiobotocorePackage "kinesis" "2.12.1" "sha256-J7U0j1XJB2ikTT1IfLcxltTczzqWDkmTP/8I/QIdvlE=";
+  types-aiobotocore-kinesis = buildTypesAiobotocorePackage "kinesis" "2.12.2" "sha256-2ECUqeEf9H4gTBVH3Q8KkDkyBjRyHvQB/tv2ETI5A64=";
 
-  types-aiobotocore-kinesis-video-archived-media = buildTypesAiobotocorePackage "kinesis-video-archived-media" "2.12.1" "sha256-y7ALdUdp9fTc2b2hVtufJATcm8c8YjbR/fEnX5ynbX4=";
+  types-aiobotocore-kinesis-video-archived-media = buildTypesAiobotocorePackage "kinesis-video-archived-media" "2.12.2" "sha256-pUcXz9U0/y5XmNh4aaeyD9h3NmUAXO4HOOF9OKXn2v8=";
 
-  types-aiobotocore-kinesis-video-media = buildTypesAiobotocorePackage "kinesis-video-media" "2.12.1" "sha256-jKMh2sbz1kIuKmx6qZYj+ZhMTaAORLux+X6oVrno8Fk=";
+  types-aiobotocore-kinesis-video-media = buildTypesAiobotocorePackage "kinesis-video-media" "2.12.2" "sha256-F6tEzbBT76/Ha2LWE7UGo2CGyGQujlkVo26p7IeghHI=";
 
-  types-aiobotocore-kinesis-video-signaling = buildTypesAiobotocorePackage "kinesis-video-signaling" "2.12.1" "sha256-DrZHSwqfQZ+mn5wmuWR3MbjolGkOg7mmnKr5uI/NGWo=";
+  types-aiobotocore-kinesis-video-signaling = buildTypesAiobotocorePackage "kinesis-video-signaling" "2.12.2" "sha256-iGBCoN/MO7T5rEByU7XIwsDaU4D0RlhdzFPuuGNNkgg=";
 
-  types-aiobotocore-kinesis-video-webrtc-storage = buildTypesAiobotocorePackage "kinesis-video-webrtc-storage" "2.12.1" "sha256-38R/9LUDMvNhAXmEA2sMR4KE+jB6O0hHJLaowPEnlMQ=";
+  types-aiobotocore-kinesis-video-webrtc-storage = buildTypesAiobotocorePackage "kinesis-video-webrtc-storage" "2.12.2" "sha256-8ROMjFVkx8g6rBHLgJOZEFs4kYAPm6Y9AqhArMnyisA=";
 
-  types-aiobotocore-kinesisanalytics = buildTypesAiobotocorePackage "kinesisanalytics" "2.12.1" "sha256-LnyZhLCGcN0Qbam0x+ALYGZlYky/ldLUg03bxRlyhf8=";
+  types-aiobotocore-kinesisanalytics = buildTypesAiobotocorePackage "kinesisanalytics" "2.12.2" "sha256-fd/GkiYXB3jnZFaKfBmK/ErRRKG1jkp+yZzyMJUDh2I=";
 
-  types-aiobotocore-kinesisanalyticsv2 = buildTypesAiobotocorePackage "kinesisanalyticsv2" "2.12.1" "sha256-giSsTelOj3/bF5uPHx6WJhdKtqL6QljcU3l+Tp7aR4k=";
+  types-aiobotocore-kinesisanalyticsv2 = buildTypesAiobotocorePackage "kinesisanalyticsv2" "2.12.2" "sha256-dxdItvqPNHryoFGzhammRZeiCL0u86DuHbSgDspUa0g=";
 
-  types-aiobotocore-kinesisvideo = buildTypesAiobotocorePackage "kinesisvideo" "2.12.1" "sha256-lmaTXcxKgevwoWJeUxTHmynCcZaIHXmnJjjvFAARLJw=";
+  types-aiobotocore-kinesisvideo = buildTypesAiobotocorePackage "kinesisvideo" "2.12.2" "sha256-H77H0tQF8D1bBDcBOvmPjjqV8xnhTXfCErW5b1dAedk=";
 
-  types-aiobotocore-kms = buildTypesAiobotocorePackage "kms" "2.12.1" "sha256-vonZnhR5Rh2ZVlXlBTuSfE6ipVliGKMIdhBAV6pl1NU=";
+  types-aiobotocore-kms = buildTypesAiobotocorePackage "kms" "2.12.2" "sha256-JR9YWdUr/WSctGZDpn8B5/uSRR8H6w5TZHLhH0XyNmM=";
 
-  types-aiobotocore-lakeformation = buildTypesAiobotocorePackage "lakeformation" "2.12.1" "sha256-IFFB7sUhrW46nrmQR/bSRTjVye+3C3eGQCrpe3jNVxs=";
+  types-aiobotocore-lakeformation = buildTypesAiobotocorePackage "lakeformation" "2.12.2" "sha256-fTD+ih2A2gSvIFodfLl6XtVHEARmuljXkw+wBIybNs0=";
 
-  types-aiobotocore-lambda = buildTypesAiobotocorePackage "lambda" "2.12.1" "sha256-A1oS/awripZCCFwwP3bpPt8xAn8MKHBd4Y7nDG9Beo0=";
+  types-aiobotocore-lambda = buildTypesAiobotocorePackage "lambda" "2.12.2" "sha256-K5GWmLHKP7F/wbXyP6lxInabLdeboYjp8VUws5lqqQI=";
 
-  types-aiobotocore-lex-models = buildTypesAiobotocorePackage "lex-models" "2.12.1" "sha256-W8xa7bl2wYS3SY6rZk7T65UvwntxCY9OHKKtVaDUMq8=";
+  types-aiobotocore-lex-models = buildTypesAiobotocorePackage "lex-models" "2.12.2" "sha256-yoCuE7N9r+dQTnI4Tpahk+XkgJF0En9KYv90fzZlgx8=";
 
-  types-aiobotocore-lex-runtime = buildTypesAiobotocorePackage "lex-runtime" "2.12.1" "sha256-IODLqqjC6UXTkT980S+drXqhnkNWH2ejzVWeo1LE45U=";
+  types-aiobotocore-lex-runtime = buildTypesAiobotocorePackage "lex-runtime" "2.12.2" "sha256-++3WGlOYNSNvshExKyfOf406n8vWpmWOitsMYOH+ymk=";
 
-  types-aiobotocore-lexv2-models = buildTypesAiobotocorePackage "lexv2-models" "2.12.1" "sha256-Jf2MQbBanDZetFUVH/5CVMYDzzBN7Th8K6RVUWkYaQc=";
+  types-aiobotocore-lexv2-models = buildTypesAiobotocorePackage "lexv2-models" "2.12.2" "sha256-hM3ssVD+OBs4a9lUqKSYvEDNPV4712q2LsliGZGimsM=";
 
-  types-aiobotocore-lexv2-runtime = buildTypesAiobotocorePackage "lexv2-runtime" "2.12.1" "sha256-jAsyQqIj3YXfEa6q/cZIPIjal+3YJqts6N13I5O+kHw=";
+  types-aiobotocore-lexv2-runtime = buildTypesAiobotocorePackage "lexv2-runtime" "2.12.2" "sha256-S9iJOMKtbc3XBmiFc1pxDgDpmRKd8HYvma2utVFytUg=";
 
-  types-aiobotocore-license-manager = buildTypesAiobotocorePackage "license-manager" "2.12.1" "sha256-AWe9VEJxap7+tL0flZqs2/SQemIzGKXJXWxx1ScLtC8=";
+  types-aiobotocore-license-manager = buildTypesAiobotocorePackage "license-manager" "2.12.2" "sha256-+Tc2zrfnK2SYYCIVhpHV5BlRa6CMpmNyHKmtf+HWv60=";
 
-  types-aiobotocore-license-manager-linux-subscriptions = buildTypesAiobotocorePackage "license-manager-linux-subscriptions" "2.12.1" "sha256-0HhhZH3OBYQBK1q9RyqJqCBmINMzgZfj20iFVmPYMac=";
+  types-aiobotocore-license-manager-linux-subscriptions = buildTypesAiobotocorePackage "license-manager-linux-subscriptions" "2.12.2" "sha256-5I7HN5+6y/RkOBq/P7hsg85ubH40V6x+fw/yLOvm1Vc=";
 
-  types-aiobotocore-license-manager-user-subscriptions = buildTypesAiobotocorePackage "license-manager-user-subscriptions" "2.12.1" "sha256-K7KXzCtdGS6ok79zNDxx9PxXPNbNPsp6fuucT/Us2/M=";
+  types-aiobotocore-license-manager-user-subscriptions = buildTypesAiobotocorePackage "license-manager-user-subscriptions" "2.12.2" "sha256-0BEGqnjne1Mf/Ad6wOI0TfuS7UeQD8zZSAKjGWX4ZD8=";
 
-  types-aiobotocore-lightsail = buildTypesAiobotocorePackage "lightsail" "2.12.1" "sha256-lRlifiUJCGbVkf0wVdrXQiwoOvQPqrXrvzl/4BqXpsM=";
+  types-aiobotocore-lightsail = buildTypesAiobotocorePackage "lightsail" "2.12.2" "sha256-qOI5ZpNcUZyYDLOeQbEIieIrJC2R2AjhwOm5p6MALq0=";
 
-  types-aiobotocore-location = buildTypesAiobotocorePackage "location" "2.12.1" "sha256-j+UcTL5YYpI5eCmWq1durTCIwuc0U94udfgNUCAgR9A=";
+  types-aiobotocore-location = buildTypesAiobotocorePackage "location" "2.12.2" "sha256-rbkuoTPBuR64rzxKY6vPSOsVEP6ySPEBESX/0FvObqA=";
 
-  types-aiobotocore-logs = buildTypesAiobotocorePackage "logs" "2.12.1" "sha256-CqByIbfkIeROXAFWvjS9pwPImo2dD10q1/7kTR5GA9w=";
+  types-aiobotocore-logs = buildTypesAiobotocorePackage "logs" "2.12.2" "sha256-dwW58A1MI8wY8f2dk10aZENeOraN9pK2fdFfwA/Kijs=";
 
-  types-aiobotocore-lookoutequipment = buildTypesAiobotocorePackage "lookoutequipment" "2.12.1" "sha256-++dMJ+uFbNkbRVKbMP3URxlKRj9pm6Je6+iQTAs3vqU=";
+  types-aiobotocore-lookoutequipment = buildTypesAiobotocorePackage "lookoutequipment" "2.12.2" "sha256-e+wxPC7W6fHY+Mpyu/XEvhfrANtZCEODzndm8XmkNrg=";
 
-  types-aiobotocore-lookoutmetrics = buildTypesAiobotocorePackage "lookoutmetrics" "2.12.1" "sha256-rInxd7NLuze5qs4fV47PmnptYPKyj/IwrHhrND/ufgw=";
+  types-aiobotocore-lookoutmetrics = buildTypesAiobotocorePackage "lookoutmetrics" "2.12.2" "sha256-CyYKju2+7R1yOQegIP9pBhbYzbRCO4/NDT4rVfdSryE=";
 
-  types-aiobotocore-lookoutvision = buildTypesAiobotocorePackage "lookoutvision" "2.12.1" "sha256-HOVBuDQoYpTCfie8GyyyrTY09OwXW8JvzO6eJJxQncI=";
+  types-aiobotocore-lookoutvision = buildTypesAiobotocorePackage "lookoutvision" "2.12.2" "sha256-qy3k2l2vo8hcJkKZZAgIcv8Hia7KqnJPrfkRLtz0osw=";
 
-  types-aiobotocore-m2 = buildTypesAiobotocorePackage "m2" "2.12.1" "sha256-e8jfy4ilPA0NLZMeP6zkrPhkGqLXKBX2bDSfu+bLpPY=";
+  types-aiobotocore-m2 = buildTypesAiobotocorePackage "m2" "2.12.2" "sha256-J/Wet0L6i9dEmYbe4hZZB+Ri0xOFzvwjDdwklOCMI64=";
 
-  types-aiobotocore-machinelearning = buildTypesAiobotocorePackage "machinelearning" "2.12.1" "sha256-A++bU7yYnFfL7FmAHqh6906dJb3YusAWBr9lHk7l608=";
+  types-aiobotocore-machinelearning = buildTypesAiobotocorePackage "machinelearning" "2.12.2" "sha256-qhH4cJyZG6u0Bv+c6IbNhRJRXKSvuazgTuX1bYD2nLQ=";
 
   types-aiobotocore-macie = buildTypesAiobotocorePackage "macie" "2.7.0" "sha256-hJJtGsK2b56nKX1ZhiarC+ffyjHYWRiC8II4oyDZWWw=";
 
-  types-aiobotocore-macie2 = buildTypesAiobotocorePackage "macie2" "2.12.1" "sha256-Cm8DEoGP6TwqvJcU4+JiYwkYKQP3GGKyAVY95lSUHmY=";
+  types-aiobotocore-macie2 = buildTypesAiobotocorePackage "macie2" "2.12.2" "sha256-nSBhjRTIz5Y4oVk3QFdT5fjQns5joLSOTOYpN3NLkx0=";
 
-  types-aiobotocore-managedblockchain = buildTypesAiobotocorePackage "managedblockchain" "2.12.1" "sha256-PWM8WIxLZTjGch2Mhu9n0v0x63fGK0J6XcL8U0MXEMs=";
+  types-aiobotocore-managedblockchain = buildTypesAiobotocorePackage "managedblockchain" "2.12.2" "sha256-1EvGSxhSYFcBQaNBL1S/0CxPYZzR32dHwqZmWPL4XzI=";
 
-  types-aiobotocore-managedblockchain-query = buildTypesAiobotocorePackage "managedblockchain-query" "2.12.1" "sha256-7sCnI6B/QM7AcB2iEDCSNKRgIcFCUyJct2Jg/KoQk64=";
+  types-aiobotocore-managedblockchain-query = buildTypesAiobotocorePackage "managedblockchain-query" "2.12.2" "sha256-9huoAvQVb7xCdB2LYwRZJUeaHsNlPKoLW7YpMd/yRIk=";
 
-  types-aiobotocore-marketplace-catalog = buildTypesAiobotocorePackage "marketplace-catalog" "2.12.1" "sha256-ho34PTQaL4POvic2Nzy+fuCYanrXGOXN9Jf+qd+dMX4=";
+  types-aiobotocore-marketplace-catalog = buildTypesAiobotocorePackage "marketplace-catalog" "2.12.2" "sha256-BfXESvCJxAH2FTlRQnLW9jd5bNcp3++/wRP+3seU3KM=";
 
-  types-aiobotocore-marketplace-entitlement = buildTypesAiobotocorePackage "marketplace-entitlement" "2.12.1" "sha256-pdRHgmA3ul+2ww+hOO2TTs7brvMAXZXM7QQTqTWfDz4=";
+  types-aiobotocore-marketplace-entitlement = buildTypesAiobotocorePackage "marketplace-entitlement" "2.12.2" "sha256-57CTCjocq/Lqfa7jpxtUuf4SwKl5sOPR2vfXXTSA0A8=";
 
-  types-aiobotocore-marketplacecommerceanalytics = buildTypesAiobotocorePackage "marketplacecommerceanalytics" "2.12.1" "sha256-rXnL667PBKx5IxK3YJzJiWN8wFlDvz09RjaIMrVIyZo=";
+  types-aiobotocore-marketplacecommerceanalytics = buildTypesAiobotocorePackage "marketplacecommerceanalytics" "2.12.2" "sha256-xOi59tLCjwveFz3/vHiF8nr0+Vihcz24j9Ht29I9UNA=";
 
-  types-aiobotocore-mediaconnect = buildTypesAiobotocorePackage "mediaconnect" "2.12.1" "sha256-bm/2aSToVTIaxBs0i/v4As2mX4vK81RqZIjzgrQYP+g=";
+  types-aiobotocore-mediaconnect = buildTypesAiobotocorePackage "mediaconnect" "2.12.2" "sha256-CBBOJFlYbG1ox9IveURJo3HVahX9qxXddQUBUD6R1fI=";
 
-  types-aiobotocore-mediaconvert = buildTypesAiobotocorePackage "mediaconvert" "2.12.1" "sha256-52088rNi5Vuf0CuDU2LdXV4ZSoWaHqBeTD42DOEmDTs=";
+  types-aiobotocore-mediaconvert = buildTypesAiobotocorePackage "mediaconvert" "2.12.2" "sha256-UVnDCv5MB2F0CiOo8nQ+hPbAeD31wMl/uc9qgYw+new=";
 
-  types-aiobotocore-medialive = buildTypesAiobotocorePackage "medialive" "2.12.1" "sha256-/B3qy79nPiz8Xo5KxJKDnUKo6PclE/pXrkjSJmlcz9I=";
+  types-aiobotocore-medialive = buildTypesAiobotocorePackage "medialive" "2.12.2" "sha256-kxgheN0PKRA8gv0yiTf5Muazu9TKrd8UzZL5+2ay2NA=";
 
-  types-aiobotocore-mediapackage = buildTypesAiobotocorePackage "mediapackage" "2.12.1" "sha256-a3qTy0sS8J8iEBvcPCXAC2lSLuuhEbslLork1HaHrF8=";
+  types-aiobotocore-mediapackage = buildTypesAiobotocorePackage "mediapackage" "2.12.2" "sha256-PjPr4HeUb/VplY/hmF8gOa3RWzNGLX508to8dYKAIio=";
 
-  types-aiobotocore-mediapackage-vod = buildTypesAiobotocorePackage "mediapackage-vod" "2.12.1" "sha256-4jyIrHer52rwi0ry9uBhMPm2YbzEWqhiHaSPqHfFr98=";
+  types-aiobotocore-mediapackage-vod = buildTypesAiobotocorePackage "mediapackage-vod" "2.12.2" "sha256-2kP8Gx1QCnaewG0UHwk+5NTzAN6tP2NYiwGY1m5V2Og=";
 
-  types-aiobotocore-mediapackagev2 = buildTypesAiobotocorePackage "mediapackagev2" "2.12.1" "sha256-KOFEpAVUnaN607soHl7SCq79KU/qS/ab/GGH9QEQJ4Y=";
+  types-aiobotocore-mediapackagev2 = buildTypesAiobotocorePackage "mediapackagev2" "2.12.2" "sha256-BW3c4xoh1Mv0uo+NCSg6Xl1bUhFmXFSc402/WO/8hv0=";
 
-  types-aiobotocore-mediastore = buildTypesAiobotocorePackage "mediastore" "2.12.1" "sha256-A4V8LMaloeRlOBNIEI43I4Rkyl2NllwB87XJVy9KDGo=";
+  types-aiobotocore-mediastore = buildTypesAiobotocorePackage "mediastore" "2.12.2" "sha256-BAt31NLW9YbSCBEGBwOJzgOUGtHoiobe4b3wWv6dSRM=";
 
-  types-aiobotocore-mediastore-data = buildTypesAiobotocorePackage "mediastore-data" "2.12.1" "sha256-tXvQxnQSShN4gVQunAhmKEQztuJfJpxxvhXTh3kXyKA=";
+  types-aiobotocore-mediastore-data = buildTypesAiobotocorePackage "mediastore-data" "2.12.2" "sha256-mgSCGs0bIO6DcEh2ltDFyqpm0+8SPhy2DvKr/vep6mo=";
 
-  types-aiobotocore-mediatailor = buildTypesAiobotocorePackage "mediatailor" "2.12.1" "sha256-7FvUjBLyNRBZOApbvurtXt0exH9htacmJq9exlGBDMg=";
+  types-aiobotocore-mediatailor = buildTypesAiobotocorePackage "mediatailor" "2.12.2" "sha256-9yNQOmGY4cnGo+0tv9cC9WX/I9Hrp8FFrRFSXCt3Eag=";
 
-  types-aiobotocore-medical-imaging = buildTypesAiobotocorePackage "medical-imaging" "2.12.1" "sha256-NVA0xf98DhJXfzNdLu42lV+ilO8gz2ZRt/Kxk68GP9I=";
+  types-aiobotocore-medical-imaging = buildTypesAiobotocorePackage "medical-imaging" "2.12.2" "sha256-94w2Q6SBAUSl4K4xF44EsmTL58V8CioP5B/iCVGhPwI=";
 
-  types-aiobotocore-memorydb = buildTypesAiobotocorePackage "memorydb" "2.12.1" "sha256-hn/83GWPAn6UL8Ez+L/mdiGPy0ycFvNDcLcEvAd/+a8=";
+  types-aiobotocore-memorydb = buildTypesAiobotocorePackage "memorydb" "2.12.2" "sha256-goKbZrz221ckjnKb2csaRJoVkYbUEXPxPi6Rx29Jg5Y=";
 
-  types-aiobotocore-meteringmarketplace = buildTypesAiobotocorePackage "meteringmarketplace" "2.12.1" "sha256-SNGrScKSyEp35Aq+vs+uXk67ab0M1tjwkOuO/mmgrtY=";
+  types-aiobotocore-meteringmarketplace = buildTypesAiobotocorePackage "meteringmarketplace" "2.12.2" "sha256-Qs0ISYY5cIxJW1c5XQVgSk7IIB8QFZlFMrKXSek0d7A=";
 
-  types-aiobotocore-mgh = buildTypesAiobotocorePackage "mgh" "2.12.1" "sha256-lbmcxyFquZmbFEmQbmIY6lqdJmukR1dLkH9CgS52MQM=";
+  types-aiobotocore-mgh = buildTypesAiobotocorePackage "mgh" "2.12.2" "sha256-iiy8qAvbvcB1DBZ2f/ebg7SPXfFWHYu96aQh/rwLqsg=";
 
-  types-aiobotocore-mgn = buildTypesAiobotocorePackage "mgn" "2.12.1" "sha256-NNjPCZxxV3Nx0+2OTV93SLN3AM6wF2Uqq8BNaWm2dVk=";
+  types-aiobotocore-mgn = buildTypesAiobotocorePackage "mgn" "2.12.2" "sha256-y6keS7tgcHC1oZi3gcNqecz20xmOIpZ0jvIOR84hRsE=";
 
-  types-aiobotocore-migration-hub-refactor-spaces = buildTypesAiobotocorePackage "migration-hub-refactor-spaces" "2.12.1" "sha256-eHH4V6svWNwjD9StyvyxTZ4DTwVsBX0VU65mTcKMZ7k=";
+  types-aiobotocore-migration-hub-refactor-spaces = buildTypesAiobotocorePackage "migration-hub-refactor-spaces" "2.12.2" "sha256-RGGGLmSXLT+xfzMX9AtF8TaL4Q3DrAivDTer/rHUmho=";
 
-  types-aiobotocore-migrationhub-config = buildTypesAiobotocorePackage "migrationhub-config" "2.12.1" "sha256-rMCfG8GrTGzFBPE6oS+2DSZ7rD2XW1weGImOO85nDP4=";
+  types-aiobotocore-migrationhub-config = buildTypesAiobotocorePackage "migrationhub-config" "2.12.2" "sha256-FggcsS518/ruQpaqZg8hcc3pHABTMGpOcUA5WzsJGZo=";
 
-  types-aiobotocore-migrationhuborchestrator = buildTypesAiobotocorePackage "migrationhuborchestrator" "2.12.1" "sha256-uGWiICcRZzVCCKPmWwqV0JoytgeVFcJexgLcUE64PCM=";
+  types-aiobotocore-migrationhuborchestrator = buildTypesAiobotocorePackage "migrationhuborchestrator" "2.12.2" "sha256-a1Z+p31ejt3THonN3++G9QyK8zLTLuRiDmeUMtOUKOI=";
 
-  types-aiobotocore-migrationhubstrategy = buildTypesAiobotocorePackage "migrationhubstrategy" "2.12.1" "sha256-wcN2fJO1BrHJiItDkqIxvvWwnzFIw9YQCQYKfbfi4Xc=";
+  types-aiobotocore-migrationhubstrategy = buildTypesAiobotocorePackage "migrationhubstrategy" "2.12.2" "sha256-DlN06USadfepXgXOXwHOTumC3uf1k1m88hkVGUjbmT8=";
 
-  types-aiobotocore-mobile = buildTypesAiobotocorePackage "mobile" "2.12.1" "sha256-p5uySMWHaMLvdFP4qlWySsUByqw/8YrYAkJSWdLC4B4=";
+  types-aiobotocore-mobile = buildTypesAiobotocorePackage "mobile" "2.12.2" "sha256-7ZRRkspQmH7nUA2mEIvB7+i9J5NfJ99CBvdZK/oOjnI=";
 
-  types-aiobotocore-mq = buildTypesAiobotocorePackage "mq" "2.12.1" "sha256-RI5nNpGCl4jXeAla990a6R5+YH+IyR9dpkxbSrI30dM=";
+  types-aiobotocore-mq = buildTypesAiobotocorePackage "mq" "2.12.2" "sha256-RzO3j+nLqUUdmu7TeL30JnfmWYZhBL19m9QoiMYIUsQ=";
 
-  types-aiobotocore-mturk = buildTypesAiobotocorePackage "mturk" "2.12.1" "sha256-VHQSTVDau/EDXslby+ZFsBqDd5iPM7jlZ4SNsr1fh2Y=";
+  types-aiobotocore-mturk = buildTypesAiobotocorePackage "mturk" "2.12.2" "sha256-YmoUT3LtPMbhltnX1ogHg1EU5FlYzRIrDh+Hsa9hcpo=";
 
-  types-aiobotocore-mwaa = buildTypesAiobotocorePackage "mwaa" "2.12.1" "sha256-CX58a5H9pYhMlXqf9hx2HRmqYUInLBmfEhX6/VqYG64=";
+  types-aiobotocore-mwaa = buildTypesAiobotocorePackage "mwaa" "2.12.2" "sha256-pGDsqWgWVodxKE1cFO16+7nxmrZth2ytht8Y1Kl41zM=";
 
-  types-aiobotocore-neptune = buildTypesAiobotocorePackage "neptune" "2.12.1" "sha256-RdCi4jseTuX11ZqNdvnH6Lral68aVKE9xehhhinCE6M=";
+  types-aiobotocore-neptune = buildTypesAiobotocorePackage "neptune" "2.12.2" "sha256-Ng8w4ofKoRDVzBqAz39bWUaKf8irRCBiNcG+ZS9ydSc=";
 
-  types-aiobotocore-network-firewall = buildTypesAiobotocorePackage "network-firewall" "2.12.1" "sha256-1xujtFAG0Jh65Ds6MrgY0Tw4KyYMRFbll30t0S+Pc2g=";
+  types-aiobotocore-network-firewall = buildTypesAiobotocorePackage "network-firewall" "2.12.2" "sha256-olp26SNu18zkvokRVQqGD/+gLbgdE0KuHjG43GU9sc8=";
 
-  types-aiobotocore-networkmanager = buildTypesAiobotocorePackage "networkmanager" "2.12.1" "sha256-1nBKGtnU7PaZXhsrwBZbJfwGdbi5FPFwszIXxmw/HGg=";
+  types-aiobotocore-networkmanager = buildTypesAiobotocorePackage "networkmanager" "2.12.2" "sha256-QEseMxRJhjpzBl4JA1DmD50jMOGoFwCxsO+b13oG5YE=";
 
-  types-aiobotocore-nimble = buildTypesAiobotocorePackage "nimble" "2.12.1" "sha256-zLrnjFSKA53wgxsStGQfLqogX5u2l58kdzOFTTgelQA=";
+  types-aiobotocore-nimble = buildTypesAiobotocorePackage "nimble" "2.12.2" "sha256-Ipd5zzhasx6RAg1Z6V+iGkfVujPRBNvqWVpfgMid09U=";
 
-  types-aiobotocore-oam = buildTypesAiobotocorePackage "oam" "2.12.1" "sha256-Ujm2i+dRU3STj+A58KZS/Ypkod36JpWlXvAKO/NLErs=";
+  types-aiobotocore-oam = buildTypesAiobotocorePackage "oam" "2.12.2" "sha256-VDqLVHzV6y3SXi4AXmXeNid1oJozldN13jzThgH8pDo=";
 
-  types-aiobotocore-omics = buildTypesAiobotocorePackage "omics" "2.12.1" "sha256-uMef3Qrh+H631nsOsy7OEB4zeETR707ld6Jz6NjWwL8=";
+  types-aiobotocore-omics = buildTypesAiobotocorePackage "omics" "2.12.2" "sha256-bLW7ZSgjt+wPU7pY01Kkbvw5ad6KPntini/dWojv/zw=";
 
-  types-aiobotocore-opensearch = buildTypesAiobotocorePackage "opensearch" "2.12.1" "sha256-kSnMbexNutPYHJfj4qgbFR3mhOU3rWputXUhBu7rFeo=";
+  types-aiobotocore-opensearch = buildTypesAiobotocorePackage "opensearch" "2.12.2" "sha256-NKKYyM7AFn9zJue4z6LisAv+1h159BTAmoUyMy/XiWg=";
 
-  types-aiobotocore-opensearchserverless = buildTypesAiobotocorePackage "opensearchserverless" "2.12.1" "sha256-N5vfHByujicDNnRiXIWkudjivmPoNeEpsnZYeX18Uok=";
+  types-aiobotocore-opensearchserverless = buildTypesAiobotocorePackage "opensearchserverless" "2.12.2" "sha256-ngxBovkRBXpJfX5D1Heuyf1jpfAxSK0S56gtZFQI0Ec=";
 
-  types-aiobotocore-opsworks = buildTypesAiobotocorePackage "opsworks" "2.12.1" "sha256-7R8AtGb0Gt6XfWBUYSjudRUGRGF2tp9Ey3Bqh6LJ7wM=";
+  types-aiobotocore-opsworks = buildTypesAiobotocorePackage "opsworks" "2.12.2" "sha256-EPR1oeh2FbDwhloUoUJzB3ukU/5FPBC1pxfTxItFafg=";
 
-  types-aiobotocore-opsworkscm = buildTypesAiobotocorePackage "opsworkscm" "2.12.1" "sha256-5N/yQdfPTdJTkF2Yo0szvLK7tHYBALqahIbTwG2YSFM=";
+  types-aiobotocore-opsworkscm = buildTypesAiobotocorePackage "opsworkscm" "2.12.2" "sha256-h7T4cjY3Ym/P7Rk0PlZvN6EVdLR1PgFLR923X9DOGdc=";
 
-  types-aiobotocore-organizations = buildTypesAiobotocorePackage "organizations" "2.12.1" "sha256-CEEKhdfh//GBT9pbOqu3pxCg0iy83LBy172FmVWbnK8=";
+  types-aiobotocore-organizations = buildTypesAiobotocorePackage "organizations" "2.12.2" "sha256-jJyJpQLEdrv3q82z3R/YKzx+02Q9j4JmtJfEWQkpmAw=";
 
-  types-aiobotocore-osis = buildTypesAiobotocorePackage "osis" "2.12.1" "sha256-IRo94LgBBk4sawgE9fpySggeG6EjmyLRf7cHLzIYcBo=";
+  types-aiobotocore-osis = buildTypesAiobotocorePackage "osis" "2.12.2" "sha256-M4lVp6DWFyrwzlpwxiqC5bMLcO/j4a85HxSnVq0/iiQ=";
 
-  types-aiobotocore-outposts = buildTypesAiobotocorePackage "outposts" "2.12.1" "sha256-PXACndLusmvG0cYQESek4mr/k376seaNia4x0KqufBk=";
+  types-aiobotocore-outposts = buildTypesAiobotocorePackage "outposts" "2.12.2" "sha256-0MV1PfsZECgq+u61/8yOUC1HPze623VfAJIm62JiFyM=";
 
-  types-aiobotocore-panorama = buildTypesAiobotocorePackage "panorama" "2.12.1" "sha256-58uOgEi1MyxZU4rRG8WO2IEUq7YWG2nIgQwcPQG770o=";
+  types-aiobotocore-panorama = buildTypesAiobotocorePackage "panorama" "2.12.2" "sha256-wN1Zgw88oK4vyNJJVUZ1cAeGcBhMiFAQ7Ct05kGMT38=";
 
-  types-aiobotocore-payment-cryptography = buildTypesAiobotocorePackage "payment-cryptography" "2.12.1" "sha256-dOUHOX72DzvICM0jPPZueDkvasPRp01JwubfeaUSqWk=";
+  types-aiobotocore-payment-cryptography = buildTypesAiobotocorePackage "payment-cryptography" "2.12.2" "sha256-3ZMmQhutDZ37xywyMrtGdhhNfmwS9Q63cf0tuzyjPAk=";
 
-  types-aiobotocore-payment-cryptography-data = buildTypesAiobotocorePackage "payment-cryptography-data" "2.12.1" "sha256-qK5LnCwuiMJB1s5T1ncVOF45q5VILHO5SHhpCD5G0kk=";
+  types-aiobotocore-payment-cryptography-data = buildTypesAiobotocorePackage "payment-cryptography-data" "2.12.2" "sha256-Ix8Hze5f5J9NbyU/FnoWC1XWKQo5NttwSohHA7QSHt8=";
 
-  types-aiobotocore-personalize = buildTypesAiobotocorePackage "personalize" "2.12.1" "sha256-p94/gqPE0V5HRmC+bSqx5yGg6hyVYJE1w9lGwruONX8=";
+  types-aiobotocore-personalize = buildTypesAiobotocorePackage "personalize" "2.12.2" "sha256-AwT3/QK4AUEPQRBIQ5stFfDXjfgCixVu7WWqwL81/7w=";
 
-  types-aiobotocore-personalize-events = buildTypesAiobotocorePackage "personalize-events" "2.12.1" "sha256-GsyLDjpZvGnf8dAWB+ibT0ZuRts2WU8P3fQ2i2Wwjn4=";
+  types-aiobotocore-personalize-events = buildTypesAiobotocorePackage "personalize-events" "2.12.2" "sha256-b5CyfUzzMisQC5E2XC0nCdj1SCMRZJKA4H5V4bkEET4=";
 
-  types-aiobotocore-personalize-runtime = buildTypesAiobotocorePackage "personalize-runtime" "2.12.1" "sha256-Oq7DFo4Xi7a7naEflLlPDaR2zpFv1/cKjMsQfAMshT8=";
+  types-aiobotocore-personalize-runtime = buildTypesAiobotocorePackage "personalize-runtime" "2.12.2" "sha256-tWcc0H0S7lZgHdj42iDroqu9W5S9ZGtQ+L3EnU6Z4rM=";
 
-  types-aiobotocore-pi = buildTypesAiobotocorePackage "pi" "2.12.1" "sha256-RyvXuiebtNWG49SBbKmwFYRKxd6Ba/UKNphCxZ3XhVQ=";
+  types-aiobotocore-pi = buildTypesAiobotocorePackage "pi" "2.12.2" "sha256-MehRBiTkYLTSynpwIQJB3+Q/DgwOUQMwfXlYDi3w5WI=";
 
-  types-aiobotocore-pinpoint = buildTypesAiobotocorePackage "pinpoint" "2.12.1" "sha256-UWnbgABQfwd2rUz952iFMh1QPdEchzgw/aeggi/+/9A=";
+  types-aiobotocore-pinpoint = buildTypesAiobotocorePackage "pinpoint" "2.12.2" "sha256-MzenXuejYdjqnKDhyp2NdVJMrUQ3j5EGhkB81e2PBQM=";
 
-  types-aiobotocore-pinpoint-email = buildTypesAiobotocorePackage "pinpoint-email" "2.12.1" "sha256-WinsN8jm/Ua0iYhMS5FAHlELJYbpfH8TRzRJEcQGevc=";
+  types-aiobotocore-pinpoint-email = buildTypesAiobotocorePackage "pinpoint-email" "2.12.2" "sha256-PEWYZIcR8N+eYRC1YorF2+OGRA2YLCRwD53Q13AHx8Y=";
 
-  types-aiobotocore-pinpoint-sms-voice = buildTypesAiobotocorePackage "pinpoint-sms-voice" "2.12.1" "sha256-OcP5l7Xc8AIY9c9/Cx3a6JzNFu3kC0+pH5/TzNjgbqQ=";
+  types-aiobotocore-pinpoint-sms-voice = buildTypesAiobotocorePackage "pinpoint-sms-voice" "2.12.2" "sha256-F+Lqf2IOPco9411tcLeECO/NDOIg8CjJGKnhxGOPlY8=";
 
-  types-aiobotocore-pinpoint-sms-voice-v2 = buildTypesAiobotocorePackage "pinpoint-sms-voice-v2" "2.12.1" "sha256-9uVmiRlhT66EYFgoImQa7uLhX8HvvO4mo6wW1dwUkmk=";
+  types-aiobotocore-pinpoint-sms-voice-v2 = buildTypesAiobotocorePackage "pinpoint-sms-voice-v2" "2.12.2" "sha256-UIxVqV5IFVFWUdjgac4vNzkYbq/jGyu7r8VlQUG4DhM=";
 
-  types-aiobotocore-pipes = buildTypesAiobotocorePackage "pipes" "2.12.1" "sha256-T5ggvFxgi2rWsOw+vArGx9zVLmGZxB4fsZ+GIz6X13U=";
+  types-aiobotocore-pipes = buildTypesAiobotocorePackage "pipes" "2.12.2" "sha256-SytI03HrvJQNxh4+08BOQSAuc9L/lJTlfArTXQlKJxE=";
 
-  types-aiobotocore-polly = buildTypesAiobotocorePackage "polly" "2.12.1" "sha256-6thPshwvWCl4666WKAUyFL8JcNbvZ6mRHpvRSeZrvxE=";
+  types-aiobotocore-polly = buildTypesAiobotocorePackage "polly" "2.12.2" "sha256-OW4mbtGlnSZ/XI5XV2V7HWT40AU3KE/QJ1cJL8i5hfE=";
 
-  types-aiobotocore-pricing = buildTypesAiobotocorePackage "pricing" "2.12.1" "sha256-2vFSQr2uFCWEOjBtmQjAWyKw85/NfKuDGKnu6Vfq85s=";
+  types-aiobotocore-pricing = buildTypesAiobotocorePackage "pricing" "2.12.2" "sha256-29DE4QWR6vxAlXXg9ogWIw2m0tiPOXNbCJHf3auMap8=";
 
-  types-aiobotocore-privatenetworks = buildTypesAiobotocorePackage "privatenetworks" "2.12.1" "sha256-NCiA+mnWkeS6li7ruHZ8k2UM2rpHWJbE0UohIDhGDko=";
+  types-aiobotocore-privatenetworks = buildTypesAiobotocorePackage "privatenetworks" "2.12.2" "sha256-/Hcb08LOIy1gcYjrI9F4R1v7pFW0iukp2cV2iy9W4oA=";
 
-  types-aiobotocore-proton = buildTypesAiobotocorePackage "proton" "2.12.1" "sha256-2exlCIbq2xS+kvRR+LBEe0//Oit9wXhPxrITzASk6SI=";
+  types-aiobotocore-proton = buildTypesAiobotocorePackage "proton" "2.12.2" "sha256-Eja/Y797YeMFleClVOKK0QA3O1uBK/ynAFuxdrC1JhY=";
 
-  types-aiobotocore-qldb = buildTypesAiobotocorePackage "qldb" "2.12.1" "sha256-C7JHRm/SnRWMCBMzcpmmByMtcsK9Ozwd/IauoKKoZag=";
+  types-aiobotocore-qldb = buildTypesAiobotocorePackage "qldb" "2.12.2" "sha256-ztgDsbYexUlzCji5Hxa8+SfU1Gs1K903cJmLkcfgOLQ=";
 
-  types-aiobotocore-qldb-session = buildTypesAiobotocorePackage "qldb-session" "2.12.1" "sha256-3xfvNRLpJD+eUH4yLzNSYYf2g9OLmgEAOP7VKu/eaho=";
+  types-aiobotocore-qldb-session = buildTypesAiobotocorePackage "qldb-session" "2.12.2" "sha256-ZM5XLZJkcNwVlj4txCAGZNVzLrUWuXBWUhyPvrxgABM=";
 
-  types-aiobotocore-quicksight = buildTypesAiobotocorePackage "quicksight" "2.12.1" "sha256-BgO49MbWTu63gi8NoILgqOH7fnZmsSwCoxMNUBOzrvg=";
+  types-aiobotocore-quicksight = buildTypesAiobotocorePackage "quicksight" "2.12.2" "sha256-PJ5Wlfl5mFgGF3OaBUp76KN7CNMsoRwZcrzGAVzXJ8A=";
 
-  types-aiobotocore-ram = buildTypesAiobotocorePackage "ram" "2.12.1" "sha256-EXG6jgh2RWvjURXu0I4qQprATS3Ip35gEQK6MLhE6SU=";
+  types-aiobotocore-ram = buildTypesAiobotocorePackage "ram" "2.12.2" "sha256-idMuIdxSXJqeyflzO3U9LXOr7etwdpb8Vun+KK+W0xA=";
 
-  types-aiobotocore-rbin = buildTypesAiobotocorePackage "rbin" "2.12.1" "sha256-WgPe6GjNL9F/VdQs4pp3xK0f5dyR23JZyfehm5I6sTo=";
+  types-aiobotocore-rbin = buildTypesAiobotocorePackage "rbin" "2.12.2" "sha256-7QZihv5XMyGhGxcN32F0NzexQRTAtNEOYKaR68B1QV0=";
 
-  types-aiobotocore-rds = buildTypesAiobotocorePackage "rds" "2.12.1" "sha256-lgeDWUKBZCxVJayyytTiYbQboTdRBvIu7/HvhO4Wqkc=";
+  types-aiobotocore-rds = buildTypesAiobotocorePackage "rds" "2.12.2" "sha256-Mrckkfb/G9OC+wuQOw0Au4SGI/F/Exqj5g7c9/uiw3s=";
 
-  types-aiobotocore-rds-data = buildTypesAiobotocorePackage "rds-data" "2.12.1" "sha256-/m11lpU8mBO1DkvbN9hg090aCjTLrqaULpCBUnCadSk=";
+  types-aiobotocore-rds-data = buildTypesAiobotocorePackage "rds-data" "2.12.2" "sha256-N+ff5ZOUu6iAIPTow4Y4vgscHtDc4k0qH3STVdAiKks=";
 
-  types-aiobotocore-redshift = buildTypesAiobotocorePackage "redshift" "2.12.1" "sha256-/VL1Bzn27YKCL+Awdfg+4g+cg1ZD8Z9xvVS+jN91PU0=";
+  types-aiobotocore-redshift = buildTypesAiobotocorePackage "redshift" "2.12.2" "sha256-TDcemfXL2G8wUMmyHV2LXfCO76bhKNwxbSeemtG7wKI=";
 
-  types-aiobotocore-redshift-data = buildTypesAiobotocorePackage "redshift-data" "2.12.1" "sha256-OUTaZTCSUJLzzBNoxxHDCn+LRodqeakEgteHIjfyM7s=";
+  types-aiobotocore-redshift-data = buildTypesAiobotocorePackage "redshift-data" "2.12.2" "sha256-Fmy1QYmj2wPMc1lS17gfVUS7Q30gV7gg48CBGLAIUZU=";
 
-  types-aiobotocore-redshift-serverless = buildTypesAiobotocorePackage "redshift-serverless" "2.12.1" "sha256-nkRZzNd0KdBdb4pEbpr8oHAiAOzuMo8RNXJiKtTXT00=";
+  types-aiobotocore-redshift-serverless = buildTypesAiobotocorePackage "redshift-serverless" "2.12.2" "sha256-3OY8OSz/OfwnQ56flsy78O4UY3U0Eq8VwOlZE5Pgu70=";
 
-  types-aiobotocore-rekognition = buildTypesAiobotocorePackage "rekognition" "2.12.1" "sha256-05PKIuZPVLdYoVeeDVYrhR6Y6YJq41Sm0zql3GMd2GE=";
+  types-aiobotocore-rekognition = buildTypesAiobotocorePackage "rekognition" "2.12.2" "sha256-MWehv4SxIzGn9BCdX4VGxRQTB1/87TxQSUjhgNYneT4=";
 
-  types-aiobotocore-resiliencehub = buildTypesAiobotocorePackage "resiliencehub" "2.12.1" "sha256-BI7AQcnbbmA3jAE+weckSULbCLi7L+E6Bviwcp6nUTY=";
+  types-aiobotocore-resiliencehub = buildTypesAiobotocorePackage "resiliencehub" "2.12.2" "sha256-XfYtSqUPSp2GgkEWspls5rIg9v1iYqQwSBzMbJF2RwY=";
 
-  types-aiobotocore-resource-explorer-2 = buildTypesAiobotocorePackage "resource-explorer-2" "2.12.1" "sha256-5QLkLGSEVy4WunpnwixrY7NC74G0qscsyRRonAiziuM=";
+  types-aiobotocore-resource-explorer-2 = buildTypesAiobotocorePackage "resource-explorer-2" "2.12.2" "sha256-NHCI46o5Em6PaT4J5Po3sMxrDurILGPNB/yrr2+z5ew=";
 
-  types-aiobotocore-resource-groups = buildTypesAiobotocorePackage "resource-groups" "2.12.1" "sha256-ulM+lDPXOSw//ATwgvHUwRN6mt4JCPxsI9kvlFeBW8g=";
+  types-aiobotocore-resource-groups = buildTypesAiobotocorePackage "resource-groups" "2.12.2" "sha256-/BMPSJlAJnXuyXzFJ3C4P/q+3CyQez3DE1d/n/qs4jI=";
 
-  types-aiobotocore-resourcegroupstaggingapi = buildTypesAiobotocorePackage "resourcegroupstaggingapi" "2.12.1" "sha256-eNAIL3H4R2DeCcPD80gmgCPw6OajhHMfyAAYsLZ5qk0=";
+  types-aiobotocore-resourcegroupstaggingapi = buildTypesAiobotocorePackage "resourcegroupstaggingapi" "2.12.2" "sha256-6T9Jy6fquOMR1SdyuCePlKaRMawsPNVBCC8ikL7yBlI=";
 
-  types-aiobotocore-robomaker = buildTypesAiobotocorePackage "robomaker" "2.12.1" "sha256-mEDDY5dN90CuxIe48KECB4FnVikxO+5sGzb0HznEWgQ=";
+  types-aiobotocore-robomaker = buildTypesAiobotocorePackage "robomaker" "2.12.2" "sha256-rhMxrUYyh4LNvdBzeU2weQ5tYeB4m2GEey1ThTGLe2c=";
 
-  types-aiobotocore-rolesanywhere = buildTypesAiobotocorePackage "rolesanywhere" "2.12.1" "sha256-ZrGHBUThGVUUmy/TJDyG3hjNXGkRqO5oQP8SkIyCCu0=";
+  types-aiobotocore-rolesanywhere = buildTypesAiobotocorePackage "rolesanywhere" "2.12.2" "sha256-NDVe7y2eLBuZEWsutZyyV5d58Rhoijf13YMays3Jdx0=";
 
-  types-aiobotocore-route53 = buildTypesAiobotocorePackage "route53" "2.12.1" "sha256-6qYcsh/D1+JhAAKCCpfsi8hOQndu6iLKQIAX0/j2UUE=";
+  types-aiobotocore-route53 = buildTypesAiobotocorePackage "route53" "2.12.2" "sha256-LcR0vMKdWfXZbsBM5L45JvJDqTc+s+hd65FhOsVRvfw=";
 
-  types-aiobotocore-route53-recovery-cluster = buildTypesAiobotocorePackage "route53-recovery-cluster" "2.12.1" "sha256-0PlKImcsyHMot9P8yjVLo6gt/pMr+xdMJTGoW5lcdqQ=";
+  types-aiobotocore-route53-recovery-cluster = buildTypesAiobotocorePackage "route53-recovery-cluster" "2.12.2" "sha256-BhLBcFThFx7l6CuOzNJkZ8YN6HVRICpolGmJ3+HTjPM=";
 
-  types-aiobotocore-route53-recovery-control-config = buildTypesAiobotocorePackage "route53-recovery-control-config" "2.12.1" "sha256-f+9lv8WRb723cgw2339xAXv6H9DSqTV3He2rOSfdLZs=";
+  types-aiobotocore-route53-recovery-control-config = buildTypesAiobotocorePackage "route53-recovery-control-config" "2.12.2" "sha256-OT7GjKAT5MF/ztxoz7JFavOLYF+tHMlLSP2INKfY1Ws=";
 
-  types-aiobotocore-route53-recovery-readiness = buildTypesAiobotocorePackage "route53-recovery-readiness" "2.12.1" "sha256-fYyZULP5ZPGa29XG81sfeLzJyM2a01fSzpasDmKQKaY=";
+  types-aiobotocore-route53-recovery-readiness = buildTypesAiobotocorePackage "route53-recovery-readiness" "2.12.2" "sha256-2tKAml1Q02CzYKbXSb1cX0J+sikRaO4w7xs5ezIrbxc=";
 
-  types-aiobotocore-route53domains = buildTypesAiobotocorePackage "route53domains" "2.12.1" "sha256-jyZnn8+Z/ca81BFLz9STnRT5rVdgRbovqesUWFmzxSY=";
+  types-aiobotocore-route53domains = buildTypesAiobotocorePackage "route53domains" "2.12.2" "sha256-b4mDaB4eri2iZEplPdxsiOxdZ5SKlx81kMCk5U4rRyo=";
 
-  types-aiobotocore-route53resolver = buildTypesAiobotocorePackage "route53resolver" "2.12.1" "sha256-chqu+C8HGB0P8KsfttB1oKnyaZY3GUcFgeikJcWeFo8=";
+  types-aiobotocore-route53resolver = buildTypesAiobotocorePackage "route53resolver" "2.12.2" "sha256-1594OFyWF906H7vJlvz/eZ/OkEIHYiEyZJi2k8svyjM=";
 
-  types-aiobotocore-rum = buildTypesAiobotocorePackage "rum" "2.12.1" "sha256-x2b5L14Zx3XFSLOC9UPbRpOAiFd7jzd9UrLA9b+5+Ww=";
+  types-aiobotocore-rum = buildTypesAiobotocorePackage "rum" "2.12.2" "sha256-A6ZMbQv2b70onH8ZHuRPl4L0SE8WPuUNF8lePZfvp/I=";
 
-  types-aiobotocore-s3 = buildTypesAiobotocorePackage "s3" "2.12.1" "sha256-sHbgvSbUD55nQ46ufvPpngzCt0O4zIIDd8FlXH8TGF8=";
+  types-aiobotocore-s3 = buildTypesAiobotocorePackage "s3" "2.12.2" "sha256-YsEzOxrhFa6HTVZ1k+D8SaQxphXSzcUGTFFBYi5a1HY=";
 
-  types-aiobotocore-s3control = buildTypesAiobotocorePackage "s3control" "2.12.1" "sha256-p4AG4soN/NYbh1EPRc9DGtNtG89QRlarqVCPrKQcRqE=";
+  types-aiobotocore-s3control = buildTypesAiobotocorePackage "s3control" "2.12.2" "sha256-kK255cm6UdK+8SR2tSs+SgJwx8OVqMEwFIUJ7uLW8iA=";
 
-  types-aiobotocore-s3outposts = buildTypesAiobotocorePackage "s3outposts" "2.12.1" "sha256-EGR13xcf88tYBn5lbmrAQ2cxO6xDiFvuGA+xGp/o24Y=";
+  types-aiobotocore-s3outposts = buildTypesAiobotocorePackage "s3outposts" "2.12.2" "sha256-7Y9wXe9L66Hs2teCYHN2bxgXmIrs6HhLoq9NxQ4T1lg=";
 
-  types-aiobotocore-sagemaker = buildTypesAiobotocorePackage "sagemaker" "2.12.1" "sha256-YmBdTNil9ghlUrcr6Ej8GfwFaICQ+QZokuJk5iaHtY4=";
+  types-aiobotocore-sagemaker = buildTypesAiobotocorePackage "sagemaker" "2.12.2" "sha256-wRKIngMjGLGyvfJ7xpiaNGpj+oQCctpWFXVX9ZKglwQ=";
 
-  types-aiobotocore-sagemaker-a2i-runtime = buildTypesAiobotocorePackage "sagemaker-a2i-runtime" "2.12.1" "sha256-+fLY+MOh3P3/N7tVDGYZDlB7IKKMjxCdqje6apUGkQs=";
+  types-aiobotocore-sagemaker-a2i-runtime = buildTypesAiobotocorePackage "sagemaker-a2i-runtime" "2.12.2" "sha256-zi0aXoD/YxXwpC2YVDKI0WvK9G4TlDiCEfUP09m3SWw=";
 
-  types-aiobotocore-sagemaker-edge = buildTypesAiobotocorePackage "sagemaker-edge" "2.12.1" "sha256-izwrksagyX2mbDR1w+9ErrqrzHC1nnlIqXgE9++fGJI=";
+  types-aiobotocore-sagemaker-edge = buildTypesAiobotocorePackage "sagemaker-edge" "2.12.2" "sha256-HfyLVC2GSnzMDSyWkpN1WmhK8sJcMGmmiuToRURV7yM=";
 
-  types-aiobotocore-sagemaker-featurestore-runtime = buildTypesAiobotocorePackage "sagemaker-featurestore-runtime" "2.12.1" "sha256-Kt8weJY6HFekwsF+de0VUqwkpGj+j+4GH5/Ct6ggBXc=";
+  types-aiobotocore-sagemaker-featurestore-runtime = buildTypesAiobotocorePackage "sagemaker-featurestore-runtime" "2.12.2" "sha256-nubZcHUhuSDawDXKhwTggDr+mxBdx+uXRIWX9JJDAx4=";
 
-  types-aiobotocore-sagemaker-geospatial = buildTypesAiobotocorePackage "sagemaker-geospatial" "2.12.1" "sha256-mdXNrA1f96TxH5MRUsr1aadj20R0tqQ0kwmawaskZX8=";
+  types-aiobotocore-sagemaker-geospatial = buildTypesAiobotocorePackage "sagemaker-geospatial" "2.12.2" "sha256-FwEx2BwIqI/Sc8+ZZA+qnpjxVvyXHlMamVhrjilq0cw=";
 
-  types-aiobotocore-sagemaker-metrics = buildTypesAiobotocorePackage "sagemaker-metrics" "2.12.1" "sha256-VlaupOFkaHjjp1+Hjbmo8QHl/2tItZYg8t4WORUXGzg=";
+  types-aiobotocore-sagemaker-metrics = buildTypesAiobotocorePackage "sagemaker-metrics" "2.12.2" "sha256-1g2W/ODx2N1kXM6av2FkdFOcT/IqfY1CtHcOzXJJmqY=";
 
-  types-aiobotocore-sagemaker-runtime = buildTypesAiobotocorePackage "sagemaker-runtime" "2.12.1" "sha256-kGep+vJ4bqzTURgVEc3QESgmvBZJizk7SDWf2ELHPKM=";
+  types-aiobotocore-sagemaker-runtime = buildTypesAiobotocorePackage "sagemaker-runtime" "2.12.2" "sha256-wDXnZmydXVGjnNezooiP7TxxXmRdTfY7OamqQG7mmhU=";
 
-  types-aiobotocore-savingsplans = buildTypesAiobotocorePackage "savingsplans" "2.12.1" "sha256-sN2ihAQiOi6Rp2Nl1HyETUZxz/B09IH4yLUGEOG2khw=";
+  types-aiobotocore-savingsplans = buildTypesAiobotocorePackage "savingsplans" "2.12.2" "sha256-FHXr+j9LmefGjeimSGVbuKgWYhxOrASsogWkxQE2N58=";
 
-  types-aiobotocore-scheduler = buildTypesAiobotocorePackage "scheduler" "2.12.1" "sha256-7Yn5P3j5URK4oiEgyokKEazP9zRan5laX4pyXoLlCGM=";
+  types-aiobotocore-scheduler = buildTypesAiobotocorePackage "scheduler" "2.12.2" "sha256-IHy8VN021UBpYMsef5b1tSu9zhfRgXaosLDX9pUhgsE=";
 
-  types-aiobotocore-schemas = buildTypesAiobotocorePackage "schemas" "2.12.1" "sha256-sN7ixP27dN1ojaw/W3I2/VJFx5snuWEpJ1LugHx5tQs=";
+  types-aiobotocore-schemas = buildTypesAiobotocorePackage "schemas" "2.12.2" "sha256-LAJBYjaOc8rhJNrAzOJReTYBmRpeba4VJfszDVuFA4g=";
 
-  types-aiobotocore-sdb = buildTypesAiobotocorePackage "sdb" "2.12.1" "sha256-YwurPoYxG2ldprgCtLrn8jsHDAuqzxgOk+rBIrYdI8o=";
+  types-aiobotocore-sdb = buildTypesAiobotocorePackage "sdb" "2.12.2" "sha256-wpVdLd1n8TXjzwCHL+JbyUZaYdsekT/R3KjY+ToISp4=";
 
-  types-aiobotocore-secretsmanager = buildTypesAiobotocorePackage "secretsmanager" "2.12.1" "sha256-DhKCgIIcxNIP2gJRZVA6ITP5k/wbI73JEpGFVNbriEo=";
+  types-aiobotocore-secretsmanager = buildTypesAiobotocorePackage "secretsmanager" "2.12.2" "sha256-9rHzNW9xD2k2fIBuOzICqyNdUQB1K3ml5PVAn6OuG08=";
 
-  types-aiobotocore-securityhub = buildTypesAiobotocorePackage "securityhub" "2.12.1" "sha256-WDKxtbB1RZEG5eJbIKBddS8yX2YkbfzW6IabYivCpy4=";
+  types-aiobotocore-securityhub = buildTypesAiobotocorePackage "securityhub" "2.12.2" "sha256-97io+U0ZTfzH5AuInHtc4YXNG4l+pkxjnL+MeZl627o=";
 
-  types-aiobotocore-securitylake = buildTypesAiobotocorePackage "securitylake" "2.12.1" "sha256-TG+xWDnQmXp55RcTP3GYIKdGUh9sLcU+AbpS+YnI0T4=";
+  types-aiobotocore-securitylake = buildTypesAiobotocorePackage "securitylake" "2.12.2" "sha256-1bWfvpDEShVTcF7sEpz7KYXNMv3fwUhOtd8ICNx3bZk=";
 
-  types-aiobotocore-serverlessrepo = buildTypesAiobotocorePackage "serverlessrepo" "2.12.1" "sha256-NEdGr3+zYFsxgL9xPyZqllQm9q5U3Y8Fq4vnjE9VQDk=";
+  types-aiobotocore-serverlessrepo = buildTypesAiobotocorePackage "serverlessrepo" "2.12.2" "sha256-5bKh3PMr8uKvJGoNl26qGyKJsOBXWQDDKTgBKIC6Glc=";
 
-  types-aiobotocore-service-quotas = buildTypesAiobotocorePackage "service-quotas" "2.12.1" "sha256-ZYzfFp+HQZCzBKG2Uaar44IO6rk3rPX8D00vAh5drsQ=";
+  types-aiobotocore-service-quotas = buildTypesAiobotocorePackage "service-quotas" "2.12.2" "sha256-EwrP4t5TFOeSQ9xMv+1H0L3qEDepwQ0/7JnS4aKbFk4=";
 
-  types-aiobotocore-servicecatalog = buildTypesAiobotocorePackage "servicecatalog" "2.12.1" "sha256-B1nyXU/z+ZR7MaPqqAIER3g+XQJDx37PTfvTHxSzHkQ=";
+  types-aiobotocore-servicecatalog = buildTypesAiobotocorePackage "servicecatalog" "2.12.2" "sha256-tgIcA1ZtkzMQdksGEqnjkpwfGnpG0tmkrlnjKsArvAE=";
 
-  types-aiobotocore-servicecatalog-appregistry = buildTypesAiobotocorePackage "servicecatalog-appregistry" "2.12.1" "sha256-kQaEpE5fbWumtroUFNuyKrmXI7MmoNmJhWEh4ve1sYA=";
+  types-aiobotocore-servicecatalog-appregistry = buildTypesAiobotocorePackage "servicecatalog-appregistry" "2.12.2" "sha256-oLn2o+EwsjWOgIuuNCi898EHI53Y3e04MxoyWkEHzKg=";
 
-  types-aiobotocore-servicediscovery = buildTypesAiobotocorePackage "servicediscovery" "2.12.1" "sha256-V6TD1sOtO5AkbBrKVXr5dc2Ym7Mgz/dkm7c4rBNZOzw=";
+  types-aiobotocore-servicediscovery = buildTypesAiobotocorePackage "servicediscovery" "2.12.2" "sha256-D40N1DoI6xT5Dz9VsnK39CDoUCVtblV5eHESUecxxEI=";
 
-  types-aiobotocore-ses = buildTypesAiobotocorePackage "ses" "2.12.1" "sha256-agdBiB1VRs38GxuHsBkHByWbBqrAt+YZNTfBFDIhgLE=";
+  types-aiobotocore-ses = buildTypesAiobotocorePackage "ses" "2.12.2" "sha256-SIj1/+vgxsHv59HH/kc+iqTCbI+sYLbhaMnAt5WwifY=";
 
-  types-aiobotocore-sesv2 = buildTypesAiobotocorePackage "sesv2" "2.12.1" "sha256-ziNzhAspWnYDGxJfw5JPBf6FY0of0q2KddVZA4n1Trg=";
+  types-aiobotocore-sesv2 = buildTypesAiobotocorePackage "sesv2" "2.12.2" "sha256-HpMrPG7PYyfy5F4kLZsMbKsexqXziVf2wNPPBbglmcs=";
 
-  types-aiobotocore-shield = buildTypesAiobotocorePackage "shield" "2.12.1" "sha256-Z289uZBMaexBmuG2aEfUWOy145jJC8ZHnaKb7lhjL7o=";
+  types-aiobotocore-shield = buildTypesAiobotocorePackage "shield" "2.12.2" "sha256-WALZ9EVDvifxiOlcYhZXuajORsbC4GpeD/LVA0yuPBA=";
 
-  types-aiobotocore-signer = buildTypesAiobotocorePackage "signer" "2.12.1" "sha256-MDoK/Qnvo6Y+WsVFSyKt+irzFC/HgWNAHkZgj3LSp4w=";
+  types-aiobotocore-signer = buildTypesAiobotocorePackage "signer" "2.12.2" "sha256-3D18EK5Q+zHmA8WLXLaenswIw+HF2b4tZCY4TZA4sHs=";
 
-  types-aiobotocore-simspaceweaver = buildTypesAiobotocorePackage "simspaceweaver" "2.12.1" "sha256-tpzwKKdv8G0E0H3+wrANs50K0mM/lyqcXeTprBQeVNs=";
+  types-aiobotocore-simspaceweaver = buildTypesAiobotocorePackage "simspaceweaver" "2.12.2" "sha256-id5LKXq/3hsvZPblmBNGzRaLFG57VfL9feXtCUKSDHg=";
 
-  types-aiobotocore-sms = buildTypesAiobotocorePackage "sms" "2.12.1" "sha256-mr5ntl7rZ9Nopql41qqs9n01bYZ2aW/v+/ehZKsQ+kI=";
+  types-aiobotocore-sms = buildTypesAiobotocorePackage "sms" "2.12.2" "sha256-7sc4gD4rfbubwDQI2u/XvF4cNslnFGcN94h6uB5cHp4=";
 
-  types-aiobotocore-sms-voice = buildTypesAiobotocorePackage "sms-voice" "2.12.1" "sha256-BGilumzkB01iMg0a833gBvT+LhkKVXncH/klno1Wc7g=";
+  types-aiobotocore-sms-voice = buildTypesAiobotocorePackage "sms-voice" "2.12.2" "sha256-nS+LiEvDP4IZMduhrbO16oTtFSp423/Y2SlT6Cj+CL8=";
 
-  types-aiobotocore-snow-device-management = buildTypesAiobotocorePackage "snow-device-management" "2.12.1" "sha256-en4h9jzuPw1JoLLFIUVAru46YJeu9ThPYkCzcu9LyRw=";
+  types-aiobotocore-snow-device-management = buildTypesAiobotocorePackage "snow-device-management" "2.12.2" "sha256-CUkRt31gGK08kxPuMfP0T1XLOJOQPJUG3Oxis8p3/vQ=";
 
-  types-aiobotocore-snowball = buildTypesAiobotocorePackage "snowball" "2.12.1" "sha256-F8WStkw9CRkTxQXST7JKCHvJV+2DleR6zBmZmPQeCZg=";
+  types-aiobotocore-snowball = buildTypesAiobotocorePackage "snowball" "2.12.2" "sha256-Wprhzjwh4mKqFizDcfUewEo8ho0lKaVItqO6tOIOV+4=";
 
-  types-aiobotocore-sns = buildTypesAiobotocorePackage "sns" "2.12.1" "sha256-bEFE0arHc/U8LmXCiRAZkFHNWsGFb069DSseHdBJA1Y=";
+  types-aiobotocore-sns = buildTypesAiobotocorePackage "sns" "2.12.2" "sha256-Yser4nTXIfYQ2cAEOVAEdJ2du/imthk4RA0nkZpBfxU=";
 
-  types-aiobotocore-sqs = buildTypesAiobotocorePackage "sqs" "2.12.1" "sha256-B106hChye7naXa6VvefcfDICI1rU1Td5K7zxP9vAofU=";
+  types-aiobotocore-sqs = buildTypesAiobotocorePackage "sqs" "2.12.2" "sha256-MYJjaAoEG33xQy2hWmb45KC/MjAbdiNz+C+Pn/4USo0=";
 
-  types-aiobotocore-ssm = buildTypesAiobotocorePackage "ssm" "2.12.1" "sha256-f1hVxTtSmljYA3p/wNltr4wMlKT94yzP8zFIq8fHIng=";
+  types-aiobotocore-ssm = buildTypesAiobotocorePackage "ssm" "2.12.2" "sha256-QZRMWMC87WL7HwNoGkIKBusPVMKEN3AyoKFVQ0bA4VU=";
 
-  types-aiobotocore-ssm-contacts = buildTypesAiobotocorePackage "ssm-contacts" "2.12.1" "sha256-zhJooXRPSJoVNLRTcKMgnmGuDFvol2LCHKesveS2onI=";
+  types-aiobotocore-ssm-contacts = buildTypesAiobotocorePackage "ssm-contacts" "2.12.2" "sha256-m2zC26dCphVlPxShHJv6ZvAzRL1TJ1t0/yywxPQ7k1w=";
 
-  types-aiobotocore-ssm-incidents = buildTypesAiobotocorePackage "ssm-incidents" "2.12.1" "sha256-bvkyOZP9zuExuWV7ZHkV/YPzTAcl59L69TMRTkKtDKo=";
+  types-aiobotocore-ssm-incidents = buildTypesAiobotocorePackage "ssm-incidents" "2.12.2" "sha256-tcFiqjyp0yvftb6p6AS6uD1/stAp6BgjjssCfL5Wcq4=";
 
-  types-aiobotocore-ssm-sap = buildTypesAiobotocorePackage "ssm-sap" "2.12.1" "sha256-YjxpS0Tn+waraHNSDKSm/Ig4axeJmUHRR9wKUh9/w8w=";
+  types-aiobotocore-ssm-sap = buildTypesAiobotocorePackage "ssm-sap" "2.12.2" "sha256-oWGPSPLr7OCZ/F+crxqFJtT2yjPQfKO4ZExVmEmuHts=";
 
-  types-aiobotocore-sso = buildTypesAiobotocorePackage "sso" "2.12.1" "sha256-pBNQzTTu3DXWoAMOZHoZwvWRZetNOEwEN6XlX5b3cTc=";
+  types-aiobotocore-sso = buildTypesAiobotocorePackage "sso" "2.12.2" "sha256-C4Ne19U9yQNvdkv1169JaQP42W8tbRY7HH2ffNc6flU=";
 
-  types-aiobotocore-sso-admin = buildTypesAiobotocorePackage "sso-admin" "2.12.1" "sha256-wBv/pIRqsPxJONtGu782zxSAIDnAM6raAU8XFKoHwTQ=";
+  types-aiobotocore-sso-admin = buildTypesAiobotocorePackage "sso-admin" "2.12.2" "sha256-0e/wU+WmMsyd2eR28U32Nb2/GGkcIx34fznW8vK1vjI=";
 
-  types-aiobotocore-sso-oidc = buildTypesAiobotocorePackage "sso-oidc" "2.12.1" "sha256-HdZz0vbe+M0q5lLxArKy/k447cc2VZDByeLBkg/inl4=";
+  types-aiobotocore-sso-oidc = buildTypesAiobotocorePackage "sso-oidc" "2.12.2" "sha256-MKctbFIixCUNjPgMaVS44qGeVw97kSjNzv27Lz0wdH4=";
 
-  types-aiobotocore-stepfunctions = buildTypesAiobotocorePackage "stepfunctions" "2.12.1" "sha256-J5UI5f2WWT+nhl6o0d2DkCVZKOwg5O29VbNi26RfUQ0=";
+  types-aiobotocore-stepfunctions = buildTypesAiobotocorePackage "stepfunctions" "2.12.2" "sha256-/uSY/rT99prkan1Jdzmrqfrtd+IY4lTCjhEoVDd/5qw=";
 
-  types-aiobotocore-storagegateway = buildTypesAiobotocorePackage "storagegateway" "2.12.1" "sha256-p7ubgOcj4xkB7UcU3OUVMgzPzbLQTYcB0hbh/3KZqrs=";
+  types-aiobotocore-storagegateway = buildTypesAiobotocorePackage "storagegateway" "2.12.2" "sha256-4imdUKHgiR8MdfP9d+mfUSvX/BGML6OyhFZSoqfvUyE=";
 
-  types-aiobotocore-sts = buildTypesAiobotocorePackage "sts" "2.12.1" "sha256-D/+jqiERytxUvDGxxxVBZnBQae/csg4GpRA2YAiigno=";
+  types-aiobotocore-sts = buildTypesAiobotocorePackage "sts" "2.12.2" "sha256-ZjWt8aMpB7rm5RiN0wu0Rtf0GmB0pyQheulIdiESYJw=";
 
-  types-aiobotocore-support = buildTypesAiobotocorePackage "support" "2.12.1" "sha256-7QN7ZamHv/C67SrlPWDi7yZ51QGbIr896PZ1FQ4kEuU=";
+  types-aiobotocore-support = buildTypesAiobotocorePackage "support" "2.12.2" "sha256-m9gE+WrA3hGyFsce9yuQ2Rc1T+C34CV3qee1cUh5iqg=";
 
-  types-aiobotocore-support-app = buildTypesAiobotocorePackage "support-app" "2.12.1" "sha256-GOdOna5aa3inSl+Q/vGPBJf3ULXmMxfabpHVvYL3XIA=";
+  types-aiobotocore-support-app = buildTypesAiobotocorePackage "support-app" "2.12.2" "sha256-sDFQII+lci1rt4IR3nfHphO2LSv0QER1incTUdRhUO0=";
 
-  types-aiobotocore-swf = buildTypesAiobotocorePackage "swf" "2.12.1" "sha256-BnNcpeNmYWlmBUUgDtOczwDp/BGrjLg2+QMNJEyiCmU=";
+  types-aiobotocore-swf = buildTypesAiobotocorePackage "swf" "2.12.2" "sha256-4kM9IuYO9AGhppvigtrSfCpbLem4MxNijEPIxLO6bgA=";
 
-  types-aiobotocore-synthetics = buildTypesAiobotocorePackage "synthetics" "2.12.1" "sha256-kiEkHVz9U9svw+IYstUcle1oCBSs1b2cU9vBHaY/H0c=";
+  types-aiobotocore-synthetics = buildTypesAiobotocorePackage "synthetics" "2.12.2" "sha256-8sewpC5P4bkL3k2U+6SpbeJ++2T0KhymCyqsSWHvgx8=";
 
-  types-aiobotocore-textract = buildTypesAiobotocorePackage "textract" "2.12.1" "sha256-O95r0QCGOW2RbU1zlv4dn/1OuP/x/KFyO3TD2YwdTA8=";
+  types-aiobotocore-textract = buildTypesAiobotocorePackage "textract" "2.12.2" "sha256-Y3ts/v4pdmX2KFm9ZWcFhPyPQOhjXZ73jNUbDso90Tk=";
 
-  types-aiobotocore-timestream-query = buildTypesAiobotocorePackage "timestream-query" "2.12.1" "sha256-mp2zgiLO/bFBY1nhsx0nocKcerRnBzZyaONBlJ9OJk4=";
+  types-aiobotocore-timestream-query = buildTypesAiobotocorePackage "timestream-query" "2.12.2" "sha256-F1Du1aia/Q1bo+F7YJRpSkU2/8lHG3KObHUZdZ/z2I8=";
 
-  types-aiobotocore-timestream-write = buildTypesAiobotocorePackage "timestream-write" "2.12.1" "sha256-N7FQ85Y/vr8kam/ESgTxK3v1nMnMl17wYZkcK8kOOyI=";
+  types-aiobotocore-timestream-write = buildTypesAiobotocorePackage "timestream-write" "2.12.2" "sha256-OhisvyX9nBqBEfYdXNPeEF5jURFOvoXN9YxJDkKDOqc=";
 
-  types-aiobotocore-tnb = buildTypesAiobotocorePackage "tnb" "2.12.1" "sha256-bB9gINmvd69sbfqeJ5cuqhVlA52BFA26rB7c+AWXNZg=";
+  types-aiobotocore-tnb = buildTypesAiobotocorePackage "tnb" "2.12.2" "sha256-W1luQ356xiJA7RKG57DNVaY5YZBvYv4AlFavdTXxng8=";
 
-  types-aiobotocore-transcribe = buildTypesAiobotocorePackage "transcribe" "2.12.1" "sha256-ziN4VGQoNThnfC1Pg7thxMFzfvTE2xRGtk3f0OLRiDc=";
+  types-aiobotocore-transcribe = buildTypesAiobotocorePackage "transcribe" "2.12.2" "sha256-uNACYs85jyW97SE+U58JexWrFUVOCNLkCuHRc+ZkFZ4=";
 
-  types-aiobotocore-transfer = buildTypesAiobotocorePackage "transfer" "2.12.1" "sha256-Ru3p8rngnhuTytJcVycJo2w0G8hMfCWKk7bzRAU534Q=";
+  types-aiobotocore-transfer = buildTypesAiobotocorePackage "transfer" "2.12.2" "sha256-d72xsEhJn6D8OujIxP9xObjPyxRPmcIdnly+ZwvEzCw=";
 
-  types-aiobotocore-translate = buildTypesAiobotocorePackage "translate" "2.12.1" "sha256-y+b/46Qp/+iqFWdgcLhXOQQ60Jb4ZHn+T3VV2B2blr8=";
+  types-aiobotocore-translate = buildTypesAiobotocorePackage "translate" "2.12.2" "sha256-rQdiVuH8W7kxYSD5AxGvQraNJf6acmN+F9Rr2NP5sKw=";
 
-  types-aiobotocore-verifiedpermissions = buildTypesAiobotocorePackage "verifiedpermissions" "2.12.1" "sha256-Eiv4Jccs56w0k0hSKvW18vmResqvhxsLB6GmwCadPOA=";
+  types-aiobotocore-verifiedpermissions = buildTypesAiobotocorePackage "verifiedpermissions" "2.12.2" "sha256-MIF51gNhXzNcm1lSLwpfvFm0TIeFmj+MEEIPT/FRO/Y=";
 
-  types-aiobotocore-voice-id = buildTypesAiobotocorePackage "voice-id" "2.12.1" "sha256-vFq5MQHyL3ShqgXGh2eBDZNq6AHVjZek+QonwuaxYwU=";
+  types-aiobotocore-voice-id = buildTypesAiobotocorePackage "voice-id" "2.12.2" "sha256-lnifYdOU3hJly0lUJFkfBaNFyyCQESz2ef3F0BrMSCE=";
 
-  types-aiobotocore-vpc-lattice = buildTypesAiobotocorePackage "vpc-lattice" "2.12.1" "sha256-+coxrlXSx4qwcQXf3RSOpJQL+t1yqO/xB3autVz/NLY=";
+  types-aiobotocore-vpc-lattice = buildTypesAiobotocorePackage "vpc-lattice" "2.12.2" "sha256-JJrunGOEf96BmIr1A2I3p4g6tHwvc6AZn7iWEGemahI=";
 
-  types-aiobotocore-waf = buildTypesAiobotocorePackage "waf" "2.12.1" "sha256-U2QbBdI58XBMFEM0AYtK6i51I4lqW28Aeu+XuNhAZJ8=";
+  types-aiobotocore-waf = buildTypesAiobotocorePackage "waf" "2.12.2" "sha256-nBxBriQLUlmURSWHrmFMVa31dUOVjzFTBFhwxhrgdmc=";
 
-  types-aiobotocore-waf-regional = buildTypesAiobotocorePackage "waf-regional" "2.12.1" "sha256-9JjZCzf9Z8T9tQB/BE+u8+iE/kX/iMLlffBJkuNXzS0=";
+  types-aiobotocore-waf-regional = buildTypesAiobotocorePackage "waf-regional" "2.12.2" "sha256-bntzQDr6j23lp46Fd4awX/w8W0dUQ9Z7mH5jc8r7NKo=";
 
-  types-aiobotocore-wafv2 = buildTypesAiobotocorePackage "wafv2" "2.12.1" "sha256-2gZSrTR5wRP7qOMxkmRQqU+pH83hnEOopuVUbMIXcAU=";
+  types-aiobotocore-wafv2 = buildTypesAiobotocorePackage "wafv2" "2.12.2" "sha256-fsIxp6khnfxMQyy0+LqyCyjP110Ik/L5zafE13JOxtY=";
 
-  types-aiobotocore-wellarchitected = buildTypesAiobotocorePackage "wellarchitected" "2.12.1" "sha256-guUODw1ecYm396nkEoTKiYurk8YIoSJg9/IZkNaba7I=";
+  types-aiobotocore-wellarchitected = buildTypesAiobotocorePackage "wellarchitected" "2.12.2" "sha256-6E4hpBgAH01FExto7Q9voThCNZu0s9VPw/J2Bar34O8=";
 
-  types-aiobotocore-wisdom = buildTypesAiobotocorePackage "wisdom" "2.12.1" "sha256-rOa8B0/7HQ+GfmTVMq5Kn2eclN5i7ywipnJ7bYymUbA=";
+  types-aiobotocore-wisdom = buildTypesAiobotocorePackage "wisdom" "2.12.2" "sha256-skK8YWujl1RShe9LQoE0FXsNiQynycMoruFdlDxDFBk=";
 
-  types-aiobotocore-workdocs = buildTypesAiobotocorePackage "workdocs" "2.12.1" "sha256-/hN0c65UtT9/ZgUtmrmlEoDGVUnd9rnC+hJLH38qZXw=";
+  types-aiobotocore-workdocs = buildTypesAiobotocorePackage "workdocs" "2.12.2" "sha256-H1qRcCqRhnPtfIXxEpZ5IQTJ0LxEnY0oayxnVXVB9rA=";
 
-  types-aiobotocore-worklink = buildTypesAiobotocorePackage "worklink" "2.12.1" "sha256-geeKa8vZebnIFuuD6Slz9ShpBYCJXrXojS2KSORDqKk=";
+  types-aiobotocore-worklink = buildTypesAiobotocorePackage "worklink" "2.12.2" "sha256-lnMETLwtvtRSIPqecuc3JbDKFuUn/FaWyiLBB3+T5x4=";
 
-  types-aiobotocore-workmail = buildTypesAiobotocorePackage "workmail" "2.12.1" "sha256-ZnxR1sUOX+krBU0OKsTtnjvhPC8WnsMw4Oyfb5kbSd0=";
+  types-aiobotocore-workmail = buildTypesAiobotocorePackage "workmail" "2.12.2" "sha256-CbeOMFYa6IGuXX8ALLIHa8LSNMivuNebW8uw1ee1omo=";
 
-  types-aiobotocore-workmailmessageflow = buildTypesAiobotocorePackage "workmailmessageflow" "2.12.1" "sha256-AasaWFat0OGT4/iTmqDHnaXvFU6BQMhTpWKYc9E7FoY=";
+  types-aiobotocore-workmailmessageflow = buildTypesAiobotocorePackage "workmailmessageflow" "2.12.2" "sha256-6fN0swm3VSw3ppDe+oVmWGFxuFYGtIDScSdGKCMEBlQ=";
 
-  types-aiobotocore-workspaces = buildTypesAiobotocorePackage "workspaces" "2.12.1" "sha256-/07XwxB2vWaGR8Y07x53/C6PBTaDVKMNoSqbzaRAESo=";
+  types-aiobotocore-workspaces = buildTypesAiobotocorePackage "workspaces" "2.12.2" "sha256-tAD9BBHyoSD26ifWTJoCucsYILkZ4VQxJ87p/KOV/2s=";
 
-  types-aiobotocore-workspaces-web = buildTypesAiobotocorePackage "workspaces-web" "2.12.1" "sha256-QBJmVHZ5UazLecUrpizJDe99t0rIllVqYw+JZQTJWBQ=";
+  types-aiobotocore-workspaces-web = buildTypesAiobotocorePackage "workspaces-web" "2.12.2" "sha256-tFwMHDFAoiL2gGU26JoxJfWSFIqP/Co48Ugs9IS6o/s=";
 
-  types-aiobotocore-xray = buildTypesAiobotocorePackage "xray" "2.12.1" "sha256-KPhRhUwIv8RG9R/skKq1hZ7SKJB18C2lWIYs4rjvjHw=";
+  types-aiobotocore-xray = buildTypesAiobotocorePackage "xray" "2.12.2" "sha256-B9B7xBTCcAYAcOhlyxevtmAnpVyRgDgBz9GpcD7ZMhU=";
 }
diff --git a/pkgs/development/python-modules/types-aiobotocore/default.nix b/pkgs/development/python-modules/types-aiobotocore/default.nix
index 5e60e9d26f311..17b959beeb4ad 100644
--- a/pkgs/development/python-modules/types-aiobotocore/default.nix
+++ b/pkgs/development/python-modules/types-aiobotocore/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchPypi
 , setuptools
-, wheel
 , botocore-stubs
 , typing-extensions
 , types-aiobotocore-accessanalyzer
@@ -364,20 +363,19 @@
 
 buildPythonPackage rec {
   pname = "types-aiobotocore";
-  version = "2.12.1";
+  version = "2.12.2";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-pdPYBcAaqGnDwvgttfEUZv3GfUxebpqwTtVwk9p120c=";
+    hash = "sha256-cpw68B9rX30QE+pbfSRV00wg05XZuKmSYNdJ53uo7+M=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
-    wheel
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     botocore-stubs
     typing-extensions
   ];
diff --git a/pkgs/development/python-modules/types-aiobotocore/update.sh b/pkgs/development/python-modules/types-aiobotocore/update.sh
index 1c0306f27e01c..8c4845f9032e7 100644..100755
--- a/pkgs/development/python-modules/types-aiobotocore/update.sh
+++ b/pkgs/development/python-modules/types-aiobotocore/update.sh
@@ -1,11 +1,11 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p nix-update
+#!nix-shell -i bash -p nix-update nixpkgs-fmt
 
 set -eu -o pipefail
 
 source_file=pkgs/development/python-modules/types-aiobotocore-packages/default.nix
 
-version="2.12.1"
+version="2.12.2"
 
 nix-update python311Packages.types-aiobotocore --commit --build
 
diff --git a/pkgs/development/python-modules/types-dataclasses/default.nix b/pkgs/development/python-modules/types-dataclasses/default.nix
new file mode 100644
index 0000000000000..5823b56f66372
--- /dev/null
+++ b/pkgs/development/python-modules/types-dataclasses/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
+}:
+
+buildPythonPackage rec {
+  pname = "types-dataclasses";
+  version = "0.6.6";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-S1ovz45WjVoZdM1pAQ4yDhr4JRF37JaN57m7SapJ97k=";
+  };
+
+  build-system = [ setuptools ];
+
+  # Modules doesn't have tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "dataclasses-stubs" ];
+
+  meta = with lib; {
+    description = "Typing stubs for dataclasses";
+    homepage = "https://github.com/python/typeshed";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/types-docutils/default.nix b/pkgs/development/python-modules/types-docutils/default.nix
index c905c2f8745b3..fb1f04123f8fc 100644
--- a/pkgs/development/python-modules/types-docutils/default.nix
+++ b/pkgs/development/python-modules/types-docutils/default.nix
@@ -1,29 +1,26 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  fetchPypi,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "types-docutils";
-  version = "0.20.0.20240331";
+  version = "0.20.0.20240406";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-rJnN80BAyYIIH1QjfWAX+PXa/gvruBilmL+Xpl9bFxU=";
+    hash = "sha256-6OxKWhJdBthjK7qsihH76hih7fqU35xRKdxFmAkVuEs=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   # Module doesn't have tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "docutils-stubs"
-  ];
+  pythonImportsCheck = [ "docutils-stubs" ];
 
   meta = with lib; {
     description = "Typing stubs for docutils";
diff --git a/pkgs/development/python-modules/types-pillow/default.nix b/pkgs/development/python-modules/types-pillow/default.nix
index b6b882218d192..adb92251b8f10 100644
--- a/pkgs/development/python-modules/types-pillow/default.nix
+++ b/pkgs/development/python-modules/types-pillow/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "types-pillow";
-  version = "10.2.0.20240311";
+  version = "10.2.0.20240331";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "types-Pillow";
-    hash = "sha256-9hH2uvfDeE/lUO6SsQgGD1VEpHw3xzrLgaeF8cYxJ3I=";
+    hash = "sha256-xgTjmutwcZ5GPTWRV6Iji/wOgb+cZYN1cD97mM/WB9o=";
   };
 
   # Modules doesn't have tests
diff --git a/pkgs/development/python-modules/types-protobuf/default.nix b/pkgs/development/python-modules/types-protobuf/default.nix
index fb7da185e2ced..c09cb206cf040 100644
--- a/pkgs/development/python-modules/types-protobuf/default.nix
+++ b/pkgs/development/python-modules/types-protobuf/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-protobuf";
-  version = "4.24.0.20240302";
+  version = "4.24.0.20240311";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-8iwAzAzqlyLnHhTTibukKa+eNadKlJcZwWcgOlq74uQ=";
+    hash = "sha256-yAQm+fubIa7lFGkelqsypc1pSoLirAeWSzUsPn4Bgrw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/types-requests/default.nix b/pkgs/development/python-modules/types-requests/default.nix
index 1933aed78853f..6cabdc3b89a5e 100644
--- a/pkgs/development/python-modules/types-requests/default.nix
+++ b/pkgs/development/python-modules/types-requests/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "types-requests";
-  version = "2.31.0.20240403";
+  version = "2.31.0.20240406";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-4eDNC2VTNPOdn4craKExDw40Nkdoi/LO6TLsTCsE3lk=";
+    hash = "sha256-RCjfM8VQOUXHSz9C6CsYHobse3JGIEGaKWbi3mBM4aE=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/types-setuptools/default.nix b/pkgs/development/python-modules/types-setuptools/default.nix
index 881db628ede58..a2a0a9f125bde 100644
--- a/pkgs/development/python-modules/types-setuptools/default.nix
+++ b/pkgs/development/python-modules/types-setuptools/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-setuptools";
-  version = "69.1.0.20240310";
+  version = "69.2.0.20240317";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-/A4QgvVcl0YRvOhEseW+stGolVAfSkZOSDBVkqQmgQA=";
+    hash = "sha256-tgfExIhC7z7kncDH/pwbrXVwCwceEBi7TX46xJLUcEg=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/umap-learn/default.nix b/pkgs/development/python-modules/umap-learn/default.nix
index abb17d43040fb..195dde57bf2e4 100644
--- a/pkgs/development/python-modules/umap-learn/default.nix
+++ b/pkgs/development/python-modules/umap-learn/default.nix
@@ -24,7 +24,7 @@
 
 buildPythonPackage rec {
   pname = "umap-learn";
-  version = "0.5.5";
+  version = "0.5.6";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -33,7 +33,7 @@ buildPythonPackage rec {
     owner = "lmcinnes";
     repo = "umap";
     rev = "refs/tags/release-${version}";
-    hash = "sha256-bXAQjq7xBYn34tIZF96Sr5jDUii3s4FGkNx65rGKXkY=";
+    hash = "sha256-fqYl8T53BgCqsquY6RJHqpDFsdZA0Ihja69E/kG3YGU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/unearth/default.nix b/pkgs/development/python-modules/unearth/default.nix
index 60307ca4051d5..0527e90f2636f 100644
--- a/pkgs/development/python-modules/unearth/default.nix
+++ b/pkgs/development/python-modules/unearth/default.nix
@@ -2,12 +2,12 @@
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
-, cached-property
 , packaging
 , pdm-backend
-, requests
+, httpx
 , flask
 , pytest-httpserver
+, pytest-mock
 , pytestCheckHook
 , requests-wsgi-adapter
 , trustme
@@ -15,23 +15,23 @@
 
 buildPythonPackage rec {
   pname = "unearth";
-  version = "0.14.0";
-  format = "pyproject";
+  version = "0.15.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-883fuUrA+GX7z5ZCMVVu9xgwEDecALASBVF6UMeKGG0=";
+    hash = "sha256-hj3rMznA1lpb4NCtLGfUbV9XSnmOdO8FUr8R0pijCrs=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     pdm-backend
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     packaging
-    requests
+    httpx
   ];
 
   __darwinAllowLocalNetworking = true;
@@ -39,6 +39,7 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     flask
     pytest-httpserver
+    pytest-mock
     pytestCheckHook
     requests-wsgi-adapter
     trustme
diff --git a/pkgs/development/python-modules/unicurses/default.nix b/pkgs/development/python-modules/unicurses/default.nix
index 0d4f75264ca29..4eae54692b547 100644
--- a/pkgs/development/python-modules/unicurses/default.nix
+++ b/pkgs/development/python-modules/unicurses/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "unicurses";
-  version = "2.1.3";
+  version = "3.0.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "Uni-Curses";
-    hash = "sha256-uzSiF0jAZzI0iZngM/GuJ60o+UbLQ5XQzycTPito34w=";
+    hash = "sha256-ZJUKWxu2cQlFGN1RNtyDacwSOtBiUKzk9SIDD0IQiuU=";
   };
 
   propagatedBuildInputs = [ x256 ];
diff --git a/pkgs/development/python-modules/universal-silabs-flasher/default.nix b/pkgs/development/python-modules/universal-silabs-flasher/default.nix
index 8c73bc5205ef2..bfc6bb97aab4e 100644
--- a/pkgs/development/python-modules/universal-silabs-flasher/default.nix
+++ b/pkgs/development/python-modules/universal-silabs-flasher/default.nix
@@ -6,7 +6,6 @@
 
 # build-system
 , setuptools
-, setuptools-git-versioning
 
 # dependencies
 , async-timeout
@@ -37,10 +36,18 @@ buildPythonPackage rec {
     hash = "sha256-VoO9B27CNY2Cnt/Q2HsU6DVYkukQMgbIHc6xqfN0P7w=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
+  '';
+
   nativeBuildInputs = [
     pythonRelaxDepsHook
+  ];
+
+  build-system = [
     setuptools
-    setuptools-git-versioning
   ];
 
   pythonRelaxDeps = [
diff --git a/pkgs/development/python-modules/unstructured/default.nix b/pkgs/development/python-modules/unstructured/default.nix
index 9c5a39aa71754..3b797ed297d70 100644
--- a/pkgs/development/python-modules/unstructured/default.nix
+++ b/pkgs/development/python-modules/unstructured/default.nix
@@ -56,7 +56,7 @@
 , grpcio
 }:
 let
-  version = "0.13.0";
+  version = "0.13.2";
   optional-dependencies = {
     huggingflace = [
       langdetect
@@ -90,7 +90,7 @@ buildPythonPackage {
     owner = "Unstructured-IO";
     repo = "unstructured";
     rev = "refs/tags/${version}";
-    hash = "sha256-zRQOFYAh4QpDNlSPi1h70eOmw/8aTa6yAKBSgTuIhME=";
+    hash = "sha256-6pR/tewHWstgIqqD8Jwj+AQutdhXU5aufm6RiEpXr9s=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/velbus-aio/default.nix b/pkgs/development/python-modules/velbus-aio/default.nix
index abd3fbd0acb2b..f754c828dea3d 100644
--- a/pkgs/development/python-modules/velbus-aio/default.nix
+++ b/pkgs/development/python-modules/velbus-aio/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, backoff
-, buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, pyserial
-, pyserial-asyncio
-, pytestCheckHook
-, setuptools
+{
+  lib,
+  backoff,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pythonOlder,
+  pyserial,
+  pyserial-asyncio,
+  pytestCheckHook,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "velbus-aio";
-  version = "2024.4.0";
+  version = "2024.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,13 +21,11 @@ buildPythonPackage rec {
     owner = "Cereal2nd";
     repo = "velbus-aio";
     rev = "refs/tags/${version}";
-    hash = "sha256-wYcASRmUxVdUpfKlNIteQlHw3ZaYxZ7VenKtaju1yTE=";
+    hash = "sha256-rskWnH5zFvBuNL5eJ8O4D6htRP/XtFcq1xH8ZXzT1I4=";
     fetchSubmodules = true;
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     backoff
@@ -34,13 +33,9 @@ buildPythonPackage rec {
     pyserial-asyncio
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "velbusaio"
-  ];
+  pythonImportsCheck = [ "velbusaio" ];
 
   meta = with lib; {
     description = "Python library to support the Velbus home automation system";
diff --git a/pkgs/development/python-modules/vilfo-api-client/default.nix b/pkgs/development/python-modules/vilfo-api-client/default.nix
index 99a10fd320d3c..b4b9f77304ef7 100644
--- a/pkgs/development/python-modules/vilfo-api-client/default.nix
+++ b/pkgs/development/python-modules/vilfo-api-client/default.nix
@@ -11,14 +11,14 @@
 
 buildPythonPackage rec {
   pname = "vilfo-api-client";
-  version = "0.4.1";
+  version = "0.5.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "ManneW";
     repo = "vilfo-api-client-python";
-    rev = version;
-    hash = "sha256-j06Bbv0hWSmrlCv8RfgvfGTyOF+vSX+zZnX3AvG5Hys=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ZlmriBd+M+54ux/UNYa355mkz808/NxSz7IzmWouA0c=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/wagtail-localize/default.nix b/pkgs/development/python-modules/wagtail-localize/default.nix
index bfcfb72d45c67..9a40ca84f8603 100644
--- a/pkgs/development/python-modules/wagtail-localize/default.nix
+++ b/pkgs/development/python-modules/wagtail-localize/default.nix
@@ -17,16 +17,16 @@
 
 buildPythonPackage rec {
   pname = "wagtail-localize";
-  version = "1.8.2";
+  version = "1.9";
   pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     repo = "wagtail-localize";
     owner = "wagtail";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DBqGFD6piMn9d7Ls/GBeBfeQty/MDvlQY0GP66BA2QE=";
+    hash = "sha256-ENdUXfvQOfd9cgHr6fd5Hf+8AJXFix3YbsYJQfpu4ZE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/wagtail/default.nix b/pkgs/development/python-modules/wagtail/default.nix
index f5ac78b6cb17e..46081138403d8 100644
--- a/pkgs/development/python-modules/wagtail/default.nix
+++ b/pkgs/development/python-modules/wagtail/default.nix
@@ -13,6 +13,7 @@
 , fetchPypi
 , html5lib
 , l18n
+, laces
 , openpyxl
 , permissionedforms
 , pillow
@@ -24,22 +25,19 @@
 
 buildPythonPackage rec {
   pname = "wagtail";
-  version = "6.0.1";
+  version = "6.0.2";
   format = "setuptools";
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Q89luoQwtB5TMWfudbJ2YKeobrBt2L156NZPtK8Feos=";
+    hash = "sha256-58/DwPU/swLxeY8OAqesYHirAusOhwPA9xzL0/GOOG8=";
   };
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "beautifulsoup4>=4.8,<4.12" "beautifulsoup4>=4.8" \
-      --replace "draftjs_exporter>=2.1.5,<3.0" "draftjs_exporter>=2.1.5,<6.0" \
-      --replace "django-taggit>=2.0,<5.0" "django-taggit>=2.0,<6.0" \
-      --replace "Willow[heif]>=1.6.2,<1.7" "Willow[heif]>=1.6.2,<2"
+      --replace "django-filter>=23.3,<24" "django-filter>=23.3,<24.3"
   '';
 
   propagatedBuildInputs = [
@@ -54,6 +52,7 @@ buildPythonPackage rec {
     draftjs-exporter
     html5lib
     l18n
+    laces
     openpyxl
     permissionedforms
     pillow
diff --git a/pkgs/development/python-modules/wand/default.nix b/pkgs/development/python-modules/wand/default.nix
index 0577adf2c91ed..416fa74eaed51 100644
--- a/pkgs/development/python-modules/wand/default.nix
+++ b/pkgs/development/python-modules/wand/default.nix
@@ -43,6 +43,6 @@ buildPythonPackage rec {
     description = "Ctypes-based simple MagickWand API binding for Python";
     homepage = "http://wand-py.org/";
     license = [ licenses.mit ];
-    maintainers = with maintainers; [ infinisil dotlambda ];
+    maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix b/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix
index 91c56472e77ec..b7ee6caf0333b 100644
--- a/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix
+++ b/pkgs/development/python-modules/whirlpool-sixth-sense/default.nix
@@ -1,37 +1,38 @@
-{ lib
-, aioconsole
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, websockets
+{
+  lib,
+  aioconsole,
+  aiohttp,
+  async-timeout,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  websockets,
 }:
 
 buildPythonPackage rec {
   pname = "whirlpool-sixth-sense";
-  version = "0.18.5";
-  format = "pyproject";
+  version = "0.18.8";
+  pyproject = true;
 
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "abmantis";
-    repo = pname;
+    repo = "whirlpool-sixth-sense";
     rev = "refs/tags/${version}";
-    hash = "sha256-0NJsZex054CWfKX2wyJRd6Cnxa89mNrZN59VqIV2MD8=";
+    hash = "sha256-Nmjw6b1k5M4H23tJxUPPJ3JIkuK5ylqEeFp18cGz9pA=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aioconsole
     aiohttp
+    async-timeout
     websockets
   ];
 
diff --git a/pkgs/development/python-modules/whispers/default.nix b/pkgs/development/python-modules/whispers/default.nix
index 357d8d271ff49..346083ef81a1f 100644
--- a/pkgs/development/python-modules/whispers/default.nix
+++ b/pkgs/development/python-modules/whispers/default.nix
@@ -1,24 +1,24 @@
-{ lib
-, astroid
-, beautifulsoup4
-, buildPythonPackage
-, crossplane
-, fetchFromGitHub
-, fetchpatch
-, jellyfish
-, jproperties
-, luhn
-, lxml
-, pytest-mock
-, pytestCheckHook
-, pythonOlder
-, pyyaml
-, setuptools
+{
+  lib,
+  astroid,
+  beautifulsoup4,
+  buildPythonPackage,
+  crossplane,
+  fetchFromGitHub,
+  jellyfish,
+  jproperties,
+  luhn,
+  lxml,
+  pytest-mock,
+  pytestCheckHook,
+  pythonOlder,
+  pyyaml,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "whispers";
-  version = "2.2.0";
+  version = "2.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -27,39 +27,17 @@ buildPythonPackage rec {
     owner = "adeptex";
     repo = "whispers";
     rev = "refs/tags/${version}";
-    hash = "sha256-9vXku8BWJtlf+lmAcQ8a7qTisRNc+xVw0T0Eunc4lt4=";
+    hash = "sha256-YPfTe2txQY/sVEIGSMTA1b3Ye3j8qT+YdWp3AVqpdLI=";
   };
 
-  patches = [
-    # Support astroid > 3, https://github.com/adeptex/whispers/pull/117
-    (fetchpatch {
-      url = "https://github.com/adeptex/whispers/commit/ff25e81cb3d775e5fb186c2d135b77c27d9ed43a.patch";
-      hash = "sha256-jKm7fs04mGUD7MZYAA/3xt01e9knuLun3c3u8PlLebg=";
-    })
-    (fetchpatch {
-      url = "https://github.com/adeptex/whispers/commit/ba6a56dddb12d1cb62f94dd7659ba24fdc4363ee.patch";
-      hash = "sha256-eHWnXHT0lzS7BqneMqfvV3w6GfrCiTJ5i+av82J+fpk=";
-    })
-    (fetchpatch {
-      url = "https://github.com/adeptex/whispers/commit/8b7b1593eb86abfc09b3581d463fc7d0e06309dc.patch";
-      hash = "sha256-JcRdv5eIyXKWaVqbJZlYqiSieE4z0MKF4dvO/hRBBMs=";
-    })
-    (fetchpatch {
-      url = "https://github.com/adeptex/whispers/commit/71dcb614e4d9e0247afc50cd4214659739f8844e.patch";
-      hash = "sha256-7XIFuc8Rf2ValN3BoAJOjSqjgmiOauxCFonMgGljFg0=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace setup.py \
-      --replace '"pytest-runner"' ""
+      --replace-fail '"pytest-runner"' ""
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     astroid
     beautifulsoup4
     crossplane
@@ -80,16 +58,14 @@ buildPythonPackage rec {
     export PATH=$out/bin:$PATH
   '';
 
-  pythonImportsCheck = [
-    "whispers"
-  ];
+  pythonImportsCheck = [ "whispers" ];
 
   meta = with lib; {
     description = "Tool to identify hardcoded secrets in static structured text";
-    mainProgram = "whispers";
     homepage = "https://github.com/adeptex/whispers";
     changelog = "https://github.com/adeptex/whispers/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "whispers";
   };
 }
diff --git a/pkgs/development/python-modules/xknxproject/default.nix b/pkgs/development/python-modules/xknxproject/default.nix
index 1b0098629a92e..bd7e126de6a1d 100644
--- a/pkgs/development/python-modules/xknxproject/default.nix
+++ b/pkgs/development/python-modules/xknxproject/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, pyzipper
-, setuptools
-, striprtf
-, wheel
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  pytestCheckHook,
+  pythonOlder,
+  pyzipper,
+  setuptools,
+  striprtf,
 }:
 
 buildPythonPackage rec {
   pname = "xknxproject";
-  version = "3.7.0";
+  version = "3.7.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,30 +21,23 @@ buildPythonPackage rec {
     owner = "XKNX";
     repo = "xknxproject";
     rev = "refs/tags/${version}";
-    hash = "sha256-tw/hHiiW4ZGlrbQmuIihJmhyIL++Rjpg6q8AdKNsn14=";
+    hash = "sha256-/Zg4MYOvbsbJ0zyKuq+gX0PNbm8TyyBMziIaGCq6Lt8=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-    wheel
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     cryptography
     pyzipper
     striprtf
   ];
 
-  nativeCheckInputs = [
-    pytestCheckHook
-  ];
+  nativeCheckInputs = [ pytestCheckHook ];
 
-  pythonImportsCheck = [
-    "xknxproject"
-  ];
+  pythonImportsCheck = [ "xknxproject" ];
 
   meta = with lib; {
-    description = "ETS project parser";
+    description = "Library to extract KNX projects and parses the underlying XML";
     homepage = "https://github.com/XKNX/xknxproject";
     changelog = "https://github.com/XKNX/xknxproject/releases/tag/${version}";
     license = licenses.gpl2Only;
diff --git a/pkgs/development/python-modules/xmlschema/default.nix b/pkgs/development/python-modules/xmlschema/default.nix
index 5869ad70fcea1..b8c8be9de2dcf 100644
--- a/pkgs/development/python-modules/xmlschema/default.nix
+++ b/pkgs/development/python-modules/xmlschema/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, elementpath
-, jinja2
-, lxml
-, pytestCheckHook
-, pythonOlder
-, setuptools
+{
+  lib,
+  buildPythonPackage,
+  elementpath,
+  fetchFromGitHub,
+  jinja2,
+  lxml,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "xmlschema";
-  version = "3.0.2";
+  version = "3.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,16 +21,12 @@ buildPythonPackage rec {
     owner = "sissaschool";
     repo = "xmlschema";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jYFhoNx4Oxm7c0LsSQ0xw9fY/yxfQU5JoP5RteHzeYM=";
+    hash = "sha256-jhof4C/jbMcvBRTLFdeFq2+ZucoDhbdcLE9IWvgzN0Y=";
   };
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
-    elementpath
-  ];
+  dependencies = [ elementpath ];
 
   nativeCheckInputs = [
     jinja2
@@ -37,14 +34,12 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "xmlschema"
-  ];
+  pythonImportsCheck = [ "xmlschema" ];
 
   meta = with lib; {
-    changelog = "https://github.com/sissaschool/xmlschema/blob/${src.rev}/CHANGELOG.rst";
     description = "XML Schema validator and data conversion library for Python";
     homepage = "https://github.com/sissaschool/xmlschema";
+    changelog = "https://github.com/sissaschool/xmlschema/blob/${src.rev}/CHANGELOG.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/pkgs/development/python-modules/xyzservices/default.nix b/pkgs/development/python-modules/xyzservices/default.nix
index 8836d5195fc2a..6e49ec04eaf33 100644
--- a/pkgs/development/python-modules/xyzservices/default.nix
+++ b/pkgs/development/python-modules/xyzservices/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "xyzservices";
-  version = "2023.10.1";
+  version = "2024.4.0";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-CRIpJpBDvIJYBC7b7a1Py0RoSwRz7eAntWcq1A3J+gI=";
+    hash = "sha256-agTxFIem+3fZKpiYTNEH+9kVf9XmX5Ka3Zw9bmBO6Iw=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/yapsy/default.nix b/pkgs/development/python-modules/yapsy/default.nix
index 161620530ab80..044ce2cf83186 100644
--- a/pkgs/development/python-modules/yapsy/default.nix
+++ b/pkgs/development/python-modules/yapsy/default.nix
@@ -1,21 +1,28 @@
 { lib
-, stdenv
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, setuptools
 , pytestCheckHook
 }:
 
-buildPythonPackage rec {
+buildPythonPackage {
   pname = "yapsy";
-  version = "1.12.2";
-  format = "setuptools";
+  version = "1.12.2-unstable-2023-03-29";
+  pyproject = true;
 
-  src = fetchPypi {
-    pname = "Yapsy";
-    inherit version;
-    sha256 = "12rznbnswfw0w7qfbvmmffr9r317gl1rqg36nijwzsklkjgks4fq";
+  src = fetchFromGitHub {
+    owner = "tibonihoo";
+    repo = "yapsy";
+    rev = "6b487b04affb19ab40adbbc87827668bea0abcee";
+    hash = "sha256-QKZlUAhYMCCsT/jbEHb39ESZ2+2FZYnhJnc1PgsozBA=";
   };
 
+  sourceRoot = "source/package";
+
+  build-system = [
+    setuptools
+  ];
+
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "yapsy" ];
@@ -23,6 +30,6 @@ buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://yapsy.sourceforge.net/";
     description = "Yet another plugin system";
-    license = licenses.bsd0;
+    license = licenses.bsd2;
   };
 }
diff --git a/pkgs/development/python-modules/yolink-api/default.nix b/pkgs/development/python-modules/yolink-api/default.nix
index b52b2268a4009..c1b4703ea4d4a 100644
--- a/pkgs/development/python-modules/yolink-api/default.nix
+++ b/pkgs/development/python-modules/yolink-api/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, aiohttp
-, aiomqtt
-, buildPythonPackage
-, fetchFromGitHub
-, pydantic
-, pythonOlder
-, setuptools
-, tenacity
+{
+  lib,
+  aiohttp,
+  aiomqtt,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pydantic,
+  pythonOlder,
+  setuptools,
+  tenacity,
 }:
 
 buildPythonPackage rec {
   pname = "yolink-api";
-  version = "0.4.1";
+  version = "0.4.3";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,12 +21,10 @@ buildPythonPackage rec {
     owner = "YoSmart-Inc";
     repo = "yolink-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-YDfwF9ldL43yrhz1TibTatkZIccYTpNODdjqBkzeh1s=";
+    hash = "sha256-cLuto2V5i3au1MRYYbgR2plw9YBpgIAxsG2fu4t37jk=";
   };
 
-  build-system = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
   dependencies = [
     aiohttp
@@ -37,9 +36,7 @@ buildPythonPackage rec {
   # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [
-    "yolink"
-  ];
+  pythonImportsCheck = [ "yolink" ];
 
   meta = with lib; {
     description = "Library to interface with Yolink";
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index c721259efa432..a65afbbd3ffed 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -14,30 +14,30 @@
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.131.0";
-  format = "pyproject";
+  version = "0.132.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "jstasiak";
     repo = "python-zeroconf";
     rev = "refs/tags/${version}";
-    hash = "sha256-l+uz+wj+tgptxEjEN8ZlmxH8I4Nhrg8qAY3yCcOgBfE=";
+    hash = "sha256-eHB+SkJU5aTQPF7QqRhYHMBJgN7EYZkwtk7gjxWxIno=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "Cython>=3.0.5" "Cython"
+      --replace-fail "Cython>=3.0.8" "Cython"
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     cython_3
     poetry-core
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     ifaddr
   ] ++ lib.optionals (pythonOlder "3.11") [
     async-timeout
@@ -70,9 +70,9 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    changelog = "https://github.com/python-zeroconf/python-zeroconf/releases/tag/${version}";
     description = "Python implementation of multicast DNS service discovery";
     homepage = "https://github.com/python-zeroconf/python-zeroconf";
+    changelog = "https://github.com/python-zeroconf/python-zeroconf/releases/tag/${version}";
     license = licenses.lgpl21Only;
     maintainers = with maintainers; [ abbradar ];
   };
diff --git a/pkgs/development/python-modules/zha-quirks/default.nix b/pkgs/development/python-modules/zha-quirks/default.nix
index f7e7c7f4f26ab..03413fc6f1fcf 100644
--- a/pkgs/development/python-modules/zha-quirks/default.nix
+++ b/pkgs/development/python-modules/zha-quirks/default.nix
@@ -1,39 +1,38 @@
-{ lib
-, aiohttp
-, buildPythonPackage
-, fetchFromGitHub
-, pytest-asyncio
-, pytestCheckHook
-, pythonOlder
-, setuptools
-, zigpy
+{
+  lib,
+  aiohttp,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pytest-asyncio,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  zigpy,
 }:
 
 buildPythonPackage rec {
   pname = "zha-quirks";
-  version = "0.0.112";
+  version = "0.0.114";
   pyproject = true;
 
-  disabled = pythonOlder "3.8";
+  disabled = pythonOlder "3.12";
 
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "zha-device-handlers";
     rev = "refs/tags/${version}";
-    hash = "sha256-wI7mpX6oFV/RrxH/UP1X9Odago0CxJ5dhjKAsDS+Sq4=";
+    hash = "sha256-FipD4VCz2/FYlf17+q7LTej9ZtT72/R4ELkAQtw7RvE=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace ', "setuptools-git-versioning<2"' "" \
-      --replace 'dynamic = ["version"]' 'version = "${version}"'
+      --replace-fail ', "setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
-    setuptools
-  ];
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     aiohttp
     zigpy
   ];
@@ -50,9 +49,7 @@ buildPythonPackage rec {
     "test_smart_air_sensor"
   ];
 
-  pythonImportsCheck = [
-    "zhaquirks"
-  ];
+  pythonImportsCheck = [ "zhaquirks" ];
 
   meta = with lib; {
     description = "ZHA Device Handlers are custom quirks implementations for Zigpy";
diff --git a/pkgs/development/python-modules/zha/default.nix b/pkgs/development/python-modules/zha/default.nix
new file mode 100644
index 0000000000000..6e749edb9f257
--- /dev/null
+++ b/pkgs/development/python-modules/zha/default.nix
@@ -0,0 +1,126 @@
+{ lib
+, awesomeversion
+, bellows
+, buildPythonPackage
+, fetchFromGitHub
+, pyserial
+, pyserial-asyncio
+, pyserial-asyncio-fast
+, pytest-asyncio
+, pytest-timeout
+, pytest-xdist
+, pytestCheckHook
+, python-slugify
+, pythonOlder
+, pythonRelaxDepsHook
+, setuptools
+, universal-silabs-flasher
+, wheel
+, zha-quirks
+, zigpy
+, zigpy-deconz
+, zigpy-xbee
+, zigpy-zigate
+, zigpy-znp
+}:
+
+buildPythonPackage rec {
+  pname = "zha";
+  version = "0.0.5";
+  pyproject = true;
+
+  disabled = pythonOlder "3.12";
+
+  src = fetchFromGitHub {
+    owner = "zigpy";
+    repo = "zha";
+    rev = "refs/tags/${version}";
+    hash = "sha256-47dlWMzY1vPmHIDCy8a0xzk2G+OPq6vEK5OpP1c8vw4=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail '"setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
+  '';
+
+  pythonRelaxDeps = [
+    "universal-silabs-flasher"
+    "zha-quirks"
+  ];
+
+
+
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
+  ];
+
+  build-system = [
+    setuptools
+    wheel
+  ];
+
+  dependencies = [
+    awesomeversion
+    bellows
+    pyserial
+    pyserial-asyncio
+    pyserial-asyncio-fast
+    python-slugify
+    universal-silabs-flasher
+    zha-quirks
+    zigpy
+    zigpy-deconz
+    zigpy-xbee
+    zigpy-zigate
+    zigpy-znp
+  ];
+
+  nativeCheckInputs = [
+    pytest-asyncio
+    pytest-timeout
+    pytest-xdist
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "zha"
+  ];
+
+  disabledTests = [
+    # Tests are long-running and often keep hanging
+    "test_check_available_no_basic_cluster_handler"
+    "test_check_available_success"
+    "test_check_available_unsuccessful"
+    "test_device_counter_sensors"
+    "test_device_tracker"
+    "test_elec_measurement_sensor_polling"
+    "test_electrical_measurement_init"
+    "test_group_member_assume_state"
+    "test_light_refresh"
+    "test_light"
+    "test_light"
+    "test_light"
+    "test_pollers_skip"
+    "test_sinope_time"
+    "test_siren_timed_off"
+    "test_zha_group_light_entity"
+  ];
+
+  disabledTestPaths = [
+    "tests/test_cluster_handlers.py"
+  ];
+
+  pytestFlagsArray = [
+    "-v"
+    "--timeout=5"
+  ];
+
+  meta = with lib; {
+    description = "Zigbee Home Automation";
+    homepage = "https://github.com/zigpy/zha";
+    changelog = "https://github.com/zigpy/zha/releases/tag/${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/zigpy/default.nix b/pkgs/development/python-modules/zigpy/default.nix
index 2b7060ddc223f..0a32dea6649a1 100644
--- a/pkgs/development/python-modules/zigpy/default.nix
+++ b/pkgs/development/python-modules/zigpy/default.nix
@@ -1,12 +1,16 @@
 { lib
 , aiohttp
-, aiosqlite
 , aioresponses
+, aiosqlite
+, async-timeout
+, attrs
 , buildPythonPackage
 , crccheck
 , cryptography
-, freezegun
 , fetchFromGitHub
+, freezegun
+, importlib-resources
+, jsonschema
 , pycryptodome
 , pyserial-asyncio
 , pytest-asyncio
@@ -14,12 +18,13 @@
 , pytestCheckHook
 , pythonOlder
 , setuptools
+, typing-extensions
 , voluptuous
 }:
 
 buildPythonPackage rec {
   pname = "zigpy";
-  version = "0.63.4";
+  version = "0.63.5";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,27 +33,34 @@ buildPythonPackage rec {
     owner = "zigpy";
     repo = "zigpy";
     rev = "refs/tags/${version}";
-    hash = "sha256-0wenUUkhgodsBID+ZT9JRoJeGDTqAChAIpj+9/Q3FMM=";
+    hash = "sha256-iZxHXxheyoA5vo0Pxojs7QE8rSyTpsYpJ6/OzDSZJ20=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '"setuptools-git-versioning<2"' "" \
-      --replace 'dynamic = ["version"]' 'version = "${version}"'
+      --replace-fail '"setuptools-git-versioning<2"' "" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
+    attrs
     aiohttp
     aiosqlite
     crccheck
     cryptography
+    jsonschema
     pyserial-asyncio
+    typing-extensions
     pycryptodome
     voluptuous
+  ] ++ lib.optionals (pythonOlder "3.9") [
+    importlib-resources
+  ] ++ lib.optionals (pythonOlder "3.11") [
+    async-timeout
   ];
 
   nativeCheckInputs = [
@@ -66,6 +78,11 @@ buildPythonPackage rec {
     "test_periodic_scan_priority"
   ];
 
+  disabledTestPaths = [
+    # Tests require network access
+    "tests/ota/test_ota_providers.py"
+  ];
+
   pythonImportsCheck = [
     "zigpy.application"
     "zigpy.config"
diff --git a/pkgs/development/python-modules/zodb/default.nix b/pkgs/development/python-modules/zodb/default.nix
index c90cc42a33838..2ac592db42239 100644
--- a/pkgs/development/python-modules/zodb/default.nix
+++ b/pkgs/development/python-modules/zodb/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "zodb";
-  version = "5.8.1";
+  version = "6.0";
 
   src = fetchPypi {
     pname = "ZODB";
     inherit version;
-    hash = "sha256-xsc6vTZg1gb/wfIfl97xS1K0b0pwLsnm7kSabiviZN8=";
+    hash = "sha256-5Rx5IRXF2q1OgGdXuvovdUwADCPmurw75eQHdf5Jtdw=";
   };
 
   # remove broken test
diff --git a/pkgs/development/r-modules/bioc-packages.nix b/pkgs/development/r-modules/bioc-packages.nix
index 36fb5e2a30c43..818fa41a432f4 100644
--- a/pkgs/development/r-modules/bioc-packages.nix
+++ b/pkgs/development/r-modules/bioc-packages.nix
@@ -118,7 +118,7 @@ in with self; {
   BiocHubsShiny = derive2 { name="BiocHubsShiny"; version="1.2.0"; sha256="1sz27svvpvcys4b9p53da1javkh5k9235pzsjvn2wx76gi6b1jkj"; depends=[AnnotationHub DT ExperimentHub htmlwidgets S4Vectors shiny shinyAce shinyjs shinythemes shinytoastr]; };
   BiocIO = derive2 { name="BiocIO"; version="1.12.0"; sha256="0bn2jknvj2ag1yv67kjqr7gsq771rmqv3my9njjkwcc9nzrxzhbp"; depends=[BiocGenerics S4Vectors]; };
   BiocNeighbors = derive2 { name="BiocNeighbors"; version="1.20.2"; sha256="0lvsw920i75di5pwq7yvk8wcxp01wrh7863xmwbrmk5jrvl3y4h4"; depends=[BiocParallel Matrix Rcpp RcppHNSW S4Vectors]; };
-  BiocOncoTK = derive2 { name="BiocOncoTK"; version="1.22.0"; sha256="1xymgfiv9abyaq5s7m683ml8a1ls9mqvbh9qjiz3jqbbpvmsm502"; depends=[bigrquery car ComplexHeatmap curatedTCGAData DBI dplyr DT GenomicFeatures GenomicRanges ggplot2 ggpubr graph httr IRanges magrittr MASS plyr Rgraphviz rjson S4Vectors scales shiny SummarizedExperiment]; };
+  BiocOncoTK = derive2 { name="BiocOncoTK"; version="1.22.2"; sha256="0yx32yj9bw78nhbv1yvgs26sxdmnava1a89g9hs4ai26c1hy150s"; depends=[bigrquery car ComplexHeatmap curatedTCGAData DBI dplyr DT GenomicFeatures GenomicRanges ggplot2 ggpubr graph httr IRanges magrittr MASS plyr Rgraphviz rjson S4Vectors scales shiny SummarizedExperiment]; };
   BiocParallel = derive2 { name="BiocParallel"; version="1.36.0"; sha256="19h80qf0zdxfg3pkcwwywh9gg0ymv92n51qpimnw4c3w5iaszy6b"; depends=[BH codetools cpp11 futile_logger snow]; };
   BiocPkgTools = derive2 { name="BiocPkgTools"; version="1.20.0"; sha256="0swi6xiads31xcndc2cfzh0ivdl0wc88s83s1p1gxh51rgmgkb14"; depends=[BiocFileCache BiocManager biocViews dplyr DT gh graph htmltools htmlwidgets httr igraph jsonlite magrittr RBGL readr rlang rorcid rvest stringr tibble xml2]; };
   BiocSet = derive2 { name="BiocSet"; version="1.16.1"; sha256="1qmi6b0hrfzj7ixcbxlsxyy3qg7d2qrq8jcjrjrgfyrgcfws46qd"; depends=[AnnotationDbi BiocIO dplyr KEGGREST ontologyIndex plyr rlang S4Vectors tibble tidyr]; };
diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix
index 994b6349a616f..f6223fecd56d1 100644
--- a/pkgs/development/r-modules/default.nix
+++ b/pkgs/development/r-modules/default.nix
@@ -308,6 +308,7 @@ let
     FactoMineR = [ self.car ];
     pander = [ self.codetools ];
     rmsb = [ self.rstantools ];
+    interactiveDisplay = [ self.BiocManager ];
   };
 
   packagesWithNativeBuildInputs = {
@@ -355,7 +356,7 @@ let
     gslnls = [ pkgs.gsl ];
     gert = [ pkgs.libgit2 ];
     haven = with pkgs; [ zlib.dev ];
-    h5vc = [ pkgs.zlib.dev ];
+    h5vc = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
     highs = [ pkgs.which pkgs.cmake ];
     rbedrock = [ pkgs.zlib.dev pkgs.which pkgs.cmake ];
     HiCseg = [ pkgs.gsl ];
@@ -546,6 +547,8 @@ let
     bayesWatch = [ pkgs.boost.dev ];
     clustermq = [  pkgs.pkg-config ];
     coga = [ pkgs.gsl.dev ];
+    deepSNV = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
+    epialleleR = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
     gpg = [ pkgs.gpgme ];
     webp = [ pkgs.libwebp ];
     RMark = [ pkgs.which ];
@@ -562,6 +565,7 @@ let
     apsimx = [ pkgs.which ];
     cairoDevice = [ pkgs.pkg-config ];
     chebpol = [ pkgs.pkg-config ];
+    eds = [ pkgs.zlib.dev ];
     fftw = [ pkgs.pkg-config ];
     gdtools = [ pkgs.pkg-config ];
     archive = [ pkgs.libarchive];
@@ -578,6 +582,8 @@ let
     odbc = [ pkgs.pkg-config ];
     openssl = [ pkgs.pkg-config ];
     pdftools = [ pkgs.pkg-config ];
+    qckitfastq = [ pkgs.zlib.dev ];
+    RQuantLib = with pkgs; [ quantlib.dev boost.dev ];
     sf = with pkgs; [ pkg-config sqlite.dev proj.dev ];
     terra = with pkgs; [ pkg-config sqlite.dev proj.dev ];
     showtext = [ pkgs.pkg-config ];
@@ -605,12 +611,14 @@ let
     s2 = [ pkgs.openssl.dev ];
     ArrayExpressHTS = with pkgs; [ zlib.dev curl.dev which ];
     bbl = with pkgs; [ gsl ];
+    diffHic = with pkgs; [ xz.dev bzip2.dev ];
     writexl = with pkgs; [ zlib.dev ];
     xslt = with pkgs; [ libxslt libxml2 ];
     qpdf = with pkgs; [ libjpeg.dev zlib.dev ];
     vcfR = with pkgs; [ zlib.dev ];
     bio3d = with pkgs; [ zlib.dev ];
     arrangements = with pkgs; [ gmp.dev ];
+    gfilogisreg = [ pkgs.gmp.dev ];
     spp = with pkgs; [ zlib.dev ];
     bamsignals = with pkgs; [ zlib.dev xz.dev bzip2 ];
     Rbowtie = with pkgs; [ zlib.dev ];
@@ -624,7 +632,9 @@ let
     HiCDCPlus = [ pkgs.zlib.dev ];
     PopGenome = [ pkgs.zlib.dev ];
     QuasR = with pkgs; [ zlib.dev xz.dev bzip2.dev ];
+    Rarr = [ pkgs.zlib.dev ];
     Rbowtie2 = [ pkgs.zlib.dev ];
+    Rfastp = with pkgs; [ xz.dev bzip2.dev zlib.dev ];
     maftools = with pkgs; [ zlib.dev bzip2 xz.dev ];
     Rmmquant = [ pkgs.zlib.dev ];
     SICtools = with pkgs; [ zlib.dev ncurses.dev ];
@@ -647,16 +657,16 @@ let
     rhdf5filters = with pkgs; [ zlib.dev bzip2.dev ];
     symengine = with pkgs; [ mpfr symengine flint ];
     rtk = [ pkgs.zlib.dev ];
-    scPipe = [ pkgs.zlib.dev ];
+    scPipe = with pkgs; [ bzip2.dev xz.dev zlib.dev ];
     seqTools = [ pkgs.zlib.dev ];
-    seqbias = [ pkgs.zlib.dev ];
+    seqbias = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
     sparkwarc = [ pkgs.zlib.dev ];
     RoBMA = [ pkgs.jags ];
     pexm = [ pkgs.jags ];
     rGEDI = with pkgs; [ libgeotiff.dev libaec zlib.dev hdf5.dev ];
     rawrr = [ pkgs.mono ];
     HDF5Array = [ pkgs.zlib.dev ];
-    FLAMES = [ pkgs.zlib.dev ];
+    FLAMES = with pkgs; [ zlib.dev bzip2.dev xz.dev ];
     ncdfFlow = [ pkgs.zlib.dev ];
     proj4 = [ pkgs.proj.dev ];
     rtmpt = [ pkgs.gsl ];
@@ -946,8 +956,11 @@ let
 
   packagesToSkipCheck = [
     "Rmpi"     # tries to run MPI processes
+    "ReactomeContentService4R" # tries to connect to Reactome
+    "PhIPData" # tries to download something from a DB
     "pbdMPI"   # tries to run MPI processes
     "data_table" # fails to rename shared library before check
+    "multiMiR" # tries to connect to DB
   ];
 
   # Packages which cannot be installed due to lack of dependencies or other reasons.
@@ -969,6 +982,7 @@ let
     "DuoClustering2018"
     "FieldEffectCrc"
     "GenomicDistributionsData"
+    "hpar"
     "HDCytoData"
     "HMP16SData"
     "PANTHER_db"
@@ -986,6 +1000,7 @@ let
     "muscData"
     "org_Mxanthus_db"
     "scpdata"
+    "signatureSearch"
     "nullrangesData"
   ];
 
@@ -1063,6 +1078,10 @@ let
       patchPhase = "patchShebangs configure";
     });
 
+    SpliceWiz = old.SpliceWiz.overrideAttrs (attrs: {
+      postPatch = "patchShebangs configure";
+    });
+
     data_table = old.data_table.overrideAttrs (attrs: {
       env = (attrs.env or { }) // {
         NIX_CFLAGS_COMPILE = attrs.env.NIX_CFLAGS_COMPILE + " -fopenmp";
@@ -1099,6 +1118,23 @@ let
       };
     });
 
+    rawrr = old.rawrr.overrideAttrs (attrs: {
+      postPatch = ''
+        substituteInPlace "R/zzz.R" "R/dotNetAssembly.R" --replace-warn \
+          "Sys.which('mono')" "'${lib.getBin pkgs.mono}/bin/mono'"
+
+        substituteInPlace "R/dotNetAssembly.R" --replace-warn \
+          "Sys.which(\"xbuild\")" "\"${lib.getBin pkgs.mono}/bin/xbuild\""
+
+        substituteInPlace "R/dotNetAssembly.R" --replace-warn \
+          "cmd <- ifelse(Sys.which(\"msbuild\") != \"\", \"msbuild\", \"xbuild\")" \
+          "cmd <- \"${lib.getBin pkgs.mono}/bin/xbuild\""
+
+        substituteInPlace "R/rawrr.R" --replace-warn \
+          "Sys.which(\"mono\")" "\"${lib.getBin pkgs.mono}/bin/mono\""
+      '';
+    });
+
     rpf = old.rpf.overrideAttrs (attrs: {
       patchPhase = "patchShebangs configure";
     });
@@ -1206,6 +1242,10 @@ let
       patches = [ ./patches/spMC.patch ];
     });
 
+    FLAMES = old.FLAMES.overrideAttrs (attrs: {
+      patches = [ ./patches/FLAMES.patch ];
+    });
+
     openssl = old.openssl.overrideAttrs (attrs: {
       preConfigure = ''
         patchShebangs configure
diff --git a/pkgs/development/r-modules/patches/FLAMES.patch b/pkgs/development/r-modules/patches/FLAMES.patch
new file mode 100644
index 0000000000000..334ea5156f9af
--- /dev/null
+++ b/pkgs/development/r-modules/patches/FLAMES.patch
@@ -0,0 +1,17 @@
+diff --git a/src/Makevars b/src/Makevars
+index 4f3fa42ce752..e48e45561292 100755
+--- a/src/Makevars
++++ b/src/Makevars
+@@ -24,12 +24,6 @@ FILES = $(CFILES) $(CPPFILES)
+ SOURCES = $(FILES)
+ OBJECTS = $(CPPFILES:.cpp=.o) $(CFILES:.c=.o)
+ 
+-strippedLib: $(SHLIB)
+-	if test -e "/usr/bin/strip" & test -e "/bin/uname" & [[ `uname` == "Linux" ]] ; then /usr/bin/strip --strip-debug $(SHLIB); fi
+-clean:
+-	rm $(OBJECTS)
+-.phony: strippedLib clean
+-
+ RHTSLIB_LIBS=$(shell "${R_HOME}/bin${R_ARCH_BIN}/Rscript" -e \
+     'Rhtslib::pkgconfig("PKG_LIBS")')
+ RHTSLIB_CPPFLAGS=$(shell "${R_HOME}/bin${R_ARCH_BIN}/Rscript" -e \
diff --git a/pkgs/development/rocm-modules/5/miopen/default.nix b/pkgs/development/rocm-modules/5/miopen/default.nix
index 33959efa00ebd..1c072ef1a304d 100644
--- a/pkgs/development/rocm-modules/5/miopen/default.nix
+++ b/pkgs/development/rocm-modules/5/miopen/default.nix
@@ -156,6 +156,7 @@ in stdenv.mkDerivation (finalAttrs: {
     python3Packages.breathe
     python3Packages.myst-parser
   ] ++ lib.optionals buildTests [
+    gtest
     zlib
   ];
 
@@ -190,6 +191,9 @@ in stdenv.mkDerivation (finalAttrs: {
     substituteInPlace test/gtest/CMakeLists.txt \
       --replace "include(googletest)" ""
 
+    substituteInPlace test/gtest/CMakeLists.txt \
+      --replace-fail " gtest_main " " ${gtest}/lib/libgtest.so ${gtest}/lib/libgtest_main.so "
+
     ln -sf ${gfx900} src/kernels/gfx900.kdb
     ln -sf ${gfx906} src/kernels/gfx906.kdb
     ln -sf ${gfx908} src/kernels/gfx908.kdb
diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix
index 90a9da83bf833..194ce9fd8ce1a 100644
--- a/pkgs/development/rocm-modules/6/default.nix
+++ b/pkgs/development/rocm-modules/6/default.nix
@@ -150,7 +150,10 @@ in rec {
     stdenv = llvm.rocmClangStdenv;
   };
 
-  hiprand = rocrand; # rocrand includes hiprand
+  hiprand = callPackage ./hiprand {
+    inherit rocmUpdateScript rocm-cmake clr rocrand;
+    stdenv = llvm.rocmClangStdenv;
+  };
 
   rocfft = callPackage ./rocfft {
     inherit rocmUpdateScript rocm-cmake rocrand rocfft clr;
diff --git a/pkgs/development/rocm-modules/6/hiprand/default.nix b/pkgs/development/rocm-modules/6/hiprand/default.nix
new file mode 100644
index 0000000000000..7251a0e5a07e5
--- /dev/null
+++ b/pkgs/development/rocm-modules/6/hiprand/default.nix
@@ -0,0 +1,76 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rocmUpdateScript
+, cmake
+, rocm-cmake
+, clr
+, rocrand
+, gtest
+, buildTests ? false
+, gpuTargets ? [ ]
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "hiprand";
+  version = "6.0.2";
+
+  outputs = [
+    "out"
+  ] ++ lib.optionals buildTests [
+    "test"
+  ];
+
+  src = fetchFromGitHub {
+    owner = "ROCm";
+    repo = "hipRAND";
+    rev = "rocm-${finalAttrs.version}";
+    hash = "sha256-uGHzOhUX5JEknVFwhHhWFdPmwLS/TuaXYMeItS7tXIg=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    rocm-cmake
+    clr
+  ];
+
+  buildInputs = [ rocrand ] ++ (lib.optionals buildTests [ gtest ]);
+
+  cmakeFlags = [
+    "-DCMAKE_C_COMPILER=hipcc"
+    "-DCMAKE_CXX_COMPILER=hipcc"
+    "-DHIP_ROOT_DIR=${clr}"
+    # Manually define CMAKE_INSTALL_<DIR>
+    # See: https://github.com/NixOS/nixpkgs/pull/197838
+    "-DCMAKE_INSTALL_BINDIR=bin"
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DCMAKE_INSTALL_INCLUDEDIR=include"
+  ] ++ lib.optionals (gpuTargets != [ ]) [
+    "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
+  ] ++ lib.optionals buildTests [
+    "-DBUILD_TEST=ON"
+  ];
+
+  postInstall = lib.optionalString buildTests ''
+    mkdir -p $test/bin
+    mv $out/bin/test_* $test/bin
+    rm -r $out/bin/hipRAND
+    # Fail if bin/ isn't actually empty
+    rmdir $out/bin
+  '';
+
+  passthru.updateScript = rocmUpdateScript {
+    name = finalAttrs.pname;
+    owner = finalAttrs.src.owner;
+    repo = finalAttrs.src.repo;
+  };
+
+  meta = with lib; {
+    description = "A HIP wrapper for rocRAND and cuRAND";
+    homepage = "https://github.com/ROCm/hipRAND";
+    license = with licenses; [ mit ];
+    maintainers = teams.rocm.members;
+    platforms = platforms.linux;
+    broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
+  };
+})
diff --git a/pkgs/development/rocm-modules/6/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix
index f78bcb602e698..09bcf10429530 100644
--- a/pkgs/development/rocm-modules/6/miopen/default.nix
+++ b/pkgs/development/rocm-modules/6/miopen/default.nix
@@ -155,6 +155,7 @@ in stdenv.mkDerivation (finalAttrs: {
     python3Packages.breathe
     python3Packages.myst-parser
   ] ++ lib.optionals buildTests [
+    gtest
     zlib
   ];
 
@@ -185,6 +186,9 @@ in stdenv.mkDerivation (finalAttrs: {
     substituteInPlace test/gtest/CMakeLists.txt \
       --replace "include(googletest)" ""
 
+    substituteInPlace test/gtest/CMakeLists.txt \
+      --replace-fail " gtest_main " " ${gtest}/lib/libgtest.so ${gtest}/lib/libgtest_main.so "
+
     ln -sf ${gfx900} src/kernels/gfx900.kdb
     ln -sf ${gfx906} src/kernels/gfx906.kdb
     ln -sf ${gfx908} src/kernels/gfx908.kdb
diff --git a/pkgs/development/rocm-modules/6/rocrand/default.nix b/pkgs/development/rocm-modules/6/rocrand/default.nix
index f09ff3b12059a..7d0e80b5af4e6 100644
--- a/pkgs/development/rocm-modules/6/rocrand/default.nix
+++ b/pkgs/development/rocm-modules/6/rocrand/default.nix
@@ -29,7 +29,6 @@ stdenv.mkDerivation (finalAttrs: {
     repo = "rocRAND";
     rev = "rocm-${finalAttrs.version}";
     hash = "sha256-BBkcYOP+zh3OQTxuSkeiJizwnE9Gr5Jbhx0e8SU/mmU=";
-    fetchSubmodules = true; # For inline hipRAND
   };
 
   nativeBuildInputs = [
@@ -68,6 +67,8 @@ stdenv.mkDerivation (finalAttrs: {
     mkdir -p $benchmark/bin
     mv $out/bin/benchmark_* $benchmark/bin
   '' + lib.optionalString (buildTests || buildBenchmarks) ''
+    rm -r $out/bin/rocRAND
+    # Fail if bin/ isn't actually empty
     rmdir $out/bin
   '';
 
diff --git a/pkgs/development/tools/allure/default.nix b/pkgs/development/tools/allure/default.nix
index 82c05637c10a9..ddae95298e47d 100644
--- a/pkgs/development/tools/allure/default.nix
+++ b/pkgs/development/tools/allure/default.nix
@@ -2,7 +2,7 @@
 
 let
   pname = "allure";
-  version = "2.27.0";
+  version = "2.28.0";
 in
 stdenv.mkDerivation rec {
   inherit pname version;
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://github.com/allure-framework/allure2/releases/download/${version}/allure-${version}.tgz";
-    sha256 = "sha256-gasOVDCNxuZlyeDbloV6iL6DAInHPEXHAvnfUfoj+gA=";
+    sha256 = "sha256-n+wmmY2936PQkHuS9DS7f51n3Eko/OM7nHHFbi85+Lk=";
   };
   dontConfigure = true;
   dontBuild = true;
diff --git a/pkgs/development/tools/altair-graphql-client/default.nix b/pkgs/development/tools/altair-graphql-client/default.nix
index d959c4eba3e6e..3be3625cd696e 100644
--- a/pkgs/development/tools/altair-graphql-client/default.nix
+++ b/pkgs/development/tools/altair-graphql-client/default.nix
@@ -2,11 +2,11 @@
 
 let
   pname = "altair";
-  version = "6.3.1";
+  version = "6.4.0";
 
   src = fetchurl {
     url = "https://github.com/imolorhe/altair/releases/download/v${version}/altair_${version}_x86_64_linux.AppImage";
-    sha256 = "sha256-ebRwdivDxjcM3dD+RLW09otT/wovz1JjgXai2TsuSOE=";
+    sha256 = "sha256-eUUPfMwCMrMHk2RcLfpI8VuolgI/7geY6/6QrWjkIXg=";
   };
 
   appimageContents = appimageTools.extract { inherit pname version src; };
diff --git a/pkgs/development/tools/amazon-qldb-shell/default.nix b/pkgs/development/tools/amazon-qldb-shell/default.nix
index 351a8bf5fabc3..0200f4e0fb3cb 100644
--- a/pkgs/development/tools/amazon-qldb-shell/default.nix
+++ b/pkgs/development/tools/amazon-qldb-shell/default.nix
@@ -38,6 +38,8 @@ let
       license = licenses.asl20;
       maintainers = [ maintainers.terlar ];
       mainProgram = "qldb";
+      # See https://hydra.nixos.org/build/255146098/log.
+      broken = true; # Added 2024-04-06
     };
   };
 in
diff --git a/pkgs/development/tools/analysis/checkov/default.nix b/pkgs/development/tools/analysis/checkov/default.nix
index 44aea9180aa14..5adeefc36d32b 100644
--- a/pkgs/development/tools/analysis/checkov/default.nix
+++ b/pkgs/development/tools/analysis/checkov/default.nix
@@ -6,14 +6,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "checkov";
-  version = "3.2.53";
+  version = "3.2.60";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bridgecrewio";
     repo = "checkov";
     rev = "refs/tags/${version}";
-    hash = "sha256-fldD2V/Qlwg6tvl3IxdLEzc2meWToIeGHQCsMM+b2vI=";
+    hash = "sha256-uHHNbfapnMDhIsOHRAsxNuRCvf6N3Wui/lU5lQpr+7Y=";
   };
 
   patches = [ ./flake8-compat-5.x.patch ];
@@ -40,10 +40,13 @@ python3.pkgs.buildPythonApplication rec {
   ];
 
   build-system = with python3.pkgs; [
-    pythonRelaxDepsHook
     setuptools-scm
   ];
 
+  nativeBuildInputs = with python3.pkgs; [
+    pythonRelaxDepsHook
+  ];
+
   dependencies = with python3.pkgs; [
     aiodns
     aiohttp
diff --git a/pkgs/development/tools/analysis/hopper/default.nix b/pkgs/development/tools/analysis/hopper/default.nix
index d7b519b04c347..2d28046033467 100644
--- a/pkgs/development/tools/analysis/hopper/default.nix
+++ b/pkgs/development/tools/analysis/hopper/default.nix
@@ -68,7 +68,6 @@ stdenv.mkDerivation rec {
     description = "A macOS and Linux Disassembler";
     license = licenses.unfree;
     maintainers = with maintainers; [
-      luis
       Enteee
     ];
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/analysis/include-what-you-use/default.nix b/pkgs/development/tools/analysis/include-what-you-use/default.nix
index 7266b76a4ad63..6e7f6d5eea1af 100644
--- a/pkgs/development/tools/analysis/include-what-you-use/default.nix
+++ b/pkgs/development/tools/analysis/include-what-you-use/default.nix
@@ -3,11 +3,11 @@
 stdenv.mkDerivation rec {
   pname = "include-what-you-use";
   # Also bump llvmPackages in all-packages.nix to the supported version!
-  version = "0.21";
+  version = "0.22";
 
   src = fetchurl {
     url = "${meta.homepage}/downloads/${pname}-${version}.src.tar.gz";
-    hash = "sha256-ajUZGf+JvafJXIlUcmAYaNs9qrlqlYs44DYokNWHYLY=";
+    hash = "sha256-hZB0tGHqS4MlpzQYwgfKM7XmVmsI5rWH65FkQWVppt0=";
   };
 
   postPatch = ''
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     substituteInPlace $out/bin/iwyu_tool.py \
-      --replace "'include-what-you-use'" "'$out/bin/include-what-you-use'"
+      --replace-fail "'include-what-you-use'" "'$out/bin/include-what-you-use'"
 
 
     mv $out/bin/include-what-you-use $out/bin/.include-what-you-use-unwrapped
diff --git a/pkgs/development/tools/analysis/radare2/default.nix b/pkgs/development/tools/analysis/radare2/default.nix
index a053d40c89f11..61ac7bbfe4640 100644
--- a/pkgs/development/tools/analysis/radare2/default.nix
+++ b/pkgs/development/tools/analysis/radare2/default.nix
@@ -47,13 +47,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "radare2";
-  version = "5.8.8";
+  version = "5.9.0";
 
   src = fetchFromGitHub {
     owner = "radare";
     repo = "radare2";
     rev = "refs/tags/${version}";
-    hash = "sha256-JGNV5xSyrjcO2ZgOjzDqzfZyALPSCyA3DZx/D8ffmKA=";
+    hash = "sha256-h2IYOGr+yCgCJR1gB4jibcUt1A+8IuNVoTUcJ83lKHw=";
   };
 
   preBuild = ''
@@ -79,6 +79,12 @@ stdenv.mkDerivation rec {
    "-Dr2_gittap=${version}"
   ];
 
+  # TODO: remove when upstream fixes the issue
+  # https://github.com/radareorg/radare2/issues/22793
+  env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.isDarwin [
+     "-DTHREAD_CONVERT_THREAD_STATE_TO_SELF=1"
+  ]);
+
   enableParallelBuilding = true;
   depsBuildBuild = [ buildPackages.stdenv.cc ];
 
diff --git a/pkgs/development/tools/analysis/snyk/default.nix b/pkgs/development/tools/analysis/snyk/default.nix
index 11ee2297e61d3..dfaba8bc369ae 100644
--- a/pkgs/development/tools/analysis/snyk/default.nix
+++ b/pkgs/development/tools/analysis/snyk/default.nix
@@ -8,16 +8,16 @@
 
 buildNpmPackage rec {
   pname = "snyk";
-  version = "1.1286.0";
+  version = "1.1287.0";
 
   src = fetchFromGitHub {
     owner = "snyk";
     repo = "cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tckifLV+HC7NqTeBtZI+VjZveeVbRS5+63vL8k8qE4s=";
+    hash = "sha256-d5MafGgxtecBzAkFxx+vi1a4ZQiVDJaISld7mQlNGFE=";
   };
 
-  npmDepsHash = "sha256-deBtINc+P0NnCIb0jI0Mvn2zbWS6qLqCXL6nKSFGqOI=";
+  npmDepsHash = "sha256-t+lYPVN/7mQak6A0VJUxnIj34iHB47nbcCV/dsO1/2E=";
 
   postPatch = ''
     substituteInPlace package.json \
diff --git a/pkgs/development/tools/analysis/stylelint/default.nix b/pkgs/development/tools/analysis/stylelint/default.nix
index fcaaa35fa401a..f7fbfc0272546 100644
--- a/pkgs/development/tools/analysis/stylelint/default.nix
+++ b/pkgs/development/tools/analysis/stylelint/default.nix
@@ -2,16 +2,16 @@
 
 buildNpmPackage rec {
   pname = "stylelint";
-  version = "16.3.0";
+  version = "16.3.1";
 
   src = fetchFromGitHub {
     owner = "stylelint";
     repo = "stylelint";
     rev = version;
-    hash = "sha256-N3M+PhoUjCB+5ouOPDI9m4vPnEoI6+Gk8DBNOquFCqY=";
+    hash = "sha256-o4gi7pJ4ewdHANfa1Pgj4fxx9+bhQv6ciVWyuFn1OTs=";
   };
 
-  npmDepsHash = "sha256-GRGYDt/qkHZrr7tSM3mPAiBLqUZ0FN1DdDHeBAtNG5w=";
+  npmDepsHash = "sha256-vgkrhOFQ0A0hp00bD1z3yt9s+UDHDTocNJuwZR9hOOA=";
 
   dontNpmBuild = true;
 
diff --git a/pkgs/development/tools/appthreat-depscan/default.nix b/pkgs/development/tools/appthreat-depscan/default.nix
deleted file mode 100644
index f9bed90f8ba43..0000000000000
--- a/pkgs/development/tools/appthreat-depscan/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ lib
-, fetchFromGitHub
-, python3
-}:
-
-python3.pkgs.buildPythonApplication rec {
-  pname = "appthreat-depscan";
-  version = "3.6.0";
-
-  src = fetchFromGitHub {
-    owner = "AppThreat";
-    repo = "dep-scan";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-U8vHwdL1O54X0jPhcjTN/J1U7dKQgFEMfc6lbXe2Ff0=";
-  };
-
-  propagatedBuildInputs = with python3.pkgs; [
-    appthreat-vulnerability-db
-    defusedxml
-    pyyaml
-    rich
-  ];
-
-  nativeCheckInputs = with python3.pkgs; [
-    pytestCheckHook
-  ];
-
-  postPatch = ''
-    substituteInPlace pytest.ini \
-      --replace " --cov-append --cov-report term --cov depscan" ""
-  '';
-
-  preCheck = ''
-    export HOME=$(mktemp -d);
-  '';
-
-  disabledTests = [
-    # Assertion Error
-    "test_query_metadata2"
-  ];
-
-  pythonImportsCheck = [
-    "depscan"
-  ];
-
-  meta = with lib; {
-    description = "Tool to audit dependencies based on known vulnerabilities and advisories";
-    homepage = "https://github.com/AppThreat/dep-scan";
-    changelog = "https://github.com/AppThreat/dep-scan/releases/tag/v${version}";
-    license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab ];
-  };
-}
diff --git a/pkgs/development/tools/azure-static-sites-client/default.nix b/pkgs/development/tools/azure-static-sites-client/default.nix
index 08e56de7335b2..452976b7282a6 100644
--- a/pkgs/development/tools/azure-static-sites-client/default.nix
+++ b/pkgs/development/tools/azure-static-sites-client/default.nix
@@ -21,7 +21,7 @@ let
   };
   sources = {
     "x86_64-linux" = fetchBinary "linux-x64";
-    "x86_64-darwin" = fetchBinary "macOS";
+    "x86_64-darwin" = fetchBinary "osx-x64";
   };
 in
 stdenv.mkDerivation {
diff --git a/pkgs/development/tools/backblaze-b2/default.nix b/pkgs/development/tools/backblaze-b2/default.nix
index 1fd6333a3d506..fadd6a2d4f76d 100644
--- a/pkgs/development/tools/backblaze-b2/default.nix
+++ b/pkgs/development/tools/backblaze-b2/default.nix
@@ -10,23 +10,25 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "backblaze-b2";
-  version = "3.17.0";
-  format = "pyproject";
+  version = "3.18.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Backblaze";
     repo = "B2_Command_Line_Tool";
-    rev = "v${version}";
-    hash = "sha256-Xj7RNe6XM2atijhVasILWRdTzu6xuKBzMllM1z1mFLY=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1UXByc3jjp8GN7+aI2GBohJ0DFxgp604QOsXp5GaL4Q=";
   };
 
   nativeBuildInputs = [
     installShellFiles
-  ] ++ (with python3Packages; [
+  ];
+
+  build-system = with python3Packages; [
     pdm-backend
-  ]);
+  ];
 
-  propagatedBuildInputs = with python3Packages; [
+  dependencies = with python3Packages; [
     argcomplete
     arrow
     b2sdk
@@ -53,10 +55,9 @@ python3Packages.buildPythonApplication rec {
   '';
 
   disabledTestPaths = [
-    # requires network
+    # Test requires network
     "test/integration/test_b2_command_line.py"
     "test/integration/test_tqdm_closer.py"
-
     # it's hard to make it work on nix
     "test/integration/test_autocomplete.py"
     "test/unit/test_console_tool.py"
@@ -64,6 +65,13 @@ python3Packages.buildPythonApplication rec {
     "test/unit/_cli/test_autocomplete_cache.py"
   ];
 
+  disabledTests = [
+    # Autocomplete is not successful in a sandbox
+    "test_autocomplete_installer"
+    "test_help"
+    "test_install_autocomplete"
+  ];
+
   postInstall = lib.optionalString (execName != "b2") ''
     mv "$out/bin/b2" "$out/bin/${execName}"
   ''
@@ -86,10 +94,10 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command-line tool for accessing the Backblaze B2 storage service";
-    mainProgram = "backblaze-b2";
     homepage = "https://github.com/Backblaze/B2_Command_Line_Tool";
     changelog = "https://github.com/Backblaze/B2_Command_Line_Tool/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ hrdinka tomhoule ];
+    mainProgram = "backblaze-b2";
   };
 }
diff --git a/pkgs/development/tools/bazel-gazelle/default.nix b/pkgs/development/tools/bazel-gazelle/default.nix
index a30d1380e6120..6b0a0d09eba23 100644
--- a/pkgs/development/tools/bazel-gazelle/default.nix
+++ b/pkgs/development/tools/bazel-gazelle/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "bazel-gazelle";
-  version = "0.35.0";
+  version = "0.36.0";
 
   src = fetchFromGitHub {
     owner = "bazelbuild";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-9oWsVazmLPPptWW03H6nLTiqNBNgkzsWtYNIm5V8FdA=";
+    hash = "sha256-jT+h3ehaqA6LLg2Q5JdWeHPwUomRDIapNALwa7nFDJ4=";
   };
 
   vendorHash = null;
diff --git a/pkgs/development/tools/bearer/default.nix b/pkgs/development/tools/bearer/default.nix
index 7e1ccc646b3a5..e735df3120294 100644
--- a/pkgs/development/tools/bearer/default.nix
+++ b/pkgs/development/tools/bearer/default.nix
@@ -1,26 +1,25 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
-, testers
-, bearer
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  testers,
+  bearer,
 }:
 
 buildGoModule rec {
   pname = "bearer";
-  version = "1.43.1";
+  version = "1.43.2";
 
   src = fetchFromGitHub {
     owner = "bearer";
     repo = "bearer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-T5JiGoiVs6crbWiOPbjLpcHRdIovHAVUDAaa4e3ZDPc=";
+    hash = "sha256-F7BToROR8mcINmIVz7J6xRSyLDKQyUyp7o1yQVVHdp0=";
   };
 
   vendorHash = "sha256-g0AnL6r3dUfCIAytTknAD5aCPBsohDUMNfMAYKBebi4=";
 
-  subPackages = [
-    "cmd/bearer"
-  ];
+  subPackages = [ "cmd/bearer" ];
 
   ldflags = [
     "-s"
diff --git a/pkgs/development/tools/build-managers/bazel/buildtools/default.nix b/pkgs/development/tools/build-managers/bazel/buildtools/default.nix
index f22e7c3c22af4..b8c1f4d32663a 100644
--- a/pkgs/development/tools/build-managers/bazel/buildtools/default.nix
+++ b/pkgs/development/tools/build-managers/bazel/buildtools/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "bazel-buildtools";
-  version = "6.4.0";
+  version = "7.1.0";
 
   src = fetchFromGitHub {
     owner = "bazelbuild";
     repo = "buildtools";
     rev = "v${version}";
-    hash = "sha256-k4qbveJ1BORnwjOIZcJLWIGVMRjCAqVhISggQ/VTzA4=";
+    hash = "sha256-/YHTMIhxFqxHpEmtYvFuQ1bjvKF6tDaYudSnBrCncPQ=";
   };
 
   vendorHash = "sha256-DigTREfI6I48wxRpGp/bfH1NbUZ4E1B5UTQXpI0LY1A=";
diff --git a/pkgs/development/tools/build-managers/bear/default.nix b/pkgs/development/tools/build-managers/bear/default.nix
index 0e8b20c7a9d48..2b8d3106f3ce5 100644
--- a/pkgs/development/tools/build-managers/bear/default.nix
+++ b/pkgs/development/tools/build-managers/bear/default.nix
@@ -89,6 +89,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/rizsotto/Bear";
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ babariviere ];
+    maintainers = with maintainers; [ babariviere DieracDelta ];
   };
 }
diff --git a/pkgs/development/tools/build-managers/corrosion/default.nix b/pkgs/development/tools/build-managers/corrosion/default.nix
index 22222a8f88cf1..c452e9aa4f5bb 100644
--- a/pkgs/development/tools/build-managers/corrosion/default.nix
+++ b/pkgs/development/tools/build-managers/corrosion/default.nix
@@ -3,40 +3,49 @@
 , fetchFromGitHub
 , cargo
 , cmake
-, rustPlatform
 , rustc
 , libiconv
 }:
 
 stdenv.mkDerivation rec {
   pname = "corrosion";
-  version = "0.4.7";
+  version = "0.4.8";
 
   src = fetchFromGitHub {
     owner = "corrosion-rs";
     repo = "corrosion";
     rev = "v${version}";
-    hash = "sha256-6jjcBBc1gtMG2sYppOIRa/tYjmUgW4kFxAuoGj7Tpgw=";
-  };
-
-  cargoRoot = "generator";
-
-  cargoDeps = rustPlatform.fetchCargoTarball {
-    inherit src;
-    sourceRoot = "${src.name}/${cargoRoot}";
-    name = "${pname}-${version}";
-    hash = "sha256-M5Wnx+SfVvdhC5bHVZa0Di2up3Qt5z1jog8yxIKvG/Y=";
+    hash = "sha256-ChoeN7qQRR1YmYYvPdJVJ2SVGTDGlM7PsN9jzFjQEyU=";
   };
 
   buildInputs = lib.optional stdenv.isDarwin libiconv;
 
   nativeBuildInputs = [
     cmake
-    rustPlatform.cargoSetupHook
     cargo
     rustc
   ];
 
+  doCheck = true;
+
+  checkPhase = let
+    excludedTests = [
+      "cbindgen_rust2cpp_build"
+      "cbindgen_rust2cpp_run_cpp-exe"
+      "hostbuild_build"
+      "hostbuild_run_rust-host-program"
+      "parse_target_triple_build"
+      "rustup_proxy_build"
+    ];
+    excludedTestsRegex = lib.concatStringsSep "|" excludedTests;
+  in ''
+    runHook preCheck
+
+    ctest -E "${excludedTestsRegex}"
+
+    runHook postCheck
+  '';
+
   meta = with lib; {
     description = "Tool for integrating Rust into an existing CMake project";
     homepage = "https://github.com/corrosion-rs/corrosion";
diff --git a/pkgs/development/tools/build-managers/rake/Gemfile.lock b/pkgs/development/tools/build-managers/rake/Gemfile.lock
index 4a8c98473c7e9..d553a75764ef9 100644
--- a/pkgs/development/tools/build-managers/rake/Gemfile.lock
+++ b/pkgs/development/tools/build-managers/rake/Gemfile.lock
@@ -1,7 +1,7 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    rake (13.2.0)
+    rake (13.2.1)
 
 PLATFORMS
   ruby
diff --git a/pkgs/development/tools/build-managers/rake/gemset.nix b/pkgs/development/tools/build-managers/rake/gemset.nix
index ae6dbb1229536..365174a7e971e 100644
--- a/pkgs/development/tools/build-managers/rake/gemset.nix
+++ b/pkgs/development/tools/build-managers/rake/gemset.nix
@@ -4,9 +4,9 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0lwv4rniry7k9dvz1n462d7j0dq9mrl6a95y6cvs6139h0ksxhgn";
+      sha256 = "17850wcwkgi30p7yqh60960ypn7yibacjjha0av78zaxwvd3ijs6";
       type = "gem";
     };
-    version = "13.2.0";
+    version = "13.2.1";
   };
 }
diff --git a/pkgs/development/tools/build-managers/rebar3/default.nix b/pkgs/development/tools/build-managers/rebar3/default.nix
index 0dd651a9d3f0c..ca64753cedbff 100644
--- a/pkgs/development/tools/build-managers/rebar3/default.nix
+++ b/pkgs/development/tools/build-managers/rebar3/default.nix
@@ -3,7 +3,7 @@
   writeScript, common-updater-scripts, coreutils, git, gnused, nix, rebar3-nix }:
 
 let
-  version = "3.22.1";
+  version = "3.23.0";
   owner = "erlang";
   deps = import ./rebar-deps.nix { inherit fetchFromGitHub fetchgit fetchHex; };
   rebar3 = stdenv.mkDerivation rec {
@@ -16,7 +16,7 @@ let
       inherit owner;
       repo = pname;
       rev = version;
-      sha256 = "bSsDNuwG3LLvBS7P/Ft0rpM/atwy36JonwP0fPRsEis=";
+      sha256 = "dLJ1ca7Tlx6Cfk/AyJ0HmAgH9+qRrto/m0GWWUeXNko=";
     };
 
     buildInputs = [ erlang ];
diff --git a/pkgs/development/tools/check-jsonschema/default.nix b/pkgs/development/tools/check-jsonschema/default.nix
index 06a0abbf55625..c75ca6e41b4b0 100644
--- a/pkgs/development/tools/check-jsonschema/default.nix
+++ b/pkgs/development/tools/check-jsonschema/default.nix
@@ -4,7 +4,7 @@ with python3.pkgs;
 
 buildPythonApplication rec {
   pname = "check-jsonschema";
-  version = "0.28.0";
+  version = "0.28.2";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -13,7 +13,7 @@ buildPythonApplication rec {
     owner = "python-jsonschema";
     repo = "check-jsonschema";
     rev = "refs/tags/${version}";
-    hash = "sha256-qcY846y8xLEsPfdtzoOfxo5gdggH6Dn3QkQOY7kMwm0=";
+    hash = "sha256-QHcpcpICYqQUUCkLAV4BpDYn7Te/TGbXFPgr8Emp0ew=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/tools/cloud-nuke/default.nix b/pkgs/development/tools/cloud-nuke/default.nix
index 0891cbd57f15e..f5d6c1caa7bd5 100644
--- a/pkgs/development/tools/cloud-nuke/default.nix
+++ b/pkgs/development/tools/cloud-nuke/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "cloud-nuke";
-  version = "0.34.0";
+  version = "0.35.0";
 
   src = fetchFromGitHub {
     owner = "gruntwork-io";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-p/b+s5/5Q58qYTfZwN6qHpMzgJ2ErUEP/FLB1oDXN8g=";
+    hash = "sha256-mSkQW4fSpylbOS8x/o/578NV+SU4ao/yqB81Ifb7LFQ=";
   };
 
   vendorHash = "sha256-Fmfr9feTibAjiZaakJalGTS7X2RhGz6engMNhy48Zus=";
diff --git a/pkgs/development/tools/cloudsmith-cli/default.nix b/pkgs/development/tools/cloudsmith-cli/default.nix
index 58c01f7078a37..afc4c1a530caf 100644
--- a/pkgs/development/tools/cloudsmith-cli/default.nix
+++ b/pkgs/development/tools/cloudsmith-cli/default.nix
@@ -5,13 +5,13 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "cloudsmith-cli";
-  version = "1.1.1";
+  version = "1.2.2";
   format = "wheel";
 
   src = fetchPypi {
     pname = "cloudsmith_cli";
     inherit format version;
-    hash = "sha256-evwXXGmGa6V2LhgkmX04E5VvdPxeZzvl4F28auXcSng=";
+    hash = "sha256-gXbjmnMBx5FuJfWD+jW1KOpNEYit6oqhympN8qwqYlU=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/development/tools/coder/default.nix b/pkgs/development/tools/coder/default.nix
index b12247a76d6f1..16594ee2e3c3e 100644
--- a/pkgs/development/tools/coder/default.nix
+++ b/pkgs/development/tools/coder/default.nix
@@ -1,90 +1,89 @@
 { lib
-, fetchFromGitHub
+, fetchurl
 , installShellFiles
-, makeWrapper
-, buildGoModule
-, fetchYarnDeps
-, fixup_yarn_lock
-, pkg-config
-, nodejs
-, yarn
-, nodePackages
-, python3
+, makeBinaryWrapper
 , terraform
+, stdenvNoCC
+, unzip
 }:
 
-buildGoModule rec {
+let
+  inherit (stdenvNoCC.hostPlatform) system;
+in
+stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "coder";
-  version = "0.17.1";
-
-  src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-FHBaefwSGZXwn1jdU7zK8WhwjarknvyeUJTlhmk/hPM=";
-  };
-
-  offlineCache = fetchYarnDeps {
-    yarnLock = src + "/site/yarn.lock";
-    hash = "sha256-nRmEXR9fjDxvpbnT+qpGeM0Cc/qW/kN53sKOXwZiBXY=";
+  version = "2.9.1";
+
+  src = fetchurl {
+    hash = {
+      x86_64-linux = "sha256-r4+u/s/dOn2GhyhEROu8i03QY3VA/bIyO/Yj7KSqicY=";
+      x86_64-darwin = "sha256-uShCmMvb5OcinqP0CmrlP9QAJkjfG3g1QuHE4JRDOjE=";
+      aarch64-linux = "sha256-tvpzfJ95YYfCY5V4iayjAmY5PDw+1uHUhY5F3pv/2Uk=";
+      aarch64-darwin = "sha256-sP9HnB2DzAU9IvL3+QPmIFLvRkGkoxSoa68uXGQrNkw=";
+    }.${system};
+
+    url =
+      let
+        systemName = {
+          x86_64-linux = "linux_amd64";
+          aarch64-linux = "linux_arm64";
+          x86_64-darwin = "darwin_amd64";
+          aarch64-darwin = "darwin_arm64";
+        }.${system};
+
+        ext = {
+          x86_64-linux = "tar.gz";
+          aarch64-linux = "tar.gz";
+          x86_64-darwin = "zip";
+          aarch64-darwin = "zip";
+        }.${system};
+      in
+      "https://github.com/coder/coder/releases/download/v${finalAttrs.version}/coder_${finalAttrs.version}_${systemName}.${ext}";
   };
 
-  vendorHash = "sha256-+AvmJkZCFovE2+5Lg98tUvA7f2kBHUMzhl5IyrEGuy8=";
-
-  tags = [ "embed" ];
-
-  ldflags = [
-    "-s"
-    "-w"
-    "-X github.com/coder/coder/buildinfo.tag=${version}"
+  nativeBuildInputs = [
+    installShellFiles
+    makeBinaryWrapper
+    unzip
   ];
 
-  subPackages = [ "cmd/..." ];
+  unpackPhase = ''
+    runHook preUnpack
 
-  preBuild = ''
-    export HOME=$TEMPDIR
+    case $src in
+        *.tar.gz) tar -xz -f "$src" ;;
+        *.zip)    unzip      "$src" ;;
+    esac
 
-    pushd site
-    yarn config --offline set yarn-offline-mirror ${offlineCache}
-    fixup_yarn_lock yarn.lock
+    runHook postUnpack
+  '';
 
-    # node-gyp tries to download always the headers and fails: https://github.com/NixOS/nixpkgs/issues/195404
-    # playwright tries to download Chrome and fails
-    yarn remove --offline jest-canvas-mock canvas @playwright/test playwright
+  installPhase = ''
+    runHook preInstall
 
-    export PATH=$PATH:$(pwd)/node_modules/.bin
-    NODE_ENV=production node node_modules/.bin/vite build
+    install -D -m755 coder $out/bin/coder
 
-    popd
+    runHook postInstall
   '';
 
-  nativeBuildInputs = [
-    fixup_yarn_lock
-    installShellFiles
-    makeWrapper
-    nodePackages.node-pre-gyp
-    nodejs
-    pkg-config
-    python3
-    yarn
-  ];
-
   postInstall = ''
     installShellCompletion --cmd coder \
       --bash <($out/bin/coder completion bash) \
       --fish <($out/bin/coder completion fish) \
       --zsh <($out/bin/coder completion zsh)
 
-    wrapProgram $out/bin/coder --prefix PATH : ${lib.makeBinPath [ terraform ]}
+    wrapProgram $out/bin/coder \
+      --prefix PATH : ${lib.makeBinPath [ terraform ]}
   '';
 
   # integration tests require network access
   doCheck = false;
 
   meta = {
-    description = "Provision software development environments via Terraform on Linux, macOS, Windows, X86, ARM, and of course, Kubernetes";
+    description = "Provision remote development environments via Terraform";
     homepage = "https://coder.com";
     license = lib.licenses.agpl3Only;
-    maintainers = [ lib.maintainers.ghuntley lib.maintainers.urandom ];
+    mainProgram = "coder";
+    maintainers = with lib.maintainers; [ ghuntley urandom ];
   };
-}
+})
diff --git a/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix b/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
index 9da3ca85d22dc..8fc481e1f5aed 100644
--- a/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
+++ b/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "cirrus-cli";
-  version = "0.114.2";
+  version = "0.115.3";
 
   src = fetchFromGitHub {
     owner = "cirruslabs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-msWvi2aUrGLfTCkBuKt9LQA3Dui74Pw3l1YHT0RPinw=";
+    sha256 = "sha256-kO2RgT5Y3fvayiYSFZsiHNwmOpIrNvNuD3BzbvhNRvg=";
   };
 
-  vendorHash = "sha256-f/OIgQBneXdEL2cfTvNK2kLMb8Ag9hqhhD0bXwaY/hM=";
+  vendorHash = "sha256-tkKxg08uL1vlOyD/tpRLzjHpOVWOmYZxcq8B+Q7/3Zo=";
 
   ldflags = [
     "-X github.com/cirruslabs/cirrus-cli/internal/version.Version=v${version}"
diff --git a/pkgs/development/tools/cpm-cmake/default.nix b/pkgs/development/tools/cpm-cmake/default.nix
index d0e4247795d24..9cddbc70c4a9e 100644
--- a/pkgs/development/tools/cpm-cmake/default.nix
+++ b/pkgs/development/tools/cpm-cmake/default.nix
@@ -5,13 +5,13 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "cpm-cmake";
-  version = "0.38.7";
+  version = "0.38.8";
 
   src = fetchFromGitHub {
     owner = "cpm-cmake";
     repo = "cpm.cmake";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-tvqoGLGBvsPtIbPWG/5DH4IMzQTci3sjmF9dpInncWc=";
+    hash = "sha256-S1I7XKvpniocI2UAzO8yslju3fYy06MPC2Kl7N7bh8I=";
   };
 
   dontConfigure = true;
diff --git a/pkgs/development/tools/database/liquibase/default.nix b/pkgs/development/tools/database/liquibase/default.nix
index 94f0d4c79fce9..7e6a8334cff40 100644
--- a/pkgs/development/tools/database/liquibase/default.nix
+++ b/pkgs/development/tools/database/liquibase/default.nix
@@ -25,11 +25,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "liquibase";
-  version = "4.26.0";
+  version = "4.27.0";
 
   src = fetchurl {
     url = "https://github.com/liquibase/liquibase/releases/download/v${version}/${pname}-${version}.tar.gz";
-    hash = "sha256-RoULX9IcVI+WklPLvJfcbIRhmKgiVYHjr1NGrIqn2/I=";
+    hash = "sha256-UNieH8ECSb8ZjxqP8tgf0LaObKCAXbKKlNOGSXhNgvA=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/tools/database/pg_activity/default.nix b/pkgs/development/tools/database/pg_activity/default.nix
index 4fa280942dd29..4313e2a648ca3 100644
--- a/pkgs/development/tools/database/pg_activity/default.nix
+++ b/pkgs/development/tools/database/pg_activity/default.nix
@@ -2,14 +2,14 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "pg_activity";
-  version = "3.5.0";
+  version = "3.5.1";
   disabled = python3Packages.pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "dalibo";
     repo = pname;
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-raEQbpADSkJZu+ULxzJg9GqFQ4/qmONDHGqoc7quMjI=";
+    sha256 = "sha256-fqRECReeXjdoCieCYIsIumIjcMGN7UUbWHxxAfzm9co=";
   };
 
   propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/development/tools/database/prisma-engines/Cargo.lock b/pkgs/development/tools/database/prisma-engines/Cargo.lock
index 573e31eababdb..d838995c6f95a 100644
--- a/pkgs/development/tools/database/prisma-engines/Cargo.lock
+++ b/pkgs/development/tools/database/prisma-engines/Cargo.lock
@@ -23,20 +23,22 @@ version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
 dependencies = [
- "getrandom 0.2.10",
+ "getrandom 0.2.11",
  "once_cell",
  "version_check",
 ]
 
 [[package]]
 name = "ahash"
-version = "0.8.3"
+version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
+checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
 dependencies = [
  "cfg-if",
+ "getrandom 0.2.11",
  "once_cell",
  "version_check",
+ "zerocopy",
 ]
 
 [[package]]
@@ -148,18 +150,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
 name = "async-trait"
-version = "0.1.72"
+version = "0.1.77"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09"
+checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -358,7 +360,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b"
 dependencies = [
  "borsh-derive",
- "hashbrown 0.13.2",
+ "hashbrown 0.12.3",
 ]
 
 [[package]]
@@ -398,18 +400,18 @@ dependencies = [
 
 [[package]]
 name = "bson"
-version = "2.6.1"
+version = "2.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aeb8bae494e49dbc330dd23cf78f6f7accee22f640ce3ab17841badaa4ce232"
+checksum = "88c18b51216e1f74b9d769cead6ace2f82b965b807e3d73330aabe9faec31c84"
 dependencies = [
- "ahash 0.7.6",
+ "ahash 0.8.7",
  "base64 0.13.1",
  "bitvec",
  "chrono",
  "hex",
  "indexmap 1.9.3",
  "js-sys",
- "lazy_static",
+ "once_cell",
  "rand 0.8.5",
  "serde",
  "serde_bytes",
@@ -428,20 +430,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "builtin-psl-connectors"
-version = "0.1.0"
-dependencies = [
- "connection-string",
- "either",
- "enumflags2",
- "indoc 2.0.3",
- "lsp-types",
- "once_cell",
- "psl-core",
- "regex",
-]
-
-[[package]]
 name = "bumpalo"
 version = "3.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -489,9 +477,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
 [[package]]
 name = "cc"
-version = "1.0.82"
+version = "1.0.83"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
 dependencies = [
  "libc",
 ]
@@ -562,7 +550,7 @@ checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
 dependencies = [
  "glob",
  "libc",
- "libloading",
+ "libloading 0.7.4",
 ]
 
 [[package]]
@@ -674,16 +662,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "console_error_panic_hook"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
-dependencies = [
- "cfg-if",
- "wasm-bindgen",
-]
-
-[[package]]
 name = "convert_case"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -757,7 +735,7 @@ dependencies = [
  "ciborium",
  "clap 3.2.25",
  "criterion-plot",
- "itertools",
+ "itertools 0.10.5",
  "lazy_static",
  "num-traits",
  "oorandom",
@@ -778,7 +756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
 dependencies = [
  "cast",
- "itertools",
+ "itertools 0.10.5",
 ]
 
 [[package]]
@@ -849,6 +827,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "crosstarget-utils"
+version = "0.1.0"
+dependencies = [
+ "futures",
+ "js-sys",
+ "pin-project",
+ "tokio",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+]
+
+[[package]]
 name = "crypto-common"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -865,17 +855,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1f34ba9a9bcb8645379e9de8cb3ecfcf4d1c85ba66d90deb3259206fa5aa193b"
 dependencies = [
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
 name = "cuid"
 version = "1.3.2"
-source = "git+https://github.com/prisma/cuid-rust?branch=wasm32-support#81309f9a11f70d178bb545971d51ceb7da692c52"
+source = "git+https://github.com/prisma/cuid-rust?branch=wasm32-support#ccfd958c224c79758c2527a0bca9efcd71790a19"
 dependencies = [
  "base36",
  "cuid-util",
  "cuid2",
+ "getrandom 0.2.11",
+ "js-sys",
  "num",
  "once_cell",
  "rand 0.8.5",
@@ -885,12 +877,12 @@ dependencies = [
 [[package]]
 name = "cuid-util"
 version = "0.1.0"
-source = "git+https://github.com/prisma/cuid-rust?branch=wasm32-support#81309f9a11f70d178bb545971d51ceb7da692c52"
+source = "git+https://github.com/prisma/cuid-rust?branch=wasm32-support#ccfd958c224c79758c2527a0bca9efcd71790a19"
 
 [[package]]
 name = "cuid2"
 version = "0.1.2"
-source = "git+https://github.com/prisma/cuid-rust?branch=wasm32-support#81309f9a11f70d178bb545971d51ceb7da692c52"
+source = "git+https://github.com/prisma/cuid-rust?branch=wasm32-support#ccfd958c224c79758c2527a0bca9efcd71790a19"
 dependencies = [
  "cuid-util",
  "num",
@@ -975,7 +967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d"
 dependencies = [
  "cfg-if",
- "hashbrown 0.14.0",
+ "hashbrown 0.14.3",
  "lock_api",
  "once_cell",
  "parking_lot_core 0.9.8",
@@ -1078,12 +1070,12 @@ dependencies = [
  "colored",
  "expect-test",
  "flate2",
- "indexmap 1.9.3",
+ "indexmap 2.2.2",
  "indoc 2.0.3",
- "itertools",
+ "itertools 0.12.0",
  "pretty_assertions",
- "prisma-models",
  "psl",
+ "query-structure",
  "schema",
  "serde",
  "serde_json",
@@ -1095,23 +1087,27 @@ name = "driver-adapters"
 version = "0.1.0"
 dependencies = [
  "async-trait",
- "bigdecimal",
- "chrono",
  "expect-test",
  "futures",
+ "js-sys",
  "metrics 0.18.1",
  "napi",
  "napi-derive",
- "num-bigint",
  "once_cell",
- "psl",
+ "pin-project",
  "quaint",
  "serde",
+ "serde-wasm-bindgen",
  "serde_json",
+ "serde_repr",
  "tokio",
  "tracing",
  "tracing-core",
+ "tsify",
  "uuid",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-rs-dbg",
 ]
 
 [[package]]
@@ -1235,7 +1231,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -1246,23 +1242,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "errno"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
-dependencies = [
- "errno-dragonfly",
- "libc",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "errno-dragonfly"
-version = "0.1.2"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
 dependencies = [
- "cc",
  "libc",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -1361,9 +1346,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 
 [[package]]
 name = "form_urlencoded"
-version = "1.2.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 dependencies = [
  "percent-encoding",
 ]
@@ -1393,7 +1378,7 @@ checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e"
 dependencies = [
  "frunk_proc_macro_helpers",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -1405,7 +1390,7 @@ dependencies = [
  "frunk_core",
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -1417,7 +1402,7 @@ dependencies = [
  "frunk_core",
  "frunk_proc_macro_helpers",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -1488,7 +1473,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -1550,9 +1535,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.10"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -1598,9 +1583,9 @@ dependencies = [
 
 [[package]]
 name = "h2"
-version = "0.3.20"
+version = "0.3.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049"
+checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
 dependencies = [
  "bytes",
  "fnv",
@@ -1608,7 +1593,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "http",
- "indexmap 1.9.3",
+ "indexmap 2.2.2",
  "slab",
  "tokio",
  "tokio-util 0.7.8",
@@ -1641,20 +1626,11 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.13.2"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
 dependencies = [
- "ahash 0.8.3",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
-dependencies = [
- "ahash 0.8.3",
+ "ahash 0.8.7",
  "allocator-api2",
 ]
 
@@ -1664,7 +1640,7 @@ version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "312f66718a2d7789ffef4f4b7b213138ed9f1eb3aa1d0d82fc99f88fb3ffd26f"
 dependencies = [
- "hashbrown 0.14.0",
+ "hashbrown 0.14.3",
 ]
 
 [[package]]
@@ -1857,9 +1833,9 @@ dependencies = [
 
 [[package]]
 name = "idna"
-version = "0.4.0"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
 dependencies = [
  "unicode-bidi",
  "unicode-normalization",
@@ -1873,17 +1849,17 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
 dependencies = [
  "autocfg",
  "hashbrown 0.12.3",
- "serde",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.0.0"
+version = "2.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.0",
+ "hashbrown 0.14.3",
+ "serde",
 ]
 
 [[package]]
@@ -1917,9 +1893,9 @@ dependencies = [
 
 [[package]]
 name = "insta"
-version = "1.21.2"
+version = "1.34.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "261bf85ed492cd1c47c9ba675e48649682a9d2d2e77f515c5386d7726fb0ba76"
+checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc"
 dependencies = [
  "console",
  "lazy_static",
@@ -1976,6 +1952,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "itertools"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
+dependencies = [
+ "either",
+]
+
+[[package]]
 name = "itoa"
 version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1983,9 +1968,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
 name = "js-sys"
-version = "0.3.61"
+version = "0.3.65"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -2111,9 +2096,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.147"
+version = "0.2.150"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
 
 [[package]]
 name = "libloading"
@@ -2126,6 +2111,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "libloading"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "libsqlite3-sys"
 version = "0.26.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2155,9 +2150,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.5"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
 
 [[package]]
 name = "lock_api"
@@ -2262,9 +2257,9 @@ checksum = "7e6bcd6433cff03a4bfc3d9834d504467db1f1cf6d0ea765d37d330249ed629d"
 
 [[package]]
 name = "memchr"
-version = "2.5.0"
+version = "2.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
 
 [[package]]
 name = "memoffset"
@@ -2385,9 +2380,9 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.8.8"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
 dependencies = [
  "libc",
  "log",
@@ -2416,9 +2411,9 @@ dependencies = [
 
 [[package]]
 name = "mongodb"
-version = "2.6.0"
+version = "2.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebcd85ec209a5b84fd9f54b9e381f6fa17462bc74160d018fc94fd8b9f61faa8"
+checksum = "46c30763a5c6c52079602be44fa360ca3bfacee55fca73f4734aecd23706a7f2"
 dependencies = [
  "async-trait",
  "base64 0.13.1",
@@ -2439,7 +2434,7 @@ dependencies = [
  "percent-encoding",
  "rand 0.8.5",
  "rustc_version_runtime",
- "rustls 0.20.8",
+ "rustls 0.21.10",
  "rustls-pemfile",
  "serde",
  "serde_bytes",
@@ -2452,7 +2447,7 @@ dependencies = [
  "take_mut",
  "thiserror",
  "tokio",
- "tokio-rustls 0.23.4",
+ "tokio-rustls 0.24.1",
  "tokio-util 0.7.8",
  "trust-dns-proto",
  "trust-dns-resolver",
@@ -2481,17 +2476,19 @@ dependencies = [
  "bson",
  "chrono",
  "cuid",
+ "derive_more",
  "futures",
- "indexmap 1.9.3",
- "itertools",
+ "indexmap 2.2.2",
+ "itertools 0.12.0",
  "mongodb",
  "mongodb-client",
- "prisma-models",
+ "pretty_assertions",
  "prisma-value",
  "psl",
  "query-connector",
  "query-engine-metrics",
- "rand 0.7.3",
+ "query-structure",
+ "rand 0.8.5",
  "regex",
  "serde",
  "serde_json",
@@ -2548,7 +2545,7 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
 [[package]]
 name = "mysql_async"
 version = "0.31.3"
-source = "git+https://github.com/prisma/mysql_async?branch=vendored-openssl#dad187b50dc7e8ce2b61fec126822e8e172a9c8a"
+source = "git+https://github.com/prisma/mysql_async?branch=vendored-openssl#0d40d0d2c332fc97512bff81e82e62002f03c224"
 dependencies = [
  "bytes",
  "crossbeam",
@@ -2557,6 +2554,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "lazy_static",
+ "lexical",
  "lru 0.8.1",
  "mio",
  "mysql_common",
@@ -2566,6 +2564,7 @@ dependencies = [
  "percent-encoding",
  "pin-project",
  "priority-queue",
+ "regex",
  "serde",
  "serde_json",
  "socket2 0.4.9",
@@ -2643,9 +2642,9 @@ dependencies = [
 
 [[package]]
 name = "napi"
-version = "2.13.2"
+version = "2.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ede2d12cd6fce44da537a4be1f5510c73be2506c2e32dfaaafd1f36968f3a0e"
+checksum = "43792514b0c95c5beec42996da0c1b39265b02b75c97baa82d163d3ef55cbfa7"
 dependencies = [
  "bitflags 2.4.0",
  "ctor",
@@ -2665,23 +2664,23 @@ checksum = "ebd4419172727423cf30351406c54f6cc1b354a2cfb4f1dba3e6cd07f6d5522b"
 
 [[package]]
 name = "napi-derive"
-version = "2.13.0"
+version = "2.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da1c6a8fa84d549aa8708fcd062372bf8ec6e849de39016ab921067d21bde367"
+checksum = "7622f0dbe0968af2dacdd64870eee6dee94f93c989c841f1ad8f300cf1abd514"
 dependencies = [
  "cfg-if",
  "convert_case 0.6.0",
  "napi-derive-backend",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.48",
 ]
 
 [[package]]
 name = "napi-derive-backend"
-version = "1.0.52"
+version = "1.0.59"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20bbc7c69168d06a848f925ec5f0e0997f98e8c8d4f2cc30157f0da51c009e17"
+checksum = "8ec514d65fce18a959be55e7f683ac89c6cb850fb59b09e25ab777fd5a4a8d9e"
 dependencies = [
  "convert_case 0.6.0",
  "once_cell",
@@ -2689,16 +2688,16 @@ dependencies = [
  "quote",
  "regex",
  "semver 1.0.18",
- "syn 1.0.109",
+ "syn 2.0.48",
 ]
 
 [[package]]
 name = "napi-sys"
-version = "2.2.3"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "166b5ef52a3ab5575047a9fe8d4a030cdd0f63c96f071cd6907674453b07bae3"
+checksum = "2503fa6af34dc83fb74888df8b22afe933b58d37daf7d80424b1c60c68196b8b"
 dependencies = [
- "libloading",
+ "libloading 0.8.1",
 ]
 
 [[package]]
@@ -2845,9 +2844,9 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.18.0"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "oorandom"
@@ -2863,11 +2862,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
 
 [[package]]
 name = "openssl"
-version = "0.10.56"
+version = "0.10.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e"
+checksum = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.4.0",
  "cfg-if",
  "foreign-types",
  "libc",
@@ -2884,7 +2883,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -2895,18 +2894,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "openssl-src"
-version = "111.27.0+1.1.1v"
+version = "300.1.6+3.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02"
+checksum = "439fac53e092cd7442a3660c85dde4643ab3b5bd39040912388dcdabf6b88085"
 dependencies = [
  "cc",
 ]
 
 [[package]]
 name = "openssl-sys"
-version = "0.9.91"
+version = "0.9.96"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac"
+checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f"
 dependencies = [
  "cc",
  "libc",
@@ -3063,7 +3062,7 @@ dependencies = [
  "diagnostics",
  "either",
  "enumflags2",
- "indexmap 1.9.3",
+ "indexmap 2.2.2",
  "rustc-hash",
  "schema-ast",
 ]
@@ -3100,9 +3099,9 @@ dependencies = [
 
 [[package]]
 name = "percent-encoding"
-version = "2.3.0"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pest"
@@ -3134,7 +3133,7 @@ dependencies = [
  "pest_meta",
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -3203,7 +3202,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -3347,22 +3346,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "prisma-models"
-version = "0.0.0"
-dependencies = [
- "bigdecimal",
- "chrono",
- "cuid",
- "getrandom 0.2.10",
- "itertools",
- "nanoid",
- "prisma-value",
- "psl",
- "thiserror",
- "uuid",
-]
-
-[[package]]
 name = "prisma-schema-build"
 version = "0.1.0"
 dependencies = [
@@ -3426,9 +3409,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.66"
+version = "1.0.78"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
 dependencies = [
  "unicode-ident",
 ]
@@ -3451,7 +3434,7 @@ checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
 dependencies = [
  "bytes",
  "heck 0.3.3",
- "itertools",
+ "itertools 0.10.5",
  "lazy_static",
  "log",
  "multimap",
@@ -3470,7 +3453,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
 dependencies = [
  "anyhow",
- "itertools",
+ "itertools 0.10.5",
  "proc-macro2",
  "quote",
  "syn 1.0.109",
@@ -3491,7 +3474,6 @@ name = "psl"
 version = "0.1.0"
 dependencies = [
  "base64 0.13.1",
- "builtin-psl-connectors",
  "dissimilar",
  "either",
  "expect-test",
@@ -3504,11 +3486,15 @@ name = "psl-core"
 version = "0.1.0"
 dependencies = [
  "bigdecimal",
+ "cfg-if",
  "chrono",
+ "connection-string",
  "diagnostics",
+ "either",
  "enumflags2",
+ "hex",
  "indoc 2.0.3",
- "itertools",
+ "itertools 0.12.0",
  "lsp-types",
  "once_cell",
  "parser-database",
@@ -3552,8 +3538,11 @@ dependencies = [
  "psl",
  "quaint",
  "schema-core",
+ "serde",
+ "serde_json",
  "sql-schema-connector",
  "test-setup",
+ "tokio",
  "url",
 ]
 
@@ -3569,10 +3558,13 @@ dependencies = [
  "bytes",
  "chrono",
  "connection-string",
+ "crosstarget-utils",
  "either",
  "futures",
+ "getrandom 0.2.11",
  "hex",
  "indoc 0.3.6",
+ "itertools 0.12.0",
  "lru-cache",
  "metrics 0.18.1",
  "mobc",
@@ -3650,10 +3642,10 @@ dependencies = [
  "async-trait",
  "chrono",
  "futures",
- "indexmap 1.9.3",
- "itertools",
- "prisma-models",
+ "indexmap 2.2.2",
+ "itertools 0.12.0",
  "prisma-value",
+ "query-structure",
  "serde",
  "serde_json",
  "thiserror",
@@ -3670,19 +3662,20 @@ dependencies = [
  "chrono",
  "connection-string",
  "crossbeam-channel",
+ "crosstarget-utils",
  "cuid",
  "enumflags2",
  "futures",
- "indexmap 1.9.3",
- "itertools",
+ "indexmap 2.2.2",
+ "itertools 0.12.0",
  "lru 0.7.8",
  "once_cell",
  "opentelemetry",
  "petgraph 0.4.13",
- "prisma-models",
  "psl",
  "query-connector",
  "query-engine-metrics",
+ "query-structure",
  "schema",
  "serde",
  "serde_json",
@@ -3732,6 +3725,31 @@ dependencies = [
 ]
 
 [[package]]
+name = "query-engine-common"
+version = "0.1.0"
+dependencies = [
+ "async-trait",
+ "connection-string",
+ "napi",
+ "opentelemetry",
+ "psl",
+ "query-connector",
+ "query-core",
+ "query-engine-metrics",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tracing",
+ "tracing-futures",
+ "tracing-opentelemetry",
+ "tracing-subscriber",
+ "tsify",
+ "url",
+ "user-facing-errors",
+ "wasm-bindgen",
+]
+
+[[package]]
 name = "query-engine-metrics"
 version = "0.1.0"
 dependencies = [
@@ -3762,12 +3780,13 @@ dependencies = [
  "napi-build",
  "napi-derive",
  "opentelemetry",
- "prisma-models",
  "psl",
  "quaint",
  "query-connector",
  "query-core",
+ "query-engine-common",
  "query-engine-metrics",
+ "query-structure",
  "request-handlers",
  "serde",
  "serde_json",
@@ -3794,7 +3813,9 @@ dependencies = [
  "futures",
  "indoc 2.0.3",
  "insta",
+ "itertools 0.12.0",
  "once_cell",
+ "paste",
  "prisma-value",
  "psl",
  "query-engine-metrics",
@@ -3815,26 +3836,49 @@ dependencies = [
  "anyhow",
  "async-trait",
  "connection-string",
- "console_error_panic_hook",
+ "driver-adapters",
  "futures",
  "js-sys",
- "log",
- "prisma-models",
+ "opentelemetry",
  "psl",
+ "quaint",
+ "query-connector",
+ "query-core",
+ "query-engine-common",
+ "query-structure",
+ "request-handlers",
  "serde",
  "serde-wasm-bindgen",
  "serde_json",
+ "sql-query-connector",
  "thiserror",
  "tokio",
  "tracing",
  "tracing-futures",
+ "tracing-opentelemetry",
  "tracing-subscriber",
  "tsify",
  "url",
  "user-facing-errors",
  "wasm-bindgen",
  "wasm-bindgen-futures",
- "wasm-logger",
+ "wasm-rs-dbg",
+]
+
+[[package]]
+name = "query-structure"
+version = "0.0.0"
+dependencies = [
+ "bigdecimal",
+ "chrono",
+ "cuid",
+ "getrandom 0.2.11",
+ "itertools 0.12.0",
+ "nanoid",
+ "prisma-value",
+ "psl",
+ "thiserror",
+ "uuid",
 ]
 
 [[package]]
@@ -3855,20 +3899,21 @@ dependencies = [
  "colored",
  "enumflags2",
  "hyper",
- "indexmap 1.9.3",
+ "indexmap 2.2.2",
  "indoc 2.0.3",
- "itertools",
+ "insta",
+ "itertools 0.12.0",
  "jsonrpc-core",
  "nom",
  "once_cell",
  "parse-hyperlinks",
- "prisma-models",
  "psl",
  "qe-setup",
  "quaint",
  "query-core",
  "query-engine",
  "query-engine-metrics",
+ "query-structure",
  "regex",
  "request-handlers",
  "serde",
@@ -3892,9 +3937,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
 
 [[package]]
 name = "quote"
-version = "1.0.32"
+version = "1.0.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 dependencies = [
  "proc-macro2",
 ]
@@ -4012,7 +4057,7 @@ version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 dependencies = [
- "getrandom 0.2.10",
+ "getrandom 0.2.11",
 ]
 
 [[package]]
@@ -4084,14 +4129,14 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.9.3"
+version = "1.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
 dependencies = [
  "aho-corasick 1.0.3",
  "memchr",
- "regex-automata 0.3.6",
- "regex-syntax 0.7.4",
+ "regex-automata 0.4.5",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
@@ -4105,13 +4150,13 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.3.6"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
+checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
 dependencies = [
  "aho-corasick 1.0.3",
  "memchr",
- "regex-syntax 0.7.4",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
@@ -4122,9 +4167,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.4"
+version = "0.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
 name = "rend"
@@ -4145,15 +4190,15 @@ dependencies = [
  "dmmf",
  "futures",
  "graphql-parser",
- "indexmap 1.9.3",
+ "indexmap 2.2.2",
  "insta",
- "itertools",
+ "itertools 0.12.0",
  "mongodb-query-connector",
  "once_cell",
- "prisma-models",
  "psl",
  "quaint",
  "query-core",
+ "query-structure",
  "schema",
  "serde",
  "serde_json",
@@ -4220,13 +4265,27 @@ dependencies = [
  "cc",
  "libc",
  "once_cell",
- "spin",
- "untrusted",
+ "spin 0.5.2",
+ "untrusted 0.7.1",
  "web-sys",
  "winapi",
 ]
 
 [[package]]
+name = "ring"
+version = "0.17.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+dependencies = [
+ "cc",
+ "getrandom 0.2.11",
+ "libc",
+ "spin 0.9.8",
+ "untrusted 0.9.0",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "rkyv"
 version = "0.7.42"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4328,15 +4387,15 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.8"
+version = "0.38.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f"
+checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
 dependencies = [
  "bitflags 2.4.0",
  "errno",
  "libc",
  "linux-raw-sys",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -4347,21 +4406,21 @@ checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7"
 dependencies = [
  "base64 0.13.1",
  "log",
- "ring",
+ "ring 0.16.20",
  "sct 0.6.1",
- "webpki 0.21.4",
+ "webpki",
 ]
 
 [[package]]
 name = "rustls"
-version = "0.20.8"
+version = "0.21.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
+checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
 dependencies = [
  "log",
- "ring",
+ "ring 0.17.7",
+ "rustls-webpki",
  "sct 0.7.0",
- "webpki 0.22.0",
 ]
 
 [[package]]
@@ -4386,6 +4445,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring 0.17.7",
+ "untrusted 0.9.0",
+]
+
+[[package]]
 name = "ryu"
 version = "1.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4421,8 +4490,8 @@ version = "0.1.0"
 dependencies = [
  "codspeed-criterion-compat",
  "once_cell",
- "prisma-models",
  "psl",
+ "query-structure",
  "rustc-hash",
 ]
 
@@ -4513,8 +4582,8 @@ version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce"
 dependencies = [
- "ring",
- "untrusted",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
 ]
 
 [[package]]
@@ -4523,8 +4592,8 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
 dependencies = [
- "ring",
- "untrusted",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
 ]
 
 [[package]]
@@ -4614,7 +4683,7 @@ checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -4625,7 +4694,7 @@ checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -4634,7 +4703,7 @@ version = "1.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
 dependencies = [
- "indexmap 2.0.0",
+ "indexmap 2.2.2",
  "itoa",
  "ryu",
  "serde",
@@ -4642,13 +4711,13 @@ dependencies = [
 
 [[package]]
 name = "serde_repr"
-version = "0.1.16"
+version = "0.1.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
+checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -4707,7 +4776,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -4777,9 +4846,9 @@ dependencies = [
 
 [[package]]
 name = "shlex"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 
 [[package]]
 name = "signal-hook-registry"
@@ -4859,6 +4928,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
 
 [[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
 name = "sql-ddl"
 version = "0.1.0"
 dependencies = [
@@ -4931,15 +5006,15 @@ dependencies = [
  "chrono",
  "cuid",
  "futures",
- "itertools",
+ "itertools 0.12.0",
  "once_cell",
  "opentelemetry",
- "prisma-models",
  "prisma-value",
  "psl",
  "quaint",
  "query-connector",
- "rand 0.7.3",
+ "query-structure",
+ "rand 0.8.5",
  "serde",
  "serde_json",
  "thiserror",
@@ -4979,6 +5054,7 @@ dependencies = [
  "url",
  "user-facing-errors",
  "uuid",
+ "versions",
 ]
 
 [[package]]
@@ -4990,7 +5066,7 @@ dependencies = [
  "either",
  "enumflags2",
  "expect-test",
- "indexmap 1.9.3",
+ "indexmap 2.2.2",
  "indoc 2.0.3",
  "once_cell",
  "pretty_assertions",
@@ -5009,11 +5085,11 @@ dependencies = [
 
 [[package]]
 name = "sqlformat"
-version = "0.2.1"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e"
+checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c"
 dependencies = [
- "itertools",
+ "itertools 0.12.0",
  "nom",
  "unicode_categories",
 ]
@@ -5123,9 +5199,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.28"
+version = "2.0.48"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
+checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -5246,7 +5322,7 @@ checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -5391,7 +5467,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -5435,18 +5511,17 @@ checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6"
 dependencies = [
  "rustls 0.19.1",
  "tokio",
- "webpki 0.21.4",
+ "webpki",
 ]
 
 [[package]]
 name = "tokio-rustls"
-version = "0.23.4"
+version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
 dependencies = [
- "rustls 0.20.8",
+ "rustls 0.21.10",
  "tokio",
- "webpki 0.22.0",
 ]
 
 [[package]]
@@ -5597,7 +5672,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -5760,7 +5835,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "serde_derive_internals",
- "syn 2.0.28",
+ "syn 2.0.48",
 ]
 
 [[package]]
@@ -5770,7 +5845,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
 dependencies = [
  "cfg-if",
- "rand 0.8.5",
+ "rand 0.7.3",
  "static_assertions",
 ]
 
@@ -5864,13 +5939,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
 
 [[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
 name = "url"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
 dependencies = [
  "form_urlencoded",
- "idna 0.4.0",
+ "idna 0.5.0",
  "percent-encoding",
  "serde",
 ]
@@ -5890,7 +5971,7 @@ version = "0.1.0"
 dependencies = [
  "backtrace",
  "indoc 2.0.3",
- "itertools",
+ "itertools 0.12.0",
  "quaint",
  "serde",
  "serde_json",
@@ -5916,7 +5997,7 @@ version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
 dependencies = [
- "getrandom 0.2.10",
+ "getrandom 0.2.11",
  "serde",
 ]
 
@@ -5945,6 +6026,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
+name = "versions"
+version = "6.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f37ff4899935ba747849dd9eeb27c0bdd0da0210236704b7e4681a6c7bd6f9c6"
+dependencies = [
+ "itertools 0.12.0",
+ "nom",
+]
+
+[[package]]
 name = "void"
 version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6010,9 +6101,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.87"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -6020,16 +6111,16 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.87"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
  "wasm-bindgen-shared",
 ]
 
@@ -6047,9 +6138,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.87"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -6057,22 +6148,22 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.87"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.48",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.87"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
 
 [[package]]
 name = "wasm-logger"
@@ -6086,43 +6177,39 @@ dependencies = [
 ]
 
 [[package]]
-name = "web-sys"
-version = "0.3.61"
+name = "wasm-rs-dbg"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+checksum = "61e5fe4ac478ca5cf1db842029f41a5881da39e70320deb0006912f226ea63f4"
 dependencies = [
- "js-sys",
- "wasm-bindgen",
+ "web-sys",
 ]
 
 [[package]]
-name = "webpki"
-version = "0.21.4"
+name = "web-sys"
+version = "0.3.65"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea"
+checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85"
 dependencies = [
- "ring",
- "untrusted",
+ "js-sys",
+ "wasm-bindgen",
 ]
 
 [[package]]
 name = "webpki"
-version = "0.22.0"
+version = "0.21.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"
+checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea"
 dependencies = [
- "ring",
- "untrusted",
+ "ring 0.16.20",
+ "untrusted 0.7.1",
 ]
 
 [[package]]
 name = "webpki-roots"
-version = "0.22.6"
+version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
-dependencies = [
- "webpki 0.22.0",
-]
+checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
 
 [[package]]
 name = "which"
@@ -6213,6 +6300,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
 name = "windows-targets"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6243,6 +6339,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
+]
+
+[[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6255,6 +6366,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6267,6 +6384,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6279,6 +6402,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6291,6 +6420,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6303,6 +6438,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6315,6 +6456,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6327,6 +6474,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
 name = "winreg"
 version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6368,3 +6521,23 @@ name = "yansi"
 version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
diff --git a/pkgs/development/tools/database/prisma-engines/default.nix b/pkgs/development/tools/database/prisma-engines/default.nix
index 4d2dc36631845..b2f3d29a216f0 100644
--- a/pkgs/development/tools/database/prisma-engines/default.nix
+++ b/pkgs/development/tools/database/prisma-engines/default.nix
@@ -14,13 +14,13 @@
 # function correctly.
 rustPlatform.buildRustPackage rec {
   pname = "prisma-engines";
-  version = "5.6.0";
+  version = "5.12.1";
 
   src = fetchFromGitHub {
     owner = "prisma";
     repo = "prisma-engines";
     rev = version;
-    sha256 = "sha256-zyF2NAOPNJe23tIuOHalsvnYytALKZq8QY1L8EWJMno=";
+    hash = "sha256-emy2Qvx05D8omSc3Ivx66EnThW/tr77UGQu3qhat/fc=";
   };
 
   # Use system openssl.
@@ -30,9 +30,9 @@ rustPlatform.buildRustPackage rec {
     lockFile = ./Cargo.lock;
     outputHashes = {
       "barrel-0.6.6-alpha.0" = "sha256-USh0lQ1z+3Spgc69bRFySUzhuY79qprLlEExTmYWFN8=";
-      "cuid-1.3.2" = "sha256-ZihFrLerEIOdbJggaBbByRbC1sZRvF4M0LN2albB7vA=";
+      "cuid-1.3.2" = "sha256-qBu1k/dJiA6rWBwk4nOOqouIneD9h2TTBT8tvs0TDfA=";
       "graphql-parser-0.3.0" = "sha256-0ZAsj2mW6fCLhwTETucjbu4rPNzfbNiHu2wVTBlTNe4=";
-      "mysql_async-0.31.3" = "sha256-QIO9s0Upc0/1W7ux1RNJNGKqzO4gB4gMV3NoakAbxkQ=";
+      "mysql_async-0.31.3" = "sha256-2wOupQ/LFV9pUifqBLwTvA0tySv+XWbxHiqs7iTzvvg=";
       "postgres-native-tls-0.5.0" = "sha256-UYPsxhCkXXWk8yPbqjNS0illwjS5mVm3Z/jFwpVwqfw=";
     };
   };
diff --git a/pkgs/development/tools/devbox/default.nix b/pkgs/development/tools/devbox/default.nix
index fb362c5af14e8..63adb92c6ee52 100644
--- a/pkgs/development/tools/devbox/default.nix
+++ b/pkgs/development/tools/devbox/default.nix
@@ -5,13 +5,13 @@
 }:
 buildGoModule rec {
   pname = "devbox";
-  version = "0.10.3";
+  version = "0.10.4";
 
   src = fetchFromGitHub {
     owner = "jetpack-io";
     repo = pname;
     rev = version;
-    hash = "sha256-rKFGcqvg82r4SxU0vaXk6Qsdbm613OwcTqrdykc5xak=";
+    hash = "sha256-HLoTQrC8LVI2LZFJPRaobFX0TgT8mwVkmzyuii5bGA8=";
   };
 
   ldflags = [
@@ -23,7 +23,7 @@ buildGoModule rec {
   # integration tests want file system access
   doCheck = false;
 
-  vendorHash = "sha256-5rdB7vBWw3oU0OtYw7/51aQbEUCRAUwKsjA5AbUtRlI=";
+  vendorHash = "sha256-L7LDOfJ2v4FIdF8Ttpy7qOhMMLFFuhVxjuy5znn9Yb4=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/development/tools/dtools/default.nix b/pkgs/development/tools/dtools/default.nix
deleted file mode 100644
index 0c2f94bd7fe85..0000000000000
--- a/pkgs/development/tools/dtools/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, ldc, curl, gnumake42 }:
-
-stdenv.mkDerivation rec {
-  pname = "dtools";
-  version = "2.106.1";
-
-  src = fetchFromGitHub {
-    owner = "dlang";
-    repo = "tools";
-    rev = "v${version}";
-    sha256 = "sha256-Y8jSwd6tldCnq3yEuO/xUYrSV+lp7tBPMiheMA06f0M=";
-    name = "dtools";
-  };
-
-  patches = [
-    (fetchpatch {
-      # part of https://github.com/dlang/tools/pull/441
-      url = "https://github.com/dlang/tools/commit/6c6a042d1b08e3ec1790bd07a7f69424625ee866.patch"; # Fix LDC arm64 build
-      sha256 = "sha256-x6EclTYN1Y5FG57KLhbBK0BZicSYcZoWO7MTVcP4T18=";
-    })
-  ];
-
-  nativeBuildInputs = [ ldc gnumake42 ]; # fails with make 4.4
-  buildInputs = [ curl ];
-
-  makeCmd = ''
-    make -f posix.mak all DMD_DIR=dmd DMD=${ldc.out}/bin/ldmd2 CC=${stdenv.cc}/bin/cc
-  '';
-
-  buildPhase = ''
-    $makeCmd
-  '';
-
-  doCheck = true;
-
-  checkPhase = ''
-    $makeCmd test_rdmd
-    '';
-
-  installPhase = ''
-    $makeCmd INSTALL_DIR=$out install
-  '';
-
-  meta = with lib; {
-    description = "Ancillary tools for the D programming language compiler";
-    homepage = "https://github.com/dlang/tools";
-    license = lib.licenses.boost;
-    maintainers = with maintainers; [ jtbx ];
-    platforms = lib.platforms.unix;
-  };
-}
diff --git a/pkgs/development/tools/electron/binary/default.nix b/pkgs/development/tools/electron/binary/default.nix
index 2411316a4a0bf..8405bb930eef8 100644
--- a/pkgs/development/tools/electron/binary/default.nix
+++ b/pkgs/development/tools/electron/binary/default.nix
@@ -15,30 +15,30 @@ rec {
     headers = "009p1ffh2cyn98fcmprrjzq79jysp7h565v4f54wvjxjsq2nkr97";
   };
 
-  electron_27-bin = mkElectron "27.0.0" {
-    armv7l-linux = "81070012b0abbd763c59301044585be7a0f0092d80f9a8507744720e267dae2e";
-    aarch64-linux = "202c5c6817081739e7bf15127c17c84ce2e553457c69a17557dec0928d40f354";
-    x86_64-linux = "6c31e5733513c86eb5bb30169800bba5de8a055baadd9e0a5d153ea8fd2324ae";
-    x86_64-darwin = "8c2b944f3949265526410704ecd925c85ebb20d61f5c739081336bd1d29bd083";
-    aarch64-darwin = "2fc319c53f6dc61e2e424d46712caead7022b5124c9674f3b15b45c556dd0623";
-    headers = "1pb8xhaarkmgss00ap4jbf693i03z4mwh5ilpkz6dsg1b9fka84q";
+  electron_27-bin = mkElectron "27.3.9" {
+    armv7l-linux = "662bbf0e7070c755bfa548560f7117c7f83e1dc716395fd498a5e57fb7238482";
+    aarch64-linux = "ab084338fe645c24fef0c4abf5c637d7c9cf621e75ebb75141761213811ee92d";
+    x86_64-linux = "c0fcefdf8e38d6bbbe94a488a388f4dc4e72a52126a892e721c2ddefe2d63e59";
+    x86_64-darwin = "49597974b9cb8634e5c892701ab27f8d735eda6ee197a478cf84e5fa4ed1d2e9";
+    aarch64-darwin = "ac9f14ab54d7d39fe6e7c35a26ad09b5e0a0fb0c6a87ee4b25816515c51db807";
+    headers = "0mkssv830h7jbjb984jdp40zxs8zirb8m3ja35gw6rfblc8p0icb";
   };
 
-  electron_28-bin = mkElectron "28.0.0" {
-    armv7l-linux = "e41686b6ce7be7efb74d1f3fb4c912be31506b51770ceffa4e66b94164dac5b8";
-    aarch64-linux = "32f9f7592359cf8b341946b41d758466533bd7a2bc0dc316072a3a1af4b92d84";
-    x86_64-linux = "d66b6774b886bd57519d49b9eb8e6e745b523519414a8819f67aa19f76e2b53c";
-    x86_64-darwin = "a5fdc70519b2c17a708920af2b998fc067ff0a18ba9f97d690cfab6bac23bd7a";
-    aarch64-darwin = "d64947fee370a3b111f170399969977959848f2a2f544a1ae5dc081fc2df75cf";
-    headers = "1lrwc03ffrf4bi2faampkx7yg0iqsrcp86znp9fw6ajwdwgqsc81";
+  electron_28-bin = mkElectron "28.2.10" {
+    armv7l-linux = "b6026a7aed2d43447ac9e8fa44f655c1ef0181f11d52bece839cbdbdaa237180";
+    aarch64-linux = "509ab6601e083c67e0dd6926b67ae1ca04dd2a2cafec2a41a0847bac86975b41";
+    x86_64-linux = "4bf72ce27cb3098024395462c40ebe88c8a105d1db36861c443a0495703fa4ab";
+    x86_64-darwin = "4c323bfdc22bf21ced3b42ec05ea685bba647ff8cc00160da70a63d31a18c0eb";
+    aarch64-darwin = "ba693449ccafce08d832e9d5661839bdf2f40dfc0b5d7457a04517783f44cbf9";
+    headers = "0dgvzly8k149ivcbc5c58alvnzz51lvvi6kc889lcqdkck8wdvbc";
   };
 
-  electron_29-bin = mkElectron "29.1.4" {
-    armv7l-linux = "12a7e6a8ef214d104ee72eb6636a055c9c6d41bcc58f31a8dc48b9bc8fd0fcb5";
-    aarch64-linux = "0d41a51d45712d0312dd24d79a395e80280bd8365ebb8e46c252cadcb780354b";
-    x86_64-linux = "83a37103b67378a9073898541cfc4af8b5de708da15135f060bf26993ab426b5";
-    x86_64-darwin = "e7887396018840ca482eb481edbff2e9a5580998412ffd217f70fad02f23969d";
-    aarch64-darwin = "7ad63253fd6de9dbb337efbf4a6d0161f0e4c5953243bec27de488db98ef8a6c";
-    headers = "0plc831v1fva2yrwg1zal5n9wkgy0f6v1by6b3jh8wjgrsrkhk00";
+  electron_29-bin = mkElectron "29.2.0" {
+    armv7l-linux = "270e822c580d3caddb8efd42b6c99dbaf5a00e88e61992eef1902a975ceb7efb";
+    aarch64-linux = "a1367ef7dda8b262e4cebeeb7e3ea155d53e707e56de93a0cd125c501623db6c";
+    x86_64-linux = "4f23a3c3a6db796f29057c72f5aca45e94af6dce950da85e72e3d23dc374dc2a";
+    x86_64-darwin = "17b37f38369458e5b558d38b66658e6295ab5975ab87b46720c6bed94ce9e07b";
+    aarch64-darwin = "3ff37e2eb71abc187ed0f55570f141326a126a4faed1bd04efbb2ff3f4cf2582";
+    headers = "0g5zc0ric20wgvska4yva12358csxi647dbx484ilmabciq6b9vd";
   };
 }
diff --git a/pkgs/development/tools/electron/common.nix b/pkgs/development/tools/electron/common.nix
index 9881c26f659e4..a29de512404d1 100644
--- a/pkgs/development/tools/electron/common.nix
+++ b/pkgs/development/tools/electron/common.nix
@@ -127,7 +127,7 @@ in (chromium.override { upstream-info = info.chromium; }).mkDerivation (base: {
         for patch in $(cat $patch_dir/.patches)
         do
           echo applying in $repo: $patch
-          git apply -p1 --directory=$repo --exclude='src/third_party/blink/web_tests/*' $patch_dir/$patch
+          git apply -p1 --directory=$repo --exclude='src/third_party/blink/web_tests/*' --exclude='src/content/test/data/*' $patch_dir/$patch
         done
       done
     )
diff --git a/pkgs/development/tools/electron/info.json b/pkgs/development/tools/electron/info.json
index 153b9b6ff164a..67708aa5d43be 100644
--- a/pkgs/development/tools/electron/info.json
+++ b/pkgs/development/tools/electron/info.json
@@ -3,10 +3,10 @@
         "deps": {
             "src/electron": {
                 "fetcher": "fetchFromGitHub",
-                "hash": "sha256-jvrXVi/l7KBIoHYoWhFq4Kd3nZQ9XGoKjXAHdAj3yxM=",
+                "hash": "sha256-AHiOejVRSeJ14Xn+A6yjfICbERDPr/eCbBq+2qPjGDc=",
                 "owner": "electron",
                 "repo": "electron",
-                "rev": "v28.2.6"
+                "rev": "v28.3.0"
             },
             "src": {
                 "fetcher": "fetchFromGitiles",
@@ -873,7 +873,7 @@
                 "rev": "78d3966b3c331292ea29ec38661b25df0a245948"
             }
         },
-        "version": "28.2.6",
+        "version": "28.3.0",
         "modules": "119",
         "chrome": "120.0.6099.291",
         "node": "18.18.2",
@@ -888,17 +888,17 @@
                 }
             }
         },
-        "electron_yarn_hash": "117vxam1044yy2akwjfhvb5dpfnv667pwbg92ac43551xfn0slcg",
-        "chromium_npm_hash": "sha256-zexxXAAJDnhMmh7HfBO1V1z1Yds06C3gSpXacsbjUb4="
+        "chromium_npm_hash": "sha256-zexxXAAJDnhMmh7HfBO1V1z1Yds06C3gSpXacsbjUb4=",
+        "electron_yarn_hash": "117vxam1044yy2akwjfhvb5dpfnv667pwbg92ac43551xfn0slcg"
     },
     "27": {
         "deps": {
             "src/electron": {
                 "fetcher": "fetchFromGitHub",
-                "hash": "sha256-cklX+avErA79ib94VIhKNSyEP2k7CxlvTDGRDdPXu/w=",
+                "hash": "sha256-vCM74wty0JN4PL9snwa4oFbNebA3cMZ8lorXz5DIVcE=",
                 "owner": "electron",
                 "repo": "electron",
-                "rev": "v27.3.5"
+                "rev": "v27.3.10"
             },
             "src": {
                 "fetcher": "fetchFromGitiles",
@@ -1765,7 +1765,7 @@
                 "rev": "78d3966b3c331292ea29ec38661b25df0a245948"
             }
         },
-        "version": "27.3.5",
+        "version": "27.3.10",
         "modules": "118",
         "chrome": "118.0.5993.159",
         "node": "18.17.1",
@@ -1787,16 +1787,16 @@
         "deps": {
             "src/electron": {
                 "fetcher": "fetchFromGitHub",
-                "hash": "sha256-wUxpoBBlZzmOIsdQDVAirpCNReDFwZpSe15tsU9Sqqk=",
+                "hash": "sha256-buW6hC7GIA59MTuyWg9/+EzQlFgJVN2IZrxlfisLemM=",
                 "owner": "electron",
                 "repo": "electron",
-                "rev": "v29.1.2"
+                "rev": "v29.3.0"
             },
             "src": {
                 "fetcher": "fetchFromGitiles",
-                "hash": "sha256-QW8r1ALMBzyUNbYPi7miaefsKlBHL5gBwz6JnfluX54=",
+                "hash": "sha256-5AmRq2pl3p0QtqyIjx4XDVE9Mnps18F9Z9MyH+38a0Y=",
                 "url": "https://chromium.googlesource.com/chromium/src.git",
-                "rev": "122.0.6261.112",
+                "rev": "122.0.6261.156",
                 "postFetch": "rm -r $out/third_party/blink/web_tests; rm -r $out/third_party/hunspell/tests; rm -r $out/content/test/data; rm -r $out/courgette/testdata; rm -r $out/extensions/test/data; rm -r $out/media/test/data; "
             },
             "src/third_party/clang-format/script": {
@@ -1903,9 +1903,9 @@
             },
             "src/third_party/dawn": {
                 "fetcher": "fetchFromGitiles",
-                "hash": "sha256-lVEaLONx+64ustD31+SWHoOS73kVgpMP3JYzs3cMCpc=",
+                "hash": "sha256-/lG4wfy5LVCMGuqKRZgf/NoxsAuCvyUdV1Anbzi0q+U=",
                 "url": "https://dawn.googlesource.com/dawn.git",
-                "rev": "8917c648bdd68007c96b8ca9995533cc3ee995c2"
+                "rev": "6a6719ee09f1078356fdd31c69061e07b5c61c2d"
             },
             "src/third_party/dawn/third_party/glfw": {
                 "fetcher": "fetchFromGitiles",
@@ -1915,9 +1915,9 @@
             },
             "src/third_party/dawn/third_party/dxc": {
                 "fetcher": "fetchFromGitiles",
-                "hash": "sha256-bPn+8v5CGv6CQe6brsPCYEJgpSoIa+ETtop1dZ9F42c=",
+                "hash": "sha256-PGGwxNYgvZ//k+cr19iTG2QwC9Agu2T9k9QOhnX565s=",
                 "url": "https://chromium.googlesource.com/external/github.com/microsoft/DirectXShaderCompiler",
-                "rev": "00e170f3485dc5a83628f716c0944f2b8cf58028"
+                "rev": "701a2b1da0387ac6abf73bdbaf7864b9615db033"
             },
             "src/third_party/dawn/third_party/dxheaders": {
                 "fetcher": "fetchFromGitiles",
@@ -2161,9 +2161,9 @@
             },
             "src/third_party/icu": {
                 "fetcher": "fetchFromGitiles",
-                "hash": "sha256-9yFRBrHdWcYgrZAaigS8XnxNsqJNklGdFkAAgVdHXFU=",
+                "hash": "sha256-YYoslfgGfmDpSTxtCOmGGfwQg6mVU1IggzAtWRwwcMc=",
                 "url": "https://chromium.googlesource.com/chromium/deps/icu.git",
-                "rev": "a622de35ac311c5ad390a7af80724634e5dc61ed"
+                "rev": "bad7ddbf921358177e56fd723c2f59f8041a370f"
             },
             "src/third_party/jsoncpp/source": {
                 "fetcher": "fetchFromGitiles",
@@ -2305,9 +2305,9 @@
             },
             "src/third_party/libvpx/source/libvpx": {
                 "fetcher": "fetchFromGitiles",
-                "hash": "sha256-VdNl1P+nHidhYcdyx0ceHmxweO0ypMFQKKUokvP9SEA=",
+                "hash": "sha256-AUNWUicLMpEL/+r5c3JVjgZu9URBVsebayMs+ogNN6M=",
                 "url": "https://chromium.googlesource.com/webm/libvpx.git",
-                "rev": "b95d17572629c676bdcfd535fb3990b9f6f8fb11"
+                "rev": "893c9f6d070cc3bd8503152480089673f57fdf76"
             },
             "src/third_party/libwebm/source": {
                 "fetcher": "fetchFromGitiles",
@@ -2431,9 +2431,9 @@
             },
             "src/third_party/skia": {
                 "fetcher": "fetchFromGitiles",
-                "hash": "sha256-GR9qVnqCCd49Itc74h8e7TMkfttPbXQ9DH8iqEZ2MV0=",
+                "hash": "sha256-iJlxnQL0JsDPOFSyD0ubEMWtDJhtbqCsBtaQqWZt8q0=",
                 "url": "https://skia.googlesource.com/skia.git",
-                "rev": "c6835e2d5ff641dad9347ce4c2ff79dbc29cf9aa"
+                "rev": "8464f41cf051974e499be9caeab3243506e025c2"
             },
             "src/third_party/smhasher/src": {
                 "fetcher": "fetchFromGitiles",
@@ -2623,9 +2623,9 @@
             },
             "src/v8": {
                 "fetcher": "fetchFromGitiles",
-                "hash": "sha256-ssM6nI9E0xF1BT6iIqN7u1kgQe8oGIzsJbFouGJi4Aw=",
+                "hash": "sha256-qDQ1rt/9nfv9L6RJLZDb1KTn9+Z70XDjkTs6gOt3u/Y=",
                 "url": "https://chromium.googlesource.com/v8/v8.git",
-                "rev": "ddbcde1a3adf125ed72dbfcb4f90040d0c7e5dae"
+                "rev": "ddb4756a90fb7d89dc789859f8b2a3639d8de125"
             },
             "src/third_party/nan": {
                 "fetcher": "fetchFromGitHub",
@@ -2670,12 +2670,12 @@
                 "rev": "955335c30a752e9ef7bff375baab5e0819b6c00d"
             }
         },
-        "version": "29.1.2",
+        "version": "29.3.0",
         "modules": "121",
-        "chrome": "122.0.6261.112",
+        "chrome": "122.0.6261.156",
         "node": "20.9.0",
         "chromium": {
-            "version": "122.0.6261.112",
+            "version": "122.0.6261.156",
             "deps": {
                 "gn": {
                     "version": "2024-01-22",
@@ -2685,7 +2685,7 @@
                 }
             }
         },
-        "electron_yarn_hash": "0spwnax6g3050z2bjylzs67l7m551is86nizzy4hp0306v57xdpz",
+        "electron_yarn_hash": "0f868gk3d2cablpczav8a4vhk4nfirph45yzjz18mgzgday7w8hf",
         "chromium_npm_hash": "sha256-9eFsK673j3pTDOcsU35RN4hagFygA/v/ahCqVVEV0Rs="
     }
 }
diff --git a/pkgs/development/tools/faas-cli/default.nix b/pkgs/development/tools/faas-cli/default.nix
index 35db119791cc8..bd6b56e932be6 100644
--- a/pkgs/development/tools/faas-cli/default.nix
+++ b/pkgs/development/tools/faas-cli/default.nix
@@ -18,13 +18,13 @@ let
 in
 buildGoModule rec {
   pname = "faas-cli";
-  version = "0.16.23";
+  version = "0.16.25";
 
   src = fetchFromGitHub {
     owner = "openfaas";
     repo = "faas-cli";
     rev = version;
-    sha256 = "sha256-QbMwokFHaISvsNuHy/Do90bvXtwaJmie/hDLybuy2qk=";
+    sha256 = "sha256-6HX+n3OXSA2gJ0LW5zlH3FboM5RNaOI72EmnEI9wbFE=";
   };
 
   vendorHash = null;
diff --git a/pkgs/development/tools/fblog/default.nix b/pkgs/development/tools/fblog/default.nix
index 7294b199273c2..001a1f5298d27 100644
--- a/pkgs/development/tools/fblog/default.nix
+++ b/pkgs/development/tools/fblog/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "fblog";
-  version = "4.8.0";
+  version = "4.9.0";
 
   src = fetchFromGitHub {
     owner = "brocode";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-ByojMOkdE3B9KrApOWPihg6vJHpLQy0gsIlKPd5xJog=";
+    hash = "sha256-9v8bn68anWB0vkRIixa6YvNl54z6X8u+MyYs38Zgc5A=";
   };
 
-  cargoHash = "sha256-R7FLZ+yLvDltETphfqRLrcQZNt+rkJBFdmGL3pY0G04=";
+  cargoHash = "sha256-tXBXI0tlCdfxKscR4Vfw4okJw+jW3EqPz4Rp6xeCdIQ=";
 
   meta = with lib; {
     description = "A small command-line JSON log viewer";
diff --git a/pkgs/development/tools/firebase-tools/default.nix b/pkgs/development/tools/firebase-tools/default.nix
index ebcf8abf0feaa..25110f322adbe 100644
--- a/pkgs/development/tools/firebase-tools/default.nix
+++ b/pkgs/development/tools/firebase-tools/default.nix
@@ -8,16 +8,16 @@
 
 buildNpmPackage rec {
   pname = "firebase-tools";
-  version = "13.6.0";
+  version = "13.7.1";
 
   src = fetchFromGitHub {
     owner = "firebase";
     repo = "firebase-tools";
     rev = "v${version}";
-    hash = "sha256-69fIejqLs/27nISW7b7+kPRoUiEGQF0DSGz5nkus6Us=";
+    hash = "sha256-NTO4DhRwdCeufkeec6kMw1CEj/cZqk3S+vy9R7TArXU=";
   };
 
-  npmDepsHash = "sha256-m9mAuR0lqC83uHY+b1rOLuv6bRSl9eVnYVE7pvLi9+s=";
+  npmDepsHash = "sha256-MgICHHZBgD80vZLfS9WUwvotorc0OAHzGaw+S0tjyQo=";
 
   postPatch = ''
     ln -s npm-shrinkwrap.json package-lock.json
diff --git a/pkgs/development/tools/frugal/default.nix b/pkgs/development/tools/frugal/default.nix
index 0bea6b4e5785f..3cd3d4a7788f8 100644
--- a/pkgs/development/tools/frugal/default.nix
+++ b/pkgs/development/tools/frugal/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "frugal";
-  version = "3.17.9";
+  version = "3.17.10";
 
   src = fetchFromGitHub {
     owner = "Workiva";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-VNzTrJ5sY6JHfUXLlY3LOQYfzoWPYltPQBZWx9FopSU=";
+    sha256 = "sha256-FAxvpP2js0bTb5hwFTCGKxIbunM8htEaf17gbM60WWM=";
   };
 
   subPackages = [ "." ];
 
-  vendorHash = "sha256-5o2r392gT5mNvO7mFVRgOGgoy5d+1K2kIitBo+dzhFQ=";
+  vendorHash = "sha256-6yKyPocuahr9m5frhbhBlcWd7QZ1rH+f9KhQ83+oadY=";
 
   meta = with lib; {
     description = "Thrift improved";
diff --git a/pkgs/development/tools/gammaray/default.nix b/pkgs/development/tools/gammaray/default.nix
index 29ab4973c994d..3b9f578064776 100644
--- a/pkgs/development/tools/gammaray/default.nix
+++ b/pkgs/development/tools/gammaray/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
 , cmake
 , pkg-config
 , wrapQtAppsHook
@@ -21,6 +22,27 @@ stdenv.mkDerivation rec {
     hash = "sha256-C8bej0q4p8F27hiJUye9G+sZbkAYaV8hW1GKWZyHAis=";
   };
 
+  patches = [
+    # Qt 6.7 temp fix, change to Qt needed to fully fix
+    # https://github.com/KDAB/GammaRay/pull/921
+    (fetchpatch {
+      url = "https://github.com/KDAB/GammaRay/commit/d76e73696800bbeda1273e04c6ec42d081fd55e4.patch";
+      hash = "sha256-BEbNVfP6TDX07RHD5wo1O6na0ku3E04Bzo2z2bUBvuc=";
+    })
+    # Fix build on 6.7 for after QDeferredDeleteEvent export reversion
+    # https://github.com/KDAB/GammaRay/pull/957
+    (fetchpatch {
+      url = "https://github.com/KDAB/GammaRay/commit/cf8f77f0d5e881368240a0647368757abdd6334e.patch";
+      hash = "sha256-qbaB9eTJiogpszj6KY1PgfZtp5leUaQemmKGGhLxZb4=";
+    })
+    # Fix Qt 6.6+ build
+    # https://github.com/KDAB/GammaRay/issues/827
+    (fetchpatch {
+      url = "https://github.com/KDAB/GammaRay/commit/9978a0a7c4f4d122477f4f14755e55196365d8ce.patch";
+      hash = "sha256-l7GsHNDcT2gAL5zCSLSuLD+Pkr72VnKtiC1WOvTlxqU=";
+    })
+  ];
+
   nativeBuildInputs = [
     cmake
     pkg-config
diff --git a/pkgs/development/tools/gauge/default.nix b/pkgs/development/tools/gauge/default.nix
index 865588fcd1b2d..efe9917a0d8a3 100644
--- a/pkgs/development/tools/gauge/default.nix
+++ b/pkgs/development/tools/gauge/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "gauge";
-  version = "1.6.4";
+  version = "1.6.6";
 
   src = fetchFromGitHub {
     owner = "getgauge";
     repo = "gauge";
     rev = "v${version}";
-    hash = "sha256-Hefhhexy3Kl4fmYXlNBgZBSdOGPJefS1BjKWoblIVaw=";
+    hash = "sha256-u64LEDWktnBqGmey1TGdpVerjBsgyyRKJKeAJU3ysZs=";
   };
 
-  vendorHash = "sha256-csS7lRTczno77LIDq2q3DeuJxQcOLr1cQf11NuWixG8=";
+  vendorHash = "sha256-RC3oS4nD291p8BSiWZUmsej/XuadaR7Xz1+bEfZL3Oc=";
 
   excludedPackages = [ "build" "man" ];
 
diff --git a/pkgs/development/tools/goa/default.nix b/pkgs/development/tools/goa/default.nix
index 6b96bbcc696a0..48dfe14be08c2 100644
--- a/pkgs/development/tools/goa/default.nix
+++ b/pkgs/development/tools/goa/default.nix
@@ -5,15 +5,15 @@
 
 buildGoModule rec {
   pname = "goa";
-  version = "3.15.2";
+  version = "3.16.0";
 
   src = fetchFromGitHub {
     owner = "goadesign";
     repo = "goa";
     rev = "v${version}";
-    hash = "sha256-jzhvElHOBzekW3cyXf7wJG+8E1GObWVtPbBw18/dpCk=";
+    hash = "sha256-UumeyuFElb+MPd9GYaT8U1GtDi21tChGKKqXBqQ/ZOk=";
   };
-  vendorHash = "sha256-Z31hTOMmxFM0zmHoZRJaIz7ka2adV0crdhou6EudDWw=";
+  vendorHash = "sha256-A7FsCfZQKFFrk0KXvgyJjfGjyHQ3Ruoq/+RxC+zSa04=";
 
   subPackages = [ "cmd/goa" ];
 
diff --git a/pkgs/development/tools/hcloud/default.nix b/pkgs/development/tools/hcloud/default.nix
index 621defa3e455b..d5919034ca8a6 100644
--- a/pkgs/development/tools/hcloud/default.nix
+++ b/pkgs/development/tools/hcloud/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "hcloud";
-  version = "1.42.0";
+  version = "1.43.0";
 
   src = fetchFromGitHub {
     owner = "hetznercloud";
     repo = "cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cJNCp60OZBPXtda787PDT9iInxidTvzYmf9orifmS/A=";
+    hash = "sha256-czuMlnVhUDWGVbIZ0V7vaoOnT84WKPFjhcUvt5BzBXo=";
   };
 
-  vendorHash = "sha256-IIszQCAsNSQYieM1JQH1Dald9saUhZ2kPhwZ1p2GTp4=";
+  vendorHash = "sha256-0XFgi2cPlsL4zCbttGrEsm0j5ftB8MAuphu3YNlPbIs=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/development/tools/infisical/default.nix b/pkgs/development/tools/infisical/default.nix
index 8fe736554352e..f19b021ed3a3b 100644
--- a/pkgs/development/tools/infisical/default.nix
+++ b/pkgs/development/tools/infisical/default.nix
@@ -15,7 +15,7 @@ let
   buildHashes = builtins.fromJSON (builtins.readFile ./hashes.json);
 
   # the version of infisical
-  version = "0.19.1";
+  version = "0.20.1";
 
   # the platform-specific, statically linked binary
   src =
diff --git a/pkgs/development/tools/infisical/hashes.json b/pkgs/development/tools/infisical/hashes.json
index 29c6455c399dc..6b23b59dbf979 100644
--- a/pkgs/development/tools/infisical/hashes.json
+++ b/pkgs/development/tools/infisical/hashes.json
@@ -1,6 +1,6 @@
 { "_comment": "@generated by pkgs/development/tools/infisical/update.sh"
-, "x86_64-linux": "sha256-wkVYyS3VxD6WEvLhKbt21xwmbVixMthssrkkM8J7Q7Y="
-, "x86_64-darwin": "sha256-+L7k5ux49cQAUdpdBOrTdvXYDrewNb357CCb8jFNlKE="
-, "aarch64-linux": "sha256-iD8L9ICsw4Xt9UA4GdS1KICI/nU4P+qdE89RNKD81B8="
-, "aarch64-darwin": "sha256-iDdH/toB39HjBPSrFslTDNhbc4xCu7lmC7jgsOWvVJI="
+, "x86_64-linux": "sha256-W5k/xGL6R4ox9XQShWl2PqpvbJYIqeM4Qx3bG+5HpAo="
+, "x86_64-darwin": "sha256-sFGKUh4qkj5EZ5NE6wQqO2TAmHuMH4qgcdJlx92ygr8="
+, "aarch64-linux": "sha256-t80Nt1YXwmcjagZRaPgXH4m7D5sKhwLz9YcX6cOArRQ="
+, "aarch64-darwin": "sha256-INNcqrCy5px9vwh6yM03baSgj2uHgPrbKAatGl84R5M="
 }
diff --git a/pkgs/development/tools/kubeswitch/default.nix b/pkgs/development/tools/kubeswitch/default.nix
index 76aeeb2e94c89..aad4fb5318c7e 100644
--- a/pkgs/development/tools/kubeswitch/default.nix
+++ b/pkgs/development/tools/kubeswitch/default.nix
@@ -1,4 +1,11 @@
-{ lib, buildGoModule, fetchFromGitHub, testers, kubeswitch }:
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  testers,
+  kubeswitch,
+  installShellFiles,
+}:
 
 buildGoModule rec {
   pname = "kubeswitch";
@@ -6,9 +13,9 @@ buildGoModule rec {
 
   src = fetchFromGitHub {
     owner = "danielfoehrKn";
-    repo = pname;
+    repo = "kubeswitch";
     rev = version;
-    sha256 = "sha256-zf7o41YYAppRge0EMXgIN8rI5Kco4/n7BJ90b/X6L1M=";
+    hash = "sha256-zf7o41YYAppRge0EMXgIN8rI5Kco4/n7BJ90b/X6L1M=";
   };
 
   vendorHash = null;
@@ -16,25 +23,30 @@ buildGoModule rec {
   subPackages = [ "cmd/main.go" ];
 
   ldflags = [
-    "-s" "-w"
+    "-s"
+    "-w"
     "-X github.com/danielfoehrkn/kubeswitch/cmd/switcher.version=${version}"
     "-X github.com/danielfoehrkn/kubeswitch/cmd/switcher.buildDate=1970-01-01"
-
   ];
 
-  passthru.tests.version = testers.testVersion {
-    package = kubeswitch;
-  };
+  nativeBuildInputs = [ installShellFiles ];
 
   postInstall = ''
-    mv $out/bin/main $out/bin/switch
+    mv $out/bin/main $out/bin/switcher
+    for shell in bash zsh fish; do
+      $out/bin/switcher --cmd switcher completion $shell > switcher.$shell
+      installShellCompletion --$shell switcher.$shell
+    done
   '';
 
-  meta = with lib; {
-    description = "The kubectx for operators";
-    license = licenses.asl20;
+  passthru.tests.version = testers.testVersion { package = kubeswitch; };
+
+  meta = {
+    changelog = "https://github.com/danielfoehrKn/kubeswitch/releases/tag/${version}";
+    description = "The kubectx for operators, a drop-in replacement for kubectx";
+    license = lib.licenses.asl20;
     homepage = "https://github.com/danielfoehrKn/kubeswitch";
-    maintainers = with maintainers; [ bryanasdev000 ];
-    mainProgram = "switch";
+    maintainers = with lib.maintainers; [ bryanasdev000 ];
+    mainProgram = "switcher";
   };
 }
diff --git a/pkgs/development/tools/language-servers/helm-ls/default.nix b/pkgs/development/tools/language-servers/helm-ls/default.nix
index 74c0701bce5ab..337e45153f551 100644
--- a/pkgs/development/tools/language-servers/helm-ls/default.nix
+++ b/pkgs/development/tools/language-servers/helm-ls/default.nix
@@ -8,13 +8,13 @@
 
 buildGoModule rec {
   pname = "helm-ls";
-  version = "0.0.14";
+  version = "0.0.15";
 
   src = fetchFromGitHub {
     owner = "mrjosh";
     repo = "helm-ls";
     rev = "v${version}";
-    hash = "sha256-h6s4mQgahFkGHiFcSS+HjUKzOT4x82UQMR19JWX09n0=";
+    hash = "sha256-RRpPmpwEHrORVVXn3mVgGcOAI7nmyrl+gwIuGXAZglY=";
   };
 
   vendorHash = "sha256-pV1FYhBLP0goetSr9v9iqXbeFTUHLdiIQ3ixqOsmp+Q=";
diff --git a/pkgs/development/tools/language-servers/vhdl-ls/default.nix b/pkgs/development/tools/language-servers/vhdl-ls/default.nix
index f0906c865987f..69450e1fca7dd 100644
--- a/pkgs/development/tools/language-servers/vhdl-ls/default.nix
+++ b/pkgs/development/tools/language-servers/vhdl-ls/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "vhdl-ls";
-  version = "0.78.2";
+  version = "0.79.0";
 
   src = fetchFromGitHub {
     owner = "VHDL-LS";
     repo = "rust_hdl";
     rev = "v${version}";
-    hash = "sha256-hg+OEB4V5kCpno7blMyE6jnDQPHds+BN+RZGG8oAoZU=";
+    hash = "sha256-9AcMMT1d4FrTcCN6c2uMa1Xh21e79sM+YsPs+RT892U=";
   };
 
-  cargoHash = "sha256-jX2vJdFTx0ELXqwMvoCILGvYrfAtL72lfI3KqWCZLYg=";
+  cargoHash = "sha256-Cb4WvOdWtwaC5GCQcnIorAFbkDXliU9w1xDU8g3YlSI=";
 
   postPatch = ''
     substituteInPlace vhdl_lang/src/config.rs \
diff --git a/pkgs/development/tools/maizzle/default.nix b/pkgs/development/tools/maizzle/default.nix
index eac30c4da0549..f04536f763095 100644
--- a/pkgs/development/tools/maizzle/default.nix
+++ b/pkgs/development/tools/maizzle/default.nix
@@ -5,16 +5,16 @@
 
 buildNpmPackage rec {
   pname = "maizzle";
-  version = "1.5.7";
+  version = "1.5.8";
 
   src = fetchFromGitHub {
     owner = "maizzle";
     repo = "cli";
     rev = "v${version}";
-    hash = "sha256-6AV5irttsI76CQH0GixnCufZ35Il+JQjy3hkK9Iktbo=";
+    hash = "sha256-cSAYicgCgFpJO+2vBAqfl3od7B07DTXvkW38x6y5VgM=";
   };
 
-  npmDepsHash = "sha256-DeAV3uOo5UpSX0RP0cIb6IwS759PLKK0DtguQH3m73M=";
+  npmDepsHash = "sha256-K9EQxqOjFzgTw/VXG2ZGF90yUzYTNl13Ssq9oiC+F7A=";
 
   dontNpmBuild = true;
 
diff --git a/pkgs/development/tools/melange/default.nix b/pkgs/development/tools/melange/default.nix
index 40f4fa5987317..24e7584b76d3f 100644
--- a/pkgs/development/tools/melange/default.nix
+++ b/pkgs/development/tools/melange/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "melange";
-  version = "0.6.9";
+  version = "0.6.11";
 
   src = fetchFromGitHub {
     owner = "chainguard-dev";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-txyfoGl0MPMHQFOhdCQPVSLveYBVFIiDxJct1W6xYKM=";
+    hash = "sha256-/P85vrcKWZHXNUIlzLpc9v0I5KEL7HUyr1SM2207l7o=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
@@ -25,7 +25,7 @@ buildGoModule rec {
     '';
   };
 
-  vendorHash = "sha256-uMdphe78cEwypVZOyIvFgUJQuVQ3scd6SQc8y5Sqjdo=";
+  vendorHash = "sha256-R1Fo4N5q00ePkddOJKauC6iDPGMYk15FIKEXqWy6ifQ=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/development/tools/micronaut/default.nix b/pkgs/development/tools/micronaut/default.nix
index a126ce98314c8..7acf37c5ccf83 100644
--- a/pkgs/development/tools/micronaut/default.nix
+++ b/pkgs/development/tools/micronaut/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "micronaut";
-  version = "4.3.7";
+  version = "4.3.8";
 
   src = fetchzip {
     url = "https://github.com/micronaut-projects/micronaut-starter/releases/download/v${version}/micronaut-cli-${version}.zip";
-    sha256 = "sha256-TP7Ccv/Krc5l35AxyrkRmeRMSgQP9Q3BpNiHxlqLD4I=";
+    sha256 = "sha256-8sUXJExg1CApMbF95Lx3B/mnOJ5Y6HAck8+0UgF0bdc=";
   };
 
   nativeBuildInputs = [ makeWrapper installShellFiles ];
diff --git a/pkgs/development/tools/misc/blackfire/default.nix b/pkgs/development/tools/misc/blackfire/default.nix
index a1bc14653478b..013e517bb52b3 100644
--- a/pkgs/development/tools/misc/blackfire/default.nix
+++ b/pkgs/development/tools/misc/blackfire/default.nix
@@ -10,7 +10,7 @@
 
 stdenv.mkDerivation rec {
   pname = "blackfire";
-  version = "2.26.1";
+  version = "2.26.3";
 
   src = passthru.sources.${stdenv.hostPlatform.system} or (throw "Unsupported platform for blackfire: ${stdenv.hostPlatform.system}");
 
@@ -57,23 +57,23 @@ stdenv.mkDerivation rec {
     sources = {
       "x86_64-linux" = fetchurl {
         url = "https://packages.blackfire.io/debian/pool/any/main/b/blackfire/blackfire_${version}_amd64.deb";
-        sha256 = "Ujl9Uicz3erD6+eerlyk7JU07X9gkqVTAgEZipwWPLQ=";
+        sha256 = "/U45R5eBRl+uPu7nVj4GYrJERaYEPQtBezTKXn/Np5g=";
       };
       "i686-linux" = fetchurl {
         url = "https://packages.blackfire.io/debian/pool/any/main/b/blackfire/blackfire_${version}_i386.deb";
-        sha256 = "aVXxPvS8ZbMYFVg5IlUwNCJTh3mPpG/r71mHvKw/tuQ=";
+        sha256 = "J77nEV6BWgu0SOexsTUN03k2ZKnPSUCFgd8+zHN55E0=";
       };
       "aarch64-linux" = fetchurl {
         url = "https://packages.blackfire.io/debian/pool/any/main/b/blackfire/blackfire_${version}_arm64.deb";
-        sha256 = "I82I9+0IFPLkyfQJM1q/yYtX1QQhxPK0ZMm2tJaeDA8=";
+        sha256 = "Wt5TOKKjGDp8ZUFC9Ml9EeafIVcM3eubbjiRE7A8uns=";
       };
       "aarch64-darwin" = fetchurl {
         url = "https://packages.blackfire.io/blackfire/${version}/blackfire-darwin_arm64.pkg.tar.gz";
-        sha256 = "yT3zZqtP7mInyjnfaalONvMNGywGylXsmReE3kzgKVg=";
+        sha256 = "7Hlw0WvIEBLl7Ft9o7jhbB8Fyi0abymUonMhZAcU0rk=";
       };
       "x86_64-darwin" = fetchurl {
         url = "https://packages.blackfire.io/blackfire/${version}/blackfire-darwin_amd64.pkg.tar.gz";
-        sha256 = "TlOa7/W1ChHV4Wwu6jEp9Jxl+PA/l48Te1H+u9sfiWc=";
+        sha256 = "Y/2QXiyYnT+uqy8rWGd9BesXft1hjMPlcMpkYw4qO+k=";
       };
     };
 
diff --git a/pkgs/development/tools/misc/dart-sass/default.nix b/pkgs/development/tools/misc/dart-sass/default.nix
index e4c9f9f637473..cfd31c63ddefb 100644
--- a/pkgs/development/tools/misc/dart-sass/default.nix
+++ b/pkgs/development/tools/misc/dart-sass/default.nix
@@ -10,24 +10,24 @@
 }:
 
 let
-  embedded-protocol-version = "2.5.0";
+  embedded-protocol-version = "2.6.0";
 
   embedded-protocol = fetchFromGitHub {
     owner = "sass";
     repo = "sass";
     rev = "refs/tags/embedded-protocol-${embedded-protocol-version}";
-    hash = "sha256-ue2yv6jy0J8207Nhc5i8jnBWlNeYmGqexS2f3LDwg18=";
+    hash = "sha256-pNQnbOKVxRW9AiPteuO2Gq6ejV5Yd9GTuxZSyC/0SlE=";
   };
 in
 buildDartApplication rec {
   pname = "dart-sass";
-  version = "1.72.0";
+  version = "1.74.1";
 
   src = fetchFromGitHub {
     owner = "sass";
     repo = pname;
     rev = version;
-    hash = "sha256-wDZz7tR3AfUoRD0JXetXOH73W2WDFnwV4vUHRPGxiDc=";
+    hash = "sha256-5S+z8ig1t4d3QdIitTkbLNFLLeqbN9zj9QfziAGsVOw=";
   };
 
   pubspecLock = lib.importJSON ./pubspec.lock.json;
diff --git a/pkgs/development/tools/misc/dart-sass/pubspec.lock.json b/pkgs/development/tools/misc/dart-sass/pubspec.lock.json
index 632630aec9f87..32d462feccda4 100644
--- a/pkgs/development/tools/misc/dart-sass/pubspec.lock.json
+++ b/pkgs/development/tools/misc/dart-sass/pubspec.lock.json
@@ -164,11 +164,11 @@
       "dependency": "transitive",
       "description": {
         "name": "dart_mappable",
-        "sha256": "f9f272f2af6c11adf4abc22574eb946df110251052a0d00c03519ecf2442defc",
+        "sha256": "47269caf2060533c29b823ff7fa9706502355ffcb61e7f2a374e3a0fb2f2c3f0",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "4.2.1"
+      "version": "4.2.2"
     },
     "dart_style": {
       "dependency": "direct dev",
@@ -184,11 +184,11 @@
       "dependency": "direct dev",
       "description": {
         "name": "dartdoc",
-        "sha256": "09c07e4b5313a301f8a6fe5a3b43d2dd7fd2b0817d51d563f7dcacdac62ecf68",
+        "sha256": "76de402781a647e55f356f1ae4446a400a573421f84c95da13dda4754cdbcceb",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "8.0.7"
+      "version": "8.0.8"
     },
     "ffi": {
       "dependency": "transitive",
@@ -224,11 +224,11 @@
       "dependency": "transitive",
       "description": {
         "name": "frontend_server_client",
-        "sha256": "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612",
+        "sha256": "f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.2.0"
+      "version": "4.0.0"
     },
     "glob": {
       "dependency": "transitive",
@@ -364,11 +364,11 @@
       "dependency": "direct main",
       "description": {
         "name": "meta",
-        "sha256": "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136",
+        "sha256": "25dfcaf170a0190f47ca6355bdd4552cb8924b430512ff0cafb8db9bd41fe33b",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "1.12.0"
+      "version": "1.14.0"
     },
     "mime": {
       "dependency": "transitive",
@@ -464,11 +464,11 @@
       "dependency": "transitive",
       "description": {
         "name": "pointycastle",
-        "sha256": "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29",
+        "sha256": "70fe966348fe08c34bf929582f1d8247d9d9408130723206472b4687227e4333",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "3.7.4"
+      "version": "3.8.0"
     },
     "pool": {
       "dependency": "direct main",
@@ -734,11 +734,11 @@
       "dependency": "transitive",
       "description": {
         "name": "type_plus",
-        "sha256": "2e33cfac2e129297d5874567bdf7587502ec359881e9318551e014d91b02f84a",
+        "sha256": "d5d1019471f0d38b91603adb9b5fd4ce7ab903c879d2fbf1a3f80a630a03fcc9",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "2.1.0"
+      "version": "2.1.1"
     },
     "typed_data": {
       "dependency": "direct main",
@@ -764,11 +764,11 @@
       "dependency": "transitive",
       "description": {
         "name": "vm_service",
-        "sha256": "e7d5ecd604e499358c5fe35ee828c0298a320d54455e791e9dcf73486bc8d9f0",
+        "sha256": "a75f83f14ad81d5fe4b3319710b90dec37da0e22612326b696c9e1b8f34bbf48",
         "url": "https://pub.dev"
       },
       "source": "hosted",
-      "version": "14.1.0"
+      "version": "14.2.0"
     },
     "watcher": {
       "dependency": "direct main",
diff --git a/pkgs/development/tools/misc/edb/default.nix b/pkgs/development/tools/misc/edb/default.nix
index d6fac75190f6e..a1f9120f314c1 100644
--- a/pkgs/development/tools/misc/edb/default.nix
+++ b/pkgs/development/tools/misc/edb/default.nix
@@ -1,4 +1,4 @@
-{ lib, mkDerivation, fetchFromGitHub, cmake, pkg-config, boost, capstone
+{ lib, mkDerivation, fetchFromGitHub, cmake, pkg-config, boost, capstone_4
 , double-conversion, graphviz, qtxmlpatterns }:
 
 mkDerivation rec {
@@ -15,7 +15,7 @@ mkDerivation rec {
 
   nativeBuildInputs = [ cmake pkg-config ];
 
-  buildInputs = [ boost.dev capstone double-conversion graphviz qtxmlpatterns ];
+  buildInputs = [ boost.dev capstone_4 double-conversion graphviz qtxmlpatterns ];
 
   postPatch = ''
     # Remove CMAKE_INSTALL_PREFIX from DEFAULT_PLUGIN_PATH otherwise the nix store path will appear twice.
diff --git a/pkgs/development/tools/misc/pest-ide-tools/default.nix b/pkgs/development/tools/misc/pest-ide-tools/default.nix
index 162817c683579..c228508e4a60d 100644
--- a/pkgs/development/tools/misc/pest-ide-tools/default.nix
+++ b/pkgs/development/tools/misc/pest-ide-tools/default.nix
@@ -10,14 +10,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "pest-ide-tools";
-  version = "0.3.6";
-  cargoSha256 = "sha256-uFcEE5Hlb0fhOH0birqeH+hOuAyZVjQOYFhoMdR8czM=";
+  version = "0.3.9";
+  cargoSha256 = "sha256-kFLVzsk2ML78zWoLVX/tPz+rwBPziXmfGAcVSA7GiTA=";
 
   src = fetchFromGitHub {
     owner = "pest-parser";
     repo = "pest-ide-tools";
     rev = "v${version}";
-    sha256 = "sha256-SymtMdj7QVOEiSeTjmVidejFeGK8swnM6nfT7u18URs=";
+    sha256 = "sha256-6051J3DQjI+Wp3iLn65GRmMnwOjGEtcWyXEKsT9k9fE=";
   };
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [
diff --git a/pkgs/development/tools/misc/pwndbg/default.nix b/pkgs/development/tools/misc/pwndbg/default.nix
deleted file mode 100644
index b9156abf84b86..0000000000000
--- a/pkgs/development/tools/misc/pwndbg/default.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ lib
-, stdenv
-, python3
-, fetchFromGitHub
-, makeWrapper
-, gdb
-}:
-
-let
-  pythonPath = with python3.pkgs; makePythonPath [
-    capstone
-    future
-    psutil
-    pwntools
-    pycparser
-    pyelftools
-    pygments
-    unicorn
-    rpyc
-  ];
-  binPath = lib.makeBinPath ([
-    python3.pkgs.pwntools   # ref: https://github.com/pwndbg/pwndbg/blob/2022.12.19/pwndbg/wrappers/checksec.py#L8
-  ] ++ lib.optionals stdenv.isLinux [
-    python3.pkgs.ropper     # ref: https://github.com/pwndbg/pwndbg/blob/2022.12.19/pwndbg/commands/ropper.py#L30
-    python3.pkgs.ropgadget  # ref: https://github.com/pwndbg/pwndbg/blob/2022.12.19/pwndbg/commands/rop.py#L32
-  ]);
-
-in stdenv.mkDerivation rec {
-  pname = "pwndbg";
-  version = "2022.12.19";
-  format = "other";
-
-  src = fetchFromGitHub {
-    owner = "pwndbg";
-    repo = "pwndbg";
-    rev = version;
-    sha256 = "sha256-pyY2bMasd6GaJZZjLF48SvkKUBw3XfVa0g3Q0LiEi4k=";
-    fetchSubmodules = true;
-  };
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    mkdir -p $out/share/pwndbg
-    cp -r *.py pwndbg gdb-pt-dump $out/share/pwndbg
-    chmod +x $out/share/pwndbg/gdbinit.py
-    makeWrapper ${gdb}/bin/gdb $out/bin/pwndbg \
-      --add-flags "-q -x $out/share/pwndbg/gdbinit.py" \
-      --prefix PATH : ${binPath} \
-      --set NIX_PYTHONPATH ${pythonPath}
-  '';
-
-  meta = with lib; {
-    description = "Exploit Development and Reverse Engineering with GDB Made Easy";
-    mainProgram = "pwndbg";
-    homepage = "https://github.com/pwndbg/pwndbg";
-    license = licenses.mit;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ mic92 patryk4815 ];
-    # not supported on aarch64-darwin see: https://inbox.sourceware.org/gdb/3185c3b8-8a91-4beb-a5d5-9db6afb93713@Spark/
-    broken = stdenv.isDarwin && stdenv.isAarch64;
-  };
-}
diff --git a/pkgs/development/tools/misc/terraform-ls/default.nix b/pkgs/development/tools/misc/terraform-ls/default.nix
index 4499d113e8388..b68fc0deafe8a 100644
--- a/pkgs/development/tools/misc/terraform-ls/default.nix
+++ b/pkgs/development/tools/misc/terraform-ls/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "terraform-ls";
-  version = "0.32.8";
+  version = "0.33.0";
 
   src = fetchFromGitHub {
     owner = "hashicorp";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-ZXtzQEi5aLiYa4KjH3DkFPFi6EEEjxof6Y+8cRJkSCM=";
+    hash = "sha256-UrymfiuaQ6k2MSwq/ZhtdsaSzc3uRzIsdq/Wepeo5+I=";
   };
 
-  vendorHash = "sha256-DGomEJ0IGs8uOrn50N+R3tRZJvw7iyHlPVpH3CVvjsU=";
+  vendorHash = "sha256-yWRfYzctunXRHN9j3K7KUUAsJhs2bUzgPb+u6SjuAlk=";
 
   ldflags = [ "-s" "-w" ];
 
diff --git a/pkgs/development/tools/neil/default.nix b/pkgs/development/tools/neil/default.nix
index e126111b5cb35..0b65baa769dae 100644
--- a/pkgs/development/tools/neil/default.nix
+++ b/pkgs/development/tools/neil/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "neil";
-  version = "0.2.63";
+  version = "0.3.65";
 
   src = fetchFromGitHub {
     owner = "babashka";
     repo = "neil";
     rev = "v${version}";
-    sha256 = "sha256-mcygDOx5yzOW80bv54cPOKl1t443DXFRq4Hb4KYD5e8=";
+    sha256 = "sha256-QhWoCEoM04/MlUgCFCeAR7kF6QSg0joz/i9ZbXRQtDs=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/development/tools/oh-my-posh/default.nix b/pkgs/development/tools/oh-my-posh/default.nix
index f74f3ce22e19a..64562c17f5a0a 100644
--- a/pkgs/development/tools/oh-my-posh/default.nix
+++ b/pkgs/development/tools/oh-my-posh/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "oh-my-posh";
-  version = "19.19.0";
+  version = "19.20.0";
 
   src = fetchFromGitHub {
     owner = "jandedobbeleer";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-6c6e0/z8ATIQHY/v9V6v/W19HloYsz9SfLTGDg7t7M0=";
+    hash = "sha256-f85CKfYPNh06eVHu5nn4MhX5wuptpJCmvSiPHWGzjkg=";
   };
 
-  vendorHash = "sha256-7xoA+yA6ZWQfc6PPqNoNDCpbrqZEbaU2owQIo9fdtVE=";
+  vendorHash = "sha256-SeeVHqeQCfOJTNfWIfTd71jGk5mYH5HRArUosZqRreY=";
 
   sourceRoot = "${src.name}/src";
 
diff --git a/pkgs/development/tools/parsing/re-flex/default.nix b/pkgs/development/tools/parsing/re-flex/default.nix
index 524a900ec4225..3a69cb18803c2 100644
--- a/pkgs/development/tools/parsing/re-flex/default.nix
+++ b/pkgs/development/tools/parsing/re-flex/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "re-flex";
-  version = "4.1.2";
+  version = "4.2.0";
 
   src = fetchFromGitHub {
     owner = "Genivia";
     repo = "RE-flex";
     rev = "v${version}";
-    hash = "sha256-w1aH04VGe9nPvwGdbTEsAcIPb7oC739LZjTI/1Ck7bU=";
+    hash = "sha256-+/Q3lcdV4tEArYmuQN5iL6r5TS0J/zoLQ85bNazpSf8=";
   };
 
   outputs = [ "out" "bin" "dev" ];
diff --git a/pkgs/development/tools/protolint/default.nix b/pkgs/development/tools/protolint/default.nix
index 1bf0909c4fe53..ab1290def1954 100644
--- a/pkgs/development/tools/protolint/default.nix
+++ b/pkgs/development/tools/protolint/default.nix
@@ -1,13 +1,13 @@
 { lib, buildGoModule, fetchFromGitHub }:
 buildGoModule rec {
   pname = "protolint";
-  version = "0.49.3";
+  version = "0.49.4";
 
   src = fetchFromGitHub {
     owner = "yoheimuta";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-V3xsjaqW5PaEmvEAn85c+eMRzb2DHpsPd9rUyzXDe9o=";
+    hash = "sha256-5z9R2LHwwb7aFMvJDYmMRny7lHG4JUSNhU1Hfm0Z1Mc=";
   };
 
   vendorHash = "sha256-8yV/YyNSn6O2UjAQlzM90fOoi3TdxO+v4YPtmSQMFC0=";
diff --git a/pkgs/development/tools/pyenv/default.nix b/pkgs/development/tools/pyenv/default.nix
index d7977618c2d00..f55d7bb8fcd0a 100644
--- a/pkgs/development/tools/pyenv/default.nix
+++ b/pkgs/development/tools/pyenv/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pyenv";
-  version = "2.3.36";
+  version = "2.4.0";
 
   src = fetchFromGitHub {
     owner = "pyenv";
     repo = "pyenv";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZZb7fB9VWwpmW6Qrw65/zLUBqz7E4/Bg3A7DnTt+IbE=";
+    hash = "sha256-urF0glUR6W2jtT3Ek3OpbpmImiQrwHGbS1/pGuTcgyA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/tools/qtcreator/default.nix b/pkgs/development/tools/qtcreator/default.nix
index 65e3dc1266fa6..3843a989ec0b8 100644
--- a/pkgs/development/tools/qtcreator/default.nix
+++ b/pkgs/development/tools/qtcreator/default.nix
@@ -20,6 +20,7 @@
 , wrapQtAppsHook
 , yaml-cpp
 , litehtml
+, libsecret
 , gumbo
 , llvmPackages
 , rustc-demangle
@@ -29,11 +30,11 @@
 
 stdenv.mkDerivation rec {
   pname = "qtcreator";
-  version = "12.0.2";
+  version = "13.0.0";
 
   src = fetchurl {
     url = "https://download.qt.io/official_releases/${pname}/${lib.versions.majorMinor version}/${version}/qt-creator-opensource-src-${version}.tar.xz";
-    hash = "sha256-rOgRrDrum/vRpV62y0lHmkgj6tbznyA1cenXdkhFA4E=";
+    hash = "sha256-7BTwXycHFEVaLw1AuKqwLtkkHU+k8D6lOb/sWBnp4DY=";
   };
 
   nativeBuildInputs = [
@@ -59,6 +60,7 @@ stdenv.mkDerivation rec {
     qtquicktimeline
     yaml-cpp
     litehtml
+    libsecret
     gumbo
     llvmPackages.libclang
     llvmPackages.llvm
diff --git a/pkgs/development/tools/rain/default.nix b/pkgs/development/tools/rain/default.nix
index 6d1d165bc81f0..d520a9489174e 100644
--- a/pkgs/development/tools/rain/default.nix
+++ b/pkgs/development/tools/rain/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "rain";
-  version = "1.8.3";
+  version = "1.8.4";
 
   src = fetchFromGitHub {
     owner = "aws-cloudformation";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-l5Exm31pQlmYh9VizdrARFgtIxb48ALR1IYaNFfCMWk=";
+    sha256 = "sha256-jn2DeVs9orJZOJjHUwNV1qDL1bVjQ0etlCYlcZE9cqY=";
   };
 
-  vendorHash = "sha256-PjdM52qCR7zVjQDRWwGXcJwqLYUt9LTi9SX85A4z2SA=";
+  vendorHash = "sha256-jMgM6ZjQpK8rmDZUzVxDPoJWyWNkvNnvXwKNTHzc080=";
 
   subPackages = [ "cmd/rain" ];
 
diff --git a/pkgs/development/tools/refinery-cli/default.nix b/pkgs/development/tools/refinery-cli/default.nix
index e5d9abd12dbf3..609a2618f86c7 100644
--- a/pkgs/development/tools/refinery-cli/default.nix
+++ b/pkgs/development/tools/refinery-cli/default.nix
@@ -2,15 +2,15 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "refinery-cli";
-  version = "0.8.13";
+  version = "0.8.14";
 
   src = fetchCrate {
     pname = "refinery_cli";
     inherit version;
-    sha256 = "sha256-5PncxxJ63WGwJk4MexqOJZQEhdoe4WMz8gsHZgjxBPM=";
+    sha256 = "sha256-gHW+5WWzk1H2O5B2sWdl6QcOeUbNvbdZZBD10SmE1GA=";
   };
 
-  cargoHash = "sha256-C0/11Ky5mXcEFPxa72jkJLg/DDxPz/Jmmfa2oHpHF6k=";
+  cargoHash = "sha256-Go7+LZSze/IrNwEl+11Dm5O9RcREyPSkHPjlE9SPO70=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/development/tools/rust/cargo-about/default.nix b/pkgs/development/tools/rust/cargo-about/default.nix
index 65e429c220d7c..8537cabcaca10 100644
--- a/pkgs/development/tools/rust/cargo-about/default.nix
+++ b/pkgs/development/tools/rust/cargo-about/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-about";
-  version = "0.6.0";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "EmbarkStudios";
     repo = "cargo-about";
     rev = version;
-    sha256 = "sha256-srJ5NyO+kySFCcqyF0i99Zvh2XsNAyFvTUcks/kt0qs=";
+    sha256 = "sha256-+FtTD2vr1+BxSXHlFqpXmzP54vZ8CP1vJ0BQVFp/Zx4=";
   };
 
-  cargoHash = "sha256-eO4dBXVBjuN68cTvw8LzzJEedu5+dizOMu4QFEOzKK8=";
+  cargoHash = "sha256-5Kh0GpyAq6jeMuPO3x+lC46zkVcxoMVMjQXZCBZRlk8=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/development/tools/rust/cargo-deny/default.nix b/pkgs/development/tools/rust/cargo-deny/default.nix
index cfeec591f6729..421559b347be3 100644
--- a/pkgs/development/tools/rust/cargo-deny/default.nix
+++ b/pkgs/development/tools/rust/cargo-deny/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-deny";
-  version = "0.14.20";
+  version = "0.14.21";
 
   src = fetchFromGitHub {
     owner = "EmbarkStudios";
     repo = "cargo-deny";
     rev = version;
-    hash = "sha256-KThJynV/LrT1CYHIs/B3yS6ylNr9AezoHhVPe1m/eiU=";
+    hash = "sha256-d5qgljNuEfh9kYQU+jP4tgyly6i7hETFC5tEY67Yq8g=";
   };
 
-  cargoHash = "sha256-S5aRucNq5vgUIsu4ToRqLVZZ8/IXkbniJXInhnybTNY=";
+  cargoHash = "sha256-u1cayvVatGg03Q3xShC/0ymE8EGHyYFrZD3Q8UD8Mm8=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/development/tools/rust/cargo-deps/default.nix b/pkgs/development/tools/rust/cargo-deps/default.nix
deleted file mode 100644
index 4265873a71acc..0000000000000
--- a/pkgs/development/tools/rust/cargo-deps/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ lib, fetchCrate, rustPlatform }:
-
-rustPlatform.buildRustPackage rec {
-  pname = "cargo-deps";
-  version = "1.5.1";
-
-  src = fetchCrate {
-    inherit pname version;
-    hash = "sha256-qnSHG4AhBrleYKZ4SJ4AwHdJyiidj8NTeSSphBRo7gg=";
-  };
-
-  cargoHash = "sha256-dpCbFA9AZmIFPx69tw0CqHF+lVw7uhUlwAeVX1+lIK8=";
-
-  meta = with lib; {
-    description = "Cargo subcommand for building dependency graphs of Rust projects";
-    mainProgram = "cargo-deps";
-    homepage = "https://github.com/m-cat/cargo-deps";
-    license = licenses.mit;
-    maintainers = with maintainers; [ arcnmx matthiasbeyer ];
-  };
-}
diff --git a/pkgs/development/tools/rust/cargo-lambda/default.nix b/pkgs/development/tools/rust/cargo-lambda/default.nix
index ada381da6f088..00892e673b65d 100644
--- a/pkgs/development/tools/rust/cargo-lambda/default.nix
+++ b/pkgs/development/tools/rust/cargo-lambda/default.nix
@@ -15,21 +15,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-lambda";
-  version = "1.0.1";
+  version = "1.2.1";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-KSJn8DRvm/ZLikCT8Tp9lb/ej0KSlZqRROs1yLNDa6c=";
+    hash = "sha256-E9jUlEiHyf5UR/UZxJj9LTfyAxGR/WsvRQdFdIVvLG8=";
   };
 
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-    outputHashes = {
-      "cargo-test-macro-0.1.0" = "sha256-s3PM5SHGwZRr1cKt3LTL9fSAhzZ6CaZmDMVUgnOr6R0=";
-    };
-  };
+  cargoHash = "sha256-IXMkgpyYwll8NwTXRffbsSP5uFHGJe1n2RQ1Mbu+E70=";
 
   nativeCheckInputs = [cacert];
 
@@ -52,6 +47,8 @@ rustPlatform.buildRustPackage rec {
     "--skip=test_download_example"
     "--skip=test_init_subcommand"
     "--skip=test_init_subcommand_without_override"
+    "--skip=test_build_example"
+    "--skip=test_deploy_workspace"
   ];
 
   # remove date from version output to make reproducible
diff --git a/pkgs/development/tools/rust/cargo-llvm-cov/default.nix b/pkgs/development/tools/rust/cargo-llvm-cov/default.nix
index ee945b4edc26c..a9a45c48a5e60 100644
--- a/pkgs/development/tools/rust/cargo-llvm-cov/default.nix
+++ b/pkgs/development/tools/rust/cargo-llvm-cov/default.nix
@@ -26,7 +26,7 @@
 
 let
   pname = "cargo-llvm-cov";
-  version = "0.6.7";
+  version = "0.6.9";
 
   owner = "taiki-e";
   homepage = "https://github.com/${owner}/${pname}";
@@ -37,7 +37,7 @@ let
   cargoLock = fetchurl {
     name = "Cargo.lock";
     url = "https://crates.io/api/v1/crates/${pname}/${version}/download";
-    sha256 = "sha256-2DjHXZ80sqr5uNqTwoECdzU1dxtu3hw9wJLA1XZq02Y=";
+    sha256 = "sha256-r4C7z2/z4OVEf+IhFe061E7FzSx0VzADmg56Lb+DO/g=";
     downloadToTemp = true;
     postFetch = ''
       tar xzf $downloadedFile ${pname}-${version}/Cargo.lock
@@ -55,7 +55,7 @@ rustPlatform.buildRustPackage {
     inherit owner;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-wvyiIJd448EjqtBjrzS8XcWJerRSBctggwTZA0ku7pU=";
+    sha256 = "sha256-mNpZj8c+IHcW0StFzRPt7wcysADh01eLFcIK6fX/2KQ=";
     leaveDotGit = true;
   };
 
@@ -64,7 +64,7 @@ rustPlatform.buildRustPackage {
     cp ${cargoLock} source/Cargo.lock
   '';
 
-  cargoSha256 = "sha256-TMBKsZsIPw42ZHVcUnwsTzJseD+6Z3o+ZlB2FzbjnBY=";
+  cargoSha256 = "sha256-pfNb5P3IG1fQdhiQE3FGW8s4Rt2YyLxTejuzs3nqZUU=";
 
   # `cargo-llvm-cov` reads these environment variables to find these binaries,
   # which are needed to run the tests
diff --git a/pkgs/development/tools/rust/cargo-llvm-lines/default.nix b/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
index 3a0edf3a54cbf..f3fa51fb21b09 100644
--- a/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
+++ b/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-llvm-lines";
-  version = "0.4.36";
+  version = "0.4.37";
 
   src = fetchFromGitHub {
     owner = "dtolnay";
     repo = pname;
     rev = version;
-    hash = "sha256-kj5dsZWf1dp6NG9AIj5GdRoXIb6J3bSXnJNNEVAKnaM=";
+    hash = "sha256-9l6WkPVcc1BTRjmHa3+2Y1buLdHC5VIvpGys0fDwldY=";
   };
 
-  cargoHash = "sha256-iZtT1ywFIgPhBnW4losd1J+WHUtzgW47657vGi6mI7I=";
+  cargoHash = "sha256-MbjV3O9yDC8GHWdhWh4/sO+QfAd3kw3K5wLkZ8OlXIU=";
 
   meta = with lib; {
     description = "Count the number of lines of LLVM IR across all instantiations of a generic function";
diff --git a/pkgs/development/tools/rust/cargo-show-asm/default.nix b/pkgs/development/tools/rust/cargo-show-asm/default.nix
index 61bc24903c494..1e313595358f9 100644
--- a/pkgs/development/tools/rust/cargo-show-asm/default.nix
+++ b/pkgs/development/tools/rust/cargo-show-asm/default.nix
@@ -9,14 +9,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-show-asm";
-  version = "0.2.30";
+  version = "0.2.31";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-Xb7+3HSAa8mSNHufcVwshdS9XuofvFnAgaSvT6ZFj0I=";
+    hash = "sha256-TjkEzqGFqhVKMmZEcwAoDnHOZWi7+wha228loJjLxgQ=";
   };
 
-  cargoHash = "sha256-SUL5SPpnx6TqoyEguEdCvkNizbZbFjcacn+xe4P1rFk=";
+  cargoHash = "sha256-oUfBpx/hElXMw58Dj09JeG2FKy+biFt+4pb4pYNidxc=";
 
   nativeBuildInputs = [
     installShellFiles
diff --git a/pkgs/development/tools/rust/crate2nix/default.nix b/pkgs/development/tools/rust/crate2nix/default.nix
index a19c47271c57f..175e79e639c34 100644
--- a/pkgs/development/tools/rust/crate2nix/default.nix
+++ b/pkgs/development/tools/rust/crate2nix/default.nix
@@ -10,18 +10,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "crate2nix";
-  version = "0.12.0";
+  version = "0.14.0";
 
   src = fetchFromGitHub {
     owner = "nix-community";
     repo = pname;
     rev = version;
-    sha256 = "sha256-A9AowkHIjsy1a4LuiPiVP88FMxyCWK41flZEZOUuwQM=";
+    hash = "sha256-rGT3CW64cJS9nlnWPFWSc1iEa3dNZecVVuPVGzcsHe8=";
   };
 
   sourceRoot = "${src.name}/crate2nix";
 
-  cargoHash = "sha256-85OIOhRdVDu5hZuBzanyqkH1gOuF5IQGubVrLAqt1ak=";
+  cargoHash = "sha256-YoE6wrQNQcRo/yaiVpASU2VOmHCPM4pDgTejn0ovOVY=";
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/pkgs/development/tools/rust/dioxus-cli/default.nix b/pkgs/development/tools/rust/dioxus-cli/default.nix
index ef1bcfee28523..0e3344234c906 100644
--- a/pkgs/development/tools/rust/dioxus-cli/default.nix
+++ b/pkgs/development/tools/rust/dioxus-cli/default.nix
@@ -13,14 +13,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "dioxus-cli";
-  version = "0.5.0";
+  version = "0.5.4";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-iNlJLDxb8v7x19q0iaAnGmtmoPjMW8YXzbx5Fcf8Yws=";
+    hash = "sha256-rfftCJW3MRDg7a2WUDXZWGx1lYmOkqVRcJTEGMObars=";
   };
 
-  cargoHash = "sha256-6XKNBLDNWYd5+O7buHupXzVss2jCdh3wu9mXVLivH44=";
+  cargoHash = "sha256-cpgjs8ZxpJrnA5UtoVoP97VFfmQ7CS1H74D19x0bzAA=";
 
   nativeBuildInputs = [ pkg-config cacert ];
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [
diff --git a/pkgs/development/tools/rust/rust-analyzer/default.nix b/pkgs/development/tools/rust/rust-analyzer/default.nix
index 006ae3b1c76e4..f662c89f59690 100644
--- a/pkgs/development/tools/rust/rust-analyzer/default.nix
+++ b/pkgs/development/tools/rust/rust-analyzer/default.nix
@@ -13,14 +13,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rust-analyzer-unwrapped";
-  version = "2024-03-25";
-  cargoSha256 = "sha256-knvXvQ4e3Ab5zGcitfzlznad//0gAFSgWjOPiCjeFDM=";
+  version = "2024-04-08";
+  cargoSha256 = "sha256-lVVHp8kbi3bnDQ0lCZugGSNznJduXPftGDq7ByxXWgc=";
 
   src = fetchFromGitHub {
     owner = "rust-lang";
     repo = "rust-analyzer";
     rev = version;
-    sha256 = "sha256-4na1ZTc6Iknu6V1Wo6jnt6d3H0JdZfpKF4GX/WNa/Zc=";
+    sha256 = "sha256-St7ZQrkrr5lmQX9wC1ZJAFxL8W7alswnyZk9d1se3Us=";
   };
 
   cargoBuildFlags = [ "--bin" "rust-analyzer" "--bin" "rust-analyzer-proc-macro-srv" ];
diff --git a/pkgs/development/tools/semantic-release/default.nix b/pkgs/development/tools/semantic-release/default.nix
index ba42839d55e82..2f8a30e653a5d 100644
--- a/pkgs/development/tools/semantic-release/default.nix
+++ b/pkgs/development/tools/semantic-release/default.nix
@@ -8,16 +8,16 @@
 
 buildNpmPackage rec {
   pname = "semantic-release";
-  version = "23.0.7";
+  version = "23.0.8";
 
   src = fetchFromGitHub {
     owner = "semantic-release";
     repo = "semantic-release";
     rev = "v${version}";
-    hash = "sha256-4NhTVp/E9yM7rtOQa03PMhQ/TfOL23XQiixXct9uies=";
+    hash = "sha256-9dnBrwvV0by2EFIpXd++I8JEzdotWSFcK7wbY/1Rpx0=";
   };
 
-  npmDepsHash = "sha256-2Ne+jgCo7H0dgLSsStuMWqd1aplQClf3GbDYZhIy014=";
+  npmDepsHash = "sha256-GwrrjL8egqoE2ATK5wOWuMF/xzCLYAe9wzZ0ff5H82E=";
 
   dontNpmBuild = true;
 
diff --git a/pkgs/development/tools/sentry-cli/default.nix b/pkgs/development/tools/sentry-cli/default.nix
index 92711b2d72dfd..b9fa98a228ce9 100644
--- a/pkgs/development/tools/sentry-cli/default.nix
+++ b/pkgs/development/tools/sentry-cli/default.nix
@@ -11,13 +11,13 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "sentry-cli";
-  version = "2.30.4";
+  version = "2.31.0";
 
   src = fetchFromGitHub {
     owner = "getsentry";
     repo = "sentry-cli";
     rev = version;
-    sha256 = "sha256-J+8/sCFSd2BYQgKOl8OZoxlFLB8scDY5Bl7GAQ54/RM=";
+    sha256 = "sha256-2F8f+vw559FI7CCiLkP8WLpLzDYzr3SHf/Ec8yFHu6g=";
   };
   doCheck = false;
 
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ];
   nativeBuildInputs = [ installShellFiles pkg-config ];
 
-  cargoHash = "sha256-622cEaHEMmVspabsIYgQ5ySbaDr9qB1FjxJ5NwbeGx8=";
+  cargoHash = "sha256-G/c84j9BquLCJcl60H0ZZZDxjTHpaGHflfJL/hzdgYQ=";
 
   postInstall = ''
     installShellCompletion --cmd sentry-cli \
diff --git a/pkgs/development/tools/skaffold/default.nix b/pkgs/development/tools/skaffold/default.nix
index bac6c119e350c..a67c430dbfc1a 100644
--- a/pkgs/development/tools/skaffold/default.nix
+++ b/pkgs/development/tools/skaffold/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "skaffold";
-  version = "2.10.1";
+  version = "2.11.0";
 
   src = fetchFromGitHub {
     owner = "GoogleContainerTools";
     repo = "skaffold";
     rev = "v${version}";
-    hash = "sha256-NNiWiTY5AHMcGxDND5QwlucYVrp94C92qtMNLrVm2tQ=";
+    hash = "sha256-xaRVgvYK6xWSy75K7AOkSw4ZjXn3xR0NqbBBbbK5MVU=";
   };
 
   vendorHash = null;
diff --git a/pkgs/development/tools/subxt/default.nix b/pkgs/development/tools/subxt/default.nix
index 3aba7494eaf61..0416bfdde9d87 100644
--- a/pkgs/development/tools/subxt/default.nix
+++ b/pkgs/development/tools/subxt/default.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "subxt";
-  version = "0.35.1";
+  version = "0.35.2";
 
   src = fetchFromGitHub {
     owner = "paritytech";
     repo = "subxt";
     rev = "v${version}";
-    hash = "sha256-hv31E0e2ANArrK5VNHwKiEfDvaJojTjBA65oskziLUI=";
+    hash = "sha256-nMdpMvNoynioCzD7wXbF1W3mwCfOClAZyjbF/3eworw=";
   };
 
-  cargoHash = "sha256-V7oAvD8M+1CGnXYzj4qeb+skkVROdXr0S5l5mZyLnfA=";
+  cargoHash = "sha256-sXiMgooOSGDl0L0i5VncCYuoSzjRSogRGqteE+b6jkc=";
 
   # Only build the command line client
   cargoBuildFlags = [ "--bin" "subxt" ];
diff --git a/pkgs/development/tools/supabase-cli/default.nix b/pkgs/development/tools/supabase-cli/default.nix
index 58da73a0318c2..d4bad90a25c21 100644
--- a/pkgs/development/tools/supabase-cli/default.nix
+++ b/pkgs/development/tools/supabase-cli/default.nix
@@ -9,16 +9,16 @@
 
 buildGoModule rec {
   pname = "supabase-cli";
-  version = "1.153.3";
+  version = "1.155.1";
 
   src = fetchFromGitHub {
     owner = "supabase";
     repo = "cli";
     rev = "v${version}";
-    hash = "sha256-fUSq8vbKLcWkh3y3jD6wXYjxLVorbGnw9dYLazzlJTE=";
+    hash = "sha256-2KoE7r2Uw5OegRChjDWAOzuml+rcHwah+GnlX1WPSGo=";
   };
 
-  vendorHash = "sha256-9GlbpbWBYGNYnWqKXqjf6mYpgMOOYXRvCKwd7VpCsyM=";
+  vendorHash = "sha256-yo564Yqo28++nxJDv4/0ZBAxn1gRvxHv6TgBKm8iSTA=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/development/tools/templ/default.nix b/pkgs/development/tools/templ/default.nix
index 154ce64ce3642..d4380a9596097 100644
--- a/pkgs/development/tools/templ/default.nix
+++ b/pkgs/development/tools/templ/default.nix
@@ -5,7 +5,7 @@
 
 buildGoModule rec {
   pname = "templ";
-  version = "0.2.648";
+  version = "0.2.663";
 
   subPackages = [ "cmd/templ" ];
 
@@ -21,7 +21,7 @@ buildGoModule rec {
     owner = "a-h";
     repo = "templ";
     rev = "refs/tags/v${version}";
-    hash = "sha256-9Co3yvfy8X69PIffPg2lDjVCVTjDhiFnSsJd4MQ6cf4=";
+    hash = "sha256-TU8QG6OmUzSNDAX9W0Ntmz5cucLqVQeTskfnJbm/YM0=";
   };
 
   vendorHash = "sha256-Upd5Wq4ajsyOMDiAWS2g2iNO1sm1XJc43AFQLIo5eDM=";
diff --git a/pkgs/development/tools/trunk/default.nix b/pkgs/development/tools/trunk/default.nix
index 13352f11c5c97..39662c40edc12 100644
--- a/pkgs/development/tools/trunk/default.nix
+++ b/pkgs/development/tools/trunk/default.nix
@@ -55,7 +55,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/trunk-rs/trunk";
     description = "Build, bundle & ship your Rust WASM application to the web";
     mainProgram = "trunk";
-    maintainers = with maintainers; [ freezeboy ];
+    maintainers = with maintainers; [ freezeboy ctron ];
     license = with licenses; [ asl20 ];
   };
 }
diff --git a/pkgs/development/tools/ttfb/default.nix b/pkgs/development/tools/ttfb/default.nix
index e8a86c21bc5d1..145144528fef6 100644
--- a/pkgs/development/tools/ttfb/default.nix
+++ b/pkgs/development/tools/ttfb/default.nix
@@ -7,18 +7,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ttfb";
-  version = "1.10.0";
+  version = "1.11.0";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-94gBofb7H7+qU50+cp+rq14Vtbk2vuXFQksNITvICm4=";
+    hash = "sha256-38mhwYfWoMZzdbkgv65hBpX23wCpAWwiahuzO5xRpmA=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.Security
   ];
 
-  cargoHash = "sha256-CUisxtUQXkStqSZikIoAN0GwpUjvQqon7KqI0beHL5U=";
+  cargoHash = "sha256-Gqv4XvG3aYMRdMP1mzUlsCPN+NMLHq2nf283KBQCems==";
 
   # The bin feature activates all dependencies of the binary. Otherwise,
   # only the library is build.
diff --git a/pkgs/development/tools/twilio-cli/default.nix b/pkgs/development/tools/twilio-cli/default.nix
index 554f6a2db8f69..f1b348823f537 100644
--- a/pkgs/development/tools/twilio-cli/default.nix
+++ b/pkgs/development/tools/twilio-cli/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "twilio-cli";
-  version = "5.19.2";
+  version = "5.19.3";
 
   src = fetchzip {
     url = "https://twilio-cli-prod.s3.amazonaws.com/twilio-v${finalAttrs.version}/twilio-v${finalAttrs.version}.tar.gz";
-    hash = "sha256-9bb9cVd40h3b88pRw+S+wK8AG/436aCVyTTlzyCtH9w=";
+    hash = "sha256-9OHulIASsU7udo5p0jxKlb7vZftWcOLmJYQffejOFqQ=";
   };
 
   buildInputs = [ nodejs-slim ];
diff --git a/pkgs/development/tools/typos/default.nix b/pkgs/development/tools/typos/default.nix
index 5ab986d2dc0c7..3c70666865564 100644
--- a/pkgs/development/tools/typos/default.nix
+++ b/pkgs/development/tools/typos/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "typos";
-  version = "1.20.3";
+  version = "1.20.4";
 
   src = fetchFromGitHub {
     owner = "crate-ci";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-0z00e8lRDA/KdAPGAwOGlRXgpXkag4htZ+ykXEAmtJE=";
+    hash = "sha256-UhcJP4IF8nE9JzgXMDD4XE9ZmhwKIhkBr7RJAZjtzVE=";
   };
 
-  cargoHash = "sha256-8XWU7/z1LhfB5rp9LKqdaoaORF68ZI5Pl8zkrxKSQQE=";
+  cargoHash = "sha256-/rZr9sF+gOG4B+HGTVI/lYwdn4+a01Hd4x7IK5R2Xno=";
 
   meta = with lib; {
     description = "Source code spell checker";
diff --git a/pkgs/development/tools/upbound/default.nix b/pkgs/development/tools/upbound/default.nix
index ef01000065f84..92031aa6dddf0 100644
--- a/pkgs/development/tools/upbound/default.nix
+++ b/pkgs/development/tools/upbound/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "upbound";
-  version = "0.26.0";
+  version = "0.28.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "up";
     rev = "v${version}";
-    sha256 = "sha256-xlPBz0FVG/bAUGH/RlguVG5rDcKMty7rX8Y+1VBbEpI=";
+    sha256 = "sha256-74kmEjJTcFYRgbuH8hFPS+sadVWk7FkFE+MrapQw/lw=";
   };
 
-  vendorHash = "sha256-1NhcP/iEfEMtPSBP6wbTKi/fznoJ8HjaH88BPzVnf7w=";
+  vendorHash = "sha256-hNEM8U+3T4biEqGoN2ClKLSgKlfT/eoUkQQGiTrR2vM=";
 
   subPackages = [ "cmd/docker-credential-up" "cmd/up" ];
 
diff --git a/pkgs/development/tools/viceroy/default.nix b/pkgs/development/tools/viceroy/default.nix
index 46b4240bfaf86..6dff9bf9037f5 100644
--- a/pkgs/development/tools/viceroy/default.nix
+++ b/pkgs/development/tools/viceroy/default.nix
@@ -2,18 +2,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "viceroy";
-  version = "0.9.5";
+  version = "0.9.6";
 
   src = fetchFromGitHub {
     owner = "fastly";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-FdAUcKey3FamMWKKVDCL+ndXC4bBZHo1om9IUeLMZkA=";
+    hash = "sha256-tJLx/dts7C5yupJX2jkRiAQumlPtlg2HzFx11jQczzE=";
   };
 
   buildInputs = lib.optional stdenv.isDarwin Security;
 
-  cargoHash = "sha256-+zlRLs/m9ThiBgzKWkIpUIL3jWMz/o+hD0m0Vks4HzY=";
+  cargoHash = "sha256-LMdi1Xx6Tq8q+DQHpNDwmtQO+8hiVXjEP7fDIpbN2DU=";
 
   cargoTestFlags = [
     "--package viceroy-lib"
diff --git a/pkgs/development/tools/yarn-berry/default.nix b/pkgs/development/tools/yarn-berry/default.nix
index b1f0788dacda9..47a539f6d7886 100644
--- a/pkgs/development/tools/yarn-berry/default.nix
+++ b/pkgs/development/tools/yarn-berry/default.nix
@@ -1,13 +1,13 @@
-{ fetchFromGitHub, lib, nodejs, stdenv, yarn }:
+{ fetchFromGitHub, lib, nodejs, stdenv, testers, yarn }:
 
-stdenv.mkDerivation rec {
-  name = "yarn-berry";
+stdenv.mkDerivation (finalAttrs: {
+  pname = "yarn-berry";
   version = "4.1.1";
 
   src = fetchFromGitHub {
     owner = "yarnpkg";
     repo = "berry";
-    rev = "@yarnpkg/cli/${version}";
+    rev = "@yarnpkg/cli/${finalAttrs.version}";
     hash = "sha256-75bERA1uZeywMjYznFDyk4+AtVDLo7eIajVtWdAD/RA=";
   };
 
@@ -35,6 +35,12 @@ stdenv.mkDerivation rec {
 
   passthru.updateScript = ./update.sh;
 
+  passthru.tests = {
+    version = testers.testVersion {
+      package = finalAttrs.finalPackage;
+    };
+  };
+
   meta = with lib; {
     homepage = "https://yarnpkg.com/";
     description = "Fast, reliable, and secure dependency management.";
@@ -43,4 +49,4 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     mainProgram = "yarn";
   };
-}
+})
diff --git a/pkgs/development/tools/yarn/default.nix b/pkgs/development/tools/yarn/default.nix
index 1a9a619c7b15d..9d95676ec2cea 100644
--- a/pkgs/development/tools/yarn/default.nix
+++ b/pkgs/development/tools/yarn/default.nix
@@ -1,4 +1,12 @@
-{ lib, fetchFromGitHub, fetchzip, nodejs, stdenvNoCC, testers }:
+{ lib
+, fetchFromGitHub
+, fetchzip
+, nodejs
+, stdenvNoCC
+, testers
+, gitUpdater
+, withNode ? true
+}:
 
 let
   completion = fetchFromGitHub {
@@ -17,7 +25,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     sha256 = "sha256-kFa+kmnBerTB7fY/IvfAFy/4LWvrl9lrRHMOUdOZ+Wg=";
   };
 
-  buildInputs = [ nodejs ];
+  buildInputs = lib.optionals withNode [ nodejs ];
 
   installPhase = ''
     mkdir -p $out/{bin,libexec/yarn/,share/bash-completion/completions/}
@@ -27,7 +35,16 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     ln -s ${completion}/yarn-completion.bash $out/share/bash-completion/completions/yarn.bash
   '';
 
-  passthru.tests = testers.testVersion { package = finalAttrs.finalPackage; };
+  passthru = {
+    tests.version = lib.optionalAttrs withNode (testers.testVersion {
+      package = finalAttrs.finalPackage;
+    });
+
+    updateScript = gitUpdater {
+      url = "https://github.com/yarnpkg/yarn.git";
+      rev-prefix = "v";
+    };
+  };
 
   meta = with lib; {
     description = "Fast, reliable, and secure dependency management for javascript";
@@ -35,7 +52,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     changelog = "https://github.com/yarnpkg/yarn/blob/v${finalAttrs.version}/CHANGELOG.md";
     license = licenses.bsd2;
     maintainers = with maintainers; [ offline screendriver marsam ];
-    platforms = nodejs.meta.platforms;
+    platforms = platforms.all;
     mainProgram = "yarn";
   };
 })
diff --git a/pkgs/development/web/bun/default.nix b/pkgs/development/web/bun/default.nix
index 152059eb9958d..8c52bb8d05a14 100644
--- a/pkgs/development/web/bun/default.nix
+++ b/pkgs/development/web/bun/default.nix
@@ -12,7 +12,7 @@
 }:
 
 stdenvNoCC.mkDerivation rec {
-  version = "1.1.0";
+  version = "1.1.2";
   pname = "bun";
 
   src = passthru.sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
@@ -51,19 +51,19 @@ stdenvNoCC.mkDerivation rec {
     sources = {
       "aarch64-darwin" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip";
-        hash = "sha256-ggODKY9y8J0xY1SImiQq0qVepi6ywXB95kyg6zPoaLw=";
+        hash = "sha256-ICZMbmXTZdMfsvWsAzDdeVk/p86pNxVJPyeTrT7ntfs=";
       };
       "aarch64-linux" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-aarch64.zip";
-        hash = "sha256-QFA1MjtBAt3a/HAe2Mdv8LA2Iv5ayO279gOOuFqEZ/E=";
+        hash = "sha256-DaPTkcuh8bEq/YB9SqUMslZV/n9nlAhCWoMzF5aeqjM=";
       };
       "x86_64-darwin" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-x64.zip";
-        hash = "sha256-Dwv5Osqel0wWuzprXOXiIq87259REPs5ZSczhXDG23k=";
+        hash = "sha256-zDsfJL7S6YHxmgnbn6dHMMgKOmoI2g9dC7XL61QP0m8=";
       };
       "x86_64-linux" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64.zip";
-        hash = "sha256-WhfqYTVkdaSjoN7zRcRodfLPK2K579tluSEEXTVzOFM=";
+        hash = "sha256-qSgwXJD+T3lh1Gjd+0tXBEkc2VgZgbldFI3WkM72ej8=";
       };
     };
     updateScript = writeShellScript "update-bun" ''
diff --git a/pkgs/development/web/nodejs/v18.nix b/pkgs/development/web/nodejs/v18.nix
index a4121b9575fdd..a003c0e9bfb9b 100644
--- a/pkgs/development/web/nodejs/v18.nix
+++ b/pkgs/development/web/nodejs/v18.nix
@@ -19,11 +19,8 @@ let
 in
 buildNodejs {
   inherit enableNpm;
-  # The change to minor version 18.20.0 breaks compatibility with ffi-napi
-  # This breaks the compilation of some nix packages.
-  # While this is investigated and fixed, do not upgrade the minor version.
-  version = "18.19.1";
-  sha256 = "sha256-CQ+WouzeCAtrOCxtZCvKXQvkcCp4y1Vb578CsgvRbe0=";
+  version = "18.20.1";
+  sha256 = "sha256-xthnqfJeY1SBDv+4IB+BR6FbKAAOUHkP2gDRyhX0m4o=";
   patches = [
     ./disable-darwin-v8-system-instrumentation.patch
     ./bypass-darwin-xcrun-node16.patch
diff --git a/pkgs/games/chiaki4deck/default.nix b/pkgs/games/chiaki4deck/default.nix
index 4c2aeb172e1f2..83af55da1d01b 100644
--- a/pkgs/games/chiaki4deck/default.nix
+++ b/pkgs/games/chiaki4deck/default.nix
@@ -33,13 +33,13 @@
 
 stdenv.mkDerivation rec {
   pname = "chiaki4deck";
-  version = "1.6.5";
+  version = "1.6.6";
 
   src = fetchFromGitHub {
     owner = "streetpea";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-ogNfls7RPvzIVat0zlBlCWHWt22YfzGawjfgu5y9Gyk=";
+    hash = "sha256-hai7fIyeNcAURfeQtAIqOLb9j8erPNoy3zHK4rgLjc0=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/games/commandergenius/default.nix b/pkgs/games/commandergenius/default.nix
index 725cc5231c7ef..f4e3c6a4504a8 100644
--- a/pkgs/games/commandergenius/default.nix
+++ b/pkgs/games/commandergenius/default.nix
@@ -1,19 +1,32 @@
-{ lib, stdenv, fetchFromGitLab, SDL2, SDL2_image, pkg-config
-, libvorbis, libGL, boost, cmake, zlib, curl, SDL2_mixer, python3
+{ lib
+, stdenv
+, fetchFromGitLab
+, SDL2
+, SDL2_image
+, pkg-config
+, libvorbis
+, libGL
+, boost
+, cmake
+, zlib
+, curl
+, SDL2_mixer
+, SDL2_ttf
+, python3
 }:
 
 stdenv.mkDerivation rec {
   pname = "commandergenius";
-  version = "2.3.3";
+  version = "3.5.0";
 
   src = fetchFromGitLab {
     owner = "Dringgstein";
     repo = "Commander-Genius";
     rev = "v${version}";
-    sha256 = "04nb23wwvc3yywz3cr6gvn02fa7psfs22ssg4wk12s08z1azvz3h";
+    hash = "sha256-w5DP7vkvWOs8qcHqoQaEWHnaBwUoi1I4gnE+Z3haHxE=";
   };
 
-  buildInputs = [ SDL2 SDL2_image SDL2_mixer libGL boost libvorbis zlib curl python3 ];
+  buildInputs = [ SDL2 SDL2_image SDL2_mixer SDL2_ttf libGL boost libvorbis zlib curl python3 ];
 
   preConfigure = ''
     export cmakeFlags="$cmakeFlags -DCMAKE_INSTALL_PREFIX=$out -DSHAREDIR=$out/share"
diff --git a/pkgs/games/ecwolf/default.nix b/pkgs/games/ecwolf/default.nix
index 08b24deee0d47..8bbbc53a0dcdb 100644
--- a/pkgs/games/ecwolf/default.nix
+++ b/pkgs/games/ecwolf/default.nix
@@ -2,7 +2,6 @@
 , lib
 , fetchFromBitbucket
 , cmake
-, copyDesktopItems
 , pkg-config
 , makeWrapper
 , zlib
@@ -25,7 +24,7 @@ stdenv.mkDerivation rec {
     sha256 = "V2pSP8i20zB50WtUMujzij+ISSupdQQ/oCYYrOaTU1g=";
   };
 
-  nativeBuildInputs = [ cmake copyDesktopItems pkg-config ]
+  nativeBuildInputs = [ cmake pkg-config ]
     ++ lib.optionals stdenv.isDarwin [ makeWrapper ];
   buildInputs = [ zlib bzip2 libjpeg SDL2 SDL2_net SDL2_mixer gtk3 ];
 
diff --git a/pkgs/games/ferium/default.nix b/pkgs/games/ferium/default.nix
index 2f98970c70650..f5958fec86718 100644
--- a/pkgs/games/ferium/default.nix
+++ b/pkgs/games/ferium/default.nix
@@ -1,4 +1,11 @@
-{ lib, stdenv, fetchFromGitHub, rustPlatform, Security, installShellFiles }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, Security
+, SystemConfiguration
+, installShellFiles
+}:
 
 rustPlatform.buildRustPackage rec {
   pname = "ferium";
@@ -8,10 +15,10 @@ rustPlatform.buildRustPackage rec {
     owner = "gorilla-devs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-tYRs6HfFTdUZqWal9pLZ0uUNCPr3+zQz5JV2ohOLIP8=";
+    hash = "sha256-tYRs6HfFTdUZqWal9pLZ0uUNCPr3+zQz5JV2ohOLIP8=";
   };
 
-  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
+  buildInputs = lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
 
   cargoHash = "sha256-5ClBS42hWw3ULEG1Qn+fiM6dvJ+xS4Dusy3BCj5Cvbg=";
 
diff --git a/pkgs/games/fheroes2/default.nix b/pkgs/games/fheroes2/default.nix
index d51cb21750fd9..bc96eb5cfcc35 100644
--- a/pkgs/games/fheroes2/default.nix
+++ b/pkgs/games/fheroes2/default.nix
@@ -1,5 +1,6 @@
 { stdenv, lib, fetchFromGitHub, imagemagick
 , gettext, glibcLocalesUtf8, libpng, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, zlib
+, libiconv
 
 , gitUpdater
 }:
@@ -17,7 +18,8 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ imagemagick ];
 
-  buildInputs = [ gettext glibcLocalesUtf8 libpng SDL2 SDL2_image SDL2_mixer SDL2_ttf zlib ];
+  buildInputs = [ gettext glibcLocalesUtf8 libpng SDL2 SDL2_image SDL2_mixer SDL2_ttf zlib ]
+    ++ lib.optionals stdenv.isDarwin [ libiconv ];
 
   makeFlags = [
     "FHEROES2_STRICT_COMPILATION=1"
@@ -67,6 +69,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.karolchmist ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/games/heroic/default.nix b/pkgs/games/heroic/default.nix
index c48c4aa452c51..cf85c5ddc5ee2 100644
--- a/pkgs/games/heroic/default.nix
+++ b/pkgs/games/heroic/default.nix
@@ -17,13 +17,13 @@
 let appName = "heroic";
 in stdenv.mkDerivation rec {
   pname = "heroic-unwrapped";
-  version = "2.14.0";
+  version = "2.14.1";
 
   src = fetchFromGitHub {
     owner = "Heroic-Games-Launcher";
     repo = "HeroicGamesLauncher";
     rev = "v${version}";
-    hash = "sha256-EARNmvzOOE/AAQKqiXZhhCf2A/j9Cn2BRV9Yc0ezKfE=";
+    hash = "sha256-AnyltqNP+XyVzgCobM3g6DIXntD3spKecYtCRx+8oic=";
   };
 
   offlineCache = fetchYarnDeps {
diff --git a/pkgs/games/minecraft/default.nix b/pkgs/games/minecraft/default.nix
index 3009eb0b9a089..c9ce3bfb17f16 100644
--- a/pkgs/games/minecraft/default.nix
+++ b/pkgs/games/minecraft/default.nix
@@ -147,7 +147,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Official launcher for Minecraft, a sandbox-building game";
     homepage = "https://minecraft.net";
-    maintainers = with maintainers; [ cpages ryantm infinisil ];
+    maintainers = with maintainers; [ cpages ryantm ];
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/games/openjk/default.nix b/pkgs/games/openjk/default.nix
index 07ef12b003650..6e887c383511a 100644
--- a/pkgs/games/openjk/default.nix
+++ b/pkgs/games/openjk/default.nix
@@ -31,14 +31,14 @@ let
     categories = [ "Game" ];
   };
 in stdenv.mkDerivation {
-  pname = "OpenJK";
-  version = "0-unstable-2024-03-05";
+  pname = "openjk";
+  version = "0-unstable-2024-03-25";
 
   src = fetchFromGitHub {
     owner = "JACoders";
     repo = "OpenJK";
-    rev = "62124e18ef09b293ea66a1f673b827d83e073928";
-    sha256 = "sha256-2LgxRWoAfxNE6YDyrpNmDH9APhi2XH4ufNCNMd91llU=";
+    rev = "d2afcfefb5eb07d6f3787b48b947482160f27a1d";
+    hash = "sha256-dUXrFlzeLfah0xMXKeXHCXnmeTjRAy0/+aDCtPNw8a8=";
   };
 
   dontAddPrefix = true;
diff --git a/pkgs/games/pacvim/default.nix b/pkgs/games/pacvim/default.nix
index a4458b0d085f0..1335f46d342c0 100644
--- a/pkgs/games/pacvim/default.nix
+++ b/pkgs/games/pacvim/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation {
     homepage = "https://github.com/jmoon018/PacVim";
     description = "A game that teaches you vim commands";
     mainProgram = "pacvim";
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     license = licenses.lgpl3;
     platforms = platforms.unix;
   };
diff --git a/pkgs/games/quake2/yquake2/default.nix b/pkgs/games/quake2/yquake2/default.nix
index 9a3597937d8ca..b37c4f5e6a0e2 100644
--- a/pkgs/games/quake2/yquake2/default.nix
+++ b/pkgs/games/quake2/yquake2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper
+{ stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper, copyDesktopItems, makeDesktopItem
 , SDL2, libGL, curl
 , openalSupport ? true, openal
 , Cocoa, OpenAL
@@ -9,7 +9,7 @@ let
 
   games = import ./games.nix { inherit stdenv lib fetchFromGitHub; };
 
-  wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2; };
+  wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2 copyDesktopItems makeDesktopItem; };
 
   yquake2 = stdenv.mkDerivation rec {
     pname = "yquake2";
@@ -40,9 +40,12 @@ let
       "WITH_SYSTEMDIR=$\{out}/share/games/quake2"
     ];
 
+    nativeBuildInputs = [ copyDesktopItems ];
+
     enableParallelBuilding = true;
 
     installPhase = ''
+      runHook preInstall
       # Yamagi Quake II expects all binaries (executables and libs) to be in the
       # same directory.
       mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2/baseq2
@@ -50,8 +53,19 @@ let
       ln -s $out/lib/yquake2/quake2 $out/bin/yquake2
       ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded
       cp $src/stuff/yq2.cfg $out/share/games/quake2/baseq2
+      install -Dm644 stuff/icon/Quake2.png $out/share/pixmaps/yamagi-quake2.png;
+      runHook postInstall
     '';
 
+    desktopItems = [ (makeDesktopItem {
+      name = "yquake2";
+      exec = "yquake2";
+      icon = "yamagi-quake2";
+      desktopName = "yquake2";
+      comment = "Yamagi Quake II client";
+      categories = [ "Game" "Shooter" ];
+    })];
+
     meta = with lib; {
       description = "Yamagi Quake II client";
       homepage = "https://www.yamagi.org/quake2/";
diff --git a/pkgs/games/quake2/yquake2/games.nix b/pkgs/games/quake2/yquake2/games.nix
index c78689971a63e..aca5ffb5e3f55 100644
--- a/pkgs/games/quake2/yquake2/games.nix
+++ b/pkgs/games/quake2/yquake2/games.nix
@@ -38,8 +38,10 @@ let
     };
 
     installPhase = ''
+      runHook preInstall
       mkdir -p $out/lib/yquake2/${id}
       cp release/* $out/lib/yquake2/${id}
+      runHook postInstall
     '';
 
     meta = with lib; {
diff --git a/pkgs/games/quake2/yquake2/wrapper.nix b/pkgs/games/quake2/yquake2/wrapper.nix
index 4850dff99dcdc..fafc1d3eaebd8 100644
--- a/pkgs/games/quake2/yquake2/wrapper.nix
+++ b/pkgs/games/quake2/yquake2/wrapper.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildEnv, makeWrapper, yquake2 }:
+{ stdenv, lib, buildEnv, makeWrapper, yquake2, copyDesktopItems, makeDesktopItem }:
 
 { games
 , name
@@ -11,19 +11,38 @@ let
     paths = [ yquake2 ] ++ games;
   };
 
-in stdenv.mkDerivation {
-  name = "${name}-${lib.getVersion yquake2}";
+in
+stdenv.mkDerivation {
+  pname = name;
+  version = lib.getVersion yquake2;
 
-  nativeBuildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper copyDesktopItems ];
 
-  buildCommand = ''
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
     mkdir -p $out/bin
   '' + lib.concatMapStringsSep "\n" (game: ''
     makeWrapper ${env}/bin/yquake2 $out/bin/yquake2-${game.title} \
       --add-flags "+set game ${game.id}"
     makeWrapper ${env}/bin/yq2ded $out/bin/yq2ded-${game.title} \
       --add-flags "+set game ${game.id}"
-  '') games;
+  '') games + ''
+    install -Dm644 ${yquake2}/share/pixmaps/yamagi-quake2.png $out/share/pixmaps/yamagi-quake2.png;
+    runHook postInstall
+  '';
+
+  desktopItems = map
+    (game: makeDesktopItem ({
+      name = game.id;
+      exec = game.title;
+      icon = "yamagi-quake2";
+      desktopName = game.id;
+      comment = game.description;
+      categories = [ "Game" "Shooter" ];
+    }))
+    games;
 
   meta = {
     inherit description;
diff --git a/pkgs/games/r2modman/default.nix b/pkgs/games/r2modman/default.nix
index 27cb156a1fe60..5c173b5e969a4 100644
--- a/pkgs/games/r2modman/default.nix
+++ b/pkgs/games/r2modman/default.nix
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "r2modman";
-  version = "3.1.47";
+  version = "3.1.48";
 
   src = fetchFromGitHub {
     owner = "ebkr";
     repo = "r2modmanPlus";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-refFd/d4y8657FltEvogQVAEl48c5gtrwpuGa8vluqE=";
+    hash = "sha256-gm+Q2PXii53WQewl2vD4aUOo0yFuh+LFt8MEPB7ZqE0=";
   };
 
   offlineCache = fetchYarnDeps {
diff --git a/pkgs/games/shattered-pixel-dungeon/rkpd2.nix b/pkgs/games/shattered-pixel-dungeon/rkpd2.nix
index a3864dd3b6f5f..d4a790370aeb5 100644
--- a/pkgs/games/shattered-pixel-dungeon/rkpd2.nix
+++ b/pkgs/games/shattered-pixel-dungeon/rkpd2.nix
@@ -4,16 +4,16 @@
 
 callPackage ./generic.nix rec {
   pname = "rkpd2";
-  version = "1.0.0";
+  version = "2.0.3";
 
   src = fetchFromGitHub {
     owner = "Zrp200";
     repo = "rkpd2";
     rev = "v${version}";
-    hash = "sha256-3WKQCXFDyliObXaIRp3x0kRh3XeNd24SCoTgdFA8/rM=";
+    hash = "sha256-dng/QoG9FTNU/fNVqPtLW/MVhO1uDBkXxWcI5mESUKw=";
   };
 
-  depsHash = "sha256-yE6zuLnFLtNq76AhtyE+giGLF2vcCqF7sfIvcY8W6Lg=";
+  depsHash = "sha256-vihoR0bPh7590sRxeYJ1uuynNRxtRBuiFUrdmsRNUJc=";
 
   desktopName = "Rat King Pixel Dungeon 2";
 
diff --git a/pkgs/games/snipes/default.nix b/pkgs/games/snipes/default.nix
index 17a848402a517..f978a1b71d7b7 100644
--- a/pkgs/games/snipes/default.nix
+++ b/pkgs/games/snipes/default.nix
@@ -8,20 +8,18 @@ let
 
 in stdenv.mkDerivation {
   pname = "snipes";
-  version = "20180930";
+  version = "20240317";
 
   src = fetchFromGitHub {
     owner  = "Davidebyzero";
     repo   = "Snipes";
-    rev    = "594af45108e07aa4159c3babc9b5e53609c3fd6e";
-    sha256 = "0gmh38swm74jmljy0bq27ipqzb4h8y9rzwc1j6harbd9qqz5knac";
+    rev    = "caa2ce036a9f6461ccdb7ef8306edbd126dd4081";
+    sha256 = "sha256-iIoh5odCziX1cKs5qf4hJdXpUhy9kdht0YMLLfhvKZA=";
   };
 
   postPatch = ''
     substitute config-sample.h config.h \
       --replace SnipesConsole.ttf $out/share/snipes/SnipesConsole.ttf
-    substituteInPlace GNUmakefile \
-      --replace 'CFLAGS=-Werror -Wall' 'CFLAGS=-Wall'
   '';
 
   enableParallelBuilding = true;
@@ -43,6 +41,7 @@ in stdenv.mkDerivation {
     mainProgram = "snipes";
     homepage    = "https://www.vogons.org/viewtopic.php?f=7&t=49073";
     license     = licenses.free; # This reverse-engineered source code is released with the original authors' permission.
-    maintainers = with maintainers; [ peterhoeg ];
+    maintainers = with maintainers; [ peterhoeg cybershadow ];
+    broken      = stdenv.isDarwin; # not supported upstream - https://github.com/Davidebyzero/Snipes/issues/8#issuecomment-433720046
   };
 }
diff --git a/pkgs/kde/frameworks/kfilemetadata/default.nix b/pkgs/kde/frameworks/kfilemetadata/default.nix
index 0e9fd5489e7e1..b6b5f3a7bfbd5 100644
--- a/pkgs/kde/frameworks/kfilemetadata/default.nix
+++ b/pkgs/kde/frameworks/kfilemetadata/default.nix
@@ -5,6 +5,7 @@
   ebook_tools,
   exiv2,
   ffmpeg,
+  kcodecs,
   kconfig,
   kdegraphics-mobipocket,
   libappimage,
@@ -17,5 +18,5 @@ mkKdeDerivation {
   patches = [./cmake-install-paths.patch];
 
   extraNativeBuildInputs = [pkg-config];
-  extraBuildInputs = [attr ebook_tools exiv2 ffmpeg kconfig kdegraphics-mobipocket libappimage];
+  extraBuildInputs = [attr ebook_tools exiv2 ffmpeg kcodecs kconfig kdegraphics-mobipocket libappimage];
 }
diff --git a/pkgs/kde/frameworks/kservice/default.nix b/pkgs/kde/frameworks/kservice/default.nix
index 7451647081e50..c21bab7c83462 100644
--- a/pkgs/kde/frameworks/kservice/default.nix
+++ b/pkgs/kde/frameworks/kservice/default.nix
@@ -2,10 +2,12 @@
 mkKdeDerivation {
   pname = "kservice";
 
+  # FIXME(later): upstream
   patches = [
     # follow symlinks when generating sycoca
-    # FIXME(later): upstream
     ./qdiriterator-follow-symlinks.patch
+    # explode less when sycoca is deleted
+    ./handle-sycoca-deletion.patch
   ];
   meta.mainProgram = "kbuildsycoca6";
 }
diff --git a/pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch b/pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch
new file mode 100644
index 0000000000000..4eceefba998d6
--- /dev/null
+++ b/pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch
@@ -0,0 +1,14 @@
+diff --git a/src/sycoca/ksycoca.cpp b/src/sycoca/ksycoca.cpp
+index 981342e6..5940f65f 100644
+--- a/src/sycoca/ksycoca.cpp
++++ b/src/sycoca/ksycoca.cpp
+@@ -218,6 +218,10 @@ KSycoca::KSycoca()
+         connect(d->m_fileWatcher.get(), &KDirWatch::dirty, this, [this]() {
+             d->slotDatabaseChanged();
+         });
++        // NIXPKGS: we sometimes delete sycoca externally
++        connect(d->m_fileWatcher.get(), &KDirWatch::deleted, this, [this]() {
++            d->slotDatabaseChanged();
++        });
+     }
+ }
diff --git a/pkgs/kde/frameworks/qqc2-desktop-style/default.nix b/pkgs/kde/frameworks/qqc2-desktop-style/default.nix
index 13d7c9c92153c..d681efd14f415 100644
--- a/pkgs/kde/frameworks/qqc2-desktop-style/default.nix
+++ b/pkgs/kde/frameworks/qqc2-desktop-style/default.nix
@@ -1,11 +1,13 @@
 {
   mkKdeDerivation,
   qtdeclarative,
+  qttools,
   sonnet,
 }:
 mkKdeDerivation {
   pname = "qqc2-desktop-style";
 
+  extraNativeBuildInputs = [qttools];
   extraBuildInputs = [qtdeclarative];
   extraPropagatedBuildInputs = [sonnet];
 }
diff --git a/pkgs/kde/gear/akonadi-search/default.nix b/pkgs/kde/gear/akonadi-search/default.nix
index 3cc1a01bd8787..6e89f0b685ff7 100644
--- a/pkgs/kde/gear/akonadi-search/default.nix
+++ b/pkgs/kde/gear/akonadi-search/default.nix
@@ -7,7 +7,7 @@
   cargo,
   rustc,
   # provided as callPackage input to enable easier overrides through overlays
-  cargoHash ? "sha256-Mo94kfA4w280YdazhuVaS/vw7B0y9W/LYaHLLnV/3IE=",
+  cargoHash ? "sha256-fY0mQiYS/CMThOVsWp8NgxpWfUph2dZ7hj7W5JUJ2J4=",
 }:
 mkKdeDerivation rec {
   pname = "akonadi-search";
@@ -26,8 +26,9 @@ mkKdeDerivation rec {
   extraNativeBuildInputs = [
     rustPlatform.cargoSetupHook
     cargo
+    corrosion
     rustc
   ];
 
-  extraBuildInputs = [corrosion xapian];
+  extraBuildInputs = [xapian];
 }
diff --git a/pkgs/kde/gear/angelfish/default.nix b/pkgs/kde/gear/angelfish/default.nix
index 2a5f3fed9b3fe..2250b5db6a43b 100644
--- a/pkgs/kde/gear/angelfish/default.nix
+++ b/pkgs/kde/gear/angelfish/default.nix
@@ -8,7 +8,7 @@
   cargo,
   rustc,
   # provided as callPackage input to enable easier overrides through overlays
-  cargoHash ? "sha256-9l28C8rcUAro/o9SY3rA6xRsman3SrfFLjhPJhiiWfc=",
+  cargoHash ? "sha256-QJZJqdixPThgiKnruKetmzhbvtY/MsGy4v+OdQiEFR8=",
   qcoro,
 }:
 mkKdeDerivation rec {
@@ -25,8 +25,9 @@ mkKdeDerivation rec {
   extraNativeBuildInputs = [
     rustPlatform.cargoSetupHook
     cargo
+    corrosion
     rustc
   ];
 
-  extraBuildInputs = [corrosion qtsvg qtwebengine qcoro];
+  extraBuildInputs = [qtsvg qtwebengine qcoro];
 }
diff --git a/pkgs/kde/gear/kdepim-addons/default.nix b/pkgs/kde/gear/kdepim-addons/default.nix
index 9861da5879cd0..e256ee8fdf1dc 100644
--- a/pkgs/kde/gear/kdepim-addons/default.nix
+++ b/pkgs/kde/gear/kdepim-addons/default.nix
@@ -8,7 +8,7 @@
   discount,
   alpaka,
   # provided as callPackage input to enable easier overrides through overlays
-  cargoHash ? "sha256-MMCDfCtGDJ+yrfdpZEMxlSh7yWU6de/Pggw7Op7VxQI=",
+  cargoHash ? "sha256-Yt1Gxw9Q1Q108YRJoUIpeNZlGjZ7yabLW3bRO4+x6Vo=",
 }:
 mkKdeDerivation rec {
   pname = "kdepim-addons";
@@ -28,8 +28,9 @@ mkKdeDerivation rec {
   extraNativeBuildInputs = [
     rustPlatform.cargoSetupHook
     cargo
+    corrosion
     rustc
   ];
 
-  extraBuildInputs = [corrosion discount alpaka];
+  extraBuildInputs = [discount alpaka];
 }
diff --git a/pkgs/kde/gear/kompare/default.nix b/pkgs/kde/gear/kompare/default.nix
index 32bcaf2401d9a..1607d88ad905a 100644
--- a/pkgs/kde/gear/kompare/default.nix
+++ b/pkgs/kde/gear/kompare/default.nix
@@ -1,5 +1,8 @@
 {mkKdeDerivation}:
 mkKdeDerivation {
   pname = "kompare";
-  meta.mainProgram = "kompare";
+  meta = {
+    mainProgram = "kompare";
+    broken = true; # Qt5
+  };
 }
diff --git a/pkgs/kde/gear/libkomparediff2/default.nix b/pkgs/kde/gear/libkomparediff2/default.nix
index 43cccc19603fc..eca12887d94b8 100644
--- a/pkgs/kde/gear/libkomparediff2/default.nix
+++ b/pkgs/kde/gear/libkomparediff2/default.nix
@@ -6,4 +6,6 @@ mkKdeDerivation {
   pname = "libkomparediff2";
 
   extraBuildInputs = [qt5compat];
+
+  meta.broken = true; # Qt5
 }
diff --git a/pkgs/kde/generated/dependencies.json b/pkgs/kde/generated/dependencies.json
index 57d3a96728ac4..aed3f12814529 100644
--- a/pkgs/kde/generated/dependencies.json
+++ b/pkgs/kde/generated/dependencies.json
@@ -884,9 +884,6 @@
       "kcrash",
       "kxmlgui"
     ],
-    "gpgme": [
-      "libgpg-error"
-    ],
     "granatier": [
       "extra-cmake-modules",
       "kconfig",
@@ -957,18 +954,6 @@
       "kirigami",
       "mpvqt"
     ],
-    "hash-o-matic": [
-      "extra-cmake-modules",
-      "kcolorscheme",
-      "kconfig",
-      "kcoreaddons",
-      "kdbusaddons",
-      "ki18n",
-      "kirigami",
-      "kwindowsystem",
-      "libkleo",
-      "qqc2-desktop-style"
-    ],
     "heaptrack": [
       "extra-cmake-modules",
       "kconfigwidgets",
@@ -2594,7 +2579,6 @@
     ],
     "kirigami-gallery": [
       "extra-cmake-modules",
-      "kconfig",
       "kirigami",
       "kitemmodels"
     ],
@@ -3176,19 +3160,6 @@
       "kxmlgui",
       "syntax-highlighting"
     ],
-    "kompare": [
-      "extra-cmake-modules",
-      "kcodecs",
-      "kconfig",
-      "kcoreaddons",
-      "kdoctools",
-      "kiconthemes",
-      "kjobwidgets",
-      "kparts",
-      "ktexteditor",
-      "kwidgetsaddons",
-      "libkomparediff2"
-    ],
     "kongress": [
       "extra-cmake-modules",
       "kcalendarcore",
@@ -4342,14 +4313,6 @@
       "ki18n",
       "kwidgetsaddons"
     ],
-    "libkomparediff2": [
-      "extra-cmake-modules",
-      "kconfig",
-      "kcoreaddons",
-      "ki18n",
-      "kio",
-      "kxmlgui"
-    ],
     "libksane": [
       "extra-cmake-modules",
       "ki18n",
@@ -4830,9 +4793,6 @@
     "phonon": [
       "extra-cmake-modules"
     ],
-    "phonon-gstreamer": [
-      "phonon"
-    ],
     "phonon-vlc": [
       "extra-cmake-modules",
       "phonon"
@@ -5417,11 +5377,7 @@
       "kconfig",
       "kcoreaddons",
       "ki18n",
-      "knotifications",
-      "kservice",
-      "libksysguard",
-      "libplasma",
-      "solid"
+      "libplasma"
     ],
     "plasmatube": [
       "extra-cmake-modules",
@@ -5593,21 +5549,6 @@
       "messagelib",
       "pimcommon"
     ],
-    "rkward": [
-      "extra-cmake-modules",
-      "karchive",
-      "kconfig",
-      "kcoreaddons",
-      "kcrash",
-      "kdoctools",
-      "ki18n",
-      "knotifications",
-      "kparts",
-      "ktexteditor",
-      "kwidgetsaddons",
-      "kwindowsystem",
-      "kxmlgui"
-    ],
     "rocs": [
       "extra-cmake-modules",
       "karchive",
@@ -6129,5 +6070,5 @@
       "kwindowsystem"
     ]
   },
-  "version": "56eceecf"
+  "version": "c03e6379"
 }
\ No newline at end of file
diff --git a/pkgs/kde/generated/projects.json b/pkgs/kde/generated/projects.json
index e534519b216ab..8986f2db0823f 100644
--- a/pkgs/kde/generated/projects.json
+++ b/pkgs/kde/generated/projects.json
@@ -569,6 +569,12 @@
     "project_path": "kde/workspace/breeze-plymouth",
     "repo_path": "plasma/breeze-plymouth"
   },
+  "brio": {
+    "description": "Application for creating animations in Inkscape",
+    "name": "brio",
+    "project_path": "playground/graphics/brio",
+    "repo_path": "graphics/brio"
+  },
   "brooklyn": {
     "description": "Protocol independent software which forwards messages between various chat services.",
     "name": "brooklyn",
@@ -1112,7 +1118,7 @@
   "hash-o-matic": {
     "description": "Simple hash validator allowing to compare two files, generate the checksum of a file and verify if a hash matches a file.",
     "name": "hash-o-matic",
-    "project_path": "kdereview/utils/hash-o-matic",
+    "project_path": "extragear/utils/hash-o-matic",
     "repo_path": "utilities/hash-o-matic"
   },
   "heaptrack": {
@@ -5660,7 +5666,7 @@
   "print-manager": {
     "description": "A tool for managing print jobs and printers",
     "name": "print-manager",
-    "project_path": "kde/kdeworkspace/print-manager",
+    "project_path": "kde/workspace/print-manager",
     "repo_path": "plasma/print-manager"
   },
   "printer-applet": {
@@ -5894,7 +5900,7 @@
   "rkward": {
     "description": "Easily extensible and easy-to-use IDE/GUI for R",
     "name": "rkward",
-    "project_path": "kdereview/rkward",
+    "project_path": "extragear/education/rkward",
     "repo_path": "education/rkward"
   },
   "rocs": {
@@ -7157,6 +7163,12 @@
     "project_path": "websites/ghostwriter-kde-org",
     "repo_path": "websites/ghostwriter-kde-org"
   },
+  "websites-glaxnimate-kde-org": {
+    "description": "Website for Glaxnimate \u2014 glaxnimate.kde.org",
+    "name": "websites-glaxnimate-kde-org",
+    "project_path": "websites/glaxnimate-kde-org",
+    "repo_path": "websites/glaxnimate-kde-org"
+  },
   "websites-go-kde-org": {
     "description": "Data for the KDE Short URL Redirector Service - go.kde.org",
     "name": "websites-go-kde-org",
diff --git a/pkgs/kde/generated/sources/frameworks.json b/pkgs/kde/generated/sources/frameworks.json
index a4e82300ac9aa..a2b93aa050548 100644
--- a/pkgs/kde/generated/sources/frameworks.json
+++ b/pkgs/kde/generated/sources/frameworks.json
@@ -1,362 +1,362 @@
 {
   "attica": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/attica-6.0.0.tar.xz",
-    "hash": "sha256-7yHY5Xrq5HV7a0Df4NDpw4MCqXkWS05NSTtjG3wCPSM="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/attica-6.1.0.tar.xz",
+    "hash": "sha256-iz3KyaZ1Op0PeAeCww82ne0/UxxHjpXKHBlThK19taA="
   },
   "baloo": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/baloo-6.0.0.tar.xz",
-    "hash": "sha256-6iHojR/iUtLcleC3roiRWUgizN2JjnqlbUbtns1iakE="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/baloo-6.1.0.tar.xz",
+    "hash": "sha256-VNghxNwSGRs/GutedTwQeMi7RvFRXQIEZ3Bdf3xZzKo="
   },
   "bluez-qt": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/bluez-qt-6.0.0.tar.xz",
-    "hash": "sha256-NnmPHnoKRyYHQ1vrKDP2zHfWXLAG3srB7AsKOm9RQus="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/bluez-qt-6.1.0.tar.xz",
+    "hash": "sha256-+UJO8V4H+BdPBpEa9GFqBt2Ird2pdflU+W6qqHHNjrs="
   },
   "breeze-icons": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/breeze-icons-6.0.0.tar.xz",
-    "hash": "sha256-Rz6YUeT4SmTx6AjVj9h2AhmhsI/q9LUUoTmcjlyIncQ="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/breeze-icons-6.1.0.tar.xz",
+    "hash": "sha256-sbqALQ0NvQ7NeGy9+q9UXy3TwheWa4lLkyGioYQmoWo="
   },
   "extra-cmake-modules": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/extra-cmake-modules-6.0.0.tar.xz",
-    "hash": "sha256-I5kr8Z23FxVrfW3RMRjKp5/VfwkL6wYugwjbPAn3DQw="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/extra-cmake-modules-6.1.0.tar.xz",
+    "hash": "sha256-dsnt8AgH5s+NSuNfUZW0vD/pRkjZdv71Mr9/l9hjiL0="
   },
   "frameworkintegration": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/frameworkintegration-6.0.0.tar.xz",
-    "hash": "sha256-ND76Tk99HIBN4stqLKx6mAz383h/1PUj+iwtLRX2XZs="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/frameworkintegration-6.1.0.tar.xz",
+    "hash": "sha256-R7s4p3i5RAW9niUb53S6kQwrhc1qRRK6H26bb4eRROg="
   },
   "kapidox": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kapidox-6.0.0.tar.xz",
-    "hash": "sha256-5M1FL+eWspU2wwtSVuD46oLcre/cspzigvLB6uo3ZLs="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kapidox-6.1.0.tar.xz",
+    "hash": "sha256-sSnxafopk6yomOcmGdPbr6Owfom/9L08unNh3QS8XBU="
   },
   "karchive": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/karchive-6.0.0.tar.xz",
-    "hash": "sha256-daWR2WSAJuuGgml05vOILn9iBZLs74+r6xkgbmOwTlA="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/karchive-6.1.0.tar.xz",
+    "hash": "sha256-V2xxM8+5lLUwvXN3AwuSa9oieqKuQg1dhTjyaBkm+Cw="
   },
   "kauth": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kauth-6.0.0.tar.xz",
-    "hash": "sha256-ZgRmmNJYRpLVOXpuyAiyyfi3iCoPhSM76c1pKD0Dx2g="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kauth-6.1.0.tar.xz",
+    "hash": "sha256-R+eAQCCAUJjMmrNwtsU5mRuwKAQfqvWmGat8srmS8Is="
   },
   "kbookmarks": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kbookmarks-6.0.0.tar.xz",
-    "hash": "sha256-FbVDbDrb1RegFPM4A8ML1gZWu8y5orKm5G/U4iN9uaU="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kbookmarks-6.1.0.tar.xz",
+    "hash": "sha256-t2NWMhfB4+hINLS3d5iRxFEuj9J8srU68Aoqt2EtR0c="
   },
   "kcalendarcore": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcalendarcore-6.0.0.tar.xz",
-    "hash": "sha256-ZBNWrChsGlKHMnzo+iUpv1MEjkOdH/ZyySXUq34Ot8I="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcalendarcore-6.1.0.tar.xz",
+    "hash": "sha256-HP/vMqQHa3nCZwXhIEP8t2y7/K74wSDvQLhYzESiE5s="
   },
   "kcmutils": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcmutils-6.0.0.tar.xz",
-    "hash": "sha256-mwmxQMAT1Wii7jV/gkv7ZBReTf3RaJ2m+/tPQYxbpDs="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcmutils-6.1.0.tar.xz",
+    "hash": "sha256-PRebmormY26jNR5b4EFKNJkaeh9RTqSS0ki2gxXsKoY="
   },
   "kcodecs": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcodecs-6.0.0.tar.xz",
-    "hash": "sha256-zrpE3NwlHUQ7vWy3fRIZ2HavjMKuRxBHKqzngSI5Wr4="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcodecs-6.1.0.tar.xz",
+    "hash": "sha256-8fAHWVWy3WE7XF95mYROofngoJ/z8ssjBlOunL2EOBY="
   },
   "kcolorscheme": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcolorscheme-6.0.0.tar.xz",
-    "hash": "sha256-3kWCJDF1W+Oat66/y3y2/5C0kkV5wqTWauKPkdcKJg4="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcolorscheme-6.1.0.tar.xz",
+    "hash": "sha256-wwqofzpgaAfEBo2rAIA5K9ykn4++8YVT4afeD3xbA2o="
   },
   "kcompletion": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcompletion-6.0.0.tar.xz",
-    "hash": "sha256-9kNAFOeXm2VFkG0f96KSDPq2VkE2mSHmnwCoGLju5Vk="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcompletion-6.1.0.tar.xz",
+    "hash": "sha256-4eC+vh7diL6gi7D0eEbSNiTjRIbfnDozgGl/xBGEScg="
   },
   "kconfig": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kconfig-6.0.0.tar.xz",
-    "hash": "sha256-P3weawSN9Ks9Z/vvAaWtHdAonJsVhkRmj7oCJcBQwFA="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kconfig-6.1.0.tar.xz",
+    "hash": "sha256-L9pfJb6sUmCnDz9ikUS1wim/NSyuIIiT7USpcyxtyvc="
   },
   "kconfigwidgets": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kconfigwidgets-6.0.0.tar.xz",
-    "hash": "sha256-URvtDZXeGGs89ixxkru2AgRQ1IYfBcGlRTVhRPF95TI="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kconfigwidgets-6.1.0.tar.xz",
+    "hash": "sha256-CyUrLnlv9vBelKuSEw/nOeT+aYwiMjC+k2tXnp350XE="
   },
   "kcontacts": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcontacts-6.0.0.tar.xz",
-    "hash": "sha256-F5xnSOVVxcAosCpLmxZe3hOgnPXq8OoBI2bJcn0jDsQ="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcontacts-6.1.0.tar.xz",
+    "hash": "sha256-vtC+W4MCz010kSAjTJjQ3GKdoEoBI2lBOGgaAiGEJk4="
   },
   "kcoreaddons": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcoreaddons-6.0.0.tar.xz",
-    "hash": "sha256-6rg4IBtFrJjEEvZNI06J1iNX8nWumulm0HOmTGelJu8="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcoreaddons-6.1.0.tar.xz",
+    "hash": "sha256-dgjvmiSDsoo6+CowJAVM2zxYzx/fvXkaAvcO/IDqM0M="
   },
   "kcrash": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kcrash-6.0.0.tar.xz",
-    "hash": "sha256-9W8e1E5JRBe3BG5PlHka1N3QfGy48PcE8gU3F6RClvk="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kcrash-6.1.0.tar.xz",
+    "hash": "sha256-cn+C6XZ8L2R7fua9edUevUBpEnEyDct4NaMM+IBkee0="
   },
   "kdav": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kdav-6.0.0.tar.xz",
-    "hash": "sha256-s8gfXjErPu7SyLfbIY9kuQ9n4bLQzjekT/JztSMoQ+k="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kdav-6.1.0.tar.xz",
+    "hash": "sha256-ZETT6lgdUU+4KvlC0JKwvAYToayi+iMTqQAC0UhZTCs="
   },
   "kdbusaddons": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kdbusaddons-6.0.0.tar.xz",
-    "hash": "sha256-EecNDHI5vYGJYtkc25SuupR0gFXHcAOk9k/xTasK6Yk="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kdbusaddons-6.1.0.tar.xz",
+    "hash": "sha256-tCOkyh/KuXO5RUOG77r13CxkLSHukSXXO4/Gf4BGNUE="
   },
   "kdeclarative": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kdeclarative-6.0.0.tar.xz",
-    "hash": "sha256-RnHrt+6bou16AtLHHd6Q/mgb5Qfn15E+eayxXfzntvk="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kdeclarative-6.1.0.tar.xz",
+    "hash": "sha256-+UE41i4XNVgS83YTqpNvrS5RQP5PCankLk2b+piBxwI="
   },
   "kded": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kded-6.0.0.tar.xz",
-    "hash": "sha256-xiQyM/KCeyexpCmHp6MFjxOFP30OK/KJwFXyRdDFxiU="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kded-6.1.0.tar.xz",
+    "hash": "sha256-sY0O8jaZXBnakm5bo/JIaJhQ/95mDrhrGKto6HsRm6E="
   },
   "kdesu": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kdesu-6.0.0.tar.xz",
-    "hash": "sha256-JMynq22pYweZ5fAQe1RtN+5jWx+fS3wS61Ohs2GbLAw="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kdesu-6.1.0.tar.xz",
+    "hash": "sha256-pqOX4IzNNTfcmxMp6MwfBcpqzz2cGDluQRjlFEa6gn4="
   },
   "kdnssd": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kdnssd-6.0.0.tar.xz",
-    "hash": "sha256-BpSWS6Stt+IL0NEAdpRECimLQz9tqGR6JLwVHcNItnk="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kdnssd-6.1.0.tar.xz",
+    "hash": "sha256-O5gfemnyZe0zE0b1bUAw0xu98dk29iwnbH4zOztntxI="
   },
   "kdoctools": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kdoctools-6.0.0.tar.xz",
-    "hash": "sha256-V5maTPAPDWHPKhfihXxyOUTR5I+3vq6wPkpRjaEiyLA="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kdoctools-6.1.0.tar.xz",
+    "hash": "sha256-JAJUrbtSGEpXEHIGi/UEu8NXnrmBGYPGo3lVYyYO87U="
   },
   "kfilemetadata": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kfilemetadata-6.0.0.tar.xz",
-    "hash": "sha256-zxMNwbMqMaGSE/PhrGfyGAy3kxJA5cdVIRaG6TeS85M="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kfilemetadata-6.1.0.tar.xz",
+    "hash": "sha256-1Sp4LFTq5doykSyodvGXX7fkv/4cseFyJtg2FKs7sco="
   },
   "kglobalaccel": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kglobalaccel-6.0.0.tar.xz",
-    "hash": "sha256-WACesNC3DJPcDLCIaukp83VulyyEHXo+Rl34MH5bcUk="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kglobalaccel-6.1.0.tar.xz",
+    "hash": "sha256-iFsT04iO6+WFWJ3CiOOCYESrW/O44qdJuQcNk9MvZPI="
   },
   "kguiaddons": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kguiaddons-6.0.0.tar.xz",
-    "hash": "sha256-IK9Yq2OeqZ3wmsvXSvDIZ/IvHZ+RWVYjq0T7pYNOqmI="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kguiaddons-6.1.0.tar.xz",
+    "hash": "sha256-CNiEUq5LzcBziRSZ2bQUEpzcWYK9O62Icm2+8o7lrFM="
   },
   "kholidays": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kholidays-6.0.0.tar.xz",
-    "hash": "sha256-SC9jdf5TamO2e61FoK04gMdNdPySo6k17LeLKYMNm38="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kholidays-6.1.0.tar.xz",
+    "hash": "sha256-g2YVWatXcM1WGQLuuBvlFxkiQ1tTnZf0vBcnfaS5cwo="
   },
   "ki18n": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/ki18n-6.0.0.tar.xz",
-    "hash": "sha256-Fcv7c+8dOVTWIGdVtuapyG6ie+S02wyEPThJSFG8w1Q="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/ki18n-6.1.0.tar.xz",
+    "hash": "sha256-FjIZ8bXJ3qeq6m3cSg0oqLnhiE0jnPVjPmhMIUhRdkg="
   },
   "kiconthemes": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kiconthemes-6.0.0.tar.xz",
-    "hash": "sha256-9Ve9Jp+v5hfrjUt6wpWWCflszj6osbOsIxBjpyaSe7A="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kiconthemes-6.1.0.tar.xz",
+    "hash": "sha256-ec53cB1BlHluLCVQCPGQcUYKoD/yCKIRf8TkyTEMNAI="
   },
   "kidletime": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kidletime-6.0.0.tar.xz",
-    "hash": "sha256-qoRrTPy8SNCENQ0fUlY4/PR2awNjvN5A/O+oio+9p7M="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kidletime-6.1.0.tar.xz",
+    "hash": "sha256-yNhcEp/S6VIL7DqpZwRJtOos8JIGClT9sky6Y0dfrzo="
   },
   "kimageformats": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kimageformats-6.0.0.tar.xz",
-    "hash": "sha256-Hd0o8vuKwslVVveSQYwrYZCgQFCsMbJ6qC6hHBrwh5w="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kimageformats-6.1.0.tar.xz",
+    "hash": "sha256-sDP6BYq0yWV+G81oKonKlKW4geeQTd3uaqtKFLr8yV4="
   },
   "kio": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kio-6.0.0.tar.xz",
-    "hash": "sha256-SVGt8EMpnkY4A8xj7TPVJhuBv/lp6xidwTNQ9JXLS0I="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kio-6.1.0.tar.xz",
+    "hash": "sha256-R8sAJYyjj5we4qp5KfWxK8fZnLWA2lYK2nEFD6CJ/9I="
   },
   "kirigami": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kirigami-6.0.0.tar.xz",
-    "hash": "sha256-7Q9WyJJJ+5Kpr5mpT9E1Qqu65KjxYTqqor+rh5FLYBo="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kirigami-6.1.0.tar.xz",
+    "hash": "sha256-KlQ4GGts+IR6V5wDD+03eGOOX7Tl61T3HcJgLaRgcZY="
   },
   "kitemmodels": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kitemmodels-6.0.0.tar.xz",
-    "hash": "sha256-ibh5mBcighqRG7oXZRKIICF5RPp45UUjaRWO2XqDWzo="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kitemmodels-6.1.0.tar.xz",
+    "hash": "sha256-UWfTKvab8A9slTHIlRPVS//hbt00qelI77SekjXj4wI="
   },
   "kitemviews": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kitemviews-6.0.0.tar.xz",
-    "hash": "sha256-re12r3jWa8PpDzocraEX10eDtRmQTQSjlZG5h03zUkM="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kitemviews-6.1.0.tar.xz",
+    "hash": "sha256-6ehsKqSSeMOJWbGAT+HGwgV/PpvolgkfiY+4FpKyCk0="
   },
   "kjobwidgets": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kjobwidgets-6.0.0.tar.xz",
-    "hash": "sha256-UjnQ1Hr4EYyWK1mBb87uu/+TCkOreSNDiYKsCNvLhL4="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kjobwidgets-6.1.0.tar.xz",
+    "hash": "sha256-rHndtIs4UnpgWpVkSFrTcMvP20BrleD5JV1VJWRU/bg="
   },
   "knewstuff": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/knewstuff-6.0.0.tar.xz",
-    "hash": "sha256-ApnbqYBZC9fHSHCnTGu2ynMq9HirLJukFJQ/YuoL4Po="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/knewstuff-6.1.0.tar.xz",
+    "hash": "sha256-HGoHZBBTgIQCHP8e6wK+LzQoAoRxejQpDUKxHf47PT8="
   },
   "knotifications": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/knotifications-6.0.0.tar.xz",
-    "hash": "sha256-Nf7YE/xZS76Ai8AbURstHv+QI5d7eYETfz/sgZhHE+g="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/knotifications-6.1.0.tar.xz",
+    "hash": "sha256-AvNvS8HS0QlOGwIDo04DfOx4MDxqrZ1p+ayMc4is/Ks="
   },
   "knotifyconfig": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/knotifyconfig-6.0.0.tar.xz",
-    "hash": "sha256-Mj/nV6AeyySB2a0EsJAu/T3eE8sfwETuGsG39aKTaeY="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/knotifyconfig-6.1.0.tar.xz",
+    "hash": "sha256-3+haRVAEcKMG3zF29mWvJYlSHvUJBhLnqC7GGOBh/oc="
   },
   "kpackage": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kpackage-6.0.0.tar.xz",
-    "hash": "sha256-0q7D3w3/tx6TrMA8RvLUylnFgmOpmJ33UQe/UiPp0bc="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kpackage-6.1.0.tar.xz",
+    "hash": "sha256-7XWRK0FlgKT5rNvt7jHlkLGX4VfNod6hOtKHURFrUq8="
   },
   "kparts": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kparts-6.0.0.tar.xz",
-    "hash": "sha256-8IMIVW7s1tsL5yfsHSezu1M4gKUw0RK7FuwvCOrR9uE="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kparts-6.1.0.tar.xz",
+    "hash": "sha256-38on49T+f6cDjLrT06CpVcVwvXO1vArOs5AOBxSVEB0="
   },
   "kpeople": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kpeople-6.0.0.tar.xz",
-    "hash": "sha256-IRmsnfqA9NkNbNBE1UTtXlAOmuSHzmFvJHXFjqqQbsM="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kpeople-6.1.0.tar.xz",
+    "hash": "sha256-pfouLmexqa1l7JWpUgGvKOINxGLp0xAHA0rU2leOHWI="
   },
   "kplotting": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kplotting-6.0.0.tar.xz",
-    "hash": "sha256-3ENkS3YyNEvUE9dUqn3RBSo83pIwGTq/XaR94TQaY/8="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kplotting-6.1.0.tar.xz",
+    "hash": "sha256-uyExlyWyA4KkSpvi1wx2petY5sgM8otvMU9J6ctzsfo="
   },
   "kpty": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kpty-6.0.0.tar.xz",
-    "hash": "sha256-xd81et/BczWT9s6zzZX/ej5YdwH5kLYx367gJ44N8XE="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kpty-6.1.0.tar.xz",
+    "hash": "sha256-3yJs2Qum93NWBATHmVYrJ2StOdT0HxUQXy7Z+bLPWd8="
   },
   "kquickcharts": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kquickcharts-6.0.0.tar.xz",
-    "hash": "sha256-69mo9QG4DnKhL1DZhIR6aY9yg744lkT34kEzSEB2pqU="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kquickcharts-6.1.0.tar.xz",
+    "hash": "sha256-dhtXOP8aG7H+aPBCfiiI4lyQG2+tRAFnY4biegbjpMc="
   },
   "krunner": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/krunner-6.0.0.tar.xz",
-    "hash": "sha256-ItM/0nVno1CuTtrk/lZit0jo+r1TmGNEF5RVjmjzMT0="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/krunner-6.1.0.tar.xz",
+    "hash": "sha256-+qIfmQ2YhmWe1Ex1PM+Nd86wfflOhMAYk/k7COBnYNQ="
   },
   "kservice": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kservice-6.0.0.tar.xz",
-    "hash": "sha256-m0Ss9R0oDeqjEU7FlRimr11kXLHsLrrbXedGgciJG/4="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kservice-6.1.0.tar.xz",
+    "hash": "sha256-7i7n/eLEeVWJCHb4kKDRZ5LymwzHT9KWzKsVPYtc54E="
   },
   "kstatusnotifieritem": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kstatusnotifieritem-6.0.0.tar.xz",
-    "hash": "sha256-tCYXbSy8b+gMdYtsR2pHNB2JqSy7M1XCvjdCikF3KQc="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kstatusnotifieritem-6.1.0.tar.xz",
+    "hash": "sha256-k+LJyqcNTM6AWapsuB5bFh1AVwHbGE3f+BMD+iT97xQ="
   },
   "ksvg": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/ksvg-6.0.0.tar.xz",
-    "hash": "sha256-0FbLlrBsHxqKjznBNIWM8UN8VGudeanrGpL4kz0eNXk="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/ksvg-6.1.0.tar.xz",
+    "hash": "sha256-KGqOHshnjXYZYKPNK0wOncg3716bY5a8jXaw/rcba18="
   },
   "ktexteditor": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/ktexteditor-6.0.0.tar.xz",
-    "hash": "sha256-YgJmwdKI0J967k0ryLFBxzVV1fAzxFK80uLbIGS4/UI="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/ktexteditor-6.1.0.tar.xz",
+    "hash": "sha256-O6GPQe9eV/6GjcKV0BhS0xsVkMC+iTrJfO7ZIpsJqd8="
   },
   "ktexttemplate": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/ktexttemplate-6.0.0.tar.xz",
-    "hash": "sha256-uWTmEtLWI7vPP1p2rkukQI+A3mxYgHTGfxiDS15IJ0w="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/ktexttemplate-6.1.0.tar.xz",
+    "hash": "sha256-Iib5RyrdGWr9W4t1uVOkLYJJMWQ37QYNAkRid34t83E="
   },
   "ktextwidgets": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/ktextwidgets-6.0.0.tar.xz",
-    "hash": "sha256-sJP1cOo8LUMg5BtXWlQPt1rNW1+Bi8YhWl/bV3VLbEA="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/ktextwidgets-6.1.0.tar.xz",
+    "hash": "sha256-cs1EchySCcwXvz6OHcy6gjvL6BVqo3AgXFzh/3RrZVM="
   },
   "kunitconversion": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kunitconversion-6.0.0.tar.xz",
-    "hash": "sha256-yISUrIlxwl3GvJoRGepEwPjtpE6dKIOt6aymUemWjV4="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kunitconversion-6.1.0.tar.xz",
+    "hash": "sha256-323m8tQbOUOzHM7AUQE8sNT8bpl5qOUjLmQ245CzMew="
   },
   "kuserfeedback": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kuserfeedback-6.0.0.tar.xz",
-    "hash": "sha256-AvGvEI4lPIQlJtMcmXoXd7j3puW4aYtbEmfOHsEorys="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kuserfeedback-6.1.0.tar.xz",
+    "hash": "sha256-zfpG/QJ3PyWCDVqAF9bKl0bRBUz0TjrjP/9pHrJmvF8="
   },
   "kwallet": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kwallet-6.0.0.tar.xz",
-    "hash": "sha256-urQ4I96LGwhtxLKtENEL1sTQ0uH4tf1f3V99Nl+45cw="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kwallet-6.1.0.tar.xz",
+    "hash": "sha256-z5Ktu9/nZDpOD5Oo0ilib7hZ/pA9C0tYQa0RQXW4RhM="
   },
   "kwidgetsaddons": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kwidgetsaddons-6.0.0.tar.xz",
-    "hash": "sha256-p3cckjEKIagQW6ZN1hwGW6dHI4mcfM/E3itXsX5qa2M="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kwidgetsaddons-6.1.0.tar.xz",
+    "hash": "sha256-gSJdfsLW6nON7VX+QZeN62OcP3ei2q0OsuVCOqBG5M4="
   },
   "kwindowsystem": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kwindowsystem-6.0.0.tar.xz",
-    "hash": "sha256-GQbKpTt9WPwMTXijyNmfJaoFb8bQnF/BIe1eH4A5apQ="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kwindowsystem-6.1.0.tar.xz",
+    "hash": "sha256-jAdUOIOqo4sBUI8GtEOVWdiQdwAG+On26OdpxdQiZZU="
   },
   "kxmlgui": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/kxmlgui-6.0.0.tar.xz",
-    "hash": "sha256-0mxizp9b6GQ/7UZVMUGPtn5NE+32F5epRtowGuuRWPI="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/kxmlgui-6.1.0.tar.xz",
+    "hash": "sha256-glugKq3KvBzhOlWDKVyLEDbC8UvR+kayZDHtxEzGzw0="
   },
   "modemmanager-qt": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/modemmanager-qt-6.0.0.tar.xz",
-    "hash": "sha256-79bqPq5SshJ5ve446A9mfDXZi5d6RC9L1rigpHH5D/M="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/modemmanager-qt-6.1.0.tar.xz",
+    "hash": "sha256-hTuu9b2BDIpk1MYPdI7xhCtzaOapUqL5PNSNhetfSXA="
   },
   "networkmanager-qt": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/networkmanager-qt-6.0.0.tar.xz",
-    "hash": "sha256-Il/J9E4R0GaHziyla+fHRS8K0syFCyL1cVyLcB2rtwA="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/networkmanager-qt-6.1.0.tar.xz",
+    "hash": "sha256-bkl5tfiJr8/0+MdBfig8Hbnk3zbKBii7Pr7wm2Kr0wI="
   },
   "prison": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/prison-6.0.0.tar.xz",
-    "hash": "sha256-b/X7xvw4WBBy7kWQTgItW/Lns7H0msnR0MYCTXyj7Fo="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/prison-6.1.0.tar.xz",
+    "hash": "sha256-FwhxB2mvGVPn88yhUNQ725YghWT4lHees5e2fPUmHvQ="
   },
   "purpose": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/purpose-6.0.0.tar.xz",
-    "hash": "sha256-T6hcvS2d1JIW7aZDO0PgW7sRQknaxR31UkIyj364+Xw="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/purpose-6.1.0.tar.xz",
+    "hash": "sha256-RhL/9M5RJ5ZCL0vePvqPX/Y/lri32S5I+H+WyJ4hGY4="
   },
   "qqc2-desktop-style": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/qqc2-desktop-style-6.0.0.tar.xz",
-    "hash": "sha256-hIMF/4iA/brRm/V+2fEo5ZzXHsuKNvv5IKVbYPaKLJM="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/qqc2-desktop-style-6.1.0.tar.xz",
+    "hash": "sha256-6R2avPkWnso1fn3It/xQSjt+Xv8yT+qm/+zICR4WItk="
   },
   "solid": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/solid-6.0.0.tar.xz",
-    "hash": "sha256-dcXSVO7OuRfDXLDjK+/3aizxRY93Ps0Od5W0fa1ardM="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/solid-6.1.0.tar.xz",
+    "hash": "sha256-B0qYS1jvUQF+52dUi/zgygC7cQ6IpKsAvJAgpGz6QmI="
   },
   "sonnet": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/sonnet-6.0.0.tar.xz",
-    "hash": "sha256-IIPfReenKaN6jWZCFF5qz0xT5rI1MDhD4xAxyNKQros="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/sonnet-6.1.0.tar.xz",
+    "hash": "sha256-wTzrSCasT9AnuwhSSqczk82KoMZxmvi2MU0L0YCi6/4="
   },
   "syndication": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/syndication-6.0.0.tar.xz",
-    "hash": "sha256-/15Rifz49vsSiYhuo3DCApXejAcmlSExbCVIuOcpS60="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/syndication-6.1.0.tar.xz",
+    "hash": "sha256-CdU5Si4wJMEYi+e2kDR7efwhQabRuDO8W0lL3MMvloM="
   },
   "syntax-highlighting": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/syntax-highlighting-6.0.0.tar.xz",
-    "hash": "sha256-LvnmuK64VD5k9KNiivozHAZW/mxIXzV0xAdlHXwSplM="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/syntax-highlighting-6.1.0.tar.xz",
+    "hash": "sha256-HnRJBSsOPpfWFdYVflZHlY6buY+l2PnF1pSCnF1nyrY="
   },
   "threadweaver": {
-    "version": "6.0.0",
-    "url": "mirror://kde/stable/frameworks/6.0/threadweaver-6.0.0.tar.xz",
-    "hash": "sha256-up2uxuBpf9wqzPdKRqbVlAPl40DSgLzpFv1jVqZo3bM="
+    "version": "6.1.0",
+    "url": "mirror://kde/stable/frameworks/6.1/threadweaver-6.1.0.tar.xz",
+    "hash": "sha256-3aXVUI1hcH60y9BE83HjRID/L0Q4GtxM0bcDz05Fjcg="
   }
 }
\ No newline at end of file
diff --git a/pkgs/kde/generated/sources/gear.json b/pkgs/kde/generated/sources/gear.json
index 392a9c2db4144..96499269a4d1c 100644
--- a/pkgs/kde/generated/sources/gear.json
+++ b/pkgs/kde/generated/sources/gear.json
@@ -1,1232 +1,1232 @@
 {
   "akonadi": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-24.02.1.tar.xz",
-    "hash": "sha256-ACW6ZEOazIZBZImCxuyKdm4tKeikmTUERr5ZfIgMccA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-24.02.2.tar.xz",
+    "hash": "sha256-G3kjaVbz10BL0j3JBz4RK1NWpkFW5PvDJMQJwTJb80M="
   },
   "akonadi-calendar": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-calendar-24.02.1.tar.xz",
-    "hash": "sha256-Av2ZpYjIDe0wTocbH/lm91t9drrAu0fmbsYMxvM31f0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-calendar-24.02.2.tar.xz",
+    "hash": "sha256-kwGV5yLPJowUZa41Nmq+++bw02o/cnCNDLAi5iiK6Fk="
   },
   "akonadi-calendar-tools": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-calendar-tools-24.02.1.tar.xz",
-    "hash": "sha256-ZKKFXfEmtk+901SH5Q8hlnNV4BxeFIm8bOocTWaHRDI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-calendar-tools-24.02.2.tar.xz",
+    "hash": "sha256-dbbLxrznmjtUpdLJR6FNWR6BIgpey8QpTo5JMOYJsDc="
   },
   "akonadiconsole": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadiconsole-24.02.1.tar.xz",
-    "hash": "sha256-JMTa5yfF05CwZ7xz2BjVAwNNE9iCBKtgqNWEXTN1P1o="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadiconsole-24.02.2.tar.xz",
+    "hash": "sha256-6KXlu1fRMkX8pLxr8b3f8ZJDb/7+gjUfSVb317l8ObQ="
   },
   "akonadi-contacts": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-contacts-24.02.1.tar.xz",
-    "hash": "sha256-LvKss2DcbUMrj4vpQI+bQYJNZSrrxj4LayM6bjVcacc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-contacts-24.02.2.tar.xz",
+    "hash": "sha256-7/C8KnAVgEE32cMvTCAQDKEeX5SosRkVPNBi67BW9R8="
   },
   "akonadi-import-wizard": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-import-wizard-24.02.1.tar.xz",
-    "hash": "sha256-rXuSdjQOUFUwgL4rZ2ADM1tFLxhN3fEMqOIs3jRDuwE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-import-wizard-24.02.2.tar.xz",
+    "hash": "sha256-+VCKPaYySF9mM4fP2DKtanZ+r/IIa6Y+AQowNE+dXxU="
   },
   "akonadi-mime": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-mime-24.02.1.tar.xz",
-    "hash": "sha256-GC6GK0jMGH8eKb+cAGNztoi7PVd00GQdcAvP6Yg4DkE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-mime-24.02.2.tar.xz",
+    "hash": "sha256-sGUWJr2lOgujbIBE0RRyOcxVHvAO7R3/+DiKFm0c5BM="
   },
   "akonadi-notes": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-notes-24.02.1.tar.xz",
-    "hash": "sha256-CzNK9ydi4Qc55O2DXC4J2digGMyCEjWggq5ZmlwV1ZM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-notes-24.02.2.tar.xz",
+    "hash": "sha256-BATXrYrse4g4s5CdnPIi0mf01vO1Hya9jsyjmn2LWFU="
   },
   "akonadi-search": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akonadi-search-24.02.1.tar.xz",
-    "hash": "sha256-kqpvnensD1/3jS120r+yzXwh1GURF6Gaqld/4o/2ENg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akonadi-search-24.02.2.tar.xz",
+    "hash": "sha256-bPrMpULzFzrS+TuqCPu3ddE5AqG6UAV+Ex9IZr6mK54="
   },
   "akregator": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/akregator-24.02.1.tar.xz",
-    "hash": "sha256-CpAp3MFPP9xuAQdSXUVFIZxIW0kkNwCWHAdXVeHey1I="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/akregator-24.02.2.tar.xz",
+    "hash": "sha256-lGd55Rup4KrkF6DXTCmFXWfUYVCKejSyZOpY1zdqymo="
   },
   "alligator": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/alligator-24.02.1.tar.xz",
-    "hash": "sha256-N8Q4EofbrRLZ3dYh9SHO/T+i/msA184AmxulBghsfZU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/alligator-24.02.2.tar.xz",
+    "hash": "sha256-ridOcusOuZdfGTyCNUQkQW58yeLZ/Xe1efVPsqs/7VU="
   },
   "analitza": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/analitza-24.02.1.tar.xz",
-    "hash": "sha256-UQJFTDDzarfcGYfddrzvxNV9hjrO9wSQyUB6BjL4mU8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/analitza-24.02.2.tar.xz",
+    "hash": "sha256-SdYM5D277bBHooHdLfaigY2Ok0B3R0nQeqelYj9szJs="
   },
   "angelfish": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/angelfish-24.02.1.tar.xz",
-    "hash": "sha256-duoPmm2k+T9LESWY6lFRSDq6RxfiTOdm1IClXlNLUBQ="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/angelfish-24.02.2.tar.xz",
+    "hash": "sha256-XTqwdHOUKLbTD2oS1oOgXxDf9h9UOwU59aGaFfxMg/E="
   },
   "arianna": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/arianna-24.02.1.tar.xz",
-    "hash": "sha256-YC1pp6/aKNJhOsBTPFXxXUhJp+aRevpGeOlc+mOzWWg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/arianna-24.02.2.tar.xz",
+    "hash": "sha256-NymiP5TSN5+1h/6QBDb/uSygOuMClu6le5YlqbS+uz4="
   },
   "ark": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ark-24.02.1.tar.xz",
-    "hash": "sha256-h0DluVd8xfTriJ2IClan0e54xCK/PjCwDB+qheQUj2Q="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ark-24.02.2.tar.xz",
+    "hash": "sha256-BjdPXHwq7nqTwEv9e2s7quqzli6Cd8kIf+pUupgFvc4="
   },
   "artikulate": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/artikulate-24.02.1.tar.xz",
-    "hash": "sha256-S0QbrR2YEVHAEa3e5IeLNFp4JL8xLVgrAAVxBCyC0M8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/artikulate-24.02.2.tar.xz",
+    "hash": "sha256-di0yr7ij+PilNs4zpyCIjr2ZZ7T7/qineSWj7QBDuzo="
   },
   "audiocd-kio": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/audiocd-kio-24.02.1.tar.xz",
-    "hash": "sha256-LBrYOxFNF18NuN7w4LsaJS8/hMia+vQZmIH4NtNkJuY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/audiocd-kio-24.02.2.tar.xz",
+    "hash": "sha256-ig/BKoaU7MiSO1RcXKsgYgQEvXe4SoDkt0yAq05XWho="
   },
   "audiotube": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/audiotube-24.02.1.tar.xz",
-    "hash": "sha256-Wf4yFQWlvhrKkAMpCk4BJ19FT9n1O23Cuhi5jwrSzpk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/audiotube-24.02.2.tar.xz",
+    "hash": "sha256-/XIaC46IllW6tZBmtygIBxt2Dr7P8b5H9a36dDqqXjI="
   },
   "baloo-widgets": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/baloo-widgets-24.02.1.tar.xz",
-    "hash": "sha256-t94o5H1HD6uohAzAKHMYgoTDcHVyF2qguCHM9G+24+8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/baloo-widgets-24.02.2.tar.xz",
+    "hash": "sha256-J2tVfDY9o2fRxpUOsOGrLK44mqt7U9r2qeJDH4fe6hU="
   },
   "blinken": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/blinken-24.02.1.tar.xz",
-    "hash": "sha256-Fcvs7wjLe+i4N2yivpjGvayghlGXievK0EGty3xNDhc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/blinken-24.02.2.tar.xz",
+    "hash": "sha256-hdwL/bbA2n7/s2q2QS8OvTzLndjn53X0y0HAC2/4VmY="
   },
   "bomber": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/bomber-24.02.1.tar.xz",
-    "hash": "sha256-xepCm6PEOL0x56bvytyNysUo8If6Mes0ehLuwPvrdpY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/bomber-24.02.2.tar.xz",
+    "hash": "sha256-uhke2hB/YF+j7IvjEZtrPQcqV2EBJ5xPa0vg0Be4l1c="
   },
   "bovo": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/bovo-24.02.1.tar.xz",
-    "hash": "sha256-L+Nsa2HjMihoNSOHkHlncW0Vn92w+zcTXpLL2oh/jY0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/bovo-24.02.2.tar.xz",
+    "hash": "sha256-oFIrL6rOogHqfpDFrarfNE8lf13s/EQUBwhIrLeKx4g="
   },
   "calendarsupport": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/calendarsupport-24.02.1.tar.xz",
-    "hash": "sha256-+k4xpqH6cO4Lr2d4okMJM8Rqk4kysrUx9ex7bL+4gs0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/calendarsupport-24.02.2.tar.xz",
+    "hash": "sha256-kGZxMgtfMr2e3PIS5moWxUbRlhUL0zMKr4qwkxsLBzE="
   },
   "calindori": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/calindori-24.02.1.tar.xz",
-    "hash": "sha256-xOl/NExr7+S4R/EWJ3mukUpA7qlPdIfnyH2g7MiG7AU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/calindori-24.02.2.tar.xz",
+    "hash": "sha256-oPvoWm2TPJ0HlLVWzzdlGTlCS4+7bdMwjHNrqAcx5H8="
   },
   "cantor": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/cantor-24.02.1.tar.xz",
-    "hash": "sha256-VeQu+Ug3obXOQTma6S6GY2b4yElr9gyAs1kZ6U2JZ3g="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/cantor-24.02.2.tar.xz",
+    "hash": "sha256-HNY0Thm1fsmMEDUGkg3kEqVUG2E3fEPctRYq45wrm/U="
   },
   "cervisia": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/cervisia-24.02.1.tar.xz",
-    "hash": "sha256-qwpJzKV21zH3IvEKYy9amAwhVx+9wP5T5fJg9XJKBz4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/cervisia-24.02.2.tar.xz",
+    "hash": "sha256-+pGS/G/ZtLqH/8mlzF8n3+7+1/OuZ6DYoyRYBdTw5Cs="
   },
   "colord-kde": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/colord-kde-24.02.1.tar.xz",
-    "hash": "sha256-ne0O+XzY/YIAtmd0z9nls7CohSOprptlJHpyK0mHI9A="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/colord-kde-24.02.2.tar.xz",
+    "hash": "sha256-wzuEuILOv3pzm/R7J4+QLhRFBHDTCpYJGJfH1Hh1eEA="
   },
   "dolphin": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/dolphin-24.02.1.tar.xz",
-    "hash": "sha256-WXuxLFOYS65zEM2l4G2+2DH9rhpucx9Vu8ZgtKWD2g4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/dolphin-24.02.2.tar.xz",
+    "hash": "sha256-UIREkNRRWcoWwdjZ9fBwHxGHcuSwmtrScINbZ7smpwE="
   },
   "dolphin-plugins": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/dolphin-plugins-24.02.1.tar.xz",
-    "hash": "sha256-aOZBKa+BqILPbcGEMp7WuW8yfHj4QLXjlEBtv+F8/qw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/dolphin-plugins-24.02.2.tar.xz",
+    "hash": "sha256-FLqewFaFXgEMzpzYyxTieIKHGZ8cyPUugKLUpLjFCw0="
   },
   "dragon": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/dragon-24.02.1.tar.xz",
-    "hash": "sha256-hRfiNTrDFxDIw12N4afzcMs9UPjyePf1kdDiTYxMDTg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/dragon-24.02.2.tar.xz",
+    "hash": "sha256-L/hf4lWnbUmCWSUSkDaQ4W5FLdzWSbbccCScBV9Nz5g="
   },
   "elisa": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/elisa-24.02.1.tar.xz",
-    "hash": "sha256-WYXRta6FCieaYDp9OulyTkqLabEdExeQFU4BbmknqA4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/elisa-24.02.2.tar.xz",
+    "hash": "sha256-CCGLpznqCs6Cu6aqmFdYFNz99p/rYVljmPXTN8KVbA8="
   },
   "eventviews": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/eventviews-24.02.1.tar.xz",
-    "hash": "sha256-Ge8W9VBcoUqBFt7Y6n0ysT5LYCxy/EY6XRrfYFOiUrY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/eventviews-24.02.2.tar.xz",
+    "hash": "sha256-UqyX3NJw4uDBOJtx+XRXSSMw1Mn15GpNi3ZbaV6PVe0="
   },
   "falkon": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/falkon-24.02.1.tar.xz",
-    "hash": "sha256-cmvSrXk7+pPvAUNKJW4tGrgQMbpj5istI4J95i8u+L0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/falkon-24.02.2.tar.xz",
+    "hash": "sha256-+GB4MNmXWfVTNq19jo87+d+WlstWMqTjCFhuiSDX6cs="
   },
   "ffmpegthumbs": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ffmpegthumbs-24.02.1.tar.xz",
-    "hash": "sha256-lPhtbpsyxQVPfGzlRJ18amKPCoP7ELU3354Ev5Maoog="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ffmpegthumbs-24.02.2.tar.xz",
+    "hash": "sha256-COjDKHOkm25liGrVAdMl+AUyQMZojAg1NIKDE/YMJFo="
   },
   "filelight": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/filelight-24.02.1.tar.xz",
-    "hash": "sha256-nTJvc7jslG1n2guEEoSEcZf20JnoUZaNcKuozhiHt3c="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/filelight-24.02.2.tar.xz",
+    "hash": "sha256-FVG9/ef8fkI0xmU9WmE4+e/vyei97aqqaDNUcoNou44="
   },
   "ghostwriter": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ghostwriter-24.02.1.tar.xz",
-    "hash": "sha256-HwOef0LGwgTwG+0UprNl+q/ML8RUMwJY/lImVASnknQ="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ghostwriter-24.02.2.tar.xz",
+    "hash": "sha256-Ct8M7/UWNvXnM5H+MzXiY8Whdw68hmLxSgNGpm26F04="
   },
   "granatier": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/granatier-24.02.1.tar.xz",
-    "hash": "sha256-r+bAlAVDh/xqy54mx0BlLLQDW40GbKaiKWI7hI/cv4Q="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/granatier-24.02.2.tar.xz",
+    "hash": "sha256-H2wCX633JVAYC8Nrv4E1sHJGaIkEv9ehxm+QCDLSvck="
   },
   "grantlee-editor": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/grantlee-editor-24.02.1.tar.xz",
-    "hash": "sha256-qx9KHDp1OBinXdicgfA9nkLkTVi3Gvh3YI1B13zDr6o="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/grantlee-editor-24.02.2.tar.xz",
+    "hash": "sha256-M1l1Rt2dTwnPDq1Oy04SaT9qg71CTjB2g+THRBL1JnA="
   },
   "grantleetheme": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/grantleetheme-24.02.1.tar.xz",
-    "hash": "sha256-oAIXmh6KXQZ+tICYFQTNLEzysvcnLGZstLOZeHYKS78="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/grantleetheme-24.02.2.tar.xz",
+    "hash": "sha256-VIlfJVFtJ0xL/PfPWRCdXNLj9602GZaKflSnOn61qVg="
   },
   "gwenview": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/gwenview-24.02.1.tar.xz",
-    "hash": "sha256-N2YUJq1VB6jrRENA7XyyiqGYPKUrNHH/8dKThe279sw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/gwenview-24.02.2.tar.xz",
+    "hash": "sha256-XxhgQHb+4pfnIutd1PRZafDgDGXs6TnnsSRj9X33i54="
   },
   "incidenceeditor": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/incidenceeditor-24.02.1.tar.xz",
-    "hash": "sha256-MFvxp4yUEEttrmmStC8XZUSbceeaye5mHhtPsXyFIKM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/incidenceeditor-24.02.2.tar.xz",
+    "hash": "sha256-L+I9hvAy5ZyXolpEPmzwpe3hNGnKGcbI1TMFjeZUJRc="
   },
   "isoimagewriter": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/isoimagewriter-24.02.1.tar.xz",
-    "hash": "sha256-X6e0h5LuPkm1fmdhmfLy0iRAfDQtS50/jrZskGaKlmE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/isoimagewriter-24.02.2.tar.xz",
+    "hash": "sha256-lsddWNFO9ySQ2tSrYrcr9aedXNkCns+noonfGoP4sYY="
   },
   "itinerary": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/itinerary-24.02.1.tar.xz",
-    "hash": "sha256-MxXLjWKkWsqBaiBNT/7oJuSJ9zyLY5hFgLfghY9VUYY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/itinerary-24.02.2.tar.xz",
+    "hash": "sha256-eCGsmCUwFlshH0633jIl3rdn7TVrxQUXbcNkDoVMOxw="
   },
   "juk": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/juk-24.02.1.tar.xz",
-    "hash": "sha256-xsBd/xGDy7bd1zBIIaHLeEvjehaqVizBbKBwu4N4m0U="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/juk-24.02.2.tar.xz",
+    "hash": "sha256-5XHlttb7Jz9Ar+8bX7KTO2OtuRcNEoI9EXWHn/sr+oM="
   },
   "k3b": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/k3b-24.02.1.tar.xz",
-    "hash": "sha256-DFIJiptgT1kK6w1gdIioF3y/zIwr/4TO4qEYhtgk+bY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/k3b-24.02.2.tar.xz",
+    "hash": "sha256-YEfZQZO6FlDOcfQQC7oHhgI0VfTGoS4UydVDBYpOjkU="
   },
   "kaccounts-integration": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kaccounts-integration-24.02.1.tar.xz",
-    "hash": "sha256-5WjxGpeRnG7dMR3pOyAbFTKAOT7Re45aGIbpq/DG5ow="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kaccounts-integration-24.02.2.tar.xz",
+    "hash": "sha256-1Qs9eQ2N9qJNGv52YPp8bmHDgVnXdzgPh7gTyR0G0wc="
   },
   "kaccounts-providers": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kaccounts-providers-24.02.1.tar.xz",
-    "hash": "sha256-LTJQuEMXQd05p6NfqQxnqY0SLBHeq8QKzG+sRonTJak="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kaccounts-providers-24.02.2.tar.xz",
+    "hash": "sha256-Ti9uioVPthqxnwD4/2dsj9l7GhK3BIXmZSt0r6N0nBg="
   },
   "kaddressbook": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kaddressbook-24.02.1.tar.xz",
-    "hash": "sha256-vQAs0OMNryyfN9vrIw2qVr93jEiYdjtdhe02Vq/9Rcc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kaddressbook-24.02.2.tar.xz",
+    "hash": "sha256-9ujQeY+Wf0XpJ5j2iUQ3XY0IjajDP2UAyk6mCxdH76M="
   },
   "kajongg": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kajongg-24.02.1.tar.xz",
-    "hash": "sha256-3drKhXpjfmZLYWKdlEKbBF2YwjreZQ2mEReln6vH4FE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kajongg-24.02.2.tar.xz",
+    "hash": "sha256-wj6afAznRNhX5W5GtoVqyDRF9yzLYYPo6Xfw5aOCRT8="
   },
   "kalarm": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kalarm-24.02.1.tar.xz",
-    "hash": "sha256-PilL0nOvkRrbeQwU7p5/mXimsTmlTXab6/DTba2VV9k="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kalarm-24.02.2.tar.xz",
+    "hash": "sha256-LrlXBP+sQ6O96UISGmOm/zp/We54P8YU6w0CFuV4b/4="
   },
   "kalgebra": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kalgebra-24.02.1.tar.xz",
-    "hash": "sha256-Kz/FUDjtTC+ORzKVaBmWJo+793OOboE2A4Qnqz+CAng="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kalgebra-24.02.2.tar.xz",
+    "hash": "sha256-oFvJWvkuRduH56GKkH5H9WsbiRtb2C9h7QFVs9rzTug="
   },
   "kalk": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kalk-24.02.1.tar.xz",
-    "hash": "sha256-1vhwf/coKYE+f2HD2AK63wWnqshaHaKPPUX9SASXvi4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kalk-24.02.2.tar.xz",
+    "hash": "sha256-i85J/DofNyYDlroZfA0K/6YMIFFiSwVbRzakfmcJUWM="
   },
   "kalzium": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kalzium-24.02.1.tar.xz",
-    "hash": "sha256-1MZNdbwbpJBt6RDTaxer6sWx48768qCmYAnQsIQchMg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kalzium-24.02.2.tar.xz",
+    "hash": "sha256-TGwX7FhH23FMEaJJ3kWZ1B3In8BLo4E53JCn/hX/Fqs="
   },
   "kamera": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kamera-24.02.1.tar.xz",
-    "hash": "sha256-y2suGBR+WwIw4yn+oxPCm7uramx5Prvq6uRjt7gvBJM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kamera-24.02.2.tar.xz",
+    "hash": "sha256-5ZTVkaqrHz3V+uzwJtd8DX7gJcNmL3xV50NGCM7bVNQ="
   },
   "kamoso": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kamoso-24.02.1.tar.xz",
-    "hash": "sha256-r38iH4VMzMr88L2oidf3I0+j3rZQTZzQoUAFJGGXeCk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kamoso-24.02.2.tar.xz",
+    "hash": "sha256-f9cuA5hFh9mKGGeWCtqcOkTnyWjFSG/HdWP507tdCWs="
   },
   "kanagram": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kanagram-24.02.1.tar.xz",
-    "hash": "sha256-iVIkBFT9j1ZVTNQEIjWQII3eXhpqPB/88Ej6XEI7jJo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kanagram-24.02.2.tar.xz",
+    "hash": "sha256-s5rbg39f78IFPRocFfpVHgVOohR6AVxGGRTZyvyeR1w="
   },
   "kapman": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kapman-24.02.1.tar.xz",
-    "hash": "sha256-NBv611cCzlXRrP+yg0JMr78chI9woLveHnBFCYF19Vo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kapman-24.02.2.tar.xz",
+    "hash": "sha256-3j0LLttJQQXXOdR9eCUkJSO36M2M5VGpUNQDfm4+eeo="
   },
   "kapptemplate": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kapptemplate-24.02.1.tar.xz",
-    "hash": "sha256-8pdu/O5XCAJqrcLTstBfsB6QVRmhnvr8L2NbLzvCYq4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kapptemplate-24.02.2.tar.xz",
+    "hash": "sha256-wrv56L0aZjynOEffETrZVQu4QT5MCBO1B54Bp0hjo1o="
   },
   "kasts": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kasts-24.02.1.tar.xz",
-    "hash": "sha256-AebMpVbJpnzPl+S1xlCxrDjfvVcFeY1Rx89tPz7gf0w="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kasts-24.02.2.tar.xz",
+    "hash": "sha256-Tcf2XvflSBY9V6vAfRSStu0ca2RQgKJoYUsEjIICCN8="
   },
   "kate": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kate-24.02.1.tar.xz",
-    "hash": "sha256-y3h/fUm7D5ubUL+A2DurGnE9MlqWvwnhBvY3IfwbAS0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kate-24.02.2.tar.xz",
+    "hash": "sha256-HdrLCTmDGkPiucGr2Nflr+/nZ4mEIzMmNlU3Dpn1Q00="
   },
   "katomic": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/katomic-24.02.1.tar.xz",
-    "hash": "sha256-7QFXSPHe/FYsjWoruEpok4F+0OGK8vFAlAD/4H8G+zs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/katomic-24.02.2.tar.xz",
+    "hash": "sha256-5tIIENASeTWZtY6FCzZKgl6R1nnOb28xwPX+4+ar2aA="
   },
   "kbackup": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kbackup-24.02.1.tar.xz",
-    "hash": "sha256-q1r+bz9oU3zPDILId9Kizm0na90a0wNRH3J/Cq8vS34="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kbackup-24.02.2.tar.xz",
+    "hash": "sha256-Amcdci6yJESCj3qZNqtEmdavnaS8ea6zOHAR3TclcVg="
   },
   "kblackbox": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kblackbox-24.02.1.tar.xz",
-    "hash": "sha256-nMiV7Sk18WJasbnRrrsZxNpmpBHULXkUXUk2ZdPqgOQ="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kblackbox-24.02.2.tar.xz",
+    "hash": "sha256-NTTlrAQPxCf/PlBF8ZkAPDpDq7H7YZfRnvsPblAgAPY="
   },
   "kblocks": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kblocks-24.02.1.tar.xz",
-    "hash": "sha256-StHJx7ALrk+fgwkwxFQThR6jTlPnHnnScvQB1UMfBh8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kblocks-24.02.2.tar.xz",
+    "hash": "sha256-rOcasBtCOHtrxJhypwg9c4pvHAhMeli1c6Tx8ZCKkGM="
   },
   "kbounce": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kbounce-24.02.1.tar.xz",
-    "hash": "sha256-1hxzgufyV2qsjBl8Wi9uPi/kNVULpRdiwebE+wTPflw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kbounce-24.02.2.tar.xz",
+    "hash": "sha256-g9AImDCZw2BwG7EJ3/myZAsQ3KQfhk6CD1nvX3C9qqY="
   },
   "kbreakout": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kbreakout-24.02.1.tar.xz",
-    "hash": "sha256-7hoh48B2wh8Jg2r55GY8yFOp3XXMad0pbd77OLPcn6o="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kbreakout-24.02.2.tar.xz",
+    "hash": "sha256-lEMvZ0NGPhx06rZr1+kaKDs1xHGi0DwOtLYZz95Y21M="
   },
   "kbruch": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kbruch-24.02.1.tar.xz",
-    "hash": "sha256-3MVi4m1fRdJWcNM+4LaU6ufv6rqwi4kzBzW3O9b9LAU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kbruch-24.02.2.tar.xz",
+    "hash": "sha256-mwAEF9T5epRyDKzaKrffIAAEv4LggtPUB83DvYeKd+I="
   },
   "kcachegrind": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kcachegrind-24.02.1.tar.xz",
-    "hash": "sha256-dN2VjEOSSbv7PmqPCCEHM4h6b5gVftMv5sJv1AL3EBU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kcachegrind-24.02.2.tar.xz",
+    "hash": "sha256-HEMJn6QqOJ6f+SYTtVDmYGqd6dW1ehCksIq1E+Wme5w="
   },
   "kcalc": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kcalc-24.02.1.tar.xz",
-    "hash": "sha256-38lcv0vVrLBgCs6tpL9hNrC+YfPOU9KzXsKxSnjhrK8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kcalc-24.02.2.tar.xz",
+    "hash": "sha256-nMLSdjX4WK+3vzD55+m+8sBN6mU+4zuqQxZdo+V5e50="
   },
   "kcalutils": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kcalutils-24.02.1.tar.xz",
-    "hash": "sha256-Q+2OQnGYKfDri64BexbADMLiEErmMcDBumuArKtT8bY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kcalutils-24.02.2.tar.xz",
+    "hash": "sha256-ikf/BefvIY4qSDbY2xYoDvYx6bkNm13/jFakzK6NHI0="
   },
   "kcharselect": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kcharselect-24.02.1.tar.xz",
-    "hash": "sha256-EfUYASrSHsT+9a7FV59b8pEqFaMEWoKfp2o54b6t5qE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kcharselect-24.02.2.tar.xz",
+    "hash": "sha256-oYVEVRN8xl9518cQJGwWv9DdVYMbocH88hRuiR4p/SU="
   },
   "kclock": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kclock-24.02.1.tar.xz",
-    "hash": "sha256-r4ILyI1KJrI19WCDp0cEkfto/RfDaC3zQi8Q0jYj6Fg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kclock-24.02.2.tar.xz",
+    "hash": "sha256-mumHKzXstbCLnonGe42zi+qYVJT0YC6Y7j90AQbtYFo="
   },
   "kcolorchooser": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kcolorchooser-24.02.1.tar.xz",
-    "hash": "sha256-/Bh1XVUd2YrALSrefK4XEqJsnuRZ49XvvDSkR0SUAs4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kcolorchooser-24.02.2.tar.xz",
+    "hash": "sha256-fx18e/2oDPYnpyvrYtCUTgUoc/SIBO6ZquwTORmABaw="
   },
   "kcron": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kcron-24.02.1.tar.xz",
-    "hash": "sha256-Cjx+APBWa98vPPbFdAHveMw8fipluaBV3akHVmCUdoM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kcron-24.02.2.tar.xz",
+    "hash": "sha256-LFWHivRYz8e4PM9ZLaVxc2kywn2CQSBDMZtx7rrXELU="
   },
   "kdebugsettings": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdebugsettings-24.02.1.tar.xz",
-    "hash": "sha256-CyRldtyEjsf8Ltj+Kk1KisZxRbZ79A/c/xXvEJwzzzo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdebugsettings-24.02.2.tar.xz",
+    "hash": "sha256-D/ClEQy1i4EhaMtit5+2bj60W9iLfKWBEdXjhk7PukA="
   },
   "kdeconnect-kde": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdeconnect-kde-24.02.1.tar.xz",
-    "hash": "sha256-tbmGuvBKUculcFEJrzQaGOz6FO7aZV7wgd5GzJDr7OI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdeconnect-kde-24.02.2.tar.xz",
+    "hash": "sha256-6ASRDSse1PX2zjaRXHnRHFW+bO4PJl2SNNlqLCcADa0="
   },
   "kde-dev-scripts": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kde-dev-scripts-24.02.1.tar.xz",
-    "hash": "sha256-/yL24UopmlijxngpHG32JGZ1t1H9dz57wPONX/hpY44="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kde-dev-scripts-24.02.2.tar.xz",
+    "hash": "sha256-/pmwM1oKsrD/CbMx/CQD+tpm5jfv1RV3rSGgpAEJGd8="
   },
   "kde-dev-utils": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kde-dev-utils-24.02.1.tar.xz",
-    "hash": "sha256-K+/xZoe65DtnczsXmz89DQiBCtnIwslq3fEKXeb136A="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kde-dev-utils-24.02.2.tar.xz",
+    "hash": "sha256-qmb4jZJxiqcpxkStN8aS4AWmMZBSihQgGRUhMpvb3U4="
   },
   "kdeedu-data": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdeedu-data-24.02.1.tar.xz",
-    "hash": "sha256-FHoiFRO4qzNGCLOPrcgzagFJJdo9urw6PDePgxd7EBU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdeedu-data-24.02.2.tar.xz",
+    "hash": "sha256-Vr/rOVLH2SF/q9iT/y/ae/JZq+FYMQWGxugSsIu4tJc="
   },
   "kdegraphics-mobipocket": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdegraphics-mobipocket-24.02.1.tar.xz",
-    "hash": "sha256-eT3rVPR8V8s8+aQXSFzfvTF4K+UZu94vWyIGqwLXE6g="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdegraphics-mobipocket-24.02.2.tar.xz",
+    "hash": "sha256-kRFWFg5KwC8wJhGN4/MAiWIw+OCmvXp/z1yVvEFsvSo="
   },
   "kdegraphics-thumbnailers": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdegraphics-thumbnailers-24.02.1.tar.xz",
-    "hash": "sha256-qaoCAV9OOBYU/+RHANJ5Q0TngI0kVLs80QSjNb6BiXE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdegraphics-thumbnailers-24.02.2.tar.xz",
+    "hash": "sha256-uWkSy0maO1FOF1X5ILeqJRsVQhL8PD+JS4SrQJ+68wo="
   },
   "kde-inotify-survey": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kde-inotify-survey-24.02.1.tar.xz",
-    "hash": "sha256-NHjq4xJnIm3K357flSvR+fQIESxDTzhTg6zK0c3yl3w="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kde-inotify-survey-24.02.2.tar.xz",
+    "hash": "sha256-UG1tomYst8jhNduD/xH+TlaW3SWKnTohK11K0oiTCKw="
   },
   "kdenetwork-filesharing": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdenetwork-filesharing-24.02.1.tar.xz",
-    "hash": "sha256-Hw6RdVS/bIup/CxwQ+TRH1wLvwMCU9VD8FjZ/45subc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdenetwork-filesharing-24.02.2.tar.xz",
+    "hash": "sha256-tRZnIIALHodp0heF6DreLmcw5y/6HMPZMN9kVyLAing="
   },
   "kdenlive": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdenlive-24.02.1.tar.xz",
-    "hash": "sha256-H3dHUlmoLFui2U7pdfSuqpsMDbElUEwT73GLFAhXUFY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdenlive-24.02.2.tar.xz",
+    "hash": "sha256-yEtiZK7y6nlOAwGCf0bAHhK22VkhWJN+GE3dxMOUbuM="
   },
   "kdepim-addons": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdepim-addons-24.02.1.tar.xz",
-    "hash": "sha256-svL5Zz5fbHvc8eoG3RGQvBDLot/55qyHqgubGRuhrcU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdepim-addons-24.02.2.tar.xz",
+    "hash": "sha256-sdnub88kEAlOH+R9j4OQ6SCVNwuoJhEZP8PmH1qwST8="
   },
   "kdepim-runtime": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdepim-runtime-24.02.1.tar.xz",
-    "hash": "sha256-ryPUPhEt6uXGLr+EEXlhRjFvfC5L0vIQGiRqGe3lhVg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdepim-runtime-24.02.2.tar.xz",
+    "hash": "sha256-7DAF62M58uU+iSaKXh1Mn3azM/CyrQyH54I9GEbtDcw="
   },
   "kdesdk-kio": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdesdk-kio-24.02.1.tar.xz",
-    "hash": "sha256-AskK0wqOfEd7FNgwF666l9kEGvZOVZu44oe4Eyw6JEU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdesdk-kio-24.02.2.tar.xz",
+    "hash": "sha256-IjdMcwnu4O3gJCDLzmoXC2lnoi1NdfIKqeO7GRyq230="
   },
   "kdesdk-thumbnailers": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdesdk-thumbnailers-24.02.1.tar.xz",
-    "hash": "sha256-k9f7/AoAWhStHwk6IPuWOT2erCVSMXbpqpdfxFg+K4M="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdesdk-thumbnailers-24.02.2.tar.xz",
+    "hash": "sha256-uifW3KPs6UAUBuoDH38I6Fs1/snWu0hRLLYz3tXEBvI="
   },
   "kdevelop": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdevelop-24.02.1.tar.xz",
-    "hash": "sha256-X8ySelNvTx5IrvvmMwNZPoix9mV+WItiQOlhazNKno8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdevelop-24.02.2.tar.xz",
+    "hash": "sha256-M54jhw7jKHNvatPxcTxyqEr00VZSm/KUfxEz+tekirc="
   },
   "kdev-php": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdev-php-24.02.1.tar.xz",
-    "hash": "sha256-FaJvtKymwgrB4AN3MWLbIlGnBzIuQ+8dZDQewsnT+Hs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdev-php-24.02.2.tar.xz",
+    "hash": "sha256-wDw2DGP/hoynhisDYsbGaTw2fAdpDMXlqJSrQ1BWKoo="
   },
   "kdev-python": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdev-python-24.02.1.tar.xz",
-    "hash": "sha256-ZisKfm1q/LGiDQNqe2Q7gXdEqW5Qz9bbLq8WxV4gUhk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdev-python-24.02.2.tar.xz",
+    "hash": "sha256-+Px+89s8x02OxzP+Tm1jifgYfIp/plhXcrWGox5KjWo="
   },
   "kdf": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdf-24.02.1.tar.xz",
-    "hash": "sha256-OGla8UQrbjUS3F7xekOun8zrLKsvOeLijqlypOwI2kg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdf-24.02.2.tar.xz",
+    "hash": "sha256-K1ouYilOXTewDdoZeuXiJYBrz6jdGXXY8VEG2XM2Odc="
   },
   "kdialog": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdialog-24.02.1.tar.xz",
-    "hash": "sha256-GwPx/cJcCT6sXAjSWAYYu7L/r47xADr7ROaw7J9+Bwg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdialog-24.02.2.tar.xz",
+    "hash": "sha256-8d+N1LY/tO+/nbgDJquvfi99uDEo/kfShMbffYEucdk="
   },
   "kdiamond": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kdiamond-24.02.1.tar.xz",
-    "hash": "sha256-6jCltKvGAn2CCUyYPy6tIh0sMsgctESARL6s+Rnc/gg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kdiamond-24.02.2.tar.xz",
+    "hash": "sha256-DnX4x2wnaGIzr7vR+DrwNDAj1ocLeI6g88H+QxnVyJw="
   },
   "keditbookmarks": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/keditbookmarks-24.02.1.tar.xz",
-    "hash": "sha256-dO9GQSe91o8og0MEbVcvOEsiyg/qAEROqEMbcg7bc+A="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/keditbookmarks-24.02.2.tar.xz",
+    "hash": "sha256-vHSvzQFkt6zf/fMj/bR7KDtbCWClZ8B6AQI4oMCMayY="
   },
   "keysmith": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/keysmith-24.02.1.tar.xz",
-    "hash": "sha256-9lSvHpgX1olv72bkVSbyimahE6kycsibnb0tF/jjHGo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/keysmith-24.02.2.tar.xz",
+    "hash": "sha256-8WwhWSYQRNG/+T0bkOoPUI40xhukkmi1ysD7VyTbByw="
   },
   "kfind": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kfind-24.02.1.tar.xz",
-    "hash": "sha256-MFXVeG+XsxqetpS0AdgxiSLm979QyJS7KohOWUj/gPQ="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kfind-24.02.2.tar.xz",
+    "hash": "sha256-rg8fsCnEtLhRIszXH0wdGGkp7xkFfdrztyyhsyUsmK0="
   },
   "kfourinline": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kfourinline-24.02.1.tar.xz",
-    "hash": "sha256-OGAJRLhtB5tOGKpAbBo3c+gPpk/RpmRSvMXJoFBLZps="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kfourinline-24.02.2.tar.xz",
+    "hash": "sha256-R+fYzLd/df4yjW1URKIY+cPb4T4dHc6EIql2U4nMwy0="
   },
   "kgeography": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kgeography-24.02.1.tar.xz",
-    "hash": "sha256-cMjrZ8cY6QHV0alE4iS8e3M2cOm9IrbRkLZ/JQJwd9s="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kgeography-24.02.2.tar.xz",
+    "hash": "sha256-DyQkUzTnW7j3uGzYlLVMsAuMtCGSgnPCy934KXWOdgo="
   },
   "kget": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kget-24.02.1.tar.xz",
-    "hash": "sha256-kavgEdXSwPZX1Z0gVw6apmEmDQ0fEIG/70nlPS0Cc7c="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kget-24.02.2.tar.xz",
+    "hash": "sha256-4PkVdtAFGUdwAyEjufHEDSUKvMBWQEGkRZzvtzsDK2Q="
   },
   "kgoldrunner": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kgoldrunner-24.02.1.tar.xz",
-    "hash": "sha256-ihBI+OwqJl6OV03acT4cidobbTHVW250igvG4jLodoM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kgoldrunner-24.02.2.tar.xz",
+    "hash": "sha256-0WcnGBJopqW9PuKy1TmDCePLOqwOi3AwB22mjlOzv3M="
   },
   "kgpg": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kgpg-24.02.1.tar.xz",
-    "hash": "sha256-lXOR7KtG0HC/vL6wwmiHRhrH2hFKziJqXWdxqJZDBGM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kgpg-24.02.2.tar.xz",
+    "hash": "sha256-2XraIbCCSMjkTZGLR9pg8o+kpbksYVJzPzE36aLvBes="
   },
   "khangman": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/khangman-24.02.1.tar.xz",
-    "hash": "sha256-CRb2ZXqcDII2SvUgiGXEoBFoDyNw5tmPb2hHyHvW5Gc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/khangman-24.02.2.tar.xz",
+    "hash": "sha256-unFszlJqp8KI7K/CEV1BszbSaI4ogYzFI1OSWiz8SCw="
   },
   "khealthcertificate": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/khealthcertificate-24.02.1.tar.xz",
-    "hash": "sha256-e6O8EK39YcwJNuQpMGMppymzSPVvFQd2il2dzp5eLAA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/khealthcertificate-24.02.2.tar.xz",
+    "hash": "sha256-llBNAYqMwXmB/f2R0lElXpUbTiR4GTlohHLefXRhxy0="
   },
   "khelpcenter": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/khelpcenter-24.02.1.tar.xz",
-    "hash": "sha256-+UZLX3+obVIFY0bfAni2lGEVEp19X/quyB/seE3W0RQ="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/khelpcenter-24.02.2.tar.xz",
+    "hash": "sha256-UghQIcT3Qr8oSQEDI7BD7RIaosyJ4H4sgV2JGoG95js="
   },
   "kidentitymanagement": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kidentitymanagement-24.02.1.tar.xz",
-    "hash": "sha256-yuz+AH6ypNSJE93/6KHvBQVqayWTAcgBKAUiU0DkZj0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kidentitymanagement-24.02.2.tar.xz",
+    "hash": "sha256-nfCo7FkpgVkAdwZ+e+ed8YiUr060HylFHpPqduQIH0E="
   },
   "kig": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kig-24.02.1.tar.xz",
-    "hash": "sha256-AAy4xamCvZc65VqfJ1AuMDWahT7BB88UGlaH3atn03k="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kig-24.02.2.tar.xz",
+    "hash": "sha256-k85+krHu+LZpUFskjEShugmLEXQ4xzNL/86bWm14tOs="
   },
   "kigo": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kigo-24.02.1.tar.xz",
-    "hash": "sha256-meIDrWp+qdOWt0OAw8l0f+feZAcSLbsWkNuwMw2vS54="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kigo-24.02.2.tar.xz",
+    "hash": "sha256-AMYnWg5IdTFMWnNfIPVChuInKP7U1k5k9U0KDFKwaBY="
   },
   "killbots": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/killbots-24.02.1.tar.xz",
-    "hash": "sha256-xHrFUsD0MMgxTPVw0LpsOh+LJFQydYgyr88+iuKN1to="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/killbots-24.02.2.tar.xz",
+    "hash": "sha256-idjc/On0HquWg13tJIdkdE/FM1fYvU9Rc2tQGaK6xIE="
   },
   "kimagemapeditor": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kimagemapeditor-24.02.1.tar.xz",
-    "hash": "sha256-z2Zp7Bu2w7vrj2eHg8keERYIDio1R8qV/nhhdjCKPEw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kimagemapeditor-24.02.2.tar.xz",
+    "hash": "sha256-RD7rYeNFiYE4L4ogHa9QKfnHlSXmB5njU/POoIVhMr8="
   },
   "kimap": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kimap-24.02.1.tar.xz",
-    "hash": "sha256-VUKXCdOYElGWvD6RWO32yfdVznFKs8/13zmPO7F5sO4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kimap-24.02.2.tar.xz",
+    "hash": "sha256-YX9P//jQEHirTd66ibXCxE8tw5b96W/uRv6XSbMjM2A="
   },
   "kio-admin": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kio-admin-24.02.1.tar.xz",
-    "hash": "sha256-xFObulemM3xn7Zg431fCShW4izNObBG1uiTz2WO9czI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kio-admin-24.02.2.tar.xz",
+    "hash": "sha256-JAgogPCAj7mzyPWDlHFZAtvHMWeveuLtl/Lk4oTKCbc="
   },
   "kio-extras": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kio-extras-24.02.1.tar.xz",
-    "hash": "sha256-f3CKF0U5k9t5ffeNU7aK81hsuhXg24iCjamsuDIKDMA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kio-extras-24.02.2.tar.xz",
+    "hash": "sha256-+nph9GHBYcNtX6RR0HDmllPyNAYgZI+BO0wry3mUQ8c="
   },
   "kio-extras-kf5": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kio-extras-kf5-24.02.1.tar.xz",
-    "hash": "sha256-9bpXRQKYgyksaHli0CVJUQ2rR3TocMaePWi4oy+z1gk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kio-extras-kf5-24.02.2.tar.xz",
+    "hash": "sha256-qar1jzuALINBu6HOuVBU+RUFnqRH9Z/8e5M8ynGxKsk="
   },
   "kio-gdrive": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kio-gdrive-24.02.1.tar.xz",
-    "hash": "sha256-rA4vcxKhr3QVMnSXddTsrifrr2HhUp7CXfao2k2zVd8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kio-gdrive-24.02.2.tar.xz",
+    "hash": "sha256-Ejv0tSgW3QasBFXBsKzS9oTK1zUHX/btIkTvHjqSOSM="
   },
   "kio-zeroconf": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kio-zeroconf-24.02.1.tar.xz",
-    "hash": "sha256-+WychaU9d7PnW4G9sIBKozcXbK4QOhZMFMi3Xdn4k1U="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kio-zeroconf-24.02.2.tar.xz",
+    "hash": "sha256-pnhOiXHJ7aRe4nGSj9wL/ytu4O0TTdtkiNqvHohqFE8="
   },
   "kipi-plugins": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kipi-plugins-24.02.1.tar.xz",
-    "hash": "sha256-PvquTKHj4eKhwuHhYzm4Fr+f/OBPVZRMFrEF+iZlIz0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kipi-plugins-24.02.2.tar.xz",
+    "hash": "sha256-VQShO1Jx8IQYoXui2HX95LI3PKlT/lZLMJFI0eyw6G0="
   },
   "kirigami-gallery": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kirigami-gallery-24.02.1.tar.xz",
-    "hash": "sha256-o6rFvbPcYvVFMJBVqzo3KNpJRbBQeMpQrdOecYPSqG0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kirigami-gallery-24.02.2.tar.xz",
+    "hash": "sha256-cLt1nGKg5NFpeBwzTM21ZPTN4Kv1EJEL3oITNc53it0="
   },
   "kiriki": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kiriki-24.02.1.tar.xz",
-    "hash": "sha256-N97jHeNyHseLr34xI4EV804yaJsDfan0Vuw37cFZ0hA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kiriki-24.02.2.tar.xz",
+    "hash": "sha256-BsMqgpi6ysmJHrkVURJC+A2r82aB3LEZNPdGKQUEdRc="
   },
   "kiten": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kiten-24.02.1.tar.xz",
-    "hash": "sha256-An2TME2mmk+hlGGiQ2u5WH3aYCa/TJFq3zvJeIcWoJk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kiten-24.02.2.tar.xz",
+    "hash": "sha256-7d6RgHGcmk1DR/upIclTnaRoiiBNwSRqtrt1zuYM67w="
   },
   "kitinerary": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kitinerary-24.02.1.tar.xz",
-    "hash": "sha256-kDEuG3nNpcTEDQ/yjMViy+0syWHD1m64Kh70uvhLsVg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kitinerary-24.02.2.tar.xz",
+    "hash": "sha256-cW5uYhdcorV3598YjJFDpS4plMdQBzR8DTisAQSeKvg="
   },
   "kjournald": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kjournald-24.02.1.tar.xz",
-    "hash": "sha256-FDF9ktlqZ0SNcq0M+psx/7dM0uPjFpnEu3XzR6wwYf4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kjournald-24.02.2.tar.xz",
+    "hash": "sha256-OTE9s1JLRha846is7JxUvIOg07woNxYKwHQw0E0Mims="
   },
   "kjumpingcube": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kjumpingcube-24.02.1.tar.xz",
-    "hash": "sha256-VAhjxtdL+eX3Ipa8XP4GA6CgMxKKAtStsdzORyU96wU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kjumpingcube-24.02.2.tar.xz",
+    "hash": "sha256-Jw0mjtZIvdgOok2odrl5v6ScMpqJ0jFZJYm+ufjqNw4="
   },
   "kldap": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kldap-24.02.1.tar.xz",
-    "hash": "sha256-YcToycp9CFxEPgxpJigLA9SfDlzjdKZKJDR9nVnsx6M="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kldap-24.02.2.tar.xz",
+    "hash": "sha256-lUb0yqIDQQCqtoyeiT/gMvk4IVFbvTGUMl3YQQ9OGFQ="
   },
   "kleopatra": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kleopatra-24.02.1.tar.xz",
-    "hash": "sha256-b4eQAX3mQyX/3vLij9VFC6ZRC1KXm0hrHbO/of3QK5U="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kleopatra-24.02.2.tar.xz",
+    "hash": "sha256-B3Q4U7sbZt3xwKP5hh/PIecWvF5Z2EB4wC/rnzXGQ8U="
   },
   "klettres": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/klettres-24.02.1.tar.xz",
-    "hash": "sha256-3gHuaRDld2u2vhwci6O6BMvIgjKiRTDXcZeMKdFaYLM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/klettres-24.02.2.tar.xz",
+    "hash": "sha256-eH/tX6Hv/uVs6WmPKL7aa4eWn42sTzN3j9Kbf0RIuwc="
   },
   "klickety": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/klickety-24.02.1.tar.xz",
-    "hash": "sha256-EREo5aYkjqCldP0pr1rKdL6QfGGjABFaOoIR2hbTk1w="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/klickety-24.02.2.tar.xz",
+    "hash": "sha256-S4zFnyrghWPvF6mdOzrtL/zs8zWD50PUJovHO1F6tlQ="
   },
   "klines": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/klines-24.02.1.tar.xz",
-    "hash": "sha256-4kEckyk0Zm3Z08EjurtwoLBbI4lPGH9zF0ItFoR4J0Q="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/klines-24.02.2.tar.xz",
+    "hash": "sha256-ZQMF9WAqfckjh5qEz0796OdD2CYRu6b8QC4iyc7LCOY="
   },
   "kmag": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmag-24.02.1.tar.xz",
-    "hash": "sha256-lMN4nlaxv05D2iXPS+oyL9Rn6tNJgZFRlXyAag6QSuA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmag-24.02.2.tar.xz",
+    "hash": "sha256-nDkcfm7gntmatD5enyt1WvWaoUShjojylTKFmfeC8CY="
   },
   "kmahjongg": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmahjongg-24.02.1.tar.xz",
-    "hash": "sha256-3FlxIZIXOMEn7yj0NBSldr0JBKQlKQL2OmUTbS0aKEE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmahjongg-24.02.2.tar.xz",
+    "hash": "sha256-T3RMz/vQVyu2FgdoiNcZmhxxBur3DZAGJEEAnPG6UhI="
   },
   "kmail": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmail-24.02.1.tar.xz",
-    "hash": "sha256-yK7BFWRCqrP8l/iHWposWCW9Eg0hcho3reIrqsyOBdE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmail-24.02.2.tar.xz",
+    "hash": "sha256-8AVx6obaeDqueB8fHTmO3yn1nSi0F1dQNVtzyhlyGCY="
   },
   "kmail-account-wizard": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmail-account-wizard-24.02.1.tar.xz",
-    "hash": "sha256-1OeMfxGjKjI85Hw/ew4+N7g8mAivTxxMar5rqZw+ekY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmail-account-wizard-24.02.2.tar.xz",
+    "hash": "sha256-va6vyIgl4UMX3NKQhZJcDW780fCYX0gSY1OSGWdH8fc="
   },
   "kmailtransport": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmailtransport-24.02.1.tar.xz",
-    "hash": "sha256-Vk1q7+VVk0nV3IUTzbVx7Sx0jCoN0YXfycdb3BMadLs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmailtransport-24.02.2.tar.xz",
+    "hash": "sha256-KK86kGlccotCWEt/rjSPlmxx+LaI+dN5L2RrVdZgxlw="
   },
   "kmbox": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmbox-24.02.1.tar.xz",
-    "hash": "sha256-fx5uxNwNi6Hmpb88ml0tMUvj0CfgrG74Pwf2elm+pNo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmbox-24.02.2.tar.xz",
+    "hash": "sha256-b6z07FzQU83j4tNHmepydqZI4QdjXg/AohtB6uZcPo8="
   },
   "kmime": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmime-24.02.1.tar.xz",
-    "hash": "sha256-OQSnGenx2F+ozgueZ2PZvu+BOsR3kGMCh8SiMTn6cdY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmime-24.02.2.tar.xz",
+    "hash": "sha256-Q03G9tI9Zog2t5TmNmCk2/PpOZ6E/OodGVd6SgnmSuI="
   },
   "kmines": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmines-24.02.1.tar.xz",
-    "hash": "sha256-KovvXvynhZhrfzwaFeNt/HT6mZKfZk3Ji773mmYyBGg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmines-24.02.2.tar.xz",
+    "hash": "sha256-jAR6f0ykQhknrER4Uyi4z7eyz21J0Te5wnrtUkF60Q8="
   },
   "kmix": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmix-24.02.1.tar.xz",
-    "hash": "sha256-8yN9RuxRgRIdnQ15qRjBKiPEaqUSEggOnzbtJV8jFj0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmix-24.02.2.tar.xz",
+    "hash": "sha256-g4QRJujC/1YDgoLd78IA97rHDrYHpWqXEVX0L1q4VrA="
   },
   "kmousetool": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmousetool-24.02.1.tar.xz",
-    "hash": "sha256-mFG4cm89fTqmok5Lt8ef2+pSF0hemVinpT5toPd4fJ0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmousetool-24.02.2.tar.xz",
+    "hash": "sha256-Wja9ym8V1IPVZ8sW0Fu6CF8w2pNvX/3ONR95vj5DnEM="
   },
   "kmouth": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmouth-24.02.1.tar.xz",
-    "hash": "sha256-cCYOYk3jij58Wfv1cAmRg2xrkW/1pU0c41w+2Zby03s="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmouth-24.02.2.tar.xz",
+    "hash": "sha256-XcgN2soQftHjqmTjn14cBDiIoWaCzW/U5PSRyu4MxJI="
   },
   "kmplot": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kmplot-24.02.1.tar.xz",
-    "hash": "sha256-GQkcr4PdUG2bJK6kSilOwbCdWa2RCh7U6V4oWC9hTdA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kmplot-24.02.2.tar.xz",
+    "hash": "sha256-HzUY0azJytTeSWEFYS7l5r0+gYWYTWDValfnRptQAoI="
   },
   "knavalbattle": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/knavalbattle-24.02.1.tar.xz",
-    "hash": "sha256-07heKsP8WAzOEuYtXWkkuKjZEW17o+ghYrnltcEW00g="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/knavalbattle-24.02.2.tar.xz",
+    "hash": "sha256-uXiV2i2mnzCaB+o9LM8Iu7CF2cocpTjDVG74AtJPh6E="
   },
   "knetwalk": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/knetwalk-24.02.1.tar.xz",
-    "hash": "sha256-WIQhgzMMzxOeIJLeVNo9biFXUB0496lWnb5HyZv/BbQ="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/knetwalk-24.02.2.tar.xz",
+    "hash": "sha256-omYtJDKvpqMD2cu8Xqh4U2HVU6ZRvJcyaktTnKydyzE="
   },
   "knights": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/knights-24.02.1.tar.xz",
-    "hash": "sha256-GEuoqesR0hU0ks4Z6nPmD9tR5G0ToTwPOxx9l8eqIGI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/knights-24.02.2.tar.xz",
+    "hash": "sha256-D+yDyGK0jYkP39vgTvM35ohV2NxSvouhuZ0wsW8Z4P4="
   },
   "knotes": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/knotes-24.02.1.tar.xz",
-    "hash": "sha256-k4ViH8ymUbSrO2Hb6XoY9AT+T4Pbc3A0IX9cdnjIZaY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/knotes-24.02.2.tar.xz",
+    "hash": "sha256-kKszYhuQD2kWxIZItIF85GhObcyOWxmVVUt+JXSInHM="
   },
   "koko": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/koko-24.02.1.tar.xz",
-    "hash": "sha256-n88NiQIYRwWnT5hQX/ekQhrQbk0VrPUrM+FZNwajSzo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/koko-24.02.2.tar.xz",
+    "hash": "sha256-c2SD1NLraPGvoK0YKr2JcwSVcJgjytn9cngE4fSFMVg="
   },
   "kolf": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kolf-24.02.1.tar.xz",
-    "hash": "sha256-QyWutEJOqz9bJMS6+1QcC9XFH83v36lMVPsOcoVTfkk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kolf-24.02.2.tar.xz",
+    "hash": "sha256-Cyy/w7UJwJMFwCGf8mZ6EM7uXozqIvUbwLqf/Tei61E="
   },
   "kollision": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kollision-24.02.1.tar.xz",
-    "hash": "sha256-pmpnATag0bz8jBwwz0pObDEwcDIxO7w14Ac3xlsbERM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kollision-24.02.2.tar.xz",
+    "hash": "sha256-pb3AEFqTAlfJgdiWv3cy0d+vnd3isEVsi0/l9Ccd7cg="
   },
   "kolourpaint": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kolourpaint-24.02.1.tar.xz",
-    "hash": "sha256-eFXnoqPx5n6ctlAXsPzK5f+KvJ3M/DaeUeiEdaVNsdk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kolourpaint-24.02.2.tar.xz",
+    "hash": "sha256-ABn+QdloID2+XGwBZoWOxTkV4tZ+AH7xZonkDtGbnoQ="
   },
   "kompare": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kompare-24.02.1.tar.xz",
-    "hash": "sha256-S+U1U7/uwi5LP6AyNiGOkgY+ZAzlxIcUEJmIjzlURyo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kompare-24.02.2.tar.xz",
+    "hash": "sha256-tASJrlYEAfUuUaMJpxqxEdVMTvJLMAbmsu8V1XXyh0E="
   },
   "kongress": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kongress-24.02.1.tar.xz",
-    "hash": "sha256-gKFwPMNBZL6clFdoJXEeVjqlakFqMMmLMwzWdj0k6lc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kongress-24.02.2.tar.xz",
+    "hash": "sha256-t21I/7esniEZCt/1Yvn5ejczDw/6n45FmVD2yFqP+Kw="
   },
   "konqueror": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/konqueror-24.02.1.tar.xz",
-    "hash": "sha256-FQXVzeZEgBtOWKw30VLgWLDXdTA5YsBPnFmuMYFE84U="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/konqueror-24.02.2.tar.xz",
+    "hash": "sha256-Bk8fBm391PdP8cnkdXXIukfeR91tX13RhWUA702bxjI="
   },
   "konquest": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/konquest-24.02.1.tar.xz",
-    "hash": "sha256-Ar0nrb4VPXVKte89amcXbgQdLQ7wvyF6yVwxJPTZQns="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/konquest-24.02.2.tar.xz",
+    "hash": "sha256-41BXstbTrQ08J0CZ3Nk3Qwq0KlsHoYUuF+4oANM67Cw="
   },
   "konsole": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/konsole-24.02.1.tar.xz",
-    "hash": "sha256-xaJ324Si9hdRJQuJx/mE39t3UNntX2ik+uIo2JrnLIU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/konsole-24.02.2.tar.xz",
+    "hash": "sha256-ZkZ+M2U2199cErytMaPvCiFQxANR2HZ3BHpA6uRA7i8="
   },
   "kontact": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kontact-24.02.1.tar.xz",
-    "hash": "sha256-9/0jDEBVJzawVUclfHN8Lk+4oI1uHuIRagt9WxN9As8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kontact-24.02.2.tar.xz",
+    "hash": "sha256-vXEUyrfFucXNNuxEgofIX2HZQySjNbIbO7+AJSDWH7Y="
   },
   "kontactinterface": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kontactinterface-24.02.1.tar.xz",
-    "hash": "sha256-0rUauivPPGTeBP70fTgJcFVLrt6dIwQ3dhXVf0Frblg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kontactinterface-24.02.2.tar.xz",
+    "hash": "sha256-cg4U708BtnCQvNfHQHYBa/GTdrC2woEK4eQ1Tk1la7E="
   },
   "kontrast": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kontrast-24.02.1.tar.xz",
-    "hash": "sha256-jUbETKPfPYNTQhSVNclH2nTQu+kOOx/6tm4/gYsn5Yw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kontrast-24.02.2.tar.xz",
+    "hash": "sha256-C2etCsl1TVS2ycSSoB2f2JMq3XGY7DIVY2mBCiWlutc="
   },
   "konversation": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/konversation-24.02.1.tar.xz",
-    "hash": "sha256-zGHf0FZoDD4GoNp03ALTGdEty60cLHg14AQV6TiGbA0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/konversation-24.02.2.tar.xz",
+    "hash": "sha256-uBZ7BUZbDEt8ukJjarW0DrzNmPCIkjRR00sDn/sV4kk="
   },
   "kopeninghours": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kopeninghours-24.02.1.tar.xz",
-    "hash": "sha256-3uYpi5DcWS4qo4qc15rIpSGMCcm/5pL33X6pSXrQBqs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kopeninghours-24.02.2.tar.xz",
+    "hash": "sha256-yty1NgsYW6Zt4hOBpvlpCmhItL/mC/QMKvvW1QlWcIQ="
   },
   "korganizer": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/korganizer-24.02.1.tar.xz",
-    "hash": "sha256-7mkERr791pON8F0yOSqIVMbvU6seiHoUfUb67mkOLzE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/korganizer-24.02.2.tar.xz",
+    "hash": "sha256-N0osNS9MZF9e/xXTsWWnpZZkdTe1lsHu5J3tITQXBBc="
   },
   "kosmindoormap": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kosmindoormap-24.02.1.tar.xz",
-    "hash": "sha256-ZYxKngOYxe2F+sIwIlag3DiwXyCMJkPCF2oV5kfu+BM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kosmindoormap-24.02.2.tar.xz",
+    "hash": "sha256-+TM+Woo8aWp+tMNH4lrqnaVQyVeoGfLA9cgkYcLnLhQ="
   },
   "kpat": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kpat-24.02.1.tar.xz",
-    "hash": "sha256-wgJzlfiX5fYzNfMlr8CiwUdke4wKltkwuYKH4RQmNSs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kpat-24.02.2.tar.xz",
+    "hash": "sha256-+5+beBUHIL/s1GT0RTHxAeOmzd/jcDLjkrco+CGkFVo="
   },
   "kpimtextedit": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kpimtextedit-24.02.1.tar.xz",
-    "hash": "sha256-bVVlBuUI6CXX6lxsDOyP4Lue8ozLXjRthW2+HsNhmpc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kpimtextedit-24.02.2.tar.xz",
+    "hash": "sha256-Vzi9SEiOrwOHCkZGsQkdYjjXQh4saTyFPCBeGpy+ECA="
   },
   "kpkpass": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kpkpass-24.02.1.tar.xz",
-    "hash": "sha256-g5w+snfXxDb2s4/cp3YPuIkH8tKQMJW+0ICONCGEJqM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kpkpass-24.02.2.tar.xz",
+    "hash": "sha256-V5dueLjQwPXipAHLm9RMmGNC9O2yWJeOa9om+eyjJa8="
   },
   "kpmcore": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kpmcore-24.02.1.tar.xz",
-    "hash": "sha256-hzWLOUD3Jbt+7XzyiVu7r0C7fKnOS/6DM1tkgLvqVXg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kpmcore-24.02.2.tar.xz",
+    "hash": "sha256-KdOQmtXLv6HlvXcsl75IJUB65uXv61pt3uWwBcmWVL8="
   },
   "kpublictransport": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kpublictransport-24.02.1.tar.xz",
-    "hash": "sha256-ybOXJqJKVaY6mqVe7/lUezbcvzVaIm28fs7GWJTjlww="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kpublictransport-24.02.2.tar.xz",
+    "hash": "sha256-fZOd/G7PrXX263sjS2Txq29S/A6Yi6XmZi6VxS4auyY="
   },
   "kqtquickcharts": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kqtquickcharts-24.02.1.tar.xz",
-    "hash": "sha256-URO0ju6e2dgW+/vorgMQnNG08AZ9GXtUyPwx6LMzweY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kqtquickcharts-24.02.2.tar.xz",
+    "hash": "sha256-L0mAg8QmnGk/+/wweS2hQ4PGMfm52Q+rRK7HaLdI1b8="
   },
   "krdc": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/krdc-24.02.1.tar.xz",
-    "hash": "sha256-LXpCIKSHMq8auNbHfbqe+vyLzyuX5Yk+qYfTa4xa3Hs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/krdc-24.02.2.tar.xz",
+    "hash": "sha256-qk6HhkgNzLWEBTL+jJGIiBQ32MpZqYz/z/ZoXlV5r/k="
   },
   "krecorder": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/krecorder-24.02.1.tar.xz",
-    "hash": "sha256-1paQ9V3Phg+vOgCxoUfE6oZfzvjiqJFScpja0KM2BE8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/krecorder-24.02.2.tar.xz",
+    "hash": "sha256-CYK209/BEP6UaOZ/0VfwNoOq5CQ7bqAddKGZQ8a8gtI="
   },
   "kreversi": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kreversi-24.02.1.tar.xz",
-    "hash": "sha256-O6ObAxrms3bqY6IQVgbN6YzMus4jrQVw50AtMMjFTAY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kreversi-24.02.2.tar.xz",
+    "hash": "sha256-0cBXOF7xZ9NcBQ0ARNCsxA2l2f5McwA0OG94+er4vLQ="
   },
   "krfb": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/krfb-24.02.1.tar.xz",
-    "hash": "sha256-gOcU6c7u7EWAo33CIA8VU2pN5rnIvmFqrL+qk5y16PE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/krfb-24.02.2.tar.xz",
+    "hash": "sha256-z5Lfx4Z+M2BHV6Wf+NKIaTu/X7sM8Lw3nD+XXQ5OmOQ="
   },
   "kross-interpreters": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kross-interpreters-24.02.1.tar.xz",
-    "hash": "sha256-a16KfyAcdQy16vEXiCQL/y/KnhRdDyD+IAnZAFWpxWM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kross-interpreters-24.02.2.tar.xz",
+    "hash": "sha256-9qWZL9xdSEw1jzrNMBiQAlOmgmPYm0wzvoU1SYFOhrs="
   },
   "kruler": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kruler-24.02.1.tar.xz",
-    "hash": "sha256-GlKxCBdiWi+Vq8tpNAhFwBfuh3IYXATmPYeoH57W0ZE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kruler-24.02.2.tar.xz",
+    "hash": "sha256-EkTdt+ynfPWpVQEdGRaYYBb/8SsJNn+6Bd6b6EGVRQQ="
   },
   "ksanecore": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ksanecore-24.02.1.tar.xz",
-    "hash": "sha256-tP5YVU/i49afOZ1nTZR4yg6N6GXd+70Y+OaWY4Ryc3M="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ksanecore-24.02.2.tar.xz",
+    "hash": "sha256-GGNiZAlbtW7mQYW0GJ1+oU8zpp45K4GLuw3m/8G7gXA="
   },
   "kshisen": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kshisen-24.02.1.tar.xz",
-    "hash": "sha256-G7qxIYVx9qjamvdJAGka/VJNF+Z4c5MjzdivU8Tcb7E="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kshisen-24.02.2.tar.xz",
+    "hash": "sha256-/BPyAKjRTfLOWX80E82Ar6NHSvArARE9+jB0hnjRHFQ="
   },
   "ksirk": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ksirk-24.02.1.tar.xz",
-    "hash": "sha256-q1JPsk3JOtlCQhaa8XWq2ryIK+J//vLN7K/2POVGbGs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ksirk-24.02.2.tar.xz",
+    "hash": "sha256-n78THAngDNSQJV93n2a3HzEtMxpaBrk9Jj6x2J53EcI="
   },
   "ksmtp": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ksmtp-24.02.1.tar.xz",
-    "hash": "sha256-+l9FJKNt+DK7FMQxYTMnUb9XaFCUpON+N45pQz+yA00="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ksmtp-24.02.2.tar.xz",
+    "hash": "sha256-tSLg5bcoh3fM71oVUCdueC+k1N4NTf1w86zOS3d4NZg="
   },
   "ksnakeduel": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ksnakeduel-24.02.1.tar.xz",
-    "hash": "sha256-1pZ0QcR04K/gSwSYJYwBs9lzWJ801wng2ZEp3qHAQfU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ksnakeduel-24.02.2.tar.xz",
+    "hash": "sha256-QLUOa6+y1mK2tMXGzshFDylv+7FR/9rzcSAgLyxZ0wE="
   },
   "kspaceduel": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kspaceduel-24.02.1.tar.xz",
-    "hash": "sha256-h0vf8JMJrn/naMulfWohKtP5SCvOGsIkL+/q3eh9cTw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kspaceduel-24.02.2.tar.xz",
+    "hash": "sha256-gNE4hXZinXdyYsq5Tjb0UX1B811FJgO5H6CM1oEqU64="
   },
   "ksquares": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ksquares-24.02.1.tar.xz",
-    "hash": "sha256-DboQSbWFohEq3BEkKDYBKXDGxSH5cILkNnrzP7rbOLo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ksquares-24.02.2.tar.xz",
+    "hash": "sha256-nkiDNK/O4vyWvobTmk3a1rao62o9oVRXuSB4AzP0MKo="
   },
   "ksudoku": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ksudoku-24.02.1.tar.xz",
-    "hash": "sha256-k6COovaysFQOE14ttgj4hupg48uochBJuxqm6BXrit0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ksudoku-24.02.2.tar.xz",
+    "hash": "sha256-ICmFLSFllJ80uRKQJwRhPF1sRxxARhtkKMra9SmMSBY="
   },
   "ksystemlog": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ksystemlog-24.02.1.tar.xz",
-    "hash": "sha256-gKmG+fARxOPqxfJ1KMnDix4UgmiHuEAJJREtqbQIgE4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ksystemlog-24.02.2.tar.xz",
+    "hash": "sha256-25Y7u7lMO3tfgTpTLwceyBoTvyt1ocfO1//yNB7rSjM="
   },
   "kteatime": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kteatime-24.02.1.tar.xz",
-    "hash": "sha256-Auys6i81t4EmW9ckGd3+5ZY8dNyUkP0KNeno7w6W0+4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kteatime-24.02.2.tar.xz",
+    "hash": "sha256-3L1mdrKqCyElAot9Y52nLNDi/BY9r6D3Hu+Nj/+lfZI="
   },
   "ktimer": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ktimer-24.02.1.tar.xz",
-    "hash": "sha256-WXT188ue5fVlIfKnyGsMK90zKtye4Fikxn2+s/cB+P0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ktimer-24.02.2.tar.xz",
+    "hash": "sha256-SHKwC7OiqM1q9Gf2M0zP0Ely0AexRFmB8PsU162sCUI="
   },
   "ktnef": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ktnef-24.02.1.tar.xz",
-    "hash": "sha256-DRR9P0qb1OzGBImvdMFCZeAFKQRz8szfWGrTiXgl7JU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ktnef-24.02.2.tar.xz",
+    "hash": "sha256-dMjcjurpj4/cZSlOPXdQKfGu9Kwm9AbIghk4F/bPnR4="
   },
   "ktorrent": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ktorrent-24.02.1.tar.xz",
-    "hash": "sha256-KboMnk3IWJefLFjEPTkD+kQVrNWrhYh1ZsfBN5G2oG4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ktorrent-24.02.2.tar.xz",
+    "hash": "sha256-AYPGM+NQOG8xwudjsJSM2GYskQLIcX3S3mxPoAQs39k="
   },
   "ktouch": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ktouch-24.02.1.tar.xz",
-    "hash": "sha256-X8rmkJGEKe2e+ctYjcGbQ7r5v/d9O82F3D9waNkPc3w="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ktouch-24.02.2.tar.xz",
+    "hash": "sha256-U5EPl243QbL8++IzpVgvasyuUODiXxLV/bf+UxFNSOo="
   },
   "ktrip": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ktrip-24.02.1.tar.xz",
-    "hash": "sha256-MXS0gGHzR+1DLr7rBinuWBaYc58abCCSB6iluA1VMYE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ktrip-24.02.2.tar.xz",
+    "hash": "sha256-CLaGGqmooL9GEWDoH+Udxp1kjZLldbzYLtyp3sS+sR4="
   },
   "ktuberling": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/ktuberling-24.02.1.tar.xz",
-    "hash": "sha256-biTtI8oPNVLGiEaTD44pmRqfQiaJAP90JOK7gF3tRns="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/ktuberling-24.02.2.tar.xz",
+    "hash": "sha256-6/cMKUOL5DEHM6nUwqgi0uWFvQGlkkyZ3CgSlWUASzU="
   },
   "kturtle": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kturtle-24.02.1.tar.xz",
-    "hash": "sha256-cDPogNA5A8PAZguFLXgy6olrFHzpC0Hxw32kgqNJqQA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kturtle-24.02.2.tar.xz",
+    "hash": "sha256-BPE208EdQqWdNW4YU5KOwob42BHlJMwk2ae3E7j05hs="
   },
   "kubrick": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kubrick-24.02.1.tar.xz",
-    "hash": "sha256-A1yfttn8Uo9JKOZDKxNcrPcY375HAfANXmNUCpbFaAs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kubrick-24.02.2.tar.xz",
+    "hash": "sha256-x4BOcm7XD1V1/S8QeFv7WbfcZ8xe4dImHrKKWxS/PrE="
   },
   "kwalletmanager": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kwalletmanager-24.02.1.tar.xz",
-    "hash": "sha256-1D4p9VpZxxDZ/3DX+Esz3qzUzFZJxV9Gs2INTZIntGI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kwalletmanager-24.02.2.tar.xz",
+    "hash": "sha256-C2M4X59JMq8AQX6x6yhUje3MBQaREwS/LjRHmsD5t3M="
   },
   "kwave": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kwave-24.02.1.tar.xz",
-    "hash": "sha256-CdAEU+84sujvS5mFpk7SV2RizipPvswPG8l9xoRTCXs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kwave-24.02.2.tar.xz",
+    "hash": "sha256-qi0Qdp26bNQ/qqme+binWIF3IifIaNfeUpM8zZHNkmw="
   },
   "kweather": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kweather-24.02.1.tar.xz",
-    "hash": "sha256-wjg5+Qc0Ud3rwvL9KzPFDBIrTV8ybUynUnBSEZ2kywY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kweather-24.02.2.tar.xz",
+    "hash": "sha256-iXvKld4QqZ0yxt+xyZIioK38FIR29Owr6C7GKCjcamI="
   },
   "kwordquiz": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/kwordquiz-24.02.1.tar.xz",
-    "hash": "sha256-dCpCCaCCBX5pSRwN6PR8h1v4F4prvAxEN/0KtRzmU8M="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/kwordquiz-24.02.2.tar.xz",
+    "hash": "sha256-4yGwfUHHdHXCmZRA+MxLKRv0Xuu0O4iGqpRCReGuuuc="
   },
   "libgravatar": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libgravatar-24.02.1.tar.xz",
-    "hash": "sha256-kfkI3LSBn11JNT/g3Yo7KaN5NyLt2CMFNLN/ym66sVA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libgravatar-24.02.2.tar.xz",
+    "hash": "sha256-t99V8Jsy3P5mjlSccay6d81iCXoYcTsxEr79b0o+UoU="
   },
   "libkcddb": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkcddb-24.02.1.tar.xz",
-    "hash": "sha256-+yjDcJh0nXjoBZnYCv/ruboS/7UoYJRGB15ffuj0Kh0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkcddb-24.02.2.tar.xz",
+    "hash": "sha256-YIqiEBvev4rhwjz5nPyYLE5jSUWpGzv0SZD4bgGp1cE="
   },
   "libkcompactdisc": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkcompactdisc-24.02.1.tar.xz",
-    "hash": "sha256-bwNpNFm8VvecUp8Fy/1wRSdbb87jPdosQhYwwgHNziI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkcompactdisc-24.02.2.tar.xz",
+    "hash": "sha256-2jbvjdAukuQUMHu9NCpQLQ6StaqSrh4ktsXT8eGvC24="
   },
   "libkdcraw": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkdcraw-24.02.1.tar.xz",
-    "hash": "sha256-rUHiD1jCJnHWa96+G+kzYOhIInaJGGdDibhYcri1zCA="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkdcraw-24.02.2.tar.xz",
+    "hash": "sha256-fGtMsK+RCFf9vtTb+6b8xa7iaqMZk+6rMhm3NDwxktY="
   },
   "libkdegames": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkdegames-24.02.1.tar.xz",
-    "hash": "sha256-SUAXsGWJkoD1LpDwHH9QruqGNTKDa4SPpF93GiwUcQU="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkdegames-24.02.2.tar.xz",
+    "hash": "sha256-PGv3c2cORQm7xxYEvwoUkQ0HZDQyahV1bTxHsfWufhk="
   },
   "libkdepim": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkdepim-24.02.1.tar.xz",
-    "hash": "sha256-8wRBYTXytxVt6No2SQ1DfJjrPDCwOYXFj/GCTLUgKow="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkdepim-24.02.2.tar.xz",
+    "hash": "sha256-OwgxUW3mLSVIjpJ/x9mHSvsVke+99B3smQMJ9iJmdMA="
   },
   "libkeduvocdocument": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkeduvocdocument-24.02.1.tar.xz",
-    "hash": "sha256-fsFeQxE/oP+nTo6xWDfbqjPJttkztBOibVpqMGYuGKw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkeduvocdocument-24.02.2.tar.xz",
+    "hash": "sha256-yvv+gkMvpOIGkE5+4AikFYwrp1UTTeO0X6JKQ+s8XO4="
   },
   "libkexiv2": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkexiv2-24.02.1.tar.xz",
-    "hash": "sha256-PNYSJSdLCWhpGr0p5nbj0xtvD0iAJOWnhSXcObpn9ug="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkexiv2-24.02.2.tar.xz",
+    "hash": "sha256-rmAib0iTlLI5FApCZqLbRwoLzBptd7A8ca4ePu/zCNw="
   },
   "libkgapi": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkgapi-24.02.1.tar.xz",
-    "hash": "sha256-cuuDG4EnEixzfILcnsSnMVgRKh22X9Oy26UpjfTSM5U="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkgapi-24.02.2.tar.xz",
+    "hash": "sha256-xDyEBSWDgMs8ZrkehZptmhlJUl0r5zHXA+ofS37DZ8A="
   },
   "libkipi": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkipi-24.02.1.tar.xz",
-    "hash": "sha256-9uaBdnTZTCrsK36ZGOedBNFWOYVK6YTNbRKr/bQ8wsI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkipi-24.02.2.tar.xz",
+    "hash": "sha256-my4K50w3dmNhOUboLdTmM3T75SMYYyFm2hC19l1jAlw="
   },
   "libkleo": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkleo-24.02.1.tar.xz",
-    "hash": "sha256-CHHvP64rRPj+AS7cVZAv14SZcyg6/jf44IO/03Av+b0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkleo-24.02.2.tar.xz",
+    "hash": "sha256-L+OtUASsm0JhYTjvL8DSGyYoIZLQ14YY4SsGpfpz9Jk="
   },
   "libkmahjongg": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkmahjongg-24.02.1.tar.xz",
-    "hash": "sha256-FXSmx1kKoobanQlDoxQqKv7GaaTjiDme0zQCQVsks78="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkmahjongg-24.02.2.tar.xz",
+    "hash": "sha256-IiTZXCofO+Zw8FF/3tD14lxQ5JgnTN/gFz09GyXAU3w="
   },
   "libkomparediff2": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libkomparediff2-24.02.1.tar.xz",
-    "hash": "sha256-Y0BqQpdEvAQx8rTijg1hS/LJJef7oPpmQC0C+DX30G4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libkomparediff2-24.02.2.tar.xz",
+    "hash": "sha256-32BysV5/yG+oYpg4L7MyrNRi7MWnKuQF/vdNXR3SctE="
   },
   "libksane": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libksane-24.02.1.tar.xz",
-    "hash": "sha256-+AbdOzlqjjWDMgqKj6CBrBca43fAs3SP0eDorNrnG/8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libksane-24.02.2.tar.xz",
+    "hash": "sha256-L/x/3blT7w+cOOssK/QC3g+VIMNULTJH97XBnuGF2P8="
   },
   "libksieve": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libksieve-24.02.1.tar.xz",
-    "hash": "sha256-Yo/c+kZlhq/9/TZXmUqG90WhHNTQpjCSObxPbftRIDg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libksieve-24.02.2.tar.xz",
+    "hash": "sha256-nQQKSswYDcBAsrM/wOFL3baPfvwq17PVVNyQM+xDZfI="
   },
   "libktorrent": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/libktorrent-24.02.1.tar.xz",
-    "hash": "sha256-kOR7wekWgRl6EI/pe9Q4W0E9mn+t9+DSBIzSyKdVvO4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/libktorrent-24.02.2.tar.xz",
+    "hash": "sha256-ARbg//48qtlPryDnQMqyWBRSFYwuhCoEFMrMZaNOeGE="
   },
   "lokalize": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/lokalize-24.02.1.tar.xz",
-    "hash": "sha256-GknHgvarWlXRr78shAJpQ0PqtbzNURUbmY/+TAlSHB0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/lokalize-24.02.2.tar.xz",
+    "hash": "sha256-4ZuoMUr2N7yVc/mkAKqpLxNtvffzaH8bkg4NynHpr3w="
   },
   "lskat": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/lskat-24.02.1.tar.xz",
-    "hash": "sha256-osjLg3VOaHFDSpJI/5DsZmgcxn0tvUIveU9in16twvI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/lskat-24.02.2.tar.xz",
+    "hash": "sha256-U/lZYMyrYyV5NGX/09W/kOnnT4xoqp77manwFci2J10="
   },
   "mailcommon": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/mailcommon-24.02.1.tar.xz",
-    "hash": "sha256-zTVEKUMxTeLbh3MVPFOIGZMSuBBGjMYEoGDTKGUK9sM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/mailcommon-24.02.2.tar.xz",
+    "hash": "sha256-0uZCGDg3a1PX/KmqBmMIOzuU8CCesvxWAa1hK+5CFgQ="
   },
   "mailimporter": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/mailimporter-24.02.1.tar.xz",
-    "hash": "sha256-Oa0Ex/B5mBN8pg8QFJ6u4pJTfzU/XIrBoi/LxO5cwWc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/mailimporter-24.02.2.tar.xz",
+    "hash": "sha256-YoC+/T5OZqjpgupixj4tGZ35ppjbPw3s5SaYp7lbEAY="
   },
   "marble": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/marble-24.02.1.tar.xz",
-    "hash": "sha256-3KeieLNTzgzp/fpkGgNiu3ExBVvrcfr+qvWsaQJrDZ0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/marble-24.02.2.tar.xz",
+    "hash": "sha256-idduAigL9MkhVVo4Pdl0n5GlNvX4MSTtdytvN59mS+U="
   },
   "markdownpart": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/markdownpart-24.02.1.tar.xz",
-    "hash": "sha256-+2lCSm0b9+nBlEZ66daHemCvrEhVifEkicinNcGHpBE="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/markdownpart-24.02.2.tar.xz",
+    "hash": "sha256-QcVLhmJ3V42hxecYENrnUPU2N2QKFL9Rhf9tPK7T/vQ="
   },
   "mbox-importer": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/mbox-importer-24.02.1.tar.xz",
-    "hash": "sha256-nTu+1QIMciFcuRsKmMyAswtpTWoY/XPAApiUIQmVPFo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/mbox-importer-24.02.2.tar.xz",
+    "hash": "sha256-aJHBZE5pNTYVLdfVpM5fdicX/Ab6xWNtfnfJzJHg12c="
   },
   "merkuro": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/merkuro-24.02.1.tar.xz",
-    "hash": "sha256-X2Qcg2vJPmpEvfO/G+3Mt6I09dGHNo+VSyNBr3iE1xc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/merkuro-24.02.2.tar.xz",
+    "hash": "sha256-Gvy3GGOYog7LJqg+ADOFKn+CwQwdIaykO5KE8VLdBjs="
   },
   "messagelib": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/messagelib-24.02.1.tar.xz",
-    "hash": "sha256-sBOBrv6jI+yTr164RbqLv9wDFMjQ7/5MsCNcTcqaFN4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/messagelib-24.02.2.tar.xz",
+    "hash": "sha256-Ix2aemO2AYO9V60dNyWQ9FZUlniopKqx+Oaw2ET+7F0="
   },
   "mimetreeparser": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/mimetreeparser-24.02.1.tar.xz",
-    "hash": "sha256-vD9I5tjZdWB7c6G0XTEMy1hOjo9UcL1r9EOh+RTSoRs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/mimetreeparser-24.02.2.tar.xz",
+    "hash": "sha256-G6iK0f9ESjLC6RlcHJF8HVFqi54DLkm36BAhs4QdPe0="
   },
   "minuet": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/minuet-24.02.1.tar.xz",
-    "hash": "sha256-pv4C4K9SM3TV8r5fAZq2IqvzmaJ5h4vZedi/Ssz/DlI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/minuet-24.02.2.tar.xz",
+    "hash": "sha256-RSpwnDV9Ro8kIRbuNfFiZqy3+mYKPWT3ThadoVjEFHU="
   },
   "neochat": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/neochat-24.02.1.tar.xz",
-    "hash": "sha256-Bbbfokt5G7Ip8QinOCcHZIiKtYVBPf7Y8/o9MS+3/cY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/neochat-24.02.2.tar.xz",
+    "hash": "sha256-ttzo+WvhK6sNdiaU9QxJzqGNYVXh5GVJ8L+XBG8EdB4="
   },
   "okular": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/okular-24.02.1.tar.xz",
-    "hash": "sha256-1T+wcRxRAUx7fz0GDRxlR8LXuOYUmiC73mwWNL9Dctk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/okular-24.02.2.tar.xz",
+    "hash": "sha256-Qx02tyvsOVS1P2Jf+FB0Dp3/AIewO8e3FpnKRq7vBN4="
   },
   "palapeli": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/palapeli-24.02.1.tar.xz",
-    "hash": "sha256-3UKuXaAuUbElb6HnTDp+76MSzJ8l/MMD8cjL+FGzjhc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/palapeli-24.02.2.tar.xz",
+    "hash": "sha256-0sV6qCFP5+SzuuO60XEup+101nUV4QqjvuEJwB90fK0="
   },
   "parley": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/parley-24.02.1.tar.xz",
-    "hash": "sha256-jX68fWi2rO8cyqxGY39RikqoxZBf9ms0acx6Snis0VQ="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/parley-24.02.2.tar.xz",
+    "hash": "sha256-uU48aURlDTvxGKv7xAK2u+VQGYfn+EHCdH6hEwkRGHo="
   },
   "partitionmanager": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/partitionmanager-24.02.1.tar.xz",
-    "hash": "sha256-i+xmaohjz4LNS4eex3A3OMQzGN2DpOHonLhYRngNGUY="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/partitionmanager-24.02.2.tar.xz",
+    "hash": "sha256-AstyAIyv3JnbV0LaoN9jS26gfc7z+kQKJD5WKKk49Qk="
   },
   "picmi": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/picmi-24.02.1.tar.xz",
-    "hash": "sha256-0Sy+KmqgkdlMTV5lMCqfrNQMKtqcVaGPhGOMzagDgAs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/picmi-24.02.2.tar.xz",
+    "hash": "sha256-z25UFcpfH2VV0jHY8EFja34KdI1MFDqbbrvFc5E9IY0="
   },
   "pimcommon": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/pimcommon-24.02.1.tar.xz",
-    "hash": "sha256-5YSgPUp3dU8Qrz0Ds6fH6qtiUKI3czPVMX2nO7xeH0Q="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/pimcommon-24.02.2.tar.xz",
+    "hash": "sha256-RkDcJ2+aDmsMJeJYFdc7fMZYyNc91QTSlelqWDon13A="
   },
   "pim-data-exporter": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/pim-data-exporter-24.02.1.tar.xz",
-    "hash": "sha256-P6wJVBJmkAho9jS+CBV0nCpnXBGqh85YACMRS+VSakk="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/pim-data-exporter-24.02.2.tar.xz",
+    "hash": "sha256-DhLQWrX6E+idNjSbDXrtHH0yX/dLSAsCXtoHa5CmEH8="
   },
   "pim-sieve-editor": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/pim-sieve-editor-24.02.1.tar.xz",
-    "hash": "sha256-F8dHU0uA8x8RcGQcTJ173/zGX6omvdOMucAm5UwwTFs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/pim-sieve-editor-24.02.2.tar.xz",
+    "hash": "sha256-yDZmqQPZKsTDdxzlWV+LuiHJwYVcuD9z6urg2Hu2fHg="
   },
   "plasmatube": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/plasmatube-24.02.1.tar.xz",
-    "hash": "sha256-kIpZ07T2OFKvcGr/ry020oATh+GuN+uxoHETgRzZXWo="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/plasmatube-24.02.2.tar.xz",
+    "hash": "sha256-r4qz1B0pArFnBcgrj0yidM8UVSDe7HR/i/tG5rTDOds="
   },
   "poxml": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/poxml-24.02.1.tar.xz",
-    "hash": "sha256-MB/yYDCoKK5+z5iCZGIczsaNJnZF+Fqwxv11JbGnxos="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/poxml-24.02.2.tar.xz",
+    "hash": "sha256-pWtION445HNcSuKDMWnL88lH8JPD6MDWISR/X5NqymU="
   },
   "qmlkonsole": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/qmlkonsole-24.02.1.tar.xz",
-    "hash": "sha256-DgQ2Q6vl1b9AHJMukXSC+swmRGxWb2hWU8YPc82aR08="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/qmlkonsole-24.02.2.tar.xz",
+    "hash": "sha256-zoGK52uRhbhEilGF8zCddqhejaWs9O6Iw8nEC4E8kVE="
   },
   "rocs": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/rocs-24.02.1.tar.xz",
-    "hash": "sha256-1dRiwZTIilT4ele9AphPRw8PxhSfRsmBNda9BUhKcJ0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/rocs-24.02.2.tar.xz",
+    "hash": "sha256-RKFjEH3xK1J0P0axjz4ZD+YqmwSQLTxEHdIDJzbEgws="
   },
   "signon-kwallet-extension": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/signon-kwallet-extension-24.02.1.tar.xz",
-    "hash": "sha256-R8z5F48N6xRE6rzUV3S1nbqV77ysFljvtHJnZNdc9FI="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/signon-kwallet-extension-24.02.2.tar.xz",
+    "hash": "sha256-NzJ14jnYh9WO1FAsLsBBexyhR1fpe8aCfcBjMyKpduI="
   },
   "skanlite": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/skanlite-24.02.1.tar.xz",
-    "hash": "sha256-SysKRweI2FR1r0ernVc326xsweXdLSX+lvDyZd+pcC4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/skanlite-24.02.2.tar.xz",
+    "hash": "sha256-2avHcXkLtVWM195kU5d3QNaNnTCeTulj0qHCon/XY8A="
   },
   "skanpage": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/skanpage-24.02.1.tar.xz",
-    "hash": "sha256-MXU9s95pG/rEvp5wD9VHJvzj2vRfvPJhbkdhF5/cZaM="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/skanpage-24.02.2.tar.xz",
+    "hash": "sha256-pzYf6EbnjdrAKQ2Va08AM3S7s1SURtRahKYvP2pXMdo="
   },
   "spectacle": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/spectacle-24.02.1.tar.xz",
-    "hash": "sha256-V0a8AquJ3la6Pzu0rfcs2H0IsPtgA3CBSBtDp6Nk6lc="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/spectacle-24.02.2.tar.xz",
+    "hash": "sha256-QRj3NV6wWE3rKojORuznthaIA5fwqyuBDL5MvCF0IVI="
   },
   "step": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/step-24.02.1.tar.xz",
-    "hash": "sha256-kO2A/daKqhAoEjxx+N8N5oIcFUzLoljh9XKAcAlVtR0="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/step-24.02.2.tar.xz",
+    "hash": "sha256-KAp/Edl34wd4bnDDSiSdkHS7rdNpVlt1ZgbszPsMHsw="
   },
   "svgpart": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/svgpart-24.02.1.tar.xz",
-    "hash": "sha256-o2dq9PfsqOqy6MAtKz9XvoMVOW0eLSo+32WBrwktOM4="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/svgpart-24.02.2.tar.xz",
+    "hash": "sha256-T4YPwUGYT++ySdgFB8g65nFxmCyFJUXzOV8/lyMQLig="
   },
   "sweeper": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/sweeper-24.02.1.tar.xz",
-    "hash": "sha256-9zvu1+R6FlLN9aQArEVpJvFt2pVCY4kG5g93Fbcjz1Y="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/sweeper-24.02.2.tar.xz",
+    "hash": "sha256-E3VYgubBLoxXZVA1x+XzbQUsPAv8tAscBnvjuT99rd0="
   },
   "telly-skout": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/telly-skout-24.02.1.tar.xz",
-    "hash": "sha256-WKtAtUgjT6Pue3aH8CKScsseaIa0IT/HN/C4iy/n9Ng="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/telly-skout-24.02.2.tar.xz",
+    "hash": "sha256-Paq1Y+MXBylEky90HON3UIZ/5J8bFqu3DA7EoXPES6k="
   },
   "tokodon": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/tokodon-24.02.1.tar.xz",
-    "hash": "sha256-Pq9spIdTIzb28c7/RSgblllaBJOh+q7kP97+X5f2gO8="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/tokodon-24.02.2.tar.xz",
+    "hash": "sha256-DKM7AnT+GHyReYg2N1Opth1NOYO2+F8r4rJEA/nGkzs="
   },
   "umbrello": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/umbrello-24.02.1.tar.xz",
-    "hash": "sha256-Ub1NBse9SuGZBKheOHojXkJ2JkKcGYrrfPs7auuthNs="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/umbrello-24.02.2.tar.xz",
+    "hash": "sha256-iS0Lv2KkpD3SLWH4IHqsASu+sg2DAbfnBRaw2VYXVCw="
   },
   "yakuake": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/yakuake-24.02.1.tar.xz",
-    "hash": "sha256-aCTEHlOOWoxSphNli8dqa6KB/dueubT3AUFFM803QZw="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/yakuake-24.02.2.tar.xz",
+    "hash": "sha256-5F7g0F8iVD/UVl5C6MsgtQIIYte7pvM+ZFAH/GDWRlk="
   },
   "zanshin": {
-    "version": "24.02.1",
-    "url": "mirror://kde/stable/release-service/24.02.1/src/zanshin-24.02.1.tar.xz",
-    "hash": "sha256-plh2l/67sUzh36AI1rZHtHJj0BTaG1DDdNDT+ZePfjg="
+    "version": "24.02.2",
+    "url": "mirror://kde/stable/release-service/24.02.2/src/zanshin-24.02.2.tar.xz",
+    "hash": "sha256-S6kd+7DlivXsZPRpVjE1ZinwicIkG7ewxb3Bw7mqJ+E="
   }
 }
\ No newline at end of file
diff --git a/pkgs/misc/ananicy-rules-cachyos/default.nix b/pkgs/misc/ananicy-rules-cachyos/default.nix
index 096528fa3538d..c73f9e3b3fb98 100644
--- a/pkgs/misc/ananicy-rules-cachyos/default.nix
+++ b/pkgs/misc/ananicy-rules-cachyos/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ananicy";
-  version = "unstable-2023-10-11";
+  version = "unstable-2024-04-10";
 
   src = fetchFromGitHub {
     owner = "CachyOS";
     repo = "ananicy-rules";
-    rev = "3dafc3eb667b6ed7024359de78bf961c7248954d";
-    sha256 = "sha256-bMwM/2R6jdgrQ6C0JnHyMp9L4OWI6KVGcninrr7wLQ8=";
+    rev = "de55e2f55e6adf559bf4990aa433f5c202dc073d";
+    sha256 = "sha256-TWaOMVEeTLI67eG5BPyb+OSnz31QvTueQD2yfEEbTEo=";
   };
 
   dontConfigure = true;
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
     description = "ananicy-cpp-rules for CachyOS ";
     license = licenses.gpl3Only;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ artturin ];
+    maintainers = with maintainers; [ artturin johnrtitor ];
   };
 }
diff --git a/pkgs/misc/fastly/default.nix b/pkgs/misc/fastly/default.nix
index 5658af6983a55..712a28782af78 100644
--- a/pkgs/misc/fastly/default.nix
+++ b/pkgs/misc/fastly/default.nix
@@ -10,13 +10,13 @@
 
 buildGoModule rec {
   pname = "fastly";
-  version = "10.8.9";
+  version = "10.8.10";
 
   src = fetchFromGitHub {
     owner = "fastly";
     repo = "cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-s3tsLCON8F1N7pK7xp8Fwmo8KNctmUnA7I1MxhQeDtA=";
+    hash = "sha256-AUseetBbr4phJJZe0qh9vXeNX7IwFGhgm+uGCbVWx5s=";
     # The git commit is part of the `fastly version` original output;
     # leave that output the same in nixpkgs. Use the `.git` directory
     # to retrieve the commit SHA, and remove the directory afterwards,
@@ -33,7 +33,7 @@ buildGoModule rec {
     "cmd/fastly"
   ];
 
-  vendorHash = "sha256-irBqINffT7aMOn4NyuYmSuo+E4Rw7ifAIMV0QpKm0So=";
+  vendorHash = "sha256-L9U2MN7b2AU3fQSBKhF2Q6p7eN95bQGV0u9c0C6/yx0=";
 
   nativeBuildInputs = [
     installShellFiles
diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix
index d7a3ad13825c2..837070e656147 100644
--- a/pkgs/misc/uboot/default.nix
+++ b/pkgs/misc/uboot/default.nix
@@ -28,10 +28,10 @@
 }:
 
 let
-  defaultVersion = "2024.01";
+  defaultVersion = "2024.04";
   defaultSrc = fetchurl {
     url = "https://ftp.denx.de/pub/u-boot/u-boot-${defaultVersion}.tar.bz2";
-    hash = "sha256-uZYR8e0je/NUG9yENLaMlqbgWWcGH5kkQ8swqr6+9bM=";
+    hash = "sha256-GKhT/jn6160DqQzC1Cda6u1tppc13vrDSSuAUIhD3Uo=";
   };
 
   # Dependencies for the tools need to be included as either native or cross,
@@ -386,12 +386,6 @@ in {
     extraMeta.platforms = ["aarch64-linux"];
     BL31 = "${armTrustedFirmwareRK3588}/bl31.elf";
     ROCKCHIP_TPL = rkbin.TPL_RK3588;
-
-    # FIXME: applied upstream, remove in 2024.04
-    extraConfig = ''
-      CONFIG_ROCKCHIP_SPI_IMAGE=y
-    '';
-
     filesToInstall = [ "u-boot.itb" "idbloader.img" "u-boot-rockchip.bin" "u-boot-rockchip-spi.bin" ];
   };
 
@@ -613,6 +607,14 @@ in {
     filesToInstall = ["u-boot-sunxi-with-spl.bin"];
   };
 
+  ubootTuringRK1 = buildUBoot {
+    defconfig = "turing-rk1-rk3588_defconfig";
+    extraMeta.platforms = [ "aarch64-linux" ];
+    BL31 = "${armTrustedFirmwareRK3588}/bl31.elf";
+    ROCKCHIP_TPL = rkbin.TPL_RK3588;
+    filesToInstall = [ "u-boot.itb" "idbloader.img" "u-boot-rockchip.bin" ];
+  };
+
   ubootUtilite = buildUBoot {
     defconfig = "cm_fx6_defconfig";
     extraMeta.platforms = ["armv7l-linux"];
diff --git a/pkgs/os-specific/darwin/apple-source-releases/CarbonHeaders/default.nix b/pkgs/os-specific/darwin/apple-source-releases/CarbonHeaders/default.nix
index 25e1df3773dbf..f3ef0e9151f34 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/CarbonHeaders/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/CarbonHeaders/default.nix
@@ -15,6 +15,6 @@ appleDerivation' stdenvNoCC {
   meta = with lib; {
     maintainers = with maintainers; [ copumpkin ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/CommonCrypto/default.nix b/pkgs/os-specific/darwin/apple-source-releases/CommonCrypto/default.nix
index 36013fe307ce4..32e142981f2d3 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/CommonCrypto/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/CommonCrypto/default.nix
@@ -37,6 +37,6 @@ appleDerivation' stdenvNoCC {
   meta = with lib; {
     maintainers = with maintainers; [ copumpkin ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/Csu/default.nix b/pkgs/os-specific/darwin/apple-source-releases/Csu/default.nix
index cc73c0ac94157..8cb478d0874ce 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/Csu/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/Csu/default.nix
@@ -24,6 +24,6 @@ appleDerivation' stdenv {
     description = "Apple's common startup stubs for darwin";
     maintainers = with maintainers; [ copumpkin ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix b/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix
index aeeb5c06b34c4..3943e2b2a9b7a 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix
@@ -183,6 +183,6 @@ appleDerivation' stdenv {
   meta = with lib; {
     maintainers = with maintainers; [ copumpkin ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/Librpcsvc/default.nix b/pkgs/os-specific/darwin/apple-source-releases/Librpcsvc/default.nix
index 1bf6396d47fd9..3c71531515a17 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/Librpcsvc/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/Librpcsvc/default.nix
@@ -17,6 +17,6 @@ appleDerivation {
   meta = with lib; {
     maintainers = with maintainers; [ matthewbauer ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix b/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix
index c9cc99a6550e7..7415e99e506cf 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/Libsystem/default.nix
@@ -181,6 +181,6 @@ appleDerivation' stdenv {
     description = "The Mac OS libc/libSystem (tapi library with pure headers)";
     maintainers = with maintainers; [ copumpkin gridaphobe ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix b/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix
index e0e27255b72f4..86f58b6b5a3c4 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/architecture/default.nix
@@ -34,6 +34,6 @@ appleDerivation' stdenvNoCC {
   meta = with lib; {
     maintainers = with maintainers; [ copumpkin ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/default.nix b/pkgs/os-specific/darwin/apple-source-releases/default.nix
index 8a562cc825581..1bd574fe46a49 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/default.nix
@@ -187,7 +187,7 @@ let
   } // (if builtins.isFunction attrs then attrs finalAttrs else attrs) // {
     meta = (with lib; {
       platforms = platforms.darwin;
-      license = licenses.apsl20;
+      license = licenses.apple-psl20;
     }) // (attrs.meta or {});
   });
 
diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/default.nix b/pkgs/os-specific/darwin/apple-source-releases/dyld/default.nix
index ca3b70cd09264..e91d703602650 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/dyld/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/dyld/default.nix
@@ -11,6 +11,6 @@ appleDerivation' stdenvNoCC {
     description = "Impure primitive symlinks to the Mac OS native dyld, along with headers";
     maintainers = with maintainers; [ copumpkin ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/libunwind/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libunwind/default.nix
index 0d378f6089fb3..df3c5650452de 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/libunwind/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/libunwind/default.nix
@@ -12,6 +12,6 @@ appleDerivation {
   meta = with lib; {
     maintainers = with maintainers; [ copumpkin lnl7 ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/apple-source-releases/libutil/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libutil/default.nix
index e7c8a6b1113b2..5cc8e0ffa28ab 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/libutil/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/libutil/default.nix
@@ -38,6 +38,6 @@ appleDerivation' (if headersOnly then stdenvNoCC else stdenv) {
   meta = with lib; {
     maintainers = with maintainers; [ copumpkin ];
     platforms   = platforms.darwin;
-    license     = licenses.apsl20;
+    license     = licenses.apple-psl20;
   };
 }
diff --git a/pkgs/os-specific/darwin/cctools/apple.nix b/pkgs/os-specific/darwin/cctools/apple.nix
index 7adcfa9539a2d..dee4e20062560 100644
--- a/pkgs/os-specific/darwin/cctools/apple.nix
+++ b/pkgs/os-specific/darwin/cctools/apple.nix
@@ -116,7 +116,7 @@ symlinkJoin rec {
   meta = with lib; {
     description = "MacOS Compiler Tools";
     homepage = "http://www.opensource.apple.com/source/cctools/";
-    license = licenses.apsl20;
+    license = licenses.apple-psl20;
     platforms = platforms.darwin;
   };
 }
diff --git a/pkgs/os-specific/darwin/cctools/port.nix b/pkgs/os-specific/darwin/cctools/port.nix
index c9b11ee20155e..377d84d9bf731 100644
--- a/pkgs/os-specific/darwin/cctools/port.nix
+++ b/pkgs/os-specific/darwin/cctools/port.nix
@@ -186,7 +186,7 @@ stdenv.mkDerivation {
     broken = !stdenv.targetPlatform.isDarwin; # Only supports darwin targets
     homepage = "http://www.opensource.apple.com/source/cctools/";
     description = "MacOS Compiler Tools (cross-platform port)";
-    license = lib.licenses.apsl20;
+    license = lib.licenses.apple-psl20;
     maintainers = with lib.maintainers; [ matthewbauer ];
   };
 }
diff --git a/pkgs/os-specific/darwin/grandperspective/default.nix b/pkgs/os-specific/darwin/grandperspective/default.nix
index d1f468b9806b8..816440ec1155e 100644
--- a/pkgs/os-specific/darwin/grandperspective/default.nix
+++ b/pkgs/os-specific/darwin/grandperspective/default.nix
@@ -1,13 +1,13 @@
 { stdenv, lib, fetchurl, undmg, makeWrapper }:
 
 stdenv.mkDerivation (finalAttrs: {
-  version = "3.4.1";
+  version = "3.4.2";
   pname = "grandperspective";
 
   src = fetchurl {
     inherit (finalAttrs) version;
     url = "mirror://sourceforge/grandperspectiv/GrandPerspective-${lib.replaceStrings [ "." ] [ "_" ] finalAttrs.version}.dmg";
-    hash = "sha256-iTtvP6iONcfDWJ3qMh+TUJMN+3spwCQ/5S+A307BJCM=";
+    hash = "sha256-ZgyBeQCoixLGCFS8+UFoMilvtswplEC8MzK3BE4ocDg=";
   };
 
   sourceRoot = "GrandPerspective.app";
diff --git a/pkgs/os-specific/darwin/moltenvk/default.nix b/pkgs/os-specific/darwin/moltenvk/default.nix
index 4e332e6fe5577..1324bdeb7f217 100644
--- a/pkgs/os-specific/darwin/moltenvk/default.nix
+++ b/pkgs/os-specific/darwin/moltenvk/default.nix
@@ -28,7 +28,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "MoltenVK";
-  version = "1.2.7";
+  version = "1.2.8";
 
   buildInputs = [
     AppKit
@@ -56,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "KhronosGroup";
     repo = "MoltenVK";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-0+S/kueV+AEVt+oFnh4cgcDRVtEbUH1QiHFPhGhimCA=";
+    hash = "sha256-nsNN2iCSjXzfarSdaNmeNbfDliUBMQMsb0rXEENWJqw=";
   };
 
   postPatch = ''
diff --git a/pkgs/os-specific/darwin/raycast/default.nix b/pkgs/os-specific/darwin/raycast/default.nix
index 5ffa01537abc7..e28a8c347eacf 100644
--- a/pkgs/os-specific/darwin/raycast/default.nix
+++ b/pkgs/os-specific/darwin/raycast/default.nix
@@ -10,12 +10,12 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "raycast";
-  version = "1.70.3";
+  version = "1.71.3";
 
   src = fetchurl {
     name = "Raycast.dmg";
     url = "https://releases.raycast.com/releases/${finalAttrs.version}/download?build=universal";
-    hash = "sha256-BSeWkopuBszBAITiaAPIwUvP7I7sZTl1laQXWIN4qRE=";
+    hash = "sha256-jiGo4H38qAiGMh4ckswyeDcijYL2wbcjs+IubDFjobU=";
   };
 
   dontPatch = true;
diff --git a/pkgs/os-specific/darwin/sketchybar/default.nix b/pkgs/os-specific/darwin/sketchybar/default.nix
index 3081e40622c54..0cc820986c088 100644
--- a/pkgs/os-specific/darwin/sketchybar/default.nix
+++ b/pkgs/os-specific/darwin/sketchybar/default.nix
@@ -11,6 +11,7 @@
 , MediaRemote
 , SkyLight
 , testers
+, nix-update-script
 }:
 
 let
@@ -56,9 +57,13 @@ stdenv.mkDerivation (finalAttrs: {
     runHook postInstall
   '';
 
-  passthru.tests.version = testers.testVersion {
-    package = finalAttrs.finalPackage;
-    version = "sketchybar-v${finalAttrs.version}";
+  passthru = {
+    tests.version = testers.testVersion {
+      package = finalAttrs.finalPackage;
+      version = "sketchybar-v${finalAttrs.version}";
+    };
+
+    updateScript = nix-update-script { };
   };
 
   meta = {
diff --git a/pkgs/os-specific/darwin/skhd/default.nix b/pkgs/os-specific/darwin/skhd/default.nix
index f979f7ec020e7..539e90562ec71 100644
--- a/pkgs/os-specific/darwin/skhd/default.nix
+++ b/pkgs/os-specific/darwin/skhd/default.nix
@@ -4,6 +4,7 @@
 , Carbon
 , Cocoa
 , testers
+, nix-update-script
 }:
 
 stdenv.mkDerivation (finalAttrs: {
@@ -34,9 +35,13 @@ stdenv.mkDerivation (finalAttrs: {
     substituteInPlace $out/Library/LaunchDaemons/org.nixos.skhd.plist --subst-var out
   '';
 
-  passthru.tests.version = testers.testVersion {
-    package = finalAttrs.finalPackage;
-    version = "skhd-v${finalAttrs.version}";
+  passthru = {
+    tests.version = testers.testVersion {
+      package = finalAttrs.finalPackage;
+      version = "skhd-v${finalAttrs.version}";
+    };
+
+    updateScript = nix-update-script { };
   };
 
   meta = {
diff --git a/pkgs/os-specific/darwin/yabai/default.nix b/pkgs/os-specific/darwin/yabai/default.nix
index b7bc24c8ef46f..150db493198fa 100644
--- a/pkgs/os-specific/darwin/yabai/default.nix
+++ b/pkgs/os-specific/darwin/yabai/default.nix
@@ -19,7 +19,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "yabai";
-  version = "7.0.4";
+  version = "7.1.0";
 
   src = finalAttrs.passthru.sources.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
 
@@ -85,14 +85,14 @@ stdenv.mkDerivation (finalAttrs: {
       # See the comments on https://github.com/NixOS/nixpkgs/pull/188322 for more information.
       "aarch64-darwin" = fetchzip {
         url = "https://github.com/koekeishiya/yabai/releases/download/v${finalAttrs.version}/yabai-v${finalAttrs.version}.tar.gz";
-        hash = "sha256-eOgdCW3BEB9vn9lui7Ib6uWl5MSAnHh3ztqHCWshCv8=";
+        hash = "sha256-88Sh2nizAQ0a0cnlnrkhb5x3VjHa372HhjHlmNjGdQ4=";
       };
       "x86_64-darwin" = fetchFromGitHub
         {
           owner = "koekeishiya";
           repo = "yabai";
           rev = "v${finalAttrs.version}";
-          hash = "sha256-yj7ISrBzVIDGsDQ1D+vDm9PapsZmi5fk1m3cGuzBR7w=";
+          hash = "sha256-5iC1U6tyUYFLjOfnIxCrjCjj2deUZ/rvsJN4jlrr2Tc=";
         };
     };
 
diff --git a/pkgs/os-specific/linux/cpuid/default.nix b/pkgs/os-specific/linux/cpuid/default.nix
index 396baa4b98c18..d74d25398f645 100644
--- a/pkgs/os-specific/linux/cpuid/default.nix
+++ b/pkgs/os-specific/linux/cpuid/default.nix
@@ -1,27 +1,24 @@
-{ lib
-, stdenv
-, fetchurl
-, perl
+{
+  lib,
+  stdenv,
+  fetchurl,
+  perl,
 }:
 
 stdenv.mkDerivation rec {
   pname = "cpuid";
-  version = "20230614";
+  version = "20240324";
 
   src = fetchurl {
     url = "http://etallen.com/cpuid/${pname}-${version}.src.tar.gz";
-    sha256 = "sha256-scgwRe/CYHYwd1HgZi1YAnf1+b+JzwJyMaeBIAPDpOg=";
+    sha256 = "sha256-3fvFudgBUbsEl16d7BMFEDQZeY0i7/LiRJCD3AhiGEw=";
   };
 
   # For pod2man during the build process.
-  nativeBuildInputs = [
-    perl
-  ];
+  nativeBuildInputs = [ perl ];
 
   # As runtime dependency for cpuinfo2cpuid.
-  buildInputs = [
-    perl
-  ];
+  buildInputs = [ perl ];
 
   # The Makefile hardcodes $(BUILDROOT)/usr as installation
   # destination. Just nuke all mentions of /usr to get the right
@@ -50,6 +47,9 @@ stdenv.mkDerivation rec {
     homepage = "http://etallen.com/cpuid.html";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ blitz ];
-    platforms = [ "i686-linux" "x86_64-linux" ];
+    platforms = [
+      "i686-linux"
+      "x86_64-linux"
+    ];
   };
 }
diff --git a/pkgs/os-specific/linux/drbd/driver.nix b/pkgs/os-specific/linux/drbd/driver.nix
new file mode 100644
index 0000000000000..efc771905e53a
--- /dev/null
+++ b/pkgs/os-specific/linux/drbd/driver.nix
@@ -0,0 +1,57 @@
+{ stdenv, lib, fetchurl, kernel, flex, coccinelle, python3 }:
+
+stdenv.mkDerivation rec {
+  name = "drbd-${version}-${kernel.version}";
+  version = "9.2.7";
+
+  src = fetchurl {
+    url = "https://pkg.linbit.com//downloads/drbd/9/drbd-${version}.tar.gz";
+    sha256 = "1355ns10z0fjgqsdpf09qfy01j8lg2n7zy4kclmar3s798n3mh56";
+  };
+
+  hardeningDisable = [ "pic" ];
+
+  nativeBuildInputs = [
+    kernel.moduleBuildDependencies
+    flex
+    coccinelle
+    python3
+  ];
+
+  makeFlags = [
+    "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
+    "SPAAS=false"
+  ];
+
+  # 6.4 and newer provide a in-tree version of the handshake module https://www.kernel.org/doc/html/v6.4/networking/tls-handshake.html
+  installPhase = ''
+    runHook preInstall
+    install -D drbd/drbd.ko -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/block/drbd
+    install -D drbd/drbd_transport_tcp.ko -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/block/drbd
+    install -D drbd/drbd_transport_lb-tcp.ko -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/block/drbd
+    install -D drbd/drbd_transport_rdma.ko -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/block/drbd
+    ${lib.optionalString (lib.versionOlder kernel.version "6.4") ''
+      install -D drbd/drbd-kernel-compat/handshake/handshake.ko -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/block/drbd
+    ''}
+    runHook postInstall
+  '';
+
+  postPatch = ''
+    patchShebangs .
+    substituteInPlace Makefile --replace 'SHELL=/bin/bash' 'SHELL=${builtins.getEnv "SHELL"}'
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/LINBIT/drbd";
+    description = "LINBIT DRBD kernel module";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ birkb ];
+    longDescription = ''
+       DRBD is a software-based, shared-nothing, replicated storage solution
+       mirroring the content of block devices (hard disks, partitions, logical volumes, and so on) between hosts.
+    '';
+  };
+}
diff --git a/pkgs/os-specific/linux/drbd/default.nix b/pkgs/os-specific/linux/drbd/utils.nix
index 0c5acd0ac0645..ad50c2c3e50a5 100644
--- a/pkgs/os-specific/linux/drbd/default.nix
+++ b/pkgs/os-specific/linux/drbd/utils.nix
@@ -10,7 +10,9 @@
 , libxslt
 , nixosTests
 , perl
+, perlPackages
 , systemd
+, keyutils
 
 # drbd-utils are compiled twice, once with forOCF = true to extract
 # its OCF definitions for use in the ocf-resource-agents derivation,
@@ -22,11 +24,11 @@
 
 stdenv.mkDerivation rec {
   pname = "drbd";
-  version = "9.19.1";
+  version = "9.27.0";
 
   src = fetchurl {
     url = "https://pkg.linbit.com/downloads/drbd/utils/${pname}-utils-${version}.tar.gz";
-    sha256 = "1l99kcrb0j85wxxmrdihpx9bk1a4sdi7wlp5m1x5l24k8ck1m5cf";
+    sha256 = "1qwdrjrgas8z8vc6c85xcrqaczjwyqd61yig01n44wa5z0j3v4aq";
   };
 
   nativeBuildInputs = [
@@ -34,11 +36,12 @@ stdenv.mkDerivation rec {
     libxslt
     docbook_xsl
     asciidoctor
+    keyutils
   ];
 
   buildInputs = [
     perl
-    # perlPackages.Po4a used by ja documentation
+    perlPackages.Po4a
   ];
 
   configureFlags = [
@@ -123,6 +126,10 @@ stdenv.mkDerivation rec {
     description = "Distributed Replicated Block Device, a distributed storage system for Linux (userspace utilities)";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ryantm astro ];
+    maintainers = with maintainers; [ ryantm astro birkb ];
+    longDescription = ''
+       DRBD is a software-based, shared-nothing, replicated storage solution
+       mirroring the content of block devices (hard disks, partitions, logical volumes, and so on) between hosts.
+    '';
   };
 }
diff --git a/pkgs/os-specific/linux/firmware/linux-firmware/source.nix b/pkgs/os-specific/linux/firmware/linux-firmware/source.nix
index 5088c1dc33205..3739c1dc3e463 100644
--- a/pkgs/os-specific/linux/firmware/linux-firmware/source.nix
+++ b/pkgs/os-specific/linux/firmware/linux-firmware/source.nix
@@ -1,7 +1,7 @@
 # This file is autogenerated! Run ./update.sh to regenerate.
 {
-  version = "20240312";
-  revision = "20240312";
-  sourceHash = "sha256-fDrnI7H87vG4OpcmjMcRTio01oHI0Z2KUfe3NNeY3JY=";
-  outputHash = "sha256-GYmRaW6wsOR+pqeQDyGYUDh6HfEs+sEi5vQoBHEeX9I=";
+  version = "20240410";
+  revision = "20240410";
+  sourceHash = "sha256-Qo4f5kdHlBYKlzdFOtoKoCPHXxgDeCawSE3tnRwfC4U=";
+  outputHash = "sha256-pOYDdb0A1sESiT0kfA4DbWxKJ3+pog54+S3KcQB3BsA=";
 }
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index 7e47a07f9604c..22245bc51fbb2 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -126,6 +126,9 @@ let
       # GPIO power management
       POWER_RESET_GPIO                 = option yes;
       POWER_RESET_GPIO_RESTART         = option yes;
+
+      # Enable Pulse-Width-Modulation support, commonly used for fan and backlight.
+      PWM                              = yes;
     } // optionalAttrs (stdenv.hostPlatform.isx86) {
       INTEL_IDLE                       = yes;
       INTEL_RAPL                       = whenAtLeast "5.3" module;
@@ -612,8 +615,8 @@ let
       F2FS_FS_COMPRESSION = whenAtLeast "5.6" yes;
       UDF_FS              = module;
 
-      NFSD_V2_ACL            = whenOlder "6.1" yes;
-      NFSD_V3                = whenOlder "5.18" yes;
+      NFSD_V2_ACL            = whenOlder "5.15" yes;
+      NFSD_V3                = whenOlder "5.15" yes;
       NFSD_V3_ACL            = yes;
       NFSD_V4                = yes;
       NFSD_V4_SECURITY_LABEL = yes;
diff --git a/pkgs/os-specific/linux/kernel/htmldocs.nix b/pkgs/os-specific/linux/kernel/htmldocs.nix
index ba641347c839e..dad377db06abb 100644
--- a/pkgs/os-specific/linux/kernel/htmldocs.nix
+++ b/pkgs/os-specific/linux/kernel/htmldocs.nix
@@ -18,7 +18,8 @@ stdenv.mkDerivation {
   postPatch = ''
     patchShebangs \
       Documentation/sphinx/parse-headers.pl \
-      scripts/{get_abi.pl,get_feat.pl,kernel-doc,sphinx-pre-install}
+      scripts/{get_abi.pl,get_feat.pl,kernel-doc,sphinx-pre-install} \
+      tools/net/ynl/ynl-gen-rst.py
   '';
 
   FONTCONFIG_FILE = makeFontsConf {
@@ -31,6 +32,7 @@ stdenv.mkDerivation {
     perl
     python3.pkgs.sphinx
     python3.pkgs.sphinx-rtd-theme
+    python3.pkgs.pyyaml
     which
   ];
 
diff --git a/pkgs/os-specific/linux/kernel/kernels-org.json b/pkgs/os-specific/linux/kernel/kernels-org.json
index b8407de54be4e..147e044ccc05d 100644
--- a/pkgs/os-specific/linux/kernel/kernels-org.json
+++ b/pkgs/os-specific/linux/kernel/kernels-org.json
@@ -1,15 +1,15 @@
 {
     "testing": {
-        "version": "6.9-rc2",
-        "hash": "sha256:14yjrkd63qsd2hip53x146fsd42d261pxdh85fprcvsrg656c6gp"
+        "version": "6.9-rc3",
+        "hash": "sha256:0xavyh3xg23il3bm2x6fjji3s26z05cyv1lry6h5yd7jjj3qm7cc"
     },
     "6.1": {
-        "version": "6.1.84",
-        "hash": "sha256:0ykhl4i6yhryzgjkdbdz4pd3b1ghv84h6mpn7bdx0ra7w7mx55xg"
+        "version": "6.1.85",
+        "hash": "sha256:0x32p1c04q5d0yd4qncrmc064m3g1x7cvfia5cd04q3wb769pzik"
     },
     "5.15": {
-        "version": "5.15.153",
-        "hash": "sha256:1g44gjcwcdq5552vwinljqwiy90bxax72jjvdasp71x88khv3pfp"
+        "version": "5.15.154",
+        "hash": "sha256:16067mhf173kgs4mvlzix9qscwq5wy8817dyfyjx5g7jkykmxy0p"
     },
     "5.10": {
         "version": "5.10.214",
@@ -24,11 +24,11 @@
         "hash": "sha256:10dww3cyazcf3wjzh8igpa0frb8gvl6amnksh42zfkji4mskh2r6"
     },
     "6.6": {
-        "version": "6.6.25",
-        "hash": "sha256:0i0zvqlj02rm6wpbidji0rn9559vrpfc1b8gbfjk70lhhyz11llr"
+        "version": "6.6.26",
+        "hash": "sha256:1nan0h95dkqpb55jr5mxfi8yks09fd518im3vblbi4zvyi4v8m5g"
     },
     "6.8": {
-        "version": "6.8.4",
-        "hash": "sha256:0qwywy89an1w0yvs5957kqyv74mwgxady521w2lmyq00zjaw9pnm"
+        "version": "6.8.5",
+        "hash": "sha256:12gsxxiwkildj8i94fkm2v69zb6z6s7hnnlvpsyv8j1pszjj728k"
     }
 }
diff --git a/pkgs/os-specific/linux/kernel/linux-rt-6.6.nix b/pkgs/os-specific/linux/kernel/linux-rt-6.6.nix
index 5908593b26851..eb85f9c3cd091 100644
--- a/pkgs/os-specific/linux/kernel/linux-rt-6.6.nix
+++ b/pkgs/os-specific/linux/kernel/linux-rt-6.6.nix
@@ -6,7 +6,7 @@
 , ... } @ args:
 
 let
-  version = "6.6.23-rt28"; # updated by ./update-rt.sh
+  version = "6.6.25-rt29"; # updated by ./update-rt.sh
   branch = lib.versions.majorMinor version;
   kversion = builtins.elemAt (lib.splitString "-" version) 0;
 in buildLinux (args // {
@@ -18,14 +18,14 @@ in buildLinux (args // {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v6.x/linux-${kversion}.tar.xz";
-    sha256 = "1fd824ia3ngy65c5qaaln7m66ca4p80bwlnvvk76pw4yrccx23r0";
+    sha256 = "0i0zvqlj02rm6wpbidji0rn9559vrpfc1b8gbfjk70lhhyz11llr";
   };
 
   kernelPatches = let rt-patch = {
     name = "rt";
     patch = fetchurl {
       url = "mirror://kernel/linux/kernel/projects/rt/${branch}/older/patch-${version}.patch.xz";
-      sha256 = "0l9509qnv333fwjlxkr46rb23dhxs43bzj6iisk1r2lq69jhmyx4";
+      sha256 = "15mb4zycv86yp1cbs5svgs3pnmh8jihjhf4jxc4h4ywlzglkb1za";
     };
   }; in [ rt-patch ] ++ kernelPatches;
 
diff --git a/pkgs/os-specific/linux/kernel/update-mainline.py b/pkgs/os-specific/linux/kernel/update-mainline.py
index 020e55c5fe402..bf5001ee378aa 100755
--- a/pkgs/os-specific/linux/kernel/update-mainline.py
+++ b/pkgs/os-specific/linux/kernel/update-mainline.py
@@ -130,6 +130,13 @@ def main():
             continue
 
         if old_version is None:
+            if kernel.eol:
+                print(
+                    f"{kernel.branch} is EOL, not adding...",
+                    file=sys.stderr
+                )
+                continue
+
             message = f"linux_{nixpkgs_branch}: init at {kernel.version}"
         else:
             message = f"linux_{nixpkgs_branch}: {old_version} -> {kernel.version}"
diff --git a/pkgs/os-specific/linux/kernel/zen-kernels.nix b/pkgs/os-specific/linux/kernel/zen-kernels.nix
index ff9f13c17ee74..7c4adba2efcf2 100644
--- a/pkgs/os-specific/linux/kernel/zen-kernels.nix
+++ b/pkgs/os-specific/linux/kernel/zen-kernels.nix
@@ -4,16 +4,16 @@ let
   # comments with variant added for update script
   # ./update-zen.py zen
   zenVariant = {
-    version = "6.8.2"; #zen
-    suffix = "zen2"; #zen
-    sha256 = "0v8y7d7mn0y5g8bbw2nm89a7jsvdwfjg6d3zqyga9mpr16xpsssa"; #zen
+    version = "6.8.4"; #zen
+    suffix = "zen1"; #zen
+    sha256 = "0cbcij31gar4is5zcrl748ijn91jly74i2gggf43ndh8yrzdni85"; #zen
     isLqx = false;
   };
   # ./update-zen.py lqx
   lqxVariant = {
-    version = "6.7.11"; #lqx
+    version = "6.8.4"; #lqx
     suffix = "lqx1"; #lqx
-    sha256 = "180a39qrpldq4y2gn12pynhk62w46bzqi7zgciawznxyp8rr673x"; #lqx
+    sha256 = "1hv9hvx9nw51qki5wbhm4dgyvgw7jjwxl8fvslaazn3r0rqch7z2"; #lqx
     isLqx = true;
   };
   zenKernelsFor = { version, suffix, sha256, isLqx }: buildLinux (args // {
diff --git a/pkgs/os-specific/linux/ksmbd-tools/default.nix b/pkgs/os-specific/linux/ksmbd-tools/default.nix
index dd429b2959902..b81f581c07aaa 100644
--- a/pkgs/os-specific/linux/ksmbd-tools/default.nix
+++ b/pkgs/os-specific/linux/ksmbd-tools/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ksmbd-tools";
-  version = "3.5.1";
+  version = "3.5.2";
 
   src = fetchFromGitHub {
     owner = "cifsd-team";
     repo = pname;
     rev = version;
-    sha256 = "sha256-1Htky39oggDqPYSbF4it2UMIxuoLp0aK+IjGojPgaiU=";
+    sha256 = "sha256-QE/Pnba4zgeInlVqOEjT3EqV6NPkQTp6xeYU3dsIl4M=";
   };
 
   buildInputs = [ glib libnl ] ++ lib.optional withKerberos libkrb5;
diff --git a/pkgs/os-specific/linux/kvdo/default.nix b/pkgs/os-specific/linux/kvdo/default.nix
index e2390b68a5ca2..3258295be58a6 100644
--- a/pkgs/os-specific/linux/kvdo/default.nix
+++ b/pkgs/os-specific/linux/kvdo/default.nix
@@ -3,13 +3,13 @@
 stdenv.mkDerivation rec {
   inherit (vdo);
   pname = "kvdo";
-  version = "8.2.1.6"; # bump this version with vdo
+  version = "8.2.3.3"; # bump this version with vdo
 
   src = fetchFromGitHub {
     owner = "dm-vdo";
     repo = "kvdo";
     rev = version;
-    hash = "sha256-S5r2Rgx5pWk4IsdIwmfZkuGL/oEQ3prquyVqxjR3cO0=";
+    hash = "sha256-y7uVgWFV6uWRoRqfiu0arG9731mgWijXjcp9KSaZ5X0=";
   };
 
   nativeBuildInputs = kernel.moduleBuildDependencies;
diff --git a/pkgs/os-specific/linux/ndiswrapper/default.nix b/pkgs/os-specific/linux/ndiswrapper/default.nix
index 2db046e6392f6..39a8d919d8be6 100644
--- a/pkgs/os-specific/linux/ndiswrapper/default.nix
+++ b/pkgs/os-specific/linux/ndiswrapper/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, kernel, perl, kmod, libelf }:
+{ lib, stdenv, fetchurl, kernel, perl, kmod, elfutils }:
 let
   version = "1.63";
 in
@@ -34,7 +34,7 @@ stdenv.mkDerivation {
     sha256 = "1v6b66jhisl110jfl00hm43lmnrav32vs39d85gcbxrjqnmcx08g";
   };
 
-  buildInputs = [ perl libelf ];
+  buildInputs = [ perl elfutils ];
 
   meta = {
     description = "Ndis driver wrapper for the Linux kernel";
diff --git a/pkgs/os-specific/linux/oddjob/default.nix b/pkgs/os-specific/linux/oddjob/default.nix
index bcbea9086488d..1ade48c896972 100644
--- a/pkgs/os-specific/linux/oddjob/default.nix
+++ b/pkgs/os-specific/linux/oddjob/default.nix
@@ -1,12 +1,15 @@
-{ lib
-, fetchurl
-, stdenv
-, autoreconfHook
-, dbus
-, libxml2
-, pam
-, pkg-config
-, systemd
+{
+  autoreconfHook,
+  dbus,
+  fetchpatch,
+  fetchurl,
+  lib,
+  libxml2,
+  nixosTests,
+  pam,
+  pkg-config,
+  stdenv,
+  systemd,
 }:
 
 stdenv.mkDerivation rec {
@@ -14,34 +17,36 @@ stdenv.mkDerivation rec {
   version = "0.34.7";
 
   src = fetchurl {
-     url = "https://pagure.io/oddjob/archive/${pname}-${version}/oddjob-${pname}-${version}.tar.gz";
-     hash = "sha256-SUOsMH55HtEsk5rX0CXK0apDObTj738FGOaL5xZRnIM=";
+    url = "https://pagure.io/oddjob/archive/${pname}-${version}/oddjob-${pname}-${version}.tar.gz";
+    hash = "sha256-SUOsMH55HtEsk5rX0CXK0apDObTj738FGOaL5xZRnIM=";
   };
 
+  patches = [
+    # Define SystemD service location using `with-systemdsystemunitdir` configure flag
+    (fetchpatch {
+      url = "https://pagure.io/oddjob/c/f63287a35107385dcb6e04a4c742077c9d1eab86.patch";
+      hash = "sha256-2mmw4pJhrIk4/47FM8zKH0dTQJWnntHPNmq8VAUWqJI=";
+    })
+  ];
+
   nativeBuildInputs = [
     autoreconfHook
     pkg-config
   ];
 
-  buildInputs =[
-    libxml2
+  buildInputs = [
     dbus
+    libxml2
     pam
     systemd
   ];
 
-  postPatch = ''
-    substituteInPlace configure.ac \
-      --replace 'SYSTEMDSYSTEMUNITDIR=`pkg-config --variable=systemdsystemunitdir systemd 2> /dev/null`' "SYSTEMDSYSTEMUNITDIR=${placeholder "out"}" \
-      --replace 'SYSTEMDSYSTEMUNITDIR=`pkg-config --variable=systemdsystemunitdir systemd`' "SYSTEMDSYSTEMUNITDIR=${placeholder "out"}"
-  '';
-
   configureFlags = [
     "--prefix=${placeholder "out"}"
     "--sysconfdir=${placeholder "out"}/etc"
     "--with-selinux-acls=no"
     "--with-selinux-labels=no"
-    "--disable-systemd"
+    "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
   ];
 
   postConfigure = ''
@@ -49,12 +54,19 @@ stdenv.mkDerivation rec {
       --replace "globals.selinux_enabled" "FALSE"
   '';
 
-  meta = with lib; {
+  # Requires a dbus-daemon environment
+  doCheck = false;
+
+  passthru.tests = {
+    inherit (nixosTests) oddjobd;
+  };
+
+  meta = {
+    changelog = "https://pagure.io/oddjob/blob/oddjob-${version}/f/ChangeLog";
     description = "Odd Job Daemon";
     homepage = "https://pagure.io/oddjob";
-    changelog = "https://pagure.io/oddjob/blob/oddjob-${version}/f/ChangeLog";
-    license = licenses.bsd0;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ SohamG ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ SohamG ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/power-profiles-daemon/default.nix b/pkgs/os-specific/linux/power-profiles-daemon/default.nix
index 2ea7a06b46e1d..11f26e5013a82 100644
--- a/pkgs/os-specific/linux/power-profiles-daemon/default.nix
+++ b/pkgs/os-specific/linux/power-profiles-daemon/default.nix
@@ -1,5 +1,6 @@
 { stdenv
 , lib
+, bash-completion
 , pkg-config
 , meson
 , mesonEmulatorHook
@@ -25,7 +26,7 @@
 
 stdenv.mkDerivation rec {
   pname = "power-profiles-daemon";
-  version = "0.20";
+  version = "0.21";
 
   outputs = [ "out" "devdoc" ];
 
@@ -34,7 +35,7 @@ stdenv.mkDerivation rec {
     owner = "upower";
     repo = "power-profiles-daemon";
     rev = version;
-    sha256 = "sha256-8wSRPR/1ELcsZ9K3LvSNlPcJvxRhb/LRjTIxKtdQlCA=";
+    sha256 = "sha256-5JbMbz38SeNEkVKFjJLxeUHiOrx+QCaK/vXgRPbzwzY=";
   };
 
   nativeBuildInputs = [
@@ -53,12 +54,15 @@ stdenv.mkDerivation rec {
       pygobject3
       dbus-python
       python-dbusmock
+      argparse-manpage
+      shtab
     ]))
   ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
     mesonEmulatorHook
   ];
 
   buildInputs = [
+    bash-completion
     libgudev
     systemd
     upower
@@ -84,6 +88,8 @@ stdenv.mkDerivation rec {
   mesonFlags = [
     "-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
     "-Dgtk_doc=true"
+    "-Dpylint=disabled"
+    "-Dzshcomp=${placeholder "out"}/share/zsh/site-functions"
     "-Dtests=${lib.boolToString (stdenv.buildPlatform.canExecute stdenv.hostPlatform)}"
   ];
 
@@ -112,6 +118,6 @@ stdenv.mkDerivation rec {
     mainProgram = "powerprofilesctl";
     platforms = platforms.linux;
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ mvnetbiz ];
+    maintainers = with maintainers; [ mvnetbiz picnoir ];
   };
 }
diff --git a/pkgs/os-specific/linux/ryzen-smu/default.nix b/pkgs/os-specific/linux/ryzen-smu/default.nix
new file mode 100644
index 0000000000000..7f899f2c2c90c
--- /dev/null
+++ b/pkgs/os-specific/linux/ryzen-smu/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, kernel
+}:
+
+let
+  version = "0.1.5-unstable-2024-01-03";
+
+  ## Upstream has not been merging PRs.
+  ## Nixpkgs maintainers are providing a
+  ## repo with PRs merged until upstream is
+  ## updated.
+  src = fetchFromGitHub {
+    owner = "Cryolitia";
+    repo = "ryzen_smu";
+    rev = "ce1aa918efa33ca79998f0f7d467c04d4b07016c";
+    hash = "sha256-s9SSmbL6ixWqZUKEhrZdxN4xoWgk+8ClZPoKq2FDAAE=";
+  };
+
+  monitor-cpu = stdenv.mkDerivation {
+    pname = "monitor-cpu";
+    inherit version src;
+
+    makeFlags = [
+      "-C userspace"
+    ];
+
+    installPhase = ''
+    runHook preInstall
+
+    install userspace/monitor_cpu -Dm755 -t $out/bin
+
+    runHook postInstall
+  '';
+  };
+
+in
+stdenv.mkDerivation {
+  pname = "ryzen-smu-${kernel.version}";
+  inherit version src;
+
+  hardeningDisable = [ "pic" ];
+
+  nativeBuildInputs = kernel.moduleBuildDependencies;
+
+  makeFlags = [
+    "TARGET=${kernel.modDirVersion}"
+    "KERNEL_BUILD=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install ryzen_smu.ko -Dm444 -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/ryzen_smu
+    install ${monitor-cpu}/bin/monitor_cpu -Dm755 -t $out/bin
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Linux kernel driver that exposes access to the SMU (System Management Unit) for certain AMD Ryzen Processors";
+    homepage = "https://gitlab.com/leogx9r/ryzen_smu";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ Cryolitia phdyellow ];
+    platforms = [ "x86_64-linux" ];
+    mainProgram = "monitor_cpu";
+  };
+}
diff --git a/pkgs/os-specific/linux/setools/default.nix b/pkgs/os-specific/linux/setools/default.nix
index 0819ae91fc87a..8e3b0e627d374 100644
--- a/pkgs/os-specific/linux/setools/default.nix
+++ b/pkgs/os-specific/linux/setools/default.nix
@@ -8,13 +8,13 @@ with python3.pkgs;
 
 buildPythonApplication rec {
   pname = "setools";
-  version = "4.4.4";
+  version = "4.5.0";
 
   src = fetchFromGitHub {
     owner = "SELinuxProject";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-QCJfFdY4THBurx7G8q/WAzb7b9CwtNNGi5fn9D++BMU=";
+    hash = "sha256-4y4Uhh3O84UbK39j8ACu06/6n7lyHsd8MzODR0FOp3I=";
   };
 
   nativeBuildInputs = [ cython ];
diff --git a/pkgs/os-specific/linux/sssd/default.nix b/pkgs/os-specific/linux/sssd/default.nix
index a4a0d1dd49ffb..0f0c6fcf4a659 100644
--- a/pkgs/os-specific/linux/sssd/default.nix
+++ b/pkgs/os-specific/linux/sssd/default.nix
@@ -5,7 +5,7 @@
   libuuid, systemd, nspr, check, cmocka, uid_wrapper, p11-kit,
   nss_wrapper, ncurses, Po4a, http-parser, jansson, jose,
   docbook_xsl, docbook_xml_dtd_44,
-  testers, nix-update-script, nixosTests,
+  testers, nix-update-script, nixosTests, fetchpatch,
   withSudo ? false }:
 
 let
@@ -22,6 +22,14 @@ stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-VJXZndbmC6mAVxzvv5Wjb4adrQkP16Rt4cgjl4qGDIc=";
   };
 
+  patches = [
+    # Fix the build with Samba 4.20
+    (fetchpatch {
+      url = "https://github.com/SSSD/sssd/commit/1bf51929a48b84d62ac54f2a42f17e7fbffe1612.patch";
+      hash = "sha256-VLx04APEipp860iOJNIwTGywxZ7rIDdyh3te6m7Ymlo=";
+    })
+  ];
+
   postPatch = ''
     patchShebangs ./sbus_generate.sh.in
   '';
diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix
index d07150493fc37..edd11143ad609 100644
--- a/pkgs/os-specific/linux/systemd/default.nix
+++ b/pkgs/os-specific/linux/systemd/default.nix
@@ -225,7 +225,7 @@ stdenv.mkDerivation (finalAttrs: {
     ./0017-meson.build-do-not-create-systemdstatedir.patch
   ] ++ lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isGnu) [
     ./0018-timesyncd-disable-NSCD-when-DNSSEC-validation-is-dis.patch
-  ] ++ lib.optional (stdenv.hostPlatform.isPower || stdenv.hostPlatform.isRiscV) [
+  ] ++ lib.optional (stdenv.hostPlatform.isPower || stdenv.hostPlatform.isRiscV || stdenv.hostPlatform.isMips) [
     # Fixed upstream and included in the main and stable branches. Can be dropped
     # when bumping to >= v255.5.
     # https://github.com/systemd/systemd/issues/30448
diff --git a/pkgs/os-specific/linux/tomb/default.nix b/pkgs/os-specific/linux/tomb/default.nix
index 9c97377cfe04f..98dd9bc1dbca0 100644
--- a/pkgs/os-specific/linux/tomb/default.nix
+++ b/pkgs/os-specific/linux/tomb/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ stdenvNoCC
 , lib
 , fetchFromGitHub
 , substituteAll
@@ -20,7 +20,7 @@
 , nix-update-script
 }:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "tomb";
   version = "2.10";
 
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
   postPatch = ''
     # if not, it shows .tomb-wrapped when running
     substituteInPlace tomb \
-      --replace 'TOMBEXEC=$0' 'TOMBEXEC=tomb'
+      --replace-fail 'TOMBEXEC=$0' 'TOMBEXEC=tomb'
   '';
 
   installPhase = ''
diff --git a/pkgs/os-specific/linux/zfs/unstable.nix b/pkgs/os-specific/linux/zfs/unstable.nix
index 786df2273522f..c8db9c5c5df97 100644
--- a/pkgs/os-specific/linux/zfs/unstable.nix
+++ b/pkgs/os-specific/linux/zfs/unstable.nix
@@ -22,13 +22,13 @@ callPackage ./generic.nix args {
   # IMPORTANT: Always use a tagged release candidate or commits from the
   # zfs-<version>-staging branch, because this is tested by the OpenZFS
   # maintainers.
-  version = "2.2.3-unstable-2024-03-30";
-  rev = "deb7a84231aff8d772bb4ce9fa486d1886f1a2b6";
+  version = "2.2.3-unstable-2024-04-09";
+  rev = "28520cad2500b60ce8653e431990e33f77ff08f7";
 
   isUnstable = true;
   tests = [
     nixosTests.zfs.unstable
   ];
 
-  hash = "sha256-d9ZoUFuHPmJmIBbJKENVTCTJ5U3As+3NYHk9ghWxCCA=";
+  hash = "sha256-lGoiTmCWOxqACSYY0WA0gN6CN/1FyYhSVHmtYC1Izhg=";
 }
diff --git a/pkgs/servers/akkoma/default.nix b/pkgs/servers/akkoma/default.nix
index e9a9fa63ebc52..d38049f325672 100644
--- a/pkgs/servers/akkoma/default.nix
+++ b/pkgs/servers/akkoma/default.nix
@@ -1,22 +1,24 @@
 { lib
 , beamPackages
-, fetchFromGitea, fetchFromGitHub, fetchFromGitLab
-, cmake, file
+, fetchFromGitea
+, fetchFromGitHub
+, fetchFromGitLab
+, cmake
+, file
 , writeText
 , nixosTests
 , ...
 }:
-
 beamPackages.mixRelease rec {
-  pname = "pleroma";
-  version = "3.11.0";
+  pname = "akkoma";
+  version = "3.12.2";
 
   src = fetchFromGitea {
     domain = "akkoma.dev";
     owner = "AkkomaGang";
     repo = "akkoma";
     rev = "v${version}";
-    hash = "sha256-cVZx3pjbmDR4SwSLz1aSTIs3SS2oz5m43RJzRttFpPs=";
+    hash = "sha256-eKvfuHTLmUU6Dom/GctPSbhrAAik1T/7bYY5j3YUkRo=";
   };
 
   postPatch = ''
@@ -33,187 +35,178 @@ beamPackages.mixRelease rec {
 
   mixNixDeps = import ./mix.nix {
     inherit beamPackages lib;
-    overrides = (final: prev: {
-      # mix2nix does not support git dependencies yet,
-      # so we need to add them manually
-
-      captcha = beamPackages.buildMix rec {
-        name = "captcha";
-        version = "0.1.0";
-
-        src = fetchFromGitLab {
-          domain = "git.pleroma.social";
-          group = "pleroma";
-          owner = "elixir-libraries";
-          repo = "elixir-captcha";
-          rev = "90f6ce7672f70f56708792a98d98bd05176c9176";
-          hash = "sha256-s7EuAhmCsQA/4p2NJHJSWB/DZ5hA+7EelPsUOvKr2Po=";
+    overrides = final: prev:
+      let
+        mimeTypePatchPhase = ''
+          mkdir -p config
+          cat >> config/config.exs <<EOF
+          Mix.Config.config :mime, :types, %{
+            "application/xml" => ["xml"],
+            "application/xrd+xml" => ["xrd+xml"],
+            "application/jrd+json" => ["jrd+json"],
+            "application/activity+json" => ["activity+json"],
+            "application/ld+json" => ["activity+json"],
+            "image/apng" => ["apng"]
+          }
+          Mix.Config.config :mime, :extensions, %{
+            "activity+json" => "text/plain",
+            "jrd+json" => "text/plain",
+            "xrd+xml" => "text/plain"
+          }
+          EOF
+        '';
+        # Akkoma adds some things to the `mime` package's configuration, which requires it to be recompiled.
+        # However, we can't just recompile things like we would on other systems.
+        # Therefore, we need to add it to mime's compile-time config too, and also in every package that depends on mime, directly or indirectly.
+        # We take the lazy way out and just add it to every dependency - it won't make a difference in packages that don't depend on `mime`.
+        addMimeTypes = _: p: p.override {
+          patchPhase = mimeTypePatchPhase;
         };
-
-        # the binary is not getting installed by default
-        postInstall = "mv priv/* $out/lib/erlang/lib/${name}-${version}/priv/";
-      };
-
-      concurrent_limiter = beamPackages.buildMix rec {
-        name = "concurrent_limiter";
-        version = "0.1.1";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "concurrent-limiter";
-          rev = "a9e0b3d64574bdba761f429bb4fba0cf687b3338";
-          hash = "sha256-A7ucZnXks4K+JDVY5vV2cT5KfEOUOo/OHO4rga5mGys=";
+      in
+      (lib.attrsets.mapAttrs addMimeTypes prev) // {
+        # mix2nix does not support git dependencies yet,
+        # so we need to add them manually
+        captcha = beamPackages.buildMix rec {
+          name = "captcha";
+          version = "0.1.0";
+
+          src = fetchFromGitLab {
+            domain = "git.pleroma.social";
+            group = "pleroma";
+            owner = "elixir-libraries";
+            repo = "elixir-captcha";
+            rev = "90f6ce7672f70f56708792a98d98bd05176c9176";
+            hash = "sha256-s7EuAhmCsQA/4p2NJHJSWB/DZ5hA+7EelPsUOvKr2Po=";
+          };
+
+          # the binary is not getting installed by default
+          postInstall = "mv priv/* $out/lib/erlang/lib/${name}-${version}/priv/";
         };
-      };
-
-      elasticsearch = beamPackages.buildMix rec {
-        name = "elasticsearch";
-        version = "1.0.1";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "elasticsearch-elixir";
-          rev = "6cd946f75f6ab9042521a009d1d32d29a90113ca";
-          hash = "sha256-CtmQHVl+VTpemne+nxbkYGcErrgCo+t3ZBPbkFSpyF0=";
+        concurrent_limiter = beamPackages.buildMix rec {
+          name = "concurrent_limiter";
+          version = "0.1.1";
+
+          src = fetchFromGitea {
+            domain = "akkoma.dev";
+            owner = "AkkomaGang";
+            repo = "concurrent-limiter";
+            rev = "a9e0b3d64574bdba761f429bb4fba0cf687b3338";
+            hash = "sha256-A7ucZnXks4K+JDVY5vV2cT5KfEOUOo/OHO4rga5mGys=";
+          };
         };
-      };
-
-      file_ex = beamPackages.buildMix rec {
-        name = "file_ex";
-        version = "0.1.0";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "file_ex";
-          rev = "cc7067c7d446c2526e9ecf91d40896b088851569";
-          hash = "sha256-3sxfdOy0cpst4jiutoaabk72VFJ2USKiJN9ODN01Dco=";
+        elasticsearch = beamPackages.buildMix rec {
+          name = "elasticsearch";
+          version = "1.0.1";
+
+          src = fetchFromGitea {
+            domain = "akkoma.dev";
+            owner = "AkkomaGang";
+            repo = "elasticsearch-elixir";
+            rev = "6cd946f75f6ab9042521a009d1d32d29a90113ca";
+            hash = "sha256-CtmQHVl+VTpemne+nxbkYGcErrgCo+t3ZBPbkFSpyF0=";
+          };
         };
-      };
-
-      http_signatures = beamPackages.buildMix rec {
-        name = "http_signatures";
-        version = "0.1.1";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "http_signatures";
-          rev = "6640ce7d24c783ac2ef56e27d00d12e8dc85f396";
-          hash = "sha256-Q/IoVbM/TBgGCmx8AxiBHF2hARb0FbPml8N1HjN3CsE=";
+        linkify = beamPackages.buildMix rec {
+          name = "linkify";
+          version = "0.5.2";
+
+          src = fetchFromGitea {
+            domain = "akkoma.dev";
+            owner = "AkkomaGang";
+            repo = "linkify";
+            rev = "2567e2c1073fa371fd26fd66dfa5bc77b6919c16";
+            hash = "sha256-e3wzlbRuyw/UB5Tb7IozX/WR1T+sIBf9C/o5Thki9vg=";
+          };
         };
-      };
-
-      linkify = beamPackages.buildMix rec {
-        name = "linkify";
-        version = "0.5.2";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "linkify";
-          rev = "2567e2c1073fa371fd26fd66dfa5bc77b6919c16";
-          hash = "sha256-e3wzlbRuyw/UB5Tb7IozX/WR1T+sIBf9C/o5Thki9vg=";
+        mfm_parser = beamPackages.buildMix rec {
+          name = "mfm_parser";
+          version = "0.1.1";
+
+          src = fetchFromGitea {
+            domain = "akkoma.dev";
+            owner = "AkkomaGang";
+            repo = "mfm-parser";
+            rev = "b21ab7754024af096f2d14247574f55f0063295b";
+            hash = "sha256-couG5jrAo0Fbk/WABd4n3vhXpDUp+9drxExKc5NM9CI=";
+          };
+
+          beamDeps = with final; [ phoenix_view temple ];
+          patchPhase = mimeTypePatchPhase;
         };
-      };
-
-      majic = beamPackages.buildMix rec {
-        name = "majic";
-        version = "1.0.0";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "majic";
-          rev = "80540b36939ec83f48e76c61e5000e0fd67706f0";
-          hash = "sha256-OMM9aDRvbqCOBIE+iPySU8ONRn1BqHDql22rRSmdW08=";
+        search_parser = beamPackages.buildMix rec {
+          name = "search_parser";
+          version = "0.1.0";
+
+          src = fetchFromGitHub {
+            owner = "FloatingGhost";
+            repo = "pleroma-contrib-search-parser";
+            rev = "08971a81e68686f9ac465cfb6661d51c5e4e1e7f";
+            hash = "sha256-sbo9Kcp2oT05o2GAF+IgziLPYmCkWgBfFMBCytmqg3Y=";
+          };
+
+          beamDeps = with final; [ nimble_parsec ];
         };
-
-        beamDeps = with final; [ elixir_make mime nimble_pool plug ];
-        buildInputs = [ file ];
-      };
-
-      mfm_parser = beamPackages.buildMix rec {
-        name = "mfm_parser";
-        version = "0.1.0";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "mfm-parser";
-          rev = "b21ab7754024af096f2d14247574f55f0063295b";
-          hash = "sha256-couG5jrAo0Fbk/WABd4n3vhXpDUp+9drxExKc5NM9CI=";
+        temple = beamPackages.buildMix rec {
+          name = "temple";
+          version = "0.9.0-rc.0";
+
+          src = fetchFromGitea {
+            domain = "akkoma.dev";
+            owner = "AkkomaGang";
+            repo = "temple";
+            rev = "066a699ade472d8fa42a9d730b29a61af9bc8b59";
+            hash = "sha256-qA0z8WTMjO2OixcZBARn/LbuV3s3LGtwZ9nSjj/tWBc=";
+          };
+
+          mixEnv = "dev";
+          beamDeps = with final; [ earmark_parser ex_doc makeup makeup_elixir makeup_erlang nimble_parsec ];
+          patchPhase = mimeTypePatchPhase;
         };
 
-        beamDeps = with final; [ phoenix_view temple ];
-      };
-
-      search_parser = beamPackages.buildMix rec {
-        name = "search_parser";
-        version = "0.1.0";
-
-        src = fetchFromGitHub {
-          owner = "FloatingGhost";
-          repo = "pleroma-contrib-search-parser";
-          rev = "08971a81e68686f9ac465cfb6661d51c5e4e1e7f";
-          hash = "sha256-sbo9Kcp2oT05o2GAF+IgziLPYmCkWgBfFMBCytmqg3Y=";
+        # Some additional build inputs and build fixes
+        fast_html = prev.fast_html.override {
+          nativeBuildInputs = [ cmake ];
+          dontUseCmakeConfigure = true;
         };
-
-        beamDeps = with final; [ nimble_parsec ];
-      };
-
-      temple = beamPackages.buildMix rec {
-        name = "temple";
-        version = "0.9.0-rc.0";
-
-        src = fetchFromGitea {
-          domain = "akkoma.dev";
-          owner = "AkkomaGang";
-          repo = "temple";
-          rev = "066a699ade472d8fa42a9d730b29a61af9bc8b59";
-          hash = "sha256-qA0z8WTMjO2OixcZBARn/LbuV3s3LGtwZ9nSjj/tWBc=";
+        http_signatures = beamPackages.buildMix rec {
+          name = "http_signatures";
+          version = "0.1.2";
+
+          src = fetchFromGitea {
+            domain = "akkoma.dev";
+            owner = "AkkomaGang";
+            repo = "http_signatures";
+            rev = "6640ce7d24c783ac2ef56e27d00d12e8dc85f396";
+            hash = "sha256-Q/IoVbM/TBgGCmx8AxiBHF2hARb0FbPml8N1HjN3CsE=";
+          };
+
+          beamDeps = with final; [ credo ex_doc dialyxir temple ];
+          patchPhase = ''
+            substituteInPlace mix.exs --replace ":logger" ":logger, :public_key"
+            ${mimeTypePatchPhase}
+          '';
+        };
+        majic = beamPackages.buildMix {
+          name = "majic";
+          version = "0.1.2";
+
+          src = fetchFromGitea {
+            domain = "akkoma.dev";
+            owner = "AkkomaGang";
+            repo = "majic";
+            rev = "80540b36939ec83f48e76c61e5000e0fd67706f0";
+            hash = "sha256-OMM9aDRvbqCOBIE+iPySU8ONRn1BqHDql22rRSmdW08=";
+          };
+
+          buildInputs = [ file ];
+          beamDeps = with final; [ nimble_pool mime plug credo dialyxir ex_doc elixir_make ];
+          patchPhase = mimeTypePatchPhase;
         };
 
-        mixEnv = "dev";
-        beamDeps = with final; [ earmark_parser ex_doc makeup makeup_elixir makeup_erlang nimble_parsec ];
-      };
-
-
-      # Some additional build inputs and build fixes
-      fast_html = prev.fast_html.override {
-        nativeBuildInputs = [ cmake ];
-        dontUseCmakeConfigure = true;
-      };
-
-      syslog = prev.syslog.override {
-        buildPlugins = with beamPackages; [ pc ];
-      };
-
-      mime = prev.mime.override {
-        patchPhase = let
-          cfgFile = writeText "config.exs" ''
-            import Config
-
-            config :mime, :types, %{
-              "application/xml" => ["xml"],
-              "application/xrd+xml" => ["xrd+xml"],
-              "application/jrd+json" => ["jrd+json"],
-              "application/activity+json" => ["activity+json"],
-              "application/ld+json" => ["activity+json"]
-            }
-
-            config :mime, :extensions, %{
-              "activity+json" => "application/activity+json"
-            }
-          '';
-        in ''
-          mkdir config
-          cp ${cfgFile} config/config.exs
-        '';
+        syslog = prev.syslog.override {
+          buildPlugins = with beamPackages; [ pc ];
+        };
       };
-    });
   };
 
   passthru = {
@@ -229,7 +222,7 @@ beamPackages.mixRelease rec {
     description = "ActivityPub microblogging server";
     homepage = "https://akkoma.social";
     license = licenses.agpl3Only;
-    maintainers = with maintainers; [ mvs ];
+    maintainers = with maintainers; [ mvs tcmal ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/servers/akkoma/mix.nix b/pkgs/servers/akkoma/mix.nix
index 9eaa2a3d95264..1519894e85050 100644
--- a/pkgs/servers/akkoma/mix.nix
+++ b/pkgs/servers/akkoma/mix.nix
@@ -1,5 +1,8 @@
-{ lib, beamPackages, overrides ? (x: y: {}) }:
-
+{ lib
+, beamPackages
+, overrides ? (x: y: { })
+,
+}:
 let
   buildRebar3 = lib.makeOverridable beamPackages.buildRebar3;
   buildMix = lib.makeOverridable beamPackages.buildMix;
@@ -7,1605 +10,1606 @@ let
 
   self = packages // (overrides self packages);
 
-  packages = with beamPackages; with self; {
-    argon2_elixir = buildMix rec {
-      name = "argon2_elixir";
-      version = "3.2.1";
+  packages = with beamPackages;
+    with self; {
+      argon2_elixir = buildMix rec {
+        name = "argon2_elixir";
+        version = "3.2.1";
+
+        src = fetchHex {
+          pkg = "argon2_elixir";
+          version = "${version}";
+          sha256 = "a813b78217394530b5fcf4c8070feee43df03ffef938d044019169c766315690";
+        };
 
-      src = fetchHex {
-        pkg = "argon2_elixir";
-        version = "${version}";
-        sha256 = "a813b78217394530b5fcf4c8070feee43df03ffef938d044019169c766315690";
+        beamDeps = [ comeonin elixir_make ];
       };
 
-      beamDeps = [ comeonin elixir_make ];
-    };
+      base62 = buildMix rec {
+        name = "base62";
+        version = "1.2.2";
 
-    base62 = buildMix rec {
-      name = "base62";
-      version = "1.2.2";
+        src = fetchHex {
+          pkg = "base62";
+          version = "${version}";
+          sha256 = "d41336bda8eaa5be197f1e4592400513ee60518e5b9f4dcf38f4b4dae6f377bb";
+        };
 
-      src = fetchHex {
-        pkg = "base62";
-        version = "${version}";
-        sha256 = "d41336bda8eaa5be197f1e4592400513ee60518e5b9f4dcf38f4b4dae6f377bb";
+        beamDeps = [ custom_base ];
       };
 
-      beamDeps = [ custom_base ];
-    };
+      bbcode_pleroma = buildMix rec {
+        name = "bbcode_pleroma";
+        version = "0.2.0";
 
-    bbcode_pleroma = buildMix rec {
-      name = "bbcode_pleroma";
-      version = "0.2.0";
+        src = fetchHex {
+          pkg = "bbcode_pleroma";
+          version = "${version}";
+          sha256 = "19851074419a5fedb4ef49e1f01b30df504bb5dbb6d6adfc135238063bebd1c3";
+        };
 
-      src = fetchHex {
-        pkg = "bbcode_pleroma";
-        version = "${version}";
-        sha256 = "19851074419a5fedb4ef49e1f01b30df504bb5dbb6d6adfc135238063bebd1c3";
+        beamDeps = [ nimble_parsec ];
       };
 
-      beamDeps = [ nimble_parsec ];
-    };
+      bcrypt_elixir = buildMix rec {
+        name = "bcrypt_elixir";
+        version = "3.0.1";
 
-    bcrypt_elixir = buildMix rec {
-      name = "bcrypt_elixir";
-      version = "3.0.1";
+        src = fetchHex {
+          pkg = "bcrypt_elixir";
+          version = "${version}";
+          sha256 = "486bb95efb645d1efc6794c1ddd776a186a9a713abf06f45708a6ce324fb96cf";
+        };
 
-      src = fetchHex {
-        pkg = "bcrypt_elixir";
-        version = "${version}";
-        sha256 = "486bb95efb645d1efc6794c1ddd776a186a9a713abf06f45708a6ce324fb96cf";
+        beamDeps = [ comeonin elixir_make ];
       };
 
-      beamDeps = [ comeonin elixir_make ];
-    };
+      benchee = buildMix rec {
+        name = "benchee";
+        version = "1.2.0";
 
-    benchee = buildMix rec {
-      name = "benchee";
-      version = "1.2.0";
+        src = fetchHex {
+          pkg = "benchee";
+          version = "${version}";
+          sha256 = "ee729e53217898b8fd30aaad3cce61973dab61574ae6f48229fe7ff42d5e4457";
+        };
 
-      src = fetchHex {
-        pkg = "benchee";
-        version = "${version}";
-        sha256 = "ee729e53217898b8fd30aaad3cce61973dab61574ae6f48229fe7ff42d5e4457";
+        beamDeps = [ deep_merge statistex ];
       };
 
-      beamDeps = [ deep_merge statistex ];
-    };
+      bunt = buildMix rec {
+        name = "bunt";
+        version = "0.2.1";
 
-    bunt = buildMix rec {
-      name = "bunt";
-      version = "0.2.1";
+        src = fetchHex {
+          pkg = "bunt";
+          version = "${version}";
+          sha256 = "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5";
+        };
 
-      src = fetchHex {
-        pkg = "bunt";
-        version = "${version}";
-        sha256 = "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      cachex = buildMix rec {
+        name = "cachex";
+        version = "3.6.0";
 
-    cachex = buildMix rec {
-      name = "cachex";
-      version = "3.6.0";
+        src = fetchHex {
+          pkg = "cachex";
+          version = "${version}";
+          sha256 = "ebf24e373883bc8e0c8d894a63bbe102ae13d918f790121f5cfe6e485cc8e2e2";
+        };
 
-      src = fetchHex {
-        pkg = "cachex";
-        version = "${version}";
-        sha256 = "ebf24e373883bc8e0c8d894a63bbe102ae13d918f790121f5cfe6e485cc8e2e2";
+        beamDeps = [ eternal jumper sleeplocks unsafe ];
       };
 
-      beamDeps = [ eternal jumper sleeplocks unsafe ];
-    };
+      calendar = buildMix rec {
+        name = "calendar";
+        version = "1.0.0";
 
-    calendar = buildMix rec {
-      name = "calendar";
-      version = "1.0.0";
+        src = fetchHex {
+          pkg = "calendar";
+          version = "${version}";
+          sha256 = "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f";
+        };
 
-      src = fetchHex {
-        pkg = "calendar";
-        version = "${version}";
-        sha256 = "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f";
+        beamDeps = [ tzdata ];
       };
 
-      beamDeps = [ tzdata ];
-    };
+      castore = buildMix rec {
+        name = "castore";
+        version = "1.0.5";
 
-    castore = buildMix rec {
-      name = "castore";
-      version = "1.0.5";
+        src = fetchHex {
+          pkg = "castore";
+          version = "${version}";
+          sha256 = "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578";
+        };
 
-      src = fetchHex {
-        pkg = "castore";
-        version = "${version}";
-        sha256 = "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      certifi = buildRebar3 rec {
+        name = "certifi";
+        version = "2.12.0";
 
-    certifi = buildRebar3 rec {
-      name = "certifi";
-      version = "2.12.0";
+        src = fetchHex {
+          pkg = "certifi";
+          version = "${version}";
+          sha256 = "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c";
+        };
 
-      src = fetchHex {
-        pkg = "certifi";
-        version = "${version}";
-        sha256 = "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      combine = buildMix rec {
+        name = "combine";
+        version = "0.10.0";
 
-    combine = buildMix rec {
-      name = "combine";
-      version = "0.10.0";
+        src = fetchHex {
+          pkg = "combine";
+          version = "${version}";
+          sha256 = "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b";
+        };
 
-      src = fetchHex {
-        pkg = "combine";
-        version = "${version}";
-        sha256 = "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      comeonin = buildMix rec {
+        name = "comeonin";
+        version = "5.4.0";
 
-    comeonin = buildMix rec {
-      name = "comeonin";
-      version = "5.4.0";
+        src = fetchHex {
+          pkg = "comeonin";
+          version = "${version}";
+          sha256 = "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1";
+        };
 
-      src = fetchHex {
-        pkg = "comeonin";
-        version = "${version}";
-        sha256 = "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      connection = buildMix rec {
+        name = "connection";
+        version = "1.1.0";
 
-    connection = buildMix rec {
-      name = "connection";
-      version = "1.1.0";
+        src = fetchHex {
+          pkg = "connection";
+          version = "${version}";
+          sha256 = "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c";
+        };
 
-      src = fetchHex {
-        pkg = "connection";
-        version = "${version}";
-        sha256 = "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      cors_plug = buildMix rec {
+        name = "cors_plug";
+        version = "3.0.3";
 
-    cors_plug = buildMix rec {
-      name = "cors_plug";
-      version = "3.0.3";
+        src = fetchHex {
+          pkg = "cors_plug";
+          version = "${version}";
+          sha256 = "3f2d759e8c272ed3835fab2ef11b46bddab8c1ab9528167bd463b6452edf830d";
+        };
 
-      src = fetchHex {
-        pkg = "cors_plug";
-        version = "${version}";
-        sha256 = "3f2d759e8c272ed3835fab2ef11b46bddab8c1ab9528167bd463b6452edf830d";
+        beamDeps = [ plug ];
       };
 
-      beamDeps = [ plug ];
-    };
+      cowboy = buildErlangMk rec {
+        name = "cowboy";
+        version = "2.10.0";
 
-    cowboy = buildErlangMk rec {
-      name = "cowboy";
-      version = "2.10.0";
+        src = fetchHex {
+          pkg = "cowboy";
+          version = "${version}";
+          sha256 = "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b";
+        };
 
-      src = fetchHex {
-        pkg = "cowboy";
-        version = "${version}";
-        sha256 = "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b";
+        beamDeps = [ cowlib ranch ];
       };
 
-      beamDeps = [ cowlib ranch ];
-    };
+      cowboy_telemetry = buildRebar3 rec {
+        name = "cowboy_telemetry";
+        version = "0.4.0";
 
-    cowboy_telemetry = buildRebar3 rec {
-      name = "cowboy_telemetry";
-      version = "0.4.0";
+        src = fetchHex {
+          pkg = "cowboy_telemetry";
+          version = "${version}";
+          sha256 = "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de";
+        };
 
-      src = fetchHex {
-        pkg = "cowboy_telemetry";
-        version = "${version}";
-        sha256 = "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de";
+        beamDeps = [ cowboy telemetry ];
       };
 
-      beamDeps = [ cowboy telemetry ];
-    };
+      cowlib = buildRebar3 rec {
+        name = "cowlib";
+        version = "2.12.1";
 
-    cowlib = buildRebar3 rec {
-      name = "cowlib";
-      version = "2.12.1";
+        src = fetchHex {
+          pkg = "cowlib";
+          version = "${version}";
+          sha256 = "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0";
+        };
 
-      src = fetchHex {
-        pkg = "cowlib";
-        version = "${version}";
-        sha256 = "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      credo = buildMix rec {
+        name = "credo";
+        version = "1.7.1";
 
-    credo = buildMix rec {
-      name = "credo";
-      version = "1.7.1";
+        src = fetchHex {
+          pkg = "credo";
+          version = "${version}";
+          sha256 = "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2";
+        };
 
-      src = fetchHex {
-        pkg = "credo";
-        version = "${version}";
-        sha256 = "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2";
+        beamDeps = [ bunt file_system jason ];
       };
 
-      beamDeps = [ bunt file_system jason ];
-    };
+      custom_base = buildMix rec {
+        name = "custom_base";
+        version = "0.2.1";
 
-    custom_base = buildMix rec {
-      name = "custom_base";
-      version = "0.2.1";
+        src = fetchHex {
+          pkg = "custom_base";
+          version = "${version}";
+          sha256 = "8df019facc5ec9603e94f7270f1ac73ddf339f56ade76a721eaa57c1493ba463";
+        };
 
-      src = fetchHex {
-        pkg = "custom_base";
-        version = "${version}";
-        sha256 = "8df019facc5ec9603e94f7270f1ac73ddf339f56ade76a721eaa57c1493ba463";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      db_connection = buildMix rec {
+        name = "db_connection";
+        version = "2.6.0";
 
-    db_connection = buildMix rec {
-      name = "db_connection";
-      version = "2.6.0";
+        src = fetchHex {
+          pkg = "db_connection";
+          version = "${version}";
+          sha256 = "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3";
+        };
 
-      src = fetchHex {
-        pkg = "db_connection";
-        version = "${version}";
-        sha256 = "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3";
+        beamDeps = [ telemetry ];
       };
 
-      beamDeps = [ telemetry ];
-    };
+      decimal = buildMix rec {
+        name = "decimal";
+        version = "2.1.1";
 
-    decimal = buildMix rec {
-      name = "decimal";
-      version = "2.1.1";
+        src = fetchHex {
+          pkg = "decimal";
+          version = "${version}";
+          sha256 = "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc";
+        };
 
-      src = fetchHex {
-        pkg = "decimal";
-        version = "${version}";
-        sha256 = "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      deep_merge = buildMix rec {
+        name = "deep_merge";
+        version = "1.0.0";
 
-    deep_merge = buildMix rec {
-      name = "deep_merge";
-      version = "1.0.0";
+        src = fetchHex {
+          pkg = "deep_merge";
+          version = "${version}";
+          sha256 = "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430";
+        };
 
-      src = fetchHex {
-        pkg = "deep_merge";
-        version = "${version}";
-        sha256 = "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      dialyxir = buildMix rec {
+        name = "dialyxir";
+        version = "1.4.2";
 
-    dialyxir = buildMix rec {
-      name = "dialyxir";
-      version = "1.4.2";
+        src = fetchHex {
+          pkg = "dialyxir";
+          version = "${version}";
+          sha256 = "516603d8067b2fd585319e4b13d3674ad4f314a5902ba8130cd97dc902ce6bbd";
+        };
 
-      src = fetchHex {
-        pkg = "dialyxir";
-        version = "${version}";
-        sha256 = "516603d8067b2fd585319e4b13d3674ad4f314a5902ba8130cd97dc902ce6bbd";
+        beamDeps = [ erlex ];
       };
 
-      beamDeps = [ erlex ];
-    };
+      earmark = buildMix rec {
+        name = "earmark";
+        version = "1.4.46";
 
-    earmark = buildMix rec {
-      name = "earmark";
-      version = "1.4.46";
+        src = fetchHex {
+          pkg = "earmark";
+          version = "${version}";
+          sha256 = "798d86db3d79964e759ddc0c077d5eb254968ed426399fbf5a62de2b5ff8910a";
+        };
 
-      src = fetchHex {
-        pkg = "earmark";
-        version = "${version}";
-        sha256 = "798d86db3d79964e759ddc0c077d5eb254968ed426399fbf5a62de2b5ff8910a";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      earmark_parser = buildMix rec {
+        name = "earmark_parser";
+        version = "1.4.39";
 
-    earmark_parser = buildMix rec {
-      name = "earmark_parser";
-      version = "1.4.39";
+        src = fetchHex {
+          pkg = "earmark_parser";
+          version = "${version}";
+          sha256 = "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944";
+        };
 
-      src = fetchHex {
-        pkg = "earmark_parser";
-        version = "${version}";
-        sha256 = "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      eblurhash = buildRebar3 rec {
+        name = "eblurhash";
+        version = "1.2.2";
 
-    eblurhash = buildRebar3 rec {
-      name = "eblurhash";
-      version = "1.2.2";
+        src = fetchHex {
+          pkg = "eblurhash";
+          version = "${version}";
+          sha256 = "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c";
+        };
 
-      src = fetchHex {
-        pkg = "eblurhash";
-        version = "${version}";
-        sha256 = "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      ecto = buildMix rec {
+        name = "ecto";
+        version = "3.10.3";
 
-    ecto = buildMix rec {
-      name = "ecto";
-      version = "3.10.3";
+        src = fetchHex {
+          pkg = "ecto";
+          version = "${version}";
+          sha256 = "44bec74e2364d491d70f7e42cd0d690922659d329f6465e89feb8a34e8cd3433";
+        };
 
-      src = fetchHex {
-        pkg = "ecto";
-        version = "${version}";
-        sha256 = "44bec74e2364d491d70f7e42cd0d690922659d329f6465e89feb8a34e8cd3433";
+        beamDeps = [ decimal jason telemetry ];
       };
 
-      beamDeps = [ decimal jason telemetry ];
-    };
+      ecto_enum = buildMix rec {
+        name = "ecto_enum";
+        version = "1.4.0";
 
-    ecto_enum = buildMix rec {
-      name = "ecto_enum";
-      version = "1.4.0";
+        src = fetchHex {
+          pkg = "ecto_enum";
+          version = "${version}";
+          sha256 = "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4";
+        };
 
-      src = fetchHex {
-        pkg = "ecto_enum";
-        version = "${version}";
-        sha256 = "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4";
+        beamDeps = [ ecto ecto_sql postgrex ];
       };
 
-      beamDeps = [ ecto ecto_sql postgrex ];
-    };
+      ecto_psql_extras = buildMix rec {
+        name = "ecto_psql_extras";
+        version = "0.7.14";
 
-    ecto_psql_extras = buildMix rec {
-      name = "ecto_psql_extras";
-      version = "0.7.14";
+        src = fetchHex {
+          pkg = "ecto_psql_extras";
+          version = "${version}";
+          sha256 = "22f5f98592dd597db9416fcef00effae0787669fdcb6faf447e982b553798e98";
+        };
 
-      src = fetchHex {
-        pkg = "ecto_psql_extras";
-        version = "${version}";
-        sha256 = "22f5f98592dd597db9416fcef00effae0787669fdcb6faf447e982b553798e98";
+        beamDeps = [ ecto_sql postgrex table_rex ];
       };
 
-      beamDeps = [ ecto_sql postgrex table_rex ];
-    };
+      ecto_sql = buildMix rec {
+        name = "ecto_sql";
+        version = "3.10.2";
 
-    ecto_sql = buildMix rec {
-      name = "ecto_sql";
-      version = "3.10.2";
+        src = fetchHex {
+          pkg = "ecto_sql";
+          version = "${version}";
+          sha256 = "68c018debca57cb9235e3889affdaec7a10616a4e3a80c99fa1d01fdafaa9007";
+        };
 
-      src = fetchHex {
-        pkg = "ecto_sql";
-        version = "${version}";
-        sha256 = "68c018debca57cb9235e3889affdaec7a10616a4e3a80c99fa1d01fdafaa9007";
+        beamDeps = [ db_connection ecto postgrex telemetry ];
       };
 
-      beamDeps = [ db_connection ecto postgrex telemetry ];
-    };
+      elixir_make = buildMix rec {
+        name = "elixir_make";
+        version = "0.7.7";
 
-    elixir_make = buildMix rec {
-      name = "elixir_make";
-      version = "0.7.7";
+        src = fetchHex {
+          pkg = "elixir_make";
+          version = "${version}";
+          sha256 = "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c";
+        };
 
-      src = fetchHex {
-        pkg = "elixir_make";
-        version = "${version}";
-        sha256 = "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c";
+        beamDeps = [ castore ];
       };
 
-      beamDeps = [ castore ];
-    };
+      elixir_xml_to_map = buildMix rec {
+        name = "elixir_xml_to_map";
+        version = "3.0.0";
 
-    elixir_xml_to_map = buildMix rec {
-      name = "elixir_xml_to_map";
-      version = "3.0.0";
+        src = fetchHex {
+          pkg = "elixir_xml_to_map";
+          version = "${version}";
+          sha256 = "11222dd7f029f8db7a6662b41c992dbdb0e1c6e4fdea6a42056f9d27c847efbb";
+        };
 
-      src = fetchHex {
-        pkg = "elixir_xml_to_map";
-        version = "${version}";
-        sha256 = "11222dd7f029f8db7a6662b41c992dbdb0e1c6e4fdea6a42056f9d27c847efbb";
+        beamDeps = [ erlsom ];
       };
 
-      beamDeps = [ erlsom ];
-    };
+      erlex = buildMix rec {
+        name = "erlex";
+        version = "0.2.6";
 
-    erlex = buildMix rec {
-      name = "erlex";
-      version = "0.2.6";
+        src = fetchHex {
+          pkg = "erlex";
+          version = "${version}";
+          sha256 = "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75";
+        };
 
-      src = fetchHex {
-        pkg = "erlex";
-        version = "${version}";
-        sha256 = "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      erlsom = buildRebar3 rec {
+        name = "erlsom";
+        version = "1.5.1";
 
-    erlsom = buildRebar3 rec {
-      name = "erlsom";
-      version = "1.5.1";
+        src = fetchHex {
+          pkg = "erlsom";
+          version = "${version}";
+          sha256 = "7965485494c5844dd127656ac40f141aadfa174839ec1be1074e7edf5b4239eb";
+        };
 
-      src = fetchHex {
-        pkg = "erlsom";
-        version = "${version}";
-        sha256 = "7965485494c5844dd127656ac40f141aadfa174839ec1be1074e7edf5b4239eb";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      eternal = buildMix rec {
+        name = "eternal";
+        version = "1.2.2";
 
-    eternal = buildMix rec {
-      name = "eternal";
-      version = "1.2.2";
+        src = fetchHex {
+          pkg = "eternal";
+          version = "${version}";
+          sha256 = "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782";
+        };
 
-      src = fetchHex {
-        pkg = "eternal";
-        version = "${version}";
-        sha256 = "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      ex_aws = buildMix rec {
+        name = "ex_aws";
+        version = "2.5.0";
 
-    ex_aws = buildMix rec {
-      name = "ex_aws";
-      version = "2.5.0";
+        src = fetchHex {
+          pkg = "ex_aws";
+          version = "${version}";
+          sha256 = "971b86e5495fc0ae1c318e35e23f389e74cf322f2c02d34037c6fc6d405006f1";
+        };
 
-      src = fetchHex {
-        pkg = "ex_aws";
-        version = "${version}";
-        sha256 = "971b86e5495fc0ae1c318e35e23f389e74cf322f2c02d34037c6fc6d405006f1";
+        beamDeps = [ hackney jason mime sweet_xml telemetry ];
       };
 
-      beamDeps = [ hackney jason mime sweet_xml telemetry ];
-    };
+      ex_aws_s3 = buildMix rec {
+        name = "ex_aws_s3";
+        version = "2.5.2";
 
-    ex_aws_s3 = buildMix rec {
-      name = "ex_aws_s3";
-      version = "2.5.2";
+        src = fetchHex {
+          pkg = "ex_aws_s3";
+          version = "${version}";
+          sha256 = "cc5bd945a22a99eece4721d734ae2452d3717e81c357a781c8574663254df4a1";
+        };
 
-      src = fetchHex {
-        pkg = "ex_aws_s3";
-        version = "${version}";
-        sha256 = "cc5bd945a22a99eece4721d734ae2452d3717e81c357a781c8574663254df4a1";
+        beamDeps = [ ex_aws sweet_xml ];
       };
 
-      beamDeps = [ ex_aws sweet_xml ];
-    };
+      ex_const = buildMix rec {
+        name = "ex_const";
+        version = "0.2.4";
 
-    ex_const = buildMix rec {
-      name = "ex_const";
-      version = "0.2.4";
+        src = fetchHex {
+          pkg = "ex_const";
+          version = "${version}";
+          sha256 = "96fd346610cc992b8f896ed26a98be82ac4efb065a0578f334a32d60a3ba9767";
+        };
 
-      src = fetchHex {
-        pkg = "ex_const";
-        version = "${version}";
-        sha256 = "96fd346610cc992b8f896ed26a98be82ac4efb065a0578f334a32d60a3ba9767";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      ex_doc = buildMix rec {
+        name = "ex_doc";
+        version = "0.31.0";
 
-    ex_doc = buildMix rec {
-      name = "ex_doc";
-      version = "0.31.0";
+        src = fetchHex {
+          pkg = "ex_doc";
+          version = "${version}";
+          sha256 = "5350cafa6b7f77bdd107aa2199fe277acf29d739aba5aee7e865fc680c62a110";
+        };
 
-      src = fetchHex {
-        pkg = "ex_doc";
-        version = "${version}";
-        sha256 = "5350cafa6b7f77bdd107aa2199fe277acf29d739aba5aee7e865fc680c62a110";
+        beamDeps = [ earmark_parser makeup_elixir makeup_erlang ];
       };
 
-      beamDeps = [ earmark_parser makeup_elixir makeup_erlang ];
-    };
+      ex_machina = buildMix rec {
+        name = "ex_machina";
+        version = "2.7.0";
 
-    ex_machina = buildMix rec {
-      name = "ex_machina";
-      version = "2.7.0";
+        src = fetchHex {
+          pkg = "ex_machina";
+          version = "${version}";
+          sha256 = "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8";
+        };
 
-      src = fetchHex {
-        pkg = "ex_machina";
-        version = "${version}";
-        sha256 = "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8";
+        beamDeps = [ ecto ecto_sql ];
       };
 
-      beamDeps = [ ecto ecto_sql ];
-    };
+      ex_syslogger = buildMix rec {
+        name = "ex_syslogger";
+        version = "2.0.0";
 
-    ex_syslogger = buildMix rec {
-      name = "ex_syslogger";
-      version = "2.0.0";
+        src = fetchHex {
+          pkg = "ex_syslogger";
+          version = "${version}";
+          sha256 = "a52b2fe71764e9e6ecd149ab66635812f68e39279cbeee27c52c0e35e8b8019e";
+        };
 
-      src = fetchHex {
-        pkg = "ex_syslogger";
-        version = "${version}";
-        sha256 = "a52b2fe71764e9e6ecd149ab66635812f68e39279cbeee27c52c0e35e8b8019e";
+        beamDeps = [ jason syslog ];
       };
 
-      beamDeps = [ jason syslog ];
-    };
+      excoveralls = buildMix rec {
+        name = "excoveralls";
+        version = "0.16.1";
 
-    excoveralls = buildMix rec {
-      name = "excoveralls";
-      version = "0.16.1";
+        src = fetchHex {
+          pkg = "excoveralls";
+          version = "${version}";
+          sha256 = "dae763468e2008cf7075a64cb1249c97cb4bc71e236c5c2b5e5cdf1cfa2bf138";
+        };
 
-      src = fetchHex {
-        pkg = "excoveralls";
-        version = "${version}";
-        sha256 = "dae763468e2008cf7075a64cb1249c97cb4bc71e236c5c2b5e5cdf1cfa2bf138";
+        beamDeps = [ hackney jason ];
       };
 
-      beamDeps = [ hackney jason ];
-    };
+      expo = buildMix rec {
+        name = "expo";
+        version = "0.4.1";
 
-    expo = buildMix rec {
-      name = "expo";
-      version = "0.4.1";
+        src = fetchHex {
+          pkg = "expo";
+          version = "${version}";
+          sha256 = "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47";
+        };
 
-      src = fetchHex {
-        pkg = "expo";
-        version = "${version}";
-        sha256 = "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      fast_html = buildMix rec {
+        name = "fast_html";
+        version = "2.2.0";
 
-    fast_html = buildMix rec {
-      name = "fast_html";
-      version = "2.2.0";
+        src = fetchHex {
+          pkg = "fast_html";
+          version = "${version}";
+          sha256 = "064c4f23b4a6168f9187dac8984b056f2c531bb0787f559fd6a8b34b38aefbae";
+        };
 
-      src = fetchHex {
-        pkg = "fast_html";
-        version = "${version}";
-        sha256 = "064c4f23b4a6168f9187dac8984b056f2c531bb0787f559fd6a8b34b38aefbae";
+        beamDeps = [ elixir_make nimble_pool ];
       };
 
-      beamDeps = [ elixir_make nimble_pool ];
-    };
+      fast_sanitize = buildMix rec {
+        name = "fast_sanitize";
+        version = "0.2.3";
 
-    fast_sanitize = buildMix rec {
-      name = "fast_sanitize";
-      version = "0.2.3";
+        src = fetchHex {
+          pkg = "fast_sanitize";
+          version = "${version}";
+          sha256 = "e8ad286d10d0386e15d67d0ee125245ebcfbc7d7290b08712ba9013c8c5e56e2";
+        };
 
-      src = fetchHex {
-        pkg = "fast_sanitize";
-        version = "${version}";
-        sha256 = "e8ad286d10d0386e15d67d0ee125245ebcfbc7d7290b08712ba9013c8c5e56e2";
+        beamDeps = [ fast_html plug ];
       };
 
-      beamDeps = [ fast_html plug ];
-    };
+      file_system = buildMix rec {
+        name = "file_system";
+        version = "0.2.10";
 
-    file_system = buildMix rec {
-      name = "file_system";
-      version = "0.2.10";
+        src = fetchHex {
+          pkg = "file_system";
+          version = "${version}";
+          sha256 = "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc";
+        };
 
-      src = fetchHex {
-        pkg = "file_system";
-        version = "${version}";
-        sha256 = "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      finch = buildMix rec {
+        name = "finch";
+        version = "0.16.0";
 
-    finch = buildMix rec {
-      name = "finch";
-      version = "0.16.0";
+        src = fetchHex {
+          pkg = "finch";
+          version = "${version}";
+          sha256 = "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5";
+        };
 
-      src = fetchHex {
-        pkg = "finch";
-        version = "${version}";
-        sha256 = "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5";
+        beamDeps = [ castore mime mint nimble_options nimble_pool telemetry ];
       };
 
-      beamDeps = [ castore mime mint nimble_options nimble_pool telemetry ];
-    };
+      flake_id = buildMix rec {
+        name = "flake_id";
+        version = "0.1.0";
 
-    flake_id = buildMix rec {
-      name = "flake_id";
-      version = "0.1.0";
+        src = fetchHex {
+          pkg = "flake_id";
+          version = "${version}";
+          sha256 = "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827";
+        };
 
-      src = fetchHex {
-        pkg = "flake_id";
-        version = "${version}";
-        sha256 = "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827";
+        beamDeps = [ base62 ecto ];
       };
 
-      beamDeps = [ base62 ecto ];
-    };
+      floki = buildMix rec {
+        name = "floki";
+        version = "0.35.2";
 
-    floki = buildMix rec {
-      name = "floki";
-      version = "0.35.2";
+        src = fetchHex {
+          pkg = "floki";
+          version = "${version}";
+          sha256 = "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9";
+        };
 
-      src = fetchHex {
-        pkg = "floki";
-        version = "${version}";
-        sha256 = "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      gen_smtp = buildRebar3 rec {
+        name = "gen_smtp";
+        version = "1.2.0";
 
-    gen_smtp = buildRebar3 rec {
-      name = "gen_smtp";
-      version = "1.2.0";
+        src = fetchHex {
+          pkg = "gen_smtp";
+          version = "${version}";
+          sha256 = "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779";
+        };
 
-      src = fetchHex {
-        pkg = "gen_smtp";
-        version = "${version}";
-        sha256 = "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779";
+        beamDeps = [ ranch ];
       };
 
-      beamDeps = [ ranch ];
-    };
+      gettext = buildMix rec {
+        name = "gettext";
+        version = "0.22.3";
 
-    gettext = buildMix rec {
-      name = "gettext";
-      version = "0.22.3";
+        src = fetchHex {
+          pkg = "gettext";
+          version = "${version}";
+          sha256 = "935f23447713954a6866f1bb28c3a878c4c011e802bcd68a726f5e558e4b64bd";
+        };
 
-      src = fetchHex {
-        pkg = "gettext";
-        version = "${version}";
-        sha256 = "935f23447713954a6866f1bb28c3a878c4c011e802bcd68a726f5e558e4b64bd";
+        beamDeps = [ expo ];
       };
 
-      beamDeps = [ expo ];
-    };
+      hackney = buildRebar3 rec {
+        name = "hackney";
+        version = "1.20.1";
 
-    hackney = buildRebar3 rec {
-      name = "hackney";
-      version = "1.20.1";
+        src = fetchHex {
+          pkg = "hackney";
+          version = "${version}";
+          sha256 = "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3";
+        };
 
-      src = fetchHex {
-        pkg = "hackney";
-        version = "${version}";
-        sha256 = "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3";
+        beamDeps = [ certifi idna metrics mimerl parse_trans ssl_verify_fun unicode_util_compat ];
       };
 
-      beamDeps = [ certifi idna metrics mimerl parse_trans ssl_verify_fun unicode_util_compat ];
-    };
+      hpax = buildMix rec {
+        name = "hpax";
+        version = "0.1.2";
 
-    hpax = buildMix rec {
-      name = "hpax";
-      version = "0.1.2";
+        src = fetchHex {
+          pkg = "hpax";
+          version = "${version}";
+          sha256 = "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13";
+        };
 
-      src = fetchHex {
-        pkg = "hpax";
-        version = "${version}";
-        sha256 = "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      html_entities = buildMix rec {
+        name = "html_entities";
+        version = "0.5.2";
 
-    html_entities = buildMix rec {
-      name = "html_entities";
-      version = "0.5.2";
+        src = fetchHex {
+          pkg = "html_entities";
+          version = "${version}";
+          sha256 = "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc";
+        };
 
-      src = fetchHex {
-        pkg = "html_entities";
-        version = "${version}";
-        sha256 = "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      httpoison = buildMix rec {
+        name = "httpoison";
+        version = "1.8.2";
 
-    httpoison = buildMix rec {
-      name = "httpoison";
-      version = "1.8.2";
+        src = fetchHex {
+          pkg = "httpoison";
+          version = "${version}";
+          sha256 = "2bb350d26972e30c96e2ca74a1aaf8293d61d0742ff17f01e0279fef11599921";
+        };
 
-      src = fetchHex {
-        pkg = "httpoison";
-        version = "${version}";
-        sha256 = "2bb350d26972e30c96e2ca74a1aaf8293d61d0742ff17f01e0279fef11599921";
+        beamDeps = [ hackney ];
       };
 
-      beamDeps = [ hackney ];
-    };
+      idna = buildRebar3 rec {
+        name = "idna";
+        version = "6.1.1";
 
-    idna = buildRebar3 rec {
-      name = "idna";
-      version = "6.1.1";
+        src = fetchHex {
+          pkg = "idna";
+          version = "${version}";
+          sha256 = "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea";
+        };
 
-      src = fetchHex {
-        pkg = "idna";
-        version = "${version}";
-        sha256 = "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea";
+        beamDeps = [ unicode_util_compat ];
       };
 
-      beamDeps = [ unicode_util_compat ];
-    };
+      inet_cidr = buildMix rec {
+        name = "inet_cidr";
+        version = "1.0.4";
 
-    inet_cidr = buildMix rec {
-      name = "inet_cidr";
-      version = "1.0.4";
+        src = fetchHex {
+          pkg = "inet_cidr";
+          version = "${version}";
+          sha256 = "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc";
+        };
 
-      src = fetchHex {
-        pkg = "inet_cidr";
-        version = "${version}";
-        sha256 = "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      jason = buildMix rec {
+        name = "jason";
+        version = "1.4.1";
 
-    jason = buildMix rec {
-      name = "jason";
-      version = "1.4.1";
+        src = fetchHex {
+          pkg = "jason";
+          version = "${version}";
+          sha256 = "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1";
+        };
 
-      src = fetchHex {
-        pkg = "jason";
-        version = "${version}";
-        sha256 = "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1";
+        beamDeps = [ decimal ];
       };
 
-      beamDeps = [ decimal ];
-    };
+      joken = buildMix rec {
+        name = "joken";
+        version = "2.6.0";
 
-    joken = buildMix rec {
-      name = "joken";
-      version = "2.6.0";
+        src = fetchHex {
+          pkg = "joken";
+          version = "${version}";
+          sha256 = "5a95b05a71cd0b54abd35378aeb1d487a23a52c324fa7efdffc512b655b5aaa7";
+        };
 
-      src = fetchHex {
-        pkg = "joken";
-        version = "${version}";
-        sha256 = "5a95b05a71cd0b54abd35378aeb1d487a23a52c324fa7efdffc512b655b5aaa7";
+        beamDeps = [ jose ];
       };
 
-      beamDeps = [ jose ];
-    };
+      jose = buildMix rec {
+        name = "jose";
+        version = "1.11.6";
 
-    jose = buildMix rec {
-      name = "jose";
-      version = "1.11.6";
+        src = fetchHex {
+          pkg = "jose";
+          version = "${version}";
+          sha256 = "6275cb75504f9c1e60eeacb771adfeee4905a9e182103aa59b53fed651ff9738";
+        };
 
-      src = fetchHex {
-        pkg = "jose";
-        version = "${version}";
-        sha256 = "6275cb75504f9c1e60eeacb771adfeee4905a9e182103aa59b53fed651ff9738";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      jumper = buildMix rec {
+        name = "jumper";
+        version = "1.0.2";
 
-    jumper = buildMix rec {
-      name = "jumper";
-      version = "1.0.2";
+        src = fetchHex {
+          pkg = "jumper";
+          version = "${version}";
+          sha256 = "9b7782409021e01ab3c08270e26f36eb62976a38c1aa64b2eaf6348422f165e1";
+        };
 
-      src = fetchHex {
-        pkg = "jumper";
-        version = "${version}";
-        sha256 = "9b7782409021e01ab3c08270e26f36eb62976a38c1aa64b2eaf6348422f165e1";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      mail = buildMix rec {
+        name = "mail";
+        version = "0.3.1";
 
-    mail = buildMix rec {
-      name = "mail";
-      version = "0.3.1";
+        src = fetchHex {
+          pkg = "mail";
+          version = "${version}";
+          sha256 = "1db701e89865c1d5fa296b2b57b1cd587587cca8d8a1a22892b35ef5a8e352a6";
+        };
 
-      src = fetchHex {
-        pkg = "mail";
-        version = "${version}";
-        sha256 = "1db701e89865c1d5fa296b2b57b1cd587587cca8d8a1a22892b35ef5a8e352a6";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      makeup = buildMix rec {
+        name = "makeup";
+        version = "1.1.1";
 
-    makeup = buildMix rec {
-      name = "makeup";
-      version = "1.1.1";
+        src = fetchHex {
+          pkg = "makeup";
+          version = "${version}";
+          sha256 = "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48";
+        };
 
-      src = fetchHex {
-        pkg = "makeup";
-        version = "${version}";
-        sha256 = "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48";
+        beamDeps = [ nimble_parsec ];
       };
 
-      beamDeps = [ nimble_parsec ];
-    };
+      makeup_elixir = buildMix rec {
+        name = "makeup_elixir";
+        version = "0.16.1";
 
-    makeup_elixir = buildMix rec {
-      name = "makeup_elixir";
-      version = "0.16.1";
+        src = fetchHex {
+          pkg = "makeup_elixir";
+          version = "${version}";
+          sha256 = "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6";
+        };
 
-      src = fetchHex {
-        pkg = "makeup_elixir";
-        version = "${version}";
-        sha256 = "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6";
+        beamDeps = [ makeup nimble_parsec ];
       };
 
-      beamDeps = [ makeup nimble_parsec ];
-    };
+      makeup_erlang = buildMix rec {
+        name = "makeup_erlang";
+        version = "0.1.3";
 
-    makeup_erlang = buildMix rec {
-      name = "makeup_erlang";
-      version = "0.1.3";
+        src = fetchHex {
+          pkg = "makeup_erlang";
+          version = "${version}";
+          sha256 = "b78dc853d2e670ff6390b605d807263bf606da3c82be37f9d7f68635bd886fc9";
+        };
 
-      src = fetchHex {
-        pkg = "makeup_erlang";
-        version = "${version}";
-        sha256 = "b78dc853d2e670ff6390b605d807263bf606da3c82be37f9d7f68635bd886fc9";
+        beamDeps = [ makeup ];
       };
 
-      beamDeps = [ makeup ];
-    };
+      meck = buildRebar3 rec {
+        name = "meck";
+        version = "0.9.2";
 
-    meck = buildRebar3 rec {
-      name = "meck";
-      version = "0.9.2";
+        src = fetchHex {
+          pkg = "meck";
+          version = "${version}";
+          sha256 = "81344f561357dc40a8344afa53767c32669153355b626ea9fcbc8da6b3045826";
+        };
 
-      src = fetchHex {
-        pkg = "meck";
-        version = "${version}";
-        sha256 = "81344f561357dc40a8344afa53767c32669153355b626ea9fcbc8da6b3045826";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      metrics = buildRebar3 rec {
+        name = "metrics";
+        version = "1.0.1";
 
-    metrics = buildRebar3 rec {
-      name = "metrics";
-      version = "1.0.1";
+        src = fetchHex {
+          pkg = "metrics";
+          version = "${version}";
+          sha256 = "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16";
+        };
 
-      src = fetchHex {
-        pkg = "metrics";
-        version = "${version}";
-        sha256 = "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      mime = buildMix rec {
+        name = "mime";
+        version = "2.0.5";
 
-    mime = buildMix rec {
-      name = "mime";
-      version = "2.0.5";
+        src = fetchHex {
+          pkg = "mime";
+          version = "${version}";
+          sha256 = "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c";
+        };
 
-      src = fetchHex {
-        pkg = "mime";
-        version = "${version}";
-        sha256 = "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      mimerl = buildRebar3 rec {
+        name = "mimerl";
+        version = "1.2.0";
 
-    mimerl = buildRebar3 rec {
-      name = "mimerl";
-      version = "1.2.0";
+        src = fetchHex {
+          pkg = "mimerl";
+          version = "${version}";
+          sha256 = "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323";
+        };
 
-      src = fetchHex {
-        pkg = "mimerl";
-        version = "${version}";
-        sha256 = "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      mint = buildMix rec {
+        name = "mint";
+        version = "1.5.2";
 
-    mint = buildMix rec {
-      name = "mint";
-      version = "1.5.2";
+        src = fetchHex {
+          pkg = "mint";
+          version = "${version}";
+          sha256 = "d77d9e9ce4eb35941907f1d3df38d8f750c357865353e21d335bdcdf6d892a02";
+        };
 
-      src = fetchHex {
-        pkg = "mint";
-        version = "${version}";
-        sha256 = "d77d9e9ce4eb35941907f1d3df38d8f750c357865353e21d335bdcdf6d892a02";
+        beamDeps = [ castore hpax ];
       };
 
-      beamDeps = [ castore hpax ];
-    };
+      mock = buildMix rec {
+        name = "mock";
+        version = "0.3.8";
 
-    mock = buildMix rec {
-      name = "mock";
-      version = "0.3.8";
+        src = fetchHex {
+          pkg = "mock";
+          version = "${version}";
+          sha256 = "7fa82364c97617d79bb7d15571193fc0c4fe5afd0c932cef09426b3ee6fe2022";
+        };
 
-      src = fetchHex {
-        pkg = "mock";
-        version = "${version}";
-        sha256 = "7fa82364c97617d79bb7d15571193fc0c4fe5afd0c932cef09426b3ee6fe2022";
+        beamDeps = [ meck ];
       };
 
-      beamDeps = [ meck ];
-    };
+      mogrify = buildMix rec {
+        name = "mogrify";
+        version = "0.9.3";
 
-    mogrify = buildMix rec {
-      name = "mogrify";
-      version = "0.9.3";
+        src = fetchHex {
+          pkg = "mogrify";
+          version = "${version}";
+          sha256 = "0189b1e1de27455f2b9ae8cf88239cefd23d38de9276eb5add7159aea51731e6";
+        };
 
-      src = fetchHex {
-        pkg = "mogrify";
-        version = "${version}";
-        sha256 = "0189b1e1de27455f2b9ae8cf88239cefd23d38de9276eb5add7159aea51731e6";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      mox = buildMix rec {
+        name = "mox";
+        version = "1.1.0";
 
-    mox = buildMix rec {
-      name = "mox";
-      version = "1.1.0";
+        src = fetchHex {
+          pkg = "mox";
+          version = "${version}";
+          sha256 = "d44474c50be02d5b72131070281a5d3895c0e7a95c780e90bc0cfe712f633a13";
+        };
 
-      src = fetchHex {
-        pkg = "mox";
-        version = "${version}";
-        sha256 = "d44474c50be02d5b72131070281a5d3895c0e7a95c780e90bc0cfe712f633a13";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      nimble_options = buildMix rec {
+        name = "nimble_options";
+        version = "1.1.0";
 
-    nimble_options = buildMix rec {
-      name = "nimble_options";
-      version = "1.1.0";
+        src = fetchHex {
+          pkg = "nimble_options";
+          version = "${version}";
+          sha256 = "8bbbb3941af3ca9acc7835f5655ea062111c9c27bcac53e004460dfd19008a99";
+        };
 
-      src = fetchHex {
-        pkg = "nimble_options";
-        version = "${version}";
-        sha256 = "8bbbb3941af3ca9acc7835f5655ea062111c9c27bcac53e004460dfd19008a99";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      nimble_parsec = buildMix rec {
+        name = "nimble_parsec";
+        version = "1.4.0";
 
-    nimble_parsec = buildMix rec {
-      name = "nimble_parsec";
-      version = "1.4.0";
+        src = fetchHex {
+          pkg = "nimble_parsec";
+          version = "${version}";
+          sha256 = "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28";
+        };
 
-      src = fetchHex {
-        pkg = "nimble_parsec";
-        version = "${version}";
-        sha256 = "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      nimble_pool = buildMix rec {
+        name = "nimble_pool";
+        version = "1.0.0";
 
-    nimble_pool = buildMix rec {
-      name = "nimble_pool";
-      version = "1.0.0";
+        src = fetchHex {
+          pkg = "nimble_pool";
+          version = "${version}";
+          sha256 = "80be3b882d2d351882256087078e1b1952a28bf98d0a287be87e4a24a710b67a";
+        };
 
-      src = fetchHex {
-        pkg = "nimble_pool";
-        version = "${version}";
-        sha256 = "80be3b882d2d351882256087078e1b1952a28bf98d0a287be87e4a24a710b67a";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      oban = buildMix rec {
+        name = "oban";
+        version = "2.15.4";
 
-    oban = buildMix rec {
-      name = "oban";
-      version = "2.15.4";
+        src = fetchHex {
+          pkg = "oban";
+          version = "${version}";
+          sha256 = "5fce611fdfffb13e9148df883116e5201adf1e731eb302cc88cde0588510079c";
+        };
 
-      src = fetchHex {
-        pkg = "oban";
-        version = "${version}";
-        sha256 = "5fce611fdfffb13e9148df883116e5201adf1e731eb302cc88cde0588510079c";
+        beamDeps = [ ecto_sql jason postgrex telemetry ];
       };
 
-      beamDeps = [ ecto_sql jason postgrex telemetry ];
-    };
+      open_api_spex = buildMix rec {
+        name = "open_api_spex";
+        version = "3.18.0";
 
-    open_api_spex = buildMix rec {
-      name = "open_api_spex";
-      version = "3.18.0";
+        src = fetchHex {
+          pkg = "open_api_spex";
+          version = "${version}";
+          sha256 = "37849887ab67efab052376401fac28c0974b273ffaecd98f4532455ca0886464";
+        };
 
-      src = fetchHex {
-        pkg = "open_api_spex";
-        version = "${version}";
-        sha256 = "37849887ab67efab052376401fac28c0974b273ffaecd98f4532455ca0886464";
+        beamDeps = [ jason plug poison ];
       };
 
-      beamDeps = [ jason plug poison ];
-    };
+      parse_trans = buildRebar3 rec {
+        name = "parse_trans";
+        version = "3.4.1";
 
-    parse_trans = buildRebar3 rec {
-      name = "parse_trans";
-      version = "3.4.1";
+        src = fetchHex {
+          pkg = "parse_trans";
+          version = "${version}";
+          sha256 = "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a";
+        };
 
-      src = fetchHex {
-        pkg = "parse_trans";
-        version = "${version}";
-        sha256 = "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      phoenix = buildMix rec {
+        name = "phoenix";
+        version = "1.7.10";
 
-    phoenix = buildMix rec {
-      name = "phoenix";
-      version = "1.7.10";
+        src = fetchHex {
+          pkg = "phoenix";
+          version = "${version}";
+          sha256 = "cf784932e010fd736d656d7fead6a584a4498efefe5b8227e9f383bf15bb79d0";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix";
-        version = "${version}";
-        sha256 = "cf784932e010fd736d656d7fead6a584a4498efefe5b8227e9f383bf15bb79d0";
+        beamDeps = [ castore jason phoenix_pubsub phoenix_template phoenix_view plug plug_cowboy plug_crypto telemetry websock_adapter ];
       };
 
-      beamDeps = [ castore jason phoenix_pubsub phoenix_template phoenix_view plug plug_cowboy plug_crypto telemetry websock_adapter ];
-    };
+      phoenix_ecto = buildMix rec {
+        name = "phoenix_ecto";
+        version = "4.4.3";
 
-    phoenix_ecto = buildMix rec {
-      name = "phoenix_ecto";
-      version = "4.4.3";
+        src = fetchHex {
+          pkg = "phoenix_ecto";
+          version = "${version}";
+          sha256 = "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_ecto";
-        version = "${version}";
-        sha256 = "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07";
+        beamDeps = [ ecto phoenix_html plug ];
       };
 
-      beamDeps = [ ecto phoenix_html plug ];
-    };
+      phoenix_html = buildMix rec {
+        name = "phoenix_html";
+        version = "3.3.3";
 
-    phoenix_html = buildMix rec {
-      name = "phoenix_html";
-      version = "3.3.3";
+        src = fetchHex {
+          pkg = "phoenix_html";
+          version = "${version}";
+          sha256 = "923ebe6fec6e2e3b3e569dfbdc6560de932cd54b000ada0208b5f45024bdd76c";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_html";
-        version = "${version}";
-        sha256 = "923ebe6fec6e2e3b3e569dfbdc6560de932cd54b000ada0208b5f45024bdd76c";
+        beamDeps = [ plug ];
       };
 
-      beamDeps = [ plug ];
-    };
+      phoenix_live_dashboard = buildMix rec {
+        name = "phoenix_live_dashboard";
+        version = "0.7.2";
 
-    phoenix_live_dashboard = buildMix rec {
-      name = "phoenix_live_dashboard";
-      version = "0.7.2";
+        src = fetchHex {
+          pkg = "phoenix_live_dashboard";
+          version = "${version}";
+          sha256 = "0e5fdf063c7a3b620c566a30fcf68b7ee02e5e46fe48ee46a6ec3ba382dc05b7";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_live_dashboard";
-        version = "${version}";
-        sha256 = "0e5fdf063c7a3b620c566a30fcf68b7ee02e5e46fe48ee46a6ec3ba382dc05b7";
+        beamDeps = [ ecto ecto_psql_extras mime phoenix_live_view telemetry_metrics ];
       };
 
-      beamDeps = [ ecto ecto_psql_extras mime phoenix_live_view telemetry_metrics ];
-    };
+      phoenix_live_view = buildMix rec {
+        name = "phoenix_live_view";
+        version = "0.18.18";
 
-    phoenix_live_view = buildMix rec {
-      name = "phoenix_live_view";
-      version = "0.18.18";
+        src = fetchHex {
+          pkg = "phoenix_live_view";
+          version = "${version}";
+          sha256 = "a5810d0472f3189ede6d2a95bda7f31c6113156b91784a3426cb0ab6a6d85214";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_live_view";
-        version = "${version}";
-        sha256 = "a5810d0472f3189ede6d2a95bda7f31c6113156b91784a3426cb0ab6a6d85214";
+        beamDeps = [ jason phoenix phoenix_html phoenix_template phoenix_view telemetry ];
       };
 
-      beamDeps = [ jason phoenix phoenix_html phoenix_template phoenix_view telemetry ];
-    };
+      phoenix_pubsub = buildMix rec {
+        name = "phoenix_pubsub";
+        version = "2.1.3";
 
-    phoenix_pubsub = buildMix rec {
-      name = "phoenix_pubsub";
-      version = "2.1.3";
+        src = fetchHex {
+          pkg = "phoenix_pubsub";
+          version = "${version}";
+          sha256 = "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_pubsub";
-        version = "${version}";
-        sha256 = "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      phoenix_swoosh = buildMix rec {
+        name = "phoenix_swoosh";
+        version = "1.2.0";
 
-    phoenix_swoosh = buildMix rec {
-      name = "phoenix_swoosh";
-      version = "1.2.0";
+        src = fetchHex {
+          pkg = "phoenix_swoosh";
+          version = "${version}";
+          sha256 = "e88d117251e89a16b92222415a6d87b99a96747ddf674fc5c7631de734811dba";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_swoosh";
-        version = "${version}";
-        sha256 = "e88d117251e89a16b92222415a6d87b99a96747ddf674fc5c7631de734811dba";
+        beamDeps = [ finch hackney phoenix phoenix_html phoenix_view swoosh ];
       };
 
-      beamDeps = [ finch hackney phoenix phoenix_html phoenix_view swoosh ];
-    };
+      phoenix_template = buildMix rec {
+        name = "phoenix_template";
+        version = "1.0.3";
 
-    phoenix_template = buildMix rec {
-      name = "phoenix_template";
-      version = "1.0.3";
+        src = fetchHex {
+          pkg = "phoenix_template";
+          version = "${version}";
+          sha256 = "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_template";
-        version = "${version}";
-        sha256 = "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c";
+        beamDeps = [ phoenix_html ];
       };
 
-      beamDeps = [ phoenix_html ];
-    };
+      phoenix_view = buildMix rec {
+        name = "phoenix_view";
+        version = "2.0.3";
 
-    phoenix_view = buildMix rec {
-      name = "phoenix_view";
-      version = "2.0.3";
+        src = fetchHex {
+          pkg = "phoenix_view";
+          version = "${version}";
+          sha256 = "cd34049af41be2c627df99cd4eaa71fc52a328c0c3d8e7d4aa28f880c30e7f64";
+        };
 
-      src = fetchHex {
-        pkg = "phoenix_view";
-        version = "${version}";
-        sha256 = "cd34049af41be2c627df99cd4eaa71fc52a328c0c3d8e7d4aa28f880c30e7f64";
+        beamDeps = [ phoenix_html phoenix_template ];
       };
 
-      beamDeps = [ phoenix_html phoenix_template ];
-    };
+      plug = buildMix rec {
+        name = "plug";
+        version = "1.15.2";
 
-    plug = buildMix rec {
-      name = "plug";
-      version = "1.15.2";
+        src = fetchHex {
+          pkg = "plug";
+          version = "${version}";
+          sha256 = "02731fa0c2dcb03d8d21a1d941bdbbe99c2946c0db098eee31008e04c6283615";
+        };
 
-      src = fetchHex {
-        pkg = "plug";
-        version = "${version}";
-        sha256 = "02731fa0c2dcb03d8d21a1d941bdbbe99c2946c0db098eee31008e04c6283615";
+        beamDeps = [ mime plug_crypto telemetry ];
       };
 
-      beamDeps = [ mime plug_crypto telemetry ];
-    };
+      plug_cowboy = buildMix rec {
+        name = "plug_cowboy";
+        version = "2.6.1";
 
-    plug_cowboy = buildMix rec {
-      name = "plug_cowboy";
-      version = "2.6.1";
+        src = fetchHex {
+          pkg = "plug_cowboy";
+          version = "${version}";
+          sha256 = "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613";
+        };
 
-      src = fetchHex {
-        pkg = "plug_cowboy";
-        version = "${version}";
-        sha256 = "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613";
+        beamDeps = [ cowboy cowboy_telemetry plug ];
       };
 
-      beamDeps = [ cowboy cowboy_telemetry plug ];
-    };
+      plug_crypto = buildMix rec {
+        name = "plug_crypto";
+        version = "2.0.0";
 
-    plug_crypto = buildMix rec {
-      name = "plug_crypto";
-      version = "2.0.0";
+        src = fetchHex {
+          pkg = "plug_crypto";
+          version = "${version}";
+          sha256 = "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9";
+        };
 
-      src = fetchHex {
-        pkg = "plug_crypto";
-        version = "${version}";
-        sha256 = "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      plug_static_index_html = buildMix rec {
+        name = "plug_static_index_html";
+        version = "1.0.0";
 
-    plug_static_index_html = buildMix rec {
-      name = "plug_static_index_html";
-      version = "1.0.0";
+        src = fetchHex {
+          pkg = "plug_static_index_html";
+          version = "${version}";
+          sha256 = "79fd4fcf34d110605c26560cbae8f23c603ec4158c08298bd4360fdea90bb5cf";
+        };
 
-      src = fetchHex {
-        pkg = "plug_static_index_html";
-        version = "${version}";
-        sha256 = "79fd4fcf34d110605c26560cbae8f23c603ec4158c08298bd4360fdea90bb5cf";
+        beamDeps = [ plug ];
       };
 
-      beamDeps = [ plug ];
-    };
+      poison = buildMix rec {
+        name = "poison";
+        version = "5.0.0";
 
-    poison = buildMix rec {
-      name = "poison";
-      version = "5.0.0";
+        src = fetchHex {
+          pkg = "poison";
+          version = "${version}";
+          sha256 = "11dc6117c501b80c62a7594f941d043982a1bd05a1184280c0d9166eb4d8d3fc";
+        };
 
-      src = fetchHex {
-        pkg = "poison";
-        version = "${version}";
-        sha256 = "11dc6117c501b80c62a7594f941d043982a1bd05a1184280c0d9166eb4d8d3fc";
+        beamDeps = [ decimal ];
       };
 
-      beamDeps = [ decimal ];
-    };
+      poolboy = buildRebar3 rec {
+        name = "poolboy";
+        version = "1.5.2";
 
-    poolboy = buildRebar3 rec {
-      name = "poolboy";
-      version = "1.5.2";
+        src = fetchHex {
+          pkg = "poolboy";
+          version = "${version}";
+          sha256 = "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3";
+        };
 
-      src = fetchHex {
-        pkg = "poolboy";
-        version = "${version}";
-        sha256 = "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      postgrex = buildMix rec {
+        name = "postgrex";
+        version = "0.17.4";
 
-    postgrex = buildMix rec {
-      name = "postgrex";
-      version = "0.17.4";
+        src = fetchHex {
+          pkg = "postgrex";
+          version = "${version}";
+          sha256 = "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc";
+        };
 
-      src = fetchHex {
-        pkg = "postgrex";
-        version = "${version}";
-        sha256 = "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc";
+        beamDeps = [ db_connection decimal jason ];
       };
 
-      beamDeps = [ db_connection decimal jason ];
-    };
+      pot = buildRebar3 rec {
+        name = "pot";
+        version = "1.0.2";
 
-    pot = buildRebar3 rec {
-      name = "pot";
-      version = "1.0.2";
+        src = fetchHex {
+          pkg = "pot";
+          version = "${version}";
+          sha256 = "78fe127f5a4f5f919d6ea5a2a671827bd53eb9d37e5b4128c0ad3df99856c2e0";
+        };
 
-      src = fetchHex {
-        pkg = "pot";
-        version = "${version}";
-        sha256 = "78fe127f5a4f5f919d6ea5a2a671827bd53eb9d37e5b4128c0ad3df99856c2e0";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      ranch = buildRebar3 rec {
+        name = "ranch";
+        version = "1.8.0";
 
-    ranch = buildRebar3 rec {
-      name = "ranch";
-      version = "1.8.0";
+        src = fetchHex {
+          pkg = "ranch";
+          version = "${version}";
+          sha256 = "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5";
+        };
 
-      src = fetchHex {
-        pkg = "ranch";
-        version = "${version}";
-        sha256 = "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      recon = buildMix rec {
+        name = "recon";
+        version = "2.5.4";
 
-    recon = buildMix rec {
-      name = "recon";
-      version = "2.5.4";
+        src = fetchHex {
+          pkg = "recon";
+          version = "${version}";
+          sha256 = "e9ab01ac7fc8572e41eb59385efeb3fb0ff5bf02103816535bacaedf327d0263";
+        };
 
-      src = fetchHex {
-        pkg = "recon";
-        version = "${version}";
-        sha256 = "e9ab01ac7fc8572e41eb59385efeb3fb0ff5bf02103816535bacaedf327d0263";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      remote_ip = buildMix rec {
+        name = "remote_ip";
+        version = "1.1.0";
 
-    remote_ip = buildMix rec {
-      name = "remote_ip";
-      version = "1.1.0";
+        src = fetchHex {
+          pkg = "remote_ip";
+          version = "${version}";
+          sha256 = "616ffdf66aaad6a72fc546dabf42eed87e2a99e97b09cbd92b10cc180d02ed74";
+        };
 
-      src = fetchHex {
-        pkg = "remote_ip";
-        version = "${version}";
-        sha256 = "616ffdf66aaad6a72fc546dabf42eed87e2a99e97b09cbd92b10cc180d02ed74";
+        beamDeps = [ combine plug ];
       };
 
-      beamDeps = [ combine plug ];
-    };
+      sleeplocks = buildRebar3 rec {
+        name = "sleeplocks";
+        version = "1.1.2";
 
-    sleeplocks = buildRebar3 rec {
-      name = "sleeplocks";
-      version = "1.1.2";
+        src = fetchHex {
+          pkg = "sleeplocks";
+          version = "${version}";
+          sha256 = "9fe5d048c5b781d6305c1a3a0f40bb3dfc06f49bf40571f3d2d0c57eaa7f59a5";
+        };
 
-      src = fetchHex {
-        pkg = "sleeplocks";
-        version = "${version}";
-        sha256 = "9fe5d048c5b781d6305c1a3a0f40bb3dfc06f49bf40571f3d2d0c57eaa7f59a5";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      ssl_verify_fun = buildRebar3 rec {
+        name = "ssl_verify_fun";
+        version = "1.1.7";
 
-    ssl_verify_fun = buildRebar3 rec {
-      name = "ssl_verify_fun";
-      version = "1.1.7";
+        src = fetchHex {
+          pkg = "ssl_verify_fun";
+          version = "${version}";
+          sha256 = "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8";
+        };
 
-      src = fetchHex {
-        pkg = "ssl_verify_fun";
-        version = "${version}";
-        sha256 = "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      statistex = buildMix rec {
+        name = "statistex";
+        version = "1.0.0";
 
-    statistex = buildMix rec {
-      name = "statistex";
-      version = "1.0.0";
+        src = fetchHex {
+          pkg = "statistex";
+          version = "${version}";
+          sha256 = "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27";
+        };
 
-      src = fetchHex {
-        pkg = "statistex";
-        version = "${version}";
-        sha256 = "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      sweet_xml = buildMix rec {
+        name = "sweet_xml";
+        version = "0.7.4";
 
-    sweet_xml = buildMix rec {
-      name = "sweet_xml";
-      version = "0.7.4";
+        src = fetchHex {
+          pkg = "sweet_xml";
+          version = "${version}";
+          sha256 = "e7c4b0bdbf460c928234951def54fe87edf1a170f6896675443279e2dbeba167";
+        };
 
-      src = fetchHex {
-        pkg = "sweet_xml";
-        version = "${version}";
-        sha256 = "e7c4b0bdbf460c928234951def54fe87edf1a170f6896675443279e2dbeba167";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      swoosh = buildMix rec {
+        name = "swoosh";
+        version = "1.14.2";
 
-    swoosh = buildMix rec {
-      name = "swoosh";
-      version = "1.14.2";
+        src = fetchHex {
+          pkg = "swoosh";
+          version = "${version}";
+          sha256 = "01d8fae72930a0b5c1bb9725df0408602ed8c5c3d59dc6e7a39c57b723cd1065";
+        };
 
-      src = fetchHex {
-        pkg = "swoosh";
-        version = "${version}";
-        sha256 = "01d8fae72930a0b5c1bb9725df0408602ed8c5c3d59dc6e7a39c57b723cd1065";
+        beamDeps = [ cowboy ex_aws finch gen_smtp hackney jason mail mime plug plug_cowboy telemetry ];
       };
 
-      beamDeps = [ cowboy ex_aws finch gen_smtp hackney jason mail mime plug plug_cowboy telemetry ];
-    };
+      syslog = buildRebar3 rec {
+        name = "syslog";
+        version = "1.1.0";
 
-    syslog = buildRebar3 rec {
-      name = "syslog";
-      version = "1.1.0";
+        src = fetchHex {
+          pkg = "syslog";
+          version = "${version}";
+          sha256 = "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1";
+        };
 
-      src = fetchHex {
-        pkg = "syslog";
-        version = "${version}";
-        sha256 = "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      table_rex = buildMix rec {
+        name = "table_rex";
+        version = "3.1.1";
 
-    table_rex = buildMix rec {
-      name = "table_rex";
-      version = "3.1.1";
+        src = fetchHex {
+          pkg = "table_rex";
+          version = "${version}";
+          sha256 = "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490";
+        };
 
-      src = fetchHex {
-        pkg = "table_rex";
-        version = "${version}";
-        sha256 = "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      telemetry = buildRebar3 rec {
+        name = "telemetry";
+        version = "1.2.1";
 
-    telemetry = buildRebar3 rec {
-      name = "telemetry";
-      version = "1.2.1";
+        src = fetchHex {
+          pkg = "telemetry";
+          version = "${version}";
+          sha256 = "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5";
+        };
 
-      src = fetchHex {
-        pkg = "telemetry";
-        version = "${version}";
-        sha256 = "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      telemetry_metrics = buildMix rec {
+        name = "telemetry_metrics";
+        version = "0.6.1";
 
-    telemetry_metrics = buildMix rec {
-      name = "telemetry_metrics";
-      version = "0.6.1";
+        src = fetchHex {
+          pkg = "telemetry_metrics";
+          version = "${version}";
+          sha256 = "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6";
+        };
 
-      src = fetchHex {
-        pkg = "telemetry_metrics";
-        version = "${version}";
-        sha256 = "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6";
+        beamDeps = [ telemetry ];
       };
 
-      beamDeps = [ telemetry ];
-    };
+      telemetry_metrics_prometheus = buildMix rec {
+        name = "telemetry_metrics_prometheus";
+        version = "1.1.0";
 
-    telemetry_metrics_prometheus = buildMix rec {
-      name = "telemetry_metrics_prometheus";
-      version = "1.1.0";
+        src = fetchHex {
+          pkg = "telemetry_metrics_prometheus";
+          version = "${version}";
+          sha256 = "d43b3659b3244da44fe0275b717701542365d4519b79d9ce895b9719c1ce4d26";
+        };
 
-      src = fetchHex {
-        pkg = "telemetry_metrics_prometheus";
-        version = "${version}";
-        sha256 = "d43b3659b3244da44fe0275b717701542365d4519b79d9ce895b9719c1ce4d26";
+        beamDeps = [ plug_cowboy telemetry_metrics_prometheus_core ];
       };
 
-      beamDeps = [ plug_cowboy telemetry_metrics_prometheus_core ];
-    };
+      telemetry_metrics_prometheus_core = buildMix rec {
+        name = "telemetry_metrics_prometheus_core";
+        version = "1.1.0";
 
-    telemetry_metrics_prometheus_core = buildMix rec {
-      name = "telemetry_metrics_prometheus_core";
-      version = "1.1.0";
+        src = fetchHex {
+          pkg = "telemetry_metrics_prometheus_core";
+          version = "${version}";
+          sha256 = "0dd10e7fe8070095df063798f82709b0a1224c31b8baf6278b423898d591a069";
+        };
 
-      src = fetchHex {
-        pkg = "telemetry_metrics_prometheus_core";
-        version = "${version}";
-        sha256 = "0dd10e7fe8070095df063798f82709b0a1224c31b8baf6278b423898d591a069";
+        beamDeps = [ telemetry telemetry_metrics ];
       };
 
-      beamDeps = [ telemetry telemetry_metrics ];
-    };
+      telemetry_poller = buildRebar3 rec {
+        name = "telemetry_poller";
+        version = "1.0.0";
 
-    telemetry_poller = buildRebar3 rec {
-      name = "telemetry_poller";
-      version = "1.0.0";
+        src = fetchHex {
+          pkg = "telemetry_poller";
+          version = "${version}";
+          sha256 = "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e";
+        };
 
-      src = fetchHex {
-        pkg = "telemetry_poller";
-        version = "${version}";
-        sha256 = "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e";
+        beamDeps = [ telemetry ];
       };
 
-      beamDeps = [ telemetry ];
-    };
+      tesla = buildMix rec {
+        name = "tesla";
+        version = "1.8.0";
 
-    tesla = buildMix rec {
-      name = "tesla";
-      version = "1.8.0";
+        src = fetchHex {
+          pkg = "tesla";
+          version = "${version}";
+          sha256 = "10501f360cd926a309501287470372af1a6e1cbed0f43949203a4c13300bc79f";
+        };
 
-      src = fetchHex {
-        pkg = "tesla";
-        version = "${version}";
-        sha256 = "10501f360cd926a309501287470372af1a6e1cbed0f43949203a4c13300bc79f";
+        beamDeps = [ castore finch hackney jason mime mint poison telemetry ];
       };
 
-      beamDeps = [ castore finch hackney jason mime mint poison telemetry ];
-    };
+      timex = buildMix rec {
+        name = "timex";
+        version = "3.7.11";
 
-    timex = buildMix rec {
-      name = "timex";
-      version = "3.7.11";
+        src = fetchHex {
+          pkg = "timex";
+          version = "${version}";
+          sha256 = "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa";
+        };
 
-      src = fetchHex {
-        pkg = "timex";
-        version = "${version}";
-        sha256 = "8b9024f7efbabaf9bd7aa04f65cf8dcd7c9818ca5737677c7b76acbc6a94d1aa";
+        beamDeps = [ combine gettext tzdata ];
       };
 
-      beamDeps = [ combine gettext tzdata ];
-    };
+      trailing_format_plug = buildMix rec {
+        name = "trailing_format_plug";
+        version = "0.0.7";
 
-    trailing_format_plug = buildMix rec {
-      name = "trailing_format_plug";
-      version = "0.0.7";
+        src = fetchHex {
+          pkg = "trailing_format_plug";
+          version = "${version}";
+          sha256 = "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f";
+        };
 
-      src = fetchHex {
-        pkg = "trailing_format_plug";
-        version = "${version}";
-        sha256 = "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f";
+        beamDeps = [ plug ];
       };
 
-      beamDeps = [ plug ];
-    };
+      tzdata = buildMix rec {
+        name = "tzdata";
+        version = "1.1.1";
 
-    tzdata = buildMix rec {
-      name = "tzdata";
-      version = "1.1.1";
+        src = fetchHex {
+          pkg = "tzdata";
+          version = "${version}";
+          sha256 = "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787";
+        };
 
-      src = fetchHex {
-        pkg = "tzdata";
-        version = "${version}";
-        sha256 = "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787";
+        beamDeps = [ hackney ];
       };
 
-      beamDeps = [ hackney ];
-    };
+      ueberauth = buildMix rec {
+        name = "ueberauth";
+        version = "0.10.5";
 
-    ueberauth = buildMix rec {
-      name = "ueberauth";
-      version = "0.10.5";
+        src = fetchHex {
+          pkg = "ueberauth";
+          version = "${version}";
+          sha256 = "3efd1f31d490a125c7ed453b926f7c31d78b97b8a854c755f5c40064bf3ac9e1";
+        };
 
-      src = fetchHex {
-        pkg = "ueberauth";
-        version = "${version}";
-        sha256 = "3efd1f31d490a125c7ed453b926f7c31d78b97b8a854c755f5c40064bf3ac9e1";
+        beamDeps = [ plug ];
       };
 
-      beamDeps = [ plug ];
-    };
+      unicode_util_compat = buildRebar3 rec {
+        name = "unicode_util_compat";
+        version = "0.7.0";
 
-    unicode_util_compat = buildRebar3 rec {
-      name = "unicode_util_compat";
-      version = "0.7.0";
+        src = fetchHex {
+          pkg = "unicode_util_compat";
+          version = "${version}";
+          sha256 = "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521";
+        };
 
-      src = fetchHex {
-        pkg = "unicode_util_compat";
-        version = "${version}";
-        sha256 = "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      unsafe = buildMix rec {
+        name = "unsafe";
+        version = "1.0.2";
 
-    unsafe = buildMix rec {
-      name = "unsafe";
-      version = "1.0.2";
+        src = fetchHex {
+          pkg = "unsafe";
+          version = "${version}";
+          sha256 = "b485231683c3ab01a9cd44cb4a79f152c6f3bb87358439c6f68791b85c2df675";
+        };
 
-      src = fetchHex {
-        pkg = "unsafe";
-        version = "${version}";
-        sha256 = "b485231683c3ab01a9cd44cb4a79f152c6f3bb87358439c6f68791b85c2df675";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      vex = buildMix rec {
+        name = "vex";
+        version = "0.9.1";
 
-    vex = buildMix rec {
-      name = "vex";
-      version = "0.9.1";
+        src = fetchHex {
+          pkg = "vex";
+          version = "${version}";
+          sha256 = "a0f9f3959d127ad6a6a617c3f607ecfb1bc6f3c59f9c3614a901a46d1765bafe";
+        };
 
-      src = fetchHex {
-        pkg = "vex";
-        version = "${version}";
-        sha256 = "a0f9f3959d127ad6a6a617c3f607ecfb1bc6f3c59f9c3614a901a46d1765bafe";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      web_push_encryption = buildMix rec {
+        name = "web_push_encryption";
+        version = "0.3.1";
 
-    web_push_encryption = buildMix rec {
-      name = "web_push_encryption";
-      version = "0.3.1";
+        src = fetchHex {
+          pkg = "web_push_encryption";
+          version = "${version}";
+          sha256 = "4f82b2e57622fb9337559058e8797cb0df7e7c9790793bdc4e40bc895f70e2a2";
+        };
 
-      src = fetchHex {
-        pkg = "web_push_encryption";
-        version = "${version}";
-        sha256 = "4f82b2e57622fb9337559058e8797cb0df7e7c9790793bdc4e40bc895f70e2a2";
+        beamDeps = [ httpoison jose ];
       };
 
-      beamDeps = [ httpoison jose ];
-    };
+      websock = buildMix rec {
+        name = "websock";
+        version = "0.5.3";
 
-    websock = buildMix rec {
-      name = "websock";
-      version = "0.5.3";
+        src = fetchHex {
+          pkg = "websock";
+          version = "${version}";
+          sha256 = "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453";
+        };
 
-      src = fetchHex {
-        pkg = "websock";
-        version = "${version}";
-        sha256 = "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453";
+        beamDeps = [ ];
       };
 
-      beamDeps = [];
-    };
+      websock_adapter = buildMix rec {
+        name = "websock_adapter";
+        version = "0.5.5";
 
-    websock_adapter = buildMix rec {
-      name = "websock_adapter";
-      version = "0.5.5";
+        src = fetchHex {
+          pkg = "websock_adapter";
+          version = "${version}";
+          sha256 = "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9";
+        };
 
-      src = fetchHex {
-        pkg = "websock_adapter";
-        version = "${version}";
-        sha256 = "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9";
+        beamDeps = [ plug plug_cowboy websock ];
       };
 
-      beamDeps = [ plug plug_cowboy websock ];
-    };
+      websockex = buildMix rec {
+        name = "websockex";
+        version = "0.4.3";
 
-    websockex = buildMix rec {
-      name = "websockex";
-      version = "0.4.3";
+        src = fetchHex {
+          pkg = "websockex";
+          version = "${version}";
+          sha256 = "95f2e7072b85a3a4cc385602d42115b73ce0b74a9121d0d6dbbf557645ac53e4";
+        };
 
-      src = fetchHex {
-        pkg = "websockex";
-        version = "${version}";
-        sha256 = "95f2e7072b85a3a4cc385602d42115b73ce0b74a9121d0d6dbbf557645ac53e4";
+        beamDeps = [ ];
       };
-
-      beamDeps = [];
     };
-  };
-in self
-
+in
+self
diff --git a/pkgs/servers/bird/default.nix b/pkgs/servers/bird/default.nix
index dbf480c401ddb..2c29a210f7a8a 100644
--- a/pkgs/servers/bird/default.nix
+++ b/pkgs/servers/bird/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
     description = "BIRD Internet Routing Daemon";
     homepage = "http://bird.network.cz";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ globin ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/servers/dex/default.nix b/pkgs/servers/dex/default.nix
index 0fe7a340cd49a..f62721b2ad07e 100644
--- a/pkgs/servers/dex/default.nix
+++ b/pkgs/servers/dex/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "dex";
-  version = "2.39.0";
+  version = "2.39.1";
 
   src = fetchFromGitHub {
     owner = "dexidp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-edU9jRvGRRmm46UuQ7GlapQ+4AGjy/5gFn5mU9HJjd0=";
+    sha256 = "sha256-+P3KYowZmtgZP3i0D+GFaAqgWDqJ8sxI4LyDUOM+J38=";
   };
 
-  vendorHash = "sha256-vG82gW3AXYDND0JmzxJqqHgvxk4ey6yIXadwL0zPHD4=";
+  vendorHash = "sha256-NQXsptpRNgRuEeh2ft/dbqcZqO/d1KZ19wc/7To0xCM=";
 
   subPackages = [
     "cmd/dex"
diff --git a/pkgs/servers/elasticmq-server-bin/default.nix b/pkgs/servers/elasticmq-server-bin/default.nix
index 7f83216cf9092..9da82d41996f2 100644
--- a/pkgs/servers/elasticmq-server-bin/default.nix
+++ b/pkgs/servers/elasticmq-server-bin/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "elasticmq-server";
-  version = "1.5.7";
+  version = "1.5.8";
 
   src = fetchurl {
     url = "https://s3-eu-west-1.amazonaws.com/softwaremill-public/${finalAttrs.pname}-${finalAttrs.version}.jar";
-    sha256 = "sha256-J7LT1OwMIt0jV9lRwTVdkW2Mm9OqxyGUlte3VHZrTZ0=";
+    sha256 = "sha256-7E1fkMPPwPUEZUL/VqTX0DSdL5mUlSlf7lDE1jNb3Ns=";
   };
 
   # don't do anything?
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index ea09b5b8bf6a6..33b56ccb134a8 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "2024.3.3";
+  version = "2024.4.2";
   components = {
     "3_day_blinds" = ps: with ps; [
     ];
@@ -283,7 +283,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "aseko_pool_live" = ps: with ps; [
@@ -362,7 +361,6 @@
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
       axis
-      janus
       paho-mqtt
     ];
     "azure_devops" = ps: with ps; [
@@ -572,7 +570,8 @@
     "brel_home" = ps: with ps; [
     ];
     "bring" = ps: with ps; [
-    ]; # missing inputs: bring-api
+      bring-api
+    ];
     "broadlink" = ps: with ps; [
       broadlink
     ];
@@ -856,7 +855,6 @@
       home-assistant-frontend
       home-assistant-intents
       ifaddr
-      janus
       mutagen
       numpy
       pillow
@@ -951,7 +949,7 @@
     "digital_loggers" = ps: with ps; [
     ];
     "digital_ocean" = ps: with ps; [
-      digital-ocean
+      python-digitalocean
     ];
     "directv" = ps: with ps; [
       directv
@@ -1056,7 +1054,6 @@
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
       dropmqttapi
-      janus
       paho-mqtt
     ];
     "dsmr" = ps: with ps; [
@@ -1066,7 +1063,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "dte_energy_bridge" = ps: with ps; [
@@ -1096,7 +1092,6 @@
       dynalite-panel
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -1183,6 +1178,9 @@
       pypca
     ];
     "elvia" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1386,11 +1384,13 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
     ];
     "filesize" = ps: with ps; [
     ];
     "filter" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1560,7 +1560,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -1574,13 +1573,15 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
       python-fullykiosk
     ];
     "futurenow" = ps: with ps; [
       pyfnip
     ];
+    "fyta" = ps: with ps; [
+      fyta-cli
+    ];
     "garadget" = ps: with ps; [
     ];
     "garages_amsterdam" = ps: with ps; [
@@ -1633,6 +1634,9 @@
     "generic_hygrostat" = ps: with ps; [
     ];
     "generic_thermostat" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1917,6 +1921,9 @@
       sqlalchemy
     ];
     "history_stats" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -1956,7 +1963,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -1978,7 +1984,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -2000,7 +2005,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -2022,7 +2026,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -2355,7 +2358,6 @@
       fnv-hash-fast
       home-assistant-frontend
       insteon-frontend-home-assistant
-      janus
       pillow
       psutil-home-assistant
       pyinsteon
@@ -2526,6 +2528,9 @@
       pykira
     ];
     "kitchen_sink" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -2542,7 +2547,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       knx-frontend
       pillow
       psutil-home-assistant
@@ -2583,7 +2587,34 @@
     "lacrosse_view" = ps: with ps; [
     ]; # missing inputs: lacrosse-view
     "lamarzocco" = ps: with ps; [
+      aioesphomeapi
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
+      aioruuvigateway
+      aioshelly
+      bleak
+      bleak-esphome
+      bleak-retry-connector
+      bluetooth-adapters
+      bluetooth-auto-recovery
+      bluetooth-data-tools
+      dbus-fast
+      esphome-dashboard-api
+      fnv-hash-fast
+      ha-ffmpeg
+      habluetooth
+      hassil
+      home-assistant-intents
+      ifaddr
       lmcloud
+      mutagen
+      psutil-home-assistant
+      pyserial
+      pyudev
+      sqlalchemy
+      webrtc-noise-gain
+      zeroconf
     ];
     "lametric" = ps: with ps; [
       aiohttp-cors
@@ -2798,7 +2829,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -2839,6 +2869,10 @@
       webrtc-noise-gain
     ];
     "lovelace" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
+      pillow
     ];
     "luci" = ps: with ps; [
       openwrt-luci-rpc
@@ -2887,7 +2921,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "map" = ps: with ps; [
@@ -2896,7 +2929,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3205,6 +3237,35 @@
       psutil-home-assistant
       sqlalchemy
     ];
+    "motionblinds_ble" = ps: with ps; [
+      aioesphomeapi
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
+      aioruuvigateway
+      aioshelly
+      bleak
+      bleak-esphome
+      bleak-retry-connector
+      bluetooth-adapters
+      bluetooth-auto-recovery
+      bluetooth-data-tools
+      dbus-fast
+      esphome-dashboard-api
+      fnv-hash-fast
+      ha-ffmpeg
+      habluetooth
+      hassil
+      home-assistant-intents
+      ifaddr
+      mutagen
+      psutil-home-assistant
+      pyserial
+      pyudev
+      sqlalchemy
+      webrtc-noise-gain
+      zeroconf
+    ]; # missing inputs: motionblindsble
     "motioneye" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
@@ -3212,7 +3273,8 @@
       motioneye-client
     ];
     "motionmount" = ps: with ps; [
-    ]; # missing inputs: python-MotionMount
+      python-motionmount
+    ];
     "mpd" = ps: with ps; [
       mpd2
     ];
@@ -3220,35 +3282,30 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_eventstream" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_json" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_room" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "mqtt_statestream" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "msteams" = ps: with ps; [
@@ -3269,7 +3326,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3280,7 +3336,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
       pymysensors
     ];
@@ -3467,7 +3522,7 @@
     "number" = ps: with ps; [
     ];
     "nut" = ps: with ps; [
-      pynut2
+      aionut
     ];
     "nutrichef" = ps: with ps; [
     ];
@@ -3494,6 +3549,13 @@
     "ohmconnect" = ps: with ps; [
       defusedxml
     ];
+    "ollama" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
+      hassil
+      home-assistant-intents
+    ]; # missing inputs: ollama-hass
     "ombi" = ps: with ps; [
       pyombi
     ];
@@ -3504,10 +3566,7 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      fnv-hash-fast
       pillow
-      psutil-home-assistant
-      sqlalchemy
     ];
     "oncue" = ps: with ps; [
       aiooncue
@@ -3542,9 +3601,6 @@
     ];
     "openalpr_cloud" = ps: with ps; [
     ];
-    "opencv" = ps: with ps; [
-      numpy
-    ]; # missing inputs: opencv-python-headless
     "openerz" = ps: with ps; [
       openerz-api
     ];
@@ -3581,6 +3637,9 @@
       pyopnsense
     ];
     "opower" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       opower
       psutil-home-assistant
@@ -3636,7 +3695,6 @@
       bellows
       fnv-hash-fast
       ifaddr
-      janus
       pillow
       psutil-home-assistant
       pyroute2
@@ -3675,7 +3733,6 @@
       hass-nabucasa
       hassil
       home-assistant-intents
-      janus
       mutagen
       paho-mqtt
       psutil-home-assistant
@@ -3703,7 +3760,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3714,7 +3770,6 @@
       aiohttp-zlib-ng
       fnv-hash-fast
       home-assistant-frontend
-      janus
       pillow
       psutil-home-assistant
       sqlalchemy
@@ -3786,6 +3841,9 @@
       webrtc-noise-gain
     ];
     "plant" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4085,6 +4143,9 @@
       aiorecollect
     ];
     "recorder" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4099,7 +4160,6 @@
       hassil
       home-assistant-frontend
       home-assistant-intents
-      janus
       mutagen
       pillow
       psutil-home-assistant
@@ -4389,6 +4449,9 @@
       zeroconf
     ];
     "sensor" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4502,6 +4565,7 @@
       dbus-fast
       fnv-hash-fast
       habluetooth
+      ifaddr
       psutil-home-assistant
       pyserial
       pyudev
@@ -4618,6 +4682,8 @@
     ];
     "smtp" = ps: with ps; [
     ];
+    "smud" = ps: with ps; [
+    ];
     "snapcast" = ps: with ps; [
       snapcast
     ];
@@ -4625,7 +4691,6 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      janus
       paho-mqtt
     ];
     "snmp" = ps: with ps; [
@@ -4766,6 +4831,9 @@
       xmltodict
     ];
     "statistics" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       sqlalchemy
@@ -4914,6 +4982,7 @@
       psutil-home-assistant
       sqlalchemy
       systembridgeconnector
+      systembridgemodels
       zeroconf
     ];
     "system_health" = ps: with ps; [
@@ -4953,7 +5022,6 @@
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
       hatasmota
-      janus
       paho-mqtt
     ];
     "tautulli" = ps: with ps; [
@@ -4977,16 +5045,14 @@
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      pysocks
       python-telegram-bot
-    ];
+    ]; # missing inputs: python-telegram-bot.optional-dependencies.socks
     "telegram_bot" = ps: with ps; [
       aiohttp-cors
       aiohttp-fast-url-dispatcher
       aiohttp-zlib-ng
-      pysocks
       python-telegram-bot
-    ];
+    ]; # missing inputs: python-telegram-bot.optional-dependencies.socks
     "tellduslive" = ps: with ps; [
       tellduslive
     ];
@@ -5105,6 +5171,9 @@
     "threshold" = ps: with ps; [
     ];
     "tibber" = ps: with ps; [
+      aiohttp-cors
+      aiohttp-fast-url-dispatcher
+      aiohttp-zlib-ng
       fnv-hash-fast
       psutil-home-assistant
       pytibber
@@ -5804,7 +5873,6 @@
       aiohttp-zlib-ng
       bellows
       fnv-hash-fast
-      janus
       pillow
       psutil-home-assistant
       pyserial
@@ -5937,6 +6005,7 @@
     "bond"
     "bosch_shc"
     "braviatv"
+    "bring"
     "broadlink"
     "brother"
     "brottsplatskartan"
@@ -5999,6 +6068,7 @@
     "dnsip"
     "doorbird"
     "dormakaba_dkey"
+    "downloader"
     "dremel_3d_printer"
     "drop_connect"
     "dsmr"
@@ -6079,6 +6149,7 @@
     "frontend"
     "frontier_silicon"
     "fully_kiosk"
+    "fyta"
     "garages_amsterdam"
     "gardena_bluetooth"
     "gdacs"
@@ -6147,6 +6218,7 @@
     "homematic"
     "homematicip_cloud"
     "homewizard"
+    "homeworks"
     "honeywell"
     "html5"
     "http"
@@ -6248,6 +6320,7 @@
     "mailgun"
     "manual"
     "manual_mqtt"
+    "map"
     "matrix"
     "matter"
     "maxcube"
@@ -6282,6 +6355,7 @@
     "mopeka"
     "motion_blinds"
     "motioneye"
+    "motionmount"
     "mqtt"
     "mqtt_eventstream"
     "mqtt_json"
@@ -6428,6 +6502,7 @@
     "romy"
     "roomba"
     "roon"
+    "rova"
     "rpi_power"
     "rss_feed_template"
     "rtsp_to_webrtc"
@@ -6539,8 +6614,6 @@
     "tcp"
     "technove"
     "tedee"
-    "telegram"
-    "telegram_bot"
     "tellduslive"
     "temper"
     "template"
diff --git a/pkgs/servers/home-assistant/custom-components/default.nix b/pkgs/servers/home-assistant/custom-components/default.nix
index ad63a4bdc0b6f..aba723d24bc4d 100644
--- a/pkgs/servers/home-assistant/custom-components/default.nix
+++ b/pkgs/servers/home-assistant/custom-components/default.nix
@@ -20,8 +20,12 @@
 
   homematicip_local = callPackage ./homematicip_local { };
 
+  local_luftdaten = callPackage ./local_luftdaten { };
+
   localtuya = callPackage ./localtuya {};
 
+  midea-air-appliances-lan = callPackage ./midea-air-appliances-lan {};
+
   miele = callPackage ./miele {};
 
   moonraker = callPackage ./moonraker {};
@@ -32,5 +36,9 @@
 
   sensi = callPackage ./sensi {};
 
+  smartthinq-sensors = callPackage ./smartthinq-sensors {};
+
   waste_collection_schedule = callPackage ./waste_collection_schedule {};
+
+  yassi = callPackage ./yassi {};
 }
diff --git a/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix b/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix
index 26b9f85e1d790..26fed03c92756 100644
--- a/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix
+++ b/pkgs/servers/home-assistant/custom-components/homematicip_local/default.nix
@@ -7,13 +7,13 @@
 buildHomeAssistantComponent rec {
   owner = "danielperna84";
   domain = "homematicip_local";
-  version = "1.58.0";
+  version = "1.59.0";
 
   src = fetchFromGitHub {
     owner = "danielperna84";
     repo = "custom_homematic";
     rev = "refs/tags/${version}";
-    hash = "sha256-ianM29eF2MN2THS3CTg4tBkd+8pV/m1fg8VvMDhhadg=";
+    hash = "sha256-fVOx/ONE+XXluXrImZWoD630EK/FOLb/Ft/L7t2Ua8o=";
   };
 
   dependencies = [
diff --git a/pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix b/pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix
new file mode 100644
index 0000000000000..10a75e14ab705
--- /dev/null
+++ b/pkgs/servers/home-assistant/custom-components/local_luftdaten/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "lichtteil";
+  domain = "local_luftdaten";
+  version = "2.3.1";
+
+  src = fetchFromGitHub {
+    owner = "lichtteil";
+    repo = "local_luftdaten";
+    rev = version;
+    hash = "sha256-68clZgS7Qo62srcZWD3Un9BnNSwQUBr4Z5oBMTC9m8o=";
+  };
+
+  meta = with lib; {
+    changelog = "https://github.com/lichtteil/local_luftdaten/releases/tag/${version}";
+    description = "Custom component for Home Assistant that integrates your (own) local Luftdaten sensor (air quality/particle sensor) without using the cloud";
+    homepage = "https://github.com/lichtteil/local_luftdaten";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix b/pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix
new file mode 100644
index 0000000000000..f533b84fd8324
--- /dev/null
+++ b/pkgs/servers/home-assistant/custom-components/midea-air-appliances-lan/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, midea-beautiful-air
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "nbogojevic";
+  domain = "midea_dehumidifier_lan";
+  version = "0.9.4";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = "homeassistant-midea-air-appliances-lan";
+    rev = "v${version}";
+    hash = "sha256-Fl8qwsW9NdjnYdu7IGQDelXTLqNx5ioUoxkhv+p5L0I=";
+  };
+
+  propagatedBuildInputs = [ midea-beautiful-air ];
+
+  meta = with lib; {
+    description = "Home Assistant custom component adding support for controlling Midea air conditioners and dehumidifiers on local network";
+    homepage = "https://github.com/nbogojevic/homeassistant-midea-air-appliances-lan";
+    changelog = "https://github.com/nbogojevic/homeassistant-midea-air-appliances-lan/releases/tag/v${version}";
+    maintainers = with maintainers; [ k900 ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/servers/home-assistant/custom-components/moonraker/default.nix b/pkgs/servers/home-assistant/custom-components/moonraker/default.nix
index 660847ddd2e33..efe0654d01cbe 100644
--- a/pkgs/servers/home-assistant/custom-components/moonraker/default.nix
+++ b/pkgs/servers/home-assistant/custom-components/moonraker/default.nix
@@ -7,13 +7,13 @@
 buildHomeAssistantComponent rec {
   owner = "marcolivierarsenault";
   domain = "moonraker";
-  version = "1.1.1";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "marcolivierarsenault";
     repo = "moonraker-home-assistant";
     rev = "refs/tags/${version}";
-    hash = "sha256-jxMi4hmSVBU9ztoHxFINoJo8klirfo6j7gWty7FXFkQ=";
+    hash = "sha256-oFHV9+5byWCOUxUhOvGHNilCZaoOp2xxb33nF8+CYjE=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix b/pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix
new file mode 100644
index 0000000000000..3ebb482939dcb
--- /dev/null
+++ b/pkgs/servers/home-assistant/custom-components/smartthinq-sensors/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, charset-normalizer
+, pycountry
+, xmltodict
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "ollo69";
+  domain = "smartthinq_sensors";
+  version = "0.39.0";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = "ha-smartthinq-sensors";
+    rev = "v${version}";
+    hash = "sha256-mt5/XHDAUeoMUA1jWdCNXTUgZBQkqabL5Y4MxwxcweY=";
+  };
+
+  propagatedBuildInputs = [
+    charset-normalizer
+    pycountry
+    xmltodict
+  ];
+
+  meta = with lib; {
+    description = "Home Assistant custom integration for SmartThinQ LG devices configurable with Lovelace User Interface";
+    homepage = "https://github.com/ollo69/ha-smartthinq-sensors";
+    changelog = "https://github.com/ollo69/ha-smartthinq-sensors/releases/tag/v${version}";
+    maintainers = with maintainers; [ k900 ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/servers/home-assistant/custom-components/yassi/default.nix b/pkgs/servers/home-assistant/custom-components/yassi/default.nix
new file mode 100644
index 0000000000000..266d926b086b7
--- /dev/null
+++ b/pkgs/servers/home-assistant/custom-components/yassi/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildHomeAssistantComponent
+, fetchFromGitHub
+, pysmartthings
+}:
+
+buildHomeAssistantComponent rec {
+  owner = "samuelspagl";
+  domain = "samsung_soundbar";
+  version = "0.4.0b2";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = "ha_samsung_soundbar";
+    rev = version;
+    hash = "sha256-htAUCQe8mpk+GFwxXkPVnWS0m3mZd2hUt+f4qES+W4U=";
+  };
+
+  propagatedBuildInputs = [ pysmartthings ];
+
+  meta = with lib; {
+    description = "A HomeAssistant integration for Samsung Soundbars";
+    homepage = "https://ha-samsung-soundbar.vercel.app/";
+    changelog = "https://github.com/samuelspagl/ha_samsung_soundbar/releases/tag/${version}";
+    maintainers = with maintainers; [ k900 ];
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix b/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix
index ad89a24b6603f..4b529d6e4016f 100644
--- a/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix
+++ b/pkgs/servers/home-assistant/custom-lovelace-modules/mushroom/default.nix
@@ -5,16 +5,16 @@
 
 buildNpmPackage rec {
   pname = "mushroom";
-  version = "3.5.2";
+  version = "3.5.4";
 
   src = fetchFromGitHub {
     owner = "piitaya";
     repo = "lovelace-mushroom";
     rev = "v${version}";
-    hash = "sha256-mVodC7IEk1Y9ppMdDRXK/8cxQkW+uaC2RzQFnMwNvTQ=";
+    hash = "sha256-ppEXgVrB7C5ZrNmYyXdrnQMbTNU5rTGherNlimMqImM=";
   };
 
-  npmDepsHash = "sha256-g8A8zm7GyASOpuoxuOYGcyUVa6RBc9LGoYLqcFcT64c=";
+  npmDepsHash = "sha256-4B295Wc4tj+Rhse4521sCGNv/WMrNImxZwtTFkFp14c=";
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 797b2ecae5f67..afcb2e2cd18a9 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -39,6 +39,15 @@ let
         };
       });
 
+      aioautomower = super.aioautomower.overridePythonAttrs (oldAttrs: rec {
+        version = "2024.3.4";
+        src = fetchFromGitHub {
+          inherit (oldAttrs.src) owner repo;
+          rev = "refs/tags/${version}";
+          hash = "sha256-dk8HfIiQOKq7Ky+vYa3wKmTS78gTw6J0yyQT2Folpp0=";
+        };
+      });
+
       aioelectricitymaps = super.aioelectricitymaps.overridePythonAttrs (oldAttrs: rec {
         version = "0.4.0";
         src = fetchFromGitHub {
@@ -134,19 +143,6 @@ let
         ];
       });
 
-      bluecurrent-api = super.bluecurrent-api.overridePythonAttrs (oldAttrs: rec {
-        version = "1.0.6";
-        src = fetchPypi {
-          pname = "bluecurrent-api";
-          inherit version;
-          hash = "sha256-XHVdtkiG0ff/OY8g+W5iur7OAyhhk1UGA+XUfB2L8/o=";
-        };
-        build-system = oldAttrs.build-system ++ (with self; [
-          pythonRelaxDepsHook
-        ]);
-        pythonRemoveDeps = [ "asyncio" ];
-      });
-
       debugpy = super.debugpy.overridePythonAttrs (oldAttrs: {
         # tests are deadlocking too often
         # https://github.com/NixOS/nixpkgs/issues/262000
@@ -235,6 +231,15 @@ let
         };
       });
 
+      jaraco-functools = super.jaraco-functools.overridePythonAttrs (oldAttrs: rec {
+        version = "3.9.0";
+        src = fetchPypi {
+          pname = "jaraco.functools";
+          inherit version;
+          hash = "sha256-ixN7D+rMF/70us7gTAEcnobyNBCZyHCh0S0743sypjg=";
+        };
+      });
+
       lmcloud = super.lmcloud.overridePythonAttrs (oldAttrs: rec {
         version = "0.4.35";
         src = fetchFromGitHub {
@@ -424,26 +429,6 @@ let
         };
       });
 
-      pywaze = super.pywaze.overridePythonAttrs (oldAttrs: rec {
-        version = "0.5.1";
-        src = fetchFromGitHub {
-          owner = "eifinger";
-          repo = "pywaze";
-          rev = "refs/tags/v${version}";
-          hash = "sha256-r7ROEdgHdjXkveVUbuALHtwCX4IO0lwx9Zo3u6R9I58=";
-        };
-      });
-
-      sqlalchemy = super.sqlalchemy.overridePythonAttrs (oldAttrs: rec {
-        version = "2.0.27";
-        src = fetchFromGitHub {
-          owner = "sqlalchemy";
-          repo = "sqlalchemy";
-          rev = "refs/tags/rel_${lib.replaceStrings [ "." ] [ "_" ] version}";
-          hash = "sha256-6R+A7rVq1olRXj1wMolHhEq418bpr5rsmH8RjxajmmQ=";
-        };
-      });
-
       tesla-powerwall = super.tesla-powerwall.overridePythonAttrs (oldAttrs: rec {
         version = "0.5.1";
         src = fetchFromGitHub {
@@ -541,7 +526,7 @@ let
   extraBuildInputs = extraPackages python.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2024.3.3";
+  hassVersion = "2024.4.2";
 
 in python.pkgs.buildPythonApplication rec {
   pname = "homeassistant";
@@ -559,13 +544,13 @@ in python.pkgs.buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = "refs/tags/${version}";
-    hash = "sha256-EutnNqENt1MTmbMe9vtSM+bM5PzvjsfMhpkwXdxWoeI=";
+    hash = "sha256-V6qvpPrhfSLINH99hYkAjvG8pfIN8AXGO3HuwiKgMPo=";
   };
 
   # Secondary source is pypi sdist for translations
   sdist = fetchPypi {
     inherit pname version;
-    hash = "sha256-9i8snvozDKgvcEQfk9KTYfqHxQbDBluvArXYVVnNvnA=";
+    hash = "sha256-ZtTlLRDSXKUz+ZA+UctFL+d3wdKrcPdeROIUhS35qWU=";
   };
 
   nativeBuildInputs = with python.pkgs; [
@@ -625,6 +610,7 @@ in python.pkgs.buildPythonApplication rec {
     certifi
     ciso8601
     cryptography
+    fnv-hash-fast
     hass-nabucasa
     httpx
     home-assistant-bluetooth
@@ -633,12 +619,15 @@ in python.pkgs.buildPythonApplication rec {
     lru-dict
     orjson
     packaging
+    pillow
     pip
+    psutil-home-assistant
     pyopenssl
     pyjwt
     python-slugify
     pyyaml
     requests
+    sqlalchemy
     typing-extensions
     ulid-transform
     urllib3
@@ -738,6 +727,10 @@ in python.pkgs.buildPythonApplication rec {
         package = home-assistant;
         command = "hass --version";
       };
+      withoutCheckDeps = home-assistant.overridePythonAttrs {
+        pname = "home-assistant-without-check-deps";
+        doCheck = false;
+      };
     };
   };
 
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index ec699e83164ab..4b95c1cb86886 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -4,7 +4,7 @@ buildPythonPackage rec {
   # the frontend version corresponding to a specific home-assistant version can be found here
   # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
   pname = "home-assistant-frontend";
-  version = "20240307.0";
+  version = "20240404.1";
   format = "wheel";
 
   src = fetchPypi {
@@ -12,7 +12,7 @@ buildPythonPackage rec {
     pname = "home_assistant_frontend";
     dist = "py3";
     python = "py3";
-    hash = "sha256-Wy5TzJ6+Dbkk51TMt9zGIfjI7gMrT4mK0IIRnl4byVE=";
+    hash = "sha256-Vuk/e+wn8Cbko7tbjLIbclhdj3R+BdHzu4OSsBUAOcU=";
   };
 
   # there is nothing to strip in this package
diff --git a/pkgs/servers/home-assistant/intents.nix b/pkgs/servers/home-assistant/intents.nix
index d0c77694413ce..b7b1578033e25 100644
--- a/pkgs/servers/home-assistant/intents.nix
+++ b/pkgs/servers/home-assistant/intents.nix
@@ -9,27 +9,24 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-intents";
-  version = "2024.3.12";
-  format = "pyproject";
+  version = "2024.4.3";
+  format = "wheel";
 
   disabled = pythonOlder "3.9";
 
   src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-9oMn5ogHcuopAnXgATu9xlBBBMeWJ9RT5C//xJ5FOBI=";
+    inherit version format;
+    pname = "home_assistant_intents";
+    dist = "py3";
+    python = "py3";
+    hash = "sha256-GraYVtioKIoKlPRBhhhzlbBfI6heXAaA1MQpUqAgEDQ=";
   };
 
-  postPatch = ''
-    substituteInPlace pyproject.toml --replace-fail \
-      'requires = ["setuptools~=62.3", "wheel~=0.37.1"]' \
-      'requires = ["setuptools"]'
-  '';
-
-  nativeBuildInputs = [
+  build-system = [
     setuptools
   ];
 
-  # sdist does not ship tests
+  # sdist/wheel do not ship tests
   doCheck = false;
 
   pytestFlagsArray = [
diff --git a/pkgs/servers/home-assistant/stubs.nix b/pkgs/servers/home-assistant/stubs.nix
index cefdc1f8746a0..b70aa8ed3d230 100644
--- a/pkgs/servers/home-assistant/stubs.nix
+++ b/pkgs/servers/home-assistant/stubs.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "homeassistant-stubs";
-  version = "2024.3.3";
+  version = "2024.4.2";
   format = "pyproject";
 
   disabled = python.version != home-assistant.python.version;
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "KapJI";
     repo = "homeassistant-stubs";
     rev = "refs/tags/${version}";
-    hash = "sha256-Qc+pwG87R57wGyCujMQ6qygDOhRh/FoDf1HTRZS3M6s=";
+    hash = "sha256-qt7NBbjjeiNcHOM6wKI7Y3+L579xBQJD48hU89BB+ss=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/servers/homepage-dashboard/default.nix b/pkgs/servers/homepage-dashboard/default.nix
index c4eec239b96be..50f75f63abd1e 100644
--- a/pkgs/servers/homepage-dashboard/default.nix
+++ b/pkgs/servers/homepage-dashboard/default.nix
@@ -29,16 +29,16 @@ let
 in
 buildNpmPackage rec {
   pname = "homepage-dashboard";
-  version = "0.8.10";
+  version = "0.8.11";
 
   src = fetchFromGitHub {
     owner = "gethomepage";
     repo = "homepage";
     rev = "v${version}";
-    hash = "sha256-mWUjBRepV7RjX4aPzRks/7NUbPyhaxSqarqnIM0NDQs=";
+    hash = "sha256-vKKdyPUsKfTOBhOFw7psKU0YezLFPt7mrP1RqIyxrss=";
   };
 
-  npmDepsHash = "sha256-ZpH9rVe3bAhVbq7uTVDvaPpA6XRRKT/ySdytZMlemCE=";
+  npmDepsHash = "sha256-w3Wmutru91Zt+kAZ0PBf2CdpgdpxFRoqUmE/0CAu/z4=";
 
   preBuild = ''
     mkdir -p config
diff --git a/pkgs/servers/http/envoy/default.nix b/pkgs/servers/http/envoy/default.nix
index bb8a5e6a575cc..50067d7dd6220 100644
--- a/pkgs/servers/http/envoy/default.nix
+++ b/pkgs/servers/http/envoy/default.nix
@@ -197,5 +197,6 @@ buildBazelPackage {
     license = licenses.asl20;
     maintainers = with maintainers; [ lukegb ];
     platforms = [ "x86_64-linux" "aarch64-linux" ];
+    knownVulnerabilities = [ "CVE-2024-30255" ];
   };
 }
diff --git a/pkgs/servers/http/jetty/common.nix b/pkgs/servers/http/jetty/common.nix
index 83adac4ddd0d3..7c35430e23c19 100644
--- a/pkgs/servers/http/jetty/common.nix
+++ b/pkgs/servers/http/jetty/common.nix
@@ -1,8 +1,8 @@
 { version, hash }:
 
-{ lib, stdenv, fetchurl }:
+{ lib, stdenvNoCC, fetchurl }:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "jetty";
 
   inherit version;
diff --git a/pkgs/servers/http/lighttpd/default.nix b/pkgs/servers/http/lighttpd/default.nix
index 051f1c18e64e3..65bafdac11207 100644
--- a/pkgs/servers/http/lighttpd/default.nix
+++ b/pkgs/servers/http/lighttpd/default.nix
@@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-i3IcqTnTEq+qbvMdy9avtRYe04Wsgo5vzNTFt2vhidY=";
   };
 
+  separateDebugInfo = true;
+
   postPatch = ''
     patchShebangs tests
   '';
diff --git a/pkgs/servers/http/pomerium/default.nix b/pkgs/servers/http/pomerium/default.nix
index 248b7ae1f3e7e..6fe47f9853929 100644
--- a/pkgs/servers/http/pomerium/default.nix
+++ b/pkgs/servers/http/pomerium/default.nix
@@ -14,12 +14,12 @@ let
 in
 buildGoModule rec {
   pname = "pomerium";
-  version = "0.25.1";
+  version = "0.25.2";
   src = fetchFromGitHub {
     owner = "pomerium";
     repo = "pomerium";
     rev = "v${version}";
-    hash = "sha256-xVPyiwKtSBchXC0FhNegeJlUej877zwNvrlAhSy6dJE=";
+    hash = "sha256-JateIiVao5IiPXmphA5+PlzB2XtP6zRR4rURqXSqJ6Q=";
   };
 
   vendorHash = "sha256-GdeZkKkENacc11FmEAFUfX9efInfhpv2Lz0/3CtixFQ=";
diff --git a/pkgs/servers/http/tomcat/axis2/default.nix b/pkgs/servers/http/tomcat/axis2/default.nix
index 5cee9020b8aa9..f31841e28a038 100644
--- a/pkgs/servers/http/tomcat/axis2/default.nix
+++ b/pkgs/servers/http/tomcat/axis2/default.nix
@@ -1,6 +1,6 @@
-{ lib, stdenv, fetchurl, apacheAnt, jdk, unzip }:
+{ lib, stdenvNoCC, fetchurl, apacheAnt, jdk, unzip }:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "axis2";
   version = "1.8.2";
 
diff --git a/pkgs/servers/http/tomcat/default.nix b/pkgs/servers/http/tomcat/default.nix
index 6aa69ad59308e..71d08a9364eb3 100644
--- a/pkgs/servers/http/tomcat/default.nix
+++ b/pkgs/servers/http/tomcat/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, lib, fetchurl, nixosTests, testers, jre }:
+{ stdenvNoCC, lib, fetchurl, nixosTests, testers, jre }:
 
 let
-  common = { version, hash }: stdenv.mkDerivation (finalAttrs: {
+  common = { version, hash }: stdenvNoCC.mkDerivation (finalAttrs: {
     pname = "apache-tomcat";
     inherit version;
 
diff --git a/pkgs/servers/http/trafficserver/default.nix b/pkgs/servers/http/trafficserver/default.nix
index a49acfe9fce80..3a12a34c93f5a 100644
--- a/pkgs/servers/http/trafficserver/default.nix
+++ b/pkgs/servers/http/trafficserver/default.nix
@@ -49,11 +49,11 @@
 
 stdenv.mkDerivation rec {
   pname = "trafficserver";
-  version = "9.2.3";
+  version = "9.2.4";
 
   src = fetchzip {
     url = "mirror://apache/trafficserver/trafficserver-${version}.tar.bz2";
-    hash = "sha256-WqRqf10QKYepCoaNzG26O2jv54Do3qFawDupSkrAPKk=";
+    hash = "sha256-oB3Wv4F6d0+lT1zIDUemgOJzwj+9Nz3uTklkXiWTBKg=";
   };
 
   # NOTE: The upstream README indicates that flex is needed for some features,
diff --git a/pkgs/servers/invidious/default.nix b/pkgs/servers/invidious/default.nix
index f659b75df443a..8cf00ab60a607 100644
--- a/pkgs/servers/invidious/default.nix
+++ b/pkgs/servers/invidious/default.nix
@@ -110,6 +110,6 @@ crystal.buildCrystalPackage rec {
     mainProgram = "invidious";
     homepage = "https://invidious.io/";
     license = licenses.agpl3Plus;
-    maintainers = with maintainers; [ infinisil sbruder ];
+    maintainers = with maintainers; [ sbruder ];
   };
 }
diff --git a/pkgs/servers/jackett/default.nix b/pkgs/servers/jackett/default.nix
index 110e9c8545351..ada510938cf8a 100644
--- a/pkgs/servers/jackett/default.nix
+++ b/pkgs/servers/jackett/default.nix
@@ -9,13 +9,13 @@
 
 buildDotnetModule rec {
   pname = "jackett";
-  version = "0.21.2134";
+  version = "0.21.2342";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    hash = "sha512-kaqHa7uvlD0twqU6/ZEp1u2OZh4v4gPi2n4lh2SXewEDHo2ffX8K91UYzphKu0aQAfIq0abDu8TlSR8JwE89lQ==";
+    hash = "sha512-F1fmDe3ucnjlluyhoUhqrzO15FCvLkYJOAErgUsuIJd9Lw5v5cSANLa9ebuVzSTRscEAVwt7fRRXiJaWJInI/Q==";
   };
 
   projectFile = "src/Jackett.Server/Jackett.Server.csproj";
diff --git a/pkgs/servers/klipper/default.nix b/pkgs/servers/klipper/default.nix
index 1c79e1623a65d..3614e49e75bc1 100644
--- a/pkgs/servers/klipper/default.nix
+++ b/pkgs/servers/klipper/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "klipper";
-  version = "unstable-2024-03-25";
+  version = "unstable-2024-04-05";
 
   src = fetchFromGitHub {
     owner = "KevinOConnor";
     repo = "klipper";
-    rev = "e37b007f67e5bdc330af45b78643f7789c789907";
-    sha256 = "sha256-3IkSU8RXyM8WcrEty2+rGn+K386Pi234n2LCdVi8OkI=";
+    rev = "01c7befacb5b71643130433f2afb3f22ece68d71";
+    sha256 = "sha256-zFGFhO5EYyJ0qwQN+NOaKDlEu2LIbc9JAJVxFbMDJOU=";
   };
 
   sourceRoot = "${src.name}/klippy";
diff --git a/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix b/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix
index 87bdddc690b21..29de85fa99142 100644
--- a/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix
+++ b/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix
@@ -1,4 +1,5 @@
-{ lib, stdenv, fetchFromGitHub, autoconf, automake, sqlite, pkg-config, dovecot, libtool, xapian, icu64 }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, sqlite, pkg-config, dovecot, xapian, icu }:
+
 stdenv.mkDerivation rec {
   pname = "dovecot-fts-xapian";
   version = "1.7.10";
@@ -7,16 +8,15 @@ stdenv.mkDerivation rec {
     owner = "grosjo";
     repo = "fts-xapian";
     rev = version;
-    sha256 = "sha256-Gzr0365lY9wAvmXeVungD2z44WHC+AI0a1xLWy3mCK4=";
+    hash = "sha256-Yd14kla33qAx4Hy0ZdE08javvki3t+hCEc3OTO6YfkQ=";
   };
 
-  buildInputs = [ dovecot xapian icu64 sqlite ];
+  buildInputs = [ xapian icu sqlite ];
 
-  nativeBuildInputs = [ autoconf automake libtool pkg-config ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   preConfigure = ''
     export PANDOC=false
-    autoreconf -vi
   '';
 
   configureFlags = [
diff --git a/pkgs/servers/mail/mailpit/default.nix b/pkgs/servers/mail/mailpit/default.nix
index e64e1c7fcbbbc..9fdcd0be9b610 100644
--- a/pkgs/servers/mail/mailpit/default.nix
+++ b/pkgs/servers/mail/mailpit/default.nix
@@ -12,13 +12,13 @@
 }:
 
 let
-  version = "1.15.0";
+  version = "1.15.1";
 
   src = fetchFromGitHub {
     owner = "axllent";
     repo = "mailpit";
     rev = "v${version}";
-    hash = "sha256-Gu2LKuXzJSOvLZZrxOKwusALkMmNOnb3gyBqxbmZbfI=";
+    hash = "sha256-5QEn4sEZgtoFrVonZsAtvzhEkxYGDEWwhJOxqwWQJTk=";
   };
 
   # Separate derivation, because if we mix this in buildGoModule, the separate
diff --git a/pkgs/servers/matrix-synapse/tools/synadm.nix b/pkgs/servers/matrix-synapse/tools/synadm.nix
index 6d24ea59abcfe..4fa673768d44b 100644
--- a/pkgs/servers/matrix-synapse/tools/synadm.nix
+++ b/pkgs/servers/matrix-synapse/tools/synadm.nix
@@ -6,12 +6,12 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "synadm";
-  version = "0.45";
+  version = "0.46";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-KstWVSU0IE1ncfIkIH1QsaQc/Yfs2lF+6+5x9zw9cA8=";
+    hash = "sha256-Wz5ZpaDJIb7k5ZpvIUd/YGrLJwjDwRaS8Tb3FTd2kZU=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/servers/minio/default.nix b/pkgs/servers/minio/default.nix
index fd69e00271598..671eb4c108a84 100644
--- a/pkgs/servers/minio/default.nix
+++ b/pkgs/servers/minio/default.nix
@@ -21,16 +21,16 @@ let
 in
 buildGoModule rec {
   pname = "minio";
-  version = "2024-03-26T22-10-45Z";
+  version = "2024-04-06T05-26-02Z";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "minio";
     rev = "RELEASE.${version}";
-    hash = "sha256-JdmeURCci8deQH4+7HCHkMbUzhjZBGi3dm3IHkp3XRE=";
+    hash = "sha256-6ThzAPpLKzhHAXYW6EC6aiyVRvI0nJ2a4Q2GvLpg3wo=";
   };
 
-  vendorHash = "sha256-oQatc6/s1kGOZI3XetID0xmABG5XrpD0cW7aWJxWK84=";
+  vendorHash = "sha256-JJfLeKoMBQ1/Q2xF6n9VD3khaiLB1ZLNl9HaQl9eKb8=";
 
   doCheck = false;
 
diff --git a/pkgs/servers/monitoring/grafana-agent/default.nix b/pkgs/servers/monitoring/grafana-agent/default.nix
index 0597eaa75351e..bac1f19150032 100644
--- a/pkgs/servers/monitoring/grafana-agent/default.nix
+++ b/pkgs/servers/monitoring/grafana-agent/default.nix
@@ -15,16 +15,16 @@
 
 buildGoModule rec {
   pname = "grafana-agent";
-  version = "0.40.3";
+  version = "0.40.4";
 
   src = fetchFromGitHub {
     owner = "grafana";
     repo = "agent";
     rev = "v${version}";
-    hash = "sha256-oezfeUW+CVwqe8T3pEkLU1vxI1dntMQ6cvE9AqxKtR8=";
+    hash = "sha256-TWA+anmiKFgK6nb8ipoqRF+HdPMf2JDSU2DeA8fpDlQ=";
   };
 
-  vendorHash = "sha256-64etBHKlEPByDzrEP3YYhgR4vnj4yvHk6cjB92myqyc=";
+  vendorHash = "sha256-xsFD5eAHIWcwayTm5BUAnOHX4AvZXOSJuxvBwCTToeE=";
   proxyVendor = true; # darwin/linux hash mismatch
 
   frontendYarnOfflineCache = fetchYarnDeps {
diff --git a/pkgs/servers/monitoring/grafana-dash-n-grab/default.nix b/pkgs/servers/monitoring/grafana-dash-n-grab/default.nix
index 089d2f4e4db14..49e85ba7dac9f 100644
--- a/pkgs/servers/monitoring/grafana-dash-n-grab/default.nix
+++ b/pkgs/servers/monitoring/grafana-dash-n-grab/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "grafana-dash-n-grab";
-  version = "0.5.2";
+  version = "0.6.0";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "esnet";
     repo = "gdg";
-    sha256 = "sha256-EG1hLyoy75nvA1ZmSHSPVEzMwhq6d0PxmVUpQysjsRg=";
+    sha256 = "sha256-47zKZnq7ADIAti4fjGj6ctoM5Qo6UzAX1aLf87TknkQ=";
   };
 
-  vendorHash = "sha256-w0w6ac8sNxsVBEYps6ZhM7F4PFcIWKah0cnk/NBtA8M=";
+  vendorHash = "sha256-XJSi+p++1QFfGk57trfIgyv0nWUm38H0n/qbJgV8lEM=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/servers/monitoring/grafana-image-renderer/default.nix b/pkgs/servers/monitoring/grafana-image-renderer/default.nix
index 3a4217c6995e5..659387d52e0ee 100644
--- a/pkgs/servers/monitoring/grafana-image-renderer/default.nix
+++ b/pkgs/servers/monitoring/grafana-image-renderer/default.nix
@@ -7,18 +7,18 @@
 
 mkYarnPackage rec {
   pname = "grafana-image-renderer";
-  version = "3.10.1";
+  version = "3.10.2";
 
   src = fetchFromGitHub {
     owner = "grafana";
     repo = "grafana-image-renderer";
     rev = "v${version}";
-    hash = "sha256-hfq0wuDoZ/3kiXVgwFPGRXMGxeRRVvCzi+VWJczOwgM=";
+    hash = "sha256-GL9uJV4/j3tcD9DMoBuO/59OsfG+njc2FH1Bt3VP7K8=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = src + "/yarn.lock";
-    hash = "sha256-NqzADMMjxxZQOPt0lJOWoJ8WEU7hFJmnwRnSQPYMtLo=";
+    hash = "sha256-xgaaIY5Jy8JTSJVGHwPOYgh+fASSPiyoUcmLN516jic=";
   };
 
   packageJSON = ./package.json;
diff --git a/pkgs/servers/monitoring/grafana-image-renderer/package.json b/pkgs/servers/monitoring/grafana-image-renderer/package.json
index 10bd43ab4621c..0d81a12c11094 100644
--- a/pkgs/servers/monitoring/grafana-image-renderer/package.json
+++ b/pkgs/servers/monitoring/grafana-image-renderer/package.json
@@ -30,7 +30,7 @@
     "@puppeteer/browsers": "^1.6.0",
     "chokidar": "^3.5.2",
     "dompurify": "^2.4.0",
-    "express": "^4.16.3",
+    "express": "^4.19.2",
     "express-prom-bundle": "^6.5.0",
     "google-protobuf": "3.21.0",
     "jimp": "^0.22.10",
diff --git a/pkgs/servers/monitoring/loki/default.nix b/pkgs/servers/monitoring/loki/default.nix
index 2935b9d0bf4c4..0cf35895ca6ca 100644
--- a/pkgs/servers/monitoring/loki/default.nix
+++ b/pkgs/servers/monitoring/loki/default.nix
@@ -5,17 +5,19 @@
 , makeWrapper
 , nixosTests
 , systemd
+, testers
+, grafana-loki
 }:
 
 buildGoModule rec {
-  version = "2.9.6";
+  version = "3.0.0";
   pname = "grafana-loki";
 
   src = fetchFromGitHub {
     owner = "grafana";
     repo = "loki";
     rev = "v${version}";
-    hash = "sha256-79hK7axHf6soku5DvdXkE/0K4WKc4pnS9VMbVc1FS2I=";
+    hash = "sha256-2+OST6bKIjuhrXJKA+8vUERKT1/min7tN8oFxKn3L74=";
   };
 
   vendorHash = null;
@@ -38,9 +40,15 @@ buildGoModule rec {
       --prefix LD_LIBRARY_PATH : "${lib.getLib systemd}/lib"
   '';
 
-  passthru.tests = { inherit (nixosTests) loki; };
+  passthru.tests = {
+    inherit (nixosTests) loki;
+    version = testers.testVersion {
+      command = "loki --version";
+      package = grafana-loki;
+    };
+  };
 
-  ldflags = let t = "github.com/grafana/loki/pkg/util/build"; in [
+  ldflags = let t = "github.com/grafana/loki/v3/pkg/util/build"; in [
     "-s"
     "-w"
     "-X ${t}.Version=${version}"
diff --git a/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix b/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix
index 8c929353a8202..66456a85e150f 100644
--- a/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/blackbox-exporter.nix
@@ -2,17 +2,17 @@
 
 buildGoModule rec {
   pname = "blackbox_exporter";
-  version = "0.24.0";
+  version = "0.25.0";
   rev = "v${version}";
 
   src = fetchFromGitHub {
     inherit rev;
     owner = "prometheus";
     repo = "blackbox_exporter";
-    sha256 = "sha256-eoXSBliHadRGPT6+K75p2tEjKHKXmLz4svE59yQAEuM=";
+    sha256 = "sha256-RyVP/lcCN/HbhRtGM7n4kFRpBxMO5SvpleeygzCq5bA=";
   };
 
-  vendorHash = "sha256-yhgmJaWdYR5w5A8MVnHQS1yF6sTIMd1TOiesV4mc0Gs=";
+  vendorHash = "sha256-gVVYccbwtB9/WA3lfzXwI9cZkTdTv96/2gLfwtoE+WM=";
 
   # dns-lookup is performed for the tests
   doCheck = false;
diff --git a/pkgs/servers/monitoring/prometheus/exportarr/default.nix b/pkgs/servers/monitoring/prometheus/exportarr/default.nix
index a451e46df2ab2..caef8c57605da 100644
--- a/pkgs/servers/monitoring/prometheus/exportarr/default.nix
+++ b/pkgs/servers/monitoring/prometheus/exportarr/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "exportarr";
-  version = "2.0.0";
+  version = "2.0.1";
 
   src = fetchFromGitHub {
     owner = "onedr0p";
     repo = "exportarr";
     rev = "v${version}";
-    hash = "sha256-hUgi50BFmtJfp/rNUA8QGYSflfSMANbelPndL7zV7v8=";
+    hash = "sha256-A6G1b9hTGp35ZHsDaMAZdH0LkkEyXCWoV6e5Bo3UqI4=";
   };
 
-  vendorHash = "sha256-Hy8OXFmGTxNlwbRjH05npD2p3avQfWk9k29R5sFKlNI=";
+  vendorHash = "sha256-8MrS/BMSjyWbBM8jVQYDsvLLaolgbP22Vp2PRX33Kfw=";
 
   subPackages = [ "cmd/exportarr" ];
 
diff --git a/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix b/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix
index ca62b415bfb92..970d63ec0f2e1 100644
--- a/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/pgbouncer-exporter.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "pgbouncer-exporter";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "prometheus-community";
     repo = "pgbouncer_exporter";
     rev = "v${version}";
-    hash = "sha256-2N8FaGk6AU39j4q22B2Om5E7BeR7iw9drl3PTOBO2kg=";
+    hash = "sha256-QnA9H4qedCPZKqJQ1I2OJO42mCWcWqYxLmeF3+JXzTw=";
   };
 
-  vendorHash = "sha256-2aaUlOokqYkjMpcM12mU+O+N09/mDPlIrJ4Z1iXJAyk=";
+  vendorHash = "sha256-NYiVW+CNrxFrEUl1nsTeNNgy7SmTYgqs1d50rCvyBcw=";
 
   meta = with lib; {
     description = "Prometheus exporter for PgBouncer";
diff --git a/pkgs/servers/monitoring/prometheus/ping-exporter.nix b/pkgs/servers/monitoring/prometheus/ping-exporter.nix
index 2c42dbdfa5aaf..5419903508a40 100644
--- a/pkgs/servers/monitoring/prometheus/ping-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/ping-exporter.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "ping-exporter";
-  version = "1.1.1";
+  version = "1.1.3";
 
   src = fetchFromGitHub {
     owner = "czerwonk";
     repo = "ping_exporter";
     rev = version;
-    hash = "sha256-3q9AFvtjCSQyqX+LV1MEFHJVPBHtG304zuPHJ12XteE=";
+    hash = "sha256-Jdo+6/e9gES8q4wTGRuy5HSj7VimOMZ9q3guKDcKJxg=";
   };
 
-  vendorHash = "sha256-v1WSx93MHVJZllp4MjTg4G9yqHD3CAiVReZ5Qu1Xv6E=";
+  vendorHash = "sha256-1oNbg6lu9xLJKeYOzK23HOTLJc3KWri7z4/2AZ7Hzms=";
 
   meta = with lib; {
     description = "Prometheus exporter for ICMP echo requests";
diff --git a/pkgs/servers/monitoring/unpoller/default.nix b/pkgs/servers/monitoring/unpoller/default.nix
index 4362feb1b91e1..5ce7d27d86f92 100644
--- a/pkgs/servers/monitoring/unpoller/default.nix
+++ b/pkgs/servers/monitoring/unpoller/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "unpoller";
-  version = "2.11.0";
+  version = "2.11.1";
 
   src = fetchFromGitHub {
     owner = "unpoller";
     repo = "unpoller";
     rev = "v${version}";
-    hash = "sha256-VRABezPSppkVouOb6Oz4SpZLwOWhvNKQ+v4ss8wCDFg=";
+    hash = "sha256-ZCNXwq0kSfXOqF7QktHg1Yw7gqUXkccCgLIs7GTZnuw=";
   };
 
-  vendorHash = "sha256-JF+DwPjtDfFFN9DbEqY9Up8CjDqOsD4IYrMitUd/5Pg=";
+  vendorHash = "sha256-VK0ekEBHn0O41MgxhuPzueF6FazKiipL0OQRVPco3uk=";
 
   ldflags = [
     "-w" "-s"
diff --git a/pkgs/servers/monitoring/vmagent/default.nix b/pkgs/servers/monitoring/vmagent/default.nix
index 7c979f009cd70..9989a8971ffd2 100644
--- a/pkgs/servers/monitoring/vmagent/default.nix
+++ b/pkgs/servers/monitoring/vmagent/default.nix
@@ -1,13 +1,13 @@
 { lib, fetchFromGitHub, buildGoModule }:
 buildGoModule rec {
   pname = "vmagent";
-  version = "1.99.0";
+  version = "1.100.0";
 
   src = fetchFromGitHub {
     owner = "VictoriaMetrics";
     repo = "VictoriaMetrics";
     rev = "v${version}";
-    sha256 = "sha256-IHUmxdCOzvA2JL06k/ei6/OTVWHTL1TiKKYZB1hgqyA=";
+    sha256 = "sha256-jrKTic80y8r/1wOR8Prqe9PG57yo8qQIGsobu0I4kTY=";
   };
 
   ldflags = [ "-s" "-w" "-X github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo.Version=${version}" ];
diff --git a/pkgs/servers/nats-server/default.nix b/pkgs/servers/nats-server/default.nix
index a1014b44ab66a..440d0e1d81af6 100644
--- a/pkgs/servers/nats-server/default.nix
+++ b/pkgs/servers/nats-server/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "nats-server";
-  version = "2.10.12";
+  version = "2.10.14";
 
   src = fetchFromGitHub {
     owner = "nats-io";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-T0rwSa1xTPUZHkFDu9hnD2Kk1ME/vMUa4iK+Zbic6PM=";
+    hash = "sha256-+DdhdW8CCMprjR2XcOntkTDh5CHtEFHYFz7Htdptw3s=";
   };
 
-  vendorHash = "sha256-pSjtUSbJPclsd30KLhLOkN4u6pSn307s3RohroxmExc=";
+  vendorHash = "sha256-4kBXVsKf1jD3zvaAy6Rb7zmIK1WPbi31GRvRghdEC/s=";
 
   doCheck = false;
 
diff --git a/pkgs/servers/nosql/aerospike/default.nix b/pkgs/servers/nosql/aerospike/default.nix
index 623918d1b55c8..9a283a418217d 100644
--- a/pkgs/servers/nosql/aerospike/default.nix
+++ b/pkgs/servers/nosql/aerospike/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "aerospike-server";
-  version = "7.0.0.6";
+  version = "7.0.0.7";
 
   src = fetchFromGitHub {
     owner = "aerospike";
     repo = "aerospike-server";
     rev = version;
-    hash = "sha256-2Gz0Z8nEC3NX2Skg+4MzLrXYVqL30QwMnvu4dkbJ6+g=";
+    hash = "sha256-WAdN0Kk55Y3rhth1tiAZb9xIb0tF3YVfP+BXGRRY3lI=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/servers/nosql/mongodb/4.4.nix b/pkgs/servers/nosql/mongodb/4.4.nix
deleted file mode 100644
index 933e9136aee07..0000000000000
--- a/pkgs/servers/nosql/mongodb/4.4.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ stdenv, callPackage, lib, fetchpatch, sasl, boost, Security, CoreFoundation, cctools }:
-
-let
-  buildMongoDB = callPackage ./mongodb.nix {
-    inherit sasl boost Security CoreFoundation cctools;
-  };
-in
-buildMongoDB {
-  version = "4.4.28";
-  sha256 = "sha256-aq4dJl2FOTOhQ3bzVj0L/0CE3obE7lCx2ecjGNYC8X4=";
-  patches = [
-    ./forget-build-dependencies-4-4.patch
-    ./fix-build-with-boost-1.79-4_4.patch
-    (fetchpatch {
-      name = "mongodb-4.4.15-adjust-the-cache-alignment-assumptions.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/mongodb-4.4.15-adjust-cache-alignment-assumptions.patch.arm64?h=mongodb44";
-      sha256 = "Ah4zdSFgXUJ/HSN8VRLJqDpNy3CjMCBnRqlpALXzx+g=";
-    })
-  ] ++ lib.optionals stdenv.isDarwin [ ./asio-no-experimental-string-view-4-4.patch ];
-}
diff --git a/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-4_4.patch b/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-4_4.patch
deleted file mode 100644
index 72da249f23802..0000000000000
--- a/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-4_4.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From f0c7e9190e9d61515ab3f95c6665754d3b972cd1 Mon Sep 17 00:00:00 2001
-From: Et7f3 <cadeaudeelie@gmail.com>
-Date: Tue, 19 Jul 2022 22:11:11 +0200
-Subject: [PATCH] build: Upgrade boost to 1.79.0
-
-We can see in src/third_party/boost-1.70.0/boost/version.hpp that vendored
-version of boost is BOOST_LIB_VERSION "1_70"
-
-We can also see the doc desbribe 2 headers to use filesystems lib: One is
-src/third_party/boost/boost/filesystem/fstream.hpp that contains (175-177)
-  typedef basic_ifstream<char> ifstream;
-  typedef basic_ofstream<char> ofstream;
-  typedef basic_fstream<char> fstream;
-
-So this mean they mostly forgot to include a header and include-what-you-use
-would catch this error.
-
-In upstream they fixed in a simmilar way
-https://github.com/mongodb/mongo/commit/13389dc222fc372442be8c147e09685bb9a26a3a
-
-Co-Authored-By: Adrian Pistol <vifino@tty.sh>
----
- src/mongo/db/storage/storage_repair_observer.cpp    | 1 +
- src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp | 1 +
- src/mongo/shell/shell_utils_extended.cpp            | 1 +
- src/mongo/util/processinfo_linux.cpp                | 2 +-
- src/mongo/util/stacktrace_threads.cpp               | 1 +
- 5 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/mongo/db/storage/storage_repair_observer.cpp b/src/mongo/db/storage/storage_repair_observer.cpp
-index 22b76a6a39c..453f48229cd 100644
---- a/src/mongo/db/storage/storage_repair_observer.cpp
-+++ b/src/mongo/db/storage/storage_repair_observer.cpp
-@@ -42,6 +42,7 @@
- #endif
- 
- #include <boost/filesystem/path.hpp>
-+#include <boost/filesystem/fstream.hpp>
- 
- #include "mongo/db/dbhelpers.h"
- #include "mongo/db/operation_context.h"
-diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
-index ee87aca4723..bde2c1b2b83 100644
---- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
-+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
-@@ -37,6 +37,7 @@
- 
- #include <boost/filesystem.hpp>
- #include <boost/filesystem/path.hpp>
-+#include <boost/filesystem/fstream.hpp>
- #include <pcrecpp.h>
- 
- #include "mongo/base/simple_string_data_comparator.h"
-diff --git a/src/mongo/shell/shell_utils_extended.cpp b/src/mongo/shell/shell_utils_extended.cpp
-index 8cd7f035f1d..cd672eb513f 100644
---- a/src/mongo/shell/shell_utils_extended.cpp
-+++ b/src/mongo/shell/shell_utils_extended.cpp
-@@ -37,6 +37,7 @@
- #endif
- 
- #include <boost/filesystem.hpp>
-+#include <boost/filesystem/fstream.hpp>
- #include <fstream>
- 
- #include "mongo/bson/bson_validate.h"
-diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp
-index 9063f140988..d74949d45fc 100644
---- a/src/mongo/util/processinfo_linux.cpp
-+++ b/src/mongo/util/processinfo_linux.cpp
-@@ -33,7 +33,7 @@
- 
- #include "processinfo.h"
- 
--#include <iostream>
-+#include <fstream>
- #include <malloc.h>
- #include <pcrecpp.h>
- #include <sched.h>
-diff --git a/src/mongo/util/stacktrace_threads.cpp b/src/mongo/util/stacktrace_threads.cpp
-index 4667a261ab7..73a36015bd6 100644
---- a/src/mongo/util/stacktrace_threads.cpp
-+++ b/src/mongo/util/stacktrace_threads.cpp
-@@ -36,6 +36,7 @@
- #include <array>
- #include <atomic>
- #include <boost/filesystem.hpp>
-+#include <boost/filesystem/fstream.hpp>
- #include <cctype>
- #include <cstdint>
- #include <cstdlib>
--- 
-2.39.2
-
diff --git a/pkgs/servers/nosql/mongodb/mongodb.nix b/pkgs/servers/nosql/mongodb/mongodb.nix
index a51144c48d4e2..801ee28303f07 100644
--- a/pkgs/servers/nosql/mongodb/mongodb.nix
+++ b/pkgs/servers/nosql/mongodb/mongodb.nix
@@ -87,7 +87,7 @@ in stdenv.mkDerivation rec {
     zlib
   ] ++ lib.optionals stdenv.isDarwin [ Security CoreFoundation cctools ]
   ++ lib.optional stdenv.isLinux net-snmp
-  ++ lib.optionals (versionAtLeast version "4.4") [ xz ];
+  ++ [ xz ];
 
   # MongoDB keeps track of its build parameters, which tricks nix into
   # keeping dependencies to build inputs in the final output.
@@ -98,24 +98,15 @@ in stdenv.mkDerivation rec {
     # fix environment variable reading
     substituteInPlace SConstruct \
         --replace "env = Environment(" "env = Environment(ENV = os.environ,"
-   '' + lib.optionalString (versionAtLeast version "4.4") ''
+   '' + ''
     # Fix debug gcc 11 and clang 12 builds on Fedora
     # https://github.com/mongodb/mongo/commit/e78b2bf6eaa0c43bd76dbb841add167b443d2bb0.patch
     substituteInPlace src/mongo/db/query/plan_summary_stats.h --replace '#include <string>' '#include <optional>
     #include <string>'
     substituteInPlace src/mongo/db/exec/plan_stats.h --replace '#include <string>' '#include <optional>
     #include <string>'
-  '' + lib.optionalString (versionOlder version "5.0") ''
-    # remove -march overriding, we know better.
-    sed -i 's/env.Append.*-march=.*$/pass/' SConstruct
   '' + lib.optionalString (stdenv.isDarwin && versionOlder version "6.0") ''
     substituteInPlace src/third_party/mozjs-${mozjsVersion}/extract/js/src/jsmath.cpp --replace '${mozjsReplace}' 0
-  '' + lib.optionalString (stdenv.isDarwin && versionOlder version "3.6") ''
-    substituteInPlace src/third_party/s2/s1angle.cc --replace drem remainder
-    substituteInPlace src/third_party/s2/s1interval.cc --replace drem remainder
-    substituteInPlace src/third_party/s2/s2cap.cc --replace drem remainder
-    substituteInPlace src/third_party/s2/s2latlng.cc --replace drem remainder
-    substituteInPlace src/third_party/s2/s2latlngrect.cc --replace drem remainder
   '' + lib.optionalString stdenv.isi686 ''
 
     # don't fail by default on i686
@@ -135,7 +126,8 @@ in stdenv.mkDerivation rec {
     "--use-sasl-client"
     "--disable-warnings-as-errors"
     "VARIANT_DIR=nixos" # Needed so we don't produce argument lists that are too long for gcc / ld
-  ] ++ lib.optionals (versionAtLeast version "4.4") [ "--link-model=static" ]
+    "--link-model=static"
+  ]
   ++ map (lib: "--use-system-${lib}") system-libraries;
 
   # This seems to fix mongodb not able to find OpenSSL's crypto.h during build
@@ -167,10 +159,9 @@ in stdenv.mkDerivation rec {
 
   installTargets =
     if (versionAtLeast version "6.0") then "install-devcore"
-    else if (versionAtLeast version "4.4") then "install-core"
-    else "install";
+    else "install-core";
 
-  prefixKey = if (versionAtLeast version "4.4") then "DESTDIR=" else "--prefix=";
+  prefixKey = "DESTDIR=";
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix
index 923de9126b5f0..750b943eff0bf 100644
--- a/pkgs/servers/nosql/redis/default.nix
+++ b/pkgs/servers/nosql/redis/default.nix
@@ -85,6 +85,7 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   passthru.tests.redis = nixosTests.redis;
+  passthru.serverBin = "redis-server";
 
   meta = with lib; {
     homepage = "https://redis.io";
diff --git a/pkgs/servers/openvscode-server/default.nix b/pkgs/servers/openvscode-server/default.nix
index fe6f36617d230..6a8de3c6c7b4c 100644
--- a/pkgs/servers/openvscode-server/default.nix
+++ b/pkgs/servers/openvscode-server/default.nix
@@ -117,6 +117,9 @@ stdenv.mkDerivation (finalAttrs: {
     ./remove-node-download.patch
   ];
 
+  # Disable NAPI_EXPERIMENTAL to allow to build with Node.js≥18.20.0.
+  env.NIX_CFLAGS_COMPILE = "-DNODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT";
+
   postPatch = ''
     export HOME=$PWD
 
diff --git a/pkgs/servers/owncast/default.nix b/pkgs/servers/owncast/default.nix
index 25cd615750eeb..9b2dd65f03849 100644
--- a/pkgs/servers/owncast/default.nix
+++ b/pkgs/servers/owncast/default.nix
@@ -9,7 +9,7 @@
 }:
 
 let
-  version = "0.1.2";
+  version = "0.1.3";
 in buildGoModule {
   pname = "owncast";
   inherit version;
@@ -17,9 +17,9 @@ in buildGoModule {
     owner = "owncast";
     repo = "owncast";
     rev = "v${version}";
-    hash = "sha256-pPBY2PcXe3k9G6kjj/vF5VB6DEmiwKDUrK4VGR4xNzU=";
+    hash = "sha256-VoItAV/8hzrqj4bIgMum9Drr/kAafH63vXw3GO6nSOc=";
   };
-  vendorHash = "sha256-7HxiZh5X5AZVMiZT6B8DfOy6stJ3+dFEixwJYv5X0dY=";
+  vendorHash = "sha256-JitvKfCLSravW5WRE0QllJTrRPLaaBg1GxJi3kmtiIU=";
 
   propagatedBuildInputs = [ ffmpeg ];
 
diff --git a/pkgs/servers/pocketbase/default.nix b/pkgs/servers/pocketbase/default.nix
index 50925a7ea5a82..39063ca20860c 100644
--- a/pkgs/servers/pocketbase/default.nix
+++ b/pkgs/servers/pocketbase/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "pocketbase";
-  version = "0.22.7";
+  version = "0.22.8";
 
   src = fetchFromGitHub {
     owner = "pocketbase";
     repo = "pocketbase";
     rev = "v${version}";
-    hash = "sha256-E3xfVyZsUElgv6O8UorGJcWQtg2Xpx0ZUTjzc7LJqjM=";
+    hash = "sha256-D9kxi/+e56/DREoT14EozAB4Z5X4QgmkhoD/sw1VAeY=";
   };
 
-  vendorHash = "sha256-6M+FZiVGtBCxtj8Y/OIpNaU/TKMZtpOsI4OS6W+cRfM=";
+  vendorHash = "sha256-5zO0C/+tVVOgV7TH6eC1Sjh6W8AKannU4e0+OITk4XY=";
 
   # This is the released subpackage from upstream repo
   subPackages = [ "examples/base" ];
diff --git a/pkgs/servers/radicale/2.x.nix b/pkgs/servers/radicale/2.x.nix
index c1e5966690303..23195338641f7 100644
--- a/pkgs/servers/radicale/2.x.nix
+++ b/pkgs/servers/radicale/2.x.nix
@@ -46,6 +46,6 @@ python3.pkgs.buildPythonApplication rec {
       on mobile phones or computers.
     '';
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ edwtjo pSub infinisil ];
+    maintainers = with maintainers; [ edwtjo pSub ];
   };
 }
diff --git a/pkgs/servers/readarr/default.nix b/pkgs/servers/readarr/default.nix
index 511493bc99982..912db6f5ec3b1 100644
--- a/pkgs/servers/readarr/default.nix
+++ b/pkgs/servers/readarr/default.nix
@@ -8,13 +8,13 @@ let
     x86_64-darwin = "x64";
   }."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
   hash = {
-    x64-linux_hash = "sha256-dPiavOh69pFWgzM533P7Cv0IUa3YOmCBROjdXflya0s=";
-    arm64-linux_hash = "sha256-dzGdOm4Uj1RavpwLQ5PmeeCBELoTZz7VCtuv9+cZPxQ=";
-    x64-osx_hash = "sha256-i5KKY1r2zlIRPggoo9Ju7WSkHA44x42thVQswnXYAp4=";
+    x64-linux_hash = "sha256-Oq8kxHfVG34qiBOOgsXy/qblrKbndrNAMzyDLMcwko0=";
+    arm64-linux_hash = "sha256-0IOyLZwWBJQ1c+IOLuI6TXLSPNNaWLMbuBXOOmn5PlI=";
+    x64-osx_hash = "sha256-Q+qgmrko7DoUTW3B8NDWi7Rw80GYLaKyK/fq7y6eq7Q=";
   }."${arch}-${os}_hash";
 in stdenv.mkDerivation rec {
   pname = "readarr";
-  version = "0.3.21.2475";
+  version = "0.3.22.2499";
 
   src = fetchurl {
     url = "https://github.com/Readarr/Readarr/releases/download/v${version}/Readarr.develop.${version}.${os}-core-${arch}.tar.gz";
diff --git a/pkgs/servers/rmfakecloud/default.nix b/pkgs/servers/rmfakecloud/default.nix
index d2872e7e3732b..44d7b02d721da 100644
--- a/pkgs/servers/rmfakecloud/default.nix
+++ b/pkgs/servers/rmfakecloud/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "rmfakecloud";
-  version = "0.0.17";
+  version = "0.0.18";
 
   src = fetchFromGitHub {
     owner = "ddvk";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Rb81CbtC1V8AugTNIGx07CvK20sZ5d4hfc4OxF259IQ=";
+    sha256 = "sha256-J8oB5C5FYZTVq9zopHoL6WYpfTyiiyrQ4YSGu+2eaKw=";
   };
 
-  vendorHash = "sha256-Rr2EVrQOdlOqSlTpXFMfnKNmdw6UiT7LZH0xBUwqkJc=";
+  vendorHash = "sha256-S43qNDAlDWhrkfSffCooveemR1Z7KXS18t97UoolgBM=";
 
   ui = callPackage ./webui.nix { inherit version src; };
 
diff --git a/pkgs/servers/rmfakecloud/webui.nix b/pkgs/servers/rmfakecloud/webui.nix
index 407afdb85ddd5..ceadafc805033 100644
--- a/pkgs/servers/rmfakecloud/webui.nix
+++ b/pkgs/servers/rmfakecloud/webui.nix
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
 
   yarnOfflineCache = fetchYarnDeps {
     yarnLock = "${src}/ui/yarn.lock";
-    sha256 = "sha256-4boZCEly4HovK9BXlSoFd3wZoPaGnzbJg5AygSC/Lrg=";
+    sha256 = "sha256-JLCrpzytMKejmW+WlM6yybsoIZiimiJdPG5dSIn1L14=";
   };
 
   nativeBuildInputs = [ prefetch-yarn-deps yarn nodejs ];
diff --git a/pkgs/servers/search/khoj/default.nix b/pkgs/servers/search/khoj/default.nix
index b09864492d7fc..202eedb46f7bf 100644
--- a/pkgs/servers/search/khoj/default.nix
+++ b/pkgs/servers/search/khoj/default.nix
@@ -137,7 +137,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/debanjum/khoj/releases/tag/${version}";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ dit7ya ];
-    # src/tcmalloc.cc:333] Attempt to free invalid pointer
-    broken = stdenv.isDarwin;
+    broken = true; # last successful build 2024-01-10
   };
 }
diff --git a/pkgs/servers/search/typesense/sources.json b/pkgs/servers/search/typesense/sources.json
index 0e94b56e5ee1a..0f7f43b7015af 100644
--- a/pkgs/servers/search/typesense/sources.json
+++ b/pkgs/servers/search/typesense/sources.json
@@ -1,17 +1,17 @@
 {
-  "version": "0.25.2",
+  "version": "26.0",
   "platforms": {
     "aarch64-linux": {
       "arch": "linux-arm64",
-      "hash": "sha256-cSKOSy31mwRn8hw4fSm3w7+8Y4MeQs4+ZN+/pOX15jM="
+      "hash": "sha256-ZexCxgBkscKTij0lfvAv4WI8bjpR29QGZhBav8C8TmQ="
     },
     "x86_64-linux": {
       "arch": "linux-amd64",
-      "hash": "sha256-CuCKFAGgGhq4gKinjZn8bRz0BCJG5GbvW7rSaAXOhJo="
+      "hash": "sha256-YFkr5iynq7q6w0oXlDGr/CnreBxvi7WVOtu6fKLtW2I="
     },
     "x86_64-darwin": {
       "arch": "darwin-amd64",
-      "hash": "sha256-xNvsP6yIH8GI5RLH+jRgZC08Mch2Z1WFsEHIwfcI77A="
+      "hash": "sha256-FkWie6DgIhgojrn48rt9/GT0Lmu7jt74q2rzw1MI2Ws="
     }
   }
 }
diff --git a/pkgs/servers/search/weaviate/default.nix b/pkgs/servers/search/weaviate/default.nix
index c465125cb0b8c..9f814dd68e2a5 100644
--- a/pkgs/servers/search/weaviate/default.nix
+++ b/pkgs/servers/search/weaviate/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "weaviate";
-  version = "1.24.6";
+  version = "1.24.8";
 
   src = fetchFromGitHub {
     owner = "weaviate";
     repo = "weaviate";
     rev = "v${version}";
-    hash = "sha256-1IwLHSQxCSGLnva37JNIfaSzVBRAPNw/RYvx6ksFEFU=";
+    hash = "sha256-OydGohfsS2/Wb9uuFP+6IogmfiWMFLBIEdooFJwS3TU=";
   };
 
   vendorHash = "sha256-DMzwIxtF267C2OLyVdZ6CrCz44sy6ZeKL2qh8AkhS2I=";
diff --git a/pkgs/servers/sickbeard/sickgear.nix b/pkgs/servers/sickbeard/sickgear.nix
index 2f1949ad6430a..30a93d81c6ba9 100644
--- a/pkgs/servers/sickbeard/sickgear.nix
+++ b/pkgs/servers/sickbeard/sickgear.nix
@@ -4,13 +4,13 @@ let
   pythonEnv = python3.withPackages(ps: with ps; [ cheetah3 lxml ]);
 in stdenv.mkDerivation rec {
   pname = "sickgear";
-  version = "3.30.16";
+  version = "3.30.17";
 
   src = fetchFromGitHub {
     owner = "SickGear";
     repo = "SickGear";
     rev = "release_${version}";
-    hash = "sha256-9DeHA7wBHz4gjqtRF3uaHKG9EEnjQmmEPvpqKaffJyg=";
+    hash = "sha256-ITEKF/YPoozAaCH/8s7Jwlj2YUc+CLqIjtpDZ3b2J5w=";
   };
 
   patches = [
diff --git a/pkgs/servers/snappymail/default.nix b/pkgs/servers/snappymail/default.nix
index 0604c8c50b3cf..67bb783205484 100644
--- a/pkgs/servers/snappymail/default.nix
+++ b/pkgs/servers/snappymail/default.nix
@@ -7,11 +7,11 @@
 
 stdenv.mkDerivation rec {
   pname = "snappymail";
-  version = "2.35.4";
+  version = "2.36.0";
 
   src = fetchurl {
     url = "https://github.com/the-djmaze/snappymail/releases/download/v${version}/snappymail-${version}.tar.gz";
-    sha256 = "sha256-l75s2ntZM/eqoFqw8bMkmxwPBvOFwf2Y8TpSsyzu3cU=";
+    sha256 = "sha256-UTzWGwvlRtflpvMNbEg9XM2wllfa41EGLri9GcDzP4c=";
   };
 
   sourceRoot = "snappymail";
diff --git a/pkgs/servers/sonarr/default.nix b/pkgs/servers/sonarr/default.nix
index f0a85b251db03..a19dc71491141 100644
--- a/pkgs/servers/sonarr/default.nix
+++ b/pkgs/servers/sonarr/default.nix
@@ -10,15 +10,15 @@ let
   }."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
 
   hash = {
-    x64-linux_hash = "sha256-S9j6zXEJM963tki88awPW0uK0fQd1bBwBcsHBlDSg/E=";
-    arm64-linux_hash = "sha256-73FkmdliX5SNrQRRZeAkU0G96ehCd9mT8NVyJoZiA38=";
-    x64-osx_hash = "sha256-XZ4ITJtc2ENw7IAYrBZF0N/NCjUVve+SkWhu6kfQIQA=";
-    arm64-osx_hash = "sha256-2tA17mDuCX5X0U96Rp6QUQOVWvu9sPMOimD6kks+S00=";
+    x64-linux_hash = "sha256-xGaPNEPSpUr9sv4DTK8oDHzmLytp3Tp+cp45Q1TKYrc=";
+    arm64-linux_hash = "sha256-YeHXIyocRgaHmKrE9K9E3+xZyS2MDnsxmSIJB7dAQLU=";
+    x64-osx_hash = "sha256-8/YEKfSldXBtnkWBEXmCWYIJ2ePJj1aMDpBO3+cDcDk=";
+    arm64-osx_hash = "sha256-3aA8SlhNLOBAZIcsnjfl0ninsDej+KqTTwmm+rLYRFk=";
   }."${arch}-${os}_hash";
 in
 stdenv.mkDerivation rec {
   pname = "sonarr";
-  version = "4.0.2.1183";
+  version = "4.0.3.1413";
 
   src = fetchurl {
     url = "https://github.com/Sonarr/Sonarr/releases/download/v${version}/Sonarr.main.${version}.${os}-${arch}.tar.gz";
diff --git a/pkgs/servers/spicedb/default.nix b/pkgs/servers/spicedb/default.nix
index c829841548791..3ef10799a5f14 100644
--- a/pkgs/servers/spicedb/default.nix
+++ b/pkgs/servers/spicedb/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "spicedb";
-  version = "1.30.0";
+  version = "1.30.1";
 
   src = fetchFromGitHub {
     owner = "authzed";
     repo = "spicedb";
     rev = "v${version}";
-    hash = "sha256-enMUGLOoVy56PCAqfW6jTOgEr/Me6kbuUvq3YmlxMPs=";
+    hash = "sha256-4hxIDdmPXU+wnD6O7S/H30YIAroOWAQobAPimwwxxv0=";
   };
 
   vendorHash = "sha256-lMhfCkuLuA8aj3Q+I/v/Ohof/htBJjPRmQ3c9QXsioc=";
diff --git a/pkgs/servers/sql/dolt/default.nix b/pkgs/servers/sql/dolt/default.nix
index 2ae5e937b10e3..e0c08ef2d9876 100644
--- a/pkgs/servers/sql/dolt/default.nix
+++ b/pkgs/servers/sql/dolt/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "dolt";
-  version = "1.35.7";
+  version = "1.35.8";
 
   src = fetchFromGitHub {
     owner = "dolthub";
     repo = "dolt";
     rev = "v${version}";
-    sha256 = "sha256-n6J6gFXdUvR1G2KmZf/k1ngeXAUbYorNFDxND+e5YIY=";
+    sha256 = "sha256-JpRJbAxu6Bz47vJ/DB3QpUZk2LcGHe/vUVpzbnsG+FI=";
   };
 
   modRoot = "./go";
   subPackages = [ "cmd/dolt" ];
-  vendorHash = "sha256-o9b+eoFCrC7oN26nyeFGMWnLtvU+Wk7e9cr38bSsKTs=";
+  vendorHash = "sha256-Hk9ILvK9b/3Eh7D6NQT7W6ZCW0J3unuALqy/po46cm8=";
   proxyVendor = true;
   doCheck = false;
 
diff --git a/pkgs/servers/sql/postgresql/ext/lantern.nix b/pkgs/servers/sql/postgresql/ext/lantern.nix
index 2d30227ed5a5d..1ff37ef1b4945 100644
--- a/pkgs/servers/sql/postgresql/ext/lantern.nix
+++ b/pkgs/servers/sql/postgresql/ext/lantern.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "lantern";
-  version = "0.2.2";
+  version = "0.2.3";
 
   src = fetchFromGitHub {
     owner = "lanterndata";
     repo = "lantern";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-crN1KEzhiRLhQbv2O1vvjtHDV41yLyrwDpHa7mUFW64=";
+    hash = "sha256-viTI8hIdtoLefXyBPyFAKWr1suCvuU7rjXQOIZKLBHw=";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/servers/sql/postgresql/ext/pgtap.nix b/pkgs/servers/sql/postgresql/ext/pgtap.nix
index f1514e1ae8d36..2151e718dcf3b 100644
--- a/pkgs/servers/sql/postgresql/ext/pgtap.nix
+++ b/pkgs/servers/sql/postgresql/ext/pgtap.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "pgtap";
-  version = "1.3.2";
+  version = "1.3.3";
 
   src = fetchFromGitHub {
     owner = "theory";
     repo = "pgtap";
     rev = "v${finalAttrs.version}";
-    sha256 = "sha256-jPfYp94mZenKctCW+3tyyvdgVKW6TDsG1/dbBlHK3vE=";
+    sha256 = "sha256-YgvfLGF7pLVcCKD66NnWAydDxtoYHH1DpLiYTEKHJ0E=";
   };
 
   nativeBuildInputs = [ postgresql perl perlPackages.TAPParserSourceHandlerpgTAP which ];
diff --git a/pkgs/servers/tailscale/default.nix b/pkgs/servers/tailscale/default.nix
index 7da355cf4a92f..c2abec9d1f8e7 100644
--- a/pkgs/servers/tailscale/default.nix
+++ b/pkgs/servers/tailscale/default.nix
@@ -12,7 +12,7 @@
 }:
 
 let
-  version = "1.62.1";
+  version = "1.64.0";
 in
 buildGoModule {
   pname = "tailscale";
@@ -22,9 +22,9 @@ buildGoModule {
     owner = "tailscale";
     repo = "tailscale";
     rev = "v${version}";
-    hash = "sha256-gV1k+8n6vuL9q4hNaMdQLf6083Em+CC7/uTdUpehbUU=";
+    hash = "sha256-qBZoiqhBMBNbeytDBH+sOxxsVjOcH6vnSgIufx+Op04=";
   };
-  vendorHash = "sha256-jyRjT/CQBlmjHzilxJvMuzZQlGyJB4X/yISgWjBVDxc=";
+  vendorHash = "sha256-pYeHqYd2cCOVQlD1r2lh//KC+732H0lj1fPDBr+W8qA=";
 
   nativeBuildInputs = lib.optionals stdenv.isLinux [ makeWrapper ];
 
diff --git a/pkgs/servers/unifi/default.nix b/pkgs/servers/unifi/default.nix
index 766b9cc19be40..8eba1a4953b22 100644
--- a/pkgs/servers/unifi/default.nix
+++ b/pkgs/servers/unifi/default.nix
@@ -45,26 +45,6 @@ let
 in rec {
   # see https://community.ui.com/releases / https://www.ui.com/download/unifi
 
-  unifiLTS = generic {
-    version = "5.6.42";
-    sha256 = "0wxkv774pw43c15jk0sg534l5za4j067nr85r5fw58iar3w2l84x";
-  };
-
-  unifi5 = generic {
-    version = "5.14.23";
-    sha256 = "1aar05yjm3z5a30x505w4kakbyz35i7mk7xyg0wm4ml6h94d84pv";
-
-    postInstall = ''
-      # Remove when log4j is updated to 2.12.2 or 2.16.0.
-      ${zip}/bin/zip -q -d $out/lib/log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
-    '';
-  };
-
-  unifi6 = generic {
-    version = "6.5.55";
-    sha256 = "sha256-NUGRO+f6JzWvYPwiitZsgp+LQwnGSncnost03mgNVxA=";
-  };
-
   unifi7 = generic {
     version = "7.5.187";
     suffix = "-f57f5bf7ab";
diff --git a/pkgs/servers/web-apps/bookstack/default.nix b/pkgs/servers/web-apps/bookstack/default.nix
index 227d4185baf80..c9ef56c67582c 100644
--- a/pkgs/servers/web-apps/bookstack/default.nix
+++ b/pkgs/servers/web-apps/bookstack/default.nix
@@ -16,13 +16,13 @@ let
 
 in package.override rec {
   pname = "bookstack";
-  version = "24.02.2";
+  version = "24.02.3";
 
   src = fetchFromGitHub {
     owner = "bookstackapp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1b4166vd3ribs69ad5ljp71im0fh0n0m5c5l04i3l44a5bw25b2h";
+    sha256 = "sha256-+8J7dB666KZSJbvnmJl/PivtMQ6Hlz3AAy6E1xpRRmU=";
   };
 
   meta = with lib; {
diff --git a/pkgs/servers/web-apps/healthchecks/default.nix b/pkgs/servers/web-apps/healthchecks/default.nix
index 193452c4354ca..09f029930c3b1 100644
--- a/pkgs/servers/web-apps/healthchecks/default.nix
+++ b/pkgs/servers/web-apps/healthchecks/default.nix
@@ -7,32 +7,35 @@
 let
   py = python3.override {
     packageOverrides = final: prev: {
-      django = prev.django_4;
+      django = prev.django_5;
     };
   };
 in
 py.pkgs.buildPythonApplication rec {
   pname = "healthchecks";
-  version = "2.10";
+  version = "3.3";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "healthchecks";
     repo = pname;
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-1x+pYMHaKgLFWcL1axOv/ok1ebs0I7Q+Q6htncmgJzU=";
+    sha256 = "sha256-XQ8nr9z9Yjwr1irExIgYiGX2knMXX701i6BwvXsVP+E=";
   };
 
   propagatedBuildInputs = with py.pkgs; [
+    aiosmtpd
     apprise
-    cron-descriptor
     cronsim
     django
     django-compressor
+    django-stubs-ext
     fido2
     minio
+    oncalendar
     psycopg2
     pycurl
+    pydantic
     pyotp
     segno
     statsd
diff --git a/pkgs/servers/web-apps/wallabag/default.nix b/pkgs/servers/web-apps/wallabag/default.nix
index 792292066f53e..8ba8799bf68f5 100644
--- a/pkgs/servers/web-apps/wallabag/default.nix
+++ b/pkgs/servers/web-apps/wallabag/default.nix
@@ -15,7 +15,7 @@
 
 let
   pname = "wallabag";
-  version = "2.6.8";
+  version = "2.6.9";
 in
 stdenv.mkDerivation {
   inherit pname version;
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
   # Release tarball includes vendored files
   src = fetchurl {
     url = "https://github.com/wallabag/wallabag/releases/download/${version}/wallabag-${version}.tar.gz";
-    hash = "sha256-pmQXafqpd5rTwBIYG9NnwIIPta6Ek7iYaPaHvz1s550=";
+    hash = "sha256-V4s5/y9fFAmZ+WnUxU03UyRivEihD1ZUKQOOq4TLEKw=";
   };
 
   patches = [
diff --git a/pkgs/servers/web-apps/wordpress/default.nix b/pkgs/servers/web-apps/wordpress/default.nix
index f1a73feab8651..52f2345b64d0d 100644
--- a/pkgs/servers/web-apps/wordpress/default.nix
+++ b/pkgs/servers/web-apps/wordpress/default.nix
@@ -1,5 +1,5 @@
 { callPackage }: builtins.mapAttrs (_: callPackage ./generic.nix) rec {
-  wordpress = wordpress6_4;
+  wordpress = wordpress6_5;
   wordpress6_3 = {
     version = "6.3.2";
     hash = "sha256-Jo2/Vlm4Ml24ucPI6ZHs2mkbpY2rZB1dofmGXNPweA8=";
@@ -8,4 +8,8 @@
     version = "6.4.3";
     hash = "sha256-PwjHHRlwhEH9q94bPq34NnQv3uhm1kOpjRAu0/ECaYY=";
   };
+  wordpress6_5 = {
+    version = "6.5";
+    hash = "sha256-NCRWKIrhSMC6itw2y/WJUd2LSRtnVWkmVO/b2nEJK58=";
+  };
 }
diff --git a/pkgs/servers/web-apps/wordpress/packages/languages.json b/pkgs/servers/web-apps/wordpress/packages/languages.json
index 6a9d4361f2260..ee7b57912cc5a 100644
--- a/pkgs/servers/web-apps/wordpress/packages/languages.json
+++ b/pkgs/servers/web-apps/wordpress/packages/languages.json
@@ -1,20 +1,20 @@
 {
   "de_DE": {
     "path": "de_DE",
-    "rev": "1286009",
-    "sha256": "1w6q2ja1y77yagg73zhrw94f2vpgd521zahwhvxqxa8isphbrybj",
-    "version": "6.4"
+    "rev": "1410426",
+    "sha256": "1h7nffn5lwvg1m1lv8sgwblzzbyx2ksrj55nlv9gj52qn4lv02f3",
+    "version": "6.5"
   },
   "fr_FR": {
     "path": "fr_FR",
-    "rev": "1285884",
-    "sha256": "1qlq7p9pmspizbgjp895jldb6cbsvfal6h02p44r87ag356cjk6j",
-    "version": "6.4"
+    "rev": "1410193",
+    "sha256": "1ka8z78ayfclnz8w4nc4sq8kp2ywnk63xcmc3pbzfilmf6sx2vss",
+    "version": "6.5"
   },
   "ro_RO": {
     "path": "ro_RO",
-    "rev": "1296680",
-    "sha256": "0m98iaai240yn4lx4lhqgzi2wlxkz67v1cg86jhfi72n0rhr4l46",
-    "version": "6.4"
+    "rev": "1410195",
+    "sha256": "01jhp0z1cb98mk5fh88b64fmmw112r73n34q44dp2rl2hi8wlrfg",
+    "version": "6.5"
   }
 }
diff --git a/pkgs/servers/web-apps/wordpress/packages/plugins.json b/pkgs/servers/web-apps/wordpress/packages/plugins.json
index e85bf69310c1c..3d5f69ccb9009 100644
--- a/pkgs/servers/web-apps/wordpress/packages/plugins.json
+++ b/pkgs/servers/web-apps/wordpress/packages/plugins.json
@@ -6,16 +6,16 @@
     "version": "2.4.6"
   },
   "akismet": {
-    "path": "akismet/tags/5.3",
-    "rev": "2991242",
-    "sha256": "1i7y09x2aikndf80wl7xv65m71nv5s0w6jcadpp0dsyzp2m3gjnn",
-    "version": "5.3"
+    "path": "akismet/tags/5.3.2",
+    "rev": "3055719",
+    "sha256": "1298r4mqv4ndyizgmsln06d4cgr04kw3wpdsl6y7ym7lriy207qw",
+    "version": "5.3.2"
   },
   "antispam-bee": {
-    "path": "antispam-bee/tags/2.11.5",
-    "rev": "2969611",
-    "sha256": "1pbigfchwkz9zks3vf1xd83d0aj4n1fmlimn8dpa5pw96687nc9d",
-    "version": "2.11.5"
+    "path": "antispam-bee/tags/2.11.6",
+    "rev": "3051694",
+    "sha256": "1nbfg7ksyh2mrlbk9p7czk6gv64gzxjd2lnsi5nyn90j2m8kw2kc",
+    "version": "2.11.6"
   },
   "async-javascript": {
     "path": "async-javascript/tags/2.21.08.31",
@@ -24,10 +24,10 @@
     "version": "2.21.08.31"
   },
   "breeze": {
-    "path": "breeze/tags/2.1.2",
-    "rev": "3011880",
-    "sha256": "164sf180j99icn39215s997qqmqddyqnkf7k29fwpkgz5ww0zkkd",
-    "version": "2.1.2"
+    "path": "breeze/tags/2.1.6",
+    "rev": "3051666",
+    "sha256": "0926fxbxkw06g6828s0yx017zp1sr60lh2b9cdgil0fxwc5ga26z",
+    "version": "2.1.6"
   },
   "co-authors-plus": {
     "path": "co-authors-plus/tags/3.5.15",
@@ -42,10 +42,10 @@
     "version": "3.1.1"
   },
   "cookie-notice": {
-    "path": "cookie-notice/tags/2.4.13",
-    "rev": "3002920",
-    "sha256": "0rw511zygmg1i8zp388s4fc526wr4pgszsqxw0bmwia6sjz0a9pn",
-    "version": "2.4.13"
+    "path": "cookie-notice/tags/2.4.16",
+    "rev": "3062780",
+    "sha256": "0fiskqj229r9ymnhr7h1z7snyhbv3ka3lp1ysbdyl631l992lwnc",
+    "version": "2.4.16"
   },
   "disable-xml-rpc": {
     "path": "disable-xml-rpc/tags/1.0.1",
@@ -60,10 +60,10 @@
     "version": "1.4.0"
   },
   "gutenberg": {
-    "path": "gutenberg/tags/17.3.0",
-    "rev": "3012944",
-    "sha256": "0n51lldbbk0sfzcjk8mcjnaj6dmhhbg45kc9a03igl6cnppw6g53",
-    "version": "17.3.0"
+    "path": "gutenberg/tags/18.0.1",
+    "rev": "3067379",
+    "sha256": "008kz282jmxiw7ayycl4a1dnwfvzna0dax1nydbm27sdj9nzqzak",
+    "version": "18.0.1"
   },
   "hello-dolly": {
     "path": "hello-dolly/tags/1.7.2",
@@ -73,15 +73,15 @@
   },
   "hkdev-maintenance-mode": {
     "path": "hkdev-maintenance-mode/trunk",
-    "rev": "3003933",
-    "sha256": "1mfn9njy7sp23hgpd597y74gs52gi9lm8qajv7xbgza82920mlgd",
-    "version": "2.5.0"
+    "rev": "3054874",
+    "sha256": "0p2qj6w0gy0pl0mq4x9f53r3y0rkr47039mb7l9rg6rgs41baa9m",
+    "version": "3.0.2"
   },
   "jetpack": {
-    "path": "jetpack/tags/12.9.3",
-    "rev": "3013460",
-    "sha256": "1lgkd3bgaqf155a39zfxx7ikmfxpzfsfak71mrlga12sfmyrrw74",
-    "version": "12.9.3"
+    "path": "jetpack/tags/13.3",
+    "rev": "3063825",
+    "sha256": "1fv3dr993smlb8yd2ca7cd4w67a2sn2vbkc53w6hcjggkjn8bkkv",
+    "version": "13.3"
   },
   "jetpack-lite": {
     "path": "jetpack-lite/tags/3.0.3",
@@ -90,22 +90,22 @@
     "version": "3.0.3"
   },
   "lightbox-photoswipe": {
-    "path": "lightbox-photoswipe/tags/5.1.0",
-    "rev": "3001652",
-    "sha256": "1mdrxc15skbg8gm18b88hj97mps668in7xvyvymfn5sgpf843glz",
-    "version": "5.1.0"
+    "path": "lightbox-photoswipe/tags/5.2.6",
+    "rev": "3065055",
+    "sha256": "1bhw5wvv722qm5a47ia2g5laj5fxr0yw61ajq03qbp0jpqry3slf",
+    "version": "5.2.6"
   },
   "login-lockdown": {
-    "path": "login-lockdown/tags/2.08",
-    "rev": "3007562",
-    "sha256": "0s9ahqbqcl0rlbbszrbdggyhnqw8k60xzlwq3nzsh2dxaphnmbi5",
-    "version": "2.08"
+    "path": "login-lockdown/tags/2.09",
+    "rev": "3059559",
+    "sha256": "0rvxzb1bfssfsngkf3mkqb0h3vivyjnsw822s7fwkavhklm6cfjx",
+    "version": "2.09"
   },
   "mailpoet": {
-    "path": "mailpoet/tags/4.40.0",
-    "rev": "3008786",
-    "sha256": "18604065zjwdrr63ad0a8zqy0cdfh8f5i3jyq5na5iayspgmy0lz",
-    "version": "4.40.0"
+    "path": "mailpoet/tags/4.48.2",
+    "rev": "3067726",
+    "sha256": "13brfys3xmpmw5yd1wn826mrzxvb6312177l7hmr6mhk0adp5lhz",
+    "version": "4.48.2"
   },
   "merge-minify-refresh": {
     "path": "merge-minify-refresh/trunk",
@@ -115,20 +115,20 @@
   },
   "opengraph": {
     "path": "opengraph/tags/1.11.2",
-    "rev": "2995321",
-    "sha256": "03cg7jm0g3rfwkvgjcg392mw09mlbmnvhw261rlldycfglmi270m",
+    "rev": "3065435",
+    "sha256": "1s78pf57s37rljd5qjddjyhbff2kw7h9y11k0nk9a6rj3l1zx9hl",
     "version": "1.11.2"
   },
   "simple-login-captcha": {
-    "path": "simple-login-captcha/tags/1.3.5",
-    "rev": "2988106",
-    "sha256": "1byq8f5qkxxnhjc4dk1ab7h8vzcr01y1nid81wwj2k1i03z9llqa",
-    "version": "1.3.5"
+    "path": "simple-login-captcha/tags/1.3.6",
+    "rev": "3061970",
+    "sha256": "0fxvx71ncxd2gypfcl86s56qy93npw2jmzl06f6zdvrk48644f0z",
+    "version": "1.3.6"
   },
   "simple-mastodon-verification": {
     "path": "simple-mastodon-verification/tags/1.1.3",
-    "rev": "2998678",
-    "sha256": "0ikymrf21l86gpdcjfawadqg1nbfsm6gggcc1g2g553pjg277grz",
+    "rev": "3044168",
+    "sha256": "1r0jfcy7qmrcclnhfqja6rixs3w3ipadblpgk54s36b11gnkfs9q",
     "version": "1.1.3"
   },
   "static-mail-sender-configurator": {
@@ -144,40 +144,40 @@
     "version": "1.2.3"
   },
   "webp-converter-for-media": {
-    "path": "webp-converter-for-media/tags/5.11.5",
-    "rev": "3006520",
-    "sha256": "1mkfki9148w43r3h8afp1j8vkrljsch68y8l4m6i8w5jsjvb5c18",
-    "version": "5.11.5"
+    "path": "webp-converter-for-media/tags/5.12.3",
+    "rev": "3054812",
+    "sha256": "16gfsx0378rhs133csyl1mblz4jvasjd146amrljgbrk9anj8cnx",
+    "version": "5.12.3"
   },
   "webp-express": {
-    "path": "webp-express/tags/0.25.8",
-    "rev": "2981697",
-    "sha256": "17v94im2cnvjiglfzbqq598blwn7m5j84sd8ysbq8lc60kwn0vi3",
-    "version": "0.25.8"
+    "path": "webp-express/tags/0.25.9",
+    "rev": "3066149",
+    "sha256": "1rcd6qxpq569w8hk01h2k807n9qwvz2qv4g33n7spzsxpgqiicgh",
+    "version": "0.25.9"
   },
   "wordpress-seo": {
-    "path": "wordpress-seo/tags/21.7",
-    "rev": "3008568",
-    "sha256": "1iigdycbxhdzrprnajw54b1jjmp8akig72z9v78infaf2sjawmgh",
-    "version": "21.7"
+    "path": "wordpress-seo/tags/22.4",
+    "rev": "3063381",
+    "sha256": "05p4i83q1w5gcp7ml08cihy50ksi4igpa7rrsfcr6pnid739s6lm",
+    "version": "22.4"
   },
   "worker": {
-    "path": "worker/tags/4.9.18",
-    "rev": "3010154",
-    "sha256": "1wkkabw0g2c9bfqwqddjqrc13wwf39h508bb25cxwz2yi5fdhp9v",
-    "version": "4.9.18"
+    "path": "worker/tags/4.9.19",
+    "rev": "3019262",
+    "sha256": "1pfn7bvdqv0cy10nbkdqw9m0b0nys6grw3jry41nr9ffbajbx4kx",
+    "version": "4.9.19"
   },
   "wp-change-email-sender": {
-    "path": "wp-change-email-sender/trunk",
-    "rev": "2812298",
-    "sha256": "1ibdj2yv572pk21pr313pdrqxi2f9vawwd0byb0s38224jjx4plh",
-    "version": "1.0"
+    "path": "wp-change-email-sender/tags/2.0",
+    "rev": "3055794",
+    "sha256": "06rq7axcyw5jrar5gzma61liwq0h0cc2c9b0zxcg3gyz9n1aj5zx",
+    "version": "2.0"
   },
   "wp-fastest-cache": {
-    "path": "wp-fastest-cache/tags/1.2.2",
-    "rev": "2994820",
-    "sha256": "1mj18yrljjdrd07b0yjkd9pwdciyn4jyrs6hgx6jcys0mc5p009v",
-    "version": "1.2.2"
+    "path": "wp-fastest-cache/tags/1.2.5",
+    "rev": "3065036",
+    "sha256": "0q3ra4xry8jbvnx7nxj6a8jjyrni6faa8ys0s2ikaf6jf3r9skqa",
+    "version": "1.2.5"
   },
   "wp-gdpr-compliance": {
     "path": "wp-gdpr-compliance/tags/2.0.22",
@@ -186,22 +186,22 @@
     "version": "2.0.22"
   },
   "wp-mail-smtp": {
-    "path": "wp-mail-smtp/tags/3.11.0",
-    "rev": "3009463",
-    "sha256": "1vk6bdchqka5nmiakq9s8kj7psk2nq2yxln377bidqyqj0q9kqmk",
-    "version": "3.11.0"
+    "path": "wp-mail-smtp/tags/4.0.1",
+    "rev": "3043224",
+    "sha256": "0hvcigsmlwgjnv7ha6zrj3n9yhxyak5r3937m3dp0whsl7ci0qw9",
+    "version": "4.0.1"
   },
   "wp-statistics": {
-    "path": "wp-statistics/tags/14.3.2",
-    "rev": "3013471",
-    "sha256": "03iahbjnyyy1lxvxmfgzzzin0sfng0dyagx0q0bvfa9bqx4pi37h",
-    "version": "14.3.2"
+    "path": "wp-statistics/tags/14.5.2",
+    "rev": "3049813",
+    "sha256": "1x136m26l8nnx355q68cpi971zz37mxjwi1i3vgwfsmphn1gynlb",
+    "version": "14.5.2"
   },
   "wp-swiper": {
     "path": "wp-swiper/trunk",
-    "rev": "3013138",
-    "sha256": "1h5l99m73z7fn0l5sa4qbdpi3r8nanvrbciix5756qj4qbzb51li",
-    "version": "1.1.0"
+    "rev": "3045384",
+    "sha256": "1m8gmab211pnhibpwviqsxm9pgzb2si2y41myksmxnbsvnnfmj7j",
+    "version": "1.1.6"
   },
   "wp-user-avatars": {
     "path": "wp-user-avatars/trunk",
@@ -210,9 +210,9 @@
     "version": "1.4.1"
   },
   "wpforms-lite": {
-    "path": "wpforms-lite/tags/1.8.5.3",
-    "rev": "3009465",
-    "sha256": "1xj4wn1zfdjqxh1h6k9xa316276k8n26nmgjfcapwss452qajwkm",
-    "version": "1.8.5.3"
+    "path": "wpforms-lite/tags/1.8.7.2",
+    "rev": "3043142",
+    "sha256": "1na6vlvnvni9vqg99i1ab49z5cyy6kyqf197ph8r79nc46lyxa5a",
+    "version": "1.8.7.2"
   }
 }
diff --git a/pkgs/servers/web-apps/wordpress/packages/themes.json b/pkgs/servers/web-apps/wordpress/packages/themes.json
index 92d09ef4ca97e..a9e5e53f14bb1 100644
--- a/pkgs/servers/web-apps/wordpress/packages/themes.json
+++ b/pkgs/servers/web-apps/wordpress/packages/themes.json
@@ -1,32 +1,32 @@
 {
   "twentynineteen": {
-    "path": "twentynineteen/2.7",
-    "rev": "207575",
-    "sha256": "19zbbpj1qxfz6599di2455qr97z5x4vrprf0bf20c8dq8n8lrh41",
-    "version": "2.7"
+    "path": "twentynineteen/2.8",
+    "rev": "223028",
+    "sha256": "0mw74ww2am6gi2m7vvn44g99y3l7scwahhdni6fh0m858r81fx09",
+    "version": "2.8"
   },
   "twentytwenty": {
-    "path": "twentytwenty/2.4",
-    "rev": "207576",
-    "sha256": "0xp2jcgsn16gv9ad8dirm7j24mi7633yrl524wi858l3m8dh4q4a",
-    "version": "2.4"
+    "path": "twentytwenty/2.6",
+    "rev": "223029",
+    "sha256": "063jcwb3c4qnwp6m0dw0wfvimxnj25xvfssvibhbjlby4ibdxa6k",
+    "version": "2.6"
   },
   "twentytwentyone": {
-    "path": "twentytwentyone/2.0",
-    "rev": "207577",
-    "sha256": "0ypdqxfd1va9m6f3zbc0281i69br5hpvvjdqb03kk2xnmam2hjaa",
-    "version": "2.0"
+    "path": "twentytwentyone/2.2",
+    "rev": "223030",
+    "sha256": "15z84ccabjxy88qpyrjb41f13xvgx27gyg0ivvfh468052jkwna9",
+    "version": "2.2"
   },
   "twentytwentythree": {
-    "path": "twentytwentythree/1.3",
-    "rev": "207579",
-    "sha256": "0r2k73yskqaxhl641ri1shy74rck5xvmfi7b562kz3j44hx0dz4f",
-    "version": "1.3"
+    "path": "twentytwentythree/1.4",
+    "rev": "223032",
+    "sha256": "12n50rffvrzl7vmcz3cbgh1i464hsp6yb9dr8p9000nf877pkq7b",
+    "version": "1.4"
   },
   "twentytwentytwo": {
-    "path": "twentytwentytwo/1.6",
-    "rev": "207578",
-    "sha256": "0ga1682a5sh038xfc7whvdws5vfy1g3qvvy13rm5dln79x022riq",
-    "version": "1.6"
+    "path": "twentytwentytwo/1.7",
+    "rev": "223031",
+    "sha256": "1irivpi4asd6gzqjc1fw4fmff7kf8fh2n118pjfr3v8mw5hmfssp",
+    "version": "1.7"
   }
 }
diff --git a/pkgs/servers/x11/quartz-wm/default.nix b/pkgs/servers/x11/quartz-wm/default.nix
index 3cf65e990795a..d8ad96b97dd1a 100644
--- a/pkgs/servers/x11/quartz-wm/default.nix
+++ b/pkgs/servers/x11/quartz-wm/default.nix
@@ -24,7 +24,7 @@ in stdenv.mkDerivation {
     AppKit Xplugin Foundation
   ];
   meta = with lib; {
-    license = licenses.apsl20;
+    license = licenses.apple-psl20;
     platforms = platforms.darwin;
     maintainers = with maintainers; [ matthewbauer ];
   };
diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix
index 590559d3188bb..ca9483ab0c20e 100644
--- a/pkgs/servers/x11/xorg/default.nix
+++ b/pkgs/servers/x11/xorg/default.nix
@@ -4158,11 +4158,11 @@ self: with self; {
   # THIS IS A GENERATED FILE.  DO NOT EDIT!
   xorgserver = callPackage ({ stdenv, pkg-config, fetchurl, xorgproto, openssl, libX11, libXau, libxcb, xcbutil, xcbutilwm, xcbutilimage, xcbutilkeysyms, xcbutilrenderutil, libXdmcp, libXfixes, libxkbfile, testers }: stdenv.mkDerivation (finalAttrs: {
     pname = "xorg-server";
-    version = "21.1.11";
+    version = "21.1.12";
     builder = ./builder.sh;
     src = fetchurl {
-      url = "mirror://xorg/individual/xserver/xorg-server-21.1.11.tar.xz";
-      sha256 = "1vr6sc38sqipazsm61bcym2ggbgfgaamz7wf05mb31pvayyssg8x";
+      url = "mirror://xorg/individual/xserver/xorg-server-21.1.12.tar.xz";
+      sha256 = "03x954bygi6sdynk5yy3yvsfhg6i9gjhisn3x9jxvk5mw4mnw08y";
     };
     hardeningDisable = [ "bindnow" "relro" ];
     strictDeps = true;
diff --git a/pkgs/servers/x11/xorg/tarballs.list b/pkgs/servers/x11/xorg/tarballs.list
index 1c91ae4794e95..ce0d9105bea52 100644
--- a/pkgs/servers/x11/xorg/tarballs.list
+++ b/pkgs/servers/x11/xorg/tarballs.list
@@ -218,4 +218,4 @@ mirror://xorg/individual/util/lndir-1.0.4.tar.xz
 mirror://xorg/individual/util/makedepend-1.0.9.tar.xz
 mirror://xorg/individual/util/util-macros-1.20.0.tar.xz
 mirror://xorg/individual/util/xorg-cf-files-1.0.8.tar.xz
-mirror://xorg/individual/xserver/xorg-server-21.1.11.tar.xz
+mirror://xorg/individual/xserver/xorg-server-21.1.12.tar.xz
diff --git a/pkgs/servers/x11/xorg/xwayland.nix b/pkgs/servers/x11/xorg/xwayland.nix
index 125b6cb78b9b8..a34e1285e3071 100644
--- a/pkgs/servers/x11/xorg/xwayland.nix
+++ b/pkgs/servers/x11/xorg/xwayland.nix
@@ -46,11 +46,11 @@
 
 stdenv.mkDerivation rec {
   pname = "xwayland";
-  version = "23.2.5";
+  version = "23.2.6";
 
   src = fetchurl {
     url = "mirror://xorg/individual/xserver/${pname}-${version}.tar.xz";
-    hash = "sha256-M+x/8mh6WfqqUrmwmqjK8Rjn7Lau2JU/UmpiX/n0vZA=";
+    hash = "sha256-HJo2a058ytug+b0xPFnq4S0jvXJUOyKibq+LIINc/G0=";
   };
 
   depsBuildBuild = [
diff --git a/pkgs/shells/fish/plugins/done.nix b/pkgs/shells/fish/plugins/done.nix
index f53840743bd27..4e5aa8e9a0900 100644
--- a/pkgs/shells/fish/plugins/done.nix
+++ b/pkgs/shells/fish/plugins/done.nix
@@ -2,13 +2,13 @@
 
 buildFishPlugin rec {
   pname = "done";
-  version = "1.19.2";
+  version = "1.19.3";
 
   src = fetchFromGitHub {
     owner = "franciscolourenco";
     repo = "done";
     rev = version;
-    hash = "sha256-VSCYsGjNPSFIZSdLrkc7TU7qyPVm8UupOoav5UqXPMk=";
+    hash = "sha256-DMIRKRAVOn7YEnuAtz4hIxrU93ULxNoQhW6juxCoh4o=";
   };
 
   checkPlugins = [ fishtape ];
diff --git a/pkgs/shells/fish/plugins/fzf-fish.nix b/pkgs/shells/fish/plugins/fzf-fish.nix
index a9557d70c36c0..3a70c888c352d 100644
--- a/pkgs/shells/fish/plugins/fzf-fish.nix
+++ b/pkgs/shells/fish/plugins/fzf-fish.nix
@@ -5,13 +5,13 @@ let
 in
 buildFishPlugin rec {
   pname = "fzf.fish";
-  version = "10.2";
+  version = "10.3";
 
   src = fetchFromGitHub {
     owner = "PatrickF1";
     repo = "fzf.fish";
     rev = "v${version}";
-    hash = "sha256-1/MLKkUHe4c9YLDrH+cnL+pLiSOSERbIZSM4FTG3wF0=";
+    hash = "sha256-T8KYLA/r/gOKvAivKRoeqIwE2pINlxFQtZJHpOy9GMM=";
   };
 
   nativeCheckInputs = [ fzf fd unixtools.script procps ];
diff --git a/pkgs/shells/fish/plugins/sdkman-for-fish.nix b/pkgs/shells/fish/plugins/sdkman-for-fish.nix
index ee8b4757fc61f..6a0c7c7d25f04 100644
--- a/pkgs/shells/fish/plugins/sdkman-for-fish.nix
+++ b/pkgs/shells/fish/plugins/sdkman-for-fish.nix
@@ -2,13 +2,13 @@
 
 buildFishPlugin rec {
   pname = "sdkman-for-fish";
-  version = "2.0.0";
+  version = "2.1.0";
 
   src = fetchFromGitHub {
     owner = "reitzig";
     repo = "sdkman-for-fish";
     rev = "v${version}";
-    hash = "sha256-cgDTunWFxFm48GmNv21o47xrXyo+sS6a3CzwHlv0Ezo=";
+    hash = "sha256-7cgyR3hQ30Jv+9lJS5qaBvSaI/0YVT8xPXlUhDBTdFc=";
   };
 
   meta = with lib; {
diff --git a/pkgs/shells/nushell/plugins/net.nix b/pkgs/shells/nushell/plugins/net.nix
index 97fa54b19634f..a4a2d049b9b57 100644
--- a/pkgs/shells/nushell/plugins/net.nix
+++ b/pkgs/shells/nushell/plugins/net.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage {
   pname = "nu-plugin-net";
-  version = "unstable-2023-11-15";
+  version = "unstable-2024-04-05";
 
   src = fetchFromGitHub {
     owner = "fennewald";
     repo = "nu_plugin_net";
-    rev = "20a0a18be0e11650f453d6f186d99d3691a1cd6a";
-    hash = "sha256-GHUis38mz9sI5s+E/eLyA0XPyuNpPoS1TyhU3pMEsvs=";
+    rev = "a84d72290f513397a359581b9447a4e638ce60c9";
+    hash = "sha256-uKLYTRR2tThSvwWbvEePOLZ9ehNPfCYruZxTKSIxpEA=";
   };
 
-  cargoHash = "sha256-T5kUVtJty8pfPihtkJqCgF3AUFcBuu2cwX4cVGM8n5U=";
+  cargoHash = "sha256-2A9RalZhXigLq/6w738G6PnkV3FyK+3HHXPDQRHTIm0=";
 
   nativeBuildInputs = [
     rustPlatform.bindgenHook
diff --git a/pkgs/shells/oksh/default.nix b/pkgs/shells/oksh/default.nix
index 4c309ad306141..0be401c0a1f2a 100644
--- a/pkgs/shells/oksh/default.nix
+++ b/pkgs/shells/oksh/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "oksh";
-  version = "7.4";
+  version = "7.5";
 
   src = fetchFromGitHub {
     owner = "ibara";
     repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "sha256-QkWUTqFoEA+XZv0EAHnDtkm9xI+NlQcNqicCvCtXJYc=";
+    sha256 = "sha256-r75jjH1E7/36b0ebjsZK7rAuOHEyaIta5Bi8nB4zVjo=";
   };
 
   strictDeps = true;
diff --git a/pkgs/shells/zsh/oh-my-zsh/default.nix b/pkgs/shells/zsh/oh-my-zsh/default.nix
index 93b9f596e395a..e5ac2d3ed5417 100644
--- a/pkgs/shells/zsh/oh-my-zsh/default.nix
+++ b/pkgs/shells/zsh/oh-my-zsh/default.nix
@@ -99,8 +99,7 @@ stdenv.mkDerivation rec {
         nixpkgs="$(git rev-parse --show-toplevel)"
         default_nix="$nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix"
         latestDate="$(curl -L -s https://api.github.com/repos/ohmyzsh/ohmyzsh/commits/$latestSha | jq '.commit.committer.date' | sed 's|"\(.*\)T.*|\1|g')"
-        update-source-version oh-my-zsh "$latestSha" --version-key=rev
-        update-source-version oh-my-zsh "$latestDate" --ignore-same-hash
+        update-source-version oh-my-zsh "$latestDate" --rev="$latestSha"
         nixfmt "$default_nix"
       else
         echo "${pname} is already up-to-date"
diff --git a/pkgs/shells/zsh/zsh-syntax-highlighting/default.nix b/pkgs/shells/zsh/zsh-syntax-highlighting/default.nix
index ef76798ccf48e..518a9658083ba 100644
--- a/pkgs/shells/zsh/zsh-syntax-highlighting/default.nix
+++ b/pkgs/shells/zsh/zsh-syntax-highlighting/default.nix
@@ -2,15 +2,15 @@
 
 # To make use of this derivation, use the `programs.zsh.enableSyntaxHighlighting` option
 
-stdenv.mkDerivation rec {
-  version = "0.7.1";
+stdenv.mkDerivation (finalAttrs: {
+  version = "0.8.0";
   pname = "zsh-syntax-highlighting";
 
   src = fetchFromGitHub {
     owner = "zsh-users";
     repo = "zsh-syntax-highlighting";
-    rev = version;
-    sha256 = "03r6hpb5fy4yaakqm3lbf4xcvd408r44jgpv4lnzl9asp4sb9qc0";
+    rev = finalAttrs.version;
+    hash = "sha256-iJdWopZwHpSyYl5/FQXEW7gl/SrKaYDEtTH9cGP7iPo=";
   };
 
   strictDeps = true;
@@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/zsh-users/zsh-syntax-highlighting";
     license = licenses.bsd3;
     platforms = platforms.unix;
-    maintainers = [ maintainers.loskutov ];
+    maintainers = with maintainers; [ gepbird loskutov ];
   };
-}
+})
diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix
index 1cd1ae6dd72e4..a61f3e1ae4d0f 100644
--- a/pkgs/stdenv/generic/check-meta.nix
+++ b/pkgs/stdenv/generic/check-meta.nix
@@ -189,7 +189,7 @@ let
 
       Alternatively you can configure a predicate to allow specific packages:
         { nixpkgs.config.${predicateConfigAttr} = pkg: builtins.elem (lib.getName pkg) [
-            "${getName attrs}"
+            "${lib.getName attrs}"
           ];
         }
     '';
@@ -390,22 +390,24 @@ let
   # reason is one of "unfree", "blocklisted", "broken", "insecure", ...
   # !!! reason strings are hardcoded into OfBorg, make sure to keep them in sync
   # Along with a boolean flag for each reason
-  checkValidity = attrs:
+  checkValidity =
+    let
+      validYes = {
+        valid = "yes";
+        handled = true;
+      };
+    in
+    attrs:
     # Check meta attribute types first, to make sure it is always called even when there are other issues
     # Note that this is not a full type check and functions below still need to by careful about their inputs!
-    let res = checkMeta (attrs.meta or {}); in if res != [] then
-      { valid = "no"; reason = "unknown-meta"; errormsg = "has an invalid meta attrset:${concatMapStrings (x: "\n  - " + x) res}\n";
-        unfree = false; nonSource = false; broken = false; unsupported = false; insecure = false;
-      }
-    else {
-      unfree = hasUnfreeLicense attrs;
-      nonSource = hasNonSourceProvenance attrs;
-      broken = isMarkedBroken attrs;
-      unsupported = hasUnsupportedPlatform attrs;
-      insecure = isMarkedInsecure attrs;
-    } // (
+    let
+      res = checkMeta (attrs.meta or {});
+    in
+    if res != [] then
+      { valid = "no"; reason = "unknown-meta"; errormsg = "has an invalid meta attrset:${concatMapStrings (x: "\n  - " + x) res}\n"; }
+
     # --- Put checks that cannot be ignored here ---
-    if checkOutputsToInstall attrs then
+    else if checkOutputsToInstall attrs then
       { valid = "no"; reason = "broken-outputs"; errormsg = "has invalid meta.outputsToInstall"; }
 
     # --- Put checks that can be ignored here ---
@@ -438,7 +440,7 @@ let
     else if hasNoMaintainers attrs then
       { valid = "warn"; reason = "maintainerless"; errormsg = "has no maintainers"; }
     # -----
-    else { valid = "yes"; });
+    else validYes;
 
 
   # The meta attribute is passed in the resulting attribute set,
@@ -485,7 +487,10 @@ let
       position = pos.file + ":" + toString pos.line;
     } // {
       # Expose the result of the checks for everyone to see.
-      inherit (validity) unfree broken unsupported insecure;
+      unfree = hasUnfreeLicense attrs;
+      broken = isMarkedBroken attrs;
+      unsupported = hasUnsupportedPlatform attrs;
+      insecure = isMarkedInsecure attrs;
 
       available = validity.valid != "no"
       && (if config.checkMetaRecursively or false
@@ -496,7 +501,7 @@ let
   assertValidity = { meta, attrs }: let
       validity = checkValidity attrs;
       inherit (validity) valid;
-  in validity // {
+  in if validity ? handled then validity else validity // {
       # Throw an error if trying to evaluate a non-valid derivation
       # or, alternatively, just output a warning message.
       handled =
diff --git a/pkgs/test/check-by-name/pinned-version.txt b/pkgs/test/check-by-name/pinned-version.txt
index 6e8bf73aa550d..17e51c385ea38 100644
--- a/pkgs/test/check-by-name/pinned-version.txt
+++ b/pkgs/test/check-by-name/pinned-version.txt
@@ -1 +1 @@
-0.1.0
+0.1.1
diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix
index 97b735676aca0..2b978ff3e1bcf 100644
--- a/pkgs/test/default.nix
+++ b/pkgs/test/default.nix
@@ -16,6 +16,7 @@ with pkgs;
         (filter (n: n != "llvmPackages_6"))
         (filter (n: n != "llvmPackages_7"))
         (filter (n: n != "llvmPackages_8"))
+        (filter (n: n != "llvmPackages_9"))
         (filter (n: n != "llvmPackages_10"))
         (filter (n: n != "llvmPackages_11"))
       ];
diff --git a/pkgs/tools/X11/xwinwrap/default.nix b/pkgs/tools/X11/xwinwrap/default.nix
index d36d2c51de5e0..7b45de6ecfd58 100644
--- a/pkgs/tools/X11/xwinwrap/default.nix
+++ b/pkgs/tools/X11/xwinwrap/default.nix
@@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.hpnd;
     homepage = "https://shantanugoel.com/2008/09/03/shantz-xwinwrap/";
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     platforms = platforms.linux;
     mainProgram = "xwinwrap";
   };
diff --git a/pkgs/tools/admin/aliyun-cli/default.nix b/pkgs/tools/admin/aliyun-cli/default.nix
index e4ca2a611c3fc..217724e89dfa2 100644
--- a/pkgs/tools/admin/aliyun-cli/default.nix
+++ b/pkgs/tools/admin/aliyun-cli/default.nix
@@ -2,14 +2,14 @@
 
 buildGoModule rec {
   pname = "aliyun-cli";
-  version = "3.0.201";
+  version = "3.0.202";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "aliyun";
     repo = pname;
     fetchSubmodules = true;
-    sha256 = "sha256-gI+D65wBnuexSJF89KjWJ5p4RJXs64Zg23V9RGwUTws=";
+    sha256 = "sha256-tZBAu8LiqsWZE12UQcUdAr+6HkOOb7Au6Mg5lo0DXTQ=";
   };
 
   vendorHash = "sha256-t9ukiREUEmW6KK7m5Uv5Ce6n/1GsBLom9H35eEyOBys=";
diff --git a/pkgs/tools/admin/auth0-cli/default.nix b/pkgs/tools/admin/auth0-cli/default.nix
index 44de0a5058b43..1328c478a7bbb 100644
--- a/pkgs/tools/admin/auth0-cli/default.nix
+++ b/pkgs/tools/admin/auth0-cli/default.nix
@@ -5,21 +5,22 @@
 
 buildGoModule rec {
   pname = "auth0-cli";
-  version = "1.1.2";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "auth0";
     repo = "auth0-cli";
-    rev = "v${version}";
-    hash = "sha256-EJH+Vn7wvrQ2umjmSXHjbgf2uf/kRbDoo0usTMqDFo4=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-j7HT57/4rrrVkx9Zz+XuWD6UL0spdej+U5gWtFo1FSI=";
   };
 
-  vendorHash = "sha256-T8y7MPFebDU6skfz4Rqo0ElRRaldtfexOl99D7h+orU=";
+  vendorHash = "sha256-bWAneCRsQbPRxEM/3jr1/Lov6NV67MRycOgrlj3bKF8=";
 
   ldflags = [
-    "-s" "-w"
-    "-X github.com/auth0/auth0-cli/internal/buildinfo.Version=v${version}"
-    "-X github.com/auth0/auth0-cli/internal/buildinfo.Revision=0000000"
+    "-s"
+    "-w"
+    "-X=github.com/auth0/auth0-cli/internal/buildinfo.Version=v${version}"
+    "-X=github.com/auth0/auth0-cli/internal/buildinfo.Revision=0000000"
   ];
 
   preCheck = ''
@@ -27,6 +28,9 @@ buildGoModule rec {
     # This is because subPackages above limits what is built to just what we
     # want but also limits the tests
     unset subPackages
+    # Test requires network access
+    substituteInPlace internal/cli/universal_login_customize_test.go \
+      --replace-fail "TestFetchUniversalLoginBrandingData" "SkipFetchUniversalLoginBrandingData"
   '';
 
   subPackages = [ "cmd/auth0" ];
diff --git a/pkgs/tools/admin/aws-encryption-sdk-cli/default.nix b/pkgs/tools/admin/aws-encryption-sdk-cli/default.nix
index 2bc331cc18741..f0d5aa5d39159 100644
--- a/pkgs/tools/admin/aws-encryption-sdk-cli/default.nix
+++ b/pkgs/tools/admin/aws-encryption-sdk-cli/default.nix
@@ -37,6 +37,7 @@ localPython.pkgs.buildPythonApplication rec {
     aws-encryption-sdk
     base64io
     urllib3
+    setuptools # for pkg_resources
   ];
 
   doCheck = true;
@@ -52,6 +53,9 @@ localPython.pkgs.buildPythonApplication rec {
     "test/integration"
   ];
 
+  # Upstream did not adapt to pytest 8 yet.
+  pytestFlagsArray = [ "-W" "ignore::pytest.PytestRemovedIn8Warning" ];
+
   passthru = {
     updateScript = nix-update-script { };
     tests.version = testers.testVersion {
diff --git a/pkgs/tools/admin/aws-sso-cli/default.nix b/pkgs/tools/admin/aws-sso-cli/default.nix
index 998da596c0688..efe07ba5e96ca 100644
--- a/pkgs/tools/admin/aws-sso-cli/default.nix
+++ b/pkgs/tools/admin/aws-sso-cli/default.nix
@@ -6,13 +6,13 @@
 }:
 buildGoModule rec {
   pname = "aws-sso-cli";
-  version = "1.14.3";
+  version = "1.15.0";
 
   src = fetchFromGitHub {
     owner = "synfinatic";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-6UP+5niKAdO4DgdEnTdpbUnr2BLKwAgHcEZqkgzCcqs=";
+    hash = "sha256-FbJ9l1C6mOgB7I5+jIQVKI3xJAJI3GuDFCjmIP8Qf10=";
   };
   vendorHash = "sha256-TU5kJ0LIqHcfEQEkk69xWJZk30VD9XwlJ5b83w1mHKk=";
 
diff --git a/pkgs/tools/admin/awslimitchecker/default.nix b/pkgs/tools/admin/awslimitchecker/default.nix
index cc492ed065d30..548bf69e6f070 100644
--- a/pkgs/tools/admin/awslimitchecker/default.nix
+++ b/pkgs/tools/admin/awslimitchecker/default.nix
@@ -34,6 +34,10 @@ python3Packages.buildPythonApplication rec {
 
   pytestFlagsArray = [
     "awslimitchecker/tests"
+
+    # Upstream did not adapt to pytest 8 yet.
+    "-W"
+    "ignore::pytest.PytestRemovedIn8Warning"
   ];
 
   disabledTestPaths = [
diff --git a/pkgs/tools/admin/azure-cli/0001-optional-immutable-configuration-dir.patch b/pkgs/tools/admin/azure-cli/0001-optional-immutable-configuration-dir.patch
new file mode 100644
index 0000000000000..e163915d1c724
--- /dev/null
+++ b/pkgs/tools/admin/azure-cli/0001-optional-immutable-configuration-dir.patch
@@ -0,0 +1,98 @@
+From c12adfdefd8a091e1fa870305a3cc61de6426914 Mon Sep 17 00:00:00 2001
+From: Paul Meyer <49727155+katexochen@users.noreply.github.com>
+Date: Thu, 14 Dec 2023 21:16:20 +0100
+Subject: [PATCH] optional immutable configuration dir
+
+Adding the possibility to configure an immutable configuration dir via
+env variable `AZURE_IMMUTABLE_DIR`. This path is used for the files
+that configure the dynamic behavior of the CLI code.
+An immutable session is used for these files to ensure we don't try to
+write to them.
+
+Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
+---
+ azure/cli/core/__init__.py |  5 +++--
+ azure/cli/core/_session.py | 19 ++++++++++++++++---
+ .../cli/core/extension/dynamic_install.py     |  3 ++-
+ 3 files changed, 21 insertions(+), 6 deletions(-)
+
+diff --git a/azure/cli/core/__init__.py b/azure/cli/core/__init__.py
+index d112633ec..20b6d045b 100644
+--- a/azure/cli/core/__init__.py
++++ b/azure/cli/core/__init__.py
+@@ -75,12 +75,13 @@ class AzCli(CLI):
+         self.data['query_active'] = False
+
+         azure_folder = self.config.config_dir
++        azure_immutable_folder = os.environ.get('AZURE_IMMUTABLE_DIR', azure_folder)
+         ensure_dir(azure_folder)
+         ACCOUNT.load(os.path.join(azure_folder, 'azureProfile.json'))
+         CONFIG.load(os.path.join(azure_folder, 'az.json'))
+         SESSION.load(os.path.join(azure_folder, 'az.sess'), max_age=3600)
+-        INDEX.load(os.path.join(azure_folder, 'commandIndex.json'))
+-        VERSIONS.load(os.path.join(azure_folder, 'versionCheck.json'))
++        INDEX.load(os.path.join(azure_immutable_folder, 'commandIndex.json'))
++        VERSIONS.load(os.path.join(azure_immutable_folder, 'versionCheck.json'))
+         handle_version_update()
+
+         self.cloud = get_active_cloud(self)
+diff --git a/azure/cli/core/_session.py b/azure/cli/core/_session.py
+index 471a0344c..acaef6fb8 100644
+--- a/azure/cli/core/_session.py
++++ b/azure/cli/core/_session.py
+@@ -85,6 +85,19 @@ class Session(MutableMapping):
+         return len(self.data)
+
+
++class ImmutableSession(Session):
++    """
++    A session that is backed by an immutable JSON file. This session is read-only.
++    """
++    def save(self):
++        if os.getenv('AZURE_IMMUTABLE_DIR'):
++            get_logger(__name__).log(logging.DEBUG,
++                                     "Skipping update of file %s due to immutable directory.",
++                                     self.filename)
++            return
++        super().save()
++
++
+ # ACCOUNT contains subscriptions information
+ ACCOUNT = Session()
+
+@@ -95,16 +108,16 @@ CONFIG = Session()
+ SESSION = Session()
+
+ # INDEX contains {top-level command: [command_modules and extensions]} mapping index
+-INDEX = Session()
++INDEX = ImmutableSession()
+
+ # VERSIONS provides local versions and pypi versions.
+ # DO NOT USE it to get the current version of azure-cli,
+ # it could be lagged behind and can be used to check whether
+ # an upgrade of azure-cli happens
+-VERSIONS = Session()
++VERSIONS = ImmutableSession()
+
+ # EXT_CMD_TREE provides command to extension name mapping
+-EXT_CMD_TREE = Session()
++EXT_CMD_TREE = ImmutableSession()
+
+ # CLOUD_ENDPOINTS provides endpoints/suffixes of clouds
+ CLOUD_ENDPOINTS = Session()
+diff --git a/azure/cli/core/extension/dynamic_install.py b/azure/cli/core/extension/dynamic_install.py
+index cb03980a0..29279be2b 100644
+--- a/azure/cli/core/extension/dynamic_install.py
++++ b/azure/cli/core/extension/dynamic_install.py
+@@ -17,7 +17,8 @@ def _get_extension_command_tree(cli_ctx):
+     VALID_SECOND = 3600 * 24 * 10
+     if not cli_ctx:
+         return None
+-    EXT_CMD_TREE.load(os.path.join(cli_ctx.config.config_dir, 'extensionCommandTree.json'), VALID_SECOND)
++    azure_immutable_folder = os.environ.get('AZURE_IMMUTABLE_DIR', cli_ctx.config.config_dir)
++    EXT_CMD_TREE.load(os.path.join(azure_immutable_folder, 'extensionCommandTree.json'), VALID_SECOND)
+     if not EXT_CMD_TREE.data:
+         import posixpath
+         import requests
+--
+2.42.0
diff --git a/pkgs/tools/admin/azure-cli/default.nix b/pkgs/tools/admin/azure-cli/default.nix
index 9d92a10cc2881..d55258485de50 100644
--- a/pkgs/tools/admin/azure-cli/default.nix
+++ b/pkgs/tools/admin/azure-cli/default.nix
@@ -1,7 +1,20 @@
 { lib
 , callPackage
+, callPackages
+, stdenvNoCC
+, fetchurl
 , fetchFromGitHub
 , installShellFiles
+, python3
+
+  # Whether to include patches that enable placing certain behavior-defining
+  # configuration files in the Nix store.
+, withImmutableConfig ? true
+
+  # List of extensions/plugins to include.
+, withExtensions ? [ ]
+
+, azure-cli
 }:
 
 let
@@ -17,9 +30,52 @@ let
 
   # put packages that needs to be overridden in the py package scope
   py = callPackage ./python-packages.nix { inherit src version; };
+
+  # Builder for Azure CLI extensions. Extensions are Python wheels that
+  # outside of nix would be fetched by the CLI itself from various sources.
+  mkAzExtension =
+    { pname
+    , version
+    , url
+    , sha256
+    , description
+    }: python3.pkgs.buildPythonPackage {
+      inherit pname version;
+      format = "wheel";
+      src = fetchurl { inherit url sha256; };
+      meta = with lib; {
+        inherit description;
+        inherit (azure-cli.meta) platforms maintainers;
+        homepage = "https://github.com/Azure/azure-cli-extensions";
+        changelog = "https://github.com/Azure/azure-cli-extensions/blob/main/src/${pname}/HISTORY.rst";
+        license = lib.licenses.mit;
+        sourceProvenance = [ sourceTypes.fromSource ];
+      };
+    };
+
+  extensions = callPackages ./extensions-generated.nix { inherit mkAzExtension; };
+
+  extensionDir = stdenvNoCC.mkDerivation {
+    name = "azure-cli-extensions";
+    dontUnpack = true;
+    installPhase =
+      let
+        namePaths = map (p: "${p.pname},${p}/${python3.sitePackages}") withExtensions;
+      in
+      ''
+        for line in ${lib.concatStringsSep " " namePaths}; do
+          name=$(echo $line | cut -d',' -f1)
+          path=$(echo $line | cut -d',' -f2)
+          mkdir -p $out/$name
+          for f in $(ls $path); do
+            ln -s $path/$f $out/$name/$f
+          done
+        done
+      '';
+  };
 in
 
-py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {
+py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage rec {
   pname = "azure-cli";
   inherit version src;
 
@@ -163,6 +219,7 @@ py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {
     requests
     scp
     semver
+    setuptools
     six
     sshtunnel
     tabulate
@@ -177,7 +234,13 @@ py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {
       --replace register-python-argcomplete ${py.pkgs.argcomplete}/bin/register-python-argcomplete
     installShellCompletion --bash --name az.bash az.completion.sh
     installShellCompletion --zsh --name _az az.completion.sh
-
+  '' + lib.optionalString withImmutableConfig ''
+    export HOME=$TMPDIR
+    $out/bin/az --version
+    mkdir -p $out/etc/azure
+    mv $TMPDIR/.azure/commandIndex.json $out/etc/azure/commandIndex.json
+    mv $TMPDIR/.azure/versionCheck.json $out/etc/azure/versionCheck.json
+  '' + ''
     # remove garbage
     rm $out/bin/az.bat
     rm $out/bin/az.completion.sh
@@ -187,7 +250,12 @@ py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {
   # it's just a shebang script which calls `python -m azure.cli "$@"`
   postFixup = ''
     wrapProgram $out/bin/az \
-      --set PYTHONPATH $PYTHONPATH
+  '' + lib.optionalString withImmutableConfig ''
+    --set AZURE_IMMUTABLE_DIR $out/etc/azure \
+  '' + lib.optionalString (withExtensions != [ ]) ''
+    --set AZURE_EXTENSION_DIR ${extensionDir} \
+  '' + ''
+    --set PYTHONPATH "${python3.pkgs.makePythonPath propagatedBuildInputs}:$out/${python3.sitePackages}"
   '';
 
   doInstallCheck = true;
@@ -270,6 +338,11 @@ py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {
     "azure.storage.common"
   ];
 
+  passthru = {
+    inherit extensions;
+    withExtensions = extensions: azure-cli.override { withExtensions = extensions; };
+  };
+
   meta = with lib; {
     homepage = "https://github.com/Azure/azure-cli";
     description = "Next generation multi-platform command line experience for Azure";
diff --git a/pkgs/tools/admin/azure-cli/extensions-generated.nix b/pkgs/tools/admin/azure-cli/extensions-generated.nix
new file mode 100644
index 0000000000000..8e872e7bba258
--- /dev/null
+++ b/pkgs/tools/admin/azure-cli/extensions-generated.nix
@@ -0,0 +1,982 @@
+# This file packages Azure CLI extensions that don't have any requirements.
+# Extensions with requirements should be placed in another file, so this one
+# can be re-generated during update.
+#
+# Attributes were generated using the query-extension-index.sh script:
+#   ./query-extension-index.sh --requirements=false --download --nix --cli-version=<version>
+{ mkAzExtension }:
+{
+  account = mkAzExtension rec {
+    pname = "account";
+    version = "0.2.5";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/account-${version}-py3-none-any.whl";
+    sha256 = "0b94df323acfc48ea3141904649106bb85695187dbf63aa3b8448ec12bc00c23";
+    description = "Microsoft Azure Command-Line Tools SubscriptionClient Extension";
+  };
+  acrquery = mkAzExtension rec {
+    pname = "acrquery";
+    version = "1.0.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/acrquery-${version}-py3-none-any.whl";
+    sha256 = "9094137a4d08f2ede7b662c99df0665f338aae7bcaf4976bed5d42df754571f1";
+    description = "Microsoft Azure Command-Line Tools AcrQuery Extension";
+  };
+  acrtransfer = mkAzExtension rec {
+    pname = "acrtransfer";
+    version = "1.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/acrtransfer-${version}-py3-none-any.whl";
+    sha256 = "668b94d0341b663a610212f318b899a53be60ae0eb59c47e162f5dabd3483551";
+    description = "Microsoft Azure Command-Line Tools Acrtransfer Extension";
+  };
+  ad = mkAzExtension rec {
+    pname = "ad";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/ad-${version}-py3-none-any.whl";
+    sha256 = "61df234e10759e9916c1d447ab02b82637de10fd97c31a17252e1f5183853883";
+    description = "Microsoft Azure Command-Line Tools DomainServicesResourceProvider Extension";
+  };
+  adp = mkAzExtension rec {
+    pname = "adp";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/adp-${version}-py3-none-any.whl";
+    sha256 = "fd64519832f4fd314431f87176507e10249b8d165537f81d05c9ea5185ae84ec";
+    description = "Microsoft Azure Command-Line Tools Adp Extension";
+  };
+  aem = mkAzExtension rec {
+    pname = "aem";
+    version = "0.3.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/aem-${version}-py2.py3-none-any.whl";
+    sha256 = "25aaf9006ab1d115d7c484cfda1c9ad0e3617af6d2140db87499aaea81b67ff8";
+    description = "Manage Azure Enhanced Monitoring Extensions for SAP";
+  };
+  ai-examples = mkAzExtension rec {
+    pname = "ai-examples";
+    version = "0.2.5";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/ai_examples-${version}-py2.py3-none-any.whl";
+    sha256 = "badbdf5fc2e0b4a85c4124d3fc92859b582adf8f30f5727440ce81942140099a";
+    description = "Add AI powered examples to help content";
+  };
+  aks-preview = mkAzExtension rec {
+    pname = "aks-preview";
+    version = "1.0.0b5";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/aks_preview-${version}-py2.py3-none-any.whl";
+    sha256 = "75378ea07dea6fdadb115e41e8394003fd63282560648fa92d8f055f1e2536eb";
+    description = "Provides a preview for upcoming AKS features";
+  };
+  akshybrid = mkAzExtension rec {
+    pname = "akshybrid";
+    version = "0.1.2";
+    url = "https://hybridaksstorage.z13.web.core.windows.net/HybridAKS/CLI/akshybrid-${version}-py3-none-any.whl";
+    sha256 = "9767cda444c421573bc220e01cd58a67c30a36175cedba68b0454a3c6e983a8e";
+    description = "Microsoft Azure Command-Line Tools HybridContainerService Extension";
+  };
+  alb = mkAzExtension rec {
+    pname = "alb";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/alb-${version}-py3-none-any.whl";
+    sha256 = "b020cd8cd3da6299dc978499dae452768b7651c3ed8e05f2f0b321bd9b8354d4";
+    description = "Microsoft Azure Command-Line Tools ALB Extension";
+  };
+  alertsmanagement = mkAzExtension rec {
+    pname = "alertsmanagement";
+    version = "0.2.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/alertsmanagement-${version}-py3-none-any.whl";
+    sha256 = "b45a5752924ab1205ff5862f03a4a465eccb4dd8e79900023498d674aa68665b";
+    description = "Microsoft Azure Command-Line Tools AlertsManagementClient Extension";
+  };
+  amg = mkAzExtension rec {
+    pname = "amg";
+    version = "1.2.9";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/amg-${version}-py3-none-any.whl";
+    sha256 = "dbea8dd0e85dd2f30f30cb66f0dd7f9d0314a7ff9765a4d074622b75aeccad2f";
+    description = "Microsoft Azure Command-Line Tools Azure Managed Grafana Extension";
+  };
+  amlfs = mkAzExtension rec {
+    pname = "amlfs";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/amlfs-${version}-py3-none-any.whl";
+    sha256 = "21b5a12943e727315288aa0ca1c49a25803a656b7f388c3c637596cfdf67bd1d";
+    description = "Microsoft Azure Command-Line Tools Amlfs Extension";
+  };
+  apic-extension = mkAzExtension rec {
+    pname = "apic-extension";
+    version = "1.0.0b4";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/apic_extension-${version}-py3-none-any.whl";
+    sha256 = "67294fd30190b66b339c8d550e58e1401117b313bea638fb0c126dec26249408";
+    description = "Microsoft Azure Command-Line Tools ApicExtension Extension";
+  };
+  appservice-kube = mkAzExtension rec {
+    pname = "appservice-kube";
+    version = "0.1.9";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/appservice_kube-${version}-py2.py3-none-any.whl";
+    sha256 = "9107762296c67ef4035256a9790b075040f263804116a3f9a6866227ff6019ed";
+    description = "Microsoft Azure Command-Line Tools App Service on Kubernetes Extension";
+  };
+  authV2 = mkAzExtension rec {
+    pname = "authV2";
+    version = "0.1.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/authV2-${version}-py3-none-any.whl";
+    sha256 = "eb05636f8c78e2f83b7f452fe56f5a9ae496d6909dc36924ae5f98a2fb5bce41";
+    description = "Microsoft Azure Command-Line Tools Authv2 Extension";
+  };
+  automanage = mkAzExtension rec {
+    pname = "automanage";
+    version = "0.1.2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/automanage-${version}-py3-none-any.whl";
+    sha256 = "42341a6cfdacb3af0433b10b3e9bcb5226d4c7fb59730378408a957662266551";
+    description = "Microsoft Azure Command-Line Tools Automanage Extension";
+  };
+  automation = mkAzExtension rec {
+    pname = "automation";
+    version = "0.2.2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/automation-${version}-py3-none-any.whl";
+    sha256 = "1337a8bf90739df646231533801cce9050bad641c627382468c86af5f2f99d89";
+    description = "Microsoft Azure Command-Line Tools AutomationClient Extension";
+  };
+  azure-firewall = mkAzExtension rec {
+    pname = "azure-firewall";
+    version = "1.0.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/azure_firewall-${version}-py2.py3-none-any.whl";
+    sha256 = "920023c55ae72d7e85baa43d81d96683be0e8348228b6f8e89e479fd4092c0f8";
+    description = "Manage Azure Firewall resources";
+  };
+  azurelargeinstance = mkAzExtension rec {
+    pname = "azurelargeinstance";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/azurelargeinstance-${version}-py3-none-any.whl";
+    sha256 = "a6e38c623cf14a9528df9f28aa98d9642c1e73c0a815becdce842e3a2f0f49ac";
+    description = "Microsoft Azure Command-Line Tools Azurelargeinstance Extension";
+  };
+  azurestackhci = mkAzExtension rec {
+    pname = "azurestackhci";
+    version = "0.2.9";
+    url = "https://hybridaksstorage.z13.web.core.windows.net/SelfServiceVM/CLI/azurestackhci-${version}-py3-none-any.whl";
+    sha256 = "2557b2fe3fa2f951a2794ba967555ba54c2e93eb75538152f21ab2fb568fef16";
+    description = "Microsoft Azure Command-Line Tools AzureStackHCI Extension";
+  };
+  baremetal-infrastructure = mkAzExtension rec {
+    pname = "baremetal-infrastructure";
+    version = "2.0.1";
+    url = "https://github.com/Azure/azure-baremetalinfrastructure-cli-extension/releases/download/${version}/baremetal_infrastructure-2.0.1-py2.py3-none-any.whl";
+    sha256 = "ea127d64603c8a45774cdf9aa80c4c8b5839a42719971b296beb96105fe5ef2d";
+    description = "Additional commands for working with BareMetal instances";
+  };
+  bastion = mkAzExtension rec {
+    pname = "bastion";
+    version = "0.3.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/bastion-${version}-py3-none-any.whl";
+    sha256 = "c20d8e423acef3b6728c9abdfe90ad4a7020f2d122068983d7b59b9e3fef84c3";
+    description = "Microsoft Azure Command-Line Tools Bastion Extension";
+  };
+  billing-benefits = mkAzExtension rec {
+    pname = "billing-benefits";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/billing_benefits-${version}-py3-none-any.whl";
+    sha256 = "f71250d1c26690cc0e175cd5c9bcd59e76c7b701bb3a47c8273e4cf8bcca878e";
+    description = "Microsoft Azure Command-Line Tools BillingBenefits Extension";
+  };
+  blockchain = mkAzExtension rec {
+    pname = "blockchain";
+    version = "0.1.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/blockchain-${version}-py3-none-any.whl";
+    sha256 = "95a4788ab10052f6c1b4122db6ab140705db528e5cb3db3358580d703a2a7204";
+    description = "Microsoft Azure Command-Line Tools BlockchainManagementClient Extension";
+  };
+  blueprint = mkAzExtension rec {
+    pname = "blueprint";
+    version = "0.3.2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/blueprint-${version}-py3-none-any.whl";
+    sha256 = "58d3835446dd93e585b0f6b520a2db6551b8a927e35e25da4747d4cf8a4c009b";
+    description = "Microsoft Azure Command-Line Tools Blueprint Extension";
+  };
+  change-analysis = mkAzExtension rec {
+    pname = "change-analysis";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/change_analysis-${version}-py3-none-any.whl";
+    sha256 = "49f1761a1b1ad29169af2ecd5793e10ddec797ebb2610e7c70e1b1ab2b75126a";
+    description = "Microsoft Azure Command-Line Tools ChangeAnalysis Extension";
+  };
+  cli-translator = mkAzExtension rec {
+    pname = "cli-translator";
+    version = "0.3.0";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/cli_translator-${version}-py3-none-any.whl";
+    sha256 = "9ea6162d37fc3390be4dce64cb05c5c588070104f3e92a701ab475473565a8a9";
+    description = "Translate ARM template to executable Azure CLI scripts";
+  };
+  confidentialledger = mkAzExtension rec {
+    pname = "confidentialledger";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/confidentialledger-${version}-py3-none-any.whl";
+    sha256 = "3afbf49f10cdddd9675562364ce2275f6f70eb5318fa85b658d711b1e24dc94e";
+    description = "Microsoft Azure Command-Line Tools ConfidentialLedger Extension";
+  };
+  confluent = mkAzExtension rec {
+    pname = "confluent";
+    version = "0.4.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/confluent-${version}-py3-none-any.whl";
+    sha256 = "7b812940a77094bc916c745a61b7732966de4e7943a7541c0a402c0d912bc6af";
+    description = "Microsoft Azure Command-Line Tools ConfluentManagementClient Extension";
+  };
+  connectedmachine = mkAzExtension rec {
+    pname = "connectedmachine";
+    version = "0.7.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/connectedmachine-${version}-py3-none-any.whl";
+    sha256 = "792975ebf0260767481b2ffab0aa3154509c55a9ab60c7f987c3fdead726cd82";
+    description = "Microsoft Azure Command-Line Tools ConnectedMachine Extension";
+  };
+  connectedvmware = mkAzExtension rec {
+    pname = "connectedvmware";
+    version = "0.2.4";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/connectedvmware-${version}-py2.py3-none-any.whl";
+    sha256 = "8a96c790317dfee523d548c28a51191746ff3b45ede4fee56e804d195de437f6";
+    description = "Microsoft Azure Command-Line Tools Connectedvmware Extension";
+  };
+  connection-monitor-preview = mkAzExtension rec {
+    pname = "connection-monitor-preview";
+    version = "0.1.0";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/connection_monitor_preview-${version}-py2.py3-none-any.whl";
+    sha256 = "9a796d5187571990d27feb9efeedde38c194f13ea21cbf9ec06131196bfd821d";
+    description = "Microsoft Azure Command-Line Connection Monitor V2 Extension";
+  };
+  cosmosdb-preview = mkAzExtension rec {
+    pname = "cosmosdb-preview";
+    version = "0.26.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/cosmosdb_preview-${version}-py2.py3-none-any.whl";
+    sha256 = "c761a022fa8e849534d51bb51c6b6a7c01b541a5f018532f7fe312f74f689b06";
+    description = "Microsoft Azure Command-Line Tools Cosmosdb-preview Extension";
+  };
+  costmanagement = mkAzExtension rec {
+    pname = "costmanagement";
+    version = "0.3.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/costmanagement-${version}-py3-none-any.whl";
+    sha256 = "5661a2082ecca000b0c764dc92585e2aa601ccd5eeeb296397533cf4da814cf6";
+    description = "Microsoft Azure Command-Line Tools CostManagementClient Extension";
+  };
+  csvmware = mkAzExtension rec {
+    pname = "csvmware";
+    version = "0.3.0";
+    url = "https://github.com/Azure/az-csvmware-cli/releases/download/${version}/csvmware-0.3.0-py2.py3-none-any.whl";
+    sha256 = "dfb9767f05ac13c762ea9dc4327169e63a5c11879123544b200edb9a2c9a8a42";
+    description = "Manage Azure VMware Solution by CloudSimple";
+  };
+  custom-providers = mkAzExtension rec {
+    pname = "custom-providers";
+    version = "0.2.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/custom_providers-${version}-py2.py3-none-any.whl";
+    sha256 = "a9938f09c86fa4575e3c887206908cac15920af528c537c0b998362a1c43daf7";
+    description = "Microsoft Azure Command-Line Tools Custom Providers Extension";
+  };
+  customlocation = mkAzExtension rec {
+    pname = "customlocation";
+    version = "0.1.3";
+    url = "https://arcplatformcliextprod.blob.core.windows.net/customlocation/customlocation-${version}-py2.py3-none-any.whl";
+    sha256 = "5e36435b1a81de25e74e70c45c2ac9f98065138c35050f29210ae40c18484e28";
+    description = "Microsoft Azure Command-Line Tools Customlocation Extension";
+  };
+  databox = mkAzExtension rec {
+    pname = "databox";
+    version = "1.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/databox-${version}-py3-none-any.whl";
+    sha256 = "7b41a60521d7cf652d4cdca052fc9d2ec6371f3d7884ec0a74ba9a7d5001d7bb";
+    description = "Microsoft Azure Command-Line Tools Databox Extension";
+  };
+  databricks = mkAzExtension rec {
+    pname = "databricks";
+    version = "0.10.2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/databricks-${version}-py3-none-any.whl";
+    sha256 = "7db0b97b497512671343c472fad2ca7a0987ac2cddc0ae0ceab227e3d017718f";
+    description = "Microsoft Azure Command-Line Tools DatabricksClient Extension";
+  };
+  datadog = mkAzExtension rec {
+    pname = "datadog";
+    version = "0.1.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/datadog-${version}-py3-none-any.whl";
+    sha256 = "9a38fd5d6d01646f299ee7b5f68e82ad708889c7d0bd72e0b6b6b13e5455e937";
+    description = "Microsoft Azure Command-Line Tools MicrosoftDatadogClient Extension";
+  };
+  datafactory = mkAzExtension rec {
+    pname = "datafactory";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/datafactory-${version}-py3-none-any.whl";
+    sha256 = "30941f7e2c093f040c958db024367b750068a5181554b23f7403f4522375c41e";
+    description = "Microsoft Azure Command-Line Tools DataFactoryManagementClient Extension";
+  };
+  datamigration = mkAzExtension rec {
+    pname = "datamigration";
+    version = "0.6.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/datamigration-${version}-py3-none-any.whl";
+    sha256 = "4a07a5272762f8f53f9fe61b295a800e63c0ea2900a29a526df2eabbe732bca7";
+    description = "Microsoft Azure Command-Line Tools DataMigrationManagementClient Extension";
+  };
+  dataprotection = mkAzExtension rec {
+    pname = "dataprotection";
+    version = "0.11.2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/dataprotection-${version}-py3-none-any.whl";
+    sha256 = "ce31a7bb0c939d6eb6d71971f89441abaee172a3ba5b74dae0ebe88e4a8f5300";
+    description = "Microsoft Azure Command-Line Tools DataProtectionClient Extension";
+  };
+  datashare = mkAzExtension rec {
+    pname = "datashare";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/datashare-${version}-py3-none-any.whl";
+    sha256 = "f1a801bd0c38eb2ebf9c2fb4e0b43a98470ae7b40bbcd05eb2aa596d69579c9e";
+    description = "Microsoft Azure Command-Line Tools DataShareManagementClient Extension";
+  };
+  deploy-to-azure = mkAzExtension rec {
+    pname = "deploy-to-azure";
+    version = "0.2.0";
+    url = "https://github.com/Azure/deploy-to-azure-cli-extension/releases/download/20200318.1/deploy_to_azure-${version}-py2.py3-none-any.whl";
+    sha256 = "f925080ee7abc3aef733d4c6313170bdedaa9569af1b95427383bc3c59e4ceb8";
+    description = "Deploy to Azure using Github Actions";
+  };
+  desktopvirtualization = mkAzExtension rec {
+    pname = "desktopvirtualization";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/desktopvirtualization-${version}-py3-none-any.whl";
+    sha256 = "6de28d6be58dd65ad8f25a9fa084676c54684f00f9938f5db7d0392282783e04";
+    description = "Microsoft Azure Command-Line Tools DesktopVirtualizationAPIClient Extension";
+  };
+  dev-spaces = mkAzExtension rec {
+    pname = "dev-spaces";
+    version = "1.0.6";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/dev_spaces-${version}-py2.py3-none-any.whl";
+    sha256 = "71041808b27cd9d33fd905c5080c97f61291816f2dddd6dcdb2e66b9fb6ebf59";
+    description = "Dev Spaces provides a rapid, iterative Kubernetes development experience for teams";
+  };
+  devcenter = mkAzExtension rec {
+    pname = "devcenter";
+    version = "5.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/devcenter-${version}-py3-none-any.whl";
+    sha256 = "873ce4ec274710a361ba2a6bf93d8820949d955bf4386881d9a37ed87bb0d054";
+    description = "Microsoft Azure Command-Line Tools DevCenter Extension";
+  };
+  diskpool = mkAzExtension rec {
+    pname = "diskpool";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/diskpool-${version}-py3-none-any.whl";
+    sha256 = "9ae6aaea85a17529da2a4e51c2ba2aba55b4b26816d5618eafd0f9fdc43b67b7";
+    description = "Microsoft Azure Command-Line Tools StoragePoolManagement Extension";
+  };
+  dms-preview = mkAzExtension rec {
+    pname = "dms-preview";
+    version = "0.15.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/dms_preview-${version}-py2.py3-none-any.whl";
+    sha256 = "556c145c03b8d529d8e77f7b35702fb8de382891635e858f928117f33688ee9c";
+    description = "Support for new Database Migration Service scenarios";
+  };
+  dnc = mkAzExtension rec {
+    pname = "dnc";
+    version = "0.2.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/dnc-${version}-py3-none-any.whl";
+    sha256 = "e38474ca9b28bed5dde388cf73dff9e3504825032b03c5bf8930c25caf292026";
+    description = "Microsoft Azure Command-Line Tools Dnc Extension";
+  };
+  dns-resolver = mkAzExtension rec {
+    pname = "dns-resolver";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/dns_resolver-${version}-py3-none-any.whl";
+    sha256 = "1c4bb8216e509c2f08fa75c45930ec377768326f30cb9ab125842aa9352c6e2e";
+    description = "Microsoft Azure Command-Line Tools DnsResolverManagementClient Extension";
+  };
+  dynatrace = mkAzExtension rec {
+    pname = "dynatrace";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/dynatrace-${version}-py3-none-any.whl";
+    sha256 = "112a7e423461d1b6f7c385fe8b73b4f2b850e2570c35a54a4bbcc2e87afec661";
+    description = "Microsoft Azure Command-Line Tools Dynatrace Extension";
+  };
+  edgeorder = mkAzExtension rec {
+    pname = "edgeorder";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/edgeorder-${version}-py3-none-any.whl";
+    sha256 = "186a06d0f8603f7e0faeed5296ecc73bf1096e0d681acea42d5ebccc1670357b";
+    description = "Microsoft Azure Command-Line Tools EdgeOrderManagementClient Extension";
+  };
+  elastic = mkAzExtension rec {
+    pname = "elastic";
+    version = "1.0.0b2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/elastic-${version}-py3-none-any.whl";
+    sha256 = "1d99dbcc10b99185b4cd9b64a8835d80b424226e5cf5d40b3e3ae1d435532657";
+    description = "Microsoft Azure Command-Line Tools MicrosoftElastic Extension";
+  };
+  elastic-san = mkAzExtension rec {
+    pname = "elastic-san";
+    version = "1.0.0b2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/elastic_san-${version}-py3-none-any.whl";
+    sha256 = "6d2f1247ae78e431d4834989df581cd21241d16b97071bf672fb8b71ee3ad702";
+    description = "Microsoft Azure Command-Line Tools ElasticSan Extension";
+  };
+  eventgrid = mkAzExtension rec {
+    pname = "eventgrid";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/eventgrid-${version}-py2.py3-none-any.whl";
+    sha256 = "662ca2a381efcf821a16648ff3b89edbe21f4e9887e18ffa7ee0dbbaf0332ede";
+    description = "Microsoft Azure Command-Line Tools EventGrid Command Module";
+  };
+  express-route-cross-connection = mkAzExtension rec {
+    pname = "express-route-cross-connection";
+    version = "0.1.1";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/express_route_cross_connection-${version}-py2.py3-none-any.whl";
+    sha256 = "b83f723baae0ea04557a87f358fa2131baf15d45cd3aba7a9ab42d14ec80df38";
+    description = "Manage customer ExpressRoute circuits using an ExpressRoute cross-connection";
+  };
+  fleet = mkAzExtension rec {
+    pname = "fleet";
+    version = "1.0.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/fleet-${version}-py3-none-any.whl";
+    sha256 = "cd93b819d0a8c1ab50f4aec00b31623fd01040362c4cd633a89ba03fc894eb73";
+    description = "Microsoft Azure Command-Line Tools Fleet Extension";
+  };
+  fluid-relay = mkAzExtension rec {
+    pname = "fluid-relay";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/fluid_relay-${version}-py3-none-any.whl";
+    sha256 = "9217666f8134a38e09aeda905e7cc83994332a5ab563ec8935b9ff6c91563e8c";
+    description = "Microsoft Azure Command-Line Tools FluidRelay Extension";
+  };
+  footprint = mkAzExtension rec {
+    pname = "footprint";
+    version = "1.0.0";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/footprint-${version}-py3-none-any.whl";
+    sha256 = "4aa59288bf46cfd68519f1f7f63d3e33af16d80632b84c283cc7152129260b2c";
+    description = "Microsoft Azure Command-Line Tools FootprintMonitoringManagementClient Extension";
+  };
+  front-door = mkAzExtension rec {
+    pname = "front-door";
+    version = "1.0.17";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/front_door-${version}-py3-none-any.whl";
+    sha256 = "20996a4d864963451572b71fecf4906f3e7fe8f403a651a1d1e98363df63d095";
+    description = "Manage networking Front Doors";
+  };
+  fzf = mkAzExtension rec {
+    pname = "fzf";
+    version = "1.0.2";
+    url = "https://pahealyfzf.blob.core.windows.net/fzf/fzf-${version}-py2.py3-none-any.whl";
+    sha256 = "84abeed03b4bbfa7b8c0be08d9366ff3040e2160df4f5a539f0e1c9e0a1c359c";
+    description = "Microsoft Azure Command-Line Tools fzf Extension";
+  };
+  graphservices = mkAzExtension rec {
+    pname = "graphservices";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/graphservices-${version}-py3-none-any.whl";
+    sha256 = "8aeda3901e944b038f4e812b0b7099798d2bd82d55e03e785017a504c14583e5";
+    description = "Microsoft Azure Command-Line Tools Graphservices Extension";
+  };
+  guestconfig = mkAzExtension rec {
+    pname = "guestconfig";
+    version = "0.1.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/guestconfig-${version}-py3-none-any.whl";
+    sha256 = "94836a5d21ee1071cd40b163d2c80c32a6a81b9dc85d91371f7e4fb35141e273";
+    description = "Microsoft Azure Command-Line Tools GuestConfigurationClient Extension";
+  };
+  hack = mkAzExtension rec {
+    pname = "hack";
+    version = "0.4.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/hack-${version}-py2.py3-none-any.whl";
+    sha256 = "f9e600457e3a9fffc3235a7b30176d9f0a7f4d39ac01ea3e2668bcbdee6398a6";
+    description = "Microsoft Azure Command-Line Tools Hack Extension";
+  };
+  hardware-security-modules = mkAzExtension rec {
+    pname = "hardware-security-modules";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/hardware_security_modules-${version}-py3-none-any.whl";
+    sha256 = "ac4a10e2cc64a4d0818e48ffbcddfeb4307dd56b8875bc01c02687d473c9fe9b";
+    description = "Microsoft Azure Command-Line Tools AzureDedicatedHSMResourceProvider Extension";
+  };
+  hdinsightonaks = mkAzExtension rec {
+    pname = "hdinsightonaks";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/hdinsightonaks-${version}-py3-none-any.whl";
+    sha256 = "566c30d67d6b524ac25f77342121e0e7a6ed4ab0af561fcc6e94b0629a03f40c";
+    description = "Microsoft Azure Command-Line Tools Hdinsightonaks Extension";
+  };
+  healthbot = mkAzExtension rec {
+    pname = "healthbot";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/healthbot-${version}-py3-none-any.whl";
+    sha256 = "9134fad2511516e714a5db346d63865af0badf0599ade3f1c15faca0055585a3";
+    description = "Microsoft Azure Command-Line Tools HealthbotClient Extension";
+  };
+  healthcareapis = mkAzExtension rec {
+    pname = "healthcareapis";
+    version = "0.4.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/healthcareapis-${version}-py3-none-any.whl";
+    sha256 = "a25d7d57d4fd3adcc37581d0acc1d6c6a46dcd0351933ed37cfba9d1abd60978";
+    description = "Microsoft Azure Command-Line Tools HealthcareApisManagementClient Extension";
+  };
+  hpc-cache = mkAzExtension rec {
+    pname = "hpc-cache";
+    version = "0.1.5";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/hpc_cache-${version}-py2.py3-none-any.whl";
+    sha256 = "852cb417aadf0ad07e3c51413858c413bf71ea6cb49ba58289d9572f9a350507";
+    description = "Microsoft Azure Command-Line Tools StorageCache Extension";
+  };
+  image-copy-extension = mkAzExtension rec {
+    pname = "image-copy-extension";
+    version = "0.2.13";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/image_copy_extension-${version}-py2.py3-none-any.whl";
+    sha256 = "b0d12bf3c74500790d58d99a6c32562548712cb872b7942e8ad481e270521b19";
+    description = "Support for copying managed vm images between regions";
+  };
+  image-gallery = mkAzExtension rec {
+    pname = "image-gallery";
+    version = "0.1.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/image_gallery-${version}-py2.py3-none-any.whl";
+    sha256 = "6260c1f4bfb589d2ba0569317358a149caabbbd49a048e69328e44871694aacd";
+    description = "Support for Azure Image Gallery";
+  };
+  import-export = mkAzExtension rec {
+    pname = "import-export";
+    version = "0.1.1";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/import_export-${version}-py3-none-any.whl";
+    sha256 = "0680948362e12138c9582e68e471533482749bd660bfe3c8c2a4d856e90927b0";
+    description = "Microsoft Azure Command-Line Tools StorageImportExport Extension";
+  };
+  init = mkAzExtension rec {
+    pname = "init";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/init-${version}-py3-none-any.whl";
+    sha256 = "1177fc293dc118b449b761ec2c728d39755fc3939de8d4bfd89cce1bfb218e86";
+    description = "Microsoft Azure Command-Line Tools Init Extension";
+  };
+  internet-analyzer = mkAzExtension rec {
+    pname = "internet-analyzer";
+    version = "0.1.0rc6";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/internet_analyzer-${version}-py2.py3-none-any.whl";
+    sha256 = "0708d9f598d1618d138eebcf18354d97c7b3a2c90570959df077e04d419d32c3";
+    description = "Microsoft Azure Command-Line Tools Internet Analyzer Extension";
+  };
+  ip-group = mkAzExtension rec {
+    pname = "ip-group";
+    version = "0.1.2";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/ip_group-${version}-py2.py3-none-any.whl";
+    sha256 = "afba2d8a8a612863b63f504d6cff6d559610b961e4c77dc2fd49b9fe03ec67a2";
+    description = "Microsoft Azure Command-Line Tools IpGroup Extension";
+  };
+  k8s-extension = mkAzExtension rec {
+    pname = "k8s-extension";
+    version = "1.6.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/k8s_extension-${version}-py3-none-any.whl";
+    sha256 = "27a9996a9ace11856f37719ae697f0ac98d368dde6eb8648d111aafc136599a7";
+    description = "Microsoft Azure Command-Line Tools K8s-extension Extension";
+  };
+  kusto = mkAzExtension rec {
+    pname = "kusto";
+    version = "0.5.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/kusto-${version}-py3-none-any.whl";
+    sha256 = "cf5729e9d02029a189182523543285c9737d515f41c610c8338d43f872f9f01d";
+    description = "Microsoft Azure Command-Line Tools KustoManagementClient Extension";
+  };
+  log-analytics = mkAzExtension rec {
+    pname = "log-analytics";
+    version = "0.2.2";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/log_analytics-${version}-py2.py3-none-any.whl";
+    sha256 = "c04c42a26d50db82d14f76e209184b18d4cce17b458817ac607e3ff975641eb2";
+    description = "Support for Azure Log Analytics query capabilities";
+  };
+  log-analytics-solution = mkAzExtension rec {
+    pname = "log-analytics-solution";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/log_analytics_solution-${version}-py2.py3-none-any.whl";
+    sha256 = "c0a4252da4c29032c4e956b768860529509e88a1ecef7f3a3189cb701a305c6b";
+    description = "Support for Azure Log Analytics Solution";
+  };
+  logic = mkAzExtension rec {
+    pname = "logic";
+    version = "1.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/logic-${version}-py3-none-any.whl";
+    sha256 = "14c18768c02ee9c370ac7eed0f23206eee7d344a10382a3083b17b5e1848cfcd";
+    description = "Microsoft Azure Command-Line Tools Logic Extension";
+  };
+  logz = mkAzExtension rec {
+    pname = "logz";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/logz-${version}-py3-none-any.whl";
+    sha256 = "6a937dbb8c5a758b29afd45ecfc101743a5bf2491f2fba60e8ea512d5b765840";
+    description = "Microsoft Azure Command-Line Tools MicrosoftLogz Extension";
+  };
+  maintenance = mkAzExtension rec {
+    pname = "maintenance";
+    version = "1.5.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/maintenance-${version}-py3-none-any.whl";
+    sha256 = "4f1336fed4fa2cbea640627676a6cab4399c1b29ae23cb21fe73c9bea0d80a7f";
+    description = "Microsoft Azure Command-Line Tools MaintenanceManagementClient Extension";
+  };
+  managedccfs = mkAzExtension rec {
+    pname = "managedccfs";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/managedccfs-${version}-py3-none-any.whl";
+    sha256 = "378f425f35420373e9703a5dc8c0f05ca8176fb8404b38610d4de828f7c23d37";
+    description = "Microsoft Azure Command-Line Tools Managedccfs Extension";
+  };
+  managednetworkfabric = mkAzExtension rec {
+    pname = "managednetworkfabric";
+    version = "4.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/managednetworkfabric-${version}-py3-none-any.whl";
+    sha256 = "f80f528a099862fa8e792f770943a832dbb958b503cc5cc8cb6f58766056d857";
+    description = "Support for managednetworkfabric commands based on 2023-06-15 API version";
+  };
+  managementpartner = mkAzExtension rec {
+    pname = "managementpartner";
+    version = "0.1.3";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/managementpartner-${version}-py2.py3-none-any.whl";
+    sha256 = "22ddf4b1cdc77e99262cb6089c4d96040065828a1d38a2709fdb945d3c851839";
+    description = "Support for Management Partner preview";
+  };
+  mixed-reality = mkAzExtension rec {
+    pname = "mixed-reality";
+    version = "0.0.5";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/mixed_reality-${version}-py2.py3-none-any.whl";
+    sha256 = "026aaf58f9ad02d74837d21a1f5c122264a59814e0b7c395c26e5fdc1293187e";
+    description = "Mixed Reality Azure CLI Extension";
+  };
+  mobile-network = mkAzExtension rec {
+    pname = "mobile-network";
+    version = "0.2.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/mobile_network-${version}-py3-none-any.whl";
+    sha256 = "66bd39f687c2ac030ab6bd44b8746ec8d64c4804b44592c0bb1ffda837dce22b";
+    description = "Microsoft Azure Command-Line Tools MobileNetwork Extension";
+  };
+  monitor-control-service = mkAzExtension rec {
+    pname = "monitor-control-service";
+    version = "1.0.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/monitor_control_service-${version}-py3-none-any.whl";
+    sha256 = "66475eb79c577ea566c74f986b9ef6af936580beb02dde622701370323d430a3";
+    description = "Microsoft Azure Command-Line Tools MonitorClient Extension";
+  };
+  network-analytics = mkAzExtension rec {
+    pname = "network-analytics";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/network_analytics-${version}-py3-none-any.whl";
+    sha256 = "c8d7e195f913298ac03ef8eb1f8d7fb09526956d3eb750a8cd447ae8f61d4317";
+    description = "Microsoft Azure Command-Line Tools NetworkAnalytics Extension";
+  };
+  networkcloud = mkAzExtension rec {
+    pname = "networkcloud";
+    version = "2.0.0b2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/networkcloud-${version}-py3-none-any.whl";
+    sha256 = "28c43560516e254ab60708c0ac8cf868795ce76e4aa9da1548584b22331af467";
+    description = "Support for Azure Operator Nexus network cloud commands based on 2023-10-01-preview API version";
+  };
+  new-relic = mkAzExtension rec {
+    pname = "new-relic";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/new_relic-${version}-py3-none-any.whl";
+    sha256 = "9ce69f1684cea14acba0f2fdb473e47e0a06745e383bb5144954c5e85e416199";
+    description = "Microsoft Azure Command-Line Tools NewRelic Extension";
+  };
+  next = mkAzExtension rec {
+    pname = "next";
+    version = "0.1.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/next-${version}-py2.py3-none-any.whl";
+    sha256 = "83c4e03427f190203e094c14e4f7e79cec989f1277e16b9256bb9fe688aa5e07";
+    description = "Microsoft Azure Command-Line Tools Next Extension";
+  };
+  nginx = mkAzExtension rec {
+    pname = "nginx";
+    version = "0.1.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/nginx-${version}-py2.py3-none-any.whl";
+    sha256 = "3234129a26043a68e80ee1ae31c36e7ef8b2691a096cd6fc557e3a46fea8170e";
+    description = "Microsoft Azure Command-Line Tools Nginx Extension";
+  };
+  notification-hub = mkAzExtension rec {
+    pname = "notification-hub";
+    version = "1.0.0a1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/notification_hub-${version}-py3-none-any.whl";
+    sha256 = "a03751b715700e0d18a38e808bfeed164335024c9608c4bfd53aeacc731d1099";
+    description = "Microsoft Azure Command-Line Tools Notification Hub Extension";
+  };
+  nsp = mkAzExtension rec {
+    pname = "nsp";
+    version = "0.3.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/nsp-${version}-py3-none-any.whl";
+    sha256 = "3e53051a70693a5da8c563118d0f695efc8465eab769ca64416fc8a16ba6e72a";
+    description = "Microsoft Azure Command-Line Tools Nsp Extension";
+  };
+  offazure = mkAzExtension rec {
+    pname = "offazure";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/offazure-${version}-py3-none-any.whl";
+    sha256 = "1918817070ae9e0ceef57b93366d18b6e8bf577fd632e7da999e1e2abbb53656";
+    description = "Microsoft Azure Command-Line Tools AzureMigrateV2 Extension";
+  };
+  orbital = mkAzExtension rec {
+    pname = "orbital";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/orbital-${version}-py3-none-any.whl";
+    sha256 = "4259fb8ff560440d63251cc9721bb3f2283452f2399134514611f886fa350f37";
+    description = "Microsoft Azure Command-Line Tools Orbital Extension";
+  };
+  palo-alto-networks = mkAzExtension rec {
+    pname = "palo-alto-networks";
+    version = "1.1.1b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/palo_alto_networks-${version}-py3-none-any.whl";
+    sha256 = "8d4f6a4b72366bd57780bd158d6c25b363999e1a13ea85d491809cc9a4d29608";
+    description = "Microsoft Azure Command-Line Tools PaloAltoNetworks Extension";
+  };
+  peering = mkAzExtension rec {
+    pname = "peering";
+    version = "0.2.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/peering-${version}-py3-none-any.whl";
+    sha256 = "b068c12b47f17304af51431a2ae975339b7d4601a180e83916efae73d7c42600";
+    description = "Microsoft Azure Command-Line Tools PeeringManagementClient Extension";
+  };
+  portal = mkAzExtension rec {
+    pname = "portal";
+    version = "0.1.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/portal-${version}-py3-none-any.whl";
+    sha256 = "3c3ebe23f59db5f2d286ca52cf8cfbbc5983ce8073622de11a35dab95800a996";
+    description = "Microsoft Azure Command-Line Tools Portal Extension";
+  };
+  powerbidedicated = mkAzExtension rec {
+    pname = "powerbidedicated";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/powerbidedicated-${version}-py2.py3-none-any.whl";
+    sha256 = "e1e58bb6f57edde4793f4c66a0c10a2776f842172878162385f2b1d21539de6e";
+    description = "Microsoft Azure Command-Line Tools PowerBIDedicated Extension";
+  };
+  providerhub = mkAzExtension rec {
+    pname = "providerhub";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/providerhub-${version}-py3-none-any.whl";
+    sha256 = "9cda8fed546254987e5c5f872b4119105796c89de8d65d385638dac155bdf01e";
+    description = "Microsoft Azure Command-Line Tools ProviderHub Extension";
+  };
+  purview = mkAzExtension rec {
+    pname = "purview";
+    version = "0.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/purview-${version}-py3-none-any.whl";
+    sha256 = "706cc2550fbd07b8b676345c2f26c5ba66550905bc8ec224c6c4e5637c497266";
+    description = "Microsoft Azure Command-Line Tools PurviewManagementClient Extension";
+  };
+  qumulo = mkAzExtension rec {
+    pname = "qumulo";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/qumulo-${version}-py3-none-any.whl";
+    sha256 = "9973f580a3fc20cc2fe5558a1cfdc10ddfc6567982d12f37008bbfec7aafcf9b";
+    description = "Microsoft Azure Command-Line Tools Qumulo Extension";
+  };
+  quota = mkAzExtension rec {
+    pname = "quota";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/quota-${version}-py3-none-any.whl";
+    sha256 = "8b4c3475df0c3544dbcc28e4875eb5b163d72b40aff4250aafdad94180c3f995";
+    description = "Microsoft Azure Command-Line Tools AzureQuotaExtensionAPI Extension";
+  };
+  redisenterprise = mkAzExtension rec {
+    pname = "redisenterprise";
+    version = "0.1.4";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/redisenterprise-${version}-py3-none-any.whl";
+    sha256 = "cb59ab44eb12b51ecc62f8a5b6302d166be5d6388cf8ff21bc49f2829128d031";
+    description = "Microsoft Azure Command-Line Tools RedisEnterprise Extension";
+  };
+  reservation = mkAzExtension rec {
+    pname = "reservation";
+    version = "0.3.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/reservation-${version}-py3-none-any.whl";
+    sha256 = "649f086b02305d142f2f08ea96f52a322a165a6f2a958f3287f53550938ab912";
+    description = "Microsoft Azure Command-Line Tools Reservation Extension";
+  };
+  resource-graph = mkAzExtension rec {
+    pname = "resource-graph";
+    version = "2.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/resource_graph-${version}-py2.py3-none-any.whl";
+    sha256 = "62c81e3d62ce60c5a0a485829d00bdb0c733145ee93fb6098c14e3b27ee27c40";
+    description = "Support for querying Azure resources with Resource Graph";
+  };
+  resource-mover = mkAzExtension rec {
+    pname = "resource-mover";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/resource_mover-${version}-py3-none-any.whl";
+    sha256 = "3bc9f41aa30c4f6bc04ff780dc30e8df05bfc887f2adbdf9e89d59f8389e55f3";
+    description = "Microsoft Azure Command-Line Tools ResourceMoverServiceAPI Extension";
+  };
+  sap-hana = mkAzExtension rec {
+    pname = "sap-hana";
+    version = "0.6.5";
+    url = "https://github.com/Azure/azure-hanaonazure-cli-extension/releases/download/${version}/sap_hana-0.6.5-py2.py3-none-any.whl";
+    sha256 = "b4554c125f3a0eb5c891cec396e7705f6e91d4d81789acef20e3c4d172fa4543";
+    description = "Additional commands for working with SAP HanaOnAzure instances";
+  };
+  scenario-guide = mkAzExtension rec {
+    pname = "scenario-guide";
+    version = "0.1.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/scenario_guide-${version}-py3-none-any.whl";
+    sha256 = "4264b48b4b980334488a3fdb3bc43241e828a2742c35ce48985f3bebf019e8f8";
+    description = "Microsoft Azure Command-Line Tools Scenario Guidance Extension";
+  };
+  scheduled-query = mkAzExtension rec {
+    pname = "scheduled-query";
+    version = "0.5.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/scheduled_query-${version}-py2.py3-none-any.whl";
+    sha256 = "b141ce4ff7678484561e9f3c842d8249112a465b7a0da07a6da49856920f8534";
+    description = "Microsoft Azure Command-Line Tools Scheduled_query Extension";
+  };
+  scvmm = mkAzExtension rec {
+    pname = "scvmm";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/scvmm-${version}-py2.py3-none-any.whl";
+    sha256 = "565aa9d75dd4d276df2f8ffec5311bd2ae16a2d6172d525a7763fc5972b262b7";
+    description = "Microsoft Azure Command-Line Tools SCVMM Extension";
+  };
+  self-help = mkAzExtension rec {
+    pname = "self-help";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/self_help-${version}-py3-none-any.whl";
+    sha256 = "a57d629f75443666af570188716eaf2b9182da41f6d2f958f6d53d79b830b23e";
+    description = "Microsoft Azure Command-Line Tools SelfHelp Extension";
+  };
+  sentinel = mkAzExtension rec {
+    pname = "sentinel";
+    version = "0.2.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/sentinel-${version}-py3-none-any.whl";
+    sha256 = "5511544b4e342b03a4a4263617c603d87442ad5179ce9d8c0d1fd10915f93b7a";
+    description = "Microsoft Azure Command-Line Tools Sentinel Extension";
+  };
+  site-recovery = mkAzExtension rec {
+    pname = "site-recovery";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/site_recovery-${version}-py3-none-any.whl";
+    sha256 = "ab19142c9a2e06190b6dac272d8cf29e179c9e283f965f8e3a4d29275b847ce5";
+    description = "Microsoft Azure Command-Line Tools SiteRecovery Extension";
+  };
+  spring = mkAzExtension rec {
+    pname = "spring";
+    version = "1.19.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/spring-${version}-py3-none-any.whl";
+    sha256 = "80cbd41e563231e500670402b01e95150adce18b7c128320c3d2393284e0d5d5";
+    description = "Microsoft Azure Command-Line Tools spring Extension";
+  };
+  spring-cloud = mkAzExtension rec {
+    pname = "spring-cloud";
+    version = "3.1.8";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/spring_cloud-${version}-py3-none-any.whl";
+    sha256 = "14993abe3524c28a42b2e9ba0f0a8a7083162ba9174975e09d8cea834b9829ee";
+    description = "Microsoft Azure Command-Line Tools spring-cloud Extension";
+  };
+  stack-hci = mkAzExtension rec {
+    pname = "stack-hci";
+    version = "1.1.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/stack_hci-${version}-py3-none-any.whl";
+    sha256 = "9bb0350f6c28ac2068a5a4a20bbcf74ae34b392d05eb148c403c618525cbadef";
+    description = "Microsoft Azure Command-Line Tools AzureStackHCIClient Extension";
+  };
+  stack-hci-vm = mkAzExtension rec {
+    pname = "stack-hci-vm";
+    version = "0.1.11";
+    url = "https://hybridaksstorage.z13.web.core.windows.net/SelfServiceVM/CLI/stack_hci_vm-${version}.1-py3-none-any.whl";
+    sha256 = "cc99134288545178d08b18abd5b7c9e3d099d2add8b52ab9308f6c5fd97ae60c";
+    description = "Microsoft Azure Command-Line Tools AzureStackHCIClient Extension ";
+  };
+  staticwebapp = mkAzExtension rec {
+    pname = "staticwebapp";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/staticwebapp-${version}-py3-none-any.whl";
+    sha256 = "fb1dcd876fc2d829cc7a1cc545e9445364d43357d888bb3deeb36a716b805717";
+    description = "Microsoft Azure Command-Line Tools Staticwebapp Extension";
+  };
+  storage-blob-preview = mkAzExtension rec {
+    pname = "storage-blob-preview";
+    version = "0.7.2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/storage_blob_preview-${version}-py2.py3-none-any.whl";
+    sha256 = "002b7779f4c6531fdb714f77bcea5d3d96007a7ff5b86869f8e56aad98298b23";
+    description = "Microsoft Azure Command-Line Tools Storage-blob-preview Extension";
+  };
+  storage-mover = mkAzExtension rec {
+    pname = "storage-mover";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/storage_mover-${version}-py3-none-any.whl";
+    sha256 = "2682859ea376194a6942713ad673fd426555ce2d4ebe9545e45d18da4fed98b1";
+    description = "Microsoft Azure Command-Line Tools StorageMover Extension";
+  };
+  storagesync = mkAzExtension rec {
+    pname = "storagesync";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/storagesync-${version}-py2.py3-none-any.whl";
+    sha256 = "1f6997e186199058e60d8fdc020c407d4f92d8e78286189c1887e57a371b43c1";
+    description = "Microsoft Azure Command-Line Tools MicrosoftStorageSync Extension";
+  };
+  stream-analytics = mkAzExtension rec {
+    pname = "stream-analytics";
+    version = "1.0.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/stream_analytics-${version}-py3-none-any.whl";
+    sha256 = "15443fd8a73d319a5c9fbc586c9727d1ce1a31e11fd3f3c7e4fcbc97ad076aaa";
+    description = "Microsoft Azure Command-Line Tools StreamAnalyticsManagementClient Extension";
+  };
+  subscription = mkAzExtension rec {
+    pname = "subscription";
+    version = "0.1.5";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/subscription-${version}-py2.py3-none-any.whl";
+    sha256 = "ff7896aebc46862a6d30ac5f4cf64bdd40cb50e5437cea299590896d75f1013e";
+    description = "Support for subscription management preview";
+  };
+  support = mkAzExtension rec {
+    pname = "support";
+    version = "1.0.3";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/support-${version}-py2.py3-none-any.whl";
+    sha256 = "9f5b4ebc6a90b48d2a3c18ce7b74d89240275dcf23aa836b8509882b1ee28c56";
+    description = "Microsoft Azure Command-Line Tools Support Extension";
+  };
+  timeseriesinsights = mkAzExtension rec {
+    pname = "timeseriesinsights";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/timeseriesinsights-${version}-py3-none-any.whl";
+    sha256 = "c578804a6cfbb4ef8ab91de2130bba8f6139f2fadea4ed1e38b05ea62c7aa95d";
+    description = "Microsoft Azure Command-Line Tools TimeSeriesInsightsClient Extension";
+  };
+  traffic-collector = mkAzExtension rec {
+    pname = "traffic-collector";
+    version = "0.1.2";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/traffic_collector-${version}-py3-none-any.whl";
+    sha256 = "98bda4d9a9233efb0ae1c5fae1a6c2a42942e8a71b0ebf19d3a7193548b13ff2";
+    description = "Microsoft Azure Command-Line Tools TrafficCollector Extension";
+  };
+  virtual-network-manager = mkAzExtension rec {
+    pname = "virtual-network-manager";
+    version = "1.0.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/virtual_network_manager-${version}-py3-none-any.whl";
+    sha256 = "a18581c625791fb29736e7ec1b9e18d4a00f3765a8600192e10c892fd27b7ba1";
+    description = "Microsoft Azure Command-Line Tools NetworkManagementClient Extension";
+  };
+  virtual-network-tap = mkAzExtension rec {
+    pname = "virtual-network-tap";
+    version = "0.1.0";
+    url = "https://azurecliprod.blob.core.windows.net/cli-extensions/virtual_network_tap-${version}-py2.py3-none-any.whl";
+    sha256 = "7e3f634f8eb701cf6fef504159785bc90e6f5bd2482e459469dd9ab30601aa35";
+    description = "Manage virtual network taps (VTAP)";
+  };
+  virtual-wan = mkAzExtension rec {
+    pname = "virtual-wan";
+    version = "0.3.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/virtual_wan-${version}-py2.py3-none-any.whl";
+    sha256 = "e5f4e9d4398cf0fcd656c0107386adbc8493e69e3158af6c5145ed23aaf77165";
+    description = "Manage virtual WAN, hubs, VPN gateways and VPN sites";
+  };
+  vm-repair = mkAzExtension rec {
+    pname = "vm-repair";
+    version = "1.0.0b1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/vm_repair-${version}-py2.py3-none-any.whl";
+    sha256 = "7e6b9fb9952a56811d65de87b87b0403a6161edfa82284a43fa58f176e397b8b";
+    description = "Auto repair commands to fix VMs";
+  };
+  vmware = mkAzExtension rec {
+    pname = "vmware";
+    version = "6.0.1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/vmware-${version}-py2.py3-none-any.whl";
+    sha256 = "2e07a4ddf1b244cfe8b63a29b7f82c3ec94294f10bacfe8fd604841d290020b5";
+    description = "Azure VMware Solution commands";
+  };
+  webapp = mkAzExtension rec {
+    pname = "webapp";
+    version = "0.4.0";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/webapp-${version}-py2.py3-none-any.whl";
+    sha256 = "908b0df07cef652176a0f2bf0fdcf58b5d16fb4903ee3c06f73f0bb3913a5c0f";
+    description = "Additional commands for Azure AppService";
+  };
+  workloads = mkAzExtension rec {
+    pname = "workloads";
+    version = "0.1.0a1";
+    url = "https://azcliprod.blob.core.windows.net/cli-extensions/workloads-${version}-py3-none-any.whl";
+    sha256 = "0e5ba95c3799d043fc2ba869ce0c5b2eea200357a8b0cbd2b2733bb91d4cc7a8";
+    description = "Microsoft Azure Command-Line Tools Workloads Extension";
+  };
+}
diff --git a/pkgs/tools/admin/azure-cli/python-packages.nix b/pkgs/tools/admin/azure-cli/python-packages.nix
index b01341f1a2caa..7e643a0a2ef6d 100644
--- a/pkgs/tools/admin/azure-cli/python-packages.nix
+++ b/pkgs/tools/admin/azure-cli/python-packages.nix
@@ -1,4 +1,5 @@
-{ stdenv
+{ lib
+, stdenv
 , python3
 , fetchPypi
 , fetchpatch
@@ -30,6 +31,16 @@ let
 
         sourceRoot = "${src.name}/src/azure-cli-core";
 
+        patches = [
+          # Adding the possibility to configure an immutable configuration dir via `AZURE_IMMUTABLE_DIR`.
+          # This enables us to place configuration files that alter the behavior of the CLI in the Nix store.
+          #
+          # This is a downstream patch without an commit or PR upstream.
+          # There is an issue to discuss possible solutions upstream:
+          # https://github.com/Azure/azure-cli/issues/28093
+          ./0001-optional-immutable-configuration-dir.patch
+        ];
+
         propagatedBuildInputs = with self; [
           argcomplete
           azure-cli-telemetry
diff --git a/pkgs/tools/admin/azure-cli/query-extension-index.sh b/pkgs/tools/admin/azure-cli/query-extension-index.sh
new file mode 100755
index 0000000000000..8dbd45ce937e6
--- /dev/null
+++ b/pkgs/tools/admin/azure-cli/query-extension-index.sh
@@ -0,0 +1,163 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+function usage() {
+    {
+        echo "${0} - query Azure CLI extension index"
+        echo
+        echo "The Azure CLI extension index contains all versions of all extensions. This"
+        echo "script queries the index for the latest version of an extensions that is"
+        echo "compatible with the specified version of the Azure CLI. Data for that extension"
+        echo "is filtered for fields relevant to package the extension in Nix."
+        echo
+        echo "Usage:"
+        echo "  --cli-version=<version>      version of azure-cli (required)"
+        echo "  --extension=<name>           name of extension to query"
+        echo "  --file=<path>                path to extension index file"
+        echo "  --download                   download extension index file"
+        echo "  --nix                        output Nix expression"
+        echo "  --requirements=<true/false>  filter for extensions with/without requirements"
+    } >&2
+}
+
+for arg in "$@"; do
+    case "$arg" in
+        --cli-version=*)
+            cliVer="${arg#*=}"
+            shift
+            ;;
+        --extension=*)
+            extName="${arg#*=}"
+            shift
+            ;;
+        --file=*)
+            extensionFile="${arg#*=}"
+            shift
+            ;;
+        --download)
+            download=true
+            shift
+            ;;
+        --nix)
+            nix=true
+            shift
+            ;;
+        --requirements=*)
+            requirements="${arg#*=}"
+            shift
+            ;;
+        --help)
+            usage
+            exit 0
+            ;;
+        *)
+            echo "Unknown argument: $arg" >&2
+            exit 1
+            ;;
+    esac
+done
+
+if [[ -z "${cliVer:-}" ]]; then
+    echo "Missing --cli-version argument" >&2
+    exit 1
+fi
+if [[ -z "${extensionFile:-}" && -z "${download:-}" ]]; then
+    echo "Either --file or --download must be specified" >&2
+    exit 1
+fi
+if [[ -n "${extName:-}" && -n "${requirements:-}" ]]; then
+    echo "--requirements can only be used when listing all extensions" >&2
+    exit 1
+fi
+
+if [[ "${download:-}" == true ]]; then
+    extensionFile="$(mktemp)"
+    echo "Downloading extensions index to ${extensionFile}" >&2
+    curl -fsSL "https://azcliextensionsync.blob.core.windows.net/index1/index.json" > "${extensionFile}"
+fi
+
+# shellcheck disable=SC2016
+jqProgram='
+    def opt(f):
+        . as $in | try f catch $in
+        ;
+
+    def version_to_array:
+        sub("\\+.*$"; "")
+        | capture("^(?<v>[^a-z-]+)(?:(?<p>.*))?") | [.v, .p // empty]
+        | map(split(".")
+        | map(opt(tonumber)))
+        | flatten
+        ;
+
+    def version_le($contstraint):
+        version_to_array as $v
+        | $contstraint | version_to_array as $c
+        | $v[0] < $c[0] or
+          ($v[0] == $c[0] and $v[1] < $c[1]) or
+          ($v[0] == $c[0] and $v[1] == $c[1] and $v[2] < $c[2]) or
+          ($v[0] == $c[0] and $v[1] == $c[1] and $v[2] == $c[2] and $v[3] <= $c[3])
+        ;
+
+    def max_constrained_version($constraint):
+        [
+            .[] | select(.metadata."azext.minCliCoreVersion" // "0.0.0" | version_le($cliVer))
+        ]
+        | sort_by(.metadata.version | version_to_array)
+        | last
+        ;
+
+    def translate_struct:
+        {
+            pname : .metadata.name,
+            description: .metadata.summary,
+            version: .metadata.version,
+            url: .downloadUrl,
+            sha256: .sha256Digest,
+            license: .metadata.license,
+            requires: .metadata.run_requires.[0].requires
+        }
+        ;
+
+    def to_nix:
+        [.].[] as $in
+        | .version as $version
+        | .description as $description
+        | .url | sub($version;"${version}") as $url
+        | $description |rtrimstr(".") as $description
+        | $in.pname + " = mkAzExtension rec {\n" +
+        "  pname = \"" + $in.pname + "\";\n" +
+        "  version = \"" + $in.version + "\";\n" +
+        "  url = \"" + $url + "\";\n" +
+        "  sha256 = \"" + $in.sha256 + "\";\n" +
+        "  description = \"" + $description + "\";\n" +
+        "};"
+        ;
+
+    def main:
+        .extensions
+        | map(max_constrained_version($cliVer))
+        | .[]
+        | translate_struct
+        | if $extName  != "" then
+            select(.pname == $extName)
+        elif $requirements == "false" then
+            select(.requires == null)
+        elif $requirements == "true" then
+            select(.requires != null)
+        end
+        | if $nix == "true" then
+            to_nix
+        end
+        ;
+
+    main
+'
+
+jq -r \
+    --arg cliVer "${cliVer}" \
+    --arg extName "${extName:-}" \
+    --arg nix "${nix:-}" \
+    --arg requirements "${requirements:-}" \
+    "$jqProgram" "${extensionFile}"
diff --git a/pkgs/tools/admin/balena-cli/default.nix b/pkgs/tools/admin/balena-cli/default.nix
index 4afbe7c06be1b..390bfbc197359 100644
--- a/pkgs/tools/admin/balena-cli/default.nix
+++ b/pkgs/tools/admin/balena-cli/default.nix
@@ -18,16 +18,16 @@ let
   };
 in buildNpmPackage' rec {
   pname = "balena-cli";
-  version = "18.1.5";
+  version = "18.1.8";
 
   src = fetchFromGitHub {
     owner = "balena-io";
     repo = "balena-cli";
     rev = "v${version}";
-    hash = "sha256-VlNhW5fxljj/nu04jnbs03DrOMBTf11YMoRxoJ8jBpE=";
+    hash = "sha256-cxeYwewxn8c3yy/9T6MbWTCdNsK56684OPe6gIFWfxs=";
   };
 
-  npmDepsHash = "sha256-0WyjWsoeOo0jnIh6tTFNGDtS5mo1sgfSxM6840kMFBE=";
+  npmDepsHash = "sha256-Yul97/UlgpV5Rk2ax9rRRNLeLgwdxftuU9IKvy5lSIk=";
 
   postPatch = ''
     ln -s npm-shrinkwrap.json package-lock.json
diff --git a/pkgs/tools/admin/berglas/default.nix b/pkgs/tools/admin/berglas/default.nix
index e35fd2bfe0e0c..a10ce4d728116 100644
--- a/pkgs/tools/admin/berglas/default.nix
+++ b/pkgs/tools/admin/berglas/default.nix
@@ -27,16 +27,16 @@ in
 
 buildGoModule rec {
   pname = "berglas";
-  version = "2.0.1";
+  version = "2.0.2";
 
   src = fetchFromGitHub {
     owner = "GoogleCloudPlatform";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Jf6yPVydM7UnG1yiLEFe+7FMkWANIQebZ3QAwg6/OQs=";
+    sha256 = "sha256-+fpxklkcjGiBMyW+L9nNdzXwhGcE2yIbZ/wPbpj9bV0=";
   };
 
-  vendorHash = "sha256-3WDBl/GqCgRFMmh6TQvtHhACCRzf9sdIO8fel8CAMP0=";
+  vendorHash = "sha256-BDQJFrFbJGuoDpjGn0T9xWk6huUmDpOTO/JSDIYUKYg=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/tools/admin/drawterm/default.nix b/pkgs/tools/admin/drawterm/default.nix
index c83b3dfd65979..b1e7acb3f8f5f 100644
--- a/pkgs/tools/admin/drawterm/default.nix
+++ b/pkgs/tools/admin/drawterm/default.nix
@@ -19,13 +19,13 @@
 
 stdenv.mkDerivation {
   pname = "drawterm";
-  version = "unstable-2024-03-20";
+  version = "unstable-2024-03-31";
 
   src = fetchFrom9Front {
     owner = "plan9front";
     repo = "drawterm";
-    rev = "77b464a5d5648bb646467111b8faf719cd5c46b6";
-    hash = "sha256-3J/Fa3NXxUieEqRcCepGdd0ktxQFKhyY4z8Pvcq94Kw=";
+    rev = "401b33384215ea3f7e6a89e61f75e8acb35a3cc4";
+    hash = "sha256-BJqZ4gf6PvGlpS3sab3pLqNxVFIM5nzLRrswrR/ehE4=";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/tools/admin/exoscale-cli/default.nix b/pkgs/tools/admin/exoscale-cli/default.nix
index 4abc7a998eabc..0ed890ff5b742 100644
--- a/pkgs/tools/admin/exoscale-cli/default.nix
+++ b/pkgs/tools/admin/exoscale-cli/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "exoscale-cli";
-  version = "1.76.2";
+  version = "1.77.0";
 
   src = fetchFromGitHub {
     owner = "exoscale";
     repo = "cli";
     rev = "v${version}";
-    sha256 = "sha256-0wobPnSrKVJ61+gj3cZsNUt6hun3qa/zVoBZlP3viSk=";
+    sha256 = "sha256-mUigWOFNfo/tI/2Vf3r2FWw+LHQU7vGodnXnJ6bIwAM=";
   };
 
   vendorHash = null;
diff --git a/pkgs/tools/admin/fastlane/Gemfile.lock b/pkgs/tools/admin/fastlane/Gemfile.lock
index 9f2cbafb8949a..d9ca6d0777e26 100644
--- a/pkgs/tools/admin/fastlane/Gemfile.lock
+++ b/pkgs/tools/admin/fastlane/Gemfile.lock
@@ -1,29 +1,32 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    CFPropertyList (3.0.6)
+    CFPropertyList (3.0.7)
+      base64
+      nkf
       rexml
     addressable (2.8.6)
       public_suffix (>= 2.0.2, < 6.0)
-    artifactory (3.0.15)
+    artifactory (3.0.17)
     atomos (0.1.3)
     aws-eventstream (1.3.0)
-    aws-partitions (1.877.0)
-    aws-sdk-core (3.190.1)
+    aws-partitions (1.909.0)
+    aws-sdk-core (3.191.6)
       aws-eventstream (~> 1, >= 1.3.0)
       aws-partitions (~> 1, >= 1.651.0)
       aws-sigv4 (~> 1.8)
       jmespath (~> 1, >= 1.6.1)
-    aws-sdk-kms (1.76.0)
-      aws-sdk-core (~> 3, >= 3.188.0)
+    aws-sdk-kms (1.78.0)
+      aws-sdk-core (~> 3, >= 3.191.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.142.0)
-      aws-sdk-core (~> 3, >= 3.189.0)
+    aws-sdk-s3 (1.146.1)
+      aws-sdk-core (~> 3, >= 3.191.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.8)
     aws-sigv4 (1.8.0)
       aws-eventstream (~> 1, >= 1.0.2)
     babosa (1.0.4)
+    base64 (0.2.0)
     claide (1.1.0)
     colored (1.2)
     colored2 (3.1.2)
@@ -32,10 +35,10 @@ GEM
     declarative (0.0.20)
     digest-crc (0.6.5)
       rake (>= 12.0.0, < 14.0.0)
-    domain_name (0.6.20231109)
+    domain_name (0.6.20240107)
     dotenv (2.8.1)
     emoji_regex (3.2.3)
-    excon (0.109.0)
+    excon (0.110.0)
     faraday (1.10.3)
       faraday-em_http (~> 1.0)
       faraday-em_synchrony (~> 1.0)
@@ -64,15 +67,15 @@ GEM
     faraday-retry (1.0.3)
     faraday_middleware (1.2.0)
       faraday (~> 1.0)
-    fastimage (2.3.0)
-    fastlane (2.219.0)
+    fastimage (2.3.1)
+    fastlane (2.220.0)
       CFPropertyList (>= 2.3, < 4.0.0)
       addressable (>= 2.8, < 3.0.0)
       artifactory (~> 3.0)
       aws-sdk-s3 (~> 1.0)
       babosa (>= 1.0.3, < 2.0.0)
       bundler (>= 1.12.0, < 3.0.0)
-      colored
+      colored (~> 1.2)
       commander (~> 4.6)
       dotenv (>= 2.1.1, < 3.0.0)
       emoji_regex (>= 0.1, < 4.0)
@@ -93,10 +96,10 @@ GEM
       mini_magick (>= 4.9.4, < 5.0.0)
       multipart-post (>= 2.0.0, < 3.0.0)
       naturally (~> 2.2)
-      optparse (>= 0.1.1)
+      optparse (>= 0.1.1, < 1.0.0)
       plist (>= 3.1.0, < 4.0.0)
       rubyzip (>= 2.0.0, < 3.0.0)
-      security (= 0.1.3)
+      security (= 0.1.5)
       simctl (~> 1.6.3)
       terminal-notifier (>= 2.0.0, < 3.0.0)
       terminal-table (~> 3)
@@ -105,11 +108,11 @@ GEM
       word_wrap (~> 1.0.0)
       xcodeproj (>= 1.13.0, < 2.0.0)
       xcpretty (~> 0.3.0)
-      xcpretty-travis-formatter (>= 0.0.3)
+      xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
     gh_inspector (1.1.3)
     google-apis-androidpublisher_v3 (0.54.0)
       google-apis-core (>= 0.11.0, < 2.a)
-    google-apis-core (0.11.2)
+    google-apis-core (0.11.3)
       addressable (~> 2.5, >= 2.5.1)
       googleauth (>= 0.16.2, < 2.a)
       httpclient (>= 2.8.1, < 3.a)
@@ -117,24 +120,23 @@ GEM
       representable (~> 3.0)
       retriable (>= 2.0, < 4.a)
       rexml
-      webrick
     google-apis-iamcredentials_v1 (0.17.0)
       google-apis-core (>= 0.11.0, < 2.a)
     google-apis-playcustomapp_v1 (0.13.0)
       google-apis-core (>= 0.11.0, < 2.a)
-    google-apis-storage_v1 (0.29.0)
+    google-apis-storage_v1 (0.31.0)
       google-apis-core (>= 0.11.0, < 2.a)
-    google-cloud-core (1.6.1)
+    google-cloud-core (1.7.0)
       google-cloud-env (>= 1.0, < 3.a)
       google-cloud-errors (~> 1.0)
     google-cloud-env (1.6.0)
       faraday (>= 0.17.3, < 3.0)
-    google-cloud-errors (1.3.1)
-    google-cloud-storage (1.45.0)
+    google-cloud-errors (1.4.0)
+    google-cloud-storage (1.47.0)
       addressable (~> 2.8)
       digest-crc (~> 0.4)
       google-apis-iamcredentials_v1 (~> 0.1)
-      google-apis-storage_v1 (~> 0.29.0)
+      google-apis-storage_v1 (~> 0.31.0)
       google-cloud-core (~> 1.6)
       googleauth (>= 0.16.2, < 2.a)
       mini_mime (~> 1.0)
@@ -149,19 +151,21 @@ GEM
       domain_name (~> 0.5)
     httpclient (2.8.3)
     jmespath (1.6.2)
-    json (2.7.1)
-    jwt (2.7.1)
+    json (2.7.2)
+    jwt (2.8.1)
+      base64
     mini_magick (4.12.0)
     mini_mime (1.1.5)
     multi_json (1.15.0)
-    multipart-post (2.3.0)
+    multipart-post (2.4.0)
     nanaimo (0.3.0)
     naturally (2.2.1)
+    nkf (0.2.0)
     optparse (0.4.0)
     os (1.1.4)
     plist (3.7.1)
-    public_suffix (5.0.4)
-    rake (13.1.0)
+    public_suffix (5.0.5)
+    rake (13.2.1)
     representable (3.2.0)
       declarative (< 0.1.0)
       trailblazer-option (>= 0.1.1, < 0.2.0)
@@ -171,8 +175,8 @@ GEM
     rouge (2.0.7)
     ruby2_keywords (0.0.5)
     rubyzip (2.3.2)
-    security (0.1.3)
-    signet (0.18.0)
+    security (0.1.5)
+    signet (0.19.0)
       addressable (~> 2.8)
       faraday (>= 0.17.5, < 3.a)
       jwt (>= 1.5, < 3.0)
@@ -190,9 +194,8 @@ GEM
       tty-cursor (~> 0.7)
     uber (0.1.0)
     unicode-display_width (2.5.0)
-    webrick (1.8.1)
     word_wrap (1.0.0)
-    xcodeproj (1.23.0)
+    xcodeproj (1.24.0)
       CFPropertyList (>= 2.3.3, < 4.0)
       atomos (~> 0.1.3)
       claide (>= 1.0.2, < 2.0)
@@ -211,4 +214,4 @@ DEPENDENCIES
   fastlane
 
 BUNDLED WITH
-   2.4.22
+   2.5.6
diff --git a/pkgs/tools/admin/fastlane/gemset.nix b/pkgs/tools/admin/fastlane/gemset.nix
index 1afc21c27a166..1019d157c1e5f 100644
--- a/pkgs/tools/admin/fastlane/gemset.nix
+++ b/pkgs/tools/admin/fastlane/gemset.nix
@@ -15,10 +15,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0wify8rhjwr5bw5y6ary61vba290vk766cxw9a9mg05yswmaisls";
+      sha256 = "0qzj389l2a3zig040h882mf6cxfa71pm2nk51l4p85n3ck4xa8rh";
       type = "gem";
     };
-    version = "3.0.15";
+    version = "3.0.17";
   };
   atomos = {
     groups = ["default"];
@@ -45,10 +45,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1zcwrlg4in3gzvsiynpzp9fzlr5grrhc2881xcgfs01ppmxysllm";
+      sha256 = "00iknq94smbskgmxqmlxlcgpq5famd968l12nvv8bxi7gk1hagsk";
       type = "gem";
     };
-    version = "1.877.0";
+    version = "1.909.0";
   };
   aws-sdk-core = {
     dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
@@ -56,10 +56,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1ansagfl5irx1y6b9xf4xpi9j6q6k5pbd2aw80hn0p4m3ycafamh";
+      sha256 = "08h9apxdn2aflkg751j4i56ks4750znfbj56w4zlxf4jk7jxkbyk";
       type = "gem";
     };
-    version = "3.190.1";
+    version = "3.191.6";
   };
   aws-sdk-kms = {
     dependencies = ["aws-sdk-core" "aws-sigv4"];
@@ -67,10 +67,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0jfgw9a9c8xyjhkmgpd9rpi95h9i0rhbqszn8iqkbfm9rc9m1xz7";
+      sha256 = "0fbp2vw5qnyiya63hlmwiqkbh30lipyqplancmhm84ad7i98ambb";
       type = "gem";
     };
-    version = "1.76.0";
+    version = "1.78.0";
   };
   aws-sdk-s3 = {
     dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"];
@@ -78,10 +78,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1sfpipfdmixpc0madfx1yvpwpv52fdhxfx4bmvrjxzb6ra78ikbr";
+      sha256 = "1al80phz4x9wwfnr07q1l8h5f0qxgfrrycbg8jvznhxm3zhrakrq";
       type = "gem";
     };
-    version = "1.142.0";
+    version = "1.146.1";
   };
   aws-sigv4 = {
     dependencies = ["aws-eventstream"];
@@ -104,16 +104,26 @@
     };
     version = "1.0.4";
   };
+  base64 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
   CFPropertyList = {
-    dependencies = ["rexml"];
+    dependencies = ["base64" "nkf" "rexml"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1a36zn77yyibqsfpka0i8vgf3yv98ic2b9wwlbc29566y8wpa2bq";
+      sha256 = "0k1w5i4lb1z941m7ds858nly33f3iv12wvr1zav5x3fa99hj2my4";
       type = "gem";
     };
-    version = "3.0.6";
+    version = "3.0.7";
   };
   claide = {
     groups = ["default"];
@@ -182,10 +192,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1gpciaifmxql8h01ci12qq08dnqrdlzkkz6fmia9v9yc3r9a29si";
+      sha256 = "0cyr2xm576gqhqicsyqnhanni47408w2pgvrfi8pd13h2li3nsaz";
       type = "gem";
     };
-    version = "0.6.20231109";
+    version = "0.6.20240107";
   };
   dotenv = {
     groups = ["default"];
@@ -212,10 +222,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1kmmwgjzlrnc3nnrdnw1z67c95nbw0hv54a73yj8jw6pcvl9585x";
+      sha256 = "1m3gzvp1wqki0yh4b7761qhdy4pyr4phy429b7s9w25nrkhp4lsz";
       type = "gem";
     };
-    version = "0.109.0";
+    version = "0.110.0";
   };
   faraday = {
     dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"];
@@ -356,10 +366,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "104kn1lj55hifcpiw1x7x9slskvqmfanylcz3nj8acjgmri0av72";
+      sha256 = "1sfc7svf7h1ja6zmsq9f3ps6pg0q4hymphh6rk7ipmp7ygqjkii3";
       type = "gem";
     };
-    version = "2.3.0";
+    version = "2.3.1";
   };
   fastlane = {
     dependencies = ["CFPropertyList" "addressable" "artifactory" "aws-sdk-s3" "babosa" "colored" "commander" "dotenv" "emoji_regex" "excon" "faraday" "faraday-cookie_jar" "faraday_middleware" "fastimage" "gh_inspector" "google-apis-androidpublisher_v3" "google-apis-playcustomapp_v1" "google-cloud-env" "google-cloud-storage" "highline" "http-cookie" "json" "jwt" "mini_magick" "multipart-post" "naturally" "optparse" "plist" "rubyzip" "security" "simctl" "terminal-notifier" "terminal-table" "tty-screen" "tty-spinner" "word_wrap" "xcodeproj" "xcpretty" "xcpretty-travis-formatter"];
@@ -367,10 +377,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0g3rg730nf7fr4pjy7fpw19iwxng871mb1d85639fn1bmhma6j7v";
+      sha256 = "14ywmlipmryzdxzn4235ah67hy06wh5hf32jbs3a9j7byc2x1kx3";
       type = "gem";
     };
-    version = "2.219.0";
+    version = "2.220.0";
   };
   gh_inspector = {
     groups = ["default"];
@@ -394,15 +404,15 @@
     version = "0.54.0";
   };
   google-apis-core = {
-    dependencies = ["addressable" "googleauth" "httpclient" "mini_mime" "representable" "retriable" "rexml" "webrick"];
+    dependencies = ["addressable" "googleauth" "httpclient" "mini_mime" "representable" "retriable" "rexml"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1cly6ycryjhk15d60v3nqvhqpjk9f0nznnslbdnin90f5r54sbpd";
+      sha256 = "15ycm7al9dizabbqmri5xmiz8mbcci343ygb64ndbmr9n49p08a3";
       type = "gem";
     };
-    version = "0.11.2";
+    version = "0.11.3";
   };
   google-apis-iamcredentials_v1 = {
     dependencies = ["google-apis-core"];
@@ -432,10 +442,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1k432qgxf41c4m6d68rascm0gyj18r7ypmrnyzmxh7k7nh543awx";
+      sha256 = "13yvc9r8bhs16vq3fjc93qlffmq9p6zx97c9g1c3wh0jbrvwrs03";
       type = "gem";
     };
-    version = "0.29.0";
+    version = "0.31.0";
   };
   google-cloud-core = {
     dependencies = ["google-cloud-env" "google-cloud-errors"];
@@ -443,10 +453,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "00wfvdvdv9m4l5ydn6xp65n68mgmpqr3n09hzvxs7gp8fly3j17v";
+      sha256 = "0dagdfx3rnk9xplnj19gqpqn41fd09xfn8lp2p75psihhnj2i03l";
       type = "gem";
     };
-    version = "1.6.1";
+    version = "1.7.0";
   };
   google-cloud-env = {
     dependencies = ["faraday"];
@@ -464,10 +474,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0flpj7v196c3xsqx4yjb7rjcj8p0by4rhj6qf5zanw4p1i41ssf0";
+      sha256 = "056yw9cg771c1xqvw15wpdfdw9lz3m13fh5b6a3p1c9xaq7jwkhb";
       type = "gem";
     };
-    version = "1.3.1";
+    version = "1.4.0";
   };
   google-cloud-storage = {
     dependencies = ["addressable" "digest-crc" "google-apis-iamcredentials_v1" "google-apis-storage_v1" "google-cloud-core" "googleauth" "mini_mime"];
@@ -475,10 +485,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0033bi8qwm0ksxsv5zhz4nzwsiaapq3xk79z8f8rx3v09vdap07j";
+      sha256 = "0xpb3s7zr7g647xg66y2mavdargk5ixsfbfdmi4m2jc3khdd0hxm";
       type = "gem";
     };
-    version = "1.45.0";
+    version = "1.47.0";
   };
   googleauth = {
     dependencies = ["faraday" "jwt" "multi_json" "os" "signet"];
@@ -537,20 +547,21 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0r9jmjhg2ly3l736flk7r2al47b5c8cayh0gqkq0yhjqzc9a6zhq";
+      sha256 = "0b4qsi8gay7ncmigr0pnbxyb17y3h8kavdyhsh7nrlqwr35vb60q";
       type = "gem";
     };
-    version = "2.7.1";
+    version = "2.7.2";
   };
   jwt = {
+    dependencies = ["base64"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "16z11alz13vfc4zs5l3fk6n51n2jw9lskvc4h4prnww0y797qd87";
+      sha256 = "02m3vza49pb9dirwpn8vmzbcypi3fc6l3a9dh253jwm1121g7ajb";
       type = "gem";
     };
-    version = "2.7.1";
+    version = "2.8.1";
   };
   mini_magick = {
     groups = ["default"];
@@ -587,10 +598,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0lgyysrpl50wgcb9ahg29i4p01z0irb3p9lirygma0kkfr5dgk9x";
+      sha256 = "1033p35166d9p97y4vajbbvr13pmkk9zwn7sylxpmk9jrpk8ri67";
       type = "gem";
     };
-    version = "2.3.0";
+    version = "2.4.0";
   };
   nanaimo = {
     groups = ["default"];
@@ -612,6 +623,16 @@
     };
     version = "2.2.1";
   };
+  nkf = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09piyp2pd74klb9wcn0zw4mb5l0k9wzwppxggxi1yi95l2ym3hgv";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
   optparse = {
     groups = ["default"];
     platforms = [];
@@ -647,20 +668,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1bni4qjrsh2q49pnmmd6if4iv3ak36bd2cckrs6npl111n769k9m";
+      sha256 = "14y4vzjwf5gp0mqgs880kis0k7n2biq8i6ci6q2n315kichl1hvj";
       type = "gem";
     };
-    version = "5.0.4";
+    version = "5.0.5";
   };
   rake = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1ilr853hawi09626axx0mps4rkkmxcs54mapz9jnqvpnlwd3wsmy";
+      sha256 = "17850wcwkgi30p7yqh60960ypn7yibacjjha0av78zaxwvd3ijs6";
       type = "gem";
     };
-    version = "13.1.0";
+    version = "13.2.1";
   };
   representable = {
     dependencies = ["declarative" "trailblazer-option" "uber"];
@@ -728,10 +749,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1ryjxs0j66wrbky2c08yf0mllwalvpg12rpxzbdx2rdhj3cbrlxa";
+      sha256 = "1drkm2wgjazwzj09db1szrllkag036bdvc3dr42fh1kpr877m5rs";
       type = "gem";
     };
-    version = "0.1.3";
+    version = "0.1.5";
   };
   signet = {
     dependencies = ["addressable" "faraday" "jwt" "multi_json"];
@@ -739,10 +760,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0fzakk5y7zzii76zlkynpp1c764mzkkfg4mpj18f5pf2xp1aikb6";
+      sha256 = "0cfxa11wy1nv9slmnzjczkdgld0gqizajsb03rliy53zylwkjzsk";
       type = "gem";
     };
-    version = "0.18.0";
+    version = "0.19.0";
   };
   simctl = {
     dependencies = ["CFPropertyList" "naturally"];
@@ -837,16 +858,6 @@
     };
     version = "2.5.0";
   };
-  webrick = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r";
-      type = "gem";
-    };
-    version = "1.8.1";
-  };
   word_wrap = {
     groups = ["default"];
     platforms = [];
@@ -863,10 +874,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "176ndahc5fssyx04q176vy6wngs1av4vrsdrkdpjij700hqll8hn";
+      sha256 = "1wpg4n7b8571j2h8h7v2kk8pr141rgf6m8mhk221k990fissrq56";
       type = "gem";
     };
-    version = "1.23.0";
+    version = "1.24.0";
   };
   xcpretty = {
     dependencies = ["rouge"];
diff --git a/pkgs/tools/admin/granted/default.nix b/pkgs/tools/admin/granted/default.nix
index 5b428505f82bc..4bf46875abb66 100644
--- a/pkgs/tools/admin/granted/default.nix
+++ b/pkgs/tools/admin/granted/default.nix
@@ -12,16 +12,16 @@
 
 buildGoModule rec {
   pname = "granted";
-  version = "0.22.0";
+  version = "0.23.0";
 
   src = fetchFromGitHub {
     owner = "common-fate";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-cN7c5oJAP6ZHjq8o6PZHv40fdjCJtkGbPS2Vh+EWDHw=";
+    sha256 = "sha256-CmLRmtih3XSzjizJpcXwWuJ6eRpMwiaXtH2zaf7E9gU=";
   };
 
-  vendorHash = "sha256-lVP32y+XCPaVp8FtnN/13wBXTPQDHupaVw0T/nWtmYo=";
+  vendorHash = "sha256-F8KkBeig0TofMRdg2puFjqPXB6TnUc15enodiE57pxA=";
 
   nativeBuildInputs = [ makeWrapper ];
 
diff --git a/pkgs/tools/admin/mycli/default.nix b/pkgs/tools/admin/mycli/default.nix
index b0ab1f890705b..36fc0ff4a3b39 100644
--- a/pkgs/tools/admin/mycli/default.nix
+++ b/pkgs/tools/admin/mycli/default.nix
@@ -8,11 +8,11 @@ with python3.pkgs;
 
 buildPythonApplication rec {
   pname = "mycli";
-  version = "1.27.1";
+  version = "1.27.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-6fUno+YZLnuH/ntwiqO9Wx63rDSJwcFZVn5f9cmMqJk=";
+    sha256 = "sha256-0R2k5hRkAJbqgGZEPXWUb48oFxTKMKiQZckf3F+VC3I=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/tools/admin/pgadmin/default.nix b/pkgs/tools/admin/pgadmin/default.nix
index 31093f0497b41..35f633145a4d5 100644
--- a/pkgs/tools/admin/pgadmin/default.nix
+++ b/pkgs/tools/admin/pgadmin/default.nix
@@ -9,30 +9,53 @@
 , yarn
 , prefetch-yarn-deps
 , nodejs
+, stdenv
 , server-mode ? true
 }:
 
 let
   pname = "pgadmin";
-  version = "8.4";
-  yarnHash = "sha256-Wizgb3WgNPYOLytEj7hBVMV/U3RqW9vhNnhQU4k+j+8=";
+  version = "8.5";
+  yarnHash = "sha256-VLf8GRJ2IIcrfBqdgT2uZG3kOEt0pd7Cksm+tdrQogA=";
 
   src = fetchFromGitHub {
     owner = "pgadmin-org";
     repo = "pgadmin4";
     rev = "REL-${lib.versions.major version}_${lib.versions.minor version}";
-    hash = "sha256-kj/a1JjSDFnLY/UQNBqYdhs3J5wi0mlDyJ1jD/L12FM=";
+    hash = "sha256-D/8tiVL2DwxvDiSqHeOF1P/yRRniZY39TyUfibrfAOo=";
   };
 
   # keep the scope, as it is used throughout the derivation and tests
   # this also makes potential future overrides easier
-  pythonPackages = python3.pkgs.overrideScope (final: prev: rec { });
+  pythonPackages = python3.pkgs.overrideScope (final: prev: rec {
+    # Flask 5.4.3 introduces an CSRF error which makes it impossible to login
+    # So either we downgrade flask here or use "WTF_CSRF_ENABLED = false" in the
+    # module config to disable CSRF.
+    flask-security-too = prev.flask-security-too.overridePythonAttrs (oldAttrs: rec {
+      version = "5.4.1";
+      src = oldAttrs.src.override {
+        inherit version;
+        hash = "sha256-Ay7+gk+zuUlXtw0LDdsnvSa22z+yE6VR1guu9QmiFvw=";
+      };
+    });
+  });
 
   offlineCache = fetchYarnDeps {
     yarnLock = ./yarn.lock;
     hash = yarnHash;
   };
 
+  # don't bother to test kerberos authentication
+  # skip tests on macOS which fail due to an error in keyring, see https://github.com/NixOS/nixpkgs/issues/281214
+  skippedTests = builtins.concatStringsSep "," (
+    [ "browser.tests.test_kerberos_with_mocking" ]
+    ++ lib.optionals stdenv.isDarwin [
+      "browser.server_groups.servers.tests.test_all_server_get"
+      "browser.server_groups.servers.tests.test_check_connect"
+      "browser.server_groups.servers.tests.test_check_ssh_mock_connect"
+      "browser.server_groups.servers.tests.test_is_password_saved"
+    ]
+  );
 in
 
 pythonPackages.buildPythonApplication rec {
@@ -217,9 +240,7 @@ pythonPackages.buildPythonApplication rec {
     substituteInPlace regression/runtests.py --replace-fail "builtins.SERVER_MODE = None" "builtins.SERVER_MODE = False"
 
     ## Browser test ##
-
-    # don't bother to test kerberos authentication
-    python regression/runtests.py --pkg browser --exclude browser.tests.test_kerberos_with_mocking
+    python regression/runtests.py --pkg browser --exclude ${skippedTests}
 
     ## Reverse engineered SQL test ##
 
@@ -239,7 +260,7 @@ pythonPackages.buildPythonApplication rec {
       This should NOT be used in combination with the `pgadmin4-desktopmode` package as they will interfere.
       '' else ''
       This version is build with SERVER_MODE set to False. It will require access to `~/.pgadmin/`. This version is suitable
-      for single-user deployment or where access to `/var/lib/pgadmin` cannot be granted or the NixOS module cannot be used.
+      for single-user deployment or where access to `/var/lib/pgadmin` cannot be granted or the NixOS module cannot be used (e.g. on MacOS).
       This should NOT be used in combination with the NixOS module `pgadmin` as they will interfere.
       ''}
     '';
@@ -248,5 +269,6 @@ pythonPackages.buildPythonApplication rec {
     changelog = "https://www.pgadmin.org/docs/pgadmin4/latest/release_notes_${lib.versions.major version}_${lib.versions.minor version}.html";
     maintainers = with maintainers; [ gador ];
     mainProgram = "pgadmin4";
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/admin/pgadmin/yarn.lock b/pkgs/tools/admin/pgadmin/yarn.lock
index 1acf9a14a07c7..9da02d0b2e9b5 100644
--- a/pkgs/tools/admin/pgadmin/yarn.lock
+++ b/pkgs/tools/admin/pgadmin/yarn.lock
@@ -1735,10 +1735,10 @@
     "@codemirror/view" "^6.0.0"
     "@lezer/common" "^1.1.0"
 
-"@codemirror/lang-sql@^6.5.5":
-  version "6.5.5"
-  resolved "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.5.tgz#85619f4ea6738c07c0241b19c62d8ef86678e672"
-  integrity sha512-DvOaP2RXLb2xlxJxxydTFfwyYw5YDqEFea6aAfgh9UH0kUD6J1KFZ0xPgPpw1eo/5s2w3L6uh5PVR7GM23GxkQ==
+"@codemirror/lang-sql@^6.6.2":
+  version "6.6.2"
+  resolved "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.6.2.tgz#ad5bcbeb4552957a32267219985b00c583874a17"
+  integrity sha512-ZVt7AHflRDFVwxSq7nnj1pko9yR6wKFDtc6Ln7zUs8RX34v5sgVxy3d2lQfORhMPVblEJLaugn+sjwRmAFWNIg==
   dependencies:
     "@codemirror/autocomplete" "^6.0.0"
     "@codemirror/language" "^6.0.0"
@@ -3783,12 +3783,12 @@ axios-mock-adapter@^1.17.0:
     fast-deep-equal "^3.1.3"
     is-buffer "^2.0.5"
 
-axios@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
-  integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
+axios@^1.6.8:
+  version "1.6.8"
+  resolved "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66"
+  integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==
   dependencies:
-    follow-redirects "^1.15.0"
+    follow-redirects "^1.15.6"
     form-data "^4.0.0"
     proxy-from-env "^1.1.0"
 
@@ -6447,10 +6447,10 @@ flatted@^3.1.0:
   resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
   integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
 
-follow-redirects@^1.15.0:
-  version "1.15.2"
-  resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
-  integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
+follow-redirects@^1.15.6:
+  version "1.15.6"
+  resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
+  integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
 
 for-each@^0.3.3:
   version "0.3.3"
diff --git a/pkgs/tools/admin/qovery-cli/default.nix b/pkgs/tools/admin/qovery-cli/default.nix
index bbfcbbe6548a9..ae0690e56c7a0 100644
--- a/pkgs/tools/admin/qovery-cli/default.nix
+++ b/pkgs/tools/admin/qovery-cli/default.nix
@@ -1,27 +1,26 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
-, installShellFiles
-, qovery-cli
-, testers
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+  qovery-cli,
+  testers,
 }:
 
 buildGoModule rec {
   pname = "qovery-cli";
-  version = "0.86.2";
+  version = "0.87.0";
 
   src = fetchFromGitHub {
     owner = "Qovery";
     repo = "qovery-cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AUrN5T6Z4T0WLsBwv/zXb9CSrwGCAV5nh+42MktRxvo=";
+    hash = "sha256-JUyhVq3xMPV9s4OCfkKgCnSMjztYDPJgS4A+jJOZofE=";
   };
 
   vendorHash = "sha256-Lwg3PFmSipaaYtu88c1qI/Ws50TQOqEu4mSuxcpx3zI=";
 
-  nativeBuildInputs = [
-    installShellFiles
-  ];
+  nativeBuildInputs = [ installShellFiles ];
 
   postInstall = ''
     installShellCompletion --cmd ${pname} \
diff --git a/pkgs/tools/admin/syft/default.nix b/pkgs/tools/admin/syft/default.nix
index 33951c4ab9b44..7735f8951e547 100644
--- a/pkgs/tools/admin/syft/default.nix
+++ b/pkgs/tools/admin/syft/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "syft";
-  version = "1.1.1";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "anchore";
     repo = "syft";
     rev = "refs/tags/v${version}";
-    hash = "sha256-75puiKfXp8vS9iiSk6R85RBn9xlQp9jk51ZNBeJXc/U=";
+    hash = "sha256-HlV+DeLI6/vYAYkp0ZM7z9uWC+nZLso6xlvCQJ2Imjg=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
@@ -28,7 +28,7 @@ buildGoModule rec {
   # hash mismatch with darwin
   proxyVendor = true;
 
-  vendorHash = "sha256-AHzKmitIUw0CqBU2Xinb6UVnlZB+2ED85uqGUFonkWM=";
+  vendorHash = "sha256-yXl8f3f3XO8o80PkX6hS/12p80z4LczghdmY1Elp0aE=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/archivers/afio/default.nix b/pkgs/tools/archivers/afio/default.nix
index d321bd44985d8..4f01c1c58ba6c 100644
--- a/pkgs/tools/archivers/afio/default.nix
+++ b/pkgs/tools/archivers/afio/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub } :
+{ lib, stdenv, fetchFromGitHub, fetchpatch } :
 
 stdenv.mkDerivation rec {
   version = "2.5.2";
@@ -11,11 +11,20 @@ stdenv.mkDerivation rec {
     sha256 = "1vbxl66r5rp5a1qssjrkfsjqjjgld1cq57c871gd0m4qiq9rmcfy";
   };
 
-  /*
-   * A patch to simplify the installation and for removing the
-   * hard coded dependency on GCC.
-   */
-  patches = [ ./0001-makefile-fix-installation.patch ];
+  patches = [
+    /*
+     * A patch to simplify the installation and for removing the
+     * hard coded dependency on GCC.
+     */
+    ./0001-makefile-fix-installation.patch
+
+    # fix darwin build (include headers)
+    (fetchpatch {
+      url = "https://github.com/kholtman/afio/pull/18/commits/a726614f99913ced08f6ae74091c56969d5db210.patch";
+      name = "darwin-headers.patch";
+      hash = "sha256-pK8mN29fC2mL4B69Fv82dWFIQMGwquyl825OBDTxzpo=";
+    })
+  ];
 
   installFlags = [ "DESTDIR=$(out)" ];
 
diff --git a/pkgs/tools/archivers/atool/default.nix b/pkgs/tools/archivers/atool/default.nix
index 8303a1b4277b0..daeaec9de3b2c 100644
--- a/pkgs/tools/archivers/atool/default.nix
+++ b/pkgs/tools/archivers/atool/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     description = "Archive command line helper";
     platforms = lib.platforms.unix;
     license = lib.licenses.gpl3;
+    mainProgram = "atool";
   };
 }
diff --git a/pkgs/tools/audio/botamusique/default.nix b/pkgs/tools/audio/botamusique/default.nix
index 5ad13da038941..86cb6e2229455 100644
--- a/pkgs/tools/audio/botamusique/default.nix
+++ b/pkgs/tools/audio/botamusique/default.nix
@@ -151,7 +151,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/azlux/botamusique";
     license = licenses.mit;
     platforms = platforms.all;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "botamusique";
   };
 }
diff --git a/pkgs/tools/audio/dl-librescore/default.nix b/pkgs/tools/audio/dl-librescore/default.nix
index 75a35a02beb21..3f9a652bde47e 100644
--- a/pkgs/tools/audio/dl-librescore/default.nix
+++ b/pkgs/tools/audio/dl-librescore/default.nix
@@ -8,13 +8,13 @@
 
 buildNpmPackage rec {
   pname = "dl-librescore";
-  version = "0.35.1";
+  version = "0.35.7";
 
   src = fetchFromGitHub {
     owner = "LibreScore";
     repo = "dl-librescore";
     rev = "v${version}";
-    hash = "sha256-W/55Bbq5yiocNLOU1+j1TwkGawyF8sObtMmPW3ph35A=";
+    hash = "sha256-g/dOQj2S9iUmN3Ohj7RPBpSk/4N9a39qY+/UIbsKDf4=";
   };
 
   npmDepsHash = "sha256-Boa/WnptJYJNRdcLgua5GmLT2H9tBpZR+vvAFZC1s4k=";
diff --git a/pkgs/tools/audio/spotdl/default.nix b/pkgs/tools/audio/spotdl/default.nix
index f4a7e207bef3e..e80ee6773106e 100644
--- a/pkgs/tools/audio/spotdl/default.nix
+++ b/pkgs/tools/audio/spotdl/default.nix
@@ -9,24 +9,24 @@ let
   python = python3;
 in python.pkgs.buildPythonApplication rec {
   pname = "spotdl";
-  version = "4.2.4";
+  version = "4.2.5";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "spotDL";
     repo = "spotify-downloader";
     rev = "refs/tags/v${version}";
-    hash = "sha256-U0UA94t7WdCeU9Y86rcnT8BzXVx8ryhD3MTJxmNBYcc=";
+    hash = "sha256-vxMhFs2mLbVQndlC2UpeDP+M4pwU9Y4cZHbZ8y3vWbI=";
   };
 
-  nativeBuildInputs = with python.pkgs; [
+  build-system = with python.pkgs; [
     poetry-core
     pythonRelaxDepsHook
   ];
 
   pythonRelaxDeps = true;
 
-  propagatedBuildInputs = with python.pkgs; [
+  dependencies = with python.pkgs; [
     spotipy
     ytmusicapi
     pytube
@@ -43,10 +43,8 @@ in python.pkgs.buildPythonApplication rec {
     platformdirs
     pykakasi
     syncedlyrics
-    typing-extensions
     soundcloud-v2
     bandcamp-api
-    setuptools # for pkg_resources
   ] ++ python-slugify.optional-dependencies.unidecode;
 
   nativeCheckInputs = with python.pkgs; [
diff --git a/pkgs/tools/audio/tts/default.nix b/pkgs/tools/audio/tts/default.nix
index d761e4605190f..1d459e70c2e73 100644
--- a/pkgs/tools/audio/tts/default.nix
+++ b/pkgs/tools/audio/tts/default.nix
@@ -196,5 +196,6 @@ python.pkgs.buildPythonApplication rec {
     description = "Deep learning toolkit for Text-to-Speech, battle-tested in research and production";
     license = licenses.mpl20;
     maintainers = teams.tts.members;
+    broken = true; # added 2024-04-08
   };
 }
diff --git a/pkgs/tools/audio/whisper-ctranslate2/default.nix b/pkgs/tools/audio/whisper-ctranslate2/default.nix
index 7fd2959a9a791..ff74c8bffcb9f 100644
--- a/pkgs/tools/audio/whisper-ctranslate2/default.nix
+++ b/pkgs/tools/audio/whisper-ctranslate2/default.nix
@@ -5,7 +5,7 @@
 }:
 let
   pname = "whisper-ctranslate2";
-  version = "0.4.1";
+  version = "0.4.2";
 in
 python3.pkgs.buildPythonApplication {
   inherit pname version;
@@ -17,7 +17,7 @@ python3.pkgs.buildPythonApplication {
     owner = "Softcatala";
     repo = "whisper-ctranslate2";
     rev = version;
-    hash = "sha256-kFln/AqKjnEK5L9hOqGpyoRjNG+dagBIGrmq2C+OZOY=";
+    hash = "sha256-q8ofj/MVahBRmE9BSSN9EzadDqJVSxmdTMl53YhrKzY=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/tools/backup/restic/rest-server.nix b/pkgs/tools/backup/restic/rest-server.nix
index 62c31cd64ea76..bd99029278527 100644
--- a/pkgs/tools/backup/restic/rest-server.nix
+++ b/pkgs/tools/backup/restic/rest-server.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
 
 buildGoModule rec {
   pname = "restic-rest-server";
@@ -13,6 +13,8 @@ buildGoModule rec {
 
   vendorHash = "sha256-tD5ffIYULMBqu99l1xCL0RnLB9zNpwNPs1qVFqezUc8=";
 
+  passthru.tests.restic = nixosTests.restic-rest-server;
+
   meta = with lib; {
     changelog = "https://github.com/restic/rest-server/blob/${src.rev}/CHANGELOG.md";
     description = "A high performance HTTP server that implements restic's REST backend API";
diff --git a/pkgs/tools/backup/s3ql/default.nix b/pkgs/tools/backup/s3ql/default.nix
index e2e68109b8018..701fccabe4fae 100644
--- a/pkgs/tools/backup/s3ql/default.nix
+++ b/pkgs/tools/backup/s3ql/default.nix
@@ -1,36 +1,62 @@
-{ lib, fetchFromGitHub, python3Packages, sqlite, which }:
+{
+  lib,
+  fetchFromGitHub,
+  python3,
+  sqlite,
+  which,
+}:
 
-python3Packages.buildPythonApplication rec {
+python3.pkgs.buildPythonApplication rec {
   pname = "s3ql";
-  version = "4.0.0";
+  version = "5.1.3";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
-    rev = "refs/tags/release-${version}";
-    sha256 = "sha256-7N09b7JwMPliuyv2fEy1gQYaFCMSSvajOBPhNL3DQsg=";
+    owner = "s3ql";
+    repo = "s3ql";
+    rev = "refs/tags/s3ql-${version}";
+    hash = "sha256-8vGW0Kl6hDTY+9mTnm2S659PZ/9gl90d2tXxKIIFimo=";
   };
 
-  nativeCheckInputs = [ which ] ++ (with python3Packages; [ cython pytest pytest-trio ]);
-  propagatedBuildInputs = with python3Packages; [
-    sqlite apsw pycrypto requests defusedxml dugong
-    google-auth google-auth-oauthlib trio pyfuse3
+  build-system = with python3.pkgs; [ setuptools ];
+
+  nativeBuildInputs = [ which ] ++ (with python3.pkgs; [ cython ]);
+
+  propagatedBuildInputs = with python3.pkgs; [
+    apsw
+    cryptography
+    defusedxml
+    dugong
+    google-auth
+    google-auth-oauthlib
+    pyfuse3
+    requests
+    sqlite
+    trio
+  ];
+
+  nativeCheckInputs = with python3.pkgs; [
+    pytest-trio
+    pytestCheckHook
   ];
 
   preBuild = ''
-    ${python3Packages.python.pythonOnBuildForHost.interpreter} ./setup.py build_cython build_ext --inplace
+    ${python3.pkgs.python.pythonOnBuildForHost.interpreter} ./setup.py build_cython build_ext --inplace
   '';
 
-  checkPhase = ''
-    # Removing integration tests
-    rm tests/t{4,5,6}_*
-    pytest tests
+  preCheck = ''
+    export HOME=$(mktemp -d)
   '';
 
+  pythonImportsCheck = [ "s3ql" ];
+
+  pytestFlagsArray = [ "tests/" ];
+
   meta = with lib; {
     description = "A full-featured file system for online data storage";
     homepage = "https://github.com/s3ql/s3ql/";
-    license = licenses.gpl3;
+    changelog = "https://github.com/s3ql/s3ql/releases/tag/s3ql-${version}";
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ rushmorem ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/bluetooth/blueman/default.nix b/pkgs/tools/bluetooth/blueman/default.nix
index 962ad4b2e0f16..879a1689d01a0 100644
--- a/pkgs/tools/bluetooth/blueman/default.nix
+++ b/pkgs/tools/bluetooth/blueman/default.nix
@@ -8,11 +8,11 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "blueman";
-  version = "2.3.5";
+  version = "2.4";
 
   src = fetchurl {
     url = "https://github.com/blueman-project/blueman/releases/download/${version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-stIa/fd6Bs2G2vVAJAb30qU0WYF+KeC+vEkR1PDc/aE=";
+    sha256 = "sha256-Gfp3bpWQuy0w6pBcHJaCIyo0fX66qwqdSz1guv5J+uE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/compression/gzip/default.nix b/pkgs/tools/compression/gzip/default.nix
index b48e2696f09c8..baff7f0303874 100644
--- a/pkgs/tools/compression/gzip/default.nix
+++ b/pkgs/tools/compression/gzip/default.nix
@@ -68,5 +68,7 @@ stdenv.mkDerivation rec {
     platforms = lib.platforms.all;
 
     license = lib.licenses.gpl3Plus;
+
+    mainProgram = "gzip";
   };
 }
diff --git a/pkgs/tools/filesystems/ceph-csi/default.nix b/pkgs/tools/filesystems/ceph-csi/default.nix
index 29224aba38b78..5d0a4c5a53a92 100644
--- a/pkgs/tools/filesystems/ceph-csi/default.nix
+++ b/pkgs/tools/filesystems/ceph-csi/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "ceph-csi";
-  version = "3.10.2";
+  version = "3.11.0";
 
   nativeBuildInputs = [ go ];
   buildInputs = [ ceph ];
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     owner = "ceph";
     repo = "ceph-csi";
     rev = "v${version}";
-    sha256 = "sha256-nS5gLe64ubcUatUfPg1f7npLZ90koJcfiDbhidS93/8=";
+    sha256 = "sha256-EgHl74kJ6lTS3pqz/Hxh/2tpc1xiDNcJxzERwKops+A=";
   };
 
   preConfigure = ''
diff --git a/pkgs/tools/filesystems/garage/default.nix b/pkgs/tools/filesystems/garage/default.nix
index 520a6951941ad..311661a804e3c 100644
--- a/pkgs/tools/filesystems/garage/default.nix
+++ b/pkgs/tools/filesystems/garage/default.nix
@@ -49,7 +49,7 @@ let
     buildFeatures = [
       "kubernetes-discovery"
       "bundled-libs"
-      "sled"
+    ] ++ lib.optional (lib.versionOlder version "1.0") "sled" ++ [
       "metrics"
       "k2v"
       "telemetry-otlp"
@@ -65,7 +65,7 @@ let
       "k2v"
       "kubernetes-discovery"
       "bundled-libs"
-      "sled"
+    ] ++ lib.optional (lib.versionOlder version "1.0") "sled" ++ [
       "lmdb"
       "sqlite"
     ];
@@ -103,14 +103,23 @@ rec {
 
   garage_0_8 = garage_0_8_7;
 
-  garage_0_9_3 = generic {
-    version = "0.9.3";
-    sha256 = "sha256-NN2HoheSW2+SAFX71K12KTe0wpaBEwkwxvZDi0Bdx+8=";
-    cargoSha256 = "sha256-OabgWVMkccFFAtBHEf3z+MRVcWaO+NCk/pumEqdNNRs=";
+  garage_0_9_4 = generic {
+    version = "0.9.4";
+    sha256 = "sha256-2ZaxenwaVGYYUjUJaGgnGpZNQprQV9+Jns2sXM6cowk=";
+    cargoSha256 = "sha256-Cssls9csn6qribF+pAAagBydX9e9WTq4K/ehaLCWOOA=";
     broken = stdenv.isDarwin;
   };
 
-  garage_0_9 = garage_0_9_3;
+  garage_1_0_0 = generic {
+    version = "1.0.0";
+    sha256 = "sha256-5W5cXylFCrDup+HOOUVPWBJUSphOp8szgtpvRIv82b8=";
+    cargoSha256 = "sha256-tXO+Vk6bYpayNWi/y4sMtkn2EQ9wiwSAfn79Zbt28q0=";
+    broken = stdenv.isDarwin;
+  };
+
+  garage_0_9 = garage_0_9_4;
+
+  garage_1_x = garage_1_0_0;
 
-  garage = garage_0_9;
+  garage = garage_1_x;
 }
diff --git a/pkgs/tools/filesystems/hfsprogs/default.nix b/pkgs/tools/filesystems/hfsprogs/default.nix
index 2ac17286fb419..127050f025851 100644
--- a/pkgs/tools/filesystems/hfsprogs/default.nix
+++ b/pkgs/tools/filesystems/hfsprogs/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "HFS/HFS+ user space utils";
-    license = lib.licenses.apsl20;
+    license = lib.licenses.apple-psl20;
     platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/filesystems/ifuse/default.nix b/pkgs/tools/filesystems/ifuse/default.nix
index 8f2e1f2a6ffb0..7a4d2ec6023bd 100644
--- a/pkgs/tools/filesystems/ifuse/default.nix
+++ b/pkgs/tools/filesystems/ifuse/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.lgpl21Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "ifuse";
   };
 }
diff --git a/pkgs/tools/filesystems/irods/common.nix b/pkgs/tools/filesystems/irods/common.nix
index 27825fdcbeaca..33edc0e4a05ba 100644
--- a/pkgs/tools/filesystems/irods/common.nix
+++ b/pkgs/tools/filesystems/irods/common.nix
@@ -26,6 +26,7 @@
     "-DIRODS_LINUX_DISTRIBUTION_VERSION_MAJOR=1.0"
     "-DCPACK_GENERATOR=TGZ"
     "-DCMAKE_CXX_FLAGS=-I${lib.getDev libcxx}/include/c++/v1"
+    "-DPAM_LIBRARY=${pam}/lib/libpam.so"
   ];
 
   postPatch = ''
diff --git a/pkgs/tools/filesystems/irods/default.nix b/pkgs/tools/filesystems/irods/default.nix
index 0b25f45c910dc..ccae722059e9b 100644
--- a/pkgs/tools/filesystems/irods/default.nix
+++ b/pkgs/tools/filesystems/irods/default.nix
@@ -19,14 +19,14 @@ rec {
 
   # irods: libs and server package
   irods = stdenv.mkDerivation (finalAttrs: common // {
-    version = "4.3.0";
+    version = "4.3.1";
     pname = "irods";
 
     src = fetchFromGitHub {
       owner = "irods";
       repo = "irods";
       rev = finalAttrs.version;
-      sha256 = "sha256-rceDGFpfoFIByzDOtgNIo9JRoVd0syM21MjEKoZUQaE=";
+      sha256 = "sha256-gWgNY8+zD2lRCV5ydOTF0qAgZ1dlQSQKxtdw+U235vg=";
       fetchSubmodules = true;
     };
 
@@ -35,10 +35,10 @@ rec {
 
     postPatch = common.postPatch + ''
       patchShebangs ./test
-      substituteInPlace plugins/database/CMakeLists.txt --replace "COMMAND cpp" "COMMAND ${gcc.cc}/bin/cpp"
+      substituteInPlace plugins/database/CMakeLists.txt --replace-fail "COMMAND cpp" "COMMAND ${gcc.cc}/bin/cpp"
       for file in unit_tests/cmake/test_config/*.cmake
       do
-        substituteInPlace $file --replace "CATCH2}/include" "CATCH2}/include/catch2"
+        substituteInPlace $file --replace-quiet "CATCH2}/include" "CATCH2}/include/catch2"
       done
       export cmakeFlags="$cmakeFlags
         -DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath,$out/lib
@@ -46,7 +46,7 @@ rec {
         -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath,$out/lib
         "
 
-      substituteInPlace server/auth/CMakeLists.txt --replace SETUID ""
+      substituteInPlace server/auth/CMakeLists.txt --replace-fail SETUID ""
     '';
 
     meta = common.meta // {
@@ -57,14 +57,14 @@ rec {
 
   # icommands (CLI) package, depends on the irods package
   irods-icommands = stdenv.mkDerivation (finalAttrs: common // {
-    version = "4.3.0";
+    version = "4.3.1";
     pname = "irods-icommands";
 
     src = fetchFromGitHub {
       owner = "irods";
       repo = "irods_client_icommands";
       rev = finalAttrs.version;
-      sha256 = "sha256-90q1GPkoEUoiQXM6cA+DWwth7g8v93V471r9jm+l9aw=";
+      sha256 = "sha256-BjBg13KrCGRLOtGnp23qXOLudLctvu2gJ7wxHFjM5Ug=";
     };
 
     buildInputs = common.buildInputs ++ [ irods ];
diff --git a/pkgs/tools/filesystems/juicefs/default.nix b/pkgs/tools/filesystems/juicefs/default.nix
index 6f6dd4101597a..2a8cade877eb5 100644
--- a/pkgs/tools/filesystems/juicefs/default.nix
+++ b/pkgs/tools/filesystems/juicefs/default.nix
@@ -1,10 +1,12 @@
 { lib
-, buildGoModule
+, buildGo121Module
 , fetchFromGitHub
 , stdenv
 }:
 
-buildGoModule rec {
+# JuiceFS 1.1.2 doesn't build with Go 1.22. Fixed in upstream. This can be
+# reverted in future releases. https://github.com/juicedata/juicefs/issues/4339
+buildGo121Module rec {
   pname = "juicefs";
   version = "1.1.2";
 
diff --git a/pkgs/tools/filesystems/rmount/default.nix b/pkgs/tools/filesystems/rmount/default.nix
index ec4bb13927122..257db9af80f68 100644
--- a/pkgs/tools/filesystems/rmount/default.nix
+++ b/pkgs/tools/filesystems/rmount/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Luis-Hebendanz/rmount";
     description = "Remote mount utility which parses a json file";
     license = licenses.mit;
-    maintainers = [ maintainers.luis ];
+    maintainers = [ maintainers.qubasa ];
     platforms = platforms.linux;
     mainProgram = "rmount";
   };
diff --git a/pkgs/tools/filesystems/stratisd/default.nix b/pkgs/tools/filesystems/stratisd/default.nix
index 0f585f631878e..afbe1c9c7c580 100644
--- a/pkgs/tools/filesystems/stratisd/default.nix
+++ b/pkgs/tools/filesystems/stratisd/default.nix
@@ -27,18 +27,18 @@
 
 stdenv.mkDerivation rec {
   pname = "stratisd";
-  version = "3.6.6";
+  version = "3.6.7";
 
   src = fetchFromGitHub {
     owner = "stratis-storage";
     repo = pname;
     rev = "refs/tags/stratisd-v${version}";
-    hash = "sha256-zksMYPvbFKKYaLqdZql56D5rG+IBDMBJTTQK1RMyj4Q=";
+    hash = "sha256-cODi0YWAcnMs7bWu1oCtcZ0Wz9FAjBcoyam0G6GH7Xc=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit pname version src;
-    hash = "sha256-red7cjNwZrhQzfvh6Lev5CPWj8QihuVr7fIiHo9D3Jg=";
+    hash = "sha256-eCuCqFwGm7pslyKTwk2iX42omM3gFeXrAy/2ll+tJts=";
   };
 
   postPatch = ''
diff --git a/pkgs/tools/graphics/blockhash/default.nix b/pkgs/tools/graphics/blockhash/default.nix
index a58fcc4e8ec61..3638d34dc384e 100644
--- a/pkgs/tools/graphics/blockhash/default.nix
+++ b/pkgs/tools/graphics/blockhash/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
       Fan Gu and Xiamu Niu.
     '';
     license = licenses.mit;
-    maintainers = [ maintainers.infinisil ];
+    maintainers = [ ];
     platforms = platforms.unix;
     mainProgram = "blockhash";
   };
diff --git a/pkgs/tools/graphics/jpegexiforient/default.nix b/pkgs/tools/graphics/jpegexiforient/default.nix
index bdf2ce12e837b..f2f107d9b0d30 100644
--- a/pkgs/tools/graphics/jpegexiforient/default.nix
+++ b/pkgs/tools/graphics/jpegexiforient/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     # to be free since it's from IJG, the current maintainers of libjpeg
     license = licenses.free;
     platforms = platforms.all;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "jpegexiforient";
   };
 }
diff --git a/pkgs/tools/graphics/maim/default.nix b/pkgs/tools/graphics/maim/default.nix
index ce91e361a6eb1..57c50ce728aa6 100644
--- a/pkgs/tools/graphics/maim/default.nix
+++ b/pkgs/tools/graphics/maim/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "maim";
-  version = "5.7.4";
+  version = "5.8.0";
 
   src = fetchFromGitHub {
     owner = "naelstrof";
     repo = "maim";
     rev = "v${version}";
-    sha256 = "sha256-uFtiwaM3H09vfvz3wVvumbqkoZhLNJxONkMqqqrJBs4=";
+    sha256 = "sha256-/tZqSJnKe8GiffSz9VIFKuxMktRld+hA4ZWP4TZQrlg=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/pkgs/tools/graphics/netpbm/default.nix b/pkgs/tools/graphics/netpbm/default.nix
index 99aeb576939ef..e7cc5a6cfae5c 100644
--- a/pkgs/tools/graphics/netpbm/default.nix
+++ b/pkgs/tools/graphics/netpbm/default.nix
@@ -20,14 +20,14 @@ stdenv.mkDerivation {
   # Determine version and revision from:
   # https://sourceforge.net/p/netpbm/code/HEAD/log/?path=/advanced
   pname = "netpbm";
-  version = "11.5.3";
+  version = "11.6.0";
 
   outputs = [ "bin" "out" "dev" ];
 
   src = fetchsvn {
     url = "https://svn.code.sf.net/p/netpbm/code/advanced";
-    rev = "4867";
-    sha256 = "JCJW6BBdxoYWMpZoJp6ovHNqyuU4a1FIvjLB2poDGGM=";
+    rev = "4897";
+    sha256 = "2aTDM0aVfav2mnOLXj0HuTdbsY7EUH8ieBrXgaFU7FU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/graphics/vulkan-cts/default.nix b/pkgs/tools/graphics/vulkan-cts/default.nix
index 58444354666fe..670d2108f8209 100644
--- a/pkgs/tools/graphics/vulkan-cts/default.nix
+++ b/pkgs/tools/graphics/vulkan-cts/default.nix
@@ -39,13 +39,13 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "vulkan-cts";
-  version = "1.3.8.1";
+  version = "1.3.8.2";
 
   src = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "VK-GL-CTS";
     rev = "${finalAttrs.pname}-${finalAttrs.version}";
-    hash = "sha256-lDMaJjAusK+Hva4BZnrXNmuGdSL04rh1W9PYsjxF3c8=";
+    hash = "sha256-0Yyk7o5RSo1pzo1+oCi0TqEf62CLBURvZWgwELXDKKA=";
   };
 
   prePatch = ''
diff --git a/pkgs/tools/graphics/vulkan-cts/sources.nix b/pkgs/tools/graphics/vulkan-cts/sources.nix
index e0a197188d66d..d8dfdd6faaf6e 100644
--- a/pkgs/tools/graphics/vulkan-cts/sources.nix
+++ b/pkgs/tools/graphics/vulkan-cts/sources.nix
@@ -11,8 +11,8 @@ rec {
   glslang = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "glslang";
-    rev = "9fd0fcd737f1369e89fb3aa8b2e62bad57ac46c6";
-    hash = "sha256-A3IFW3kOuOGj4AfpdDfAHIySDLdIB9IK+wk8TSBcPrk=";
+    rev = "bada5c87ec6db4441db129d8506742c4a72bd610";
+    hash = "sha256-GayYjvJ935arbe4GUg8l6KhfImBCpqWRe8xSqlxXLYQ=";
   };
 
   jsoncpp = fetchFromGitHub {
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
index 2509659cf8ef9..f2b2b3b305112 100644
--- a/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ibus-m17n";
-  version = "1.4.28";
+  version = "1.4.29";
 
   src = fetchFromGitHub {
     owner = "ibus";
     repo = "ibus-m17n";
     rev = version;
-    sha256 = "sha256-3/AnytPIIi1Q2i/25rkqOZWgUCtouO+cS+TByp9neOI=";
+    sha256 = "sha256-KHAdGTlRdTNpSuYbT6rocbT9rSNhxCdt4Z6QSLlbBsg=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
index e01f8f8485a6c..a27c9082f7f0c 100644
--- a/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
@@ -13,13 +13,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "ibus-typing-booster";
-  version = "2.25.4";
+  version = "2.25.6";
 
   src = fetchFromGitHub {
     owner = "mike-fabian";
     repo = "ibus-typing-booster";
     rev = version;
-    hash = "sha256-uTq+/g2DtiftfQvNVYIKtARyxA9Y8LE6VCeGFcWs5SQ=";
+    hash = "sha256-HFC6VhlA3Kt1oZd1R5bOHRMQrNiNu4J0Op1uCKOXj9w=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config wrapGAppsHook gobject-introspection ];
diff --git a/pkgs/tools/llm/shell_gpt/default.nix b/pkgs/tools/llm/shell_gpt/default.nix
index 99ef7b3bf8996..4db72ae505864 100644
--- a/pkgs/tools/llm/shell_gpt/default.nix
+++ b/pkgs/tools/llm/shell_gpt/default.nix
@@ -6,12 +6,12 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "shell_gpt";
-  version = "1.4.0";
+  version = "1.4.3";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-r/xQRqnLJhGZORjYUaYWKjqY4fQCW4WKkE+n8k0VMbA=";
+    sha256 = "sha256-zSgWSC60ypOQ1IENcxObBezAfHosQWBD9ft06yh5iV4=";
   };
 
   nativeBuildInputs = with python3.pkgs; [
diff --git a/pkgs/tools/misc/aichat/default.nix b/pkgs/tools/misc/aichat/default.nix
index 69fc0891eea46..21cebfc7cb4b1 100644
--- a/pkgs/tools/misc/aichat/default.nix
+++ b/pkgs/tools/misc/aichat/default.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "aichat";
-  version = "0.14.0";
+  version = "0.15.0";
 
   src = fetchFromGitHub {
     owner = "sigoden";
     repo = "aichat";
     rev = "v${version}";
-    hash = "sha256-0VNFqfl1La6jSUE7IsS/pYIQGaNrAgSgiGUjo65pUR4=";
+    hash = "sha256-xts3/ySE/bEkof6QfVCSiT2gWXHAjdQTFoqrmtidZvs=";
   };
 
-  cargoHash = "sha256-zrX4e9Z8FgZvvNyyiw29Dr/0KO1uL20/+DUASyPjxjE=";
+  cargoHash = "sha256-8exPmH299smIE5lG5VidaWvwZud3bYhqFiH8zBTyJtY=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/tools/misc/apkeep/default.nix b/pkgs/tools/misc/apkeep/default.nix
index 2da292b815b6c..2b52ab1d788a3 100644
--- a/pkgs/tools/misc/apkeep/default.nix
+++ b/pkgs/tools/misc/apkeep/default.nix
@@ -5,18 +5,19 @@
 , openssl
 , pkg-config
 , Security
+, SystemConfiguration
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "apkeep";
-  version = "0.15.0";
+  version = "0.16.0";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-PikUb9D9duMATo9hJgjuZUK3WXUKfnCDWJBE/bJI92c=";
+    hash = "sha256-nPeXIzy9tYWeJrq1tIKXMILOjVnsAvsceY5dzz7+pYE=";
   };
 
-  cargoHash = "sha256-R58CzeI1Xho6kzjb9ktO7sr6TgM3Hf2VU0pK4hmb1v4=";
+  cargoHash = "sha256-0NyZmZ00zmGfndz47NMeh76SMmh0ap6ZfkKebX7pMfw=";
 
   prePatch = ''
     rm .cargo/config.toml
@@ -30,6 +31,7 @@ rustPlatform.buildRustPackage rec {
     openssl
   ] ++ lib.optionals stdenv.isDarwin [
     Security
+    SystemConfiguration
   ];
 
   meta = with lib; {
diff --git a/pkgs/tools/misc/archi/update.sh b/pkgs/tools/misc/archi/update.sh
index c374bf5a7906d..07d488637945b 100755
--- a/pkgs/tools/misc/archi/update.sh
+++ b/pkgs/tools/misc/archi/update.sh
@@ -12,14 +12,15 @@ if [[ "$latestVersion" == "$currentVersion" ]]; then
     exit 0
 fi
 
-hash_aarch64_darwin=$(nix-prefetch-url https://www.archimatetool.com/downloads/archi/$latestVersion/Archi-Mac-Silicon-$latestVersion.dmg)
-hash_x86_64_darwin=$(nix-prefetch-url https://www.archimatetool.com/downloads/archi/$latestVersion/Archi-Mac-$latestVersion.dmg)
-hash_x86_64_linux=$(nix-prefetch-url https://www.archimatetool.com/downloads/archi/$latestVersion/Archi-Linux64-$latestVersion.tgz)
-
-update-source-version archi 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" --system=aarch64-darwin
-update-source-version archi $latestVersion $hash_aarch64_darwin --system=aarch64-darwin
-update-source-version archi 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" --system=x86_64-darwin
-update-source-version archi $latestVersion $hash_x86_64_darwin --system=x86_64-darwin
-update-source-version archi 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" --system=x86_64-linux
-update-source-version archi $latestVersion $hash_x86_64_linux --system=x86_64-linux
+for i in \
+    "aarch64-darwin Archi-Mac-Silicon-$latestVersion.dmg" \
+    "x86_64-darwin Archi-Mac-$latestVersion.dmg" \
+    "x86_64-linux Archi-Linux64-$latestVersion.tgz"
+do
+    set -- $i
+    prefetch=$(nix-prefetch-url https://www.archimatetool.com/downloads/archi/$latestVersion/$2)
+    hash=$(nix-hash --type sha256 --to-sri $prefetch)
 
+    update-source-version archi 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" --system=$1
+    update-source-version archi $latestVersion $hash --system=$1
+done
diff --git a/pkgs/tools/misc/btdu/default.nix b/pkgs/tools/misc/btdu/default.nix
index 4debdae0df0b3..833d339277912 100644
--- a/pkgs/tools/misc/btdu/default.nix
+++ b/pkgs/tools/misc/btdu/default.nix
@@ -36,7 +36,7 @@ buildDubPackage rec {
     changelog = "https://github.com/CyberShadow/btdu/releases/tag/${src.rev}";
     license = licenses.gpl2Only;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ atila ];
+    maintainers = with maintainers; [ atila cybershadow ];
     mainProgram = "btdu";
   };
 }
diff --git a/pkgs/tools/misc/btrfs-assistant/default.nix b/pkgs/tools/misc/btrfs-assistant/default.nix
index 474a5e5dc5b4e..d3bdc74980228 100644
--- a/pkgs/tools/misc/btrfs-assistant/default.nix
+++ b/pkgs/tools/misc/btrfs-assistant/default.nix
@@ -7,24 +7,22 @@
 , coreutils
 , git
 , pkg-config
-, qtbase
-, qtsvg
-, qttools
+, qt6
 , snapper
 , util-linux
-, wrapQtAppsHook
 , enableSnapper ? true
+, nix-update-script
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "btrfs-assistant";
-  version = "1.9";
+  version = "2.0";
 
   src = fetchFromGitLab {
     owner = "btrfs-assistant";
     repo = "btrfs-assistant";
     rev = finalAttrs.version;
-    hash = "sha256-a854WI8f9/G/BRU5rn1FKC6WRZyXNYsUL4p258C8ppw=";
+    hash = "sha256-nE8Vsc0leXWhbrjMgJDef6jl9MqdojRniGcvUmrQNUQ=";
   };
 
   nativeBuildInputs = [
@@ -35,12 +33,13 @@ stdenv.mkDerivation (finalAttrs: {
 
   buildInputs = [
     btrfs-progs
-    qtbase
-    qtsvg
-    qttools
+    qt6.qtbase
+    qt6.qtsvg
+    qt6.qttools
+    qt6.qtwayland
   ];
 
-  propagatedBuildInputs = [ wrapQtAppsHook ];
+  propagatedBuildInputs = [ qt6.wrapQtAppsHook ];
 
   prePatch = ''
     substituteInPlace src/util/System.cpp \
@@ -78,6 +77,8 @@ stdenv.mkDerivation (finalAttrs: {
       "--prefix PATH : ${runtimeDeps}"
     ];
 
+  passthru.updateScript = nix-update-script { };
+
   meta = {
     description = "A GUI management tool to make managing a Btrfs filesystem easier";
     homepage = "https://gitlab.com/btrfs-assistant/btrfs-assistant";
diff --git a/pkgs/tools/misc/calamares-nixos-extensions/default.nix b/pkgs/tools/misc/calamares-nixos-extensions/default.nix
index 6bca9abeb9f6e..2b8965544ab3d 100644
--- a/pkgs/tools/misc/calamares-nixos-extensions/default.nix
+++ b/pkgs/tools/misc/calamares-nixos-extensions/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "calamares-nixos-extensions";
-  version = "0.3.14";
+  version = "0.3.15";
 
   src = fetchFromGitHub {
     owner = "NixOS";
     repo = "calamares-nixos-extensions";
     rev = version;
-    hash = "sha256-wRKZ80yU3WsUkGn5/ft4wDR22s39/WTxTrjFE0/9mlc=";
+    hash = "sha256-PZQjrteLWcInXIavuANHfzfl9gOXATWtIlDUp45j5Ao=";
   };
 
   installPhase = ''
diff --git a/pkgs/tools/misc/calamares/default.nix b/pkgs/tools/misc/calamares/default.nix
index 6b9b50144708c..87f81724eaa5a 100644
--- a/pkgs/tools/misc/calamares/default.nix
+++ b/pkgs/tools/misc/calamares/default.nix
@@ -7,12 +7,12 @@
 
 mkDerivation rec {
   pname = "calamares";
-  version = "3.2.62";
+  version = "3.3.3";
 
   # release including submodule
   src = fetchurl {
     url = "https://github.com/calamares/calamares/releases/download/v${version}/${pname}-${version}.tar.gz";
-    sha256 = "sha256-oPvOwqQ4aTdT/BdCIDVhGa1624orGcMXUYqhywJdbdA=";
+    sha256 = "sha256-XCp2Qc2y9eF2Z0BqfTtzUkf6860KzHl1lZE7kiHZbQM=";
   };
 
   patches = lib.optionals nixos-extensions [
diff --git a/pkgs/tools/misc/calamares/nixos-extensions-paths.patch b/pkgs/tools/misc/calamares/nixos-extensions-paths.patch
index 4e0012160e9fb..292310e314f9a 100644
--- a/pkgs/tools/misc/calamares/nixos-extensions-paths.patch
+++ b/pkgs/tools/misc/calamares/nixos-extensions-paths.patch
@@ -1,21 +1,20 @@
 diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp
-index de709156f..a0b6c5faf 100644
+index e0491e5f9..faf272016 100644
 --- a/src/calamares/main.cpp
 +++ b/src/calamares/main.cpp
-@@ -131,6 +132,8 @@ main( int argc, char* argv[] )
-     // TODO: umount anything in /tmp/calamares-... as an emergency save function
+@@ -132,6 +132,7 @@ main( int argc, char* argv[] )
  #endif
  
-+    CalamaresUtils::setNixosDirs();
-+
-     bool is_debug = handle_args( a );
- 
- #ifdef WITH_KF5DBus
+     std::unique_ptr< KDSingleApplication > possiblyUnique;
++    Calamares::setNixosDirs();
+     const bool is_debug = handle_args( a );
+     if ( !is_debug )
+     {
 diff --git a/src/libcalamares/utils/Dirs.cpp b/src/libcalamares/utils/Dirs.cpp
-index f333d6e64..6118fb412 100644
+index c42768a08..bac98645a 100644
 --- a/src/libcalamares/utils/Dirs.cpp
 +++ b/src/libcalamares/utils/Dirs.cpp
-@@ -115,6 +116,14 @@ setXdgDirs()
+@@ -114,6 +114,14 @@ setXdgDirs()
      s_haveExtraDirs = !( s_extraConfigDirs.isEmpty() && s_extraDataDirs.isEmpty() );
  }
  
@@ -31,7 +30,7 @@ index f333d6e64..6118fb412 100644
  extraConfigDirs()
  {
 diff --git a/src/libcalamares/utils/Dirs.h b/src/libcalamares/utils/Dirs.h
-index 445cbe1f1..da869d446 100644
+index d0edd7a4f..26bd16b4e 100644
 --- a/src/libcalamares/utils/Dirs.h
 +++ b/src/libcalamares/utils/Dirs.h
 @@ -50,6 +50,9 @@ DLLEXPORT bool isAppDataDirOverridden();
diff --git a/pkgs/tools/misc/calamares/nonroot.patch b/pkgs/tools/misc/calamares/nonroot.patch
index 7843f45f284ce..24e47574142f3 100644
--- a/pkgs/tools/misc/calamares/nonroot.patch
+++ b/pkgs/tools/misc/calamares/nonroot.patch
@@ -1,8 +1,8 @@
 diff --git a/src/libcalamares/utils/Runner.cpp b/src/libcalamares/utils/Runner.cpp
-index c7146c2d7..e165d9a8f 100644
+index 632f32028..fe9052449 100644
 --- a/src/libcalamares/utils/Runner.cpp
 +++ b/src/libcalamares/utils/Runner.cpp
-@@ -140,13 +140,13 @@ Calamares::Utils::Runner::run()
+@@ -137,13 +137,13 @@ Calamares::Utils::Runner::run()
      }
      if ( m_location == RunLocation::RunInTarget )
      {
@@ -21,10 +21,10 @@ index c7146c2d7..e165d9a8f 100644
  
      if ( m_output )
 diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py
-index a3318d1a0..5fbe202fd 100644
+index 4202639f3..de2556b91 100644
 --- a/src/modules/mount/main.py
 +++ b/src/modules/mount/main.py
-@@ -152,7 +152,8 @@ def mount_partition(root_mount_point, partition, partitions):
+@@ -235,7 +235,8 @@ def mount_partition(root_mount_point, partition, partitions, mount_options, moun
  
      # Ensure that the created directory has the correct SELinux context on
      # SELinux-enabled systems.
@@ -34,7 +34,7 @@ index a3318d1a0..5fbe202fd 100644
      try:
          subprocess.call(['chcon', '--reference=' + raw_mount_point, mount_point])
      except FileNotFoundError as e:
-@@ -193,13 +194,13 @@ def mount_partition(root_mount_point, partition, partitions):
+@@ -278,13 +279,13 @@ def mount_partition(root_mount_point, partition, partitions, mount_options, moun
          for s in btrfs_subvolumes:
              if not s["subvolume"]:
                  continue
@@ -52,10 +52,10 @@ index a3318d1a0..5fbe202fd 100644
          device = partition["device"]
  
 diff --git a/src/modules/welcome/checker/GeneralRequirements.cpp b/src/modules/welcome/checker/GeneralRequirements.cpp
-index ca7219ca4..6ac682ba4 100644
+index a58f3df83..b66576b09 100644
 --- a/src/modules/welcome/checker/GeneralRequirements.cpp
 +++ b/src/modules/welcome/checker/GeneralRequirements.cpp
-@@ -371,10 +371,34 @@ GeneralRequirements::checkEnoughStorage( qint64 requiredSpace )
+@@ -431,10 +431,35 @@ GeneralRequirements::checkEnoughStorage( qint64 requiredSpace )
      cWarning() << "GeneralRequirements is configured without libparted.";
      return false;
  #else
@@ -88,9 +88,10 @@ index ca7219ca4..6ac682ba4 100644
 +
 +    return false;
 +}
- 
++
  bool
  GeneralRequirements::checkEnoughRam( qint64 requiredRam )
+ {
 diff --git a/src/modules/welcome/checker/GeneralRequirements.h b/src/modules/welcome/checker/GeneralRequirements.h
 index b6646da11..ea27324fa 100644
 --- a/src/modules/welcome/checker/GeneralRequirements.h
diff --git a/pkgs/tools/misc/calamares/supportedlocale.patch b/pkgs/tools/misc/calamares/supportedlocale.patch
index ab161ffdee7c2..859018d4947ff 100644
--- a/pkgs/tools/misc/calamares/supportedlocale.patch
+++ b/pkgs/tools/misc/calamares/supportedlocale.patch
@@ -1,5 +1,5 @@
 diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp
-index 2357019a7..75b547430 100644
+index 54ff5eb64..1a2b98c9c 100644
 --- a/src/modules/locale/Config.cpp
 +++ b/src/modules/locale/Config.cpp
 @@ -48,7 +48,7 @@ loadLocales( const QString& localeGenPath )
diff --git a/pkgs/tools/misc/calamares/uimod.patch b/pkgs/tools/misc/calamares/uimod.patch
index 5a6ec6cdeea2e..f45f68f9a5b30 100644
--- a/pkgs/tools/misc/calamares/uimod.patch
+++ b/pkgs/tools/misc/calamares/uimod.patch
@@ -1,33 +1,33 @@
 diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp
-index 6c5f9ad16..24d75e07b 100644
+index 23cb194c4..8714937f6 100644
 --- a/src/modules/finished/FinishedPage.cpp
 +++ b/src/modules/finished/FinishedPage.cpp
-@@ -71,7 +71,10 @@ FinishedPage::retranslate()
+@@ -74,7 +74,10 @@ FinishedPage::retranslate()
          {
              ui->mainText->setText( tr( "<h1>All done.</h1><br/>"
                                         "%1 has been set up on your computer.<br/>"
--                                       "You may now start using your new system." )
+-                                       "You may now start using your new system.", "@info" )
 +                                       "You may now start using your new system.<br/>"
 +                                       "You can change every setting later except the bootloader.<br/>"
 +                                       "Check the <a href=\"https://nixos.org/manual/nixos/stable/\">manual</a> for instructions on how to install software, upgrade the system or enable services.<br/>"
-+                                       "You can find ways to get in touch with the <a href=\"https://nixos.org/community/\">community on the website!</a>")
++                                       "You can find ways to get in touch with the <a href=\"https://nixos.org/community/\">community on the website!</a>", "@info" )
                                         .arg( branding->versionedName() ) );
              ui->restartCheckBox->setToolTip( tr( "<html><head/><body>"
                                                   "<p>When this box is checked, your system will "
-@@ -84,7 +87,10 @@ FinishedPage::retranslate()
+@@ -87,7 +90,10 @@ FinishedPage::retranslate()
              ui->mainText->setText( tr( "<h1>All done.</h1><br/>"
                                         "%1 has been installed on your computer.<br/>"
                                         "You may now restart into your new system, or continue "
--                                       "using the %2 Live environment." )
+-                                       "using the %2 Live environment.", "@info" )
 +                                       "using the %2 Live environment.<br/>"
 +                                       "You can change every setting later except the bootloader.<br/>"
 +                                       "Check the <a href=\"https://nixos.org/manual/nixos/stable/\">manual</a> for instructions on how to install software, upgrade the system or enable services.<br/>"
-+                                       "You can find ways to get in touch with the <a href=\"https://nixos.org/community/\">community on the website!</a>")
++                                       "You can find ways to get in touch with the <a href=\"https://nixos.org/community/\">community on the website!</a>", "@info" )
                                         .arg( branding->versionedName(), branding->productName() ) );
              ui->restartCheckBox->setToolTip( tr( "<html><head/><body>"
                                                   "<p>When this box is checked, your system will "
 diff --git a/src/modules/packagechooser/PackageChooserPage.cpp b/src/modules/packagechooser/PackageChooserPage.cpp
-index 721329c1b..164b9945e 100644
+index 44a570d2f..4dc931bf3 100644
 --- a/src/modules/packagechooser/PackageChooserPage.cpp
 +++ b/src/modules/packagechooser/PackageChooserPage.cpp
 @@ -52,6 +52,7 @@ PackageChooserPage::currentChanged( const QModelIndex& index )
@@ -39,14 +39,14 @@ index 721329c1b..164b9945e 100644
          ui->productDescription->setText( m_introduction.description.get() );
      }
 diff --git a/src/modules/packagechooser/page_package.ui b/src/modules/packagechooser/page_package.ui
-index d021b08b3..fecfa3060 100644
+index 2ab5b7f13..bed462069 100644
 --- a/src/modules/packagechooser/page_package.ui
 +++ b/src/modules/packagechooser/page_package.ui
-@@ -38,19 +38,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
+@@ -37,20 +37,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
+       </widget>
       </item>
       <item>
 -      <layout class="QVBoxLayout" name="verticalLayout" stretch="1,30,1">
-+      <layout class="QVBoxLayout" name="verticalLayout" stretch="30,1,1">
 -       <item>
 -        <widget class="QLabel" name="productName">
 -         <property name="sizePolicy">
@@ -60,6 +60,7 @@ index d021b08b3..fecfa3060 100644
 -         </property>
 -        </widget>
 -       </item>
++      <layout class="QVBoxLayout" name="verticalLayout" stretch="30,1,1">
         <item>
          <widget class="FixedAspectRatioLabel" name="productScreenshot">
           <property name="sizePolicy">
diff --git a/pkgs/tools/misc/calamares/waylandkbd.patch b/pkgs/tools/misc/calamares/waylandkbd.patch
index 37cddcf4e2af9..4c282b04062f2 100644
--- a/pkgs/tools/misc/calamares/waylandkbd.patch
+++ b/pkgs/tools/misc/calamares/waylandkbd.patch
@@ -1,20 +1,20 @@
 diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp
-index 720588810..af0dd1c8d 100644
+index d8b1e8e86..b2e1b7b5f 100644
 --- a/src/modules/keyboard/Config.cpp
 +++ b/src/modules/keyboard/Config.cpp
-@@ -219,7 +219,10 @@ Config::xkbApply()
+@@ -307,7 +307,10 @@ Config::xkbApply()
+                            xkbmap_layout_args( { m_additionalLayoutInfo.additionalLayout, m_selectedLayout },
                                                 { m_additionalLayoutInfo.additionalVariant, m_selectedVariant },
                                                 m_additionalLayoutInfo.groupSwitcher ) );
- 
 -
 +        QString xkbmap = QString( "[('xkb','%1\%2'),('xkb','%3\%4')]").arg(
-+                m_selectedLayout, ((!m_selectedVariant.isEmpty()) ? "+" + m_selectedVariant : ""),
-+                m_additionalLayoutInfo.additionalLayout, ((!m_additionalLayoutInfo.additionalVariant.isEmpty()) ? "+" + m_additionalLayoutInfo.additionalVariant : ""));
++                                  m_selectedLayout, ((!m_selectedVariant.isEmpty()) ? "+" + m_selectedVariant : ""),
++                                  m_additionalLayoutInfo.additionalLayout, ((!m_additionalLayoutInfo.additionalVariant.isEmpty()) ? "+" + m_additionalLayoutInfo.additionalVariant : ""));
 +        QProcess::execute( "sh", { "-c", "if command -v gsettings; then gsettings set org.gnome.desktop.input-sources sources \"$0\"; fi", xkbmap });
          cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant << "(added "
                   << m_additionalLayoutInfo.additionalLayout << "-" << m_additionalLayoutInfo.additionalVariant
                   << " since current layout is not ASCII-capable)";
-@@ -227,6 +230,8 @@ Config::xkbApply()
+@@ -315,6 +318,8 @@ Config::xkbApply()
      else
      {
          QProcess::execute( "setxkbmap", xkbmap_layout_args( m_selectedLayout, m_selectedVariant ) );
diff --git a/pkgs/tools/misc/cope/default.nix b/pkgs/tools/misc/cope/default.nix
deleted file mode 100644
index 7e65c854f288d..0000000000000
--- a/pkgs/tools/misc/cope/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, fetchFromGitHub, perl, perlPackages }:
-
-perlPackages.buildPerlPackage rec {
-  pname = "cope";
-  version = "unstable-2015-01-29";
-
-  src = fetchFromGitHub {
-    owner = "lotrfan";
-    repo = pname;
-    rev = "0dc82a939a9498ff80caf472841c279dfe03efae";
-    sha256 = "sha256-Tkv26M6YnaUB0nudjKGG482fvUkCobPk0VF1manBCoY=";
-  };
-
-  buildInputs = with perlPackages; [ EnvPath FileShareDir IOPty IOStty ListMoreUtils RegexpCommon RegexpIPv6 ];
-
-  postInstall = ''
-    mkdir -p $out/bin
-    mv $out/lib/perl5/site_perl/${perl.version}/auto/share/dist/Cope/* $out/bin/
-    rm -r $out/lib/perl5/site_perl/${perl.version}/auto
-  '';
-
-  meta = with lib; {
-    description = "A colourful wrapper for terminal programs";
-    homepage = "https://github.com/lotrfan/cope";
-    license = with licenses; [ artistic1 gpl1Plus ];
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/pkgs/tools/misc/cyberchef/default.nix b/pkgs/tools/misc/cyberchef/default.nix
index ee4c695a43e65..224d3ead7f3d8 100644
--- a/pkgs/tools/misc/cyberchef/default.nix
+++ b/pkgs/tools/misc/cyberchef/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "cyberchef";
-  version = "10.15.0";
+  version = "10.15.1";
 
   src = fetchzip {
     url = "https://github.com/gchq/CyberChef/releases/download/v${version}/CyberChef_v${version}.zip";
-    sha256 = "sha256-QXVqFMG6NJeeTON7w+46MjWXs1bIRL2ji047IvHgvYI=";
+    sha256 = "sha256-IJ3Id/Pn6KVBQwRFBpECDkeEXQ9J2WRK4NgeSqZoP8w=";
     stripRoot = false;
   };
 
diff --git a/pkgs/tools/misc/daktilo/default.nix b/pkgs/tools/misc/daktilo/default.nix
index b28f3b08f8cd9..e557862b67138 100644
--- a/pkgs/tools/misc/daktilo/default.nix
+++ b/pkgs/tools/misc/daktilo/default.nix
@@ -12,16 +12,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "daktilo";
-  version = "0.5.0";
+  version = "0.6.0";
 
   src = fetchFromGitHub {
     owner = "orhun";
     repo = "daktilo";
     rev = "v${version}";
-    hash = "sha256-kbJwBOUODtHdngbfa6HbbQJ0kgW6f64c0EG3y8wLymw=";
+    hash = "sha256-gIBWonJGX6IpxyBeMulcfQEExsG1GrBVQLZbBBA1ruc=";
   };
 
-  cargoHash = "sha256-u9vL2HAUgP43ZDwIEK2u/I+KUEjQsfXda03gnGJ1Krc=";
+  cargoHash = "sha256-lBlzXTkhsEboTby5tH7WfsvZxUwtw7sLYVJRozjI1D4=";
 
   nativeBuildInputs = [
     installShellFiles
diff --git a/pkgs/tools/misc/diffoscope/default.nix b/pkgs/tools/misc/diffoscope/default.nix
index 171cbc2dfe720..69f25a35c7397 100644
--- a/pkgs/tools/misc/diffoscope/default.nix
+++ b/pkgs/tools/misc/diffoscope/default.nix
@@ -79,11 +79,11 @@
 # Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
 python3.pkgs.buildPythonApplication rec {
   pname = "diffoscope";
-  version = "261";
+  version = "263";
 
   src = fetchurl {
     url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
-    hash = "sha256-BbxY5w2Up5IaDJyZgwnUDm683G8VIGaVnhUvaMRZHqU=";
+    hash = "sha256-tKGPit8rPn/fMdEWP3cC93qakU5d7mBeRiKNQT3DBJ4=";
   };
 
   outputs = [
@@ -93,6 +93,7 @@ python3.pkgs.buildPythonApplication rec {
 
   patches = [
     ./ignore_links.patch
+    ./openssh-no-dsa.patch # https://salsa.debian.org/reproducible-builds/diffoscope/-/merge_requests/139
   ];
 
   postPatch = ''
diff --git a/pkgs/tools/misc/diffoscope/openssh-no-dsa.patch b/pkgs/tools/misc/diffoscope/openssh-no-dsa.patch
new file mode 100644
index 0000000000000..d8e88f30a92d8
--- /dev/null
+++ b/pkgs/tools/misc/diffoscope/openssh-no-dsa.patch
@@ -0,0 +1,29 @@
+diff --git a/tests/comparators/test_openssh_pub_key.py b/tests/comparators/test_openssh_pub_key.py
+index da143097..8d6f3efa 100644
+--- a/tests/comparators/test_openssh_pub_key.py
++++ b/tests/comparators/test_openssh_pub_key.py
+@@ -29,7 +29,7 @@
+ from ..utils.tools import skip_unless_tools_exist, skip_unless_tool_is_at_least
+ 
+ 
+-# Generated by: ssh-keygen -t dsa -C "Test1"
++# Generated by: ssh-keygen -t ed25519 -C "Test1"
+ opensshpubkey1 = load_fixture("test_openssh_pub_key1.pub")
+ # Generated by: ssh-keygen -t rsa -b 4096 -C "Test2"
+ opensshpubkey2 = load_fixture("test_openssh_pub_key2.pub")
+diff --git a/tests/data/openssh_pub_key_expected_diff b/tests/data/openssh_pub_key_expected_diff
+index 0b6ec624..88d1eccf 100644
+--- a/tests/data/openssh_pub_key_expected_diff
++++ b/tests/data/openssh_pub_key_expected_diff
+@@ -1,3 +1,3 @@
+ @@ -1 +1 @@
+--1024 SHA256:v/O+0ETvi2H5TGRXky1RhQ1/WFwLlPpxch5E2Mrj6FM Test1 (DSA)
++-256 SHA256:ix2OOXDuTWjxGTICJcP7fLWIcwOO+wr4FPJHz8fOhtQ Test1 (ED25519)
+ +4096 SHA256:9dH1CMkA6DSfPWU7vNwdPKS5/ppN4LMdvHTP60l7aSA Test2 (RSA)
+diff --git a/tests/data/test_openssh_pub_key1.pub b/tests/data/test_openssh_pub_key1.pub
+index a2674adc..d564f55c 100644
+--- a/tests/data/test_openssh_pub_key1.pub
++++ b/tests/data/test_openssh_pub_key1.pub
+@@ -1 +1 @@
+-ssh-dss AAAAB3NzaC1kc3MAAACBAIa8YajID9g38jwQm8sNBGoGkkwIOv6sQ8k+Bcq8oPXPy1FRXWcra6Kd3iKqApIzLuZUvoYO/f3G2K4lue5yrv72rgwANWmyL4dHVXgcsjwvWwjOl6o4xWTPFspkdNcAAMcZfzG0+w1AOkQxhwMsnK380m3J9a3VOWugUiU4fV1jAAAAFQDzkrIZuJoxlxes564ltb2Vn3hnpQAAAIBHr6uzpiSeSkWLuItB00hHx1RHtBns0zaheNFTTUMGftxtfBU2eBLqObcTlqHJZ3UUY3/YAvD6Ux/uLSgUzEe7JaqvHcgML3K5V4HWIwE0ARRIwzrfU4cAErJObmZZ/OXbXNNRmW2IJgQJI52x4gVuSt0EEuctzASOOvyPA8IekAAAAIA7xe4o0o/ZwUqfWKR9K4QrbPPa6/D4ruFVhMcRJEE/A1LMY1Xo4nVSRU5bxzvMmJPBZvsbR5NEE3CgESqYxp5IPzK8LLyxcf8YxhdHFDYqFL1TbavwaDqtj6/9a/e7+bd8mMYe7zXJUdKWa/Uf+Xm6WRt3HgdLiCEsS2OlpvS2KA== Test1
++ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGo65kxbPUbb4fdujB2AX/XEZQ+23NDDxu3cJvw2E/DF Test1
diff --git a/pkgs/tools/misc/dijo/default.nix b/pkgs/tools/misc/dijo/default.nix
index 45da82571bd46..7e6d4c74e96bb 100644
--- a/pkgs/tools/misc/dijo/default.nix
+++ b/pkgs/tools/misc/dijo/default.nix
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
     description = "Scriptable, curses-based, digital habit tracker";
     homepage = "https://github.com/NerdyPepper/dijo";
     license = licenses.mit;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "dijo";
   };
 }
diff --git a/pkgs/tools/misc/dooit/default.nix b/pkgs/tools/misc/dooit/default.nix
index 1a76a304277c4..c532b13877d30 100644
--- a/pkgs/tools/misc/dooit/default.nix
+++ b/pkgs/tools/misc/dooit/default.nix
@@ -3,6 +3,7 @@
 , dooit
 , python3
 , testers
+, nix-update-script
 }:
 
 python3.pkgs.buildPythonApplication rec {
@@ -39,9 +40,13 @@ python3.pkgs.buildPythonApplication rec {
   # No tests available
   doCheck = false;
 
-  passthru.tests.version = testers.testVersion {
-    package = dooit;
-    command = "HOME=$(mktemp -d) dooit --version";
+  passthru = {
+    tests.version = testers.testVersion {
+      package = dooit;
+      command = "HOME=$(mktemp -d) dooit --version";
+    };
+
+    updateScript = nix-update-script { };
   };
 
   meta = with lib; {
diff --git a/pkgs/tools/misc/fastfetch/default.nix b/pkgs/tools/misc/fastfetch/default.nix
index e2c7b4dbbbf09..fc9493be55211 100644
--- a/pkgs/tools/misc/fastfetch/default.nix
+++ b/pkgs/tools/misc/fastfetch/default.nix
@@ -43,13 +43,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "fastfetch";
-  version = "2.9.0";
+  version = "2.9.1";
 
   src = fetchFromGitHub {
     owner = "fastfetch-cli";
     repo = "fastfetch";
     rev = finalAttrs.version;
-    hash = "sha256-D9WErPf9Um7McUK465c2FzZkWz/+dtPSIFMA04ak7Y4=";
+    hash = "sha256-FTZXfZhLplpjB6QQssz/5hXckNaR9KTdw8NRDLYOvaM=";
   };
 
   outputs = [ "out" "man" ];
diff --git a/pkgs/tools/misc/fluent-bit/default.nix b/pkgs/tools/misc/fluent-bit/default.nix
index 37e9a146238fd..96f1882e4e2a5 100644
--- a/pkgs/tools/misc/fluent-bit/default.nix
+++ b/pkgs/tools/misc/fluent-bit/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "fluent-bit";
-  version = "3.0.0";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "fluent";
     repo = "fluent-bit";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-wyRzMIAbv4aDUUiI3UxZDIsL6DpoxbWXNmsADRL425A=";
+    hash = "sha256-gys6dye137dW/WkoaLQXnrEwU0mXYfHOhuyeg452Tro=";
   };
 
   nativeBuildInputs = [ cmake flex bison ];
diff --git a/pkgs/tools/misc/fzf/default.nix b/pkgs/tools/misc/fzf/default.nix
index 2f5eac6b7396b..e2ae52985a504 100644
--- a/pkgs/tools/misc/fzf/default.nix
+++ b/pkgs/tools/misc/fzf/default.nix
@@ -1,39 +1,26 @@
-{ stdenv
-, lib
+{ lib
 , buildGoModule
 , fetchFromGitHub
-, writeShellScriptBin
 , runtimeShell
 , installShellFiles
 , bc
 , ncurses
-, perl
 , testers
 , fzf
 }:
 
-let
-  # on Linux, wrap perl in the bash completion scripts with the glibc locales,
-  # so that using the shell completion (ctrl+r, etc) doesn't result in ugly
-  # warnings on non-nixos machines
-  ourPerl = if !stdenv.isLinux then perl else (
-    writeShellScriptBin "perl" ''
-      export PERL_BADLANG=0
-      exec ${perl}/bin/perl "$@"
-    '');
-in
 buildGoModule rec {
   pname = "fzf";
-  version = "0.47.0";
+  version = "0.49.0";
 
   src = fetchFromGitHub {
     owner = "junegunn";
     repo = pname;
     rev = version;
-    hash = "sha256-rIRn8g4j/drWEHnvZnJW2sSLq5mrw8Q2pn3LN2sEXDY=";
+    hash = "sha256-XecMHKi5JMWx3RHQRk2FqS3SjyR6KzWjfyQ5JCI45xM=";
   };
 
-  vendorHash = "sha256-BOPACUQKcllmA2eWQs+sOfofAQLle2Byb/rZgOhmkVY=";
+  vendorHash = "sha256-ZEwB2GKohmOx8xosj14VII6sQ4a82s7+h9r620MKEeU=";
 
   CGO_ENABLED = 0;
 
@@ -56,14 +43,9 @@ buildGoModule rec {
         exit 1
     fi
 
-    # Has a sneaky dependency on perl
-    # Include first args to make sure we're patching the right thing
-    substituteInPlace shell/key-bindings.bash \
-      --replace "command -v perl" "command -v ${ourPerl}/bin/perl" \
-      --replace " perl -n " " ${ourPerl}/bin/perl -n "
     # fzf-tmux depends on bc
-   substituteInPlace bin/fzf-tmux \
-     --replace "bc" "${bc}/bin/bc"
+    substituteInPlace bin/fzf-tmux \
+      --replace "bc" "${bc}/bin/bc"
   '';
 
   postInstall = ''
diff --git a/pkgs/tools/misc/goose/default.nix b/pkgs/tools/misc/goose/default.nix
index 13de61b48e9d2..b80efbaccd39a 100644
--- a/pkgs/tools/misc/goose/default.nix
+++ b/pkgs/tools/misc/goose/default.nix
@@ -6,17 +6,17 @@
 
 buildGoModule rec {
   pname = "goose";
-  version = "3.15.0";
+  version = "3.19.2";
 
   src = fetchFromGitHub {
     owner = "pressly";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-BpCyBd5ogwpZussfKTCnCAcAnvT6jmlvLj2892+bZsg=";
+    hash = "sha256-kGa3vZSFQ8Dgndc0qRnFnQwlU2hst6j3UFUXw+tfYR0=";
   };
 
   proxyVendor = true;
-  vendorHash = "sha256-hOTP9fR0kK4aPJ0xlgwjl/D7O5rUfy9Xb1ruLV/uk1U=";
+  vendorHash = "sha256-aoBxReKRk7dkFR/fJ5uHDZrJRGutLTU2BhDWCTBN2BA=";
 
   # end-to-end tests require a docker daemon
   postPatch = ''
diff --git a/pkgs/tools/misc/goreleaser/default.nix b/pkgs/tools/misc/goreleaser/default.nix
index b405df9159086..e5c0ab3561ba5 100644
--- a/pkgs/tools/misc/goreleaser/default.nix
+++ b/pkgs/tools/misc/goreleaser/default.nix
@@ -9,13 +9,13 @@
 }:
 buildGoModule rec {
   pname = "goreleaser";
-  version = "1.25.0";
+  version = "1.25.1";
 
   src = fetchFromGitHub {
     owner = "goreleaser";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-1GQOnDwQkzoyLPehog32uwg6h2swBcbvxmZENaVaLCI=";
+    hash = "sha256-WYpFSV4dMz6sYNc45iXE/oOTmyZqMqHBZlx+00NZHbU=";
   };
 
   vendorHash = "sha256-vI/S4QtN72tmBVZ2PPcavotJBkl+bdXO9OFqlOGw1J8=";
diff --git a/pkgs/tools/misc/grizzly/default.nix b/pkgs/tools/misc/grizzly/default.nix
index e523571e79f6f..ffe6a4352bc0d 100644
--- a/pkgs/tools/misc/grizzly/default.nix
+++ b/pkgs/tools/misc/grizzly/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "grizzly";
-  version = "0.4.0";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
     owner = "grafana";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-c+QT3NwfnkVzAb1mqNIuNhSJJOnzME4e3ASawdNBFmg=";
+    hash = "sha256-IM7NrykF2Fiudijo5q0I/FewvS/rs3lzSpvzc6dl5Ds=";
   };
 
-  vendorHash = "sha256-EVP2w0mvzzBcrhohM2VmetK8UQu7fauelSa+C+q3n+g=";
+  vendorHash = "sha256-GrzMfOwNEjVQd1uCijcsfdIDO6UPzuHEDnJExupB9Jg=";
 
   subPackages = [ "cmd/grr" ];
 
diff --git a/pkgs/tools/misc/hueadm/default.nix b/pkgs/tools/misc/hueadm/default.nix
index 7eeb7b2eb7900..6afa6607129fb 100644
--- a/pkgs/tools/misc/hueadm/default.nix
+++ b/pkgs/tools/misc/hueadm/default.nix
@@ -22,7 +22,7 @@ buildNpmPackage rec {
     description = "Command line management interface to Philips Hue";
     homepage = "https://github.com/bahamas10/hueadm";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "hueadm";
   };
 }
diff --git a/pkgs/tools/misc/hwatch/default.nix b/pkgs/tools/misc/hwatch/default.nix
index 96621948192a9..6ba928a29d08e 100644
--- a/pkgs/tools/misc/hwatch/default.nix
+++ b/pkgs/tools/misc/hwatch/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "hwatch";
-  version = "0.3.11";
+  version = "0.3.12";
 
   src = fetchFromGitHub {
     owner = "blacknon";
     repo = pname;
     rev = "refs/tags/${version}";
-    sha256 = "sha256-S6hnmNnwdWd6iFM01K52oiKXiqu/0v5yvKKoeQMEqy0=";
+    sha256 = "sha256-Klv1VIJv4/R7HvvB6H+WxTeJxQYFqAFU3HC6oafD/90=";
   };
 
-  cargoHash = "sha256-P4XkbV6QlokedKumX3UbCfEaAqH9VF9IKVyZIumZ6u0=";
+  cargoHash = "sha256-Aos/QP8tLiKFmAZss19jn5h/murZR2jgTYRYalUONHw=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/misc/ideviceinstaller/default.nix b/pkgs/tools/misc/ideviceinstaller/default.nix
index 63bb1e7cb0fc3..3071aab6d1011 100644
--- a/pkgs/tools/misc/ideviceinstaller/default.nix
+++ b/pkgs/tools/misc/ideviceinstaller/default.nix
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ aristid infinisil ];
+    maintainers = with maintainers; [ aristid ];
     mainProgram = "ideviceinstaller";
   };
 }
diff --git a/pkgs/tools/misc/kalker/default.nix b/pkgs/tools/misc/kalker/default.nix
index 6b90866493c32..ef152524da7ad 100644
--- a/pkgs/tools/misc/kalker/default.nix
+++ b/pkgs/tools/misc/kalker/default.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "kalker";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "PaddiM8";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-oBdo/FQZsJnUwhGrBuRWKZIvw2lZab9N/rv/muofs04=";
+    hash = "sha256-Ri0Os+/AqGWgf/2V5D7xvelOC3JTOMjNzjq56mhA3G4=";
   };
 
-  cargoHash = "sha256-v4biE3J1a3qxiqJrSTFxyZhOJpoCnh2lZFBjy4O3XiE=";
+  cargoHash = "sha256-0+NYbVMIUarLppBZu6mtyGd+2fvkjEUq0TX7urBq3XI=";
 
   buildInputs = [ gmp mpfr libmpc ];
 
diff --git a/pkgs/tools/misc/mise/default.nix b/pkgs/tools/misc/mise/default.nix
index 3321f40b95184..f013f6a035615 100644
--- a/pkgs/tools/misc/mise/default.nix
+++ b/pkgs/tools/misc/mise/default.nix
@@ -17,16 +17,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mise";
-  version = "2024.3.10";
+  version = "2024.4.0";
 
   src = fetchFromGitHub {
     owner = "jdx";
     repo = "mise";
     rev = "v${version}";
-    hash = "sha256-Vx6BI2GmnyvBlDGAkNDJaEMXBphbaIxB5npD/o5c48M=";
+    hash = "sha256-l+Em04q40R5iTm4lNjY6sRE7Vu7UBl7lPNU9yj/hKzk=";
   };
 
-  cargoHash = "sha256-uhpF5jKWtwEx2HkkHd+88HIao4rqvnSQblinVc4ip44=";
+  cargoHash = "sha256-BPPjR0o+M5sTBWRgq3kOL+94qnRKnskLyFRUEPlPQtA=";
 
   nativeBuildInputs = [ installShellFiles pkg-config ];
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
diff --git a/pkgs/tools/misc/moar/default.nix b/pkgs/tools/misc/moar/default.nix
index 85eefe9f36eb1..d8972a89912ee 100644
--- a/pkgs/tools/misc/moar/default.nix
+++ b/pkgs/tools/misc/moar/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "moar";
-  version = "1.23.9";
+  version = "1.23.10";
 
   src = fetchFromGitHub {
     owner = "walles";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-qpbsNHIWiYTa5kt0GTybnWiSnUdPYIeFYsWXinYjtQA=";
+    hash = "sha256-ue/ZcIIJJAxUMhsEA3FtrkE5mgtiY626b+GmX62Q8dM=";
   };
 
   vendorHash = "sha256-1u/2OlMX2FuZaxWnpU4n5r/4xKe+rK++GoCJiSq/BdE=";
diff --git a/pkgs/tools/misc/nms/default.nix b/pkgs/tools/misc/nms/default.nix
index e74f18557f323..cf890dc449562 100644
--- a/pkgs/tools/misc/nms/default.nix
+++ b/pkgs/tools/misc/nms/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
       effect seen in the 1992 movie Sneakers.
     '';
     license = licenses.gpl3;
-    maintainers = [ maintainers.infinisil ];
+    maintainers = [ ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/misc/nomino/default.nix b/pkgs/tools/misc/nomino/default.nix
index e4b7acfa8883e..9dd489f459487 100644
--- a/pkgs/tools/misc/nomino/default.nix
+++ b/pkgs/tools/misc/nomino/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "nomino";
-  version = "1.3.3";
+  version = "1.3.4";
 
   src = fetchFromGitHub {
     owner = "yaa110";
     repo = pname;
     rev = version;
-    hash = "sha256-XT8+mwfDFsBVEcpttus1KeIS+4sKqJMJTwqYI3LfW5k=";
+    hash = "sha256-jV1GqwQURRFPGuFXPhtgbBJHOdroQk6KHMI5yHa0Z64=";
   };
 
-  cargoHash = "sha256-KpjGwqjVORyxXJbMi2Ok7s6gRmM/aJRTsPtu/0PgGr8=";
+  cargoHash = "sha256-QluOfU8TO5422lVXswjiQb2YleWiq5twwYzpBJsBs2Y=";
 
   meta = with lib; {
     description = "Batch rename utility for developers";
diff --git a/pkgs/tools/misc/ollama/default.nix b/pkgs/tools/misc/ollama/default.nix
index 2b02cc3ff5000..74bd213b043f5 100644
--- a/pkgs/tools/misc/ollama/default.nix
+++ b/pkgs/tools/misc/ollama/default.nix
@@ -86,6 +86,7 @@ let
     paths = [
       cudaPackages.cudatoolkit
       cudaPackages.cuda_cudart
+      cudaPackages.cuda_cudart.static
     ];
     postBuild = ''
       rm "$out/lib64"
diff --git a/pkgs/tools/misc/opentelemetry-collector/default.nix b/pkgs/tools/misc/opentelemetry-collector/default.nix
index fb718c567c627..d8a42d82ed34c 100644
--- a/pkgs/tools/misc/opentelemetry-collector/default.nix
+++ b/pkgs/tools/misc/opentelemetry-collector/default.nix
@@ -8,17 +8,17 @@
 
 buildGoModule rec {
   pname = "opentelemetry-collector";
-  version = "0.96.0";
+  version = "0.97.0";
 
   src = fetchFromGitHub {
     owner = "open-telemetry";
     repo = "opentelemetry-collector";
     rev = "v${version}";
-    hash = "sha256-/QGRxQRkVXuP3H6AWSqc1U7sA1n0jTNYLa+gQA25Q5M=";
+    hash = "sha256-0zTEaSylZEU7mCCrMf9aV8V0MMD4Au4y0zacWSLcujg=";
   };
   # there is a nested go.mod
   sourceRoot = "${src.name}/cmd/otelcorecol";
-  vendorHash = "sha256-n548376djwz4Qd9vlid0V9Dr9trLb09gKOP4J+9Znp4=";
+  vendorHash = "sha256-/8WxTtTTuwdPP/4Bix8d9nkR/w6MDKLyumv4KBx5VqU=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/misc/pdd/default.nix b/pkgs/tools/misc/pdd/default.nix
index 2e34e94ad0139..a05f618e472d6 100644
--- a/pkgs/tools/misc/pdd/default.nix
+++ b/pkgs/tools/misc/pdd/default.nix
@@ -28,7 +28,7 @@ buildPythonApplication rec {
       program arguments are specified it shows the current date, time and
       timezone.
     '';
-    maintainers = [ maintainers.infinisil ];
+    maintainers = [ ];
     license = licenses.gpl3;
     mainProgram = "pdd";
   };
diff --git a/pkgs/tools/misc/pferd/default.nix b/pkgs/tools/misc/pferd/default.nix
index af343a19d9697..5875035955ec7 100644
--- a/pkgs/tools/misc/pferd/default.nix
+++ b/pkgs/tools/misc/pferd/default.nix
@@ -5,14 +5,14 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "pferd";
-  version = "3.5.0";
+  version = "3.5.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Garmelon";
     repo = "PFERD";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-iGMqKRM/8pnnew/U1r7Od9Giyn9z4BxVGO85nw3FI9Y=";
+    sha256 = "sha256-NNQ7yB0JPVDSWMNxkpvEK/meLa3Db78qxUDDTJa6YgM=";
   };
 
   nativeBuildInputs = with python3Packages; [
diff --git a/pkgs/tools/misc/phrase-cli/default.nix b/pkgs/tools/misc/phrase-cli/default.nix
index a9a842f8451d4..6395412e412c3 100644
--- a/pkgs/tools/misc/phrase-cli/default.nix
+++ b/pkgs/tools/misc/phrase-cli/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "phrase-cli";
-  version = "2.23.0";
+  version = "2.23.1";
 
   src = fetchFromGitHub {
     owner = "phrase";
     repo = "phrase-cli";
     rev = version;
-    sha256 = "sha256-ucuksG3T4cI/cuEsHe4+7RtY+n05p3RvW/tijZ49lVY=";
+    sha256 = "sha256-5VoRl7pA37QJkgQ6ClyTC6Ya4ZLuVs6aqiAwk1kBFMY=";
   };
 
-  vendorHash = "sha256-ZWCwSiKoU/zXD9JJ/8qW2tiXWAMqkh0Md0MLz0V4P4E=";
+  vendorHash = "sha256-31QMyqJcyWYIq12EA/B0tip70yixFAi7EqIeeo11ZS8=";
 
   ldflags = [ "-X=github.com/phrase/phrase-cli/cmd.PHRASE_CLIENT_VERSION=${version}" ];
 
diff --git a/pkgs/tools/misc/plantuml-server/default.nix b/pkgs/tools/misc/plantuml-server/default.nix
index e0fa8b00db56a..7335944ff4237 100644
--- a/pkgs/tools/misc/plantuml-server/default.nix
+++ b/pkgs/tools/misc/plantuml-server/default.nix
@@ -1,14 +1,14 @@
 { lib, stdenv, fetchurl, nixosTests }:
 
 let
-  version = "1.2024.3";
+  version = "1.2024.4";
 in
 stdenv.mkDerivation rec {
   pname = "plantuml-server";
   inherit version;
   src = fetchurl {
     url = "https://github.com/plantuml/plantuml-server/releases/download/v${version}/plantuml-v${version}.war";
-    sha256 = "sha256-tuRtQl6tbjrgew6s6OV4EeY+GUo3DPVJJyuoD2vfnoo=";
+    sha256 = "sha256-7m0MOP6AN7V7mlrVfwxGy1AfCQx2ufp5GU2WQoSTIBc=";
   };
 
   dontUnpack = true;
diff --git a/pkgs/tools/misc/plantuml/default.nix b/pkgs/tools/misc/plantuml/default.nix
index a237bb88c64b6..8f4d82f2ea49e 100644
--- a/pkgs/tools/misc/plantuml/default.nix
+++ b/pkgs/tools/misc/plantuml/default.nix
@@ -8,11 +8,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "plantuml";
-  version = "1.2024.3";
+  version = "1.2024.4";
 
   src = fetchurl {
     url = "https://github.com/plantuml/plantuml/releases/download/v${finalAttrs.version}/plantuml-pdf-${finalAttrs.version}.jar";
-    hash = "sha256-zgpqXawlIdNgSxiOjtk7XLOnrVVD09T5qE9K8LD4TtY=";
+    hash = "sha256-8Xs7fyYr4CvXNO+g2g+7LLObUUVKxmt/27/wHdCwSIE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/misc/pre-commit/default.nix b/pkgs/tools/misc/pre-commit/default.nix
index 04b485427547e..535ce1a8c4da4 100644
--- a/pkgs/tools/misc/pre-commit/default.nix
+++ b/pkgs/tools/misc/pre-commit/default.nix
@@ -18,7 +18,7 @@
 with python3Packages;
 buildPythonApplication rec {
   pname = "pre-commit";
-  version = "3.6.2";
+  version = "3.7.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.9";
@@ -27,7 +27,7 @@ buildPythonApplication rec {
     owner = "pre-commit";
     repo = "pre-commit";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rlGkoaVLrTCEPgPFNUWefJf6MJaKTA2RDSbV7eGtaAU=";
+    hash = "sha256-k9pC/GCtqLlK9PhZmx4EKWT1HDyl+KQubDFDQOZdKUQ=";
   };
 
   patches = [
@@ -131,9 +131,6 @@ buildPythonApplication rec {
     "test_dart"
     "test_dart_additional_deps"
     "test_dart_additional_deps_versioned"
-    "test_docker_hook"
-    "test_docker_image_hook_via_args"
-    "test_docker_image_hook_via_entrypoint"
     "test_during_commit_all"
     "test_golang_default_version"
     "test_golang_hook"
@@ -172,6 +169,9 @@ buildPythonApplication rec {
     # Expects `git commit` to fail when `pre-commit` is not in the `$PATH`,
     # but we use an absolute path so it's not an issue.
     "test_environment_not_sourced"
+
+    # Docker required
+    "test_docker_"
   ];
 
   pythonImportsCheck = [
diff --git a/pkgs/tools/misc/rfc/default.nix b/pkgs/tools/misc/rfc/default.nix
index 60d77bfbaca21..d747cbf185e48 100644
--- a/pkgs/tools/misc/rfc/default.nix
+++ b/pkgs/tools/misc/rfc/default.nix
@@ -8,13 +8,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "rfc";
-  version = "0.2.6";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "bfontaine";
     repo = "rfc";
     rev = "v${version}";
-    hash = "sha256-dfaeTdJiJuKp8/k6LBP+RC60gTRHfHR5hhLD4ZWJufE=";
+    hash = "sha256-zN+MQtHh69PkzbrfceHFpBYCPmTg9qrOf/ML2efq6Xk=";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
diff --git a/pkgs/tools/misc/ripdrag/default.nix b/pkgs/tools/misc/ripdrag/default.nix
index fd9d5a8a3514b..b437018c8a7c5 100644
--- a/pkgs/tools/misc/ripdrag/default.nix
+++ b/pkgs/tools/misc/ripdrag/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ripdrag";
-  version = "0.4.6";
+  version = "0.4.7";
 
   src = fetchFromGitHub {
     owner = "nik012003";
     repo = "ripdrag";
     rev = "v${version}";
-    hash = "sha256-42sfSrwRlpaO4Dkw6m6wcKXef5yKZjw9MMoYNwIF6/o=";
+    hash = "sha256-nO+eiQLlK5sgOrFpYrP/svzUff0gKju1DjAUMEti6HM=";
   };
 
-  cargoHash = "sha256-mW334GTAUAUw8xs2Idpr2ThGyN1P0GbP/RjDqj5Ttr0=";
+  cargoHash = "sha256-/OAaxB1AzmuSTJiZKGoEkh0TcVu+HkBvEmgyeg8R1Ds=";
 
   nativeBuildInputs = [ pkg-config wrapGAppsHook4 ];
 
diff --git a/pkgs/tools/misc/rustypaste-cli/default.nix b/pkgs/tools/misc/rustypaste-cli/default.nix
index 93b5340abcc58..e78074ca63304 100644
--- a/pkgs/tools/misc/rustypaste-cli/default.nix
+++ b/pkgs/tools/misc/rustypaste-cli/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rustypaste-cli";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "orhun";
     repo = "rustypaste-cli";
     rev = "v${version}";
-    hash = "sha256-FfAX7a94EY2Y+FHE33UdxbLbFlSq69flvx3uPYlvkT4=";
+    hash = "sha256-Nx0mnwoyJlZSaOiGsqhrx6o9ZDJAGbEpOBhPknbZBjI=";
   };
 
-  cargoHash = "sha256-FVhOxJE1sI9Ka2teDU8xnbuDvtdIwubuE7+3ypo4+yQ=";
+  cargoHash = "sha256-z/llEeUfiWPCy8JspmpbbX0FCb8eXPvV1SJAW7ujSyU=";
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.Security
diff --git a/pkgs/tools/misc/sta/default.nix b/pkgs/tools/misc/sta/default.nix
index 696b79447a752..8e39afa5d4235 100644
--- a/pkgs/tools/misc/sta/default.nix
+++ b/pkgs/tools/misc/sta/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation {
     '';
     license = licenses.mit;
     homepage = "https://github.com/simonccarter/sta";
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     platforms = platforms.all;
     badPlatforms = platforms.darwin;
     mainProgram = "sta";
diff --git a/pkgs/tools/misc/stow/default.nix b/pkgs/tools/misc/stow/default.nix
index c91cfdabc278b..4dd72d8d8caf5 100644
--- a/pkgs/tools/misc/stow/default.nix
+++ b/pkgs/tools/misc/stow/default.nix
@@ -1,15 +1,17 @@
-{ lib, stdenv, fetchurl, perl, perlPackages }:
+{ lib
+, stdenv
+, fetchurl
+, perl
+, perlPackages
+}:
 
-let
+stdenv.mkDerivation (finalAttrs: {
   pname = "stow";
-  version = "2.3.1";
-in
-stdenv.mkDerivation {
-  name = "${pname}-${version}";
+  version = "2.4.0";
 
   src = fetchurl {
-    url = "mirror://gnu/stow/stow-${version}.tar.bz2";
-    sha256 = "0bs2b90wjkk1camcasy8kn403kazq6c7fj5m5msfl3navbgwz9i6";
+    url = "mirror://gnu/stow/stow-${finalAttrs.version}.tar.bz2";
+    hash = "sha256-p7rGc9qiRs9U/7SKET6t0gSmFWMOdrU7X2TYGidbd7M=";
   };
 
   buildInputs = with perlPackages; [ perl IOStringy TestOutput ];
@@ -34,4 +36,4 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ sarcasticadmin ];
     platforms = platforms.all;
   };
-}
+})
diff --git a/pkgs/tools/misc/szyszka/default.nix b/pkgs/tools/misc/szyszka/default.nix
index 335bc81febe0c..7bcce4158faf0 100644
--- a/pkgs/tools/misc/szyszka/default.nix
+++ b/pkgs/tools/misc/szyszka/default.nix
@@ -8,7 +8,7 @@
 , atk
 , gdk-pixbuf
 , gtk4
-, wrapGAppsHook
+, wrapGAppsHook4
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -26,7 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   nativeBuildInputs = [
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/tools/misc/topicctl/default.nix b/pkgs/tools/misc/topicctl/default.nix
index e4f5c11a980aa..f573ffb2bd1a2 100644
--- a/pkgs/tools/misc/topicctl/default.nix
+++ b/pkgs/tools/misc/topicctl/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "topicctl";
-  version = "1.14.2";
+  version = "1.16.0";
 
   src = fetchFromGitHub {
     owner = "segmentio";
     repo = "topicctl";
     rev = "v${version}";
-    sha256 = "sha256-VOy6IoXw3MCa5hNQ/BmuGKwjbNRvDC+xwIcLXep8rRI=";
+    sha256 = "sha256-yB9VOrfL6eFdENiWsqQcVMEVJjRjp3El/JUp2jX5nM8=";
   };
 
   vendorHash = "sha256-+mnnvdna1g6JE29weOJZmdO3jFp2a75dV9wK2XcWJ9s=";
diff --git a/pkgs/tools/misc/usbmuxd/default.nix b/pkgs/tools/misc/usbmuxd/default.nix
index 5a391762cd082..2cec5d7d77af2 100644
--- a/pkgs/tools/misc/usbmuxd/default.nix
+++ b/pkgs/tools/misc/usbmuxd/default.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "usbmuxd";
   };
 }
diff --git a/pkgs/tools/misc/valeronoi/default.nix b/pkgs/tools/misc/valeronoi/default.nix
index 9826ce510bfc5..b27fe3e499a31 100644
--- a/pkgs/tools/misc/valeronoi/default.nix
+++ b/pkgs/tools/misc/valeronoi/default.nix
@@ -4,7 +4,6 @@
 , boost
 , cgal
 , cmake
-, copyDesktopItems
 , gpp
 , mpfr
 , qtbase
@@ -36,7 +35,6 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     cmake
-    copyDesktopItems
     wrapQtAppsHook
   ];
 
diff --git a/pkgs/tools/misc/vector/Cargo.lock b/pkgs/tools/misc/vector/Cargo.lock
index 155a138284865..d24feb253f2e1 100644
--- a/pkgs/tools/misc/vector/Cargo.lock
+++ b/pkgs/tools/misc/vector/Cargo.lock
@@ -1145,7 +1145,7 @@ dependencies = [
  "aws-smithy-types",
  "bytes 1.5.0",
  "fastrand 2.0.1",
- "h2 0.3.24",
+ "h2 0.3.26",
  "http 0.2.9",
  "http-body 0.4.5",
  "hyper 0.14.28",
@@ -3747,9 +3747,9 @@ dependencies = [
 
 [[package]]
 name = "h2"
-version = "0.3.24"
+version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
 dependencies = [
  "bytes 1.5.0",
  "fnv",
@@ -3766,9 +3766,9 @@ dependencies = [
 
 [[package]]
 name = "h2"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51ee2dd2e4f378392eeff5d51618cd9a63166a2513846bbc55f21cfacd9199d4"
+checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069"
 dependencies = [
  "bytes 1.5.0",
  "fnv",
@@ -4210,14 +4210,14 @@ dependencies = [
  "futures-channel",
  "futures-core",
  "futures-util",
- "h2 0.3.24",
+ "h2 0.3.26",
  "http 0.2.9",
  "http-body 0.4.5",
  "httparse",
  "httpdate",
  "itoa",
  "pin-project-lite",
- "socket2 0.5.6",
+ "socket2 0.4.10",
  "tokio",
  "tower-service",
  "tracing 0.1.40",
@@ -7515,7 +7515,7 @@ dependencies = [
  "encoding_rs",
  "futures-core",
  "futures-util",
- "h2 0.3.24",
+ "h2 0.3.26",
  "http 0.2.9",
  "http-body 0.4.5",
  "hyper 0.14.28",
@@ -9371,7 +9371,7 @@ dependencies = [
  "base64 0.21.7",
  "bytes 1.5.0",
  "flate2",
- "h2 0.3.24",
+ "h2 0.3.26",
  "http 0.2.9",
  "http-body 0.4.5",
  "hyper 0.14.28",
@@ -10017,7 +10017,7 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
 
 [[package]]
 name = "vector"
-version = "0.37.0"
+version = "0.37.1"
 dependencies = [
  "apache-avro",
  "approx",
@@ -10083,7 +10083,7 @@ dependencies = [
  "governor",
  "greptimedb-client",
  "grok",
- "h2 0.4.3",
+ "h2 0.4.4",
  "hash_hasher",
  "hashbrown 0.14.3",
  "headers",
diff --git a/pkgs/tools/misc/vector/default.nix b/pkgs/tools/misc/vector/default.nix
index 84b13c69e040e..db6446ec26cfe 100644
--- a/pkgs/tools/misc/vector/default.nix
+++ b/pkgs/tools/misc/vector/default.nix
@@ -37,7 +37,7 @@
 
 let
   pname = "vector";
-  version = "0.37.0";
+  version = "0.37.1";
 in
 rustPlatform.buildRustPackage {
   inherit pname version;
@@ -46,16 +46,13 @@ rustPlatform.buildRustPackage {
     owner = "vectordotdev";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-v93ZsNGoswPpey409V7qKqsBsfRt5pgY5PxGti4MlDg=";
+    hash = "sha256-wRXwgy+UY2z5fIWpQbDxRti54GE357WMGWXM/xKjz18=";
   };
 
   patches = [
     # Enable LTO to bring down binary size
-    (fetchpatch {
-      name = "vector-20034-lto.patch";
-      url  = "https://patch-diff.githubusercontent.com/raw/vectordotdev/vector/pull/20034.diff";
-      hash = "sha256-X6YWnW0x5WpKAgyqIaLjKF1F1/G4JgvmNhAHtozXrPQ=";
-    })
+    # Adapted from https://github.com/vectordotdev/vector/pull/20034
+    ./vector-lto.patch
   ];
 
   cargoLock = {
diff --git a/pkgs/tools/misc/vector/vector-lto.patch b/pkgs/tools/misc/vector/vector-lto.patch
new file mode 100644
index 0000000000000..a795c1f16d25e
--- /dev/null
+++ b/pkgs/tools/misc/vector/vector-lto.patch
@@ -0,0 +1,12 @@
+--- ./Cargo.toml	2024-04-10 00:01:12.033806583 +0100
++++ ./Cargo.toml	2024-04-10 00:01:48.324228125 +0100
+@@ -45,7 +45,8 @@ path = "tests/e2e/mod.rs"
+ # This results in roughly a 5% reduction in performance when compiling locally vs when
+ # compiled via the CI pipeline.
+ [profile.release]
+-debug = false # Do not include debug symbols in the executable.
++lto = true
++codegen-units = 1
+ 
+ [profile.bench]
+ debug = true
diff --git a/pkgs/tools/misc/vrc-get/default.nix b/pkgs/tools/misc/vrc-get/default.nix
index e89d4d4758341..140fba5c11f30 100644
--- a/pkgs/tools/misc/vrc-get/default.nix
+++ b/pkgs/tools/misc/vrc-get/default.nix
@@ -1,28 +1,23 @@
-{ fetchFromGitHub, lib, rustPlatform, pkg-config, openssl, stdenv, Security, SystemConfiguration }:
+{ fetchCrate, lib, rustPlatform, pkg-config, stdenv, Security, SystemConfiguration }:
 
 rustPlatform.buildRustPackage rec {
   pname = "vrc-get";
-  version = "1.5.2";
+  version = "1.8.0";
 
-  src = fetchFromGitHub {
-    owner = "anatawa12";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-DTiYyTZKYNprQSsAjHmpGdnS6dkXa3hSRGmIiLT/xr8=";
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-+xbHw1DpFmapjsFoUvxUqTok8TKMebMw3gYjO/rx/iU=";
   };
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
+  buildInputs = lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
 
-  # Make openssl-sys use pkg-config.
-  OPENSSL_NO_VENDOR = 1;
-
-  cargoHash = "sha256-4bhle98/zfw1uGNx+m1/4H9n63DnIezg/ZdV+zj0JNA=";
+  cargoHash = "sha256-iuLhDcii+wXDNUsUMo8lj4kfJve5RAz7FT5Pxs9yFPQ=";
 
   meta = with lib; {
     description = "Command line client of VRChat Package Manager, the main feature of VRChat Creator Companion (VCC)";
-    homepage = "https://github.com/anatawa12/vrc-get";
+    homepage = "https://github.com/vrc-get/vrc-get";
     license = licenses.mit;
     maintainers = with maintainers; [ bddvlpr ];
     mainProgram = "vrc-get";
diff --git a/pkgs/tools/misc/vtm/default.nix b/pkgs/tools/misc/vtm/default.nix
index 80f7d69db3041..2e0434a2a6e41 100644
--- a/pkgs/tools/misc/vtm/default.nix
+++ b/pkgs/tools/misc/vtm/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "vtm";
-  version = "0.9.76";
+  version = "0.9.77";
 
   src = fetchFromGitHub {
     owner = "netxs-group";
     repo = "vtm";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-F1ia1xyg2/Jnm/lsSn7bKNJ7cXIJuvEhNTEZWiYxGAo=";
+    hash = "sha256-usY8JvoTtGfA8nnl6w7r1sft8F/19fHeSl9kMWM60i4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/misc/wakapi/default.nix b/pkgs/tools/misc/wakapi/default.nix
index cc001d4da94aa..372d20771f37d 100644
--- a/pkgs/tools/misc/wakapi/default.nix
+++ b/pkgs/tools/misc/wakapi/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "wakapi";
-  version = "2.11.0";
+  version = "2.11.1";
 
   src = fetchFromGitHub {
     owner = "muety";
     repo = pname;
     rev = version;
-    sha256 = "sha256-ZSnbbxSRgdAHNAFw9gUl02gw8H9/5UmgNphNpAYw2hY=";
+    sha256 = "sha256-ZdKPaHe4miMKb6qEKdRz/fRIkTWDXp2Veu7CP1gRuQw=";
   };
 
-  vendorHash = "sha256-0IB9k/NY8Gcl2qLABMQJQ7BLimeDi3s9GvkmyCjxtfg=";
+  vendorHash = "sha256-pRj7Y2xp+Z2StaXRIzI5b2WAkIhR9y8T8DMXWrxOiy4=";
 
   # Not a go module required by the project, contains development utilities
   excludedPackages = [ "scripts" ];
diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix
index 03998332eda24..9844e1399f1e6 100644
--- a/pkgs/tools/misc/yt-dlp/default.nix
+++ b/pkgs/tools/misc/yt-dlp/default.nix
@@ -25,20 +25,20 @@ buildPythonPackage rec {
   # The websites yt-dlp deals with are a very moving target. That means that
   # downloads break constantly. Because of that, updates should always be backported
   # to the latest stable release.
-  version = "2024.3.10";
+  version = "2024.4.9";
   pyproject = true;
 
   src = fetchPypi {
     inherit version;
     pname = "yt_dlp";
-    hash = "sha256-bnTLFKadvrhyyO9OC4u+0u6EbsYzUTzzEkp0wfrtwHs=";
+    hash = "sha256-fukFcrTTE7WCuZyJ5OzPd5tX/1TtwzGHPGs/unf6qLA=";
   };
 
-  nativeBuildInputs = [
+  build-system = [
     hatchling
   ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     brotli
     certifi
     mutagen
@@ -86,6 +86,7 @@ buildPythonPackage rec {
       youtube-dl is released to the public domain, which means
       you can modify it, redistribute it or use it however you like.
     '';
+    changelog = "https://github.com/yt-dlp/yt-dlp/releases/tag/${version}";
     license = licenses.unlicense;
     maintainers = with maintainers; [ mkg20001 SuperSandro2000 marsam ];
     mainProgram = "yt-dlp";
diff --git a/pkgs/tools/networking/axel/default.nix b/pkgs/tools/networking/axel/default.nix
index 0a5a11bd8eb71..2480d0e31e251 100644
--- a/pkgs/tools/networking/axel/default.nix
+++ b/pkgs/tools/networking/axel/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "axel";
-  version = "2.17.13";
+  version = "2.17.14";
 
   src = fetchFromGitHub {
     owner = "axel-download-accelerator";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-iCxKQsymTE8ppOAilQtFeQUS+Fpdjhkcw4jaa9TEv3E=";
+    sha256 = "sha256-5GUna5k8GhAx1Xe8n9IvXT7IO6gksxCLh+sMANlxTBM=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config autoconf-archive txt2man ];
diff --git a/pkgs/tools/networking/boundary/default.nix b/pkgs/tools/networking/boundary/default.nix
index 52771f68433ae..6a7ddd1d7306b 100644
--- a/pkgs/tools/networking/boundary/default.nix
+++ b/pkgs/tools/networking/boundary/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "boundary";
-  version = "0.15.3";
+  version = "0.15.4";
 
   src =
     let
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
         aarch64-darwin = "darwin_arm64";
       };
       sha256 = selectSystem {
-        x86_64-linux = "sha256-dY55oJ8SVBuvKqxsJ6OMb7EbGBUNVYydHUX0ONZfW+0=";
-        aarch64-linux = "sha256-OvI9Ul1hWrZUM3Hbf/LbDPfXQgvArOPy7Umu58xQetU=";
-        x86_64-darwin = "sha256-sln0CD8o9rwdtnBS8V06p9TAF/XqZwhc+wsVRq1GJVE=";
-        aarch64-darwin = "sha256-7R6WVqn9FZH6Ss+QpCVHjUw1ASwV3rag76Wh5dC+JvA=";
+        x86_64-linux = "sha256-43Q69Pp5NLB4fITy2X8d0XHp5EX+gFLnwtHOontISoU=";
+        aarch64-linux = "sha256-z87peCBv50eJr/kiFWPZUOeb0WCN4X+0JnxCvn3lCXo=";
+        x86_64-darwin = "sha256-SAhlZNGq5rkNitKVd+EjLOeeTErhWg14tHFG4Bsexv8=";
+        aarch64-darwin = "sha256-2DJgOdgJY6eUR2sqWS47vNjdkQGXOEEsSXhZeUBZxxs=";
       };
     in
     fetchzip {
diff --git a/pkgs/tools/networking/bsd-finger/default.nix b/pkgs/tools/networking/bsd-finger/default.nix
index 9d4c0267c76ab..b8eda1bc216f3 100644
--- a/pkgs/tools/networking/bsd-finger/default.nix
+++ b/pkgs/tools/networking/bsd-finger/default.nix
@@ -1,7 +1,9 @@
-{ lib
-, stdenv
-, fetchurl
-, buildClient ? true
+{
+  lib,
+  stdenv,
+  fetchurl,
+  fetchDebianPatch,
+  buildClient ? true,
 }:
 
 stdenv.mkDerivation rec {
@@ -10,36 +12,163 @@ stdenv.mkDerivation rec {
   version = "0.17";
 
   src = fetchurl {
-    url = "mirror://ibiblioPubLinux/system/network/finger/${srcName}-${version}.tar.gz";
-    hash = "sha256-hIhdZo0RfvUOAccDSkXYND10fOxiEuQOjQgVG8GOE/o=";
+    url = "http://ftp.de.debian.org/debian/pool/main/b/bsd-finger/bsd-finger_${version}.orig.tar.bz2";
+    hash = "sha256-KLNNYF0j6mh9eeD8SMA1q+gPiNnBVH56pGeW0QgcA2M=";
   };
 
+  debianRevision = "17";
+
   # outputs = [ "out" "man" ];
 
   env.NIX_CFLAGS_COMPILE = "-D_GNU_SOURCE";
 
   patches = [
-    ./ubuntu-0.17-9.patch
+    # Patches original finger sources to make the programs more robust and compatible
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "01-legacy.patch";
+      hash = "sha256-84znJLXez4w6WB2nOW+PHK/0srE0iG9nGAjO1/AGczw=";
+    })
+
+    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=518559
+    #
+    # Doesn't work with a non-iterable nsswitch source
+    #
+    # Currently, "finger tabbott" works by iterating through the list of users
+    # on the system using getpwent and checking if any of them match "tabbott".
+    #
+    # Some nsswitch backends (including Hesiod and LDAP[1]) do not support
+    # iterating through the complete list of users.  These nsswitch backends
+    # instead only fully support looking up a user's information by username or
+    # uid.
+    #
+    # So, if tabbott is a user whose nsswitch information comes from LDAP, then
+    # "finger tabbott" will incorrectly report "finger: tabbott: no such user."
+    # "finger -m tabbott" does work correctly, however, because it looks up the
+    # matching username using getpwnam.
+    #
+    # A fix for this is to always look up an argument to finger for a username
+    # match, and having -m only control whether finger searches the entire user
+    # database for real name matches.  Patch attached.
+    #
+    # This patch has the advantageous side effect that if there are some real
+    # name matches and a username match, finger will always display the username
+    # match first (rather than in some random place in the list).
+    #
+    #     -Tim Abbott
+    #
+    # [1] with LDAP, it is typically the case that one can iterate through only
+    # the first 100 results from a query.
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "02-518559-nsswitch-sources.patch";
+      hash = "sha256-oBXJ/kr/czevWk0TcsutGINNwCoHnEStRT8Jfgp/lbM=";
+    })
+
+    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468454
+    # Implement IPv6 capacity for the server Fingerd.
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "03-468454-fingerd-ipv6.patch";
+      hash = "sha256-a5+qoy2UKa2nCJrwrfJ5VPZoACFXFQ1j/rweoMYW1Z0=";
+    })
+
+    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468454
+    # Implement IPv6 capability for the client Finger.
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "04-468454-finger-ipv6.patch";
+      hash = "sha256-cg93NL02lJm/5Freegb3EbjDAQVkurLEEJifcyQRRfk=";
+    })
+
+    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=547014
+    # From: "Matthew A. Dunford" <mdunford@lbl.gov>
+    #
+    # finger segfaults when it comes across a netgroup entry in /etc/passwd.
+    # A netgroup entry doesn't include many of the fields in a normal passwd
+    # entry, so pw->pw_gecos is set to NULL, which causes finger to core
+    # dump.
+    #
+    # Here is part of a /etc/passwd file with a netgroup entry:
+    #
+    # nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
+    # +@operator
+    #
+    # This patch sidesteps what finger considers a malformed passwd entry:
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "05-547014-netgroup.patch";
+      hash = "sha256-d+ufp7nPZwW+t+EWASzHrXT/O6zSzt6OOV12cKVo3P0=";
+    })
+
+    # Decrease timeout length during connect().
+    # In cases where a name server is answering with A as well as AAAA records,
+    # but the system to be queried has lost a corresponding address, the TCP
+    # handshake timeout will cause a long delay before allowing the query of
+    # the next address family, or the next address in general.
+    #  .
+    # The use of a trivial signal handler for SIGALRM allows the reduction
+    # of this timeout, thus producing better responsiveness for the interactive
+    # user of the Finger service.
+    # Author: Mats Erik Andersson <debian@gisladisker.se>
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "06-572211-decrease-timeout.patch";
+      hash = "sha256-KtNGU5mmX1nnxQc7XnYoUuVW4We2cF81+x6EQrHF7g0=";
+    })
+
+    # Use cmake as build system
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "use-cmake-as-buildsystem.patch";
+      hash = "sha256-YOmkF6Oxowy15mCE1pCvHKnLEXglijWFG6eydnZJFhM=";
+    })
+
+    # Debian-specific changes to the cmake build system (that NixOS will also benefit from)
+    # Adds -D_GNU_SOURCE, which will enable many C extensions that finger benefits from
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "use-cmake-as-buildsystem-debian-extras.patch";
+      hash = "sha256-T3DWpyyz15JCiVJ41RrJEhsmicei8G3OaKpxvzOCcBU=";
+    })
+
+    # Fix typo at fingerd man page (Josue Ortega <josue@debian.org>)
+    (fetchDebianPatch {
+      pname = srcName;
+      inherit version debianRevision;
+      patch = "fix-fingerd-man-typo.patch";
+      hash = "sha256-f59osGi0a8Tkm2Vxg2+H2brH8WproCDvbPf4jXwi6ag=";
+    })
   ];
 
-  preBuild = let
-    srcdir = if buildClient then "finger" else "fingerd";
-  in ''
-    cd ${srcdir}
-  '';
+  preBuild =
+    let
+      srcdir = if buildClient then "finger" else "fingerd";
+    in
+    ''
+      cd ${srcdir}
+    '';
 
-  preInstall = let
-    bindir = if buildClient then "bin" else "sbin";
-    mandir = if buildClient then "man/man1" else "man/man8";
-  in ''
-    mkdir -p $out/${bindir} $out/${mandir}
-  '';
+  preInstall =
+    let
+      bindir = if buildClient then "bin" else "sbin";
+      mandir = if buildClient then "man/man1" else "man/man8";
+    in
+    ''
+      mkdir -p $out/${bindir} $out/${mandir}
+    '';
 
   meta = with lib; {
     description =
-      if buildClient
-      then "User information lookup program"
-      else "Remote user information server";
+      if buildClient then "User information lookup program" else "Remote user information server";
     platforms = platforms.linux;
     license = licenses.bsdOriginal;
     mainProgram = "finger";
diff --git a/pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch b/pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch
deleted file mode 100644
index 24decb60281fc..0000000000000
--- a/pkgs/tools/networking/bsd-finger/ubuntu-0.17-9.patch
+++ /dev/null
@@ -1,261 +0,0 @@
---- bsd-finger-0.17.orig/finger/finger.1
-+++ bsd-finger-0.17/finger/finger.1
-@@ -169,16 +169,14 @@
- must be able to see the
- .Pa .nofinger
- file. This generally means that the home directory containing the file
--must have the other-users-execute bit set (o+w). See
-+must have the other-users-execute bit set (o+x). See
- .Xr chmod 1 .
- If you use this feature for privacy, please test it with ``finger
- @localhost'' before relying on it, just in case.
- .It ~/.plan
- .It ~/.project
--.It ~/.pgp
-+.It ~/.pgpkey
- These files are printed as part of a long-format request. The
--.Pa .project
--file is limited to one line; the
- .Pa .plan
- file may be arbitrarily long.
- .El
---- bsd-finger-0.17.orig/finger/finger.c
-+++ bsd-finger-0.17/finger/finger.c
-@@ -77,7 +77,7 @@
- #include "../version.h"
- 
- static void loginlist(void);
--static void userlist(int argc, char *argv[]);
-+static int userlist(int argc, char *argv[]);
- 
- int lflag, pplan;
- static int sflag, mflag;
-@@ -92,6 +92,7 @@
- 
- int main(int argc, char *argv[]) {
- 	int ch;
-+	int err = 0;
- 	struct sockaddr_in sin;
- 	socklen_t slen = sizeof(sin);
- 
-@@ -159,7 +160,7 @@
- 		}
- 	} 
- 	else {
--		userlist(argc, argv);
-+		err = userlist(argc, argv);
- 		/*
- 		 * Assign explicit "large" format if names given and -s not
- 		 * explicitly stated.  Force the -l AFTER we get names so any
-@@ -172,7 +173,7 @@
- 		if (lflag) lflag_print();
- 		else sflag_print();
- 	}
--	return 0;
-+	return err;
- }
- 
- /* Returns 1 if .nofinger is found and enable_nofinger is set. */
-@@ -181,10 +182,16 @@
- check_nofinger(struct passwd *pw)
- {
- 	if (enable_nofinger) {
--		char path[PATH_MAX];
- 		struct stat tripe;
--		snprintf(path, sizeof(path), "%s/.nofinger", pw->pw_dir);
--		if (stat(path, &tripe)==0) {
-+		int ret;
-+		char *path;
-+		if (asprintf(&path, "%s/.nofinger", pw->pw_dir) < 0) {
-+			eprintf("finger: Out of space.\n");
-+			exit(1);
-+		}
-+		ret = stat(path, &tripe);
-+		free(path);
-+		if (!ret) {
- 			return 1;
- 		}
- 	}
-@@ -264,10 +271,11 @@
- 
- }
- 
--static void
-+static int
- userlist(int argc, char *argv[])
- {
- 	int i;
-+	int err = 0;
- 	PERSON *pn;
- 	PERSON *nethead, **nettail;
- 	struct utmp *uptr;
-@@ -297,13 +305,13 @@
- 
- 	/* handle network requests */
- 	for (pn = nethead; pn; pn = pn->next) {
--		netfinger(pn->name);
-+		err |= netfinger(pn->name);
- 		if (pn->next || entries)
- 			xputc('\n');
- 	}
- 
- 	if (entries == 0)
--		return;
-+		return err;
- 
- 	/*
- 	 * Scan thru the list of users currently logged in, saving
-@@ -331,4 +339,6 @@
- 		enter_lastlog(pn);
- 	}
- 	endutent();
-+
-+	return err;
- }
---- bsd-finger-0.17.orig/finger/finger.h
-+++ bsd-finger-0.17/finger/finger.h
-@@ -92,7 +92,7 @@
- void enter_where(struct utmp *ut, PERSON *pn);
- void enter_lastlog(PERSON *pn);
- int match(struct passwd *pw, const char *user);
--void netfinger(const char *name);
-+int netfinger(const char *name);
- const char *prphone(const char *num);
- 
- #ifndef DAYSPERNYEAR
---- bsd-finger-0.17.orig/finger/lprint.c
-+++ bsd-finger-0.17/finger/lprint.c
-@@ -48,7 +48,7 @@
- #include <sys/types.h>
- #include <sys/file.h>
- #include <sys/stat.h>
--#include <sys/time.h>
-+#include <time.h>
- #include "finger.h"
- 
- static void lprint(PERSON *pn);
-@@ -100,7 +100,7 @@
- 	 *	office, office phone, home phone if available
- 	 */
- 	xprintf("Login: %-15s\t\t\tName: %s\nDirectory: %-25s",
--		pn->name, pn->realname, pn->dir);
-+		pn->name, pn->realname ? pn->realname : "", pn->dir);
- 	xprintf("\tShell: %-s\n", *pn->shell ? pn->shell : _PATH_BSHELL);
- 
- 	/*
---- bsd-finger-0.17.orig/finger/net.c
-+++ bsd-finger-0.17/finger/net.c
-@@ -51,7 +51,7 @@
- #include <ctype.h>
- #include "finger.h"
- 
--void netfinger(const char *name) {
-+int netfinger(const char *name) {
- 	register FILE *fp;
- 	struct in_addr defaddr;
- 	register int c, sawret, ateol;
-@@ -62,7 +62,7 @@
- 	char *alist[1], *host;
- 
- 	host = strrchr(name, '@');
--	if (!host) return;
-+	if (!host) return 1;
- 	*host++ = '\0';
- 
- 	memset(&sn, 0, sizeof(sn));
-@@ -70,7 +70,7 @@
- 	sp = getservbyname("finger", "tcp");
- 	if (!sp) {
- 		eprintf("finger: tcp/finger: unknown service\n");
--		return;
-+		return 1;
- 	}
- 	sn.sin_port = sp->s_port;
- 
-@@ -78,7 +78,7 @@
- 	if (!hp) {
- 		if (!inet_aton(host, &defaddr)) {
- 			eprintf("finger: unknown host: %s\n", host);
--			return;
-+			return 1;
- 		}
- 		def.h_name = host;
- 		def.h_addr_list = alist;
-@@ -96,7 +96,7 @@
- 
- 	if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) {
- 		eprintf("finger: socket: %s\n", strerror(errno));
--		return;
-+		return 1;
- 	}
- 
- 	/* print hostname before connecting, in case it takes a while */
-@@ -104,7 +104,7 @@
- 	if (connect(s, (struct sockaddr *)&sn, sizeof(sn)) < 0) {
- 		eprintf("finger: connect: %s\n", strerror(errno));
- 		close(s);
--		return;
-+		return 1;
- 	}
- 
- 	/* -l flag for remote fingerd  */
-@@ -128,7 +128,7 @@
- 	if (!fp) {
- 		eprintf("finger: fdopen: %s\n", strerror(errno));
- 		close(s);
--		return;
-+		return 1;
- 	}
- 
- 	sawret = 0;
-@@ -152,4 +152,6 @@
- 	}
- 	if (!ateol) xputc('\n');
- 	fclose(fp);
-+
-+	return 0;
- }
---- bsd-finger-0.17.orig/finger/sprint.c
-+++ bsd-finger-0.17/finger/sprint.c
-@@ -40,7 +40,7 @@
- #endif /* not lint */
- 
- #include <sys/types.h>
--#include <sys/time.h>
-+#include <time.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
---- bsd-finger-0.17.orig/finger/util.c
-+++ bsd-finger-0.17/finger/util.c
-@@ -64,7 +64,7 @@
- 	struct stat sb;
- 
- 	/* No device for X console. Utmp entry by XDM login (":0"). */
--	if (w->tty[0] == ':') {
-+	if (strchr(w->tty, ':')) {
- 		w->idletime = 0;  /* would be nice to have it emit ??? */
- 		w->writable = 0;
- 		return;
-@@ -109,9 +109,8 @@
- 	 * fields[3] -> homephone
- 	 */
- 	nfields = 0;
--	for (p = strtok(bp, ","); p; p = strtok(NULL, ",")) {
--		if (*p==0) p = NULL;  // skip empties
--		if (nfields < 4) fields[nfields++] = p;
-+	while ((p = strsep(&bp, ","))) {
-+		if (nfields < 4) fields[nfields++] = *p ? p : NULL;
- 	}
- 	while (nfields<4) fields[nfields++] = NULL;
- 
-@@ -150,6 +149,9 @@
- 
- 		pn->realname = rname;
- 	}
-+	else {
-+		pn->realname = NULL;
-+	}
- 
- 	pn->office =      fields[1] ? strdup(fields[1]) : NULL;
- 	pn->officephone = fields[2] ? strdup(fields[2]) : NULL;
diff --git a/pkgs/tools/networking/bukubrow/default.nix b/pkgs/tools/networking/bukubrow/default.nix
index 8cd005a120aa6..7d7711dac1e4e 100644
--- a/pkgs/tools/networking/bukubrow/default.nix
+++ b/pkgs/tools/networking/bukubrow/default.nix
@@ -42,7 +42,7 @@ in rustPlatform.buildRustPackage rec {
     description = "A WebExtension for Buku, a command-line bookmark manager";
     homepage = "https://github.com/SamHH/bukubrow-host";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "bukubrow";
   };
 }
diff --git a/pkgs/tools/networking/croc/default.nix b/pkgs/tools/networking/croc/default.nix
index f6a16b11b54b5..04665914a5ee5 100644
--- a/pkgs/tools/networking/croc/default.nix
+++ b/pkgs/tools/networking/croc/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "croc";
-  version = "9.6.14";
+  version = "9.6.15";
 
   src = fetchFromGitHub {
     owner = "schollz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-0FtzPjaWJ1Q94rsx2WF7n24mQu2IsVBSQfddbPzQZ84=";
+    sha256 = "sha256-sRRL2+LgWowUFSiTHZudJqX404y36cko1i3WFd6kGV4=";
   };
 
-  vendorHash = "sha256-IsecKLKPJgM4IoKAn8k8ipSWamdTVXcfF9V3r87eApE=";
+  vendorHash = "sha256-VELBEnWdPfznlBdAdnHWyWZngPBQ+INNr+xfNQMw8yk=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/networking/curl-impersonate/default.nix b/pkgs/tools/networking/curl-impersonate/default.nix
index f4373e09b0523..be9f3f61df1c0 100644
--- a/pkgs/tools/networking/curl-impersonate/default.nix
+++ b/pkgs/tools/networking/curl-impersonate/default.nix
@@ -28,13 +28,13 @@
 let
   makeCurlImpersonate = { name, target }: stdenv.mkDerivation rec {
     pname = "curl-impersonate-${name}";
-    version = "0.5.4";
+    version = "0.6.1";
 
     src = fetchFromGitHub {
       owner = "lwthiker";
       repo = "curl-impersonate";
       rev = "v${version}";
-      hash = "sha256-LBGWFal2szqgURIBCLB84kHWpdpt5quvBBZu6buGj2A=";
+      hash = "sha256-ExmEhjJC8FPzx08RuKOhRxKgJ4Dh+ElEl+OUHzRCzZc=";
     };
 
     patches = [
@@ -145,7 +145,7 @@ let
         inherit (passthru.deps."boringssl.zip") name;
 
         src = passthru.deps."boringssl.zip";
-        vendorHash = "sha256-ISmRdumckvSu7hBXrjvs5ZApShDiGLdD3T5B0fJ1x2Q=";
+        vendorHash = "sha256-SNUsBiKOGWmkRdTVABVrlbLAVMfu0Q9IgDe+kFC5vXs=";
 
         nativeBuildInputs = [ unzip ];
 
diff --git a/pkgs/tools/networking/curl-impersonate/deps.nix b/pkgs/tools/networking/curl-impersonate/deps.nix
index 498616247dce9..1b04659f07413 100644
--- a/pkgs/tools/networking/curl-impersonate/deps.nix
+++ b/pkgs/tools/networking/curl-impersonate/deps.nix
@@ -2,9 +2,9 @@
 { fetchurl }:
 
 {
-  "curl-7.84.0.tar.xz" = fetchurl {
-    url = "https://curl.se/download/curl-7.84.0.tar.xz";
-    hash = "sha256-LRGLQ/VHv+W66AbY1HtOWW6lslpsHwgK70n7zYF8Xbg=";
+  "curl-8.1.1.tar.xz" = fetchurl {
+    url = "https://curl.se/download/curl-8.1.1.tar.xz";
+    hash = "sha256-CKlI4GGSlkVZfB73GU4HswiyIIT/A/p0ALRl5sBRSeU=";
   };
 
   "brotli-1.0.9.tar.gz" = fetchurl {
@@ -12,18 +12,18 @@
     hash = "sha256-+ejYHQQFumbRgVKa9CozVPg4yTkJX/mZMNpqqc32/kY=";
   };
 
-  "nss-3.87.tar.gz" = fetchurl {
-    url = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_87_RTM/src/nss-3.87-with-nspr-4.35.tar.gz";
-    hash = "sha256-63DqC1jc5pqkkOnp/s0TKn1kTh2j1jHhYzdqDcwRoCI=";
+  "nss-3.92.tar.gz" = fetchurl {
+    url = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_92_RTM/src/nss-3.92-with-nspr-4.35.tar.gz";
+    hash = "sha256-IcF2v/+27IQLX5hcf48BRoL0ovtVsGkkc0Fy1cBIbcU=";
   };
 
   "boringssl.zip" = fetchurl {
-    url = "https://github.com/google/boringssl/archive/3a667d10e94186fd503966f5638e134fe9fb4080.zip";
-    hash = "sha256-HsDIkd1x5IH49fUF07dJaabMIMsQygW+NI7GneULpA8=";
+    url = "https://github.com/google/boringssl/archive/1b7fdbd9101dedc3e0aa3fcf4ff74eacddb34ecc.zip";
+    hash = "sha256-daVVQvpxkuEL/8/+QtLOJkdO+ECYZE3P4qJmDjV1GM0=";
   };
 
-  "nghttp2-1.46.0.tar.bz2" = fetchurl {
-    url = "https://github.com/nghttp2/nghttp2/releases/download/v1.46.0/nghttp2-1.46.0.tar.bz2";
-    hash = "sha256-moKXjIcAcbdp8n0riBkct3/clFpRwdaFx/YafhP8Ryk=";
+  "nghttp2-1.56.0.tar.bz2" = fetchurl {
+    url = "https://github.com/nghttp2/nghttp2/releases/download/v1.56.0/nghttp2-1.56.0.tar.bz2";
+    hash = "sha256-L13Nv1d6LfUTokZGRUhMw10uTQczZT1jGTrlHbQd70E=";
   };
 }
diff --git a/pkgs/tools/networking/ddns-go/default.nix b/pkgs/tools/networking/ddns-go/default.nix
index 208989767a1f0..725468e1e6b30 100644
--- a/pkgs/tools/networking/ddns-go/default.nix
+++ b/pkgs/tools/networking/ddns-go/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "ddns-go";
-  version = "6.3.1";
+  version = "6.3.2";
 
   src = fetchFromGitHub {
     owner = "jeessy2";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-tUJym19w9vjnriYVjZdxzZCJlIvE1DTKCaPKjDpNIq0=";
+    hash = "sha256-efuz27N/culO5vxgWKXawD+yqxjDsAr0Hpv2I9YQePs=";
   };
 
-  vendorHash = "sha256-zUqsuph0fn1x4dwvBY0W0+S6SzS086SHya2ViNpDXGU=";
+  vendorHash = "sha256-ckgX+gftWJROe/RpxjuBmXSDxW/PlCOIkrx+erxCP40=";
 
   ldflags = [
     "-X main.version=${version}"
diff --git a/pkgs/tools/networking/grpcui/default.nix b/pkgs/tools/networking/grpcui/default.nix
index f4bca5a299113..92a5df036de13 100644
--- a/pkgs/tools/networking/grpcui/default.nix
+++ b/pkgs/tools/networking/grpcui/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "grpcui";
-  version = "1.3.3";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "fullstorydev";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-G4lVYwx8fYxuyHI2CzAfBQHQV/G4lf7zBwL8JTpnscA=";
+    sha256 = "sha256-OIwfLuWY7Y0t85v+P/0F55vEe0hNohlqMl16Omr8AF0=";
   };
 
-  vendorHash = "sha256-lw8HildV1RFTGLOf6FaitbXPxr4FtVGg7GxdzBVFiTM=";
+  vendorHash = "sha256-dEek7q8OjFgCn+f/qyiQL/5qu8RJp38vZk3OrBREHx4=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/grpcurl/default.nix b/pkgs/tools/networking/grpcurl/default.nix
index 252a148f6fc7b..3aadefc1d8713 100644
--- a/pkgs/tools/networking/grpcurl/default.nix
+++ b/pkgs/tools/networking/grpcurl/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "grpcurl";
-  version = "1.8.9";
+  version = "1.9.1";
 
   src = fetchFromGitHub {
     owner = "fullstorydev";
     repo = "grpcurl";
     rev = "v${version}";
-    sha256 = "sha256-zN/vleCph919HXZZ9wsXoJBXRT6y7gjyuQxnjRMzq00=";
+    sha256 = "sha256-OVlFOZD4+ZXRKl0Q0Dh5Etij/zeB1jTGoY8n13AyLa4=";
   };
 
   subPackages = [ "cmd/grpcurl" ];
 
-  vendorHash = "sha256-g5G966CuaVILGAgWunHAPrrkLjSv8pBj9R4bcLzyI+A=";
+  vendorHash = "sha256-KsPrJC4hGrGEny8wVWE1EG00qn+b1Rrvh4qK27VzgLU=";
 
   ldflags = [ "-s" "-w" "-X main.version=${version}" ];
 
diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix
deleted file mode 100644
index 6958a12cdf3dd..0000000000000
--- a/pkgs/tools/networking/i2p/default.nix
+++ /dev/null
@@ -1,86 +0,0 @@
-{ lib
-, stdenv
-, ps
-, coreutils
-, fetchurl
-, jdk
-, jre
-, ant
-, gettext
-, which
-, java-service-wrapper
-}:
-
-stdenv.mkDerivation (finalAttrs: {
-  pname = "i2p";
-  version = "2.4.0";
-
-  src = fetchurl {
-    urls = map (mirror: "${mirror}/${finalAttrs.version}/i2psource_${finalAttrs.version}.tar.bz2") [
-      "https://download.i2p2.de/releases"
-      "https://files.i2p-projekt.de"
-      "https://download.i2p2.no/releases"
-    ];
-    sha256 = "sha256-MO+K/K0P/6/ZTTCsMH+GtaazGOLB9EoCMAWEGh/NB3w=";
-  };
-
-  buildInputs = [ jdk ant gettext which ];
-  patches = [ ./i2p.patch ];
-
-  buildPhase = ''
-    export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
-    ant preppkg-linux-only
-  '';
-
-  installPhase = ''
-    set -B
-    mkdir -p $out/{bin,share}
-    cp -r pkg-temp/* $out
-
-    cp ${java-service-wrapper}/bin/wrapper $out/i2psvc
-    cp ${java-service-wrapper}/lib/wrapper.jar $out/lib
-    cp ${java-service-wrapper}/lib/libwrapper.so $out/lib
-
-    sed -i $out/i2prouter -i $out/runplain.sh \
-      -e "s#uname#${coreutils}/bin/uname#" \
-      -e "s#which#${which}/bin/which#" \
-      -e "s#%gettext%#${gettext}/bin/gettext#" \
-      -e "s#/usr/ucb/ps#${ps}/bin/ps#" \
-      -e "s#/usr/bin/tr#${coreutils}/bin/tr#" \
-      -e "s#%INSTALL_PATH#$out#" \
-      -e 's#%USER_HOME#$HOME#' \
-      -e "s#%SYSTEM_java_io_tmpdir#/tmp#" \
-      -e "s#%JAVA%#${jre}/bin/java#"
-    mv $out/runplain.sh $out/bin/i2prouter-plain
-    mv $out/man $out/share/
-    chmod +x $out/bin/* $out/i2psvc
-    rm $out/{osid,postinstall.sh,INSTALL-headless.txt}
-  '';
-
-  meta = with lib; {
-    description = "Applications and router for I2P, anonymity over the Internet";
-    homepage = "https://geti2p.net";
-    sourceProvenance = with sourceTypes; [
-      fromSource
-      binaryBytecode # source bundles dependencies as jars
-    ];
-    license = with licenses; [
-      asl20
-      boost
-      bsd2
-      bsd3
-      cc-by-30
-      cc0
-      epl10
-      gpl2
-      gpl3
-      lgpl21Only
-      lgpl3Only
-      mit
-      publicDomain
-    ];
-    platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
-    maintainers = with maintainers; [ joelmo ];
-    mainProgram = "i2prouter-plain";
-  };
-})
diff --git a/pkgs/tools/networking/i2p/i2p.patch b/pkgs/tools/networking/i2p/i2p.patch
deleted file mode 100644
index 3bb4da729173c..0000000000000
--- a/pkgs/tools/networking/i2p/i2p.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff --git a/installer/resources/i2prouter b/installer/resources/i2prouter
-index 365737d89..2ea14db3e 100644
---- a/installer/resources/i2prouter
-+++ b/installer/resources/i2prouter
-@@ -49,7 +49,7 @@ APP_LONG_NAME="I2P Service"
- 
- # gettext - we look for it in the path
- # fallback to echo is below, we can't set it to echo here.
--GETTEXT=$(which gettext > /dev/null 2>&1)
-+GETTEXT=%gettext%
- 
- # Where to install the systemd service
- SYSTEMD_SERVICE="/etc/systemd/system/${APP_NAME}.service"
-diff --git a/installer/resources/runplain.sh b/installer/resources/runplain.sh
-index eb4995dfe..0186cede3 100644
---- a/installer/resources/runplain.sh
-+++ b/installer/resources/runplain.sh
-@@ -25,7 +25,7 @@ CP=
- 
- # Try using the Java binary that I2P was installed with.
- # If it's not found, try looking in the system PATH.
--JAVA=$(which "%JAVA_HOME"/bin/java || which java)
-+JAVA=%JAVA%
- 
- if [ -z $JAVA ] || [ ! -x $JAVA ]; then
-     echo "Error: Cannot find java." >&2
-@@ -44,15 +44,4 @@ if [ $(uname -s) = "Darwin" ]; then
-     export JAVA_TOOL_OPTIONS="-Djava.awt.headless=true"
- fi
- JAVAOPTS="${MAXMEMOPT} -Djava.net.preferIPv4Stack=${PREFERv4} -Djava.library.path=${I2P}:${I2P}/lib -Di2p.dir.base=${I2P} -DloggerFilenameOverride=logs/log-router-@.txt"
--(
--    nohup ${JAVA} -cp \"${CP}\" ${JAVAOPTS} net.i2p.router.RouterLaunch > /dev/null 2>&1
--) &
--PID=$!
--
--if [ ! -z $PID ] && kill -0 $PID > /dev/null 2>&1 ; then
--    echo "I2P started [$PID]" >&2
--    echo $PID > "${I2PTEMP}/router.pid"
--else
--    echo "I2P failed to start." >&2
--    exit 1
--fi
-+exec ${JAVA} -cp \"${CP}\" ${JAVAOPTS} net.i2p.router.RouterLaunch
diff --git a/pkgs/tools/networking/i2pd/default.nix b/pkgs/tools/networking/i2pd/default.nix
index 01c07c0436a52..6ee9bafb61252 100644
--- a/pkgs/tools/networking/i2pd/default.nix
+++ b/pkgs/tools/networking/i2pd/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "i2pd";
-  version = "2.50.2";
+  version = "2.51.0";
 
   src = fetchFromGitHub {
     owner = "PurpleI2P";
     repo = pname;
     rev = version;
-    sha256 = "sha256-6BzY7t+bFYYwKnj+uuX+vWHg0w0BOuMGwgMg1yIF578=";
+    sha256 = "sha256-qMdlB7SyiYZcZL1DBDKXNUXlPnHcAxkAxUFpFrLs1go=";
   };
 
   buildInputs = [ boost zlib openssl ]
diff --git a/pkgs/tools/networking/lxi-tools/default.nix b/pkgs/tools/networking/lxi-tools/default.nix
index 5a5db2a970942..1fcb0676194aa 100644
--- a/pkgs/tools/networking/lxi-tools/default.nix
+++ b/pkgs/tools/networking/lxi-tools/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchFromGitHub
 , meson, ninja, cmake, pkg-config
 , liblxi, readline, lua, bash-completion
-, wrapGAppsHook
+, wrapGAppsHook4
 , glib, gtk4, gtksourceview5, libadwaita, json-glib
 , desktop-file-utils, appstream-glib
 , gsettings-desktop-schemas
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     meson ninja cmake pkg-config
-  ] ++ lib.optional withGui wrapGAppsHook;
+  ] ++ lib.optional withGui wrapGAppsHook4;
 
   buildInputs = [
     liblxi readline lua bash-completion
diff --git a/pkgs/tools/networking/minio-client/default.nix b/pkgs/tools/networking/minio-client/default.nix
index 68e67d88ba03b..9e27fd8e3f93b 100644
--- a/pkgs/tools/networking/minio-client/default.nix
+++ b/pkgs/tools/networking/minio-client/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "minio-client";
-  version = "2024-03-13T23-51-57Z";
+  version = "2024-03-30T15-29-52Z";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "mc";
     rev = "RELEASE.${version}";
-    sha256 = "sha256-aLIK7N7Xz39GnqhyaCzTx+UHnMN9/oIikxGlPeqM6XE=";
+    sha256 = "sha256-xt/WDQFE4uw/eno8RSIjxgjpahjbJVMMOapleuv5avE=";
   };
 
-  vendorHash = "sha256-DCjjHriD/J/MGcksJX3fn9wSaf+lXX73Dm5K1VU/2B8=";
+  vendorHash = "sha256-RwhkR3uQreSO1tq8R7ip7CY7E88MRa151HV8rT68YdQ=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/networking/mozillavpn/default.nix b/pkgs/tools/networking/mozillavpn/default.nix
index 49a3894cd49df..8e677c806622d 100644
--- a/pkgs/tools/networking/mozillavpn/default.nix
+++ b/pkgs/tools/networking/mozillavpn/default.nix
@@ -27,13 +27,13 @@
 
 let
   pname = "mozillavpn";
-  version = "2.20.0";
+  version = "2.21.0";
   src = fetchFromGitHub {
     owner = "mozilla-mobile";
     repo = "mozilla-vpn-client";
     rev = "v${version}";
     fetchSubmodules = true;
-    hash = "sha256-pPc7++m21DO349VJsaJZRk3xY+qqzgv6Jj5cwYQI3NI=";
+    hash = "sha256-XBvKSgMuWgMuV+is2G028UNQ4hID7tKiHFuMdPOZcsI=";
   };
   patches = [ ];
 
@@ -47,19 +47,19 @@ let
     inherit src patches;
     name = "${pname}-${version}-extension-bridge";
     preBuild = "cd extension/bridge";
-    hash = "sha256-wXr9+eyHBQcwEHy/DLixLZ/0DnFHhtiqrbl5q/7qx0U=";
+    hash = "sha256-1BXlp9AC9oQo/UzCtgNWVv8Er2ERoDLKdlTYXLzodMQ=";
   };
   signatureDeps = rustPlatform.fetchCargoTarball {
     inherit src patches;
     name = "${pname}-${version}-signature";
     preBuild = "cd signature";
-    hash = "sha256-7Gz4T5wF/xpbNJZqudEaEs67q1Y6NMUuXe6u34FWqIA=";
+    hash = "sha256-GtkDkeFdPsLuTpZh5UqIhFMpzW3HMkbz7npryOQkkGw=";
   };
   qtgleanDeps = rustPlatform.fetchCargoTarball {
     inherit src patches;
     name = "${pname}-${version}-qtglean";
     preBuild = "cd qtglean";
-    hash = "sha256-CTubwS4O3az8AHGa5YQgvjXQfh1j9w6jFmiX37aYjOw=";
+    hash = "sha256-HFmRcfxCcc83IPPIovbf3jNftp0olKQ6RzV8vPpCYAM=";
   };
 
 in
diff --git a/pkgs/tools/networking/netbird/default.nix b/pkgs/tools/networking/netbird/default.nix
index bbd6f238000d5..071ce4c46f46c 100644
--- a/pkgs/tools/networking/netbird/default.nix
+++ b/pkgs/tools/networking/netbird/default.nix
@@ -31,16 +31,16 @@ let
 in
 buildGoModule rec {
   pname = "netbird";
-  version = "0.26.6";
+  version = "0.27.2";
 
   src = fetchFromGitHub {
     owner = "netbirdio";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-LsgkUQ6uYdd1qPaINeza4MDDG0ynGhJ7jiZoAy8pjEE=";
+    hash = "sha256-W31eKA6v7pAJZ9El/CxEDMONTcpRfzn/Ldh1yIql+NQ=";
   };
 
-  vendorHash = "sha256-SSTpXila4eze3XA3vrTczBwt5XEjtLDvaCiQ5oi4FXg=";
+  vendorHash = "sha256-HJEZ1VrKS1MXKtpDjVorMiecb94+f1mBWPkWng4YqZk=";
 
   nativeBuildInputs = [ installShellFiles ] ++ lib.optional ui pkg-config;
 
diff --git a/pkgs/tools/networking/ockam/default.nix b/pkgs/tools/networking/ockam/default.nix
index 002fc0c899777..2d477923dde80 100644
--- a/pkgs/tools/networking/ockam/default.nix
+++ b/pkgs/tools/networking/ockam/default.nix
@@ -12,7 +12,7 @@
 
 let
   pname = "ockam";
-  version = "0.119.0";
+  version = "0.121.0";
 in
 rustPlatform.buildRustPackage {
   inherit pname version;
@@ -21,10 +21,10 @@ rustPlatform.buildRustPackage {
     owner = "build-trust";
     repo = pname;
     rev = "ockam_v${version}";
-    hash = "sha256-gZBlh8Rg6lChcvTBRzPDIQk2wEJep/3Hei9xaIi8cZo=";
+    hash = "sha256-qHvgqK8K6F69m511VbNcSNFVe/tKpf8uonsBIOz3uKA=";
   };
 
-  cargoHash = "sha256-0WzX6WsgUWGsToIX3cbiax4crhTbYuWI6EIF2xQWTxU=";
+  cargoHash = "sha256-1MCiC808VNg5SoHxomJ9WWJ1Pj0IrLky6nshHfK2Fpg=";
   nativeBuildInputs = [ git pkg-config ];
   buildInputs = [ openssl dbus ]
     ++ lib.optionals stdenv.isDarwin [ Security ];
diff --git a/pkgs/tools/networking/ooniprobe-cli/default.nix b/pkgs/tools/networking/ooniprobe-cli/default.nix
index 0bddb69220df8..d9015a6611667 100644
--- a/pkgs/tools/networking/ooniprobe-cli/default.nix
+++ b/pkgs/tools/networking/ooniprobe-cli/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "ooniprobe-cli";
-  version = "3.21.0";
+  version = "3.21.1";
 
   src = fetchFromGitHub {
     owner = "ooni";
     repo = "probe-cli";
     rev = "v${version}";
-    hash = "sha256-bV1eEuHYaqDKRImEMX9LP/3R3/lVpKpBfweRjucKtTc=";
+    hash = "sha256-H5QlyxNQdKGoTIdfh/neULakTddVIhXgMJ/wLbqvGbY=";
   };
 
   vendorHash = "sha256-I88cALmc8iTaVJ36ntQLw+wRMM2GLWMWLhv8EDJDRgg=";
diff --git a/pkgs/tools/networking/shadowfox/default.nix b/pkgs/tools/networking/shadowfox/default.nix
index 5b0eae5a595fa..d9fca5d4011e2 100644
--- a/pkgs/tools/networking/shadowfox/default.nix
+++ b/pkgs/tools/networking/shadowfox/default.nix
@@ -34,7 +34,7 @@ buildGoModule rec {
     description = "Universal dark theme for Firefox while adhering to the modern design principles set by Mozilla";
     homepage = "https://overdodactyl.github.io/ShadowFox/";
     license = licenses.mit;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     mainProgram = "shadowfox-updater";
   };
 }
diff --git a/pkgs/tools/networking/sing-box/default.nix b/pkgs/tools/networking/sing-box/default.nix
index 8552476e7df22..da73cd8d0f7a2 100644
--- a/pkgs/tools/networking/sing-box/default.nix
+++ b/pkgs/tools/networking/sing-box/default.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "sing-box";
-  version = "1.8.10";
+  version = "1.8.11";
 
   src = fetchFromGitHub {
     owner = "SagerNet";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-HKiTFDNzu42JNra7g+AyTxJ3RuHpvK7ONmKgk2nItT4=";
+    hash = "sha256-arAT23Cf72CcBVxsSK46eqVxTw8lHiHzzr2u2Xj0dcg=";
   };
 
-  vendorHash = "sha256-px90sebov5BbInJtRCGS30fyK3TThNN4XTMtdJhm0Uc=";
+  vendorHash = "sha256-JI8YB1o84xFcfG1p4SkWdhubZlp9q1THfj1Clb8TvHA=";
 
   tags = [
     "with_quic"
@@ -53,8 +53,8 @@ buildGoModule rec {
       --zsh  <(${emulator} $out/bin/sing-box completion zsh )
 
     substituteInPlace release/config/sing-box{,@}.service \
-      --replace "/usr/bin/sing-box" "$out/bin/sing-box" \
-      --replace "/bin/kill" "${coreutils}/bin/kill"
+      --replace-fail "/usr/bin/sing-box" "$out/bin/sing-box" \
+      --replace-fail "/bin/kill" "${coreutils}/bin/kill"
     install -Dm444 -t "$out/lib/systemd/system/" release/config/sing-box{,@}.service
   '';
 
diff --git a/pkgs/tools/networking/sitespeed-io/default.nix b/pkgs/tools/networking/sitespeed-io/default.nix
index 2226bfa0ce696..efffd6de379a0 100644
--- a/pkgs/tools/networking/sitespeed-io/default.nix
+++ b/pkgs/tools/networking/sitespeed-io/default.nix
@@ -24,13 +24,13 @@
 assert (!withFirefox && !withChromium) -> throw "Either `withFirefox` or `withChromium` must be enabled.";
 buildNpmPackage rec {
   pname = "sitespeed-io";
-  version = "33.4.0";
+  version = "33.5.0";
 
   src = fetchFromGitHub {
     owner = "sitespeedio";
     repo = "sitespeed.io";
     rev = "v${version}";
-    hash = "sha256-Yjp6sbMi4s23CecCYXxnUDQ9dc4SgnUnbBV8kLhv58U=";
+    hash = "sha256-CR2/EBFxwUPAWnOXD1sEV1XirSJy6ojOndRR8Y1Ir24=";
   };
 
   nodejs = nodejs_18;
@@ -46,7 +46,7 @@ buildNpmPackage rec {
 
   dontNpmBuild = true;
   npmInstallFlags = [ "--omit=dev" ];
-  npmDepsHash = "sha256-OT0dKF6dLuAZ5SgMVbrOyirJnpPNL5ygPjwvXqjKF1Q=";
+  npmDepsHash = "sha256-7MB5zc4b0cy0OzAKidcmBeBMor/ZsMfHlRBN/y9QKI4=";
 
   postInstall = ''
     mv $out/bin/sitespeed{.,-}io
diff --git a/pkgs/tools/networking/wireproxy/default.nix b/pkgs/tools/networking/wireproxy/default.nix
index 1ce31211f5b58..1c5eda9f1cd49 100644
--- a/pkgs/tools/networking/wireproxy/default.nix
+++ b/pkgs/tools/networking/wireproxy/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "wireproxy";
-  version = "1.0.7";
+  version = "1.0.8";
 
   src = fetchFromGitHub {
     owner = "pufferffish";
     repo = "wireproxy";
     rev = "v${version}";
-    hash = "sha256-lMTlocKtOg82dH8XU+bIgPhico3mueLAuTspAY88GFI=";
+    hash = "sha256-2gio+kyjIvaNjb/+M8M5YvbAPbQX+B9A/Qly2kyFZXw=";
   };
 
   ldflags = [
@@ -22,7 +22,7 @@ buildGoModule rec {
     "-X main.version=v${version}"
   ];
 
-  vendorHash = "sha256-V9W7Z8vgPdudNivfmGzJe1f6ebrZEqlG4AdIf2NNGrY=";
+  vendorHash = "sha256-u5/ppH+8mcR3AdPnA6vDFL4GwVzbUj679I4zBw80HU0=";
 
   passthru.tests.version = testers.testVersion {
     package = wireproxy;
diff --git a/pkgs/tools/networking/xh/default.nix b/pkgs/tools/networking/xh/default.nix
index 826987af508a1..e0b213a120b2e 100644
--- a/pkgs/tools/networking/xh/default.nix
+++ b/pkgs/tools/networking/xh/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "xh";
-  version = "0.21.0";
+  version = "0.22.0";
 
   src = fetchFromGitHub {
     owner = "ducaale";
     repo = "xh";
     rev = "v${version}";
-    sha256 = "sha256-nsxXNlDycn7W7X+AthYCFQu8i2bEPQv7r2LCbc3gFrE=";
+    sha256 = "sha256-hppfBiWJAsJXh6eERh4RYTmSOCNlxy2BcilRM6oafjk=";
   };
 
-  cargoHash = "sha256-THj8tE12P/K+t/R1xUxo042FIX6JP3riCvm2a8zVEzw=";
+  cargoHash = "sha256-pyOcrc8F+rdYWQtOEP6RZpaKeaMGNvc6eqFOVeBzK4k=";
 
   buildFeatures = lib.optional withNativeTls "native-tls";
 
diff --git a/pkgs/tools/package-management/apkg/default.nix b/pkgs/tools/package-management/apkg/default.nix
index 18b52f0bcdb89..aaf4d47f4c62d 100644
--- a/pkgs/tools/package-management/apkg/default.nix
+++ b/pkgs/tools/package-management/apkg/default.nix
@@ -4,7 +4,7 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "apkg";
-  version = "0.4.1";
+  version = "0.5.0";
   format = "pyproject";
 
   src = fetchFromGitLab {
@@ -12,7 +12,7 @@ python3Packages.buildPythonApplication rec {
     owner = "packaging";
     repo = pname;
     rev = "v${version}";
-    sha256 = "x7UYkqkF1XJ3OMfQpIQ4+27KI0dLvL42Wms5xQTY/H4=";
+    hash = "sha256-VQNUzbWIDo/cbCdtx8JxN5UUMBW3mQ2B42In4b3AA+A=";
   };
 
   propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/tools/package-management/nix-visualize/default.nix b/pkgs/tools/package-management/nix-visualize/default.nix
new file mode 100644
index 0000000000000..9f1ba8b4d769d
--- /dev/null
+++ b/pkgs/tools/package-management/nix-visualize/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, fetchFromGitHub
+, nix
+, python
+, matplotlib
+, networkx
+, pandas
+, pygraphviz
+, setuptools
+}:
+
+python.pkgs.buildPythonApplication rec {
+  version = "1.0.5-unstable-2024-01-17";
+  pname = "nix-visualize";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "craigmbooth";
+    repo = "nix-visualize";
+    rev = "5b9beae330ac940df56433d347494505e2038904";
+    hash = "sha256-VgEsR/Odddc7v6oq2tNcVwCYm08PhiqhZJueuEYCR0o=";
+  };
+
+  postInstall = ''
+    wrapProgram $out/bin/nix-visualize \
+      --prefix PATH : ${lib.makeBinPath [nix]}
+  '';
+
+  nativeBuildInputs = [ setuptools ];
+
+  propagatedBuildInputs = [
+    matplotlib
+    networkx
+    pandas
+    pygraphviz
+  ];
+
+  pythonImportsCheck = [ "nix_visualize" ];
+  # No tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Generate dependency graphs of a given nix package";
+    mainProgram = "nix-visualize";
+    homepage = "https://github.com/craigmbooth/nix-visualize";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ henrirosten ];
+  };
+}
diff --git a/pkgs/tools/package-management/nix/common.nix b/pkgs/tools/package-management/nix/common.nix
index 9c22b29755016..69e5db4b0aeb6 100644
--- a/pkgs/tools/package-management/nix/common.nix
+++ b/pkgs/tools/package-management/nix/common.nix
@@ -15,6 +15,7 @@ let
   atLeast210 = lib.versionAtLeast version "2.10pre";
   atLeast213 = lib.versionAtLeast version "2.13pre";
   atLeast214 = lib.versionAtLeast version "2.14pre";
+  atLeast219 = lib.versionAtLeast version "2.19pre";
   atLeast220 = lib.versionAtLeast version "2.20pre";
   atLeast221 = lib.versionAtLeast version "2.21pre";
   # Major.minor versions unaffected by CVE-2024-27297
@@ -147,6 +148,7 @@ self = stdenv.mkDerivation {
 
   installCheckInputs = lib.optionals atLeast221 [
     git
+  ] ++ lib.optionals atLeast219 [
     man
   ];
 
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 75d1442bd38fc..61053e491dbb3 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -248,11 +248,8 @@ in lib.makeExtensible (self: ({
   };
 
   nix_2_19 = common {
-    version = "2.19.3";
-    hash = "sha256-EtL6M0H5+0mFbFh+teVjm+0B+xmHoKwtBvigS5NMWoo=";
-    patches = [
-      ./patches/2_19/CVE-2024-27297.patch
-    ];
+    version = "2.19.4";
+    hash = "sha256-qXjyVmDm1SFWk1az3GWIsJ0fVG0nWet2FdldFOnUydI=";
   };
 
   nix_2_20 = common {
@@ -261,8 +258,8 @@ in lib.makeExtensible (self: ({
   };
 
   nix_2_21 = common {
-    version = "2.21.1";
-    hash = "sha256-iRtvOcJbohyhav+deEajI/Ln/LU/6WqSfLyXDQaNEro=";
+    version = "2.21.2";
+    hash = "sha256-ObaVDDPtnOeIE0t7m4OVk5G+OS6d9qYh+ktK67Fe/zE=";
   };
 
   # The minimum Nix version supported by Nixpkgs
diff --git a/pkgs/tools/package-management/nix/patches/2_19/CVE-2024-27297.patch b/pkgs/tools/package-management/nix/patches/2_19/CVE-2024-27297.patch
deleted file mode 100644
index e75b7577af1e5..0000000000000
--- a/pkgs/tools/package-management/nix/patches/2_19/CVE-2024-27297.patch
+++ /dev/null
@@ -1,407 +0,0 @@
-From ca05f6d2038a749f63205fccc4a4daa914a6b95b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?=
- <theophane.hufschmitt@tweag.io>
-Date: Mon, 12 Feb 2024 21:28:20 +0100
-Subject: [PATCH 1/4] Add a NixOS test for the sandbox escape
-
-Test that we can't leverage abstract unix domain sockets to leak file
-descriptors out of the sandbox and modify the path after it has been
-registered.
----
- tests/nixos/ca-fd-leak/default.nix | 90 ++++++++++++++++++++++++++++++
- tests/nixos/ca-fd-leak/sender.c    | 65 +++++++++++++++++++++
- tests/nixos/ca-fd-leak/smuggler.c  | 66 ++++++++++++++++++++++
- tests/nixos/default.nix            |  2 +
- 4 files changed, 223 insertions(+)
- create mode 100644 tests/nixos/ca-fd-leak/default.nix
- create mode 100644 tests/nixos/ca-fd-leak/sender.c
- create mode 100644 tests/nixos/ca-fd-leak/smuggler.c
-
-diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix
-new file mode 100644
-index 000000000..40e57ea02
---- /dev/null
-+++ b/tests/nixos/ca-fd-leak/default.nix
-@@ -0,0 +1,90 @@
-+# Nix is a sandboxed build system. But Not everything can be handled inside its
-+# sandbox: Network access is normally blocked off, but to download sources, a
-+# trapdoor has to exist. Nix handles this by having "Fixed-output derivations".
-+# The detail here is not important, but in our case it means that the hash of
-+# the output has to be known beforehand. And if you know that, you get a few
-+# rights: you no longer run inside a special network namespace!
-+#
-+# Now, Linux has a special feature, that not many other unices do: Abstract
-+# unix domain sockets! Not only that, but those are namespaced using the
-+# network namespace! That means that we have a way to create sockets that are
-+# available in every single fixed-output derivation, and also all processes
-+# running on the host machine! Now, this wouldn't be that much of an issue, as,
-+# well, the whole idea is that the output is pure, and all processes in the
-+# sandbox are killed before finalizing the output. What if we didn't need those
-+# processes at all? Unix domain sockets have a semi-known trick: you can pass
-+# file descriptors around!
-+# This makes it possible to exfiltrate a file-descriptor with write access to
-+# $out outside of the sandbox. And that file-descriptor can be used to modify
-+# the contents of the store path after it has been registered.
-+
-+{ config, ... }:
-+
-+let
-+  pkgs = config.nodes.machine.nixpkgs.pkgs;
-+
-+  # Simple C program that sends a a file descriptor to `$out` to a Unix
-+  # domain socket.
-+  # Compiled statically so that we can easily send it to the VM and use it
-+  # inside the build sandbox.
-+  sender = pkgs.runCommandWith {
-+    name = "sender";
-+    stdenv = pkgs.pkgsStatic.stdenv;
-+  } ''
-+    $CC -static -o $out ${./sender.c}
-+  '';
-+
-+  # Okay, so we have a file descriptor shipped out of the FOD now. But the
-+  # Nix store is read-only, right? .. Well, yeah. But this file descriptor
-+  # lives in a mount namespace where it is not! So even when this file exists
-+  # in the actual Nix store, we're capable of just modifying its contents...
-+  smuggler = pkgs.writeCBin "smuggler" (builtins.readFile ./smuggler.c);
-+
-+  # The abstract socket path used to exfiltrate the file descriptor
-+  socketName = "FODSandboxExfiltrationSocket";
-+in
-+{
-+  name = "ca-fd-leak";
-+
-+  nodes.machine =
-+    { config, lib, pkgs, ... }:
-+    { virtualisation.writableStore = true;
-+      nix.settings.substituters = lib.mkForce [ ];
-+      virtualisation.additionalPaths = [ pkgs.busybox-sandbox-shell sender smuggler pkgs.socat ];
-+    };
-+
-+  testScript = { nodes }: ''
-+    start_all()
-+
-+    machine.succeed("echo hello")
-+    # Start the smuggler server
-+    machine.succeed("${smuggler}/bin/smuggler ${socketName} >&2 &")
-+
-+    # Build the smuggled derivation.
-+    # This will connect to the smuggler server and send it the file descriptor
-+    machine.succeed(r"""
-+      nix-build -E '
-+        builtins.derivation {
-+          name = "smuggled";
-+          system = builtins.currentSystem;
-+          # look ma, no tricks!
-+          outputHashMode = "flat";
-+          outputHashAlgo = "sha256";
-+          outputHash = builtins.hashString "sha256" "hello, world\n";
-+          builder = "${pkgs.busybox-sandbox-shell}/bin/sh";
-+          args = [ "-c" "echo \"hello, world\" > $out; ''${${sender}} ${socketName}" ];
-+      }'
-+    """.strip())
-+
-+
-+    # Tell the smuggler server that we're done
-+    machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}")
-+
-+    # Check that the file was modified
-+    machine.succeed(r"""
-+      cat ./result
-+      test "$(cat ./result)" = "hello, world"
-+    """.strip())
-+  '';
-+
-+}
-diff --git a/tests/nixos/ca-fd-leak/sender.c b/tests/nixos/ca-fd-leak/sender.c
-new file mode 100644
-index 000000000..75e54fc8f
---- /dev/null
-+++ b/tests/nixos/ca-fd-leak/sender.c
-@@ -0,0 +1,65 @@
-+#include <sys/socket.h>
-+#include <sys/un.h>
-+#include <stdlib.h>
-+#include <stddef.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+#include <fcntl.h>
-+#include <errno.h>
-+#include <string.h>
-+#include <assert.h>
-+
-+int main(int argc, char **argv) {
-+
-+    assert(argc == 2);
-+
-+    int sock = socket(AF_UNIX, SOCK_STREAM, 0);
-+
-+    // Set up a abstract domain socket path to connect to.
-+    struct sockaddr_un data;
-+    data.sun_family = AF_UNIX;
-+    data.sun_path[0] = 0;
-+    strcpy(data.sun_path + 1, argv[1]);
-+
-+    // Now try to connect, To ensure we work no matter what order we are
-+    // executed in, just busyloop here.
-+    int res = -1;
-+    while (res < 0) {
-+        res = connect(sock, (const struct sockaddr *)&data,
-+            offsetof(struct sockaddr_un, sun_path)
-+              + strlen(argv[1])
-+              + 1);
-+        if (res < 0 && errno != ECONNREFUSED) perror("connect");
-+        if (errno != ECONNREFUSED) break;
-+    }
-+
-+    // Write our message header.
-+    struct msghdr msg = {0};
-+    msg.msg_control = malloc(128);
-+    msg.msg_controllen = 128;
-+
-+    // Write an SCM_RIGHTS message containing the output path.
-+    struct cmsghdr *hdr = CMSG_FIRSTHDR(&msg);
-+    hdr->cmsg_len = CMSG_LEN(sizeof(int));
-+    hdr->cmsg_level = SOL_SOCKET;
-+    hdr->cmsg_type = SCM_RIGHTS;
-+    int fd = open(getenv("out"), O_RDWR | O_CREAT, 0640);
-+    memcpy(CMSG_DATA(hdr), (void *)&fd, sizeof(int));
-+
-+    msg.msg_controllen = CMSG_SPACE(sizeof(int));
-+
-+    // Write a single null byte too.
-+    msg.msg_iov = malloc(sizeof(struct iovec));
-+    msg.msg_iov[0].iov_base = "";
-+    msg.msg_iov[0].iov_len = 1;
-+    msg.msg_iovlen = 1;
-+
-+    // Send it to the othher side of this connection.
-+    res = sendmsg(sock, &msg, 0);
-+    if (res < 0) perror("sendmsg");
-+    int buf;
-+
-+    // Wait for the server to close the socket, implying that it has
-+    // received the commmand.
-+    recv(sock, (void *)&buf, sizeof(int), 0);
-+}
-diff --git a/tests/nixos/ca-fd-leak/smuggler.c b/tests/nixos/ca-fd-leak/smuggler.c
-new file mode 100644
-index 000000000..82acf37e6
---- /dev/null
-+++ b/tests/nixos/ca-fd-leak/smuggler.c
-@@ -0,0 +1,66 @@
-+#include <sys/socket.h>
-+#include <sys/un.h>
-+#include <stdlib.h>
-+#include <stddef.h>
-+#include <stdio.h>
-+#include <unistd.h>
-+#include <assert.h>
-+
-+int main(int argc, char **argv) {
-+
-+    assert(argc == 2);
-+
-+    int sock = socket(AF_UNIX, SOCK_STREAM, 0);
-+
-+    // Bind to the socket.
-+    struct sockaddr_un data;
-+    data.sun_family = AF_UNIX;
-+    data.sun_path[0] = 0;
-+    strcpy(data.sun_path + 1, argv[1]);
-+    int res = bind(sock, (const struct sockaddr *)&data,
-+        offsetof(struct sockaddr_un, sun_path)
-+        + strlen(argv[1])
-+        + 1);
-+    if (res < 0) perror("bind");
-+
-+    res = listen(sock, 1);
-+    if (res < 0) perror("listen");
-+
-+    int smuggling_fd = -1;
-+
-+    // Accept the connection a first time to receive the file descriptor.
-+    fprintf(stderr, "%s\n", "Waiting for the first connection");
-+    int a = accept(sock, 0, 0);
-+    if (a < 0) perror("accept");
-+
-+    struct msghdr msg = {0};
-+    msg.msg_control = malloc(128);
-+    msg.msg_controllen = 128;
-+
-+    // Receive the file descriptor as sent by the smuggler.
-+    recvmsg(a, &msg, 0);
-+
-+    struct cmsghdr *hdr = CMSG_FIRSTHDR(&msg);
-+    while (hdr) {
-+        if (hdr->cmsg_level == SOL_SOCKET
-+          && hdr->cmsg_type == SCM_RIGHTS) {
-+
-+            // Grab the copy of the file descriptor.
-+            memcpy((void *)&smuggling_fd, CMSG_DATA(hdr), sizeof(int));
-+        }
-+
-+        hdr = CMSG_NXTHDR(&msg, hdr);
-+    }
-+    fprintf(stderr, "%s\n", "Got the file descriptor. Now waiting for the second connection");
-+    close(a);
-+
-+    // Wait for a second connection, which will tell us that the build is
-+    // done
-+    a = accept(sock, 0, 0);
-+    fprintf(stderr, "%s\n", "Got a second connection, rewriting the file");
-+    // Write a new content to the file
-+    if (ftruncate(smuggling_fd, 0)) perror("ftruncate");
-+    char * new_content = "Pwned\n";
-+    int written_bytes = write(smuggling_fd, new_content, strlen(new_content));
-+    if (written_bytes != strlen(new_content)) perror("write");
-+}
-diff --git a/tests/nixos/default.nix b/tests/nixos/default.nix
-index 4459aa664..4c1cf785c 100644
---- a/tests/nixos/default.nix
-+++ b/tests/nixos/default.nix
-@@ -40,4 +40,6 @@ in
-   setuid = lib.genAttrs
-     ["i686-linux" "x86_64-linux"]
-     (system: runNixOSTestFor system ./setuid.nix);
-+
-+  ca-fd-leak = runNixOSTestFor "x86_64-linux" ./ca-fd-leak;
- }
--- 
-2.42.0
-
-
-From 558dab42315f493aa4e8480a57c2d3b0834392ec Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?=
- <theophane.hufschmitt@tweag.io>
-Date: Tue, 13 Feb 2024 08:28:02 +0100
-Subject: [PATCH 2/4] Copy the output of fixed-output derivations before
- registering them
-
-It is possible to exfiltrate a file descriptor out of the build sandbox
-of FODs, and use it to modify the store path after it has been
-registered.
-To avoid that issue, don't register the output of the build, but a copy
-of it (that will be free of any leaked file descriptor).
----
- src/libstore/build/local-derivation-goal.cc | 6 ++++++
- src/libutil/file-system.cc                  | 5 +++++
- src/libutil/file-system.hh                  | 7 +++++++
- 3 files changed, 18 insertions(+)
-
-diff --git a/src/libstore/build/local-derivation-goal.cc b/src/libstore/build/local-derivation-goal.cc
-index a9f930773..d83c47d00 100644
---- a/src/libstore/build/local-derivation-goal.cc
-+++ b/src/libstore/build/local-derivation-goal.cc
-@@ -2543,6 +2543,12 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs()
-             [&](const DerivationOutput::CAFixed & dof) {
-                 auto & wanted = dof.ca.hash;
- 
-+                // Replace the output by a fresh copy of itself to make sure
-+                // that there's no stale file descriptor pointing to it
-+                Path tmpOutput = actualPath + ".tmp";
-+                copyFile(actualPath, tmpOutput, true);
-+                renameFile(tmpOutput, actualPath);
-+
-                 auto newInfo0 = newInfoFromCA(DerivationOutput::CAFloating {
-                     .method = dof.ca.method,
-                     .hashType = wanted.type,
-diff --git a/src/libutil/file-system.cc b/src/libutil/file-system.cc
-index c96effff9..777f83c30 100644
---- a/src/libutil/file-system.cc
-+++ b/src/libutil/file-system.cc
-@@ -616,6 +616,11 @@ void copy(const fs::directory_entry & from, const fs::path & to, bool andDelete)
-     }
- }
- 
-+void copyFile(const Path & oldPath, const Path & newPath, bool andDelete)
-+{
-+    return copy(fs::directory_entry(fs::path(oldPath)), fs::path(newPath), andDelete);
-+}
-+
- void renameFile(const Path & oldName, const Path & newName)
- {
-     fs::rename(oldName, newName);
-diff --git a/src/libutil/file-system.hh b/src/libutil/file-system.hh
-index 4637507b3..71db7d8bc 100644
---- a/src/libutil/file-system.hh
-+++ b/src/libutil/file-system.hh
-@@ -186,6 +186,13 @@ void renameFile(const Path & src, const Path & dst);
-  */
- void moveFile(const Path & src, const Path & dst);
- 
-+/**
-+ * Recursively copy the content of `oldPath` to `newPath`. If `andDelete` is
-+ * `true`, then also remove `oldPath` (making this equivalent to `moveFile`, but
-+ * with the guaranty that the destination will be “fresh”, with no stale inode
-+ * or file descriptor pointing to it).
-+ */
-+void copyFile(const Path & oldPath, const Path & newPath, bool andDelete);
- 
- /**
-  * Automatic cleanup of resources.
--- 
-2.42.0
-
-
-From 6adce5c3baddf20a5865a646a6d5117e83693497 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?=
- <7226587+thufschmitt@users.noreply.github.com>
-Date: Wed, 21 Feb 2024 17:32:36 +0100
-Subject: [PATCH 3/4] Fix a typo in a test comment
-
-Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
----
- tests/nixos/ca-fd-leak/default.nix | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix
-index 40e57ea02..a6ae72adc 100644
---- a/tests/nixos/ca-fd-leak/default.nix
-+++ b/tests/nixos/ca-fd-leak/default.nix
-@@ -80,7 +80,7 @@ in
-     # Tell the smuggler server that we're done
-     machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}")
- 
--    # Check that the file was modified
-+    # Check that the file was not modified
-     machine.succeed(r"""
-       cat ./result
-       test "$(cat ./result)" = "hello, world"
--- 
-2.42.0
-
-
-From 7a803d9d5460cc990f20eff7d4d5a3623298c15b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?=
- <theophane.hufschmitt@tweag.io>
-Date: Fri, 1 Mar 2024 09:31:05 +0100
-Subject: [PATCH 4/4] Add release notes
-
----
- doc/manual/rl-next/fod-sandbox-escape.md | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
- create mode 100644 doc/manual/rl-next/fod-sandbox-escape.md
-
-diff --git a/doc/manual/rl-next/fod-sandbox-escape.md b/doc/manual/rl-next/fod-sandbox-escape.md
-new file mode 100644
-index 000000000..ed451711e
---- /dev/null
-+++ b/doc/manual/rl-next/fod-sandbox-escape.md
-@@ -0,0 +1,14 @@
-+---
-+synopsis: Fix a FOD sandbox escape
-+issues:
-+prs:
-+---
-+
-+Cooperating Nix derivations could send file descriptors to files in the Nix
-+store to each other via Unix domain sockets in the abstract namespace. This
-+allowed one derivation to modify the output of the other derivation, after Nix
-+has registered the path as "valid" and immutable in the Nix database.
-+In particular, this allowed the output of fixed-output derivations to be
-+modified from their expected content.
-+
-+This isn't the case any more.
--- 
-2.42.0
diff --git a/pkgs/tools/package-management/pdm/default.nix b/pkgs/tools/package-management/pdm/default.nix
index 88ed0768b1d86..fd8539da9654e 100644
--- a/pkgs/tools/package-management/pdm/default.nix
+++ b/pkgs/tools/package-management/pdm/default.nix
@@ -1,8 +1,6 @@
 { lib
-, stdenv
 , python3
 , fetchFromGitHub
-, fetchpatch
 , fetchPypi
 , nix-update-script
 , runtimeShell
@@ -35,41 +33,46 @@ in
 with python.pkgs;
 buildPythonApplication rec {
   pname = "pdm";
-  version = "2.12.4";
+  version = "2.13.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-0Eh3Ni+Vz5/8HSw4uFH2k3BuSSiEDkiYauV22tV0FJY=";
+    hash = "sha256-4oK/HK8KCD/A+16JrW9518V5/1LHu1juhYfqPVu54Uo=";
   };
 
   nativeBuildInputs = [
-    pdm-backend
     installShellFiles
   ];
 
-  propagatedBuildInputs = [
+  build-system = [
+    pdm-backend
+  ];
+
+  dependencies = [
     blinker
-    certifi
-    cachecontrol
     dep-logic
+    filelock
     findpython
+    hishel
+    httpx
     installer
+    msgpack
     packaging
+    pbs-installer
     platformdirs
     pyproject-hooks
     python-dotenv
-    requests-toolbelt
     resolvelib
     rich
     shellingham
     tomlkit
     unearth
     virtualenv
-  ]
-  ++ cachecontrol.optional-dependencies.filecache
+  ] ++ httpx.optional-dependencies.socks
+  ++ pbs-installer.optional-dependencies.install
   ++ lib.optionals (pythonOlder "3.11") [
     tomli
   ]
@@ -100,7 +103,6 @@ buildPythonApplication rec {
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mock
-    pytest-rerunfailures
     pytest-xdist
     pytest-httpserver
   ] ++ lib.optional stdenv.isLinux first;
@@ -120,7 +122,9 @@ buildPythonApplication rec {
     "test_convert_setup_py_project"
     # pythonfinder isn't aware of nix's python infrastructure
     "test_use_wrapper_python"
-    "test_use_invalid_wrapper_python"
+
+    # touches the network
+    "test_find_candidates_from_find_links"
   ];
 
   __darwinAllowLocalNetworking = true;
@@ -134,7 +138,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://pdm-project.org";
     changelog = "https://github.com/pdm-project/pdm/releases/tag/${version}";
-    description = "A modern Python package manager with PEP 582 support";
+    description = "A modern Python package and dependency manager supporting the latest PEP standards";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
     mainProgram = "pdm";
diff --git a/pkgs/tools/security/browserpass/default.nix b/pkgs/tools/security/browserpass/default.nix
index b80b513b3d4be..463501a05eb06 100644
--- a/pkgs/tools/security/browserpass/default.nix
+++ b/pkgs/tools/security/browserpass/default.nix
@@ -69,6 +69,6 @@ buildGoModule rec {
     mainProgram = "browserpass";
     homepage = "https://github.com/browserpass/browserpass-native";
     license = licenses.isc;
-    maintainers = with maintainers; [ rvolosatovs infinisil ];
+    maintainers = with maintainers; [ rvolosatovs ];
   };
 }
diff --git a/pkgs/tools/security/bws/Cargo.lock b/pkgs/tools/security/bws/Cargo.lock
new file mode 100644
index 0000000000000..ca4305f8d0738
--- /dev/null
+++ b/pkgs/tools/security/bws/Cargo.lock
@@ -0,0 +1,4127 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "aes"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "ansi_colours"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a1558bd2075d341b9ca698ec8eb6fcc55a746b1fc4255585aad5b141d918a80"
+dependencies = [
+ "rgb",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.75"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+
+[[package]]
+name = "arc-swap"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+
+[[package]]
+name = "argon2"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17ba4cac0a46bc1d2912652a751c47f2a9f3a7fe89bcae2275d418f5270402f9"
+dependencies = [
+ "base64ct",
+ "blake2",
+ "cpufeatures",
+ "password-hash",
+]
+
+[[package]]
+name = "askama"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28"
+dependencies = [
+ "askama_derive",
+ "askama_escape",
+]
+
+[[package]]
+name = "askama_derive"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a0fc7dcf8bd4ead96b1d36b41df47c14beedf7b0301fc543d8f2384e66a2ec0"
+dependencies = [
+ "askama_parser",
+ "basic-toml",
+ "mime",
+ "mime_guess",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "askama_escape"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341"
+
+[[package]]
+name = "askama_parser"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c268a96e01a4c47c8c5c2472aaa570707e006a875ea63e819f75474ceedaf7b4"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "assert-json-diff"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "async-channel"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 2.5.3",
+ "futures-core",
+]
+
+[[package]]
+name = "async-compat"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f68a707c1feb095d8c07f8a65b9f506b117d30af431cab89374357de7c11461b"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "once_cell",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c"
+dependencies = [
+ "event-listener 4.0.0",
+ "event-listener-strategy",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "backtrace"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "base64"
+version = "0.21.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+
+[[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
+[[package]]
+name = "basic-toml"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f2139706359229bfa8f19142ac1155b4b80beafb7a60471ac5dd109d4a19778"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bat"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dcc9e5637c2330d8eb7b920f2aa5d9e184446c258466f825ea1412c7614cc86"
+dependencies = [
+ "ansi_colours",
+ "bincode",
+ "bytesize",
+ "clircle",
+ "console",
+ "content_inspector",
+ "encoding_rs",
+ "flate2",
+ "globset",
+ "home",
+ "nu-ansi-term 0.49.0",
+ "once_cell",
+ "path_abs",
+ "plist",
+ "semver",
+ "serde",
+ "serde_yaml",
+ "syntect",
+ "thiserror",
+ "unicode-width",
+]
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+
+[[package]]
+name = "bitwarden"
+version = "0.4.0"
+dependencies = [
+ "aes",
+ "argon2",
+ "base64 0.21.5",
+ "bitwarden-api-api",
+ "bitwarden-api-identity",
+ "cbc",
+ "chrono",
+ "data-encoding",
+ "getrandom 0.2.11",
+ "hkdf",
+ "hmac",
+ "lazy_static",
+ "log",
+ "num-bigint",
+ "num-traits",
+ "pbkdf2",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
+ "reqwest",
+ "rsa",
+ "schemars",
+ "serde",
+ "serde_json",
+ "serde_qs 0.12.0",
+ "serde_repr",
+ "sha1",
+ "sha2",
+ "subtle",
+ "thiserror",
+ "tokio",
+ "uniffi",
+ "uuid",
+ "wiremock",
+]
+
+[[package]]
+name = "bitwarden-api-api"
+version = "0.2.3"
+dependencies = [
+ "reqwest",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_repr",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "bitwarden-api-identity"
+version = "0.2.3"
+dependencies = [
+ "reqwest",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "serde_repr",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "bitwarden-c"
+version = "0.1.0"
+dependencies = [
+ "bitwarden-json",
+ "env_logger",
+ "tokio",
+]
+
+[[package]]
+name = "bitwarden-cli"
+version = "0.1.0"
+dependencies = [
+ "clap",
+ "color-eyre",
+ "inquire",
+ "supports-color",
+]
+
+[[package]]
+name = "bitwarden-json"
+version = "0.3.0"
+dependencies = [
+ "bitwarden",
+ "log",
+ "schemars",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "bitwarden-napi"
+version = "0.3.1"
+dependencies = [
+ "bitwarden-json",
+ "env_logger",
+ "log",
+ "napi",
+ "napi-build",
+ "napi-derive",
+]
+
+[[package]]
+name = "bitwarden-py"
+version = "0.1.0"
+dependencies = [
+ "bitwarden-json",
+ "pyo3",
+ "pyo3-asyncio",
+ "pyo3-build-config",
+ "pyo3-log",
+ "tokio",
+]
+
+[[package]]
+name = "bitwarden-uniffi"
+version = "0.1.0"
+dependencies = [
+ "async-lock",
+ "bitwarden",
+ "chrono",
+ "env_logger",
+ "openssl",
+ "schemars",
+ "uniffi",
+]
+
+[[package]]
+name = "bitwarden-wasm"
+version = "0.1.0"
+dependencies = [
+ "bitwarden-json",
+ "console_error_panic_hook",
+ "console_log",
+ "js-sys",
+ "log",
+ "serde",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-bindgen-test",
+]
+
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-padding"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bstr"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+
+[[package]]
+name = "bw"
+version = "0.0.2"
+dependencies = [
+ "bitwarden",
+ "bitwarden-cli",
+ "clap",
+ "color-eyre",
+ "env_logger",
+ "inquire",
+ "log",
+ "tempfile",
+ "tokio",
+]
+
+[[package]]
+name = "bws"
+version = "0.4.0"
+dependencies = [
+ "bat",
+ "bitwarden",
+ "chrono",
+ "clap",
+ "clap_complete",
+ "color-eyre",
+ "comfy-table",
+ "directories",
+ "env_logger",
+ "log",
+ "openssl",
+ "regex",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "supports-color",
+ "tempfile",
+ "thiserror",
+ "tokio",
+ "toml 0.8.8",
+ "uuid",
+]
+
+[[package]]
+name = "bytemuck"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+
+[[package]]
+name = "bytesize"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc"
+
+[[package]]
+name = "camino"
+version = "1.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "cbc"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_complete"
+version = "4.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bffe91f06a11b4b9420f62103854e90867812cd5d01557f853c5ee8e791b12ae"
+dependencies = [
+ "clap",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+
+[[package]]
+name = "clircle"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8e87cbed5354f17bd8ca8821a097fb62599787fe8f611743fad7ee156a0a600"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "serde",
+ "winapi",
+]
+
+[[package]]
+name = "color-eyre"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204"
+dependencies = [
+ "backtrace",
+ "color-spantrace",
+ "eyre",
+ "indenter",
+ "once_cell",
+ "owo-colors",
+ "tracing-error",
+]
+
+[[package]]
+name = "color-spantrace"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2"
+dependencies = [
+ "once_cell",
+ "owo-colors",
+ "tracing-core",
+ "tracing-error",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "comfy-table"
+version = "7.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686"
+dependencies = [
+ "crossterm 0.27.0",
+ "strum",
+ "strum_macros",
+ "unicode-width",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "console"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "unicode-width",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "console_error_panic_hook"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "console_log"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f"
+dependencies = [
+ "log",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "const-oid"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
+
+[[package]]
+name = "content_inspector"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossterm"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
+dependencies = [
+ "bitflags 1.3.2",
+ "crossterm_winapi",
+ "libc",
+ "mio",
+ "parking_lot",
+ "signal-hook",
+ "signal-hook-mio",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
+dependencies = [
+ "bitflags 2.4.1",
+ "crossterm_winapi",
+ "libc",
+ "parking_lot",
+ "winapi",
+]
+
+[[package]]
+name = "crossterm_winapi"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "ctor"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e"
+dependencies = [
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "data-encoding"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
+
+[[package]]
+name = "deadpool"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "421fe0f90f2ab22016f32a9881be5134fdd71c65298917084b0c7477cbc3856e"
+dependencies = [
+ "async-trait",
+ "deadpool-runtime",
+ "num_cpus",
+ "retain_mut",
+ "tokio",
+]
+
+[[package]]
+name = "deadpool-runtime"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63dfa964fe2a66f3fde91fc70b267fe193d822c7e603e2a675a49a7f46ad3f49"
+
+[[package]]
+name = "der"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
+dependencies = [
+ "const-oid",
+ "pem-rfc7468",
+ "zeroize",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "const-oid",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "directories"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d"
+
+[[package]]
+name = "either"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece"
+dependencies = [
+ "humantime",
+ "is-terminal",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[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.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "event-listener"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
+dependencies = [
+ "event-listener 4.0.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "eyre"
+version = "0.6.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799"
+dependencies = [
+ "indenter",
+ "once_cell",
+]
+
+[[package]]
+name = "fastrand"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+
+[[package]]
+name = "flate2"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[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 = "fs-err"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+
+[[package]]
+name = "futures-lite"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+dependencies = [
+ "fastrand 1.9.0",
+ "futures-core",
+ "futures-io",
+ "memchr",
+ "parking",
+ "pin-project-lite",
+ "waker-fn",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+
+[[package]]
+name = "futures-task"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
+
+[[package]]
+name = "futures-timer"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
+
+[[package]]
+name = "futures-util"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "generator"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e"
+dependencies = [
+ "cc",
+ "libc",
+ "log",
+ "rustversion",
+ "windows",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gimli"
+version = "0.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "globset"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "log",
+ "regex-automata 0.4.3",
+ "regex-syntax 0.8.2",
+]
+
+[[package]]
+name = "goblin"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d6b4de4a8eb6c46a8c77e1d3be942cb9a8bf073c22374578e5ba4b08ed0ff68"
+dependencies = [
+ "log",
+ "plain",
+ "scroll",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http",
+ "indexmap 2.1.0",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+
+[[package]]
+name = "hkdf"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
+dependencies = [
+ "hmac",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "home"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "http"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-types"
+version = "2.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad"
+dependencies = [
+ "anyhow",
+ "async-channel",
+ "base64 0.13.1",
+ "futures-lite",
+ "http",
+ "infer",
+ "pin-project-lite",
+ "rand 0.7.3",
+ "serde",
+ "serde_json",
+ "serde_qs 0.8.5",
+ "serde_urlencoded",
+ "url",
+]
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "hyper"
+version = "0.14.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2 0.4.10",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes",
+ "hyper",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indenter"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.3",
+]
+
+[[package]]
+name = "indoc"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
+
+[[package]]
+name = "infer"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac"
+
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "block-padding",
+ "generic-array",
+]
+
+[[package]]
+name = "inquire"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c33e7c1ddeb15c9abcbfef6029d8e29f69b52b6d6c891031b88ed91b5065803b"
+dependencies = [
+ "bitflags 1.3.2",
+ "crossterm 0.25.0",
+ "dyn-clone",
+ "lazy_static",
+ "newline-converter",
+ "thiserror",
+ "unicode-segmentation",
+ "unicode-width",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+dependencies = [
+ "hermit-abi",
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "is_ci"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb"
+
+[[package]]
+name = "itertools"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+dependencies = [
+ "spin",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.151"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
+
+[[package]]
+name = "libloading"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "libm"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
+name = "libredox"
+version = "0.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+dependencies = [
+ "bitflags 2.4.1",
+ "libc",
+ "redox_syscall",
+]
+
+[[package]]
+name = "line-wrap"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
+dependencies = [
+ "safemem",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+
+[[package]]
+name = "lock_api"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+
+[[package]]
+name = "loom"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
+dependencies = [
+ "cfg-if",
+ "generator",
+ "pin-utils",
+ "scoped-tls",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "memchr"
+version = "2.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+
+[[package]]
+name = "memoffset"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mime_guess"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
+dependencies = [
+ "mime",
+ "unicase",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
+dependencies = [
+ "libc",
+ "log",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "napi"
+version = "2.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1133249c46e92da921bafc8aba4912bf84d6c475f7625183772ed2d0844dc3a7"
+dependencies = [
+ "bitflags 2.4.1",
+ "ctor",
+ "napi-derive",
+ "napi-sys",
+ "once_cell",
+ "tokio",
+]
+
+[[package]]
+name = "napi-build"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4b4532cf86bfef556348ac65e561e3123879f0e7566cca6d43a6ff5326f13df"
+
+[[package]]
+name = "napi-derive"
+version = "2.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b5af262f1d8e660742eb722abc7113a5b3c3de4144d0ef23ede2518672ceff1"
+dependencies = [
+ "cfg-if",
+ "convert_case",
+ "napi-derive-backend",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "napi-derive-backend"
+version = "1.0.57"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ea236321b521d6926213a2021e407b0562e28a257c037a45919e414d2cdb4f8"
+dependencies = [
+ "convert_case",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "semver",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "napi-sys"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2503fa6af34dc83fb74888df8b22afe933b58d37daf7d80424b1c60c68196b8b"
+dependencies = [
+ "libloading",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "newline-converter"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f71d09d5c87634207f894c6b31b6a2b2c64ea3bdcf71bd5599fdbbe1600c00f"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.49.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c073d3c1930d0751774acf49e66653acecb416c3a54c6ec095a9b11caddb5a68"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-bigint-dig"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
+dependencies = [
+ "byteorder",
+ "lazy_static",
+ "libm",
+ "num-integer",
+ "num-iter",
+ "num-traits",
+ "rand 0.8.5",
+ "smallvec",
+ "zeroize",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "object"
+version = "0.32.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "oneshot"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f6640c6bda7731b1fdbab747981a0f896dd1fedaf9f4a53fa237a04a84431f4"
+dependencies = [
+ "loom",
+]
+
+[[package]]
+name = "onig"
+version = "6.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+ "once_cell",
+ "onig_sys",
+]
+
+[[package]]
+name = "onig_sys"
+version = "69.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45"
+dependencies = [
+ "bitflags 2.4.1",
+ "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 2.0.41",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-src"
+version = "300.2.1+3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fe476c29791a5ca0d1273c697e96085bbabbbea2ef7afd5617e78a4b40332d3"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.97"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b"
+dependencies = [
+ "cc",
+ "libc",
+ "openssl-src",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "owo-colors"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
+
+[[package]]
+name = "parking"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "password-hash"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166"
+dependencies = [
+ "base64ct",
+ "rand_core 0.6.4",
+ "subtle",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "path_abs"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3"
+dependencies = [
+ "std_prelude",
+]
+
+[[package]]
+name = "pbkdf2"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "pem-rfc7468"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
+dependencies = [
+ "base64ct",
+]
+
+[[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.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkcs1"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
+dependencies = [
+ "der",
+ "pkcs8",
+ "spki",
+]
+
+[[package]]
+name = "pkcs8"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+dependencies = [
+ "der",
+ "spki",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+
+[[package]]
+name = "plain"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
+
+[[package]]
+name = "plist"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef"
+dependencies = [
+ "base64 0.21.5",
+ "indexmap 2.1.0",
+ "line-wrap",
+ "quick-xml",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.70"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "pyo3"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b"
+dependencies = [
+ "cfg-if",
+ "indoc",
+ "libc",
+ "memoffset",
+ "parking_lot",
+ "pyo3-build-config",
+ "pyo3-ffi",
+ "pyo3-macros",
+ "unindent",
+]
+
+[[package]]
+name = "pyo3-asyncio"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ea6b68e93db3622f3bb3bf363246cf948ed5375afe7abff98ccbdd50b184995"
+dependencies = [
+ "futures",
+ "once_cell",
+ "pin-project-lite",
+ "pyo3",
+ "pyo3-asyncio-macros",
+ "tokio",
+]
+
+[[package]]
+name = "pyo3-asyncio-macros"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56c467178e1da6252c95c29ecf898b133f742e9181dca5def15dc24e19d45a39"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "pyo3-build-config"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5"
+dependencies = [
+ "once_cell",
+ "target-lexicon",
+]
+
+[[package]]
+name = "pyo3-ffi"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b"
+dependencies = [
+ "libc",
+ "pyo3-build-config",
+]
+
+[[package]]
+name = "pyo3-log"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c10808ee7250403bedb24bc30c32493e93875fef7ba3e4292226fe924f398bd"
+dependencies = [
+ "arc-swap",
+ "log",
+ "pyo3",
+]
+
+[[package]]
+name = "pyo3-macros"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b"
+dependencies = [
+ "proc-macro2",
+ "pyo3-macros-backend",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "pyo3-macros-backend"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.11",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
+dependencies = [
+ "getrandom 0.2.11",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.3",
+ "regex-syntax 0.8.2",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.2",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
+name = "reqwest"
+version = "0.11.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
+dependencies = [
+ "base64 0.21.5",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-tls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "mime_guess",
+ "native-tls",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "system-configuration",
+ "tokio",
+ "tokio-native-tls",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "retain_mut"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0"
+
+[[package]]
+name = "rgb"
+version = "0.8.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "rsa"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc"
+dependencies = [
+ "const-oid",
+ "digest",
+ "num-bigint-dig",
+ "num-integer",
+ "num-traits",
+ "pkcs1",
+ "pkcs8",
+ "rand_core 0.6.4",
+ "signature",
+ "spki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
+name = "rustix"
+version = "0.38.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
+dependencies = [
+ "bitflags 2.4.1",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+
+[[package]]
+name = "ryu"
+version = "1.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+
+[[package]]
+name = "safemem"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "schannel"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "schemars"
+version = "0.8.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29"
+dependencies = [
+ "chrono",
+ "dyn-clone",
+ "indexmap 1.9.3",
+ "schemars_derive",
+ "serde",
+ "serde_json",
+ "uuid",
+]
+
+[[package]]
+name = "schemars_derive"
+version = "0.8.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_derive_internals",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "scoped-tls"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "scroll"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da"
+dependencies = [
+ "scroll_derive",
+]
+
+[[package]]
+name = "scroll_derive"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "sdk-schemas"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "bitwarden",
+ "bitwarden-json",
+ "bitwarden-uniffi",
+ "itertools",
+ "schemars",
+ "serde_json",
+]
+
+[[package]]
+name = "security-framework"
+version = "2.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.193"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.193"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "serde_derive_internals"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_qs"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6"
+dependencies = [
+ "percent-encoding",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "serde_qs"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c"
+dependencies = [
+ "percent-encoding",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
+dependencies = [
+ "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",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.9.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c"
+dependencies = [
+ "indexmap 2.1.0",
+ "itoa",
+ "ryu",
+ "serde",
+ "unsafe-libyaml",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "signal-hook"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-mio"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
+dependencies = [
+ "libc",
+ "mio",
+ "signal-hook",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "signature"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
+dependencies = [
+ "digest",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[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.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
+
+[[package]]
+name = "smawk"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
+
+[[package]]
+name = "socket2"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "socket2"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+
+[[package]]
+name = "spki"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
+dependencies = [
+ "base64ct",
+ "der",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "std_prelude"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8207e78455ffdf55661170876f88daf85356e4edd54e0a3dbc79586ca1e50cbe"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strum"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
+
+[[package]]
+name = "strum_macros"
+version = "0.25.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
+name = "supports-color"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89"
+dependencies = [
+ "is-terminal",
+ "is_ci",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syntect"
+version = "5.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e02b4b303bf8d08bfeb0445cba5068a3d306b6baece1d5582171a9bf49188f91"
+dependencies = [
+ "bincode",
+ "bitflags 1.3.2",
+ "flate2",
+ "fnv",
+ "once_cell",
+ "onig",
+ "regex-syntax 0.7.5",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a"
+
+[[package]]
+name = "tempfile"
+version = "3.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+dependencies = [
+ "cfg-if",
+ "fastrand 2.0.1",
+ "redox_syscall",
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+dependencies = [
+ "smawk",
+ "unicode-linebreak",
+ "unicode-width",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.51"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.51"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "time"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
+dependencies = [
+ "deranged",
+ "itoa",
+ "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.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
+dependencies = [
+ "time-core",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "num_cpus",
+ "pin-project-lite",
+ "socket2 0.5.5",
+ "tokio-macros",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[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-util"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
+dependencies = [
+ "indexmap 2.1.0",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-error"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e"
+dependencies = [
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "matchers",
+ "nu-ansi-term 0.46.0",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-linebreak"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "uniffi"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "anyhow",
+ "camino",
+ "clap",
+ "uniffi_bindgen",
+ "uniffi_build",
+ "uniffi_core",
+ "uniffi_macros",
+]
+
+[[package]]
+name = "uniffi-bindgen"
+version = "0.1.0"
+dependencies = [
+ "uniffi",
+]
+
+[[package]]
+name = "uniffi_bindgen"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "anyhow",
+ "askama",
+ "camino",
+ "cargo_metadata",
+ "clap",
+ "fs-err",
+ "glob",
+ "goblin",
+ "heck",
+ "once_cell",
+ "paste",
+ "serde",
+ "textwrap",
+ "toml 0.5.11",
+ "uniffi_meta",
+ "uniffi_testing",
+ "uniffi_udl",
+]
+
+[[package]]
+name = "uniffi_build"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "anyhow",
+ "camino",
+ "uniffi_bindgen",
+]
+
+[[package]]
+name = "uniffi_checksum_derive"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "uniffi_core"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "anyhow",
+ "async-compat",
+ "bytes",
+ "camino",
+ "log",
+ "once_cell",
+ "oneshot",
+ "paste",
+ "static_assertions",
+]
+
+[[package]]
+name = "uniffi_macros"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "bincode",
+ "camino",
+ "fs-err",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn 2.0.41",
+ "toml 0.5.11",
+ "uniffi_build",
+ "uniffi_meta",
+]
+
+[[package]]
+name = "uniffi_meta"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "anyhow",
+ "bytes",
+ "siphasher",
+ "uniffi_checksum_derive",
+]
+
+[[package]]
+name = "uniffi_testing"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "anyhow",
+ "camino",
+ "cargo_metadata",
+ "fs-err",
+ "once_cell",
+]
+
+[[package]]
+name = "uniffi_udl"
+version = "0.25.2"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "anyhow",
+ "textwrap",
+ "uniffi_meta",
+ "uniffi_testing",
+ "weedle2",
+]
+
+[[package]]
+name = "unindent"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
+
+[[package]]
+name = "unsafe-libyaml"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b"
+
+[[package]]
+name = "url"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "uuid"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "waker-fn"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690"
+
+[[package]]
+name = "walkdir"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[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.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[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.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
+dependencies = [
+ "cfg-if",
+ "serde",
+ "serde_json",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
+
+[[package]]
+name = "wasm-bindgen-test"
+version = "0.3.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cf9242c0d27999b831eae4767b2a146feb0b27d332d553e605864acd2afd403"
+dependencies = [
+ "console_error_panic_hook",
+ "js-sys",
+ "scoped-tls",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-bindgen-test-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-test-macro"
+version = "0.3.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "794645f5408c9a039fd09f4d113cdfb2e7eba5ff1956b07bcf701cf4b394fe89"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.41",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "weedle2"
+version = "4.0.0"
+source = "git+https://github.com/mozilla/uniffi-rs?rev=23711c8151bbb794369aa1f9d383db386792dff9#23711c8151bbb794369aa1f9d383db386792dff9"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.51.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
+name = "winnow"
+version = "0.5.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c830786f7720c2fd27a1a0e27a709dbd3c4d009b56d098fc742d4f4eab91fe2"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "wiremock"
+version = "0.5.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13a3a53eaf34f390dd30d7b1b078287dd05df2aa2e21a589ccb80f5c7253c2e9"
+dependencies = [
+ "assert-json-diff",
+ "async-trait",
+ "base64 0.21.5",
+ "deadpool",
+ "futures",
+ "futures-timer",
+ "http-types",
+ "hyper",
+ "log",
+ "once_cell",
+ "regex",
+ "serde",
+ "serde_json",
+ "tokio",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
diff --git a/pkgs/tools/security/bws/default.nix b/pkgs/tools/security/bws/default.nix
index 5c3987319109b..aef7a39de2809 100644
--- a/pkgs/tools/security/bws/default.nix
+++ b/pkgs/tools/security/bws/default.nix
@@ -1,38 +1,49 @@
 { lib
 , rustPlatform
 , fetchFromGitHub
+, installShellFiles
 , pkg-config
 , oniguruma
 , openssl
 , stdenv
 , darwin
 , python3
+, perl
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "bws";
-  version = "0.3.0";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "bitwarden";
     repo = "sdk";
     rev = "bws-v${version}";
-    hash = "sha256-o+tmO9E881futhA/fN6+EX2yEBKnKUmKk/KilIt5vYY=";
+    hash = "sha256-oCAyUTVAUfXBEb2K7vkYBOzcwqCsm2wxEKsYLZcfm6w=";
   };
 
-  cargoHash = "sha256-nmsAfXNn1nqmqHzGD7jl2JNrif/nJycCJZWZYjv7G4c=";
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "uniffi-0.25.2" = "sha256-YckrtociJV3VKGs5DJ0a1r1Cvq06S/mtr9iL1kLmAi8=";
+    };
+  };
 
   nativeBuildInputs = [
+    installShellFiles
     pkg-config
+  ] ++ lib.optionals stdenv.isLinux [
+    perl
   ];
 
   buildInputs =
     [
       oniguruma
+    ] ++ lib.optionals stdenv.isLinux [
       openssl
     ]
     ++ lib.optionals stdenv.isDarwin [
-      darwin.apple_sdk.frameworks.Security
+      darwin.apple_sdk.frameworks.SystemConfiguration
     ];
 
   env = {
@@ -40,12 +51,21 @@ rustPlatform.buildRustPackage rec {
     RUSTONIG_SYSTEM_LIBONIG = true;
   };
 
-  buildAndTestSubdir = "crates/bws";
+  cargoBuildFlags = [ "--package" "bws" ];
+
+  cargoTestFlags = [ "--package" "bws" ];
+
+  postInstall = ''
+    installShellCompletion --cmd bws \
+      --bash <($out/bin/bws completions bash) \
+      --fish <($out/bin/bws completions fish) \
+      --zsh <($out/bin/bws completions zsh)
+  '';
 
   meta = {
-    changelog = "https://github.com/bitwarden/sdk/blob/${src.rev}/CHANGELOG.md";
+    changelog = "https://github.com/bitwarden/sdk/blob/${src.rev}/crates/bws/CHANGELOG.md";
     description = "Bitwarden Secrets Manager CLI";
-    homepage = "https://github.com/bitwarden/sdk";
+    homepage = "https://bitwarden.com/help/secrets-manager-cli/";
     license = lib.licenses.unfree; # BITWARDEN SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT
     mainProgram = "bws";
     maintainers = with lib.maintainers; [ dit7ya ];
diff --git a/pkgs/tools/security/chipsec/default.nix b/pkgs/tools/security/chipsec/default.nix
index 8842cbab248c5..689719237ed21 100644
--- a/pkgs/tools/security/chipsec/default.nix
+++ b/pkgs/tools/security/chipsec/default.nix
@@ -2,7 +2,7 @@
 , stdenv
 , fetchFromGitHub
 , kernel ? null
-, libelf
+, elfutils
 , nasm
 , python3
 , withDriver ? false
@@ -26,8 +26,9 @@ python3.pkgs.buildPythonApplication rec {
   KSRC = lib.optionalString withDriver "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
 
   nativeBuildInputs = [
-    libelf
     nasm
+  ] ++ lib.optionals (lib.meta.availableOn stdenv.buildPlatform elfutils) [
+    elfutils
   ] ++ lib.optionals withDriver kernel.moduleBuildDependencies;
 
   nativeCheckInputs = with python3.pkgs; [
diff --git a/pkgs/tools/security/cnquery/default.nix b/pkgs/tools/security/cnquery/default.nix
index c3e8caf06e478..a2f9cd1c4dc4f 100644
--- a/pkgs/tools/security/cnquery/default.nix
+++ b/pkgs/tools/security/cnquery/default.nix
@@ -1,28 +1,36 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
 }:
 
 buildGoModule rec {
   pname = "cnquery";
-  version = "10.9.2";
+  version = "10.11.1";
 
   src = fetchFromGitHub {
     owner = "mondoohq";
     repo = "cnquery";
-    rev = "v${version}";
-    hash = "sha256-4oAJ55qCUaqsJJ+memW078ZuKyvHoO71XhfowEg7dpg=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-0poDqU4R6sr1Fkpq0snFZ5gEUU2Es8V9NRcZpxQb/xU=";
   };
 
   subPackages = [ "apps/cnquery" ];
 
-  vendorHash = "sha256-M8U6M3ejRrbQMfTh4JWYRLMQLfaDwtPiJOUEywiH6sg=";
+  vendorHash = "sha256-5jbxZVSmqZ7VFDsBcgf1HIlVRUvewENT0k+YWgbnnrQ=";
+
+  ldflags = [
+    "-w"
+    "-s"
+  ];
 
   meta = with lib; {
-    description = "cloud-native, graph-based asset inventory";
+    description = "Cloud-native, graph-based asset inventory";
     longDescription = ''
-    cnquery is a cloud-native tool for querying your entire fleet. It answers thousands of questions about your infrastructure and integrates with over 300 resources across cloud accounts, Kubernetes, containers, services, VMs, APIs, and more.
-      '';
+      cnquery is a cloud-native tool for querying your entire fleet. It answers thousands of
+      questions about your infrastructure and integrates with over 300 resources across cloud
+      accounts, Kubernetes, containers, services, VMs, APIs, and more.
+    '';
     homepage = "https://mondoo.com/cnquery";
     changelog = "https://github.com/mondoohq/cnquery/releases/tag/v${version}";
     license = licenses.bsl11;
diff --git a/pkgs/tools/security/cnspec/default.nix b/pkgs/tools/security/cnspec/default.nix
index a88ead4f6f163..147388e08831c 100644
--- a/pkgs/tools/security/cnspec/default.nix
+++ b/pkgs/tools/security/cnspec/default.nix
@@ -6,18 +6,18 @@
 
 buildGoModule rec {
   pname = "cnspec";
-  version = "10.11.0";
+  version = "10.11.1";
 
   src = fetchFromGitHub {
     owner = "mondoohq";
     repo = "cnspec";
     rev = "refs/tags/v${version}";
-    hash = "sha256-z8pWAazoafyrsz3EmfhtHDBhmHHjkGFEIL5BftW79fg=";
+    hash = "sha256-rLKECheCsJldeiUn1PtOLN5T4y+pu8TGC95q11KF4NU=";
   };
 
   proxyVendor = true;
 
-  vendorHash = "sha256-6MVl8QuzxzcyFVP04ikO7B4Gk17e0TA4hxmL17OehCo=";
+  vendorHash = "sha256-INkE3jOTrJGOqXj/M/s142CFdhN1XzbW1h6SKmlbhJw=";
 
   subPackages = [ "apps/cnspec" ];
 
diff --git a/pkgs/tools/security/crowdsec/default.nix b/pkgs/tools/security/crowdsec/default.nix
index f9428bdd31706..06cbecad8474a 100644
--- a/pkgs/tools/security/crowdsec/default.nix
+++ b/pkgs/tools/security/crowdsec/default.nix
@@ -23,9 +23,9 @@ buildGoModule rec {
   ldflags = [
     "-s"
     "-w"
-    "-X github.com/crowdsecurity/go-cs-lib/pkg/version.Version=v${version}"
-    "-X github.com/crowdsecurity/go-cs-lib/pkg/version.BuildDate=1970-01-01_00:00:00"
-    "-X github.com/crowdsecurity/go-cs-lib/pkg/version.Tag=${src.rev}"
+    "-X github.com/crowdsecurity/go-cs-lib/version.Version=v${version}"
+    "-X github.com/crowdsecurity/go-cs-lib/version.BuildDate=1970-01-01_00:00:00"
+    "-X github.com/crowdsecurity/go-cs-lib/version.Tag=${src.rev}"
     "-X github.com/crowdsecurity/crowdsec/pkg/cwversion.Codename=alphaga"
     "-X github.com/crowdsecurity/crowdsec/pkg/csconfig.defaultConfigDir=/etc/crowdsec"
     "-X github.com/crowdsecurity/crowdsec/pkg/csconfig.defaultDataDir=/var/lib/crowdsec/data"
@@ -43,6 +43,11 @@ buildGoModule rec {
       --zsh <($out/bin/cscli completion zsh)
   '';
 
+  # It's important that the version is correctly set as it also determines feature capabilities
+  checkPhase = ''
+    $GOPATH/bin/cscli version 2>&1 | grep -q "version: v${version}"
+  '';
+
   meta = with lib; {
     homepage = "https://crowdsec.net/";
     changelog = "https://github.com/crowdsecurity/crowdsec/releases/tag/v${version}";
diff --git a/pkgs/tools/security/cyclonedx-gomod/default.nix b/pkgs/tools/security/cyclonedx-gomod/default.nix
index 1a00303ac96f4..2a27f7b6a35b9 100644
--- a/pkgs/tools/security/cyclonedx-gomod/default.nix
+++ b/pkgs/tools/security/cyclonedx-gomod/default.nix
@@ -1,20 +1,26 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
 }:
 
 buildGoModule rec {
   pname = "cyclonedx-gomod";
-  version = "1.6.0";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "CycloneDX";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-3YHlh7edRWU8plAJh96RDkrC9YUQjvV4vNGOxmbS0sA=";
+    repo = "cyclonedx-gomod";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-RM8ZH1mO+72ptoU7YKXlCZAyDhYZ7MFXyDYrqBQwsDI=";
   };
 
-  vendorHash = "sha256-0Fx9pOofcY5rpX6DU2xPeg7xEZ8ows/DWwyV5B7LHGY=";
+  vendorHash = "sha256-1ibMneSOYs5C6Ul8m/rVXVFBJHZrH1D5eWRwVVJ6a+A=";
+
+  ldflags = [
+    "-w"
+    "-s"
+  ];
 
   # Tests require network access and cyclonedx executable
   doCheck = false;
diff --git a/pkgs/tools/security/doppler/default.nix b/pkgs/tools/security/doppler/default.nix
index 1e860abc57cd7..cdeb12f08de2c 100644
--- a/pkgs/tools/security/doppler/default.nix
+++ b/pkgs/tools/security/doppler/default.nix
@@ -8,13 +8,13 @@
 
 buildGoModule rec {
   pname = "doppler";
-  version = "3.67.1";
+  version = "3.68.0";
 
   src = fetchFromGitHub {
     owner = "dopplerhq";
     repo = "cli";
     rev = version;
-    sha256 = "sha256-O49lBoazT3VNopXvBBhOynsla4W00VkiBAO0+i2rsbc=";
+    sha256 = "sha256-IKfLoCFJOGE200Mef660CQNMukEmpgIWo6ngOYvX5Hw=";
   };
 
   vendorHash = "sha256-NUHWKPszQH/pvnA+j65+bJ6t+C0FDRRbTviqkYztpE4=";
diff --git a/pkgs/tools/security/enum4linux-ng/default.nix b/pkgs/tools/security/enum4linux-ng/default.nix
index 6c67773b6dd3d..956e71fed9230 100644
--- a/pkgs/tools/security/enum4linux-ng/default.nix
+++ b/pkgs/tools/security/enum4linux-ng/default.nix
@@ -1,32 +1,31 @@
-{ lib
-, fetchFromGitHub
-, python3
-, samba
+{
+  lib,
+  fetchFromGitHub,
+  python3,
+  samba,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "enum4linux-ng";
-  version = "1.3.2";
+  version = "1.3.3";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "cddmp";
     repo = "enum4linux-ng";
     rev = "refs/tags/v${version}";
-    hash = "sha256-O3TZcCn2kRLrMjQPVg8F5Q2ri968xRbXrdnfytfMkYM=";
+    hash = "sha256-VpNYgdgvsQG5UcxoyyLCj5ijJdIKKhCSqnHTvTgD4lA=";
   };
 
-  build-system = with python3.pkgs; [
-    setuptools
-  ];
+  build-system = with python3.pkgs; [ setuptools ];
 
-  dependencies = [
-    samba
-  ] ++ (with python3.pkgs; [
-    impacket
-    ldap3
-    pyyaml
-  ]);
+  dependencies =
+    [ samba ]
+    ++ (with python3.pkgs; [
+      impacket
+      ldap3
+      pyyaml
+    ]);
 
   # It's only a script and not a Python module. Project has no tests
   doCheck = false;
diff --git a/pkgs/tools/security/exploitdb/default.nix b/pkgs/tools/security/exploitdb/default.nix
index 37b493c1f1e09..23d7ed0f8657f 100644
--- a/pkgs/tools/security/exploitdb/default.nix
+++ b/pkgs/tools/security/exploitdb/default.nix
@@ -1,23 +1,22 @@
-{ lib
-, stdenv
-, fetchFromGitLab
-, makeWrapper
+{
+  lib,
+  stdenv,
+  fetchFromGitLab,
+  makeWrapper,
 }:
 
 stdenv.mkDerivation rec {
   pname = "exploitdb";
-  version = "2024-04-04";
+  version = "2024-04-09";
 
   src = fetchFromGitLab {
     owner = "exploit-database";
-    repo = pname;
+    repo = "exploitdb";
     rev = "refs/tags/${version}";
-    hash = "sha256-qWmHY2CNZBY3kaWaru7jXJuPZOH96+Ea/8pUT0oKHF0=";
+    hash = "sha256-dNWApfe7Oxpm9SGX4L1lXpM2DUWXtLsg5RF+OkGlWcs=";
   };
 
-  nativeBuildInputs = [
-    makeWrapper
-  ];
+  nativeBuildInputs = [ makeWrapper ];
 
   installPhase = ''
     runHook preInstall
@@ -28,10 +27,17 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    homepage = "https://gitlab.com/exploit-database/exploitdb";
     description = "Archive of public exploits and corresponding vulnerable software";
-    license = with licenses; [ gpl2Plus gpl3Plus mit ];
-    maintainers = with maintainers; [ applePrincess fab ];
+    homepage = "https://gitlab.com/exploit-database/exploitdb";
+    license = with licenses; [
+      gpl2Plus
+      gpl3Plus
+      mit
+    ];
+    maintainers = with maintainers; [
+      applePrincess
+      fab
+    ];
     mainProgram = "searchsploit";
     platforms = platforms.unix;
   };
diff --git a/pkgs/tools/security/fulcio/default.nix b/pkgs/tools/security/fulcio/default.nix
index 46b533e4e68a7..2681c7126ebe1 100644
--- a/pkgs/tools/security/fulcio/default.nix
+++ b/pkgs/tools/security/fulcio/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "fulcio";
-  version = "1.4.4";
+  version = "1.4.5";
 
   src = fetchFromGitHub {
     owner = "sigstore";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-zL+53GIGDQagWtsSHQT1Gn1hZUCpYF3uYKXmJWFGy7k=";
+    sha256 = "sha256-cuBL+LvUXp4Ke+88jK/0cYaG072CFz3RG/kunXHzkA8=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
@@ -20,7 +20,7 @@ buildGoModule rec {
       find "$out" -name .git -print0 | xargs -0 rm -rf
     '';
   };
-  vendorHash = "sha256-B4/SIY9G5uEP+P+oSdhaMM7HRaHm5nq2jqXdIWxdP+8=";
+  vendorHash = "sha256-7QifP5dgKT7b3lruB+P6c0Cc/BgL4I+FnkzFIztt0oM=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/security/gallia/default.nix b/pkgs/tools/security/gallia/default.nix
index 8279227f3d28b..be66306c331bb 100644
--- a/pkgs/tools/security/gallia/default.nix
+++ b/pkgs/tools/security/gallia/default.nix
@@ -1,31 +1,29 @@
-{ lib
-, fetchFromGitHub
-, python3
-, cacert
+{
+  lib,
+  fetchFromGitHub,
+  python3,
+  cacert,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "gallia";
-  version = "1.6.0";
+  version = "1.7.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Fraunhofer-AISEC";
     repo = "gallia";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LvzEyBkhji7ruVVO2EpqM8pKOcTX8Dnkqu/GtWOfMZs=";
+    hash = "sha256-hLGaImYkv6/1Wv1a+0tKmW4qmV4akNoyd0RXopJjetI=";
   };
 
-  nativeBuildInputs = with python3.pkgs; [
-    poetry-core
-    pythonRelaxDepsHook
-  ];
+  pythonRelaxDeps = [ "httpx" ];
 
-  pythonRelaxDeps = [
-    "httpx"
-  ];
+  build-system = with python3.pkgs; [ poetry-core ];
 
-  propagatedBuildInputs = with python3.pkgs; [
+  nativeBuildInputs = with python3.pkgs; [ pythonRelaxDepsHook ];
+
+  dependencies = with python3.pkgs; [
     aiofiles
     aiohttp
     aiosqlite
@@ -51,9 +49,7 @@ python3.pkgs.buildPythonApplication rec {
     pytest-asyncio
   ];
 
-  pythonImportsCheck = [
-    "gallia"
-  ];
+  pythonImportsCheck = [ "gallia" ];
 
   preCheck = ''
     export PATH=$out/bin:$PATH
@@ -64,7 +60,10 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/Fraunhofer-AISEC/gallia";
     changelog = "https://github.com/Fraunhofer-AISEC/gallia/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
-    maintainers = with maintainers; [ fab rumpelsepp ];
+    maintainers = with maintainers; [
+      fab
+      rumpelsepp
+    ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch b/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch
index 7fb7d53e352fc..7378878a648a4 100644
--- a/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch
+++ b/pkgs/tools/security/ghidra/0001-Use-protobuf-gradle-plugin.patch
@@ -1,3 +1,16 @@
+From ffb6777d58f068db7e14372415154cd93f77766e Mon Sep 17 00:00:00 2001
+From: roblabla <unfiltered@roblab.la>
+Date: Wed, 31 Jan 2024 13:19:55 +0100
+Subject: [PATCH] Use com.google.protobuf:protobuf-gradle-plugin
+
+---
+ Ghidra/Debug/Debugger-gadp/build.gradle      |  7 +-
+ Ghidra/Debug/Debugger-isf/build.gradle       |  8 +-
+ Ghidra/Debug/Debugger-rmi-trace/build.gradle | 14 +--
+ build.gradle                                 |  6 ++
+ gradle/debugger/hasProtobuf.gradle           | 94 --------------------
+ 5 files changed, 26 insertions(+), 103 deletions(-)
+
 diff --git a/Ghidra/Debug/Debugger-gadp/build.gradle b/Ghidra/Debug/Debugger-gadp/build.gradle
 index 9e1c57faf..3a3242eb5 100644
 --- a/Ghidra/Debug/Debugger-gadp/build.gradle
@@ -43,7 +56,7 @@ index d135294a0..785681ca2 100644
  	api project(':Framework-AsyncComm')
  	api project(':Framework-Debugging')
 diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
-index eec00786e..666cccafc 100644
+index 40fbc17ab..7517ffe6e 100644
 --- a/Ghidra/Debug/Debugger-rmi-trace/build.gradle
 +++ b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
 @@ -18,12 +18,17 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
@@ -63,17 +76,23 @@ index eec00786e..666cccafc 100644
 +	}
 +}
  dependencies {
+ 	api project(':Pty')
  	api project(':Debugger')
- }
-@@ -36,7 +41,7 @@ task generateProtoPy {
+@@ -44,12 +49,9 @@ task generateProtoPy {
  	ext.outdir = file("build/generated/source/proto/main/py")
  	outputs.dir(outdir)
  	inputs.files(src)
 -	dependsOn(configurations.protocArtifact)
 +	dependsOn(protobuf.generateProtoTasks.all())
  	doLast {
- 		def exe = configurations.protocArtifact.first()
- 		if (!isCurrentWindows()) {
+-		def exe = configurations.protocArtifact.first()
+-		if (!isCurrentWindows()) {
+-			exe.setExecutable(true)
+-		}
++		def exe = protobuf.tools.protoc.path
+ 		exec {
+ 			commandLine exe, "--python_out=$outdir", "-I$srcdir"
+ 			args src
 diff --git a/build.gradle b/build.gradle
 index b0c717fb1..5f56506a5 100644
 --- a/build.gradle
@@ -92,10 +111,9 @@ index b0c717fb1..5f56506a5 100644
  }
  else {	
 diff --git a/gradle/debugger/hasProtobuf.gradle b/gradle/debugger/hasProtobuf.gradle
-deleted file mode 100644
-index 23b4ce74b..000000000
+index 23b4ce74b..e69de29bb 100644
 --- a/gradle/debugger/hasProtobuf.gradle
-+++ /dev/null
++++ b/gradle/debugger/hasProtobuf.gradle
 @@ -1,94 +0,0 @@
 -/* ###
 - * IP: GHIDRA
@@ -191,3 +209,6 @@ index 23b4ce74b..000000000
 -	}
 -}
 -zipSourceSubproject.dependsOn generateProto
+-- 
+2.42.0
+
diff --git a/pkgs/tools/security/ghidra/build.nix b/pkgs/tools/security/ghidra/build.nix
index 8b9f2aaca0077..cb658615f3047 100644
--- a/pkgs/tools/security/ghidra/build.nix
+++ b/pkgs/tools/security/ghidra/build.nix
@@ -10,19 +10,18 @@
 , icoutils
 , xcbuild
 , protobuf
-, fetchurl
 }:
 
 let
   pkg_path = "$out/lib/ghidra";
   pname = "ghidra";
-  version = "11.0";
+  version = "11.0.2";
 
   src = fetchFromGitHub {
     owner = "NationalSecurityAgency";
     repo = "Ghidra";
     rev = "Ghidra_${version}_build";
-    hash = "sha256-LVtDqgceZUrMriNy6+yK/ruBrTI8yx6hzTaPa1BTGlc=";
+    hash = "sha256-Q5nolgqBG2LFVoEeEtzEPTt/cAHubPlRIFt3SYX9z1Y=";
   };
 
   gradle = gradle_7;
@@ -92,7 +91,7 @@ HERE
     '';
     outputHashAlgo = "sha256";
     outputHashMode = "recursive";
-    outputHash = "sha256-KT+XXowCNaNfOiPzYLwbPMaF84omKFobHkkNqZ6oyUA=";
+    outputHash = "sha256-nKfJiGoZlDEpbCmYVKNZXz2PYIosCd4nPFdy3MfprHc=";
   };
 
 in stdenv.mkDerivation {
@@ -106,13 +105,6 @@ in stdenv.mkDerivation {
 
   patches = [
     ./0001-Use-protobuf-gradle-plugin.patch
-    # we use fetchurl since the fetchpatch normalization strips the whole diff
-    # https://github.com/NixOS/nixpkgs/issues/266556
-    (fetchurl {
-      name = "0002-remove-executable-bit.patch";
-      url = "https://github.com/NationalSecurityAgency/ghidra/commit/e2a945624b74e5d42dc85e9c1f992315dd154db1.diff";
-      sha256 = "07mjfl7hvag2akk65g4cknp330qlk07dgbmh20dyg9qxzmk91fyq";
-    })
   ];
 
   buildPhase = ''
@@ -124,8 +116,6 @@ in stdenv.mkDerivation {
 
     sed -i "s#mavenLocal()#mavenLocal(); maven { url '${deps}/maven' }#g" build.gradle
 
-    rm -v Ghidra/Debug/Debugger-rmi-trace/build.gradle.orig
-
     gradle --offline --no-daemon --info -Dorg.gradle.java.home=${openjdk17} buildGhidra
   '';
 
diff --git a/pkgs/tools/security/gitleaks/default.nix b/pkgs/tools/security/gitleaks/default.nix
index f1702e4468b54..1b6e69631c078 100644
--- a/pkgs/tools/security/gitleaks/default.nix
+++ b/pkgs/tools/security/gitleaks/default.nix
@@ -54,5 +54,6 @@ buildGoModule rec {
     changelog = "https://github.com/zricethezav/gitleaks/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "gitleaks";
   };
 }
diff --git a/pkgs/tools/security/gopass/default.nix b/pkgs/tools/security/gopass/default.nix
index 2b17f935d5113..5cc6624b721d9 100644
--- a/pkgs/tools/security/gopass/default.nix
+++ b/pkgs/tools/security/gopass/default.nix
@@ -13,7 +13,7 @@
 
 buildGoModule rec {
   pname = "gopass";
-  version = "1.15.12";
+  version = "1.15.13";
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
 
@@ -21,10 +21,10 @@ buildGoModule rec {
     owner = "gopasspw";
     repo = "gopass";
     rev = "v${version}";
-    hash = "sha256-sg3I/h0mkkWmK4GD1yoX14gM2oqwRjMXpX3KULHFJsg=";
+    hash = "sha256-FoDb4+9x8waLWBk4d0TclpReu60vzNGE+8GQmKMmcMQ=";
   };
 
-  vendorHash = "sha256-jbwtxOfBL/5aXdWcsXZ5HQi83Oy00SSnLcvuWeCPBug=";
+  vendorHash = "sha256-Om4ne8oyZBr6a4dgBIvd0NZaDwmmC68pg8D+1UApzLw=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/git-credential.nix b/pkgs/tools/security/gopass/git-credential.nix
index cf05591bbbfce..c2fe96331236d 100644
--- a/pkgs/tools/security/gopass/git-credential.nix
+++ b/pkgs/tools/security/gopass/git-credential.nix
@@ -2,30 +2,21 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
-, fetchpatch
 , gopass
 }:
 
 buildGoModule rec {
   pname = "git-credential-gopass";
-  version = "1.15.12";
+  version = "1.15.13";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "git-credential-gopass";
     rev = "v${version}";
-    hash = "sha256-5j5+so4LT3x+epEZf9OVn/kLNHBk2ENQxxRrzbziEA4=";
+    hash = "sha256-X2i0w5sJXteCI1F1PAtIzElAD51I/nk1DPkBlQV5fxs=";
   };
 
-  patches = [
-    # go mod tidy. Remove with next release
-    (fetchpatch {
-      url = "https://github.com/gopasspw/git-credential-gopass/commit/88d11d2b1b49f00b7fba9a917cf90f7ea14c9d1b.patch";
-      hash = "sha256-mXxI9GXan0zYL8msL83VLqxOp4oAOwMyCOFaUOLAg5E=";
-    })
-  ];
-
-  vendorHash = "sha256-y1PH0+tt/kcHw2I4LWD2XfLud3JtsYqrRd/yVRPdaTA=";
+  vendorHash = "sha256-s1Zouw1619DbGjnZY26N6En91lzDaeDRZmul/te2z7M=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/hibp.nix b/pkgs/tools/security/gopass/hibp.nix
index c9fca15f90582..02dcaa31206db 100644
--- a/pkgs/tools/security/gopass/hibp.nix
+++ b/pkgs/tools/security/gopass/hibp.nix
@@ -2,30 +2,21 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
-, fetchpatch
 , gopass
 }:
 
 buildGoModule rec {
   pname = "gopass-hibp";
-  version = "1.15.12";
+  version = "1.15.13";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-hibp";
     rev = "v${version}";
-    hash = "sha256-5BnCaxF2XZ4f26KsTbapcZ2+Ii58nR/14pCj0c0QLKE=";
+    hash = "sha256-ja9/iS6422ygnXD6lsowjmlKbNloS0Zr3CkOkO0ieus=";
   };
 
-  patches = [
-    # go mod tidy. Remove with next release
-    (fetchpatch {
-      url = "https://github.com/gopasspw/gopass-hibp/commit/cdfdbc6da154874c74d7c8fc83bb11a98dd8fd81.patch";
-      hash = "sha256-jCzg3c8EizhoRYvWUZCys6/q2ChVWy/psPofNGIYdxs=";
-    })
-  ];
-
-  vendorHash = "sha256-GLqtwUg3fa1okdPoQBkF+ygpm8GLmDyIyUiC7/TTTaE=";
+  vendorHash = "sha256-FI/GXPyibcQpNNHWPVSp4diFfbRPv2A8BFi4nRXCU+Y=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/jsonapi.nix b/pkgs/tools/security/gopass/jsonapi.nix
index ca0ad5a96fd3e..ed0740bbf5b8a 100644
--- a/pkgs/tools/security/gopass/jsonapi.nix
+++ b/pkgs/tools/security/gopass/jsonapi.nix
@@ -2,31 +2,22 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
-, fetchpatch
 , installShellFiles
 , gopass
 }:
 
 buildGoModule rec {
   pname = "gopass-jsonapi";
-  version = "1.15.12";
+  version = "1.15.13";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-jsonapi";
     rev = "v${version}";
-    hash = "sha256-sR+48MRBHj3XpKLp/AOGf2H4ltZD1fHlIA2HPYSHdp0=";
+    hash = "sha256-6l4y+osYYLtrtDmlmXuWDRqkatehwpu6ujvsk86hUIE=";
   };
 
-  patches = [
-    # go mod tidy. Remove with next release
-    (fetchpatch {
-      url = "https://github.com/gopasspw/gopass-jsonapi/commit/cab33faab113d0c9702ebaa14cde13e5ccd465d2.patch";
-      hash = "sha256-IoxU5r1k0Y6N+PKAZH8LEO/fXHjryx5y58RRFeHP7Bc=";
-    })
-  ];
-
-  vendorHash = "sha256-2JADTyBgAK2j524G+ksKLJC255PmvMViFFCwmgtXZzA=";
+  vendorHash = "sha256-R9aSa1Jy4R1ZJGWnOhnlJn3ZvT97lrf1BtuK/FadSJg=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/summon.nix b/pkgs/tools/security/gopass/summon.nix
index fca94219cf076..ddb93ef9fe378 100644
--- a/pkgs/tools/security/gopass/summon.nix
+++ b/pkgs/tools/security/gopass/summon.nix
@@ -2,30 +2,21 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
-, fetchpatch
 , gopass
 }:
 
 buildGoModule rec {
   pname = "gopass-summon-provider";
-  version = "1.15.12";
+  version = "1.15.13";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-summon-provider";
     rev = "v${version}";
-    hash = "sha256-gvgHqeVB+4d8UJhMv3CYYidttCcaRPkgI7PXasv7pCI=";
+    hash = "sha256-cYr9yk5AyTxEo+bO6TgBBZRDWsTR+lvGcCr4kF1aMik=";
   };
 
-  patches = [
-    # go mod tidy. Remove with next release
-    (fetchpatch {
-      url = "https://github.com/gopasspw/gopass-summon-provider/commit/b3085cab14588cb6a5a383033947d9266fe0cd56.patch";
-      hash = "sha256-8mvJqejqmuOloj9mW9zzsE/Xr0DtPhJeDItzVFVv4+c=";
-    })
-  ];
-
-  vendorHash = "sha256-y1PH0+tt/kcHw2I4LWD2XfLud3JtsYqrRd/yVRPdaTA=";
+  vendorHash = "sha256-s1Zouw1619DbGjnZY26N6En91lzDaeDRZmul/te2z7M=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/iaito/default.nix b/pkgs/tools/security/iaito/default.nix
index 2fc43ad670551..2ba6dd0aec265 100644
--- a/pkgs/tools/security/iaito/default.nix
+++ b/pkgs/tools/security/iaito/default.nix
@@ -13,13 +13,13 @@
 
 let
   pname = "iaito";
-  version = "5.8.8";
+  version = "5.9.0";
 
   main_src = fetchFromGitHub rec {
     owner = "radareorg";
     repo = pname;
     rev = version;
-    hash = "sha256-/sXdp6QpDxltesg5i2CD0K2r18CrbGZmmI7HqULvFfA=";
+    hash = "sha256-Ep3Cbi0qjY4PKG0urr12y0DgX/l/Tsq8w1qlyH0lu3s=";
     name = repo;
   };
 
diff --git a/pkgs/tools/security/metasploit/Gemfile b/pkgs/tools/security/metasploit/Gemfile
index cad0fef74f582..10a41bf970587 100644
--- a/pkgs/tools/security/metasploit/Gemfile
+++ b/pkgs/tools/security/metasploit/Gemfile
@@ -1,4 +1,4 @@
 # frozen_string_literal: true
 source "https://rubygems.org"
 
-gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.4.1"
+gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.4.2"
diff --git a/pkgs/tools/security/metasploit/Gemfile.lock b/pkgs/tools/security/metasploit/Gemfile.lock
index 9ec271d8b7e01..453e2f2b2c045 100644
--- a/pkgs/tools/security/metasploit/Gemfile.lock
+++ b/pkgs/tools/security/metasploit/Gemfile.lock
@@ -1,9 +1,9 @@
 GIT
   remote: https://github.com/rapid7/metasploit-framework
-  revision: 73d98ad0ca24cdd33bbb9dfb110f3b781c613b55
-  ref: refs/tags/6.4.1
+  revision: 87b5f6c43676408498c88393a46890f22acc76e3
+  ref: refs/tags/6.4.2
   specs:
-    metasploit-framework (6.4.1)
+    metasploit-framework (6.4.2)
       actionpack (~> 7.0.0)
       activerecord (~> 7.0.0)
       activesupport (~> 7.0.0)
diff --git a/pkgs/tools/security/metasploit/default.nix b/pkgs/tools/security/metasploit/default.nix
index 0db72c46ae48f..8d856a8134bb3 100644
--- a/pkgs/tools/security/metasploit/default.nix
+++ b/pkgs/tools/security/metasploit/default.nix
@@ -15,13 +15,13 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "metasploit-framework";
-  version = "6.4.1";
+  version = "6.4.2";
 
   src = fetchFromGitHub {
     owner = "rapid7";
     repo = "metasploit-framework";
     rev = "refs/tags/${version}";
-    hash = "sha256-swKIiUgxsT6EnJV21sXOYU+s9fNTURLtJd1kjINyMd0=";
+    hash = "sha256-c/0XOz86v3So7GUGdOiDEorHeJ+rxfdsRXIGvuT/d/I=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/security/metasploit/gemset.nix b/pkgs/tools/security/metasploit/gemset.nix
index fdaf84e0bb0e4..3bca89f2ea824 100644
--- a/pkgs/tools/security/metasploit/gemset.nix
+++ b/pkgs/tools/security/metasploit/gemset.nix
@@ -674,12 +674,12 @@
     platforms = [];
     source = {
       fetchSubmodules = false;
-      rev = "73d98ad0ca24cdd33bbb9dfb110f3b781c613b55";
-      sha256 = "1p9ifa1qqr6x4pni4lakygssqkv1rv2xcxlmkj23xc9i924qh0mk";
+      rev = "87b5f6c43676408498c88393a46890f22acc76e3";
+      sha256 = "1wkpzzjbw1kj8mnggidbkxwcg2hjhgl781k5xjl79grs7wxigzbk";
       type = "git";
       url = "https://github.com/rapid7/metasploit-framework";
     };
-    version = "6.4.1";
+    version = "6.4.2";
   };
   metasploit-model = {
     groups = ["default"];
diff --git a/pkgs/tools/security/nuclei/default.nix b/pkgs/tools/security/nuclei/default.nix
index 5e183e44ebab2..1f95c78530b84 100644
--- a/pkgs/tools/security/nuclei/default.nix
+++ b/pkgs/tools/security/nuclei/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "nuclei";
-  version = "3.2.3";
+  version = "3.2.4";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = "nuclei";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rcFgSblSXQUGu58cLbjGtvVfEa3AJUwkYEcrizqJTwM=";
+    hash = "sha256-xrIR2QVizORxR2OO09Qj5h8avv2xeIsQ+VfmlZotML8=";
   };
 
-  vendorHash = "sha256-Ttv25D7GAFjbP25AcRfKPu4wT3SMroAAf3px48IWZLA=";
+  vendorHash = "sha256-s2h0ayBEuHUHcqYvyQTMNu9+NR5OVjzRshKzILDlrKs=";
 
   subPackages = [ "cmd/nuclei/" ];
 
diff --git a/pkgs/tools/security/opensc/default.nix b/pkgs/tools/security/opensc/default.nix
index 6edc9a7da55cd..8d8246028f7c3 100644
--- a/pkgs/tools/security/opensc/default.nix
+++ b/pkgs/tools/security/opensc/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "opensc";
-  version = "0.25.0";
+  version = "0.25.1";
 
   src = fetchFromGitHub {
     owner = "OpenSC";
     repo = "OpenSC";
     rev = version;
-    sha256 = "sha256-pNorJiZzLGpxtlkog2d3E9xePMy9ASoHeWduqVZiBiA=";
+    sha256 = "sha256-Ktvp/9Hca87qWmDlQhFzvWsr7TvNpIAvOFS+4zTZbB8=";
   };
 
   nativeBuildInputs = [ pkg-config autoreconfHook ];
diff --git a/pkgs/tools/security/s5/default.nix b/pkgs/tools/security/s5/default.nix
index f4ef34209d8ec..007e61c2fd523 100644
--- a/pkgs/tools/security/s5/default.nix
+++ b/pkgs/tools/security/s5/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "s5";
-  version = "0.1.12";
+  version = "0.1.13";
 
   src = fetchFromGitHub {
     owner = "mvisonneau";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-lTbTD5t80+R9hQeytNE2/Cs8dofdiYEP3zkc084mdAA=";
+    hash = "sha256-asX61mGgXKlSvVGcGrfVGLiZersjbaVql1eKf+b9JmU=";
   };
 
-  vendorHash = "sha256-TrCIUeY0B+BsWNaUkDTEgrEaWfJKnID2mafj3ink+i8=";
+  vendorHash = "sha256-8nuhRoFnN2oiJdo7bXxHqaHTkZH9Hh2Q2cYnMkEt4kI=";
 
   subPackages = [ "cmd/${pname}" ];
 
diff --git a/pkgs/tools/security/sbomnix/default.nix b/pkgs/tools/security/sbomnix/default.nix
index 2449573c080a9..d4ce0c4feaec8 100644
--- a/pkgs/tools/security/sbomnix/default.nix
+++ b/pkgs/tools/security/sbomnix/default.nix
@@ -1,53 +1,85 @@
 { lib
 , fetchFromGitHub
-, coreutils
-, curl
-, gnugrep
-, gnused
-, gzip
+, grype
 , nix
+, nix-visualize
 , python
-  # python libs
+, vulnix
+, # python libs
+  beautifulsoup4
 , colorlog
+, dfdiskcache
 , graphviz
 , numpy
 , packageurl-python
+, packaging
 , pandas
+, pyrate-limiter
 , requests
+, requests-cache
+, requests-ratelimiter
 , reuse
+, setuptools
 , tabulate
+,
 }:
 
 python.pkgs.buildPythonApplication rec {
   pname = "sbomnix";
-  version = "1.4.5";
+  version = "1.6.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tiiuae";
-    repo = pname;
+    repo = "sbomnix";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RxDFxVGivVBw2uhtzf231Q2HHTBFKSqGrknr2Es/ygM=";
+    hash = "sha256-kPjCK9NEs3D0qFsSSVX6MYGKbwqeij0svTfzz5JC4qM=";
+
+    # Remove documentation as it contains references to nix store
+    postFetch = ''
+      rm -fr "$out"/doc
+      find "$out" -name '*.md' ! -name "README.md" -exec rm -f '{}' \;
+    '';
   };
 
-  makeWrapperArgs = [
-    "--prefix PATH : ${lib.makeBinPath [ coreutils curl gnugrep gnused gzip graphviz nix ]}"
-  ];
+  postInstall = ''
+    wrapProgram $out/bin/sbomnix \
+      --prefix PATH : ${lib.makeBinPath [nix graphviz]}
+    wrapProgram $out/bin/nixgraph \
+      --prefix PATH : ${lib.makeBinPath [nix graphviz]}
+    wrapProgram $out/bin/vulnxscan \
+      --prefix PATH : ${lib.makeBinPath [grype nix vulnix]}
+    wrapProgram $out/bin/nix_outdated \
+      --prefix PATH : ${lib.makeBinPath [nix-visualize]}
+    wrapProgram $out/bin/provenance \
+      --prefix PATH : ${lib.makeBinPath [nix]}
+  '';
+
+  nativeBuildInputs = [ setuptools ];
 
   propagatedBuildInputs = [
+    beautifulsoup4
     colorlog
+    dfdiskcache
     graphviz
     numpy
     packageurl-python
+    packaging
     pandas
+    pyrate-limiter
     requests
+    requests-cache
+    requests-ratelimiter
     reuse
     tabulate
   ];
 
   pythonImportsCheck = [ "sbomnix" ];
+  # Tests require network access
+  doCheck = false;
 
   meta = with lib; {
-    description = "Generate SBOMs for nix targets";
+    description = "Utilities to help with software supply chain challenges on nix targets";
     homepage = "https://github.com/tiiuae/sbomnix";
     license = with licenses; [ asl20 bsd3 cc-by-30 ];
     maintainers = with maintainers; [ henrirosten jk ];
diff --git a/pkgs/tools/security/scilla/default.nix b/pkgs/tools/security/scilla/default.nix
index 0484cfaa9f87e..24daa9f386c7a 100644
--- a/pkgs/tools/security/scilla/default.nix
+++ b/pkgs/tools/security/scilla/default.nix
@@ -1,20 +1,26 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
 }:
 
 buildGoModule rec {
   pname = "scilla";
-  version = "1.2.7";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "edoardottt";
-    repo = pname;
+    repo = "scilla";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gZuNXQaxHJYLsEaOpNYo7ybg3f0GhkpiaLrex5lkDu4=";
+    hash = "sha256-ms52ii2cbZSZtcyxhVN+FbGP6hysoLvS7XwdPqxYymU=";
   };
 
-  vendorHash = "sha256-bVGmleuOJzi/Sz7MJlnQuJsDgRWuwieLUx8hcyKkWXI=";
+  vendorHash = "sha256-tOg4T9yQm1aj5G89lUeRUTxi4YrwpRi5KDcpWw4TimY=";
+
+  ldflags = [
+    "-w"
+    "-s"
+  ];
 
   checkFlags = [
     # requires network access
diff --git a/pkgs/tools/security/spire/default.nix b/pkgs/tools/security/spire/default.nix
index 49d0b296fd52a..9bc7e92a4cfe0 100644
--- a/pkgs/tools/security/spire/default.nix
+++ b/pkgs/tools/security/spire/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "spire";
-  version = "1.9.2";
+  version = "1.9.4";
 
   outputs = [ "out" "agent" "server" ];
 
@@ -10,10 +10,10 @@ buildGoModule rec {
     owner = "spiffe";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Gbi6nM9tjH/bYOFwpBrjH/rFEtSs9ihxM3jDAt+5HTU=";
+    sha256 = "sha256-QRLfxTMkoO37ieXtfEvOsS4naR8bvBS4VFOM9lY4rT0=";
   };
 
-  vendorHash = "sha256-XYM6r/+31apm9Ygq3eMX5DRf8p7/jwkBNaE2OvooRwM=";
+  vendorHash = "sha256-XWfo6NbADVRaMuemTrDgF2LQSpIe037z8el2CVzOJHI=";
 
   subPackages = [ "cmd/spire-agent" "cmd/spire-server" ];
 
diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix
index 050894307503a..2f33862fcffe8 100644
--- a/pkgs/tools/security/tor/default.nix
+++ b/pkgs/tools/security/tor/default.nix
@@ -30,11 +30,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "tor";
-  version = "0.4.8.10";
+  version = "0.4.8.11";
 
   src = fetchurl {
     url = "https://dist.torproject.org/${pname}-${version}.tar.gz";
-    sha256 = "sha256-5ii0+rcO20cncVsjzykxN1qfdoWsCPLFnqSYoXhGOoY=";
+    sha256 = "sha256-jyvfkOYzgHgSNap9YE4VlXDyg+zuZ0Zwhz2LtwUsjgc=";
   };
 
   outputs = [ "out" "geoip" ];
diff --git a/pkgs/tools/security/trufflehog/default.nix b/pkgs/tools/security/trufflehog/default.nix
index 205a94cd87f1d..76e887824b533 100644
--- a/pkgs/tools/security/trufflehog/default.nix
+++ b/pkgs/tools/security/trufflehog/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, fetchFromGitHub
-, buildGoModule
-, testers
-, trufflehog
+{
+  lib,
+  fetchFromGitHub,
+  buildGoModule,
+  testers,
+  trufflehog,
 }:
 
 buildGoModule rec {
   pname = "trufflehog";
-  version = "3.71.2";
+  version = "3.72.0";
 
   src = fetchFromGitHub {
     owner = "trufflesecurity";
     repo = "trufflehog";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PxaZl3OV3bAbZzKVxHO8MuwqO2c16w4MNypsZpVOQTU=";
+    hash = "sha256-2xgvXHeltoODr5Rok7yaUqdVcO2crtdPvvRrN+DDGr4=";
   };
 
-  vendorHash = "sha256-xU6mUhSgB9DMyVMo2tTd5uNyrDoFsY2zMaTKSPBcgwM=";
+  vendorHash = "sha256-zpHrwQ1egD2juWkQicHl2HVzXGr3DCmAyRdUgm5jdGg=";
+  proxyVendor = true;
 
   ldflags = [
     "-s"
@@ -32,9 +34,7 @@ buildGoModule rec {
   '';
 
   passthru = {
-    tests.version = testers.testVersion {
-      package = trufflehog;
-    };
+    tests.version = testers.testVersion { package = trufflehog; };
   };
 
   meta = with lib; {
diff --git a/pkgs/tools/security/vault/default.nix b/pkgs/tools/security/vault/default.nix
index d3a9b1a906e7d..4f748ca1b4251 100644
--- a/pkgs/tools/security/vault/default.nix
+++ b/pkgs/tools/security/vault/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "vault";
-  version = "1.16.0";
+  version = "1.16.1";
 
   src = fetchFromGitHub {
     owner = "hashicorp";
     repo = "vault";
     rev = "v${version}";
-    hash = "sha256-nrpe7GyT2GpnCWdJhHefx1iAvJPzahv4wjQe0xTRSys=";
+    hash = "sha256-dafK7PkjWmLbV9fcaR+Vl1CQrpGdo8IQpaSbUwY26Uw=";
   };
 
-  vendorHash = "sha256-Bxa0244qowVnFJb9AUdJTp6CRo+GZTswVLg6lF1QITo=";
+  vendorHash = "sha256-hWIIGQb2tZjhQ+XxaUacBgRSFFQIWj728pjKZFi0Wto=";
 
   proxyVendor = true;
 
diff --git a/pkgs/tools/security/vault/vault-bin.nix b/pkgs/tools/security/vault/vault-bin.nix
index 8644949bf68bd..c80f35a16cbbb 100644
--- a/pkgs/tools/security/vault/vault-bin.nix
+++ b/pkgs/tools/security/vault/vault-bin.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "vault-bin";
-  version = "1.15.6";
+  version = "1.16.1";
 
   src =
     let
@@ -16,11 +16,11 @@ stdenv.mkDerivation rec {
         aarch64-darwin = "darwin_arm64";
       };
       sha256 = selectSystem {
-        x86_64-linux = "sha256-qZXR0bqsU0BcM4hWbCZ6vqnjh5pnddl7WTKKBGt1ioU=";
-        aarch64-linux = "sha256-4f0D+D+rL28mzCN8ku/FWrRFFUevY5yWIgifvZrDbuw=";
-        i686-linux = "sha256-YoG2NC6cBCunIql7kIRIOs0hU0dIQKIHN/Z27IGj1io=";
-        x86_64-darwin = "sha256-sdbwnoWZKbq0l86ikfHAR+LYI285IGRiZBB7woD/s/8=";
-        aarch64-darwin = "sha256-JcTt67eWgORgEmuiBpY5fSGJr8vvCOwKbnOTYZh2fIM=";
+        x86_64-linux = "sha256-s520fOri0caLMeMmNaGS3+Y9I9dcXtNtiRtwrvj1pvA=";
+        aarch64-linux = "sha256-12yFC3uPyqv2kQIv2KC+skXMrdU+IZir5z62JRtKBMs=";
+        i686-linux = "sha256-LGkRnI5rZ8j6Fm1FBKiTUJNK8dUF9154OlNEHIsT36Q=";
+        x86_64-darwin = "sha256-V7uLlQhsRQ36jtbIsdPfU3LvM41xDO3pj97KOlZWSYg=";
+        aarch64-darwin = "sha256-QGxg11DR1LbRzRE2CqyGSWvus1IXIECbtamONrqcBVc=";
       };
     in
     fetchzip {
diff --git a/pkgs/tools/security/vaultwarden/webvault.nix b/pkgs/tools/security/vaultwarden/webvault.nix
index cba624eb09823..041b7ae3154a5 100644
--- a/pkgs/tools/security/vaultwarden/webvault.nix
+++ b/pkgs/tools/security/vaultwarden/webvault.nix
@@ -8,13 +8,13 @@
 }:
 
 let
-  version = "2024.3.0";
+  version = "2024.3.1";
 
   bw_web_builds = fetchFromGitHub {
     owner = "dani-garcia";
     repo = "bw_web_builds";
     rev = "v${version}";
-    hash = "sha256-nlFs0cOehbGhk/XxWAuNJNhImHDZA3pvci1WdcBy6Ro=";
+    hash = "sha256-oi0H8TIQwtpzxKoQGnKaOY0bcWu7avTtrY+NgNRiq8k=";
   };
 
 in buildNpmPackage rec {
@@ -25,10 +25,10 @@ in buildNpmPackage rec {
     owner = "bitwarden";
     repo = "clients";
     rev = "web-v${lib.removeSuffix "b" version}";
-    hash = "sha256-/YpqGyDesz4ZyIaLGWbxJZkEGFW7IsTfuy/74NuiOS0=";
+    hash = "sha256-JBEP4dNGL4rYKl2qNyhB2y/wZunikaGFltGVXLxgMWI=";
   };
 
-  npmDepsHash = "sha256-iwYzxvLPebQiU20TafzdFgQXnNNHK8s0Jwo83VKy4u8=";
+  npmDepsHash = "sha256-vNudSHIMmF7oXGz+ZymQahyHebs/CBDc6Oy1g0A5nqA=";
 
   postPatch = ''
     ln -s ${bw_web_builds}/{patches,resources} ..
diff --git a/pkgs/tools/system/automatic-timezoned/default.nix b/pkgs/tools/system/automatic-timezoned/default.nix
index a63b18194a0e2..36f5ea2ed7de4 100644
--- a/pkgs/tools/system/automatic-timezoned/default.nix
+++ b/pkgs/tools/system/automatic-timezoned/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "automatic-timezoned";
-  version = "2.0.10";
+  version = "2.0.11";
 
   src = fetchFromGitHub {
     owner = "maxbrunet";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-NAnVPTH1pRFVsEPg4NV+TLBjMEFOmmBOP90z88TGZ9s=";
+    sha256 = "sha256-3F9VgLrk+P/KWYI8uY12XrXxHWCXoBR6zhP6xDp0EO0=";
   };
 
-  cargoHash = "sha256-60CuoGqDSwb5YPeM+ueeU80R7F86eVS2SH2bY91yfu0=";
+  cargoHash = "sha256-YjGuGvwDTGrPObxttgBOga3pYLVbNh2lBauOyIdHiLw=";
 
   meta = with lib; {
     description = "Automatically update system timezone based on location";
diff --git a/pkgs/tools/system/btop/default.nix b/pkgs/tools/system/btop/default.nix
index ba5f01b843bb2..dfbc50ab86844 100644
--- a/pkgs/tools/system/btop/default.nix
+++ b/pkgs/tools/system/btop/default.nix
@@ -7,8 +7,8 @@
 , removeReferencesTo
 , btop
 , testers
+, autoAddDriverRunpath
 , cudaSupport ? config.cudaSupport
-, cudaPackages
 , rocmSupport ? config.rocmSupport
 , rocmPackages
 }:
@@ -24,8 +24,10 @@ stdenv.mkDerivation rec {
     hash = "sha256-kjSyIgLTObTOKMG5dk49XmWPXZpCWbLdpkmAsJcFliA=";
   };
 
-  nativeBuildInputs = [ cmake ] ++ lib.optionals cudaSupport [
-    cudaPackages.autoAddDriverRunpath
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals cudaSupport [
+    autoAddDriverRunpath
   ];
 
   buildInputs = lib.optionals stdenv.isDarwin [
diff --git a/pkgs/tools/system/kmon/default.nix b/pkgs/tools/system/kmon/default.nix
index df7ccfa4cf25f..a54f835d7b9fd 100644
--- a/pkgs/tools/system/kmon/default.nix
+++ b/pkgs/tools/system/kmon/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "kmon";
-  version = "1.6.4";
+  version = "1.6.5";
 
   src = fetchFromGitHub {
     owner = "orhun";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-61HLWSGACnonjp/n14sVo8DdVOUbOpIQHpPL0PmKmpI=";
+    sha256 = "sha256-1OsQT3RMNLQMjr4aA2u5knp/HhOUOJ/oZYHG/+cTQFQ=";
   };
 
-  cargoSha256 = "sha256-yxpM4aUPVfaMuYwj50C/Uwh/diraJLON1mNjuYJR6Ck=";
+  cargoHash = "sha256-9xRlm5pWWRRPq6MMwiMADmm8Bg2FqKNSfv7tm1ONiiQ=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/system/lact/default.nix b/pkgs/tools/system/lact/default.nix
index c694b96d85f57..11901caa4cafa 100644
--- a/pkgs/tools/system/lact/default.nix
+++ b/pkgs/tools/system/lact/default.nix
@@ -3,7 +3,7 @@
 , fetchFromGitHub
 , blueprint-compiler
 , pkg-config
-, wrapGAppsHook
+, wrapGAppsHook4
 , gdk-pixbuf
 , gtk4
 , libdrm
@@ -28,7 +28,7 @@ rustPlatform.buildRustPackage rec {
   nativeBuildInputs = [
     blueprint-compiler
     pkg-config
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
diff --git a/pkgs/tools/system/pdisk/default.nix b/pkgs/tools/system/pdisk/default.nix
index 83c3e65e4171b..e6c3e75007ed3 100644
--- a/pkgs/tools/system/pdisk/default.nix
+++ b/pkgs/tools/system/pdisk/default.nix
@@ -82,7 +82,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/apple-oss-distributions/pdisk";
     license = with licenses; [
       hpnd # original license statements seems to match this (in files that are shared with mac-fdisk)
-      apsl10 # new files
+      apple-psl10 # new files
     ];
     maintainers = with maintainers; [ OPNA2608 ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/system/s-tui/default.nix b/pkgs/tools/system/s-tui/default.nix
index 02ae09fad96af..5867670424d55 100644
--- a/pkgs/tools/system/s-tui/default.nix
+++ b/pkgs/tools/system/s-tui/default.nix
@@ -30,7 +30,7 @@ python3Packages.buildPythonPackage rec {
     homepage = "https://amanusk.github.io/s-tui/";
     description = "Stress-Terminal UI monitoring tool";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ infinisil ];
+    maintainers = [ ];
     broken = stdenv.isDarwin; # https://github.com/amanusk/s-tui/issues/49
     mainProgram = "s-tui";
   };
diff --git a/pkgs/tools/system/stress-ng/default.nix b/pkgs/tools/system/stress-ng/default.nix
index 81e80bd5e8301..0e87cbffd0504 100644
--- a/pkgs/tools/system/stress-ng/default.nix
+++ b/pkgs/tools/system/stress-ng/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "stress-ng";
-  version = "0.17.06";
+  version = "0.17.07";
 
   src = fetchFromGitHub {
     owner = "ColinIanKing";
     repo = pname;
     rev = "V${version}";
-    hash = "sha256-69Ckl3n09J25Y0hzkH/RV9hJNlSfYfoxTdWiD5gBlQQ=";
+    hash = "sha256-eXDCzyZ/YeumHjuLpr6stkWkApwfi8ExDx3uZTVa/cs=";
   };
 
   postPatch = ''
diff --git a/pkgs/tools/text/base16384/default.nix b/pkgs/tools/text/base16384/default.nix
index b075b0665aaef..2d6ffd48a29c7 100644
--- a/pkgs/tools/text/base16384/default.nix
+++ b/pkgs/tools/text/base16384/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "base16384";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "fumiama";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-FzZ8k7dkGksQvknrHoSjX1iUpIyL5xGlFTm3mgpBIig=";
+    hash = "sha256-2HZeom+8eEH4CrphCoOV+wJbqhYKVUcAQrYLyEVACkQ=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/tools/text/crowdin-cli/default.nix b/pkgs/tools/text/crowdin-cli/default.nix
index 712da353282f1..af46fb1b6fe9d 100644
--- a/pkgs/tools/text/crowdin-cli/default.nix
+++ b/pkgs/tools/text/crowdin-cli/default.nix
@@ -14,11 +14,11 @@
 
 stdenv.mkDerivation rec {
   pname = "crowdin-cli";
-  version = "3.19.1";
+  version = "3.19.2";
 
   src = fetchurl {
     url = "https://github.com/crowdin/${pname}/releases/download/${version}/${pname}.zip";
-    hash = "sha256-ydkVdPhd9c5VPI6T9i+/yfbLHjOGNJbMw02AJCyuTGs=";
+    hash = "sha256-tVfdpyQ/m6ZpVA7YFmkGSnpo8/FirIBEiIqHlUr1TKk=";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper unzip ];
diff --git a/pkgs/tools/text/mdbook-graphviz/default.nix b/pkgs/tools/text/mdbook-graphviz/default.nix
index c854d4be35a01..060fd5871d1b8 100644
--- a/pkgs/tools/text/mdbook-graphviz/default.nix
+++ b/pkgs/tools/text/mdbook-graphviz/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook-graphviz";
-  version = "0.1.6";
+  version = "0.1.7";
 
   src = fetchFromGitHub {
     owner = "dylanowen";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-WkjkQll5oETVADYpA8/CIZOJCBnfenGSy49sZ5nAQ+c=";
+    hash = "sha256-FuAjuU4IXXuas+ubSuTMrZiYTGcZCuLTCSTJXtY2nlw=";
   };
 
-  cargoHash = "sha256-whBTPQGozPPTSdXuRx5wamc1yy/EC3wNShQGhRqdY9Y=";
+  cargoHash = "sha256-d4s9wmjqMHjev1Y4nAobFnCc5NTdklXcs7XTRXFMEjU=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
diff --git a/pkgs/tools/text/sad/default.nix b/pkgs/tools/text/sad/default.nix
index 94838c9a4d0ee..d0c6e430e7263 100644
--- a/pkgs/tools/text/sad/default.nix
+++ b/pkgs/tools/text/sad/default.nix
@@ -1,21 +1,22 @@
-{ lib
-, fetchFromGitHub
-, rustPlatform
-, python3
+{
+  lib,
+  fetchFromGitHub,
+  rustPlatform,
+  python3,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "sad";
-  version = "0.4.27";
+  version = "0.4.28";
 
   src = fetchFromGitHub {
     owner = "ms-jpq";
     repo = "sad";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hb09YwF59I8zQ6dIrGkCWJ98VeB5EYoNloTGg5v2BIs=";
+    hash = "sha256-9zsNYUYUQ3RmJQN7uf+YQjywr7rRAIx5zz6EYkbN8/o=";
   };
 
-  cargoHash = "sha256-wFmC19uGEaS8Rn+bKdljAZY24/AL9VDV183xXBjt79M=";
+  cargoHash = "sha256-OSVG1sFSLKkVsgI0I2mYTszcPGlfOL1Md/aCpMf6Eow=";
 
   nativeBuildInputs = [ python3 ];
 
diff --git a/pkgs/tools/text/ugrep/default.nix b/pkgs/tools/text/ugrep/default.nix
index fcea411e1a739..33173396f2670 100644
--- a/pkgs/tools/text/ugrep/default.nix
+++ b/pkgs/tools/text/ugrep/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "ugrep";
-  version = "5.1.1";
+  version = "5.1.3";
 
   src = fetchFromGitHub {
     owner = "Genivia";
     repo = "ugrep";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-ZMBu8hewPuwpm64Oe6JselynEv04JTR/OTbpbmkfe3Y=";
+    hash = "sha256-ap0akp787pr1gRGFTGQ6ZPwkABgloqQ05XnmM7filGs=";
   };
 
   buildInputs = [
diff --git a/pkgs/tools/text/vale/default.nix b/pkgs/tools/text/vale/default.nix
index 861b3e6b899e6..9fa3c12ccc88a 100644
--- a/pkgs/tools/text/vale/default.nix
+++ b/pkgs/tools/text/vale/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "vale";
-  version = "3.3.1";
+  version = "3.4.1";
 
   subPackages = [ "cmd/vale" ];
   outputs = [ "out" "data" ];
@@ -11,7 +11,7 @@ buildGoModule rec {
     owner = "errata-ai";
     repo = "vale";
     rev = "v${version}";
-    hash = "sha256-6hj8fm2eCGQeWY3+eaJlKeZglJUSMY4/Yz2ySGp6m58=";
+    hash = "sha256-fD2KBKDfKTNYuzP/zKkAx9h/HMxOlAyiWtp9EsWxop8=";
   };
 
   vendorHash = "sha256-HMzFLSmO6sBDNU89UoIvHcPPd3ubpti2ii4sFMKUDmI=";
diff --git a/pkgs/tools/typesetting/pulldown-cmark/default.nix b/pkgs/tools/typesetting/pulldown-cmark/default.nix
index a7ef454c811fb..b63cc05cd2afd 100644
--- a/pkgs/tools/typesetting/pulldown-cmark/default.nix
+++ b/pkgs/tools/typesetting/pulldown-cmark/default.nix
@@ -5,14 +5,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "pulldown-cmark";
-  version = "0.10.0";
+  version = "0.10.2";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-7ZO3MdQBNgltrd4Anu19g0Gkye6Bc2WHDuSng6mB9pM=";
+    hash = "sha256-jRQ2BnaElhciyBPQiHw680uFC6FXs+rP8rJGWH5ZbCc=";
   };
 
-  cargoHash = "sha256-4UUdsS3dK5a6phwYZqjNwX52UMLLe/LHxOiBanTRMZM=";
+  cargoHash = "sha256-UsdssFfy7cTM0wrfLDLrzbKudB5vqFINInJAteH5OTk=";
 
   meta = {
     description = "A pull parser for CommonMark written in Rust";
diff --git a/pkgs/tools/typesetting/tex/texpresso/default.nix b/pkgs/tools/typesetting/tex/texpresso/default.nix
index 6b79d518a8d7d..ccbc43a1c6151 100644
--- a/pkgs/tools/typesetting/tex/texpresso/default.nix
+++ b/pkgs/tools/typesetting/tex/texpresso/default.nix
@@ -17,7 +17,7 @@
 
 stdenv.mkDerivation rec {
   pname = "texpresso";
-  version = "0-unstable-2024-03-26";
+  version = "0-unstable-2024-04-08";
 
   nativeBuildInputs = [
     makeWrapper
@@ -35,8 +35,8 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "let-def";
     repo = "texpresso";
-    rev = "34d06efc5719a6289bbe2d05e5295566d0fbcfad";
-    hash = "sha256-rfrESh2Yz5FfwWW57wBZSJKPri2Pl1uhTGTM02dyOqM=";
+    rev = "9db77502f238c75ef03ce94f34cc5170d0b2a833";
+    hash = "sha256-YK4+GqjBjKui4J7YkNyeF1GyquMQMLMhp9o5u4Z8Bmc=";
   };
 
   buildFlags = [ "texpresso" ];
diff --git a/pkgs/tools/typesetting/tex/texpresso/tectonic.nix b/pkgs/tools/typesetting/tex/texpresso/tectonic.nix
index 76c4cb71b6ee7..070594349ad71 100644
--- a/pkgs/tools/typesetting/tex/texpresso/tectonic.nix
+++ b/pkgs/tools/typesetting/tex/texpresso/tectonic.nix
@@ -6,11 +6,11 @@ tectonic-unwrapped.override (old: {
       src = fetchFromGitHub {
         owner = "let-def";
         repo = "tectonic";
-        rev = "a6d47e45cd610b271a1428898c76722e26653667";
-        hash = "sha256-CDky1NdSQoXpTVDQ7sJWjcx3fdsBclO9Eun/70iClcI=";
+        rev = "7729f1360a7e1e8b8a9f8a6a23f96b5f7cc023d0";
+        hash = "sha256-OyVkA2EuejxpQvA6pOuFaZh8ghZZ3HaV9q5DZ/2sIrY=";
         fetchSubmodules = true;
       };
-      cargoHash = "sha256-M4XYjBK2MN4bOrk2zTSyuixmAjZ0t6IYI/MlYWrmkIk=";
+      cargoHash = "sha256-62sxvPIiY3len1wsl7QelK3u4ekftIjcTqoIGZMYb5A=";
       # binary has a different name, bundled tests won't work
       doCheck = false;
       meta.mainProgram = "texpresso-tonic";
diff --git a/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix b/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix
index 029e30b2645a0..f87596a0b3ff3 100644
--- a/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix
+++ b/pkgs/tools/wayland/wayland-proxy-virtwl/default.nix
@@ -8,13 +8,13 @@
 
 ocamlPackages.buildDunePackage rec {
   pname = "wayland-proxy-virtwl";
-  version = "unstable-2023-12-09";
+  version = "unstable-2024-04-08";
 
   src = fetchFromGitHub {
     owner = "talex5";
     repo = pname;
-    rev = "ec052fa0e9ae2b2926afc27e23a50b4d3072e6ac";
-    sha256 = "sha256-ZWW44hfWs0F4SwwEjx62o/JnuXSrSlq2lrRFRTuPUFE=";
+    rev = "57dea8de065f5a155d97a32a929bbb2b1ba6b53a";
+    sha256 = "sha256-mp/Y13MwdKo7f3E9S0Pnvb3Cb4d6szkIQOFteMrVxCk=";
   };
 
   minimalOCamlVersion = "5.0";
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 5401a653613bd..faa715ecd4f6a 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -74,8 +74,10 @@ mapAliases ({
   angelfish = libsForQt5.kdeGear.angelfish; # Added 2021-10-06
   ansible_2_12 = throw "Ansible 2.12 goes end of life in 2023/05 and can't be supported throughout the 23.05 release cycle"; # Added 2023-05-16
   ansible_2_13 = throw "Ansible 2.13 goes end of life in 2023/11"; # Added 2023-12-30
+  ansible_2_14 = throw "Ansible 2.14 goes end of life in 2024/05 and can't be supported throughout the 24.05 release cycle"; # Added 2024-04-11
   apacheAnt_1_9 = throw "Ant 1.9 has been removed since it's not used in nixpkgs anymore"; # Added 2023-11-12
   antimicroX = antimicrox; # Added 2021-10-31
+  appthreat-depscan = dep-scan; # Added 2024-04-10
   arcanPackages = throw "arcanPackages was removed and its sub-attributes were promoted to top-level"; # Added 2023-11-26
   archiveopteryx = throw "archiveopteryx depended on an unsupported version of OpenSSL and was unmaintained"; # Added 2024-01-03
   ardour_6 = throw "ardour_6 has been removed in favor of newer versions"; # Added 2023-10-13
@@ -151,6 +153,7 @@ mapAliases ({
   cadence = throw "cadence has been removed from nixpkgs, as it was archived upstream"; # Added 2023-10-28
   cask = emacs.pkgs.cask; # Added 2022-11-12
   canonicalize-jars-hook = stripJavaArchivesHook; # Added 2024-03-17
+  cargo-deps = throw "cargo-deps has been removed as the repository is deleted"; # Added 2024-04-09
   cargo-embed = throw "cargo-embed is now part of the probe-rs package"; # Added 2023-07-03
   cargo-espflash = espflash;
   cargo-flash = throw "cargo-flash is now part of the probe-rs package"; # Added 2023-07-03
@@ -176,6 +179,7 @@ mapAliases ({
   clpm = throw "'clpm' has been removed from nixpkgs"; # Added 2024-04-01
   collada-dom = opencollada; # added 2024-02-21
   composable_kernel = throw "'composable_kernel' has been replaced with 'rocmPackages.composable_kernel'"; # Added 2023-10-08
+  cope = throw "'cope' has been removed, as it is broken in nixpkgs since it was added, and fixing it is not trivial"; # Added 2024-04-12
   cpp-ipfs-api = cpp-ipfs-http-client; # Project has been renamed. Added 2022-05-15
   crispyDoom = crispy-doom; # Added 2023-05-01
   cryptowatch-desktop = throw "Cryptowatch Desktop was sunset on September 30th 2023 and has been removed from nixpkgs"; # Added 2023-12-22
@@ -199,7 +203,7 @@ mapAliases ({
   clang6Stdenv = throw "clang6Stdenv has been removed from nixpkgs"; # Added 2024-01-08
   clang7Stdenv = throw "clang7Stdenv has been removed from nixpkgs"; # Added 2023-11-19
   clang8Stdenv = throw "clang8Stdenv has been removed from nixpkgs"; # Added 2024-01-24
-  clang9Stdenv = lowPrio llvmPackages_9.stdenv;
+  clang9Stdenv = throw "clang9Stdenv has been removed from nixpkgs"; # Added 2024-04-08
   clang10Stdenv = throw "clang10Stdenv has been removed from nixpkgs"; # Added 2024-01-26
   clang11Stdenv = throw "clang11Stdenv has been removed from nixpkgs"; # Added 2023-01-24
   clang12Stdenv = lowPrio llvmPackages_12.stdenv;
@@ -212,11 +216,13 @@ mapAliases ({
   clang-tools_6 = throw "clang-tools_6 has been removed from nixpkgs"; # Added 2024-01-08
   clang-tools_7 = throw "clang-tools_7 has been removed from nixpkgs"; # Added 2023-11-19
   clang-tools_8  = throw "clang-tools_8 has been removed from nixpkgs"; # Added 2024-01-24
+  clang-tools_9 = throw "clang-tools_9 has been removed from nixpkgs"; # Added 2024-04-08
   clang-tools_10 = throw "clang-tools_10 has been removed from nixpkgs"; # Added 2023-01-26
   clang-tools_11 = throw "clang-tools_11 has been removed from nixpkgs"; # Added 2023-01-24
   clang_6 = throw "clang_6 has been removed from nixpkgs"; # Added 2024-01-08
   clang_7 = throw "clang_7 has been removed from nixpkgs"; # Added 2023-11-19
   clang_8  = throw "clang_8 has been removed from nixpkgs"; # Added 2024-01-24
+  clang_9 = throw "clang_9 has been removed from nixpkgs"; # Added 2024-04-08
   clang_10 = throw "clang_10 has been removed from nixpkgs"; # Added 2024-01-26
   clang_11 = throw "clang_11 has been removed from nixpkgs"; # Added 2023-01-24
 
@@ -355,6 +361,7 @@ mapAliases ({
   flutter2 = throw "flutter2 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2023-07-03
   flutter37 = throw "flutter37 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2023-07-03
   foldingathome = fahclient; # Added 2020-09-03
+  forgejo-actions-runner = forgejo-runner; # Added 2024-04-04
 
   foundationdb51 = throw "foundationdb51 is no longer maintained, use foundationdb71 instead"; # added 2023-06-06
   foundationdb52 = throw "foundationdb52 is no longer maintained, use foundationdb71 instead"; # added 2023-06-06
@@ -573,6 +580,7 @@ mapAliases ({
   # now kube3d/k3d will take it's place
   kube3d = k3d; # Added 2022-0705
   kafkacat = kcat; # Added 2021-10-07
+  kak-lsp = kakoune-lsp; # Added 2024-04-01
   kdeconnect = plasma5Packages.kdeconnect-kde; # Added 2020-10-28
   keepassx = throw "KeePassX is no longer actively developed. Please consider KeePassXC as a maintained alternative."; # Added 2023-02-17
   keepassx2 = throw "KeePassX is no longer actively developed. Please consider KeePassXC as a maintained alternative."; # Added 2023-02-17
@@ -728,21 +736,25 @@ mapAliases ({
   lld_6 = throw "lld_6 has been removed from nixpkgs"; # Added 2024-01-08
   lld_7 = throw "lld_7 has been removed from nixpkgs"; # Added 2023-11-19
   lld_8 = throw "lld_8 has been removed from nixpkgs"; # Added 2024-01-24
+  lld_9 = throw "lld_9 has been removed from nixpkgs"; # Added 2024-04-08
   lld_10 = throw "lld_10 has been removed from nixpkgs"; # Added 2024-01-26
   lld_11 = throw "lld_11 has been removed from nixpkgs"; # Added 2024-01-24
   lldb_6 = throw "lldb_6 has been removed from nixpkgs"; # Added 2024-01-08
   lldb_7 = throw "lldb_7 has been removed from nixpkgs"; # Added 2023-11-19
   lldb_8 = throw "lldb_8 has been removed from nixpkgs"; # Added 2024-01-24
+  lldb_9 = throw "lldb_9 has been removed from nixpkgs"; # Added 2024-04-08
   lldb_10 = throw "lldb_10 has been removed from nixpkgs"; # Added 2024-01-26
   lldb_11 = throw "lldb_11 has been removed from nixpkgs"; # Added 2024-01-24
   llvmPackages_6 = throw "llvmPackages_6 has been removed from nixpkgs"; # Added 2024-01-09
   llvmPackages_7 = throw "llvmPackages_7 has been removed from nixpkgs"; # Added 2023-11-19
   llvmPackages_8 = throw "llvmPackages_8 has been removed from nixpkgs"; # Added 2024-01-24
+  llvmPackages_9 = throw "llvmPackages_9 has been removed from nixpkgs"; # Added 2024-04-08
   llvmPackages_10 = throw "llvmPackages_10 has been removed from nixpkgs"; # Added 2024-01-26
   llvmPackages_11 = throw "llvmPackages_11 has been removed from nixpkgs"; # Added 2024-01-24
   llvm_6 = throw "llvm_6 has been removed from nixpkgs"; # Added 2024-01-08
   llvm_7 = throw "llvm_7 has been removed from nixpkgs"; # Added 2023-11-19
   llvm_8 = throw "llvm_8 has been removed from nixpkgs"; # Added 2024-01-24
+  llvm_9 = throw "llvm_9 has been removed from nixpkgs"; # Added 2024-04-08
   llvm_10 = throw "llvm_10 has been removed from nixpkgs"; # Added 2024-01-26
   llvm_11 = throw "llvm_11 has been removed from nixpkgs"; # Added 2024-01-24
 
@@ -780,6 +792,7 @@ mapAliases ({
   minetestserver_5 = minetestserver; # Added 2023-12-11
   minizip2 = pkgs.minizip-ng; # Added 2022-12-28
   mirage-im = throw "'mirage-im' has been removed, as it was broken and unmaintained"; # Added 2023-11-26
+  mlton20210107 = throw "'mlton20210107' has been renamed to 'mlton20210117', correcting the version number"; # Added 2024-03-31
   mod_dnssd = apacheHttpdPackages.mod_dnssd; # Added 2014-11-07
   mod_fastcgi = apacheHttpdPackages.mod_fastcgi; # Added 2014-11-07
   mod_python = apacheHttpdPackages.mod_python; # Added 2014-11-07
@@ -796,6 +809,7 @@ mapAliases ({
   moneyplex = throw "'moneyplex' has been removed, as it was broken and unmaintained"; # Added 2024-02-28
   mongodb-4_0 = throw "mongodb-4_0 has been removed, it's end of life since April 2022"; # Added 2023-01-05
   mongodb-4_2 = throw "mongodb-4_2 has been removed, it's end of life since April 2023"; # Added 2023-06-06
+  mongodb-4_4 = throw "mongodb-4_4 has been removed, it's end of life since April 2024"; # Added 2024-04-11
   moonlander = throw "'moonlander' has been removed due to it being broken and unmaintained"; # Added 2023-11-26
   moz-phab = mozphab; # Added 2022-08-09
   mozart-binary = throw "'mozart-binary' has been renamed to/replaced by 'mozart2-binary'"; # Converted to throw 2023-09-10
@@ -1238,7 +1252,10 @@ mapAliases ({
   unicorn-emu = unicorn; # Added 2020-10-29
   uniffi-bindgen = throw "uniffi-bindgen has been removed since upstream no longer provides a standalone package for the CLI";
   unifi-poller = unpoller; # Added 2022-11-24
-  unifiStable = unifi6; # Added 2020-12-28
+  unifi5 = throw "'unifi5' has been removed since its required MongoDB version is EOL."; # Added 2024-04-11
+  unifi6 = throw "'unifi6' has been removed since its required MongoDB version is EOL."; # Added 2024-04-11
+  unifiLTS = throw "'unifiLTS' has been removed since UniFi no longer has LTS and stable releases. Use `pkgs.unifi` instead."; # Added 2024-04-11
+  unifiStable = throw "'unifiStable' has been removed since UniFi no longer has LTS and stable releases. Use `pkgs.unifi` instead."; # Converted to throw 2024-04-11
   untrunc = untrunc-anthwlock; # Added 2021-02-01
   urlview = throw "'urlview' has been dropped because it's unmaintained. Consider switching to an alternative such as `pkgs.extract_url` or `pkgs.urlscan`."; # Added 2023-12-14
   urxvt_autocomplete_all_the_things = rxvt-unicode-plugins.autocomplete-all-the-things; # Added 2020-02-02
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7e3efd2ecff44..8cac06ccde9ce 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -299,8 +299,6 @@ with pkgs;
 
   melange = callPackage ../development/tools/melange { };
 
-  appthreat-depscan = callPackage ../development/tools/appthreat-depscan { };
-
   activate-linux = callPackage ../applications/misc/activate-linux { };
 
   ansi = callPackage ../development/tools/ansi { };
@@ -719,6 +717,8 @@ with pkgs;
 
   inspec = callPackage ../tools/misc/inspec { };
 
+  lshw-gui = lshw.override { withGUI = true; };
+
   kdePackages = callPackage ../kde { };
 
   buildcatrust = with python3.pkgs; toPythonApplication buildcatrust;
@@ -1754,8 +1754,6 @@ with pkgs;
 
   configurable-http-proxy = callPackage ../tools/networking/configurable-http-proxy { };
 
-  cope = callPackage ../tools/misc/cope { };
-
   crypto-tracker = callPackage ../tools/misc/crypto-tracker { };
 
   ejs = callPackage ../development/tools/ejs { };
@@ -1792,14 +1790,18 @@ with pkgs;
     libgamemode32 = pkgsi686Linux.gamemode.lib;
   };
 
-  gamescope = callPackage ../applications/window-managers/gamescope {
+  gamescope = callPackage ../by-name/ga/gamescope/package.nix {
     enableExecutable = true;
     enableWsi = false;
+
+    wlroots = wlroots_0_17;
   };
 
-  gamescope-wsi = callPackage ../applications/window-managers/gamescope {
+  gamescope-wsi = callPackage ../by-name/ga/gamescope/package.nix {
     enableExecutable = false;
     enableWsi = true;
+
+    wlroots = wlroots_0_17;
   };
 
   gay = callPackage ../tools/misc/gay {  };
@@ -3391,6 +3393,8 @@ with pkgs;
 
   azure-cli = callPackage ../tools/admin/azure-cli { };
 
+  azure-cli-extensions = recurseIntoAttrs azure-cli.extensions;
+
   azure-functions-core-tools = callPackage ../development/tools/azure-functions-core-tools { };
 
   azure-static-sites-client = callPackage ../development/tools/azure-static-sites-client { };
@@ -3563,7 +3567,7 @@ with pkgs;
 
   boulder = callPackage ../tools/admin/boulder { };
 
-  btrfs-assistant = libsForQt5.callPackage ../tools/misc/btrfs-assistant { };
+  btrfs-assistant = qt6.callPackage ../tools/misc/btrfs-assistant { };
 
   btrfs-heatmap = callPackage ../tools/filesystems/btrfs-heatmap { };
 
@@ -3847,8 +3851,6 @@ with pkgs;
 
   gluesql = callPackage ../servers/sql/gluesql { };
 
-  gmid = callPackage ../servers/gemini/gmid { };
-
   gmni = callPackage ../applications/networking/browsers/gmni { };
 
   gmnisrv = callPackage ../servers/gemini/gmnisrv { };
@@ -4015,25 +4017,15 @@ with pkgs;
 
   go-audit = callPackage ../tools/system/go-audit { };
 
-  gopass = callPackage ../tools/security/gopass {
-    buildGoModule = buildGo122Module;
-  };
+  gopass = callPackage ../tools/security/gopass { };
 
-  gopass-hibp = callPackage ../tools/security/gopass/hibp.nix {
-    buildGoModule = buildGo122Module;
-  };
+  gopass-hibp = callPackage ../tools/security/gopass/hibp.nix { };
 
-  gopass-jsonapi = callPackage ../tools/security/gopass/jsonapi.nix {
-    buildGoModule = buildGo122Module;
-  };
+  gopass-jsonapi = callPackage ../tools/security/gopass/jsonapi.nix { };
 
-  git-credential-gopass = callPackage ../tools/security/gopass/git-credential.nix {
-    buildGoModule = buildGo122Module;
-  };
+  git-credential-gopass = callPackage ../tools/security/gopass/git-credential.nix { };
 
-  gopass-summon-provider = callPackage ../tools/security/gopass/summon.nix {
-    buildGoModule = buildGo122Module;
-  };
+  gopass-summon-provider = callPackage ../tools/security/gopass/summon.nix { };
 
   gosh = callPackage ../tools/security/gosh { };
 
@@ -4563,6 +4555,7 @@ with pkgs;
   candle = libsForQt5.callPackage ../applications/misc/candle { };
 
   capstone = callPackage ../development/libraries/capstone { };
+  capstone_4 = callPackage ../development/libraries/capstone/4.nix { };
 
   keystone = callPackage ../development/libraries/keystone { };
 
@@ -5103,8 +5096,6 @@ with pkgs;
 
   dsvpn = callPackage ../applications/networking/dsvpn { };
 
-  dtools = callPackage ../development/tools/dtools { };
-
   dwt1-shell-color-scripts = callPackage ../tools/misc/dwt1-shell-color-scripts { };
 
   dtrx = callPackage ../tools/compression/dtrx { };
@@ -6874,7 +6865,9 @@ with pkgs;
 
   unionfs-fuse = callPackage ../tools/filesystems/unionfs-fuse { };
 
-  unparam = callPackage ../tools/misc/unparam { };
+  unparam = callPackage ../tools/misc/unparam {
+    buildGoModule = buildGo121Module;
+  };
 
   inherit (nodePackages) uppy-companion;
 
@@ -7467,7 +7460,7 @@ with pkgs;
 
   dleyna-server = callPackage ../development/libraries/dleyna-server { };
 
-  dmd = callPackage ../development/compilers/dmd ({
+  dmd = callPackage ../by-name/dm/dmd/package.nix ({
     inherit (darwin.apple_sdk.frameworks) Foundation;
   } // lib.optionalAttrs stdenv.isLinux {
     # https://github.com/NixOS/nixpkgs/pull/206907#issuecomment-1527034123
@@ -7808,7 +7801,9 @@ with pkgs;
 
   zeekscript = callPackage ../tools/security/zeekscript { };
 
-  zoekt = callPackage ../tools/text/zoekt { };
+  zoekt = callPackage ../tools/text/zoekt {
+    buildGoModule = buildGo121Module;
+  };
 
   zonemaster-cli = perlPackages.ZonemasterCLI;
 
@@ -8351,7 +8346,7 @@ with pkgs;
   })
     garage
       garage_0_8 garage_0_9
-      garage_0_8_7 garage_0_9_3;
+      garage_0_8_7 garage_0_9_4;
 
   garmintools = callPackage ../development/libraries/garmintools { };
 
@@ -8489,8 +8484,6 @@ with pkgs;
 
   forgejo = callPackage ../applications/version-management/forgejo { };
 
-  forgejo-actions-runner = callPackage ../development/tools/continuous-integration/forgejo-actions-runner { };
-
   gokart = callPackage ../development/tools/gokart { };
 
   gl2ps = callPackage ../development/libraries/gl2ps { };
@@ -9188,8 +9181,6 @@ with pkgs;
 
   i2c-tools = callPackage ../os-specific/linux/i2c-tools { };
 
-  i2p = callPackage ../tools/networking/i2p { };
-
   i2pd = callPackage ../tools/networking/i2pd { };
 
   iannix = libsForQt5.callPackage ../applications/audio/iannix { };
@@ -9283,6 +9274,8 @@ with pkgs;
 
   inadyn = callPackage ../tools/networking/inadyn { };
 
+  incus-lts = callPackage ../by-name/in/incus/lts.nix { };
+
   incron = callPackage ../tools/system/incron { };
 
   indexed-bzip2 = with python3Packages; toPythonApplication indexed-bzip2;
@@ -9627,7 +9620,7 @@ with pkgs;
 
   kaffeine = libsForQt5.callPackage ../applications/video/kaffeine { };
 
-  kak-lsp = callPackage ../tools/misc/kak-lsp {
+  kakoune-lsp = callPackage ../by-name/ka/kakoune-lsp/package.nix {
     inherit (darwin.apple_sdk.frameworks) CoreServices Security SystemConfiguration;
   };
 
@@ -10240,7 +10233,7 @@ with pkgs;
 
   keama = callPackage ../tools/networking/keama { };
 
-  ktailctl = libsForQt5.callPackage ../applications/networking/ktailctl {};
+  ktailctl = kdePackages.callPackage ../applications/networking/ktailctl {};
 
   iredis = callPackage ../tools/admin/iredis { };
 
@@ -10493,9 +10486,16 @@ with pkgs;
 
   lidarr = callPackage ../servers/lidarr { };
 
-  limesuite = callPackage ../applications/radio/limesuite {
-    inherit (darwin.apple_sdk.frameworks) GLUT;
-  };
+  inherit ({
+    limesuite = callPackage ../applications/radio/limesuite {
+      inherit (darwin.apple_sdk.frameworks) GLUT;
+    };
+    limesuiteWithGui = limesuite.override {
+      withGui = true;
+    };
+  })
+  limesuite
+  limesuiteWithGui;
 
   limesurvey = callPackage ../servers/limesurvey { };
 
@@ -12256,8 +12256,6 @@ with pkgs;
 
   pwnat = callPackage ../tools/networking/pwnat { };
 
-  pwndbg = callPackage ../development/tools/misc/pwndbg { };
-
   pwninit = callPackage ../development/tools/misc/pwninit {
     inherit (darwin.apple_sdk.frameworks) Security;
   };
@@ -15074,7 +15072,9 @@ with pkgs;
 
   zip = callPackage ../tools/archivers/zip { };
 
-  zincsearch = callPackage ../servers/search/zincsearch { };
+  zincsearch = callPackage ../servers/search/zincsearch {
+    buildGoModule = buildGo121Module;
+  };
 
   zkfuse = callPackage ../tools/filesystems/zkfuse { };
 
@@ -15443,7 +15443,6 @@ with pkgs;
   };
 
   clang = llvmPackages.clang;
-  clang_9  = llvmPackages_9.clang;
   clang_12 = llvmPackages_12.clang;
   clang_13 = llvmPackages_13.clang;
   clang_14 = llvmPackages_14.clang;
@@ -15453,10 +15452,6 @@ with pkgs;
 
   clang-tools = callPackage ../development/tools/clang-tools { };
 
-  clang-tools_9 = callPackage ../development/tools/clang-tools {
-    llvmPackages = llvmPackages_9;
-  };
-
   clang-tools_12 = callPackage ../development/tools/clang-tools {
     llvmPackages = llvmPackages_12;
   };
@@ -16400,7 +16395,6 @@ with pkgs;
   };
 
   lld = llvmPackages.lld;
-  lld_9 = llvmPackages_9.lld;
   lld_12 = llvmPackages_12.lld;
   lld_13 = llvmPackages_13.lld;
   lld_14 = llvmPackages_14.lld;
@@ -16409,7 +16403,6 @@ with pkgs;
   lld_17 = llvmPackages_17.lld;
 
   lldb = llvmPackages.lldb;
-  lldb_9 = llvmPackages_9.lldb;
   lldb_12 = llvmPackages_12.lldb;
   lldb_13 = llvmPackages_13.lldb;
   lldb_14 = llvmPackages_14.lldb;
@@ -16418,7 +16411,6 @@ with pkgs;
   lldb_17 = llvmPackages_17.lldb;
 
   llvm = llvmPackages.llvm;
-  llvm_9  = llvmPackages_9.llvm;
   llvm_12 = llvmPackages_12.llvm;
   llvm_13 = llvmPackages_13.llvm;
   llvm_14 = llvmPackages_14.llvm;
@@ -16450,14 +16442,6 @@ with pkgs;
       stdenv.targetPlatform));
   in pkgs.${"llvmPackages_${minSupported}"};
 
-  llvmPackages_9 = recurseIntoAttrs (callPackage ../development/compilers/llvm/9 {
-    inherit (stdenvAdapters) overrideCC;
-    buildLlvmTools = buildPackages.llvmPackages_9.tools;
-    targetLlvm = targetPackages.llvmPackages_9.llvm or llvmPackages_9.llvm;
-    targetLlvmLibraries = targetPackages.llvmPackages_9.libraries or llvmPackages_9.libraries;
-    stdenv = if stdenv.cc.cc.isGNU or false then gcc12Stdenv else stdenv; # does not build with gcc13
-  });
-
   llvmPackages_12 = recurseIntoAttrs (callPackage ../development/compilers/llvm/12 ({
     inherit (stdenvAdapters) overrideCC;
     buildLlvmTools = buildPackages.llvmPackages_12.tools;
@@ -16564,10 +16548,10 @@ with pkgs;
     mlton20130715
     mlton20180207Binary
     mlton20180207
-    mlton20210107
+    mlton20210117
     mltonHEAD;
 
-  mlton = mlton20210107;
+  mlton = mlton20210117;
 
   mono = mono6;
 
@@ -16784,7 +16768,6 @@ with pkgs;
     inherit (darwin.apple_sdk.frameworks) Security;
   };
   cargo-deb = callPackage ../development/tools/rust/cargo-deb { };
-  cargo-deps = callPackage ../development/tools/rust/cargo-deps { };
   cargo-docset = callPackage ../development/tools/rust/cargo-docset { };
   cargo-duplicates = callPackage ../development/tools/rust/cargo-duplicates { };
   cargo-edit = callPackage ../development/tools/rust/cargo-edit {
@@ -18042,13 +18025,6 @@ with pkgs;
       hash = "sha256-JfmxtaWvPAmGvTko7QhurduGdSf7XIOv7xoDz60080U=";
     };
   }));
-  ansible_2_14 = python3Packages.toPythonApplication (python3Packages.ansible-core.overridePythonAttrs (oldAttrs: rec {
-    version = "2.14.13";
-    src = oldAttrs.src.override {
-      inherit version;
-      hash = "sha256-ThuzNPDDImq0jFme/knNX+A/JdRVi8BsJ0reK6PiV2o=";
-    };
-  }));
 
   ansible-builder = with python3Packages; toPythonApplication ansible-builder;
 
@@ -19093,7 +19069,7 @@ with pkgs;
   img = callPackage ../development/tools/img { };
 
   include-what-you-use = callPackage ../development/tools/analysis/include-what-you-use {
-    llvmPackages = llvmPackages_17;
+    llvmPackages = llvmPackages_18;
   };
 
   indent = callPackage ../development/tools/misc/indent { };
@@ -19270,10 +19246,7 @@ with pkgs;
 
   lttv = callPackage ../development/tools/misc/lttv { };
 
-  luaformatter = callPackage ../development/tools/luaformatter
-    (lib.optionalAttrs (stdenv.cc.isClang && lib.versionOlder stdenv.cc.version "9") {
-      stdenv = overrideCC stdenv llvmPackages_9.clang;
-    });
+  luaformatter = callPackage ../development/tools/luaformatter { };
 
   lurk = callPackage ../development/tools/lurk { };
 
@@ -20400,7 +20373,9 @@ with pkgs;
     inherit (darwin.apple_sdk.frameworks) CoreServices Security;
   };
 
-  box2d = callPackage ../development/libraries/box2d { };
+  box2d = callPackage ../development/libraries/box2d {
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa Kernel OpenGL;
+  };
 
   boxfort = callPackage ../development/libraries/boxfort { };
 
@@ -20891,6 +20866,9 @@ with pkgs;
     ffmpeg_6
     ffmpeg_6-headless
     ffmpeg_6-full
+    ffmpeg_7
+    ffmpeg_7-headless
+    ffmpeg_7-full
     ffmpeg
     ffmpeg-headless
     ffmpeg-full;
@@ -23923,9 +23901,10 @@ with pkgs;
   inherit (callPackages ../development/libraries/libressl { })
     libressl_3_6
     libressl_3_7
-    libressl_3_8;
+    libressl_3_8
+    libressl_3_9;
 
-  libressl = libressl_3_8;
+  libressl = libressl_3_9;
 
   boringssl = callPackage ../development/libraries/boringssl { };
 
@@ -24945,7 +24924,9 @@ with pkgs;
 
   umockdev = callPackage ../development/libraries/umockdev { };
 
-  unconvert = callPackage ../development/tools/unconvert { };
+  unconvert = callPackage ../development/tools/unconvert {
+    buildGoModule = buildGo121Module;
+  };
 
   uncover = callPackage ../tools/security/uncover { };
 
@@ -25135,8 +25116,6 @@ with pkgs;
 
   whereami = callPackage ../development/libraries/whereami { };
 
-  where-is-my-sddm-theme = libsForQt5.callPackage ../data/themes/where-is-my-sddm-theme { };
-
   wildmidi = callPackage ../development/libraries/wildmidi {
     inherit (darwin.apple_sdk.frameworks) OpenAL;
   };
@@ -26436,13 +26415,6 @@ with pkgs;
 
   mongodb = hiPrio mongodb-6_0;
 
-  mongodb-4_4 = callPackage ../servers/nosql/mongodb/4.4.nix {
-    sasl = cyrus_sasl;
-    boost = boost179.override { enableShared = false; };
-    inherit (darwin) cctools;
-    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
-  };
-
   mongodb-5_0 = callPackage ../servers/nosql/mongodb/5.0.nix {
     sasl = cyrus_sasl;
     boost = boost179.override { enableShared = false; };
@@ -26935,9 +26907,6 @@ with pkgs;
   axis2 = callPackage ../servers/http/tomcat/axis2 { };
 
   inherit (callPackages ../servers/unifi { })
-    unifiLTS
-    unifi5
-    unifi6
     unifi7
     unifi8;
 
@@ -27266,7 +27235,7 @@ with pkgs;
 
   dmraid = callPackage ../os-specific/linux/dmraid { lvm2 = lvm2_dmeventd; };
 
-  drbd = callPackage ../os-specific/linux/drbd { };
+  drbd = callPackage ../os-specific/linux/drbd/utils.nix { };
 
   dropwatch = callPackage ../os-specific/linux/dropwatch { };
 
@@ -28166,8 +28135,6 @@ with pkgs;
 
   smimesign = callPackage ../os-specific/darwin/smimesign { };
 
-  solo5 = callPackage ../os-specific/solo5 { };
-
   statik = callPackage ../development/tools/statik { };
 
   statifier = callPackage ../os-specific/linux/statifier { };
@@ -28350,6 +28317,7 @@ with pkgs;
     ubootROCPCRK3399
     ubootSheevaplug
     ubootSopine
+    ubootTuringRK1
     ubootUtilite
     ubootWandboard
     ;
@@ -29880,7 +29848,7 @@ with pkgs;
   apache-directory-studio = callPackage ../applications/networking/apache-directory-studio { };
 
   apkeep = callPackage ../tools/misc/apkeep {
-    inherit (darwin.apple_sdk.frameworks) Security;
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
   };
 
   apngasm = callPackage ../applications/graphics/apngasm { };
@@ -30407,10 +30375,6 @@ with pkgs;
     inherit (gnome2) libgnomeui GConf;
   };
 
-  corrscope = libsForQt5.callPackage ../applications/video/corrscope {
-    ffmpeg = ffmpeg-full;
-  };
-
   cpeditor = libsForQt5.callPackage ../applications/editors/cpeditor { };
 
   csa = callPackage ../applications/audio/csa { };
@@ -30595,7 +30559,7 @@ with pkgs;
   dnglab = callPackage ../tools/graphics/dnglab { };
 
   inherit (callPackage ../applications/virtualization/docker {})
-    docker_24 docker_25;
+    docker_24 docker_25 docker_26;
 
   docker = docker_24;
   docker-client = docker.override { clientOnly = true; };
@@ -31747,8 +31711,6 @@ with pkgs;
 
   gv = callPackage ../applications/misc/gv { };
 
-  gvisor = callPackage ../applications/virtualization/gvisor { };
-
   guvcview = libsForQt5.callPackage ../os-specific/linux/guvcview { };
 
   gwc = callPackage ../applications/audio/gwc { };
@@ -32434,7 +32396,10 @@ with pkgs;
 
   khard = callPackage ../applications/misc/khard { };
 
-  kid3 = libsForQt5.callPackage ../applications/audio/kid3 { };
+  kid3-cli = qt6Packages.callPackage ../applications/audio/kid3 { withCLI = true; withKDE = false; withQt = false; };
+  kid3-kde = qt6Packages.callPackage ../applications/audio/kid3 { withCLI = true; withKDE = true; withQt = false; };
+  kid3-qt = qt6Packages.callPackage ../applications/audio/kid3 { withCLI = true; withKDE = false; withQt = true; };
+  kid3 = kid3-kde;
 
   kile = libsForQt5.callPackage ../applications/editors/kile { };
 
@@ -32448,7 +32413,7 @@ with pkgs;
 
   klayout = libsForQt5.callPackage ../applications/misc/klayout { };
 
-  klee = callPackage ../applications/science/logic/klee (with llvmPackages_12; {
+  klee = callPackage ../applications/science/logic/klee (with llvmPackages_13; {
     clang = clang;
     llvm = llvm;
     stdenv = stdenv;
@@ -32495,7 +32460,7 @@ with pkgs;
 
   krane = callPackage ../applications/networking/cluster/krane { };
 
-  krita = libsForQt5.callPackage ../applications/graphics/krita { };
+  krita = callPackage ../applications/graphics/krita/wrapper.nix { };
 
   ksuperkey = callPackage ../tools/X11/ksuperkey { };
 
@@ -34999,7 +34964,7 @@ with pkgs;
   teams = callPackage ../applications/networking/instant-messengers/teams { };
 
   teams-for-linux = callPackage ../applications/networking/instant-messengers/teams-for-linux {
-    electron = electron_28;
+    electron = electron_29;
   };
 
   teamspeak_client = libsForQt5.callPackage ../applications/networking/instant-messengers/teamspeak/client.nix { };
@@ -35787,7 +35752,7 @@ with pkgs;
     xwaylandSupport = false;
   };
 
-  chatterino2 = libsForQt5.callPackage ../applications/networking/instant-messengers/chatterino2 {
+  chatterino2 = callPackage ../applications/networking/instant-messengers/chatterino2 {
     stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv;
   };
 
@@ -36471,8 +36436,6 @@ with pkgs;
 
   sumokoin = callPackage ../applications/blockchains/sumokoin { };
 
-  solana-cli = callPackage ../applications/blockchains/solana { };
-
   solana-validator = callPackage ../applications/blockchains/solana-validator { };
 
   snarkos = callPackage ../applications/blockchains/snarkos {
@@ -37015,7 +36978,7 @@ with pkgs;
   fairymax = callPackage ../games/fairymax { };
 
   ferium = callPackage ../games/ferium {
-    inherit (darwin.apple_sdk.frameworks) Security;
+    inherit (darwin.apple_sdk.frameworks) Security SystemConfiguration;
   };
 
   fheroes2 = callPackage ../games/fheroes2 { };
@@ -37626,8 +37589,6 @@ with pkgs;
 
   springLobby = callPackage ../games/spring/springlobby.nix { };
 
-  srb2 = callPackage ../games/srb2 { };
-
   ssl-cert-check = callPackage ../tools/admin/ssl-cert-check { };
 
   stardust = callPackage ../games/stardust { };
@@ -37803,7 +37764,7 @@ with pkgs;
 
   voxelands = callPackage ../games/voxelands { };
 
-  vvvvvv = callPackage ../games/vvvvvv {
+  vvvvvv = callPackage ../by-name/vv/vvvvvv/package.nix {
     inherit (darwin.apple_sdk.frameworks) Foundation IOKit;
   };
 
@@ -39783,6 +39744,8 @@ with pkgs;
 
   kmon = callPackage ../tools/system/kmon { };
 
+  kmonad = haskellPackages.kmonad.bin;
+
   kompose = callPackage ../applications/networking/cluster/kompose { };
 
   kompute = callPackage ../development/libraries/kompute {
@@ -40064,6 +40027,8 @@ with pkgs;
 
   nix-simple-deploy = callPackage ../tools/package-management/nix-simple-deploy { };
 
+  nix-visualize = python3.pkgs.callPackage ../tools/package-management/nix-visualize { };
+
   alejandra = callPackage ../tools/nix/alejandra { };
 
   nixci = callPackage ../tools/nix/nixci {
@@ -40734,7 +40699,7 @@ with pkgs;
   wmutils-opt = callPackage ../tools/X11/wmutils-opt { };
 
   inherit (callPackage ../servers/web-apps/wordpress {})
-    wordpress wordpress6_3 wordpress6_4;
+    wordpress wordpress6_3 wordpress6_4 wordpress6_5;
 
   wordpressPackages = ( callPackage ../servers/web-apps/wordpress/packages {
     plugins = lib.importJSON ../servers/web-apps/wordpress/packages/plugins.json;
diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix
index 21b044583b9e4..307576e85687f 100644
--- a/pkgs/top-level/linux-kernels.nix
+++ b/pkgs/top-level/linux-kernels.nix
@@ -548,6 +548,8 @@ in {
 
     ithc = callPackage ../os-specific/linux/ithc { };
 
+    ryzen-smu = callPackage ../os-specific/linux/ryzen-smu { };
+
     zenpower = callPackage ../os-specific/linux/zenpower { };
 
     zfs_2_1 = callPackage ../os-specific/linux/zfs/2_1.nix {
@@ -572,6 +574,8 @@ in {
 
     hid-tmff2 = callPackage ../os-specific/linux/hid-tmff2 { };
 
+    drbd = callPackage ../os-specific/linux/drbd/driver.nix { };
+
   } // lib.optionalAttrs config.allowAliases {
     ati_drivers_x11 = throw "ati drivers are no longer supported by any kernel >=4.1"; # added 2021-05-18;
     hid-nintendo = throw "hid-nintendo was added in mainline kernel version 5.16"; # Added 2023-07-30
diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix
index 2feeb0cade565..be47100086eab 100644
--- a/pkgs/top-level/ocaml-packages.nix
+++ b/pkgs/top-level/ocaml-packages.nix
@@ -186,8 +186,6 @@ let
 
     chacha = callPackage ../development/ocaml-modules/chacha { };
 
-    charInfo_width = callPackage ../development/ocaml-modules/charInfo_width { };
-
     checkseum = callPackage ../development/ocaml-modules/checkseum { };
 
     chrome-trace = callPackage ../development/ocaml-modules/chrome-trace { };
@@ -737,7 +735,7 @@ let
       then callPackage ../development/ocaml-modules/janestreet/janePackage_0_14.nix {}
       else if lib.versionOlder "4.07" ocaml.version
       then callPackage ../development/ocaml-modules/janestreet/janePackage_0_12.nix {}
-      else callPackage ../development/ocaml-modules/janestreet/janePackage.nix {};
+      else null;
 
     janeStreet =
       if lib.versionOlder "4.13.1" ocaml.version
@@ -763,10 +761,6 @@ let
         inherit (pkgs) openssl;
       }
       else import ../development/ocaml-modules/janestreet {
-        self = self // {
-          ppxlib = ppxlib.override { version = "0.8.1"; };
-        };
-        inherit (pkgs) openssl;
       };
 
     janeStreet_0_15 = (lib.makeScope self.newScope (self': with self'; {
@@ -936,6 +930,10 @@ let
       inherit (pkgs) lame;
     };
 
+    landmarks = callPackage ../development/ocaml-modules/landmarks { };
+
+    landmarks-ppx = callPackage ../development/ocaml-modules/landmarks-ppx { };
+
     lastfm = callPackage ../development/ocaml-modules/lastfm { };
 
     lem = callPackage ../development/ocaml-modules/lem { };
diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix
index d6f6e358a7b96..40351281d5c53 100644
--- a/pkgs/top-level/python-aliases.nix
+++ b/pkgs/top-level/python-aliases.nix
@@ -106,6 +106,7 @@ mapAliases ({
   diff_cover = diff-cover; # added 2021-07-02
   discogs_client = discogs-client; # added 2021-07-02
   distutils_extra = distutils-extra; # added 2023-10-12
+  digital-ocean = python-digitalocean; # addad 2024-04-12
   djangorestframework-jwt = drf-jwt; # added 2021-07-20
   django-sampledatahelper = throw "django-sampledatahelper was removed because it is no longer compatible to latest Django version"; # added 2022-07-18
   django_2 = throw "Django 2 has reached it's projected EOL in 2022/04 and has therefore been removed."; # added 2022-03-05
@@ -208,6 +209,7 @@ mapAliases ({
   hcs_utils = hcs-utils; # added 2024-01-06
   hdlparse = throw "hdlparse has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
   hglib = python-hglib; # added 2023-10-13
+  homeassistant-bring-api = bring-api; # added 2024-04-11
   homeassistant-pyozw = throw "homeassistant-pyozw has been removed, as it was packaged for home-assistant which has removed it as a dependency."; # added 2024-01-05
   HTSeq = htseq; # added 2023-02-19
   hyperkitty = throw "Please use pkgs.mailmanPackages.hyperkitty"; # added 2022-04-29
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 47752b01aee90..2e41466ecbd2d 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -327,6 +327,8 @@ self: super: with self; {
 
   aionotion = callPackage ../development/python-modules/aionotion { };
 
+  aionut = callPackage ../development/python-modules/aionut { };
+
   aiooncue = callPackage ../development/python-modules/aiooncue { };
 
   aioopenexchangerates = callPackage ../development/python-modules/aioopenexchangerates { };
@@ -1728,6 +1730,8 @@ self: super: with self; {
 
   brian2 = callPackage ../development/python-modules/brian2 { };
 
+  bring-api = callPackage ../development/python-modules/bring-api { };
+
   broadbean = callPackage ../development/python-modules/broadbean { };
 
   broadlink = callPackage ../development/python-modules/broadlink { };
@@ -1885,6 +1889,9 @@ self: super: with self; {
   capstone = callPackage ../development/python-modules/capstone {
     inherit (pkgs) capstone;
   };
+  capstone_4 = callPackage ../development/python-modules/capstone/4.nix {
+    inherit (pkgs) capstone_4;
+  };
 
   captcha = callPackage ../development/python-modules/captcha { };
 
@@ -2934,6 +2941,8 @@ self: super: with self; {
 
   devtools = callPackage ../development/python-modules/devtools { };
 
+  dfdiskcache = callPackage ../development/python-modules/dfdiskcache { };
+
   diagrams = callPackage ../development/python-modules/diagrams { };
 
   diceware = callPackage ../development/python-modules/diceware { };
@@ -2964,8 +2973,6 @@ self: super: with self; {
 
   diffusers = callPackage ../development/python-modules/diffusers { };
 
-  digital-ocean = callPackage ../development/python-modules/digitalocean { };
-
   digi-xbee = callPackage ../development/python-modules/digi-xbee { };
 
   dill = callPackage ../development/python-modules/dill { };
@@ -3891,6 +3898,8 @@ self: super: with self; {
 
   eufylife-ble-client = callPackage ../development/python-modules/eufylife-ble-client { };
 
+  eval-type-backport = callPackage ../development/python-modules/eval-type-backport { };
+
   evaluate = callPackage ../development/python-modules/evaluate { };
 
   evdev = callPackage ../development/python-modules/evdev { };
@@ -4550,6 +4559,8 @@ self: super: with self; {
 
   fx2 = callPackage ../development/python-modules/fx2 { };
 
+  fyta-cli = callPackage ../development/python-modules/fyta-cli { };
+
   g2pkk = callPackage ../development/python-modules/g2pkk { };
 
   galario = toPythonModule (pkgs.galario.override {
@@ -4605,6 +4616,8 @@ self: super: with self; {
 
   gdata = callPackage ../development/python-modules/gdata { };
 
+  gdb-pt-dump = callPackage ../development/python-modules/gdb-pt-dump { };
+
   gdcm = toPythonModule (pkgs.gdcm.override {
     inherit (self) python;
     enablePython = true;
@@ -4719,6 +4732,8 @@ self: super: with self; {
 
   gflanguages = callPackage ../development/python-modules/gflanguages { };
 
+  gfsubsets = callPackage ../development/python-modules/gfsubsets { };
+
   ghapi = callPackage ../development/python-modules/ghapi { };
 
   ghdiff = callPackage ../development/python-modules/ghdiff { };
@@ -5320,6 +5335,8 @@ self: super: with self; {
 
   hijri-converter = callPackage ../development/python-modules/hijri-converter { };
 
+  hikari = callPackage ../development/python-modules/hikari { };
+
   hikvision = callPackage ../development/python-modules/hikvision { };
 
   hiredis = callPackage ../development/python-modules/hiredis { };
@@ -5362,8 +5379,6 @@ self: super: with self; {
 
   home-assistant-bluetooth = callPackage ../development/python-modules/home-assistant-bluetooth { };
 
-  homeassistant-bring-api = callPackage ../development/python-modules/homeassistant-bring-api { };
-
   home-assistant-chip-clusters = callPackage ../development/python-modules/home-assistant-chip-clusters { };
 
   home-assistant-chip-core = callPackage ../development/python-modules/home-assistant-chip-core { };
@@ -7331,6 +7346,8 @@ self: super: with self; {
 
   microsoft-kiota-serialization-text = callPackage ../development/python-modules/microsoft-kiota-serialization-text { };
 
+  midea-beautiful-air = callPackage ../development/python-modules/midea-beautiful-air { };
+
   midiutil = callPackage ../development/python-modules/midiutil { };
 
   mido = callPackage ../development/python-modules/mido { };
@@ -8955,6 +8972,8 @@ self: super: with self; {
 
   omrdatasettools = callPackage ../development/python-modules/omrdatasettools { };
 
+  oncalendar = callPackage ../development/python-modules/oncalendar { };
+
   ondilo = callPackage ../development/python-modules/ondilo { };
 
   onetimepass = callPackage ../development/python-modules/onetimepass { };
@@ -9424,6 +9443,8 @@ self: super: with self; {
 
   pbr = callPackage ../development/python-modules/pbr { };
 
+  pbs-installer = callPackage ../development/python-modules/pbs-installer { };
+
   pc-ble-driver-py = toPythonModule (callPackage ../development/python-modules/pc-ble-driver-py { });
 
   pcapy-ng = callPackage ../development/python-modules/pcapy-ng {
@@ -9965,6 +9986,8 @@ self: super: with self; {
     inherit (pkgs) memcached;
   };
 
+  python-motionmount = callPackage ../development/python-modules/python-motionmount { };
+
   python-otbr-api = callPackage ../development/python-modules/python-otbr-api { };
 
   python-openems = callPackage ../development/python-modules/python-openems { };
@@ -10374,6 +10397,8 @@ self: super: with self; {
 
   pwlf = callPackage ../development/python-modules/pwlf { };
 
+  pwndbg = callPackage ../development/python-modules/pwndbg { };
+
   pwntools = callPackage ../development/python-modules/pwntools {
     debugger = pkgs.gdb;
   };
@@ -12168,6 +12193,8 @@ self: super: with self; {
 
   python-didl-lite = callPackage ../development/python-modules/python-didl-lite { };
 
+  python-digitalocean = callPackage ../development/python-modules/python-digitalocean { };
+
   python-docx = callPackage ../development/python-modules/python-docx { };
 
   python-doi = callPackage ../development/python-modules/python-doi { };
@@ -12816,6 +12843,8 @@ self: super: with self; {
 
   random2 = callPackage ../development/python-modules/random2 { };
 
+  randomfiletree = callPackage ../development/python-modules/randomfiletree { };
+
   range-typed-integers = callPackage ../development/python-modules/range-typed-integers { };
 
   rangehttpserver = callPackage ../development/python-modules/rangehttpserver { };
@@ -13737,6 +13766,8 @@ self: super: with self; {
 
   simplesat = callPackage ../development/python-modules/simplesat { };
 
+  simplesqlite = callPackage ../development/python-modules/simplesqlite { };
+
   simple-dftd3 = callPackage ../development/libraries/science/chemistry/simple-dftd3/python.nix {
     inherit (pkgs) simple-dftd3;
   };
@@ -13883,6 +13914,10 @@ self: super: with self; {
     inherit (self) python;
   });
 
+  snakemake = toPythonModule (pkgs.snakemake.override {
+    python3 = python;
+  });
+
   snakemake-executor-plugin-cluster-generic = callPackage ../development/python-modules/snakemake-executor-plugin-cluster-generic { };
 
   snakemake-interface-common = callPackage ../development/python-modules/snakemake-interface-common { };
@@ -13893,6 +13928,10 @@ self: super: with self; {
 
   snakemake-interface-storage-plugins = callPackage ../development/python-modules/snakemake-interface-storage-plugins { };
 
+  snakemake-storage-plugin-s3 = callPackage ../development/python-modules/snakemake-storage-plugin-s3 { };
+
+  snakemake-storage-plugin-xrootd = callPackage ../development/python-modules/snakemake-storage-plugin-xrootd { };
+
   snakebite = callPackage ../development/python-modules/snakebite { };
 
   snakeviz = callPackage ../development/python-modules/snakeviz { };
@@ -14251,6 +14290,8 @@ self: super: with self; {
 
   sqlite-utils = callPackage ../development/python-modules/sqlite-utils { };
 
+  sqliteschema = callPackage ../development/python-modules/sqliteschema { };
+
   sqlmap = callPackage ../development/python-modules/sqlmap { };
 
   sqlmodel = callPackage ../development/python-modules/sqlmodel { };
@@ -16047,6 +16088,8 @@ self: super: with self; {
 
   types-colorama = callPackage ../development/python-modules/types-colorama { };
 
+  types-dataclasses = callPackage ../development/python-modules/types-dataclasses { };
+
   types-dateutil = callPackage ../development/python-modules/types-dateutil { };
 
   types-decorator = callPackage ../development/python-modules/types-decorator { };
@@ -17098,6 +17141,8 @@ self: super: with self; {
 
   zfec = callPackage ../development/python-modules/zfec { };
 
+  zha = callPackage ../development/python-modules/zha { };
+
   zha-quirks = callPackage ../development/python-modules/zha-quirks { };
 
   ziafont = callPackage ../development/python-modules/ziafont { };
diff --git a/pkgs/top-level/qt6-packages.nix b/pkgs/top-level/qt6-packages.nix
index e136faf2fb299..eb04beaef2794 100644
--- a/pkgs/top-level/qt6-packages.nix
+++ b/pkgs/top-level/qt6-packages.nix
@@ -65,6 +65,7 @@ makeScopeWithSplicing' {
   };
   qcoro = callPackage ../development/libraries/qcoro { };
   qgpgme = callPackage ../development/libraries/gpgme { };
+  qmlbox2d = callPackage ../development/libraries/qmlbox2d { };
   packagekit-qt = callPackage ../tools/package-management/packagekit/qt.nix { };
 
   qt6ct = callPackage ../tools/misc/qt6ct { };
diff --git a/pkgs/top-level/release-haskell.nix b/pkgs/top-level/release-haskell.nix
index 67e56fbbc7d7a..a4c523e9fe6f2 100644
--- a/pkgs/top-level/release-haskell.nix
+++ b/pkgs/top-level/release-haskell.nix
@@ -270,7 +270,7 @@ let
         cabal-install
         cabal2nix
         cachix
-        carp
+        # carp broken on 2024-04-09
         cedille
         client-ip-echo
         darcs
@@ -491,11 +491,11 @@ let
         compilerNames.ghc981
         compilerNames.ghc982
       ] released;
-      Cabal_3_10_2_1 = lib.subtractLists [
+      Cabal_3_10_3_0 = lib.subtractLists [
         compilerNames.ghc981
         compilerNames.ghc982
       ] released;
-      Cabal-syntax_3_10_1_0 = lib.subtractLists [
+      Cabal-syntax_3_10_3_0 = lib.subtractLists [
         compilerNames.ghc981
         compilerNames.ghc982
       ] released;
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index 5fac0bb1b460f..e8ede387b4c2d 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -159,6 +159,7 @@ let
               # Ensure that X11/GTK are in order.
               jobs.firefox-unwrapped.x86_64-linux
               jobs.cachix.x86_64-linux
+              jobs.devenv.x86_64-linux
 
               /*
               TODO: re-add tests; context: https://github.com/NixOS/nixpkgs/commit/36587a587ab191eddd868179d63c82cdd5dee21b
@@ -182,6 +183,7 @@ let
               jobs.stdenv.x86_64-darwin
               jobs.cargo.x86_64-darwin
               jobs.cachix.x86_64-darwin
+              jobs.devenv.x86_64-darwin
               jobs.go.x86_64-darwin
               jobs.python3.x86_64-darwin
               jobs.nixpkgs-review.x86_64-darwin
@@ -209,6 +211,7 @@ let
               jobs.stdenv.aarch64-darwin
               jobs.cargo.aarch64-darwin
               jobs.cachix.aarch64-darwin
+              jobs.devenv.aarch64-darwin
               jobs.go.aarch64-darwin
               jobs.python3.aarch64-darwin
               jobs.nixpkgs-review.aarch64-darwin