Skip to main content

passagemath: Algorithms for Rubik's cube

Project description

passagemath is open source mathematical software in Python, released under the GNU General Public Licence GPLv2+.

It is a fork of SageMath, which has been developed 2005-2025 under the motto “Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, and MATLAB”.

The passagemath fork uses the motto “Creating a Free Passage Between the Scientific Python Ecosystem and Mathematical Software Communities.” It was created in October 2024 with the following goals:

Full documentation is available online.

passagemath attempts to support and provides binary wheels suitable for all major Linux distributions and recent versions of macOS.

Binary wheels for native Windows (x86_64) are are available for a subset of the passagemath distributions. Use of the full functionality of passagemath on Windows currently requires the use of Windows Subsystem for Linux (WSL) or virtualization.

The supported Python versions in the passagemath 10.6.x series are 3.10.x-3.13.x.

About this pip-installable distribution package

This pip-installable distribution passagemath-rubiks provides an interface to several programs for working with Rubik’s cubes.

Michael Reid (GPL) http://www.cflmath.com/~reid/Rubik/optimal_solver.html

  • optimal - uses many pre-computed tables to find an optimal solution to the 3x3x3 Rubik’s cube

Dik T. Winter (MIT License)

  • cube - uses Kociemba’s algorithm to iteratively find a short solution to the 3x3x3 Rubik’s cube

  • size222 - solves a 2x2x2 Rubik’s cube

Eric Dietz (GPL) https://web.archive.org/web/20121212175710/http://www.wrongway.org/?rubiksource

  • cu2 - A fast, non-optimal 2x2x2 solver

  • cubex - A fast, non-optimal 3x3x3 solver

  • mcube - A fast, non-optimal 4x4x4 solver

What is included

  • Interface

  • Features (via passagemath-environment)

  • Binary wheels on PyPI contain prebuilt copies of rubiks executables.

Examples

Using rubiks programs on the command line:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks" sage -sh -c cubex

Finding the installation location of a rubiks program:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks[test]" ipython

In [1]: from sage.features.rubiks import cubex

In [2]: cubex().absolute_filename()

Using the Python interface:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks[test]" ipython

In [1]: from sage.interfaces.rubik import *

In [2]: C = RubiksCube("R U F L B D")

In [3]: sol = CubexSolver().solve(C.facets()); sol
Out[3]: "U' L' L' U L U' L U D L L D' L' D L' D' L D L' U' L D' L' U L' B' U' L' U B L D L D' U' L' U L B L B' L' U L U' L' F' L' F L' F L F' L' D' L' D D L D' B L B' L B' L B F' L F F B' L F' B D' D' L D B' B' L' D' B U' U' L' B' D' F' F' L D F'"

Using sage.groups.perm_gps:

$ pipx run --pip-args="--prefer-binary" --spec "passagemath-rubiks[test]" ipython

In [1]: from sage.all__sagemath_rubiks import *

In [2]: rubik = CubeGroup(); state = rubik.faces("R")

In [3]: rubik.solve(state)
Out[3]: 'R'

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

passagemath_rubiks-10.6.34.tar.gz (8.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

passagemath_rubiks-10.6.34-cp314-cp314t-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.34-cp314-cp314t-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.34-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.34-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.34-cp314-cp314t-macosx_13_0_x86_64.whl (213.2 kB view details)

Uploaded CPython 3.14tmacOS 13.0+ x86-64

passagemath_rubiks-10.6.34-cp314-cp314t-macosx_13_0_arm64.whl (204.9 kB view details)

Uploaded CPython 3.14tmacOS 13.0+ ARM64

passagemath_rubiks-10.6.34-cp312-abi3-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.34-cp312-abi3-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.34-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.34-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.34-cp312-abi3-macosx_13_0_x86_64.whl (213.3 kB view details)

Uploaded CPython 3.12+macOS 13.0+ x86-64

passagemath_rubiks-10.6.34-cp312-abi3-macosx_13_0_arm64.whl (204.9 kB view details)

Uploaded CPython 3.12+macOS 13.0+ ARM64

passagemath_rubiks-10.6.34-cp311-cp311-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.34-cp311-cp311-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.34-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.34-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.34-cp311-cp311-macosx_13_0_x86_64.whl (212.6 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

passagemath_rubiks-10.6.34-cp311-cp311-macosx_13_0_arm64.whl (204.4 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

passagemath_rubiks-10.6.34-cp310-cp310-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

passagemath_rubiks-10.6.34-cp310-cp310-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.34-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

passagemath_rubiks-10.6.34-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

passagemath_rubiks-10.6.34-cp310-cp310-macosx_13_0_x86_64.whl (212.8 kB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

passagemath_rubiks-10.6.34-cp310-cp310-macosx_13_0_arm64.whl (204.6 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

Details for the file passagemath_rubiks-10.6.34.tar.gz.

File metadata

  • Download URL: passagemath_rubiks-10.6.34.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for passagemath_rubiks-10.6.34.tar.gz
Algorithm Hash digest
SHA256 663d79e79a82cc24c287bebf8670b935d72f928ab40d22ea3dc794b1f1e9a43b
MD5 2b3f72057b754d06f49cb76dbd6c4b1b
BLAKE2b-256 21ea4d2aef448048c912f139b861775bd68ec026caaa76ab12fb26b9c70b6941

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ecfd4bf5d50050e4d2bfc4c60bf5470bcb5658ff77aad51f4a33a367e0df8fbe
MD5 2af18b8530c924d77b9ee1dde8c8793c
BLAKE2b-256 69e8949a95676b46faf433c031ac8ebdf96524be7e46c5095a15fb6e379d2619

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1565da1c589da37902c343c2f92dd46cd329f4ac587f86f4f1947c172f7691e8
MD5 71cde306b462c6561f3443e09f360962
BLAKE2b-256 752c7a1c331b3ea8f9cf9410c55562dbe78a4c32eed51c19204e5b28fbd2ac79

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10b3fe82b0f19ce92d96b0afd93fc384333637c3ba0f491309cd21660ed4b42a
MD5 16b11243fa5d29ee1b7dae9cb8b48da5
BLAKE2b-256 42b011dfd0646f882f0edd272520b1ef9b759278ecb8480a3b35d60c067168c7

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11fefbec9ebe5c554f0b73a4f4e478b45272738e55dbb3f499a3239beb94fa70
MD5 f090ecfa6e6fbf9645121b6e5a6f42db
BLAKE2b-256 5cb369ad993ec94fe9fe539bb8c3c50053a63575df1ab9af84346450a3e031d8

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp314-cp314t-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp314-cp314t-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 3fdfdbf1a9e07d28601e1fc22fb2bef0f0dd8a5a72e796adbbb12dcf0c087d7a
MD5 2bfa643b3fbc0db28038798accc9b075
BLAKE2b-256 7b8a69ca35efad29d3b6ff00be906b494e4d1b69f3bdfba33fd6ae16005a8c94

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp314-cp314t-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp314-cp314t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 079728371d07d191bc60511b105c31242cd8e24c93d9b9ed1444245f59cb8a71
MD5 987154e883108c552ae1c956a93099e0
BLAKE2b-256 ad7b49e4cbfd3831e5dd29f35f77b3924d23d8cc6e09b7b2c77b8a078c3b870e

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 884ea1ee5d181abf246d830b8144ba761c0ba8059c0d106fa6658e250e54fb67
MD5 296d6664e1ad49605d4f239e76abc701
BLAKE2b-256 1337884452930e0f9e89767d9919cff71b49ae2fa4c075b7a5901ba55cf7c3a5

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ecbdea1921d565a1e88208fc6bc51aa9471075b09e9e326c4350fa52821b91c5
MD5 e1fbf1e872e81ffdb10ba5c574176c87
BLAKE2b-256 4418004e1437c5cbcd44ceaafe1c835a9910fda23457ee78b8acebd9a4c1b8fc

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1c104ab01cd4394398bd6625a9c22914b44b6c078b35c898c557109fa6064ae
MD5 1d7159427d33020148ad1f146fe27ed6
BLAKE2b-256 0dc10115c4733b84566c0126296bc76a7907831216e7356cb310aad9e16f932b

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bd5d16e77a6818f830b011ba004dd3cb65330930ea4823f3da82178116ab8519
MD5 06fe130289357e9bfe5a973dabf1d83e
BLAKE2b-256 9a97ee57c31455d56ee1948676b0901b6c86231a16035511a0c06f212da0f83f

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp312-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 6d4eb7f79c49a64167b8a8d919c76e7d85d54202c8e5c0fffb931de7d519ada7
MD5 1afd00fdeb305c9b4a5c66fef55056ac
BLAKE2b-256 84e14a28bad0ce669f9c60668e4934929acc1d66b47df3996cfe768014b75ae0

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp312-abi3-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp312-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1f36448fb2c6cd35e1379c31168db26ffc36dadf481658b2b6cf4ec204af14cd
MD5 726eec707fd12051d06ef14b26af63f4
BLAKE2b-256 18c0c08ff49cfc4d3694ae08113f06693c782e4ebb3122dfa86ede0440fe57ab

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 04a18dd8bd939a3d9e108e99dfd21af8852b7c6718d8ee7b8cb291fd635b713e
MD5 e8b0eb91d3523621bcf70c2e1647c86b
BLAKE2b-256 cfa4c27d74dcd5b3454f4faea4b17038a89a019ec727eec60f5f39aba03c4ffb

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b233e40b6dcee922ec555f1ab57db9fd8645c34d0ab6dd4d4367696264f78e04
MD5 da2dc4941e8d4ff50bc84c41edea8d26
BLAKE2b-256 d30db4a5bcb97d5f267ab3c5fd4655e791d0d2be21533c00205de3ce8014030b

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 07c4cb535a61e4653aac6c039a348d6ced9806464d2a34da1f2856568dd071a4
MD5 0405521fce2a4d844ded7ffadf281d7e
BLAKE2b-256 623e98ff0ad2eea4cab23d98285e54c2011bad31abbd44518b1d3eb9d4f8b0c9

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 366644b791b0e00d632decfea41261a876782fe50a267aa23230ca084561bb8c
MD5 2481fbb551d876a55829b64545110f87
BLAKE2b-256 77dd91a23fa9c7f2dcd0cfa768b87863e54d1ad3a44efc476bdee8d718dcbe2f

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 766666e9266df92940c2169274d8fce08aaac340171b4205db6fb3ccff8eb63c
MD5 bd990208c572c660ca7142012809e4eb
BLAKE2b-256 eec25a4d8adcb74c24e5af10d933c8c34c9225244a6c9d4617ec30e08cc922f0

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 0424694ca60694f97f645ec4cf083d02296bd900310fdb8db8a4fc8c2b48b4dd
MD5 a3915095a96c90ec0cd60ef01d8a16bc
BLAKE2b-256 be5edbee00054f98b5a3f9a9f7bffce459960b62a3eb4a54c2317e858d63049b

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a72cfc98f68824656f36fa7146fa181629596fe222eba7951a06f57bc695a499
MD5 88184cb971fd94a80e61cdeb85040256
BLAKE2b-256 a73b8a5714ccccf604d1bae86c59506171d619907d64fe1fcd970a2f3e66d7f0

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 997c7eeb917f8ef4b367705e00e11cf5b8a9bc01077c9a1da26aeb7d6184a5d4
MD5 160e75ea7607f10082cdc7bd7bf247f7
BLAKE2b-256 364738112b3e181bb35f6738693987517b3f92630e599ff1a6c5a2a5f594329a

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b7ff300edc5b6b50c4b8fa26e7cda0787baad240f26dcb0cad2025683ead0d1
MD5 af25eff2cbf8a407b21f131087c79c75
BLAKE2b-256 d15af71b705046b0a4e4c769d6a1e5c25b7e2c69571845dc881b6f22c3538ad5

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d484cee8546ae12f41ffbd7f3fb95c8cf7ddaa55233a3d70ea043314cddd113a
MD5 8dc75a0b5981f34eba36e6e879f1869e
BLAKE2b-256 63cbed54cc52cdedc2bbdbefc62e7d069e750f6d9eb0e88e8f0697a846bec55c

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 900cc348446e079ed1edc71a43a95135f194d0d929904c7a40dd323b2f1d6975
MD5 5e35a72b41cff3a41721d757734cb0cb
BLAKE2b-256 01251550c14944383fa4f194b7bb4adddb720f921aa9ff8173a9d6b77435d4c7

See more details on using hashes here.

File details

Details for the file passagemath_rubiks-10.6.34-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.34-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bcd264af23ddeeb8d68a7a6907cc73d0e4d224f07fb8d75b1105d9f8a21d8eaf
MD5 ba44960594352b2d838f8ec99b16dff0
BLAKE2b-256 59a8b9f60a676c510ba8c5ce459d793c67fefde801af56e9f16e8e528da5fee8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page