Copyright 2022 Andrey Sitnik <andrey@sitnik.ru> and other contributors