Contributed by Lucas Descroix
Contributed by Mathieu Christe
Contributed by Alban-Paul Valmary
Contributed by Blaze Type