{"id":335114,"date":"2022-06-29T09:00:27","date_gmt":"2022-06-29T09:00:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=335114"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=335114","title":{"rendered":"<span>\u041a\u0430\u043a \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0433\u0440\u0443\u0441\u0442\u043d\u0443\u044e \u0434\u0435\u0432\u043e\u0447\u043a\u0443, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/940\/066\/4e1\/9400664e10118fd9c1fd01e32a40f6c1.jpg\" width=\"800\" height=\"437\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/940\/066\/4e1\/9400664e10118fd9c1fd01e32a40f6c1.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042f \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0441\u044f \u0441 \u043d\u0438\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0433\u0434\u0435-\u0442\u043e \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435, \u0432 \u0441\u0432\u043e\u0451\u043c \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043a\u0430\u043d\u0430\u043b\u0435 \u043f\u0440\u043e \u043f\u0438\u0442\u043e\u043d \u0438 \u0432\u0441\u044f\u043a\u043e\u0435. \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0441\u0445\u043e\u0436\u0443\u0441\u044c \u0441 \u043b\u044e\u0434\u044c\u043c\u0438, \u043d\u043e \u0441 \u0434\u0440\u0443\u0437\u044c\u044f\u043c\u0438 \u0443 \u043c\u0435\u043d\u044f \u043f\u043b\u043e\u0445\u043e\u0432\u0430\u0442\u043e &#8212; \u0442\u043e \u043b\u0438 \u044f \u0442\u0430\u043a\u043e\u0439 \u0438\u0437\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u0442\u043e \u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0443 \u043c\u0435\u043d\u044f \u043f\u0430\u0440\u0448\u0438\u0432\u044b\u0439. \u0411\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0441\u0442\u0432\u0430 \u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u043d\u0435 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e &#8212; \u043c\u043d\u0435 \u0438 \u0442\u0430\u043a \u043d\u043e\u0440\u043c, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e. \u0410 \u0441 \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u043d\u0435\u043c \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u043b\u0441\u044f: \u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441 \u043d\u0438\u043c \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f. \u041b\u0435\u0433\u043a\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u043f\u0438\u0447\u043d\u0430\u044f \u043f\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u043c \u0431\u0435\u0441\u0435\u0434\u0430 \u043d\u0430\u0441\u0447\u0451\u0442 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0435\u0451 \u0432 \u043f\u043e\u0441\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u0432\u043e\u044e \u0440\u0435\u0434\u0430\u043a\u0442\u0443\u0440\u0443, \u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0438\u0434\u0435\u0438 \u0438 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u0430 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043b\u0438\u0446\u0430.<\/p>\n<div class=\"persona\" persona=\"true\"><img decoding=\"async\" persona=\"true\" class=\"image persona__image\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/2dc\/07e\/2a0\/2dc07e2a0f8807afd4d7e0c325cacbf0.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2dc\/07e\/2a0\/2dc07e2a0f8807afd4d7e0c325cacbf0.jpg\" data-blurred=\"true\"\/><\/p>\n<h5 class=\"persona__heading\" persona=\"true\">\u0428\u0435\u0440\u0445\u0430\u043d<\/h5>\n<p>\u0414\u0440\u0443\u0433 \u0432\u043e\u043d \u0442\u043e\u0439 \u0433\u0438\u0435\u043d\u044b<\/p>\n<\/div>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a \u044f \u0431\u0435\u0437\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u041e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u043c RPG: \u0432\u044b \u043b\u0438\u0431\u043e \u043a\u0430\u0447\u0430\u0435\u0442\u0435 \u0432\u043e\u0438\u043d\u0430, \u043b\u0438\u0431\u043e \u043c\u0430\u0433\u0430, \u043b\u0438\u0431\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e (\u043f\u043e\u043b\u0443\u0432\u043e\u0438\u043d-\u043f\u043e\u043b\u0443\u043c\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0438 \u043a\u0430\u043a \u043c\u0430\u0433, \u0438 \u043a\u0430\u043a \u0432\u043e\u0438\u043d). \u0418 \u044f \u0432\u043a\u0430\u0447\u0430\u043b \u0432\u0441\u0451 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>\u041d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043b\u0435\u0442\u0430\u044e\u0442 \u043c\u043d\u0435 \u043f\u0440\u044f\u043c\u043e \u0432 \u0434\u0443\u0448\u0443 (\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442) \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0432\u0441\u0451 \u0432\u0432\u0435\u0440\u0445 \u0434\u043d\u043e\u043c. \u0423\u0432\u044b, \u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043c\u0435\u044e, \u0438 \u0432 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u044f \u043e\u0441\u0442\u0440\u043e \u0436\u0430\u043b\u0435\u044e, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432\u0437\u044f\u0442\u044c \u0438 \u043d\u0430\u043a\u0438\u0434\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435, \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u043e\u0432\u0441\u0435, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u044d\u0442\u0443 \u044d\u043c\u043e\u0446\u0438\u044e \u0441\u043a\u0432\u043e\u0437\u044c \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>\u0410 \u043c\u043e\u0436\u0435\u0442, \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e?<\/p>\n<hr\/>\n<p>\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u044f) \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0438\u043f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432: \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u043b\u0443\u0442\u043e\u043d\u043e\u0432, \u0438\u0433\u0440\u044b \u0441\u0432\u0435\u0442\u0430 \u0438 \u0447\u0435\u0433\u043e \u0442\u0430\u043c \u0435\u0449\u0451 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u044d\u0442\u0438 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0438. \u0415\u0449\u0451 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u043e\u0432\u044b\u0445 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043a\u043e\u0448\u0435\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u044c \u043a\u0438\u0441\u0442\u043e\u0447\u043a\u0438 \u0438\u0437 <s>\u0445\u0432\u043e\u0441\u0442\u0430 \u0435\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u0430<\/s> \u0448\u0435\u0440\u0441\u0442\u0438 \u0432\u043e\u043b\u043a\u0430, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0445\u043b\u043e\u043f\u043a\u043e\u0432\u0443\u044e \u0431\u0443\u043c\u0430\u0433\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u0438\u0437 \u0431\u0438\u043e\u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0439. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u0443\u0440\u0441\u043e\u0432 \u043f\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044e&#8230; \u041d\u0438\u0447\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e! \u0427\u0435\u043b\u043e\u0432\u0435\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445.<\/p>\n<p>\u041f\u043e\u0434\u0443\u043c\u0430\u0432 \u043d\u0430\u0434 \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c, \u044f \u0443\u0441\u043c\u0435\u0445\u043d\u0443\u043b\u0441\u044f \u043f\u0440\u043e \u0441\u0435\u0431\u044f, \u0432\u0435\u0434\u044c \u043f\u043e\u0434 \u043c\u043e\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043d\u0430\u0441\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438&#8230; \u0422\u0430\u043a, \u0441\u0442\u043e\u043f! \u041d\u0430\u0441\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438! \u0412\u043e\u0442 \u043e\u043d\u043e!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/2de\/bb6\/d19\/2debb6d19df511470223c9811cb4c394.jpg\" alt=\"207 \u0433\u043e\u0434 \u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b, \u043a\u0441\u0442\u0430\u0442\u0438\" title=\"207 \u0433\u043e\u0434 \u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b, \u043a\u0441\u0442\u0430\u0442\u0438\" width=\"1024\" height=\"575\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2de\/bb6\/d19\/2debb6d19df511470223c9811cb4c394.jpg\" data-blurred=\"true\"\/><figcaption>207 \u0433\u043e\u0434 \u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b, \u043a\u0441\u0442\u0430\u0442\u0438<\/figcaption><\/figure>\n<p>\u0414\u0430 \u043d\u0435 \u044d\u0442\u043e! \u0412\u043e\u0442 \u044d\u0442\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/960\/909\/1d7\/9609091d7b311a544db361c11be2ff4b.jpg\" width=\"679\" height=\"485\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/960\/909\/1d7\/9609091d7b311a544db361c11be2ff4b.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u043e: \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u043d\u043e\u0435 \u0433\u0440\u0430\u0444\u0444\u0438\u0442\u0438. \u041a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u043b\u0438\u043a\u0438\u0445 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u043e\u0432, \u043a\u0430\u043a \u044f.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0433\u0440<strong>\u0430<\/strong>\u0444\u0444\u0438\u0442\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0433\u0440\u0430\u0444\u0444<strong>\u0438<\/strong>\u0442\u0438. \u0423\u0436 \u043d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a \u0432\u0430\u043c, \u0430 \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0437\u043d\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u0431\u0435\u0448\u0438\u0432\u0430\u043b\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u044f \u043f\u0440\u0438\u0432\u044b\u043a.<\/p>\n<h2>\u0420\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a, \u0441\u043e\u0431\u0441\u043d\u0430, \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0433\u0440\u0443\u0441\u0442\u043d\u0443\u044e \u0434\u0435\u0432\u043e\u0447\u043a\u0443, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0435\u0432\u043e\u0447\u043a\u0443 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u0433\u0440\u0443\u0441\u0442\u043d\u043e\u0439. \u041e\u0447\u0435\u043d\u044c.<\/p>\n<p>\u041a\u0430\u043a? \u0418\u0437\u0438. \u041d\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0431\u0438\u0442\u044c \u0435\u0451 \u043e\u0442\u0446\u0430. \u0417\u0430 \u043d\u0430\u0441 \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043a\u0440\u0430\u0434\u0451\u043c \u0421\u043e\u0444\u0438\u044e \u043f\u0440\u044f\u043c\u043e \u0441 \u043f\u0430\u043d\u0438\u0445\u0438\u0434\u044b \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/5a5\/93d\/5d7\/5a593d5d7cb24c4bbe45bece1b6a5045.jpg\" alt=\"Gleb Garanich \/ Reuters \/ Scanpix \/ LETA\" title=\"Gleb Garanich \/ Reuters \/ Scanpix \/ LETA\" width=\"1335\" height=\"1019\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5a5\/93d\/5d7\/5a593d5d7cb24c4bbe45bece1b6a5045.jpg\" data-blurred=\"true\"\/><figcaption>Gleb Garanich \/ Reuters \/ Scanpix \/ LETA<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0411\u043e\u0440\u043e\u043c\u0438\u0440, &#171;\u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c&#187;. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0432 \u043a\u0430\u043a\u0438\u0445 \u0446\u0432\u0435\u0442\u0430\u0445 \u043c\u044b \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c. \u0410 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u043e, \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0435\u0441\u0442\u044c \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438.<\/p>\n<h2>\u041a\u0430\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0435\u0441\u0442\u044c \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438<\/h2>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0442\u0443\u0442 \u0434\u0432\u0430: \u043b\u0438\u0431\u043e \u0441\u043e\u0441\u043a\u0440\u0430\u043f\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0430\u0439\u0442 \u0441 \u043a\u0440\u0430\u0441\u043a\u0430\u043c\u0438, \u043b\u0438\u0431\u043e \u043f\u043e\u0439\u0442\u0438 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u043c\u0430\u0433\u0430\u0437\u0438\u043d \u0438 \u0441\u043e\u0441\u043a\u0440\u0430\u043f\u0430\u0442\u044c \u0435\u0433\u043e \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b &#8212; \u043d\u0430\u0440\u043e\u0434 \u043b\u0435\u043d\u0438\u0432\u044b\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>\u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c scrapy, \u043d\u043e \u044f \u0435\u0433\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u043b\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/dda\/e54\/e12\/ddae54e12c646ad7e13329bdb43344c4.jpg\" width=\"1920\" height=\"955\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dda\/e54\/e12\/ddae54e12c646ad7e13329bdb43344c4.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">import json import re from pathlib import Path  import requests from bs4 import BeautifulSoup from pprintpp import pprint  session = requests.Session()  PRODUCT_URL = 'https:\/\/leonardo.ru\/ishop\/group_5040700859\/' AVAILABLE_SKUS_FILE = Path('data\/available_skus.json')  response = session.get(PRODUCT_URL, timeout=5) response.raise_for_status() html = response.content  soup = BeautifulSoup(html) options = soup.find('select', {'id': 'colorselection'}).find_all('option', {'class': 'instock'})   def parse_sku(text: str) -> str:     # \u043a\u0438\u0434\u043d\u0435\u0439 4230 BLK -> 4230     match = re.match(r'.+ (\\w+) BLK$', text)     assert match, text     return match[1]   available_skus = [parse_sku(option.text) for option in options] pprint(available_skus)  # ['9105', '6055', '4060', '5230', ...] print(len(available_skus))  # 23 - \u043d\u0435 \u0433\u0443\u0441\u0442\u043e!  with AVAILABLE_SKUS_FILE.open('w') as file:     json.dump(available_skus, file) <\/code><\/pre>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432 &#8212; \u0445\u043e\u0440\u043e\u0448\u043e, \u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 RGB \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 &#8212; \u043b\u0443\u0447\u0448\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u0438 \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0432 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/7d2\/398\/aad\/7d2398aadfe5c195645b16edf4e30a3f.jpg\" width=\"1920\" height=\"567\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7d2\/398\/aad\/7d2398aadfe5c195645b16edf4e30a3f.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">import json from pathlib import Path  import requests from bs4 import BeautifulSoup from pprintpp import pprint  session = requests.Session()   CATALOG_URL = 'https:\/\/www.montana-cans.com\/en\/spray-cans\/montana-spray-paint\/black-50ml-600ml-graffiti-paint\/montana-black-400ml' SKU_TO_COLOR_FILE = Path('data\/sku-to-color.json')  response = session.get(CATALOG_URL, timeout=5) response.raise_for_status() html = response.content  soup = BeautifulSoup(html) options = soup.find('form', {'id': 'sAddToBasket'}).find('ul', {'class': 'color-variant-list'}).find_all('li')   def parse_sku(text: str) -> str:     # BLK 5020 -> 5020     return text.removeprefix('BLK').strip()   sku_to_color = {} for option in options:     label = option.find('label')      title = label.find('span', {'class': 'color-code'}).text     sku = parse_sku(title)      sku_to_color[sku] = {         'rgb': json.loads(label['data-rgb']),         'cmyk': json.loads(label['data-cmyk']),         'hex': label['data-hex'],     }  pprint(sku_to_color) # '8250': { #     'cmyk': {'C': '39', 'K': '61', 'M': '81', 'Y': '93'}, #     'hex': '#5b2607', #     'rgb': {'B': '7', 'G': '38', 'R': '91'}, # }, with SKU_TO_COLOR_FILE.open('w') as file:     json.dump(sku_to_color, file) <\/code><\/pre>\n<p>\u0421\u0440\u0435\u0434\u0438 \u0441\u043e\u0442\u0435\u043d \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430 linux, \u044f \u0432\u044b\u0431\u0435\u0440\u0443 gimp. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0430\u0441\u0441\u043e\u0440\u0442\u0438\u043c\u0435\u043d\u0442 \u0446\u0432\u0435\u0442\u043e\u0432 \u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0443 \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0443 gimp, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u044f\u043c \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c.<\/p>\n<pre><code class=\"python\">import json from logging import getLogger from pathlib import Path  log = getLogger(__name__)  AVAILABLE_SKUS_FILE = Path('data\/available_skus.json') SKU_TO_COLOR_FILE = Path('data\/sku-to-color.json') PALETTE_FILE = Path('~\/.config\/GIMP\/2.10\/palettes\/graffiti-scraped.gpl')  with AVAILABLE_SKUS_FILE.open() as file:     available_skus = json.load(file)  with SKU_TO_COLOR_FILE.open() as file:     sku_to_color = json.load(file)   palette_content = \"\"\" GIMP Palette Name: Graffiti: scraped Columns: 0 # \"\"\".strip('\\n') for sku in available_skus:     try:         color = sku_to_color[sku]     except KeyError:         log.warning(f'{sku=} not found, skipping')         continue      palette_content += '\\n' + ' '.join(color['rgb'].values()) + f' {sku}'   PALETTE_FILE.expanduser().write_text(palette_content) <\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ad9\/54a\/51f\/ad954a51fe44c6a117fab12fe6d4695a.jpg\" width=\"584\" height=\"385\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ad9\/54a\/51f\/ad954a51fe44c6a117fab12fe6d4695a.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0443<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0437 \u0432\u0441\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0441\u043a\u0443\u043f\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043c\u0430\u0433\u0430\u0437\u0438\u043d. \u042f \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c\u044e 1, \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u044b\u043f\u0435\u043d\u0434\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u043a\u0443\u043f\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0451\u0440\u043d\u044b\u0439 \u0446\u0432\u0435\u0442.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0443\u0442 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c: \u0441\u0430\u043c\u0430 \u0441\u0442\u0435\u043d\u0430 &#8212; \u0443\u0436\u0435 \u0441\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u0439 \u0446\u0432\u0435\u0442, \u043f\u043b\u044e\u0441 \u0447\u0451\u0440\u043d\u044b\u0439 \u044f \u043f\u043e\u043a\u0443\u043f\u0430\u044e, \u043f\u043b\u044e\u0441 \u0442\u0451\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439, \u0435\u0441\u043b\u0438 \u043a\u0440\u0430\u0441\u0438\u0442\u044c \u043d\u0435\u0441\u0438\u043b\u044c\u043d\u043e. \u0418\u0442\u043e\u0433\u043e 3 \u0446\u0432\u0435\u0442\u0430 \u043f\u043e \u0446\u0435\u043d\u0435 \u043e\u0434\u043d\u043e\u0433\u043e! \u042f \u0443 \u043c\u0430\u043c\u044b <s>\u043d\u0438\u0449\u0435\u0431\u0440\u043e\u0434<\/s> \u043c\u0430\u0440\u043a\u0435\u0442\u043e\u043b\u043e\u0433.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u043c\u043d\u0435 \u0443\u0436\u0430\u0441\u043d\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0441\u0435\u043f\u0438\u0435\u0439, \u043d\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0441\u0435\u0440\u044b\u0435 \u0438 \u0447\u0451\u0440\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u0434\u0430\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0430\u0443\u0440\u043d\u044b\u0439 \u0442\u043e\u043d \u043a\u0430\u0440\u0442\u0438\u043d\u0435, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0441\u0442\u0435\u043d\u0430-\u0442\u043e \u0441\u0435\u0440\u0430\u044f, \u043f\u0435\u0440\u0435\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u044f \u043d\u0435 \u0445\u043e\u0447\u0443.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c RGB \u043f\u0430\u043b\u0438\u0442\u0440\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u044b \u0432 \u043d\u0430\u0448\u0443 \u0442\u0440\u0451\u0445\u0446\u0432\u0435\u0442\u043d\u0443\u044e. Gimp \u044d\u0442\u043e \u0443\u043c\u0435\u0435\u0442, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435 \u0438 \u043f\u043e\u0442\u044e\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041d\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434 &#171;\u043d\u0430\u0439\u0442\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0446\u0432\u0435\u0442 \u0438\u0437 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f rgb-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442&#187; \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0433\u043b\u0430\u0437 \u043f\u043b\u0435\u0432\u0430\u043b \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442 \u043c\u043e\u0437\u0433 \u043d\u0430\u0441\u0447\u0451\u0442 \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (r, g, b), \u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0434 &#171;\u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438&#187; \u043d\u0435 \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0435\u0441\u0442\u044c \u043d\u0435-rgb \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0433\u0434\u0435 \u0443\u0436\u0435 \u0443\u0447\u0442\u0435\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043a\u0438\u0434\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0443 &#171;\u043d\u0430 \u0433\u043b\u0430\u0437&#187;:<\/p>\n<pre><code class=\"python\">from functools import lru_cache from itertools import product from operator import itemgetter from pathlib import Path from typing import Tuple  from colormath.color_conversions import convert_color from colormath.color_diff import delta_e_cie2000 from colormath.color_objects import LabColor, sRGBColor from PIL import Image from tqdm import tqdm  IMAGE_FILE_PATH = Path('data\/original.jpg') PALETTE_COLORS = [     [135] * 3,  # light gray     [52] * 3,  # dark gray     [0] * 3,  # black ] OUTPUT_FILE_PATH = Path('data\/colors-reduced.png')   def get_distance(rgb1: Tuple[int, int, int], rgb2: Tuple[int, int, int]) -> float:     color1 = sRGBColor(*(color \/ 255 for color in rgb1))     color2 = sRGBColor(*(color \/ 255 for color in rgb2))      return delta_e_cie2000(         convert_color(color1, LabColor),         convert_color(color2, LabColor),     )   @lru_cache(maxsize=None) def translate_color(color: Tuple[int, int, int]) -> Tuple[int, int, int]:     diffs = (         (get_distance(color, palette_color), palette_color)         for palette_color in PALETTE_COLORS     )     translated_color = sorted(diffs, key=itemgetter(0))[0][1]     return tuple(translated_color)   image = Image.open(str(IMAGE_FILE_PATH)) image = image.convert('RGB')  width, height = image.size  # \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a \u0432 \u0446\u0438\u043a\u043b\u0435 - \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0443\u043f\u0430\u044f \u0438\u0434\u0435\u044f, # \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c batch processing; # \u0443\u0432\u0435\u0440\u0435\u043d, \u0432 PIL \u044d\u0442\u043e \u0435\u0441\u0442\u044c, \u043d\u043e \u044f \u0437\u0430\u043b\u0435\u043d\u0438\u043b\u0441\u044f :( # \u043c\u0435\u043d\u044f \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u043a\u044d\u0448\u0438\u0440\u0443\u044e # translate_color, \u0438 \u043e\u043d\u043e \u043f\u043e\u043d\u0435\u043c\u043d\u043e\u0433\u0443 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442\u0441\u044f for xy in tqdm(     product(range(width), range(height)),     total=width * height, ):     color = image.getpixel(xy)     image.putpixel(xy, translate_color(color))  image.show() image.save(str(OUTPUT_FILE_PATH))<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/9fc\/39d\/899\/9fc39d899c2deee3d14c9857e3831b35.jpg\" width=\"1335\" height=\"1019\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9fc\/39d\/899\/9fc39d899c2deee3d14c9857e3831b35.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438<\/h2>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435.<\/p>\n<ol>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0430 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442, \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0443 \u0431\u0443\u043a\u0432 \u0442\u0438\u043f\u0430 \u041e \u0438\u043b\u0438 \u0412 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u043a\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0432\u0438\u0441\u0435\u0442\u044c \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434: \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u0438\u0441\u044f\u0449\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0441\u044f\u043a\u0438\u0445 \u0442\u0440\u044e\u043a\u043e\u0432 \u0441 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u044b\u0432\u0430\u044e\u0442 \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0436\u0438\u0434\u043a\u043e\u0441\u0442\u044c \u0438 \u043c\u0430\u043b\u044f\u0440\u043d\u044b\u0439 \u0441\u043a\u043e\u0442\u0447 ). \u041d\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u0434\u043e\u043b\u0433\u043e (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437-\u0437\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u044e\u0437\u0430\u0442\u044c \u043b\u0430\u0439\u0444\u0445\u0430\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u0444\u0430\u0440\u0435\u0442 &#8212; \u0434\u0435\u043b\u043e \u043d\u0435\u0431\u044b\u0441\u0442\u0440\u043e\u0435, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0413\u0430\u0440\u0440\u0438 \u041f\u043b\u043e\u0442\u0442\u0435\u0440\u0430. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0435\u043c \u043f\u0440\u043e\u0449\u0435, \u0442\u0435\u043c \u043f\u0440\u043e\u0449\u0435&#8230; \u0412 \u0441\u043c\u044b\u0441\u043b\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0449\u0435 \u0440\u0438\u0441\u0443\u043d\u043e\u043a, \u0447\u0435\u043c \u0433\u0440\u0443\u0431\u0435\u0435 \u043b\u0438\u043d\u0438\u0438, \u0442\u0435\u043c \u043f\u0440\u043e\u0449\u0435 \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f, \u0438\u043d\u0430\u0447\u0435 \u0432\u0441\u0451 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0430\u0436\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0433\u0440\u0443\u0431\u044b\u043c\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f! \u041d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0442\u0443\u0434\u0430, \u043a\u0443\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043b\u0438\u0446\u0430. \u041f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0443\u043d\u043a\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0442\u043d\u043e &#8212; \u0442\u0435\u043c \u043f\u0440\u043e\u0449\u0435 \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c. \u042d\u0442\u043e \u0438\u0433\u0440\u0430\u0435\u0442 \u043d\u0430 \u0440\u0443\u043a\u0443, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043b\u043a\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u043d\u0430 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u0435. \u041d\u043e \u0442\u0430\u043a\u043e\u0439 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043d\u0435\u0441\u0442\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0430\u043b\u043a\u0430 \u043e \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0446\u0430\u0445.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u043e\u0442, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0438 \u0432\u0441\u0451: \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435.<\/p>\n<p>\u0410\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442, \u0441\u043a\u0430\u043b\u044c\u043f\u0435\u043b\u044c!<\/p>\n<h2>\u0420\u0435\u0436\u0435\u043c \u043f\u043e \u0436\u0438\u0432\u043e\u043c\u0443<\/h2>\n<p>\u042f \u0440\u0443\u0447\u043a\u0430\u043c\u0438 \u0443\u0434\u0430\u043b\u044f\u044e \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u043e\u043d, \u0443\u0437\u043e\u0440 \u0440\u044f\u0434\u043e\u043c \u0441 \u043b\u0438\u0446\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0432\u0435\u0449\u0438, \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u044e\u0449\u0438\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u0435\u0432\u043e\u0447\u043a\u0430 \u0442\u0443\u0442 \u0433\u043b\u0430\u0432\u043d\u0430\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u043d\u0435\u0451, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u043c\u0438\u0440 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u043d\u0435\u0439 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d &#8212; \u0438 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435! \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u0442\u0430\u043a \u0447\u0451\u0442\u043a\u043e \u0432\u0438\u0434\u043d\u0430, \u0430 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0431\u0443\u0434\u0442\u043e \u0440\u0430\u0437\u043c\u044b\u0442\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/985\/6a0\/fc1\/9856a0fc1da512cd6d22cabe26804c29.gif\" alt=\"\u0422\u0443\u0442 \u044f \u0436\u0435\u043d\u0449\u0438\u043d\u0435 \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043f\u043e\u0434\u0430\u0440\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0433\u043b\u0430\u0437\u0430, \u043a\u0441\u0442\u0430\u0442\u0438\" title=\"\u0422\u0443\u0442 \u044f \u0436\u0435\u043d\u0449\u0438\u043d\u0435 \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043f\u043e\u0434\u0430\u0440\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0433\u043b\u0430\u0437\u0430, \u043a\u0441\u0442\u0430\u0442\u0438\" width=\"1335\" height=\"1019\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/985\/6a0\/fc1\/9856a0fc1da512cd6d22cabe26804c29.gif\"\/><figcaption>\u0422\u0443\u0442 \u044f \u0436\u0435\u043d\u0449\u0438\u043d\u0435 \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043f\u043e\u0434\u0430\u0440\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0433\u043b\u0430\u0437\u0430, \u043a\u0441\u0442\u0430\u0442\u0438<\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0432\u0441\u0451, \u043a\u0440\u043e\u043c\u0435 \u043b\u0438\u0446\u0430. \u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u0446 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c computer vision \u0438\u043b\u0438 human hands. \u0412 \u0433\u0438\u043c\u043f\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 &#171;\u043b\u0430\u0441\u0441\u043e&#187;, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0438\u0442\u043e\u043d\u0430 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:<\/p>\n<pre><code class=\"python\">import cv2 from pathlib import Path   IMAGE_FILE_PATH = Path('data\/colors-reduced.png') OUTPUT_PATH = Path('data\/face-detected.png')  image = cv2.imread(str(IMAGE_FILE_PATH)) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faceCascade = cv2.CascadeClassifier(cv2.data.haarcascades + \"haarcascade_profileface.xml\") faces = faceCascade.detectMultiScale(         gray,         scaleFactor=1.3,         minNeighbors=3,         minSize=(30, 30) )  for (x, y, w, h) in faces:     cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)  cv2.imwrite(str(OUTPUT_PATH), image)<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c6\/779\/527\/1c67795277de579d4f952495692f00bb.png\" width=\"1335\" height=\"1019\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c6\/779\/527\/1c67795277de579d4f952495692f00bb.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042d\u044d\u044d\u044d\u044d\u044d&#8230; \u041b\u0430\u0434\u043d\u043e, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0434\u0435\u043d\u044c \u0440\u0443\u043a. \u041d\u0430\u0432\u0435\u0440\u043d\u043e, \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0435 \u043e\u0431\u0443\u0447\u0430\u043b\u0438 \u043d\u0430 \u0433\u0440\u0443\u0441\u0442\u043d\u044b\u0445 \u0434\u0435\u0432\u043e\u0447\u043a\u0430\u0445 \u00af_(\u30c4)_\/\u00af<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 &#171;\u0437\u0430\u0433\u0440\u0443\u0431\u043b\u044f\u0435\u043c&#187; \u0440\u0438\u0441\u0443\u043d\u043e\u043a. \u041d\u0443\u0436\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0440\u043e\u0432\u043a\u043e\u0432 \u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 &#8212; \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0442 \u043d\u0438\u0445 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0442\u043e\u043b\u043a\u0430.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044e\u0437\u0430\u0435\u043c \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e erode+dilate. Erode &#8212; \u044d\u0442\u043e \u044d\u0440\u043e\u0437\u0438\u044f, \u043e\u043d\u0430 \u043e\u0442\u043a\u0443\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043e\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c, \u0442\u043e erode \u043e\u0442\u043a\u0443\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0438 \u043e\u043d\u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442. \u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u043c\u0435\u0441\u0442\u043e, \u0438 \u043c\u044b \u044e\u0437\u0430\u0435\u043c dilate &#8212; \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u0441\u0451 \u044d\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 \u0432\u0441\u0435\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445, \u043a\u0440\u043e\u043c\u0435 \u043b\u0438\u0446\u0430.<\/p>\n<p>\u0412 gimp \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e\u0434 \u044d\u0442\u0438 \u0448\u0442\u0443\u043a\u0438, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u043f\u0438\u0442\u043e\u043d\u0438\u0442\u044c:<\/p>\n<pre><code class=\"python\">import cv2 from pathlib import Path import numpy as np   IMAGE_FILE_PATH = Path('data\/colors-reduced.png') OUTPUT_PATH = Path('data\/erode-dilate.png')  image = cv2.imread(str(IMAGE_FILE_PATH))  kernel = np.ones((4, 4), np.uint8) image = cv2.erode(image, kernel, iterations=1) image = cv2.dilate(image, kernel, iterations=1) cv2.imwrite(str(OUTPUT_PATH), image)<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/53b\/105\/a44\/53b105a44f12c1b003f12e067cdb6fc5.gif\" width=\"1101\" height=\"1019\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53b\/105\/a44\/53b105a44f12c1b003f12e067cdb6fc5.gif\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042f \u043f\u043e\u0434\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u044e \u0441\u043b\u0435\u0437\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0442\u0440\u0430\u0433\u0438\u0447\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u0442\u0443\u0442 \u0436\u0435 \u0441\u0442\u0438\u0440\u0430\u044e. \u041e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e \u0438 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u0434\u0435\u044e \u0434\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u0432\u0432\u0435\u0440\u0445\u0443 \u0432\u0438\u0441\u044f\u0449\u0435\u0435 \u0440\u0430\u0441\u043f\u044f\u0442\u0438\u0435. \u042d\u0442\u043e \u0432\u0441\u0451 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442, \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c, \u0430 \u044f \u0445\u043e\u0447\u0443 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u044b\u043b\u043e, \u0433\u043e\u043b\u0443\u044e \u043f\u0440\u0430\u0432\u0434\u0443, \u0447\u0442\u043e\u0431 \u043e\u043d\u0430 \u043f\u0440\u044f\u043c \u0440\u0435\u0437\u0430\u043b\u0430: \u0438 \u0441\u043b\u0451\u0437 \u043d\u0435\u0442 &#8212; \u0442\u043e \u043b\u0438 \u0441\u0438\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u043a\u0430\u044f (\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b &#8212; \u043d\u0435\u0442), \u0442\u043e \u043b\u0438 \u0432\u044b\u043f\u043b\u0430\u043a\u0430\u043b\u0430 \u0443\u0436\u0435 \u0432\u0441\u0451, &#8212; \u0438 \u043d\u0435\u044f\u0441\u043d\u043e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0442\u0430\u043c \u0441\u0432\u0435\u0440\u0445\u0443 \u0431\u043e\u0433 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u0432\u0435\u0449\u044c: \u0442\u0440\u0435\u0442\u044c\u044e \u0441\u0432\u0435\u0447\u043a\u0443. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043a \u043d\u0443\u0436\u043d\u043e.<\/p>\n<h2>\u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u0430\u0436\u043d\u0430<\/h2>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442, \u0442\u043e \u0432\u0441\u0435 \u0442\u0451\u043c\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c. \u0423 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0442\u0451\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0445 \u0438 \u0447\u0451\u0440\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0441\u043d\u0438\u0437\u0443 \u0438 \u0441\u043f\u0440\u0430\u0432\u0430, \u0438 \u0435\u0441\u043b\u0438 \u0438\u0445 \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c, \u043d\u0430\u0448 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u043b\u0438\u0441\u0442 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u0433\u0443\u0441\u0435\u043d\u0438\u0446\u044b &#8212; \u0431\u0435\u0437 \u043a\u0440\u0430\u0451\u0432. \u041d\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043d\u0430\u0434\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e \u0440\u0430\u043c\u043a\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u044f \u0432\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u0434 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043b\u0438\u0441\u0442\u0430.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f. \u0427\u0451\u0440\u043d\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u043a\u0440\u0430\u0441\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0440\u0445 \u0442\u0451\u043c\u043d\u043e-\u0441\u0435\u0440\u043e\u0433\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9f8\/cd4\/3d0\/9f8cd43d02385f1c0630f166ad83e5a5.gif\" width=\"1526\" height=\"1119\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9f8\/cd4\/3d0\/9f8cd43d02385f1c0630f166ad83e5a5.gif\"\/><figcaption><\/figcaption><\/figure>\n<p>\u042f \u0442\u0443\u0442 \u0435\u0449\u0451 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0431\u0435\u043b\u043e\u0435 \u043f\u043b\u0430\u043c\u044f \u0441\u0432\u0435\u0447\u0435\u0439 &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b \u043b\u0438\u0448\u043d\u0438\u0439 \u0431\u0435\u043b\u044b\u0439 \u0430\u043a\u0440\u0438\u043b \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439. \u041d\u0435 \u0443\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f, \u0445\u043e\u0442\u044c \u0438 \u0441\u043c\u043e\u0435\u0442 \u0435\u0433\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e, \u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u043e\u0436\u0434\u0451\u043c. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0441\u0432\u0435\u0447\u0438 \u0432 \u0440\u0435\u0430\u043b\u0435 \u0442\u043e\u0436\u0435 \u0433\u0430\u0441\u043d\u0443\u0442.<\/p>\n<h2>\u0413\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u044f, \u043c\u0430\u0442\u044c \u0435\u0451<\/h2>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u043f\u0440\u043e \u0431\u0443\u043a\u0432\u044b \u041e \u0438 \u0412? \u0412\u043e\u0442 \u0442\u0443\u0442 \u044f \u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0432\u0438\u0441\u044f\u0449\u0438\u043c\u0438 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435 \u0447\u0430\u0441\u0442\u044f\u043c\u0438. \u041d\u0430\u0439\u0442\u0438 \u0438\u0445 \u043b\u0435\u0433\u043a\u043e: \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 &#171;\u0432\u0435\u0434\u0440\u043e&#187;, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0434\u0451\u043c \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0433\u043b\u0430 \u0438 \u043a\u0440\u0430\u0441\u0438\u043c \u0432\u0441\u0435 \u0441\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u0438, \u0447\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043c, \u0432 \u043a\u0440\u0430\u0441\u043d\u044b\u0439. \u0412\u0441\u0435 \u043d\u0435\u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 &#8212; \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435, \u0438 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e &#171;\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c&#187; \u0441 \u043a\u0440\u0430\u0441\u043d\u044b\u043c\u0438.<\/p>\n<pre><code class=\"python\">from pathlib import Path from PIL import Image, ImageDraw   IMAGE_FILE_PATH = Path('data\/erode-dilate-with-border.png') OUTPUT_FILE_PATH = Path('data\/dangling-detected.png')  image = Image.open(str(IMAGE_FILE_PATH))  start_coords = 0, 0 fill_color = 255, 0, 0  ImageDraw.floodfill(image, start_coords, fill_color, thresh=0)  image.show() image.save(str(OUTPUT_FILE_PATH))<\/code><\/pre>\n<p>\u041d\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u043d\u0438\u0436\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 (\u0441\u0435\u0440\u044b\u0435) \u044f \u0443\u0434\u0430\u043b\u0438\u043b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0435\u043d\u044c, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b \u0441 \u043a\u0440\u0430\u0441\u043d\u044b\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0430\u043b\u044f\u043f\u0438\u0441\u0442\u044b\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0438 \u0441\u0435\u0440\u044b\u0439 \u0446\u0432\u0435\u0442 \u0443\u0448\u0451\u043b. \u0412\u0441\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0434\u043d\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0438\u0445 \u0437\u0430\u043a\u0440\u0430\u0441\u0438\u043c \u0447\u0451\u0440\u043d\u044b\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e. \u0422\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u043b\u0430\u0439\u0444\u0445\u0430\u043a.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea7\/95a\/309\/ea795a309d8bc1e1863e596f44e51540.gif\" width=\"1526\" height=\"1119\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ea7\/95a\/309\/ea795a309d8bc1e1863e596f44e51540.gif\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0449\u0451 \u0432\u0430\u0436\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442: \u0432\u0441\u0435 \u0442\u043e\u043d\u043a\u0438\u0435 \u0442\u043e\u0440\u0447\u0430\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0436\u0438\u0437\u043d\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435\u043f\u043b\u043e\u0442\u043d\u043e \u043f\u0440\u0438\u043b\u0435\u0433\u0430\u044e\u0442 \u043a \u0441\u0442\u0435\u043d\u0435, \u0438 \u043a\u0440\u0430\u0441\u043a\u0430 \u043d\u043e\u0440\u043e\u0432\u0438\u0442 \u043f\u043e\u0434 \u043d\u0438\u0445 \u0437\u0430\u043b\u0435\u0442\u0435\u0442\u044c. \u0412\u044b\u0445\u043e\u0434\u0430 \u0434\u0432\u0430: \u043b\u0438\u0431\u043e \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0438\u0445, \u043b\u0438\u0431\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0432\u0430\u0442\u044c \u043a \u0441\u0442\u0435\u043d\u0435, \u0445\u043e\u0442\u044f \u0431\u044b \u043a\u043b\u0435\u044f\u0449\u0438\u043c \u043a\u0430\u0440\u0430\u043d\u0434\u0430\u0448\u043e\u043c &#8212; \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430 \u043f\u043e\u043a\u0440\u0430\u0441\u043a\u0443.<\/p>\n<h3>\u0412\u044b\u0440\u0435\u0437\u0430\u0435\u043c \u043b\u044e\u0434\u0435\u0439 \u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c<\/h3>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e: \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0448\u0430\u0431\u043b\u043e\u043d \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0443, \u0434\u0430\u043b\u0435\u0435 \u043b\u0438\u0431\u043e \u043f\u043b\u043e\u0442\u0442\u0435\u0440 \u0440\u0435\u0436\u0435\u0442, \u043b\u0438\u0431\u043e \u043c\u044b. \u0415\u0441\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0437\u0430\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u0435\u043b\u043a\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 &#8212; \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0440\u0435\u0437\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0432\u0438\u0436\u043d\u044b\u043c, \u0438 \u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u0435\u0435.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u043c \u0441\u043b\u043e\u0438 \u0441\u043a\u043e\u0442\u0447\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043a\u043d\u0438\u0436\u043a\u0430 \u0438\u0437 \u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d\u043d\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 &#8212; \u043e\u0434\u043d\u043e \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435: \u0437\u0430\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u043e\u0439, \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043a\u0440\u0430\u0441\u0438\u0442\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u043e\u0439, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435 &#8212; \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u0435 \u0441\u043b\u043e\u0451\u0432. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0438 \u043e \u0447\u0451\u043c, \u0448\u0430\u0431\u043b\u043e\u043d \u0443\u0436\u0435 \u0432\u044b\u0432\u0435\u0440\u0435\u043d.<\/p>\n<h3>\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 vs \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u043c\u043e\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0444\u0440\u0430\u0437: &#171;\u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u044b\u0439 \u043f\u043b\u0430\u043d \u043d\u0435 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e&#187;. \u041a\u0430\u043a \u0432\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u043c\u043e\u0439 \u043f\u043b\u0430\u043d &#171;\u043e, \u0441\u0435\u0440\u0430\u044f \u0441\u0442\u0435\u043d\u0430, \u043d\u0430\u0440\u0438\u0441\u0443\u044e-\u043a\u0430 \u044f \u043d\u0430 \u043d\u0435\u0439&#187; \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0430\u043b\u0451\u043a \u043e\u0442 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e\u0433\u043e. \u0418 \u044f \u043c\u043e\u0433 \u0431\u044b \u043d\u0430\u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u044f \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u043b, \u0438 \u0447\u0442\u043e \u0441\u0430\u043c \u0411\u044d\u043d\u043a\u0441\u0438 \u0432\u044b\u043b\u0435\u0437 \u0438\u0437 \u043a\u0443\u0441\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0436\u0430\u0442\u044c \u043c\u043d\u0435 \u0440\u0443\u043a\u0443, \u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435.<\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u043d\u0438\u0445\u0440\u0435\u043d\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0418 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443.<\/p>\n<h4>\u0413\u0440\u0430\u0444\u0444\u0438\u0442\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u043e<\/h4>\n<p>\u041d\u0443 \u0442\u0443\u0442 \u043a\u0430\u043a \u0431\u044b \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u0435\u0441\u043b\u0438 \u0433\u0440\u0430\u0444\u0444\u0438\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0433\u0434\u0435, \u0442\u043e \u0435\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u0438 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442. \u0418 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u0434\u0435 \u043d\u0430\u0434\u043e, \u043d\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u043b\u043a\u0438\u043c \u0438\u043b\u0438 \u043f\u043e\u0434 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0443\u0433\u043b\u043e\u043c, \u0442\u043e \u0435\u0433\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442.<\/p>\n<h4>\u041f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439<\/h4>\n<p>\u0421\u0430\u043c\u0430 \u0441\u0442\u0435\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u043e\u043d\u043e\u0440\u043e\u0434\u043d\u043e\u0439, \u0441 \u043f\u043e\u0434\u0442\u0451\u043a\u0430\u043c\u0438 \u0438 \u043d\u0435\u0440\u043e\u0432\u043d\u043e\u0441\u0442\u044f\u043c\u0438 (\u044d\u0442\u043e \u043f\u0440\u044f\u043c \u043c\u043e\u044f \u0448\u043a\u043e\u043b\u0430 \u0440\u0435\u043c\u043e\u043d\u0442\u0430). \u0414\u043b\u044f \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u0430 \u044d\u0442\u043e \u0441\u043c\u0435\u0440\u0442\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e &#8212; \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0432\u0441\u0451. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0448\u0430\u0431\u043b\u043e\u043d \u043d\u0435\u043f\u043b\u043e\u0442\u043d\u043e \u043f\u0440\u0438\u043b\u0435\u0433\u0430\u043b \u043a \u0441\u0442\u0435\u043d\u0435, \u043d\u043e \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e \u043a\u043b\u0435\u0438\u043b\u0438\u0441\u044c \u043a \u043d\u0435\u0439 \u0438\u0437-\u0437\u0430 \u043f\u044b\u043b\u0438 \u0438 \u0440\u0435\u043b\u044c\u0435\u0444\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439.<\/p>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435, \u043c\u043e\u044f \u0441\u0435\u0440\u0430\u044f \u0441\u0442\u0435\u043d\u0430 \u043c\u0435\u043d\u044f \u043f\u043e\u0434\u0432\u0435\u043b\u0430. \u041d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0441\u0435\u0440\u044b\u043c \u0441\u0442\u0435\u043d\u0430\u043c.<\/p>\n<h4>\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043a\u0440\u0435\u043f\u043a\u0438\u043c<\/h4>\n<p>\u041c\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0431\u044b\u043b &#171;\u0441\u0432<strong>\u044f<\/strong>\u0437\u043d\u044b\u043c&#187; &#8212; \u043d\u0443 \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u0438\u0441\u044f\u0447\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439. \u041d\u043e \u044f \u043d\u0435 \u0443\u0447\u0451\u043b, \u0447\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0415\u0441\u043b\u0438 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0442\u043e \u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u0435\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0445\u0440\u0443\u043f\u043a\u0438\u043c \u0438 \u0433\u043d\u0443\u0449\u0438\u043c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0443. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0435\u0441\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u0437 \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u0430, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b \u0438\u0437 \u043f\u043b\u043e\u0442\u043d\u043e\u0439 -\u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043b\u043e\u0442\u043d\u043e\u0439 &#8212; \u0431\u0443\u043c\u0430\u0433\u0438, \u0438 \u043e\u043d \u0431\u044b\u043b \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043f\u0430\u0443\u0442\u0438\u043d\u0443, \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0435\u0433\u043e \u043f\u0440\u0438\u0441\u043e\u0431\u0430\u0447\u0438\u0442\u044c \u043a \u0441\u0442\u0435\u043d\u0435.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b \u043d\u0430 \u0441\u0442\u0435\u043d\u0435 <em>\u0447\u0442\u043e-\u0442\u043e<\/em>, \u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0430\u043c \u044d\u0442\u043e \u043c\u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e. \u041d\u043e&#8230;<\/p>\n<h3>\u0414\u043e\u0440\u043e\u0433\u0443 \u043e\u0441\u0438\u043b\u0438\u0442 \u0438\u0434\u0443\u0449\u0438\u0439<\/h3>\n<p>\u0416\u0438\u0437\u043d\u044c \u043d\u0430\u0443\u0447\u0438\u043b\u0430 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u043d\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443: \u0435\u0441\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0447\u0435\u0448\u044c \u0447\u0435\u0433\u043e-\u0442\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f &#8212; \u0441\u0442\u0440\u0430\u0439\u0441\u044f \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u043f\u0443\u0441\u043a\u0430\u0439 \u0440\u0443\u043a\u0438. \u0418\u0434\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430.<\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0438 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043b\u0438\u0441\u0442\u044b, \u0438 \u044f \u043f\u0435\u0440\u0435\u043d\u0451\u0441 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u043d\u0430 \u043d\u0438\u0445. \u0422\u0430\u043a \u043a\u0430\u043a \u043b\u0438\u0441\u0442\u044b &#8212; \u043d\u0435 \u0441\u0435\u0440\u0430\u044f \u0441\u0442\u0435\u043d\u0430, \u0438 \u043b\u0435\u0436\u0430\u0442 \u043e\u043d\u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e &#8212; \u0442\u043e \u0432\u0441\u0435 \u0442\u0440\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438\u0437 \u043f\u043b\u0430\u043d\u0430 &#171;\u0410&#187; \u0431\u044b\u043b\u0438 \u043d\u0438\u0432\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c!<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/99a\/c5d\/d03\/99ac5dd031112d1234d810846ff8bbeb.jpg\" width=\"1280\" height=\"960\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/99a\/c5d\/d03\/99ac5dd031112d1234d810846ff8bbeb.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430, \u043a\u043e\u0441\u044f\u0447\u043d\u043e, \u043d\u043e \u0443\u0436\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0447\u043b\u0435\u043d \u043d\u0430 \u0437\u0430\u0431\u043e\u0440\u0435! \u0418 \u0433\u043b\u0430\u0432\u043d\u043e\u0435: \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043e \u044d\u0442\u043e \u0442\u0435\u043c, \u043a\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c. \u041d\u0443 \u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430 \u0441\u0442\u0435\u043d\u0435.. \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430.<\/p>\n<h2>\u041a \u0447\u0435\u043c\u0443 \u0432\u0441\u0451 \u044d\u0442\u043e<\/h2>\n<p>\u042f \u0438\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u0432\u043e\u0441\u0445\u0438\u0449\u0430\u044e\u0441\u044c \u0442\u0435\u043c\u0438, \u043a\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u044f\u0442\u044c \u0438 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c &#8212; \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u043b\u0438 \u043f\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435. \u041e\u043d\u0438 \u043d\u0435 \u0438\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f, \u043a\u0430\u043a \u044f, \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u044d\u0442\u0438\u043c\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c\u0438, \u0437\u0430\u043b\u0438\u0432\u043a\u0430\u043c\u0438 \u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u044c-\u0445\u0430\u043d\u0442\u0438\u043d\u0433\u043e\u043c, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0440\u0443\u0442 \u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u0430\u043a \u0438\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u042f \u0437\u0430\u0432\u0438\u0434\u0443\u044e. \u0423\u0442\u0435\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e, \u043e\u043d\u0438 \u0434\u0443\u043c\u0430\u044e\u0442 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e \u043c\u043e\u0439 \u043a\u043e\u0434\u0438\u043d\u0433: \u044f \u0431\u0435\u0440\u0443 \u0438 \u043f\u0438\u0448\u0443, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0430 \u043e\u043d\u0438 \u043d\u043e-\u043a\u043e\u0434\u044f\u0442.<\/p>\n<p>\u0413\u0440\u0430\u0444\u0444\u0438\u0442\u0438 &#8212; \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0433\u0440\u0430\u0444\u0444\u0438\u0442\u0438, \u0430 \u043d\u0435 \u0443\u0431\u043e\u0433\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u0437\u0430\u0431\u043e\u0440\u0430\u0445 &#8212; \u044d\u0442\u043e \u0431\u043e\u0440\u044c\u0431\u0430 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0430 \u0438 \u0442\u0443\u043f\u043e\u0441\u0442\u0438. \u0414\u043e\u0431\u0440\u0430 \u0438 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u0438\u0442\u0435\u0442\u0430, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u0439\u0442\u0435\u0440\u044b \u0440\u0438\u0441\u0443\u044e\u0442 \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0432\u0435\u0449\u0438, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u043e\u043c\u043c\u0443\u043d\u0430\u043b\u044c\u0449\u0438\u043a \u0438 \u0432\u0441\u0451 \u0437\u0430\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 (\u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432 \u0442\u043e\u043d), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0435\u043c\u0443 \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u0438 \u043e\u043d \u0445\u043e\u0447\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043e\u0442 \u043d\u0435\u0433\u043e \u043e\u0442\u0441\u0442\u0430\u043b\u0438. \u041d\u043e \u0432 \u044d\u0442\u043e\u043c-\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c: \u0433\u0440\u0430\u0444\u0444\u0438\u0442\u0438 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f, \u043e\u0441\u043e\u0437\u043d\u0430\u0432\u0430\u044f, \u0447\u0442\u043e \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0435\u043d\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u044f\u043c\u0438, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043e \u0443\u0436\u0435 \u0437\u0430\u0432\u0442\u0440\u0430, &#8212; \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435\u0442 \u044d\u0442\u043e\u0433\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0430 &#171;\u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f&#187; \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u043c, \u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0438\u0441\u0443\u0435\u0448\u044c \u0438 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u043f\u0448\u0438\u043a\u043e\u043c \u0431\u0430\u043b\u043b\u043e\u043d\u0447\u0438\u043a\u0430 \u044d\u0442\u043e\u0442 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0442\u0443\u0442 \u0436\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0431\u044b\u0442\u044c \u0442\u0432\u043e\u0438\u043c. \u0422\u0430\u043a \u0437\u0430\u0447\u0435\u043c \u0436\u0435 \u0440\u0438\u0441\u0443\u044e\u0442 \u0433\u0440\u0430\u0444\u0444\u0438\u0442\u0438?<\/p>\n<p>\u041c\u043e\u0436\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043c\u043e\u043b\u0447\u0430\u0442\u044c?<\/p>\n<hr\/>\n<p>\u0421\u0430\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u043c\u043e\u0439 <a href=\"https:\/\/t.me\/blog_pogromista\" rel=\"noopener noreferrer nofollow\">\u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0441\u043a\u0438\u0439 \u043f\u0430\u0440\u043e\u0445\u043e\u0434<\/a>, \u0431\u0438\u043b\u0435\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <\/p>\n<div class=\"tm-article-poll\">\n<div class=\"tm-notice tm-article-poll__notice tm-notice_positive\"><!----> <\/p>\n<div class=\"tm-notice__inner\"><!----> <\/p>\n<div class=\"tm-notice__content\"><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/post\/673964\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__header\">\u041a\u0430\u043a\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u0432\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f?<\/div>\n<div class=\"tm-article-poll__answers\">\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">             66.67%           <\/span> <span class=\"tm-article-poll__answer-label\">\u041e\u0440\u0443\u044d\u043b\u043b \u2014 1984<\/span> <span class=\"tm-article-poll__answer-votes\">             20           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width:66.67%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             20%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0417\u0430\u043c\u044f\u0442\u0438\u043d \u2014 \u041c\u044b<\/span> <span class=\"tm-article-poll__answer-votes\">             6           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:20%;\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">             13.33%           <\/span> <span class=\"tm-article-poll__answer-label\">\u0413\u043b\u0443\u0445\u043e\u0432\u0441\u043a\u0438\u0439 \u2014 \u041f\u043e\u0441\u0442<\/span> <span class=\"tm-article-poll__answer-votes\">             4           <\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width:13.33%;\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__stats\">        \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 30 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.          \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 18 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.      <\/div>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/673964\/\"> https:\/\/habr.com\/ru\/post\/673964\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u042f \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0441\u044f \u0441 \u043d\u0438\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0433\u0434\u0435-\u0442\u043e \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435, \u0432 \u0441\u0432\u043e\u0451\u043c \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043a\u0430\u043d\u0430\u043b\u0435 \u043f\u0440\u043e \u043f\u0438\u0442\u043e\u043d \u0438 \u0432\u0441\u044f\u043a\u043e\u0435. \u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0441\u0445\u043e\u0436\u0443\u0441\u044c \u0441 \u043b\u044e\u0434\u044c\u043c\u0438, \u043d\u043e \u0441 \u0434\u0440\u0443\u0437\u044c\u044f\u043c\u0438 \u0443 \u043c\u0435\u043d\u044f \u043f\u043b\u043e\u0445\u043e\u0432\u0430\u0442\u043e &#8212; \u0442\u043e \u043b\u0438 \u044f \u0442\u0430\u043a\u043e\u0439 \u0438\u0437\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u0442\u043e \u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0443 \u043c\u0435\u043d\u044f \u043f\u0430\u0440\u0448\u0438\u0432\u044b\u0439. \u0411\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0441\u0442\u0432\u0430 \u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u043d\u0435 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e &#8212; \u043c\u043d\u0435 \u0438 \u0442\u0430\u043a \u043d\u043e\u0440\u043c, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e. \u0410 \u0441 \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u043d\u0435\u043c \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u043b\u0441\u044f: \u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043b\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441 \u043d\u0438\u043c \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f. \u041b\u0435\u0433\u043a\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u043f\u0438\u0447\u043d\u0430\u044f \u043f\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u043c \u0431\u0435\u0441\u0435\u0434\u0430 \u043d\u0430\u0441\u0447\u0451\u0442 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0435\u0451 \u0432 \u043f\u043e\u0441\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u0432\u043e\u044e \u0440\u0435\u0434\u0430\u043a\u0442\u0443\u0440\u0443, \u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0438\u0434\u0435\u0438 \u0438 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u0430 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043b\u0438\u0446\u0430.<\/p>\n<div class=\"persona\" persona=\"true\">\n<h5 class=\"persona__heading\" persona=\"true\">\u0428\u0435\u0440\u0445\u0430\u043d<\/h5>\n<p>\u0414\u0440\u0443\u0433 \u0432\u043e\u043d \u0442\u043e\u0439 \u0433\u0438\u0435\u043d\u044b<\/p>\n<\/div>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a \u044f \u0431\u0435\u0437\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u041e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u043c RPG: \u0432\u044b \u043b\u0438\u0431\u043e \u043a\u0430\u0447\u0430\u0435\u0442\u0435 \u0432\u043e\u0438\u043d\u0430, \u043b\u0438\u0431\u043e \u043c\u0430\u0433\u0430, \u043b\u0438\u0431\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e (\u043f\u043e\u043b\u0443\u0432\u043e\u0438\u043d-\u043f\u043e\u043b\u0443\u043c\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0438 \u043a\u0430\u043a \u043c\u0430\u0433, \u0438 \u043a\u0430\u043a \u0432\u043e\u0438\u043d). \u0418 \u044f \u0432\u043a\u0430\u0447\u0430\u043b \u0432\u0441\u0451 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>\u041d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043b\u0435\u0442\u0430\u044e\u0442 \u043c\u043d\u0435 \u043f\u0440\u044f\u043c\u043e \u0432 \u0434\u0443\u0448\u0443 (\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442) \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0432\u0441\u0451 \u0432\u0432\u0435\u0440\u0445 \u0434\u043d\u043e\u043c. \u0423\u0432\u044b, \u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043c\u0435\u044e, \u0438 \u0432 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u044f \u043e\u0441\u0442\u0440\u043e \u0436\u0430\u043b\u0435\u044e, \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432\u0437\u044f\u0442\u044c \u0438 \u043d\u0430\u043a\u0438\u0434\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435, \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u043e\u0432\u0441\u0435, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u044d\u0442\u0443 \u044d\u043c\u043e\u0446\u0438\u044e \u0441\u043a\u0432\u043e\u0437\u044c \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>\u0410 \u043c\u043e\u0436\u0435\u0442, \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e?<\/p>\n<hr\/>\n<p>\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u044f) \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0436\u0451\u0441\u0442\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0438\u043f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432: \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u043b\u0443\u0442\u043e\u043d\u043e\u0432, \u0438\u0433\u0440\u044b \u0441\u0432\u0435\u0442\u0430 \u0438 \u0447\u0435\u0433\u043e \u0442\u0430\u043c \u0435\u0449\u0451 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u044d\u0442\u0438 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0438. \u0415\u0449\u0451 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u043e\u0432\u044b\u0445 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043a\u043e\u0448\u0435\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u044c \u043a\u0438\u0441\u0442\u043e\u0447\u043a\u0438 \u0438\u0437 <s>\u0445\u0432\u043e\u0441\u0442\u0430 \u0435\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u0430<\/s> \u0448\u0435\u0440\u0441\u0442\u0438 \u0432\u043e\u043b\u043a\u0430, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0445\u043b\u043e\u043f\u043a\u043e\u0432\u0443\u044e \u0431\u0443\u043c\u0430\u0433\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u0438\u0437 \u0431\u0438\u043e\u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0439. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u0443\u0440\u0441\u043e\u0432 \u043f\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044e&#8230; \u041d\u0438\u0447\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e! \u0427\u0435\u043b\u043e\u0432\u0435\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445.<\/p>\n<p>\u041f\u043e\u0434\u0443\u043c\u0430\u0432 \u043d\u0430\u0434 \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c, \u044f \u0443\u0441\u043c\u0435\u0445\u043d\u0443\u043b\u0441\u044f \u043f\u0440\u043e \u0441\u0435\u0431\u044f, \u0432\u0435\u0434\u044c \u043f\u043e\u0434 \u043c\u043e\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043d\u0430\u0441\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438&#8230; \u0422\u0430\u043a, \u0441\u0442\u043e\u043f! \u041d\u0430\u0441\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438! \u0412\u043e\u0442 \u043e\u043d\u043e!<\/p>\n<figure class=\"full-width\"><figcaption>207 \u0433\u043e\u0434 \u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b, \u043a\u0441\u0442\u0430\u0442\u0438<\/figcaption><\/figure>\n<p>\u0414\u0430 \u043d\u0435 \u044d\u0442\u043e! \u0412\u043e\u0442 \u044d\u0442\u043e:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u043e: \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442\u043d\u043e\u0435 \u0433\u0440\u0430\u0444\u0444\u0438\u0442\u0438. \u041a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u043b\u0438\u043a\u0438\u0445 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u043e\u0432, \u043a\u0430\u043a \u044f.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0433\u0440<strong>\u0430<\/strong>\u0444\u0444\u0438\u0442\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0433\u0440\u0430\u0444\u0444<strong>\u0438<\/strong>\u0442\u0438. \u0423\u0436 \u043d\u0435 \u0437\u043d\u0430\u044e \u043a\u0430\u043a \u0432\u0430\u043c, \u0430 \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0437\u043d\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u0431\u0435\u0448\u0438\u0432\u0430\u043b\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u043e \u043f\u043e\u0442\u043e\u043c \u044f \u043f\u0440\u0438\u0432\u044b\u043a.<\/p>\n<h2>\u0420\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a, \u0441\u043e\u0431\u0441\u043d\u0430, \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0433\u0440\u0443\u0441\u0442\u043d\u0443\u044e \u0434\u0435\u0432\u043e\u0447\u043a\u0443, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0435\u0432\u043e\u0447\u043a\u0443 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u0433\u0440\u0443\u0441\u0442\u043d\u043e\u0439. \u041e\u0447\u0435\u043d\u044c.<\/p>\n<p>\u041a\u0430\u043a? \u0418\u0437\u0438. \u041d\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0431\u0438\u0442\u044c \u0435\u0451 \u043e\u0442\u0446\u0430. \u0417\u0430 \u043d\u0430\u0441 \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043a\u0440\u0430\u0434\u0451\u043c \u0421\u043e\u0444\u0438\u044e \u043f\u0440\u044f\u043c\u043e \u0441 \u043f\u0430\u043d\u0438\u0445\u0438\u0434\u044b \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><figcaption>Gleb Garanich \/ Reuters \/ Scanpix \/ LETA<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0411\u043e\u0440\u043e\u043c\u0438\u0440, &#171;\u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c&#187;. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0432 \u043a\u0430\u043a\u0438\u0445 \u0446\u0432\u0435\u0442\u0430\u0445 \u043c\u044b \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c. \u0410 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u043e, \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0435\u0441\u0442\u044c \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438.<\/p>\n<h2>\u041a\u0430\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0435\u0441\u0442\u044c \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438<\/h2>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0442\u0443\u0442 \u0434\u0432\u0430: \u043b\u0438\u0431\u043e \u0441\u043e\u0441\u043a\u0440\u0430\u043f\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0430\u0439\u0442 \u0441 \u043a\u0440\u0430\u0441\u043a\u0430\u043c\u0438, \u043b\u0438\u0431\u043e \u043f\u043e\u0439\u0442\u0438 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u043c\u0430\u0433\u0430\u0437\u0438\u043d \u0438 \u0441\u043e\u0441\u043a\u0440\u0430\u043f\u0430\u0442\u044c \u0435\u0433\u043e \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b &#8212; \u043d\u0430\u0440\u043e\u0434 \u043b\u0435\u043d\u0438\u0432\u044b\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p>\u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c scrapy, \u043d\u043e \u044f \u0435\u0433\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u043b\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">import json import re from pathlib import Path  import requests from bs4 import BeautifulSoup from pprintpp import pprint  session = requests.Session()  PRODUCT_URL = 'https:\/\/leonardo.ru\/ishop\/group_5040700859\/' AVAILABLE_SKUS_FILE = Path('data\/available_skus.json')  response = session.get(PRODUCT_URL, timeout=5) response.raise_for_status() html = response.content  soup = BeautifulSoup(html) options = soup.find('select', {'id': 'colorselection'}).find_all('option', {'class': 'instock'})   def parse_sku(text: str) -> str:     # \u043a\u0438\u0434\u043d\u0435\u0439 4230 BLK -> 4230     match = re.match(r'.+ (\\w+) BLK$', text)     assert match, text     return match[1]   available_skus = [parse_sku(option.text) for option in options] pprint(available_skus)  # ['9105', '6055', '4060', '5230', ...] print(len(available_skus))  # 23 - \u043d\u0435 \u0433\u0443\u0441\u0442\u043e!  with AVAILABLE_SKUS_FILE.open('w') as file:     json.dump(available_skus, file) <\/code><\/pre>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u043e\u0432 &#8212; \u0445\u043e\u0440\u043e\u0448\u043e, \u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 RGB \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 &#8212; \u043b\u0443\u0447\u0448\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044e \u0438 \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0432 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"python\">import json from pathlib import Path  import requests from bs4 import BeautifulSoup from pprintpp import pprint  session = requests.Session()   CATALOG_URL = 'https:\/\/www.montana-cans.com\/en\/spray-cans\/montana-spray-paint\/black-50ml-600ml-graffiti-paint\/montana-black-400ml' SKU_TO_COLOR_FILE = Path('data\/sku-to-color.json')  response = session.get(CATALOG_URL, timeout=5) response.raise_for_status() html = response.content  soup = BeautifulSoup(html) options = soup.find('form', {'id': 'sAddToBasket'}).find('ul', {'class': 'color-variant-list'}).find_all('li')   def parse_sku(text: str) -> str:     # BLK 5020 -> 5020     return text.removeprefix('BLK').strip()   sku_to_color = {} for option in options:     label = option.find('label')      title = label.find('span', {'class': 'color-code'}).text     sku = parse_sku(title)      sku_to_color[sku] = {         'rgb': json.loads(label['data-rgb']),         'cmyk': json.loads(label['data-cmyk']),         'hex': label['data-hex'],     }  pprint(sku_to_color) # '8250': { #     'cmyk': {'C': '39', 'K': '61', 'M': '81', 'Y': '93'}, #     'hex': '#5b2607', #     'rgb': {'B': '7', 'G': '38', 'R': '91'}, # }, with SKU_TO_COLOR_FILE.open('w') as file:     json.dump(sku_to_color, file) <\/code><\/pre>\n<p>\u0421\u0440\u0435\u0434\u0438 \u0441\u043e\u0442\u0435\u043d \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430 linux, \u044f \u0432\u044b\u0431\u0435\u0440\u0443 gimp. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0430\u0441\u0441\u043e\u0440\u0442\u0438\u043c\u0435\u043d\u0442 \u0446\u0432\u0435\u0442\u043e\u0432 \u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0443 \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0443 gimp, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u044f\u043c \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c.<\/p>\n<pre><code class=\"python\">import json from logging import getLogger from pathlib import Path  log = getLogger(__name__)  AVAILABLE_SKUS_FILE = Path('data\/available_skus.json') SKU_TO_COLOR_FILE = Path('data\/sku-to-color.json') PALETTE_FILE = Path('~\/.config\/GIMP\/2.10\/palettes\/graffiti-scraped.gpl')  with AVAILABLE_SKUS_FILE.open() as file:     available_skus = json.load(file)  with SKU_TO_COLOR_FILE.open() as file:     sku_to_color = json.load(file)   palette_content = \"\"\" GIMP Palette Name: Graffiti: scraped Columns: 0 # \"\"\".strip('\\n') for sku in available_skus:     try:         color = sku_to_color[sku]     except KeyError:         log.warning(f'{sku=} not found, skipping')         continue      palette_content += '\\n' + ' '.join(color['rgb'].values()) + f' {sku}'   PALETTE_FILE.expanduser().write_text(palette_content) <\/code><\/pre>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0443<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0437 \u0432\u0441\u0435\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0441\u043a\u0443\u043f\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043c\u0430\u0433\u0430\u0437\u0438\u043d. \u042f \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c\u044e 1, \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0432\u044b\u043f\u0435\u043d\u0434\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u043a\u0443\u043f\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0451\u0440\u043d\u044b\u0439 \u0446\u0432\u0435\u0442.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0443\u0442 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c: \u0441\u0430\u043c\u0430 \u0441\u0442\u0435\u043d\u0430 &#8212; \u0443\u0436\u0435 \u0441\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u0439 \u0446\u0432\u0435\u0442, \u043f\u043b\u044e\u0441 \u0447\u0451\u0440\u043d\u044b\u0439 \u044f \u043f\u043e\u043a\u0443\u043f\u0430\u044e, \u043f\u043b\u044e\u0441 \u0442\u0451\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439, \u0435\u0441\u043b\u0438 \u043a\u0440\u0430\u0441\u0438\u0442\u044c \u043d\u0435\u0441\u0438\u043b\u044c\u043d\u043e. \u0418\u0442\u043e\u0433\u043e 3 \u0446\u0432\u0435\u0442\u0430 \u043f\u043e \u0446\u0435\u043d\u0435 \u043e\u0434\u043d\u043e\u0433\u043e! \u042f \u0443 \u043c\u0430\u043c\u044b <s>\u043d\u0438\u0449\u0435\u0431\u0440\u043e\u0434<\/s> \u043c\u0430\u0440\u043a\u0435\u0442\u043e\u043b\u043e\u0433.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435 \u043c\u043d\u0435 \u0443\u0436\u0430\u0441\u043d\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0441\u0435\u043f\u0438\u0435\u0439, \u043d\u043e, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0441\u0435\u0440\u044b\u0435 \u0438 \u0447\u0451\u0440\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u0434\u0430\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0430\u0443\u0440\u043d\u044b\u0439 \u0442\u043e\u043d \u043a\u0430\u0440\u0442\u0438\u043d\u0435, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0441\u0442\u0435\u043d\u0430-\u0442\u043e \u0441\u0435\u0440\u0430\u044f, \u043f\u0435\u0440\u0435\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u044f \u043d\u0435 \u0445\u043e\u0447\u0443.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c RGB \u043f\u0430\u043b\u0438\u0442\u0440\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u044b \u0432 \u043d\u0430\u0448\u0443 \u0442\u0440\u0451\u0445\u0446\u0432\u0435\u0442\u043d\u0443\u044e. Gimp \u044d\u0442\u043e \u0443\u043c\u0435\u0435\u0442, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435 \u0438 \u043f\u043e\u0442\u044e\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041d\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434 &#171;\u043d\u0430\u0439\u0442\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0446\u0432\u0435\u0442 \u0438\u0437 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f rgb-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442&#187; \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0433\u043b\u0430\u0437 \u043f\u043b\u0435\u0432\u0430\u043b \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442 \u043c\u043e\u0437\u0433 \u043d\u0430\u0441\u0447\u0451\u0442 \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 (r, g, b), \u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0434 &#171;\u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438&#187; \u043d\u0435 \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0435\u0441\u0442\u044c \u043d\u0435-rgb \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0433\u0434\u0435 \u0443\u0436\u0435 \u0443\u0447\u0442\u0435\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043a\u0438\u0434\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u0443 &#171;\u043d\u0430 \u0433\u043b\u0430\u0437&#187;:<\/p>\n<pre><code class=\"python\">from functools import lru_cache from itertools import product from operator import itemgetter from pathlib import Path from typing import Tuple  from colormath.color_conversions import convert_color from colormath.color_diff import delta_e_cie2000 from colormath.color_objects import LabColor, sRGBColor from PIL import Image from tqdm import tqdm  IMAGE_FILE_PATH = Path('data\/original.jpg') PALETTE_COLORS = [     [135] * 3,  # light gray     [52] * 3,  # dark gray     [0] * 3,  # black ] OUTPUT_FILE_PATH = Path('data\/colors-reduced.png')   def get_distance(rgb1: Tuple[int, int, int], rgb2: Tuple[int, int, int]) -> float:     color1 = sRGBColor(*(color \/ 255 for color in rgb1))     color2 = sRGBColor(*(color \/ 255 for color in rgb2))      return delta_e_cie2000(         convert_color(color1, LabColor),         convert_color(color2, LabColor),     )   @lru_cache(maxsize=None) def translate_color(color: Tuple[int, int, int]) -> Tuple[int, int, int]:     diffs = (         (get_distance(color, palette_color), palette_color)         for palette_color in PALETTE_COLORS     )     translated_color = sorted(diffs, key=itemgetter(0))[0][1]     return tuple(translated_color)   image = Image.open(str(IMAGE_FILE_PATH)) image = image.convert('RGB')  width, height = image.size  # \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a \u0432 \u0446\u0438\u043a\u043b\u0435 - \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0443\u043f\u0430\u044f \u0438\u0434\u0435\u044f, # \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c batch processing; # \u0443\u0432\u0435\u0440\u0435\u043d, \u0432 PIL \u044d\u0442\u043e \u0435\u0441\u0442\u044c, \u043d\u043e \u044f \u0437\u0430\u043b\u0435\u043d\u0438\u043b\u0441\u044f :( # \u043c\u0435\u043d\u044f \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u044f \u043a\u044d\u0448\u0438\u0440\u0443\u044e # translate_color, \u0438 \u043e\u043d\u043e \u043f\u043e\u043d\u0435\u043c\u043d\u043e\u0433\u0443 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442\u0441\u044f for xy in tqdm(     product(range(width), range(height)),     total=width * height, ):     color = image.getpixel(xy)     image.putpixel(xy, translate_color(color))  image.show() image.save(str(OUTPUT_FILE_PATH))<\/code><\/pre>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438<\/h2>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435.<\/p>\n<ol>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0430 \u0442\u0440\u0430\u0444\u0430\u0440\u0435\u0442, \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0443 \u0431\u0443\u043a\u0432 \u0442\u0438\u043f\u0430 \u041e \u0438\u043b\u0438 \u0412 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u044b\u0447\u043a\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0432\u0438\u0441\u0435\u0442\u044c \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434: \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u0438\u0441\u044f\u0449\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0441\u044f\u043a\u0438\u0445 \u0442\u0440\u044e\u043a\u043e\u0432 \u0441 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u044b\u0432\u0430\u044e\u0442 \u043c\u0430\u0441\u043a\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0436\u0438\u0434\u043a\u043e\u0441\u0442\u044c \u0438 \u043c\u0430\u043b\u044f\u0440\u043d\u044b\u0439 \u0441\u043a\u043e\u0442\u0447 ). \u041d\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u0434\u043e\u043b\u0433\u043e (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437-\u0437\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u044e\u0437\u0430\u0442\u044c \u043b\u0430\u0439\u0444\u0445\u0430\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0430\u0444\u0430\u0440\u0435\u0442 &#8212; \u0434\u0435\u043b\u043e \u043d\u0435\u0431\u044b\u0441\u0442\u0440\u043e\u0435, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0413\u0430\u0440\u0440\u0438 \u041f\u043b\u043e\u0442\u0442\u0435\u0440\u0430. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0435\u043c \u043f\u0440\u043e\u0449\u0435, \u0442\u0435\u043c \u043f\u0440\u043e\u0449\u0435&#8230; \u0412 \u0441\u043c\u044b\u0441\u043b\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0449\u0435 \u0440\u0438\u0441\u0443\u043d\u043e\u043a, \u0447\u0435\u043c \u0433\u0440\u0443\u0431\u0435\u0435 \u043b\u0438\u043d\u0438\u0438, \u0442\u0435\u043c \u043f\u0440\u043e\u0449\u0435 \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f, \u0438\u043d\u0430\u0447\u0435 \u0432\u0441\u0451 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0430\u0436\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0433\u0440\u0443\u0431\u044b\u043c\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f! \u041d\u0430\u043e\u0431\u043e\u0440\u043e\u0442,<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-335114","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=335114"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335114\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=335114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=335114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=335114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}