first commit
BIN
SmartRep/attachments/RSCF_рецензия.pdf
Normal file
17458
SmartRep/attachments/papers/Fieraru_2021_CVPR.pdf
Normal file
BIN
SmartRep/attachments/качалка_грант.pdf
Normal file
374
SmartRep/attachments/тг_чат/_extracted.txt
Normal file
@@ -0,0 +1,374 @@
|
||||
[2025-07-25T11:14] Владимир Устенко:
|
||||
SmartRep: ИИ-контроль техники упражнений в спортзале на смартфоне (Предполагаемое название гранта:)
|
||||
|
||||
Описание идеи гранта:
|
||||
|
||||
Проект SmartRep направлен на разработку мобильного приложения с использованием технологий компьютерного зрения и нейросетей для анализа техники выполнения упражнений в реальном времени. Приложение будет работать автономно на смартфоне — без подключения к внешним датчикам или облачным сервисам — и предназначено для использования в спортзале.
|
||||
|
||||
Основная идея: пользователь устанавливает смартфон напротив тренажёра (фронтально или сбоку), камера фиксирует выполнение упражнения, а ИИ-модель, запущенная локально, анализирует ключевые точки тела и оценивает правильность техники. В случае ошибок в движении приложение мгновенно подаёт сигналы (вибрация, звук, сообщение на экране) с комментариями: например, «Спина округляется» или «Слишком низкий присед».
|
||||
|
||||
Проект имеет следующие особенности:
|
||||
|
||||
* Локальная работа на телефоне: используются оптимизированные, легковесные нейросети, способные работать без подключения к интернету;
|
||||
* Контроль амплитуды и стабильности: система анализирует траекторию суставов, оценивает включение целевых мышц, стабильность осанки и плавность движения;
|
||||
* Обратная связь в реальном времени: минимизирует риск травм и помогает улучшить технику;
|
||||
* Обучение модели на размеченных данных: сравнение правильных и ошибочных техник, а также идентификация компенсаторных движений;
|
||||
* Масштабируемость: возможность добавления новых упражнений, персонализации тренировок и использования в домашних условиях.
|
||||
|
||||
Ценность проекта:
|
||||
|
||||
* Технологическая новизна: real-time анализ CV без внешнего оборудования.
|
||||
* Социальная значимость: доступность ИИ-наставника без необходимости трат на персонального тренера.
|
||||
* Повышение безопасности тренировок.
|
||||
* Потенциал коммерциализации и масштабирования в международном сегменте фитнеса и digital-health..
|
||||
---
|
||||
[2025-07-25T13:43] Владимир Устенко:
|
||||
Исходник Ярослава
|
||||
---
|
||||
[2025-07-26T10:01] Богдан Павленко:
|
||||
🎮 Парень навайбкодил файтинг, где вместо геймпада — его тело.
|
||||
|
||||
Вместо обычный игры на геймпаде тут нужно махать руками перед камерой, которая отслеживает движения. Так персонаж повторяет все движения игрока 😮
|
||||
|
||||
Практически всё сделали нейросети:
|
||||
— Claude Opus спроектировал технологию;
|
||||
— Claude Sonnet написал код;
|
||||
— GitHub Copilot помог собрать готовую программу.
|
||||
|
||||
Пока работает только в Tekken, в котором за каждую конечность отвечает отдельная кнопка.
|
||||
|
||||
• Источник
|
||||
|
||||
@aiaiai
|
||||
---
|
||||
[2025-09-18T22:32] Владимир Устенко:
|
||||
Сравнительная таблица трех видов грантов. 119 самый оптимальный
|
||||
---
|
||||
[2025-09-18T22:33] Владимир Устенко:
|
||||
Тема: ИИ-контроль техники упражнений в спортзале
|
||||
|
||||
Краткое описание проекта: Проект направлен на разработку и исследование методов компьютерного зрения и нейросетевых алгоритмов для автоматизированного анализа техники выполнения силовых и функциональных упражнений. Главная цель — создание оптимизированной модели ИИ, способной в реальном времени анализировать видеопоток и выявлять ошибки техники движений. Особое внимание уделяется алгоритмической эффективности: разработанные методы должны работать корректно даже на устройствах с ограниченными вычислительными ресурсами (например, смартфонах), без использования внешних сенсоров или облачных сервисов.
|
||||
|
||||
Ожидаемые результаты от реализации проекта:
|
||||
1) Научная новизна: новые методы анализа позы и траекторий движений в реальном времени, адаптированные под низкую вычислительную сложность.
|
||||
2) Повышение безопасности тренировок: своевременное выявление ошибок техники и контроль биомеханической стабильности.
|
||||
3)Социальная значимость: возможность использования интеллектуальных методов контроля без затрат на оборудование и тренеров.
|
||||
4) Контроль биомеханических параметров: отслеживание амплитуды движений, траектории суставов, вовлечения целевых мышц и осанки.
|
||||
5) Валидация и обучение: формирование датасетов с правильными и ошибочными техниками, включая компенсаторные движения, для обучения и тестирования модели.
|
||||
---
|
||||
[2025-09-18T22:35] Yaroslav Pikalyov:
|
||||
120 оптимальный, тише едешь, дальше будешь
|
||||
---
|
||||
[2025-09-18T22:40] Владимир Устенко:
|
||||
120.pdf – «Малые научные группы»
|
||||
---
|
||||
[2025-10-20T16:15] Владимир Устенко:
|
||||
@ya_pikalyov
|
||||
---
|
||||
[2025-10-20T16:15] Владимир Устенко:
|
||||
@holyBogdan
|
||||
---
|
||||
[2025-10-21T10:34] Владимир Устенко:
|
||||
Даже чат бот за 3 вариант
|
||||
---
|
||||
[2025-10-21T11:31] Yaroslav Pikalyov:
|
||||
https://navigator.sk.ru/orn/1125924
|
||||
---
|
||||
[2025-10-21T11:50] Владимир Устенко:
|
||||
https://docs.google.com/document/d/1w2ryNwSpPc_6_H6vMxsKF9oTdwE6rcOEc36ZMesZ25E/edit?usp=sharing
|
||||
---
|
||||
[2025-10-21T11:59] Yaroslav Pikalyov:
|
||||
https://docs.google.com/document/d/12rsE3o6EXnAmRNH_AZUOQ5qelLmFHhpD-RylEW2G6UQ/edit?usp=sharing
|
||||
---
|
||||
[2025-10-21T13:34] Владимир Устенко:
|
||||
Трицепс
|
||||
---
|
||||
[2025-10-21T13:35] Владимир Устенко:
|
||||
Бицепс
|
||||
---
|
||||
[2025-10-21T13:36] Богдан Павленко:
|
||||
группа мышц спина, немного трицепс
|
||||
---
|
||||
[2025-10-21T13:36] Владимир Устенко:
|
||||
Спина (гиперэкстензия)
|
||||
---
|
||||
[2025-10-21T13:38] Богдан Павленко:
|
||||
или спина вот:
|
||||
---
|
||||
[2025-10-21T13:56] Yaroslav Pikalyov:
|
||||
Для решения обозначенных научных и технических проблем в проекте SmartRep предусмотрен комплексный подход, сочетающий методы компьютерного зрения, адаптивного машинного обучения и биомеханического моделирования. Индивидуальные различия пользователей по пропорциям тела и подвижности суставов планируется компенсировать за счёт калибровки антропометрических параметров в начальной фазе работы приложения, позволяющей автоматически масштабировать эталонные углы и амплитуды движений. Неоднозначность визуальных данных и влияние ракурса устраняются с помощью обучения нейросетевых моделей на синтетических данных, сгенерированных под различными углами обзора и условиями освещения, а также применения моделей позового детектирования с механизмом пространственного сглаживания ключевых точек. Проблема нехватки размеченных примеров решается за счёт полусупервизорного обучения, дополнения данных (data augmentation) и использования смежных наборов (Human3.6M, COCO-Pose и др.). Формализация понятия «правильности техники» достигается объединением статистических признаков с нечёткой логикой, где экспертные правила тренеров переводятся в математическую форму через интервалы допустимых углов и скоростей движения. Персонализация анализа обеспечивается внедрением механизма самообучения модели на данных конкретного пользователя и учётом его возраста, пола и уровня подготовки. Для работы на мобильных устройствах предусмотрена разработка облегченной модели с квантизацией и оптимизацией inference.
|
||||
---
|
||||
[2025-10-21T13:56] Yaroslav Pikalyov:
|
||||
Персонализация анализа обеспечивается внедрением механизма самообучения модели на данных конкретного пользователя и учётом его возраста, пола и уровня подготовки.
|
||||
|
||||
Это под вопросом
|
||||
---
|
||||
[2025-10-21T14:49] Yaroslav Pikalyov:
|
||||
Научной и методологической основой проекта SmartRep является развитие идей, реализованных в работах Д.Г. Арсеньева, М.А. Шалуховой и А.Е. Мисника, посвящённых интеллектуальным системам поддержки принятия решений в спорте и реабилитации. В указанных исследованиях (ИММВ-2024; Вестн. СамГТУ, 2024; Musculus.app) разработана архитектура СППР, включающая модули компьютерного зрения, цифрового двойника спортсмена, онтологической базы знаний и нейро-нечёткой логики для персонализации тренировочного процесса и прогнозирования риска травм. Проект SmartRep развивает данный подход, адаптируя его к условиям массового фитнеса и работе на мобильных устройствах: система использует лёгкие модели компьютерного зрения для анализа техники упражнений, формализует тренерские критерии через нечёткие правила и реализует индивидуализацию рекомендаций с учётом пола, возраста и уровня подготовки пользователя.
|
||||
---
|
||||
[2025-10-21T14:50] Владимир Устенко:
|
||||
https://docs.google.com/document/d/1w2ryNwSpPc_6_H6vMxsKF9oTdwE6rcOEc36ZMesZ25E/edit?usp=sharing
|
||||
Написал ограничения в самом низу
|
||||
---
|
||||
[2025-10-21T15:04] Богдан Павленко:
|
||||
https://openreview.net/pdf/061d45c5db0c11ad5dd49cd9a1afa6482d4a9aed.pdf?utm_source=chatgpt.com
|
||||
---
|
||||
[2025-10-21T15:10] Богдан Павленко:
|
||||
Большой обзор по теме
|
||||
---
|
||||
[2025-10-21T15:45] Владимир Устенко:
|
||||
https://docs.google.com/document/d/1w2ryNwSpPc_6_H6vMxsKF9oTdwE6rcOEc36ZMesZ25E/edit?tab=t.0
|
||||
---
|
||||
[2025-10-21T17:09] Yaroslav Pikalyov:
|
||||
1. Разработка интеллектуальной системы анализа техники выполнения физических упражнений для улучшения и поддержания физической формы на основе технологий компьютерного зрения.
|
||||
|
||||
|
||||
2. Разработка программного комплекса SmartRep для автоматизированного контроля правильности выполнения физических упражнений с использованием технологий искусственного интеллекта.
|
||||
|
||||
|
||||
3. Разработка системы компьютерного зрения для оценки корректности выполнения упражнений с отягощениями и на тренажёрах, направленных на поддержание физической формы.
|
||||
|
||||
|
||||
4. Разработка интеллектуальной системы визуального анализа движений человека при выполнении физических упражнений в фитнес-зале.
|
||||
|
||||
|
||||
5. Разработка нейро-нечёткой системы анализа и контроля техники выполнения упражнений для повышения эффективности тренировок и предотвращения травм.
|
||||
---
|
||||
[2025-10-21T17:12] Yaroslav Pikalyov:
|
||||
Ну или свой вариант предложите
|
||||
---
|
||||
[2025-10-21T17:19] Yaroslav Pikalyov:
|
||||
https://chatgpt.com/share/68f79679-e8a4-8009-9842-191b431a4ca9
|
||||
---
|
||||
[2025-10-22T03:18] Yaroslav Pikalyov:
|
||||
Современные подходы к контролю техники выполнения физических упражнений в фитнес-центрах и спортивных залах в значительной степени зависят от квалификации тренера и субъективной визуальной оценки. При этом качество выполнения движений напрямую влияет на эффективность тренировочного процесса и уровень травматизма. Отсутствие доступных и объективных инструментов анализа движений вне профессиональных лабораторных условий делает невозможным системный контроль техники для широкого круга пользователей, занимающихся самостоятельно или с минимальным контролем тренера.
|
||||
Цель проекта заключается в разработке интеллектуальной системы анализа и контроля техники выполнения упражнений с использованием технологий компьютерного зрения и искусственного интеллекта, реализованной в виде мобильного приложения. Система обеспечивает автоматическую оценку правильности выполнения базовых упражнений на тренажёрах и со свободными весами с помощью видеозаписи, получаемой с камеры смартфона, без необходимости использования дополнительных сенсоров и специализированного оборудования.
|
||||
Проект решает актуальную научно-техническую задачу — повышение точности и объективности оценки движений человека в неконтролируемых условиях съёмки (вариации углов, освещения, масштаба и позы) при минимальных вычислительных ресурсах (edge-устройства). В основе системы лежит модуль компьютерного зрения, выделяющий ключевые точки скелета человека на видео, и аналитический модуль, который на основе геометрических взаимосвязей между суставами вычисляет углы и динамические параметры движения.
|
||||
Дополнительно в системе применяется нейро-нечёткий модуль принятия решений, формирующий экспертные правила интерпретации данных: система не только фиксирует отклонения в траектории, но и классифицирует типичные ошибки техники, формируя рекомендации по их исправлению. Такой подход позволяет объединить преимущества статистического обучения и знаний, формализованных в виде лингвистических правил.
|
||||
Научная новизна проекта заключается в разработке метода анализа биомеханических паттернов упражнений на основе визуальных данных и нечеткой логики, обеспечивающего интерпретируемость и адаптивность модели к индивидуальным особенностям пользователя, а также работающий в режиме реального времени на мобильных устройствах. В отличие от существующих коммерческих решений, основанных на жёстких шаблонах поз, система SmartRep способна учитывать вариативность техники, зависимость угловых характеристик от антропометрических данных и плавно адаптировать критерии оценки под конкретного пользователя.
|
||||
Научная занчимость заключается в:
|
||||
- повышении объективности и точности оценки техники движений;
|
||||
- расширении научных представлений о применении методов ИИ в спортивной биомеханике;
|
||||
- формировании базы знаний и алгоритмических решений, применимые в других областях (реабилитация, эргономика, медицина труда).
|
||||
---
|
||||
[2025-10-22T03:18] Yaroslav Pikalyov:
|
||||
#annotation_project_old
|
||||
---
|
||||
[2025-10-22T03:34] Yaroslav Pikalyov:
|
||||
@u_Vova @holyBogdan нужны сканы РИДов
|
||||
---
|
||||
[2025-10-22T03:49] Yaroslav Pikalyov:
|
||||
У Натальи Николаевны узнать нужно гос регистр номера и года проведения:
|
||||
|
||||
1) Разработка научно-теоретических основ создания роботизированных компьютерно-аппаратно-механических комплексов, способных к восприятию и переработке звуковой, сетевой, визуальной и речевой информации;
|
||||
|
||||
|
||||
2. Разработка методов распознавания слитно произнесённых фраз на основе пофонемного анализа речи
|
||||
---
|
||||
[2025-10-22T03:54] Yaroslav Pikalyov:
|
||||
Вроде такого, ток ещё годы нужны начала и конца «Исследование и разработка методов семантического анализа и интерпретации потоков данных интеллектктуальнымисистемами», № госрегистрации 0118D000003, УтУтверждена приказом Министерства образования и науки ДНР № 1272от 27.11.2017
|
||||
---
|
||||
[2025-10-22T09:11] Yaroslav Pikalyov:
|
||||
@u_Vova @holyBogdan сколько статей и тезисов тоже напишите
|
||||
---
|
||||
[2025-10-22T09:11] Yaroslav Pikalyov:
|
||||
Угарнул с Владимира, в графе соответствие кадрового состава написал "Соответствуют" 😭
|
||||
---
|
||||
[2025-10-22T09:16] Yaroslav Pikalyov:
|
||||
@u_Vova можете, если хотите редактировать в форме там...
|
||||
Я если что засейвил
|
||||
---
|
||||
[2025-10-22T09:16] Yaroslav Pikalyov:
|
||||
Вот
|
||||
---
|
||||
[2025-10-22T09:20] Yaroslav Pikalyov:
|
||||
Из списка необходимого оборудования вычеркните доп станцию машинного обучения, я забыл что здесь бюджет ограничен
|
||||
---
|
||||
[2025-10-22T10:03] Богдан Павленко:
|
||||
Года проведения этих тем? Или чем являются эти 2 пункта?
|
||||
---
|
||||
[2025-10-22T10:08] Yaroslav Pikalyov:
|
||||
Что тут непонятного
|
||||
---
|
||||
[2025-10-22T10:09] Yaroslav Pikalyov:
|
||||
И год начала и конца каждой
|
||||
---
|
||||
[2025-10-22T10:37] Владимир Устенко:
|
||||
5 тезисов 2 статьи
|
||||
---
|
||||
[2025-10-22T10:40] Богдан Павленко:
|
||||
3 статьи, 3 тезисов
|
||||
---
|
||||
[2025-10-22T15:26] Владимир Устенко:
|
||||
Методы и подходы для пункта 4.6
|
||||
---
|
||||
[2025-10-22T15:34] Yaroslav Pikalyov:
|
||||
Научный коллектив проекта располагает подтверждённым заделом в области искусственного интеллекта, машинного обучения и компьютерного зрения, сформированным в рамках выполнения фундаментальной НИР ФГБНУ «ИПИИ» (код FREN-2024-0002, № госрегистрации 124061400003-5) «Извлечение семантической информации из изображений для автономных систем навигации беспилотных летательных аппаратов» (2024 – 2026 гг.).
|
||||
|
||||
В ходе исследований разработаны:
|
||||
– методика формирования сбалансированных аннотированных наборов данных для задач распознавания объектов и построения семантических графов сцен;
|
||||
– архитектуры нейронных сетей для обнаружения объектов в реальном времени и перекрёстной геолокализации по данным БПЛА и спутников;
|
||||
– инструментарий для автоматизированного аннотирования данных и интерпретации мультимодальных потоков информации;
|
||||
– методы построения триплетных моделей распознавания и генерации графов сцен, применимые в системах автономной навигации и распознавания действий человека.
|
||||
|
||||
Коллектив имеет опыт выполнения НИР в области анализа изображений, распознавания речи и семантической интерпретации данных. Результаты отражены в публикациях в изданиях РИНЦ, Scopus, WOS и включают работы по разработке методов классификации изображений, языковых моделей, распознавания слитной речи и автоматической генерации транскрипций.
|
||||
|
||||
Ключевые публикации:
|
||||
– Пикалёв Я. С., Ермоленко Т. В. On the Issue of Continuous Speech Recognition // Integral Robot Technologies and Speech Behavior. – 2024. – P. 155–180. ISBN 1-5275-5436-8.
|
||||
– Bondarchuk V. V., Kravchenko N. M., Pikalyov Ya. S. Indirect Criteria Algorithm for the Control of a Cognitive Neural Network // Practice Oriented Science: UAE – Russia – India. – 2024. – DOI 10.34660/INF.2024.32.41.030.
|
||||
– Пикалёв Я. С., Ермоленко Т. В. Система автоматического распознавания слитной русской речи на основе глубоких нейросетей // Речевые технологии. – 2021. – № 1–2. – С. 3–18.
|
||||
|
||||
– Бондаренко В. И., Ермоленко Т. В. Анализ эффективности глубоких языковых моделей для задачи определения тональности русскоязычных текстов // Проблемы искусственного интеллекта. – 2024. – № 1(32). – С. 51–62.
|
||||
|
||||
Имеются результаты интеллектуальной деятельности:
|
||||
– № 2024692488 — Программный комплекс для аннотирования данных (Устенко В. Ю.);
|
||||
– № 2024693206 — Программный комплекс для автоматизированного сбора аэрофотоснимков (Павленко Б. В.).
|
||||
|
||||
Научный коллектив регулярно представляет результаты на международных конференциях «Искусственный интеллект: теоретические аспекты и практическое применение» (2020 – 2024) и «Донецкие чтения» (2017 – 2024), что способствует укреплению научной школы ФГБНУ «ИПИИ» в области ИИ.
|
||||
|
||||
|
||||
Совокупность накопленных теоретических и практических результатов — в том числе методов распознавания образов, мультимодальной интеграции и разработки нейронных архитектур — обеспечивает высокий уровень готовности к реализации проекта SmartRep, направленного на применение технологий компьютерного зрения и нечёткой логики для анализа движений человека.
|
||||
---
|
||||
[2025-10-22T15:35] Yaroslav Pikalyov:
|
||||
Научный коллектив проекта имеет большой опыт реализации научных проектов, связанных с разработкой
|
||||
специализированного программного обеспечения с применением математического моделирования для
|
||||
промышленного производства. Основные результаты по данной тематике отражены в публикациях [1-7].
|
||||
Применение методов машинного обучения в задачах управления и принятия решений в хозяйственной деятельности и
|
||||
медицине отражено в работах членов научного коллектива [8-9], [15-18]. В рамках этих исследований разработаны
|
||||
предсказательные модели энергопотребления на предприятиях угольной промышленности, использующие
|
||||
автокорреляционные методы, модели оценки вероятности появления ДТП, основанные на методах машинного
|
||||
обучения, обоснован метод, использующий ResNet и API-Net, для классификации товаров, имеющих похожие упаковки.
|
||||
Авторами проекта разработана методика обработки и структурирования данных фондового рынка для использования
|
||||
прогностических моделей машинного обучения
|
||||
Задел коллектива проекта в направлении тематики технического зрения и распознавания изображений в режиме
|
||||
реального времени отражен, в частности, в публикациях [13-14], [17, 20,21]. Исследованы возможности использования
|
||||
глубоких нейронных сетей для задачи классификации изображений на устройствах с ограниченной вычислительной
|
||||
мощностью.
|
||||
Также авторами проекта ведется активная работа в области применения искусственного интеллекта, глубокого
|
||||
обучения в задачах обработки естественного языка [10-12] и распознавания речи [19, 22].
|
||||
Научный коллектив имеет опыт организации и проведения научных мероприятий: международных научных
|
||||
конференций "Донецкие чтения: образование, наука, инновации, культура и вызовы современности" (2017-2024);
|
||||
международных научных круглых столов "Искусственный интеллект: теоретические аспекты, практическое
|
||||
применение" (2020-2024).
|
||||
Заявка № 25-21-20602 Страница 22 из 27
|
||||
Список источников:
|
||||
1. Бондаренко В.И. Программная система для моделирования процесса тепломассопереноса при разливке и
|
||||
затвердевании стали / В.И. Бондаренко // Вестник Донецкого национального университета. Серия А. Естественные
|
||||
науки. – 2009. – № 2. – С. 103-110.
|
||||
2. Программный продукт «Математическое моделирование гидродинамических и теплообменных процессов в
|
||||
стальных слитках» / Ф.В. Недопекин, В.В. Белоусов, В.И. Бондаренко, В.М. Кондратенко. – Украина: Свидетельство о
|
||||
регистрации авторского права на произведение №47898, 2013.
|
||||
3. Бондаренко В.И. Математическое обеспечение и компьютерные технологии для моделирования гидродинамических
|
||||
и теплофизических процессов в металлургии: Монография / В.И. Бондаренко, В.Ф. Комаров, Ф.В. Недопекин, В.М.
|
||||
Мелихов, В.В. Белоусов. – Донецк: Юго-Восток, 2013. – 210 с.
|
||||
4. Bondarenko V.I. Visualization of Process of Wheel Steel High Ingots Simulation / V.I. Bondarenko, V. V Bodryaga, F. V
|
||||
Nedopekin, V. V Belousov // IOP Conference Series: Materials Science and Engineering. – 2017. – Т. 287.
|
||||
5. Bondarenko V.I. Using MVC pattern in the software development to simulate production of high cylindrical steel ingots / V.I.
|
||||
Bondarenko, V.V. Bilousov, F.V. Nedopekin, V.V. Bodriaha, L.V. Antropova // Journal of Crystal Growth. – 2019. – Т. 526. – С.
|
||||
125240.
|
||||
6. Винник А.О. Программный комплекс мониторинга энергопотребления на предприятиях угольной промышленности /
|
||||
А.О. Винник, А.-А.М. Мартыненко, В.И. Бондаренко // Вестник Донецкого национального университета. Серия Г.
|
||||
Технические науки. – 2021. – № 2. – С. 33-38.
|
||||
7. Бондаренко В.И. Разработка и реализация макета бионического протеза кисти руки / В.И. Бондаренко, А.И.
|
||||
Горбатенкова // Вестник Донецкого национального университета. Серия Г. Технические науки. – 2022. – № 4. – С. 27-
|
||||
32.
|
||||
8. Беспалова С.В. Построение регрессионных моделей режимов работы водораспределительных сетей с помощью
|
||||
методов регуляризации и анализа главных компонент / С.В. Беспалова, С.М. Романчук, Т.В. Ермоленко, В.И. Бондаренко
|
||||
// Информатика и кибернетика. – 2019. – Т. 2 (16). – С. 35-49.
|
||||
9. Беспалова С.В. Построение предсказательных моделей параметров давления воды в водораспределительных сетях с
|
||||
---
|
||||
[2025-10-22T15:35] Yaroslav Pikalyov:
|
||||
помощью методов машинного обучения / С.В. Беспалова, С.М. Романчук, Т.В. Ермоленко, В.И. Бондаренко // Проблемы
|
||||
искусственного интеллекта. – 2019. – Т. 2(13). – С. 24-38.
|
||||
10. Бондаренко В.И. Классификация научных текстов с помощью методов глубокого машинного обучения / В.И.
|
||||
Бондаренко // Вестник Донецкого национального университета. Серия Г. Технические науки. – 2021. – № 3. – С. 69-
|
||||
77.
|
||||
11. Ермоленко Т.В. Разработка алгоритмов и языковых моделей для мультиязычной системы автоматического
|
||||
аннотирования текстов разных жанров / Т.В. Ермоленко, В.И. Бондаренко, Я.C. Пикалёв // Вестник Донецкого
|
||||
национального университета. Серия Г. Технические науки. – 2023. – № 2. – С. 22-42.
|
||||
12. Бондаренко В.И. Анализ эффективности глубоких языковых моделей для задачи определения тональности
|
||||
русскоязычных текстов / В.И. Бондаренко, В.О. Елисеев, Т.В. Ермоленко // Проблемы искусственного интеллекта. –
|
||||
2024. – № 1 (32). – С. 51-62.
|
||||
13. Павленко Б.В. Использование модели YOLO в современных задачах распознавания в реальном времени на примере
|
||||
военной и космической отраслей / Б.В. Павленко, В.И. Бондаренко, А.-А.М. Мартыненко // Вестник Донецкого
|
||||
государственного университета. Серия Г: Технические Науки. – 2023. – № 4. – С. 55-65.
|
||||
14. Бондаренко В.И. Применение методов глубокого обучения для повышения качества изображения / В.И.
|
||||
Бондаренко, А.В. Федчук // Вестник Донецкого национального университета. Серия Г. Технические науки. – 2022. – №
|
||||
4. – С. 39-44.
|
||||
15. Ермоленко Т.В. Исследование эффективности предсказательных моделей для системы анализа и мониторинга
|
||||
энергопотребления на предприятиях угольной промышленности / Т.В. Ермоленко, В.Н. Котенко, А.О. Винник А.О. //
|
||||
Проблемы искусственного интеллекта. 2022. № 4 (27). С. 25-34.
|
||||
16. Конончук Э.В. Модели машинного обучения для оценки вероятности появления ДТП и его серьезности / Э.В.
|
||||
Конончук. Т.В. Ермоленко Т.В., Т.О. Шишунов // Проблемы искусственного интеллекта. 2022. № 1 (24). С. 4-12.
|
||||
17. Ермоленко Т.В. Анализ эффективности архитектур глубоких нейросетей для классификации изображении товаров /
|
||||
Т.В. Ермоленко, И.Е. Самородский // Проблемы искусственного интеллекта. 2022. № 1 (24). С. 54-64.
|
||||
18. Ермоленко Т.В. Классификация аномалий сердцебиения с помощью глубокого обучения / Т.В. Ермоленко, Д.В. Ролик
|
||||
// Проблемы искусственного интеллекта. 2022. № 1 (24). С. 40-53.
|
||||
19. Ермоленко Т.В. Система автоматического распознавания слитной русской речи на основе глубоких нейросетей /
|
||||
Т.В. Ермоленко, Я.С. Пикалёв // Речевые технологии. 2021. № 1-2. С. 3-18.
|
||||
20. Пикалёв Я.С. О нейронных архитектурах извлечения признаков для задачи распознавания объектов на устройствах с
|
||||
Заявка № 25-21-20602 Страница 23 из 27
|
||||
ограниченной вычислительной мощностью // Я.С. Пикалёв, Т.В. Ермоленко // Проблемы искусственного интеллекта.
|
||||
2023. № 3 (30). С. 44-54.
|
||||
21. Pikalyov Ya.S. About neural architectures of feature extraction for the problem of object 1 recognition for the problem of
|
||||
object recognition on devices with limited computing power / Ya.S. Pikalyov, T.V. Yermolenko // Вестник Томского
|
||||
государственного университета. Математика и механика. 2023. № 3. С. 30.
|
||||
22. Pikalyov, Ya. Chapter Five. On the Issue of Continuous Speech Recognition / Yaroslav Pikalyov, Tatyana Yermolenko //
|
||||
Integral Robot Technologies and Speech Behavior. – 2024. – P. 155-180.
|
||||
---
|
||||
[2025-10-22T15:43] Богдан Павленко:
|
||||
+ к разработанному в ходе исследований можно добавить:
|
||||
Структура метаданных сегментов карт навигации дрона
|
||||
---
|
||||
[2025-10-23T14:01] Владимир Устенко:
|
||||
https://docs.google.com/document/d/1w2ryNwSpPc_6_H6vMxsKF9oTdwE6rcOEc36ZMesZ25E/edit?usp=sharing
|
||||
---
|
||||
[2025-10-23T14:16] Владимир Устенко:
|
||||
33. Устенко, В. Ю. Сравнение стратегий мозаичной аугментации для оценки угла крена беспилотника по изображению с камеры [Текст] / В. Ю. Устенко, Б. В. Павленко // XVIII Всероссийская мультиконференция по проблемам управления (МКПУ–2025) : материалы мультиконференции (Тула, 15 сентября – 20 сентября 2025 г.) : в 4 т. Т. 1 Робототехника и мехатроника (РиМ – 2025) / под ред. академика РАН Ф.Л. Черноусько. — Тула : Изд-во ТулГУ, 2025. — 300 с. – С. 271-0273. – ISBN 978-5-7679-5716-3, ISBN 978-5-7679-5709-5 (Т. 1)
|
||||
---
|
||||
[2025-10-23T14:16] Владимир Устенко:
|
||||
ТУла
|
||||
---
|
||||
[2026-03-27T16:03] Yaroslav Pikalyov:
|
||||
🌟 Kimodo: диффузионная модель для генерации 3D-движений людей.
|
||||
|
||||
NVIDIA выложила в открытый доступ проект Kimodo - генеративную модель на основе диффузии, которая создает реалистичные трехмерные движения для человеческих и робототехнических скелетов.
|
||||
|
||||
Kimodo принимает на вход текстовые промпты и ключевые позы всего тела, позиции и вращения конечностей, двухмерные пути и контрольные точки. Это позволяет точно управлять генерацией: от общего описания наподобие "персонаж идет и садится на стул" до детального контроля положения рук и ног в кадрах.
|
||||
|
||||
Всего доступно 5 вариантов модели для 3 типов скелетов: SOMA, SMPL-X и Unitree G1. Первые два ориентированы на анимацию аватаров, третий - на робота Unitree G1.
|
||||
|
||||
Модели, обученные на полном датасете Bones Rigplay 1 (700 часов), NVIDIA рекомендует как основные рабочие.
|
||||
|
||||
Варианты на сете BONES-SEED (288 часов) предназначены для бенчмаркинга и сравнения с собственными разработками.
|
||||
|
||||
Для работы с Kimodo предусмотрены 3 интерфейса:
|
||||
|
||||
🟢Интерактивное веб-демо с таймлайн-редактором;
|
||||
🟢CLI-утилита для пакетной генерации;
|
||||
🟢Python API для тонкой настройки .
|
||||
|
||||
Под инференс потребуется около 17 ГБ видеопамяти, модели запускали на RTX 3090, RTX 4090 и NVIDIA A100.
|
||||
|
||||
🟡 Интеграция с робототехническим стеком NVIDIA.
|
||||
|
||||
ProtoMotions позволяет брать сгенерированные движения и обучать на них физически корректные политики управления в GPU-ускоренной симуляции — как для аватаров, так и для Unitree G1.
|
||||
|
||||
Через General Motion Retargeting движения, созданные на скелете SMPL-X, можно перенести на произвольных роботов.
|
||||
|
||||
|
||||
📌Лицензирование:
|
||||
|
||||
Код проекта под Apache 2.0, большинство моделей под NVIDIA Open Model License.
|
||||
|
||||
Вариант SMPL-X имеет более ограниченную NVIDIA R&D Model License, она допускает только исследовательское применение.
|
||||
|
||||
🟡Набор моделей
|
||||
🟡Техотчет
|
||||
🖥Github
|
||||
|
||||
|
||||
@ai_machinelearning_big_data
|
||||
|
||||
#AI #ML #Robotics #Kimodo #NVIDIA
|
||||
---
|
||||
752
SmartRep/attachments/тг_чат/css/style.css
Normal file
@@ -0,0 +1,752 @@
|
||||
body {
|
||||
margin: 0;
|
||||
font: 12px/18px 'Open Sans',"Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif;
|
||||
}
|
||||
strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
code, kbd, pre, samp {
|
||||
font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
|
||||
}
|
||||
code {
|
||||
padding: 2px 4px;
|
||||
font-size: 90%;
|
||||
color: #c7254e;
|
||||
background-color: #f9f2f4;
|
||||
border-radius: 4px;
|
||||
}
|
||||
pre {
|
||||
display: block;
|
||||
margin: 0;
|
||||
line-height: 1.42857143;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
color: #333;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 4px;
|
||||
overflow: auto;
|
||||
padding: 3px;
|
||||
border: 1px solid #eee;
|
||||
max-height: none;
|
||||
font-size: inherit;
|
||||
}
|
||||
.clearfix:after {
|
||||
content: " ";
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
}
|
||||
.pull_left {
|
||||
float: left;
|
||||
}
|
||||
.pull_right {
|
||||
float: right;
|
||||
}
|
||||
.page_wrap {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
.page_wrap a {
|
||||
color: #168acd;
|
||||
text-decoration: none;
|
||||
}
|
||||
.page_wrap a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.page_header {
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
background-color: #ffffff;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid #e3e6e8;
|
||||
}
|
||||
.page_header .content {
|
||||
width: 480px;
|
||||
margin: 0 auto;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
.page_header a.content {
|
||||
background-repeat: no-repeat;
|
||||
background-position: 24px 21px;
|
||||
background-size: 24px 24px;
|
||||
}
|
||||
.bold {
|
||||
color: #212121;
|
||||
font-weight: 700;
|
||||
}
|
||||
.details {
|
||||
color: #70777b;
|
||||
}
|
||||
.page_header .content .text {
|
||||
padding: 24px 24px 22px 24px;
|
||||
font-size: 22px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.page_header a.content .text {
|
||||
padding: 24px 24px 22px 82px;
|
||||
}
|
||||
.page_body {
|
||||
padding-top: 64px;
|
||||
width: 480px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.page_about {
|
||||
padding: 24px 24px;
|
||||
}
|
||||
.with_divider {
|
||||
border-top: 1px solid #e3e6e8;
|
||||
}
|
||||
.userpic_link {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
.userpic_link:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.userpic {
|
||||
display: block;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.story {
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.userpic .initials {
|
||||
display: block;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
.color_red,
|
||||
.userpic1,
|
||||
.media_call .fill,
|
||||
.media_file .fill,
|
||||
.media_live_location .fill {
|
||||
background-color: #ff5555;
|
||||
}
|
||||
.color_green,
|
||||
.userpic2,
|
||||
.media_call.success .fill,
|
||||
.media_photo .fill {
|
||||
background-color: #64bf47;
|
||||
}
|
||||
.color_yellow,
|
||||
.userpic3,
|
||||
.media_venue .fill {
|
||||
background-color: #ffab00;
|
||||
}
|
||||
.color_blue,
|
||||
.userpic4,
|
||||
.media_audio_file .fill,
|
||||
.media_voice_message .fill {
|
||||
background-color: #4f9cd9;
|
||||
}
|
||||
.color_purple,
|
||||
.userpic5,
|
||||
.media_game .fill {
|
||||
background-color: #9884e8;
|
||||
}
|
||||
.color_pink,
|
||||
.userpic6,
|
||||
.media_invoice .fill {
|
||||
background-color: #e671a5;
|
||||
}
|
||||
.color_sea,
|
||||
.userpic7,
|
||||
.media_location .fill,
|
||||
.media_video .fill {
|
||||
background-color: #47bcd1;
|
||||
}
|
||||
.color_orange,
|
||||
.userpic8,
|
||||
.media_contact .fill {
|
||||
background-color: #ff8c44;
|
||||
}
|
||||
.personal_info {
|
||||
padding: 24px;
|
||||
}
|
||||
.personal_info .userpic .initials {
|
||||
font-size: 30px;
|
||||
}
|
||||
.personal_info .rows {
|
||||
float: left;
|
||||
padding-right: 24px;
|
||||
}
|
||||
.personal_info .names {
|
||||
width: 164px;
|
||||
}
|
||||
.personal_info .info {
|
||||
width: 124px;
|
||||
}
|
||||
.personal_info .bio {
|
||||
width: 400px;
|
||||
}
|
||||
.personal_info .row {
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
a.block_link {
|
||||
display: block;
|
||||
text-decoration: none !important;
|
||||
border-radius: 4px;
|
||||
}
|
||||
a.block_link:hover {
|
||||
text-decoration: none !important;
|
||||
background-color: #f5f7f8;
|
||||
}
|
||||
a.expanded {
|
||||
padding: 2px 8px;
|
||||
margin: -2px -8px;
|
||||
}
|
||||
.sections {
|
||||
padding: 11px 0;
|
||||
}
|
||||
.section {
|
||||
height: 48px;
|
||||
background-position: 24px 12px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 24px 24px;
|
||||
}
|
||||
.section .counter {
|
||||
float: right;
|
||||
padding: 14px 24px 0;
|
||||
font-size: 15px;
|
||||
}
|
||||
.section .label {
|
||||
padding: 15px 0 0 82px;
|
||||
font-size: 15px;
|
||||
}
|
||||
.list_page .page_about {
|
||||
padding: 16px 24px 0;
|
||||
font-size: 11px;
|
||||
}
|
||||
.list_page .entry_list {
|
||||
padding: 16px 0;
|
||||
}
|
||||
.list_page .entry {
|
||||
padding: 10px 16px;
|
||||
}
|
||||
.list_page .entry .userpic .initials {
|
||||
font-size: 18px;
|
||||
}
|
||||
.list_page .entry .body {
|
||||
margin-left: 66px;
|
||||
}
|
||||
.list_page .entry .name {
|
||||
padding: 4px 0 2px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.list_page .entry .subname {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.list_page .entry .details_entry {
|
||||
padding-top: 4px;
|
||||
}
|
||||
.list_page .entry .info {
|
||||
font-size: 11px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.history {
|
||||
padding: 16px 0;
|
||||
}
|
||||
.message {
|
||||
margin: 0 -10px;
|
||||
transition: background-color 2.0s ease;
|
||||
}
|
||||
div.selected {
|
||||
background-color: rgba(242,246,250,255);
|
||||
transition: background-color 0.5s ease;
|
||||
}
|
||||
.service {
|
||||
padding: 10px 24px;
|
||||
}
|
||||
.service .body {
|
||||
text-align: center;
|
||||
}
|
||||
.service .userpic_wrap {
|
||||
padding-top: 10px;
|
||||
}
|
||||
.service .userpic {
|
||||
margin: 0 auto;
|
||||
}
|
||||
.service .userpic .initials {
|
||||
font-size: 24px;
|
||||
}
|
||||
.message .userpic .initials {
|
||||
font-size: 16px;
|
||||
}
|
||||
.default {
|
||||
padding: 10px;
|
||||
}
|
||||
.default.joined {
|
||||
margin-top: -10px;
|
||||
}
|
||||
.default .from_name {
|
||||
color: #3892db;
|
||||
font-weight: 700;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
.default .from_name .details {
|
||||
font-weight: normal;
|
||||
}
|
||||
.default .body {
|
||||
margin-left: 60px;
|
||||
}
|
||||
.default .text {
|
||||
word-wrap: break-word;
|
||||
line-height: 150%;
|
||||
unicode-bidi: plaintext;
|
||||
text-align: start;
|
||||
}
|
||||
.default .reply_to,
|
||||
.default .media_wrap {
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
.default .media {
|
||||
margin: 0 -10px;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
.default .media .fill,
|
||||
.default .media .thumb {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.default .media .fill {
|
||||
background-repeat: no-repeat;
|
||||
background-position: 12px 12px;
|
||||
background-size: 24px 24px;
|
||||
}
|
||||
.default .media .title,
|
||||
.default .media_poll .question {
|
||||
padding-top: 4px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.default .media .description {
|
||||
color: #000000;
|
||||
padding-top: 4px;
|
||||
font-size: 13px;
|
||||
}
|
||||
.default .media .status {
|
||||
padding-top: 4px;
|
||||
font-size: 13px;
|
||||
}
|
||||
.default .video_file_wrap,
|
||||
.default .animated_wrap {
|
||||
position: relative;
|
||||
}
|
||||
.default .video_file,
|
||||
.default .animated,
|
||||
.default .photo,
|
||||
.default .sticker {
|
||||
display: block;
|
||||
}
|
||||
.video_duration {
|
||||
background: rgba(0, 0, 0, .4);
|
||||
padding: 0px 5px;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
border-radius: 2px;
|
||||
right: 3px;
|
||||
bottom: 3px;
|
||||
color: #ffffff;
|
||||
font-size: 11px;
|
||||
}
|
||||
.video_play_bg {
|
||||
background: rgba(0, 0, 0, .4);
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
line-height: 0;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
margin: -20px auto 0 -20px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
.video_play {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
margin-top: -9px;
|
||||
z-index: 1;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid;
|
||||
border-width: 9px 0 9px 14px;
|
||||
border-color: transparent transparent transparent #fff;
|
||||
}
|
||||
.gif_play {
|
||||
font-weight: 700;
|
||||
color: #FFF;
|
||||
display: block;
|
||||
line-height: 40px;
|
||||
font-size: 13px;
|
||||
text-align: center;
|
||||
}
|
||||
.pagination {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.toast_container {
|
||||
position: fixed;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
opacity: 0;
|
||||
transition: opacity 3.0s ease;
|
||||
}
|
||||
.toast_body {
|
||||
margin: 0 -50%;
|
||||
float: left;
|
||||
border-radius: 15px;
|
||||
padding: 10px 20px;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
color: #ffffff;
|
||||
}
|
||||
div.toast_shown {
|
||||
opacity: 1;
|
||||
transition: opacity 0.4s ease;
|
||||
}
|
||||
|
||||
.section.calls {
|
||||
background-image: url(../images/section_calls.png);
|
||||
}
|
||||
.section.chats {
|
||||
background-image: url(../images/section_chats.png);
|
||||
}
|
||||
.section.contacts {
|
||||
background-image: url(../images/section_contacts.png);
|
||||
}
|
||||
.section.frequent {
|
||||
background-image: url(../images/section_frequent.png);
|
||||
}
|
||||
.section.photos {
|
||||
background-image: url(../images/section_photos.png);
|
||||
}
|
||||
.section.sessions {
|
||||
background-image: url(../images/section_sessions.png);
|
||||
}
|
||||
.section.stories {
|
||||
background-image: url(../images/section_stories.png);
|
||||
}
|
||||
.section.music {
|
||||
background-image: url(../images/section_music.png);
|
||||
}
|
||||
.section.web {
|
||||
background-image: url(../images/section_web.png);
|
||||
}
|
||||
.section.other {
|
||||
background-image: url(../images/section_other.png)
|
||||
}
|
||||
.page_header a.content {
|
||||
background-image: url(../images/back.png);
|
||||
}
|
||||
.media_call .fill {
|
||||
background-image: url(../images/media_call.png)
|
||||
}
|
||||
.media_contact .fill {
|
||||
background-image: url(../images/media_contact.png)
|
||||
}
|
||||
.media_file .fill {
|
||||
background-image: url(../images/media_file.png)
|
||||
}
|
||||
.media_game .fill {
|
||||
background-image: url(../images/media_game.png)
|
||||
}
|
||||
.media_live_location .fill,
|
||||
.media_location .fill,
|
||||
.media_venue .fill {
|
||||
background-image: url(../images/media_location.png)
|
||||
}
|
||||
.media_audio_file .fill {
|
||||
background-image: url(../images/media_music.png)
|
||||
}
|
||||
.media_invoice .fill {
|
||||
background-image: url(../images/media_shop.png)
|
||||
}
|
||||
.media_voice_message .fill {
|
||||
background-image: url(../images/media_voice.png)
|
||||
}
|
||||
.media_photo .fill {
|
||||
background-image: url(../images/media_photo.png)
|
||||
}
|
||||
.media_video .fill {
|
||||
background-image: url(../images/media_video.png)
|
||||
}
|
||||
.audio_icon {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
background-color: #4f9cd9;
|
||||
background-image: url(../images/media_music.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 12px 12px;
|
||||
background-size: 24px 24px;
|
||||
}
|
||||
|
||||
@media only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
|
||||
.section.calls {
|
||||
background-image: url(../images/section_calls@2x.png);
|
||||
}
|
||||
.section.chats {
|
||||
background-image: url(../images/section_chats@2x.png);
|
||||
}
|
||||
.section.contacts {
|
||||
background-image: url(../images/section_contacts@2x.png);
|
||||
}
|
||||
.section.frequent {
|
||||
background-image: url(../images/section_frequent@2x.png);
|
||||
}
|
||||
.section.photos {
|
||||
background-image: url(../images/section_photos@2x.png);
|
||||
}
|
||||
.section.sessions {
|
||||
background-image: url(../images/section_sessions@2x.png);
|
||||
}
|
||||
.section.stories {
|
||||
background-image: url(../images/section_stories@2x.png);
|
||||
}
|
||||
.section.music {
|
||||
background-image: url(../images/section_music@2x.png);
|
||||
}
|
||||
.section.web {
|
||||
background-image: url(../images/section_web@2x.png);
|
||||
}
|
||||
.section.other {
|
||||
background-image: url(../images/section_other@2x.png);
|
||||
}
|
||||
.page_header a.content {
|
||||
background-image: url(../images/back@2x.png);
|
||||
}
|
||||
.media_call .fill {
|
||||
background-image: url(../images/media_call@2x.png)
|
||||
}
|
||||
.media_contact .fill {
|
||||
background-image: url(../images/media_contact@2x.png)
|
||||
}
|
||||
.media_file .fill {
|
||||
background-image: url(../images/media_file@2x.png)
|
||||
}
|
||||
.media_game .fill {
|
||||
background-image: url(../images/media_game@2x.png)
|
||||
}
|
||||
.media_live_location .fill,
|
||||
.media_location .fill,
|
||||
.media_venue .fill {
|
||||
background-image: url(../images/media_location@2x.png)
|
||||
}
|
||||
.media_audio_file .fill {
|
||||
background-image: url(../images/media_music@2x.png)
|
||||
}
|
||||
.media_invoice .fill {
|
||||
background-image: url(../images/media_shop@2x.png)
|
||||
}
|
||||
.media_voice_message .fill {
|
||||
background-image: url(../images/media_voice@2x.png)
|
||||
}
|
||||
.media_photo .fill {
|
||||
background-image: url(../images/media_photo@2x.png)
|
||||
}
|
||||
.media_video .fill {
|
||||
background-image: url(../images/media_video@2x.png)
|
||||
}
|
||||
.audio_icon {
|
||||
background-image: url(../images/media_music@2x.png);
|
||||
}
|
||||
}
|
||||
|
||||
.spoiler {
|
||||
background: #e8e8e8;
|
||||
}
|
||||
.spoiler.hidden {
|
||||
background: #a9a9a9;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.spoiler.hidden span {
|
||||
opacity: 0;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.bot_buttons_table {
|
||||
border-spacing: 0px 2px;
|
||||
width: 100%;
|
||||
}
|
||||
.bot_button {
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
background-color: #168acd40;
|
||||
}
|
||||
.bot_button_row {
|
||||
display: table;
|
||||
table-layout: fixed;
|
||||
padding: 0px;
|
||||
width:100%;
|
||||
}
|
||||
.bot_button_row div {
|
||||
display: table-cell;
|
||||
}
|
||||
.bot_button_column_separator {
|
||||
width: 2px
|
||||
}
|
||||
|
||||
.reactions {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.reactions .reaction {
|
||||
display: inline-flex;
|
||||
height: 20px;
|
||||
border-radius: 15px;
|
||||
background-color: #e8f5fc;
|
||||
color: #168acd;
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.reactions .reaction.active {
|
||||
background-color: #40a6e2;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.reactions .reaction.paid {
|
||||
background-color: #fdf6e1;
|
||||
color: #c58523;
|
||||
}
|
||||
|
||||
.reactions .reaction.active.paid {
|
||||
background-color: #ecae0a;
|
||||
color: #fdf6e1;
|
||||
}
|
||||
|
||||
.reactions .reaction .emoji {
|
||||
line-height: 20px;
|
||||
margin: 0 5px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.reactions .reaction .userpic:not(:first-child) {
|
||||
margin-left: -8px;
|
||||
}
|
||||
|
||||
.reactions .reaction .userpic {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.reactions .reaction .userpic .initials {
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
.reactions .reaction .count {
|
||||
margin-right: 8px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html, body {
|
||||
background-color: #1a2026; /* groupCallBg */
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.page_wrap {
|
||||
background-color: #1a2026; /* groupCallBg */
|
||||
color: #ffffff; /* groupCallMembersFg */
|
||||
min-height: 100vh;
|
||||
}
|
||||
.page_wrap a {
|
||||
color: #4db8ff; /* groupCallActiveFg */
|
||||
}
|
||||
.page_header {
|
||||
background-color: #1a2026; /* groupCallBg */
|
||||
border-bottom: 1px solid #2c333d; /* groupCallMembersBg */
|
||||
}
|
||||
.bold {
|
||||
color: #ffffff; /* groupCallMembersFg */
|
||||
}
|
||||
.details {
|
||||
color: #91979e; /* groupCallMemberNotJoinedStatus */
|
||||
}
|
||||
.page_body {
|
||||
background-color: #1a2026; /* groupCallBg */
|
||||
}
|
||||
code {
|
||||
color: #ff8aac; /* historyPeer6UserpicBg */
|
||||
background-color: #2c333d; /* groupCallMembersBg */
|
||||
}
|
||||
pre {
|
||||
color: #ffffff; /* groupCallMembersFg */
|
||||
background-color: #2c333d; /* groupCallMembersBg */
|
||||
border: 1px solid #323a45; /* groupCallMembersBgOver */
|
||||
}
|
||||
.with_divider {
|
||||
border-top: 1px solid #2c333d; /* groupCallMembersBg */
|
||||
}
|
||||
a.block_link:hover {
|
||||
background-color: #323a45; /* groupCallMembersBgOver */
|
||||
}
|
||||
.list_page .entry {
|
||||
color: #ffffff; /* groupCallMembersFg */
|
||||
}
|
||||
.message {
|
||||
color: #ffffff; /* groupCallMembersFg */
|
||||
}
|
||||
div.selected {
|
||||
background-color: #323a45; /* groupCallMembersBgOver */
|
||||
}
|
||||
.default .from_name {
|
||||
color: #4db8ff; /* groupCallActiveFg */
|
||||
}
|
||||
.default .media .description {
|
||||
color: #ffffff; /* groupCallMembersFg */
|
||||
}
|
||||
msgInBg,
|
||||
.historyComposeAreaBg {
|
||||
background-color: #2c333d; /* groupCallMembersBg */
|
||||
}
|
||||
msgOutBg {
|
||||
background-color: #323a45; /* groupCallMembersBgOver */
|
||||
}
|
||||
msgInBgSelected {
|
||||
background-color: #39424f; /* groupCallMembersBgRipple */
|
||||
}
|
||||
msgOutBgSelected {
|
||||
background-color: #39424f; /* groupCallMembersBgRipple */
|
||||
}
|
||||
.spoiler {
|
||||
background: #323a45; /* groupCallMembersBgOver */
|
||||
}
|
||||
.spoiler.hidden {
|
||||
background: #61c0ff; /* groupCallMemberInactiveStatus */
|
||||
}
|
||||
.bot_button {
|
||||
background-color: #4db8ff40; /* groupCallActiveFg with opacity */
|
||||
}
|
||||
.reactions .reaction {
|
||||
background-color: #2c333d; /* groupCallMembersBg */
|
||||
color: #4db8ff; /* groupCallActiveFg */
|
||||
}
|
||||
.reactions .reaction.active {
|
||||
background-color: #4db8ff; /* groupCallActiveFg */
|
||||
color: #1a2026; /* groupCallBg */
|
||||
}
|
||||
.reactions .reaction.paid {
|
||||
background-color: #323a45; /* groupCallMembersBgOver */
|
||||
color: #febb5b; /* historyPeer8UserpicBg */
|
||||
}
|
||||
.reactions .reaction.active.paid {
|
||||
background-color: #febb5b; /* historyPeer8UserpicBg */
|
||||
color: #1a2026; /* groupCallBg */
|
||||
}
|
||||
}
|
||||
BIN
SmartRep/attachments/тг_чат/images/back.png
Normal file
|
After Width: | Height: | Size: 312 B |
BIN
SmartRep/attachments/тг_чат/images/back@2x.png
Normal file
|
After Width: | Height: | Size: 518 B |
BIN
SmartRep/attachments/тг_чат/images/media_call.png
Normal file
|
After Width: | Height: | Size: 417 B |
BIN
SmartRep/attachments/тг_чат/images/media_call@2x.png
Normal file
|
After Width: | Height: | Size: 815 B |
BIN
SmartRep/attachments/тг_чат/images/media_contact.png
Normal file
|
After Width: | Height: | Size: 323 B |
BIN
SmartRep/attachments/тг_чат/images/media_contact@2x.png
Normal file
|
After Width: | Height: | Size: 600 B |
BIN
SmartRep/attachments/тг_чат/images/media_file.png
Normal file
|
After Width: | Height: | Size: 236 B |
BIN
SmartRep/attachments/тг_чат/images/media_file@2x.png
Normal file
|
After Width: | Height: | Size: 408 B |
BIN
SmartRep/attachments/тг_чат/images/media_game.png
Normal file
|
After Width: | Height: | Size: 271 B |
BIN
SmartRep/attachments/тг_чат/images/media_game@2x.png
Normal file
|
After Width: | Height: | Size: 510 B |
BIN
SmartRep/attachments/тг_чат/images/media_location.png
Normal file
|
After Width: | Height: | Size: 480 B |
BIN
SmartRep/attachments/тг_чат/images/media_location@2x.png
Normal file
|
After Width: | Height: | Size: 991 B |
BIN
SmartRep/attachments/тг_чат/images/media_music.png
Normal file
|
After Width: | Height: | Size: 275 B |
BIN
SmartRep/attachments/тг_чат/images/media_music@2x.png
Normal file
|
After Width: | Height: | Size: 464 B |
BIN
SmartRep/attachments/тг_чат/images/media_photo.png
Normal file
|
After Width: | Height: | Size: 243 B |
BIN
SmartRep/attachments/тг_чат/images/media_photo@2x.png
Normal file
|
After Width: | Height: | Size: 458 B |
BIN
SmartRep/attachments/тг_чат/images/media_shop.png
Normal file
|
After Width: | Height: | Size: 377 B |
BIN
SmartRep/attachments/тг_чат/images/media_shop@2x.png
Normal file
|
After Width: | Height: | Size: 790 B |
BIN
SmartRep/attachments/тг_чат/images/media_video.png
Normal file
|
After Width: | Height: | Size: 235 B |
BIN
SmartRep/attachments/тг_чат/images/media_video@2x.png
Normal file
|
After Width: | Height: | Size: 411 B |
BIN
SmartRep/attachments/тг_чат/images/media_voice.png
Normal file
|
After Width: | Height: | Size: 328 B |
BIN
SmartRep/attachments/тг_чат/images/media_voice@2x.png
Normal file
|
After Width: | Height: | Size: 660 B |
BIN
SmartRep/attachments/тг_чат/images/section_calls.png
Normal file
|
After Width: | Height: | Size: 656 B |
BIN
SmartRep/attachments/тг_чат/images/section_calls@2x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
SmartRep/attachments/тг_чат/images/section_chats.png
Normal file
|
After Width: | Height: | Size: 283 B |
BIN
SmartRep/attachments/тг_чат/images/section_chats@2x.png
Normal file
|
After Width: | Height: | Size: 454 B |
BIN
SmartRep/attachments/тг_чат/images/section_contacts.png
Normal file
|
After Width: | Height: | Size: 508 B |
BIN
SmartRep/attachments/тг_чат/images/section_contacts@2x.png
Normal file
|
After Width: | Height: | Size: 1023 B |
BIN
SmartRep/attachments/тг_чат/images/section_frequent.png
Normal file
|
After Width: | Height: | Size: 771 B |
BIN
SmartRep/attachments/тг_чат/images/section_frequent@2x.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
SmartRep/attachments/тг_чат/images/section_music.png
Normal file
|
After Width: | Height: | Size: 446 B |
BIN
SmartRep/attachments/тг_чат/images/section_music@2x.png
Normal file
|
After Width: | Height: | Size: 777 B |
BIN
SmartRep/attachments/тг_чат/images/section_other.png
Normal file
|
After Width: | Height: | Size: 155 B |
BIN
SmartRep/attachments/тг_чат/images/section_other@2x.png
Normal file
|
After Width: | Height: | Size: 269 B |
BIN
SmartRep/attachments/тг_чат/images/section_photos.png
Normal file
|
After Width: | Height: | Size: 415 B |
BIN
SmartRep/attachments/тг_чат/images/section_photos@2x.png
Normal file
|
After Width: | Height: | Size: 750 B |
BIN
SmartRep/attachments/тг_чат/images/section_sessions.png
Normal file
|
After Width: | Height: | Size: 134 B |
BIN
SmartRep/attachments/тг_чат/images/section_sessions@2x.png
Normal file
|
After Width: | Height: | Size: 216 B |
BIN
SmartRep/attachments/тг_чат/images/section_stories.png
Normal file
|
After Width: | Height: | Size: 605 B |
BIN
SmartRep/attachments/тг_чат/images/section_stories@2x.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
SmartRep/attachments/тг_чат/images/section_web.png
Normal file
|
After Width: | Height: | Size: 266 B |
BIN
SmartRep/attachments/тг_чат/images/section_web@2x.png
Normal file
|
After Width: | Height: | Size: 447 B |
211
SmartRep/attachments/тг_чат/js/script.js
Normal file
@@ -0,0 +1,211 @@
|
||||
"use strict";
|
||||
|
||||
window.AllowBackFromHistory = false;
|
||||
function CheckLocation() {
|
||||
var start = "#go_to_message";
|
||||
var hash = location.hash;
|
||||
if (hash.substr(0, start.length) == start) {
|
||||
var messageId = parseInt(hash.substr(start.length));
|
||||
if (messageId) {
|
||||
GoToMessage(messageId);
|
||||
}
|
||||
} else if (hash == "#allow_back") {
|
||||
window.AllowBackFromHistory = true;
|
||||
}
|
||||
}
|
||||
|
||||
function ShowToast(text) {
|
||||
var container = document.createElement("div");
|
||||
container.className = "toast_container";
|
||||
var inner = container.appendChild(document.createElement("div"));
|
||||
inner.className = "toast_body";
|
||||
inner.appendChild(document.createTextNode(text));
|
||||
var appended = document.body.appendChild(container);
|
||||
setTimeout(function () {
|
||||
AddClass(appended, "toast_shown");
|
||||
setTimeout(function () {
|
||||
RemoveClass(appended, "toast_shown");
|
||||
setTimeout(function () {
|
||||
document.body.removeChild(appended);
|
||||
}, 3000);
|
||||
}, 3000);
|
||||
}, 0);
|
||||
}
|
||||
|
||||
function ShowHashtag(tag) {
|
||||
ShowToast("This is a hashtag '#" + tag + "' link.");
|
||||
return false;
|
||||
}
|
||||
|
||||
function ShowCashtag(tag) {
|
||||
ShowToast("This is a cashtag '$" + tag + "' link.");
|
||||
return false;
|
||||
}
|
||||
|
||||
function ShowBotCommand(command) {
|
||||
ShowToast("This is a bot command '/" + command + "' link.");
|
||||
return false;
|
||||
}
|
||||
|
||||
function ShowMentionName() {
|
||||
ShowToast("This is a link to a user mentioned by name.");
|
||||
return false;
|
||||
}
|
||||
|
||||
function ShowNotLoadedEmoji() {
|
||||
ShowToast("This custom emoji is not included, change data exporting settings to download.");
|
||||
return false;
|
||||
}
|
||||
|
||||
function ShowNotAvailableEmoji() {
|
||||
ShowToast("This custom emoji is not available.");
|
||||
return false;
|
||||
}
|
||||
|
||||
function ShowTextCopied(content) {
|
||||
navigator.clipboard.writeText(content);
|
||||
ShowToast("Text copied to clipboard.");
|
||||
return false;
|
||||
}
|
||||
|
||||
function ShowSpoiler(target) {
|
||||
if (target.classList.contains("hidden")) {
|
||||
target.classList.toggle("hidden");
|
||||
}
|
||||
}
|
||||
|
||||
function AddClass(element, name) {
|
||||
var current = element.className;
|
||||
var expression = new RegExp('(^|\\s)' + name + '(\\s|$)', 'g');
|
||||
if (expression.test(current)) {
|
||||
return;
|
||||
}
|
||||
element.className = current + ' ' + name;
|
||||
}
|
||||
|
||||
function RemoveClass(element, name) {
|
||||
var current = element.className;
|
||||
var expression = new RegExp('(^|\\s)' + name + '(\\s|$)', '');
|
||||
var match = expression.exec(current);
|
||||
while ((match = expression.exec(current)) != null) {
|
||||
if (match[1].length > 0 && match[2].length > 0) {
|
||||
current = current.substr(0, match.index + match[1].length)
|
||||
+ current.substr(match.index + match[0].length);
|
||||
} else {
|
||||
current = current.substr(0, match.index)
|
||||
+ current.substr(match.index + match[0].length);
|
||||
}
|
||||
}
|
||||
element.className = current;
|
||||
}
|
||||
|
||||
function EaseOutQuad(t) {
|
||||
return t * t;
|
||||
}
|
||||
|
||||
function EaseInOutQuad(t) {
|
||||
return (t < 0.5) ? (2 * t * t) : ((4 - 2 * t) * t - 1);
|
||||
}
|
||||
|
||||
function ScrollHeight() {
|
||||
if ("innerHeight" in window) {
|
||||
return window.innerHeight;
|
||||
} else if (document.documentElement) {
|
||||
return document.documentElement.clientHeight;
|
||||
}
|
||||
return document.body.clientHeight;
|
||||
}
|
||||
|
||||
function ScrollTo(top, callback) {
|
||||
var html = document.documentElement;
|
||||
var current = html.scrollTop;
|
||||
var delta = top - current;
|
||||
var finish = function () {
|
||||
html.scrollTop = top;
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
if (!window.performance.now || delta == 0) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
var transition = EaseOutQuad;
|
||||
var max = 300;
|
||||
if (delta < -max) {
|
||||
current = top + max;
|
||||
delta = -max;
|
||||
} else if (delta > max) {
|
||||
current = top - max;
|
||||
delta = max;
|
||||
} else {
|
||||
transition = EaseInOutQuad;
|
||||
}
|
||||
var duration = 150;
|
||||
var interval = 7;
|
||||
var time = window.performance.now();
|
||||
var animate = function () {
|
||||
var now = window.performance.now();
|
||||
if (now >= time + duration) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
var dt = (now - time) / duration;
|
||||
html.scrollTop = Math.round(current + delta * transition(dt));
|
||||
setTimeout(animate, interval);
|
||||
};
|
||||
setTimeout(animate, interval);
|
||||
}
|
||||
|
||||
function ScrollToElement(element, callback) {
|
||||
var header = document.getElementsByClassName("page_header")[0];
|
||||
var headerHeight = header.offsetHeight;
|
||||
var html = document.documentElement;
|
||||
var scrollHeight = ScrollHeight();
|
||||
var available = scrollHeight - headerHeight;
|
||||
var padding = 10;
|
||||
var top = element.offsetTop;
|
||||
var height = element.offsetHeight;
|
||||
var desired = top
|
||||
- Math.max((available - height) / 2, padding)
|
||||
- headerHeight;
|
||||
var scrollTopMax = html.offsetHeight - scrollHeight;
|
||||
ScrollTo(Math.min(desired, scrollTopMax), callback);
|
||||
}
|
||||
|
||||
function GoToMessage(messageId) {
|
||||
var element = document.getElementById("message" + messageId);
|
||||
if (element) {
|
||||
var hash = "#go_to_message" + messageId;
|
||||
if (location.hash != hash) {
|
||||
location.hash = hash;
|
||||
}
|
||||
ScrollToElement(element, function () {
|
||||
AddClass(element, "selected");
|
||||
setTimeout(function () {
|
||||
RemoveClass(element, "selected");
|
||||
}, 1000);
|
||||
});
|
||||
} else {
|
||||
ShowToast("This message was not exported. Maybe it was deleted.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function GoBack(anchor) {
|
||||
if (!window.AllowBackFromHistory) {
|
||||
return true;
|
||||
}
|
||||
history.back();
|
||||
if (!anchor || !anchor.getAttribute) {
|
||||
return true;
|
||||
}
|
||||
var destination = anchor.getAttribute("href");
|
||||
if (!destination) {
|
||||
return true;
|
||||
}
|
||||
setTimeout(function () {
|
||||
location.href = destination;
|
||||
}, 100);
|
||||
return false;
|
||||
}
|
||||
2978
SmartRep/attachments/тг_чат/messages.html
Normal file
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 143 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 218 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 123 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 22 KiB |
2216
SmartRep/attachments/тг_чат/result.json
Normal file
BIN
SmartRep/attachments/тг_чат/stickers/AnimatedSticker.tgs
Normal file
BIN
SmartRep/attachments/тг_чат/stickers/sticker (1).webp
Normal file
|
After Width: | Height: | Size: 936 B |
BIN
SmartRep/attachments/тг_чат/stickers/sticker (2).webp
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
SmartRep/attachments/тг_чат/stickers/sticker (3).webp
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
SmartRep/attachments/тг_чат/stickers/sticker.webp
Normal file
|
After Width: | Height: | Size: 3.9 KiB |