Written by Chris Klosowski. Last updated on June 28, 2023. Removed a leftover debugging function level that was left by accident.