# Узнайте все детали бесшовной авторизации Mini‑APP в Telegram
### Введение
В последние годы рост мобильных мессенджеров превратил их в полноценные платформы для взаимодействия с пользователями, а Telegram занял лидирующие позиции благодаря открытой экосистеме и поддержке разработчиков. Одним из самых перспективных направлений стала концепция мини‑приложений, которые позволяют интегрировать веб‑функционал непосредственно в клиент мессенджера без необходимости установки отдельного приложения. Такая модель открывает новые возможности для бизнеса: от упрощённого входа в сервисы до проведения транзакций в режиме реального времени. В статье мы подробно разберём, как работает бесшовная авторизация в один клик через Telegram Mini App, какие технические детали следует учитывать и какие практические шаги помогут быстро внедрить эту технологию.
Бесшовная авторизация подразумевает передачу пользовательских данных от Telegram к вашему сайту без дополнительных запросов ввода логина и пароля. Это достигается за счёт использования защищённого токена, который генерируется в момент запуска мини‑приложения и передаётся в ваш бекенд через HTTPS. При правильной реализации такой подход повышает конверсию, снижает барьер входа и улучшает пользовательский опыт, особенно на мобильных устройствах, где каждый лишний клик может стать причиной отказа. Кроме того, интеграция с Telegram обеспечивает высокий уровень безопасности благодаря использованию протоколов OAuth 2.0 и проверке подписи токена.
Для большинства компаний, работающих в сфере электронной коммерции, онлайн‑образования или сервисов подписки, возможность входа в один клик становится стратегическим преимуществом. По данным аналитического агентства Statista, более 70 % пользователей мобильных приложений предпочитают сервисы, позволяющие быстро авторизоваться без ввода пароля. Это подтверждает, что инвестирование в технологию Telegram Mini App может существенно повысить удержание аудитории и увеличить средний чек. В дальнейшем мы рассмотрим, какие шаги необходимо предпринять, чтобы реализовать эту возможность без потери безопасности.
Ниже мы представим детальный разбор архитектуры, практические примеры внедрения и рекомендации по оптимизации процесса авторизации. При этом особое внимание будет уделено вопросам совместимости, масштабируемости и соответствия требованиям GDPR и локального законодательства о защите персональных данных.
### Технологический фундамент
Telegram Mini App представляет собой веб‑страницу, загружаемую внутри клиентского окна мессенджера, и взаимодействующую с Telegram API через JavaScript‑интерфейс. При открытии мини‑приложения Telegram автоматически передаёт объект Telegram.WebApp , содержащий информацию о пользователе, токен доступа и параметры среды исполнения. Этот объект позволяет получить уникальный идентификатор пользователя ( user.id ) и проверочный токен ( initData ) , который необходимо валидировать на сервере.
Для валидации токена следует использовать публичный ключ Telegram, доступный по официальной документации, и выполнить проверку подписи HMAC‑SHA256. После успешной проверки сервер может создать собственный JWT‑токен, привязанный к учетной записи пользователя в вашей системе, и вернуть его клиенту для дальнейшего взаимодействия. Такой подход гарантирует, что только подлинные запросы от Telegram будут приняты, а любые попытки подделки будут отклонены.
Схема взаимодействия выглядит следующим образом: пользователь открывает мини‑приложение, Telegram передаёт initData , ваш бекенд проверяет подпись, создаёт сессионный токен и отправляет его обратно. После этого пользователь считается авторизованным и может выполнять любые действия, доступные в вашем веб‑интерфейсе, без необходимости ввода дополнительных данных. [ Thought dump] ( https: //p...content-available-to-author-only...n.co/-----miniapp--telegram-----miniapp--telegram-yfjgktef) о реализации данного процесса можно найти в официальной документации проекта.
Для упрощения разработки рекомендуется использовать готовые SDK и библиотеки, поддерживающие проверку подписи и генерацию JWT. Ниже приведён список основных компонентов, которые стоит включить в стек технологий:
- Telegram Bot API – для получения публичного ключа и управления ботом.
- Node.js или Python‑фреймворк – для реализации серверной части и валидации токенов.
- JWT‑библиотека ( например, jsonwebtoken или PyJWT) – для создания безопасных сессионных токенов.
- HTTPS‑сервер с поддержкой TLS 1.2 + – обязательное требование для защиты передаваемых данных.
### Практические кейсы и сравнение
Один из самых ярких примеров успешного внедрения бесшовной авторизации – сервис онлайн‑курсов, который позволил пользователям входить в личный кабинет через Telegram без ввода пароля. После интеграции показатель конверсии на этапе входа вырос на 42 % , а среднее время, затрачиваемое на регистрацию, сократилось с 2 ,5 минут до 12 секунд. Аналогичный эффект наблюдался в проектах электронной коммерции, где количество завершённых покупок увеличилось на 18 % благодаря упрощённому процессу входа.
Сравнивая традиционный OAuth‑поток с авторизацией через Telegram Mini App, можно выделить несколько ключевых преимуществ: отсутствие перенаправлений на сторонние страницы, мгновенный доступ к пользовательским данным и возможность использовать встроенные UI‑элементы Telegram для улучшения визуального восприятия. При этом уровень безопасности остаётся на высоте, поскольку токен подписывается сервером Telegram и проверяется на вашем бекенде.
> «По данным Telegram, более 200 млн активных пользователей ежедневно используют ботов и мини‑приложения, а среднее время взаимодействия с ними превышает 5 минут», – сообщает официальная статистика платформы.
Для компаний, ориентированных на международный рынок, важно учитывать различия в законодательстве о персональных данных. При работе с Telegram Mini App необходимо обеспечить согласие пользователя на обработку его данных, а также предоставить возможность отзыва согласия в любой момент. В этом контексте рекомендуется реализовать механизм «лог‑аут», который полностью удаляет сессионный токен и очищает локальное хранилище.
Если вы хотите подробнее изучить возможности Telegram Mini App и увидеть примеры кода, обратитесь к ресурсу, где собраны лучшие практики и готовые шаблоны: [ инструкция по интеграции] ( https: //1...content-available-to-author-only...e.com/telegram-mini-app/). Такой подход поможет сократить время разработки и избежать типичных ошибок, связанных с безопасностью и совместимостью.
### Рекомендации по внедрению
Перед началом интеграции необходимо провести аудит текущей инфраструктуры и убедиться, что сервер поддерживает протокол TLS 1.2 или выше, а также имеет установленный публичный ключ Telegram. Затем следует настроить окружение разработки, включив в процесс CI/ CD автоматические тесты валидации токенов и проверку подписи. Это позволит быстро обнаруживать регрессии и поддерживать высокий уровень безопасности.
Важно также продумать пользовательский сценарий: при первом входе через Telegram Mini App пользователь может быть перенаправлен на страницу согласия с политикой конфиденциальности, после чего происходит автоматическое создание учётной записи в вашей системе. Для повышения доверия рекомендуется отображать логотип Telegram и короткое сообщение о том, что данные получены из надёжного источника.
Для масштабируемости рекомендуется использовать распределённый кеш ( например, Redis) для хранения временных сессионных токенов, а также внедрить мониторинг метрик авторизации: количество запросов, процент успешных валидаций и среднее время отклика. На основе этих данных можно оптимизировать производительность и своевременно реагировать на аномалии.
Дополнительные исследования подтверждают эффективность такого подхода. Согласно статье в Wikipedia, Telegram Bot API предоставляет более 200 методов для взаимодействия с пользователями, включая передачу данных о профиле и статусе онлайн [ Telegram Bot] ( https: //r...content-available-to-author-only...a.org/wiki/Telegram_Bot). Это подтверждает, что платформа обладает достаточным набором инструментов для построения надёжных и гибких решений.
### Заключение
Бесшовная авторизация в один клик через Telegram Mini App представляет собой мощный инструмент, позволяющий значительно улучшить пользовательский опыт, повысить конверсию и сократить время входа в сервис. Тщательная валидация токенов, соблюдение требований безопасности и правильная архитектура позволяют реализовать решение, которое будет работать надёжно даже при больших нагрузках.
Практические кейсы показывают, что внедрение этой технологии приводит к измеримому росту показателей бизнеса, а готовые SDK и библиотеки упрощают процесс разработки. При этом важно учитывать юридические аспекты обработки персональных данных и обеспечить пользователям возможность управления своими согласиями.
Следуя рекомендациям, изложенным в статье, вы сможете быстро интегрировать Telegram Mini App в свой продукт, минимизировать риски и получить конкурентное преимущество на рынке. В конечном итоге, бесшовная авторизация становится не просто технической новинкой, а стратегическим элементом, способствующим росту лояльности и удержанию клиентов./* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
}
}
IyDQo9C30L3QsNC50YLQtSDQstGB0LUg0LTQtdGC0LDQu9C4INCx0LXRgdGI0L7QstC90L7QuSDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4IE1pbmnigJFBUFAg0LIgVGVsZWdyYW0KCiMjIyDQktCy0LXQtNC10L3QuNC1CgrQkiDQv9C+0YHQu9C10LTQvdC40LUg0LPQvtC00Ysg0YDQvtGB0YIg0LzQvtCx0LjQu9GM0L3Ri9GFINC80LXRgdGB0LXQvdC00LbQtdGA0L7QsiDQv9GA0LXQstGA0LDRgtC40Lsg0LjRhSDQsiDQv9C+0LvQvdC+0YbQtdC90L3Ri9C1INC/0LvQsNGC0YTQvtGA0LzRiyDQtNC70Y8g0LLQt9Cw0LjQvNC+0LTQtdC50YHRgtCy0LjRjyDRgSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y/QvNC4LCDQsCBUZWxlZ3JhbSDQt9Cw0L3Rj9C7INC70LjQtNC40YDRg9GO0YnQuNC1INC/0L7Qt9C40YbQuNC4INCx0LvQsNCz0L7QtNCw0YDRjyDQvtGC0LrRgNGL0YLQvtC5INGN0LrQvtGB0LjRgdGC0LXQvNC1INC4INC/0L7QtNC00LXRgNC20LrQtSDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7Qsi4g0J7QtNC90LjQvCDQuNC3INGB0LDQvNGL0YUg0L/QtdGA0YHQv9C10LrRgtC40LLQvdGL0YUg0L3QsNC/0YDQsNCy0LvQtdC90LjQuSDRgdGC0LDQu9CwINC60L7QvdGG0LXQv9GG0LjRjyDQvNC40L3QuOKAkdC/0YDQuNC70L7QttC10L3QuNC5LCDQutC+0YLQvtGA0YvQtSDQv9C+0LfQstC+0LvRj9GO0YIg0LjQvdGC0LXQs9GA0LjRgNC+0LLQsNGC0Ywg0LLQtdCx4oCR0YTRg9C90LrRhtC40L7QvdCw0Lsg0L3QtdC/0L7RgdGA0LXQtNGB0YLQstC10L3QvdC+INCyINC60LvQuNC10L3RgiDQvNC10YHRgdC10L3QtNC20LXRgNCwINCx0LXQtyDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDRg9GB0YLQsNC90L7QstC60Lgg0L7RgtC00LXQu9GM0L3QvtCz0L4g0L/RgNC40LvQvtC20LXQvdC40Y8uINCi0LDQutCw0Y8g0LzQvtC00LXQu9GMINC+0YLQutGA0YvQstCw0LXRgiDQvdC+0LLRi9C1INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0LTQu9GPINCx0LjQt9C90LXRgdCwOiDQvtGCINGD0L/RgNC+0YnRkdC90L3QvtCz0L4g0LLRhdC+0LTQsCDQsiDRgdC10YDQstC40YHRiyDQtNC+INC/0YDQvtCy0LXQtNC10L3QuNGPINGC0YDQsNC90LfQsNC60YbQuNC5INCyINGA0LXQttC40LzQtSDRgNC10LDQu9GM0L3QvtCz0L4g0LLRgNC10LzQtdC90LguINCSINGB0YLQsNGC0YzQtSDQvNGLINC/0L7QtNGA0L7QsdC90L4g0YDQsNC30LHQtdGA0ZHQvCwg0LrQsNC6INGA0LDQsdC+0YLQsNC10YIg0LHQtdGB0YjQvtCy0L3QsNGPINCw0LLRgtC+0YDQuNC30LDRhtC40Y8g0LIg0L7QtNC40L0g0LrQu9C40Log0YfQtdGA0LXQtyBUZWxlZ3JhbSBNaW5pIEFwcCwg0LrQsNC60LjQtSDRgtC10YXQvdC40YfQtdGB0LrQuNC1INC00LXRgtCw0LvQuCDRgdC70LXQtNGD0LXRgiDRg9GH0LjRgtGL0LLQsNGC0Ywg0Lgg0LrQsNC60LjQtSDQv9GA0LDQutGC0LjRh9C10YHQutC40LUg0YjQsNCz0Lgg0L/QvtC80L7Qs9GD0YIg0LHRi9GB0YLRgNC+INCy0L3QtdC00YDQuNGC0Ywg0Y3RgtGDINGC0LXRhdC90L7Qu9C+0LPQuNGOLgoK0JHQtdGB0YjQvtCy0L3QsNGPINCw0LLRgtC+0YDQuNC30LDRhtC40Y8g0L/QvtC00YDQsNC30YPQvNC10LLQsNC10YIg0L/QtdGA0LXQtNCw0YfRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhSDQtNCw0L3QvdGL0YUg0L7RgiBUZWxlZ3JhbSDQuiDQstCw0YjQtdC80YMg0YHQsNC50YLRgyDQsdC10Lcg0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvRhSDQt9Cw0L/RgNC+0YHQvtCyINCy0LLQvtC00LAg0LvQvtCz0LjQvdCwINC4INC/0LDRgNC+0LvRjy4g0K3RgtC+INC00L7RgdGC0LjQs9Cw0LXRgtGB0Y8g0LfQsCDRgdGH0ZHRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQt9Cw0YnQuNGJ0ZHQvdC90L7Qs9C+INGC0L7QutC10L3QsCwg0LrQvtGC0L7RgNGL0Lkg0LPQtdC90LXRgNC40YDRg9C10YLRgdGPINCyINC80L7QvNC10L3RgiDQt9Cw0L/Rg9GB0LrQsCDQvNC40L3QuOKAkdC/0YDQuNC70L7QttC10L3QuNGPINC4INC/0LXRgNC10LTQsNGR0YLRgdGPINCyINCy0LDRiCDQsdC10LrQtdC90LQg0YfQtdGA0LXQtyBIVFRQUy4g0J/RgNC4INC/0YDQsNCy0LjQu9GM0L3QvtC5INGA0LXQsNC70LjQt9Cw0YbQuNC4INGC0LDQutC+0Lkg0L/QvtC00YXQvtC0INC/0L7QstGL0YjQsNC10YIg0LrQvtC90LLQtdGA0YHQuNGOLCDRgdC90LjQttCw0LXRgiDQsdCw0YDRjNC10YAg0LLRhdC+0LTQsCDQuCDRg9C70YPRh9GI0LDQtdGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNC5INC+0L/Ri9GCLCDQvtGB0L7QsdC10L3QvdC+INC90LAg0LzQvtCx0LjQu9GM0L3Ri9GFINGD0YHRgtGA0L7QudGB0YLQstCw0YUsINCz0LTQtSDQutCw0LbQtNGL0Lkg0LvQuNGI0L3QuNC5INC60LvQuNC6INC80L7QttC10YIg0YHRgtCw0YLRjCDQv9GA0LjRh9C40L3QvtC5INC+0YLQutCw0LfQsC4g0JrRgNC+0LzQtSDRgtC+0LPQviwg0LjQvdGC0LXQs9GA0LDRhtC40Y8g0YEgVGVsZWdyYW0g0L7QsdC10YHQv9C10YfQuNCy0LDQtdGCINCy0YvRgdC+0LrQuNC5INGD0YDQvtCy0LXQvdGMINCx0LXQt9C+0L/QsNGB0L3QvtGB0YLQuCDQsdC70LDQs9C+0LTQsNGA0Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y4g0L/RgNC+0YLQvtC60L7Qu9C+0LIgT0F1dGggMi4wINC4INC/0YDQvtCy0LXRgNC60LUg0L/QvtC00L/QuNGB0Lgg0YLQvtC60LXQvdCwLgoK0JTQu9GPINCx0L7Qu9GM0YjQuNC90YHRgtCy0LAg0LrQvtC80L/QsNC90LjQuSwg0YDQsNCx0L7RgtCw0Y7RidC40YUg0LIg0YHRhNC10YDQtSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC60L7QvNC80LXRgNGG0LjQuCwg0L7QvdC70LDQudC94oCR0L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQuNC70Lgg0YHQtdGA0LLQuNGB0L7QsiDQv9C+0LTQv9C40YHQutC4LCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINCy0YXQvtC00LAg0LIg0L7QtNC40L0g0LrQu9C40Log0YHRgtCw0L3QvtCy0LjRgtGB0Y8g0YHRgtGA0LDRgtC10LPQuNGH0LXRgdC60LjQvCDQv9GA0LXQuNC80YPRidC10YHRgtCy0L7QvC4g0J/QviDQtNCw0L3QvdGL0Lwg0LDQvdCw0LvQuNGC0LjRh9C10YHQutC+0LPQviDQsNCz0LXQvdGC0YHRgtCy0LAgU3RhdGlzdGEsINCx0L7Qu9C10LUgNzAgJSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDQvNC+0LHQuNC70YzQvdGL0YUg0L/RgNC40LvQvtC20LXQvdC40Lkg0L/RgNC10LTQv9C+0YfQuNGC0LDRjtGCINGB0LXRgNCy0LjRgdGLLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC1INCx0YvRgdGC0YDQviDQsNCy0YLQvtGA0LjQt9C+0LLQsNGC0YzRgdGPINCx0LXQtyDQstCy0L7QtNCwINC/0LDRgNC+0LvRjy4g0K3RgtC+INC/0L7QtNGC0LLQtdGA0LbQtNCw0LXRgiwg0YfRgtC+INC40L3QstC10YHRgtC40YDQvtCy0LDQvdC40LUg0LIg0YLQtdGF0L3QvtC70L7Qs9C40Y4gVGVsZWdyYW0gTWluaSBBcHAg0LzQvtC20LXRgiDRgdGD0YnQtdGB0YLQstC10L3QvdC+INC/0L7QstGL0YHQuNGC0Ywg0YPQtNC10YDQttCw0L3QuNC1INCw0YPQtNC40YLQvtGA0LjQuCDQuCDRg9Cy0LXQu9C40YfQuNGC0Ywg0YHRgNC10LTQvdC40Lkg0YfQtdC6LiDQkiDQtNCw0LvRjNC90LXQudGI0LXQvCDQvNGLINGA0LDRgdGB0LzQvtGC0YDQuNC8LCDQutCw0LrQuNC1INGI0LDQs9C4INC90LXQvtCx0YXQvtC00LjQvNC+INC/0YDQtdC00L/RgNC40L3Rj9GC0YwsINGH0YLQvtCx0Ysg0YDQtdCw0LvQuNC30L7QstCw0YLRjCDRjdGC0YMg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQsdC10Lcg0L/QvtGC0LXRgNC4INCx0LXQt9C+0L/QsNGB0L3QvtGB0YLQuC4KCtCd0LjQttC1INC80Ysg0L/RgNC10LTRgdGC0LDQstC40Lwg0LTQtdGC0LDQu9GM0L3Ri9C5INGA0LDQt9Cx0L7RgCDQsNGA0YXQuNGC0LXQutGC0YPRgNGLLCDQv9GA0LDQutGC0LjRh9C10YHQutC40LUg0L/RgNC40LzQtdGA0Ysg0LLQvdC10LTRgNC10L3QuNGPINC4INGA0LXQutC+0LzQtdC90LTQsNGG0LjQuCDQv9C+INC+0L/RgtC40LzQuNC30LDRhtC40Lgg0L/RgNC+0YbQtdGB0YHQsCDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4LiDQn9GA0Lgg0Y3RgtC+0Lwg0L7RgdC+0LHQvtC1INCy0L3QuNC80LDQvdC40LUg0LHRg9C00LXRgiDRg9C00LXQu9C10L3QviDQstC+0L/RgNC+0YHQsNC8INGB0L7QstC80LXRgdGC0LjQvNC+0YHRgtC4LCDQvNCw0YHRiNGC0LDQsdC40YDRg9C10LzQvtGB0YLQuCDQuCDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8g0YLRgNC10LHQvtCy0LDQvdC40Y/QvCBHRFBSINC4INC70L7QutCw0LvRjNC90L7Qs9C+INC30LDQutC+0L3QvtC00LDRgtC10LvRjNGB0YLQstCwINC+INC30LDRidC40YLQtSDQv9C10YDRgdC+0L3QsNC70YzQvdGL0YUg0LTQsNC90L3Ri9GFLgoKIyMjINCi0LXRhdC90L7Qu9C+0LPQuNGH0LXRgdC60LjQuSDRhNGD0L3QtNCw0LzQtdC90YIKClRlbGVncmFtIE1pbmkgQXBwINC/0YDQtdC00YHRgtCw0LLQu9GP0LXRgiDRgdC+0LHQvtC5INCy0LXQseKAkdGB0YLRgNCw0L3QuNGG0YMsINC30LDQs9GA0YPQttCw0LXQvNGD0Y4g0LLQvdGD0YLRgNC4INC60LvQuNC10L3RgtGB0LrQvtCz0L4g0L7QutC90LAg0LzQtdGB0YHQtdC90LTQttC10YDQsCwg0Lgg0LLQt9Cw0LjQvNC+0LTQtdC50YHRgtCy0YPRjtGJ0YPRjiDRgSBUZWxlZ3JhbSBBUEkg0YfQtdGA0LXQtyBKYXZhU2NyaXB04oCR0LjQvdGC0LXRgNGE0LXQudGBLiDQn9GA0Lgg0L7RgtC60YDRi9GC0LjQuCDQvNC40L3QuOKAkdC/0YDQuNC70L7QttC10L3QuNGPIFRlbGVncmFtINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INC/0LXRgNC10LTQsNGR0YIg0L7QsdGK0LXQutGCIFRlbGVncmFtLldlYkFwcCAsINGB0L7QtNC10YDQttCw0YnQuNC5INC40L3RhNC+0YDQvNCw0YbQuNGOINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtSwg0YLQvtC60LXQvSDQtNC+0YHRgtGD0L/QsCDQuCDQv9Cw0YDQsNC80LXRgtGA0Ysg0YHRgNC10LTRiyDQuNGB0L/QvtC70L3QtdC90LjRjy4g0K3RgtC+0YIg0L7QsdGK0LXQutGCINC/0L7Qt9Cy0L7Qu9GP0LXRgiDQv9C+0LvRg9GH0LjRgtGMINGD0L3QuNC60LDQu9GM0L3Ri9C5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyAoIHVzZXIuaWQgKSDQuCDQv9GA0L7QstC10YDQvtGH0L3Ri9C5INGC0L7QutC10L0gKCBpbml0RGF0YSApLCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDQstCw0LvQuNC00LjRgNC+0LLQsNGC0Ywg0L3QsCDRgdC10YDQstC10YDQtS4KCtCU0LvRjyDQstCw0LvQuNC00LDRhtC40Lgg0YLQvtC60LXQvdCwINGB0LvQtdC00YPQtdGCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQv9GD0LHQu9C40YfQvdGL0Lkg0LrQu9GO0YcgVGVsZWdyYW0sINC00L7RgdGC0YPQv9C90YvQuSDQv9C+INC+0YTQuNGG0LjQsNC70YzQvdC+0Lkg0LTQvtC60YPQvNC10L3RgtCw0YbQuNC4LCDQuCDQstGL0L/QvtC70L3QuNGC0Ywg0L/RgNC+0LLQtdGA0LrRgyDQv9C+0LTQv9C40YHQuCBITUFD4oCRU0hBMjU2LiDQn9C+0YHQu9C1INGD0YHQv9C10YjQvdC+0Lkg0L/RgNC+0LLQtdGA0LrQuCDRgdC10YDQstC10YAg0LzQvtC20LXRgiDRgdC+0LfQtNCw0YLRjCDRgdC+0LHRgdGC0LLQtdC90L3Ri9C5IEpXVOKAkdGC0L7QutC10L0sINC/0YDQuNCy0Y/Qt9Cw0L3QvdGL0Lkg0Log0YPRh9C10YLQvdC+0Lkg0LfQsNC/0LjRgdC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQsiDQstCw0YjQtdC5INGB0LjRgdGC0LXQvNC1LCDQuCDQstC10YDQvdGD0YLRjCDQtdCz0L4g0LrQu9C40LXQvdGC0YMg0LTQu9GPINC00LDQu9GM0L3QtdC50YjQtdCz0L4g0LLQt9Cw0LjQvNC+0LTQtdC50YHRgtCy0LjRjy4g0KLQsNC60L7QuSDQv9C+0LTRhdC+0LQg0LPQsNGA0LDQvdGC0LjRgNGD0LXRgiwg0YfRgtC+INGC0L7Qu9GM0LrQviDQv9C+0LTQu9C40L3QvdGL0LUg0LfQsNC/0YDQvtGB0Ysg0L7RgiBUZWxlZ3JhbSDQsdGD0LTRg9GCINC/0YDQuNC90Y/RgtGLLCDQsCDQu9GO0LHRi9C1INC/0L7Qv9GL0YLQutC4INC/0L7QtNC00LXQu9C60Lgg0LHRg9C00YPRgiDQvtGC0LrQu9C+0L3QtdC90YsuCgrQodGF0LXQvNCwINCy0LfQsNC40LzQvtC00LXQudGB0YLQstC40Y8g0LLRi9Cz0LvRj9C00LjRgiDRgdC70LXQtNGD0Y7RidC40Lwg0L7QsdGA0LDQt9C+0Lw6INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQvtGC0LrRgNGL0LLQsNC10YIg0LzQuNC90LjigJHQv9GA0LjQu9C+0LbQtdC90LjQtSwgVGVsZWdyYW0g0L/QtdGA0LXQtNCw0ZHRgiBpbml0RGF0YSAsINCy0LDRiCDQsdC10LrQtdC90LQg0L/RgNC+0LLQtdGA0Y/QtdGCINC/0L7QtNC/0LjRgdGMLCDRgdC+0LfQtNCw0ZHRgiDRgdC10YHRgdC40L7QvdC90YvQuSDRgtC+0LrQtdC9INC4INC+0YLQv9GA0LDQstC70Y/QtdGCINC10LPQviDQvtCx0YDQsNGC0L3Qvi4g0J/QvtGB0LvQtSDRjdGC0L7Qs9C+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgdGH0LjRgtCw0LXRgtGB0Y8g0LDQstGC0L7RgNC40LfQvtCy0LDQvdC90YvQvCDQuCDQvNC+0LbQtdGCINCy0YvQv9C+0LvQvdGP0YLRjCDQu9GO0LHRi9C1INC00LXQudGB0YLQstC40Y8sINC00L7RgdGC0YPQv9C90YvQtSDQsiDQstCw0YjQtdC8INCy0LXQseKAkdC40L3RgtC10YDRhNC10LnRgdC1LCDQsdC10Lcg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0LLQstC+0LTQsCDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9GFINC00LDQvdC90YvRhS4gW1Rob3VnaHQgZHVtcF0oaHR0cHM6Ly9wLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5uLmNvLy0tLS0tbWluaWFwcC0tdGVsZWdyYW0tLS0tLW1pbmlhcHAtLXRlbGVncmFtLXlmamdrdGVmKSDQviDRgNC10LDQu9C40LfQsNGG0LjQuCDQtNCw0L3QvdC+0LPQviDQv9GA0L7RhtC10YHRgdCwINC80L7QttC90L4g0L3QsNC50YLQuCDQsiDQvtGE0LjRhtC40LDQu9GM0L3QvtC5INC00L7QutGD0LzQtdC90YLQsNGG0LjQuCDQv9GA0L7QtdC60YLQsC4KCtCU0LvRjyDRg9C/0YDQvtGJ0LXQvdC40Y8g0YDQsNC30YDQsNCx0L7RgtC60Lgg0YDQtdC60L7QvNC10L3QtNGD0LXRgtGB0Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCz0L7RgtC+0LLRi9C1IFNESyDQuCDQsdC40LHQu9C40L7RgtC10LrQuCwg0L/QvtC00LTQtdGA0LbQuNCy0LDRjtGJ0LjQtSDQv9GA0L7QstC10YDQutGDINC/0L7QtNC/0LjRgdC4INC4INCz0LXQvdC10YDQsNGG0LjRjiBKV1QuINCd0LjQttC1INC/0YDQuNCy0LXQtNGR0L0g0YHQv9C40YHQvtC6INC+0YHQvdC+0LLQvdGL0YUg0LrQvtC80L/QvtC90LXQvdGC0L7Qsiwg0LrQvtGC0L7RgNGL0LUg0YHRgtC+0LjRgiDQstC60LvRjtGH0LjRgtGMINCyINGB0YLQtdC6INGC0LXRhdC90L7Qu9C+0LPQuNC5OgoKLSBUZWxlZ3JhbSBCb3QgQVBJIOKAkyDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINC/0YPQsdC70LjRh9C90L7Qs9C+INC60LvRjtGH0LAg0Lgg0YPQv9GA0LDQstC70LXQvdC40Y8g0LHQvtGC0L7QvC4KCi0gTm9kZS5qcyDQuNC70LggUHl0aG9u4oCR0YTRgNC10LnQvNCy0L7RgNC6IOKAkyDQtNC70Y8g0YDQtdCw0LvQuNC30LDRhtC40Lgg0YHQtdGA0LLQtdGA0L3QvtC5INGH0LDRgdGC0Lgg0Lgg0LLQsNC70LjQtNCw0YbQuNC4INGC0L7QutC10L3QvtCyLgoKLSBKV1TigJHQsdC40LHQu9C40L7RgtC10LrQsCAo0L3QsNC/0YDQuNC80LXRgCwganNvbndlYnRva2VuINC40LvQuCBQeUpXVCkg4oCTINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINCx0LXQt9C+0L/QsNGB0L3Ri9GFINGB0LXRgdGB0LjQvtC90L3Ri9GFINGC0L7QutC10L3QvtCyLgoKLSBIVFRQU+KAkdGB0LXRgNCy0LXRgCDRgSDQv9C+0LTQtNC10YDQttC60L7QuSBUTFMgMS4yKyDigJMg0L7QsdGP0LfQsNGC0LXQu9GM0L3QvtC1INGC0YDQtdCx0L7QstCw0L3QuNC1INC00LvRjyDQt9Cw0YnQuNGC0Ysg0L/QtdGA0LXQtNCw0LLQsNC10LzRi9GFINC00LDQvdC90YvRhS4KCiMjIyDQn9GA0LDQutGC0LjRh9C10YHQutC40LUg0LrQtdC50YHRiyDQuCDRgdGA0LDQstC90LXQvdC40LUKCtCe0LTQuNC9INC40Lcg0YHQsNC80YvRhSDRj9GA0LrQuNGFINC/0YDQuNC80LXRgNC+0LIg0YPRgdC/0LXRiNC90L7Qs9C+INCy0L3QtdC00YDQtdC90LjRjyDQsdC10YHRiNC+0LLQvdC+0Lkg0LDQstGC0L7RgNC40LfQsNGG0LjQuCDigJMg0YHQtdGA0LLQuNGBINC+0L3Qu9Cw0LnQveKAkdC60YPRgNGB0L7Qsiwg0LrQvtGC0L7RgNGL0Lkg0L/QvtC30LLQvtC70LjQuyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y/QvCDQstGF0L7QtNC40YLRjCDQsiDQu9C40YfQvdGL0Lkg0LrQsNCx0LjQvdC10YIg0YfQtdGA0LXQtyBUZWxlZ3JhbSDQsdC10Lcg0LLQstC+0LTQsCDQv9Cw0YDQvtC70Y8uINCf0L7RgdC70LUg0LjQvdGC0LXQs9GA0LDRhtC40Lgg0L/QvtC60LDQt9Cw0YLQtdC70Ywg0LrQvtC90LLQtdGA0YHQuNC4INC90LAg0Y3RgtCw0L/QtSDQstGF0L7QtNCwINCy0YvRgNC+0YEg0L3QsCA0MiAlLCDQsCDRgdGA0LXQtNC90LXQtSDQstGA0LXQvNGPLCDQt9Cw0YLRgNCw0YfQuNCy0LDQtdC80L7QtSDQvdCwINGA0LXQs9C40YHRgtGA0LDRhtC40Y4sINGB0L7QutGA0LDRgtC40LvQvtGB0Ywg0YEgMiw1INC80LjQvdGD0YIg0LTQviAxMiDRgdC10LrRg9C90LQuINCQ0L3QsNC70L7Qs9C40YfQvdGL0Lkg0Y3RhNGE0LXQutGCINC90LDQsdC70Y7QtNCw0LvRgdGPINCyINC/0YDQvtC10LrRgtCw0YUg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQutC+0LzQvNC10YDRhtC40LgsINCz0LTQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0LLQtdGA0YjRkdC90L3Ri9GFINC/0L7QutGD0L/QvtC6INGD0LLQtdC70LjRh9C40LvQvtGB0Ywg0L3QsCAxOCAlINCx0LvQsNCz0L7QtNCw0YDRjyDRg9C/0YDQvtGJ0ZHQvdC90L7QvNGDINC/0YDQvtGG0LXRgdGB0YMg0LLRhdC+0LTQsC4KCtCh0YDQsNCy0L3QuNCy0LDRjyDRgtGA0LDQtNC40YbQuNC+0L3QvdGL0LkgT0F1dGjigJHQv9C+0YLQvtC6INGBINCw0LLRgtC+0YDQuNC30LDRhtC40LXQuSDRh9C10YDQtdC3IFRlbGVncmFtIE1pbmkgQXBwLCDQvNC+0LbQvdC+INCy0YvQtNC10LvQuNGC0Ywg0L3QtdGB0LrQvtC70YzQutC+INC60LvRjtGH0LXQstGL0YUg0L/RgNC10LjQvNGD0YnQtdGB0YLQsjog0L7RgtGB0YPRgtGB0YLQstC40LUg0L/QtdGA0LXQvdCw0L/RgNCw0LLQu9C10L3QuNC5INC90LAg0YHRgtC+0YDQvtC90L3QuNC1INGB0YLRgNCw0L3QuNGG0YssINC80LPQvdC+0LLQtdC90L3Ri9C5INC00L7RgdGC0YPQvyDQuiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQvCDQtNCw0L3QvdGL0Lwg0Lgg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LLRgdGC0YDQvtC10L3QvdGL0LUgVUnigJHRjdC70LXQvNC10L3RgtGLIFRlbGVncmFtINC00LvRjyDRg9C70YPRh9GI0LXQvdC40Y8g0LLQuNC30YPQsNC70YzQvdC+0LPQviDQstC+0YHQv9GA0LjRj9GC0LjRjy4g0J/RgNC4INGN0YLQvtC8INGD0YDQvtCy0LXQvdGMINCx0LXQt9C+0L/QsNGB0L3QvtGB0YLQuCDQvtGB0YLQsNGR0YLRgdGPINC90LAg0LLRi9GB0L7RgtC1LCDQv9C+0YHQutC+0LvRjNC60YMg0YLQvtC60LXQvSDQv9C+0LTQv9C40YHRi9Cy0LDQtdGC0YHRjyDRgdC10YDQstC10YDQvtC8IFRlbGVncmFtINC4INC/0YDQvtCy0LXRgNGP0LXRgtGB0Y8g0L3QsCDQstCw0YjQtdC8INCx0LXQutC10L3QtNC1LgoKPiDCq9Cf0L4g0LTQsNC90L3Ri9C8IFRlbGVncmFtLCDQsdC+0LvQtdC1IDIwMCDQvNC70L0g0LDQutGC0LjQstC90YvRhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDQtdC20LXQtNC90LXQstC90L4g0LjRgdC/0L7Qu9GM0LfRg9GO0YIg0LHQvtGC0L7QsiDQuCDQvNC40L3QuOKAkdC/0YDQuNC70L7QttC10L3QuNGPLCDQsCDRgdGA0LXQtNC90LXQtSDQstGA0LXQvNGPINCy0LfQsNC40LzQvtC00LXQudGB0YLQstC40Y8g0YEg0L3QuNC80Lgg0L/RgNC10LLRi9GI0LDQtdGCIDUg0LzQuNC90YPRgsK7LCDigJMg0YHQvtC+0LHRidCw0LXRgiDQvtGE0LjRhtC40LDQu9GM0L3QsNGPINGB0YLQsNGC0LjRgdGC0LjQutCwINC/0LvQsNGC0YTQvtGA0LzRiy4KCtCU0LvRjyDQutC+0LzQv9Cw0L3QuNC5LCDQvtGA0LjQtdC90YLQuNGA0L7QstCw0L3QvdGL0YUg0L3QsCDQvNC10LbQtNGD0L3QsNGA0L7QtNC90YvQuSDRgNGL0L3QvtC6LCDQstCw0LbQvdC+INGD0YfQuNGC0YvQstCw0YLRjCDRgNCw0LfQu9C40YfQuNGPINCyINC30LDQutC+0L3QvtC00LDRgtC10LvRjNGB0YLQstC1INC+INC/0LXRgNGB0L7QvdCw0LvRjNC90YvRhSDQtNCw0L3QvdGL0YUuINCf0YDQuCDRgNCw0LHQvtGC0LUg0YEgVGVsZWdyYW0gTWluaSBBcHAg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7QsdC10YHQv9C10YfQuNGC0Ywg0YHQvtCz0LvQsNGB0LjQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L3QsCDQvtCx0YDQsNCx0L7RgtC60YMg0LXQs9C+INC00LDQvdC90YvRhSwg0LAg0YLQsNC60LbQtSDQv9GA0LXQtNC+0YHRgtCw0LLQuNGC0Ywg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQvtGC0LfRi9Cy0LAg0YHQvtCz0LvQsNGB0LjRjyDQsiDQu9GO0LHQvtC5INC80L7QvNC10L3Rgi4g0JIg0Y3RgtC+0Lwg0LrQvtC90YLQtdC60YHRgtC1INGA0LXQutC+0LzQtdC90LTRg9C10YLRgdGPINGA0LXQsNC70LjQt9C+0LLQsNGC0Ywg0LzQtdGF0LDQvdC40LfQvCDCq9C70L7Qs+KAkdCw0YPRgsK7LCDQutC+0YLQvtGA0YvQuSDQv9C+0LvQvdC+0YHRgtGM0Y4g0YPQtNCw0LvRj9C10YIg0YHQtdGB0YHQuNC+0L3QvdGL0Lkg0YLQvtC60LXQvSDQuCDQvtGH0LjRidCw0LXRgiDQu9C+0LrQsNC70YzQvdC+0LUg0YXRgNCw0L3QuNC70LjRidC1LgoK0JXRgdC70Lgg0LLRiyDRhdC+0YLQuNGC0LUg0L/QvtC00YDQvtCx0L3QtdC1INC40LfRg9GH0LjRgtGMINCy0L7Qt9C80L7QttC90L7RgdGC0LggVGVsZWdyYW0gTWluaSBBcHAg0Lgg0YPQstC40LTQtdGC0Ywg0L/RgNC40LzQtdGA0Ysg0LrQvtC00LAsINC+0LHRgNCw0YLQuNGC0LXRgdGMINC6INGA0LXRgdGD0YDRgdGDLCDQs9C00LUg0YHQvtCx0YDQsNC90Ysg0LvRg9GH0YjQuNC1INC/0YDQsNC60YLQuNC60Lgg0Lgg0LPQvtGC0L7QstGL0LUg0YjQsNCx0LvQvtC90Ys6IFvQuNC90YHRgtGA0YPQutGG0LjRjyDQv9C+INC40L3RgtC10LPRgNCw0YbQuNC4XShodHRwczovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tL3RlbGVncmFtLW1pbmktYXBwLykuINCi0LDQutC+0Lkg0L/QvtC00YXQvtC0INC/0L7QvNC+0LbQtdGCINGB0L7QutGA0LDRgtC40YLRjCDQstGA0LXQvNGPINGA0LDQt9GA0LDQsdC+0YLQutC4INC4INC40LfQsdC10LbQsNGC0Ywg0YLQuNC/0LjRh9C90YvRhSDQvtGI0LjQsdC+0LosINGB0LLRj9C30LDQvdC90YvRhSDRgSDQsdC10LfQvtC/0LDRgdC90L7RgdGC0YzRjiDQuCDRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLRjNGOLgoKIyMjINCg0LXQutC+0LzQtdC90LTQsNGG0LjQuCDQv9C+INCy0L3QtdC00YDQtdC90LjRjgoK0J/QtdGA0LXQtCDQvdCw0YfQsNC70L7QvCDQuNC90YLQtdCz0YDQsNGG0LjQuCDQvdC10L7QsdGF0L7QtNC40LzQviDQv9GA0L7QstC10YHRgtC4INCw0YPQtNC40YIg0YLQtdC60YPRidC10Lkg0LjQvdGE0YDQsNGB0YLRgNGD0LrRgtGD0YDRiyDQuCDRg9Cx0LXQtNC40YLRjNGB0Y8sINGH0YLQviDRgdC10YDQstC10YAg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCINC/0YDQvtGC0L7QutC+0LsgVExTIDEuMiDQuNC70Lgg0LLRi9GI0LUsINCwINGC0LDQutC20LUg0LjQvNC10LXRgiDRg9GB0YLQsNC90L7QstC70LXQvdC90YvQuSDQv9GD0LHQu9C40YfQvdGL0Lkg0LrQu9GO0YcgVGVsZWdyYW0uINCX0LDRgtC10Lwg0YHQu9C10LTRg9C10YIg0L3QsNGB0YLRgNC+0LjRgtGMINC+0LrRgNGD0LbQtdC90LjQtSDRgNCw0LfRgNCw0LHQvtGC0LrQuCwg0LLQutC70Y7Rh9C40LIg0LIg0L/RgNC+0YbQtdGB0YEgQ0kvQ0Qg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LjQtSDRgtC10YHRgtGLINCy0LDQu9C40LTQsNGG0LjQuCDRgtC+0LrQtdC90L7QsiDQuCDQv9GA0L7QstC10YDQutGDINC/0L7QtNC/0LjRgdC4LiDQrdGC0L4g0L/QvtC30LLQvtC70LjRgiDQsdGL0YHRgtGA0L4g0L7QsdC90LDRgNGD0LbQuNCy0LDRgtGMINGA0LXQs9GA0LXRgdGB0LjQuCDQuCDQv9C+0LTQtNC10YDQttC40LLQsNGC0Ywg0LLRi9GB0L7QutC40Lkg0YPRgNC+0LLQtdC90Ywg0LHQtdC30L7Qv9Cw0YHQvdC+0YHRgtC4LgoK0JLQsNC20L3QviDRgtCw0LrQttC1INC/0YDQvtC00YPQvNCw0YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuSDRgdGG0LXQvdCw0YDQuNC5OiDQv9GA0Lgg0L/QtdGA0LLQvtC8INCy0YXQvtC00LUg0YfQtdGA0LXQtyBUZWxlZ3JhbSBNaW5pIEFwcCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0LzQvtC20LXRgiDQsdGL0YLRjCDQv9C10YDQtdC90LDQv9GA0LDQstC70LXQvSDQvdCwINGB0YLRgNCw0L3QuNGG0YMg0YHQvtCz0LvQsNGB0LjRjyDRgSDQv9C+0LvQuNGC0LjQutC+0Lkg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4LCDQv9C+0YHQu9C1INGH0LXQs9C+INC/0YDQvtC40YHRhdC+0LTQuNGCINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LUg0YHQvtC30LTQsNC90LjQtSDRg9GH0ZHRgtC90L7QuSDQt9Cw0L/QuNGB0Lgg0LIg0LLQsNGI0LXQuSDRgdC40YHRgtC10LzQtS4g0JTQu9GPINC/0L7QstGL0YjQtdC90LjRjyDQtNC+0LLQtdGA0LjRjyDRgNC10LrQvtC80LXQvdC00YPQtdGC0YHRjyDQvtGC0L7QsdGA0LDQttCw0YLRjCDQu9C+0LPQvtGC0LjQvyBUZWxlZ3JhbSDQuCDQutC+0YDQvtGC0LrQvtC1INGB0L7QvtCx0YnQtdC90LjQtSDQviDRgtC+0LwsINGH0YLQviDQtNCw0L3QvdGL0LUg0L/QvtC70YPRh9C10L3RiyDQuNC3INC90LDQtNGR0LbQvdC+0LPQviDQuNGB0YLQvtGH0L3QuNC60LAuCgrQlNC70Y8g0LzQsNGB0YjRgtCw0LHQuNGA0YPQtdC80L7RgdGC0Lgg0YDQtdC60L7QvNC10L3QtNGD0LXRgtGB0Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINGA0LDRgdC/0YDQtdC00LXQu9GR0L3QvdGL0Lkg0LrQtdGIICjQvdCw0L/RgNC40LzQtdGALCBSZWRpcykg0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0LLRgNC10LzQtdC90L3Ri9GFINGB0LXRgdGB0LjQvtC90L3Ri9GFINGC0L7QutC10L3QvtCyLCDQsCDRgtCw0LrQttC1INCy0L3QtdC00YDQuNGC0Ywg0LzQvtC90LjRgtC+0YDQuNC90LMg0LzQtdGC0YDQuNC6INCw0LLRgtC+0YDQuNC30LDRhtC40Lg6INC60L7Qu9C40YfQtdGB0YLQstC+INC30LDQv9GA0L7RgdC+0LIsINC/0YDQvtGG0LXQvdGCINGD0YHQv9C10YjQvdGL0YUg0LLQsNC70LjQtNCw0YbQuNC5INC4INGB0YDQtdC00L3QtdC1INCy0YDQtdC80Y8g0L7RgtC60LvQuNC60LAuINCd0LAg0L7RgdC90L7QstC1INGN0YLQuNGFINC00LDQvdC90YvRhSDQvNC+0LbQvdC+INC+0L/RgtC40LzQuNC30LjRgNC+0LLQsNGC0Ywg0L/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70YzQvdC+0YHRgtGMINC4INGB0LLQvtC10LLRgNC10LzQtdC90L3QviDRgNC10LDQs9C40YDQvtCy0LDRgtGMINC90LAg0LDQvdC+0LzQsNC70LjQuC4KCtCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0LjRgdGB0LvQtdC00L7QstCw0L3QuNGPINC/0L7QtNGC0LLQtdGA0LbQtNCw0Y7RgiDRjdGE0YTQtdC60YLQuNCy0L3QvtGB0YLRjCDRgtCw0LrQvtCz0L4g0L/QvtC00YXQvtC00LAuINCh0L7Qs9C70LDRgdC90L4g0YHRgtCw0YLRjNC1INCyIFdpa2lwZWRpYSwgVGVsZWdyYW0gQm90IEFQSSDQv9GA0LXQtNC+0YHRgtCw0LLQu9GP0LXRgiDQsdC+0LvQtdC1IDIwMCDQvNC10YLQvtC00L7QsiDQtNC70Y8g0LLQt9Cw0LjQvNC+0LTQtdC50YHRgtCy0LjRjyDRgSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y/QvNC4LCDQstC60LvRjtGH0LDRjyDQv9C10YDQtdC00LDRh9GDINC00LDQvdC90YvRhSDQviDQv9GA0L7RhNC40LvQtSDQuCDRgdGC0LDRgtGD0YHQtSDQvtC90LvQsNC50L0gW1RlbGVncmFtIEJvdF0oaHR0cHM6Ly9yLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLm9yZy93aWtpL1RlbGVncmFtX0JvdCkuINCt0YLQviDQv9C+0LTRgtCy0LXRgNC20LTQsNC10YIsINGH0YLQviDQv9C70LDRgtGE0L7RgNC80LAg0L7QsdC70LDQtNCw0LXRgiDQtNC+0YHRgtCw0YLQvtGH0L3Ri9C8INC90LDQsdC+0YDQvtC8INC40L3RgdGC0YDRg9C80LXQvdGC0L7QsiDQtNC70Y8g0L/QvtGB0YLRgNC+0LXQvdC40Y8g0L3QsNC00ZHQttC90YvRhSDQuCDQs9C40LHQutC40YUg0YDQtdGI0LXQvdC40LkuCgojIyMg0JfQsNC60LvRjtGH0LXQvdC40LUKCtCR0LXRgdGI0L7QstC90LDRjyDQsNCy0YLQvtGA0LjQt9Cw0YbQuNGPINCyINC+0LTQuNC9INC60LvQuNC6INGH0LXRgNC10LcgVGVsZWdyYW0gTWluaSBBcHAg0L/RgNC10LTRgdGC0LDQstC70Y/QtdGCINGB0L7QsdC+0Lkg0LzQvtGJ0L3Ri9C5INC40L3RgdGC0YDRg9C80LXQvdGCLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INC30L3QsNGH0LjRgtC10LvRjNC90L4g0YPQu9GD0YfRiNC40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuSDQvtC/0YvRgiwg0L/QvtCy0YvRgdC40YLRjCDQutC+0L3QstC10YDRgdC40Y4g0Lgg0YHQvtC60YDQsNGC0LjRgtGMINCy0YDQtdC80Y8g0LLRhdC+0LTQsCDQsiDRgdC10YDQstC40YEuINCi0YnQsNGC0LXQu9GM0L3QsNGPINCy0LDQu9C40LTQsNGG0LjRjyDRgtC+0LrQtdC90L7Qsiwg0YHQvtCx0LvRjtC00LXQvdC40LUg0YLRgNC10LHQvtCy0LDQvdC40Lkg0LHQtdC30L7Qv9Cw0YHQvdC+0YHRgtC4INC4INC/0YDQsNCy0LjQu9GM0L3QsNGPINCw0YDRhdC40YLQtdC60YLRg9GA0LAg0L/QvtC30LLQvtC70Y/RjtGCINGA0LXQsNC70LjQt9C+0LLQsNGC0Ywg0YDQtdGI0LXQvdC40LUsINC60L7RgtC+0YDQvtC1INCx0YPQtNC10YIg0YDQsNCx0L7RgtCw0YLRjCDQvdCw0LTRkdC20L3QviDQtNCw0LbQtSDQv9GA0Lgg0LHQvtC70YzRiNC40YUg0L3QsNCz0YDRg9C30LrQsNGFLgoK0J/RgNCw0LrRgtC40YfQtdGB0LrQuNC1INC60LXQudGB0Ysg0L/QvtC60LDQt9GL0LLQsNGO0YIsINGH0YLQviDQstC90LXQtNGA0LXQvdC40LUg0Y3RgtC+0Lkg0YLQtdGF0L3QvtC70L7Qs9C40Lgg0L/RgNC40LLQvtC00LjRgiDQuiDQuNC30LzQtdGA0LjQvNC+0LzRgyDRgNC+0YHRgtGDINC/0L7QutCw0LfQsNGC0LXQu9C10Lkg0LHQuNC30L3QtdGB0LAsINCwINCz0L7RgtC+0LLRi9C1IFNESyDQuCDQsdC40LHQu9C40L7RgtC10LrQuCDRg9C/0YDQvtGJ0LDRjtGCINC/0YDQvtGG0LXRgdGBINGA0LDQt9GA0LDQsdC+0YLQutC4LiDQn9GA0Lgg0Y3RgtC+0Lwg0LLQsNC20L3QviDRg9GH0LjRgtGL0LLQsNGC0Ywg0Y7RgNC40LTQuNGH0LXRgdC60LjQtSDQsNGB0L/QtdC60YLRiyDQvtCx0YDQsNCx0L7RgtC60Lgg0L/QtdGA0YHQvtC90LDQu9GM0L3Ri9GFINC00LDQvdC90YvRhSDQuCDQvtCx0LXRgdC/0LXRh9C40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y/QvCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGD0L/RgNCw0LLQu9C10L3QuNGPINGB0LLQvtC40LzQuCDRgdC+0LPQu9Cw0YHQuNGP0LzQuC4KCtCh0LvQtdC00YPRjyDRgNC10LrQvtC80LXQvdC00LDRhtC40Y/QvCwg0LjQt9C70L7QttC10L3QvdGL0Lwg0LIg0YHRgtCw0YLRjNC1LCDQstGLINGB0LzQvtC20LXRgtC1INCx0YvRgdGC0YDQviDQuNC90YLQtdCz0YDQuNGA0L7QstCw0YLRjCBUZWxlZ3JhbSBNaW5pIEFwcCDQsiDRgdCy0L7QuSDQv9GA0L7QtNGD0LrRgiwg0LzQuNC90LjQvNC40LfQuNGA0L7QstCw0YLRjCDRgNC40YHQutC4INC4INC/0L7Qu9GD0YfQuNGC0Ywg0LrQvtC90LrRg9GA0LXQvdGC0L3QvtC1INC/0YDQtdC40LzRg9GJ0LXRgdGC0LLQviDQvdCwINGA0YvQvdC60LUuINCSINC60L7QvdC10YfQvdC+0Lwg0LjRgtC+0LPQtSwg0LHQtdGB0YjQvtCy0L3QsNGPINCw0LLRgtC+0YDQuNC30LDRhtC40Y8g0YHRgtCw0L3QvtCy0LjRgtGB0Y8g0L3QtSDQv9GA0L7RgdGC0L4g0YLQtdGF0L3QuNGH0LXRgdC60L7QuSDQvdC+0LLQuNC90LrQvtC5LCDQsCDRgdGC0YDQsNGC0LXQs9C40YfQtdGB0LrQuNC8INGN0LvQtdC80LXQvdGC0L7QvCwg0YHQv9C+0YHQvtCx0YHRgtCy0YPRjtGJ0LjQvCDRgNC+0YHRgtGDINC70L7Rj9C70YzQvdC+0YHRgtC4INC4INGD0LTQtdGA0LbQsNC90LjRjiDQutC70LjQtdC90YLQvtCyLi8qIHBhY2thZ2Ugd2hhdGV2ZXI7IC8vIGRvbid0IHBsYWNlIHBhY2thZ2UgbmFtZSEgKi8KCmltcG9ydCBqYXZhLnV0aWwuKjsKaW1wb3J0IGphdmEubGFuZy4qOwppbXBvcnQgamF2YS5pby4qOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgl9Cn0=
compilation info
Main.java:1: error: illegal character: '#'
# ??????? ??? ?????? ????????? ??????????? Mini?APP ? Telegram
^
Main.java:1: error: class, interface, or enum expected
# ??????? ??? ?????? ????????? ??????????? Mini?APP ? Telegram
^
Main.java:1: error: illegal character: '\u2011'
# ??????? ??? ?????? ????????? ??????????? Mini?APP ? Telegram
^
Main.java:3: error: illegal character: '#'
### ????????
^
Main.java:3: error: illegal character: '#'
### ????????
^
Main.java:3: error: illegal character: '#'
### ????????
^
Main.java:5: error: illegal character: '\u2011'
? ????????? ???? ???? ????????? ???????????? ????????? ?? ? ??????????? ????????? ??? ?????????????? ? ??????????????, ? Telegram ????? ?????????? ??????? ????????? ???????? ?????????? ? ????????? ?????????????. ????? ?? ????? ????????????? ??????????? ????? ????????? ???????????????, ??????? ????????? ????????????? ?????????????? ??????????????? ? ?????? ??????????? ??? ????????????? ????????? ?????????? ??????????. ????? ?????? ????????? ????? ??????????? ??? ???????: ?? ??????????? ????? ? ??????? ?? ?????????? ?????????? ? ?????? ????????? ???????. ? ?????? ?? ???????? ????????, ??? ???????? ????????? ??????????? ? ???? ???? ????? Telegram Mini App, ????? ??????????? ?????? ??????? ????????? ? ????? ???????????? ???? ??????? ?????? ???????? ??? ??????????.
^
Main.java:5: error: illegal character: '\u2011'
? ????????? ???? ???? ????????? ???????????? ????????? ?? ? ??????????? ????????? ??? ?????????????? ? ??????????????, ? Telegram ????? ?????????? ??????? ????????? ???????? ?????????? ? ????????? ?????????????. ????? ?? ????? ????????????? ??????????? ????? ????????? ???????????????, ??????? ????????? ????????????? ?????????????? ??????????????? ? ?????? ??????????? ??? ????????????? ????????? ?????????? ??????????. ????? ?????? ????????? ????? ??????????? ??? ???????: ?? ??????????? ????? ? ??????? ?? ?????????? ?????????? ? ?????? ????????? ???????. ? ?????? ?? ???????? ????????, ??? ???????? ????????? ??????????? ? ???? ???? ????? Telegram Mini App, ????? ??????????? ?????? ??????? ????????? ? ????? ???????????? ???? ??????? ?????? ???????? ??? ??????????.
^
Main.java:7: error: illegal character: '\u2011'
????????? ??????????? ????????????? ???????? ???????????????? ?????? ?? Telegram ? ?????? ????? ??? ?????????????? ???????? ????? ?????? ? ??????. ??? ??????????? ?? ???? ????????????? ??????????? ??????, ??????? ???????????? ? ?????? ??????? ??????????????? ? ?????????? ? ??? ?????? ????? HTTPS. ??? ?????????? ?????????? ????? ?????? ???????? ?????????, ??????? ?????? ????? ? ???????? ???????????????? ????, ???????? ?? ????????? ???????????, ??? ?????? ?????? ???? ????? ????? ???????? ??????. ????? ????, ?????????? ? Telegram ???????????? ??????? ??????? ???????????? ????????? ????????????? ?????????? OAuth 2.0 ? ???????? ??????? ??????.
^
Main.java:9: error: illegal character: '\u2011'
??? ??????????? ????????, ?????????? ? ????? ??????????? ?????????, ?????????????????? ??? ???????? ????????, ??????????? ????? ? ???? ???? ?????????? ?????????????? ?????????????. ?? ?????? ?????????????? ????????? Statista, ????? 70 % ????????????? ????????? ?????????? ???????????? ???????, ??????????? ?????? ?????????????? ??? ????? ??????. ??? ????????????, ??? ?????????????? ? ?????????? Telegram Mini App ????? ??????????? ???????? ????????? ????????? ? ????????? ??????? ???. ? ?????????? ?? ??????????, ????? ???? ?????????? ???????????, ????? ??????????? ??? ??????????? ??? ?????? ????????????.
^
Main.java:13: error: illegal character: '#'
### ??????????????? ?????????
^
Main.java:13: error: illegal character: '#'
### ??????????????? ?????????
^
Main.java:13: error: illegal character: '#'
### ??????????????? ?????????
^
Main.java:15: error: illegal character: '\u2011'
Telegram Mini App ???????????? ????? ????????????, ??????????? ?????? ??????????? ???? ???????????, ? ????????????????? ? Telegram API ????? JavaScript??????????. ??? ???????? ??????????????? Telegram ????????????? ???????? ?????? Telegram.WebApp , ?????????? ?????????? ? ????????????, ????? ??????? ? ????????? ????? ??????????. ???? ?????? ????????? ???????? ?????????? ????????????? ???????????? ( user.id ) ? ??????????? ????? ( initData ), ??????? ?????????? ???????????? ?? ???????.
^
Main.java:15: error: illegal character: '\u2011'
Telegram Mini App ???????????? ????? ????????????, ??????????? ?????? ??????????? ???? ???????????, ? ????????????????? ? Telegram API ????? JavaScript??????????. ??? ???????? ??????????????? Telegram ????????????? ???????? ?????? Telegram.WebApp , ?????????? ?????????? ? ????????????, ????? ??????? ? ????????? ????? ??????????. ???? ?????? ????????? ???????? ?????????? ????????????? ???????????? ( user.id ) ? ??????????? ????? ( initData ), ??????? ?????????? ???????????? ?? ???????.
^
Main.java:15: error: illegal character: '\u2011'
Telegram Mini App ???????????? ????? ????????????, ??????????? ?????? ??????????? ???? ???????????, ? ????????????????? ? Telegram API ????? JavaScript??????????. ??? ???????? ??????????????? Telegram ????????????? ???????? ?????? Telegram.WebApp , ?????????? ?????????? ? ????????????, ????? ??????? ? ????????? ????? ??????????. ???? ?????? ????????? ???????? ?????????? ????????????? ???????????? ( user.id ) ? ??????????? ????? ( initData ), ??????? ?????????? ???????????? ?? ???????.
^
Main.java:17: error: illegal character: '\u2011'
??? ????????? ?????? ??????? ???????????? ????????? ???? Telegram, ????????? ?? ??????????? ????????????, ? ????????? ???????? ??????? HMAC?SHA256. ????? ???????? ???????? ?????? ????? ??????? ??????????? JWT??????, ??????????? ? ??????? ?????? ???????????? ? ????? ???????, ? ??????? ??? ??????? ??? ??????????? ??????????????. ????? ?????? ???????????, ??? ?????? ????????? ??????? ?? Telegram ????? ???????, ? ????? ??????? ???????? ????? ?????????.
^
Main.java:17: error: illegal character: '\u2011'
??? ????????? ?????? ??????? ???????????? ????????? ???? Telegram, ????????? ?? ??????????? ????????????, ? ????????? ???????? ??????? HMAC?SHA256. ????? ???????? ???????? ?????? ????? ??????? ??????????? JWT??????, ??????????? ? ??????? ?????? ???????????? ? ????? ???????, ? ??????? ??? ??????? ??? ??????????? ??????????????. ????? ?????? ???????????, ??? ?????? ????????? ??????? ?? Telegram ????? ???????, ? ????? ??????? ???????? ????? ?????????.
^
Main.java:19: error: illegal character: '\u2011'
????? ?????????????? ???????? ????????? ???????: ???????????? ????????? ???????????????, Telegram ???????? initData , ??? ?????? ????????? ???????, ??????? ?????????? ????? ? ?????????? ??? ???????. ????? ????? ???????????? ????????? ?????????????? ? ????? ????????? ????? ????????, ????????? ? ????? ??????????????, ??? ????????????? ????? ?????????????? ??????. [Thought dump](https://pphr9sc56f4j4s.notepin.co/-----miniapp--telegram-----miniapp--telegram-yfjgktef) ? ?????????? ??????? ???????? ????? ????? ? ??????????? ???????????? ???????.
^
Main.java:19: error: illegal character: '\u2011'
????? ?????????????? ???????? ????????? ???????: ???????????? ????????? ???????????????, Telegram ???????? initData , ??? ?????? ????????? ???????, ??????? ?????????? ????? ? ?????????? ??? ???????. ????? ????? ???????????? ????????? ?????????????? ? ????? ????????? ????? ????????, ????????? ? ????? ??????????????, ??? ????????????? ????? ?????????????? ??????. [Thought dump](https://pphr9sc56f4j4s.notepin.co/-----miniapp--telegram-----miniapp--telegram-yfjgktef) ? ?????????? ??????? ???????? ????? ????? ? ??????????? ???????????? ???????.
^
Main.java:23: error: illegal character: '\u2013'
- Telegram Bot API ? ??? ????????? ?????????? ????? ? ?????????? ?????.
^
Main.java:25: error: illegal character: '\u2011'
- Node.js ??? Python?????????? ? ??? ?????????? ????????? ????? ? ????????? ???????.
^
Main.java:25: error: illegal character: '\u2013'
- Node.js ??? Python?????????? ? ??? ?????????? ????????? ????? ? ????????? ???????.
^
Main.java:27: error: illegal character: '\u2011'
- JWT??????????? (????????, jsonwebtoken ??? PyJWT) ? ??? ???????? ?????????? ?????????? ???????.
^
Main.java:27: error: illegal character: '\u2013'
- JWT??????????? (????????, jsonwebtoken ??? PyJWT) ? ??? ???????? ?????????? ?????????? ???????.
^
Main.java:29: error: illegal character: '\u2011'
- HTTPS??????? ? ?????????? TLS 1.2+ ? ???????????? ?????????? ??? ?????? ???????????? ??????.
^
Main.java:29: error: illegal character: '\u2013'
- HTTPS??????? ? ?????????? TLS 1.2+ ? ???????????? ?????????? ??? ?????? ???????????? ??????.
^
Main.java:31: error: illegal character: '#'
### ???????????? ????? ? ?????????
^
Main.java:31: error: illegal character: '#'
### ???????????? ????? ? ?????????
^
Main.java:31: error: illegal character: '#'
### ???????????? ????? ? ?????????
^
Main.java:33: error: illegal character: '\u2013'
???? ?? ????? ????? ???????? ????????? ????????? ????????? ??????????? ? ?????? ?????????????, ??????? ???????? ????????????? ??????? ? ?????? ??????? ????? Telegram ??? ????? ??????. ????? ?????????? ?????????? ????????? ?? ????? ????? ????? ?? 42 %, ? ??????? ?????, ????????????? ?? ???????????, ??????????? ? 2,5 ????? ?? 12 ??????. ??????????? ?????? ?????????? ? ???????? ??????????? ?????????, ??? ?????????? ??????????? ??????? ??????????? ?? 18 % ????????? ??????????? ???????? ?????.
^
Main.java:33: error: illegal character: '\u2011'
???? ?? ????? ????? ???????? ????????? ????????? ????????? ??????????? ? ?????? ?????????????, ??????? ???????? ????????????? ??????? ? ?????? ??????? ????? Telegram ??? ????? ??????. ????? ?????????? ?????????? ????????? ?? ????? ????? ????? ?? 42 %, ? ??????? ?????, ????????????? ?? ???????????, ??????????? ? 2,5 ????? ?? 12 ??????. ??????????? ?????? ?????????? ? ???????? ??????????? ?????????, ??? ?????????? ??????????? ??????? ??????????? ?? 18 % ????????? ??????????? ???????? ?????.
^
Main.java:35: error: illegal character: '\u2011'
????????? ???????????? OAuth?????? ? ???????????? ????? Telegram Mini App, ????? ???????? ????????? ???????? ???????????: ?????????? ??????????????? ?? ????????? ????????, ?????????? ?????? ? ???????????????? ?????? ? ??????????? ???????????? ?????????? UI????????? Telegram ??? ????????? ??????????? ??????????. ??? ???? ??????? ???????????? ???????? ?? ??????, ????????? ????? ????????????? ???????? Telegram ? ??????????? ?? ????? ???????.
^
Main.java:35: error: illegal character: '\u2011'
????????? ???????????? OAuth?????? ? ???????????? ????? Telegram Mini App, ????? ???????? ????????? ???????? ???????????: ?????????? ??????????????? ?? ????????? ????????, ?????????? ?????? ? ???????????????? ?????? ? ??????????? ???????????? ?????????? UI????????? Telegram ??? ????????? ??????????? ??????????. ??? ???? ??????? ???????????? ???????? ?? ??????, ????????? ????? ????????????? ???????? Telegram ? ??????????? ?? ????? ???????.
^
Main.java:37: error: illegal character: '\u00ab'
> ??? ?????? Telegram, ????? 200 ??? ???????? ????????????? ????????? ?????????? ????? ? ???????????????, ? ??????? ????? ?????????????? ? ???? ????????? 5 ??????, ? ???????? ??????????? ?????????? ?????????.
^
Main.java:37: error: illegal character: '\u2011'
> ??? ?????? Telegram, ????? 200 ??? ???????? ????????????? ????????? ?????????? ????? ? ???????????????, ? ??????? ????? ?????????????? ? ???? ????????? 5 ??????, ? ???????? ??????????? ?????????? ?????????.
^
Main.java:37: error: illegal character: '\u00bb'
> ??? ?????? Telegram, ????? 200 ??? ???????? ????????????? ????????? ?????????? ????? ? ???????????????, ? ??????? ????? ?????????????? ? ???? ????????? 5 ??????, ? ???????? ??????????? ?????????? ?????????.
^
Main.java:37: error: illegal character: '\u2013'
> ??? ?????? Telegram, ????? 200 ??? ???????? ????????????? ????????? ?????????? ????? ? ???????????????, ? ??????? ????? ?????????????? ? ???? ????????? 5 ??????, ? ???????? ??????????? ?????????? ?????????.
^
Main.java:39: error: illegal character: '\u00ab'
??? ????????, ??????????????? ?? ????????????? ?????, ????? ????????? ???????? ? ???????????????? ? ???????????? ??????. ??? ?????? ? Telegram Mini App ?????????? ?????????? ???????? ???????????? ?? ????????? ??? ??????, ? ????? ???????????? ??????????? ?????? ???????? ? ????? ??????. ? ???? ????????? ????????????? ??????????? ???????? ?????????, ??????? ????????? ??????? ?????????? ????? ? ??????? ????????? ?????????.
^
Main.java:39: error: illegal character: '\u2011'
??? ????????, ??????????????? ?? ????????????? ?????, ????? ????????? ???????? ? ???????????????? ? ???????????? ??????. ??? ?????? ? Telegram Mini App ?????????? ?????????? ???????? ???????????? ?? ????????? ??? ??????, ? ????? ???????????? ??????????? ?????? ???????? ? ????? ??????. ? ???? ????????? ????????????? ??????????? ???????? ?????????, ??????? ????????? ??????? ?????????? ????? ? ??????? ????????? ?????????.
^
Main.java:39: error: illegal character: '\u00bb'
??? ????????, ??????????????? ?? ????????????? ?????, ????? ????????? ???????? ? ???????????????? ? ???????????? ??????. ??? ?????? ? Telegram Mini App ?????????? ?????????? ???????? ???????????? ?? ????????? ??? ??????, ? ????? ???????????? ??????????? ?????? ???????? ? ????? ??????. ? ???? ????????? ????????????? ??????????? ???????? ?????????, ??????? ????????? ??????? ?????????? ????? ? ??????? ????????? ?????????.
^
Main.java:43: error: illegal character: '#'
### ???????????? ?? ?????????
^
Main.java:43: error: illegal character: '#'
### ???????????? ?? ?????????
^
Main.java:43: error: illegal character: '#'
### ???????????? ?? ?????????
^
Main.java:53: error: illegal character: '#'
### ??????????
^
Main.java:53: error: illegal character: '#'
### ??????????
^
Main.java:53: error: illegal character: '#'
### ??????????
^
47 errors
stdout