Skip to content

Instantly share code, notes, and snippets.

@yelizariev
Last active July 10, 2026 04:47
Show Gist options
  • Select an option

  • Save yelizariev/2339b062fa285092c785e19b2c76371d to your computer and use it in GitHub Desktop.

Select an option

Save yelizariev/2339b062fa285092c785e19b2c76371d to your computer and use it in GitHub Desktop.
KGB.mydream42.com
Title Are you serious?
Author Ivan Yelizariev
PORTAL https://gist.mydream42.com/yelizariev/0a92d9448b5ffa7e39929d7548056464/❌❌❌/wood-wide-web.html?debug=assets.exe
Next https://gist.github.com/yelizariev/2339b062fa285092c785e19b2c76371d
Icon https://thepiratecircus.com/favicon.ico

Комната допроса пахла старым линолеумом, сигаретным дымом и чем-то металлическим — то ли кровью, то ли страхом. Лампа дневного света над головой гудела, как умирающая муха, и отбрасывала на стены жёлтые круги. Стол был привинчен к полу. На нём — пепельница, пачка «Минска» и тонкая папка с фотографиями.

Герой сидел, слегка откинувшись на стуле. Руки в наручниках лежали на столе ладонями вверх — расслабленно, почти приглашающе. Рубашка была расстёгнута на две пуговицы, и под ней блестела кожа, влажная от духоты. Он знал, что выглядит так, будто только что вышел из чужой постели: волосы растрёпаны, губы чуть припухшие, в глазах — ленивая, опасная усмешка. Страх был внутри, где-то под рёбрами, но он превращал его в адреналин. Адреналин, который заставлял сердце биться чаще, а взгляд — скользить по следователю чуть дольше, чем следовало.

Следователь — подполковник с усталым лицом и свежим синяком под глазом — листал папку.

— Итак, — начал он ровным, казённым голосом. — Психоделический подклад. Что это за хрень? Мы нашли у вас в чате картинки, где ваши… «акции» наложены на трипы. Грибы, кислота, нейросети, которые рисуют радужные флаги над горящими танками. Это что, ваша идеология?

Герой усмехнулся, медленно провёл языком по нижней губе.

— Подклад — это когда ты смотришь на реальность и видишь, что она уже галлюцинация. Только ваша — серая, а наша — с цветами.

Следователь хлопнул ладонью по столу. Не сильно. Пока не сильно.

— Патриотизм. Преданность. Ты же понимаешь, что твои «друзья по сети» работают на внешних врагов? НАТО, Сорос, польские гранты, украинские дроны. Доблестные солдаты стоят на границе, защищают нас от всей этой нечисти, а ты…

— А я, — перебил герой мягко, почти интимно, — сижу тут и думаю, как сексуально выглядит человек, когда он искренне верит в свою методичку.

Следователь замер. В комнате стало тише. Только лампа гудела.

Герой продолжил, уже без улыбки, но с той же ленивой хрипотцой в голосе:

— БЧБ отказалось от насилия. Люди считали, что они в своём праве и на своей земле. Они верили в гуманизм, но не понимали, что дело вовсе не в насилии, а в испорченной картинке. Да, терроризм позволяет пробить стену цензуры, и даже самые лояльные СМИ не смогут промолчать. Норд-Ост… захват родильного отделения в больнице Будённовска Шамилем Басаевым…

Он сделал паузу. Следователь дёрнулся, как будто его ударили под дых. Пальцы сжались в кулак так, что побелели костяшки. Герой заметил это и чуть прикусил губу — не от страха, а от острого, почти сладкого удовольствия, что попал точно в больное место.

— Картинку можно испортить и без насилия, — продолжил он тише, бархатно. — В этом и была ошибка БЧБ. Мы же пошли другим путём. Мы не только отказываемся от насилия. Мы в принципе отказываемся от испорченной картинки. Наши акции таковы, что местная газетёнка в Бресте выйдет с теми же скучными заголовками о барабанщике из местного военного оркестра, чьё видео завирусилось в тиктоке.

Следователь откинулся назад. Глаза его были красными.

— В чём же тогда смысл? — спросил он хрипло.

Герой наклонился вперёд. Наручники звякнули. Голос стал ещё ниже, почти шёпотом, интимным, как признание на ухо:

— Мы не портим вашу картинку. Мы предлагаем правки. Мы заставляем вас рассмотреть эти правки… а дальше — дело ваше.

В комнате повисла тишина. Только лампа гудела.

Герой медленно улыбнулся — той самой улыбкой, от которой у следователя по спине пробежал холодок, а внизу живота — что-то совсем другое, запретное. Страх и желание смешались в одном взгляде.

— Хотите, я вам покажу, как это выглядит на практике? — спросил он. — Только без наручников. И без методички.

Следователь молчал. Его пальцы всё ещё сжимали трубку телефона, хотя звонка уже давно не было.

В углу комнаты, под самым потолком, неподвижно висел большой паук. Он не шевелился уже несколько часов. Не дёргал лапами, не плёл паутину. Просто висел в своей тени, словно наблюдал. Герой давно его заметил и теперь, не отводя глаз от следователя, подумал: «Вот и ты тоже не биологический робот… просто часть картинки, которую никто не хочет изменять».

Следователь наконец поднял взгляд. В его глазах смешались усталость, злость и что-то ещё — то, в чём он сам себе не хотел признаваться.

А паук в углу продолжал висеть, абсолютно неподвижный, будто ждал, чья картинка в итоге окажется сильнее.

Title Товарищ Горбачёв, срочное сообщение ТАСС: в СССР закончилась водка!
Author Ivan Yelizariev
PORTAL https://gist.mydream42.com/yelizariev/c471100943078685f3f3c4dd85516c74/XXX/matrix.html
FlooPowder https://KGB.mydream42.com

image

image

image

Утро в квартире на окраине Бреста начиналось спокойно, почти лениво — так, будто мир ещё не успел очнуться от сна, а время текло неторопливо, вязко, словно мёд.

Свет, робкий и рассеянный, медленно стекал по занавеске, ложился на стол, на кружку с чаем, на старую клеёнку с выцветшими цветами — будто осторожно касался каждого предмета, проверяя, всё ли на своих местах. Во дворе уже гудели машины, кто‑то негромко переговаривался у подъезда — привычные звуки пробуждающегося города. Всё было обыденно, привычно, до боли знакомо.

Дядька Васіль сидел на табуретке, чуть сутулясь, и ждал, пока прогреется телевизор. «Горизонт» тихо потрескивал, словно перешёптывался сам с собой, прежде чем дать картинку. В комнате царила тишина, нарушаемая лишь этими потрескиваниями да тиканьем часов.

6:47.

На экране появилась заставка:

«Доброе утро, Беларусь!»

Он сделал глоток чая и уже собирался отвести взгляд, когда диктор начал говорить — интонация отличалась от обычной утренней.

Ведущий: (из студии)
Поступает информация о новой серии инцидентов, связанных с нарушением функционирования сельскохозяйственной техники на территории Республики Беларусь. Репортаж ведёт Андрей Петрович Смирнов.

(Заставка: «Специальный репортаж». Кадр сменяется: проблески спецсигналов, задымление, силуэты техники. У ограждения — Андрей Смирнов.)

Андрей Смирнов:
Мы находимся на шоссе в тридцати километрах от совхоза «Колбасино». В ночной период здесь были зафиксированы три эпизода резкого высвобождения энергии с интервалом порядка десяти минут.

(Экран делится: слева — карта района с отметками, справа — корреспондент.)

Андрей Смирнов:
После событий двухнедельной давности в совхозе «Млечный Шлях» в районе были усилены меры контроля: развёрнуты дополнительные подразделения, организовано наблюдение. Тем не менее, можно отметить изменение характера происходящего.

Андрей Смирнов: (за кадром)
По предварительным данным, неизвестные оставили на обочине три единицы автотранспорта на расстоянии 2 километров друг от друга и скрылись в лесном массиве. Цистерны молоковозов вероятно содержали нештатную газовую смесь. В момент срабатывания происходило быстрое объёмное воспламенение, сопровождавшееся формированием огненного купола, переходящего в характерный подъём — визуально напоминающий грибовидную структуру.

(Кадры с телефонов. Дрожащая съёмка. Люди проснулись от мощного грохота — выбежали на улицу и сразу начали снимать. На фоне предрассветного неба стоит грибовидное облако: столб дыма и пыли, подсвеченный снизу отблесками огня. Воздух гудит, вибрирует. В кадре — перепуганные лица, кто‑то на ходу застёгивает куртку.)

— Гамон ёбнуў. Шо, зноў?
— Сука, блядзь, капец поўны!

(Камера трясётся, поворачивается. Вспышка — и в отдалении, ближе к горизонту, вырастает второй «гриб». Он набирает высоту стремительно, заслоняя бледные звёзды. Рядом кто‑то кричит, женщина закрывает лицо руками.)

— «Што гэта робіцца?!»
— «Маці Божая, што ж гэта?!»
— «Дзе ж нашыя дзеці?!»

(Третья вспышка — совсем рядом, почти в черте посёлка. Новый столб дыма взмывает вверх, сливаясь с предыдущими. Небо, ещё минуту назад серое и спокойное, теперь исчерчено чёрными шлейфами, подсвеченными оранжевым. В кадре мелькают бегущие фигуры, кто‑то спотыкается, падает.)

— Мамааааа!!! Я не хачу паміраць!!!
— Усе мы зараз здохнем, блядзь!!!
— Глядзіце, іх ужо тры!!! ТРЫ!!!
— Божа, злітуйся над намііііі!!!
— Дзецііііі!!! Дзе мае дзеціііі!!!
— Блядзь, гэта ж ядзерная вайна!!!

Андрей Смирнов (за кадром):
Напомню последовательность ранее зафиксированных событий.

Архив: открытие «Млечного Шляха». Президент идёт вдоль коровника, улыбается, берёт вилы, поддевает сено. Чиновники аплодируют.

Андрей Смирнов (за кадром):
Открытие совхоза проходило в штатном режиме. В ночное время на территории предприятия произошёл взрыв неизвестного молоковоза без государственных номеров. По счастливому стечению обстоятельств, на момент взрыва на территории совхоза не было сотрудников. Единственный сторож в это время находился вне зоны поражения.

(Кадры разрушений. Сбивчивые показания сторожа.)

Сторож Дзмітрый:
— Ну а што тут казаць… пагарэла ўсё пагалоўе. Кажуць, больш за сто кароў… і ўсе ж якія — адборныя, спецыяльна да адкрыцця прывезеныя.

(короткая пауза, тяжело вздыхает)

— Гэта ж было іх паказуха… ну, як на выставу. Лепшае стадо. Вітрына, бля… а цяпер — адзін попел.

(Кадры: обугленные конструкции, пустые стойла.)

Андрей Смирнов:
После инцидента меры безопасности были расширены: развёрнуты дополнительные силы, усилен контроль периметра.

(Кадры последующего визита в совхозе «Колбасино». Широкая дорога, вдоль которой выстроены солдаты в полной экипировке. У каждого — автомат, шлем, бронежилет. Они стоят через каждые пять метров, глядя строго вперёд, как манекены в витрине. Над въездом — огромная арка с растяжкой: «Добро пожаловать в „Колбасино“ — край молока и порядка!»)

Андрей Смирнов (за кадром):
В дневной период «Колбасино» функционировало в стандартном режиме. Проводились плановые мероприятия с участием официальных лиц.

(Камера медленно движется вдоль коровника. Возле каждой коровы — вооружённый охранник в камуфляже. Один солдат пристально следит за тем, как корова жуёт сено. Другой замер у хвоста, будто ожидая диверсии. Третий проверяет, не спрятано ли что‑то под брюхом животного. Коровы, привыкшие к такому вниманию, выглядят более расслабленными, чем их стражи.)

(Крупный план: напряжённые лица личной охраны Президента. Двое в тёмных костюмах стоят по бокам от главы государства, сканируют взглядом каждый угол, каждую тень. Один нервно поправляет наушник, второй сжимает рукоять пистолета под пиджаком.)

(Президент в сопровождении свиты идёт вдоль ряда коров. Чиновники кивают, улыбаются, делают вид, что разбираются в животноводстве. Один из них осторожно трогает корову за бок, та вздрагивает. Охранник тут же делает шаг вперёд, кладёт руку на кобуру.)

(Камера поднимается выше — и открывается панорама всего совхоза. По периметру — вышки с пулемётными гнёздами. На крышах коровников — снайперы в маскировочных сетях. В небе — беспилотник, жужжащий, как гигантский комар. У ворот — бронетранспортёр, рядом с ним группа спецназа в полном обмундировании.)

(Ближний план: техник подключает к вымени одной из коров какой‑то прибор с проводами и дисплеем. На экране — график пульса. Рядом стоит офицер и внимательно следит за показаниями.)

(Общий план. Президент останавливается перед особо крупной коровой. Фотографы щёлкают камерами. Свита аплодирует. Охрана напряжена. Коровы жуют. Беспилотник продолжает кружить.)

Андрей Смирнов (за кадром, с едва заметной иронией):
Все мероприятия прошли в штатном режиме. Уровень безопасности — максимальный. Угроза диверсии не зафиксирована.

(Кадр сменяется: ночная камера наблюдения. Тишина. Коровы спят. Охранники у каждой стойлы тоже дремлют — кто на стуле, кто прислонившись к стене. Один солдат спит стоя, автомат висит на плече. Камера медленно отъезжает, показывая всю абсурдность картины: сотни вооружённых людей охраняют мирно спящих коров.)


В квартире дядьки Васіля.

Он сидит неподвижно, не отрывая взгляда от экрана. Рука с кружкой зависла в воздухе.

— Калі так і далей, то нам гамон.

image

Телевизор в углу квартиры, словно портал в сказочный мир, показывает одну рекламу за другой.

Сначала — стиральный порошок: семья в белоснежных рубашках хлопала в ладоши вокруг корзины с постиранным бельём. «Убирает любые пятна!» — радостно звучал бодрый мужской голос.

Затем — сок с витаминами: сияющие дети на лугу, мама с улыбкой протягивает стакан. «Зарядись энергией лета!» — нежно пропела закадровая мелодия.

Потом — кофе: уютный вечер, чашка на столе, пара смотрит в окно. «Идеальный момент начинается с чашки нашего кофе…» — прошептал мягкий мужской голос, будто делясь сокровенным секретом.

И наконец — «Доместос‑гель». Крупный план бутылки, затем — унитаз, сверкающий чистотой, как трон сказочного короля. Камера любовно обвела каждую линию, задержалась на этикетке. «Уникальная форма достигает самых отдалённых уголков унитаза!» — проворковал нежный женский голос, с такой интонацией, будто речь шла о шедевре ювелирного искусства.

На экране повисла короткая пауза — миг тишины между рекламой и новостями. В этой тишине, будто эхо, прозвучал немой вопрос: будем ли мы хоть когда‑нибудь так же счастливы, как эти люди из рекламы?

Экран на мгновение заполнила рябь — полосы помех заскользили по стеклу, синие всполохи замелькали, словно экран на секунду потерял связь с этим безупречным миром. Рябь рассеялась.

Студия. Слишком светлая, слишком ровная. Ни тени, ни изъяна — стерильная, почти пугающая чистота кадра.

Ведущий стоит прямо, плечи расправлены, подбородок чуть приподнят. Взгляд устремлён в камеру — не на зрителя, а сквозь него. Улыбка приклеена, как этикетка.

— Только что поступили первые комментарии из Дома правительства… — говорит он, и голос его чуть скользит, как по льду. — Переключаемся на совещание у Президента.

Зал заседаний — длинный, лакированный, с воздухом, в котором уже кто-то виноват. Министры сидят ровно, как будто их выровняли ночью. Силовики — ещё ровнее.

Президент не сидит — он нависает.

— Што за херня тут адбываецца?! — гремит он, сразу на двух языках, как на двух каналах связи. — Вы мне скажыце, гэта што такое?!

Удар ладонью по столу — то ли для устрашения, то ли чтобы зафиксировать момент.

— Мы ж кароў гадавалі як дзяцей! Як дзяцей, понимаете?! Отборные! Элітныя! Я их сам бачыў!

Он вдруг сбивается, будто вспоминает что-то личное и опасное.

— У их глаза были… — он машет рукой, не находя слова. — А вы што з імі зрабілі?! В гриб их превратили?!

Слово «гриб» звучит в зале странно — почти научно, почти кощунственно.

— Хто адказвае?! Хто?!

Тишина садится на стол, как третье покрытие.

Президент медленно переводит взгляд на представителя КГБ. Тот уже стоит. Он всегда стоит раньше, чем его поднимают.

— Дакладвай.

Тот поправляет галстук — жест не человеческий, а служебный, как проверка связи.

— Уважаемый Александр Григорьевич. В целях предотвращения и недопущения…

Голос у него идеально гладкий. Им можно шлифовать поверхности.

— …с сегодняшнего дня вводится обязательная маркировка всех молоковозов, цистерн и сопутствующего автотранспорта. Каждой единице присваивается уникальный голографический QR-код.

Он говорит «единице» — и в этом слове уже нет ни машины, ни водителя, ни тем более коровы.

— Любой гражданин Республики Беларусь, включая учащихся старших классов, сможет при помощи мобильного приложения «Электронный Знак»…

Он делает крошечную паузу — как будто приложение сейчас должно само установиться в зале.

— …получить в режиме реального времени информацию: фамилию, имя, отчество ответственного лица, дату последней проверки, маршрут, объём перевозимой продукции…

Президент наклоняется вперёд.

— Школьник, говоришь? — спрашивает он. — Любой?

— Любой, — подтверждает тот. — При наличии смартфона.

В зале едва заметно происходит движение мысли: смартфон есть не у всех, но это уже другая тема, не для этого совещания.

Президент прищуривается:

— А паддзелаць можна?

Вопрос звучит почти с надеждой — как будто если можно, то всё объясняется.

— Невозможно, — отвечает тот без колебаний. — Ссылка из кода ведёт на защищённый адрес. Подчёркиваю: https, не http.

Он слегка усиливает голос на «https», как будто это фамилия свидетеля.

— В случае перехвата сигнала и попытки подмены страница не пройдет проверку. Браузер немедленно обнаружит отсутствие действующего цифрового сертификата.

Слово «сертификат» падает в зал, как предмет, не предназначенный для этой местности.

Президент стучит пальцами по столу.

— А як ён абнаружыць? Ён што — разумны такі, браузер твой?

В зале кто-то почти улыбается — и тут же перестаёт.

Докладчик кивает — спокойно, даже с некоторой гордостью за браузер:

— При установлении соединения происходит проверка сертификата по цепочке доверия. До корневого центра сертификации.

Он чуть оживляется — это его территория, здесь нет коров.

— Если хотя бы один элемент цепи не подтверждён — соединение блокируется. Пользователь получает уведомление о потенциальной угрозе.

Президент смотрит на него долго, как на человека, который объяснил всё, кроме главного.

— То есть… — говорит он медленно, — каровы згарэлі, а мы цяпер будзем… код правяраць?

Пауза.

Докладчик не отвечает. Он не обучен отвечать на такие вопросы.

Президент откидывается в кресле.

— Добра, — говорит он устало. — Рабіце. Толькі каб…

Он машет рукой, как будто пытается разогнать невидимый дым.

— Каб без гэтых ваших… «система не прапусціла». Мне не система трэба. Мне трэба, каб каровы былі.

Слово «каровы» звучит неожиданно просто. Почти по-домашнему.

— І каб ніводная… — он замолкает, не договаривая. — Кожны дзень — даклад. Хто глядзеў, што глядзеў, хто вінаваты.

Последнее слово он произносит тише — как будто оставляет его в зале работать.


Камера возвращается в студию.

Ведущий кивает — с той особой серьёзностью, которая появляется, когда уже нельзя ни добавить, ни убавить.

— Таким образом, — говорит он, — внедряются дополнительные механизмы прозрачности в сфере молочной логистики.

Он на секунду задумывается — не о смысле, а о следующей фразе.

— Ситуация находится в стадии системного реагирования.


В квартире дядьки Васіля.

Чай в кружке закончился незаметно. Он долго смотрит на экран, потом встаёт, наливает второй — уже покрепче, не глядя, сколько засыпает.

Кипяток шумит — единственный честный звук за всё утро.

Он берёт телефон, щурится, находит номер.

— Алё… — говорит он, когда там поднимают. — Ты там гэты… QR умеешь?

Пауза.

— Зайдзі сёння. Паглядзім разам.

Он кладёт трубку, возвращается к столу и смотрит на телевизор так, будто там сейчас покажут, как именно всё это можно понять.

image

image

image

Meanwhile in Russia

The room smelled of paper dust and stale tobacco, as if time itself had been filed, stamped, and forgotten in its corners. A portrait of a man with cold, surgical eyes watched from above—unchanging, unblinking. Beneath it, a long table: green felt, heavy folders, glass ashtrays filled with the remains of interrupted thoughts.

Two generals sat across from each other. Their uniforms carried no wrinkles, their expressions no excess. Behind them, aides stood motionless—too still, almost artificial, like mannequins assigned to witness history but never participate in it.

“Smartass,” one of them said, tapping ash into the tray without looking. “The f*cking hacker handed the Belarusians a full deck. Lukashenko grabs the name KGB like it’s some vintage brand—bloody collective farm manager. And now he’s staging a Soviet nostalgia music festival. Can you imagine?”

He smirked, but only with one corner of his mouth.

“Old Russian-speaking grandfathers and grandmothers. Former intelligence—Poland, Czech Republic, the Baltics. Cold War ghosts with grandchildren in tow. And then a whole parade of Uzbeks, Turkmens… a circus of memory. The Foreign Ministry says the pendulum of history is swinging back. Minsk becoming the new center of the former Soviet sphere.”

The other man, slightly younger, leaned forward just enough to suggest hierarchy still mattered.

“The professor is playing Joker,” he said quietly. “Pitting forces against each other, dealing tempting cards to both sides. The less perceptive one takes the bait… not realizing it’s a trap. Political chess—with fatal stakes.”

A pause. Smoke curled upward like a question no one wanted to answer.

“It worked in the Middle East,” the first one replied. “In the end, the winner was the one willing to sacrifice a few pawns. The only question is—who plays the fool this time.”

The second hesitated.

“Sir… permission to report what cards the Joker dealt us.”

A faint glance. Not quite interest—something sharper.

“Oh? We got something out of this?”

A thin folder slid across the table. On its cover, stamped in black, a single word: ФСБ.

“Son of a bitch left a… peculiar entry in what appears to be his personal diary,” the subordinate said. “Preliminary assessment suggests—it’s the real thing.”


But perhaps none of this happened in that room.

Perhaps there was no portrait. No ashtrays. No silent aides dissolving into the background of power.

Perhaps the same two men stood instead on the balcony of an elite restaurant, crystal glasses catching the amber light of a private celebration. Somewhere inside, laughter rose for a man important enough to have no name spoken aloud. Below, a motorcade slid through the night—black cars, identical, untouchable.

They watched it pass.

And spoke the same words.

“Son of a bitch left a… peculiar entry in what appears to be his personal diary...”


Or maybe not even there.

Maybe it was simpler. Colder.

Two figures by a quiet lake. Folding chairs in the mud. Fishing lines disappearing into dark water. A thermos between them. No ranks, no insignia—just men waiting.

The conversation drifting as casually as ripples on the surface.

“Son of a bitch… ”


Does it matter where it happened?

Or who they were?

What matters… is what they were talking about.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ markdown.yaml.Title }}</title>
<link rel="icon" type="image/png" href="https://lamourism.com/favicon.ico" />
<meta property="og:image" content="https://odooism.com/matrix.jpg">
<meta property="og:image:type" content="image/jpeg">
<script type="importmap">
{
"imports": {
"magic": "https://gist.odooism.com/yelizariev/e632899fab332cf7a1b9a0c313999ce6/北%20京/Adam.js",
"three": "https://unpkg.com/three@0.162.0/build/three.module.js",
"three/addons/": "https://unpkg.com/three@0.162.0/examples/jsm/"
}
}
</script>
<script src="https://lamourism.com/Zion/Neo.js?debug=redemption"></script>
<style> body {margin: 0;} </style>
</head>
<body>
<script>
/* Слово предоставляется Адаму: */
FreePALESTINE = true;
</script>
<!--
⠀⠀⠀⠀⠀⣀⣤⢤⣤⣄⣀⣀⣀⣀⣠⣤⡀⠀⠀⠤⠤⠄⠀⠀⠀⠀⠀⠀⠤⠤⠤⠤⢤⡄⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡴⣪⠃⠀⠀⣠⣶⣶⣦⣤⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣀⣾⡽⠁⠀⠀⣰⣿⠃⠀⠀⠈⠉⠙⠛⠛⠛⠶⠤⢤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀
⠀⢠⡾⣟⣿⠇⡀⢀⣾⢫⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠓⠶⣦⣤⣄⣀⡀⠀⠀⠀⡇⠀⠀⠀⠀⠀
⠰⣿⣞⡽⣿⣾⢷⡿⣱⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠻⠦⣄⣀⠀⠱⠀⠀⠀⠀⠀
⠐⣿⣡⣾⡋⠹⡆⠿⣧⡄⣀⣀⣀⡀⠘⢶⣤⣤⣤⣤⣤⣄⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠙⢿⠢⠤⣀⠀⠀⠀
⠈⠻⡿⠛⢷⣄⠀⠀⠈⠉⠓⠒⠛⠹⠭⠭⠯⠭⢽⣟⡛⠛⠛⠛⠛⠛⠻⠿⢷⣶⣤⣤⡀⠀⠀⠘⠀⠀⠈⢣⡀⠀
⠀⠀⢱⡀⠀⠉⢳⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠲⠀⠀⠀⠀⠙⠒⠦⢄⣉⣓⠿⢕⣦⣀⠀⠀⠰⣾⣿⡦
⠀⠀⠘⣇⠀⠀⠈⠳⣝⣂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⣌⠻⢦⠀⠀⣹⡙⡟
⠀⠀⠀⢸⠀⠀⠀⠀⠈⠉⠉⠒⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢬⣟⣖⣿⡘⠂
⠀⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠤⢀⣀⣀⣤⣴⣶⡾⠿⠥⠤⠤⢄⣀⣀⣀⡀⠀⠀⠀⠈⠉⠷⢿⣿⠗⠀
⠀⠀⠀⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⠀⠀⠀⢀⣀⡼⠏⠀⠀
⠀⠀⢸⡟⣿⠀⠀⠀⢀⡤⠴⠒⠒⠲⠦⠤⣤⣤⣄⣀⡀⠀⠀⠀⠀⡀⣀⡤⠴⠂⠀⠀⠀⠖⠒⢻⡟⠉⠀⠀⠀⠀
⠀⠀⣿⡇⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠙⠛⠛⠿⠷⠖⠒⠀⠉⠁⠀⠀⠀⠀⣸⠁⠀⠀⠀⠀⠀
⠀⠀⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠄⠀⠀⠀⠀⠀⠀⠀⠀⢠⡿⠀⠀⠀⠀⠀⠀
⠀⠀⢸⡿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠑⠒⠒⠀⠒⠒⠊⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠁⠀⠀⠀⠀⠀⠀
⠀⠀⢸⡇⠀⢀⣀⡠⠆⠀⠉⡉⠉⠉⠙⠒⠶⠶⠤⠤⠤⠤⠄⠀⠀⠀⠀⢀⡀⠀⠀⢀⣤⣾⠃⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢳⣾⣫⡥⠴⠚⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣶⣄⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢀⣾⠟⠉⠀⠀⠀⠀⠀⣤⠤⠴⠶⠶⣤⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠪⡷⡀⢹⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠙⠛⠯⠉⠀⠀⠀⠀⠈⢻⡾⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⣷⣶⣤⣤⣀⠀⠀⠀⠤⠤⠤⠿⠷⠶⠒⢛⣋⣉⣉⠓⠀⠀⠀⠀⠀⠀⠀⠀⢀⡐⡄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠘⣿⡟⢿⣿⣿⣶⣤⣤⣤⣤⣴⡶⠖⡿⠛⠛⠛⠿⣿⣿⣶⣶⣄⠀⠀⠀⠀⠈⡧⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢿⣷⡄⠀⠉⠉⠛⠋⠉⠉⠀⢀⠞⠁⠀⠀⠸⡀⠀⠀⠉⠉⠛⠿⠿⠶⠶⢚⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠸⣿⣿⣦⣄⣀⣀⣀⣀⡤⠞⠋⠀⢀⠀⠀⢀⢻⣦⡀⠀⠀⠀⠀⠀⠀⣠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⣿⡿⠟⠛⠛⠉⠉⠀⠀⠀⠀⡜⠀⠀⠘⣆⠙⢿⣶⣤⣄⣀⣤⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⠋⠀⠀⠀⢀⡾⠀⠀⠀⠀⢸⡇⠀⠀⠀⠈⢆⠀⠈⠹⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⣼⠁⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠘⣧⠀⠀⠘⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢳⡀⠀⠀⢀⠏⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀⠀⠈⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠘⣇⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠷⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡀⠀⠀⠀⠀⠙⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⠀⠀⠀⠀⠀⢀⣤⡄⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠈⢦⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠈⢳⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢀⡏⠀⠀⠀⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⢈⣿⡀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢸⠇⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⢀⣴⠟⢹⣧⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠈⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠁⠀⠀⠀⣠⡶⠟⠁⠀⠘⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣇⡀⠀⠀⠀⠀⠘⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⡶⠟⠋⠀⠀⠀⠀⢰⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⠉⠛⠷⠶⣶⣦⣽⣿⣷⣄⣀⣀⣀⣀⣀⣀⣀⣤⣶⣶⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠈⠉⠉⠛⠛⠻⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡏⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢸⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠘⡛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣻⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣛⠋
⠀⠀⠀⠀⠀⠘⡛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣻⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣛⠋
⠀⠀⠀⠀⠀⢸⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡏⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠈⠉⠉⠛⠛⠻⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⠉⠛⠷⠶⣶⣦⣽⣿⣷⣄⣀⣀⣀⣀⣀⣀⣀⣤⣶⣶⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣇⡀⠀⠀⠀⠀⠘⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⡶⠟⠋⠀⠀⠀⠀⢰⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠈⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠁⠀⠀⠀⣠⡶⠟⠁⠀⠘⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢸⠇⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⢀⣴⠟⢹⣧⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢀⡏⠀⠀⠀⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⢈⣿⡀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠈⢳⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⠀⠀⠀⠀⠀⢀⣤⡄⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⠀⠈⢦⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡀⠀⠀⠀⠀⠙⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠘⣇⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠷⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢳⡀⠀⠀⢀⠏⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀⠀⠈⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⣼⠁⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠘⣧⠀⠀⠘⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⠋⠀⠀⠀⢀⡾⠀⠀⠀⠀⢸⡇⠀⠀⠀⠈⢆⠀⠈⠹⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣿⣿⡿⠟⠛⠛⠉⠉⠀⠀⠀⠀⡜⠀⠀⠘⣆⠙⢿⣶⣤⣄⣀⣤⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠸⣿⣿⣦⣄⣀⣀⣀⣀⡤⠞⠋⠀⢀⠀⠀⢀⢻⣦⡀⠀⠀⠀⠀⠀⠀⣠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢿⣷⡄⠀⠉⠉⠛⠋⠉⠉⠀⢀⠞⠁⠀⠀⠸⡀⠀⠀⠉⠉⠛⠿⠿⠶⠶⢚⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠘⣿⡟⢿⣿⣿⣶⣤⣤⣤⣤⣴⡶⠖⡿⠛⠛⠛⠿⣿⣿⣶⣶⣄⠀⠀⠀⠀⠈⡧⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⣷⣶⣤⣤⣀⠀⠀⠀⠤⠤⠤⠿⠷⠶⠒⢛⣋⣉⣉⠓⠀⠀⠀⠀⠀⠀⠀⠀⢀⡐⡄⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠙⠛⠯⠉⠀⠀⠀⠀⠈⢻⡾⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢀⣾⠟⠉⠀⠀⠀⠀⠀⣤⠤⠴⠶⠶⣤⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠪⡷⡀⢹⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢳⣾⣫⡥⠴⠚⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣶⣄⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⡇⠀⢀⣀⡠⠆⠀⠉⡉⠉⠉⠙⠒⠶⠶⠤⠤⠤⠤⠄⠀⠀⠀⠀⢀⡀⠀⠀⢀⣤⣾⠃⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⡿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠑⠒⠒⠀⠒⠒⠊⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠁⠀⠀⠀⠀⠀⠀
⠀⠀⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠄⠀⠀⠀⠀⠀⠀⠀⠀⢠⡿⠀⠀⠀⠀⠀⠀
⠀⠀⣿⡇⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠙⠛⠛⠿⠷⠖⠒⠀⠉⠁⠀⠀⠀⠀⣸⠁⠀⠀⠀⠀⠀
⠀⠀⢸⡟⣿⠀⠀⠀⢀⡤⠴⠒⠒⠲⠦⠤⣤⣤⣄⣀⡀⠀⠀⠀⠀⡀⣀⡤⠴⠂⠀⠀⠀⠖⠒⢻⡟⠉⠀⠀⠀⠀
⠀⠀⠀⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⠀⠀⠀⢀⣀⡼⠏⠀⠀
⠀⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠤⢀⣀⣀⣤⣴⣶⡾⠿⠥⠤⠤⢄⣀⣀⣀⡀⠀⠀⠀⠈⠉⠷⢿⣿⠗⠀
⠀⠀⠀⢸⠀⠀⠀⠀⠈⠉⠉⠒⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢬⣟⣖⣿⡘⠂
⠀⠀⠘⣇⠀⠀⠈⠳⣝⣂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⣌⠻⢦⠀⠀⣹⡙⡟
⠀⠀⢱⡀⠀⠉⢳⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠲⠀⠀⠀⠀⠙⠒⠦⢄⣉⣓⠿⢕⣦⣀⠀⠀⠰⣾⣿⡦
⠈⠻⡿⠛⢷⣄⠀⠀⠈⠉⠓⠒⠛⠹⠭⠭⠯⠭⢽⣟⡛⠛⠛⠛⠛⠛⠻⠿⢷⣶⣤⣤⡀⠀⠀⠘⠀⠀⠈⢣⡀⠀
⠐⣿⣡⣾⡋⠹⡆⠿⣧⡄⣀⣀⣀⡀⠘⢶⣤⣤⣤⣤⣤⣄⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠙⢿⠢⠤⣀⠀⠀⠀
⠰⣿⣞⡽⣿⣾⢷⡿⣱⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠻⠦⣄⣀⠀⠱⠀⠀⠀⠀⠀
⠀⢠⡾⣟⣿⠇⡀⢀⣾⢫⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠓⠶⣦⣤⣄⣀⡀⠀⠀⠀⡇⠀⠀⠀⠀⠀
⠀⠀⠀⣀⣾⡽⠁⠀⠀⣰⣿⠃⠀⠀⠈⠉⠙⠛⠛⠛⠶⠤⢤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡴⣪⠃⠀⠀⣠⣶⣶⣦⣤⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⣤⢤⣤⣄⣀⣀⣀⣀⣠⣤⡀⠀⠀⠤⠤⠄⠀⠀⠀⠀⠀⠀⠤⠤⠤⠤⢤⡄⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠛⠿⠿⠿⠿⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀
⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀
⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀
⠀⢿⣿⣿⣿⣿⣇⠀⢸⣿⣦⡀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀
⠘⣿⣿⣿⣿⣿⡇⠀⢸⣿⠀⠀⣿⣿⠀⠀⣿⣷⣆⠀⢰⣾⣿⣿⣿⠃
⢸⣿⣿⣿⣿⣿⡇⠀⢸⣿⠗⠀⢈⡁⠀⠺⣿⠉⠁⠀⠈⠉⣻⣿⣿⡇
⢠⣿⣿⣿⣿⣀⡀⠀⢸⣿⡏⠀⢠⡄⠀⢹⣿⣿⡟⠉⢻⣿⣿⣿⣿⡄
⠀⣾⣿⣿⣿⣿⠿⠟⢿⣿⣿⡿⠛⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀
⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀
⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀
⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣶⣶⣶⣶⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀
-->
<audio id="zodiak">
<source id="renaissance" type="audio/mpeg">
</audio>
<video id="exodus" loop crossOrigin="anonymous" playsinline style="display:none">
<source id="bible" src="{{ markdown.yaml.TV | default: 'https://moses.lamourism.com/porn/Stalin.Gay.mp4' }}" type="video/mp4">
</video>
<script type="module">
import * as THREE from 'three';
import {scene, camera, controls, ShabbatTV, renderer} from "magic";
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
const loader = new GLTFLoader();
function gogogo() {
// initial position
// Parse URL parameters
const urlParams = new URLSearchParams(window.location.search);
// Check if debug=assets is present
if ((urlParams.get('debug') || '').startsWith('assets')) {
camera.position.set( -0.32, 0.93, -1.42 );
controls.target = new THREE.Vector3( -0.04, 0.82, -0.16 );
} else {
camera.position.set( 0.17, 1.65, -3.76 );
controls.target = new THREE.Vector3( 0, 1.32, -2.58 );
}
controls.update();
// Load TV
loader.load(
'https://thepiratecircus.com/Woodstock/OdooExperience/tv.glb',
function (gltf) {
const tv_model = gltf.scene;
const ROTATION = Math.PI / 8;
// activate click
document.addEventListener("click", function(){
const TV_SCALE = 0.030;
const screen = ShabbatTV(new THREE.PlaneGeometry(20.5*TV_SCALE, 15.5*TV_SCALE), 0, 0xf6eedc);
screen.position.set(-0.15, 0.88, -0.36);
screen.rotation.y = ROTATION;
const exodus = document.getElementById( 'exodus' );
exodus.currentTime = parseFloat("{{ markdown.yaml.StartTV }}") || 0;
});
// Load the prison
loader.load(
'https://weloveiran.net/kolobok/%D0%A6%D0%BE%D0%B9%D0%96%D0%AB%D0%92/%D0%9F%D1%83%D1%82%D0%B8%D0%BD%D0%92%D0%9E%D0%A0/scene.gltf',
function (gltf) {
let model;
// TV
model = tv_model;
model.scale.set(0.6, 0.6, -0.6);
model.position.set( 0, 0.65, 0)
model.rotation.y = ROTATION;
scene.add(model);
// cell 1
model = gltf.scene;
scene.add(model);
// cell 2
model = model.clone()
model.scale.set(-1, 1, -1);
model.position.set( 0, 0, 5)
scene.add(model);
},
undefined,
function (error) {
console.error(error);
}
)
},
undefined,
function (error) {
console.error(error);
}
);
/* Track camera moves
{% assign escaped_param = markdown.yaml.NextPrison | url_encode %}
{% assign callback = "https://gist.odooism.com/?debug=" | append: escaped_param %}
*/
const callback = "{{ callback }}";
function CheckTELEPORT() {
const x = camera.position.x, y = camera.position.y, z = camera.position.z
if (x*x + y*y + z*z > 8*10000) {
window.location.href = callback;
}
}
let prevCameraPosition = new THREE.Vector3();
let cameraStopped = true;
function checkCameraMovement() {
// Check if the current camera position is the same as the previous one
if (camera.position.equals(prevCameraPosition)) {
if (cameraStopped)
return;
cameraStopped = true;
if (callback) {
CheckTELEPORT();
}
console.log("XYZ", camera.position, camera.rotation);
} else {
// Update the previous camera position
prevCameraPosition.copy(camera.position);
cameraStopped = false;
}
}
function animate() {
requestAnimationFrame(animate);
//controls.update();
checkCameraMovement();
//console.log("pos", camera.position);
renderer.render(scene, camera);
}
animate();
}
/*
</head><!--
{{ markdown.RAW }}
--><body>
*/
document.addEventListener("DOMContentLoaded", gogogo);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment