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.14.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 passagemath_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.45.tar.gz (8.6 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.45-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.45-cp314-cp314t-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.45-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.45-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.45-cp314-cp314t-macosx_13_0_x86_64.whl (214.0 kB view details)

Uploaded CPython 3.14tmacOS 13.0+ x86-64

passagemath_rubiks-10.6.45-cp314-cp314t-macosx_13_0_arm64.whl (205.8 kB view details)

Uploaded CPython 3.14tmacOS 13.0+ ARM64

passagemath_rubiks-10.6.45-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.45-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.45-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.45-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.45-cp312-abi3-macosx_13_0_x86_64.whl (213.9 kB view details)

Uploaded CPython 3.12+macOS 13.0+ x86-64

passagemath_rubiks-10.6.45-cp312-abi3-macosx_13_0_arm64.whl (205.4 kB view details)

Uploaded CPython 3.12+macOS 13.0+ ARM64

passagemath_rubiks-10.6.45-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.45-cp311-cp311-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.45-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.45-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.45-cp311-cp311-macosx_13_0_x86_64.whl (213.2 kB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

passagemath_rubiks-10.6.45-cp311-cp311-macosx_13_0_arm64.whl (204.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

passagemath_rubiks-10.6.45-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.45-cp310-cp310-musllinux_1_2_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

passagemath_rubiks-10.6.45-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.45-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.45-cp310-cp310-macosx_13_0_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

passagemath_rubiks-10.6.45-cp310-cp310-macosx_13_0_arm64.whl (205.0 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: passagemath_rubiks-10.6.45.tar.gz
  • Upload date:
  • Size: 8.6 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.45.tar.gz
Algorithm Hash digest
SHA256 93b8c81d97cf2e892a2e39d8a9576082a673b612286801251cd1bb714f3cc5e7
MD5 de57be22a2c8813bd9606e6bb769c038
BLAKE2b-256 280c6630a7b8f6eed7a59e9bb4f6f47c39ef268a31d326c21b9d6e888fd133a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5c700d9777da91cc685fc85dc426c37c8d0f7b090e921effcc8a68cbe7191299
MD5 1bb5e44378198280022d8e6ad35c6a1c
BLAKE2b-256 77f807f503ab6ba089eadf7077ca1e1e9e4ba6189517e071a23544629d145fae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 20fd20dfca9f11946c916a2d6f42130513c5760f528620e91affc113f9791730
MD5 2d8bfe281fa0ca8b32017d66b8df9d7c
BLAKE2b-256 0343922a5e5e533a1288e36758b3c5f5cfa702e59577b690197b76be0b03e66d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6006e3471bc8691701cac8750dbf48f5d7ed4e4b0602409142cf8ec4f921bdc6
MD5 43cf47cbe3510504616db4b771c7e4dd
BLAKE2b-256 23d82f302edfc6947bf7268462ef11f99aed42023475d970165aa76e6cd614f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9416c8cd7289f6bdb2a980cf5c1d49a14808c91e6b9dd5ba680d66d45fd45116
MD5 9447fe467f5aacf7fa267ccd063ab0eb
BLAKE2b-256 24682a80c401e7d15ad3a33809752a255ce8f7884735f50a05e98ac797da0883

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp314-cp314t-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 be002aaf4e6e8a8fad312cafb58b23f6a92437852185eba8faeed548025b5d0c
MD5 6af192a48332cfdf407c9e22710e36c2
BLAKE2b-256 748d19b7a78d12e258a6d7ec3d2127efbc5673472e733849ee4ad9c24104992d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp314-cp314t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 fb170ee063ba023a7059e84c22b61297dbf4ca0d85a8e800cbfdb8f2e1a55976
MD5 a6faeb2bb68ec0a0fef62a9a7f24eb2b
BLAKE2b-256 b374f74c8fbe8fa0ba84b24635cd4dcdc20c50107064c43ffd3234e84f1e4626

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d99f7531e773dbbbb1bc1f0dc20c63ae5cdc6f550267fabdc1b31808b684babb
MD5 590baaa3147f4d02d3ef25dd26105c9e
BLAKE2b-256 43fd2418e5a8c9aca5a70f68e52ebd85994208b11b7bdd18fdb3681a5f72d71e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2351e6c6de416288fb075418e49b5db4bd939cc16a51b411ffe650988e549d66
MD5 6d1802a6a7e297328d721dd2922e949a
BLAKE2b-256 ebc3c2e0192637050a2c001f3b13f1e58653f6c1c317dbd06cc79e1bca40f471

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7f0763ef32f6fc2ff06b575d8bcd9fe6b94d2275ce8426afa9c003a7252cabfa
MD5 e9597a8c7c50974886c88650e3a44280
BLAKE2b-256 f0ded2a348dbc5d20632c4211e4c04700b16c936f140747c2ccc50b93e721fc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d036289a2f0c62914403c806d49bbe15486cc85a095e979d089c439f040cd1d
MD5 5f32234d5f181913f14a9aa54150c782
BLAKE2b-256 8a81e4ef627584484be2452b7c4dda9c87ac4e64ad016dea0071762c6e51d851

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 48905836b84002ff5ef85ff1daa8eda9a95cbfe7367accf95948b4ef750e95ba
MD5 ccef4d5626b35f72d76e5b1517040344
BLAKE2b-256 8800209bdaf6a307719cbea55a65a4d3e724069f8e7639d56d4f55ef9ec371ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp312-abi3-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1d44a51935a28867a240b455031a8fcc8ee013f869bfee6de07c21dd697856a4
MD5 44549ceb10cc3997ad112d7d9573fd97
BLAKE2b-256 e7e8f54cdd46daf8b68279d91c42430aec9bcbbee8c1cfc4996faf98052db9c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5467d4d35c41d600d11c7bc9f7a3665610b638af71ba37b090a1c35b998fc3d6
MD5 598bdf767f98e686b492a567669d0859
BLAKE2b-256 67db58c3681b0f014aa0e2e76859cf59acff1a6e41eca168736dce3b6ef1a9fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bb96d728175dc6d27c4a80ff3a454cbdc19470fd9eb33ee76d4e6ddba22a3dcb
MD5 67e69772cf55255e7e4b1714b73c6d83
BLAKE2b-256 7f8d99536e661752e99a8442e410408e29f7afe8d773bb40e05c86c70f112d68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48e509b55c4549671568c9dca8ca989067de5c7358ca7fdc9cb08c4d9f043cb0
MD5 7e76973544ad1bc3dd383eef9bc4ca68
BLAKE2b-256 55149ab8a061928ef0d9c18c4d7a5018f8241ead334b7b7fb00c349bad7043f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f09f5ccc0afb61d35b8c21cb3934c9c3bd4c37cb3fb124db59ff03fe0ad99532
MD5 055c74676fd830cafdda522c3ce48e27
BLAKE2b-256 a2cc3511936a7d4e1ffa000658d8849779229b6b0118431a32df1fafba377ef6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 330d273d60a40e93b7e92a6411e8aa83999533a1753f1e30b3cb71489f439549
MD5 6ba0006aa62a255778ef790daac11632
BLAKE2b-256 7cc124ec47490dec9845189ce3293359c81c49d571bc6335c445cb84980e8523

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 0591189883946aca72bc1ff96c4b6cace384446809341374ad54dbbf3e7a7254
MD5 1269ae164fab640a2d944b7af08068fb
BLAKE2b-256 929708b4e1cea00038442508bd78338511962acfb3299c9d82e04660bb058f4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 01aab083240084558a00f558cb943fde0b8c9f951b367f8889d8909419e84e75
MD5 c83d54dc74c75cf11ef34041e9fb96b6
BLAKE2b-256 2f309761550b2884a8429cd29bd76c4e3deaab2f271db32317ab5f19cbb3d8de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fa06cd05153b15608e96b1274d4b79a21e8282235cf4afdf52f3dea9bf12f998
MD5 05a309aa2321baa3c9be053905827819
BLAKE2b-256 2901604a024368107df7aa73db7b07340fcc311be9973c64bc018eaa924d06f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ed8fec2583b76525db9b8ae573f30690b1cb2a745c2b8baa8bca17daf672873
MD5 43b6afbda785561d47cf9e23fc826218
BLAKE2b-256 4010171c27370bacddae447ef9400494e8bc20b8e04048bbf67fc3912aabc9c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 53678ecbbcad0cbc44189f3b21b4cd6b73381b1e7b0e84503103ba3f7255a2ee
MD5 aa40282d06eff5e2b843153b9f5cd937
BLAKE2b-256 23ad1535a1dcd05d3e2711f4b88a151827d0895ca262eb1e1ae7a44fa6823126

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 2586599633f7c7e401748e68b2898a62aaee05d9ee5a17a37a8ef64b126df4ec
MD5 aeb1bef8ffdccaa6029f7f0fcb7a724b
BLAKE2b-256 52cea7a8f7a8c4765bf01943d3fd793341d29ab622a1a8e025dc939b67d4fb9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for passagemath_rubiks-10.6.45-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 cfcfa22183c6fad96d2b6922eeac190eb772fb6e1318aa890f89f6b74083c31c
MD5 ad853a7fa6c0b868b7bedea25df249a6
BLAKE2b-256 6f1481bfc4e6c4fe566fe651894aae84af323c757d0e2f46ec09c557db3fe172

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