рдореИрдВ PHP рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЛрдЯреЛ рдЫрд╛рдБрдЯрдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рдПрдХ рдХреНрд╖рдг рдЖрддрд╛ рд╣реИ рдЬрдм рдмрд╣реБрдд рд╕рд╛рд░реА рддрд╕реНрд╡реАрд░реЗрдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рддрдмрд╛рд╣реА рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕
рдПрдХ рджрд┐рди рдореИрдВрдиреЗ 20 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╕рдВрдЪрд┐рдд рдбрд┐рдЬрд┐рдЯрд▓ рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдЕрдкрдиреЗ рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЙрд╕ рд╕рдордп рдореЗрдВ рдореИрдВрдиреЗ 435 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдкрд░ 112,000 рддрд╕реНрд╡реАрд░реЗрдВ рдЬрдорд╛ рдХреА рдереАрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдХреНрд░рдордмрджреНрдз рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DSLR рдХреИрдорд░реЗ рд╕реЗ рддрд╕реНрд╡реАрд░реЗрдВ, рдирд╛рдо рдФрд░ рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рджреНрд╡рд╛рд░рд╛, рдФрд░ рдлрд╝реЛрдЯреЛ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧ рдЬреЛ рдХрд┐ iphone / android рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЧрдП рдереЗ рдЙрдирдХрд╛ рдирд╛рдо рдФрд░ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рд╣реИ, рдЕрдХреНрд╕рд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрддрд╛ рд╣реИ 10 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ, рд╣рдЬрд╝рд╛рд░реЛрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде, рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЫрд╛рдБрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдЯреВрд▓ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХреА рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдкрд┐рдХрд╛рд╕рд╛ рдЬреИрд╕реА рд╕рднреА рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛рдПрдВ, Google рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╣реА рдЦрд░реАрджреА рдФрд░ рдмрдВрдж рдХрд░ рджреА рдЧрдИ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдЙрдиреНрд╣реЗрдВ Google рдкрд░ рд╕рдм рдХреБрдЫ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЦреЛрдЬ рдХрд░рдирд╛ рд╕рднреА рд╕реЗ рджреВрд░ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд▓рдЧрднрдЧ рдЖрдзреА рдХрдореА рд╣реИред рдкрд┐рдХрд╛рд╕рд╛ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рд╡реЗрдм рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЖрдкрдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рдирддреАрдЬрддрди, рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╕рдмрдХреБрдЫ рдЫрд╛рдВрдЯреЗрдЧреА, рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, EXIF тАЛтАЛрдиреЗ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ PHP рдореЗрдВ рд▓реМрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 1 - рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рддрд╛рд░реАрдЦреЛрдВ рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЧрдпрд╛, рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд▓реЗ рд▓реА, рдирд┐рд░реНрдорд╛рдг рддрд┐рдерд┐ рджреЗрдЦреА рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдмрд┐рдЦрд░реА:
$file_list = $files->getDirContents($config['photos.unsorted']); foreach ($file_list as $key => $value) { moveImageFile($value); } function moveImageFile($filename) { $dt= new DateTime(); $dt->setTimestamp(filectime($filename)); $start_path = $this->config['photos']; $year = $start_path."\Year".$dt->format('Y'); if (!is_dir($year)) mkdir($year); $month = $year."\\".$dt->format('Ym-F'); if (!is_dir($month)) mkdir($month); $path = $month."\\".$dt->format('Ym-d'); if (!is_dir($path)) mkdir($path); } $full_path = getUniqueFilename($filename, $path, $dt, 0); copy($filename, $full_path);
рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ:
- рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рдЧрд▓рдд рдирд┐рд░реНрдорд╛рдг рддрд┐рдерд┐ рдереА
- рдпрджрд┐ рдЖрдк рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
- рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рди рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЗ рд╕рд╛рде рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдорд╕реНрдпрд╛ рд╕рдВрдЦреНрдпрд╛ 2 - рдПрдХреНрдЬрд┐рдл рд╕реЗ рддрд╛рд░реАрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
Exif рд╕реЗ рддрд╛рд░реАрдЦ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП EXIF тАЛтАЛрд╕реЗ рддрд╛рд░реАрдЦ рд▓реЗрдиреЗ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд░реНрд╢ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ md5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, PHP рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗрдЯ рдореЗрдВ рдПрдХреНрд╕рдлрд╝ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рднреА рдЕрд▓реМрдХрд┐рдХ рдирд╣реАрдВ рдерд╛
$dt = DateTime::createFromFormat('Y:m:d H:i:s', $exif['DateTime']); $start_path = $this->config['photos.exif']; $is_exif = true; if (md5_file($filename) == md5_file($full_path)) return false; rename($filename, $full_path); touch($full_path, $dt->getTimestamp());
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, 500 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдлрд╝реЛрдЯреЛ рдЫрд╛рдВрдЯреЗ рдЧрдП рдФрд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдкреБрд░рд╛рдиреЗ рдлреЛрд▓реНрдбрд░ рдпрд╛рдж рдЖ рдЧрдП, рдЬрд┐рд╕рдореЗрдВ рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдо рдерд╛ рдЬрд╣рд╛рдБ рдлреЛрдЯреЛ рд╢реВрдЯ рд╣реБрдЖ рдерд╛, рдФрд░ рд╕реЛрдЪрд╛, рдХреНрдпреЛрдВ рди рдЬрд┐рдпреЛрдбреЗрдЯрд╛ рд╕реЗ рд╢рд╣рд░реЛрдВ рдХрд╛ рдирд╛рдо рд▓рд┐рдпрд╛ рдЬрд╛рдП?
рдЯрд╛рд╕реНрдХ IF3 - EXIF тАЛтАЛрдЬрд┐рдпреЛрдбрд╛рдЯрд╛ рд╕реЗ рджреЗрд╢, рд╢рд╣рд░ рдФрд░ рдХреНрд╖реЗрддреНрд░
рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИрдВ, рд╡реЗ GPSLongitude рдФрд░ GPSLatitude рдореЗрдВ Exif рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдбрд┐рдЧреНрд░реА, рдорд┐рдирдЯ рдФрд░ рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рджрд╢рдорд▓рд╡ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
function getGps($exifCoord, $hemi) { $degrees = count($exifCoord) > 0 ? $this->gps2Num($exifCoord[0]) : 0; $minutes = count($exifCoord) > 1 ? $this->gps2Num($exifCoord[1]) : 0; $seconds = count($exifCoord) > 2 ? $this->gps2Num($exifCoord[2]) : 0; $flip = ($hemi == 'W' or $hemi == 'S') ? -1 : 1; return $flip * ($degrees + $minutes / 60 + $seconds / 3600); }
рджреВрд╕рд░рд╛ рд╕рд╡рд╛рд▓, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рд╢рд╣рд░ рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ?
рдпреИрдВрдбреЗрдХреНрд╕ рд╕реЗ рдЬрд┐рдпреЛрдХреЛрдбрд░ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдорд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рд╢рд░реНрддреЛрдВ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред
$url = "https://geocode-maps.yandex.ru/1.x/"; $apikey = require('../config/apikey.php'); $json = array( 'geocode' => $lon.",".$lat, 'kind' => 'locality', 'apikey' => $apikey, 'results' =>'1', 'skip' => '0', 'format' => 'json' ); $response = file_get_contents($url."?".http_build_query($json));
рд▓рд╛рдЦреЛрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдпреИрдВрдбреЗрдХреНрд╕ рдХреЛ рдирд╣реАрдВ рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо MySql рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ 3 рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЧреЛрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, 43.161 - 19.182 рд╢рд╣рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ 110,000 рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 1,500 рдЬреНрдпрд╛рдорд┐рддрд┐ рд╣реИрдВред
рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:
- D: \ photos \ photos_exif \ Year2019 \ 2019-09-September \ 2019-09-23-рдмреЛрд╕реНрдирд┐рдпрд╛ рдФрд░ рд╣рд░реНрдЬрд╝реЗрдЧреЛрд╡рд┐рдирд╛, рд░рд┐рдкрдмреНрд▓рд┐рдХрд╛ Srpska, Foca \
- D: \ photos \ photos_exif \ Year2019 \ 2019-08-August \ 2019-08-25-рдЕрд▓реНрдмрд╛рдирд┐рдпрд╛, рдбреБрд░реЗрд╕ рдХреНрд╖реЗрддреНрд░, рдХреНрд░реБрдЬрд╛ \
- D: \ photos \ photos_exif \ Year2018 \ 2018-10-October \ 2018-10-06-Russia, рдорд╛рд╕реНрдХреЛ рдХреНрд╖реЗрддреНрд░, Balashikha \
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдорд╣реАрдиреЛрдВ рддрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдФрд░ рдлрд╝реЛрдЯреЛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рди рд▓рдЧрд╛ред
рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ: рдореМрдЬреВрджрд╛ рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рдЬрд┐рдпреЛрдЯреИрдЧ рдЬреЛрдбрд╝рдирд╛, рдлрд╝реЛрдЯреЛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЫрд╛рдВрдЯрдирд╛, рдХреНрд▓рд┐рдк рдХреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдвреВрдВрдврдирд╛ред
рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЗрдВ GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВрдореБрдЭреЗ рдореБрд╢реНрдХрд┐рд▓ рдордд рдорд╛рд░реЛ, рдпрд╣ рдореЗрд░реА рдкрд╣рд▓реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреЛрд╕реНрдЯ рдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ, рдФрд░ рдЕрдм 1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХреИрдж рд╣реИред