Author: Astafev Viktor.