<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:yandex="http://news.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/" xmlns:turbo="http://turbo.yandex.ru" version="2.0">
	<channel>
		<title>Виртуальный учебный пункт</title>
		<link>http://vukp.oktregion.ru</link>
		<language>ru</language>
		<item turbo="true">
			<title>Плакаты МЧС</title>
			<link>http://vukp.oktregion.ru/tpost/p96bx2aap1-plakati-mchs</link>
			<amplink>http://vukp.oktregion.ru/tpost/p96bx2aap1-plakati-mchs?amp=true</amplink>
			<pubDate>Sat, 01 Mar 2025 23:10:00 +0300</pubDate>
			<enclosure url="https://static.tildacdn.com/tild3034-3366-4630-b966-656238326137/1__.jpg" type="image/jpeg"/>
			<turbo:content>
<![CDATA[<header><h1>Плакаты МЧС</h1></header><figure><img src="https://static.tildacdn.com/tild3034-3366-4630-b966-656238326137/1__.jpg"/></figure><img src="https://static.tildacdn.com/tild3034-3366-4630-b966-656238326137/1__.jpg"><img src="https://static.tildacdn.com/tild3138-6336-4637-b866-376337626665/_61.jpg"><img src="https://static.tildacdn.com/tild6638-3764-4466-b635-363662396538/_62.jpg"><img src="https://static.tildacdn.com/tild3865-6431-4561-b330-346231643534/_63.jpg"><img src="https://static.tildacdn.com/tild3066-3431-4730-b233-336261323735/_64.jpg"><img src="https://static.tildacdn.com/tild3666-3364-4862-b865-353332346364/_65.jpg"><img src="https://static.tildacdn.com/tild3661-6635-4664-b734-366135623465/_66.jpg"><img src="https://static.tildacdn.com/tild6666-3864-4132-b961-366566643835/_67.jpg"><img src="https://static.tildacdn.com/tild6337-6164-4730-a339-353332383532/_68.jpg"><img src="https://static.tildacdn.com/tild3933-6230-4138-a564-346632313230/_69.jpg"><img src="https://static.tildacdn.com/tild6133-6464-4332-b664-646331336539/_70.jpg"><img src="https://static.tildacdn.com/tild3535-6164-4239-b730-313938313366/_71.jpg"><img src="https://static.tildacdn.com/tild3230-3063-4338-b361-643134316365/_72.jpg"><img src="https://static.tildacdn.com/tild3233-6239-4735-a332-613036333438/_73.jpg"><img src="https://static.tildacdn.com/tild3263-3163-4266-a631-303964626338/_74.jpg"><img src="https://static.tildacdn.com/tild3531-6432-4563-b064-333661336233/_75.jpg"><img src="https://static.tildacdn.com/tild3765-6236-4333-b235-396361383035/_76.jpg"><img src="https://static.tildacdn.com/tild6566-3465-4165-b162-333737333336/_77.jpg"><div class="t-redactor__embedcode"><!--
TILDA: доступный полноэкранный просмотр изображений
Вставьте этот файл целиком в блок T123 → HTML-код.

Поддерживает:
- превью статьи: .js-feed-post-image
- изображения внутри текста статьи: .js-feed-post-text figure img
- zoom колесом мыши
- кнопки + / − / 100%
- drag мышью
- pinch-to-zoom на телефоне
- перемещение пальцем
- клавиатуру
- safe-area на мобильных устройствах
-->

<style>
/* =====================================================
   КЛИКАБЕЛЬНЫЕ ИЗОБРАЖЕНИЯ
===================================================== */

.js-feed-post-image,
.js-feed-post-text figure img {
    cursor: zoom-in;
}

.js-feed-post-image:focus-visible,
.js-feed-post-text figure img:focus-visible {
    outline: 4px solid #ffd600;
    outline-offset: 4px;
}


/* =====================================================
   БЛОКИРОВКА ПРОКРУТКИ СТРАНИЦЫ
===================================================== */

html.aiv-open,
body.aiv-open {
    overflow: hidden !important;
    overscroll-behavior: none;
}


/* =====================================================
   POPUP
===================================================== */

#aiv-viewer {
    position: fixed;
    inset: 0;

    z-index: 2147483647;

    display: none;
    flex-direction: column;

    width: 100%;
    height: 100vh;

    background: rgba(0, 0, 0, 0.97);

    box-sizing: border-box;
}

@supports (height: 100dvh) {
    #aiv-viewer {
        height: 100dvh;
    }
}

#aiv-viewer.is-open {
    display: flex;
}


/* =====================================================
   ВЕРХНЯЯ ПАНЕЛЬ
===================================================== */

.aiv-toolbar {
    flex: 0 0 auto;

    display: flex;
    align-items: center;
    justify-content: center;

    gap: 8px;

    box-sizing: border-box;

    min-height: 68px;

    padding:
        max(8px, env(safe-area-inset-top))
        12px
        8px;

    background: #111;

    border-bottom: 1px solid rgba(255,255,255,.2);

    z-index: 20;
}

.aiv-btn {
    min-width: 50px;
    height: 50px;

    padding: 0 14px;

    border: 2px solid #fff;
    border-radius: 8px;

    background: #111;
    color: #fff;

    font-family: Arial, sans-serif;
    font-size: 20px;
    font-weight: 700;

    cursor: pointer;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    box-sizing: border-box;
}

.aiv-btn:hover {
    background: #fff;
    color: #000;
}

.aiv-btn:focus-visible {
    outline: 4px solid #ffd600;
    outline-offset: 3px;
}

.aiv-scale {
    min-width: 68px;

    color: #fff;

    font-family: Arial, sans-serif;
    font-size: 17px;
    font-weight: 700;

    text-align: center;
}

.aiv-reset {
    font-size: 16px;
}


/* =====================================================
   ОБЛАСТЬ ИЗОБРАЖЕНИЯ
===================================================== */

.aiv-viewport {
    position: relative;

    flex: 1 1 auto;

    min-width: 0;
    min-height: 0;

    width: 100%;

    overflow: hidden;

    display: flex;
    align-items: center;
    justify-content: center;

    box-sizing: border-box;

    padding:
        16px
        16px
        max(16px, env(safe-area-inset-bottom));

    touch-action: none;
    overscroll-behavior: contain;
}

#aiv-image {
    display: block;

    width: auto;
    height: auto;

    max-width: 100%;
    max-height: 100%;

    object-fit: contain;

    user-select: none;
    -webkit-user-select: none;
    -webkit-user-drag: none;

    touch-action: none;

    cursor: grab;

    transform-origin: center center;

    will-change: transform;
}

#aiv-image.is-dragging {
    cursor: grabbing;
}


/* =====================================================
   ЗАГРУЗКА
===================================================== */

.aiv-loading {
    position: absolute;

    color: #fff;

    font-family: Arial, sans-serif;
    font-size: 18px;

    pointer-events: none;
}


/* =====================================================
   ТЕКСТ ТОЛЬКО ДЛЯ SCREEN READER
===================================================== */

.aiv-sr-only {
    position: absolute !important;

    width: 1px !important;
    height: 1px !important;

    padding: 0 !important;
    margin: -1px !important;

    overflow: hidden !important;

    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;

    border: 0 !important;
}


/* =====================================================
   МОБИЛЬНЫЕ
===================================================== */

@media (max-width: 640px) {

    .aiv-toolbar {
        justify-content: center;

        min-height: 62px;

        gap: 5px;

        padding:
            max(6px, env(safe-area-inset-top))
            7px
            6px;
    }

    .aiv-btn {
        min-width: 46px;
        height: 46px;

        padding: 0 9px;

        font-size: 19px;
    }

    .aiv-scale {
        min-width: 56px;

        font-size: 15px;
    }

    .aiv-reset {
        font-size: 14px;
    }

    .aiv-viewport {
        padding:
            8px
            8px
            max(8px, env(safe-area-inset-bottom));
    }
}

@media (max-width: 360px) {

    .aiv-toolbar {
        gap: 3px;
        padding-left: 4px;
        padding-right: 4px;
    }

    .aiv-btn {
        min-width: 43px;

        padding-left: 7px;
        padding-right: 7px;
    }

    .aiv-scale {
        min-width: 50px;
    }
}
</style>


<script>
(function () {

    /* =====================================================
       НАСТРОЙКИ
    ===================================================== */

    const IMAGE_SELECTOR = `
        .js-feed-post-image,
        .js-feed-post-text figure img
    `;

    const MIN_SCALE = 1;
    const MAX_SCALE = 8;
    const ZOOM_FACTOR = 1.25;

    let scale = 1;

    let panX = 0;
    let panY = 0;

    let sourceImage = null;
    let lastFocusedElement = null;


    /* =====================================================
       СОЗДАЕМ POPUP
    ===================================================== */

    const viewer = document.createElement('div');

    viewer.id = 'aiv-viewer';

    viewer.setAttribute('role', 'dialog');
    viewer.setAttribute('aria-modal', 'true');
    viewer.setAttribute('aria-label', 'Просмотр увеличенного изображения');

    viewer.innerHTML = `

        <div class="aiv-toolbar">

            <button
                type="button"
                class="aiv-btn"
                data-aiv="out"
                aria-label="Уменьшить изображение"
                title="Уменьшить"
            >
                −
            </button>

            <div
                class="aiv-scale"
                aria-live="polite"
                aria-atomic="true"
            >
                100%
            </div>

            <button
                type="button"
                class="aiv-btn"
                data-aiv="in"
                aria-label="Увеличить изображение"
                title="Увеличить"
            >
                +
            </button>

            <button
                type="button"
                class="aiv-btn aiv-reset"
                data-aiv="reset"
                aria-label="Вернуть исходный масштаб"
                title="Исходный размер"
            >
                100%
            </button>

            <button
                type="button"
                class="aiv-btn"
                data-aiv="close"
                aria-label="Закрыть изображение"
                title="Закрыть"
            >
                ×
            </button>

        </div>


        <div class="aiv-viewport">

            <div class="aiv-loading">
                Загрузка…
            </div>

            <img
                id="aiv-image"
                draggable="false"
                alt=""
            >

        </div>

        <div class="aiv-sr-only">
            Используйте кнопки плюс и минус для изменения масштаба.
            Изображение можно перемещать мышью или пальцем.
        </div>
    `;

    document.body.appendChild(viewer);


    const viewport =
        viewer.querySelector('.aiv-viewport');

    const image =
        viewer.querySelector('#aiv-image');

    const scaleText =
        viewer.querySelector('.aiv-scale');

    const loading =
        viewer.querySelector('.aiv-loading');

    const closeButton =
        viewer.querySelector('[data-aiv="close"]');


    /* =====================================================
       ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ
    ===================================================== */

    function clamp(value, min, max) {
        return Math.min(Math.max(value, min), max);
    }


    function updateTransform() {

        image.style.transform =
            `translate3d(${panX}px, ${panY}px, 0) scale(${scale})`;

        scaleText.textContent =
            Math.round(scale * 100) + '%';
    }


    /* =====================================================
       ОГРАНИЧЕНИЕ ПЕРЕМЕЩЕНИЯ
    ===================================================== */

    function clampPan() {

        if (scale <= 1) {

            panX = 0;
            panY = 0;

            return;
        }


        const baseWidth =
            image.offsetWidth;

        const baseHeight =
            image.offsetHeight;


        const availableWidth =
            viewport.clientWidth - 16;

        const availableHeight =
            viewport.clientHeight - 16;


        const scaledWidth =
            baseWidth * scale;

        const scaledHeight =
            baseHeight * scale;


        const maxX =
            Math.max(
                0,
                (scaledWidth - availableWidth) / 2 + 60
            );

        const maxY =
            Math.max(
                0,
                (scaledHeight - availableHeight) / 2 + 60
            );


        panX =
            clamp(
                panX,
                -maxX,
                maxX
            );


        panY =
            clamp(
                panY,
                -maxY,
                maxY
            );
    }


    /* =====================================================
       ZOOM
    ===================================================== */

    function zoomTo(
        newScale,
        clientX = null,
        clientY = null
    ) {

        newScale =
            clamp(
                newScale,
                MIN_SCALE,
                MAX_SCALE
            );


        if (newScale === scale) {
            return;
        }


        if (
            clientX !== null &&
            clientY !== null
        ) {

            const rect =
                viewport.getBoundingClientRect();


            const centerX =
                rect.left + rect.width / 2;

            const centerY =
                rect.top + rect.height / 2;


            const localX =
                (
                    clientX -
                    centerX -
                    panX
                ) / scale;


            const localY =
                (
                    clientY -
                    centerY -
                    panY
                ) / scale;


            panX =
                clientX -
                centerX -
                localX * newScale;


            panY =
                clientY -
                centerY -
                localY * newScale;
        }


        scale = newScale;


        if (scale === 1) {

            panX = 0;
            panY = 0;
        }


        clampPan();

        updateTransform();
    }


    /* =====================================================
       СБРОС
    ===================================================== */

    function resetViewer() {

        scale = 1;

        panX = 0;
        panY = 0;

        updateTransform();
    }


    /* =====================================================
       ПОЛУЧАЕМ ИСХОДНИК TILDA
    ===================================================== */

    function getBestSource(img) {

        const figure = img.closest('figure');

        return (
            img.getAttribute('data-original') ||
            img.getAttribute('data-src') ||
            figure?.getAttribute('data-src') ||
            img.currentSrc ||
            img.src
        );
    }


    /* =====================================================
       ОТКРЫТИЕ
    ===================================================== */

    function openViewer(img) {

        sourceImage = img;

        lastFocusedElement =
            document.activeElement;


        resetViewer();


        image.style.visibility = 'hidden';

        loading.style.display = 'block';
        loading.textContent = 'Загрузка…';


        image.alt =
            img.alt ||
            'Увеличенное изображение';


        viewer.classList.add('is-open');

        document.documentElement.classList.add('aiv-open');
        document.body.classList.add('aiv-open');


        requestAnimationFrame(function () {

            image.onload = function () {

                resetViewer();

                loading.style.display = 'none';

                image.style.visibility = 'visible';

            };


            image.onerror = function () {

                loading.textContent =
                    'Не удалось загрузить изображение';

            };


            image.src =
                getBestSource(img);


            if (image.complete && image.naturalWidth) {

                resetViewer();

                loading.style.display = 'none';

                image.style.visibility = 'visible';

            }

        });


        closeButton.focus();
    }


    /* =====================================================
       ЗАКРЫТИЕ
    ===================================================== */

    function closeViewer() {

        if (!viewer.classList.contains('is-open')) {
            return;
        }


        viewer.classList.remove('is-open');

        document.documentElement.classList.remove('aiv-open');
        document.body.classList.remove('aiv-open');


        resetViewer();


        image.removeAttribute('src');


        if (sourceImage) {

            sourceImage.focus();

        }
        else if (lastFocusedElement) {

            lastFocusedElement.focus();

        }


        sourceImage = null;
    }


    /* =====================================================
       КНОПКИ
    ===================================================== */

    viewer.addEventListener('click', function (event) {

        const button =
            event.target.closest('[data-aiv]');


        if (!button) {
            return;
        }


        const action =
            button.dataset.aiv;


        if (action === 'in') {

            zoomTo(
                scale * ZOOM_FACTOR
            );

        }

        else if (action === 'out') {

            zoomTo(
                scale / ZOOM_FACTOR
            );

        }

        else if (action === 'reset') {

            resetViewer();

        }

        else if (action === 'close') {

            closeViewer();

        }

    });


    /* =====================================================
       КОЛЕСО МЫШИ
    ===================================================== */

    viewport.addEventListener(
        'wheel',
        function (event) {

            if (!viewer.classList.contains('is-open')) {
                return;
            }


            event.preventDefault();


            const factor =
                event.deltaY < 0
                    ? 1.15
                    : 1 / 1.15;


            zoomTo(
                scale * factor,
                event.clientX,
                event.clientY
            );

        },
        {
            passive: false
        }
    );


    /* =====================================================
       POINTER EVENTS:
       МЫШЬ + TOUCH + STYLUS
    ===================================================== */

    const pointers =
        new Map();


    let dragStartX = 0;
    let dragStartY = 0;

    let dragPanX = 0;
    let dragPanY = 0;


    let pinchStartDistance = 0;
    let pinchStartScale = 1;

    let pinchLocalX = 0;
    let pinchLocalY = 0;


    function getDistance(a, b) {

        return Math.hypot(
            b.x - a.x,
            b.y - a.y
        );
    }


    function getMidpoint(a, b) {

        return {
            x: (a.x + b.x) / 2,
            y: (a.y + b.y) / 2
        };
    }


    function startPinch() {

        const values =
            Array.from(pointers.values());


        if (values.length < 2) {
            return;
        }


        const a = values[0];
        const b = values[1];


        pinchStartDistance =
            getDistance(a, b);


        pinchStartScale =
            scale;


        const midpoint =
            getMidpoint(a, b);


        const rect =
            viewport.getBoundingClientRect();


        const centerX =
            rect.left + rect.width / 2;

        const centerY =
            rect.top + rect.height / 2;


        pinchLocalX =
            (
                midpoint.x -
                centerX -
                panX
            ) / scale;


        pinchLocalY =
            (
                midpoint.y -
                centerY -
                panY
            ) / scale;
    }


    viewport.addEventListener(
        'pointerdown',
        function (event) {

            if (
                event.target.closest('.aiv-toolbar')
            ) {
                return;
            }


            event.preventDefault();


            pointers.set(
                event.pointerId,
                {
                    x: event.clientX,
                    y: event.clientY
                }
            );


            try {

                viewport.setPointerCapture(
                    event.pointerId
                );

            }
            catch (e) {}


            if (pointers.size === 1) {

                dragStartX =
                    event.clientX;

                dragStartY =
                    event.clientY;

                dragPanX =
                    panX;

                dragPanY =
                    panY;


                image.classList.add('is-dragging');

            }

            else if (pointers.size === 2) {

                startPinch();

            }

        }
    );


    viewport.addEventListener(
        'pointermove',
        function (event) {

            if (!pointers.has(event.pointerId)) {
                return;
            }


            event.preventDefault();


            pointers.set(
                event.pointerId,
                {
                    x: event.clientX,
                    y: event.clientY
                }
            );


            if (pointers.size >= 2) {

                const values =
                    Array.from(pointers.values());


                const a = values[0];
                const b = values[1];


                const distance =
                    getDistance(a, b);


                if (!pinchStartDistance) {
                    return;
                }


                const newScale =
                    clamp(
                        pinchStartScale *
                        (
                            distance /
                            pinchStartDistance
                        ),
                        MIN_SCALE,
                        MAX_SCALE
                    );


                const midpoint =
                    getMidpoint(a, b);


                const rect =
                    viewport.getBoundingClientRect();


                const centerX =
                    rect.left + rect.width / 2;

                const centerY =
                    rect.top + rect.height / 2;


                panX =
                    midpoint.x -
                    centerX -
                    pinchLocalX * newScale;


                panY =
                    midpoint.y -
                    centerY -
                    pinchLocalY * newScale;


                scale =
                    newScale;


                clampPan();

                updateTransform();

                return;
            }


            if (pointers.size === 1) {

                if (scale <= 1) {
                    return;
                }


                panX =
                    dragPanX +
                    (
                        event.clientX -
                        dragStartX
                    );


                panY =
                    dragPanY +
                    (
                        event.clientY -
                        dragStartY
                    );


                clampPan();

                updateTransform();

            }

        }
    );


    function endPointer(event) {

        pointers.delete(
            event.pointerId
        );


        if (pointers.size === 0) {

            image.classList.remove(
                'is-dragging'
            );

            pinchStartDistance = 0;

        }


        else if (pointers.size === 1) {

            const remaining =
                Array.from(
                    pointers.values()
                )[0];


            dragStartX =
                remaining.x;

            dragStartY =
                remaining.y;


            dragPanX =
                panX;

            dragPanY =
                panY;


            pinchStartDistance = 0;

        }

    }


    viewport.addEventListener(
        'pointerup',
        endPointer
    );

    viewport.addEventListener(
        'pointercancel',
        endPointer
    );


    /* =====================================================
       DOUBLE CLICK
    ===================================================== */

    image.addEventListener(
        'dblclick',
        function (event) {

            event.preventDefault();


            if (scale > 1) {

                resetViewer();

            }
            else {

                zoomTo(
                    2,
                    event.clientX,
                    event.clientY
                );

            }

        }
    );


    /* =====================================================
       КЛАВИАТУРА
    ===================================================== */

    document.addEventListener(
        'keydown',
        function (event) {

            if (!viewer.classList.contains('is-open')) {
                return;
            }


            if (event.key === 'Escape') {

                event.preventDefault();

                closeViewer();

            }


            else if (
                event.key === '+' ||
                event.key === '='
            ) {

                event.preventDefault();

                zoomTo(
                    scale * ZOOM_FACTOR
                );

            }


            else if (
                event.key === '-' ||
                event.key === '_'
            ) {

                event.preventDefault();

                zoomTo(
                    scale / ZOOM_FACTOR
                );

            }


            else if (event.key === '0') {

                event.preventDefault();

                resetViewer();

            }


            else if (
                event.key === 'ArrowLeft' &&
                scale > 1
            ) {

                event.preventDefault();

                panX += 80;

                clampPan();

                updateTransform();

            }


            else if (
                event.key === 'ArrowRight' &&
                scale > 1
            ) {

                event.preventDefault();

                panX -= 80;

                clampPan();

                updateTransform();

            }


            else if (
                event.key === 'ArrowUp' &&
                scale > 1
            ) {

                event.preventDefault();

                panY += 80;

                clampPan();

                updateTransform();

            }


            else if (
                event.key === 'ArrowDown' &&
                scale > 1
            ) {

                event.preventDefault();

                panY -= 80;

                clampPan();

                updateTransform();

            }

        }
    );


    /* =====================================================
       ПОДКЛЮЧАЕМ ИЗОБРАЖЕНИЯ TILDA
    ===================================================== */

    function imageClickHandler(event) {

        event.preventDefault();

        event.stopPropagation();

        event.stopImmediatePropagation();

        openViewer(
            event.currentTarget
        );

        return false;
    }


    function imageKeyHandler(event) {

        if (
            event.key !== 'Enter' &&
            event.key !== ' '
        ) {
            return;
        }


        event.preventDefault();

        event.stopPropagation();

        openViewer(
            event.currentTarget
        );
    }


    function prepareImages() {

        document
            .querySelectorAll(IMAGE_SELECTOR)
            .forEach(function (img) {

                if (
                    img.dataset.aivPrepared === '1'
                ) {
                    return;
                }


                img.dataset.aivPrepared = '1';


                img.setAttribute(
                    'tabindex',
                    '0'
                );


                img.setAttribute(
                    'role',
                    'button'
                );


                img.setAttribute(
                    'aria-haspopup',
                    'dialog'
                );


                let label =
                    'Открыть изображение для увеличения';


                if (img.alt) {

                    label =
                        img.alt +
                        '. Открыть изображение для увеличения';

                }


                img.setAttribute(
                    'aria-label',
                    label
                );


                img.addEventListener(
                    'click',
                    imageClickHandler,
                    true
                );


                img.addEventListener(
                    'keydown',
                    imageKeyHandler
                );

            });

    }


    prepareImages();


    /* =====================================================
       TILDA МОЖЕТ ПОДГРУЖАТЬ КОНТЕНТ ПОЗЖЕ
    ===================================================== */

    const observer =
        new MutationObserver(
            prepareImages
        );


    observer.observe(
        document.body,
        {
            childList: true,
            subtree: true
        }
    );


    /* =====================================================
       ПОВОРОТ ЭКРАНА / ИЗМЕНЕНИЕ РАЗМЕРА
    ===================================================== */

    window.addEventListener(
        'resize',
        function () {

            if (!viewer.classList.contains('is-open')) {
                return;
            }


            requestAnimationFrame(function () {

                clampPan();

                updateTransform();

            });

        }
    );


})();
</script></div>]]>
			</turbo:content>
		</item>
		<item turbo="true">
			<title>Видеоматериалы</title>
			<link>http://vukp.oktregion.ru/tpost/8zbv5u7cb1-videomateriali</link>
			<amplink>http://vukp.oktregion.ru/tpost/8zbv5u7cb1-videomateriali?amp=true</amplink>
			<pubDate>Sat, 01 Mar 2025 22:52:00 +0300</pubDate>
			<turbo:content>
<![CDATA[<header><h1>Видеоматериалы</h1></header><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239075" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239068" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239070" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239069" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239065" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239066" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239067" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239063" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239064" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239061" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239055" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239059" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239062" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239060" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239057" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239058" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239056" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239054" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239052" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239051" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239053" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239074" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239071" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239073" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239072" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-229448754&id=456239050" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><div class="t-redactor__embedcode"><!--
TILDA: доступный полноэкранный просмотр изображений
Вставьте этот файл целиком в блок T123 → HTML-код.

Поддерживает:
- превью статьи: .js-feed-post-image
- изображения внутри текста статьи: .js-feed-post-text figure img
- zoom колесом мыши
- кнопки + / − / 100%
- drag мышью
- pinch-to-zoom на телефоне
- перемещение пальцем
- клавиатуру
- safe-area на мобильных устройствах
-->

<style>
/* =====================================================
   КЛИКАБЕЛЬНЫЕ ИЗОБРАЖЕНИЯ
===================================================== */

.js-feed-post-image,
.js-feed-post-text figure img {
    cursor: zoom-in;
}

.js-feed-post-image:focus-visible,
.js-feed-post-text figure img:focus-visible {
    outline: 4px solid #ffd600;
    outline-offset: 4px;
}


/* =====================================================
   БЛОКИРОВКА ПРОКРУТКИ СТРАНИЦЫ
===================================================== */

html.aiv-open,
body.aiv-open {
    overflow: hidden !important;
    overscroll-behavior: none;
}


/* =====================================================
   POPUP
===================================================== */

#aiv-viewer {
    position: fixed;
    inset: 0;

    z-index: 2147483647;

    display: none;
    flex-direction: column;

    width: 100%;
    height: 100vh;

    background: rgba(0, 0, 0, 0.97);

    box-sizing: border-box;
}

@supports (height: 100dvh) {
    #aiv-viewer {
        height: 100dvh;
    }
}

#aiv-viewer.is-open {
    display: flex;
}


/* =====================================================
   ВЕРХНЯЯ ПАНЕЛЬ
===================================================== */

.aiv-toolbar {
    flex: 0 0 auto;

    display: flex;
    align-items: center;
    justify-content: center;

    gap: 8px;

    box-sizing: border-box;

    min-height: 68px;

    padding:
        max(8px, env(safe-area-inset-top))
        12px
        8px;

    background: #111;

    border-bottom: 1px solid rgba(255,255,255,.2);

    z-index: 20;
}

.aiv-btn {
    min-width: 50px;
    height: 50px;

    padding: 0 14px;

    border: 2px solid #fff;
    border-radius: 8px;

    background: #111;
    color: #fff;

    font-family: Arial, sans-serif;
    font-size: 20px;
    font-weight: 700;

    cursor: pointer;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    box-sizing: border-box;
}

.aiv-btn:hover {
    background: #fff;
    color: #000;
}

.aiv-btn:focus-visible {
    outline: 4px solid #ffd600;
    outline-offset: 3px;
}

.aiv-scale {
    min-width: 68px;

    color: #fff;

    font-family: Arial, sans-serif;
    font-size: 17px;
    font-weight: 700;

    text-align: center;
}

.aiv-reset {
    font-size: 16px;
}


/* =====================================================
   ОБЛАСТЬ ИЗОБРАЖЕНИЯ
===================================================== */

.aiv-viewport {
    position: relative;

    flex: 1 1 auto;

    min-width: 0;
    min-height: 0;

    width: 100%;

    overflow: hidden;

    display: flex;
    align-items: center;
    justify-content: center;

    box-sizing: border-box;

    padding:
        16px
        16px
        max(16px, env(safe-area-inset-bottom));

    touch-action: none;
    overscroll-behavior: contain;
}

#aiv-image {
    display: block;

    width: auto;
    height: auto;

    max-width: 100%;
    max-height: 100%;

    object-fit: contain;

    user-select: none;
    -webkit-user-select: none;
    -webkit-user-drag: none;

    touch-action: none;

    cursor: grab;

    transform-origin: center center;

    will-change: transform;
}

#aiv-image.is-dragging {
    cursor: grabbing;
}


/* =====================================================
   ЗАГРУЗКА
===================================================== */

.aiv-loading {
    position: absolute;

    color: #fff;

    font-family: Arial, sans-serif;
    font-size: 18px;

    pointer-events: none;
}


/* =====================================================
   ТЕКСТ ТОЛЬКО ДЛЯ SCREEN READER
===================================================== */

.aiv-sr-only {
    position: absolute !important;

    width: 1px !important;
    height: 1px !important;

    padding: 0 !important;
    margin: -1px !important;

    overflow: hidden !important;

    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;

    border: 0 !important;
}


/* =====================================================
   МОБИЛЬНЫЕ
===================================================== */

@media (max-width: 640px) {

    .aiv-toolbar {
        justify-content: center;

        min-height: 62px;

        gap: 5px;

        padding:
            max(6px, env(safe-area-inset-top))
            7px
            6px;
    }

    .aiv-btn {
        min-width: 46px;
        height: 46px;

        padding: 0 9px;

        font-size: 19px;
    }

    .aiv-scale {
        min-width: 56px;

        font-size: 15px;
    }

    .aiv-reset {
        font-size: 14px;
    }

    .aiv-viewport {
        padding:
            8px
            8px
            max(8px, env(safe-area-inset-bottom));
    }
}

@media (max-width: 360px) {

    .aiv-toolbar {
        gap: 3px;
        padding-left: 4px;
        padding-right: 4px;
    }

    .aiv-btn {
        min-width: 43px;

        padding-left: 7px;
        padding-right: 7px;
    }

    .aiv-scale {
        min-width: 50px;
    }
}
</style>


<script>
(function () {

    /* =====================================================
       НАСТРОЙКИ
    ===================================================== */

    const IMAGE_SELECTOR = `
        .js-feed-post-image,
        .js-feed-post-text figure img
    `;

    const MIN_SCALE = 1;
    const MAX_SCALE = 8;
    const ZOOM_FACTOR = 1.25;

    let scale = 1;

    let panX = 0;
    let panY = 0;

    let sourceImage = null;
    let lastFocusedElement = null;


    /* =====================================================
       СОЗДАЕМ POPUP
    ===================================================== */

    const viewer = document.createElement('div');

    viewer.id = 'aiv-viewer';

    viewer.setAttribute('role', 'dialog');
    viewer.setAttribute('aria-modal', 'true');
    viewer.setAttribute('aria-label', 'Просмотр увеличенного изображения');

    viewer.innerHTML = `

        <div class="aiv-toolbar">

            <button
                type="button"
                class="aiv-btn"
                data-aiv="out"
                aria-label="Уменьшить изображение"
                title="Уменьшить"
            >
                −
            </button>

            <div
                class="aiv-scale"
                aria-live="polite"
                aria-atomic="true"
            >
                100%
            </div>

            <button
                type="button"
                class="aiv-btn"
                data-aiv="in"
                aria-label="Увеличить изображение"
                title="Увеличить"
            >
                +
            </button>

            <button
                type="button"
                class="aiv-btn aiv-reset"
                data-aiv="reset"
                aria-label="Вернуть исходный масштаб"
                title="Исходный размер"
            >
                100%
            </button>

            <button
                type="button"
                class="aiv-btn"
                data-aiv="close"
                aria-label="Закрыть изображение"
                title="Закрыть"
            >
                ×
            </button>

        </div>


        <div class="aiv-viewport">

            <div class="aiv-loading">
                Загрузка…
            </div>

            <img
                id="aiv-image"
                draggable="false"
                alt=""
            >

        </div>

        <div class="aiv-sr-only">
            Используйте кнопки плюс и минус для изменения масштаба.
            Изображение можно перемещать мышью или пальцем.
        </div>
    `;

    document.body.appendChild(viewer);


    const viewport =
        viewer.querySelector('.aiv-viewport');

    const image =
        viewer.querySelector('#aiv-image');

    const scaleText =
        viewer.querySelector('.aiv-scale');

    const loading =
        viewer.querySelector('.aiv-loading');

    const closeButton =
        viewer.querySelector('[data-aiv="close"]');


    /* =====================================================
       ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ
    ===================================================== */

    function clamp(value, min, max) {
        return Math.min(Math.max(value, min), max);
    }


    function updateTransform() {

        image.style.transform =
            `translate3d(${panX}px, ${panY}px, 0) scale(${scale})`;

        scaleText.textContent =
            Math.round(scale * 100) + '%';
    }


    /* =====================================================
       ОГРАНИЧЕНИЕ ПЕРЕМЕЩЕНИЯ
    ===================================================== */

    function clampPan() {

        if (scale <= 1) {

            panX = 0;
            panY = 0;

            return;
        }


        const baseWidth =
            image.offsetWidth;

        const baseHeight =
            image.offsetHeight;


        const availableWidth =
            viewport.clientWidth - 16;

        const availableHeight =
            viewport.clientHeight - 16;


        const scaledWidth =
            baseWidth * scale;

        const scaledHeight =
            baseHeight * scale;


        const maxX =
            Math.max(
                0,
                (scaledWidth - availableWidth) / 2 + 60
            );

        const maxY =
            Math.max(
                0,
                (scaledHeight - availableHeight) / 2 + 60
            );


        panX =
            clamp(
                panX,
                -maxX,
                maxX
            );


        panY =
            clamp(
                panY,
                -maxY,
                maxY
            );
    }


    /* =====================================================
       ZOOM
    ===================================================== */

    function zoomTo(
        newScale,
        clientX = null,
        clientY = null
    ) {

        newScale =
            clamp(
                newScale,
                MIN_SCALE,
                MAX_SCALE
            );


        if (newScale === scale) {
            return;
        }


        if (
            clientX !== null &&
            clientY !== null
        ) {

            const rect =
                viewport.getBoundingClientRect();


            const centerX =
                rect.left + rect.width / 2;

            const centerY =
                rect.top + rect.height / 2;


            const localX =
                (
                    clientX -
                    centerX -
                    panX
                ) / scale;


            const localY =
                (
                    clientY -
                    centerY -
                    panY
                ) / scale;


            panX =
                clientX -
                centerX -
                localX * newScale;


            panY =
                clientY -
                centerY -
                localY * newScale;
        }


        scale = newScale;


        if (scale === 1) {

            panX = 0;
            panY = 0;
        }


        clampPan();

        updateTransform();
    }


    /* =====================================================
       СБРОС
    ===================================================== */

    function resetViewer() {

        scale = 1;

        panX = 0;
        panY = 0;

        updateTransform();
    }


    /* =====================================================
       ПОЛУЧАЕМ ИСХОДНИК TILDA
    ===================================================== */

    function getBestSource(img) {

        const figure = img.closest('figure');

        return (
            img.getAttribute('data-original') ||
            img.getAttribute('data-src') ||
            figure?.getAttribute('data-src') ||
            img.currentSrc ||
            img.src
        );
    }


    /* =====================================================
       ОТКРЫТИЕ
    ===================================================== */

    function openViewer(img) {

        sourceImage = img;

        lastFocusedElement =
            document.activeElement;


        resetViewer();


        image.style.visibility = 'hidden';

        loading.style.display = 'block';
        loading.textContent = 'Загрузка…';


        image.alt =
            img.alt ||
            'Увеличенное изображение';


        viewer.classList.add('is-open');

        document.documentElement.classList.add('aiv-open');
        document.body.classList.add('aiv-open');


        requestAnimationFrame(function () {

            image.onload = function () {

                resetViewer();

                loading.style.display = 'none';

                image.style.visibility = 'visible';

            };


            image.onerror = function () {

                loading.textContent =
                    'Не удалось загрузить изображение';

            };


            image.src =
                getBestSource(img);


            if (image.complete && image.naturalWidth) {

                resetViewer();

                loading.style.display = 'none';

                image.style.visibility = 'visible';

            }

        });


        closeButton.focus();
    }


    /* =====================================================
       ЗАКРЫТИЕ
    ===================================================== */

    function closeViewer() {

        if (!viewer.classList.contains('is-open')) {
            return;
        }


        viewer.classList.remove('is-open');

        document.documentElement.classList.remove('aiv-open');
        document.body.classList.remove('aiv-open');


        resetViewer();


        image.removeAttribute('src');


        if (sourceImage) {

            sourceImage.focus();

        }
        else if (lastFocusedElement) {

            lastFocusedElement.focus();

        }


        sourceImage = null;
    }


    /* =====================================================
       КНОПКИ
    ===================================================== */

    viewer.addEventListener('click', function (event) {

        const button =
            event.target.closest('[data-aiv]');


        if (!button) {
            return;
        }


        const action =
            button.dataset.aiv;


        if (action === 'in') {

            zoomTo(
                scale * ZOOM_FACTOR
            );

        }

        else if (action === 'out') {

            zoomTo(
                scale / ZOOM_FACTOR
            );

        }

        else if (action === 'reset') {

            resetViewer();

        }

        else if (action === 'close') {

            closeViewer();

        }

    });


    /* =====================================================
       КОЛЕСО МЫШИ
    ===================================================== */

    viewport.addEventListener(
        'wheel',
        function (event) {

            if (!viewer.classList.contains('is-open')) {
                return;
            }


            event.preventDefault();


            const factor =
                event.deltaY < 0
                    ? 1.15
                    : 1 / 1.15;


            zoomTo(
                scale * factor,
                event.clientX,
                event.clientY
            );

        },
        {
            passive: false
        }
    );


    /* =====================================================
       POINTER EVENTS:
       МЫШЬ + TOUCH + STYLUS
    ===================================================== */

    const pointers =
        new Map();


    let dragStartX = 0;
    let dragStartY = 0;

    let dragPanX = 0;
    let dragPanY = 0;


    let pinchStartDistance = 0;
    let pinchStartScale = 1;

    let pinchLocalX = 0;
    let pinchLocalY = 0;


    function getDistance(a, b) {

        return Math.hypot(
            b.x - a.x,
            b.y - a.y
        );
    }


    function getMidpoint(a, b) {

        return {
            x: (a.x + b.x) / 2,
            y: (a.y + b.y) / 2
        };
    }


    function startPinch() {

        const values =
            Array.from(pointers.values());


        if (values.length < 2) {
            return;
        }


        const a = values[0];
        const b = values[1];


        pinchStartDistance =
            getDistance(a, b);


        pinchStartScale =
            scale;


        const midpoint =
            getMidpoint(a, b);


        const rect =
            viewport.getBoundingClientRect();


        const centerX =
            rect.left + rect.width / 2;

        const centerY =
            rect.top + rect.height / 2;


        pinchLocalX =
            (
                midpoint.x -
                centerX -
                panX
            ) / scale;


        pinchLocalY =
            (
                midpoint.y -
                centerY -
                panY
            ) / scale;
    }


    viewport.addEventListener(
        'pointerdown',
        function (event) {

            if (
                event.target.closest('.aiv-toolbar')
            ) {
                return;
            }


            event.preventDefault();


            pointers.set(
                event.pointerId,
                {
                    x: event.clientX,
                    y: event.clientY
                }
            );


            try {

                viewport.setPointerCapture(
                    event.pointerId
                );

            }
            catch (e) {}


            if (pointers.size === 1) {

                dragStartX =
                    event.clientX;

                dragStartY =
                    event.clientY;

                dragPanX =
                    panX;

                dragPanY =
                    panY;


                image.classList.add('is-dragging');

            }

            else if (pointers.size === 2) {

                startPinch();

            }

        }
    );


    viewport.addEventListener(
        'pointermove',
        function (event) {

            if (!pointers.has(event.pointerId)) {
                return;
            }


            event.preventDefault();


            pointers.set(
                event.pointerId,
                {
                    x: event.clientX,
                    y: event.clientY
                }
            );


            if (pointers.size >= 2) {

                const values =
                    Array.from(pointers.values());


                const a = values[0];
                const b = values[1];


                const distance =
                    getDistance(a, b);


                if (!pinchStartDistance) {
                    return;
                }


                const newScale =
                    clamp(
                        pinchStartScale *
                        (
                            distance /
                            pinchStartDistance
                        ),
                        MIN_SCALE,
                        MAX_SCALE
                    );


                const midpoint =
                    getMidpoint(a, b);


                const rect =
                    viewport.getBoundingClientRect();


                const centerX =
                    rect.left + rect.width / 2;

                const centerY =
                    rect.top + rect.height / 2;


                panX =
                    midpoint.x -
                    centerX -
                    pinchLocalX * newScale;


                panY =
                    midpoint.y -
                    centerY -
                    pinchLocalY * newScale;


                scale =
                    newScale;


                clampPan();

                updateTransform();

                return;
            }


            if (pointers.size === 1) {

                if (scale <= 1) {
                    return;
                }


                panX =
                    dragPanX +
                    (
                        event.clientX -
                        dragStartX
                    );


                panY =
                    dragPanY +
                    (
                        event.clientY -
                        dragStartY
                    );


                clampPan();

                updateTransform();

            }

        }
    );


    function endPointer(event) {

        pointers.delete(
            event.pointerId
        );


        if (pointers.size === 0) {

            image.classList.remove(
                'is-dragging'
            );

            pinchStartDistance = 0;

        }


        else if (pointers.size === 1) {

            const remaining =
                Array.from(
                    pointers.values()
                )[0];


            dragStartX =
                remaining.x;

            dragStartY =
                remaining.y;


            dragPanX =
                panX;

            dragPanY =
                panY;


            pinchStartDistance = 0;

        }

    }


    viewport.addEventListener(
        'pointerup',
        endPointer
    );

    viewport.addEventListener(
        'pointercancel',
        endPointer
    );


    /* =====================================================
       DOUBLE CLICK
    ===================================================== */

    image.addEventListener(
        'dblclick',
        function (event) {

            event.preventDefault();


            if (scale > 1) {

                resetViewer();

            }
            else {

                zoomTo(
                    2,
                    event.clientX,
                    event.clientY
                );

            }

        }
    );


    /* =====================================================
       КЛАВИАТУРА
    ===================================================== */

    document.addEventListener(
        'keydown',
        function (event) {

            if (!viewer.classList.contains('is-open')) {
                return;
            }


            if (event.key === 'Escape') {

                event.preventDefault();

                closeViewer();

            }


            else if (
                event.key === '+' ||
                event.key === '='
            ) {

                event.preventDefault();

                zoomTo(
                    scale * ZOOM_FACTOR
                );

            }


            else if (
                event.key === '-' ||
                event.key === '_'
            ) {

                event.preventDefault();

                zoomTo(
                    scale / ZOOM_FACTOR
                );

            }


            else if (event.key === '0') {

                event.preventDefault();

                resetViewer();

            }


            else if (
                event.key === 'ArrowLeft' &&
                scale > 1
            ) {

                event.preventDefault();

                panX += 80;

                clampPan();

                updateTransform();

            }


            else if (
                event.key === 'ArrowRight' &&
                scale > 1
            ) {

                event.preventDefault();

                panX -= 80;

                clampPan();

                updateTransform();

            }


            else if (
                event.key === 'ArrowUp' &&
                scale > 1
            ) {

                event.preventDefault();

                panY += 80;

                clampPan();

                updateTransform();

            }


            else if (
                event.key === 'ArrowDown' &&
                scale > 1
            ) {

                event.preventDefault();

                panY -= 80;

                clampPan();

                updateTransform();

            }

        }
    );


    /* =====================================================
       ПОДКЛЮЧАЕМ ИЗОБРАЖЕНИЯ TILDA
    ===================================================== */

    function imageClickHandler(event) {

        event.preventDefault();

        event.stopPropagation();

        event.stopImmediatePropagation();

        openViewer(
            event.currentTarget
        );

        return false;
    }


    function imageKeyHandler(event) {

        if (
            event.key !== 'Enter' &&
            event.key !== ' '
        ) {
            return;
        }


        event.preventDefault();

        event.stopPropagation();

        openViewer(
            event.currentTarget
        );
    }


    function prepareImages() {

        document
            .querySelectorAll(IMAGE_SELECTOR)
            .forEach(function (img) {

                if (
                    img.dataset.aivPrepared === '1'
                ) {
                    return;
                }


                img.dataset.aivPrepared = '1';


                img.setAttribute(
                    'tabindex',
                    '0'
                );


                img.setAttribute(
                    'role',
                    'button'
                );


                img.setAttribute(
                    'aria-haspopup',
                    'dialog'
                );


                let label =
                    'Открыть изображение для увеличения';


                if (img.alt) {

                    label =
                        img.alt +
                        '. Открыть изображение для увеличения';

                }


                img.setAttribute(
                    'aria-label',
                    label
                );


                img.addEventListener(
                    'click',
                    imageClickHandler,
                    true
                );


                img.addEventListener(
                    'keydown',
                    imageKeyHandler
                );

            });

    }


    prepareImages();


    /* =====================================================
       TILDA МОЖЕТ ПОДГРУЖАТЬ КОНТЕНТ ПОЗЖЕ
    ===================================================== */

    const observer =
        new MutationObserver(
            prepareImages
        );


    observer.observe(
        document.body,
        {
            childList: true,
            subtree: true
        }
    );


    /* =====================================================
       ПОВОРОТ ЭКРАНА / ИЗМЕНЕНИЕ РАЗМЕРА
    ===================================================== */

    window.addEventListener(
        'resize',
        function () {

            if (!viewer.classList.contains('is-open')) {
                return;
            }


            requestAnimationFrame(function () {

                clampPan();

                updateTransform();

            });

        }
    );


})();
</script></div>]]>
			</turbo:content>
		</item>
		</channel>
</rss>