Not particularly great, but putting it out anyway, as it's a very old project.
Released as part of an effort to share significant unshared projects 2/12/2025. From 8/7/2019.