Перейти к содержимому
Zone of Games Forum

Рекомендованные сообщения

Sara is Missing - Переведено и издано командой TDoT

Ссылка для скачиванияhttps://www.tdot.space/sim/

Sara is Missing — это приключенческая игра с элементами головоломок и хоррора. Вам предстоит найти девушку, которая внезапно исчезла, анализируя её личные сообщения, заметки, электронные письма, фотографии и видеозаписи.

Как установить перевод: Из-за нестандартной структуры файлов и потенциальных трудностей с установкой перевода, было решено предоставлять игру уже с интегрированным переводом.
После загрузки архива распакуйте его в любом месте и приступайте к игре!Bk31lb-ewnQ.jpg?size=1920x1080&quality=9

Поделиться сообщением


Ссылка на сообщение

Привет всем.

Ищем переводчиков для Simulacra 1. Если вас интересует перевод, у вас есть желание и свободное время, вы можете подать заявку на нашем дискорд-сервере.

Сразу хочу сказать, что текста довольно много. В основном это всякие сообщения, письма, субтитры. Иногда попадается сленг или переписки, состоящие из коротких простеньких предложений. Но в целом строк около 7000. 

Изменено пользователем Artie_Bow

Поделиться сообщением


Ссылка на сообщение

Всем привет. Давно хотел перевести игру под названием Sara Is Missing, она работает на джава “движке” разработчика, написанном на libGDX.

Вся загвоздка в файле content.fs — это сериализированный набор каких-то текстовых данных, причём в нестандартном формате. Переводя его через HEX, проблема возникает, когда текст выходит длиннее оригинального, по итогу вся структура файла “съезжает” и приводит к ломанию игры на старте. 

Все игровые файлы лежат в sim.exe, который можно вскрыть при помощи 7-zip или Winrar.

Исходники игры, если кого заинтересовало:
https://drive.google.com/drive/folders/1hyVdLdSx_p1bGEKQ7H4c5zUpTaDgAncO?usp=sharing
 

Скрытый текст

Текст:
.fs файлы содержат текста сообщений, а .class файлы — надписи для GUI (путь: sim.exe\game23). 
В android-версии все эти классы запакованы в classes.dex.

Декомпиляция кода:
Логика игры хранится в sim.exe\sengine. Просмотреть код .class файлов удобно через JD-GUI.
Альтернативный вариант — скачать андроид версию, вытащить dex файлы и декомпилировать их.

Скрытый текст

Возможные форматы текстур:
JFIF, PVR, ETC1
Файлы содержат шапку 126 байт (иногда 128), начинающуюся с тега TextureFile. 
Они могут содержать как одно целое изображение, так и множество его фрагментов, поэтому просто удалить шапку будет недостаточно.
Если исходная текстура была большой, то она разрезается на части, не больше, чем 512х512. Порядок частей такой же, как они идут в двоичном файле. У некоторых текстур имеются мипмапы. В симулякре возможно чуть по другому, там ещё можно встретить фрагментированные изображения в виде отдельных текстур: 1|1.png.texture, 1|2.png.texture и т.д.

Для изучения можно вытянуть все картинки утилитой bulk_extractor:
@echo off
bulk_extractor -o D:\Output -R D:\TextureFiles
pause

Логика загрузки изображений:
sengine\graphics2d\texturefile

Скрытый текст

Скачать архив
Подменить файл Game.class по пути sim.exe\com\accurve\game23 (изменено значение поля RELEASE на false, чтобы включить режим отладки).
Запустить игру.
Теперь можно вызвать консоль по кнопке тильды (~) и использовать команды. Важно: надо всё делать на английской раскладке. 

При инициализации консоли импортируются классы из следующих пакетов:



import com.badlogic.gdx.*;
import sengine.*;
import sengine.graphics2d.*;
import com.accurve.game23.*;
import game23.hlapi.*;
import game23.*;
import game23.grid.*;

Пример простой команды:
ClassName.method(argument);
ClassName.field = new_value;

Также можно по пути C:\<username>\game23 положить autoexec.java, при запуске игры код из этого файла выполнится автоматически через консоль. Но только при включённой отладке.

Чтобы запустить свой скрипт файл данной командой:



Console.console.evalFile(fileName);

необходимо сперва выполнить команду 



import sengine.utils.Console;


---------------------------------------------------------------------------------------------------------------------------------------------------------
Для включения отладки в симулякре нужно ставить конфиг:
Создать текстовый файл по пути C:\<username>\game27\autoexec.cfg
В нём прописать:



Gdx.app.setLogLevel(Application.LOG_DEBUG);

Запустить игру.

При инициализации консоли импортируются классы из следующих пакетов:

import com.badlogic.gdx.*;
import sengine.*;
import sengine.graphics2d.*;
import sengine.animation.*;
import sengine.calc.*;
import sengine.utils.*;
import game27.*;
import game27.gb.*;
import game27.glitch.*;
import game27.model.*;
import game27.renderer.*;
import game27.triggers.*;
import game27.Globals;
import game27.triggers.Triggers;
import game27.triggers.ACT1;
import game27.triggers.ACT2;
import game27.triggers.ACT3;
Скрытый текст

В стим-обсуждениях можно найти инструкцию от разработчиков по созданию неофициальной локализации.
https://steamcommunity.com/app/712730/discussions/0/1742220290366328362/

Ниже перевод этого сообщения. Ссылки до сих пор рабочие, но самое интересное — раздел тестирования пуст. Я пробовал следовать этой инструкции на разных версия симулякры, но ничего не вышло. Возможно я просто что-то делал неправильно :(

На всякий случай бэкап файлов: экселевские таблицы, конфиг, документ.
P.S. По умолчанию в конфиге включена рекомпиляция, так что в дальнейшем игра будет загружаться с помощью новосозданных fs в кеш папке. Поэтому если игра перестала запускаться (чёрный экран или крахи), удалите содержимое C:\<username>\game27\compiled, и конфиг, в случае ненадобности.

Цитата

Я добавил в документ инструкцию о том как тестировать свою локализацию (смотрите раздел “Testing”).
https://docs.google.com/document/d/163xald8WbyuNL_3nBZJqVUzGZ0NJ6ffM96QTH3Ii3Sk/edit?usp=sharing

Сперва вам необходимо продублировать документы в Google Drive и добавить свой перевод. Затем скачать этот файл:
https://drive.google.com/open?id=1zSmD7RAsaVIamVdNjPBdFQc46KFXSVyo

Поместите его в C:\<username>\game27\autoexec.cfg
Отредактируйте файл и замените Google ссылки на свои.
Перезапускайте игру каждый раз, когда вносите изменения онлайн.
Нажмите кнопку тильды (~) во время загрузки игры, чтобы проверить сообщения об ошибках.
Игровые сохранения могут повредиться, если внести крупные изменения.

 

Simulacra, альтернативный вариант перевода — версия для Switch

 

Изменено пользователем Artie_Bow

Поделиться сообщением


Ссылка на сообщение

P.S. Логика обработки content.fs лежит в java/sengine/File.java (к сожалению я её не осилил :()
Там есть такие интересные методы как unpackFS, packFS, unloadFS, loadFS.

Поделиться сообщением


Ссылка на сообщение
6 часов назад, Artie_Bow сказал:

Редактирование текста через HEX ломает структуру файла и приводит к критической ошибке при загрузке игры, если вместе с текстом меняется размер файла. Было бы здорово, если бы кто-то с ним разобрался, с его структурой. 

Перед каждой строкой есть ее размер в Big Endian. Как вариант попробуйте менять значение в зависимости от размера новой строки.

Поделиться сообщением


Ссылка на сообщение
10 часов назад, LinkOFF сказал:

Перед каждой строкой есть ее размер в Big Endian. Как вариант попробуйте менять значение в зависимости от размера новой строки.

Размер строк я меняю, но видимо этого недостаточно. Нужно править ещё какие-то значения, знать бы только какие.

Изменено пользователем Artie_Bow

Поделиться сообщением


Ссылка на сообщение

@LinkOFF Может, проблема возникает в структуре sim.exe после вшивания в него отредактированного content.fs?

UPD. Я сейчас попробовал отредактированный content.fs засунуть в андроид-версию игры, и она тоже вылетает после загрузки, а значит проблема не в структуре sim.exe, нужно копать именно сам файл content.fs и там ещё что-то править.

Изменено пользователем Artie_Bow

Поделиться сообщением


Ссылка на сообщение

Привет! Сам давно интересуюсь темой того, как работает эта игра. Для начала надо сказать, что у игры не свой движок. Игра работает на фреймворке LibGDX, но разработчики явно сами придумали методы обфускации. Далее: игра не задействует файл content.fs, хотя он и вызывает вылет игры. На самом деле все события игры вызываются из файла compiled.fs, который задействуется с запуска (но малейшее его изменение приведёт к неработоспособности игры).

Следующая информация скорее всего будет бесполезной, но покопавшись на некоторых форумах я узнал, как извлечь jpg-изображения из игры (хотя работает это не со всеми jpg).

Поделиться сообщением


Ссылка на сообщение
В 26.12.2021 в 17:40, cenya_filyushkin сказал:

Привет! Сам давно интересуюсь темой того, как работает эта игра. Для начала надо сказать, что у игры не свой движок. Игра работает на фреймворке LibGDX, но разработчики явно сами придумали методы обфускации. Далее: игра не задействует файл content.fs, хотя он и вызывает вылет игры. На самом деле все события игры вызываются из файла compiled.fs, который задействуется с запуска (но малейшее его изменение приведёт к неработоспособности игры).

Следующая информация скорее всего будет бесполезной, но покопавшись на некоторых форумах я узнал, как извлечь jpg-изображения из игры (хотя работает это не со всеми jpg).

Ну да, я в курсе про движок. Насчёт content.fs не соглашусь, он вполне используется. Ниже скриншоты, я отредактировал содержимое одной из смс без изменения длины текстового блока.
 

Скрытый текст

23af43901a1ba1b4aea29ba3101a2ec2.jpg275c394dffbb328da21ad193d65617b1.png

 

Будет не лишним, если ты расскажешь о картинках. Я только знаю кое что о зашифрованных видео. Что в этой игре, что в симулякре видеоролики зашифрованы одинаково. Расшифровать их можно при помощи сайта https://filext.com (кстати, аудиодорожка идёт отдельно от видео и без проблем воспроизводится). Ну и пример одного из расшифрованных видео, а также небольшая информация о нём в спойлере ниже (в т.ч. методы шифрования), может что-то похожее используется в файлах текстур.
 

Скрытый текст

 

d3419741d8dc355cf978467223b68c93.png52af21c4d63424a696d2a2b4df28a833.png

 

 

Изменено пользователем Artie_Bow

Поделиться сообщением


Ссылка на сообщение

Хмм… Странно. У меня при изменении content.fs ничего не меняется (видимо, приколы ПК-версии игры). По поводу изображений: .jpeg.texture можно извлечь, если убрать из него всё до 0x80 байта (Но есть забавный момент, что некоторые .jpeg.texture-файлы на деле являются .png.texture, и наоборот). А вот как извлечь .png.texture — непонятно, ибо там нет ни малейшего намёка на структуру .png-файла (Заголовка там нет уж точно).

Кстати. Я смог перекомпилировать класс com.accurve.game23.Game изменив в нём одну переменную, что активирует дебаг-режим в ПК-версии игры (ссылка на jar: https://drive.google.com/file/d/1npYwQkK0gU2iamEwiE6IrRM9g4A7X15G/view?usp=sharing). Там можно вызвать консоль тильдой и вызывать разные команды (я так умудрился добавить иконку на главный экран и при этом поломать его отображение, скриншот ниже)javaw_2021-12-27_09-54-21-095.jpg?width=

Поделиться сообщением


Ссылка на сообщение

Так, а вот сейчас что-то странное. Я попытался изменить текст сообщения на твой-же (размер не меняется), но моя игра при этом вылетает.

Поделиться сообщением


Ссылка на сообщение

По сути дела текст в обычном txt формате лежит. Но очень здесь всё интересно реализовано 484 блока, думаю если заморочиться вполне реально сделать перевод. 

Изменено пользователем KASaLEX

Поделиться сообщением


Ссылка на сообщение

@KASaLEX вообще, как мы смогли выяснить, изначально текста диалогов скорее всего хранились в json и в дальнейшем были запакованы в .fs. Но есть вещь, которая меня ошарашила — если Debug-версию игры запускать не в jar, а в exe, то она будет работоспособной даже при удалённых из неё .fs-файлах, и даже будут все текста. json-ов в игровом архиве нет

Поделиться сообщением


Ссылка на сообщение
В 06.01.2022 в 22:51, cenya_filyushkin сказал:

@KASaLEX вообще, как мы смогли выяснить, изначально текста диалогов скорее всего хранились в json и в дальнейшем были запакованы в .fs. Но есть вещь, которая меня ошарашила — если Debug-версию игры запускать не в jar, а в exe, то она будет работоспособной даже при удалённых из неё .fs-файлах, и даже будут все текста. json-ов в игровом архиве нет

скорее всего у тебя рядом с exe лежат извлечённые файлы .fs которые игра и подтягивает. Дальше потратил я на это всё дело три вечера. Что могу сказать почти все файлы сжаты определенным образом, блоками идет блок сжатых данных потом в открытом виде и так далее. Если файл собрать разжав сжатые блоки и собрать получим оригинальный файл ….который игра не хавает. Проверка происходит по размеру разжатых данных, то есть если взять блок разжать получив оригинальный файл и снова сжать до меньшего размера или большего самого блока, игра будет работать если же изменить оригинальный файл и снова упаковать нет — идет проверка по размеру разжатого файла, даже лого с наушниками, что появляется в начале игры сжато таким образом, в файле данных о размере точно нет. Проверка происходит где-то в коде причем там должны храниться размеры всех файлов в таком случаи

Поделиться сообщением


Ссылка на сообщение
1 час назад, KASaLEX сказал:

скорее всего у тебя рядом с exe лежат извлечённые файлы .fs которые игра и подтягивает. Дальше потратил я на это всё дело три вечера. Что могу сказать почти все файлы сжаты определенным образом, блоками идет блок сжатых данных потом в открытом виде и так далее. Если файл собрать разжав сжатые блоки и собрать получим оригинальный файл ….который игра не хавает. Проверка происходит по размеру разжатых данных, то есть если взять блок разжать получив оригинальный файл и снова сжать до меньшего размера или большего самого блока, игра будет работать если же изменить оригинальный файл и снова упаковать нет — идет проверка по размеру разжатого файла, даже лого с наушниками, что появляется в начале игры сжато таким образом, в файле данных о размере точно нет. Проверка происходит где-то в коде причем там должны храниться размеры всех файлов в таком случаи

Миллион раз проверил — рядом fs нет, а поттягивает игра их только в случае, если запущена через jar.

1 час назад, KASaLEX сказал:

скорее всего у тебя рядом с exe лежат извлечённые файлы .fs которые игра и подтягивает. Дальше потратил я на это всё дело три вечера. Что могу сказать почти все файлы сжаты определенным образом, блоками идет блок сжатых данных потом в открытом виде и так далее. Если файл собрать разжав сжатые блоки и собрать получим оригинальный файл ….который игра не хавает. Проверка происходит по размеру разжатых данных, то есть если взять блок разжать получив оригинальный файл и снова сжать до меньшего размера или большего самого блока, игра будет работать если же изменить оригинальный файл и снова упаковать нет — идет проверка по размеру разжатого файла, даже лого с наушниками, что появляется в начале игры сжато таким образом, в файле данных о размере точно нет. Проверка происходит где-то в коде причем там должны храниться размеры всех файлов в таком случаи

И да, кстати. В Debug-режиме в jar-е игра пересобирает все fs в отдельный каталог (compiled). Перепакованный файл content.fs весит меньше того, что лежит в игре. И если этот content.fs положить вместо оригинального — игра так-же будет работать

Поделиться сообщением


Ссылка на сообщение

подтягивает и через exe. только что сравнил две версии под андроид изменения в них только в .fs файлах, выходит что и данные для проверки размеров в каком-то из них

Поделиться сообщением


Ссылка на сообщение
Только что, KASaLEX сказал:

подтягивает и через exe. только что сравнил две версии под андроид изменения в них только в .fs файлах, выходит что и данные для проверки размеров в каком-то из них

Уж больно подозрительно, что exe Debug-версии игры игнорирует даже изменённые fs внутри неё, а нигде в иных местах у меня fs не лежат

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Продвигаемые темы

  • Последние сообщения

    • Обновление перевода до версии 1.01.

      Благодаря конкурсу "Найди ошибку", а также дополнительной вычитке, мы сделали множество исправлений во всём тексте игры, текстурах и видеороликах. Теперь наш перевод стал ещё лучше. Тем не менее, версия 1.01 всё равно появится в нашем следующем конкурсе "Найди ошибку 2", как и перевод Сказаний Фантазии, а за каждое найденное замечание будет начисляться повышенное количество баллов. Если вы хотите принять в нём участие, то можете приступать к поиску ошибок прямо сейчас, играя в этот обновлённый перевод. Напоминаем, что конкурс будет проводиться в нашем отдельном сообществе Temple of Tales Quiz, а о точной дате его проведения мы сообщим позже. Все ссылки по скачиванию русификатора обновлены в шапке темы. Скачать перевод можно на нашем сайте здесь:
      https://temple-tales.ru/translations_toeps1.html Наше сообщество по конкурсам:
      https://vk.com/temple_of_tales_quiz

      Список изменений:
      - Устранено зависание на экзамене продвинутого уровня
      - Внесено более 200 правок
      - Дополнительно откорректированы переносы в диалогах по всей игре
      -------------------------------------------------------------------------------- ⭐ Если вы хотите поддержать нас, получить доступ к ранним сборкам
      наших переводов или другим бонусам, то сделать это можно через подписки:
      VK Donut: https://vk.com/donut/temple_of_tales_translations
      VK Donut: https://vk.com/donut/temple_of_tales_quiz
      VK Donut: https://vk.com/donut/temple_of_tales_music
      Boosty: https://boosty.to/temple-tales ⭐ Альтернативный способ поддержки:
      Карта Сбербанка: 5469 9802 0654 4716
      Карта ВТБ: 4272 2908 4659 1246
    • ссылочку на любой интересующий вас русификатор, мы проверим, отпишем о результатах. p.s. у меня ссылки присутствуют, как в авторизированном состоянии (2 шт на 8 мегабит каждая), так и в состоянии без авторизации (1шт на 4 мегабита) @SerGEAnt должен точно знать в чем проблема, если она есть
    • не могу скачать русификатор. Нет кнопки скачать. Кто знает в чем причина? Любой русификатор не скачивается,просто нет кнопки скачать
    • Что именно? Оба сайта - полноценные веб-проекты. У них есть свой сервер, гигантская база данных и интерфейс для их отображения.

      SteamGridDB работает за счёт того, что пользователи сами загружают туда контент, пополняя эту базу. Backgrounds.gallery, в свою очередь, скорее всего, использует серверный парсер - специальную программу, которая медленно и методично обходит Steam, собирает ссылки на фоны и складывает их в свою базу. Это работа, которая ведётся постоянно и не зависит от браузера конкретного пользователя. Мой скрипт работает только у человека в браузере и только на той странице Steam, которую человек открыл. Его задача - улучшить уже существующую страницу, добавив на неё полезную информацию на лету.  Если вопрос в том, чтобы в магазине очков отображать гигантские превью - там есть проблема с тем, как Steam отдаёт информацию в магазине очков. Когда человек заходит в магазин очков, он видит кучу карточек, в которых уменьшенные картинки и видео для предпросмотра. В коде этих карточек нет прямых ссылок на полноразмерный анимированный фон. Вот пример кода для фона "Киберпсихоз" из Cyberpunk 2077: <video playsinline="" loop="" autoplay="" class="U-rBCVfODx4G2p43_zb8V" poster="https://steamcommunity.com/economy/profilebackground/items/1091500/db76d224cafa8d8ae6c5d3a8b94e7dafddf7c764.jpg?size=320x200">     <source src="https://cdn.fastly.steamstatic.com/steamcommunity/public/images/items/1091500/8b3e5bc3d0eead33e11f6d38ac5e818ea5a9abe9.webm" type="video/webm">     <source src="https://cdn.fastly.steamstatic.com/steamcommunity/public/images/items/1091500/28d2f12c620b84c12a905ce0660847718014a8dd.mp4" type="video/mp4"> </video>
      Чтобы получить ссылку на качественное .webm видео, скрипту нужно сначала щёлкнуть по каждой карточке, чтобы открылось окно предпросмотра. Только после этого действия Steam отображает ссылку на полноэкранный анимированный фон.В магазине очков тысячи фонов. Чтобы собрать все ссылки, скрипту пришлось бы при загрузке страницы симулировать щелчок по каждому из тысяч фонов и обработать ответ от сервера. Браузер от такого количества одновременных запросов просто офонареет, а Steam, скорее всего, временно заблокирует IP за подозрительную активность (DDoS-атаку).
    • Всех приветствую, есть желающие русик до идеала довести? нужны, те, кто мог бы вытащить для перевода, плюс от буки и sys скрестить в один
    • Чисто для просмотра? Вот этим ресурсом много лет пользуюсь, чтобы посмотреть как выглядят полные картинки у карточек, фоны, превью применённых фонов и прочее у любых игр из стима. То есть выбираешь игру и смотришь, что она предлагает. Например, арты карточек в полном их размере (а не просто превьюшку, которая на самой рубашке карточки) в том же стиме посмотреть нельзя, если у тебя их нет или не скован значок. В т.ч. удобно для игр, материалы на которые отсутствуют в обменнике стима (да, такие игры тоже до сих пор есть). Там есть и обменный функционал, впрочем, его разве что от безысходности кто-то применять станет, т.к. коэффициент там заведомо невыгодный.
    • Новая версия — 2.4 [20250713] Внесено несколько улучшений в текст. Добавил страницу русификатора на GitHub https://github.com/Dontaz/themidnightwalk-ru
      Добавил страницу русификатора на Nexus Mods https://www.nexusmods.com/themidnightwalk/mods/8 Автоматический установщик https://disk.yandex.ru/d/J4EwEZ5ByxWDAQ https://drive.google.com/file/d/1fZdoeMvyBcMiQ4_iYgu4d3ja_JtkiU9V/view https://github.com/Dontaz/themidnightwalk-ru/releases Архив для установки вручную https://disk.yandex.ru/d/OmadX8Tt7EnMZA https://drive.google.com/file/d/1rRnrQlqRlV2D8ls2QPruRPfODQC-_Yok/view https://github.com/Dontaz/themidnightwalk-ru/releases

      @SerGEAnt *пуп*
    • реально, какая то странная тенденция нарисовалась

      https://store.steampowered.com/app/1402110/Eternights/ на распродаже стоила 799р. (-60%), сейчас 499р. (-75%). Ладно не стал покупать  Что касается “бустра”, поздновато конечно, но это он не падает… и не тонет, потому что он…  @0wn3df1x тут скинули сервисы чисто из интереса и гипотетически, для Вас подобное сделать по силам, как вроде того скрипта, и если да, то сколько времени понадобиться и насколько это сложно?
  • Изменения статусов

    • Дмитрий Соснов  »  Tirniel

      Привет! ты разбираешься в компьютерном железе, сможешь помочь с советом по апгрейду старого компа?
      · 1 ответ
    • SHAMAH

      Куда вход на сайт убрали и ЗАЧЕМ? Хотел файл скачать, там только медленная загрузка и “зарегистрируйтесь”. Все. Пришлось вручную страницу входа прописывать.
      · 0 ответов
    • Nosferatu  »  behar

      Добрый вечер.
      Подскажите пожалуйста, у вас не осталось случайно исходников для фикса на широкоформатные мониторы для игры Vampire The Masquerade Redemption?
      Если да, то не могли бы вы ими поделиться, а если нет, то прошу прощенья что побеспокоил.
      Заранее спасибо.
      · 0 ответов
    • AlcoKolyic  »  makc_ar

      Здраствуйте! Извините, а можно попросить ссылку на место где можно взять перевод (патч или образ игры с переводом) El Shaddai: Ascension of the Metatron для ps3, пожалуйста? А то в теме к этой игре у меня не получилось найти работающие ссылки… Первая ведет в группу в которой удалены большинство постов, а пост с этой игрой ведет на сайт https://psnext.ru который сейчас не имеет отношения к видеоиграм. 
      · 0 ответов
    • oleg72  »  Boor

      https://www.skidrowcodex.net/fate-reawakened-goldberg/
      · 0 ответов
  • Лучшие авторы


Zone of Games © 2003–2025 | Реклама на сайте.

×